<?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>118481</bug_id>
          
          <creation_ts>2013-07-08 13:25:08 -0700</creation_ts>
          <short_desc>30% JSBench regression (caused by adding column numbers to stack traces)</short_desc>
          <delta_ts>2013-07-23 18:36:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>chris_curtis</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>rego+ews</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>906893</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-07-08 13:25:08 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/148720 caused a 30% JSBench regression. 

ref: &lt;rdar://problem/14241573&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906932</commentid>
    <comment_count>1</comment_count>
      <attachid>206275</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-07-08 15:42:24 -0700</bug_when>
    <thetext>Created attachment 206275
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906933</commentid>
    <comment_count>2</comment_count>
      <attachid>206275</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-07-08 15:48:04 -0700</bug_when>
    <thetext>Comment on attachment 206275
the patch

Attachment 206275 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1052012</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906934</commentid>
    <comment_count>3</comment_count>
      <attachid>206275</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-07-08 15:49:11 -0700</bug_when>
    <thetext>Comment on attachment 206275
the patch

Attachment 206275 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/946789</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906935</commentid>
    <comment_count>4</comment_count>
      <attachid>206275</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-07-08 15:49:39 -0700</bug_when>
    <thetext>Comment on attachment 206275
the patch

Will look into the UINT_MAX build failures on other platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906940</commentid>
    <comment_count>5</comment_count>
      <attachid>206278</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-07-08 15:57:59 -0700</bug_when>
    <thetext>Created attachment 206278
patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906942</commentid>
    <comment_count>6</comment_count>
      <attachid>206278</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-07-08 16:02:30 -0700</bug_when>
    <thetext>Comment on attachment 206278
patch 2

Attachment 206278 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1028347</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906943</commentid>
    <comment_count>7</comment_count>
      <attachid>206278</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-07-08 16:04:58 -0700</bug_when>
    <thetext>Comment on attachment 206278
patch 2

Attachment 206278 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1002346</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906945</commentid>
    <comment_count>8</comment_count>
      <attachid>206280</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-07-08 16:08:11 -0700</bug_when>
    <thetext>Created attachment 206280
patch 3: Use MathExtras.h, not StdLibExtras.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906946</commentid>
    <comment_count>9</comment_count>
      <attachid>206280</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-07-08 16:12:17 -0700</bug_when>
    <thetext>Comment on attachment 206280
patch 3: Use MathExtras.h, not StdLibExtras.h

Attachment 206280 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1029226</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906947</commentid>
    <comment_count>10</comment_count>
      <attachid>206280</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-07-08 16:13:30 -0700</bug_when>
    <thetext>Comment on attachment 206280
patch 3: Use MathExtras.h, not StdLibExtras.h

Attachment 206280 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1028349</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906948</commentid>
    <comment_count>11</comment_count>
      <attachid>206280</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-07-08 16:15:10 -0700</bug_when>
    <thetext>Comment on attachment 206280
patch 3: Use MathExtras.h, not StdLibExtras.h

Attachment 206280 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1048244</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906949</commentid>
    <comment_count>12</comment_count>
      <attachid>206280</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-07-08 16:16:42 -0700</bug_when>
    <thetext>Comment on attachment 206280
patch 3: Use MathExtras.h, not StdLibExtras.h

Attachment 206280 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1041109</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906951</commentid>
    <comment_count>13</comment_count>
      <attachid>206280</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-07-08 16:26:38 -0700</bug_when>
    <thetext>Comment on attachment 206280
patch 3: Use MathExtras.h, not StdLibExtras.h

Attachment 206280 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/1028351</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906959</commentid>
    <comment_count>14</comment_count>
      <attachid>206280</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-07-08 16:57:23 -0700</bug_when>
    <thetext>Comment on attachment 206280
patch 3: Use MathExtras.h, not StdLibExtras.h

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

r=me with some modifications and green EWS bots.

&gt; Source/JavaScriptCore/ChangeLog:27
&gt; +        1. We do not want to perturb the lexer and parser as minimally as possible.

Odd phrasing.

&gt; Source/JavaScriptCore/ChangeLog:30
&gt; +        2. We regard the divot as the source character position we&apos;re are interested

We are

&gt; Source/JavaScriptCore/ChangeLog:43
&gt; +           UnlinkeCodeBlocks into CodeBlocks.

UnlinkedCodeBlocks

&gt; Source/JavaScriptCore/ChangeLog:57
&gt; +          startOffset exclusively throughout the system to for consistency.

for

&gt; Source/JavaScriptCore/ChangeLog:67
&gt; +        - Also fixed some bugs in what divot positions to be used. For example,

Odd phrasing.

&gt; Source/JavaScriptCore/ChangeLog:68
&gt; +          both Eval and Function expressions will previously use column numbers

Future vs. past tense.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1677
&gt; +        startColumn += (!unlinkedExecutable-&gt;firstLineOffset()) ? ownerExecutable-&gt;startColumn() : 1;

Invert logic to avoid extra negation.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1691
&gt; +        startColumn += (!unlinkedExecutable-&gt;firstLineOffset()) ? ownerExecutable-&gt;startColumn() : 1;

Ditto.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:2479
&gt; +    // We can&apos;t assert this here because this is called from the CodeBlock
&gt; +    // constructor before instructions() is initialized.
&gt; +    // RELEASE_ASSERT(bytecodeOffset &lt; instructions().size());

No need to keep this around. If somebody adds it later, they&apos;ll die in a fire anyways.

&gt; Source/JavaScriptCore/bytecode/ExpressionRangeInfo.h:45
&gt; +        Mode0LineShift = 8,
&gt; +        Mode0LineMask = (1 &lt;&lt; 22) - 1,
&gt; +        Mode0ColumnMask = (1 &lt;&lt; 8) - 1,
&gt; +        Mode1LineShift = 22,
&gt; +        Mode1LineMask = (1 &lt;&lt; 8) - 1,
&gt; +        Mode1ColumnMask = (1 &lt;&lt; 22) - 1

Give meaningful names to Modes, e.g. FatColumn, FatLine, FatEverything, etc.

&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp:126
&gt; +    unsigned startColumn = m_functionStartColumn + 1; // Convert to base 1.

1-indexed? Or maybe more english.

&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp:278
&gt; +        low = 1; // Use nearest neighbor i.e. 1st entry.

Comment is confusing. Remove?

&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp:286
&gt; +    case 0:

Named enum please.

&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp:347
&gt; +    case 0:
&gt; +        info.encodeMode0(line, column);
&gt; +        break;
&gt; +    case 1:
&gt; +        info.encodeMode1(line, column);
&gt; +        break;
&gt; +    case 2: {
&gt; +        createRareDataIfNecessary();
&gt; +        unsigned fatIndex = m_rareData-&gt;m_expressionInfoFatPositions.size();
&gt; +        ExpressionRangeInfo::FatPosition fatPos = { line, column };
&gt; +        m_rareData-&gt;m_expressionInfoFatPositions.append(fatPos);
&gt; +        info.position = fatIndex;

Ditto.

&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp:349
&gt; +    };

Extra semicolon.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1742
&gt; +            generator.emitExpressionInfo(divot(), divotStartOffset(), divotEndOffset(), divotLine(), divotLineStart());

You mentioned in person that these are the fields of ThrowableExpressionData, so you could probably just pass that object by reference and it would eliminate a lot of the noise here. Not necessary for this patch though.

&gt; Source/JavaScriptCore/parser/ASTBuilder.h:44
&gt; +        BinaryOpInfo(int s, int d, int e, unsigned dLine, unsigned dLineStart, bool r)

Let&apos;s rename these while we&apos;re here since they&apos;re terribly named.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:786
&gt; +        int identifierLength = currentCodePtr() - identifierStart;

currentSourcePtr?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906962</commentid>
    <comment_count>15</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-07-08 17:06:40 -0700</bug_when>
    <thetext>This patch would benefit a lot from per-function commentary. A giant list of function names with no comments is not a great ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907020</commentid>
    <comment_count>16</comment_count>
      <attachid>206297</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-07-09 00:33:04 -0700</bug_when>
    <thetext>Created attachment 206297
patch 4: addressed feedback comments and attempt to appease EWS bots again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907021</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-09 00:34:39 -0700</bug_when>
    <thetext>Attachment 206297 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/editing/execCommand/outdent-blockquote-test1-expected.txt&apos;, u&apos;LayoutTests/editing/execCommand/outdent-blockquote-test2-expected.txt&apos;, u&apos;LayoutTests/editing/execCommand/outdent-blockquote-test3-expected.txt&apos;, u&apos;LayoutTests/editing/execCommand/outdent-blockquote-test4-expected.txt&apos;, u&apos;LayoutTests/editing/pasteboard/copy-paste-float-expected.txt&apos;, u&apos;LayoutTests/editing/pasteboard/paste-blockquote-before-blockquote-expected.txt&apos;, u&apos;LayoutTests/editing/pasteboard/paste-double-nested-blockquote-before-blockquote-expected.txt&apos;, u&apos;LayoutTests/fast/dom/Window/window-resize-contents-expected.txt&apos;, u&apos;LayoutTests/fast/events/remove-target-with-shadow-in-drag-expected.txt&apos;, u&apos;LayoutTests/fast/js/line-column-numbers-expected.txt&apos;, u&apos;LayoutTests/fast/js/line-column-numbers.html&apos;, u&apos;LayoutTests/fast/js/script-tests/line-column-numbers.js&apos;, u&apos;LayoutTests/fast/js/stack-trace-expected.txt&apos;, u&apos;LayoutTests/inspector/console/console-url-line-column-expected.txt&apos;, u&apos;Source/JavaScriptCore/API/JSContextRef.cpp&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/bytecode/CodeBlock.cpp&apos;, u&apos;Source/JavaScriptCore/bytecode/CodeBlock.h&apos;, u&apos;Source/JavaScriptCore/bytecode/ExpressionRangeInfo.h&apos;, u&apos;Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp&apos;, u&apos;Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h&apos;, u&apos;Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp&apos;, u&apos;Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h&apos;, u&apos;Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp&apos;, u&apos;Source/JavaScriptCore/interpreter/Interpreter.cpp&apos;, u&apos;Source/JavaScriptCore/interpreter/Interpreter.h&apos;, u&apos;Source/JavaScriptCore/parser/ASTBuilder.h&apos;, u&apos;Source/JavaScriptCore/parser/Lexer.cpp&apos;, u&apos;Source/JavaScriptCore/parser/Lexer.h&apos;, u&apos;Source/JavaScriptCore/parser/NodeConstructors.h&apos;, u&apos;Source/JavaScriptCore/parser/Nodes.cpp&apos;, u&apos;Source/JavaScriptCore/parser/Nodes.h&apos;, u&apos;Source/JavaScriptCore/parser/Parser.cpp&apos;, u&apos;Source/JavaScriptCore/parser/Parser.h&apos;, u&apos;Source/JavaScriptCore/parser/ParserTokens.h&apos;, u&apos;Source/JavaScriptCore/parser/SourceCode.h&apos;, u&apos;Source/JavaScriptCore/parser/SourceProvider.cpp&apos;, u&apos;Source/JavaScriptCore/parser/SourceProvider.h&apos;, u&apos;Source/JavaScriptCore/parser/SourceProviderCacheItem.h&apos;, u&apos;Source/JavaScriptCore/parser/SyntaxChecker.h&apos;, u&apos;Source/JavaScriptCore/runtime/CodeCache.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/Executable.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/Executable.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/bindings/js/ScriptCallStackFactory.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptSourceCode.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/bytecode/ExpressionRangeInfo.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/bytecode/ExpressionRangeInfo.h:38:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 2 in 45 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907024</commentid>
    <comment_count>18</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-07-09 00:56:52 -0700</bug_when>
    <thetext>Here are some benchmark results:
I did 3 runs comparing the following 2 builds:
1. baseline: trunk r151920 with StackFrame::column() stubbed to always return 0.  This negates the regression to yield perf that we should expect to match.
2. trunk r151920 plus this patch.

                                                       Conf#1                    Conf#2                                      
JSBench:
   amazon                                          8.3333+-0.3128            8.3333+-0.3128        
   facebook                                       38.9167+-0.5720     ?     39.1667+-0.5304        ?
   google                                         79.4167+-0.7399     ?     80.0000+-0.9385        ?
   twitter                                        10.2500+-0.2874            9.9167+-0.3272          might be 1.0336x faster
   yahoo                                           3.5833+-0.3272            3.5833+-0.3272        

   &lt;arithmetic&gt; *                                 28.1000+-0.2331     ?     28.2000+-0.2099        ? might be 1.0036x slower
   &lt;geometric&gt;                                    15.6423+-0.3311           15.5773+-0.2499          might be 1.0042x faster
   &lt;harmonic&gt;                                      9.2930+-0.4600            9.2314+-0.4182          might be 1.0067x faster

The JSBench regression is fixed.

The only regression I saw were the following (which only manifested on 1 run and disappeared in subsequent runs):

Octane and V8v7:
   decrypt                                        8.51886+-0.01023    !     8.55913+-0.01885       ! definitely 1.0047x slower
   earley                                         0.90463+-0.00511    !     0.91907+-0.00788       ! definitely 1.0160x slower

There were a few &quot;definitely faster&quot;s here and there in each of the runs, but they were inconsistent across runs.  However, on all 3 runs, the following improvement was consistently:

JSRegress:
   method-on-number                               24.6593+-0.8551     ^     22.4434+-0.5250        ^ definitely 1.0987x faster

Overall, the performance is unchanged from pre-regression numbers.

Here&apos;s the complete benchmark results output from the 3rd run:

$ ../Internal/Tools/Scripts/run-jsc-benchmarks /Volumes/Data/ws6/OpenSource/WebKitBuild/Release/DumpRenderTree /Volumes/Data/ws7/OpenSource/WebKitBuild/Release/DumpRenderTree
1516/1516                                                          
Generating benchmark report at /Volumes/Data/ws7/OpenSource/SunSpiderV8SpiderOctaneKrakenJSBenchJSRegressDSP_chronon_20130708_2315_report.txt
And raw data at /Volumes/Data/ws7/OpenSource/SunSpiderV8SpiderOctaneKrakenJSBenchJSRegressDSP_chronon_20130708_2315.json

Benchmark report for SunSpider, V8Spider, Octane, Kraken, JSBench, JSRegress, and DSP on chronon (MacPro5,1).

VMs tested:
&quot;Conf#1&quot; at /Volumes/Data/ws6/OpenSource/WebKitBuild/Release/DumpRenderTree (r151920)
&quot;Conf#2&quot; at /Volumes/Data/ws7/OpenSource/WebKitBuild/Release/DumpRenderTree (r151920)

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample
measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get
microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                                                       Conf#1                    Conf#2                                      
SunSpider:
   3d-cube                                        10.5983+-0.2765           10.3337+-0.3564          might be 1.0256x faster
   3d-morph                                        8.5913+-0.1632     ?      8.5977+-0.0965        ?
   3d-raytrace                                    11.0687+-0.2897     ?     11.1038+-0.2604        ?
   access-binary-trees                             2.7348+-0.3472            2.7180+-0.3528        
   access-fannkuch                                 7.5137+-0.0934     ?      7.5345+-0.0891        ?
   access-nbody                                    4.5810+-0.0410     ?      4.5914+-0.0725        ?
   access-nsieve                                   4.8817+-0.0789     ?      4.9136+-0.0420        ?
   bitops-3bit-bits-in-byte                        1.7378+-0.0133     ?      1.7487+-0.0202        ?
   bitops-bits-in-byte                             6.5368+-0.0640     ?      6.5753+-0.1400        ?
   bitops-bitwise-and                              2.5359+-0.0462     ?      2.5554+-0.0480        ?
   bitops-nsieve-bits                              4.4729+-0.0203     ?      4.5187+-0.0494        ? might be 1.0102x slower
   controlflow-recursive                           2.8603+-0.0273     ?      2.8812+-0.0421        ?
   crypto-aes                                      8.1578+-0.3654     ?      8.4396+-0.3089        ? might be 1.0345x slower
   crypto-md5                                      4.2111+-0.0609     ?      4.2870+-0.0656        ? might be 1.0180x slower
   crypto-sha1                                     3.3234+-0.0351     ?      3.3478+-0.0330        ?
   date-format-tofte                              13.5844+-0.9691     ?     13.6889+-1.0077        ?
   date-format-xparb                              10.3460+-0.7148     ?     10.4049+-0.6199        ?
   math-cordic                                     3.7852+-0.0207     ?      3.8242+-0.0559        ? might be 1.0103x slower
   math-partial-sums                              11.7870+-0.1174     ?     11.8209+-0.1201        ?
   math-spectral-norm                              3.0558+-0.0202     ?      3.1043+-0.0329        ? might be 1.0159x slower
   regexp-dna                                     12.2062+-0.5079     ?     12.5089+-0.5233        ? might be 1.0248x slower
   string-base64                                   5.7428+-0.5650            5.6901+-0.5791        
   string-fasta                                   11.8516+-0.1933           11.7244+-0.1932          might be 1.0108x faster
   string-tagcloud                                14.0472+-0.2779     ?     14.1150+-0.2608        ?
   string-unpack-code                             30.2820+-0.3081           29.9551+-0.3587          might be 1.0109x faster
   string-validate-input                           9.2587+-0.3341     ?      9.2740+-0.2422        ?

   &lt;arithmetic&gt; *                                  8.0674+-0.1442     ?      8.0868+-0.1445        ? might be 1.0024x slower
   &lt;geometric&gt;                                     6.4611+-0.1080     ?      6.4916+-0.1088        ? might be 1.0047x slower
   &lt;harmonic&gt;                                      5.1998+-0.0846     ?      5.2295+-0.0863        ? might be 1.0057x slower

                                                       Conf#1                    Conf#2                                      
V8Spider:
   crypto                                         88.0549+-0.8940           87.3878+-0.6061        
   deltablue                                     122.2087+-0.5894     ?    122.7571+-0.5470        ?
   earley-boyer                                   81.6742+-0.6228     ?     82.2235+-0.5754        ?
   raytrace                                       60.0328+-0.2072     ?     60.3867+-0.3428        ?
   regexp                                        100.2016+-0.6094          100.1242+-0.8896        
   richards                                      115.2345+-0.7356     ?    115.2864+-0.7810        ?
   splay                                          61.3719+-3.7543           60.1047+-3.5444          might be 1.0211x faster

   &lt;arithmetic&gt;                                   89.8255+-0.7315           89.7529+-0.7470          might be 1.0008x faster
   &lt;geometric&gt; *                                  86.8451+-0.9072           86.7038+-0.9410          might be 1.0016x faster
   &lt;harmonic&gt;                                     83.8341+-1.1016           83.6252+-1.1631          might be 1.0025x faster

                                                       Conf#1                    Conf#2                                      
Octane and V8v7:
   encrypt                                        0.47472+-0.00095    ?     0.47476+-0.00096       ?
   decrypt                                        8.56644+-0.01826    ?     8.57887+-0.01339       ?
   deltablue                             x2       0.57652+-0.00475          0.57251+-0.00656       
   earley                                         0.91083+-0.00594    ?     0.91686+-0.00664       ?
   boyer                                         12.35298+-0.05573    ?    12.40401+-0.04465       ?
   raytrace                              x2       4.62326+-0.06480          4.57383+-0.05294         might be 1.0108x faster
   regexp                                x2      31.35191+-0.20854    ^    30.97844+-0.09720       ^ definitely 1.0121x faster
   richards                              x2       0.29810+-0.00075          0.29761+-0.00081       
   splay                                 x2       0.66287+-0.02633          0.65662+-0.02828       
   navier-stokes                         x2      10.45721+-0.01679         10.45667+-0.01530       
   closure                                        0.35727+-0.01362    ?     0.36312+-0.01440       ? might be 1.0164x slower
   jquery                                         4.37932+-0.52820    ?     4.44716+-0.54185       ? might be 1.0155x slower
   gbemu                                 x2     129.82489+-1.31453    ?   133.46258+-5.05251       ? might be 1.0280x slower
   mandreel                              x2     175.86859+-1.69818    ?   176.11658+-0.77637       ?
   pdfjs                                 x2     104.16363+-0.65458        103.26986+-0.43108       
   box2d                                 x2      33.24659+-0.17972    !    33.77435+-0.16183       ! definitely 1.0159x slower

V8v7:
   &lt;arithmetic&gt;                                   7.39030+-0.03068    ^     7.34036+-0.01696       ^ definitely 1.0068x faster
   &lt;geometric&gt; *                                  2.41733+-0.01401          2.40678+-0.01235         might be 1.0044x faster
   &lt;harmonic&gt;                                     0.92517+-0.00619          0.92179+-0.00606         might be 1.0037x faster

Octane including V8v7:
   &lt;arithmetic&gt;                                  38.81495+-0.14991    ?    39.05780+-0.40261       ? might be 1.0063x slower
   &lt;geometric&gt; *                                  7.08948+-0.03902    ?     7.09816+-0.05201       ? might be 1.0012x slower
   &lt;harmonic&gt;                                     1.27179+-0.00900          1.27094+-0.00959         might be 1.0007x faster

                                                       Conf#1                    Conf#2                                      
Kraken:
   ai-astar                                       505.305+-1.170            504.473+-1.149         
   audio-beat-detection                           241.182+-1.376            240.513+-2.112         
   audio-dft                                      304.652+-1.569            302.167+-1.876         
   audio-fft                                      141.326+-0.300            141.183+-0.467         
   audio-oscillator                               240.799+-0.545      ?     241.360+-0.642         ?
   imaging-darkroom                               281.981+-0.979            281.254+-0.511         
   imaging-desaturate                             154.926+-0.413            154.264+-0.345         
   imaging-gaussian-blur                          487.954+-2.861            484.302+-1.024         
   json-parse-financial                            78.978+-0.187      ^      77.613+-0.408         ^ definitely 1.0176x faster
   json-stringify-tinderbox                       107.870+-0.388      ^     103.490+-2.339         ^ definitely 1.0423x faster
   stanford-crypto-aes                            114.620+-0.699      ?     114.812+-0.612         ?
   stanford-crypto-ccm                            112.224+-0.532            111.302+-0.447         
   stanford-crypto-pbkdf2                         259.409+-1.129      ^     256.615+-1.096         ^ definitely 1.0109x faster
   stanford-crypto-sha256-iterative               120.759+-0.666            119.934+-0.542         

   &lt;arithmetic&gt; *                                 225.142+-0.402      ^     223.806+-0.307         ^ definitely 1.0060x faster
   &lt;geometric&gt;                                    191.988+-0.268      ^     190.494+-0.290         ^ definitely 1.0078x faster
   &lt;harmonic&gt;                                     165.890+-0.223      ^     164.185+-0.329         ^ definitely 1.0104x faster

                                                       Conf#1                    Conf#2                                      
JSBench:
   amazon                                          8.3333+-0.3128            8.3333+-0.3128        
   facebook                                       38.9167+-0.5720     ?     39.1667+-0.5304        ?
   google                                         79.4167+-0.7399     ?     80.0000+-0.9385        ?
   twitter                                        10.2500+-0.2874            9.9167+-0.3272          might be 1.0336x faster
   yahoo                                           3.5833+-0.3272            3.5833+-0.3272        

   &lt;arithmetic&gt; *                                 28.1000+-0.2331     ?     28.2000+-0.2099        ? might be 1.0036x slower
   &lt;geometric&gt;                                    15.6423+-0.3311           15.5773+-0.2499          might be 1.0042x faster
   &lt;harmonic&gt;                                      9.2930+-0.4600            9.2314+-0.4182          might be 1.0067x faster

                                                       Conf#1                    Conf#2                                      
JSRegress:
   adapt-to-double-divide                         21.5129+-0.1556     ?     21.5728+-0.1917        ?
   aliased-arguments-getbyval                      0.9027+-0.0104     ?      0.9145+-0.0121        ? might be 1.0131x slower
   allocate-big-object                             4.0667+-1.2710            4.0464+-1.3365        
   arity-mismatch-inlining                         0.7795+-0.0217            0.7531+-0.0130          might be 1.0350x faster
   array-access-polymorphic-structure              8.9606+-2.0809     ?      9.0100+-2.0366        ?
   array-nonarray-polymorhpic-access              57.6663+-0.7133           57.5824+-0.6685        
   array-with-double-add                           5.5026+-0.0687     ?      5.5191+-0.0657        ?
   array-with-double-increment                     3.7906+-0.0805            3.7277+-0.0220          might be 1.0169x faster
   array-with-double-mul-add                       7.5251+-0.0563            7.4802+-0.0685        
   array-with-double-sum                           7.4026+-0.0555     ?      7.5346+-0.1570        ? might be 1.0178x slower
   array-with-int32-add-sub                        9.9740+-0.0844     ?      9.9908+-0.1042        ?
   array-with-int32-or-double-sum                  7.5312+-0.0838            7.5188+-0.0641        
   big-int-mul                                     4.6741+-0.0584            4.6232+-0.0365          might be 1.0110x faster
   boolean-test                                    4.2394+-0.1591            4.2349+-0.1597        
   branch-fold                                     4.4865+-0.0616            4.4247+-0.0245          might be 1.0139x faster
   cast-int-to-double                             13.2526+-0.0792     ?     13.3408+-0.1576        ?
   cell-argument                                  13.6537+-0.0381     ?     13.7168+-0.0943        ?
   cfg-simplify                                    3.6552+-0.0283     ?      3.7068+-0.0712        ? might be 1.0141x slower
   cmpeq-obj-to-obj-other                          9.9848+-0.1399     ?     10.0627+-0.2921        ?
   constant-test                                   8.0306+-0.0849     ?      8.0438+-0.0889        ?
   direct-arguments-getbyval                       0.8450+-0.0177     ?      0.8887+-0.0876        ? might be 1.0517x slower
   double-pollution-getbyval                      10.1506+-0.0667     ?     10.1974+-0.0781        ?
   double-pollution-putbyoffset                    5.4836+-0.5872            5.4723+-0.5893        
   empty-string-plus-int                          13.5046+-0.2536           13.4198+-0.2392        
   external-arguments-getbyval                     2.4188+-0.1268     ?      2.5163+-0.1773        ? might be 1.0403x slower
   external-arguments-putbyval                     3.8025+-0.2302            3.7220+-0.2460          might be 1.0216x faster
   Float32Array-matrix-mult                       14.8329+-0.7054     ?     15.1350+-0.7712        ? might be 1.0204x slower
   fold-double-to-int                             21.0975+-0.3986           20.9080+-0.1899        
   function-dot-apply                              3.0342+-0.0504     ?      3.0397+-0.0392        ?
   function-test                                   4.4344+-0.0783     ?      4.4723+-0.0925        ?
   get-by-id-chain-from-try-block                  6.4962+-0.1549     ?      6.5563+-0.1312        ?
   HashMap-put-get-iterate-keys                   60.1414+-0.6092           59.3811+-0.5760          might be 1.0128x faster
   HashMap-put-get-iterate                        67.3874+-0.9790     ?     67.4469+-0.6877        ?
   HashMap-string-put-get-iterate                 68.8419+-0.6297     ?     69.8662+-0.7830        ? might be 1.0149x slower
   imul-double-only                               16.7749+-0.0966     ?     17.0798+-0.6781        ? might be 1.0182x slower
   imul-int-only                                  14.0954+-0.0996     ?     14.1534+-0.1357        ?
   imul-mixed                                     21.4152+-0.6407           21.0793+-0.0924          might be 1.0159x faster
   indexed-properties-in-objects                   4.1960+-0.0120     ?      4.2549+-0.0558        ? might be 1.0140x slower
   inline-arguments-access                         1.2183+-0.0169     ?      1.2454+-0.0334        ? might be 1.0222x slower
   inline-arguments-local-escape                  26.2746+-1.7036           25.5814+-0.3002          might be 1.0271x faster
   inline-get-scoped-var                           6.1853+-0.1011            6.1721+-0.0802        
   inlined-put-by-id-transition                   16.6993+-0.1870           16.4672+-0.2381          might be 1.0141x faster
   int-or-other-abs-then-get-by-val                8.9272+-0.0750     ?      9.0033+-0.1297        ?
   int-or-other-abs-zero-then-get-by-val          34.6323+-0.1743           34.4718+-0.0547        
   int-or-other-add-then-get-by-val                9.7517+-0.0915     ?      9.7766+-0.1097        ?
   int-or-other-add                               10.0913+-0.0928           10.0905+-0.1045        
   int-or-other-div-then-get-by-val                7.5461+-0.0716     ?      7.5670+-0.0507        ?
   int-or-other-max-then-get-by-val                9.2507+-0.1950     ?      9.2619+-0.2078        ?
   int-or-other-min-then-get-by-val                7.6303+-0.0549     ?      7.6739+-0.0988        ?
   int-or-other-mod-then-get-by-val                7.6554+-0.0828            7.6385+-0.0699        
   int-or-other-mul-then-get-by-val                6.7943+-0.0595     ?      6.8194+-0.0602        ?
   int-or-other-neg-then-get-by-val                7.6714+-0.0650            7.6171+-0.0648        
   int-or-other-neg-zero-then-get-by-val          35.0551+-0.1331           34.8493+-0.4179        
   int-or-other-sub-then-get-by-val                9.7732+-0.0777            9.7458+-0.0535        
   int-or-other-sub                                7.8232+-0.0834            7.7656+-0.0366        
   int-overflow-local                             12.4105+-0.1334           12.3328+-0.0806        
   Int16Array-bubble-sort                         76.7656+-3.4355           74.8517+-2.7941          might be 1.0256x faster
   Int16Array-load-int-mul                         1.7787+-0.0246     ?      1.8059+-0.0367        ? might be 1.0153x slower
   Int8Array-load                                  5.1773+-0.0489     ?      5.1924+-0.0977        ?
   integer-divide                                 14.7300+-0.0951           14.5900+-0.0615        
   integer-modulo                                  2.0654+-0.0361     ?      2.0907+-0.0406        ? might be 1.0123x slower
   make-indexed-storage                            4.7438+-0.7220            4.3928+-0.6187          might be 1.0799x faster
   method-on-number                               24.6593+-0.8551     ^     22.4434+-0.5250        ^ definitely 1.0987x faster
   negative-zero-divide                            0.3918+-0.0118     ?      0.4040+-0.0125        ? might be 1.0312x slower
   negative-zero-modulo                            0.3822+-0.0125     ?      0.3940+-0.0145        ? might be 1.0309x slower
   negative-zero-negate                            0.3596+-0.0094     ?      0.3716+-0.0133        ? might be 1.0332x slower
   nested-function-parsing-random                377.2842+-11.5469    ?    389.3693+-12.9024       ? might be 1.0320x slower
   nested-function-parsing                        55.2121+-3.4459           55.1201+-3.6977        
   new-array-buffer-dead                           3.5456+-0.1041            3.5341+-0.1175        
   new-array-buffer-push                          15.3677+-2.5655           15.1236+-2.4074          might be 1.0161x faster
   new-array-dead                                 27.0225+-0.1051     ?     27.0282+-0.1494        ?
   new-array-push                                 11.9112+-1.9472           11.7574+-2.0049          might be 1.0131x faster
   number-test                                     4.1602+-0.1815     ?      4.2380+-0.1720        ? might be 1.0187x slower
   object-closure-call                             8.1622+-0.1544     ?      8.1712+-0.1922        ?
   object-test                                     4.5076+-0.1694            4.4257+-0.1434          might be 1.0185x faster
   poly-stricteq                                  87.5031+-0.4203     ?     87.8466+-0.3063        ?
   polymorphic-structure                          19.1513+-0.1477     ?     19.2449+-0.1660        ?
   polyvariant-monomorphic-get-by-id              11.9152+-0.0626           11.8943+-0.0631        
   rare-osr-exit-on-local                         19.1659+-0.1017           19.0607+-0.0569        
   register-pressure-from-osr                     30.1645+-0.0857           30.1319+-0.1136        
   simple-activation-demo                         33.1924+-0.2614           33.1419+-0.2367        
   slow-array-profile-convergence                  4.4903+-0.2336            4.4718+-0.2692        
   slow-convergence                                3.6492+-0.0453            3.6447+-0.0414        
   sparse-conditional                              1.2713+-0.0258            1.2409+-0.0311          might be 1.0245x faster
   splice-to-remove                               46.3106+-0.1722     ^     45.6369+-0.2878        ^ definitely 1.0148x faster
   string-concat-object                            4.8326+-1.4336            4.7915+-1.4410        
   string-concat-pair-object                       4.7104+-1.4125     ?      4.7740+-1.5286        ? might be 1.0135x slower
   string-concat-pair-simple                      19.5167+-0.3872           19.4382+-0.5411        
   string-concat-simple                           19.6723+-0.4552     ?     19.7557+-0.4802        ?
   string-cons-repeat                             14.3220+-0.9313     ?     14.4121+-0.9065        ?
   string-cons-tower                              37.0753+-22.2249    ?     38.7243+-23.9378       ? might be 1.0445x slower
   string-equality                                50.0715+-0.3861           49.9474+-0.4084        
   string-hash                                     2.5011+-0.0182            2.4964+-0.0268        
   string-repeat-arith                            44.7431+-0.2930     ?     45.0013+-0.2812        ?
   string-sub                                     85.1287+-0.7429     ?     86.0621+-0.5636        ? might be 1.0110x slower
   string-test                                     3.9720+-0.0737     ?      4.0430+-0.0938        ? might be 1.0179x slower
   structure-hoist-over-transitions                3.8754+-0.6272     ?      3.9137+-0.6123        ?
   tear-off-arguments-simple                       1.7065+-0.0215     ?      1.7340+-0.0185        ? might be 1.0161x slower
   tear-off-arguments                              3.1406+-0.0105     ?      3.1678+-0.0271        ?
   temporal-structure                             19.8228+-0.0307     ?     19.9198+-0.0912        ?
   to-int32-boolean                               29.3214+-0.1246     ?     29.4131+-0.2247        ?
   undefined-test                                  4.3068+-0.1455     ?      4.3154+-0.1495        ?

   &lt;arithmetic&gt;                                   19.6637+-0.4600     ?     19.7549+-0.4746        ? might be 1.0046x slower
   &lt;geometric&gt; *                                   8.8666+-0.1783     ?      8.8681+-0.1746        ? might be 1.0002x slower
   &lt;harmonic&gt;                                      3.8757+-0.0400     ?      3.9143+-0.0404        ? might be 1.0100x slower

                                                       Conf#1                    Conf#2                                      
DSP:
   filtrr-posterize-tint                          51.7666+-0.7969     ?     51.8432+-1.0021        ?
   filtrr-tint-contrast-sat-bright                72.9019+-1.2183     ?     73.0174+-1.0078        ?
   filtrr-tint-sat-adj-contr-mult                 89.6488+-3.8176           88.7318+-3.4479          might be 1.0103x faster
   filtrr-blur-overlay-sat-contr                 225.3870+-2.0221          224.7883+-1.9933        
   filtrr-sat-blur-mult-sharpen-contr            264.3871+-5.9968          263.8270+-5.9629        
   filtrr-sepia-bias                              37.7213+-1.9537           37.0576+-1.8604          might be 1.0179x faster
   route9-vp8                            x5     1190.6626+-17.6852    ?   1200.7561+-7.8342        ?
   starfield                             x5     1221.5781+-12.2917        1214.5346+-21.5427       
   bellard-jslinux                       x5     3019.5000+-12.3039    ?   3027.2500+-15.2251       ?
   zynaps-quake3                         x5     1259.3340+-25.6904    ?   1267.4471+-31.7251       ?
   zynaps-mandelbrot                     x5     1143.0610+-7.3298         1120.7955+-16.9067         might be 1.0199x faster
   ammojs-asm-js                         x5      243.9518+-11.3434    ?    249.9234+-11.0068       ? might be 1.0245x slower
   ammojs-regular-js                     x5      252.2456+-8.7234          250.7259+-8.3144        

   &lt;arithmetic&gt;                                 1033.9873+-5.9844     ?   1034.0592+-5.3582        ? might be 1.0001x slower
   &lt;geometric&gt; *                                 631.7172+-8.3780     ?    632.0220+-7.8136        ? might be 1.0005x slower
   &lt;harmonic&gt;                                    297.7304+-7.8529          297.2445+-7.5342          might be 1.0016x faster

                                                       Conf#1                    Conf#2                                      
All benchmarks:
   &lt;arithmetic&gt;                                  224.1601+-1.1432     ?    224.1617+-1.0130        ? might be 1.0000x slower
   &lt;geometric&gt;                                         ERROR                     ERROR             
   &lt;harmonic&gt;                                      4.2005+-0.0320     ?      4.2220+-0.0291        ? might be 1.0051x slower

                                                       Conf#1                    Conf#2                                      
Geomean of preferred means:
   &lt;scaled-result&gt;                                40.4060+-0.2498     ?     40.4075+-0.2373        ? might be 1.0000x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907120</commentid>
    <comment_count>19</comment_count>
      <attachid>206297</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-07-09 08:51:29 -0700</bug_when>
    <thetext>Comment on attachment 206297
patch 4: addressed feedback comments and attempt to appease EWS bots again.

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

r=me, but I think I spotted two things you should fix before landing.

&gt; Source/JavaScriptCore/ChangeLog:69
&gt; +        - Also fixed some bugs in the choice of divot positions to use. For example,
&gt; +          both Eval and Function expressions previously use column numbers from
&gt; +          the start of the expression but use the line number at the end of the
&gt; +          expression. This is now fixed to be consistently either using the start

You&apos;ve still got some present vs future tense confusion here. I think you meant &quot;used&quot; instead of &quot;use&quot; in two places here?

&quot;to be consistently either using&quot; is a pretty awkward verb phrase, too.

&gt; Source/JavaScriptCore/bytecode/ExpressionRangeInfo.h:39
&gt; +    //   1. FatLine:          22-bit line,  8-bit column.
&gt; +    //   2. FatColumn:         8-bit line, 22-bit column.
&gt; +    //   3. FatLineAndColumn: 32-bit line, 32-bit column.

The reason the style bot complains about this is that it makes the code hard for other engineers to edit / refactor later. For example, if we ever rename FatLine, FatColumn, or FatLineAndColumn (as you&apos;ve already done once in preparing this patch), there&apos;s a lot of extra typing to line all the comments up again.

You might think that we should just make an exception for the select pieces of code that you like to line up this way, since there aren&apos;t very many of them. Unfortunately, it&apos;s not practical in a large, distributed open source project to maintain special commenting rules tailored to individual developers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907138</commentid>
    <comment_count>20</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-07-09 09:19:00 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; &gt; Source/JavaScriptCore/ChangeLog:69
&gt; &gt; +        - Also fixed some bugs in the choice of divot positions to use. For example,
&gt; &gt; +          both Eval and Function expressions previously use column numbers from
&gt; &gt; +          the start of the expression but use the line number at the end of the
&gt; &gt; +          expression. This is now fixed to be consistently either using the start
&gt; 
&gt; You&apos;ve still got some present vs future tense confusion here. I think you meant &quot;used&quot; instead of &quot;use&quot; in two places here?
&gt; 
&gt; &quot;to be consistently either using&quot; is a pretty awkward verb phrase, too.

Thanks for catching these.  Fixed.

&gt; &gt; Source/JavaScriptCore/bytecode/ExpressionRangeInfo.h:39
&gt; &gt; +    //   1. FatLine:          22-bit line,  8-bit column.
&gt; &gt; +    //   2. FatColumn:         8-bit line, 22-bit column.
&gt; &gt; +    //   3. FatLineAndColumn: 32-bit line, 32-bit column.
&gt; 
&gt; The reason the style bot complains about this is that it makes the code hard for other engineers to edit / refactor later. For example, if we ever rename FatLine, FatColumn, or FatLineAndColumn (as you&apos;ve already done once in preparing this patch), there&apos;s a lot of extra typing to line all the comments up again.
&gt; 
&gt; You might think that we should just make an exception for the select pieces of code that you like to line up this way, since there aren&apos;t very many of them. Unfortunately, it&apos;s not practical in a large, distributed open source project to maintain special commenting rules tailored to individual developers.

OK, makes sense.  I took out the extra spaces.

Landed in r152494: &lt;http://trac.webkit.org/changeset/152494&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907182</commentid>
    <comment_count>21</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-07-09 10:39:09 -0700</bug_when>
    <thetext>Also landed r152497: &lt;http://trac.webkit.org/changeset/152497&gt; to make the Windows bot happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911082</commentid>
    <comment_count>22</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-07-23 10:45:36 -0700</bug_when>
    <thetext>The Apple Windows 7 Debug bot is hitting lots of assertions: bug 119017</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911200</commentid>
    <comment_count>23</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-07-23 18:36:45 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; The Apple Windows 7 Debug bot is hitting lots of assertions: bug 119017

FYI, this issue is resolved in https://bugs.webkit.org/show_bug.cgi?id=118996 with r153071: &lt;http://trac.webkit.org/changeset/153071&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206275</attachid>
            <date>2013-07-08 15:42:24 -0700</date>
            <delta_ts>2013-07-08 15:49:39 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>bug-118481.patch</filename>
            <type>text/plain</type>
            <size>361820</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUyNDY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxMCBA
QAorMjAxMy0wNy0wOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
Rml4IDMwJSBKU0JlbmNoIHJlZ3Jlc3Npb24gKGNhdXNlZCBieSBhZGRpbmcgY29sdW1uIG51bWJl
cnMgdG8gc3RhY2sgdHJhY2VzKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExODQ4MS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBQcmV2aW91c2x5LCB3ZSBhbHJlYWR5IGNhcHR1cmUgRXhwcmVzc2lvblJh
bmdlSW5mbyB0aGF0IHByb3ZpZGVzIGEgZGl2b3QgZm9yCisgICAgICAgIGVhY2ggYnl0ZWNvZGUg
dGhhdCBjYW4gcG90ZW50aWFsbHkgdGhyb3cgYW4gZXhjZXB0aW9uIChhbmQgdGhlcmVmb3JlIGdl
bmVyYXRlCisgICAgICAgIGEgc3RhY2sgdHJhY2UpLiBPbiBmaXJzdCBhdHRlbXB0IHRvIGNvbXB1
dGUgY29sdW1uIG51bWJlcnMsIHdlIHRoZW4gZG8gYSB3YWxrCisgICAgICAgIG9mIHRoZSBzb3Vy
Y2Ugc3RyaW5nIHRvIHJlY29yZCBhbGwgbGluZSBzdGFydCBwb3NpdGlvbnMgaW4gYSB0YWJsZSBh
c3NvY2lhdGVkCisgICAgICAgIHdpdGggdGhlIFNvdXJjZVByb3ZpZGVyLiBUaGUgY29sdW1uIG51
bWJlciBjYW4gdGhlbiBiZSBjb21wdXRlZCBhcworICAgICAgICAgICAgZGl2b3QgLSBsaW5lU3Rh
cnRGb3IoYnl0ZWNvZGVPZmZzZXQpLgorCisgICAgICAgIFRoZSBjb21wdXRhdGlvbiBvZiB0aGlz
IGxpbmVTdGFydHMgdGFibGUgaXMgdGhlIHNvdXJjZSBvZiB0aGUgMzAlIEpTQmVuY2gKKyAgICAg
ICAgcGVyZm9ybWFuY2UgcmVncmVzc2lvbi4KKworICAgICAgICBUaGUgbmV3IGNvZGUgbm93IHJl
Y29yZHMgbGluZVN0YXJ0cyBhcyB0aGUgbGV4ZXIgYW5kIHBhcnNlciBzY2FucyB0aGUgc291cmNl
CisgICAgICAgIGNvZGUuIFRoZXNlIGxpbmVTdGFydHMgYXJlIHRoZW4gdXNlZCB0byBjb21wdXRl
IHRoZSBjb2x1bW4gbnVtYmVyIGZvciB0aGUKKyAgICAgICAgZ2l2ZW4gZGl2b3QsIGFuZCBzdG9y
ZWQgaW4gdGhlIEV4cHJlc3Npb25SYW5nZUluZm8uIFNpbWlsYXJseSwgd2UgYWxzbyBjYXB0dXJl
CisgICAgICAgIHRoZSBsaW5lIG51bWJlciBhdCB0aGUgZGl2b3QgcG9pbnQgYW5kIHN0b3JlIHRo
YXQgaW4gdGhlIEV4cHJlc3Npb25SYW5nZUluZm8uCisgICAgICAgIEhlbmNlLCB0byBsb29rIHVw
IGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzLCB3ZSBub3cgbG9va3VwIHRoZSBFeHByZXNzaW9uUmFu
Z2VJbmZvCisgICAgICAgIGZvciB0aGUgYnl0ZWNvZGVPZmZzZXQsIGFuZCB0aGVuIGNvbXB1dGUg
dGhlIGxpbmUgYW5kIGNvbHVtbiBmcm9tIHRoZSB2YWx1ZXMKKyAgICAgICAgc3RvcmVkIGluIHRo
ZSBleHByZXNzaW9uIGluZm8uCisKKyAgICAgICAgVGhlIHN0cmF0ZWd5OgorICAgICAgICAxLiBX
ZSBkbyBub3Qgd2FudCB0byBwZXJ0dXJiIHRoZSBsZXhlciBhbmQgcGFyc2VyIGFzIG1pbmltYWxs
eSBhcyBwb3NzaWJsZS4KKyAgICAgICAgICAgU3BlY2lmaWNhbGx5LCB0aGUgY2hhbmdlcyBhZGRl
ZCBzaG91bGQgbm90IGNoYW5nZSBob3cgaXQgc2NhbnMgY29kZSwgYW5kCisgICAgICAgICAgIGdl
bmVyYXRlIGJ5dGVjb2RlLgorICAgICAgICAyLiBXZSByZWdhcmQgdGhlIGRpdm90IGFzIHRoZSBz
b3VyY2UgY2hhcmFjdGVyIHBvc2l0aW9uIHdlJ3JlIGFyZSBpbnRlcmVzdGVkCisgICAgICAgICAg
IGluLiBBcyBzdWNoLCB3ZSdsbCBjYXB0dXJlIGxpbmUgYW5kIGxpbmVTdGFydCAoZm9yIGNvbHVt
bikgYXQgdGhlIHBvaW50CisgICAgICAgICAgIHdoZW4gd2UgY2FwdHVyZSB0aGUgZGl2b3QgaW5m
b3JtYXRpb24uIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSAzIHZhbHVlcyBhcmUKKyAgICAgICAgICAg
Y29uc2lzdGVudC4KKworICAgICAgICBIb3cgdGhlIGNoYW5nZSBpcyBkb25lOgorICAgICAgICAx
LiBDaGFuZ2UgdGhlIGxleGVyIHRvIHRyYWNrIGxpbmVTdGFydHMuCisgICAgICAgIDIuIENoYW5n
ZSB0aGUgcGFyc2VyIHRvIGNhcHR1cmUgbGluZSBhbmQgbGluZVN0YXJ0cyBhdCB0aGUgcG9pbnQg
b2YgY2FwdHVyaW5nCisgICAgICAgICAgIGRpdm90cy4KKyAgICAgICAgMy4gQ2hhbmdlIHRoZSBw
YXJzZXIgYW5kIGFzc29jaWF0ZWQgY29kZSB0byBwbHVtYiB0aGVzZSB2YWx1ZXMgYWxsIHRoZSB3
YXkgdG8KKyAgICAgICAgICAgdGhlIHBvaW50IHRoYXQgdGhlIGNvcnJlc3BvaW5kaW5nIEV4cHJl
c3Npb25SYW5nZUluZm8gaXMgZW1pdHRlZC4KKyAgICAgICAgNC4gUHJvcGFnYXRlIGFuZCByZWNv
cmQgU291cmNlQ29kZSBmaXJzdExpbmUgYW5kIGZpcnN0TGluZUNvbHVtbk9mZnNldCB0byB0aGUK
KyAgICAgICAgICAgdGhlIG5lY2Vzc2FyeSBwbGFjZXMgc28gdGhhdCB3ZSBjYW4gYWRkIHRoZW0g
YXMgbmVlZGVkIHdoZW4gcmVpZnlpbmcKKyAgICAgICAgICAgVW5saW5rZUNvZGVCbG9ja3MgaW50
byBDb2RlQmxvY2tzLgorICAgICAgICA1LiBDb21wcmVzcyB0aGUgbGluZSBhbmQgY29sdW1uIG51
bWJlciB2YWx1ZXMgaW4gdGhlIEV4cHJlc3Npb25SYW5nZUluZm8uIEluCisgICAgICAgICAgIHBy
YWN0aWNlLCB3ZSBzZWxkb20gaGF2ZSBib3RoIGxhcmdlIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJz
LiBIZW5jZSwgd2UgY2FuCisgICAgICAgICAgIGVuY29kZSBib3RoIGluIGFuIHVpbnQzMl90IG1v
c3Qgb2YgdGhlIHRpbWUuIEZvciB0aGUgdGltZXMgd2hlbiB3ZSBlbmNvdW50ZXIKKyAgICAgICAg
ICAgYm90aCBsYXJnZSBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycywgd2UgaGF2ZSBhIGZhbGxiYWNr
IHRvIHN0b3JlIHRoZSAiZmF0IgorICAgICAgICAgICBwb3NpdGlvbiBpbmZvLgorICAgICAgICA2
LiBFbWl0IGFuIEV4cHJlc3Npb25SYW5nZUluZm8gZm9yIFVuYXJ5T3Agbm9kZXMgdG8gZ2V0IG1v
cmUgbGluZSBhbmQgY29sdW1uCisgICAgICAgICAgIG51bWJlciBjb3ZlcmFnZS4KKyAgICAgICAg
Ny4gQ2hhbmdlIHRoZSBpbnRlcnByZXRlciB0byB1c2UgdGhlIG5ldyB3YXkgb2YgY29tcHV0aW5n
IGxpbmUgYW5kIGNvbHVtbi4KKyAgICAgICAgOC4gRGVsZXRlIG9sZCBsaW5lIGFuZCBjb2x1bW4g
Y29tcHV0YXRpb24gY29kZSB0aGF0IGlzIG5vdyB1bnVzZWQuCisKKyAgICAgICAgTWlzYyBkZXRh
aWxzOgorICAgICAgICAtIHRoZSBvbGQgbGV4ZXIgd2FzIHRyYWNraW5nIGJvdGggYSBzdGFydE9m
ZnNldCBhbmQgY2hhclBvc2l0aW9uIHdoZXJlCisgICAgICAgICAgY2hhclBvc2l0aW9uIGVxdWFs
cyBzdGFydE9mZnNldCAtIFNvdXJjZUNvZGUuc3RhcnRPZmZzZXQuIFdlIG5vdyB1c2UKKyAgICAg
ICAgICBzdGFydE9mZnNldCBleGNsdXNpdmVseSB0aHJvdWdob3V0IHRoZSBzeXN0ZW0gdG8gZm9y
IGNvbnNpc3RlbmN5LgorICAgICAgICAgIEFsbCBvZmZzZXQgdmFsdWVzIChpbmNsdWRpbmcgbGlu
ZVN0YXJ0KSBhcmUgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZQorICAgICAgICAgIFNvdXJj
ZVByb3ZpZGVyIHN0cmluZy4gVGhlc2UgdmFsdWVzIHdpbGwgYmUgY29udmVydGVkIHRvIGJlIHJl
bGF0aXZlIHRvCisgICAgICAgICAgdGhlIFNvdXJjZUNvZGUuc3RhcnRPZmZzZXQgYXQgdGhlIHZl
cnkgbGFzdCBtaW51dGUgaS5lLiB3aGVuIHRoZSBkaXZvdAorICAgICAgICAgIGlzIHN0b3JlZCBp
bnRvIHRoZSBFeHByZXNzaW9uUmFuZ2VJbmZvLgorCisgICAgICAgICAgVGhpcyBjaGFuZ2UgdG8g
dXNlIHRoZSBzYW1lIG9mZnNldCBzeXN0ZW0gZXZlcnl3aGVyZSByZWR1Y2VzIGNvbmZ1c2lvbgor
ICAgICAgICAgIGZyb20gaGF2aW5nIHRvIGNvbnZlcnQgYmFjayBhbmQgZm9ydGggYmV0d2VlbiB0
aGUgMiBzeXN0ZW1zLiBJdCBhbHNvCisgICAgICAgICAgZW5hYmxlcyBhIGxvdCBvZiBhc3NlcnRp
b25zIHRvIGJlIHVzZWQuCisKKyAgICAgICAgLSBBbHNvIGZpeGVkIHNvbWUgYnVncyBpbiB3aGF0
IGRpdm90IHBvc2l0aW9ucyB0byBiZSB1c2VkLiBGb3IgZXhhbXBsZSwKKyAgICAgICAgICBib3Ro
IEV2YWwgYW5kIEZ1bmN0aW9uIGV4cHJlc3Npb25zIHdpbGwgcHJldmlvdXNseSB1c2UgY29sdW1u
IG51bWJlcnMKKyAgICAgICAgICBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZXhwcmVzc2lvbiBidXQg
dXNlIHRoZSBsaW5lIG51bWJlciBhdCB0aGUgZW5kIG9mCisgICAgICAgICAgdGhlIGV4cHJlc3Np
b24uIFRoaXMgaXMgbm93IGZpeGVkIHRvIGJlIGNvbnNpc3RlbnRseSBlaXRoZXIgdXNpbmcgdGhl
CisgICAgICAgICAgc3RhcnQgb3IgZW5kIHBvc2l0aW9ucyBhcyBhcHByb3ByaWF0ZSwgYnV0IG5v
dCBhIG1peCBvZiBsaW5lIGFuZCBjb2x1bW5zCisgICAgICAgICAgZnJvbSBib3RoLgorCisgICAg
ICAgIC0gV2h5IHVzZSBpbnRzIGluc3RlYWQgb2YgdW5zaWduZWRzIGZvciBvZmZzZXRzIGFuZCBs
aW5lU3RhcnRzIGluc2lkZSB0aGUKKyAgICAgICAgICBsZXhlciBhbmQgcGFyc2VyPworICAgICAg
ICAgIFNvbWUgdGVzdHMgKGUuZy4gZmFzdC9qcy9jYWxsLWJhc2UtcmVzb2x1dGlvbi5odG1sIGFu
ZAorICAgICAgICAgIGZhc3QvanMvZXZhbC1jcm9zcy13aW5kb3cuaHRtbCkgaGFzIHNob3duIHRo
YXQgbGluZVN0YXJ0IG9mZnNldHMgY2FuIGJlCisgICAgICAgICAgcHJpb3IgdG8gdGhlIFNvdXJj
ZUNvZGUuc3RhcnRPZmZzZXQuIEtlZXBpbmcgdGhlIGxleGVyIG9mZnNldHMgYXMgaW50cworICAg
ICAgICAgIHNpbXBsaWZpZXMgY29tcHV0YXRpb25zIGFuZCBtYWtlcyBpdCBlYXNpZXIgdG8gbWFp
bnRhaW4gdGhlIGFzc2VydGlvbnMKKyAgICAgICAgICB0aGF0IChzdGFydE9mZnNldCA+PSBsaW5l
U3RhcnRPZmZzZXQpLgorCisgICAgICAgICAgSG93ZXZlciwgY29sdW1uIGFuZCBsaW5lIG51bWJl
cnMgYXJlIGFsd2F5cyB1bnNpZ25lZCB3aGVuIHdlIHB1Ymxpc2gKKyAgICAgICAgICB0aGVtIHRv
IHRoZSBFeHByZXNzaW9uUmFuZ2VJbmZvLiBUaGUgaW50cyBhcmUgb25seSB1c2VkIGluc2lkZSB0
aGUKKyAgICAgICAgICBsZXhlciBhbmQgcGFyc2VyIC4uLiB3ZWxsLCBhbmQgYnl0ZWNvZGUgZ2Vu
ZXJhdG9yLgorCisgICAgICAgIC0gRm9yIGFsbCBjYXNlcywgbGluZVN0YXJ0IGlzIGFsd2F5cyBj
YXB0dXJlZCB3aGVyZSB0aGUgZGl2b3QgaXMgY2FwdHVyZWQuCisgICAgICAgICAgSG93ZXZlciwg
c29tZSBzcHV0bmlrIGNvbmZvcm1hbmNlIHRlc3RzIGhhdmUgc2hvd24gdGhhdCB3ZSBjYW5ub3Qg
aG9ub3IKKyAgICAgICAgICBsaW5lIGJyZWFrcyBmb3IgYXNzaWdubWVudCBzdGF0ZW1lbnRzIGxp
a2UgdGhlIGZvbGxvd2luZzoKKworICAgICAgICAgICAgICBldmFsKCJ4XHUwMDBBKj1cdTAwMEEt
MTsiKTsKKworICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIGxpbmVTdGFydCBpcyBleHBlY3Rl
ZCB0byBiZSBjYXB0dXJlZCBhdCB0aGUgc3RhcnQgb2YKKyAgICAgICAgICB0aGUgYXNzaWdubWVu
dCBleHByZXNzaW9uIGluc3RlYWQgb2YgYXQgdGhlIGRpdm90IHBvaW50IGluIHRoZSBtaWRkbGUu
CisgICAgICAgICAgVGhlIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBpcyB0aGUgb25seSBzcGVjaWFs
IGNhc2UgZm9yIHRoaXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBoYXMgYmVlbiB0ZXN0ZWQgYWdh
aW5zdCB0aGUgZnVsbCBsYXlvdXQgdGVzdHMgYm90aCB3aXRoIHJlbGVhc2UKKyAgICAgICAgYW5k
IGRlYnVnIGJ1aWxkcyB3aXRoIG5vIHJlZ3Jlc3Npb24uCisKKyAgICAgICAgKiBBUEkvSlNDb250
ZXh0UmVmLmNwcDoKKyAgICAgICAgKEpTQ29udGV4dENyZWF0ZUJhY2t0cmFjZSk6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2Rl
QmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpbmVOdW1iZXJGb3JCeXRlY29kZU9m
ZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y29sdW1uTnVtYmVyRm9yQnl0ZWNvZGVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmV4cHJlc3Npb25SYW5nZUZvckJ5dGVj
b2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpmaXJzdExpbmVDb2x1bW5PZmZzZXQpOgorICAgICAgICAoSlNDOjpHbG9i
YWxDb2RlQmxvY2s6Okdsb2JhbENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OlByb2dyYW1Db2Rl
QmxvY2s6OlByb2dyYW1Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUJsb2NrOjpF
dmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OkZ1bmN0aW9u
Q29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9FeHByZXNzaW9uUmFuZ2VJbmZvLmg6Cisg
ICAgICAgIChKU0M6OkV4cHJlc3Npb25SYW5nZUluZm86OmVuY29kZU1vZGUwKToKKyAgICAgICAg
KEpTQzo6RXhwcmVzc2lvblJhbmdlSW5mbzo6ZW5jb2RlTW9kZTEpOgorICAgICAgICAoSlNDOjpF
eHByZXNzaW9uUmFuZ2VJbmZvOjpkZWNvZGVNb2RlMCk6CisgICAgICAgIChKU0M6OkV4cHJlc3Np
b25SYW5nZUluZm86OmRlY29kZU1vZGUxKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjpsaW5rKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Omxp
bmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJs
b2NrOjpleHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlVu
bGlua2VkQ29kZUJsb2NrOjphZGRFeHByZXNzaW9uSW5mbyk6CisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OmZ1bmN0aW9uU3RhcnRDb2x1bW4pOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVC
bG9jazo6c2hyaW5rVG9GaXQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbEV2YWwpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Tm9k
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Tm9kZUluQ29uZGl0aW9u
Q29udGV4dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXhwcmVzc2lv
bkluZm9XaXRoUG9zaXRpb25zKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRFeHByZXNzaW9uSW5mbyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHA6CisgICAgICAgIChKU0M6OlRocm93YWJsZUV4cHJlc3Npb25EYXRhOjplbWl0VGhyb3dSZWZl
cmVuY2VFcnJvcik6CisgICAgICAgIChKU0M6OlJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0KToKKyAgICAgICAgKEpTQzo6
QnJhY2tldEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RG90QWNj
ZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpOZXdFeHByTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RXZhbEZ1bmN0aW9uQ2FsbE5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdFJlc29sdmUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9k
ZTo6ZW1pdEJyYWNrZXQpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdERvdCk6Cisg
ICAgICAgIChKU0M6OkRlbGV0ZVJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpEZWxldGVCcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RGVs
ZXRlRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6ZW1p
dFJlc29sdmUpOgorICAgICAgICAoSlNDOjpQcmVmaXhOb2RlOjplbWl0QnJhY2tldCk6CisgICAg
ICAgIChKU0M6OlByZWZpeE5vZGU6OmVtaXREb3QpOgorICAgICAgICAoSlNDOjpVbmFyeU9wTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QmluYXJ5T3BOb2RlOjplbWl0U3RyY2F0
KToKKyAgICAgICAgKEpTQzo6VGhyb3dhYmxlQmluYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpJbnN0YW5jZU9mTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6ZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeVJl
c29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25SZXNvbHZlTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeURvdE5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OkFzc2lnbkJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpSZWFkTW9kaWZ5QnJhY2tldE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OkNvbnN0U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RW1wdHlT
dGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclN0YXRl
bWVudE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4cHJTdGF0ZW1lbnROb2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpWYXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpJZkVsc2VOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpEb1doaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6V2hpbGVO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGb3JOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OkNvbnRpbnVlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QnJlYWtOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpXaXRoTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6U3dp
dGNoTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6TGFiZWxOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpUaHJvd05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OlRyeU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFdmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmFwcGVuZFNvdXJj
ZVRvRXJyb3IpOgorICAgICAgICAoSlNDOjpTdGFja0ZyYW1lOjpjb21wdXRlTGluZUFuZENvbHVt
bik6CisgICAgICAgIChKU0M6OlN0YWNrRnJhbWU6OmV4cHJlc3Npb25JbmZvKToKKyAgICAgICAg
KEpTQzo6U3RhY2tGcmFtZTo6dG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
Z2V0U3RhY2tUcmFjZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAg
ICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpC
aW5hcnlPcEluZm86OkJpbmFyeU9wSW5mbyk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OkFz
c2lnbm1lbnRJbmZvOjpBc3NpZ25tZW50SW5mbyk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZVJlc29sdmUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCcmFja2V0
QWNjZXNzKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRG90QWNjZXNzKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUmVnRXhwKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlTmV3RXhwcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZUFzc2lnblJlc29sdmUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlv
bkV4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlvbkJvZHkpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCbG9ja1N0YXRlbWVudCk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUV4cHJTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjpjcmVhdGVJZlN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNy
ZWF0ZUZvckxvb3ApOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGb3JJbkxvb3Ap
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVWYXJTdGF0ZW1lbnQpOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVSZXR1cm5TdGF0ZW1lbnQpOgorICAgICAgICAoSlND
OjpBU1RCdWlsZGVyOjpjcmVhdGVCcmVha1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6Y3JlYXRlVHJ5U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRl
U3dpdGNoU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlV2hpbGVT
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVEb1doaWxlU3RhdGVt
ZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlTGFiZWxTdGF0ZW1lbnQpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVXaXRoU3RhdGVtZW50KToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVGhyb3dTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpB
U1RCdWlsZGVyOjpjcmVhdGVEZWJ1Z2dlcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNy
ZWF0ZUNvbnN0U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6YXBwZW5kQmlu
YXJ5RXhwcmVzc2lvbkluZm8pOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjphcHBlbmRVbmFy
eVRva2VuKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6dW5hcnlUb2tlblN0YWNrTGFzdFN0
YXJ0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6dW5hcnlUb2tlblN0YWNrTGFzdExpbmVT
dGFydFBvc2l0aW9uKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6YXNzaWdubWVudFN0YWNr
QXBwZW5kKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQXNzaWdubWVudCk6Cisg
ICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OnNldEV4Y2VwdGlvbkxvY2F0aW9uKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6bWFrZURlbGV0ZU5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1h
a2VCaW5hcnlOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUFzc2lnbk5vZGUp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlUHJlZml4Tm9kZSk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6Om1ha2VQb3N0Zml4Tm9kZSk6CisgICAgICAgICogcGFyc2VyL0xleGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6OjpjdXJyZW50Q29kZVB0cik6CisgICAgICAgIChKU0M6Ojo6
c2V0Q29kZSk6CisgICAgICAgIChKU0M6Ojo6aW50ZXJuYWxTaGlmdCk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUlkZW50aWZpZXJTbG93
Q2FzZSk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VTdHJpbmcpOgorICAgICAgICAoSlNDOjo6OnBh
cnNlU3RyaW5nU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjo6OmxleCk6CisgICAgICAgIChKU0M6
Ojo6c291cmNlQ29kZSk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6
OkxleGVyOjpjdXJyZW50T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OmN1cnJlbnRMaW5l
U3RhcnRPZmZzZXQpOgorICAgICAgICAoSlNDOjpMZXhlcjo6c2V0T2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6TGV4ZXI6Om9mZnNldEZyb21Db2RlUHRyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OmNv
ZGVQdHJGcm9tT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OnNldE9mZnNldEZyb21Db2Rl
UHRyKToKKyAgICAgICAgKEpTQzo6OjpsZXhFeHBlY3RJZGVudGlmaWVyKToKKyAgICAgICAgKiBw
YXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlNDOjpOb2RlOjpOb2RlKToKKyAg
ICAgICAgKEpTQzo6UmVzb2x2ZU5vZGU6OlJlc29sdmVOb2RlKToKKyAgICAgICAgKEpTQzo6RXZh
bEZ1bmN0aW9uQ2FsbE5vZGU6OkV2YWxGdW5jdGlvbkNhbGxOb2RlKToKKyAgICAgICAgKEpTQzo6
RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGUpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUpOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZTo6RnVuY3Rpb25DYWxsQnJhY2tl
dE5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxE
b3ROb2RlKToKKyAgICAgICAgKEpTQzo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5j
dGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2Rl
OjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6
UG9zdGZpeE5vZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVSZXNvbHZlTm9kZTo6RGVsZXRlUmVz
b2x2ZU5vZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVCcmFja2V0Tm9kZTo6RGVsZXRlQnJhY2tl
dE5vZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVEb3ROb2RlOjpEZWxldGVEb3ROb2RlKToKKyAg
ICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6UHJlZml4Tm9kZSk6CisgICAgICAgIChKU0M6OlJlYWRN
b2RpZnlSZXNvbHZlTm9kZTo6UmVhZE1vZGlmeVJlc29sdmVOb2RlKToKKyAgICAgICAgKEpTQzo6
UmVhZE1vZGlmeUJyYWNrZXROb2RlOjpSZWFkTW9kaWZ5QnJhY2tldE5vZGUpOgorICAgICAgICAo
SlNDOjpBc3NpZ25CcmFja2V0Tm9kZTo6QXNzaWduQnJhY2tldE5vZGUpOgorICAgICAgICAoSlND
OjpBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlm
eURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRXJyb3JO
b2RlOjpBc3NpZ25FcnJvck5vZGUpOgorICAgICAgICAoSlNDOjpXaXRoTm9kZTo6V2l0aE5vZGUp
OgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OkZvckluTm9kZSk6CisgICAgICAgICogcGFyc2Vy
L05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhdGVtZW50Tm9kZTo6c2V0TG9jKToKKyAgICAg
ICAgKEpTQzo6U2NvcGVOb2RlOjpTY29wZU5vZGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9k
ZTo6UHJvZ3JhbU5vZGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6RXZhbE5vZGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQm9k
eU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2Rl
OjpjcmVhdGUpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpOb2Rl
OjpzdGFydE9mZnNldCk6CisgICAgICAgIChKU0M6Ok5vZGU6OmxpbmVTdGFydE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OlN0YXRlbWVudE5vZGU6OmZpcnN0TGluZSk6CisgICAgICAgIChKU0M6OlN0
YXRlbWVudE5vZGU6Omxhc3RMaW5lKToKKyAgICAgICAgKEpTQzo6VGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGE6OlRocm93YWJsZUV4cHJlc3Npb25EYXRhKToKKyAgICAgICAgKEpTQzo6VGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGE6OnNldEV4Y2VwdGlvblNvdXJjZUNvZGUpOgorICAgICAgICAoSlNDOjpU
aHJvd2FibGVFeHByZXNzaW9uRGF0YTo6ZGl2b3RTdGFydE9mZnNldCk6CisgICAgICAgIChKU0M6
OlRocm93YWJsZUV4cHJlc3Npb25EYXRhOjpkaXZvdEVuZE9mZnNldCk6CisgICAgICAgIChKU0M6
OlRocm93YWJsZUV4cHJlc3Npb25EYXRhOjpkaXZvdExpbmUpOgorICAgICAgICAoSlNDOjpUaHJv
d2FibGVFeHByZXNzaW9uRGF0YTo6ZGl2b3RMaW5lU3RhcnQpOgorICAgICAgICAoSlNDOjpUaHJv
d2FibGVTdWJFeHByZXNzaW9uRGF0YTo6VGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEpOgorICAg
ICAgICAoSlNDOjpUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YTo6c2V0U3ViZXhwcmVzc2lvbklu
Zm8pOgorICAgICAgICAoSlNDOjpUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YTo6c3ViZXhwcmVz
c2lvbkRpdm90KToKKyAgICAgICAgKEpTQzo6VGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGE6OnN1
YmV4cHJlc3Npb25TdGFydE9mZnNldCk6CisgICAgICAgIChKU0M6OlRocm93YWJsZVN1YkV4cHJl
c3Npb25EYXRhOjpzdWJleHByZXNzaW9uRW5kT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VGhyb3dh
YmxlU3ViRXhwcmVzc2lvbkRhdGE6OnN1YmV4cHJlc3Npb25MaW5lKToKKyAgICAgICAgKEpTQzo6
VGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGE6OnN1YmV4cHJlc3Npb25MaW5lU3RhcnQpOgorICAg
ICAgICAoSlNDOjpUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhOjpUaHJvd2FibGVQ
cmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhKToKKyAgICAgICAgKEpTQzo6VGhyb3dhYmxlUHJlZml4
ZWRTdWJFeHByZXNzaW9uRGF0YTo6c2V0U3ViZXhwcmVzc2lvbkluZm8pOgorICAgICAgICAoSlND
OjpUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhOjpzdWJleHByZXNzaW9uRGl2b3Qp
OgorICAgICAgICAoSlNDOjpUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhOjpzdWJl
eHByZXNzaW9uU3RhcnRPZmZzZXQpOgorICAgICAgICAoSlNDOjpUaHJvd2FibGVQcmVmaXhlZFN1
YkV4cHJlc3Npb25EYXRhOjpzdWJleHByZXNzaW9uRW5kT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
VGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNzaW9uRGF0YTo6c3ViZXhwcmVzc2lvbkxpbmUpOgor
ICAgICAgICAoSlNDOjpUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhOjpzdWJleHBy
ZXNzaW9uTGluZVN0YXJ0KToKKyAgICAgICAgKEpTQzo6U2NvcGVOb2RlOjpzdGFydFN0YXJ0T2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6U2NvcGVOb2RlOjpzdGFydExpbmVTdGFydE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpzdGFydENvbHVtbik6CisgICAgICAgIChKU0M6OkV2
YWxOb2RlOjpzdGFydENvbHVtbik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6OnN0
YXJ0Q29sdW1uKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
OjpQYXJzZXIpOgorICAgICAgICAoSlNDOjo6OnBhcnNlU291cmNlRWxlbWVudHMpOgorICAgICAg
ICAoSlNDOjo6OnBhcnNlVmFyRGVjbGFyYXRpb25MaXN0KToKKyAgICAgICAgKEpTQzo6OjpwYXJz
ZUNvbnN0RGVjbGFyYXRpb25MaXN0KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUZvclN0YXRlbWVu
dCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VCcmVha1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VDb250aW51ZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VSZXR1cm5T
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlVGhyb3dTdGF0ZW1lbnQpOgorICAgICAg
ICAoSlNDOjo6OnBhcnNlV2l0aFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VGdW5j
dGlvbkJvZHkpOgorICAgICAgICAoSlNDOjo6OnBhcnNlRnVuY3Rpb25JbmZvKToKKyAgICAgICAg
KEpTQzo6OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjpMYWJlbElu
Zm86OkxhYmVsSW5mbyk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VFeHByZXNzaW9uT3JMYWJlbFN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbik6Cisg
ICAgICAgIChKU0M6Ojo6cGFyc2VCaW5hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6Ojpw
YXJzZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZU9iamVjdExpdGVyYWwpOgorICAg
ICAgICAoSlNDOjo6OnBhcnNlUHJpbWFyeUV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjo6OnBh
cnNlTWVtYmVyRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VVbmFyeUV4cHJlc3Np
b24pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpu
ZXh0KToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpuZXh0RXhwZWN0SWRlbnRpZmllcik6CisgICAg
ICAgIChKU0M6OlBhcnNlcjo6dG9rZW5TdGFydCk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6dG9r
ZW5Db2x1bW4pOgorICAgICAgICAoSlNDOjpQYXJzZXI6OnRva2VuRW5kKToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyOjp0b2tlbkxpbmVTdGFydCk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6bGFzdFRv
a2VuTGluZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6bGFzdFRva2VuTGluZVN0YXJ0KToKKyAg
ICAgICAgKEpTQzo6OjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vucy5oOgor
ICAgICAgICAoSlNDOjpKU1Rva2VuTG9jYXRpb246OkpTVG9rZW5Mb2NhdGlvbik6CisgICAgICAg
IChKU0M6OkpTVG9rZW5Mb2NhdGlvbjo6bGluZVN0YXJ0UG9zaXRpb24pOgorICAgICAgICAoSlND
OjpKU1Rva2VuTG9jYXRpb246OnN0YXJ0UG9zaXRpb24pOgorICAgICAgICAoSlNDOjpKU1Rva2Vu
TG9jYXRpb246OmVuZFBvc2l0aW9uKToKKyAgICAgICAgKiBwYXJzZXIvU291cmNlQ29kZS5oOgor
ICAgICAgICAoSlNDOjpTb3VyY2VDb2RlOjpTb3VyY2VDb2RlKToKKyAgICAgICAgKEpTQzo6U291
cmNlQ29kZTo6c3RhcnRDb2x1bW4pOgorICAgICAgICAoSlNDOjptYWtlU291cmNlKToKKyAgICAg
ICAgKEpTQzo6U291cmNlQ29kZTo6c3ViRXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1Nv
dXJjZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXIuaDoKKyAg
ICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaDoKKyAgICAgICAgKEpTQzo6
U291cmNlUHJvdmlkZXJDYWNoZUl0ZW06OmNsb3NlQnJhY2VUb2tlbik6CisgICAgICAgIChKU0M6
OlNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtOjpTb3VyY2VQcm92aWRlckNhY2hlSXRlbSk6CisgICAg
ICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tl
cjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpt
YWtlQXNzaWduTm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VQcmVmaXhO
b2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZVBvc3RmaXhOb2RlKToKKyAg
ICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZURlbGV0ZU5vZGUpOgorICAgICAgICAoSlND
OjpTeW50YXhDaGVja2VyOjpjcmVhdGVSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y3JlYXRlQnJhY2tldEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6
OmNyZWF0ZURvdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVJl
Z0V4cCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZU5ld0V4cHIpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVBc3NpZ25SZXNvbHZlKToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25FeHByKToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhD
aGVja2VyOjpjcmVhdGVGb3JJbkxvb3ApOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpj
cmVhdGVSZXR1cm5TdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVh
dGVCcmVha1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUNv
bnRpbnVlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlV2l0
aFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUxhYmVsU3Rh
dGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlVGhyb3dTdGF0ZW1l
bnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVHZXR0ZXJPclNldHRlclBy
b3BlcnR5KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6YXBwZW5kQmluYXJ5RXhwcmVz
c2lvbkluZm8pOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpvcGVyYXRvclN0YWNrUG9w
KToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVD
YWNoZTo6Z2VuZXJhdGVCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0Q29k
ZUJsb2NrKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlND
OjpGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6
OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGU6OnByb2R1Y2VDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1
dGFibGUuaDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6c3RhcnRDb2x1bW4pOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpyZWNvcmRQYXJzZSk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKToKKwogMjAxMy0wNy0wOCAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4g
Rml4IG1ha2UgZGlzdGNoZWNrLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHRSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
b250ZXh0UmVmLmNwcAkocmV2aXNpb24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NvbnRleHRSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzcsNyArMjM3LDkgQEAg
SlNTdHJpbmdSZWYgSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKEpTQwogICAgICAgICAgICAgaWYg
KGkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgdW5zaWduZWQg
bGluZU51bWJlciA9IGZyYW1lLmxpbmUoKTsKKyAgICAgICAgdW5zaWduZWQgbGluZU51bWJlcjsK
KyAgICAgICAgdW5zaWduZWQgY29sdW1uOworICAgICAgICBmcmFtZS5jb21wdXRlTGluZUFuZENv
bHVtbihsaW5lTnVtYmVyLCBjb2x1bW4pOwogICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgp
KQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCcjJyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkocmV2aXNpb24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MDMsNiArMTYwMyw3IEBAIENv
ZGVCbG9jazo6Q29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1RhZywKICAgICAsIG1fbmVlZHNBY3Rp
dmF0aW9uKG90aGVyLm1fbmVlZHNBY3RpdmF0aW9uKQogICAgICwgbV9zb3VyY2Uob3RoZXIubV9z
b3VyY2UpCiAgICAgLCBtX3NvdXJjZU9mZnNldChvdGhlci5tX3NvdXJjZU9mZnNldCkKKyAgICAs
IG1fZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KG90aGVyLm1fZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQog
ICAgICwgbV9jb2RlVHlwZShvdGhlci5tX2NvZGVUeXBlKQogICAgICwgbV9pZGVudGlmaWVycyhv
dGhlci5tX2lkZW50aWZpZXJzKQogICAgICwgbV9jb25zdGFudFJlZ2lzdGVycyhvdGhlci5tX2Nv
bnN0YW50UmVnaXN0ZXJzKQpAQCAtMTYzMiw3ICsxNjMzLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxv
Y2soQ29weVBhcnNlZEJsb2NrVGFnLAogICAgIH0KIH0KIAotQ29kZUJsb2NrOjpDb2RlQmxvY2so
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5s
aW5rZWRDb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGJh
c2VTY29wZURlcHRoLCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlciwg
dW5zaWduZWQgc291cmNlT2Zmc2V0LCBQYXNzT3duUHRyPENvZGVCbG9jaz4gYWx0ZXJuYXRpdmUp
CitDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUs
IFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgdW5zaWduZWQgYmFzZVNjb3BlRGVwdGgsIFBhc3NSZWZQdHI8U291cmNlUHJv
dmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBzb3VyY2VPZmZzZXQsIHVuc2lnbmVkIGZp
cnN0TGluZUNvbHVtbk9mZnNldCwgUGFzc093blB0cjxDb2RlQmxvY2s+IGFsdGVybmF0aXZlKQog
ICAgIDogbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LT52bSgpLCBvd25lckV4ZWN1dGFibGUs
IGdsb2JhbE9iamVjdCkKICAgICAsIG1faGVhcCgmbV9nbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkK
ICAgICAsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxl
ZVJlZ2lzdGVycykKQEAgLTE2NDgsNiArMTY0OSw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNj
cmlwdEV4ZWN1dGFibGUqIG8KICAgICAsIG1fbmVlZHNBY3RpdmF0aW9uKHVubGlua2VkQ29kZUJs
b2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpCiAgICAgLCBtX3NvdXJjZShzb3VyY2VQcm92aWRl
cikKICAgICAsIG1fc291cmNlT2Zmc2V0KHNvdXJjZU9mZnNldCkKKyAgICAsIG1fZmlyc3RMaW5l
Q29sdW1uT2Zmc2V0KGZpcnN0TGluZUNvbHVtbk9mZnNldCkKICAgICAsIG1fY29kZVR5cGUodW5s
aW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkpCiAgICAgLCBtX2FsdGVybmF0aXZlKGFsdGVybmF0
aXZlKQogICAgICwgbV9vc3JFeGl0Q291bnRlcigwKQpAQCAtMTY3MSwxMCArMTY3MywxMiBAQCBD
b2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9j
ay0+ZnVuY3Rpb25EZWNsKGkpOwogICAgICAgICB1bnNpZ25lZCBsaW5lQ291bnQgPSB1bmxpbmtl
ZEV4ZWN1dGFibGUtPmxpbmVDb3VudCgpOwogICAgICAgICB1bnNpZ25lZCBmaXJzdExpbmUgPSBv
d25lckV4ZWN1dGFibGUtPmxpbmVObygpICsgdW5saW5rZWRFeGVjdXRhYmxlLT5maXJzdExpbmVP
ZmZzZXQoKTsKKyAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSB1bmxpbmtlZEV4ZWN1dGFi
bGUtPmZ1bmN0aW9uU3RhcnRDb2x1bW4oKTsKKyAgICAgICAgc3RhcnRDb2x1bW4gKz0gKCF1bmxp
bmtlZEV4ZWN1dGFibGUtPmZpcnN0TGluZU9mZnNldCgpKSA/IG93bmVyRXhlY3V0YWJsZS0+c3Rh
cnRDb2x1bW4oKSA6IDE7CiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gc291cmNlT2Zm
c2V0ICsgdW5saW5rZWRFeGVjdXRhYmxlLT5zdGFydE9mZnNldCgpOwogICAgICAgICB1bnNpZ25l
ZCBzb3VyY2VMZW5ndGggPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnNvdXJjZUxlbmd0aCgpOwotICAg
ICAgICBTb3VyY2VDb2RlIGNvZGUobV9zb3VyY2UsIHN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCAr
IHNvdXJjZUxlbmd0aCwgZmlyc3RMaW5lKTsKLSAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlID0gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoKm1fdm0sIGNvZGUsIHVubGlu
a2VkRXhlY3V0YWJsZSwgZmlyc3RMaW5lLCBmaXJzdExpbmUgKyBsaW5lQ291bnQpOworICAgICAg
ICBTb3VyY2VDb2RlIGNvZGUobV9zb3VyY2UsIHN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCArIHNv
dXJjZUxlbmd0aCwgZmlyc3RMaW5lLCBzdGFydENvbHVtbik7CisgICAgICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSA9IEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCptX3ZtLCBj
b2RlLCB1bmxpbmtlZEV4ZWN1dGFibGUsIGZpcnN0TGluZSwgZmlyc3RMaW5lICsgbGluZUNvdW50
LCBzdGFydENvbHVtbik7CiAgICAgICAgIG1fZnVuY3Rpb25EZWNsc1tpXS5zZXQoKm1fdm0sIG93
bmVyRXhlY3V0YWJsZSwgZXhlY3V0YWJsZSk7CiAgICAgfQogCkBAIC0xNjgzLDEwICsxNjg3LDEy
IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICAgICAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9IHVubGlua2VkQ29k
ZUJsb2NrLT5mdW5jdGlvbkV4cHIoaSk7CiAgICAgICAgIHVuc2lnbmVkIGxpbmVDb3VudCA9IHVu
bGlua2VkRXhlY3V0YWJsZS0+bGluZUNvdW50KCk7CiAgICAgICAgIHVuc2lnbmVkIGZpcnN0TGlu
ZSA9IG93bmVyRXhlY3V0YWJsZS0+bGluZU5vKCkgKyB1bmxpbmtlZEV4ZWN1dGFibGUtPmZpcnN0
TGluZU9mZnNldCgpOworICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IHVubGlua2VkRXhl
Y3V0YWJsZS0+ZnVuY3Rpb25TdGFydENvbHVtbigpOworICAgICAgICBzdGFydENvbHVtbiArPSAo
IXVubGlua2VkRXhlY3V0YWJsZS0+Zmlyc3RMaW5lT2Zmc2V0KCkpID8gb3duZXJFeGVjdXRhYmxl
LT5zdGFydENvbHVtbigpIDogMTsKICAgICAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBzb3Vy
Y2VPZmZzZXQgKyB1bmxpbmtlZEV4ZWN1dGFibGUtPnN0YXJ0T2Zmc2V0KCk7CiAgICAgICAgIHVu
c2lnbmVkIHNvdXJjZUxlbmd0aCA9IHVubGlua2VkRXhlY3V0YWJsZS0+c291cmNlTGVuZ3RoKCk7
Ci0gICAgICAgIFNvdXJjZUNvZGUgY29kZShtX3NvdXJjZSwgc3RhcnRPZmZzZXQsIHN0YXJ0T2Zm
c2V0ICsgc291cmNlTGVuZ3RoLCBmaXJzdExpbmUpOwotICAgICAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgqbV92bSwgY29kZSwg
dW5saW5rZWRFeGVjdXRhYmxlLCBmaXJzdExpbmUsIGZpcnN0TGluZSArIGxpbmVDb3VudCk7Cisg
ICAgICAgIFNvdXJjZUNvZGUgY29kZShtX3NvdXJjZSwgc3RhcnRPZmZzZXQsIHN0YXJ0T2Zmc2V0
ICsgc291cmNlTGVuZ3RoLCBmaXJzdExpbmUsIHN0YXJ0Q29sdW1uKTsKKyAgICAgICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoKm1f
dm0sIGNvZGUsIHVubGlua2VkRXhlY3V0YWJsZSwgZmlyc3RMaW5lLCBmaXJzdExpbmUgKyBsaW5l
Q291bnQsIHN0YXJ0Q29sdW1uKTsKICAgICAgICAgbV9mdW5jdGlvbkV4cHJzW2ldLnNldCgqbV92
bSwgb3duZXJFeGVjdXRhYmxlLCBleGVjdXRhYmxlKTsKICAgICB9CiAKQEAgLTE5NDMsMTAgKzE5
NDksNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgICAg
IH0KIAogICAgICAgICBjYXNlIG9wX2RlYnVnOiB7Ci0gICAgICAgICAgICBzaXplX3QgY2hhclBv
c2l0aW9uID0gcGNbaSArIDRdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIHNpemVfdCBhY3R1YWxD
aGFyUG9zaXRpb24gPSBjaGFyUG9zaXRpb24gKyBtX3NvdXJjZU9mZnNldDsKLSAgICAgICAgICAg
IHNpemVfdCBjb2x1bW4gPSBtX3NvdXJjZS0+Y2hhclBvc2l0aW9uVG9Db2x1bW5OdW1iZXIoYWN0
dWFsQ2hhclBvc2l0aW9uKTsKLSAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNF0gPSBjb2x1
bW47CisgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDRdID0gY29sdW1uTnVtYmVyRm9yQnl0
ZWNvZGVPZmZzZXQoaSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yNDYz
LDE2ICsyNDY2LDMyIEBAIEhhbmRsZXJJbmZvKiBDb2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRlY28K
ICAgICByZXR1cm4gMDsKIH0KIAotaW50IENvZGVCbG9jazo6bGluZU51bWJlckZvckJ5dGVjb2Rl
T2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQordW5zaWduZWQgQ29kZUJsb2NrOjpsaW5l
TnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQoYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwog
ICAgIHJldHVybiBtX293bmVyRXhlY3V0YWJsZS0+bGluZU5vKCkgKyBtX3VubGlua2VkQ29kZS0+
bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKIH0KIAotdm9pZCBD
b2RlQmxvY2s6OmV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCBpbnQmIGRpdm90LCBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCkK
K3Vuc2lnbmVkIENvZGVCbG9jazo6Y29sdW1uTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQpCiB7Ci0gICAgbV91bmxpbmtlZENvZGUtPmV4cHJlc3Npb25SYW5n
ZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldCk7CisgICAgLy8gV2UgY2FuJ3QgYXNzZXJ0IHRoaXMgaGVyZSBiZWNhdXNlIHRoaXMg
aXMgY2FsbGVkIGZyb20gdGhlIENvZGVCbG9jaworICAgIC8vIGNvbnN0cnVjdG9yIGJlZm9yZSBp
bnN0cnVjdGlvbnMoKSBpcyBpbml0aWFsaXplZC4KKyAgICAvLyBSRUxFQVNFX0FTU0VSVChieXRl
Y29kZU9mZnNldCA8IGluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgaW50IGRpdm90OworICAg
IGludCBzdGFydE9mZnNldDsKKyAgICBpbnQgZW5kT2Zmc2V0OworICAgIHVuc2lnbmVkIGxpbmU7
CisgICAgdW5zaWduZWQgY29sdW1uOworICAgIGV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zm
c2V0KGJ5dGVjb2RlT2Zmc2V0LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgbGluZSwg
Y29sdW1uKTsKKyAgICByZXR1cm4gY29sdW1uOworfQorCit2b2lkIENvZGVCbG9jazo6ZXhwcmVz
c2lvblJhbmdlRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGludCYg
ZGl2b3QsIGludCYgc3RhcnRPZmZzZXQsIGludCYgZW5kT2Zmc2V0LCB1bnNpZ25lZCYgbGluZSwg
dW5zaWduZWQmIGNvbHVtbikKK3sKKyAgICBtX3VubGlua2VkQ29kZS0+ZXhwcmVzc2lvblJhbmdl
Rm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5k
T2Zmc2V0LCBsaW5lLCBjb2x1bW4pOwogICAgIGRpdm90ICs9IG1fc291cmNlT2Zmc2V0OworICAg
IGNvbHVtbiArPSBsaW5lID8gMSA6IGZpcnN0TGluZUNvbHVtbk9mZnNldCgpOworICAgIGxpbmUg
Kz0gbV9vd25lckV4ZWN1dGFibGUtPmxpbmVObygpOwogfQogCiB2b2lkIENvZGVCbG9jazo6c2hy
aW5rVG9GaXQoU2hyaW5rTW9kZSBzaHJpbmtNb2RlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTUxOTIwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IENhbWVyb24gWndhcmljaCA8Y3d6d2FyaWNoQHV3
YXRlcmxvby5jYT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgog
cHJvdGVjdGVkOgogICAgIENvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jayYg
b3RoZXIpOwogICAgICAgICAKLSAgICBDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQg
YmFzZVNjb3BlRGVwdGgsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+LCB1bnNpZ25lZCBzb3Vy
Y2VPZmZzZXQsIFBhc3NPd25QdHI8Q29kZUJsb2NrPiBhbHRlcm5hdGl2ZSk7CisgICAgQ29kZUJs
b2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sq
LCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIGJhc2VTY29wZURlcHRoLCBQYXNzUmVmUHRyPFNv
dXJjZVByb3ZpZGVyPiwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExpbmVD
b2x1bW5PZmZzZXQsIFBhc3NPd25QdHI8Q29kZUJsb2NrPiBhbHRlcm5hdGl2ZSk7CiAKICAgICBX
cml0ZUJhcnJpZXI8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwogICAgIEhlYXAqIG1f
aGVhcDsKQEAgLTE3Niw4ICsxNzYsMTAgQEAgcHVibGljOgogICAgIH0KIAogICAgIEhhbmRsZXJJ
bmZvKiBoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwot
ICAgIGludCBsaW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQpOwotICAgIHZvaWQgZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQsIGludCYgZGl2b3QsIGludCYgc3RhcnRPZmZzZXQsIGludCYgZW5kT2Zm
c2V0KTsKKyAgICB1bnNpZ25lZCBsaW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQpOworICAgIHVuc2lnbmVkIGNvbHVtbk51bWJlckZvckJ5dGVjb2RlT2Zm
c2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICB2b2lkIGV4cHJlc3Npb25SYW5nZUZv
ckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBpbnQmIGRpdm90LAorICAg
ICAgICBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCwgdW5zaWduZWQmIGxpbmUsIHVu
c2lnbmVkJiBjb2x1bW4pOwogCiAjaWYgRU5BQkxFKEpJVCkKIApAQCAtNTY2LDYgKzU2OCw3IEBA
IHB1YmxpYzoKIAogICAgIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZS5nZXQoKTsgfQogICAgIHVuc2lnbmVkIHNvdXJjZU9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fc291cmNlT2Zmc2V0OyB9CisgICAgdW5zaWduZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdExpbmVDb2x1bW5PZmZzZXQ7IH0KIAogICAgIHNpemVf
dCBudW1iZXJPZkp1bXBUYXJnZXRzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPm51
bWJlck9mSnVtcFRhcmdldHMoKTsgfQogICAgIHVuc2lnbmVkIGp1bXBUYXJnZXQoaW50IGluZGV4
KSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+anVtcFRhcmdldChpbmRleCk7IH0KQEAg
LTExNzEsNiArMTE3NCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXI+
IG1fc291cmNlOwogICAgIHVuc2lnbmVkIG1fc291cmNlT2Zmc2V0OworICAgIHVuc2lnbmVkIG1f
Zmlyc3RMaW5lQ29sdW1uT2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fY29kZVR5cGU7CiAKICNpZiBF
TkFCTEUoTExJTlQpCkBAIC0xMzA5LDggKzEzMTMsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAg
IH0KICAgICAgICAgCi0gICAgR2xvYmFsQ29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVy
RXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBiYXNlU2NvcGVEZXB0aCwgUGFzc1JlZlB0
cjxTb3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIHNvdXJjZU9mZnNldCwg
UGFzc093blB0cjxDb2RlQmxvY2s+IGFsdGVybmF0aXZlKQotICAgICAgICA6IENvZGVCbG9jayhv
d25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGJhc2VTY29w
ZURlcHRoLCBzb3VyY2VQcm92aWRlciwgc291cmNlT2Zmc2V0LCBhbHRlcm5hdGl2ZSkKKyAgICBH
bG9iYWxDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtl
ZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIHVuc2lnbmVkIGJhc2VTY29wZURlcHRoLCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBz
b3VyY2VQcm92aWRlciwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExpbmVD
b2x1bW5PZmZzZXQsIFBhc3NPd25QdHI8Q29kZUJsb2NrPiBhbHRlcm5hdGl2ZSkKKyAgICAgICAg
OiBDb2RlQmxvY2sob3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgZ2xvYmFsT2Jq
ZWN0LCBiYXNlU2NvcGVEZXB0aCwgc291cmNlUHJvdmlkZXIsIHNvdXJjZU9mZnNldCwgZmlyc3RM
aW5lQ29sdW1uT2Zmc2V0LCBhbHRlcm5hdGl2ZSkKICAgICB7CiAgICAgfQogfTsKQEAgLTEzMjIs
OCArMTMyNiw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgUHJvZ3JhbUNvZGVCbG9j
ayhQcm9ncmFtRXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
YXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlciwgUGFzc093blB0cjxDb2Rl
QmxvY2s+IGFsdGVybmF0aXZlKQotICAgICAgICA6IEdsb2JhbENvZGVCbG9jayhvd25lckV4ZWN1
dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIDAsIHNvdXJjZVByb3ZpZGVy
LCAwLCBhbHRlcm5hdGl2ZSkKKyAgICBQcm9ncmFtQ29kZUJsb2NrKFByb2dyYW1FeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2Rl
QmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8U291cmNlUHJv
dmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQsIFBh
c3NPd25QdHI8Q29kZUJsb2NrPiBhbHRlcm5hdGl2ZSkKKyAgICAgICAgOiBHbG9iYWxDb2RlQmxv
Y2sob3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCAwLCBz
b3VyY2VQcm92aWRlciwgMCwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0LCBhbHRlcm5hdGl2ZSkKICAg
ICB7CiAgICAgfQogCkBAIC0xMzQ1LDcgKzEzNDksNyBAQCBwdWJsaWM6CiAgICAgfQogICAgICAg
ICAKICAgICBFdmFsQ29kZUJsb2NrKEV2YWxFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVu
bGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCBp
bnQgYmFzZVNjb3BlRGVwdGgsIFBhc3NPd25QdHI8Q29kZUJsb2NrPiBhbHRlcm5hdGl2ZSkKLSAg
ICAgICAgOiBHbG9iYWxDb2RlQmxvY2sob3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9j
aywgZ2xvYmFsT2JqZWN0LCBiYXNlU2NvcGVEZXB0aCwgc291cmNlUHJvdmlkZXIsIDAsIGFsdGVy
bmF0aXZlKQorICAgICAgICA6IEdsb2JhbENvZGVCbG9jayhvd25lckV4ZWN1dGFibGUsIHVubGlu
a2VkQ29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGJhc2VTY29wZURlcHRoLCBzb3VyY2VQcm92aWRl
ciwgMCwgMSwgYWx0ZXJuYXRpdmUpCiAgICAgewogICAgIH0KIApAQCAtMTM3Miw4ICsxMzc2LDgg
QEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBGdW5jdGlvbkNvZGVCbG9jayhGdW5jdGlv
bkV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayog
dW5saW5rZWRDb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQ
dHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBzb3VyY2VPZmZzZXQs
IFBhc3NPd25QdHI8Q29kZUJsb2NrPiBhbHRlcm5hdGl2ZSA9IG51bGxwdHIpCi0gICAgICAgIDog
Q29kZUJsb2NrKG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIGdsb2JhbE9iamVj
dCwgMCwgc291cmNlUHJvdmlkZXIsIHNvdXJjZU9mZnNldCwgYWx0ZXJuYXRpdmUpCisgICAgRnVu
Y3Rpb25Db2RlQmxvY2soRnVuY3Rpb25FeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlciwg
dW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQsIFBh
c3NPd25QdHI8Q29kZUJsb2NrPiBhbHRlcm5hdGl2ZSA9IG51bGxwdHIpCisgICAgICAgIDogQ29k
ZUJsb2NrKG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwg
MCwgc291cmNlUHJvdmlkZXIsIHNvdXJjZU9mZnNldCwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0LCBh
bHRlcm5hdGl2ZSkKICAgICB7CiAgICAgfQogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9FeHByZXNzaW9uUmFuZ2VJbmZvLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4cHJlc3Npb25SYW5nZUluZm8uaAkocmV2aXNp
b24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4cHJlc3Npb25S
YW5nZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsMTQgKzMxLDYxIEBACiBuYW1lc3BhY2UgSlND
IHsKIAogc3RydWN0IEV4cHJlc3Npb25SYW5nZUluZm8geworICAgIHN0cnVjdCBGYXRQb3NpdGlv
biB7CisgICAgICAgIHVpbnQzMl90IGxpbmU7CisgICAgICAgIHVpbnQzMl90IGNvbHVtbjsKKyAg
ICB9OworCisgICAgZW51bSB7CisgICAgICAgIE1vZGUwTGluZVNoaWZ0ID0gOCwKKyAgICAgICAg
TW9kZTBMaW5lTWFzayA9ICgxIDw8IDIyKSAtIDEsCisgICAgICAgIE1vZGUwQ29sdW1uTWFzayA9
ICgxIDw8IDgpIC0gMSwKKyAgICAgICAgTW9kZTFMaW5lU2hpZnQgPSAyMiwKKyAgICAgICAgTW9k
ZTFMaW5lTWFzayA9ICgxIDw8IDgpIC0gMSwKKyAgICAgICAgTW9kZTFDb2x1bW5NYXNrID0gKDEg
PDwgMjIpIC0gMQorICAgIH07CisKICAgICBlbnVtIHsKICAgICAgICAgTWF4T2Zmc2V0ID0gKDEg
PDwgNykgLSAxLCAKLSAgICAgICAgTWF4RGl2b3QgPSAoMSA8PCAyNSkgLSAxCisgICAgICAgIE1h
eERpdm90ID0gKDEgPDwgMjUpIC0gMSwKKyAgICAgICAgTWF4TW9kZTBMaW5lID0gKDEgPDwgMjIp
IC0gMSwKKyAgICAgICAgTWF4TW9kZTBDb2x1bW4gPSAoMSA8PCA4KSAtIDEsCisgICAgICAgIE1h
eE1vZGUxTGluZSA9ICgxIDw8IDgpIC0gMSwKKyAgICAgICAgTWF4TW9kZTFDb2x1bW4gPSAoMSA8
PCAyMikgLSAxCiAgICAgfTsKKworICAgIHZvaWQgZW5jb2RlTW9kZTAodW5zaWduZWQgbGluZSwg
dW5zaWduZWQgY29sdW1uKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGxpbmUgPD0gTWF4TW9kZTBM
aW5lKTsKKyAgICAgICAgQVNTRVJUKGNvbHVtbiA8PSBNYXhNb2RlMENvbHVtbik7CisgICAgICAg
IHBvc2l0aW9uID0gKChsaW5lICYgTW9kZTBMaW5lTWFzaykgPDwgTW9kZTBMaW5lU2hpZnQgfCAo
Y29sdW1uICYgTW9kZTBDb2x1bW5NYXNrKSk7CisgICAgfQorCisgICAgdm9pZCBlbmNvZGVNb2Rl
MSh1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBjb2x1bW4pCisgICAgeworICAgICAgICBBU1NFUlQo
bGluZSA8PSBNYXhNb2RlMUxpbmUpOworICAgICAgICBBU1NFUlQoY29sdW1uIDw9IE1heE1vZGUx
Q29sdW1uKTsKKyAgICAgICAgcG9zaXRpb24gPSAoKGxpbmUgJiBNb2RlMUxpbmVNYXNrKSA8PCBN
b2RlMUxpbmVTaGlmdCB8IChjb2x1bW4gJiBNb2RlMUNvbHVtbk1hc2spKTsKKyAgICB9CisKKyAg
ICB2b2lkIGRlY29kZU1vZGUwKHVuc2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYgY29sdW1uKQorICAg
IHsKKyAgICAgICAgbGluZSA9IChwb3NpdGlvbiA+PiBNb2RlMExpbmVTaGlmdCkgJiBNb2RlMExp
bmVNYXNrOworICAgICAgICBjb2x1bW4gPSBwb3NpdGlvbiAmIE1vZGUwQ29sdW1uTWFzazsKKyAg
ICB9CisKKyAgICB2b2lkIGRlY29kZU1vZGUxKHVuc2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYgY29s
dW1uKQorICAgIHsKKyAgICAgICAgbGluZSA9IChwb3NpdGlvbiA+PiBNb2RlMUxpbmVTaGlmdCkg
JiBNb2RlMUxpbmVNYXNrOworICAgICAgICBjb2x1bW4gPSBwb3NpdGlvbiAmIE1vZGUxQ29sdW1u
TWFzazsKKyAgICB9CisKICAgICB1aW50MzJfdCBpbnN0cnVjdGlvbk9mZnNldCA6IDI1OwotICAg
IHVpbnQzMl90IGRpdm90UG9pbnQgOiAyNTsKICAgICB1aW50MzJfdCBzdGFydE9mZnNldCA6IDc7
CisgICAgdWludDMyX3QgZGl2b3RQb2ludCA6IDI1OwogICAgIHVpbnQzMl90IGVuZE9mZnNldCA6
IDc7CisgICAgdWludDMyX3QgbW9kZSA6IDI7CisgICAgdWludDMyX3QgcG9zaXRpb24gOiAzMDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNTE5MjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIs
IDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC05Miw2ICs5Miw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OjpVbmxpbmtlZEZ1bmMKICAgICAsIG1fZmlyc3RMaW5lT2Zmc2V0KG5vZGUtPmZpcnN0TGluZSgp
IC0gc291cmNlLmZpcnN0TGluZSgpKQogICAgICwgbV9saW5lQ291bnQobm9kZS0+bGFzdExpbmUo
KSAtIG5vZGUtPmZpcnN0TGluZSgpKQogICAgICwgbV9mdW5jdGlvblN0YXJ0T2Zmc2V0KG5vZGUt
PmZ1bmN0aW9uU3RhcnQoKSAtIHNvdXJjZS5zdGFydE9mZnNldCgpKQorICAgICwgbV9mdW5jdGlv
blN0YXJ0Q29sdW1uKG5vZGUtPnN0YXJ0Q29sdW1uKCkpCiAgICAgLCBtX3N0YXJ0T2Zmc2V0KG5v
ZGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCkgLSBzb3VyY2Uuc3RhcnRPZmZzZXQoKSkKICAgICAs
IG1fc291cmNlTGVuZ3RoKG5vZGUtPnNvdXJjZSgpLmxlbmd0aCgpKQogICAgICwgbV9mZWF0dXJl
cyhub2RlLT5mZWF0dXJlcygpKQpAQCAtMTIyLDggKzEyMyw5IEBAIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogVW5saW5rZWRGdW5jdGlvbkV4ZWMKIHsKICAgICB1bnNpZ25lZCBmaXJzdExpbmUgPSBsaW5l
T2Zmc2V0ICsgbV9maXJzdExpbmVPZmZzZXQ7CiAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBz
b3VyY2VPZmZzZXQgKyBtX3N0YXJ0T2Zmc2V0OwotICAgIFNvdXJjZUNvZGUgY29kZShzb3VyY2Uu
cHJvdmlkZXIoKSwgc3RhcnRPZmZzZXQsIHN0YXJ0T2Zmc2V0ICsgbV9zb3VyY2VMZW5ndGgsIGZp
cnN0TGluZSk7Ci0gICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBjb2Rl
LCB0aGlzLCBmaXJzdExpbmUsIGZpcnN0TGluZSArIG1fbGluZUNvdW50KTsKKyAgICB1bnNpZ25l
ZCBzdGFydENvbHVtbiA9IG1fZnVuY3Rpb25TdGFydENvbHVtbiArIDE7IC8vIENvbnZlcnQgdG8g
YmFzZSAxLgorICAgIFNvdXJjZUNvZGUgY29kZShzb3VyY2UucHJvdmlkZXIoKSwgc3RhcnRPZmZz
ZXQsIHN0YXJ0T2Zmc2V0ICsgbV9zb3VyY2VMZW5ndGgsIGZpcnN0TGluZSwgc3RhcnRDb2x1bW4p
OworICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgY29kZSwgdGhpcywg
Zmlyc3RMaW5lLCBmaXJzdExpbmUgKyBtX2xpbmVDb3VudCwgc3RhcnRDb2x1bW4pOwogfQogCiBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZy
b21HbG9iYWxDb2RlKGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEV4ZWNTdGF0ZSogZXhlYywgRGVi
dWdnZXIqLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTT2JqZWN0KiogZXhjZXB0aW9uKQpA
QCAtMjM2LDI0ICsyMzgsMTcgQEAgdm9pZCBVbmxpbmtlZENvZGVCbG9jazo6dmlzaXRDaGlsZHJl
bihKUwogaW50IFVubGlua2VkQ29kZUJsb2NrOjpsaW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQo
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCiB7CiAgICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0IDwg
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSAgICBWZWN0b3I8TGluZUluZm8+JiBsaW5lSW5mbyA9
IG1fbGluZUluZm87Ci0gICAgCi0gICAgaW50IGxvdyA9IDA7Ci0gICAgaW50IGhpZ2ggPSBsaW5l
SW5mby5zaXplKCk7Ci0gICAgd2hpbGUgKGxvdyA8IGhpZ2gpIHsKLSAgICAgICAgaW50IG1pZCA9
IGxvdyArIChoaWdoIC0gbG93KSAvIDI7Ci0gICAgICAgIGlmIChsaW5lSW5mb1ttaWRdLmluc3Ry
dWN0aW9uT2Zmc2V0IDw9IGJ5dGVjb2RlT2Zmc2V0KQotICAgICAgICAgICAgbG93ID0gbWlkICsg
MTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaGlnaCA9IG1pZDsKLSAgICB9Ci0gICAgCi0g
ICAgaWYgKCFsb3cpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBsaW5lSW5mb1tsb3cg
LSAxXS5saW5lTnVtYmVyOworICAgIGludCBkaXZvdDsKKyAgICBpbnQgc3RhcnRPZmZzZXQ7Cisg
ICAgaW50IGVuZE9mZnNldDsKKyAgICB1bnNpZ25lZCBsaW5lOworICAgIHVuc2lnbmVkIGNvbHVt
bjsKKyAgICBleHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCwg
ZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGxpbmUsIGNvbHVtbik7CisgICAgcmV0dXJu
IGxpbmU7CiB9CiAKLXZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OmV4cHJlc3Npb25SYW5nZUZvckJ5
dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBpbnQmIGRpdm90LCBpbnQmIHN0
YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCkKK3ZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OmV4cHJl
c3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LAorICAg
IGludCYgZGl2b3QsIGludCYgc3RhcnRPZmZzZXQsIGludCYgZW5kT2Zmc2V0LCB1bnNpZ25lZCYg
bGluZSwgdW5zaWduZWQmIGNvbHVtbikKIHsKICAgICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgPCBp
bnN0cnVjdGlvbnMoKS5zaXplKCkpOwogCkBAIC0yNjEsNiArMjU2LDggQEAgdm9pZCBVbmxpbmtl
ZENvZGVCbG9jazo6ZXhwcmVzc2lvblJhbmdlRgogICAgICAgICBzdGFydE9mZnNldCA9IDA7CiAg
ICAgICAgIGVuZE9mZnNldCA9IDA7CiAgICAgICAgIGRpdm90ID0gMDsKKyAgICAgICAgbGluZSA9
IDA7CisgICAgICAgIGNvbHVtbiA9IDA7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI3
NywxNiArMjc0LDgxIEBAIHZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OmV4cHJlc3Npb25SYW5nZUYK
ICAgICB9CiAKICAgICBBU1NFUlQobG93KTsKLSAgICBpZiAoIWxvdykgeworICAgIGlmICghbG93
KQorICAgICAgICBsb3cgPSAxOyAvLyBVc2UgbmVhcmVzdCBuZWlnaGJvciBpLmUuIDFzdCBlbnRy
eS4KKworICAgIEV4cHJlc3Npb25SYW5nZUluZm8mIGluZm8gPSBleHByZXNzaW9uSW5mb1tsb3cg
LSAxXTsKKyAgICBzdGFydE9mZnNldCA9IGluZm8uc3RhcnRPZmZzZXQ7CisgICAgZW5kT2Zmc2V0
ID0gaW5mby5lbmRPZmZzZXQ7CisgICAgZGl2b3QgPSBpbmZvLmRpdm90UG9pbnQ7CisKKyAgICBz
d2l0Y2ggKGluZm8ubW9kZSkgeworICAgIGNhc2UgMDoKKyAgICAgICAgaW5mby5kZWNvZGVNb2Rl
MChsaW5lLCBjb2x1bW4pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDE6CisgICAgICAgIGlu
Zm8uZGVjb2RlTW9kZTEobGluZSwgY29sdW1uKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAy
OiB7CisgICAgICAgIHVuc2lnbmVkIGZhdEluZGV4ID0gaW5mby5wb3NpdGlvbjsKKyAgICAgICAg
RXhwcmVzc2lvblJhbmdlSW5mbzo6RmF0UG9zaXRpb24mIGZhdFBvcyA9IG1fcmFyZURhdGEtPm1f
ZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnNbZmF0SW5kZXhdOworICAgICAgICBsaW5lID0gZmF0
UG9zLmxpbmU7CisgICAgICAgIGNvbHVtbiA9IGZhdFBvcy5jb2x1bW47CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICB9IC8vIHN3aXRjaAorfQorCit2b2lkIFVubGlua2VkQ29kZUJsb2NrOjph
ZGRFeHByZXNzaW9uSW5mbyh1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCwKKyAgICBpbnQgZGl2
b3QsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCwgdW5zaWduZWQgbGluZSwgdW5zaWdu
ZWQgY29sdW1uKQoreworICAgIGlmIChkaXZvdCA+IEV4cHJlc3Npb25SYW5nZUluZm86Ok1heERp
dm90KSB7CisgICAgICAgIC8vIE92ZXJmbG93IGhhcyBvY2N1cnJlZCwgd2UgY2FuIG9ubHkgZ2l2
ZSBsaW5lIG51bWJlciBpbmZvIGZvciBlcnJvcnMgZm9yIHRoaXMgcmVnaW9uCisgICAgICAgIGRp
dm90ID0gMDsKICAgICAgICAgc3RhcnRPZmZzZXQgPSAwOwogICAgICAgICBlbmRPZmZzZXQgPSAw
OwotICAgICAgICBkaXZvdCA9IDA7Ci0gICAgICAgIHJldHVybjsKKyAgICB9IGVsc2UgaWYgKHN0
YXJ0T2Zmc2V0ID4gRXhwcmVzc2lvblJhbmdlSW5mbzo6TWF4T2Zmc2V0KSB7CisgICAgICAgIC8v
IElmIHRoZSBzdGFydCBvZmZzZXQgaXMgb3V0IG9mIGJvdW5kcyB3ZSBjbGVhciBib3RoIG9mZnNl
dHMKKyAgICAgICAgLy8gc28gd2Ugb25seSBnZXQgdGhlIGRpdm90IG1hcmtlci4gRXJyb3IgbWVz
c2FnZSB3aWxsIGhhdmUgdG8gYmUgcmVkdWNlZAorICAgICAgICAvLyB0byBsaW5lIGFuZCBjaGFy
UG9zaXRpb24gbnVtYmVyLgorICAgICAgICBzdGFydE9mZnNldCA9IDA7CisgICAgICAgIGVuZE9m
ZnNldCA9IDA7CisgICAgfSBlbHNlIGlmIChlbmRPZmZzZXQgPiBFeHByZXNzaW9uUmFuZ2VJbmZv
OjpNYXhPZmZzZXQpIHsKKyAgICAgICAgLy8gVGhlIGVuZCBvZmZzZXQgaXMgb25seSB1c2VkIGZv
ciBhZGRpdGlvbmFsIGNvbnRleHQsIGFuZCBpcyBtdWNoIG1vcmUgbGlrZWx5CisgICAgICAgIC8v
IHRvIG92ZXJmbG93IChlZy4gZnVuY3Rpb24gY2FsbCBhcmd1bWVudHMpIHNvIHdlIGFyZSB3aWxs
aW5nIHRvIGRyb3AgaXQgd2l0aG91dAorICAgICAgICAvLyBkcm9wcGluZyB0aGUgcmVzdCBvZiB0
aGUgcmFuZ2UuCisgICAgICAgIGVuZE9mZnNldCA9IDA7CisgICAgfQorCisgICAgdW5zaWduZWQg
cG9zaXRpb25Nb2RlID0KKyAgICAgICAgKGxpbmUgPD0gRXhwcmVzc2lvblJhbmdlSW5mbzo6TWF4
TW9kZTBMaW5lICYmIGNvbHVtbiA8PSBFeHByZXNzaW9uUmFuZ2VJbmZvOjpNYXhNb2RlMENvbHVt
bikgPyAwCisgICAgICAgIDogKGxpbmUgPD0gRXhwcmVzc2lvblJhbmdlSW5mbzo6TWF4TW9kZTFM
aW5lICYmIGNvbHVtbiA8PSBFeHByZXNzaW9uUmFuZ2VJbmZvOjpNYXhNb2RlMUNvbHVtbikgPyAx
CisgICAgICAgIDogMjsKKworICAgIEV4cHJlc3Npb25SYW5nZUluZm8gaW5mbzsKKyAgICBpbmZv
Lmluc3RydWN0aW9uT2Zmc2V0ID0gaW5zdHJ1Y3Rpb25PZmZzZXQ7CisgICAgaW5mby5kaXZvdFBv
aW50ID0gZGl2b3Q7CisgICAgaW5mby5zdGFydE9mZnNldCA9IHN0YXJ0T2Zmc2V0OworICAgIGlu
Zm8uZW5kT2Zmc2V0ID0gZW5kT2Zmc2V0OworCisgICAgaW5mby5tb2RlID0gcG9zaXRpb25Nb2Rl
OworICAgIHN3aXRjaCAocG9zaXRpb25Nb2RlKSB7CisgICAgY2FzZSAwOgorICAgICAgICBpbmZv
LmVuY29kZU1vZGUwKGxpbmUsIGNvbHVtbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMToK
KyAgICAgICAgaW5mby5lbmNvZGVNb2RlMShsaW5lLCBjb2x1bW4pOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIDI6IHsKKyAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOworICAg
ICAgICB1bnNpZ25lZCBmYXRJbmRleCA9IG1fcmFyZURhdGEtPm1fZXhwcmVzc2lvbkluZm9GYXRQ
b3NpdGlvbnMuc2l6ZSgpOworICAgICAgICBFeHByZXNzaW9uUmFuZ2VJbmZvOjpGYXRQb3NpdGlv
biBmYXRQb3MgPSB7IGxpbmUsIGNvbHVtbiB9OworICAgICAgICBtX3JhcmVEYXRhLT5tX2V4cHJl
c3Npb25JbmZvRmF0UG9zaXRpb25zLmFwcGVuZChmYXRQb3MpOworICAgICAgICBpbmZvLnBvc2l0
aW9uID0gZmF0SW5kZXg7CiAgICAgfQorICAgIH07CiAKLSAgICBzdGFydE9mZnNldCA9IGV4cHJl
c3Npb25JbmZvW2xvdyAtIDFdLnN0YXJ0T2Zmc2V0OwotICAgIGVuZE9mZnNldCA9IGV4cHJlc3Np
b25JbmZvW2xvdyAtIDFdLmVuZE9mZnNldDsKLSAgICBkaXZvdCA9IGV4cHJlc3Npb25JbmZvW2xv
dyAtIDFdLmRpdm90UG9pbnQ7CisgICAgbV9leHByZXNzaW9uSW5mby5hcHBlbmQoaW5mbyk7CiB9
CiAKIHZvaWQgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkocmV2aXNpb24gMTUxOTIwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgZmly
c3RMaW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdExpbmVPZmZzZXQ7IH0KICAgICB1
bnNpZ25lZCBsaW5lQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2xpbmVDb3VudDsgfQogICAgIHVu
c2lnbmVkIGZ1bmN0aW9uU3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uU3Rh
cnRPZmZzZXQ7IH0KKyAgICB1bnNpZ25lZCBmdW5jdGlvblN0YXJ0Q29sdW1uKCkgY29uc3QgeyBy
ZXR1cm4gbV9mdW5jdGlvblN0YXJ0Q29sdW1uOyB9CiAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQo
KSBjb25zdCB7IHJldHVybiBtX3N0YXJ0T2Zmc2V0OyB9CiAgICAgdW5zaWduZWQgc291cmNlTGVu
Z3RoKCkgeyByZXR1cm4gbV9zb3VyY2VMZW5ndGg7IH0KIApAQCAtMTU5LDYgKzE2MCw3IEBAIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQgbV9maXJzdExpbmVPZmZzZXQ7CiAgICAgdW5zaWduZWQgbV9s
aW5lQ291bnQ7CiAgICAgdW5zaWduZWQgbV9mdW5jdGlvblN0YXJ0T2Zmc2V0OworICAgIHVuc2ln
bmVkIG1fZnVuY3Rpb25TdGFydENvbHVtbjsKICAgICB1bnNpZ25lZCBtX3N0YXJ0T2Zmc2V0Owog
ICAgIHVuc2lnbmVkIG1fc291cmNlTGVuZ3RoOwogCkBAIC0yNDUsMTkgKzI0Nyw4IEBAIHB1Ymxp
YzoKICAgICBib29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRz
RnVsbFNjb3BlQ2hhaW47IH0KICAgICB2b2lkIHNldE5lZWRzRnVsbFNjb3BlQ2hhaW4oYm9vbCBu
ZWVkc0Z1bGxTY29wZUNoYWluKSB7IG1fbmVlZHNGdWxsU2NvcGVDaGFpbiA9IG5lZWRzRnVsbFNj
b3BlQ2hhaW47IH0KIAotICAgIHZvaWQgYWRkRXhwcmVzc2lvbkluZm8oY29uc3QgRXhwcmVzc2lv
blJhbmdlSW5mbyYgZXhwcmVzc2lvbkluZm8pCi0gICAgewotICAgICAgICBtX2V4cHJlc3Npb25J
bmZvLmFwcGVuZChleHByZXNzaW9uSW5mbyk7Ci0gICAgfQotCi0gICAgdm9pZCBhZGRMaW5lSW5m
byh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgaW50IGxpbmVObykKLSAgICB7Ci0gICAgICAgIFZl
Y3RvcjxMaW5lSW5mbz4mIGxpbmVJbmZvID0gbV9saW5lSW5mbzsKLSAgICAgICAgaWYgKCFsaW5l
SW5mby5zaXplKCkgfHwgbGluZUluZm8ubGFzdCgpLmxpbmVOdW1iZXIgIT0gbGluZU5vKSB7Ci0g
ICAgICAgICAgICBMaW5lSW5mbyBpbmZvID0geyBieXRlY29kZU9mZnNldCwgbGluZU5vIH07Ci0g
ICAgICAgICAgICBsaW5lSW5mby5hcHBlbmQoaW5mbyk7Ci0gICAgICAgIH0KLSAgICB9CisgICAg
dm9pZCBhZGRFeHByZXNzaW9uSW5mbyh1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCwgaW50IGRp
dm90LAorICAgICAgICBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIHVuc2lnbmVkIGxp
bmUsIHVuc2lnbmVkIGNvbHVtbik7CiAKICAgICBib29sIGhhc0V4cHJlc3Npb25JbmZvKCkgeyBy
ZXR1cm4gbV9leHByZXNzaW9uSW5mby5zaXplKCk7IH0KIApAQCAtMzMxLDcgKzMyMiw2IEBAIHB1
YmxpYzoKICAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVycy5zaHJpbmtUb0ZpdCgpOwogICAgICAg
ICBtX2Z1bmN0aW9uRGVjbHMuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgbV9mdW5jdGlvbkV4cHJz
LnNocmlua1RvRml0KCk7Ci0gICAgICAgIG1fbGluZUluZm8uc2hyaW5rVG9GaXQoKTsKICAgICAg
ICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICBt
X2V4cHJlc3Npb25JbmZvLnNocmlua1RvRml0KCk7CiAKQEAgLTM0NSw2ICszMzUsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMu
c2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fY2hhcmFjdGVyU3dpdGNo
SnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJp
bmdTd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7CisgICAgICAgICAgICBtX3JhcmVEYXRh
LT5tX2V4cHJlc3Npb25JbmZvRmF0UG9zaXRpb25zLnNocmlua1RvRml0KCk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTQ1Niw3ICs0NDcsOCBAQCBwdWJsaWM6CiAKICAgICBpbnQgbGluZU51bWJl
ckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKIAotICAgIHZvaWQg
ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IGludCYgZGl2b3QsIGludCYgc3RhcnRPZmZzZXQsIGludCYgZW5kT2Zmc2V0KTsKKyAgICB2b2lk
IGV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBpbnQmIGRpdm90LAorICAgICAgICBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCwg
dW5zaWduZWQmIGxpbmUsIHVuc2lnbmVkJiBjb2x1bW4pOwogCiAgICAgdm9pZCByZWNvcmRQYXJz
ZShDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMsIHVuc2ln
bmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGluZUNvdW50KQogICAgIHsKQEAgLTUzNCw4ICs1MjYs
NiBAQCBwcml2YXRlOgogCiAgICAgV3JpdGVCYXJyaWVyPFNoYXJlZFN5bWJvbFRhYmxlPiBtX3N5
bWJvbFRhYmxlOwogCi0gICAgVmVjdG9yPExpbmVJbmZvPiBtX2xpbmVJbmZvOwotCiAgICAgVmVj
dG9yPHVuc2lnbmVkPiBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zOwogCiAjaWYgRU5BQkxF
KEJZVEVDT0RFX0NPTU1FTlRTKQpAQCAtNTY4LDYgKzU1OCw4IEBAIHB1YmxpYzoKICAgICAgICAg
VmVjdG9yPFVubGlua2VkU2ltcGxlSnVtcFRhYmxlPiBtX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJs
ZXM7CiAgICAgICAgIFZlY3RvcjxVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZT4gbV9zdHJpbmdTd2l0
Y2hKdW1wVGFibGVzOwogICAgICAgICBSZWZQdHI8Q29kZUNhY2hlPiBtX2V2YWxDb2RlQ2FjaGU7
CisKKyAgICAgICAgVmVjdG9yPEV4cHJlc3Npb25SYW5nZUluZm86OkZhdFBvc2l0aW9uPiBtX2V4
cHJlc3Npb25JbmZvRmF0UG9zaXRpb25zOwogICAgIH07CiAKIHByaXZhdGU6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAkocmV2aXNpb24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MDEs
OSArMTcwMSw5IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnUKICAg
ICByZXR1cm4gcjA7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2Fs
bChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24gZXhw
ZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50cywgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCitSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMm
IGNhbGxBcmd1bWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBsaW5lU3RhcnQpCiB7Ci0g
ICAgcmV0dXJuIGVtaXRDYWxsKG9wX2NhbGwsIGRzdCwgZnVuYywgZXhwZWN0ZWRGdW5jdGlvbiwg
Y2FsbEFyZ3VtZW50cywgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpOworICAgIHJldHVy
biBlbWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBsaW5lLCBsaW5lU3RhcnQpOwog
fQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpjcmVhdGVBcmd1bWVudHNJZk5lY2Vzc2FyeSgp
CkBAIC0xNzM0LDkgKzE3MzQsOSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpjcmVhdGVBY3Rp
dmF0aW9uCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fYWN0aXZhdGlvblJlZ2lzdGVyLT5p
bmRleCgpKTsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRXZh
bChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIENhbGxBcmd1bWVudHMmIGNhbGxB
cmd1bWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRXZhbChS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIENhbGxBcmd1bWVudHMmIGNhbGxBcmd1
bWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0LCB1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBsaW5lU3RhcnQpCiB7Ci0gICAgcmV0dXJu
IGVtaXRDYWxsKG9wX2NhbGxfZXZhbCwgZHN0LCBmdW5jLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNh
bGxBcmd1bWVudHMsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKKyAgICByZXR1cm4g
ZW1pdENhbGwob3BfY2FsbF9ldmFsLCBkc3QsIGZ1bmMsIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2Fs
bEFyZ3VtZW50cywgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGxpbmUsIGxpbmVTdGFy
dCk7CiB9CiAKIEV4cGVjdGVkRnVuY3Rpb24gQnl0ZWNvZGVHZW5lcmF0b3I6OmV4cGVjdGVkRnVu
Y3Rpb25Gb3JJZGVudGlmaWVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCkBAIC0xODE0
LDcgKzE4MTQsNyBAQCBFeHBlY3RlZEZ1bmN0aW9uIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0CiAg
ICAgcmV0dXJuIGV4cGVjdGVkRnVuY3Rpb247CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0Q2FsbChPcGNvZGVJRCBvcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1
bWVudHMmIGNhbGxBcmd1bWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRDYWxsKE9wY29kZUlEIG9wY29kZUlELCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1
bmMsIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2Fs
bEFyZ3VtZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGxpbmVTdGFydCkKIHsKICAgICBB
U1NFUlQob3Bjb2RlSUQgPT0gb3BfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF9jYWxsX2V2YWwpOwog
ICAgIEFTU0VSVChmdW5jLT5yZWZDb3VudCgpKTsKQEAgLTE4MzcsNyArMTgzNyw3IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCgKICAgICAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGNhbGxBcmd1bWVudHMucHJvZmlsZUhvb2tSZWdpc3RlcigpLT5pbmRleCgpKTsK
ICAgICB9CiAKLSAgICBlbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpOworICAgIGVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9m
ZnNldCwgbGluZSwgbGluZVN0YXJ0KTsKIAogICAgIFJlZlB0cjxMYWJlbD4gZG9uZSA9IG5ld0xh
YmVsKCk7CiAgICAgZXhwZWN0ZWRGdW5jdGlvbiA9IGVtaXRFeHBlY3RlZEZ1bmN0aW9uU25pcHBl
dChkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRvbmUuZ2V0KCkp
OwpAQCAtMTg3MSw3ICsxODcxLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRDYWxsKAogICAgIHJldHVybiBkc3Q7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q2FsbFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBS
ZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJ
RCogZmlyc3RGcmVlUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHByb2ZpbGVIb29rUmVnaXN0ZXIsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQor
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsVmFyYXJncyhSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0
ZXJJRCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgUmVnaXN0ZXJJ
RCogcHJvZmlsZUhvb2tSZWdpc3RlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGxpbmVTdGFy
dCkKIHsKICAgICBpZiAobV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzKSB7CiAgICAgICAgIGVtaXRN
b3ZlKHByb2ZpbGVIb29rUmVnaXN0ZXIsIGZ1bmMpOwpAQCAtMTg3OSw3ICsxODc5LDcgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsVgogICAgICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQocHJvZmlsZUhvb2tSZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgfQogICAgIAot
ICAgIGVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCk7Cisg
ICAgZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBsaW5l
LCBsaW5lU3RhcnQpOwogCiAgICAgLy8gRW1pdCBjYWxsLgogICAgIGVtaXRPcGNvZGUob3BfY2Fs
bF92YXJhcmdzKTsKQEAgLTE5MzEsNyArMTkzMSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0VW5hcnkKICAgICByZXR1cm4gc3JjOwogfQogCi1SZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0cnVjdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYg
Y2FsbEFyZ3VtZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0
cnVjdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24g
ZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50cywgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVk
IGxpbmUsIHVuc2lnbmVkIGxpbmVTdGFydCkKIHsKICAgICBBU1NFUlQoZnVuYy0+cmVmQ291bnQo
KSk7CiAKQEAgLTE5NTUsNyArMTk1NSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0Q29uc3QKICAgICBmb3IgKGludCBpID0gMDsgaSA8IEpTU3RhY2s6OkNhbGxGcmFtZUhl
YWRlclNpemU7ICsraSkKICAgICAgICAgY2FsbEZyYW1lLmFwcGVuZChuZXdUZW1wb3JhcnkoKSk7
CiAKLSAgICBlbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQp
OworICAgIGVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwg
bGluZSwgbGluZVN0YXJ0KTsKICAgICAKICAgICBSZWZQdHI8TGFiZWw+IGRvbmUgPSBuZXdMYWJl
bCgpOwogICAgIGV4cGVjdGVkRnVuY3Rpb24gPSBlbWl0RXhwZWN0ZWRGdW5jdGlvblNuaXBwZXQo
ZHN0LCBmdW5jLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkb25lLmdldCgpKTsK
QEAgLTIwMjUsNyArMjAyNSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQb3BTY29w
ZSgpCiAgICAgbV9keW5hbWljU2NvcGVEZXB0aC0tOwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0RGVidWdIb29rKERlYnVnSG9va0lEIGRlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5l
LCBpbnQgbGFzdExpbmUsIGludCBjaGFyUG9zaXRpb24pCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0RGVidWdIb29rKERlYnVnSG9va0lEIGRlYnVnSG9va0lELCB1bnNpZ25lZCBmaXJzdExp
bmUsIHVuc2lnbmVkIGxhc3RMaW5lLCB1bnNpZ25lZCBjaGFyT2Zmc2V0LCB1bnNpZ25lZCBsaW5l
U3RhcnQpCiB7CiAjaWYgRU5BQkxFKERFQlVHX1dJVEhfQlJFQUtQT0lOVCkKICAgICBpZiAoZGVi
dWdIb29rSUQgIT0gRGlkUmVhY2hCcmVha3BvaW50KQpAQCAtMjAzNCw3ICsyMDM0LDggQEAgdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayhEZQogICAgIGlmICghbV9zaG91bGRF
bWl0RGVidWdIb29rcykKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCi0gICAgZW1pdEV4cHJlc3Np
b25JbmZvKGNoYXJQb3NpdGlvbiwgMCwgMCk7CisgICAgZW1pdEV4cHJlc3Npb25JbmZvKGNoYXJP
ZmZzZXQsIDAsIDAsIGZpcnN0TGluZSwgbGluZVN0YXJ0KTsKKyAgICB1bnNpZ25lZCBjaGFyUG9z
aXRpb24gPSBjaGFyT2Zmc2V0IC0gbV9zY29wZU5vZGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCk7
CiAgICAgZW1pdE9wY29kZShvcF9kZWJ1Zyk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRl
YnVnSG9va0lEKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZmlyc3RMaW5lKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzM5LDcg
KzMzOSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICAvLyBOb2Rl
OjplbWl0Q29kZSBhc3N1bWVzIHRoYXQgZHN0LCBpZiBwcm92aWRlZCwgaXMgZWl0aGVyIGEgbG9j
YWwgb3IgYSByZWZlcmVuY2VkIHRlbXBvcmFyeS4KICAgICAgICAgICAgIEFTU0VSVCghZHN0IHx8
IGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkgfHwgIWRzdC0+aXNUZW1wb3JhcnkoKSB8fCBkc3QtPnJl
ZkNvdW50KCkpOwotICAgICAgICAgICAgYWRkTGluZUluZm8obi0+bGluZU5vKCkpOwogICAgICAg
ICAgICAgaWYgKCFtX3N0YWNrLmlzU2FmZVRvUmVjdXJzZSgpKSB7CiAgICAgICAgICAgICAgICAg
ZW1pdFRocm93RXhwcmVzc2lvblRvb0RlZXBFeGNlcHRpb24oKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0zNTYsNyArMzU1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAg
ICAgICAgICAgIC8vIE5vZGU6OmVtaXRDb2RlIGFzc3VtZXMgdGhhdCBkc3QsIGlmIHByb3ZpZGVk
LCBpcyBlaXRoZXIgYSBsb2NhbCBvciBhIHJlZmVyZW5jZWQgdGVtcG9yYXJ5LgogICAgICAgICAg
ICAgQVNTRVJUKCFkc3QgfHwgZHN0ID09IGlnbm9yZWRSZXN1bHQoKSB8fCAhZHN0LT5pc1RlbXBv
cmFyeSgpIHx8IGRzdC0+cmVmQ291bnQoKSk7Ci0gICAgICAgICAgICBhZGRMaW5lSW5mbyhuLT5s
aW5lTm8oKSk7CiAgICAgICAgICAgICBpZiAoIW1fc3RhY2suaXNTYWZlVG9SZWN1cnNlKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGVtaXRUaHJvd0V4cHJlc3Npb25Ub29EZWVwRXhjZXB0aW9u
KCk7CiAgICAgICAgICAgICByZXR1cm4gbi0+ZW1pdEJ5dGVjb2RlKCp0aGlzLCBkc3QpOwpAQCAt
MzY5LDcgKzM2Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgZW1pdE5vZGVJ
bkNvbmRpdGlvbkNvbnRleHQoRXhwcmVzc2lvbk5vZGUqIG4sIExhYmVsKiB0cnVlVGFyZ2V0LCBM
YWJlbCogZmFsc2VUYXJnZXQsIEZhbGxUaHJvdWdoTW9kZSBmYWxsVGhyb3VnaE1vZGUpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGFkZExpbmVJbmZvKG4tPmxpbmVObygpKTsKICAgICAgICAgICAg
IGlmICghbV9zdGFjay5pc1NhZmVUb1JlY3Vyc2UoKSkgewogICAgICAgICAgICAgICAgIGVtaXRU
aHJvd0V4cHJlc3Npb25Ub29EZWVwRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMzc4LDMzICszNzUsMzUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBuLT5l
bWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoKnRoaXMsIHRydWVUYXJnZXQsIGZhbHNlVGFy
Z2V0LCBmYWxsVGhyb3VnaE1vZGUpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBlbWl0RXhw
cmVzc2lvbkluZm8odW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpCisgICAgICAgIHZvaWQgZW1pdEV4cHJlc3Npb25JbmZvV2l0aFBvc2l0aW9u
cyhpbnQgZGl2b3RQb3MsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCwgdW5zaWduZWQg
bGluZSwgaW50IGxpbmVTdGFydFBvcykKICAgICAgICAgewotICAgICAgICAgICAgZGl2b3QgLT0g
bV9zY29wZU5vZGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCk7Ci0gICAgICAgICAgICBpZiAoZGl2
b3QgPiBFeHByZXNzaW9uUmFuZ2VJbmZvOjpNYXhEaXZvdCkgewotICAgICAgICAgICAgICAgIC8v
IE92ZXJmbG93IGhhcyBvY2N1cnJlZCwgd2UgY2FuIG9ubHkgZ2l2ZSBsaW5lIG51bWJlciBpbmZv
IGZvciBlcnJvcnMgZm9yIHRoaXMgcmVnaW9uCi0gICAgICAgICAgICAgICAgZGl2b3QgPSAwOwot
ICAgICAgICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gMDsKLSAgICAgICAgICAgICAgICBlbmRPZmZz
ZXQgPSAwOwotICAgICAgICAgICAgfSBlbHNlIGlmIChzdGFydE9mZnNldCA+IEV4cHJlc3Npb25S
YW5nZUluZm86Ok1heE9mZnNldCkgewotICAgICAgICAgICAgICAgIC8vIElmIHRoZSBzdGFydCBv
ZmZzZXQgaXMgb3V0IG9mIGJvdW5kcyB3ZSBjbGVhciBib3RoIG9mZnNldHMKLSAgICAgICAgICAg
ICAgICAvLyBzbyB3ZSBvbmx5IGdldCB0aGUgZGl2b3QgbWFya2VyLiAgRXJyb3IgbWVzc2FnZSB3
aWxsIGhhdmUgdG8gYmUgcmVkdWNlZAotICAgICAgICAgICAgICAgIC8vIHRvIGxpbmUgYW5kIGNo
YXJQb3NpdGlvbiBudW1iZXIuCi0gICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQgPSAwOwotICAg
ICAgICAgICAgICAgIGVuZE9mZnNldCA9IDA7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGVuZE9m
ZnNldCA+IEV4cHJlc3Npb25SYW5nZUluZm86Ok1heE9mZnNldCkgewotICAgICAgICAgICAgICAg
IC8vIFRoZSBlbmQgb2Zmc2V0IGlzIG9ubHkgdXNlZCBmb3IgYWRkaXRpb25hbCBjb250ZXh0LCBh
bmQgaXMgbXVjaCBtb3JlIGxpa2VseQotICAgICAgICAgICAgICAgIC8vIHRvIG92ZXJmbG93IChl
Zy4gZnVuY3Rpb24gY2FsbCBhcmd1bWVudHMpIHNvIHdlIGFyZSB3aWxsaW5nIHRvIGRyb3AgaXQg
d2l0aG91dAotICAgICAgICAgICAgICAgIC8vIGRyb3BwaW5nIHRoZSByZXN0IG9mIHRoZSByYW5n
ZS4KLSAgICAgICAgICAgICAgICBlbmRPZmZzZXQgPSAwOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgCi0gICAgICAgICAgICBFeHByZXNzaW9uUmFuZ2VJbmZvIGluZm87Ci0gICAgICAgICAg
ICBpbmZvLmluc3RydWN0aW9uT2Zmc2V0ID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAgICAg
ICAgICAgaW5mby5kaXZvdFBvaW50ID0gZGl2b3Q7Ci0gICAgICAgICAgICBpbmZvLnN0YXJ0T2Zm
c2V0ID0gc3RhcnRPZmZzZXQ7Ci0gICAgICAgICAgICBpbmZvLmVuZE9mZnNldCA9IGVuZE9mZnNl
dDsKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRFeHByZXNzaW9uSW5mbyhpbmZvKTsKKyAg
ICAgICAgICAgIGludCBzb3VyY2VPZmZzZXQgPSBtX3Njb3BlTm9kZS0+c291cmNlKCkuc3RhcnRP
ZmZzZXQoKTsKKyAgICAgICAgICAgIGludCBkaXZvdCA9IHNvdXJjZU9mZnNldCArIGRpdm90UG9z
OworICAgICAgICAgICAgaW50IGxpbmVTdGFydCA9IHNvdXJjZU9mZnNldCArIGxpbmVTdGFydFBv
czsKKyAgICAgICAgICAgIGVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCwgc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldCwgbGluZSwgbGluZVN0YXJ0KTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZW1p
dEV4cHJlc3Npb25JbmZvKGludCBkaXZvdCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0
LCB1bnNpZ25lZCBsaW5lLCBpbnQgbGluZVN0YXJ0KQorICAgICAgICB7CisgICAgICAgICAgICBp
bnQgc291cmNlT2Zmc2V0ID0gbV9zY29wZU5vZGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCk7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBmaXJzdExpbmUgPSBtX3Njb3BlTm9kZS0+c291cmNlKCkuZmly
c3RMaW5lKCk7CisKKyAgICAgICAgICAgIEFTU0VSVChkaXZvdCA+PSBsaW5lU3RhcnQpOworICAg
ICAgICAgICAgQVNTRVJUKGRpdm90ID49IHNvdXJjZU9mZnNldCk7CisgICAgICAgICAgICBkaXZv
dCAtPSBzb3VyY2VPZmZzZXQ7CisKKyAgICAgICAgICAgIGlmIChsaW5lU3RhcnQgPiBzb3VyY2VP
ZmZzZXQpCisgICAgICAgICAgICAgICAgbGluZVN0YXJ0IC09IHNvdXJjZU9mZnNldDsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsaW5lU3RhcnQgPSAwOworCisgICAgICAgICAg
ICBBU1NFUlQobGluZSA+PSBmaXJzdExpbmUpOworICAgICAgICAgICAgbGluZSAtPSBmaXJzdExp
bmU7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0ID0gaW5zdHJ1Y3Rp
b25zKCkuc2l6ZSgpOworICAgICAgICAgICAgQVNTRVJUKGRpdm90ID49IGxpbmVTdGFydCk7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBjb2x1bW4gPSBkaXZvdCAtIGxpbmVTdGFydDsKKyAgICAgICAg
ICAgIG1fY29kZUJsb2NrLT5hZGRFeHByZXNzaW9uSW5mbyhpbnN0cnVjdGlvbk9mZnNldCwgZGl2
b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGxpbmUsIGNvbHVtbik7CiAgICAgICAgIH0KIAog
ICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgbGVmdEhhbmRTaWRlTmVlZHNDb3B5KGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodElzUHVyZSkKQEAgLTQ4MCwxNSArNDc5LDE1IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRQdXRHZXR0ZXJTZXR0ZXIoUmVnaXN0
ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIGdldHRl
ciwgUmVnaXN0ZXJJRCogc2V0dGVyKTsKICAgICAgICAgCiAgICAgICAgIEV4cGVjdGVkRnVuY3Rp
b24gZXhwZWN0ZWRGdW5jdGlvbkZvcklkZW50aWZpZXIoY29uc3QgSWRlbnRpZmllciYpOwotICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1
bmMsIEV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMmLCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7Ci0gICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRDYWxsRXZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIENhbGxB
cmd1bWVudHMmLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsVmFyYXJncyhSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVn
aXN0ZXJJRCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgUmVnaXN0
ZXJJRCogcHJvZmlsZUhvb2tSZWdpc3RlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2Fs
bChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24sIENh
bGxBcmd1bWVudHMmLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCwgdW5zaWduZWQgbGluZSwgdW5zaWduZWQgbGluZVN0YXJ0KTsKKyAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdENhbGxFdmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
ZnVuYywgQ2FsbEFyZ3VtZW50cyYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBsaW5lU3RhcnQp
OworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFy
Z3VtZW50cywgUmVnaXN0ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHByb2Zp
bGVIb29rUmVnaXN0ZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBsaW5lU3RhcnQpOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0TG9hZFZhcmFyZ3MoUmVnaXN0ZXJJRCogYXJnQ291bnREc3Qs
IFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJncyk7CiAKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdFJldHVybihSZWdpc3RlcklEKiBzcmMpOwogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0RW5kKFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdFVuYXJ5Tm9Ec3RPcChv
cF9lbmQsIHNyYyk7IH0KIAotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q29uc3RydWN0KFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3Vt
ZW50cyYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENvbnN0cnVjdChSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMmLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwg
dW5zaWduZWQgbGluZSwgdW5zaWduZWQgbGluZVN0YXJ0KTsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdFN0cmNhdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgaW50IGNvdW50KTsK
ICAgICAgICAgdm9pZCBlbWl0VG9QcmltaXRpdmUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBzcmMpOwogCkBAIC01MjQsNyArNTIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRQdXNoV2l0aFNjb3BlKFJlZ2lzdGVySUQqIHNjb3BlKTsKICAgICAgICAg
dm9pZCBlbWl0UG9wU2NvcGUoKTsKIAotICAgICAgICB2b2lkIGVtaXREZWJ1Z0hvb2soRGVidWdI
b29rSUQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50IGNoYXJQb3NpdGlvbik7Cisg
ICAgICAgIHZvaWQgZW1pdERlYnVnSG9vayhEZWJ1Z0hvb2tJRCwgdW5zaWduZWQgZmlyc3RMaW5l
LCB1bnNpZ25lZCBsYXN0TGluZSwgdW5zaWduZWQgY2hhck9mZnNldCwgdW5zaWduZWQgbGluZVN0
YXJ0KTsKIAogICAgICAgICBpbnQgc2NvcGVEZXB0aCgpIHsgcmV0dXJuIG1fZHluYW1pY1Njb3Bl
RGVwdGggKyBtX2ZpbmFsbHlEZXB0aDsgfQogICAgICAgICBib29sIGhhc0ZpbmFsaXNlcigpIHsg
cmV0dXJuIG1fZmluYWxseURlcHRoICE9IDA7IH0KQEAgLTU5Miw3ICs1OTEsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgLy8gKGkuZS4gIk9iamVjdCgpIiBpcyBpZGVudGljYWwgdG8gIm5l
dyBPYmplY3QoKSIpLgogICAgICAgICBFeHBlY3RlZEZ1bmN0aW9uIGVtaXRFeHBlY3RlZEZ1bmN0
aW9uU25pcHBldChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVu
Y3Rpb24sIENhbGxBcmd1bWVudHMmLCBMYWJlbCogZG9uZSk7CiAgICAgICAgIAotICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0Q2FsbChPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiwgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBSZWdp
c3RlcklEKiBlbWl0Q2FsbChPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBm
dW5jLCBFeHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiwgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGxpbmUsIHVu
c2lnbmVkIGxpbmVTdGFydCk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogbmV3UmVnaXN0ZXIoKTsK
IApAQCAtNjQ2LDExICs2NDUsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVy
biBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5z
b3VyY2UoKSwgYm9keSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGFkZExpbmVJbmZvKHVu
c2lnbmVkIGxpbmVObykKLSAgICAgICAgewotICAgICAgICAgICAgbV9jb2RlQmxvY2stPmFkZExp
bmVJbmZvKGluc3RydWN0aW9ucygpLnNpemUoKSwgbGluZU5vIC0gbV9zY29wZU5vZGUtPmZpcnN0
TGluZSgpKTsKLSAgICAgICAgfQotCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbml0TGF6eVJl
Z2lzdGVyKFJlZ2lzdGVySUQqKTsKIAogICAgIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9u
IDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcsNyArODcsNyBAQCB2b2lkIEV4cHJlc3Npb25O
b2RlOjplbWl0Qnl0ZWNvZGVJbkNvbmRpCiAKIFJlZ2lzdGVySUQqIFRocm93YWJsZUV4cHJlc3Np
b25EYXRhOjplbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90
RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICBnZW5lcmF0
b3IuZW1pdFRocm93UmVmZXJlbmNlRXJyb3IobWVzc2FnZSk7CiAgICAgcmV0dXJuIGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKTsKIH0KQEAgLTE1Myw3ICsxNTMsOCBAQCBSZWdpc3RlcklEKiBSZXNv
bHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5CiAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRv
RGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGxvY2FsKTsKICAgICB9CiAgICAgCi0gICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhtX3N0YXJ0T2Zmc2V0ICsgbV9pZGVudC5sZW5ndGgoKSwg
bV9pZGVudC5sZW5ndGgoKSwgMCk7CisgICAgdW5zaWduZWQgZGl2b3QgPSBtX3N0YXJ0T2Zmc2V0
ICsgbV9pZGVudC5sZW5ndGgoKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90LCBtX2lkZW50Lmxlbmd0aCgpLCAwLCBtX2Rpdm90TGluZSwgbV9kaXZvdExpbmVTdGFydCk7
CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0UmVzb2x2ZShnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbihkc3QpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50KTsKIH0KIApAQCAtMjAxLDE1ICsyMDIs
MTYgQEAgYm9vbCBBcnJheU5vZGU6OmlzU2ltcGxlQXJyYXkoKSBjb25zdAogICAgIHJldHVybiB0
cnVlOwogfQogCi1Bcmd1bWVudExpc3ROb2RlKiBBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0KFZN
KiB2bSwgaW50IGxpbmVOdW1iZXIsIGludCBjaGFyUG9zaXRpb24pIGNvbnN0CitBcmd1bWVudExp
c3ROb2RlKiBBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0KFZNKiB2bSwgaW50IGxpbmVOdW1iZXIs
IGludCBzdGFydFBvc2l0aW9uLCB1bnNpZ25lZCBzb3VyY2VPZmZzZXQpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKCFtX2VsaXNpb24gJiYgIW1fb3B0aW9uYWwpOwogICAgIEVsZW1lbnROb2RlKiBwdHIg
PSBtX2VsZW1lbnQ7CiAgICAgaWYgKCFwdHIpCiAgICAgICAgIHJldHVybiAwOwotICAgIEpTVG9r
ZW5Mb2NhdGlvbiBsb2NhdGlvbjsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24oc291cmNl
T2Zmc2V0KTsKICAgICBsb2NhdGlvbi5saW5lID0gbGluZU51bWJlcjsKLSAgICBsb2NhdGlvbi5j
aGFyUG9zaXRpb24gPSBjaGFyUG9zaXRpb247CisgICAgbG9jYXRpb24uc3RhcnRPZmZzZXQgPSBz
dGFydFBvc2l0aW9uOworICAgIGxvY2F0aW9uLnNvdXJjZU9mZnNldCA9IHNvdXJjZU9mZnNldDsK
ICAgICBBcmd1bWVudExpc3ROb2RlKiBoZWFkID0gbmV3ICh2bSkgQXJndW1lbnRMaXN0Tm9kZShs
b2NhdGlvbiwgcHRyLT52YWx1ZSgpKTsKICAgICBBcmd1bWVudExpc3ROb2RlKiB0YWlsID0gaGVh
ZDsKICAgICBwdHIgPSBwdHItPm5leHQoKTsKQEAgLTMyNCwxMyArMzI2LDEzIEBAIFJlZ2lzdGVy
SUQqIEJyYWNrZXRBY2Nlc3Nvck5vZGU6OmVtaXRCeXQKICAgICAgICAgJiYgZ2VuZXJhdG9yLndp
bGxSZXNvbHZlVG9Bcmd1bWVudHMoc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihtX2Jhc2UpLT5p
ZGVudGlmaWVyKCkpCiAgICAgICAgICYmICFnZW5lcmF0b3Iuc3ltYm9sVGFibGUoKS5zbG93QXJn
dW1lbnRzKCkpIHsKICAgICAgICAgUmVnaXN0ZXJJRCogcHJvcGVydHkgPSBnZW5lcmF0b3IuZW1p
dE5vZGUobV9zdWJzY3JpcHQpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsgICAgCisgICAgICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNldCgpLCBkaXZv
dEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgICAgIHJl
dHVybiBnZW5lcmF0b3IuZW1pdEdldEFyZ3VtZW50QnlWYWwoZ2VuZXJhdG9yLmZpbmFsRGVzdGlu
YXRpb24oZHN0KSwgZ2VuZXJhdG9yLnVuY2hlY2tlZFJlZ2lzdGVyRm9yQXJndW1lbnRzKCksIHBy
b3BlcnR5KTsKICAgICB9CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRv
ci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2Jhc2UsIG1fc3Vic2NyaXB0SGFzQXNzaWdubWVu
dHMsIG1fc3Vic2NyaXB0LT5pc1B1cmUoZ2VuZXJhdG9yKSk7CiAgICAgUmVnaXN0ZXJJRCogcHJv
cGVydHkgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9zdWJzY3JpcHQpOwotICAgIGdlbmVyYXRvci5l
bWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOwor
ICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNl
dCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAg
ICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRp
b24oZHN0KSwgYmFzZS5nZXQoKSwgcHJvcGVydHkpOwogfQogCkBAIC0zNDQsMTMgKzM0NiwxMyBA
QCBSZWdpc3RlcklEKiBEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kCiAgICAgICAgIFJlc29s
dmVOb2RlKiByZXNvbHZlTm9kZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4obV9iYXNlKTsK
ICAgICAgICAgaWYgKCFnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhyZXNvbHZlTm9k
ZS0+aWRlbnRpZmllcigpKSkKICAgICAgICAgICAgIGdvdG8gbm9uQXJndW1lbnRzUGF0aDsKLSAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgp
LCBlbmRPZmZzZXQoKSk7ICAgIAorICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5l
KCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRB
cmd1bWVudHNMZW5ndGgoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgZ2VuZXJhdG9y
LnVuY2hlY2tlZFJlZ2lzdGVyRm9yQXJndW1lbnRzKCkpOwogICAgIH0KIAogbm9uQXJndW1lbnRz
UGF0aDoKICAgICBSZWdpc3RlcklEKiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7
Ci0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgp
LCBlbmRPZmZzZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgp
LCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZv
dExpbmVTdGFydCgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRv
ci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGJhc2UsIG1faWRlbnQpOwogfQogCkBAIC0zNzMsNyAr
Mzc1LDcgQEAgUmVnaXN0ZXJJRCogTmV3RXhwck5vZGU6OmVtaXRCeXRlY29kZShCeQogICAgICAg
ICBleHBlY3RlZEZ1bmN0aW9uID0gTm9FeHBlY3RlZEZ1bmN0aW9uOwogICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBmdW5jID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7CiAgICAgQ2FsbEFyZ3Vt
ZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICByZXR1cm4gZ2VuZXJh
dG9yLmVtaXRDb25zdHJ1Y3QoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQoZHN0
KSwgZnVuYy5nZXQoKSwgZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwg
c3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdENv
bnN0cnVjdChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZChkc3QpLCBmdW5jLmdl
dCgpLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0
T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgp
KTsKIH0KIAogaW5saW5lIENhbGxBcmd1bWVudHM6OkNhbGxBcmd1bWVudHMoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgQXJndW1lbnRzTm9kZSogYXJndW1lbnRzTm9kZSkKQEAgLTQwOCw5
ICs0MTAsOSBAQCBSZWdpc3RlcklEKiBFdmFsRnVuY3Rpb25DYWxsTm9kZTo6ZW1pdEJ5CiB7CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmMgPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRz
dCk7CiAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsK
LSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCkgLSBzdGFydE9mZnNldCgp
ICsgNCwgNCwgMCk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpIC0g
ZGl2b3RTdGFydE9mZnNldCgpICsgNCwgNCwgMCwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0
KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVdpdGhUaGlzKGNhbGxBcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCksIGZ1bmMuZ2V0KCksIGdlbmVyYXRvci5yZXNvbHZlKGdlbmVyYXRvci5wcm9w
ZXJ0eU5hbWVzKCkuZXZhbCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZXZhbCk7Ci0gICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbEV2YWwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24o
ZHN0LCBmdW5jLmdldCgpKSwgZnVuYy5nZXQoKSwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgc3Rh
cnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdENhbGxF
dmFsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuYy5nZXQoKSksIGZ1bmMuZ2V0
KCksIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRP
ZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogfQogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25DYWxsVmFsdWVOb2RlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQyMCw3ICs0MjIsNyBAQCBSZWdpc3RlcklEKiBG
dW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmMg
PSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1
bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJn
dW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKLSAgICByZXR1cm4gZ2VuZXJh
dG9yLmVtaXRDYWxsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVu
Yy5nZXQoKSksIGZ1bmMuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywg
ZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdENhbGwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQoZHN0LCBmdW5j
LmdldCgpKSwgZnVuYy5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBk
aXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgp
LCBkaXZvdExpbmVTdGFydCgpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KQEAgLTQzNiw3ICs0MzgsNyBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxSZXNvbHZl
Tm9kZTo6ZW1pCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNS
ZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgLy8gVGhpcyBwYXNzZXMgTm9FeHBl
Y3RlZEZ1bmN0aW9uIGJlY2F1c2Ugd2UgZXhwZWN0IHRoYXQgaWYgdGhlIGZ1bmN0aW9uIGlzIGlu
IGEKICAgICAgICAgLy8gbG9jYWwgdmFyaWFibGUsIHRoZW4gaXQncyBub3Qgb25lIG9mIG91ciBi
dWlsdC1pbiBjb25zdHJ1Y3RvcnMuCi0gICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdENhbGwo
Z2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQoZHN0LCBjYWxsQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpKSwgZnVuYy5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1l
bnRzLCBkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgICAgIHJldHVy
biBnZW5lcmF0b3IuZW1pdENhbGwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQo
ZHN0LCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpKSwgZnVuYy5nZXQoKSwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRp
dm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICB9CiAK
ICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpKSB7CkBAIC00NDQsMTYgKzQ0NiwxNiBA
QCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1pCiAgICAgICAgIENhbGxB
cmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgIGdlbmVy
YXRvci5lbWl0R2V0U3RhdGljVmFyKGZ1bmMuZ2V0KCksIHJlc29sdmVSZXN1bHQsIG1faWRlbnQp
OwogICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdENhbGwoZ2Vu
ZXJhdG9yLmZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQoZHN0LCBmdW5jLmdldCgpKSwgZnVuYy5n
ZXQoKSwgZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgc3RhcnRPZmZz
ZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsKGdl
bmVyYXRvci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVuYy5nZXQoKSksIGZ1bmMu
Z2V0KCksIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3Rh
cnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0
KCkpOwogICAgIH0KIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOwogICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3Is
IG1fYXJncyk7Ci0gICAgaW50IGlkZW50aWZpZXJTdGFydCA9IGRpdm90KCkgLSBzdGFydE9mZnNl
dCgpOworICAgIGludCBpZGVudGlmaWVyU3RhcnQgPSBkaXZvdCgpIC0gZGl2b3RTdGFydE9mZnNl
dCgpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhpZGVudGlmaWVyU3RhcnQg
KyBtX2lkZW50Lmxlbmd0aCgpLCBtX2lkZW50Lmxlbmd0aCgpLCAwKTsKKyAgICBnZW5lcmF0b3Iu
ZW1pdEV4cHJlc3Npb25JbmZvKGlkZW50aWZpZXJTdGFydCArIG1faWRlbnQubGVuZ3RoKCksIG1f
aWRlbnQubGVuZ3RoKCksIDAsIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICBn
ZW5lcmF0b3IuZW1pdFJlc29sdmVXaXRoVGhpcyhjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBmdW5jLmdldCgpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50KTsKLSAgICByZXR1cm4gZ2VuZXJh
dG9yLmVtaXRDYWxsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVu
Yy5nZXQoKSksIGZ1bmMuZ2V0KCksIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRp
dm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9y
LmVtaXRDYWxsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVuYy5n
ZXQoKSksIGZ1bmMuZ2V0KCksIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90
KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRp
dm90TGluZVN0YXJ0KCkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
RnVuY3Rpb25DYWxsQnJhY2tldE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpAQCAtNDYyLDExICs0NjQsMTEgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsQnJhY2tldE5v
ZGU6OmVtaQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXRO
b2RlKG1fYmFzZSk7CiAgICAgUmVnaXN0ZXJJRCogcHJvcGVydHkgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobV9zdWJzY3JpcHQpOwotICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3Qo
KSAtIG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0LCBzdGFydE9mZnNldCgpIC0gbV9zdWJleHBy
ZXNzaW9uRGl2b3RPZmZzZXQsIG1fc3ViZXhwcmVzc2lvbkVuZE9mZnNldCk7CisgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lv
blN0YXJ0T2Zmc2V0KCksIHN1YmV4cHJlc3Npb25FbmRPZmZzZXQoKSwgc3ViZXhwcmVzc2lvbkxp
bmUoKSwgc3ViZXhwcmVzc2lvbkxpbmVTdGFydCgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
ZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRvci50ZW1wRGVzdGluYXRp
b24oZHN0KSwgYmFzZS5nZXQoKSwgcHJvcGVydHkpOwogICAgIENhbGxBcmd1bWVudHMgY2FsbEFy
Z3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxB
cmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwotICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdENhbGwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQoZHN0LCBmdW5j
dGlvbi5nZXQoKSksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICByZXR1cm4g
Z2VuZXJhdG9yLmVtaXRDYWxsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRz
dCwgZnVuY3Rpb24uZ2V0KCkpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBj
YWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0
KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9uQ2FsbERvdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQpAQCAtNDc2LDkgKzQ3OCw5IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9u
Q2FsbERvdE5vZGU6OmVtaXRCeXQKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb24gPSBn
ZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJn
dW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFy
Z3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9iYXNlKTsKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGRpdm90KCkgLSBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNldCwgc3RhcnRPZmZz
ZXQoKSAtIG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0LCBtX3N1YmV4cHJlc3Npb25FbmRPZmZz
ZXQpOworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90
KCksIHN1YmV4cHJlc3Npb25TdGFydE9mZnNldCgpLCBzdWJleHByZXNzaW9uRW5kT2Zmc2V0KCks
IHN1YmV4cHJlc3Npb25MaW5lKCksIHN1YmV4cHJlc3Npb25MaW5lU3RhcnQoKSk7CiAgICAgZ2Vu
ZXJhdG9yLmVtaXRHZXRCeUlkKGZ1bmN0aW9uLmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdp
c3RlcigpLCBtX2lkZW50KTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsKGdlbmVyYXRv
ci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVuY3Rpb24uZ2V0KCkpLCBmdW5jdGlv
bi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBzdGFy
dE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbChn
ZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZChkc3QsIGZ1bmN0aW9uLmdldCgpKSwg
ZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3Qo
KSwgZGl2b3RTdGFydE9mZnNldCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2
b3RMaW5lU3RhcnQoKSk7CiB9CiAKIFJlZ2lzdGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3ROb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQpAQCAtNDg2LDcgKzQ4OCw3IEBAIFJlZ2lzdGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3RO
b2RlOjplbWkKICAgICBSZWZQdHI8TGFiZWw+IHJlYWxDYWxsID0gZ2VuZXJhdG9yLm5ld0xhYmVs
KCk7CiAgICAgUmVmUHRyPExhYmVsPiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwotICAg
IGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSAtIG1fc3ViZXhwcmVzc2lvbkRp
dm90T2Zmc2V0LCBzdGFydE9mZnNldCgpIC0gbV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQsIG1f
c3ViZXhwcmVzc2lvbkVuZE9mZnNldCk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5m
byhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0T2Zmc2V0KCksIHN1YmV4
cHJlc3Npb25FbmRPZmZzZXQoKSwgc3ViZXhwcmVzc2lvbkxpbmUoKSwgc3ViZXhwcmVzc2lvbkxp
bmVTdGFydCgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3Iu
ZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBt
X2lkZW50KTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZmluYWxEZXN0aW5hdGlvbk9ySWdub3Jl
ZCA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVuY3Rpb24uZ2V0
KCkpOwogICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKGZ1bmN0aW9uLmdl
dCgpLCByZWFsQ2FsbC5nZXQoKSk7CkBAIC00OTgsNyArNTAwLDcgQEAgUmVnaXN0ZXJJRCogQ2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaQogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0
aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJn
dW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKGZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQuZ2V0KCks
IHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBk
aXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdENhbGwoZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZC5nZXQoKSwgcmVhbEZ1bmN0aW9u
LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90
U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0
YXJ0KCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CiAKICAg
ICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7CkBAIC01MDYsNyArNTA4LDcg
QEAgUmVnaXN0ZXJJRCogQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaQogICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5l
cmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgQ2Fs
bEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVm
aW5lZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChmaW5hbERlc3RpbmF0aW9u
T3JJZ25vcmVkLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwg
Y2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKGZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQuZ2V0
KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRz
LCBkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGlu
ZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChl
bmQuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtNTE0LDcgKzUxNiw3IEBAIFJlZ2lzdGVy
SUQqIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWkKICAgICB7CiAgICAgICAgIENhbGxBcmd1
bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKLSAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKGZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQuZ2V0KCks
IGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90
KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRD
YWxsKGZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQo
KSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAg
IH0KICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgcmV0dXJuIGZpbmFs
RGVzdGluYXRpb25Pcklnbm9yZWQuZ2V0KCk7CkBAIC01MzYsNyArNTM4LDcgQEAgUmVnaXN0ZXJJ
RCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbQogICAgIFJlZlB0cjxMYWJlbD4gcmVhbENh
bGwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8TGFiZWw+IGVuZCA9IGdlbmVy
YXRvci5uZXdMYWJlbCgpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9y
LmVtaXROb2RlKG1fYmFzZSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZv
dCgpIC0gbV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQsIHN0YXJ0T2Zmc2V0KCkgLSBtX3N1YmV4
cHJlc3Npb25EaXZvdE9mZnNldCwgbV9zdWJleHByZXNzaW9uRW5kT2Zmc2V0KTsKKyAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNz
aW9uU3RhcnRPZmZzZXQoKSwgc3ViZXhwcmVzc2lvbkVuZE9mZnNldCgpLCBzdWJleHByZXNzaW9u
TGluZSgpLCBzdWJleHByZXNzaW9uTGluZVN0YXJ0KCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0
aW9uKGRzdCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBm
aW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb25Pckln
bm9yZWQoZHN0LCBmdW5jdGlvbi5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RG
dW5jdGlvbkFwcGx5KGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CkBAIC01NDcsMjQg
KzU0OSwyNCBAQCBSZWdpc3RlcklEKiBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtCiAgICAg
ICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7CiAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1Np
bXBsZUFycmF5KCkpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fYXJncy0+bV9saXN0
Tm9kZS0+bV9uZXh0LT5tX25leHQpOwotICAgICAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlz
dE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4
dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3QoZ2VuZXJhdG9yLnZtKCksIDAsIDApOworICAgICAg
ICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUq
PihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3QoZ2Vu
ZXJhdG9yLnZtKCksIDAsIDAsIDApOwogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVz
dGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIENhbGxBcmd1
bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRM
aXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwoZmlu
YWxEZXN0aW5hdGlvbk9ySWdub3JlZC5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVj
dGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9m
ZnNldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKGZpbmFsRGVz
dGluYXRpb25Pcklnbm9yZWQuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1
bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90
RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBt
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVt
cERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBDYWxs
QXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwg
b2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxs
KGZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBl
bmRPZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChmaW5h
bERlc3RpbmF0aW9uT3JJZ25vcmVkLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNldCgpLCBk
aXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5h
dGlvbihkc3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNh
bGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsK
LSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwoZmluYWxEZXN0aW5hdGlvbk9ySWdu
b3JlZC5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxB
cmd1bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwoZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZC5nZXQo
KSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMs
IGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5l
KCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5v
ZGUtPm1fbmV4dCk7CkBAIC01ODUsNyArNTg3LDcgQEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlv
bkNhbGxEb3ROb2RlOjplbQogICAgICAgICAgICAgd2hpbGUgKChhcmdzID0gYXJncy0+bV9uZXh0
KSkKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKIAot
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJncyhmaW5hbERlc3RpbmF0aW9uT3JJ
Z25vcmVkLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJn
c1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb2ZpbGVIb29rUmVn
aXN0ZXIuZ2V0KCksIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3MoZmluYWxEZXN0aW5hdGlvbk9ySWdub3Jl
ZC5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3NSZWdp
c3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9maWxlSG9va1JlZ2lzdGVy
LmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRp
dm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICAgICAgfQogICAgICAgICBnZW5lcmF0
b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKICAgICB9CkBAIC01OTMsNyArNTk1LDcgQEAgUmVnaXN0
ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbQogICAgIHsKICAgICAgICAgQ2FsbEFy
Z3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwot
ICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwoZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZC5nZXQo
KSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2
b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dENhbGwoZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZC5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5v
RXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNl
dCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAg
ICAgfQogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICByZXR1cm4gZmlu
YWxEZXN0aW5hdGlvbk9ySWdub3JlZC5nZXQoKTsKQEAgLTY0MSw3ICs2NDMsNyBAQCBSZWdpc3Rl
cklEKiBQb3N0Zml4Tm9kZTo6ZW1pdFJlc29sdmUoQnl0CiAgICAgICAgIHJldHVybiBvbGRWYWx1
ZS5nZXQoKTsKICAgICB9CiAKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90
KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwg
ZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2
YWx1ZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBOb25sb2NhbFJlc29sdmVJbmZv
IHJlc29sdmVJbmZvOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVt
aXRSZXNvbHZlV2l0aEJhc2VGb3JQdXQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5n
ZXQoKSwgcmVzb2x2ZVJlc3VsdCwgaWRlbnQsIHJlc29sdmVJbmZvKTsKQEAgLTY2MywxMCArNjY1
LDEwIEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0QnJhY2tldChCeXQKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShi
YXNlTm9kZSwgYnJhY2tldEFjY2Vzc29yLT5zdWJzY3JpcHRIYXNBc3NpZ25tZW50cygpLCBzdWJz
Y3JpcHQtPmlzUHVyZShnZW5lcmF0b3IpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVy
dHkgPSBnZW5lcmF0b3IuZW1pdE5vZGUoc3Vic2NyaXB0KTsKIAotICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oYnJhY2tldEFjY2Vzc29yLT5kaXZvdCgpLCBicmFja2V0QWNjZXNzb3It
PnN0YXJ0T2Zmc2V0KCksIGJyYWNrZXRBY2Nlc3Nvci0+ZW5kT2Zmc2V0KCkpOworICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oYnJhY2tldEFjY2Vzc29yLT5kaXZvdCgpLCBicmFja2V0
QWNjZXNzb3ItPmRpdm90U3RhcnRPZmZzZXQoKSwgYnJhY2tldEFjY2Vzc29yLT5kaXZvdEVuZE9m
ZnNldCgpLCBicmFja2V0QWNjZXNzb3ItPmRpdm90TGluZSgpLCBicmFja2V0QWNjZXNzb3ItPmRp
dm90TGluZVN0YXJ0KCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRv
ci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBwcm9w
ZXJ0eS5nZXQoKSk7CiAgICAgUmVnaXN0ZXJJRCogb2xkVmFsdWUgPSBlbWl0UG9zdEluY09yRGVj
KGdlbmVyYXRvciwgZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSwg
bV9vcGVyYXRvcik7Ci0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBz
dGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90
TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJh
c2UuZ2V0KCksIHByb3BlcnR5LmdldCgpLCB2YWx1ZS5nZXQoKSk7CiAgICAgcmV0dXJuIGdlbmVy
YXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgb2xkVmFsdWUpOwogfQpAQCAtNjgz
LDEwICs2ODUsMTAgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXREb3QoQnl0ZWNvZAog
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYmFzZU5v
ZGUpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2
b3QoKSwgZG90QWNjZXNzb3ItPnN0YXJ0T2Zmc2V0KCksIGRvdEFjY2Vzc29yLT5lbmRPZmZzZXQo
KSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3Qo
KSwgZG90QWNjZXNzb3ItPmRpdm90U3RhcnRPZmZzZXQoKSwgZG90QWNjZXNzb3ItPmRpdm90RW5k
T2Zmc2V0KCksIGRvdEFjY2Vzc29yLT5kaXZvdExpbmUoKSwgZG90QWNjZXNzb3ItPmRpdm90TGlu
ZVN0YXJ0KCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0
R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIGlkZW50KTsKICAg
ICBSZWdpc3RlcklEKiBvbGRWYWx1ZSA9IGVtaXRQb3N0SW5jT3JEZWMoZ2VuZXJhdG9yLCBnZW5l
cmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgpLCBtX29wZXJhdG9yKTsKLSAg
ICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVu
ZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRp
dm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGlu
ZVN0YXJ0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBpZGVudCwg
dmFsdWUuZ2V0KCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5l
ZWRlZChkc3QsIG9sZFZhbHVlKTsKIH0KQEAgLTcxNSw3ICs3MTcsNyBAQCBSZWdpc3RlcklEKiBE
ZWxldGVSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjCiAgICAgaWYgKHJlc29sdmVSZXN1bHQuaXNSZWdp
c3RlcigpKQogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCksIGZhbHNlKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lv
bkluZm8oZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNldCgpLCBkaXZvdEVu
ZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgUmVnaXN0ZXJJ
RCogYmFzZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZUJhc2UoZ2VuZXJhdG9yLnRlbXBEZXN0aW5h
dGlvbihkc3QpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50KTsKICAgICByZXR1cm4gZ2VuZXJhdG9y
LmVtaXREZWxldGVCeUlkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgYmFzZSksIGJh
c2UsIG1faWRlbnQpOwogfQpAQCAtNzI3LDcgKzcyOSw3IEBAIFJlZ2lzdGVySUQqIERlbGV0ZUJy
YWNrZXROb2RlOjplbWl0Qnl0ZWMKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcjAgPSBnZW5lcmF0
b3IuZW1pdE5vZGUobV9iYXNlKTsKICAgICBSZWdpc3RlcklEKiByMSA9IGdlbmVyYXRvci5lbWl0
Tm9kZShtX3N1YnNjcmlwdCk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQo
KSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdERlbGV0ZUJ5VmFsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHIwLmdldCgp
LCByMSk7CiB9CiAKQEAgLTczNyw3ICs3MzksNyBAQCBSZWdpc3RlcklEKiBEZWxldGVEb3ROb2Rl
OjplbWl0Qnl0ZWNvZGUoCiB7CiAgICAgUmVnaXN0ZXJJRCogcjAgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobV9iYXNlKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwg
c3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lv
bkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNldCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZv
dExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0RGVs
ZXRlQnlJZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCByMCwgbV9pZGVudCk7CiB9
CiAKQEAgLTgyMyw3ICs4MjUsNyBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0UmVzb2x2
ZShCeXRlCiAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRl
ZChkc3QsIHByb3BEc3QuZ2V0KCkpOwogICAgIH0KIAotICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8oZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNldCgpLCBkaXZv
dEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHByb3BEc3QgPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAg
ICAgTm9ubG9jYWxSZXNvbHZlSW5mbyByZXNvbHZlVmVyaWZpZXI7CiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVXaXRoQmFzZUZvclB1dChnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksIHByb3BEc3QuZ2V0KCksIHJlc29sdmVSZXN1bHQsIGlkZW50LCBy
ZXNvbHZlVmVyaWZpZXIpOwpAQCAtODQzLDEwICs4NDUsMTAgQEAgUmVnaXN0ZXJJRCogUHJlZml4
Tm9kZTo6ZW1pdEJyYWNrZXQoQnl0ZQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eSA9
IGdlbmVyYXRvci5lbWl0Tm9kZShzdWJzY3JpcHQpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBw
cm9wRHN0ID0gZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpOwogCi0gICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhicmFja2V0QWNjZXNzb3ItPmRpdm90KCksIGJyYWNrZXRBY2Nl
c3Nvci0+c3RhcnRPZmZzZXQoKSwgYnJhY2tldEFjY2Vzc29yLT5lbmRPZmZzZXQoKSk7CisgICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhicmFja2V0QWNjZXNzb3ItPmRpdm90KCksIGJy
YWNrZXRBY2Nlc3Nvci0+ZGl2b3RTdGFydE9mZnNldCgpLCBicmFja2V0QWNjZXNzb3ItPmRpdm90
RW5kT2Zmc2V0KCksIGJyYWNrZXRBY2Nlc3Nvci0+ZGl2b3RMaW5lKCksIGJyYWNrZXRBY2Nlc3Nv
ci0+ZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgUmVnaXN0ZXJJRCogdmFsdWUgPSBnZW5lcmF0b3Iu
ZW1pdEdldEJ5VmFsKHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpKTsK
ICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJhdG9yLCB2YWx1ZSwgbV9vcGVyYXRvcik7Ci0gICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZz
ZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0
YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFy
dCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIHByb3BlcnR5Lmdl
dCgpLCB2YWx1ZSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVl
ZGVkKGRzdCwgcHJvcERzdC5nZXQoKSk7CiB9CkBAIC04NjEsMTAgKzg2MywxMCBAQCBSZWdpc3Rl
cklEKiBQcmVmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYmFzZU5vZGUpOwogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBwcm9wRHN0ID0gZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpOwogCi0gICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNz
b3ItPnN0YXJ0T2Zmc2V0KCksIGRvdEFjY2Vzc29yLT5lbmRPZmZzZXQoKSk7CisgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNzb3It
PmRpdm90U3RhcnRPZmZzZXQoKSwgZG90QWNjZXNzb3ItPmRpdm90RW5kT2Zmc2V0KCksIGRvdEFj
Y2Vzc29yLT5kaXZvdExpbmUoKSwgZG90QWNjZXNzb3ItPmRpdm90TGluZVN0YXJ0KCkpOwogICAg
IFJlZ2lzdGVySUQqIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHByb3BEc3QuZ2V0KCks
IGJhc2UuZ2V0KCksIGlkZW50KTsKICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJhdG9yLCB2YWx1ZSwg
bV9vcGVyYXRvcik7Ci0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBz
dGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90
TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFz
ZS5nZXQoKSwgaWRlbnQsIHZhbHVlKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3Rp
bmF0aW9uSWZOZWVkZWQoZHN0LCBwcm9wRHN0LmdldCgpKTsKIH0KQEAgLTg5MCw2ICs4OTIsNyBA
QCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0CiBSZWdpc3RlcklEKiBV
bmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKIHsKICAgICBSZWdpc3RlcklEKiBzcmMgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobV9leHByKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN0YXJ0T2Zmc2V0
KCksIDAsIDAsIGxpbmVObygpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAgICAgcmV0dXJuIGdlbmVy
YXRvci5lbWl0VW5hcnlPcChvcGNvZGVJRCgpLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihk
c3QpLCBzcmMpOwogfQogCkBAIC0xMDIxLDcgKzEwMjQsNyBAQCBSZWdpc3RlcklEKiBCaW5hcnlP
cE5vZGU6OmVtaXRTdHJjYXQoQnl0CiAgICAgLy8gQ2VydGFpbiByZWFkLW1vZGlmeSBub2RlcyBy
ZXF1aXJlIGV4cHJlc3Npb24gaW5mbyB0byBiZSBlbWl0dGVkICphZnRlciogbV9yaWdodCBoYXMg
YmVlbiBnZW5lcmF0ZWQuCiAgICAgLy8gSWYgdGhpcyBpcyByZXF1aXJlZCB0aGUgbm9kZSBpcyBw
YXNzZWQgYXMgJ2VtaXRFeHByZXNzaW9uSW5mb0Zvck1lJzsgZG8gc28gbm93LgogICAgIGlmIChl
bWl0RXhwcmVzc2lvbkluZm9Gb3JNZSkKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhlbWl0RXhwcmVzc2lvbkluZm9Gb3JNZS0+ZGl2b3QoKSwgZW1pdEV4cHJlc3Npb25JbmZv
Rm9yTWUtPnN0YXJ0T2Zmc2V0KCksIGVtaXRFeHByZXNzaW9uSW5mb0Zvck1lLT5lbmRPZmZzZXQo
KSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZW1pdEV4cHJlc3Npb25J
bmZvRm9yTWUtPmRpdm90KCksIGVtaXRFeHByZXNzaW9uSW5mb0Zvck1lLT5kaXZvdFN0YXJ0T2Zm
c2V0KCksIGVtaXRFeHByZXNzaW9uSW5mb0Zvck1lLT5kaXZvdEVuZE9mZnNldCgpLCBlbWl0RXhw
cmVzc2lvbkluZm9Gb3JNZS0+ZGl2b3RMaW5lKCksIGVtaXRFeHByZXNzaW9uSW5mb0Zvck1lLT5k
aXZvdExpbmVTdGFydCgpKTsKIAogICAgIC8vIElmIHRoZXJlIGlzIGFuIGFzc2lnbm1lbnQgY29u
dmVydCB0aGUgbGhzIG5vdy4gIFRoaXMgd2lsbCBhbHNvIGNvcHkgbGhzIHRvCiAgICAgLy8gdGhl
IHRlbXBvcmFyeSByZWdpc3RlciB3ZSBhbGxvY2F0ZWQgZm9yIGl0LgpAQCAtMTE2MSw3ICsxMTY0
LDcgQEAgUmVnaXN0ZXJJRCogVGhyb3dhYmxlQmluYXJ5T3BOb2RlOjplbWl0QgogewogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBzcmMxID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRl
KG1fZXhwcjEsIG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9leHByMi0+aXNQdXJlKGdlbmVyYXRv
cikpOwogICAgIFJlZ2lzdGVySUQqIHNyYzIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByMik7
Ci0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgp
LCBlbmRPZmZzZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgp
LCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZv
dExpbmVTdGFydCgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRCaW5hcnlPcChvcGNvZGVJ
RCgpLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHNyYzEuZ2V0KCkpLCBzcmMxLmdl
dCgpLCBzcmMyLCBPcGVyYW5kVHlwZXMobV9leHByMS0+cmVzdWx0RGVzY3JpcHRvcigpLCBtX2V4
cHIyLT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKIH0KIApAQCAtMTE3MywxMyArMTE3NiwxMyBAQCBS
ZWdpc3RlcklEKiBJbnN0YW5jZU9mTm9kZTo6ZW1pdEJ5dGVjb2RlCiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGRzdFJlZyA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQo
KSk7CiAgICAgUmVmUHRyPExhYmVsPiB0YXJnZXQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIAot
ICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwg
ZW5kT2Zmc2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwg
ZGl2b3RTdGFydE9mZnNldCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RM
aW5lU3RhcnQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRDaGVja0hhc0luc3RhbmNlKGRzdFJlZy5n
ZXQoKSwgc3JjMS5nZXQoKSwgc3JjMi5nZXQoKSwgdGFyZ2V0LmdldCgpKTsKIAotICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0
KCkpOworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFy
dE9mZnNldCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQo
KSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHByb3RvdHlwZS5nZXQoKSwgc3JjMi5nZXQo
KSwgZ2VuZXJhdG9yLnZtKCktPnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7CiAKLSAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNl
dCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3Rh
cnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0
KCkpOwogICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0SW5zdGFuY2VPZihk
c3RSZWcuZ2V0KCksIHNyYzEuZ2V0KCksIHByb3RvdHlwZS5nZXQoKSk7CiAgICAgZ2VuZXJhdG9y
LmVtaXRMYWJlbCh0YXJnZXQuZ2V0KCkpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMjkwLDcg
KzEyOTMsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBSZWdpc3RlcklEKiBlbWl0UmVhCiAgICAg
Ly8gQ2VydGFpbiByZWFkLW1vZGlmeSBub2RlcyByZXF1aXJlIGV4cHJlc3Npb24gaW5mbyB0byBi
ZSBlbWl0dGVkICphZnRlciogbV9yaWdodCBoYXMgYmVlbiBnZW5lcmF0ZWQuCiAgICAgLy8gSWYg
dGhpcyBpcyByZXF1aXJlZCB0aGUgbm9kZSBpcyBwYXNzZWQgYXMgJ2VtaXRFeHByZXNzaW9uSW5m
b0Zvck1lJzsgZG8gc28gbm93LgogICAgIGlmIChlbWl0RXhwcmVzc2lvbkluZm9Gb3JNZSkKLSAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhlbWl0RXhwcmVzc2lvbkluZm9Gb3JN
ZS0+ZGl2b3QoKSwgZW1pdEV4cHJlc3Npb25JbmZvRm9yTWUtPnN0YXJ0T2Zmc2V0KCksIGVtaXRF
eHByZXNzaW9uSW5mb0Zvck1lLT5lbmRPZmZzZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oZW1pdEV4cHJlc3Npb25JbmZvRm9yTWUtPmRpdm90KCksIGVtaXRFeHBy
ZXNzaW9uSW5mb0Zvck1lLT5kaXZvdFN0YXJ0T2Zmc2V0KCksIGVtaXRFeHByZXNzaW9uSW5mb0Zv
ck1lLT5kaXZvdEVuZE9mZnNldCgpLCBlbWl0RXhwcmVzc2lvbkluZm9Gb3JNZS0+ZGl2b3RMaW5l
KCksIGVtaXRFeHByZXNzaW9uSW5mb0Zvck1lLT5kaXZvdExpbmVTdGFydCgpKTsKIAogICAgIHJl
dHVybiBnZW5lcmF0b3IuZW1pdEJpbmFyeU9wKG9wY29kZUlELCBkc3QsIHNyYzEsIHNyYzIsIHR5
cGVzKTsKIH0KQEAgLTEzMjUsNyArMTMyOCw3IEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlSZXNv
bHZlTm9kZTo6ZW1pdEIKICAgICB9CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdl
bmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KTsKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Np
b25JbmZvKGRpdm90KCkgLSBzdGFydE9mZnNldCgpICsgbV9pZGVudC5sZW5ndGgoKSwgbV9pZGVu
dC5sZW5ndGgoKSwgMCk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgp
IC0gZGl2b3RTdGFydE9mZnNldCgpICsgbV9pZGVudC5sZW5ndGgoKSwgbV9pZGVudC5sZW5ndGgo
KSwgMCwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgIE5vbmxvY2FsUmVzb2x2
ZUluZm8gcmVzb2x2ZVZlcmlmaWVyOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2Vu
ZXJhdG9yLmVtaXRSZXNvbHZlV2l0aEJhc2VGb3JQdXQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
LCBzcmMxLmdldCgpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50LCByZXNvbHZlVmVyaWZpZXIpOwog
ICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0
b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQoKSksIHNyYzEuZ2V0
KCksIG1fcmlnaHQsIG1fb3BlcmF0b3IsIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3du
VHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9yKCkpLCB0aGlzKTsKQEAgLTEzNjAsNyAr
MTM2Myw3IEBAIFJlZ2lzdGVySUQqIEFzc2lnblJlc29sdmVOb2RlOjplbWl0Qnl0ZWMKICAgICBp
ZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgIGRzdCA9IDA7CiAg
ICAgUmVnaXN0ZXJJRCogdmFsdWUgPSBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3JpZ2h0KTsK
LSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0KCks
IGVuZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCks
IGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90
TGluZVN0YXJ0KCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFB1dFRvQmFzZShiYXNlLmdl
dCgpLCBtX2lkZW50LCB2YWx1ZSwgcmVzb2x2ZVZlcmlmaWVyKTsKIH0KIApAQCAtMTM3MSw3ICsx
Mzc0LDcgQEAgUmVnaXN0ZXJJRCogQXNzaWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKAogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRl
KG1fYmFzZSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2VuZXJhdG9y
KSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmRlc3RpbmF0aW9u
Rm9yQXNzaWduUmVzdWx0KGRzdCk7CiAgICAgUmVnaXN0ZXJJRCogcmVzdWx0ID0gZ2VuZXJhdG9y
LmVtaXROb2RlKHZhbHVlLmdldCgpLCBtX3JpZ2h0KTsKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2
b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgIFJlZ2lz
dGVySUQqIGZvcndhcmRSZXN1bHQgPSAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkp
ID8gcmVzdWx0IDogZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZ2VuZXJhdG9y
LnRlbXBEZXN0aW5hdGlvbihyZXN1bHQpLCByZXN1bHQpOwogICAgIGdlbmVyYXRvci5lbWl0UHV0
QnlJZChiYXNlLmdldCgpLCBtX2lkZW50LCBmb3J3YXJkUmVzdWx0KTsKICAgICByZXR1cm4gZ2Vu
ZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBmb3J3YXJkUmVzdWx0KTsKQEAg
LTEzODMsMTEgKzEzODYsMTEgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeURvdE5vZGU6OmVtaXRC
eXRlYwogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2Rl
Rm9yTGVmdEhhbmRTaWRlKG1fYmFzZSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5p
c1B1cmUoZ2VuZXJhdG9yKSk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90KCkgLSBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNldCwgc3RhcnRPZmZzZXQoKSAtIG1fc3Vi
ZXhwcmVzc2lvbkRpdm90T2Zmc2V0LCBtX3N1YmV4cHJlc3Npb25FbmRPZmZzZXQpOworICAgIGdl
bmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJl
c3Npb25TdGFydE9mZnNldCgpLCBzdWJleHByZXNzaW9uRW5kT2Zmc2V0KCksIHN1YmV4cHJlc3Np
b25MaW5lKCksIHN1YmV4cHJlc3Npb25MaW5lU3RhcnQoKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRp
b24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CiAgICAgUmVnaXN0ZXJJRCogdXBkYXRlZFZh
bHVlID0gZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0LCB2YWx1ZS5nZXQoKSksIHZhbHVlLmdldCgpLCBtX3JpZ2h0LCBtX29w
ZXJhdG9yLCBPcGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+
cmVzdWx0RGVzY3JpcHRvcigpKSk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1p
dEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZz
ZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgdXBkYXRlZFZhbHVlKTsKIH0KIApA
QCAtMTQwNyw3ICsxNDEwLDcgQEAgUmVnaXN0ZXJJRCogQXNzaWduQnJhY2tldE5vZGU6OmVtaXRC
eXRlYwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5kZXN0aW5hdGlv
bkZvckFzc2lnblJlc3VsdChkc3QpOwogICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGdlbmVyYXRv
ci5lbWl0Tm9kZSh2YWx1ZS5nZXQoKSwgbV9yaWdodCk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICBn
ZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwg
ZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgIFJl
Z2lzdGVySUQqIGZvcndhcmRSZXN1bHQgPSAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0
KCkpID8gcmVzdWx0IDogZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZ2VuZXJh
dG9yLnRlbXBEZXN0aW5hdGlvbihyZXN1bHQpLCByZXN1bHQpOwogICAgIGdlbmVyYXRvci5lbWl0
UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIGZvcndhcmRSZXN1bHQpOwogICAg
IHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGZvcndhcmRS
ZXN1bHQpOwpAQCAtMTQyMCwxMSArMTQyMywxMSBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5QnJh
Y2tldE5vZGU6OmVtaXRCCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV9iYXNlLCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRz
IHx8IG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9zdWJzY3JpcHQtPmlzUHVyZShnZW5lcmF0b3Ip
ICYmIG1fcmlnaHQtPmlzUHVyZShnZW5lcmF0b3IpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cHJvcGVydHkgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV9zdWJzY3JpcHQs
IG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9yaWdodC0+aXNQdXJlKGdlbmVyYXRvcikpOwogCi0g
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpIC0gbV9zdWJleHByZXNzaW9u
RGl2b3RPZmZzZXQsIHN0YXJ0T2Zmc2V0KCkgLSBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNldCwg
bV9zdWJleHByZXNzaW9uRW5kT2Zmc2V0KTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnRPZmZzZXQoKSwgc3Vi
ZXhwcmVzc2lvbkVuZE9mZnNldCgpLCBzdWJleHByZXNzaW9uTGluZSgpLCBzdWJleHByZXNzaW9u
TGluZVN0YXJ0KCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5l
bWl0R2V0QnlWYWwoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBw
cm9wZXJ0eS5nZXQoKSk7CiAgICAgUmVnaXN0ZXJJRCogdXBkYXRlZFZhbHVlID0gZW1pdFJlYWRN
b2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0
LCB2YWx1ZS5nZXQoKSksIHZhbHVlLmdldCgpLCBtX3JpZ2h0LCBtX29wZXJhdG9yLCBPcGVyYW5k
VHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVzY3JpcHRv
cigpKSk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIHN0YXJ0
T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5l
KCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5n
ZXQoKSwgcHJvcGVydHkuZ2V0KCksIHVwZGF0ZWRWYWx1ZSk7CiAKICAgICByZXR1cm4gdXBkYXRl
ZFZhbHVlOwpAQCAtMTQ4MCw3ICsxNDgzLDcgQEAgUmVnaXN0ZXJJRCogQ29uc3REZWNsTm9kZTo6
ZW1pdEJ5dGVjb2RlKAogCiB2b2lkIENvbnN0U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewotICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExp
bmUoKSwgY2hhclBvc2l0aW9uKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxF
eGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwg
bGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0Tm9kZShtX25leHQpOwogfQog
CkBAIC0xNTIzLDE0ICsxNTI2LDE0IEBAIHZvaWQgQmxvY2tOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW4KIAogdm9pZCBFbXB0eVN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKLSAgICBnZW5lcmF0b3IuZW1p
dERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCks
IGNoYXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0
ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVT
dGFydE9mZnNldCgpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERl
YnVnZ2VyU3RhdGVtZW50Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogdm9pZCBE
ZWJ1Z2dlclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRS
ZWFjaEJyZWFrcG9pbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24oKSk7
CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkUmVhY2hCcmVha3BvaW50LCBmaXJzdExp
bmUoKSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogfQog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXhwclN0YXRlbWVudE5vZGUgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTUzOCw3ICsxNTQxLDcgQEAgdm9pZCBEZWJ1
Z2dlclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZQogdm9pZCBFeHByU3RhdGVtZW50Tm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKIHsKICAgICBBU1NFUlQobV9leHByKTsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhX
aWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3NpdGlv
bigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwg
Zmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgp
KTsKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2V4cHIpOwogfQogCkBAIC0xNTQ3LDcg
KzE1NTAsNyBAQCB2b2lkIEV4cHJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0CiB2b2lk
IFZhclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKikKIHsKICAgICBBU1NFUlQobV9leHByKTsKLSAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCksIGNoYXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhl
Y3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxp
bmVTdGFydE9mZnNldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKIH0KIApA
QCAtMTU5Miw3ICsxNTk1LDcgQEAgYm9vbCBJZkVsc2VOb2RlOjp0cnlGb2xkQnJlYWtBbmRDb250
aW51ZQogCiB2b2lkIElmRWxzZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9z
aXRpb24oKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1l
bnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZz
ZXQoKSk7CiAgICAgCiAgICAgUmVmUHRyPExhYmVsPiBiZWZvcmVUaGVuID0gZ2VuZXJhdG9yLm5l
d0xhYmVsKCk7CiAgICAgUmVmUHRyPExhYmVsPiBiZWZvcmVFbHNlID0gZ2VuZXJhdG9yLm5ld0xh
YmVsKCk7CkBAIC0xNjI5LDEyICsxNjMyLDEyIEBAIHZvaWQgRG9XaGlsZU5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUcKICAgICBSZWZQdHI8TGFiZWw+IHRvcE9mTG9vcCA9IGdlbmVyYXRvci5u
ZXdMYWJlbCgpOwogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwodG9wT2ZMb29wLmdldCgpKTsKICAg
ICBnZW5lcmF0b3IuZW1pdExvb3BIaW50KCk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2so
V2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGxhc3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3NpdGlv
bigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwg
bGFzdExpbmUoKSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkp
OwogCiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2Vu
ZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+Y29udGludWVUYXJnZXQoKSk7Ci0gICAgZ2VuZXJhdG9y
LmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGxhc3RMaW5lKCksIGxhc3RMaW5l
KCksIGNoYXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhl
Y3V0ZVN0YXRlbWVudCwgbGFzdExpbmUoKSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGlu
ZVN0YXJ0T2Zmc2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4
dChtX2V4cHIsIHRvcE9mTG9vcC5nZXQoKSwgc2NvcGUtPmJyZWFrVGFyZ2V0KCksIEZhbGxUaHJv
dWdoTWVhbnNGYWxzZSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5icmVha1Rh
cmdldCgpKTsKQEAgLTE2NDcsNyArMTY1MCw3IEBAIHZvaWQgV2hpbGVOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW4KICAgICBMYWJlbFNjb3BlUHRyIHNjb3BlID0gZ2VuZXJhdG9yLm5ld0xh
YmVsU2NvcGUoTGFiZWxTY29wZTo6TG9vcCk7CiAgICAgUmVmUHRyPExhYmVsPiB0b3BPZkxvb3Ag
PSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdp
bGxFeGVjdXRlU3RhdGVtZW50LCBtX2V4cHItPmxpbmVObygpLCBtX2V4cHItPmxpbmVObygpLCBt
X2V4cHItPmNoYXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxs
RXhlY3V0ZVN0YXRlbWVudCwgbV9leHByLT5saW5lTm8oKSwgbV9leHByLT5saW5lTm8oKSwgbV9l
eHByLT5zdGFydE9mZnNldCgpLCBtX2V4cHItPmxpbmVTdGFydE9mZnNldCgpKTsKICAgICBnZW5l
cmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByLCB0b3BPZkxvb3AuZ2V0KCks
IHNjb3BlLT5icmVha1RhcmdldCgpLCBGYWxsVGhyb3VnaE1lYW5zVHJ1ZSk7CiAKICAgICBnZW5l
cmF0b3IuZW1pdExhYmVsKHRvcE9mTG9vcC5nZXQoKSk7CkBAIC0xNjU2LDcgKzE2NTksNyBAQCB2
b2lkIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuCiAgICAgZ2VuZXJhdG9yLmVt
aXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29w
ZS0+Y29udGludWVUYXJnZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4
ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24oKSk7
CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0
TGluZSgpLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAK
ICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByLCB0b3BPZkxv
b3AuZ2V0KCksIHNjb3BlLT5icmVha1RhcmdldCgpLCBGYWxsVGhyb3VnaE1lYW5zRmFsc2UpOwog
CkBAIC0xNjY5LDcgKzE2NzIsNyBAQCB2b2lkIEZvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyCiB7CiAgICAgTGFiZWxTY29wZVB0ciBzY29wZSA9IGdlbmVyYXRvci5uZXdMYWJlbFNj
b3BlKExhYmVsU2NvcGU6Okxvb3ApOwogCi0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24o
KSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZp
cnN0TGluZSgpLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7
CiAKICAgICBpZiAobV9leHByMSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVyYXRv
ci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcjEpOwpAQCAtMTY4NCw3ICsxNjg3LDcgQEAgdm9pZCBG
b3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcgogICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZShkc3QsIG1fc3RhdGVtZW50KTsKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNv
bnRpbnVlVGFyZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRl
U3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY2hhclBvc2l0aW9uKCkpOworICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgIGlm
IChtX2V4cHIzKQogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZ2VuZXJhdG9yLmlnbm9yZWRS
ZXN1bHQoKSwgbV9leHByMyk7CiAKQEAgLTE3MDcsNyArMTcxMCw3IEBAIHZvaWQgRm9ySW5Ob2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSwgY2hhclBvc2l0aW9uKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgc3RhcnRP
ZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgaWYgKG1faW5pdCkKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1faW5pdCk7CkBA
IC0xNzM2LDcgKzE3MzksNyBAQCB2b2lkIEZvckluTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuCiAgICAgICAgICAgICBOb25sb2NhbFJlc29sdmVJbmZvIHJlc29sdmVWZXJpZmllcjsKICAg
ICAgICAgICAgIFJlZ2lzdGVySUQqIGJhc2UgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVCYXNlRm9y
UHV0KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcmVzb2x2ZVJlc3VsdCwgaWRlbnQsIHJlc29s
dmVWZXJpZmllcik7CiAKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8o
ZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90
RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0UHV0VG9CYXNlKGJhc2UsIGlkZW50LCBwcm9wZXJ0eU5hbWUsIHJlc29s
dmVWZXJpZmllcik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBleHBlY3RlZFN1YnNj
cmlwdCA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb3Bl
cnR5TmFtZSk7CkBAIC0xNzUwLDcgKzE3NTMsNyBAQCB2b2lkIEZvckluTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuCiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm90ZWN0ID0gcHJv
cGVydHlOYW1lOwogICAgICAgICBSZWdpc3RlcklEKiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2Rl
KGFzc2lnbk5vZGUtPmJhc2UoKSk7CiAKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhhc3NpZ25Ob2RlLT5kaXZvdCgpLCBhc3NpZ25Ob2RlLT5zdGFydE9mZnNldCgpLCBhc3Np
Z25Ob2RlLT5lbmRPZmZzZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oYXNzaWduTm9kZS0+ZGl2b3QoKSwgYXNzaWduTm9kZS0+ZGl2b3RTdGFydE9mZnNldCgpLCBh
c3NpZ25Ob2RlLT5kaXZvdEVuZE9mZnNldCgpLCBhc3NpZ25Ob2RlLT5kaXZvdExpbmUoKSwgYXNz
aWduTm9kZS0+ZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJ
ZChiYXNlLCBpZGVudCwgcHJvcGVydHlOYW1lKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NF
UlQobV9sZXhwci0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpOwpAQCAtMTc2MCw3ICsxNzYzLDcg
QEAgdm9pZCBGb3JJbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbgogICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShhc3NpZ25Ob2RlLT5iYXNl
KCkpOwogICAgICAgICBSZWdpc3RlcklEKiBzdWJzY3JpcHQgPSBnZW5lcmF0b3IuZW1pdE5vZGUo
YXNzaWduTm9kZS0+c3Vic2NyaXB0KCkpOwogICAgICAgICAKLSAgICAgICAgZ2VuZXJhdG9yLmVt
aXRFeHByZXNzaW9uSW5mbyhhc3NpZ25Ob2RlLT5kaXZvdCgpLCBhc3NpZ25Ob2RlLT5zdGFydE9m
ZnNldCgpLCBhc3NpZ25Ob2RlLT5lbmRPZmZzZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oYXNzaWduTm9kZS0+ZGl2b3QoKSwgYXNzaWduTm9kZS0+ZGl2b3RTdGFy
dE9mZnNldCgpLCBhc3NpZ25Ob2RlLT5kaXZvdEVuZE9mZnNldCgpLCBhc3NpZ25Ob2RlLT5kaXZv
dExpbmUoKSwgYXNzaWduTm9kZS0+ZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgc3Vic2NyaXB0LCBwcm9wZXJ0eU5hbWUpOwogICAg
IH0gICAKIApAQCAtMTc3MSw3ICsxNzc0LDcgQEAgdm9pZCBGb3JJbk5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbgogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+Y29udGludWVU
YXJnZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXROZXh0UHJvcGVydHlOYW1lKHByb3BlcnR5TmFt
ZSwgYmFzZS5nZXQoKSwgaS5nZXQoKSwgc2l6ZS5nZXQoKSwgaXRlci5nZXQoKSwgbG9vcFN0YXJ0
LmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVu
dCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RM
aW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKICAgICBnZW5lcmF0b3Iu
ZW1pdExhYmVsKHNjb3BlLT5icmVha1RhcmdldCgpKTsKIH0KIApAQCAtMTc5Myw3ICsxNzk2LDcg
QEAgTGFiZWwqIENvbnRpbnVlTm9kZTo6dHJpdmlhbFRhcmdldChCeXRlYwogCiB2b2lkIENvbnRp
bnVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqKQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY2hhclBvc2l0aW9uKCkpOworICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFz
dExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgIAogICAgIExh
YmVsU2NvcGUqIHNjb3BlID0gZ2VuZXJhdG9yLmNvbnRpbnVlVGFyZ2V0KG1faWRlbnQpOwogICAg
IEFTU0VSVChzY29wZSk7CkBAIC0xODIwLDcgKzE4MjMsNyBAQCBMYWJlbCogQnJlYWtOb2RlOjp0
cml2aWFsVGFyZ2V0KEJ5dGVjb2RlCiAKIHZvaWQgQnJlYWtOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7Ci0gICAgZ2VuZXJhdG9y
LmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGlu
ZSgpLCBjaGFyUG9zaXRpb24oKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4
ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBs
aW5lU3RhcnRPZmZzZXQoKSk7CiAgICAgCiAgICAgTGFiZWxTY29wZSogc2NvcGUgPSBnZW5lcmF0
b3IuYnJlYWtUYXJnZXQobV9pZGVudCk7CiAgICAgQVNTRVJUKHNjb3BlKTsKQEAgLTE4MzMsNyAr
MTgzNiw3IEBAIHZvaWQgQnJlYWtOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW4KIAogdm9p
ZCBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVj
dXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY2hhclBvc2l0aW9uKCkpOwor
ICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExp
bmUoKSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAg
IEFTU0VSVChnZW5lcmF0b3IuY29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpOwogCiAgICAgaWYg
KGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQpAQCAtMTg0NSw3ICsxODQ4LDcgQEAg
dm9pZCBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZQogICAgICAgICBnZW5lcmF0
b3IuZW1pdFBvcFNjb3BlcygwKTsKICAgICB9CiAKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9v
ayhXaWxsTGVhdmVDYWxsRnJhbWUsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRp
b24oKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBm
aXJzdExpbmUoKSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkp
OwogICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHJldHVyblJlZ2lzdGVyLmdldCgpKTsKIH0KIApA
QCAtMTg1MywxMCArMTg1NiwxMCBAQCB2b2lkIFJldHVybk5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlCiAKIHZvaWQgV2l0aE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9z
aXRpb24oKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1l
bnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZz
ZXQoKSk7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobV9leHByKTsKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG1fZGl2b3QsIG1f
ZXhwcmVzc2lvbkxlbmd0aCwgMCk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyht
X2Rpdm90LCBtX2V4cHJlc3Npb25MZW5ndGgsIDAsIG1fZGl2b3RMaW5lLCBtX2Rpdm90TGluZVN0
YXJ0KTsKICAgICBnZW5lcmF0b3IuZW1pdFB1c2hXaXRoU2NvcGUoc2NvcGUuZ2V0KCkpOwogICAg
IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKICAgICBnZW5lcmF0b3IuZW1p
dFBvcFNjb3BlKCk7CkBAIC0yMDI3LDcgKzIwMzAsNyBAQCB2b2lkIENhc2VCbG9ja05vZGU6OmVt
aXRCeXRlY29kZUZvckJsb2NrCiAKIHZvaWQgU3dpdGNoTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RM
aW5lKCksIGNoYXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxs
RXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCks
IGxpbmVTdGFydE9mZnNldCgpKTsKICAgICAKICAgICBMYWJlbFNjb3BlUHRyIHNjb3BlID0gZ2Vu
ZXJhdG9yLm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6U3dpdGNoKTsKIApAQCAtMjA0MSw3ICsy
MDQ0LDcgQEAgdm9pZCBTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZQogCiB2b2lk
IExhYmVsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0
ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3NpdGlvbigpKTsKKyAg
ICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5l
KCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKIAogICAg
IEFTU0VSVCghZ2VuZXJhdG9yLmJyZWFrVGFyZ2V0KG1fbmFtZSkpOwogCkBAIC0yMDU1LDEyICsy
MDU4LDEyIEBAIHZvaWQgTGFiZWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW4KIAogdm9p
ZCBUaHJvd05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1
dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24oKSk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGlu
ZSgpLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAKICAg
ICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgIGRzdCA9IDA7
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGV4cHIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHBy
KTsKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0
KCksIGVuZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90
KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRp
dm90TGluZVN0YXJ0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0VGhyb3coZXhwci5nZXQoKSk7CiB9
CiAKQEAgLTIwNzEsNyArMjA3NCw3IEBAIHZvaWQgVHJ5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXIKICAgICAvLyBOT1RFOiBUaGUgY2F0Y2ggYW5kIGZpbmFsbHkgYmxvY2tzIG11c3Qg
YmUgbGFiZWxlZCBleHBsaWNpdGx5LCBzbyB0aGUKICAgICAvLyBvcHRpbWl6ZXIga25vd3MgdGhl
eSBtYXkgYmUganVtcGVkIHRvIGZyb20gYW55d2hlcmUuCiAKLSAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNo
YXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0
YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFy
dE9mZnNldCgpKTsKIAogICAgIEFTU0VSVChtX2NhdGNoQmxvY2sgfHwgbV9maW5hbGx5QmxvY2sp
OwogCkBAIC0yMTM5LDEzICsyMTQyLDEzIEBAIGlubGluZSB2b2lkIFNjb3BlTm9kZTo6ZW1pdFN0
YXRlbWVudHNCeXQKIAogdm9pZCBQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewotICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlUHJvZ3JhbSwgc3RhcnRMaW5lKCksIHN0YXJ0TGluZSgpLCBzdGFy
dENoYXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0
ZVByb2dyYW0sIHN0YXJ0TGluZSgpLCBzdGFydExpbmUoKSwgc3RhcnRTdGFydE9mZnNldCgpLCBz
dGFydExpbmVTdGFydE9mZnNldCgpKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkc3RSZWdp
c3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBnZW5lcmF0b3IuZW1pdExvYWQo
ZHN0UmVnaXN0ZXIuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOwogICAgIGVtaXRTdGF0ZW1lbnRzQnl0
ZWNvZGUoZ2VuZXJhdG9yLCBkc3RSZWdpc3Rlci5nZXQoKSk7CiAKLSAgICBnZW5lcmF0b3IuZW1p
dERlYnVnSG9vayhEaWRFeGVjdXRlUHJvZ3JhbSwgbGFzdExpbmUoKSwgbGFzdExpbmUoKSwgY2hh
clBvc2l0aW9uKCkgLSAxKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRFeGVjdXRl
UHJvZ3JhbSwgbGFzdExpbmUoKSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0
T2Zmc2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0RW5kKGRzdFJlZ2lzdGVyLmdldCgpKTsKIH0K
IApAQCAtMjE1MywxMyArMjE1NiwxMyBAQCB2b2lkIFByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHCiAKIHZvaWQgRXZhbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9v
ayhXaWxsRXhlY3V0ZVByb2dyYW0sIHN0YXJ0TGluZSgpLCBzdGFydExpbmUoKSwgc3RhcnRDaGFy
UG9zaXRpb24oKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVQcm9n
cmFtLCBzdGFydExpbmUoKSwgc3RhcnRMaW5lKCksIHN0YXJ0U3RhcnRPZmZzZXQoKSwgc3RhcnRM
aW5lU3RhcnRPZmZzZXQoKSk7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZHN0UmVnaXN0ZXIg
PSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdFJl
Z2lzdGVyLmdldCgpLCBqc1VuZGVmaW5lZCgpKTsKICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2Rl
KGdlbmVyYXRvciwgZHN0UmVnaXN0ZXIuZ2V0KCkpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1
Z0hvb2soRGlkRXhlY3V0ZVByb2dyYW0sIGxhc3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3Np
dGlvbigpIC0gMSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkRXhlY3V0ZVByb2dy
YW0sIGxhc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNl
dCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdEVuZChkc3RSZWdpc3Rlci5nZXQoKSk7CiB9CiAKQEAg
LTIxNjcsNyArMjE3MCw3IEBAIHZvaWQgRXZhbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmUKIAogdm9pZCBGdW5jdGlvbkJvZHlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soRGlkRW50ZXJDYWxsRnJhbWUsIHN0YXJ0TGluZSgpLCBzdGFydExpbmUoKSwgc3RhcnRDaGFy
UG9zaXRpb24oKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkRW50ZXJDYWxsRnJh
bWUsIHN0YXJ0TGluZSgpLCBzdGFydExpbmUoKSwgc3RhcnRTdGFydE9mZnNldCgpLCBzdGFydExp
bmVTdGFydE9mZnNldCgpKTsKICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwg
Z2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CiAKICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVT
dGF0ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQoKTsKQEAgLTIxODMsOCArMjE4Niw4IEBA
IHZvaWQgRnVuY3Rpb25Cb2R5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGUKICAgICAvLyBJZiB0aGVy
ZSBpcyBubyByZXR1cm4gd2UgbXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBvbmUuCiAgICAgaWYg
KCFyZXR1cm5Ob2RlKSB7CiAgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29u
c3RydWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9h
ZCgwLCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgQVNTRVJUKChjaGFyUG9zaXRpb24oKSAtICAx
KSA+PSAwKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZy
YW1lLCBsYXN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24oKSAtIDEpOworICAgICAg
ICBBU1NFUlQoKHN0YXJ0T2Zmc2V0KCkgLSAgMSkgPj0gbGluZVN0YXJ0T2Zmc2V0KCkpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5l
KCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCkgLSAxLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHIwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAkocmV2aXNpb24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIyLDkgKzQyMiwxMSBA
QCBzdGF0aWMgdm9pZCBhcHBlbmRTb3VyY2VUb0Vycm9yKENhbGxGcmFtCiAgICAgaW50IHN0YXJ0
T2Zmc2V0ID0gMDsKICAgICBpbnQgZW5kT2Zmc2V0ID0gMDsKICAgICBpbnQgZGl2b3RQb2ludCA9
IDA7CisgICAgdW5zaWduZWQgbGluZSA9IDA7CisgICAgdW5zaWduZWQgY29sdW1uID0gMDsKIAog
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKLSAgICBj
b2RlQmxvY2stPmV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0
LCBkaXZvdFBvaW50LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKKyAgICBjb2RlQmxvY2stPmV4
cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBkaXZvdFBvaW50
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBsaW5lLCBjb2x1bW4pOwogCiAgICAgaW50IGV4cHJl
c3Npb25TdGFydCA9IGRpdm90UG9pbnQgLSBzdGFydE9mZnNldDsKICAgICBpbnQgZXhwcmVzc2lv
blN0b3AgPSBkaXZvdFBvaW50ICsgZW5kT2Zmc2V0OwpAQCAtNTcyLDI1ICs1NzQsMjggQEAgc3Rh
dGljIFN0YWNrRnJhbWVDb2RlVHlwZSBnZXRTdGFja0ZyYW1lQwogICAgIHJldHVybiBTdGFja0Zy
YW1lR2xvYmFsQ29kZTsKIH0KIAotdW5zaWduZWQgU3RhY2tGcmFtZTo6bGluZSgpCit2b2lkIFN0
YWNrRnJhbWU6OmNvbXB1dGVMaW5lQW5kQ29sdW1uKHVuc2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYg
Y29sdW1uKQogewotICAgIHJldHVybiBjb2RlQmxvY2sgPyBjb2RlQmxvY2stPmxpbmVOdW1iZXJG
b3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkgKyBsaW5lT2Zmc2V0IDogMDsKLX0KKyAg
ICBpZiAoIWNvZGVCbG9jaykgeworICAgICAgICBsaW5lID0gMDsKKyAgICAgICAgY29sdW1uID0g
MDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotdW5zaWduZWQgU3RhY2tGcmFtZTo6Y29sdW1u
KCkKLXsKLSAgICBpZiAoIWNvZGUpCi0gICAgICAgIHJldHVybiAwOwogICAgIGludCBkaXZvdCA9
IDA7CiAgICAgaW50IHVudXNlZFN0YXJ0T2Zmc2V0ID0gMDsKICAgICBpbnQgdW51c2VkRW5kT2Zm
c2V0ID0gMDsKLSAgICBleHByZXNzaW9uSW5mbyhkaXZvdCwgdW51c2VkU3RhcnRPZmZzZXQsIHVu
dXNlZEVuZE9mZnNldCk7Ci0gICAgcmV0dXJuIGNvZGUtPmNoYXJQb3NpdGlvblRvQ29sdW1uTnVt
YmVyKGRpdm90KTsKKyAgICB1bnNpZ25lZCBkaXZvdExpbmUgPSAwOworICAgIHVuc2lnbmVkIGRp
dm90Q29sdW1uID0gMDsKKyAgICBleHByZXNzaW9uSW5mbyhkaXZvdCwgdW51c2VkU3RhcnRPZmZz
ZXQsIHVudXNlZEVuZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdENvbHVtbik7CisKKyAgICBsaW5l
ID0gZGl2b3RMaW5lICsgbGluZU9mZnNldDsKKyAgICBjb2x1bW4gPSBkaXZvdENvbHVtbiArIChk
aXZvdExpbmUgPyAxIDogZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KTsKIH0KIAotdm9pZCBTdGFja0Zy
YW1lOjpleHByZXNzaW9uSW5mbyhpbnQmIGRpdm90LCBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVu
ZE9mZnNldCkKK3ZvaWQgU3RhY2tGcmFtZTo6ZXhwcmVzc2lvbkluZm8oaW50JiBkaXZvdCwgaW50
JiBzdGFydE9mZnNldCwgaW50JiBlbmRPZmZzZXQsIHVuc2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYg
Y29sdW1uKQogewotICAgIGNvZGVCbG9jay0+ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVPZmZz
ZXQoYnl0ZWNvZGVPZmZzZXQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKKyAgICBj
b2RlQmxvY2stPmV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0
LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgbGluZSwgY29sdW1uKTsKICAgICBkaXZv
dCArPSBjaGFyYWN0ZXJPZmZzZXQ7CiB9CiAKQEAgLTYwNSwxMCArNjEwLDE0IEBAIFN0cmluZyBT
dGFja0ZyYW1lOjp0b1N0cmluZyhDYWxsRnJhbWUqIGMKICAgICAgICAgICAgIHRyYWNlQnVpbGQu
YXBwZW5kKCdAJyk7CiAgICAgICAgIHRyYWNlQnVpbGQuYXBwZW5kKHNvdXJjZVVSTCk7CiAgICAg
ICAgIGlmIChjb2RlVHlwZSAhPSBTdGFja0ZyYW1lTmF0aXZlQ29kZSkgeworICAgICAgICAgICAg
dW5zaWduZWQgbGluZTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNvbHVtbjsKKyAgICAgICAgICAg
IGNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVtbik7CisKICAgICAgICAgICAgIHRyYWNl
QnVpbGQuYXBwZW5kKCc6Jyk7Ci0gICAgICAgICAgICB0cmFjZUJ1aWxkLmFwcGVuZE51bWJlcihs
aW5lKCkpOworICAgICAgICAgICAgdHJhY2VCdWlsZC5hcHBlbmROdW1iZXIobGluZSk7CiAgICAg
ICAgICAgICB0cmFjZUJ1aWxkLmFwcGVuZCgnOicpOwotICAgICAgICAgICAgdHJhY2VCdWlsZC5h
cHBlbmROdW1iZXIoY29sdW1uKCkpOworICAgICAgICAgICAgdHJhY2VCdWlsZC5hcHBlbmROdW1i
ZXIoY29sdW1uKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdHJhY2VCdWlsZC50b1N0
cmluZygpLmltcGwoKTsKQEAgLTYzNiwxMyArNjQ1LDE1IEBAIHZvaWQgSW50ZXJwcmV0ZXI6Omdl
dFN0YWNrVHJhY2UoVk0qIHZtLCAKICAgICAgICAgICAgICAgICBTdHJvbmc8VW5saW5rZWRDb2Rl
QmxvY2s+KCp2bSwgY2FsbGVyQ29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpKSwKICAgICAg
ICAgICAgICAgICBjYWxsZXJDb2RlQmxvY2stPnNvdXJjZSgpLAogICAgICAgICAgICAgICAgIGNh
bGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmxpbmVObygpLAorICAgICAgICAgICAg
ICAgIGNhbGxlckNvZGVCbG9jay0+Zmlyc3RMaW5lQ29sdW1uT2Zmc2V0KCksCiAgICAgICAgICAg
ICAgICAgY2FsbGVyQ29kZUJsb2NrLT5zb3VyY2VPZmZzZXQoKSwKICAgICAgICAgICAgICAgICBi
eXRlY29kZU9mZnNldCwKICAgICAgICAgICAgICAgICBzb3VyY2VVUkwKICAgICAgICAgICAgIH07
CisKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHMpOwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgU3RhY2tGcmFtZSBzID0geyBTdHJvbmc8SlNPYmplY3Q+KCp2bSwgY2FsbEZyYW1l
LT5jYWxsZWUoKSksIFN0YWNrRnJhbWVOYXRpdmVDb2RlLCBTdHJvbmc8RXhlY3V0YWJsZUJhc2U+
KCksIFN0cm9uZzxVbmxpbmtlZENvZGVCbG9jaz4oKSwgMCwgMCwgMCwgMCwgU3RyaW5nKCl9Owor
ICAgICAgICAgICAgU3RhY2tGcmFtZSBzID0geyBTdHJvbmc8SlNPYmplY3Q+KCp2bSwgY2FsbEZy
YW1lLT5jYWxsZWUoKSksIFN0YWNrRnJhbWVOYXRpdmVDb2RlLCBTdHJvbmc8RXhlY3V0YWJsZUJh
c2U+KCksIFN0cm9uZzxVbmxpbmtlZENvZGVCbG9jaz4oKSwgMCwgMCwgMCwgMCwgMCwgU3RyaW5n
KCl9OwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocyk7CiAgICAgICAgIH0KICAgICAgICAg
Y2FsbEZyYW1lID0gZ2V0Q2FsbGVySW5mbyh2bSwgY2FsbEZyYW1lLCBieXRlY29kZU9mZnNldCwg
Y2FsbGVyQ29kZUJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxNTE5MjApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODIs
NiArODIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3Ryb25nPFVubGlua2VkQ29kZUJs
b2NrPiBjb2RlQmxvY2s7CiAgICAgICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gY29kZTsKICAg
ICAgICAgaW50IGxpbmVPZmZzZXQ7CisgICAgICAgIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9m
ZnNldDsKICAgICAgICAgdW5zaWduZWQgY2hhcmFjdGVyT2Zmc2V0OwogICAgICAgICB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldDsKICAgICAgICAgU3RyaW5nIHNvdXJjZVVSTDsKQEAgLTEyNSw5ICsx
MjYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1
cm4gdHJhY2VMaW5lLmlzTnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IHRyYWNlTGluZTsKICAgICAg
ICAgfQotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBsaW5lKCk7Ci0gICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGNvbHVtbigpOwotICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGV4cHJlc3Npb25JbmZvKGludCYgZGl2b3QsIGludCYgc3RhcnRPZmZzZXQs
IGludCYgZW5kT2Zmc2V0KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjb21wdXRl
TGluZUFuZENvbHVtbih1bnNpZ25lZCYgbGluZSwgdW5zaWduZWQmIGNvbHVtbik7CisKKyAgICBw
cml2YXRlOgorICAgICAgICB2b2lkIGV4cHJlc3Npb25JbmZvKGludCYgZGl2b3QsIGludCYgc3Rh
cnRPZmZzZXQsIGludCYgZW5kT2Zmc2V0LCB1bnNpZ25lZCYgbGluZSwgdW5zaWduZWQmIGNvbHVt
bik7CiAgICAgfTsKIAogICAgIGNsYXNzIFRvcENhbGxGcmFtZVNldHRlciB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAkocmV2aXNpb24gMTUxOTIwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDEyICszMywyMCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEFTVEJ1aWxk
ZXIgeworICAgIHN0cnVjdCBQb3NpdGlvbkluZm8geworICAgICAgICB1bnNpZ25lZCBzdGFydFBv
czsKKyAgICAgICAgdW5zaWduZWQgbGluZTsKKyAgICAgICAgdW5zaWduZWQgbGluZVN0YXJ0UG9z
OworICAgIH07CisKICAgICBzdHJ1Y3QgQmluYXJ5T3BJbmZvIHsKICAgICAgICAgQmluYXJ5T3BJ
bmZvKCkge30KLSAgICAgICAgQmluYXJ5T3BJbmZvKGludCBzLCBpbnQgZCwgaW50IGUsIGJvb2wg
cikKKyAgICAgICAgQmluYXJ5T3BJbmZvKGludCBzLCBpbnQgZCwgaW50IGUsIHVuc2lnbmVkIGRM
aW5lLCB1bnNpZ25lZCBkTGluZVN0YXJ0LCBib29sIHIpCiAgICAgICAgICAgICA6IHN0YXJ0KHMp
CiAgICAgICAgICAgICAsIGRpdm90KGQpCiAgICAgICAgICAgICAsIGVuZChlKQorICAgICAgICAg
ICAgLCBkaXZvdExpbmUoZExpbmUpCisgICAgICAgICAgICAsIGRpdm90TGluZVN0YXJ0KGRMaW5l
U3RhcnQpCiAgICAgICAgICAgICAsIGhhc0Fzc2lnbm1lbnQocikKICAgICAgICAgewogICAgICAg
ICB9CkBAIC00NiwyOSArNTQsMzkgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAgICAgICA6
IHN0YXJ0KGxocy5zdGFydCkKICAgICAgICAgICAgICwgZGl2b3QocmhzLnN0YXJ0KQogICAgICAg
ICAgICAgLCBlbmQocmhzLmVuZCkKKyAgICAgICAgICAgICwgZGl2b3RMaW5lKHJocy5kaXZvdExp
bmUpCisgICAgICAgICAgICAsIGRpdm90TGluZVN0YXJ0KHJocy5kaXZvdExpbmVTdGFydCkKICAg
ICAgICAgICAgICwgaGFzQXNzaWdubWVudChsaHMuaGFzQXNzaWdubWVudCB8fCByaHMuaGFzQXNz
aWdubWVudCkKICAgICAgICAgewogICAgICAgICB9CiAgICAgICAgIGludCBzdGFydDsKICAgICAg
ICAgaW50IGRpdm90OwogICAgICAgICBpbnQgZW5kOworICAgICAgICB1bnNpZ25lZCBkaXZvdExp
bmU7CisgICAgICAgIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0OwogICAgICAgICBib29sIGhhc0Fz
c2lnbm1lbnQ7CiAgICAgfTsKICAgICAKICAgICAKICAgICBzdHJ1Y3QgQXNzaWdubWVudEluZm8g
ewogICAgICAgICBBc3NpZ25tZW50SW5mbygpIHt9Ci0gICAgICAgIEFzc2lnbm1lbnRJbmZvKEV4
cHJlc3Npb25Ob2RlKiBub2RlLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGluaXRBc3NpZ25t
ZW50cywgT3BlcmF0b3Igb3ApCisgICAgICAgIEFzc2lnbm1lbnRJbmZvKEV4cHJlc3Npb25Ob2Rl
KiBub2RlLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIGRpdm90TGlu
ZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQsIGludCBpbml0QXNzaWdubWVudHMsIE9wZXJhdG9y
IG9wKQogICAgICAgICAgICAgOiBtX25vZGUobm9kZSkKICAgICAgICAgICAgICwgbV9zdGFydChz
dGFydCkKICAgICAgICAgICAgICwgbV9kaXZvdChkaXZvdCkKKyAgICAgICAgICAgICwgbV9kaXZv
dExpbmUoZGl2b3RMaW5lKQorICAgICAgICAgICAgLCBtX2Rpdm90TGluZVN0YXJ0KGRpdm90TGlu
ZVN0YXJ0KQogICAgICAgICAgICAgLCBtX2luaXRBc3NpZ25tZW50cyhpbml0QXNzaWdubWVudHMp
CiAgICAgICAgICAgICAsIG1fb3Aob3ApCiAgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCht
X2Rpdm90ID49IG1fZGl2b3RMaW5lU3RhcnQpOworICAgICAgICAgICAgQVNTRVJUKG1fc3RhcnQg
Pj0gbV9kaXZvdExpbmVTdGFydCk7CiAgICAgICAgIH0KICAgICAgICAgRXhwcmVzc2lvbk5vZGUq
IG1fbm9kZTsKLSAgICAgICAgaW50IG1fc3RhcnQ7Ci0gICAgICAgIGludCBtX2Rpdm90OworICAg
ICAgICB1bnNpZ25lZCBtX3N0YXJ0OworICAgICAgICB1bnNpZ25lZCBtX2Rpdm90OworICAgICAg
ICB1bnNpZ25lZCBtX2Rpdm90TGluZTsKKyAgICAgICAgdW5zaWduZWQgbV9kaXZvdExpbmVTdGFy
dDsKICAgICAgICAgaW50IG1faW5pdEFzc2lnbm1lbnRzOwogICAgICAgICBPcGVyYXRvciBtX29w
OwogICAgIH07CkBAIC0xMTMsNyArMTMxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBp
bnQgIERvbnRCdWlsZFN0cmluZ3MgPSAwOwogCiAgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaW5h
cnlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCB0b2tlbiwgc3RkOjpwYWlyPEV4cHJl
c3Npb25Ob2RlKiwgQmluYXJ5T3BJbmZvPiwgc3RkOjpwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmlu
YXJ5T3BJbmZvPik7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VGdW5jdGlvbkNhbGxOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBmdW5jLCBBcmd1bWVudHNOb2Rl
KiBhcmdzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7CisgICAgRXhwcmVzc2lvbk5v
ZGUqIG1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBmdW5jLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBpbnQgc3RhcnQsIHVuc2lnbmVkIGRp
dm90LCBpbnQgZW5kLCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0
KTsKIAogICAgIEpTQzo6U291cmNlRWxlbWVudHMqIGNyZWF0ZVNvdXJjZUVsZW1lbnRzKCkgeyBy
ZXR1cm4gbmV3IChtX3ZtKSBKU0M6OlNvdXJjZUVsZW1lbnRzKCk7IH0KIApAQCAtMTI2LDExICsx
NDQsMTEgQEAgcHVibGljOgogCiAgICAgQ29tbWFOb2RlKiBjcmVhdGVDb21tYUV4cHIoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhwcmVzc2lv
bk5vZGUqIHJocykgeyByZXR1cm4gbmV3IChtX3ZtKSBDb21tYU5vZGUobG9jYXRpb24sIGxocywg
cmhzKTsgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VBc3NpZ25Ob2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBPcGVyYXRvciwgRXhwcmVzc2lvbk5v
ZGUqIHJpZ2h0LCBib29sIGxlZnRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7Ci0gICAgRXhwcmVzc2lvbk5vZGUq
IG1ha2VQcmVmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwg
T3BlcmF0b3IsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKLSAgICBFeHByZXNzaW9u
Tm9kZSogbWFrZVBvc3RmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKiwgT3BlcmF0b3IsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKKyAgICBFeHBy
ZXNzaW9uTm9kZSogbWFrZUFzc2lnbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqIGxlZnQsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgbGVm
dEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50
IGRpdm90LCBpbnQgZW5kLCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0
YXJ0KTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZVByZWZpeE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgaW50IHN0YXJ0LCBpbnQgZGl2b3Qs
IGludCBlbmQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpOwor
ICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlUG9zdGZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBl
bmQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpOwogICAgIEV4
cHJlc3Npb25Ob2RlKiBtYWtlVHlwZU9mTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSopOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRGVsZXRlTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIGludCBzdGFydCwgaW50IGRpdm90LCBp
bnQgZW5kKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZURlbGV0ZU5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVu
ZCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCk7IAogICAgIEV4
cHJlc3Npb25Ob2RlKiBtYWtlTmVnYXRlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSopOwogICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0d2lzZU5vdE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKICAgICBFeHByZXNzaW9uTm9k
ZSogbWFrZU11bHROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBs
ZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CkBA
IC0xNjMsMTEgKzE4MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHVzZXNUaGlzKCk7CiAgICAgICAg
IHJldHVybiBuZXcgKG1fdm0pIFRoaXNOb2RlKGxvY2F0aW9uKTsKICAgICB9Ci0gICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZVJlc29sdmUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
Y29uc3QgSWRlbnRpZmllciogaWRlbnQsIGludCBzdGFydCkKKyAgICBFeHByZXNzaW9uTm9kZSog
Y3JlYXRlUmVzb2x2ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVu
dGlmaWVyKiBpZGVudCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWdu
ZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAgewogICAgICAgICBpZiAobV92bS0+cHJvcGVydHlOYW1l
cy0+YXJndW1lbnRzID09ICppZGVudCkKICAgICAgICAgICAgIHVzZXNBcmd1bWVudHMoKTsKLSAg
ICAgICAgcmV0dXJuIG5ldyAobV92bSkgUmVzb2x2ZU5vZGUobG9jYXRpb24sICppZGVudCwgc3Rh
cnQpOworICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBSZXNvbHZlTm9kZShsb2NhdGlvbiwgKmlk
ZW50LCBzdGFydCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7CiAgICAgfQogICAgIEV4cHJl
c3Npb25Ob2RlKiBjcmVhdGVPYmplY3RMaXRlcmFsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24pIHsgcmV0dXJuIG5ldyAobV92bSkgT2JqZWN0TGl0ZXJhbE5vZGUobG9jYXRpb24pOyB9
CiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU9iamVjdExpdGVyYWwoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlMaXN0Tm9kZSogcHJvcGVydGllcykgeyByZXR1cm4g
bmV3IChtX3ZtKSBPYmplY3RMaXRlcmFsTm9kZShsb2NhdGlvbiwgcHJvcGVydGllcyk7IH0KQEAg
LTIxMCw0MSArMjI4LDQxIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5ldyAobV92bSkgTnVs
bE5vZGUobG9jYXRpb24pOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVCcmFj
a2V0QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBFeHByZXNzaW9uTm9kZSogcHJvcGVydHksIGJvb2wgcHJvcGVydHlIYXNBc3NpZ25t
ZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCisgICAgRXhwcmVzc2lvbk5vZGUq
IGNyZWF0ZUJyYWNrZXRBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eSwgYm9vbCBwcm9wZXJ0
eUhhc0Fzc2lnbm1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCwgdW5zaWduZWQg
ZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICB7CiAgICAgICAgIEJyYWNr
ZXRBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fdm0pIEJyYWNrZXRBY2Nlc3Nvck5vZGUobG9j
YXRpb24sIGJhc2UsIHByb3BlcnR5LCBwcm9wZXJ0eUhhc0Fzc2lnbm1lbnRzKTsKLSAgICAgICAg
c2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOworICAgICAgICBz
ZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCwgZGl2b3RMaW5lLCBk
aXZvdExpbmVTdGFydCk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJl
c3Npb25Ob2RlKiBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5LCBpbnQg
c3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRG90
QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eSwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGlu
dCBlbmQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAg
ewogICAgICAgICBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fdm0pIERvdEFjY2Vzc29y
Tm9kZShsb2NhdGlvbiwgYmFzZSwgKnByb3BlcnR5KTsKLSAgICAgICAgc2V0RXhjZXB0aW9uTG9j
YXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOworICAgICAgICBzZXRFeGNlcHRpb25Mb2Nh
dGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7
CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVh
dGVSZWdFeHAoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmll
ciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MsIGludCBzdGFydCkKKyAgICBFeHBy
ZXNzaW9uTm9kZSogY3JlYXRlUmVnRXhwKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzLCBpbnQg
c3RhcnQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAg
ewogICAgICAgICBpZiAoWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi5zdHJpbmcoKSkpCiAgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgUmVnRXhwTm9kZSogbm9kZSA9IG5ldyAobV92bSkg
UmVnRXhwTm9kZShsb2NhdGlvbiwgcGF0dGVybiwgZmxhZ3MpOwogICAgICAgICBpbnQgc2l6ZSA9
IHBhdHRlcm4ubGVuZ3RoKCkgKyAyOyAvLyArIDIgZm9yIHRoZSB0d28gLydzCi0gICAgICAgIHNl
dEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBzdGFydCArIHNpemUsIHN0YXJ0ICsgc2l6
ZSk7CisgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBzdGFydCArIHNp
emUsIHN0YXJ0ICsgc2l6ZSwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7CiAgICAgICAgIHJl
dHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOZXdFeHByKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1
bWVudHNOb2RlKiBhcmd1bWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQorICAg
IEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmd1bWVudHMsIGlu
dCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kLCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVk
IGRpdm90TGluZVN0YXJ0KQogICAgIHsKICAgICAgICAgTmV3RXhwck5vZGUqIG5vZGUgPSBuZXcg
KG1fdm0pIE5ld0V4cHJOb2RlKGxvY2F0aW9uLCBleHByLCBhcmd1bWVudHMpOwotICAgICAgICBz
ZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CisgICAgICAgIHNl
dEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kLCBkaXZvdExpbmUsIGRp
dm90TGluZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGVuZCkKKyAgICBFeHByZXNzaW9u
Tm9kZSogY3JlYXRlTmV3RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBkaXZvdExpbmUs
IHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogICAgIHsKICAgICAgICAgTmV3RXhwck5vZGUqIG5v
ZGUgPSBuZXcgKG1fdm0pIE5ld0V4cHJOb2RlKGxvY2F0aW9uLCBleHByKTsKLSAgICAgICAgc2V0
RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGVuZCwgZW5kKTsKKyAgICAgICAgc2V0RXhj
ZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGVuZCwgZW5kLCBkaXZvdExpbmUsIGRpdm90TGlu
ZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCkBAIC0yNTMsMjUgKzI3MSwy
NSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBuZXcgKG1fdm0pIENvbmRpdGlvbmFsTm9kZShs
b2NhdGlvbiwgY29uZGl0aW9uLCBsaHMsIHJocyk7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5v
ZGUqIGNyZWF0ZUFzc2lnblJlc29sdmUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaHMsIGludCBzdGFydCwg
aW50IGRpdm90LCBpbnQgZW5kKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBc3NpZ25SZXNv
bHZlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBFeHByZXNzaW9uTm9kZSogcmhzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCwg
dW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICB7CiAgICAg
ICAgIGlmIChyaHMtPmlzRnVuY0V4cHJOb2RlKCkpCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxG
dW5jRXhwck5vZGUqPihyaHMpLT5ib2R5KCktPnNldEluZmVycmVkTmFtZShpZGVudCk7CiAgICAg
ICAgIEFzc2lnblJlc29sdmVOb2RlKiBub2RlID0gbmV3IChtX3ZtKSBBc3NpZ25SZXNvbHZlTm9k
ZShsb2NhdGlvbiwgaWRlbnQsIHJocyk7Ci0gICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5v
ZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKKyAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9k
ZSwgc3RhcnQsIGRpdm90LCBlbmQsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogICAgICAg
ICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRnVuY3Rp
b25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIq
IG5hbWUsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcnMs
IGludCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwg
aW50IGJvZHlFbmRMaW5lKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVGdW5jdGlvbkV4cHIo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogbmFtZSwg
RnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVycywgdW5zaWdu
ZWQgb3BlbkJyYWNlT2Zmc2V0LCB1bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0LCBpbnQgYm9keVN0
YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbikKICAgICB7Ci0g
ICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBGdW5jRXhwck5vZGUobG9j
YXRpb24sICpuYW1lLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNl
UG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSwgcGFyYW1ldGVycyk7Ci0gICAgICAg
IGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSwgbG9jYXRpb24uY2hhclBv
c2l0aW9uKTsKKyAgICAgICAgRnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fdm0pIEZ1bmNF
eHByTm9kZShsb2NhdGlvbiwgKm5hbWUsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lv
bihvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZzZXQsIGJvZHlTdGFydExpbmUsIHN0YXJ0
Q29sdW1uKSwgcGFyYW1ldGVycyk7CisgICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5l
LCBib2R5RW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9m
ZnNldCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgRnVuY3Rpb25Cb2R5
Tm9kZSogY3JlYXRlRnVuY3Rpb25Cb2R5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2Nh
dGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgYm9vbCBpblN0cmljdENv
bnRleHQpCisgICAgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlRnVuY3Rpb25Cb2R5KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRM
b2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIGJvb2wgaW5TdHJpY3RDb250ZXh0KQogICAg
IHsKLSAgICAgICAgcmV0dXJuIEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShtX3ZtLCBzdGFydExv
Y2F0aW9uLCBlbmRMb2NhdGlvbiwgaW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIEZ1
bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShtX3ZtLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwg
c3RhcnRDb2x1bW4sIGluU3RyaWN0Q29udGV4dCk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRGdW5j
dGlvblN0YXJ0KEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGludCBmdW5jdGlvblN0YXJ0KQpAQCAt
Mjc5LDE4ICsyOTcsMTggQEAgcHVibGljOgogICAgICAgICBib2R5LT5zZXRGdW5jdGlvblN0YXJ0
KGZ1bmN0aW9uU3RhcnQpOwogICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVy
dHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBjb25zdCBJZGVudGlmaWVyKiBu
YW1lLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGludCBv
cGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJv
ZHlFbmRMaW5lKQorICAgIHRlbXBsYXRlIDxib29sPiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRl
ck9yU2V0dGVyUHJvcGVydHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVy
dHlOb2RlOjpUeXBlIHR5cGUsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIFBhcmFtZXRlck5vZGUq
IHBhcmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgdW5zaWduZWQgb3BlbkJyYWNlT2Zmc2V0
LCB1bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0LCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlF
bmRMaW5lLCB1bnNpZ25lZCBib2R5U3RhcnRDb2x1bW4pCiAgICAgewogICAgICAgICBBU1NFUlQo
bmFtZSk7Ci0gICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSwg
bG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExp
bmUsIGJvZHlFbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0
T2Zmc2V0KTsKICAgICAgICAgYm9keS0+c2V0SW5mZXJyZWROYW1lKCpuYW1lKTsKLSAgICAgICAg
cmV0dXJuIG5ldyAobV92bSkgUHJvcGVydHlOb2RlKG1fdm0sICpuYW1lLCBuZXcgKG1fdm0pIEZ1
bmNFeHByTm9kZShsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIs
IGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJh
Y2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJhbXMpLCB0eXBlKTsKKyAgICAgICAgcmV0dXJuIG5l
dyAobV92bSkgUHJvcGVydHlOb2RlKG1fdm0sICpuYW1lLCBuZXcgKG1fdm0pIEZ1bmNFeHByTm9k
ZShsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGJvZHksIG1f
c291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZz
ZXQsIGJvZHlTdGFydExpbmUsIGJvZHlTdGFydENvbHVtbiksIHBhcmFtcyksIHR5cGUpOwogICAg
IH0KICAgICAKLSAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJP
clNldHRlclByb3BlcnR5KFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJv
cGVydHlOb2RlOjpUeXBlIHR5cGUsIGRvdWJsZSBuYW1lLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMs
IEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGludCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNl
UG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lKQorICAgIHRlbXBsYXRlIDxi
b29sPiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoVk0qLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgZG91
YmxlIG5hbWUsIFBhcmFtZXRlck5vZGUqIHBhcmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwg
dW5zaWduZWQgb3BlbkJyYWNlT2Zmc2V0LCB1bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0LCBpbnQg
Ym9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lLCB1bnNpZ25lZCBib2R5U3RhcnRDb2x1bW4p
CiAgICAgewotICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUs
IGxvY2F0aW9uLmNoYXJQb3NpdGlvbik7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fdm0pIFByb3Bl
cnR5Tm9kZShtX3ZtLCBuYW1lLCBuZXcgKG1fdm0pIEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgbV92
bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGJvZHksIG1fc291cmNlQ29kZS0+c3Vi
RXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpLCBw
YXJhbXMpLCB0eXBlKTsKKyAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlF
bmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsK
KyAgICAgICAgcmV0dXJuIG5ldyAobV92bSkgUHJvcGVydHlOb2RlKG1fdm0sIG5hbWUsIG5ldyAo
bV92bSkgRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRl
bnRpZmllciwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZU9mZnNl
dCwgY2xvc2VCcmFjZU9mZnNldCwgYm9keVN0YXJ0TGluZSwgYm9keVN0YXJ0Q29sdW1uKSwgcGFy
YW1zKSwgdHlwZSk7CiAgICAgfQogCiAgICAgQXJndW1lbnRzTm9kZSogY3JlYXRlQXJndW1lbnRz
KCkgeyByZXR1cm4gbmV3IChtX3ZtKSBBcmd1bWVudHNOb2RlKCk7IH0KQEAgLTMyMCw1NyArMzM4
LDU3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VXNlc0FyZ3VtZW50cyhGdW5jdGlvbkJvZHlO
b2RlKiBub2RlKSB7IG5vZGUtPnNldFVzZXNBcmd1bWVudHMoKTsgfQogCi0gICAgU3RhdGVtZW50
Tm9kZSogY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgUGFy
YW1ldGVyTm9kZSogcGFyYW1ldGVycywgaW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3NlQnJhY2VQ
b3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9k
ZSogY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgUGFyYW1l
dGVyTm9kZSogcGFyYW1ldGVycywgdW5zaWduZWQgb3BlbkJyYWNlT2Zmc2V0LCB1bnNpZ25lZCBj
bG9zZUJyYWNlT2Zmc2V0LCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lLCB1bnNp
Z25lZCBib2R5U3RhcnRDb2x1bW4pCiAgICAgewotICAgICAgICBGdW5jRGVjbE5vZGUqIGRlY2wg
PSBuZXcgKG1fdm0pIEZ1bmNEZWNsTm9kZShsb2NhdGlvbiwgKm5hbWUsIGJvZHksIG1fc291cmNl
Q29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFy
dExpbmUpLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgRnVuY0RlY2xOb2RlKiBkZWNsID0gbmV3ICht
X3ZtKSBGdW5jRGVjbE5vZGUobG9jYXRpb24sICpuYW1lLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1
YkV4cHJlc3Npb24ob3BlbkJyYWNlT2Zmc2V0LCBjbG9zZUJyYWNlT2Zmc2V0LCBib2R5U3RhcnRM
aW5lLCBib2R5U3RhcnRDb2x1bW4pLCBwYXJhbWV0ZXJzKTsKICAgICAgICAgaWYgKCpuYW1lID09
IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cykKICAgICAgICAgICAgIHVzZXNBcmd1bWVu
dHMoKTsKICAgICAgICAgbV9zY29wZS5tX2Z1bmNEZWNsYXJhdGlvbnMtPmRhdGEuYXBwZW5kKGRl
Y2wtPmJvZHkoKSk7Ci0gICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5k
TGluZSwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlT
dGFydExpbmUsIGJvZHlFbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGlu
ZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIGRlY2w7CiAgICAgfQogCiAgICAgU3RhdGVt
ZW50Tm9kZSogY3JlYXRlQmxvY2tTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgSlNDOjpTb3VyY2VFbGVtZW50cyogZWxlbWVudHMsIGludCBzdGFydExpbmUsIGludCBl
bmRMaW5lKQogICAgIHsKICAgICAgICAgQmxvY2tOb2RlKiBibG9jayA9IG5ldyAobV92bSkgQmxv
Y2tOb2RlKGxvY2F0aW9uLCBlbGVtZW50cyk7Ci0gICAgICAgIGJsb2NrLT5zZXRMb2Moc3RhcnRM
aW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jaGFyUG9zaXRpb24pOworICAgICAgICBibG9jay0+c2V0
TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxp
bmVTdGFydE9mZnNldCk7CiAgICAgICAgIHJldHVybiBibG9jazsKICAgICB9CiAKICAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVFeHByU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBlbmQpCiAgICAgewog
ICAgICAgICBFeHByU3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBFeHByU3RhdGVt
ZW50Tm9kZShsb2NhdGlvbiwgZXhwcik7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBl
bmQsIGxvY2F0aW9uLmNoYXJQb3NpdGlvbik7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0
LCBlbmQsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0
ZUlmU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIHRydWVCbG9jaywgU3RhdGVtZW50Tm9kZSog
ZmFsc2VCbG9jaywgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKICAgICAgICAgSWZFbHNlTm9k
ZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBJZkVsc2VOb2RlKGxvY2F0aW9uLCBjb25kaXRpb24sIHRy
dWVCbG9jaywgZmFsc2VCbG9jayk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQs
IGxvY2F0aW9uLmNoYXJQb3NpdGlvbik7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBl
bmQsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZv
ckxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGlu
aXRpYWxpemVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBFeHByZXNzaW9uTm9kZSogaXRl
ciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsK
ICAgICAgICAgRm9yTm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBGb3JOb2RlKGxvY2F0aW9uLCBp
bml0aWFsaXplciwgY29uZGl0aW9uLCBpdGVyLCBzdGF0ZW1lbnRzKTsKLSAgICAgICAgcmVzdWx0
LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgcmVz
dWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxp
bmVTdGFydE9mZnNldCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3Rh
dGVtZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIs
IEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBpbnQgc3Rh
cnQsIGludCBkaXZvdCwgaW50IGVuZCwgaW50IGluaXRTdGFydCwgaW50IGluaXRFbmQsIGludCBz
dGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9v
cChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCwgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVyLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3Rh
dGVtZW50Tm9kZSogc3RhdGVtZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQsIGlu
dCBpbml0U3RhcnQsIGludCBpbml0RW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSwgdW5z
aWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICB7Ci0gICAgICAg
IEZvckluTm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBGb3JJbk5vZGUobV92bSwgbG9jYXRpb24s
ICppZGVudCwgaW5pdGlhbGl6ZXIsIGl0ZXIsIHN0YXRlbWVudHMsIGluaXRTdGFydCwgaW5pdFN0
YXJ0IC0gc3RhcnQsIGluaXRFbmQgLSBpbml0U3RhcnQpOwotICAgICAgICByZXN1bHQtPnNldExv
YyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNoYXJQb3NpdGlvbik7Ci0gICAgICAgIHNl
dEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgc3RhcnQsIGRpdm90ICsgMSwgZW5kKTsKKyAgICAg
ICAgRm9ySW5Ob2RlKiByZXN1bHQgPSBuZXcgKG1fdm0pIEZvckluTm9kZShtX3ZtLCBsb2NhdGlv
biwgKmlkZW50LCBpbml0aWFsaXplciwgaXRlciwgc3RhdGVtZW50cywgaW5pdFN0YXJ0LCBpbml0
U3RhcnQgLSBzdGFydCwgaW5pdEVuZCAtIGluaXRTdGFydCwgZGl2b3RMaW5lLCBkaXZvdExpbmVT
dGFydCk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRp
b24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CisgICAgICAgIHNldEV4
Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgc3RhcnQsIGRpdm90ICsgMSwgZW5kLCBkaXZvdExpbmUs
IGRpdm90TGluZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBT
dGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JJbkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVu
dE5vZGUqIHN0YXRlbWVudHMsIGludCBlU3RhcnQsIGludCBlRGl2b3QsIGludCBlRW5kLCBpbnQg
c3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29wKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Np
b25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBpbnQgZVN0YXJ0LCBpbnQg
ZURpdm90LCBpbnQgZUVuZCwgaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBkaXZvdExpbmUs
IHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogICAgIHsKICAgICAgICAgRm9ySW5Ob2RlKiByZXN1
bHQgPSBuZXcgKG1fdm0pIEZvckluTm9kZShsb2NhdGlvbiwgbGhzLCBpdGVyLCBzdGF0ZW1lbnRz
KTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uY2hhclBvc2l0
aW9uKTsKLSAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVEaXZv
dCwgZUVuZCk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQsIGxvY2F0aW9uLnN0
YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOworICAgICAgICBzZXRFeGNlcHRp
b25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZURpdm90LCBlRW5kLCBkaXZvdExpbmUsIGRpdm90
TGluZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTM4Myw0NyAr
NDAxLDQ3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyAobV92bSkgRW1wdHlT
dGF0ZW1lbnROb2RlKGxvY2F0aW9uKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0
ID0gbmV3IChtX3ZtKSBWYXJTdGF0ZW1lbnROb2RlKGxvY2F0aW9uLCBleHByKTsKLSAgICAgICAg
cmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAg
ICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0
aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0g
ICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlUmV0dXJuU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByZXNzaW9uLCBpbnQgZVN0YXJ0LCBp
bnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSog
Y3JlYXRlUmV0dXJuU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4
cHJlc3Npb25Ob2RlKiBleHByZXNzaW9uLCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0
TGluZSwgaW50IGVuZExpbmUsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5l
U3RhcnQpCiAgICAgewogICAgICAgICBSZXR1cm5Ob2RlKiByZXN1bHQgPSBuZXcgKG1fdm0pIFJl
dHVybk5vZGUobG9jYXRpb24sIGV4cHJlc3Npb24pOwotICAgICAgICBzZXRFeGNlcHRpb25Mb2Nh
dGlvbihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9j
KHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgc2V0
RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVFbmQsIGVFbmQsIGRpdm90TGluZSwg
ZGl2b3RMaW5lU3RhcnQpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExp
bmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUJy
ZWFrU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGludCBlU3RhcnQs
IGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2Rl
KiBjcmVhdGVCcmVha1N0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBp
bnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUsIHVuc2lnbmVk
IGVuZExpbmVTdGFydCkKICAgICB7CiAgICAgICAgIEJyZWFrTm9kZSogcmVzdWx0ID0gbmV3ICht
X3ZtKSBCcmVha05vZGUobV92bSwgbG9jYXRpb24pOwotICAgICAgICBzZXRFeGNlcHRpb25Mb2Nh
dGlvbihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9j
KHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgc2V0
RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVFbmQsIGVFbmQsIGVuZExpbmUsIGVu
ZExpbmVTdGFydCk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwg
bG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQnJlYWtT
dGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmll
ciogaWRlbnQsIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGlu
ZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVCcmVha1N0YXRlbWVudChjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgaW50IGVTdGFydCwg
aW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lLCB1bnNpZ25lZCBlbmRMaW5lU3Rh
cnQpCiAgICAgewogICAgICAgICBCcmVha05vZGUqIHJlc3VsdCA9IG5ldyAobV92bSkgQnJlYWtO
b2RlKGxvY2F0aW9uLCAqaWRlbnQpOwotICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1
bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGlu
ZSwgZW5kTGluZSwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgc2V0RXhjZXB0aW9u
TG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVFbmQsIGVFbmQsIGVuZExpbmUsIGVuZExpbmVTdGFy
dCk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24u
c3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQ29udGludWVTdGF0ZW1l
bnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50IGVTdGFydCwgaW50IGVFbmQs
IGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUNv
bnRpbnVlU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGludCBlU3Rh
cnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSwgdW5zaWduZWQgZW5kTGlu
ZVN0YXJ0KQogICAgIHsKICAgICAgICAgQ29udGludWVOb2RlKiByZXN1bHQgPSBuZXcgKG1fdm0p
IENvbnRpbnVlTm9kZShtX3ZtLCBsb2NhdGlvbik7Ci0gICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0
aW9uKHJlc3VsdCwgZVN0YXJ0LCBlRW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Mo
c3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jaGFyUG9zaXRpb24pOworICAgICAgICBzZXRF
eGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCwgZW5kTGluZSwgZW5k
TGluZVN0YXJ0KTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBs
b2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVDb250aW51
ZVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlm
aWVyKiBpZGVudCwgaW50IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRM
aW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBpbnQgZVN0
YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUsIHVuc2lnbmVkIGVuZExp
bmVTdGFydCkKICAgICB7CiAgICAgICAgIENvbnRpbnVlTm9kZSogcmVzdWx0ID0gbmV3IChtX3Zt
KSBDb250aW51ZU5vZGUobG9jYXRpb24sICppZGVudCk7Ci0gICAgICAgIHNldEV4Y2VwdGlvbkxv
Y2F0aW9uKHJlc3VsdCwgZVN0YXJ0LCBlRW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0LT5zZXRM
b2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jaGFyUG9zaXRpb24pOworICAgICAgICBz
ZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCwgZW5kTGluZSwg
ZW5kTGluZVN0YXJ0KTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5l
LCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTQzMiw3ICs0NTAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFRyeU5vZGUqIHJlc3VsdCA9IG5ldyAobV92bSkgVHJ5Tm9kZShsb2NhdGlvbiwgdHJ5
QmxvY2ssICppZGVudCwgY2F0Y2hCbG9jaywgZmluYWxseUJsb2NrKTsKICAgICAgICAgaWYgKGNh
dGNoQmxvY2spCiAgICAgICAgICAgICB1c2VzQ2F0Y2goKTsKLSAgICAgICAgcmVzdWx0LT5zZXRM
b2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jaGFyUG9zaXRpb24pOworICAgICAgICBy
ZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBs
b2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IApAQCAtNDQwLDU4ICs0NTgsNTggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQ2FzZUJsb2Nr
Tm9kZSogY2FzZXMgPSBuZXcgKG1fdm0pIENhc2VCbG9ja05vZGUoZmlyc3RDbGF1c2VzLCBkZWZh
dWx0Q2xhdXNlLCBzZWNvbmRDbGF1c2VzKTsKICAgICAgICAgU3dpdGNoTm9kZSogcmVzdWx0ID0g
bmV3IChtX3ZtKSBTd2l0Y2hOb2RlKGxvY2F0aW9uLCBleHByLCBjYXNlcyk7Ci0gICAgICAgIHJl
c3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsK
KyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5zdGFy
dE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAKICAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVXaGlsZVN0YXRlbWVudChjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVt
ZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7CiAg
ICAgICAgIFdoaWxlTm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBXaGlsZU5vZGUobG9jYXRpb24s
IGV4cHIsIHN0YXRlbWVudCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5k
TGluZSwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3Rh
cnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0
T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBTdGF0ZW1lbnRO
b2RlKiBjcmVhdGVEb1doaWxlU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBz
dGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKICAgICAgICAgRG9XaGlsZU5vZGUqIHJlc3Vs
dCA9IG5ldyAobV92bSkgRG9XaGlsZU5vZGUobG9jYXRpb24sIHN0YXRlbWVudCwgZXhwcik7Ci0g
ICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY2hhclBv
c2l0aW9uKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2Nh
dGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVMYWJlbFN0YXRl
bWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBp
ZGVudCwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAg
U3RhdGVtZW50Tm9kZSogY3JlYXRlTGFiZWxTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIFN0YXRlbWVudE5vZGUqIHN0YXRl
bWVudCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1
bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICB7CiAgICAgICAgIExhYmVsTm9kZSogcmVzdWx0
ID0gbmV3IChtX3ZtKSBMYWJlbE5vZGUobG9jYXRpb24sICppZGVudCwgc3RhdGVtZW50KTsKLSAg
ICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBzdGFydCwgZW5kLCBlbmQpOworICAg
ICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIHN0YXJ0LCBlbmQsIGVuZCwgZGl2b3RM
aW5lLCBkaXZvdExpbmVTdGFydCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0g
ICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlV2l0aFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVt
ZW50LCBpbnQgc3RhcnQsIGludCBlbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAg
IFN0YXRlbWVudE5vZGUqIGNyZWF0ZVdpdGhTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVu
dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwgdW5zaWduZWQgc3RhcnRMaW5lLCB1bnNp
Z25lZCBlbmRMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0
KQogICAgIHsKICAgICAgICAgdXNlc1dpdGgoKTsKLSAgICAgICAgV2l0aE5vZGUqIHJlc3VsdCA9
IG5ldyAobV92bSkgV2l0aE5vZGUobG9jYXRpb24sIGV4cHIsIHN0YXRlbWVudCwgZW5kLCBlbmQg
LSBzdGFydCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9j
YXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgV2l0aE5vZGUqIHJlc3VsdCA9IG5ldyAobV92
bSkgV2l0aE5vZGUobG9jYXRpb24sIGV4cHIsIHN0YXRlbWVudCwgZW5kLCBkaXZvdExpbmUsIGRp
dm90TGluZVN0YXJ0LCBlbmQgLSBzdGFydCk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0
TGluZSwgZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9m
ZnNldCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfSAgICAKICAgICAKLSAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVUaHJvd1N0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgc3Rh
cnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVUaHJvd1N0YXRl
bWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhw
ciwgaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSwgdW5zaWdu
ZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICB7CiAgICAgICAgIFRo
cm93Tm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBUaHJvd05vZGUobG9jYXRpb24sIGV4cHIpOwot
ICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNoYXJQ
b3NpdGlvbik7Ci0gICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgc3RhcnQsIGVu
ZCwgZW5kKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2Nh
dGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgc2V0
RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBzdGFydCwgZW5kLCBlbmQsIGRpdm90TGluZSwgZGl2
b3RMaW5lU3RhcnQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKICAgICBT
dGF0ZW1lbnROb2RlKiBjcmVhdGVEZWJ1Z2dlcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7CiAgICAgICAgIERlYnVnZ2Vy
U3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBEZWJ1Z2dlclN0YXRlbWVudE5vZGUo
bG9jYXRpb24pOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxv
Y2F0aW9uLmNoYXJQb3NpdGlvbik7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwg
ZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAogICAgIFN0YXRlbWVudE5vZGUq
IGNyZWF0ZUNvbnN0U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIENv
bnN0RGVjbE5vZGUqIGRlY2xzLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7CiAg
ICAgICAgIENvbnN0U3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBDb25zdFN0YXRl
bWVudE5vZGUobG9jYXRpb24sIGRlY2xzKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRM
aW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jaGFyUG9zaXRpb24pOworICAgICAgICByZXN1bHQtPnNl
dExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5s
aW5lU3RhcnRPZmZzZXQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtNTI4
LDEwICs1NDYsMTAgQEAgcHVibGljOgogCiAgICAgaW50IGV2YWxDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fZXZhbENvdW50OyB9CiAKLSAgICB2b2lkIGFwcGVuZEJpbmFyeUV4cHJlc3Npb25JbmZv
KGludCYgb3BlcmFuZFN0YWNrRGVwdGgsIEV4cHJlc3Npb25Ob2RlKiBjdXJyZW50LCBpbnQgZXhw
clN0YXJ0LCBpbnQgbGhzLCBpbnQgcmhzLCBib29sIGhhc0Fzc2lnbm1lbnRzKQorICAgIHZvaWQg
YXBwZW5kQmluYXJ5RXhwcmVzc2lvbkluZm8oaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgRXhwcmVz
c2lvbk5vZGUqIGN1cnJlbnQsIGludCBleHByU3RhcnQsIGludCBsaHMsIGludCByaHMsIHVuc2ln
bmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQsIGJvb2wgaGFzQXNzaWdubWVu
dHMpCiAgICAgewogICAgICAgICBvcGVyYW5kU3RhY2tEZXB0aCsrOwotICAgICAgICBtX2JpbmFy
eU9wZXJhbmRTdGFjay5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY3VycmVudCwgQmluYXJ5T3BJbmZv
KGV4cHJTdGFydCwgbGhzLCByaHMsIGhhc0Fzc2lnbm1lbnRzKSkpOworICAgICAgICBtX2JpbmFy
eU9wZXJhbmRTdGFjay5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY3VycmVudCwgQmluYXJ5T3BJbmZv
KGV4cHJTdGFydCwgbGhzLCByaHMsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQsIGhhc0Fzc2ln
bm1lbnRzKSkpOwogICAgIH0KIAogICAgIC8vIExvZ2ljIHRvIGhhbmRsZSBkYXRhc3RydWN0dXJl
cyB1c2VkIGR1cmluZyBwYXJzaW5nIG9mIGJpbmFyeSBleHByZXNzaW9ucwpAQCAtNTY4LDEwICs1
ODYsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAg
ICB2b2lkIGFwcGVuZFVuYXJ5VG9rZW4oaW50JiB0b2tlblN0YWNrRGVwdGgsIGludCB0eXBlLCBp
bnQgc3RhcnQpCisgICAgdm9pZCBhcHBlbmRVbmFyeVRva2VuKGludCYgdG9rZW5TdGFja0RlcHRo
LCBpbnQgdHlwZSwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQg
ZGl2b3RMaW5lU3RhcnQpCiAgICAgewogICAgICAgICB0b2tlblN0YWNrRGVwdGgrKzsKLSAgICAg
ICAgbV91bmFyeVRva2VuU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHR5cGUsIHN0YXJ0KSk7
CisgICAgICAgIFBvc2l0aW9uSW5mbyBwb3NpdGlvbiA9IHsgc3RhcnQsIGRpdm90TGluZSwgZGl2
b3RMaW5lU3RhcnQgfTsKKyAgICAgICAgbV91bmFyeVRva2VuU3RhY2suYXBwZW5kKHN0ZDo6bWFr
ZV9wYWlyKHR5cGUsIHBvc2l0aW9uKSk7CiAgICAgfQogCiAgICAgaW50IHVuYXJ5VG9rZW5TdGFj
a0xhc3RUeXBlKGludCYpCkBAIC01NzksMjYgKzU5OCwzNCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBtX3VuYXJ5VG9rZW5TdGFjay5sYXN0KCkuZmlyc3Q7CiAgICAgfQogICAgIAotICAgIGlu
dCB1bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQoaW50JikKKyAgICB1bnNpZ25lZCB1bmFyeVRva2Vu
U3RhY2tMYXN0U3RhcnQoaW50JikKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3VuYXJ5VG9rZW5T
dGFjay5sYXN0KCkuc2Vjb25kOworICAgICAgICByZXR1cm4gbV91bmFyeVRva2VuU3RhY2subGFz
dCgpLnNlY29uZC5zdGFydFBvczsKICAgICB9CiAgICAgCisgICAgdW5zaWduZWQgdW5hcnlUb2tl
blN0YWNrTGFzdExpbmVTdGFydFBvc2l0aW9uKGludCYpCisgICAgeworICAgICAgICByZXR1cm4g
bV91bmFyeVRva2VuU3RhY2subGFzdCgpLnNlY29uZC5saW5lU3RhcnRQb3M7CisgICAgfQorCiAg
ICAgdm9pZCB1bmFyeVRva2VuU3RhY2tSZW1vdmVMYXN0KGludCYgdG9rZW5TdGFja0RlcHRoKQog
ICAgIHsKICAgICAgICAgdG9rZW5TdGFja0RlcHRoLS07CiAgICAgICAgIG1fdW5hcnlUb2tlblN0
YWNrLnJlbW92ZUxhc3QoKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBhc3NpZ25tZW50U3RhY2tB
cHBlbmQoaW50JiBhc3NpZ25tZW50U3RhY2tEZXB0aCwgRXhwcmVzc2lvbk5vZGUqIG5vZGUsIGlu
dCBzdGFydCwgaW50IGRpdm90LCBpbnQgYXNzaWdubWVudENvdW50LCBPcGVyYXRvciBvcCkKKyAg
ICB2b2lkIGFzc2lnbm1lbnRTdGFja0FwcGVuZChpbnQmIGFzc2lnbm1lbnRTdGFja0RlcHRoLCBF
eHByZXNzaW9uTm9kZSogbm9kZSwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0LCBpbnQgYXNzaWdubWVudENv
dW50LCBPcGVyYXRvciBvcCkKICAgICB7CiAgICAgICAgIGFzc2lnbm1lbnRTdGFja0RlcHRoKys7
Ci0gICAgICAgIG1fYXNzaWdubWVudEluZm9TdGFjay5hcHBlbmQoQXNzaWdubWVudEluZm8obm9k
ZSwgc3RhcnQsIGRpdm90LCBhc3NpZ25tZW50Q291bnQsIG9wKSk7CisgICAgICAgIEFTU0VSVChz
dGFydCA+PSBkaXZvdExpbmVTdGFydCk7CisgICAgICAgIEFTU0VSVChkaXZvdCA+PSBkaXZvdExp
bmVTdGFydCk7CisgICAgICAgIG1fYXNzaWdubWVudEluZm9TdGFjay5hcHBlbmQoQXNzaWdubWVu
dEluZm8obm9kZSwgc3RhcnQsIGRpdm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0LCBhc3Np
Z25tZW50Q291bnQsIG9wKSk7CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFz
c2lnbm1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50JiBhc3NpZ25tZW50
U3RhY2tEZXB0aCwgRXhwcmVzc2lvbk5vZGUqIHJocywgaW50IGluaXRpYWxBc3NpZ25tZW50Q291
bnQsIGludCBjdXJyZW50QXNzaWdubWVudENvdW50LCBpbnQgbGFzdFRva2VuRW5kKQogICAgIHsK
LSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIHJlc3VsdCA9IG1ha2VBc3NpZ25Ob2RlKGxvY2F0aW9u
LCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1fbm9kZSwgbV9hc3NpZ25tZW50SW5mb1N0
YWNrLmxhc3QoKS5tX29wLCByaHMsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9pbml0
QXNzaWdubWVudHMgIT0gaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25tZW50SW5mb1N0
YWNrLmxhc3QoKS5tX2luaXRBc3NpZ25tZW50cyAhPSBjdXJyZW50QXNzaWdubWVudENvdW50LCBt
X2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1fc3RhcnQsIG1fYXNzaWdubWVudEluZm9TdGFj
ay5sYXN0KCkubV9kaXZvdCArIDEsIGxhc3RUb2tlbkVuZCk7CisgICAgICAgIEFzc2lnbm1lbnRJ
bmZvJiBpbmZvID0gbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKTsKKyAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIHJlc3VsdCA9IG1ha2VBc3NpZ25Ob2RlKGxvY2F0aW9uLCBpbmZvLm1fbm9kZSwg
aW5mby5tX29wLCByaHMsIGluZm8ubV9pbml0QXNzaWdubWVudHMgIT0gaW5pdGlhbEFzc2lnbm1l
bnRDb3VudCwgaW5mby5tX2luaXRBc3NpZ25tZW50cyAhPSBjdXJyZW50QXNzaWdubWVudENvdW50
LCBpbmZvLm1fc3RhcnQsIGluZm8ubV9kaXZvdCArIDEsIGxhc3RUb2tlbkVuZCwgaW5mby5tX2Rp
dm90TGluZSwgaW5mby5tX2Rpdm90TGluZVN0YXJ0KTsKICAgICAgICAgbV9hc3NpZ25tZW50SW5m
b1N0YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAgYXNzaWdubWVudFN0YWNrRGVwdGgtLTsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTYyNCw5ICs2NTEsMTAgQEAgcHJpdmF0ZToKICAgICAg
ICAgaW50IG1fbnVtQ29uc3RhbnRzOwogICAgIH07CiAKLSAgICBzdGF0aWMgdm9pZCBzZXRFeGNl
cHRpb25Mb2NhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgdW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBlbmQpCisgICAgc3RhdGljIHZvaWQgc2V0RXhj
ZXB0aW9uTG9jYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIHVuc2lnbmVkIHN0
YXJ0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgZW5kLCB1bnNpZ25lZCBkaXZvdExpbmUsIHVu
c2lnbmVkIGRpdm90TGluZVN0YXJ0KQogICAgIHsKLSAgICAgICAgbm9kZS0+c2V0RXhjZXB0aW9u
U291cmNlQ29kZShkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICBB
U1NFUlQoZGl2b3QgPj0gZGl2b3RMaW5lU3RhcnQpOworICAgICAgICBub2RlLT5zZXRFeGNlcHRp
b25Tb3VyY2VDb2RlKGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCwgZGl2b3RMaW5l
LCBkaXZvdExpbmVTdGFydCk7CiAgICAgfQogCiAgICAgdm9pZCBpbmNDb25zdGFudHMoKSB7IG1f
c2NvcGUubV9udW1Db25zdGFudHMrKzsgfQpAQCAtNjUwLDcgKzY3OCw3IEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPEJpbmFyeU9wZXJhbmQsIDEwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9iaW5h
cnlPcGVyYW5kU3RhY2s7CiAgICAgVmVjdG9yPEFzc2lnbm1lbnRJbmZvLCAxMCwgVW5zYWZlVmVj
dG9yT3ZlcmZsb3c+IG1fYXNzaWdubWVudEluZm9TdGFjazsKICAgICBWZWN0b3I8cGFpcjxpbnQs
IGludD4sIDEwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9iaW5hcnlPcGVyYXRvclN0YWNrOwot
ICAgIFZlY3RvcjxwYWlyPGludCwgaW50PiwgMTAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX3Vu
YXJ5VG9rZW5TdGFjazsKKyAgICBWZWN0b3I8cGFpcjxpbnQsIFBvc2l0aW9uSW5mbz4sIDEwLCBV
bnNhZmVWZWN0b3JPdmVyZmxvdz4gbV91bmFyeVRva2VuU3RhY2s7CiAgICAgaW50IG1fZXZhbENv
dW50OwogfTsKIApAQCAtNjYzLDIxICs2OTEsMjEgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxk
ZXI6Om1ha2VUeXBlT2ZObwogICAgIHJldHVybiBuZXcgKG1fdm0pIFR5cGVPZlZhbHVlTm9kZShs
b2NhdGlvbiwgZXhwcik7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRGVs
ZXRlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
ZXhwciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCitFeHByZXNzaW9uTm9kZSogQVNU
QnVpbGRlcjo6bWFrZURlbGV0ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kLCB1bnNp
Z25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogewogICAgIGlmICghZXhw
ci0+aXNMb2NhdGlvbigpKQogICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBEZWxldGVWYWx1ZU5v
ZGUobG9jYXRpb24sIGV4cHIpOwogICAgIGlmIChleHByLT5pc1Jlc29sdmVOb2RlKCkpIHsKICAg
ICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGV4
cHIpOwotICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBEZWxldGVSZXNvbHZlTm9kZShsb2NhdGlv
biwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2
b3QpOworICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBEZWxldGVSZXNvbHZlTm9kZShsb2NhdGlv
biwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2
b3QsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogICAgIH0KICAgICBpZiAoZXhwci0+aXNC
cmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogYnJh
Y2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICAgICAg
cmV0dXJuIG5ldyAobV92bSkgRGVsZXRlQnJhY2tldE5vZGUobG9jYXRpb24sIGJyYWNrZXQtPmJh
c2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBk
aXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fdm0pIERlbGV0ZUJyYWNrZXROb2RlKGxvY2F0
aW9uLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBkaXZvdCwgZGl2b3Qg
LSBzdGFydCwgZW5kIC0gZGl2b3QsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogICAgIH0K
ICAgICBBU1NFUlQoZXhwci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgRG90QWNjZXNzb3JO
b2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICByZXR1
cm4gbmV3IChtX3ZtKSBEZWxldGVEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5p
ZGVudGlmaWVyKCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgcmV0
dXJuIG5ldyAobV92bSkgRGVsZXRlRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+
aWRlbnRpZmllcigpLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QsIGRpdm90TGlu
ZSwgZGl2b3RMaW5lU3RhcnQpOwogfQogCiBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFr
ZU5lZ2F0ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIG4pCkBAIC03OTQsMzUgKzgyMiwzNiBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6
bWFrZUJpdFhPck5vCiAgICAgcmV0dXJuIG5ldyAobV92bSkgQml0WE9yTm9kZShsb2NhdGlvbiwg
ZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUq
IEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBmdW5jLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBpbnQg
c3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjpt
YWtlRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogZnVuYywgQXJndW1lbnRzTm9kZSogYXJncywgaW50IHN0YXJ0LCB1bnNpZ25l
ZCBkaXZvdCwgaW50IGVuZCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVT
dGFydCkKIHsKKyAgICBBU1NFUlQoZGl2b3QgPj0gZGl2b3RMaW5lU3RhcnQpOwogICAgIGlmICgh
ZnVuYy0+aXNMb2NhdGlvbigpKQotICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBGdW5jdGlvbkNh
bGxWYWx1ZU5vZGUobG9jYXRpb24sIGZ1bmMsIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBl
bmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fdm0pIEZ1bmN0aW9uQ2FsbFZhbHVl
Tm9kZShsb2NhdGlvbiwgZnVuYywgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRp
dm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KTsKICAgICBpZiAoZnVuYy0+aXNSZXNvbHZl
Tm9kZSgpKSB7CiAgICAgICAgIFJlc29sdmVOb2RlKiByZXNvbHZlID0gc3RhdGljX2Nhc3Q8UmVz
b2x2ZU5vZGUqPihmdW5jKTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciA9
IHJlc29sdmUtPmlkZW50aWZpZXIoKTsKICAgICAgICAgaWYgKGlkZW50aWZpZXIgPT0gbV92bS0+
cHJvcGVydHlOYW1lcy0+ZXZhbCkgewogICAgICAgICAgICAgdXNlc0V2YWwoKTsKLSAgICAgICAg
ICAgIHJldHVybiBuZXcgKG1fdm0pIEV2YWxGdW5jdGlvbkNhbGxOb2RlKGxvY2F0aW9uLCBhcmdz
LCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICAgICAgcmV0dXJu
IG5ldyAobV92bSkgRXZhbEZ1bmN0aW9uQ2FsbE5vZGUobG9jYXRpb24sIGFyZ3MsIGRpdm90LCBk
aXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7CiAg
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5ldyAobV92bSkgRnVuY3Rpb25DYWxsUmVzb2x2ZU5v
ZGUobG9jYXRpb24sIGlkZW50aWZpZXIsIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQg
LSBkaXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fdm0pIEZ1bmN0aW9uQ2FsbFJlc29sdmVO
b2RlKGxvY2F0aW9uLCBpZGVudGlmaWVyLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5k
IC0gZGl2b3QsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogICAgIH0KICAgICBpZiAoZnVu
Yy0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9k
ZSogYnJhY2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihmdW5jKTsKLSAg
ICAgICAgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUqIG5vZGUgPSBuZXcgKG1fdm0pIEZ1bmN0aW9u
Q2FsbEJyYWNrZXROb2RlKGxvY2F0aW9uLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNj
cmlwdCgpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwotICAgICAg
ICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhicmFja2V0LT5kaXZvdCgpLCBicmFja2V0LT5l
bmRPZmZzZXQoKSk7CisgICAgICAgIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKiBub2RlID0gbmV3
IChtX3ZtKSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShsb2NhdGlvbiwgYnJhY2tldC0+YmFzZSgp
LCBicmFja2V0LT5zdWJzY3JpcHQoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAt
IGRpdm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KTsKKyAgICAgICAgbm9kZS0+c2V0U3Vi
ZXhwcmVzc2lvbkluZm8oYnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+ZGl2b3RFbmRPZmZzZXQo
KSwgYnJhY2tldC0+ZGl2b3RMaW5lKCksIGJyYWNrZXQtPmRpdm90TGluZVN0YXJ0KCkpOwogICAg
ICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAgICAgQVNTRVJUKGZ1bmMtPmlzRG90QWNjZXNzb3JO
b2RlKCkpOwogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNz
b3JOb2RlKj4oZnVuYyk7CiAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZSogbm9kZTsKICAgICBpZiAo
ZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbCkKLSAgICAgICAg
bm9kZSA9IG5ldyAobV92bSkgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+
YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVu
ZCAtIGRpdm90KTsKKyAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgQ2FsbEZ1bmN0aW9uQ2FsbERv
dE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2
b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0
KTsKICAgICBlbHNlIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5hcHBseSkKLSAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgQXBwbHlGdW5jdGlvbkNhbGxEb3RO
b2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90
LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fdm0p
IEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRl
bnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QsIGRpdm90
TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogICAgIGVsc2UKLSAgICAgICAgbm9kZSA9IG5ldyAobV92
bSkgRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRp
ZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwotICAgIG5v
ZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5lbmRPZmZzZXQoKSk7
CisgICAgICAgIG5vZGUgPSBuZXcgKG1fdm0pIEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24s
IGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3Rh
cnQsIGVuZCAtIGRpdm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KTsKKyAgICBub2RlLT5z
ZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCksIGRvdC0+ZGl2b3RFbmRPZmZzZXQoKSwg
ZG90LT5kaXZvdExpbmUoKSwgZG90LT5kaXZvdExpbmVTdGFydCgpKTsKICAgICByZXR1cm4gbm9k
ZTsKIH0KIApAQCAtODcwLDEzICs4OTksMTMgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6
Om1ha2VCaW5hcnlObwogCiAgICAgY2FzZSBJTlNUQU5DRU9GOiB7CiAgICAgICAgIEluc3RhbmNl
T2ZOb2RlKiBub2RlID0gbmV3IChtX3ZtKSBJbnN0YW5jZU9mTm9kZShsb2NhdGlvbiwgbGhzLmZp
cnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7Ci0gICAgICAgIHNldEV4
Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIGxocy5zZWNvbmQuc3RhcnQsIHJocy5zZWNvbmQuc3RhcnQs
IHJocy5zZWNvbmQuZW5kKTsKKyAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgbGhz
LnNlY29uZC5zdGFydCwgcmhzLnNlY29uZC5zdGFydCwgcmhzLnNlY29uZC5lbmQsIHJocy5zZWNv
bmQuZGl2b3RMaW5lLCByaHMuc2Vjb25kLmRpdm90TGluZVN0YXJ0KTsKICAgICAgICAgcmV0dXJu
IG5vZGU7CiAgICAgfQogCiAgICAgY2FzZSBJTlRPS0VOOiB7CiAgICAgICAgIEluTm9kZSogbm9k
ZSA9IG5ldyAobV92bSkgSW5Ob2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhz
LnNlY29uZC5oYXNBc3NpZ25tZW50KTsKLSAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9k
ZSwgbGhzLnNlY29uZC5zdGFydCwgcmhzLnNlY29uZC5zdGFydCwgcmhzLnNlY29uZC5lbmQpOwor
ICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBsaHMuc2Vjb25kLnN0YXJ0LCByaHMu
c2Vjb25kLnN0YXJ0LCByaHMuc2Vjb25kLmVuZCwgcmhzLnNlY29uZC5kaXZvdExpbmUsIHJocy5z
ZWNvbmQuZGl2b3RMaW5lU3RhcnQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKQEAg
LTkwOCwxMCArOTM3LDEwIEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQmluYXJ5
Tm8KICAgICByZXR1cm4gMDsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VB
c3NpZ25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBsb2MsIE9wZXJhdG9yIG9wLCBFeHByZXNzaW9uTm9kZSogZXhwciwgYm9vbCBsb2NIYXNBc3Np
Z25tZW50cywgYm9vbCBleHBySGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBp
bnQgZW5kKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25Ob2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsb2MsIE9wZXJhdG9y
IG9wLCBFeHByZXNzaW9uTm9kZSogZXhwciwgYm9vbCBsb2NIYXNBc3NpZ25tZW50cywgYm9vbCBl
eHBySGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kLCB1bnNpZ25l
ZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogewogICAgIGlmICghbG9jLT5p
c0xvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiBuZXcgKG1fdm0pIEFzc2lnbkVycm9yTm9kZShs
b2NhdGlvbiwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0
dXJuIG5ldyAobV92bSkgQXNzaWduRXJyb3JOb2RlKGxvY2F0aW9uLCBkaXZvdCwgZGl2b3QgLSBz
dGFydCwgZW5kIC0gZGl2b3QsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogCiAgICAgaWYg
KGxvYy0+aXNSZXNvbHZlTm9kZSgpKSB7CiAgICAgICAgIFJlc29sdmVOb2RlKiByZXNvbHZlID0g
c3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihsb2MpOwpAQCAtOTE5LDE3ICs5NDgsMTcgQEAgRXhw
cmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25ObwogICAgICAgICAgICAgaWYgKGV4
cHItPmlzRnVuY0V4cHJOb2RlKCkpCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RnVuY0V4
cHJOb2RlKj4oZXhwciktPmJvZHkoKS0+c2V0SW5mZXJyZWROYW1lKHJlc29sdmUtPmlkZW50aWZp
ZXIoKSk7CiAgICAgICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZSogbm9kZSA9IG5ldyAobV92bSkg
QXNzaWduUmVzb2x2ZU5vZGUobG9jYXRpb24sIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgZXhwcik7
Ci0gICAgICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVu
ZCk7CisgICAgICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3Qs
IGVuZCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7CiAgICAgICAgICAgICByZXR1cm4gbm9k
ZTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBSZWFkTW9kaWZ5UmVzb2x2
ZU5vZGUobG9jYXRpb24sIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNB
c3NpZ25tZW50cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAg
cmV0dXJuIG5ldyAobV92bSkgUmVhZE1vZGlmeVJlc29sdmVOb2RlKGxvY2F0aW9uLCByZXNvbHZl
LT5pZGVudGlmaWVyKCksIG9wLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBkaXZv
dCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7CiAgICAg
fQogICAgIGlmIChsb2MtPmlzQnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7CiAgICAgICAgIEJyYWNr
ZXRBY2Nlc3Nvck5vZGUqIGJyYWNrZXQgPSBzdGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2Rl
Kj4obG9jKTsKICAgICAgICAgaWYgKG9wID09IE9wRXF1YWwpCi0gICAgICAgICAgICByZXR1cm4g
bmV3IChtX3ZtKSBBc3NpZ25CcmFja2V0Tm9kZShsb2NhdGlvbiwgYnJhY2tldC0+YmFzZSgpLCBi
cmFja2V0LT5zdWJzY3JpcHQoKSwgZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4cHJIYXNBc3Np
Z25tZW50cywgYnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+ZGl2b3QoKSAtIHN0YXJ0LCBlbmQg
LSBicmFja2V0LT5kaXZvdCgpKTsKLSAgICAgICAgUmVhZE1vZGlmeUJyYWNrZXROb2RlKiBub2Rl
ID0gbmV3IChtX3ZtKSBSZWFkTW9kaWZ5QnJhY2tldE5vZGUobG9jYXRpb24sIGJyYWNrZXQtPmJh
c2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIG9wLCBleHByLCBsb2NIYXNBc3NpZ25tZW50cywg
ZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwot
ICAgICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhicmFja2V0LT5kaXZvdCgpLCBicmFj
a2V0LT5lbmRPZmZzZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBBc3NpZ25C
cmFja2V0Tm9kZShsb2NhdGlvbiwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQo
KSwgZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4cHJIYXNBc3NpZ25tZW50cywgYnJhY2tldC0+
ZGl2b3QoKSwgYnJhY2tldC0+ZGl2b3QoKSAtIHN0YXJ0LCBlbmQgLSBicmFja2V0LT5kaXZvdCgp
LCBicmFja2V0LT5kaXZvdExpbmUoKSwgYnJhY2tldC0+ZGl2b3RMaW5lU3RhcnQoKSk7CisgICAg
ICAgIFJlYWRNb2RpZnlCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyAobV92bSkgUmVhZE1vZGlmeUJy
YWNrZXROb2RlKGxvY2F0aW9uLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgp
LCBvcCwgZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3Qs
IGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KTsK
KyAgICAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oYnJhY2tldC0+ZGl2b3QoKSwgYnJh
Y2tldC0+ZGl2b3RFbmRPZmZzZXQoKSwgYnJhY2tldC0+ZGl2b3RMaW5lKCksIGJyYWNrZXQtPmRp
dm90TGluZVN0YXJ0KCkpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAgICAgQVNTRVJU
KGxvYy0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CkBAIC05MzcsMjIgKzk2NiwyMiBAQCBFeHByZXNz
aW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUFzc2lnbk5vCiAgICAgaWYgKG9wID09IE9wRXF1YWwp
IHsKICAgICAgICAgaWYgKGV4cHItPmlzRnVuY0V4cHJOb2RlKCkpCiAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxGdW5jRXhwck5vZGUqPihleHByKS0+Ym9keSgpLT5zZXRJbmZlcnJlZE5hbWUoZG90
LT5pZGVudGlmaWVyKCkpOwotICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBBc3NpZ25Eb3ROb2Rl
KGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGV4cHIsIGV4cHJIYXNB
c3NpZ25tZW50cywgZG90LT5kaXZvdCgpLCBkb3QtPmRpdm90KCkgLSBzdGFydCwgZW5kIC0gZG90
LT5kaXZvdCgpKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV92bSkgQXNzaWduRG90Tm9kZShsb2Nh
dGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBleHByLCBleHBySGFzQXNzaWdu
bWVudHMsIGRvdC0+ZGl2b3QoKSwgZG90LT5kaXZvdCgpIC0gc3RhcnQsIGVuZCAtIGRvdC0+ZGl2
b3QoKSwgZG90LT5kaXZvdExpbmUoKSwgZG90LT5kaXZvdExpbmVTdGFydCgpKTsKICAgICB9CiAK
LSAgICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9kZSA9IG5ldyAobV92bSkgUmVhZE1vZGlmeURvdE5v
ZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4
cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKLSAg
ICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCksIGRvdC0+ZW5kT2Zmc2V0
KCkpOworICAgIFJlYWRNb2RpZnlEb3ROb2RlKiBub2RlID0gbmV3IChtX3ZtKSBSZWFkTW9kaWZ5
RG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZXhw
ciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3Qs
IGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOworICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25J
bmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5kaXZvdEVuZE9mZnNldCgpLCBkb3QtPmRpdm90TGluZSgp
LCBkb3QtPmRpdm90TGluZVN0YXJ0KCkpOwogICAgIHJldHVybiBub2RlOwogfQogCi1FeHByZXNz
aW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVByZWZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wLCBpbnQgc3RhcnQs
IGludCBkaXZvdCwgaW50IGVuZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlUHJl
Zml4Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
ZXhwciwgT3BlcmF0b3Igb3AsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kLCB1bnNpZ25l
ZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogewotICAgIHJldHVybiBuZXcg
KG1fdm0pIFByZWZpeE5vZGUobG9jYXRpb24sIGV4cHIsIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFy
dCwgZW5kIC0gZGl2b3QpOworICAgIHJldHVybiBuZXcgKG1fdm0pIFByZWZpeE5vZGUobG9jYXRp
b24sIGV4cHIsIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QsIGRpdm90TGlu
ZSwgZGl2b3RMaW5lU3RhcnQpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFr
ZVBvc3RmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBleHByLCBPcGVyYXRvciBvcCwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCitF
eHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVBvc3RmaXhOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvciBvcCwgaW50
IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQg
ZGl2b3RMaW5lU3RhcnQpCiB7Ci0gICAgcmV0dXJuIG5ldyAobV92bSkgUG9zdGZpeE5vZGUobG9j
YXRpb24sIGV4cHIsIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAg
IHJldHVybiBuZXcgKG1fdm0pIFBvc3RmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBvcCwgZGl2b3Qs
IGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KTsK
IH0KIAogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAJKHJldmlz
aW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MjQsNyArNTI0LDcgQEAgU3RyaW5nIExleGVyPFQ+OjppbnZhbGlk
Q2hhcmFjdGVyTWVzc2FnZQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJ
TkUgY29uc3QgVCogTGV4ZXI8VD46OmN1cnJlbnRDaGFyYWN0ZXIoKSBjb25zdAorQUxXQVlTX0lO
TElORSBjb25zdCBUKiBMZXhlcjxUPjo6Y3VycmVudENvZGVQdHIoKSBjb25zdAogewogICAgIEFT
U0VSVChtX2NvZGUgPD0gbV9jb2RlRW5kKTsKICAgICByZXR1cm4gbV9jb2RlOwpAQCAtNTQ2LDEx
ICs1NDYsMTMgQEAgdm9pZCBMZXhlcjxUPjo6c2V0Q29kZShjb25zdCBTb3VyY2VDb2RlJgogICAg
ICAgICBtX2NvZGVTdGFydCA9IDA7CiAKICAgICBtX3NvdXJjZSA9ICZzb3VyY2U7CisgICAgbV9z
b3VyY2VPZmZzZXQgPSBzb3VyY2Uuc3RhcnRPZmZzZXQoKTsKICAgICBtX2NvZGVTdGFydFBsdXNP
ZmZzZXQgPSBtX2NvZGVTdGFydCArIHNvdXJjZS5zdGFydE9mZnNldCgpOwogICAgIG1fY29kZSA9
IG1fY29kZVN0YXJ0UGx1c09mZnNldDsKICAgICBtX2NvZGVFbmQgPSBtX2NvZGVTdGFydCArIHNv
dXJjZS5lbmRPZmZzZXQoKTsKICAgICBtX2Vycm9yID0gZmFsc2U7CiAgICAgbV9hdExpbmVTdGFy
dCA9IHRydWU7CisgICAgbV9saW5lU3RhcnQgPSBtX2NvZGU7CiAgICAgbV9sZXhFcnJvck1lc3Nh
Z2UgPSBTdHJpbmcoKTsKICAgICAKICAgICBtX2J1ZmZlcjgucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShpbml0aWFsUmVhZEJ1ZmZlckNhcGFjaXR5KTsKQEAgLTU2Nyw2ICs1NjksNyBAQCB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KIHRlbXBsYXRlIDxpbnQgc2hpZnRBbW91bnQ+IEFMV0FZU19JTkxJTkUg
dm9pZCBMZXhlcjxUPjo6aW50ZXJuYWxTaGlmdCgpCiB7CiAgICAgbV9jb2RlICs9IHNoaWZ0QW1v
dW50OworICAgIEFTU0VSVChjdXJyZW50T2Zmc2V0KCkgPj0gY3VycmVudExpbmVTdGFydE9mZnNl
dCgpKTsKICAgICBtX2N1cnJlbnQgPSAqbV9jb2RlOwogfQogCkBAIC03NjYsMjAgKzc2OSwyMSBA
QCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBjb25zdCBMQ2hhciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudENoYXJhY3Rl
cigpOworICAgIGNvbnN0IExDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50Q29kZVB0cigp
OworICAgIHVuc2lnbmVkIGlkZW50aWZpZXJMaW5lU3RhcnQgPSBjdXJyZW50TGluZVN0YXJ0T2Zm
c2V0KCk7CiAgICAgCiAgICAgd2hpbGUgKGlzSWRlbnRQYXJ0KG1fY3VycmVudCkpCiAgICAgICAg
IHNoaWZ0KCk7CiAgICAgCiAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCA9PSAnXFwnKSkgewot
ICAgICAgICBzZXRPZmZzZXRGcm9tQ2hhck9mZnNldChpZGVudGlmaWVyU3RhcnQpOworICAgICAg
ICBzZXRPZmZzZXRGcm9tQ29kZVB0cihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMaW5lU3Rh
cnQpOwogICAgICAgICByZXR1cm4gcGFyc2VJZGVudGlmaWVyU2xvd0Nhc2U8c2hvdWxkQ3JlYXRl
SWRlbnRpZmllcj4odG9rZW5EYXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsKICAgICB9CiAK
ICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IDA7CiAgICAgCiAgICAgaWYgKHNob3VsZENy
ZWF0ZUlkZW50aWZpZXIpIHsKLSAgICAgICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJyZW50
Q2hhcmFjdGVyKCkgLSBpZGVudGlmaWVyU3RhcnQ7CisgICAgICAgIGludCBpZGVudGlmaWVyTGVu
Z3RoID0gY3VycmVudENvZGVQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsKICAgICAgICAgaWRlbnQg
PSBtYWtlSWRlbnRpZmllcihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwogCiAg
ICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBpZGVudDsKQEAgLTgxNCw3ICs4MTgsOCBAQCB0ZW1w
bGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBjb25zdCBVQ2hhciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudENoYXJhY3RlcigpOwor
ICAgIGNvbnN0IFVDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50Q29kZVB0cigpOworICAg
IGludCBpZGVudGlmaWVyTGluZVN0YXJ0ID0gY3VycmVudExpbmVTdGFydE9mZnNldCgpOwogCiAg
ICAgVUNoYXIgb3JBbGxDaGFycyA9IDA7CiAgICAgCkBAIC04MjQsNyArODI5LDcgQEAgdGVtcGxh
dGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQQogICAgIH0KICAgICAKICAgICBpZiAo
VU5MSUtFTFkobV9jdXJyZW50ID09ICdcXCcpKSB7Ci0gICAgICAgIHNldE9mZnNldEZyb21DaGFy
T2Zmc2V0KGlkZW50aWZpZXJTdGFydCk7CisgICAgICAgIHNldE9mZnNldEZyb21Db2RlUHRyKGlk
ZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxpbmVTdGFydCk7CiAgICAgICAgIHJldHVybiBwYXJz
ZUlkZW50aWZpZXJTbG93Q2FzZTxzaG91bGRDcmVhdGVJZGVudGlmaWVyPih0b2tlbkRhdGEsIGxl
eGVyRmxhZ3MsIHN0cmljdE1vZGUpOwogICAgIH0KIApAQCAtODM2LDcgKzg0MSw3IEBAIHRlbXBs
YXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEEKICAgICBjb25zdCBJZGVudGlmaWVy
KiBpZGVudCA9IDA7CiAgICAgCiAgICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpIHsKLSAg
ICAgICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJyZW50Q2hhcmFjdGVyKCkgLSBpZGVudGlm
aWVyU3RhcnQ7CisgICAgICAgIGludCBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudENvZGVQdHIo
KSAtIGlkZW50aWZpZXJTdGFydDsKICAgICAgICAgaWYgKGlzQWxsOEJpdCkKICAgICAgICAgICAg
IGlkZW50ID0gbWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcihpZGVudGlmaWVyU3RhcnQsIGlk
ZW50aWZpZXJMZW5ndGgpOwogICAgICAgICBlbHNlCkBAIC04NjYsNyArODcxLDcgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBK
U1Rva2VuVHlwZSBMZXhlcjxUPjo6cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2UoSlNUb2tlbkRhdGEq
IHRva2VuRGF0YSwgdW5zaWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RNb2RlKQogewogICAg
IGNvbnN0IHB0cmRpZmZfdCByZW1haW5pbmcgPSBtX2NvZGVFbmQgLSBtX2NvZGU7Ci0gICAgY29u
c3QgVCogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudENoYXJhY3RlcigpOworICAgIGNvbnN0IFQq
IGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRDb2RlUHRyKCk7CiAgICAgYm9vbCBidWZmZXJSZXF1
aXJlZCA9IGZhbHNlOwogCiAgICAgd2hpbGUgKHRydWUpIHsKQEAgLTg3OSw4ICs4ODQsOCBAQCB0
ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBKCiAKICAgICAgICAgLy8gXHVY
WFhYIHVuaWNvZGUgY2hhcmFjdGVycy4KICAgICAgICAgYnVmZmVyUmVxdWlyZWQgPSB0cnVlOwot
ICAgICAgICBpZiAoaWRlbnRpZmllclN0YXJ0ICE9IGN1cnJlbnRDaGFyYWN0ZXIoKSkKLSAgICAg
ICAgICAgIG1fYnVmZmVyMTYuYXBwZW5kKGlkZW50aWZpZXJTdGFydCwgY3VycmVudENoYXJhY3Rl
cigpIC0gaWRlbnRpZmllclN0YXJ0KTsKKyAgICAgICAgaWYgKGlkZW50aWZpZXJTdGFydCAhPSBj
dXJyZW50Q29kZVB0cigpKQorICAgICAgICAgICAgbV9idWZmZXIxNi5hcHBlbmQoaWRlbnRpZmll
clN0YXJ0LCBjdXJyZW50Q29kZVB0cigpIC0gaWRlbnRpZmllclN0YXJ0KTsKICAgICAgICAgc2hp
ZnQoKTsKICAgICAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCAhPSAndScpKQogICAgICAgICAg
ICAgcmV0dXJuIGF0RW5kKCkgPyBVTlRFUk1JTkFURURfSURFTlRJRklFUl9FU0NBUEVfRVJST1JU
T0sgOiBJTlZBTElEX0lERU5USUZJRVJfRVNDQVBFX0VSUk9SVE9LOwpAQCAtODkzLDE4ICs4OTgs
MTggQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gSgogICAgICAgICAg
ICAgcmV0dXJuIElOVkFMSURfSURFTlRJRklFUl9VTklDT0RFX0VTQ0FQRV9FUlJPUlRPSzsKICAg
ICAgICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpCiAgICAgICAgICAgICByZWNvcmQxNih1
Y2hhcmFjdGVyKTsKLSAgICAgICAgaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudENoYXJhY3Rlcigp
OworICAgICAgICBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50Q29kZVB0cigpOwogICAgIH0KIAog
ICAgIGludCBpZGVudGlmaWVyTGVuZ3RoOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0g
MDsKICAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikgewogICAgICAgICBpZiAoIWJ1ZmZl
clJlcXVpcmVkKSB7Ci0gICAgICAgICAgICBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudENoYXJh
Y3RlcigpIC0gaWRlbnRpZmllclN0YXJ0OworICAgICAgICAgICAgaWRlbnRpZmllckxlbmd0aCA9
IGN1cnJlbnRDb2RlUHRyKCkgLSBpZGVudGlmaWVyU3RhcnQ7CiAgICAgICAgICAgICBpZGVudCA9
IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoaWRlbnRpZmllclN0YXJ0ICE9IGN1cnJlbnRD
aGFyYWN0ZXIoKSkKLSAgICAgICAgICAgICAgICBtX2J1ZmZlcjE2LmFwcGVuZChpZGVudGlmaWVy
U3RhcnQsIGN1cnJlbnRDaGFyYWN0ZXIoKSAtIGlkZW50aWZpZXJTdGFydCk7CisgICAgICAgICAg
ICBpZiAoaWRlbnRpZmllclN0YXJ0ICE9IGN1cnJlbnRDb2RlUHRyKCkpCisgICAgICAgICAgICAg
ICAgbV9idWZmZXIxNi5hcHBlbmQoaWRlbnRpZmllclN0YXJ0LCBjdXJyZW50Q29kZVB0cigpIC0g
aWRlbnRpZmllclN0YXJ0KTsKICAgICAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXIobV9i
dWZmZXIxNi5kYXRhKCksIG1fYnVmZmVyMTYuc2l6ZSgpKTsKICAgICAgICAgfQogCkBAIC05NDQs
MTYgKzk0OSwxNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHRlbXBsYXRlIDxib29sIHNob3Vs
ZEJ1aWxkU3RyaW5ncz4gQUxXQVlTX0lOTElORSB0eXBlbmFtZSBMZXhlcjxUPjo6U3RyaW5nUGFy
c2VSZXN1bHQgTGV4ZXI8VD46OnBhcnNlU3RyaW5nKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsIGJv
b2wgc3RyaWN0TW9kZSkKIHsKICAgICBpbnQgc3RhcnRpbmdPZmZzZXQgPSBjdXJyZW50T2Zmc2V0
KCk7CisgICAgaW50IHN0YXJ0aW5nTGluZVN0YXJ0T2Zmc2V0ID0gY3VycmVudExpbmVTdGFydE9m
ZnNldCgpOwogICAgIGludCBzdGFydGluZ0xpbmVOdW1iZXIgPSBsaW5lTnVtYmVyKCk7CiAgICAg
VCBzdHJpbmdRdW90ZUNoYXJhY3RlciA9IG1fY3VycmVudDsKICAgICBzaGlmdCgpOwogCi0gICAg
Y29uc3QgVCogc3RyaW5nU3RhcnQgPSBjdXJyZW50Q2hhcmFjdGVyKCk7CisgICAgY29uc3QgVCog
c3RyaW5nU3RhcnQgPSBjdXJyZW50Q29kZVB0cigpOwogCiAgICAgd2hpbGUgKG1fY3VycmVudCAh
PSBzdHJpbmdRdW90ZUNoYXJhY3RlcikgewogICAgICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50
ID09ICdcXCcpKSB7Ci0gICAgICAgICAgICBpZiAoc3RyaW5nU3RhcnQgIT0gY3VycmVudENoYXJh
Y3RlcigpICYmIHNob3VsZEJ1aWxkU3RyaW5ncykKLSAgICAgICAgICAgICAgICBhcHBlbmQ4KHN0
cmluZ1N0YXJ0LCBjdXJyZW50Q2hhcmFjdGVyKCkgLSBzdHJpbmdTdGFydCk7CisgICAgICAgICAg
ICBpZiAoc3RyaW5nU3RhcnQgIT0gY3VycmVudENvZGVQdHIoKSAmJiBzaG91bGRCdWlsZFN0cmlu
Z3MpCisgICAgICAgICAgICAgICAgYXBwZW5kOChzdHJpbmdTdGFydCwgY3VycmVudENvZGVQdHIo
KSAtIHN0cmluZ1N0YXJ0KTsKICAgICAgICAgICAgIHNoaWZ0KCk7CiAKICAgICAgICAgICAgIExD
aGFyIGVzY2FwZSA9IHNpbmdsZUVzY2FwZShtX2N1cnJlbnQpOwpAQCAtOTc3LDE3ICs5ODMsMTcg
QEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdzPiBBTFdBWQogICAgICAgICAgICAg
ICAgICAgICByZWNvcmQ4KGNvbnZlcnRIZXgocHJldiwgbV9jdXJyZW50KSk7CiAgICAgICAgICAg
ICAgICAgc2hpZnQoKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgc2V0
T2Zmc2V0KHN0YXJ0aW5nT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBzZXRPZmZzZXQoc3RhcnRp
bmdPZmZzZXQsIHN0YXJ0aW5nTGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgICAgICAgICBzZXRM
aW5lTnVtYmVyKHN0YXJ0aW5nTGluZU51bWJlcik7CiAgICAgICAgICAgICAgICAgbV9idWZmZXI4
LnJlc2l6ZSgwKTsKICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VTdHJpbmdTbG93Q2FzZTxz
aG91bGRCdWlsZFN0cmluZ3M+KHRva2VuRGF0YSwgc3RyaWN0TW9kZSk7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBzdHJpbmdTdGFydCA9IGN1cnJlbnRDaGFyYWN0ZXIoKTsKKyAgICAgICAg
ICAgIHN0cmluZ1N0YXJ0ID0gY3VycmVudENvZGVQdHIoKTsKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFVOTElLRUxZKGNoYXJhY3RlclJlcXVpcmVzUGFy
c2VTdHJpbmdTbG93Q2FzZShtX2N1cnJlbnQpKSkgewotICAgICAgICAgICAgc2V0T2Zmc2V0KHN0
YXJ0aW5nT2Zmc2V0KTsKKyAgICAgICAgICAgIHNldE9mZnNldChzdGFydGluZ09mZnNldCwgc3Rh
cnRpbmdMaW5lU3RhcnRPZmZzZXQpOwogICAgICAgICAgICAgc2V0TGluZU51bWJlcihzdGFydGlu
Z0xpbmVOdW1iZXIpOwogICAgICAgICAgICAgbV9idWZmZXI4LnJlc2l6ZSgwKTsKICAgICAgICAg
ICAgIHJldHVybiBwYXJzZVN0cmluZ1Nsb3dDYXNlPHNob3VsZEJ1aWxkU3RyaW5ncz4odG9rZW5E
YXRhLCBzdHJpY3RNb2RlKTsKQEAgLTk5Niw4ICsxMDAyLDggQEAgdGVtcGxhdGUgPGJvb2wgc2hv
dWxkQnVpbGRTdHJpbmdzPiBBTFdBWQogICAgICAgICBzaGlmdCgpOwogICAgIH0KIAotICAgIGlm
IChjdXJyZW50Q2hhcmFjdGVyKCkgIT0gc3RyaW5nU3RhcnQgJiYgc2hvdWxkQnVpbGRTdHJpbmdz
KQotICAgICAgICBhcHBlbmQ4KHN0cmluZ1N0YXJ0LCBjdXJyZW50Q2hhcmFjdGVyKCkgLSBzdHJp
bmdTdGFydCk7CisgICAgaWYgKGN1cnJlbnRDb2RlUHRyKCkgIT0gc3RyaW5nU3RhcnQgJiYgc2hv
dWxkQnVpbGRTdHJpbmdzKQorICAgICAgICBhcHBlbmQ4KHN0cmluZ1N0YXJ0LCBjdXJyZW50Q29k
ZVB0cigpIC0gc3RyaW5nU3RhcnQpOwogICAgIGlmIChzaG91bGRCdWlsZFN0cmluZ3MpIHsKICAg
ICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG1ha2VJZGVudGlmaWVyKG1fYnVmZmVyOC5kYXRhKCks
IG1fYnVmZmVyOC5zaXplKCkpOwogICAgICAgICBtX2J1ZmZlcjgucmVzaXplKDApOwpAQCAtMTAx
MywxMiArMTAxOSwxMiBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IHR5cGVu
CiAgICAgVCBzdHJpbmdRdW90ZUNoYXJhY3RlciA9IG1fY3VycmVudDsKICAgICBzaGlmdCgpOwog
Ci0gICAgY29uc3QgVCogc3RyaW5nU3RhcnQgPSBjdXJyZW50Q2hhcmFjdGVyKCk7CisgICAgY29u
c3QgVCogc3RyaW5nU3RhcnQgPSBjdXJyZW50Q29kZVB0cigpOwogCiAgICAgd2hpbGUgKG1fY3Vy
cmVudCAhPSBzdHJpbmdRdW90ZUNoYXJhY3RlcikgewogICAgICAgICBpZiAoVU5MSUtFTFkobV9j
dXJyZW50ID09ICdcXCcpKSB7Ci0gICAgICAgICAgICBpZiAoc3RyaW5nU3RhcnQgIT0gY3VycmVu
dENoYXJhY3RlcigpICYmIHNob3VsZEJ1aWxkU3RyaW5ncykKLSAgICAgICAgICAgICAgICBhcHBl
bmQxNihzdHJpbmdTdGFydCwgY3VycmVudENoYXJhY3RlcigpIC0gc3RyaW5nU3RhcnQpOworICAg
ICAgICAgICAgaWYgKHN0cmluZ1N0YXJ0ICE9IGN1cnJlbnRDb2RlUHRyKCkgJiYgc2hvdWxkQnVp
bGRTdHJpbmdzKQorICAgICAgICAgICAgICAgIGFwcGVuZDE2KHN0cmluZ1N0YXJ0LCBjdXJyZW50
Q29kZVB0cigpIC0gc3RyaW5nU3RhcnQpOwogICAgICAgICAgICAgc2hpZnQoKTsKIAogICAgICAg
ICAgICAgTENoYXIgZXNjYXBlID0gc2luZ2xlRXNjYXBlKG1fY3VycmVudCk7CkBAIC0xMDkzLDcg
KzEwOTksNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IHR5cGVuCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIFN0cmluZ1VudGVybWluYXRlZDsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgc3RyaW5nU3RhcnQgPSBjdXJyZW50Q2hhcmFjdGVyKCk7CisgICAgICAgICAg
ICBzdHJpbmdTdGFydCA9IGN1cnJlbnRDb2RlUHRyKCk7CiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQogICAgICAgICAvLyBGYXN0IGNoZWNrIGZvciBjaGFyYWN0ZXJzIHRoYXQgcmVx
dWlyZSBzcGVjaWFsIGhhbmRsaW5nLgpAQCAtMTExMCw4ICsxMTE2LDggQEAgdGVtcGxhdGUgPGJv
b2wgc2hvdWxkQnVpbGRTdHJpbmdzPiB0eXBlbgogICAgICAgICBzaGlmdCgpOwogICAgIH0KIAot
ICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyKCkgIT0gc3RyaW5nU3RhcnQgJiYgc2hvdWxkQnVpbGRT
dHJpbmdzKQotICAgICAgICBhcHBlbmQxNihzdHJpbmdTdGFydCwgY3VycmVudENoYXJhY3Rlcigp
IC0gc3RyaW5nU3RhcnQpOworICAgIGlmIChjdXJyZW50Q29kZVB0cigpICE9IHN0cmluZ1N0YXJ0
ICYmIHNob3VsZEJ1aWxkU3RyaW5ncykKKyAgICAgICAgYXBwZW5kMTYoc3RyaW5nU3RhcnQsIGN1
cnJlbnRDb2RlUHRyKCkgLSBzdHJpbmdTdGFydCk7CiAgICAgaWYgKHNob3VsZEJ1aWxkU3RyaW5n
cykKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG1ha2VJZGVudGlmaWVyKG1fYnVmZmVyMTYu
ZGF0YSgpLCBtX2J1ZmZlcjE2LnNpemUoKSk7CiAgICAgZWxzZQpAQCAtMTMxNyw3ICsxMzIzLDgg
QEAgc3RhcnQ6CiAgICAgICAgIHJldHVybiBFT0ZUT0s7CiAgICAgCiAgICAgdG9rZW5Mb2NhdGlv
bi0+c3RhcnRPZmZzZXQgPSBjdXJyZW50T2Zmc2V0KCk7Ci0gICAgdG9rZW5Mb2NhdGlvbi0+Y2hh
clBvc2l0aW9uID0gY3VycmVudENoYXJQb3NpdGlvbigpOworICAgIHRva2VuTG9jYXRpb24tPnNv
dXJjZU9mZnNldCA9IG1fc291cmNlT2Zmc2V0OworICAgIEFTU0VSVChjdXJyZW50T2Zmc2V0KCkg
Pj0gY3VycmVudExpbmVTdGFydE9mZnNldCgpKTsKIAogICAgIENoYXJhY3RlclR5cGUgdHlwZTsK
ICAgICBpZiAoTElLRUxZKGlzTGF0aW4xKG1fY3VycmVudCkpKQpAQCAtMTU1NSwxMiArMTU2Miwx
OCBAQCBzdGFydDoKICAgICAgICAgdG9rZW4gPSBTRU1JQ09MT047CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQ2hhcmFjdGVyT3BlbkJyYWNlOgotICAgICAgICB0b2tlbkRhdGEtPmludFZhbHVl
ID0gY3VycmVudE9mZnNldCgpOworICAgICAgICB0b2tlbkRhdGEtPmxpbmUgPSBsaW5lTnVtYmVy
KCk7CisgICAgICAgIHRva2VuRGF0YS0+b2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOworICAgICAg
ICB0b2tlbkRhdGEtPmxpbmVTdGFydE9mZnNldCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsK
KyAgICAgICAgQVNTRVJUKHRva2VuRGF0YS0+b2Zmc2V0ID49IHRva2VuRGF0YS0+bGluZVN0YXJ0
T2Zmc2V0KTsKICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgdG9rZW4gPSBPUEVOQlJBQ0U7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ2hhcmFjdGVyQ2xvc2VCcmFjZToKLSAgICAgICAgdG9r
ZW5EYXRhLT5pbnRWYWx1ZSA9IGN1cnJlbnRPZmZzZXQoKTsKKyAgICAgICAgdG9rZW5EYXRhLT5s
aW5lID0gbGluZU51bWJlcigpOworICAgICAgICB0b2tlbkRhdGEtPm9mZnNldCA9IGN1cnJlbnRP
ZmZzZXQoKTsKKyAgICAgICAgdG9rZW5EYXRhLT5saW5lU3RhcnRPZmZzZXQgPSBjdXJyZW50TGlu
ZVN0YXJ0T2Zmc2V0KCk7CisgICAgICAgIEFTU0VSVCh0b2tlbkRhdGEtPm9mZnNldCA+PSB0b2tl
bkRhdGEtPmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIHRva2Vu
ID0gQ0xPU0VCUkFDRTsKICAgICAgICAgYnJlYWs7CkBAIC0xNjUwLDYgKzE2NjMsNyBAQCBpbk51
bWJlckFmdGVyRGVjaW1hbFBvaW50OgogICAgICAgICBzaGlmdExpbmVUZXJtaW5hdG9yKCk7CiAg
ICAgICAgIG1fYXRMaW5lU3RhcnQgPSB0cnVlOwogICAgICAgICBtX3Rlcm1pbmF0b3IgPSB0cnVl
OworICAgICAgICBtX2xpbmVTdGFydCA9IG1fY29kZTsKICAgICAgICAgZ290byBzdGFydDsKICAg
ICBjYXNlIENoYXJhY3RlckludmFsaWQ6CiAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gaW52
YWxpZENoYXJhY3Rlck1lc3NhZ2UoKTsKQEAgLTE2NzQsNiArMTY4OCw3IEBAIGluU2luZ2xlTGlu
ZUNvbW1lbnQ6CiAgICAgc2hpZnRMaW5lVGVybWluYXRvcigpOwogICAgIG1fYXRMaW5lU3RhcnQg
PSB0cnVlOwogICAgIG1fdGVybWluYXRvciA9IHRydWU7CisgICAgbV9saW5lU3RhcnQgPSBtX2Nv
ZGU7CiAgICAgaWYgKCFsYXN0VG9rZW5XYXNSZXN0cktleXdvcmQoKSkKICAgICAgICAgZ290byBz
dGFydDsKIApAQCAtMTY4Myw2ICsxNjk4LDggQEAgaW5TaW5nbGVMaW5lQ29tbWVudDoKIHJldHVy
blRva2VuOgogICAgIHRva2VuTG9jYXRpb24tPmxpbmUgPSBtX2xpbmVOdW1iZXI7CiAgICAgdG9r
ZW5Mb2NhdGlvbi0+ZW5kT2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOworICAgIHRva2VuTG9jYXRp
b24tPmxpbmVTdGFydE9mZnNldCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKKyAgICBBU1NF
UlQodG9rZW5Mb2NhdGlvbi0+ZW5kT2Zmc2V0ID49IHRva2VuTG9jYXRpb24tPmxpbmVTdGFydE9m
ZnNldCk7CiAgICAgbV9sYXN0VG9rZW4gPSB0b2tlbjsKICAgICByZXR1cm4gdG9rZW47CiAKQEAg
LTE2OTAsNiArMTcwNyw4IEBAIHJldHVybkVycm9yOgogICAgIG1fZXJyb3IgPSB0cnVlOwogICAg
IHRva2VuTG9jYXRpb24tPmxpbmUgPSBtX2xpbmVOdW1iZXI7CiAgICAgdG9rZW5Mb2NhdGlvbi0+
ZW5kT2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOworICAgIHRva2VuTG9jYXRpb24tPmxpbmVTdGFy
dE9mZnNldCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKKyAgICBBU1NFUlQodG9rZW5Mb2Nh
dGlvbi0+ZW5kT2Zmc2V0ID49IHRva2VuTG9jYXRpb24tPmxpbmVTdGFydE9mZnNldCk7CiAgICAg
UkVMRUFTRV9BU1NFUlQodG9rZW4gJiBFcnJvclRva2VuRmxhZyk7CiAgICAgcmV0dXJuIHRva2Vu
OwogfQpAQCAtMTgyOSwxMSArMTg0OCwxMSBAQCB2b2lkIExleGVyPFQ+OjpjbGVhcigpCiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotU291cmNlQ29kZSBMZXhlcjxUPjo6c291cmNlQ29kZShp
bnQgb3BlbkJyYWNlLCBpbnQgY2xvc2VCcmFjZSwgaW50IGZpcnN0TGluZSkKK1NvdXJjZUNvZGUg
TGV4ZXI8VD46OnNvdXJjZUNvZGUoaW50IG9wZW5CcmFjZSwgaW50IGNsb3NlQnJhY2UsIGludCBm
aXJzdExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uKQogewogICAgIEFTU0VSVChtX3NvdXJjZS0+
cHJvdmlkZXIoKS0+c291cmNlKClbb3BlbkJyYWNlXSA9PSAneycpOwogICAgIEFTU0VSVChtX3Nv
dXJjZS0+cHJvdmlkZXIoKS0+c291cmNlKClbY2xvc2VCcmFjZV0gPT0gJ30nKTsKLSAgICByZXR1
cm4gU291cmNlQ29kZShtX3NvdXJjZS0+cHJvdmlkZXIoKSwgb3BlbkJyYWNlLCBjbG9zZUJyYWNl
ICsgMSwgZmlyc3RMaW5lKTsKKyAgICByZXR1cm4gU291cmNlQ29kZShtX3NvdXJjZS0+cHJvdmlk
ZXIoKSwgb3BlbkJyYWNlLCBjbG9zZUJyYWNlICsgMSwgZmlyc3RMaW5lLCBzdGFydENvbHVtbik7
CiB9CiAKIC8vIEluc3RhbnRpYXRlIHRoZSB0d28gZmxhdm9ycyBvZiBMZXhlciB3ZSBuZWVkIGlu
c3RlYWQgb2YgcHV0dGluZyBtb3N0IG9mIHRoaXMgZmlsZSBpbiBMZXhlci5oCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCShyZXZpc2lvbiAxNTE5MjApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDExICs4
OSwxMiBAQCBwdWJsaWM6CiAgICAgSlNUb2tlblR5cGUgbGV4KEpTVG9rZW5EYXRhKiwgSlNUb2tl
bkxvY2F0aW9uKiwgdW5zaWduZWQsIGJvb2wgc3RyaWN0TW9kZSk7CiAgICAgYm9vbCBuZXh0VG9r
ZW5Jc0NvbG9uKCk7CiAgICAgaW50IGxpbmVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2xpbmVO
dW1iZXI7IH0KLSAgICBpbnQgY3VycmVudENoYXJQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29kZSAtIG1fY29kZVN0YXJ0UGx1c09mZnNldDsgfQorICAgIEFMV0FZU19JTkxJTkUgaW50IGN1
cnJlbnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBvZmZzZXRGcm9tQ29kZVB0cihtX2NvZGUpOyB9
CisgICAgQUxXQVlTX0lOTElORSBpbnQgY3VycmVudExpbmVTdGFydE9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG9mZnNldEZyb21Db2RlUHRyKG1fbGluZVN0YXJ0KTsgfQogICAgIHZvaWQgc2V0TGFz
dExpbmVOdW1iZXIoaW50IGxhc3RMaW5lTnVtYmVyKSB7IG1fbGFzdExpbmVOdW1iZXIgPSBsYXN0
TGluZU51bWJlcjsgfQogICAgIGludCBsYXN0TGluZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1f
bGFzdExpbmVOdW1iZXI7IH0KICAgICBib29sIHByZXZUZXJtaW5hdG9yKCkgY29uc3QgeyByZXR1
cm4gbV90ZXJtaW5hdG9yOyB9Ci0gICAgU291cmNlQ29kZSBzb3VyY2VDb2RlKGludCBvcGVuQnJh
Y2UsIGludCBjbG9zZUJyYWNlLCBpbnQgZmlyc3RMaW5lKTsKKyAgICBTb3VyY2VDb2RlIHNvdXJj
ZUNvZGUoaW50IG9wZW5CcmFjZSwgaW50IGNsb3NlQnJhY2UsIGludCBmaXJzdExpbmUsIHVuc2ln
bmVkIHN0YXJ0Q29sdW1uKTsKICAgICBib29sIHNjYW5SZWdFeHAoY29uc3QgSWRlbnRpZmllciom
IHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXIqJiBmbGFncywgVUNoYXIgcGF0dGVyblByZWZpeCA9
IDApOwogICAgIGJvb2wgc2tpcFJlZ0V4cCgpOwogCkBAIC0xMDEsMTEgKzEwMiwxNSBAQCBwdWJs
aWM6CiAgICAgYm9vbCBzYXdFcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0KICAgICBT
dHJpbmcgZ2V0RXJyb3JNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9sZXhFcnJvck1lc3NhZ2U7
IH0KICAgICB2b2lkIGNsZWFyKCk7Ci0gICAgdm9pZCBzZXRPZmZzZXQoaW50IG9mZnNldCkKKyAg
ICB2b2lkIHNldE9mZnNldChpbnQgb2Zmc2V0LCBpbnQgbGluZVN0YXJ0T2Zmc2V0KQogICAgIHsK
ICAgICAgICAgbV9lcnJvciA9IDA7CiAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gU3RyaW5n
KCk7Ci0gICAgICAgIG1fY29kZSA9IG1fY29kZVN0YXJ0ICsgb2Zmc2V0OworCisgICAgICAgIG1f
Y29kZSA9IGNvZGVQdHJGcm9tT2Zmc2V0KG9mZnNldCk7CisgICAgICAgIG1fbGluZVN0YXJ0ID0g
Y29kZVB0ckZyb21PZmZzZXQobGluZVN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKGN1cnJl
bnRPZmZzZXQoKSA+PSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCkpOworCiAgICAgICAgIG1fYnVm
ZmVyOC5yZXNpemUoMCk7CiAgICAgICAgIG1fYnVmZmVyMTYucmVzaXplKDApOwogICAgICAgICBp
ZiAoTElLRUxZKG1fY29kZSA8IG1fY29kZUVuZCkpCkBAIC0xNjUsMTAgKzE3MCwxMiBAQCBwcml2
YXRlOgogICAgIFVuaWNvZGVIZXhWYWx1ZSBwYXJzZUZvdXJEaWdpdFVuaWNvZGVIZXgoKTsKICAg
ICB2b2lkIHNoaWZ0TGluZVRlcm1pbmF0b3IoKTsKIAorICAgIEFMV0FZU19JTkxJTkUgaW50IG9m
ZnNldEZyb21Db2RlUHRyKGNvbnN0IFQqIHB0cikgY29uc3QgeyByZXR1cm4gcHRyIC0gbV9jb2Rl
U3RhcnQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IFQqIGNvZGVQdHJGcm9tT2Zmc2V0KGlu
dCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVN0YXJ0ICsgb2Zmc2V0OyB9CisKICAgICBT
dHJpbmcgaW52YWxpZENoYXJhY3Rlck1lc3NhZ2UoKSBjb25zdDsKLSAgICBBTFdBWVNfSU5MSU5F
IGNvbnN0IFQqIGN1cnJlbnRDaGFyYWN0ZXIoKSBjb25zdDsKLSAgICBBTFdBWVNfSU5MSU5FIGlu
dCBjdXJyZW50T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlIC0gbV9jb2RlU3RhcnQ7IH0K
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0T2Zmc2V0RnJvbUNoYXJPZmZzZXQoY29uc3QgVCog
Y2hhck9mZnNldCkgeyBzZXRPZmZzZXQoY2hhck9mZnNldCAtIG1fY29kZVN0YXJ0KTsgfQorICAg
IEFMV0FZU19JTkxJTkUgY29uc3QgVCogY3VycmVudENvZGVQdHIoKSBjb25zdDsKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0T2Zmc2V0RnJvbUNvZGVQdHIoY29uc3QgVCogY29kZVB0ciwgdW5z
aWduZWQgbGluZVN0YXJ0T2Zmc2V0KSB7IHNldE9mZnNldChvZmZzZXRGcm9tQ29kZVB0cihjb2Rl
UHRyKSwgbGluZVN0YXJ0T2Zmc2V0KTsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldENv
ZGVTdGFydChjb25zdCBTdHJpbmdJbXBsKik7CiAKQEAgLTIxMCwxMCArMjE3LDEyIEBAIHByaXZh
dGU6CiAgICAgaW50IG1fbGFzdFRva2VuOwogCiAgICAgY29uc3QgU291cmNlQ29kZSogbV9zb3Vy
Y2U7CisgICAgdW5zaWduZWQgbV9zb3VyY2VPZmZzZXQ7CiAgICAgY29uc3QgVCogbV9jb2RlOwog
ICAgIGNvbnN0IFQqIG1fY29kZVN0YXJ0OwogICAgIGNvbnN0IFQqIG1fY29kZUVuZDsKICAgICBj
b25zdCBUKiBtX2NvZGVTdGFydFBsdXNPZmZzZXQ7CisgICAgY29uc3QgVCogbV9saW5lU3RhcnQ7
CiAgICAgYm9vbCBtX2lzUmVwYXJzaW5nOwogICAgIGJvb2wgbV9hdExpbmVTdGFydDsKICAgICBi
b29sIG1fZXJyb3I7CkBAIC0zNTAsNiArMzU5LDcgQEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlw
ZSBMZXhlcjxUPjo6bGV4RQogICAgICAgICBtX2N1cnJlbnQgPSAwOwogCiAgICAgbV9jb2RlID0g
cHRyOworICAgIEFTU0VSVChjdXJyZW50T2Zmc2V0KCkgPj0gY3VycmVudExpbmVTdGFydE9mZnNl
dCgpKTsKIAogICAgIC8vIENyZWF0ZSB0aGUgaWRlbnRpZmllciBpZiBuZWVkZWQKICAgICBpZiAo
bGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcykKQEAgLTM1Nyw5ICszNjcs
MTEgQEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RQogICAgIGVsc2UK
ICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG1ha2VMQ2hhcklkZW50aWZpZXIoc3RhcnQsIHB0
ciAtIHN0YXJ0KTsKICAgICB0b2tlbkxvY2F0aW9uLT5saW5lID0gbV9saW5lTnVtYmVyOwotICAg
IHRva2VuTG9jYXRpb24tPnN0YXJ0T2Zmc2V0ID0gc3RhcnQgLSBtX2NvZGVTdGFydDsKKyAgICB0
b2tlbkxvY2F0aW9uLT5saW5lU3RhcnRPZmZzZXQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7
CisgICAgdG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQgPSBvZmZzZXRGcm9tQ29kZVB0cihzdGFy
dCk7CiAgICAgdG9rZW5Mb2NhdGlvbi0+ZW5kT2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOwotICAg
IHRva2VuTG9jYXRpb24tPmNoYXJQb3NpdGlvbiA9IGN1cnJlbnRDaGFyUG9zaXRpb24oKTsKKyAg
ICB0b2tlbkxvY2F0aW9uLT5zb3VyY2VPZmZzZXQgPSBtX3NvdXJjZU9mZnNldDsKKyAgICBBU1NF
UlQodG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQgPj0gdG9rZW5Mb2NhdGlvbi0+bGluZVN0YXJ0
T2Zmc2V0KTsKICAgICBtX2xhc3RUb2tlbiA9IElERU5UOwogICAgIHJldHVybiBJREVOVDsKICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVj
dG9ycy5oCShyZXZpc2lvbiAxNTE5MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVDb25zdHJ1Y3RvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsOCArNDQsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBpbmxpbmUgTm9kZTo6Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uKQogICAgICAgICA6IG1fbGluZU51bWJlcihsb2NhdGlvbi5saW5lKQotICAg
ICAgICAsIG1fY2hhclBvc2l0aW9uKGxvY2F0aW9uLmNoYXJQb3NpdGlvbikKKyAgICAgICAgLCBt
X3N0YXJ0T2Zmc2V0KGxvY2F0aW9uLnN0YXJ0T2Zmc2V0KQorICAgICAgICAsIG1fbGluZVN0YXJ0
T2Zmc2V0KGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCkKICAgICB7CisgICAgICAgIEFTU0VSVChs
b2NhdGlvbi5zdGFydE9mZnNldCA+PSBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgIH0K
IAogICAgIGlubGluZSBFeHByZXNzaW9uTm9kZTo6RXhwcmVzc2lvbk5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgUmVzdWx0VHlwZSByZXN1bHRUeXBlKQpAQCAtMTAwLDExICsx
MDIsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBSZXNv
bHZlTm9kZTo6UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIGludCBzdGFydE9mZnNldCkKK2lubGluZSBSZXNvbHZlTm9k
ZTo6UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBkaXZvdExpbmUs
IHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0
aW9uKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9zdGFydE9mZnNldChz
dGFydE9mZnNldCkKKyAgICAgICAgLCBtX2Rpdm90TGluZShkaXZvdExpbmUpCisgICAgICAgICwg
bV9kaXZvdExpbmVTdGFydChkaXZvdExpbmVTdGFydCkKICAgICB7CisgICAgICAgIEFTU0VSVCht
X3N0YXJ0T2Zmc2V0ID49IG1fZGl2b3RMaW5lU3RhcnQpOwogICAgIH0KIAogICAgIGlubGluZSBF
bGVtZW50Tm9kZTo6RWxlbWVudE5vZGUoaW50IGVsaXNpb24sIEV4cHJlc3Npb25Ob2RlKiBub2Rl
KQpAQCAtMjQxLDgwICsyNDYsODEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBFdmFsRnVuY3Rpb25DYWxsTm9kZTo6RXZhbEZ1bmN0aW9uQ2FsbE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAg
aW5saW5lIEV2YWxGdW5jdGlvbkNhbGxOb2RlOjpFdmFsRnVuY3Rpb25DYWxsTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQg
ZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsb2NhdGlvbikKLSAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwg
c3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFy
dCkKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICB7CisgICAgICAgIEFTU0VSVChkaXZvdCA+
PSBkaXZvdExpbmVTdGFydCk7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmN0aW9uQ2FsbFZhbHVl
Tm9kZTo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICBpbmxp
bmUgRnVuY3Rpb25DYWxsVmFsdWVOb2RlOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50c05v
ZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQog
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQotICAgICAgICAsIFRocm93YWJsZUV4
cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgICAgICAsIFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBkaXZv
dExpbmUsIGRpdm90TGluZVN0YXJ0KQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgICAgICAs
IG1fYXJncyhhcmdzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRnVuY3Rpb25DYWxsUmVz
b2x2ZU5vZGU6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkK
KyAgICBpbmxpbmUgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OkZ1bmN0aW9uQ2FsbFJlc29sdmVO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBk
aXZvdExpbmVTdGFydCkKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKLSAgICAg
ICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dCkKKyAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQs
IGVuZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgLCBtX2lkZW50
KGlkZW50KQogICAgICAgICAsIG1fYXJncyhhcmdzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxp
bmUgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNz
aW9uTm9kZSogc3Vic2NyaXB0LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICBpbmxpbmUgRnVu
Y3Rpb25DYWxsQnJhY2tldE5vZGU6OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9k
ZSogc3Vic2NyaXB0LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1
bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlv
bikKLSAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZz
ZXQsIGVuZE9mZnNldCkKKyAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZv
dCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCkKICAg
ICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQpCiAg
ICAgICAgICwgbV9hcmdzKGFyZ3MpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGdW5jdGlv
bkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
QXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgaW5saW5lIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkZ1
bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBh
cmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKLSAgICAgICAgLCBUaHJvd2FibGVTdWJFeHBy
ZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICAgICAgLCBUaHJv
d2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZGl2
b3RMaW5lLCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAg
LCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1fYXJncyhhcmdzKQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3RO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAg
IDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRpdm90
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgIGlubGluZSBDYWxsRnVuY3Rpb25DYWxsRG90
Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1
bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVT
dGFydCkKKyAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVu
dCwgYXJncywgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGRpdm90TGluZSwgZGl2b3RM
aW5lU3RhcnQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBcHBseUZ1bmN0aW9uQ2FsbERv
dE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFy
Z3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRp
b24sIGJhc2UsIGlkZW50LCBhcmdzLCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAg
ICBpbmxpbmUgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQg
ZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKKyAgICAgICAgOiBGdW5jdGlvbkNh
bGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIHN0YXJ0T2Zmc2V0
LCBlbmRPZmZzZXQsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpCiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBQb3N0Zml4Tm9kZTo6UG9zdGZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAg
ICA6IFByZWZpeE5vZGUobG9jYXRpb24sIGV4cHIsIG9wZXIsIGRpdm90LCBzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0KQorICAgIGlubGluZSBQb3N0Zml4Tm9kZTo6UG9zdGZpeE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9w
ZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQorICAgICAg
ICA6IFByZWZpeE5vZGUobG9jYXRpb24sIGV4cHIsIG9wZXIsIGRpdm90LCBzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgRGVsZXRlUmVzb2x2ZU5vZGU6OkRlbGV0ZVJlc29sdmVOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICBpbmxp
bmUgRGVsZXRlUmVzb2x2ZU5vZGU6OkRlbGV0ZVJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RM
aW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
b2NhdGlvbikKLSAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRP
ZmZzZXQsIGVuZE9mZnNldCkKKyAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZv
dCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCkKICAg
ICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRGVsZXRl
QnJhY2tldE5vZGU6OkRlbGV0ZUJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkK
KyAgICBpbmxpbmUgRGVsZXRlQnJhY2tldE5vZGU6OkRlbGV0ZUJyYWNrZXROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9u
Tm9kZSogc3Vic2NyaXB0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVT
dGFydCkKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKLSAgICAgICAgLCBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICAg
ICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAg
ICAgICAgLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQpCiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBEZWxldGVEb3ROb2RlOjpEZWxldGVEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisg
ICAgaW5saW5lIERlbGV0ZURvdE5vZGU6OkRlbGV0ZURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKLSAgICAgICAgLCBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICAgICAgLCBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZGl2b3RMaW5l
LCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lk
ZW50KGlkZW50KQogICAgIHsKQEAgLTM0NCw5ICszNTAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIFByZWZpeE5vZGU6OlByZWZpeE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9w
ZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KQorICAgIGlubGluZSBQcmVmaXhOb2RlOjpQcmVmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvciBvcGVyLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5z
aWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsb2NhdGlvbikKLSAgICAgICAgLCBUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJl
c3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgICAgICAsIFRocm93
YWJsZVByZWZpeGVkU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZz
ZXQsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAg
ICAgICAgICwgbV9vcGVyYXRvcihvcGVyKQogICAgIHsKQEAgLTUzMCwxNCArNTM2LDE2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVhZE1vZGlmeVJlc29s
dmVOb2RlOjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25O
b2RlKiAgcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgaW5saW5lIFJlYWRN
b2RpZnlSZXNvbHZlTm9kZTo6UmVhZE1vZGlmeVJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBF
eHByZXNzaW9uTm9kZSogIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCB1bnNpZ25l
ZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogICAgICAgICA6IEV4cHJlc3Np
b25Ob2RlKGxvY2F0aW9uKQotICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBkaXZvdExpbmUsIGRpdm90TGluZVN0
YXJ0KQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9yaWdodChyaWdodCkK
ICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCiAgICAgICAgICwgbV9yaWdodEhhc0Fzc2lnbm1l
bnRzKHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgeworICAgICAgICBBU1NFUlQoZGl2b3QgPj0g
ZGl2b3RMaW5lU3RhcnQpOworICAgICAgICBBU1NFUlQoZGl2b3QgLSBzdGFydE9mZnNldCA+PSBk
aXZvdExpbmVTdGFydCk7CiAgICAgfQogCiAgICAgaW5saW5lIEFzc2lnblJlc29sdmVOb2RlOjpB
c3NpZ25SZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0KQpAQCAtNTQ3LDkgKzU1NSw5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVhZE1vZGlm
eUJyYWNrZXROb2RlOjpSZWFkTW9kaWZ5QnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3Jp
cHQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRI
YXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICBpbmxpbmUgUmVh
ZE1vZGlmeUJyYWNrZXROb2RlOjpSZWFkTW9kaWZ5QnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBz
dWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJz
Y3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQg
ZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsb2NhdGlvbikKLSAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZv
dCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNz
aW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdExp
bmVTdGFydCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChz
dWJzY3JpcHQpCiAgICAgICAgICwgbV9yaWdodChyaWdodCkKQEAgLTU1OSw5ICs1NjcsOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFzc2lnbkJyYWNrZXRO
b2RlOjpBc3NpZ25CcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgRXhwcmVzc2lv
bk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KQorICAgIGlubGluZSBBc3NpZ25CcmFja2V0Tm9kZTo6QXNzaWduQnJhY2tl
dE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9v
bCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5z
aWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsb2NhdGlvbikKLSAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShk
aXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICAgICAgLCBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdExp
bmVTdGFydCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChz
dWJzY3JpcHQpCiAgICAgICAgICwgbV9yaWdodChyaWdodCkKQEAgLTU3MCw5ICs1NzgsOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFzc2lnbkRvdE5vZGU6
OkFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmln
aHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgaW5saW5lIEFzc2lnbkRvdE5vZGU6
OkFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmln
aHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWdu
ZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCi0g
ICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpCisgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zm
c2V0LCBlbmRPZmZzZXQsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgICwgbV9i
YXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX3JpZ2h0KHJp
Z2h0KQpAQCAtNTgwLDkgKzU4OCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgUmVhZE1vZGlmeURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgIGlubGluZSBSZWFkTW9kaWZ5RG90Tm9kZTo6UmVh
ZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBFeHBy
ZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRp
dm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobG9jYXRpb24pCi0gICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3Qs
IHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCisgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lv
bkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGRpdm90TGluZSwgZGl2b3RMaW5l
U3RhcnQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkK
ICAgICAgICAgLCBtX3JpZ2h0KHJpZ2h0KQpAQCAtNTkxLDkgKzU5OSw5IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXNzaWduRXJyb3JOb2RlOjpBc3NpZ25F
cnJvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgaW5saW5lIEFz
c2lnbkVycm9yTm9kZTo6QXNzaWduRXJyb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQotICAgICAgICAsIFRocm93YWJsZUV4cHJl
c3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgICAgICAsIFRocm93
YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBkaXZvdExp
bmUsIGRpdm90TGluZVN0YXJ0KQogICAgIHsKICAgICB9CiAKQEAgLTY5OCwxMSArNzA2LDEzIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgV2l0aE5vZGU6Oldp
dGhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBl
eHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIHVpbnQzMl90IGRpdm90LCB1aW50MzJfdCBl
eHByZXNzaW9uTGVuZ3RoKQorICAgIGlubGluZSBXaXRoTm9kZTo6V2l0aE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5v
ZGUqIHN0YXRlbWVudCwgdWludDMyX3QgZGl2b3QsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWdu
ZWQgZGl2b3RMaW5lU3RhcnQsIHVpbnQzMl90IGV4cHJlc3Npb25MZW5ndGgpCiAgICAgICAgIDog
U3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAg
LCBtX3N0YXRlbWVudChzdGF0ZW1lbnQpCiAgICAgICAgICwgbV9kaXZvdChkaXZvdCkKKyAgICAg
ICAgLCBtX2Rpdm90TGluZShkaXZvdExpbmUpCisgICAgICAgICwgbV9kaXZvdExpbmVTdGFydChk
aXZvdExpbmVTdGFydCkKICAgICAgICAgLCBtX2V4cHJlc3Npb25MZW5ndGgoZXhwcmVzc2lvbkxl
bmd0aCkKICAgICB7CiAgICAgfQpAQCAtODEyLDE2ICs4MjIsMTcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGb3JJbk5vZGU6OkZvckluTm9kZShWTSogdm0s
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBFeHByZXNzaW9uTm9kZSogaW4sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2Rl
KiBzdGF0ZW1lbnQsIGludCBkaXZvdCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KQor
ICAgIGlubGluZSBGb3JJbk5vZGU6OkZvckluTm9kZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSog
aW4sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIHVuc2ln
bmVkIGRpdm90LCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90
TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgIDogU3RhdGVtZW50Tm9kZShs
b2NhdGlvbikKICAgICAgICAgLCBtX2luaXQoMCkKLSAgICAgICAgLCBtX2xleHByKG5ldyAodm0p
IFJlc29sdmVOb2RlKGxvY2F0aW9uLCBpZGVudCwgZGl2b3QgLSBzdGFydE9mZnNldCkpCisgICAg
ICAgICwgbV9sZXhwcihuZXcgKHZtKSBSZXNvbHZlTm9kZShsb2NhdGlvbiwgaWRlbnQsIGRpdm90
IC0gc3RhcnRPZmZzZXQsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpKQogICAgICAgICAsIG1f
ZXhwcihleHByKQogICAgICAgICAsIG1fc3RhdGVtZW50KHN0YXRlbWVudCkKICAgICB7CiAgICAg
ICAgIGlmIChpbikgewogICAgICAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcg
KHZtKSBBc3NpZ25SZXNvbHZlTm9kZShsb2NhdGlvbiwgaWRlbnQsIGluKTsKLSAgICAgICAgICAg
IG5vZGUtPnNldEV4Y2VwdGlvblNvdXJjZUNvZGUoZGl2b3QsIGRpdm90IC0gc3RhcnRPZmZzZXQs
IGVuZE9mZnNldCAtIGRpdm90KTsKKyAgICAgICAgICAgIEFTU0VSVChkaXZvdCA+PSBkaXZvdExp
bmVTdGFydCk7CisgICAgICAgICAgICBub2RlLT5zZXRFeGNlcHRpb25Tb3VyY2VDb2RlKGRpdm90
LCBkaXZvdCAtIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQgLSBkaXZvdCwgZGl2b3RMaW5lLCBkaXZv
dExpbmVTdGFydCk7CiAgICAgICAgICAgICBtX2luaXQgPSBub2RlOwogICAgICAgICB9CiAgICAg
ICAgIC8vIGZvciggdmFyIGZvbyA9IGJhciBpbiBiYXogKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5jcHAJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxMSArNTIsMTMg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBT
dGF0ZW1lbnROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgU3Rh
dGVtZW50Tm9kZTo6c2V0TG9jKGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50IGNoYXJQ
b3NpdGlvbikKK3ZvaWQgU3RhdGVtZW50Tm9kZTo6c2V0TG9jKHVuc2lnbmVkIGZpcnN0TGluZSwg
dW5zaWduZWQgbGFzdExpbmUsIGludCBzdGFydE9mZnNldCwgaW50IGxpbmVTdGFydE9mZnNldCkK
IHsKICAgICBtX2xpbmVOdW1iZXIgPSBmaXJzdExpbmU7CiAgICAgbV9sYXN0TGluZSA9IGxhc3RM
aW5lOwotICAgIG1fY2hhclBvc2l0aW9uID0gY2hhclBvc2l0aW9uOworICAgIG1fc3RhcnRPZmZz
ZXQgPSBzdGFydE9mZnNldDsKKyAgICBtX2xpbmVTdGFydE9mZnNldCA9IGxpbmVTdGFydE9mZnNl
dDsKKyAgICBBU1NFUlQobV9zdGFydE9mZnNldCA+PSBtX2xpbmVTdGFydE9mZnNldCk7CiB9CiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTb3VyY2VFbGVtZW50cyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtODAsNyArODIsOCBAQCBTY29wZU5vZGU6OlNj
b3BlTm9kZShWTSogdm0sIGNvbnN0IEpTVG9rCiAgICAgOiBTdGF0ZW1lbnROb2RlKGVuZExvY2F0
aW9uKQogICAgICwgUGFyc2VyQXJlbmFSZWZDb3VudGVkKHZtKQogICAgICwgbV9zdGFydExpbmVO
dW1iZXIoc3RhcnRMb2NhdGlvbi5saW5lKQotICAgICwgbV9zdGFydENoYXJQb3NpdGlvbihzdGFy
dExvY2F0aW9uLmNoYXJQb3NpdGlvbikKKyAgICAsIG1fc3RhcnRTdGFydE9mZnNldChzdGFydExv
Y2F0aW9uLnN0YXJ0T2Zmc2V0KQorICAgICwgbV9zdGFydExpbmVTdGFydE9mZnNldChzdGFydExv
Y2F0aW9uLmxpbmVTdGFydE9mZnNldCkKICAgICAsIG1fZmVhdHVyZXMoaW5TdHJpY3RDb250ZXh0
ID8gU3RyaWN0TW9kZUZlYXR1cmUgOiBOb0ZlYXR1cmVzKQogICAgICwgbV9udW1Db25zdGFudHMo
MCkKICAgICAsIG1fc3RhdGVtZW50cygwKQpAQCAtOTEsNyArOTQsOCBAQCBTY29wZU5vZGU6OlNj
b3BlTm9kZShWTSogdm0sIGNvbnN0IEpTVG9rCiAgICAgOiBTdGF0ZW1lbnROb2RlKGVuZExvY2F0
aW9uKQogICAgICwgUGFyc2VyQXJlbmFSZWZDb3VudGVkKHZtKQogICAgICwgbV9zdGFydExpbmVO
dW1iZXIoc3RhcnRMb2NhdGlvbi5saW5lKQotICAgICwgbV9zdGFydENoYXJQb3NpdGlvbihzdGFy
dExvY2F0aW9uLmNoYXJQb3NpdGlvbikKKyAgICAsIG1fc3RhcnRTdGFydE9mZnNldChzdGFydExv
Y2F0aW9uLnN0YXJ0T2Zmc2V0KQorICAgICwgbV9zdGFydExpbmVTdGFydE9mZnNldChzdGFydExv
Y2F0aW9uLmxpbmVTdGFydE9mZnNldCkKICAgICAsIG1fZmVhdHVyZXMoZmVhdHVyZXMpCiAgICAg
LCBtX3NvdXJjZShzb3VyY2UpCiAgICAgLCBtX251bUNvbnN0YW50cyhudW1Db25zdGFudHMpCkBA
IC0xMTIsMTQgKzExNiwxNSBAQCBTdGF0ZW1lbnROb2RlKiBTY29wZU5vZGU6OnNpbmdsZVN0YXRl
bWVuCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm9ncmFtTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgUHJvZ3JhbU5vZGU6OlByb2dyYW1O
b2RlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZh
clN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0
JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVy
ZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCitpbmxpbmUgUHJvZ3JhbU5vZGU6OlByb2dy
YW1Ob2RlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgU291
cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sq
IGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQog
ICAgIDogU2NvcGVOb2RlKHZtLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc291cmNlLCBj
aGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVz
LCBudW1Db25zdGFudHMpCisgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogewogfQog
Ci1QYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBQcm9ncmFtTm9kZTo6Y3JlYXRlKFZNKiB2bSwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGVuZExvY2F0aW9uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFj
aywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlh
YmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGlu
dCBudW1Db25zdGFudHMpCitQYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBQcm9ncmFtTm9kZTo6Y3Jl
YXRlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgU291cmNl
RWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1
bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQogewot
ICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gbm9kZSA9IG5ldyBQcm9ncmFtTm9kZSh2bSwgc3RhcnRM
b2NhdGlvbiwgZW5kTG9jYXRpb24sIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCAgY2Fw
dHVyZWRWYXJpYWJsZXMsIHNvdXJjZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CisgICAgUmVm
UHRyPFByb2dyYW1Ob2RlPiBub2RlID0gbmV3IFByb2dyYW1Ob2RlKHZtLCBzdGFydExvY2F0aW9u
LCBlbmRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNr
LCAgY2FwdHVyZWRWYXJpYWJsZXMsIHNvdXJjZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CiAK
ICAgICBBU1NFUlQobm9kZS0+bV9hcmVuYS5sYXN0KCkgPT0gbm9kZSk7CiAgICAgbm9kZS0+bV9h
cmVuYS5yZW1vdmVMYXN0KCk7CkBAIC0xMzUsNyArMTQwLDcgQEAgaW5saW5lIEV2YWxOb2RlOjpF
dmFsTm9kZShWTSogdm0sIGNvbnN0IAogewogfQogCi1QYXNzUmVmUHRyPEV2YWxOb2RlPiBFdmFs
Tm9kZTo6Y3JlYXRlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9u
LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCBTb3VyY2VFbGVtZW50cyogY2hp
bGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVu
dGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBD
b2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCitQYXNzUmVmUHRyPEV2YWxO
b2RlPiBFdmFsTm9kZTo6Y3JlYXRlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFy
dExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCwg
U291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3Rh
Y2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRz
KQogewogICAgIFJlZlB0cjxFdmFsTm9kZT4gbm9kZSA9IG5ldyBFdmFsTm9kZSh2bSwgc3RhcnRM
b2NhdGlvbiwgZW5kTG9jYXRpb24sIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0
dXJlZFZhcmlhYmxlcywgc291cmNlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKIApAQCAtMTcz
LDEzICsxNzgsMTUgQEAgRnVuY3Rpb25QYXJhbWV0ZXJzOjp+RnVuY3Rpb25QYXJhbWV0ZXJzKAog
ICAgICAgICBpZGVudGlmaWVycygpW2ldLn5JZGVudGlmaWVyKCk7CiB9CiAKLWlubGluZSBGdW5j
dGlvbkJvZHlOb2RlOjpGdW5jdGlvbkJvZHlOb2RlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCBi
b29sIGluU3RyaWN0Q29udGV4dCkKK2lubGluZSBGdW5jdGlvbkJvZHlOb2RlOjpGdW5jdGlvbkJv
ZHlOb2RlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgYm9v
bCBpblN0cmljdENvbnRleHQpCiAgICAgOiBTY29wZU5vZGUodm0sIHN0YXJ0TG9jYXRpb24sIGVu
ZExvY2F0aW9uLCBpblN0cmljdENvbnRleHQpCisgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29s
dW1uKQogewogfQogCi1pbmxpbmUgRnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZShW
TSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFj
ayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2Fw
dHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJl
cyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKK2lubGluZSBGdW5jdGlvbkJvZHlOb2RlOjpG
dW5jdGlvbkJvZHlOb2RlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0
aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENv
bHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0
aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51
bUNvbnN0YW50cykKICAgICA6IFNjb3BlTm9kZSh2bSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRp
b24sIHNvdXJjZUNvZGUsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZh
cmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykKKyAgICAsIG1fc3RhcnRDb2x1bW4oc3Rh
cnRDb2x1bW4pCiB7CiB9CiAKQEAgLTE5NywxNCArMjA0LDE0IEBAIHZvaWQgRnVuY3Rpb25Cb2R5
Tm9kZTo6ZmluaXNoUGFyc2luZyhQYXMKICAgICBtX2Z1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2ds
ZSA9IGZ1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZTsKIH0KIAotRnVuY3Rpb25Cb2R5Tm9kZSog
RnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBz
dGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCBib29sIGlu
U3RyaWN0Q29udGV4dCkKK0Z1bmN0aW9uQm9keU5vZGUqIEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0
ZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIGJvb2wgaW5T
dHJpY3RDb250ZXh0KQogewotICAgIHJldHVybiBuZXcgRnVuY3Rpb25Cb2R5Tm9kZSh2bSwgc3Rh
cnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIGluU3RyaWN0Q29udGV4dCk7CisgICAgcmV0dXJuIG5l
dyBGdW5jdGlvbkJvZHlOb2RlKHZtLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc3RhcnRD
b2x1bW4sIGluU3RyaWN0Q29udGV4dCk7CiB9CiAKLVBhc3NSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9k
ZT4gRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCBTb3Vy
Y2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayog
ZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNl
Q29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRz
KQorUGFzc1JlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUo
Vk0qIHZtLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCBTb3VyY2VFbGVt
ZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0
YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQogewot
ICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBub2RlID0gbmV3IEZ1bmN0aW9uQm9keU5vZGUo
dm0sIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNT
dGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIHNvdXJjZUNvZGUsIGZlYXR1cmVzLCBudW1Db25zdGFu
dHMpOworICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBub2RlID0gbmV3IEZ1bmN0aW9uQm9k
eU5vZGUodm0sIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzdGFydENvbHVtbiwgY2hpbGRy
ZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBzb3VyY2VDb2RlLCBm
ZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKIAogICAgIEFTU0VSVChub2RlLT5tX2FyZW5hLmxhc3Qo
KSA9PSBub2RlKTsKICAgICBub2RlLT5tX2FyZW5hLnJlbW92ZUxhc3QoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDEyICsx
MzAsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgfk5vZGUoKSB7IH0KIAog
ICAgICAgICBpbnQgbGluZU5vKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9Ci0KLSAg
ICAgICAgaW50IGNoYXJQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hhclBvc2l0aW9uOyB9
CisgICAgICAgIGludCBzdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRPZmZzZXQ7
IH0KKyAgICAgICAgaW50IGxpbmVTdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZVN0
YXJ0T2Zmc2V0OyB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGludCBtX2xpbmVOdW1iZXI7
Ci0gICAgICAgIGludCBtX2NoYXJQb3NpdGlvbjsKKyAgICAgICAgaW50IG1fc3RhcnRPZmZzZXQ7
CisgICAgICAgIGludCBtX2xpbmVTdGFydE9mZnNldDsKICAgICB9OwogCiAgICAgY2xhc3MgRXhw
cmVzc2lvbk5vZGUgOiBwdWJsaWMgTm9kZSB7CkBAIC0xNzgsOSArMTc5LDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24gPSAwKSA9IDA7CiAKLSAg
ICAgICAgdm9pZCBzZXRMb2MoaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lLCBpbnQgY2hhclBv
c2l0aW9uKTsKLSAgICAgICAgaW50IGZpcnN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIGxpbmVObygp
OyB9Ci0gICAgICAgIGludCBsYXN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdExpbmU7IH0K
KyAgICAgICAgdm9pZCBzZXRMb2ModW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBsYXN0TGlu
ZSwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgbGluZVN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgdW5zaWdu
ZWQgZmlyc3RMaW5lKCkgY29uc3QgeyByZXR1cm4gbGluZU5vKCk7IH0KKyAgICAgICAgdW5zaWdu
ZWQgbGFzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RMaW5lOyB9CiAKICAgICAgICAgdmly
dHVhbCBib29sIGlzRW1wdHlTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNSZXR1cm5Ob2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
QEAgLTI1NCwzNiArMjU1LDQ4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAg
ICAgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoKQogICAgICAgICAgICAgOiBtX2Rpdm90KHN0YXRp
Y19jYXN0PHVpbnQzMl90PigtMSkpCi0gICAgICAgICAgICAsIG1fc3RhcnRPZmZzZXQoc3RhdGlj
X2Nhc3Q8dWludDE2X3Q+KC0xKSkKLSAgICAgICAgICAgICwgbV9lbmRPZmZzZXQoc3RhdGljX2Nh
c3Q8dWludDE2X3Q+KC0xKSkKKyAgICAgICAgICAgICwgbV9kaXZvdFN0YXJ0T2Zmc2V0KHN0YXRp
Y19jYXN0PHVpbnQxNl90PigtMSkpCisgICAgICAgICAgICAsIG1fZGl2b3RFbmRPZmZzZXQoc3Rh
dGljX2Nhc3Q8dWludDE2X3Q+KC0xKSkKKyAgICAgICAgICAgICwgbV9kaXZvdExpbmUoc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KC0xKSkKKyAgICAgICAgICAgICwgbV9kaXZvdExpbmVTdGFydChzdGF0
aWNfY2FzdDx1aW50MzJfdD4oLTEpKQogICAgICAgICB7CiAgICAgICAgIH0KICAgICAgICAgCi0g
ICAgICAgIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSh1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAg
ICAgICAgICAgIDogbV9kaXZvdChkaXZvdCkKLSAgICAgICAgICAgICwgbV9zdGFydE9mZnNldChz
dGFydE9mZnNldCkKLSAgICAgICAgICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zmc2V0KQorICAgICAg
ICAgICAgLCBtX2Rpdm90U3RhcnRPZmZzZXQoc3RhcnRPZmZzZXQpCisgICAgICAgICAgICAsIG1f
ZGl2b3RFbmRPZmZzZXQoZW5kT2Zmc2V0KQorICAgICAgICAgICAgLCBtX2Rpdm90TGluZShkaXZv
dExpbmUpCisgICAgICAgICAgICAsIG1fZGl2b3RMaW5lU3RhcnQoZGl2b3RMaW5lU3RhcnQpCiAg
ICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2Rpdm90ID49IG1fZGl2b3RMaW5lU3RhcnQp
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2b2lkIHNldEV4Y2VwdGlvblNvdXJjZUNv
ZGUodW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCisgICAgICAgIHZvaWQgc2V0RXhjZXB0aW9uU291cmNlQ29kZSh1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RM
aW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgeworICAgICAgICAgICAgQVNT
RVJUKGRpdm90ID49IGRpdm90TGluZVN0YXJ0KTsKICAgICAgICAgICAgIG1fZGl2b3QgPSBkaXZv
dDsKLSAgICAgICAgICAgIG1fc3RhcnRPZmZzZXQgPSBzdGFydE9mZnNldDsKLSAgICAgICAgICAg
IG1fZW5kT2Zmc2V0ID0gZW5kT2Zmc2V0OworICAgICAgICAgICAgbV9kaXZvdFN0YXJ0T2Zmc2V0
ID0gc3RhcnRPZmZzZXQ7CisgICAgICAgICAgICBtX2Rpdm90RW5kT2Zmc2V0ID0gZW5kT2Zmc2V0
OworICAgICAgICAgICAgbV9kaXZvdExpbmUgPSBkaXZvdExpbmU7CisgICAgICAgICAgICBtX2Rp
dm90TGluZVN0YXJ0ID0gZGl2b3RMaW5lU3RhcnQ7CiAgICAgICAgIH0KIAogICAgICAgICB1aW50
MzJfdCBkaXZvdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGl2b3Q7IH0KLSAgICAgICAgdWludDE2X3Qg
c3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0T2Zmc2V0OyB9Ci0gICAgICAgIHVp
bnQxNl90IGVuZE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kT2Zmc2V0OyB9CisgICAgICAg
IHVpbnQxNl90IGRpdm90U3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Rpdm90U3RhcnRP
ZmZzZXQ7IH0KKyAgICAgICAgdWludDE2X3QgZGl2b3RFbmRPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX2Rpdm90RW5kT2Zmc2V0OyB9CisgICAgICAgIHVpbnQzMl90IGRpdm90TGluZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGl2b3RMaW5lOyB9CisgICAgICAgIHVpbnQzMl90IGRpdm90TGluZVN0YXJ0
KCkgY29uc3QgeyByZXR1cm4gbV9kaXZvdExpbmVTdGFydDsgfQogCiAgICAgcHJvdGVjdGVkOgog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihCeXRlY29kZUdlbmVy
YXRvciYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB1
aW50MzJfdCBtX2Rpdm90OwotICAgICAgICB1aW50MTZfdCBtX3N0YXJ0T2Zmc2V0OwotICAgICAg
ICB1aW50MTZfdCBtX2VuZE9mZnNldDsKKyAgICAgICAgdWludDE2X3QgbV9kaXZvdFN0YXJ0T2Zm
c2V0OworICAgICAgICB1aW50MTZfdCBtX2Rpdm90RW5kT2Zmc2V0OworICAgICAgICB1aW50MzJf
dCBtX2Rpdm90TGluZTsKKyAgICAgICAgdWludDMyX3QgbV9kaXZvdExpbmVTdGFydDsKICAgICB9
OwogCiAgICAgY2xhc3MgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgOiBwdWJsaWMgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEgewpAQCAtMjkxLDI4ICszMDQsNDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKCkKICAgICAgICAgICAgIDogbV9z
dWJleHByZXNzaW9uRGl2b3RPZmZzZXQoMCkKICAgICAgICAgICAgICwgbV9zdWJleHByZXNzaW9u
RW5kT2Zmc2V0KDApCisgICAgICAgICAgICAsIG1fc3ViZXhwcmVzc2lvbkxpbmVPZmZzZXQoMCkK
KyAgICAgICAgICAgICwgbV9zdWJleHByZXNzaW9uTGluZVN0YXJ0T2Zmc2V0KDApCiAgICAgICAg
IHsKICAgICAgICAgfQogCi0gICAgICAgIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAg
ICAgICAgICAgOiBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldCkKKyAgICAgICAgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEodW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRp
dm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpCisgICAgICAgICAgICA6IFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBkaXZvdExpbmUs
IGRpdm90TGluZVN0YXJ0KQogICAgICAgICAgICAgLCBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNl
dCgwKQogICAgICAgICAgICAgLCBtX3N1YmV4cHJlc3Npb25FbmRPZmZzZXQoMCkKKyAgICAgICAg
ICAgICwgbV9zdWJleHByZXNzaW9uTGluZU9mZnNldCgwKQorICAgICAgICAgICAgLCBtX3N1YmV4
cHJlc3Npb25MaW5lU3RhcnRPZmZzZXQoMCkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgdm9pZCBzZXRTdWJleHByZXNzaW9uSW5mbyh1aW50MzJfdCBzdWJleHByZXNzaW9uRGl2b3Qs
IHVpbnQxNl90IHN1YmV4cHJlc3Npb25PZmZzZXQpCisgICAgICAgIHZvaWQgc2V0U3ViZXhwcmVz
c2lvbkluZm8odWludDMyX3Qgc3ViZXhwcmVzc2lvbkRpdm90LCB1aW50MTZfdCBzdWJleHByZXNz
aW9uT2Zmc2V0LCB1aW50MzJfdCBzdWJleHByZXNzaW9uTGluZSwgdWludDMyX3Qgc3ViZXhwcmVz
c2lvbkxpbmVTdGFydCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHN1YmV4cHJlc3Np
b25EaXZvdCA8PSBkaXZvdCgpKTsKLSAgICAgICAgICAgIGlmICgoZGl2b3QoKSAtIHN1YmV4cHJl
c3Npb25EaXZvdCkgJiB+MHhGRkZGKSAvLyBPdmVyZmxvdyBtZWFucyB3ZSBjYW4ndCBkbyB0aGlz
IHNhZmVseSwgc28ganVzdCBwb2ludCBhdCB0aGUgcHJpbWFyeSBkaXZvdAorICAgICAgICAgICAg
Ly8gT3ZlcmZsb3cgbWVhbnMgd2UgY2FuJ3QgZG8gdGhpcyBzYWZlbHksIHNvIGp1c3QgcG9pbnQg
YXQgdGhlIHByaW1hcnkgZGl2b3QsCisgICAgICAgICAgICAvLyBkaXZvdExpbmUsIG9yIGRpdm90
TGluZVN0YXJ0LgorICAgICAgICAgICAgaWYgKChkaXZvdCgpIC0gc3ViZXhwcmVzc2lvbkRpdm90
KSAmIH4weEZGRkYpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKChk
aXZvdExpbmUoKSAtIHN1YmV4cHJlc3Npb25MaW5lKSAmIH4weEZGRkYpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKChkaXZvdExpbmVTdGFydCgpIC0gc3ViZXhwcmVz
c2lvbkxpbmVTdGFydCkgJiB+MHhGRkZGKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0ID0gZGl2b3QoKSAtIHN1YmV4cHJlc3Np
b25EaXZvdDsKICAgICAgICAgICAgIG1fc3ViZXhwcmVzc2lvbkVuZE9mZnNldCA9IHN1YmV4cHJl
c3Npb25PZmZzZXQ7CisgICAgICAgICAgICBtX3N1YmV4cHJlc3Npb25MaW5lT2Zmc2V0ID0gZGl2
b3RMaW5lKCkgLSBzdWJleHByZXNzaW9uTGluZTsKKyAgICAgICAgICAgIG1fc3ViZXhwcmVzc2lv
bkxpbmVTdGFydE9mZnNldCA9IGRpdm90TGluZVN0YXJ0KCkgLSBzdWJleHByZXNzaW9uTGluZVN0
YXJ0OwogICAgICAgICB9CiAKKyAgICAgICAgdW5zaWduZWQgc3ViZXhwcmVzc2lvbkRpdm90KCkg
eyByZXR1cm4gZGl2b3QoKSAtIG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0OyB9CisgICAgICAg
IHVuc2lnbmVkIHN1YmV4cHJlc3Npb25TdGFydE9mZnNldCgpIHsgcmV0dXJuIGRpdm90U3RhcnRP
ZmZzZXQoKSAtIG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0OyB9CisgICAgICAgIHVuc2lnbmVk
IHN1YmV4cHJlc3Npb25FbmRPZmZzZXQoKSB7IHJldHVybiBtX3N1YmV4cHJlc3Npb25FbmRPZmZz
ZXQ7IH0KKyAgICAgICAgdW5zaWduZWQgc3ViZXhwcmVzc2lvbkxpbmUoKSB7IHJldHVybiBkaXZv
dExpbmUoKSAtIG1fc3ViZXhwcmVzc2lvbkxpbmVPZmZzZXQ7IH0KKyAgICAgICAgdW5zaWduZWQg
c3ViZXhwcmVzc2lvbkxpbmVTdGFydCgpIHsgcmV0dXJuIGRpdm90TGluZVN0YXJ0KCkgLSBtX3N1
YmV4cHJlc3Npb25MaW5lU3RhcnRPZmZzZXQ7IH0KKwogICAgIHByb3RlY3RlZDoKICAgICAgICAg
dWludDE2X3QgbV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQ7CiAgICAgICAgIHVpbnQxNl90IG1f
c3ViZXhwcmVzc2lvbkVuZE9mZnNldDsKKyAgICAgICAgdWludDE2X3QgbV9zdWJleHByZXNzaW9u
TGluZU9mZnNldDsKKyAgICAgICAgdWludDE2X3QgbV9zdWJleHByZXNzaW9uTGluZVN0YXJ0T2Zm
c2V0OwogICAgIH07CiAgICAgCiAgICAgY2xhc3MgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNz
aW9uRGF0YSA6IHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CkBAIC0zMjAsMjggKzM1
Myw0OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHBy
ZXNzaW9uRGF0YSgpCiAgICAgICAgICAgICA6IG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0KDAp
CiAgICAgICAgICAgICAsIG1fc3ViZXhwcmVzc2lvblN0YXJ0T2Zmc2V0KDApCisgICAgICAgICAg
ICAsIG1fc3ViZXhwcmVzc2lvbkxpbmVPZmZzZXQoMCkKKyAgICAgICAgICAgICwgbV9zdWJleHBy
ZXNzaW9uTGluZVN0YXJ0T2Zmc2V0KDApCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAg
IFRocm93YWJsZVByZWZpeGVkU3ViRXhwcmVzc2lvbkRhdGEodW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgICAgICA6IFRocm93
YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgICAg
ICBUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhKHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBkaXZvdExpbmUs
IHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQorICAgICAgICAgICAgOiBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdExp
bmVTdGFydCkKICAgICAgICAgICAgICwgbV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQoMCkKICAg
ICAgICAgICAgICwgbV9zdWJleHByZXNzaW9uU3RhcnRPZmZzZXQoMCkKKyAgICAgICAgICAgICwg
bV9zdWJleHByZXNzaW9uTGluZU9mZnNldCgwKQorICAgICAgICAgICAgLCBtX3N1YmV4cHJlc3Np
b25MaW5lU3RhcnRPZmZzZXQoMCkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdm9p
ZCBzZXRTdWJleHByZXNzaW9uSW5mbyh1aW50MzJfdCBzdWJleHByZXNzaW9uRGl2b3QsIHVpbnQx
Nl90IHN1YmV4cHJlc3Npb25PZmZzZXQpCisgICAgICAgIHZvaWQgc2V0U3ViZXhwcmVzc2lvbklu
Zm8odWludDMyX3Qgc3ViZXhwcmVzc2lvbkRpdm90LCB1aW50MTZfdCBzdWJleHByZXNzaW9uT2Zm
c2V0LCB1aW50MzJfdCBzdWJleHByZXNzaW9uTGluZSwgdWludDMyX3Qgc3ViZXhwcmVzc2lvbkxp
bmVTdGFydCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHN1YmV4cHJlc3Npb25EaXZv
dCA+PSBkaXZvdCgpKTsKLSAgICAgICAgICAgIGlmICgoc3ViZXhwcmVzc2lvbkRpdm90IC0gZGl2
b3QoKSkgJiB+MHhGRkZGKSAvLyBPdmVyZmxvdyBtZWFucyB3ZSBjYW4ndCBkbyB0aGlzIHNhZmVs
eSwgc28ganVzdCBwb2ludCBhdCB0aGUgcHJpbWFyeSBkaXZvdAorICAgICAgICAgICAgLy8gT3Zl
cmZsb3cgbWVhbnMgd2UgY2FuJ3QgZG8gdGhpcyBzYWZlbHksIHNvIGp1c3QgcG9pbnQgYXQgdGhl
IHByaW1hcnkgZGl2b3QsCisgICAgICAgICAgICAvLyBkaXZvdExpbmUsIG9yIGRpdm90TGluZVN0
YXJ0LgorICAgICAgICAgICAgaWYgKChzdWJleHByZXNzaW9uRGl2b3QgLSBkaXZvdCgpKSAmIH4w
eEZGRkYpIAorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmICgoc3ViZXhw
cmVzc2lvbkxpbmUgLSBkaXZvdExpbmUoKSkgJiB+MHhGRkZGKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIGlmICgoc3ViZXhwcmVzc2lvbkxpbmVTdGFydCAtIGRpdm90TGlu
ZVN0YXJ0KCkpICYgfjB4RkZGRikKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNldCA9IHN1YmV4cHJlc3Npb25EaXZvdCAtIGRpdm90
KCk7CiAgICAgICAgICAgICBtX3N1YmV4cHJlc3Npb25TdGFydE9mZnNldCA9IHN1YmV4cHJlc3Np
b25PZmZzZXQ7CisgICAgICAgICAgICBtX3N1YmV4cHJlc3Npb25MaW5lT2Zmc2V0ID0gc3ViZXhw
cmVzc2lvbkxpbmUgLSBkaXZvdExpbmUoKTsKKyAgICAgICAgICAgIG1fc3ViZXhwcmVzc2lvbkxp
bmVTdGFydE9mZnNldCA9IHN1YmV4cHJlc3Npb25MaW5lU3RhcnQgLSBkaXZvdExpbmVTdGFydCgp
OwogICAgICAgICB9CiAKKyAgICAgICAgdW5zaWduZWQgc3ViZXhwcmVzc2lvbkRpdm90KCkgeyBy
ZXR1cm4gZGl2b3QoKSArIG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0OyB9CisgICAgICAgIHVu
c2lnbmVkIHN1YmV4cHJlc3Npb25TdGFydE9mZnNldCgpIHsgcmV0dXJuIG1fc3ViZXhwcmVzc2lv
blN0YXJ0T2Zmc2V0OyB9CisgICAgICAgIHVuc2lnbmVkIHN1YmV4cHJlc3Npb25FbmRPZmZzZXQo
KSB7IHJldHVybiBkaXZvdEVuZE9mZnNldCgpICsgbV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQ7
IH0KKyAgICAgICAgdW5zaWduZWQgc3ViZXhwcmVzc2lvbkxpbmUoKSB7IHJldHVybiBkaXZvdExp
bmUoKSArIG1fc3ViZXhwcmVzc2lvbkxpbmVPZmZzZXQ7IH0KKyAgICAgICAgdW5zaWduZWQgc3Vi
ZXhwcmVzc2lvbkxpbmVTdGFydCgpIHsgcmV0dXJuIGRpdm90TGluZVN0YXJ0KCkgKyBtX3N1YmV4
cHJlc3Npb25MaW5lU3RhcnRPZmZzZXQ7IH0KKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgdWlu
dDE2X3QgbV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQ7CiAgICAgICAgIHVpbnQxNl90IG1fc3Vi
ZXhwcmVzc2lvblN0YXJ0T2Zmc2V0OworICAgICAgICB1aW50MTZfdCBtX3N1YmV4cHJlc3Npb25M
aW5lT2Zmc2V0OworICAgICAgICB1aW50MTZfdCBtX3N1YmV4cHJlc3Npb25MaW5lU3RhcnRPZmZz
ZXQ7CiAgICAgfTsKIAogICAgIGNsYXNzIFJlZ0V4cE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5v
ZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CkBAIC0zNjUsNyArNDE4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZXNvbHZlTm9kZSA6IHB1YmxpYyBFeHByZXNz
aW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBSZXNvbHZlTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgaW50IHN0YXJ0T2Zmc2V0KTsKKyAgICAgICAg
UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGlu
ZVN0YXJ0KTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudDsgfQogCkBAIC0zNzcsNyArNDMwLDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Jlc29sdmVOb2RlKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7Ci0gICAgICAgIGludDMy
X3QgbV9zdGFydE9mZnNldDsKKyAgICAgICAgdWludDMyX3QgbV9zdGFydE9mZnNldDsKKyAgICAg
ICAgdWludDMyX3QgbV9kaXZvdExpbmU7CisgICAgICAgIHVpbnQzMl90IG1fZGl2b3RMaW5lU3Rh
cnQ7CiAgICAgfTsKIAogICAgIGNsYXNzIEVsZW1lbnROb2RlIDogcHVibGljIFBhcnNlckFyZW5h
RnJlZWFibGUgewpAQCAtNDAxLDcgKzQ1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBB
cnJheU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRWxlbWVudE5vZGUqKTsKICAgICAgICAg
QXJyYXlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCBlbGlzaW9uLCBFbGVtZW50Tm9k
ZSopOwogCi0gICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIHRvQXJndW1lbnRMaXN0KFZNKiwgaW50
LCBpbnQpIGNvbnN0OworICAgICAgICBBcmd1bWVudExpc3ROb2RlKiB0b0FyZ3VtZW50TGlzdChW
TSosIGludCwgaW50LCB1bnNpZ25lZCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCk7CkBAIC01MjQsNyArNTc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBFdmFsRnVuY3Rpb25DYWxsTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGlj
IFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEV2YWxGdW5j
dGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEFyZ3VtZW50c05vZGUqLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7Cisg
ICAgICAgIEV2YWxGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEFyZ3Vt
ZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCk7
CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01MzQsNyArNTg5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAg
ICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBGdW5j
dGlvbkNhbGxWYWx1ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
LCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5l
U3RhcnQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTQ1LDcg
KzYwMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25DYWxsUmVzb2x2
ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsK
KyAgICAgICAgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Y29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1
bnNpZ25lZCBkaXZvdExpbmVTdGFydCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCk7CkBAIC01NTYsNyArNjExLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xh
c3MgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1Ymxp
YyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5j
dGlvbkNhbGxCcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgQXJndW1lbnRzTm9kZSosIHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAg
ICAgICAgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEFyZ3VtZW50c05v
ZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCk7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01NjgsNyArNjIzLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkNhbGxEb3ROb2RlIDogcHVibGljIEV4
cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1
YmxpYzoKLSAgICAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUq
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCk7CisgICAgICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQs
IHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTgxLDcgKzYzNiw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMgRnVu
Y3Rpb25DYWxsRG90Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBDYWxsRnVuY3Rpb25DYWxs
RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIENhbGxGdW5jdGlvbkNh
bGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVu
c2lnbmVkIGRpdm90TGluZVN0YXJ0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKQEAgLTU4OSw3ICs2NDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFz
cyBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMgRnVuY3Rpb25DYWxsRG90Tm9kZSB7
CiAgICAgcHVibGljOgotICAgICAgICBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBB
cmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpOworICAgICAgICBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
LCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5l
U3RhcnQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTk3LDcg
KzY1Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRGVsZXRlUmVzb2x2ZU5vZGUg
OiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7
CiAgICAgcHVibGljOgotICAgICAgICBEZWxldGVSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBEZWxldGVSZXNvbHZlTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90
TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApOwpAQCAtNjA3LDcgKzY2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgRGVsZXRlQnJhY2tldE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBEZWxldGVCcmFj
a2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhw
cmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBEZWxldGVCcmFja2V0Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUq
IHN1YnNjcmlwdCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQp
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNjE4LDcgKzY3Myw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRGVsZXRlRG90Tm9kZSA6IHB1YmxpYyBF
eHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIERlbGV0ZURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIERlbGV0ZURvdE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCk7
CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02NzEsNyArNzI2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcmVmaXhOb2RlIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNzaW9uRGF0YSB7CiAg
ICAgcHVibGljOgotICAgICAgICBQcmVmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUHJlZml4Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RM
aW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCk7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKTsKQEAgLTY4NSw3ICs3NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIFBvc3RmaXhOb2RlIDogcHVibGljIFByZWZpeE5vZGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgUG9zdGZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
LCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpOworICAgICAgICBQb3N0Zml4Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSosIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25l
ZCBkaXZvdExpbmVTdGFydCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7
CkBAIC05MjgsNyArOTgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWFkTW9k
aWZ5UmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBSZWFkTW9kaWZ5UmVzb2x2ZU5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCBF
eHByZXNzaW9uTm9kZSogIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAg
ICAgUmVhZE1vZGlmeVJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElk
ZW50aWZpZXImLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqICByaWdodCwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCwgdW5zaWduZWQgbGluZSwgdW5zaWduZWQgbGluZVN0YXJ0KTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTk1Miw3ICsxMDA3LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWFkTW9kaWZ5QnJhY2tldE5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAg
cHVibGljOgotICAgICAgICBSZWFkTW9kaWZ5QnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9w
ZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVu
dHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBSZWFkTW9kaWZ5QnJhY2tl
dE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJl
c3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJv
b2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVu
c2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtOTY3LDcgKzEwMjIsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIEFzc2lnbkJyYWNrZXROb2RlIDogcHVibGljIEV4cHJlc3Npb25O
b2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgQXNzaWduQnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEV4cHJlc3Npb25Ob2RlKiByaWdo
dCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCk7CisgICAgICAgIEFzc2lnbkJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBFeHByZXNzaW9u
Tm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQp
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtOTgxLDcgKzEwMzYs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFzc2lnbkRvdE5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVi
bGljOgotICAgICAgICBBc3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgQXNzaWduRG90Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5z
aWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCk7CiAKICAgICBwcml2YXRl
OgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC05OTQsNyArMTA0OSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgUmVhZE1vZGlmeURvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5v
ZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAg
ICAgICBSZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSog
cmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBSZWFkTW9kaWZ5RG90
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3Rh
cnQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTAwOCw3ICsx
MDYzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBc3NpZ25FcnJvck5vZGUgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAg
ICAgcHVibGljOgotICAgICAgICBBc3NpZ25FcnJvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpOworICAgICAgICBBc3NpZ25FcnJvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVu
c2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTE4NCw3ICsxMjM5LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgY2xhc3MgRm9ySW5Ob2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1Ymxp
YyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgogICAgICAgICBGb3JJbk5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBFeHByZXNzaW9uTm9k
ZSosIFN0YXRlbWVudE5vZGUqKTsKLSAgICAgICAgRm9ySW5Ob2RlKFZNKiwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgRXhwcmVzc2lv
bk5vZGUqLCBTdGF0ZW1lbnROb2RlKiwgaW50IGRpdm90LCBpbnQgc3RhcnRPZmZzZXQsIGludCBl
bmRPZmZzZXQpOworICAgICAgICBGb3JJbk5vZGUoVk0qLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBFeHByZXNzaW9uTm9kZSosIFN0
YXRlbWVudE5vZGUqLCB1bnNpZ25lZCBkaXZvdCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zm
c2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTIzNyw3ICsxMjkyLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBXaXRoTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIFdpdGhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSosIHVpbnQzMl90IGRpdm90LCB1aW50MzJfdCBleHBy
ZXNzaW9uTGVuZ3RoKTsKKyAgICAgICAgV2l0aE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKiwgdWludDMyX3QgZGl2b3QsIHVuc2lnbmVk
IGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQsIHVpbnQzMl90IGV4cHJlc3Npb25M
ZW5ndGgpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMjQ1LDYgKzEzMDAs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAg
ICAgICAgU3RhdGVtZW50Tm9kZSogbV9zdGF0ZW1lbnQ7CiAgICAgICAgIHVpbnQzMl90IG1fZGl2
b3Q7CisgICAgICAgIHVpbnQzMl90IG1fZGl2b3RMaW5lOworICAgICAgICB1aW50MzJfdCBtX2Rp
dm90TGluZVN0YXJ0OwogICAgICAgICB1aW50MzJfdCBtX2V4cHJlc3Npb25MZW5ndGg7CiAgICAg
fTsKIApAQCAtMTMxOSw3ICsxMzc2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGludHB0
cl90IHNvdXJjZUlEKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UucHJvdmlkZXJJRCgpOyB9CiAK
ICAgICAgICAgaW50IHN0YXJ0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRMaW5lTnVtYmVy
OyB9Ci0gICAgICAgIGludCBzdGFydENoYXJQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
cnRDaGFyUG9zaXRpb247fQorICAgICAgICBpbnQgc3RhcnRTdGFydE9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhcnRTdGFydE9mZnNldDsgfQorICAgICAgICBpbnQgc3RhcnRMaW5lU3RhcnRP
ZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0TGluZVN0YXJ0T2Zmc2V0OyB9CiAKICAgICAg
ICAgdm9pZCBzZXRGZWF0dXJlcyhDb2RlRmVhdHVyZXMgZmVhdHVyZXMpIHsgbV9mZWF0dXJlcyA9
IGZlYXR1cmVzOyB9CiAgICAgICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcygpIHsgcmV0dXJuIG1f
ZmVhdHVyZXM7IH0KQEAgLTEzNTQsNyArMTQxMiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBQYXJzZXJBcmVuYSBtX2FyZW5hOwogCiAgICAgICAgIGludCBtX3N0YXJ0TGluZU51bWJlcjsK
LSAgICAgICAgaW50IG1fc3RhcnRDaGFyUG9zaXRpb247CisgICAgICAgIHVuc2lnbmVkIG1fc3Rh
cnRTdGFydE9mZnNldDsKKyAgICAgICAgdW5zaWduZWQgbV9zdGFydExpbmVTdGFydE9mZnNldDsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1cmVzOwpAQCAtMTM2
OSwyMCArMTQyOCwyNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBQcm9ncmFtTm9kZSA6
IHB1YmxpYyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNGdW5jdGlvbk5vZGUgPSBmYWxzZTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJv
Z3JhbU5vZGU+IGNyZWF0ZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rp
b25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJvZ3JhbU5v
ZGU+IGNyZWF0ZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBW
YXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29k
ZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisKKyAgICAgICAgdW5zaWduZWQg
c3RhcnRDb2x1bW4oKSB7IHJldHVybiBtX3N0YXJ0Q29sdW1uOyB9CiAKICAgICAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gZmFsc2U7CiAKICAgICBwcml2YXRlOgotICAg
ICAgICBQcm9ncmFtTm9kZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rp
b25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgUHJvZ3JhbU5vZGUoVk0qLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQg
c3RhcnRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwg
SWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1D
b25zdGFudHMpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOworCisgICAgICAgIHVuc2lnbmVkIG1fc3RhcnRD
b2x1bW47CiAgICAgfTsKIAogICAgIGNsYXNzIEV2YWxOb2RlIDogcHVibGljIFNjb3BlTm9kZSB7
CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc0Z1bmN0aW9uTm9kZSA9
IGZhbHNlOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxFdmFsTm9kZT4gY3JlYXRlKFZNKiwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQs
IFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNl
dCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwor
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxFdmFsTm9kZT4gY3JlYXRlKFZNKiwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVk
IHN0YXJ0Q29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayos
IElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVt
Q29uc3RhbnRzKTsKKworICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbigpIHsgcmV0dXJuIDE7
IH0KIAogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzY29wZUlzRnVuY3Rpb24gPSBmYWxzZTsK
IApAQCAtMTQxNCw4ICsxNDc5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rp
b25Cb2R5Tm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNGdW5jdGlvbk5vZGUgPSB0cnVlOwotICAgICAgICBzdGF0aWMgRnVu
Y3Rpb25Cb2R5Tm9kZSogY3JlYXRlKFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIGJvb2wgaXNTdHJpY3RNb2RlKTsKLSAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gY3JlYXRlKFZNKiwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIFNvdXJjZUVs
ZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0
IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAgICBz
dGF0aWMgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlKFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1u
LCBib29sIGlzU3RyaWN0TW9kZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZ1bmN0aW9u
Qm9keU5vZGU+IGNyZWF0ZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgU291cmNlRWxlbWVu
dHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291
cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgRnVu
Y3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJz
LmdldCgpOyB9CiAgICAgICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFyYW1ldGVycy0+c2l6ZSgpOyB9CkBAIC0xNDM0LDE4ICsxNDk5LDIwIEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIHZvaWQgc2V0RnVuY3Rpb25TdGFydChpbnQgZnVuY3Rpb25TdGFy
dCkgeyBtX2Z1bmN0aW9uU3RhcnQgPSBmdW5jdGlvblN0YXJ0OyB9CiAgICAgICAgIGludCBmdW5j
dGlvblN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblN0YXJ0OyB9CisgICAgICAgIHVu
c2lnbmVkIHN0YXJ0Q29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydENvbHVtbjsgfQogCiAg
ICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNjb3BlSXNGdW5jdGlvbiA9IHRydWU7CiAKICAgICBw
cml2YXRlOgotICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIGJvb2wgaW5TdHJpY3RDb250
ZXh0KTsKLSAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCBTb3VyY2VFbGVtZW50cyosIFZh
clN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2Rl
JiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgRnVuY3Rpb25Cb2R5
Tm9kZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgYm9vbCBpblN0cmljdENvbnRleHQpOwor
ICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFy
dCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCBTb3Vy
Y2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBj
b25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAg
ICAgICBJZGVudGlmaWVyIG1faWRlbnQ7CiAgICAgICAgIElkZW50aWZpZXIgbV9pbmZlcnJlZE5h
bWU7CiAgICAgICAgIEZ1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZSBtX2Z1bmN0aW9uTmFtZUlz
SW5TY29wZVRvZ2dsZTsKICAgICAgICAgUmVmUHRyPEZ1bmN0aW9uUGFyYW1ldGVycz4gbV9wYXJh
bWV0ZXJzOwogICAgICAgICBpbnQgbV9mdW5jdGlvblN0YXJ0OworICAgICAgICB1bnNpZ25lZCBt
X3N0YXJ0Q29sdW1uOwogICAgIH07CiAKICAgICBjbGFzcyBGdW5jRXhwck5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcAkocmV2aXNpb24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw5IEBAIFBhcnNlcjxMZXhlclR5
cGU+OjpQYXJzZXIoVk0qIHZtLCBjb25zdCAKICAgICBtX2xleGVyID0gYWRvcHRQdHIobmV3IExl
eGVyVHlwZSh2bSkpOwogICAgIG1fYXJlbmEgPSBtX3ZtLT5wYXJzZXJBcmVuYS5nZXQoKTsKICAg
ICBtX2xleGVyLT5zZXRDb2RlKHNvdXJjZSwgbV9hcmVuYSk7CisgICAgbV90b2tlbi5tX2xvY2F0
aW9uLnNvdXJjZU9mZnNldCA9IHNvdXJjZS5zdGFydE9mZnNldCgpOworICAgIG1fdG9rZW4ubV9s
b2NhdGlvbi5lbmRPZmZzZXQgPSBzb3VyY2Uuc3RhcnRPZmZzZXQoKTsKKyAgICBtX3Rva2VuLm1f
bG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0ID0gc291cmNlLnN0YXJ0T2Zmc2V0KCk7CiAKICAgICBt
X2Z1bmN0aW9uQ2FjaGUgPSB2bS0+YWRkU291cmNlUHJvdmlkZXJDYWNoZShzb3VyY2UucHJvdmlk
ZXIoKSk7CiAgICAgU2NvcGVSZWYgc2NvcGUgPSBwdXNoU2NvcGUoKTsKQEAgLTE2Miw2ICsxNjUs
NyBAQCB0ZW1wbGF0ZSA8U291cmNlRWxlbWVudHNNb2RlIG1vZGUsIGNsYXNzCiAgICAgY29uc3Qg
SWRlbnRpZmllciogZGlyZWN0aXZlID0gMDsKICAgICB1bnNpZ25lZCBkaXJlY3RpdmVMaXRlcmFs
TGVuZ3RoID0gMDsKICAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IG1fdG9rZW4ubV9sb2NhdGlv
bi5zdGFydE9mZnNldDsKKyAgICB1bnNpZ25lZCBzdGFydExpbmVTdGFydE9mZnNldCA9IG1fdG9r
ZW4ubV9sb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7CiAgICAgdW5zaWduZWQgb2xkTGFzdExpbmVO
dW1iZXIgPSBtX2xleGVyLT5sYXN0TGluZU51bWJlcigpOwogICAgIHVuc2lnbmVkIG9sZExpbmVO
dW1iZXIgPSBtX2xleGVyLT5saW5lTnVtYmVyKCk7CiAgICAgYm9vbCBoYXNTZXRTdHJpY3QgPSBm
YWxzZTsKQEAgLTE3Myw3ICsxNzcsNyBAQCB0ZW1wbGF0ZSA8U291cmNlRWxlbWVudHNNb2RlIG1v
ZGUsIGNsYXNzCiAgICAgICAgICAgICAgICAgICAgIHNldFN0cmljdE1vZGUoKTsKICAgICAgICAg
ICAgICAgICAgICAgaGFzU2V0U3RyaWN0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgZmFp
bElmRmFsc2UoaXNWYWxpZFN0cmljdE1vZGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1fbGV4
ZXItPnNldE9mZnNldChzdGFydE9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIG1fbGV4ZXIt
PnNldE9mZnNldChzdGFydE9mZnNldCwgc3RhcnRMaW5lU3RhcnRPZmZzZXQpOwogICAgICAgICAg
ICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgIG1fbGV4ZXItPnNldExhc3RM
aW5lTnVtYmVyKG9sZExhc3RMaW5lTnVtYmVyKTsKICAgICAgICAgICAgICAgICAgICAgbV9sZXhl
ci0+c2V0TGluZU51bWJlcihvbGRMaW5lTnVtYmVyKTsKQEAgLTI4NSw2ICsyODksOCBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAgICAgICAgIGNvbnRleHQuYWRk
VmFyKG5hbWUsIChoYXNJbml0aWFsaXplciB8fCAoIW1fYWxsb3dzSW4gJiYgbWF0Y2goSU5UT0tF
TikpKSA/IERlY2xhcmF0aW9uU3RhY2tzOjpIYXNJbml0aWFsaXplciA6IDApOwogICAgICAgICBp
ZiAoaGFzSW5pdGlhbGl6ZXIpIHsKICAgICAgICAgICAgIGludCB2YXJEaXZvdCA9IHRva2VuU3Rh
cnQoKSArIDE7CisgICAgICAgICAgICB1bnNpZ25lZCB2YXJMaW5lID0gdG9rZW5MaW5lKCk7IAor
ICAgICAgICAgICAgdW5zaWduZWQgdmFyTGluZVN0YXJ0ID0gdG9rZW5MaW5lU3RhcnQoKTsKICAg
ICAgICAgICAgIGluaXRTdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICAgICAgICAgIG5leHQoVHJl
ZUJ1aWxkZXI6OkRvbnRCdWlsZFN0cmluZ3MpOyAvLyBjb25zdW1lICc9JwogICAgICAgICAgICAg
VHJlZUV4cHJlc3Npb24gaW5pdGlhbGl6ZXIgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNv
bnRleHQpOwpAQCAtMjkyLDcgKzI5OCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3MKICAgICAgICAgICAgIGxhc3RJbml0aWFsaXplciA9IGluaXRpYWxpemVyOwog
ICAgICAgICAgICAgZmFpbElmRmFsc2UoaW5pdGlhbGl6ZXIpOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gY29udGV4dC5jcmVhdGVBc3NpZ25SZXNvbHZl
KGxvY2F0aW9uLCAqbmFtZSwgaW5pdGlhbGl6ZXIsIHZhclN0YXJ0LCB2YXJEaXZvdCwgbGFzdFRv
a2VuRW5kKCkpOworICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gbm9kZSA9IGNvbnRleHQuY3Jl
YXRlQXNzaWduUmVzb2x2ZShsb2NhdGlvbiwgKm5hbWUsIGluaXRpYWxpemVyLCB2YXJTdGFydCwg
dmFyRGl2b3QsIGxhc3RUb2tlbkVuZCgpLCB2YXJMaW5lLCB2YXJMaW5lU3RhcnQpOwogICAgICAg
ICAgICAgaWYgKCF2YXJEZWNscykKICAgICAgICAgICAgICAgICB2YXJEZWNscyA9IG5vZGU7CiAg
ICAgICAgICAgICBlbHNlCkBAIC0zMTcsNiArMzIzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlQ29uc3REZQogICAgICAgICBib29sIGhhc0luaXRpYWxpemVyID0gbWF0Y2go
RVFVQUwpOwogICAgICAgICBkZWNsYXJlVmFyaWFibGUobmFtZSk7CiAgICAgICAgIGNvbnRleHQu
YWRkVmFyKG5hbWUsIERlY2xhcmF0aW9uU3RhY2tzOjpJc0NvbnN0YW50IHwgKGhhc0luaXRpYWxp
emVyID8gRGVjbGFyYXRpb25TdGFja3M6Okhhc0luaXRpYWxpemVyIDogMCkpOworCiAgICAgICAg
IFRyZWVFeHByZXNzaW9uIGluaXRpYWxpemVyID0gMDsKICAgICAgICAgaWYgKGhhc0luaXRpYWxp
emVyKSB7CiAgICAgICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsg
Ly8gY29uc3VtZSAnPScKQEAgLTM0MSw2ICszNDgsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTdGF0ZW1lCiAgICAgaW50IGRlY2xhcmF0aW9ucyA9IDA7CiAgICAgaW50IGRl
Y2xzU3RhcnQgPSAwOwogICAgIGludCBkZWNsc0VuZCA9IDA7CisgICAgdW5zaWduZWQgZGVjbHNM
aW5lID0gMDsKKyAgICB1bnNpZ25lZCBkZWNsc0xpbmVTdGFydCA9IDA7CiAgICAgVHJlZUV4cHJl
c3Npb24gZGVjbHMgPSAwOwogICAgIGlmIChtYXRjaChWQVIpKSB7CiAgICAgICAgIC8qCkBAIC0z
NjUsNiArMzc0LDggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZQog
ICAgICAgICAKICAgICAgICAgLy8gSGFuZGxlIGZvci1pbiB3aXRoIHZhciBkZWNsYXJhdGlvbgog
ICAgICAgICBpbnQgaW5Mb2NhdGlvbiA9IHRva2VuU3RhcnQoKTsKKyAgICAgICAgdW5zaWduZWQg
aW5MaW5lID0gdG9rZW5MaW5lKCk7CisgICAgICAgIHVuc2lnbmVkIGluTGluZVN0YXJ0ID0gdG9r
ZW5MaW5lU3RhcnQoKTsKICAgICAgICAgY29uc3VtZU9yRmFpbChJTlRPS0VOKTsKICAgICAgICAg
CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7
CkBAIC0zODAsNyArMzkxLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZQogICAgICAgICBlbmRMb29wKCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7
CiAgICAgICAgIAotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGb3JJbkxvb3AobG9jYXRp
b24sIGZvckluVGFyZ2V0LCBmb3JJbkluaXRpYWxpemVyLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xz
U3RhcnQsIGluTG9jYXRpb24sIGV4cHJFbmQsIGluaXRTdGFydCwgaW5pdEVuZCwgc3RhcnRMaW5l
LCBlbmRMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9ySW5Mb29wKGxvY2F0
aW9uLCBmb3JJblRhcmdldCwgZm9ySW5Jbml0aWFsaXplciwgZXhwciwgc3RhdGVtZW50LCBkZWNs
c1N0YXJ0LCBpbkxvY2F0aW9uLCBleHByRW5kLCBpbml0U3RhcnQsIGluaXRFbmQsIHN0YXJ0TGlu
ZSwgZW5kTGluZSwgaW5MaW5lLCBpbkxpbmVTdGFydCk7CiAgICAgfQogICAgIAogICAgIGlmICgh
bWF0Y2goU0VNSUNPTE9OKSkgewpAQCAtMzg4LDYgKzM5OSw4IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWUKICAgICAgICAgZGVjbHNTdGFydCA9IHRva2VuU3RhcnQo
KTsKICAgICAgICAgZGVjbHMgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgIGRl
Y2xzRW5kID0gbGFzdFRva2VuRW5kKCk7CisgICAgICAgIGRlY2xzTGluZSA9IGxhc3RUb2tlbkxp
bmUoKTsKKyAgICAgICAgZGVjbHNMaW5lU3RhcnQgPSBsYXN0VG9rZW5MaW5lU3RhcnQoKTsKICAg
ICAgICAgbV9hbGxvd3NJbiA9IHRydWU7CiAgICAgICAgIGZhaWxJZkZhbHNlKGRlY2xzKTsKICAg
ICB9CkBAIC00MzMsNyArNDQ2LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U3RhdGVtZQogICAgIGVuZExvb3AoKTsKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogICAg
IAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckluTG9vcChsb2NhdGlvbiwgZGVjbHMsIGV4
cHIsIHN0YXRlbWVudCwgZGVjbHNTdGFydCwgZGVjbHNFbmQsIGV4cHJFbmQsIHN0YXJ0TGluZSwg
ZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9ySW5Mb29wKGxvY2F0aW9uLCBk
ZWNscywgZXhwciwgc3RhdGVtZW50LCBkZWNsc1N0YXJ0LCBkZWNsc0VuZCwgZXhwckVuZCwgc3Rh
cnRMaW5lLCBlbmRMaW5lLCBkZWNsc0xpbmUsIGRlY2xzTGluZVN0YXJ0KTsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTQ0NSwyMCArNDU4LDIyIEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWUKICAgICBpbnQgZW5kQ29sID0gdG9rZW5FbmQo
KTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgaW50IGVuZExpbmUgPSB0
b2tlbkxpbmUoKTsKKyAgICB1bnNpZ25lZCBlbmRMaW5lU3RhcnQgPSB0b2tlbkxpbmVTdGFydCgp
OwogICAgIG5leHQoKTsKICAgICAKICAgICBpZiAoYXV0b1NlbWlDb2xvbigpKSB7CiAgICAgICAg
IGZhaWxJZkZhbHNlV2l0aE1lc3NhZ2UoYnJlYWtJc1ZhbGlkKCksICInYnJlYWsnIGlzIG9ubHkg
dmFsaWQgaW5zaWRlIGEgc3dpdGNoIG9yIGxvb3Agc3RhdGVtZW50Iik7Ci0gICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUJyZWFrU3RhdGVtZW50KGxvY2F0aW9uLCBzdGFydENvbCwgZW5kQ29s
LCBzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCcmVh
a1N0YXRlbWVudChsb2NhdGlvbiwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5l
LCBlbmRMaW5lU3RhcnQpOwogICAgIH0KICAgICBtYXRjaE9yRmFpbChJREVOVCk7CiAgICAgY29u
c3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICBmYWlsSWZG
YWxzZVdpdGhOYW1lQW5kTWVzc2FnZShnZXRMYWJlbChpZGVudCksICJMYWJlbCIsIGlkZW50LT5p
bXBsKCksICJpcyBub3QgZGVmaW5lZCIpOwogICAgIGVuZENvbCA9IHRva2VuRW5kKCk7CiAgICAg
ZW5kTGluZSA9IHRva2VuTGluZSgpOworICAgIGVuZExpbmVTdGFydCA9IHRva2VuTGluZVN0YXJ0
KCk7CiAgICAgbmV4dCgpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlQnJlYWtTdGF0ZW1lbnQobG9jYXRpb24sIGlkZW50LCBzdGFy
dENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZUJyZWFrU3RhdGVtZW50KGxvY2F0aW9uLCBpZGVudCwgc3RhcnRDb2wsIGVuZENvbCwgc3Rh
cnRMaW5lLCBlbmRMaW5lLCBlbmRMaW5lU3RhcnQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
TGV4ZXJUeXBlPgpAQCAtNDcwLDExICs0ODUsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU3RhdGVtZQogICAgIGludCBlbmRDb2wgPSB0b2tlbkVuZCgpOwogICAgIGludCBz
dGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBpbnQgZW5kTGluZSA9IHRva2VuTGluZSgpOwor
ICAgIHVuc2lnbmVkIGVuZExpbmVTdGFydCA9IHRva2VuTGluZVN0YXJ0KCk7CiAgICAgbmV4dCgp
OwogICAgIAogICAgIGlmIChhdXRvU2VtaUNvbG9uKCkpIHsKICAgICAgICAgZmFpbElmRmFsc2VX
aXRoTWVzc2FnZShjb250aW51ZUlzVmFsaWQoKSwgIidjb250aW51ZScgaXMgb25seSB2YWxpZCBp
bnNpZGUgYSBsb29wIHN0YXRlbWVudCIpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVD
b250aW51ZVN0YXRlbWVudChsb2NhdGlvbiwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBl
bmRMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ29udGludWVTdGF0ZW1lbnQo
bG9jYXRpb24sIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSwgZW5kTGluZVN0
YXJ0KTsKICAgICB9CiAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwogICAgIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CkBAIC00ODMsOSArNDk5LDEwIEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWUKICAgICBmYWlsSWZGYWxzZVdp
dGhNZXNzYWdlKGxhYmVsLT5tX2lzTG9vcCwgIidjb250aW51ZScgaXMgb25seSB2YWxpZCBpbnNp
ZGUgYSBsb29wIHN0YXRlbWVudCIpOwogICAgIGVuZENvbCA9IHRva2VuRW5kKCk7CiAgICAgZW5k
TGluZSA9IHRva2VuTGluZSgpOworICAgIGVuZExpbmVTdGFydCA9IHRva2VuTGluZVN0YXJ0KCk7
CiAgICAgbmV4dCgpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlQ29udGludWVTdGF0ZW1lbnQobG9jYXRpb24sIGlkZW50LCBzdGFy
dENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGxvY2F0aW9uLCBpZGVudCwgc3RhcnRDb2wsIGVuZENvbCwg
c3RhcnRMaW5lLCBlbmRMaW5lLCBlbmRMaW5lU3RhcnQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGV4ZXJUeXBlPgpAQCAtNDk4LDYgKzUxNSw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVN0YXRlbWUKICAgICBpbnQgZW5kTGluZSA9IHN0YXJ0TGluZTsKICAgICBpbnQg
c3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgaW50IGVuZCA9IHRva2VuRW5kKCk7CisgICAgdW5z
aWduZWQgZGl2b3RMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgdW5zaWduZWQgZGl2b3RMaW5lU3Rh
cnQgPSB0b2tlbkxpbmVTdGFydCgpOwogICAgIG5leHQoKTsKICAgICAvLyBXZSBkbyB0aGUgYXV0
byBzZW1pY29sb24gY2hlY2sgYmVmb3JlIGF0dGVtcHRpbmcgdG8gcGFyc2UgYW4gZXhwcmVzc2lv
bgogICAgIC8vIGFzIHdlIG5lZWQgdG8gZW5zdXJlIHRoZSBhIGxpbmUgYnJlYWsgYWZ0ZXIgdGhl
IHJldHVybiBjb3JyZWN0bHkgdGVybWluYXRlcwpAQCAtNTA1LDE0ICs1MjQsMTYgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZQogICAgIGlmIChtYXRjaChTRU1JQ09M
T04pKQogICAgICAgICBlbmRMaW5lICA9IHRva2VuTGluZSgpOwogICAgIGlmIChhdXRvU2VtaUNv
bG9uKCkpCi0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVJldHVyblN0YXRlbWVudChsb2Nh
dGlvbiwgMCwgc3RhcnQsIGVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50KGxvY2F0aW9uLCAwLCBzdGFydCwgZW5kLCBz
dGFydExpbmUsIGVuZExpbmUsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogICAgIFRyZWVF
eHByZXNzaW9uIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFs
c2UoZXhwcik7CiAgICAgZW5kID0gbGFzdFRva2VuRW5kKCk7CisgICAgZGl2b3RMaW5lID0gbGFz
dFRva2VuTGluZSgpOworICAgIGRpdm90TGluZVN0YXJ0ID0gbGFzdFRva2VuTGluZVN0YXJ0KCk7
CiAgICAgaWYgKG1hdGNoKFNFTUlDT0xPTikpCiAgICAgICAgIGVuZExpbmUgID0gdG9rZW5MaW5l
KCk7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKLSAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQobG9jYXRpb24sIGV4cHIsIHN0YXJ0LCBlbmQsIHN0YXJ0
TGluZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50
KGxvY2F0aW9uLCBleHByLCBzdGFydCwgZW5kLCBzdGFydExpbmUsIGVuZExpbmUsIGRpdm90TGlu
ZSwgZGl2b3RMaW5lU3RhcnQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpA
QCAtNTI5LDEwICs1NTAsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZQogICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7
CiAgICAgZmFpbElmRmFsc2UoZXhwcik7CiAgICAgaW50IGVFbmQgPSBsYXN0VG9rZW5FbmQoKTsK
KyAgICB1bnNpZ25lZCBkaXZvdExpbmUgPSBsYXN0VG9rZW5MaW5lKCk7CisgICAgdW5zaWduZWQg
ZGl2b3RMaW5lU3RhcnQgPSBsYXN0VG9rZW5MaW5lU3RhcnQoKTsKICAgICBpbnQgZW5kTGluZSA9
IHRva2VuTGluZSgpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7CiAgICAgCi0g
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlVGhyb3dTdGF0ZW1lbnQobG9jYXRpb24sIGV4cHIsIGVT
dGFydCwgZUVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVUaHJvd1N0YXRlbWVudChsb2NhdGlvbiwgZXhwciwgZVN0YXJ0LCBlRW5kLCBzdGFydExpbmUs
IGVuZExpbmUsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGV4ZXJUeXBlPgpAQCAtNTQ5LDE0ICs1NzIsMTUgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZQogICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJzZUV4
cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UoZXhwcik7CiAgICAgaW50IGVuZCA9
IGxhc3RUb2tlbkVuZCgpOwotICAgIAorICAgIHVuc2lnbmVkIGRpdm90TGluZSA9IGxhc3RUb2tl
bkxpbmUoKTsKKyAgICB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCA9IGxhc3RUb2tlbkxpbmVTdGFy
dCgpOwogICAgIGludCBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgY29uc3VtZU9yRmFpbChD
TE9TRVBBUkVOKTsKICAgICBjb25zdCBJZGVudGlmaWVyKiB1bnVzZWQgPSAwOwogICAgIFRyZWVT
dGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKICAg
ICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogICAgIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZVdpdGhTdGF0ZW1lbnQobG9jYXRpb24sIGV4cHIsIHN0YXRlbWVudCwgc3RhcnQsIGVuZCwgc3Rh
cnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVXaXRoU3RhdGVtZW50
KGxvY2F0aW9uLCBleHByLCBzdGF0ZW1lbnQsIHN0YXJ0LCBlbmQsIHN0YXJ0TGluZSwgZW5kTGlu
ZSwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+CkBAIC03OTUsMTkgKzgxOSwyMCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJU
eXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keShUcmVlQnVpbGRlciYgY29udGV4dCkKIHsK
ICAgICBKU1Rva2VuTG9jYXRpb24gc3RhcnRMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAg
IHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICBuZXh0KCk7CiAKICAg
ICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpCi0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1
bmN0aW9uQm9keShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0cmljdE1vZGUoKSk7
CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShzdGFydExvY2F0aW9u
LCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBzdHJpY3RNb2RlKCkpOwogICAgIERlcHRo
TWFuYWdlciBzdGF0ZW1lbnREZXB0aCgmbV9zdGF0ZW1lbnREZXB0aCk7CiAgICAgbV9zdGF0ZW1l
bnREZXB0aCA9IDA7CiAgICAgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZ1bmN0aW9uQm9keUJ1aWxk
ZXIgYm9keUJ1aWxkZXIoY29uc3RfY2FzdDxWTSo+KG1fdm0pLCBtX2xleGVyLmdldCgpKTsKICAg
ICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzPENoZWNrRm9yU3RyaWN0TW9kZT4oYm9k
eUJ1aWxkZXIpKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkoc3RhcnRM
b2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdHJpY3RNb2RlKCkpOworICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0
YXJ0Q29sdW1uLCBzdHJpY3RNb2RlKCkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJU
eXBlPgotdGVtcGxhdGUgPEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgYm9vbCBu
YW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgY2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJ
ZGVudGlmaWVyKiYgbmFtZSwgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QmIHBhcmFtZXRlcnMsIFRy
ZWVGdW5jdGlvbkJvZHkmIGJvZHksIGludCYgb3BlbkJyYWNlUG9zLCBpbnQmIGNsb3NlQnJhY2VQ
b3MsIGludCYgYm9keVN0YXJ0TGluZSkKK3RlbXBsYXRlIDxGdW5jdGlvblJlcXVpcmVtZW50cyBy
ZXF1aXJlbWVudHMsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIGNsYXNzIFRyZWVCdWls
ZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRl
ciYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciomIG5hbWUsIFRyZWVGb3JtYWxQYXJhbWV0ZXJM
aXN0JiBwYXJhbWV0ZXJzLCBUcmVlRnVuY3Rpb25Cb2R5JiBib2R5LCB1bnNpZ25lZCYgb3BlbkJy
YWNlT2Zmc2V0LCB1bnNpZ25lZCYgY2xvc2VCcmFjZU9mZnNldCwgaW50JiBib2R5U3RhcnRMaW5l
LCB1bnNpZ25lZCYgYm9keVN0YXJ0Q29sdW1uKQogewogICAgIEF1dG9Qb3BTY29wZVJlZiBmdW5j
dGlvblNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKICAgICBmdW5jdGlvblNjb3BlLT5zZXRJc0Z1
bmN0aW9uKCk7CkBAIC04MjcsMjYgKzg1MiwzMyBAQCB0ZW1wbGF0ZSA8RnVuY3Rpb25SZXF1aXJl
bWVudHMgcmVxdWlyZW1lCiAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOKTsKICAgICBtYXRj
aE9yRmFpbChPUEVOQlJBQ0UpOwogICAgIAotICAgIG9wZW5CcmFjZVBvcyA9IG1fdG9rZW4ubV9k
YXRhLmludFZhbHVlOworICAgIG9wZW5CcmFjZU9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNl
dDsKICAgICBib2R5U3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgYm9keVN0YXJ0Q29sdW1u
ID0gbV90b2tlbi5tX2RhdGEub2Zmc2V0IC0gbV90b2tlbi5tX2RhdGEubGluZVN0YXJ0T2Zmc2V0
OwogICAgIEpTVG9rZW5Mb2NhdGlvbiBzdGFydExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAg
ICAgCiAgICAgLy8gSWYgd2Uga25vdyBhYm91dCB0aGlzIGZ1bmN0aW9uIGFscmVhZHksIHdlIGNh
biB1c2UgdGhlIGNhY2hlZCBpbmZvIGFuZCBza2lwIHRoZSBwYXJzZXIgdG8gdGhlIGVuZCBvZiB0
aGUgZnVuY3Rpb24uCi0gICAgaWYgKGNvbnN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKiBjYWNo
ZWRJbmZvID0gVHJlZUJ1aWxkZXI6OkNhblVzZUZ1bmN0aW9uQ2FjaGUgPyBmaW5kQ2FjaGVkRnVu
Y3Rpb25JbmZvKG9wZW5CcmFjZVBvcykgOiAwKSB7CisgICAgaWYgKGNvbnN0IFNvdXJjZVByb3Zp
ZGVyQ2FjaGVJdGVtKiBjYWNoZWRJbmZvID0gVHJlZUJ1aWxkZXI6OkNhblVzZUZ1bmN0aW9uQ2Fj
aGUgPyBmaW5kQ2FjaGVkRnVuY3Rpb25JbmZvKG9wZW5CcmFjZU9mZnNldCkgOiAwKSB7CiAgICAg
ICAgIC8vIElmIHdlJ3JlIGluIGEgc3RyaWN0IGNvbnRleHQsIHRoZSBjYWNoZWQgZnVuY3Rpb24g
aW5mbyBtdXN0IHNheSBpdCB3YXMgc3RyaWN0IHRvby4KICAgICAgICAgQVNTRVJUKCFzdHJpY3RN
b2RlKCkgfHwgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSk7Ci0gICAgICAgIEpTVG9rZW5Mb2NhdGlv
biBlbmRMb2NhdGlvbjsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGVuZExvY2F0aW9uKG1fc291
cmNlLT5zdGFydE9mZnNldCgpKTsKKwogICAgICAgICBlbmRMb2NhdGlvbi5saW5lID0gY2FjaGVk
SW5mby0+Y2xvc2VCcmFjZUxpbmU7Ci0gICAgICAgIGVuZExvY2F0aW9uLmNoYXJQb3NpdGlvbiA9
IGNhY2hlZEluZm8tPmNsb3NlQnJhY2VQb3M7Ci0gICAgICAgIGJvZHkgPSBjb250ZXh0LmNyZWF0
ZUZ1bmN0aW9uQm9keShzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgY2FjaGVkSW5mby0+c3Ry
aWN0TW9kZSk7CisgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0ID0gY2FjaGVkSW5mby0+
Y2xvc2VCcmFjZU9mZnNldDsKKyAgICAgICAgZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0ID0g
Y2FjaGVkSW5mby0+Y2xvc2VCcmFjZUxpbmVTdGFydE9mZnNldDsKKyAgICAgICAgQVNTRVJUKGVu
ZExvY2F0aW9uLnN0YXJ0T2Zmc2V0ID49IGVuZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CisK
KyAgICAgICAgYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KHN0YXJ0TG9jYXRpb24s
IGVuZExvY2F0aW9uLCBib2R5U3RhcnRDb2x1bW4sIGNhY2hlZEluZm8tPnN0cmljdE1vZGUpOwog
ICAgICAgICAKICAgICAgICAgZnVuY3Rpb25TY29wZS0+cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRl
ckNhY2hlKGNhY2hlZEluZm8pOwogICAgICAgICBmYWlsSWZGYWxzZShwb3BTY29wZShmdW5jdGlv
blNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKSk7CiAgICAgICAgIAot
ICAgICAgICBjbG9zZUJyYWNlUG9zID0gY2FjaGVkSW5mby0+Y2xvc2VCcmFjZVBvczsKKyAgICAg
ICAgY2xvc2VCcmFjZU9mZnNldCA9IGNhY2hlZEluZm8tPmNsb3NlQnJhY2VPZmZzZXQ7CisKICAg
ICAgICAgY29udGV4dC5zZXRGdW5jdGlvblN0YXJ0KGJvZHksIGZ1bmN0aW9uU3RhcnQpOwogICAg
ICAgICBtX3Rva2VuID0gY2FjaGVkSW5mby0+Y2xvc2VCcmFjZVRva2VuKCk7Ci0gICAgICAgIG1f
bGV4ZXItPnNldE9mZnNldChtX3Rva2VuLm1fbG9jYXRpb24uZW5kT2Zmc2V0KTsKKworICAgICAg
ICBtX2xleGVyLT5zZXRPZmZzZXQobV90b2tlbi5tX2xvY2F0aW9uLmVuZE9mZnNldCwgbV90b2tl
bi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIG1fbGV4ZXItPnNldExpbmVO
dW1iZXIobV90b2tlbi5tX2xvY2F0aW9uLmxpbmUpOwogICAgICAgICAKICAgICAgICAgbmV4dCgp
OwpAQCAtODU5LDIwICs4OTEsMjQgQEAgdGVtcGxhdGUgPEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJl
cXVpcmVtZQogICAgICAgICBmYWlsSWZUcnVlV2l0aE5hbWVBbmRNZXNzYWdlKG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqbmFtZSwgIkZ1bmN0aW9uIG5hbWUiLCBuYW1lLT5pbXBs
KCksICJpcyBub3QgdmFsaWQgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgZmFpbElmVHJ1ZVdp
dGhOYW1lQW5kTWVzc2FnZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09ICpuYW1lLCAiRnVu
Y3Rpb24gbmFtZSIsIG5hbWUtPmltcGwoKSwgImlzIG5vdCB2YWxpZCBpbiBzdHJpY3QgbW9kZSIp
OwogICAgIH0KLSAgICBjbG9zZUJyYWNlUG9zID0gbV90b2tlbi5tX2RhdGEuaW50VmFsdWU7Cisg
ICAgY2xvc2VCcmFjZU9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsKKyAgICB1bnNpZ25l
ZCBjbG9zZUJyYWNlTGluZSA9IG1fdG9rZW4ubV9kYXRhLmxpbmU7CisgICAgdW5zaWduZWQgY2xv
c2VCcmFjZUxpbmVTdGFydE9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLmxpbmVTdGFydE9mZnNldDsK
ICAgICAKICAgICAvLyBDYWNoZSB0aGUgdG9rZW5pemVyIHN0YXRlIGFuZCB0aGUgZnVuY3Rpb24g
c2NvcGUgdGhlIGZpcnN0IHRpbWUgdGhlIGZ1bmN0aW9uIGlzIHBhcnNlZC4KICAgICAvLyBBbnkg
ZnV0dXJlIHJlcGFyc2luZyBjYW4gdGhlbiBza2lwIHRoZSBmdW5jdGlvbi4KICAgICBzdGF0aWMg
Y29uc3QgaW50IG1pbmltdW1GdW5jdGlvbkxlbmd0aFRvQ2FjaGUgPSAxNjsKICAgICBPd25QdHI8
U291cmNlUHJvdmlkZXJDYWNoZUl0ZW0+IG5ld0luZm87Ci0gICAgaW50IGZ1bmN0aW9uTGVuZ3Ro
ID0gY2xvc2VCcmFjZVBvcyAtIG9wZW5CcmFjZVBvczsKKyAgICBpbnQgZnVuY3Rpb25MZW5ndGgg
PSBjbG9zZUJyYWNlT2Zmc2V0IC0gb3BlbkJyYWNlT2Zmc2V0OwogICAgIGlmIChUcmVlQnVpbGRl
cjo6Q2FuVXNlRnVuY3Rpb25DYWNoZSAmJiBtX2Z1bmN0aW9uQ2FjaGUgJiYgZnVuY3Rpb25MZW5n
dGggPiBtaW5pbXVtRnVuY3Rpb25MZW5ndGhUb0NhY2hlKSB7CiAgICAgICAgIFNvdXJjZVByb3Zp
ZGVyQ2FjaGVJdGVtQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgICAgIHBhcmFt
ZXRlcnMuZnVuY3Rpb25TdGFydCA9IGZ1bmN0aW9uU3RhcnQ7Ci0gICAgICAgIHBhcmFtZXRlcnMu
Y2xvc2VCcmFjZUxpbmUgPSBtX3Rva2VuLm1fbG9jYXRpb24ubGluZTsKLSAgICAgICAgcGFyYW1l
dGVycy5jbG9zZUJyYWNlUG9zID0gY2xvc2VCcmFjZVBvczsKKyAgICAgICAgcGFyYW1ldGVycy5j
bG9zZUJyYWNlTGluZSA9IGNsb3NlQnJhY2VMaW5lOworICAgICAgICBwYXJhbWV0ZXJzLmNsb3Nl
QnJhY2VPZmZzZXQgPSBjbG9zZUJyYWNlT2Zmc2V0OworICAgICAgICBwYXJhbWV0ZXJzLmNsb3Nl
QnJhY2VMaW5lU3RhcnRPZmZzZXQgPSBjbG9zZUJyYWNlTGluZVN0YXJ0T2Zmc2V0OwogICAgICAg
ICBmdW5jdGlvblNjb3BlLT5maWxsUGFyYW1ldGVyc0ZvclNvdXJjZVByb3ZpZGVyQ2FjaGUocGFy
YW1ldGVycyk7CiAgICAgICAgIG5ld0luZm8gPSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbTo6Y3Jl
YXRlKHBhcmFtZXRlcnMpOworCiAgICAgfQogICAgIGNvbnRleHQuc2V0RnVuY3Rpb25TdGFydChi
b2R5LCBmdW5jdGlvblN0YXJ0KTsKICAgICAKQEAgLTg4MCw3ICs5MTYsNyBAQCB0ZW1wbGF0ZSA8
RnVuY3Rpb25SZXF1aXJlbWVudHMgcmVxdWlyZW1lCiAgICAgbWF0Y2hPckZhaWwoQ0xPU0VCUkFD
RSk7CiAgICAgCiAgICAgaWYgKG5ld0luZm8pCi0gICAgICAgIG1fZnVuY3Rpb25DYWNoZS0+YWRk
KG9wZW5CcmFjZVBvcywgbmV3SW5mby5yZWxlYXNlKCkpOworICAgICAgICBtX2Z1bmN0aW9uQ2Fj
aGUtPmFkZChvcGVuQnJhY2VPZmZzZXQsIG5ld0luZm8ucmVsZWFzZSgpKTsKICAgICAKICAgICBu
ZXh0KCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC04OTUsMjYgKzkzMSwzMSBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiAgICAgY29uc3QgSWRlbnRpZmllciogbmFt
ZSA9IDA7CiAgICAgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgcGFyYW1ldGVycyA9IDA7CiAgICAg
VHJlZUZ1bmN0aW9uQm9keSBib2R5ID0gMDsKLSAgICBpbnQgb3BlbkJyYWNlUG9zID0gMDsKLSAg
ICBpbnQgY2xvc2VCcmFjZVBvcyA9IDA7CisgICAgdW5zaWduZWQgb3BlbkJyYWNlT2Zmc2V0ID0g
MDsKKyAgICB1bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0ID0gMDsKICAgICBpbnQgYm9keVN0YXJ0
TGluZSA9IDA7Ci0gICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvPEZ1bmN0aW9uTmVl
ZHNOYW1lLCB0cnVlPihjb250ZXh0LCBuYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQ
b3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpKSk7CisgICAgdW5zaWduZWQgYm9keVN0
YXJ0Q29sdW1uID0gMDsKKyAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm88RnVuY3Rp
b25OZWVkc05hbWUsIHRydWU+KGNvbnRleHQsIG5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5C
cmFjZU9mZnNldCwgY2xvc2VCcmFjZU9mZnNldCwgYm9keVN0YXJ0TGluZSwgYm9keVN0YXJ0Q29s
dW1uKSkpOwogICAgIGZhaWxJZkZhbHNlKG5hbWUpOwogICAgIGZhaWxJZkZhbHNlSWZTdHJpY3Qo
ZGVjbGFyZVZhcmlhYmxlKG5hbWUpKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jRGVj
bFN0YXRlbWVudChsb2NhdGlvbiwgbmFtZSwgYm9keSwgcGFyYW1ldGVycywgb3BlbkJyYWNlUG9z
LCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKKyAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVGdW5jRGVjbFN0YXRlbWVudChsb2NhdGlvbiwgbmFtZSwgYm9keSwgcGFy
YW1ldGVycywgb3BlbkJyYWNlT2Zmc2V0LCBjbG9zZUJyYWNlT2Zmc2V0LCBib2R5U3RhcnRMaW5l
LCBtX2xhc3RMaW5lLCBib2R5U3RhcnRDb2x1bW4pOwogfQogCiBzdHJ1Y3QgTGFiZWxJbmZvIHsK
LSAgICBMYWJlbEluZm8oY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGludCBzdGFydCwgaW50IGVu
ZCkKKyAgICBMYWJlbEluZm8oY29uc3QgSWRlbnRpZmllciogaWRlbnQsIHVuc2lnbmVkIHN0YXJ0
LCB1bnNpZ25lZCBlbmQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3Rh
cnQpCiAgICAgOiBtX2lkZW50KGlkZW50KQogICAgICwgbV9zdGFydChzdGFydCkKICAgICAsIG1f
ZW5kKGVuZCkKKyAgICAsIG1fZGl2b3RMaW5lKGRpdm90TGluZSkKKyAgICAsIG1fZGl2b3RMaW5l
U3RhcnQoZGl2b3RMaW5lU3RhcnQpCiAgICAgewogICAgIH0KICAgICAKICAgICBjb25zdCBJZGVu
dGlmaWVyKiBtX2lkZW50OwotICAgIGludCBtX3N0YXJ0OwotICAgIGludCBtX2VuZDsKKyAgICB1
bnNpZ25lZCBtX3N0YXJ0OworICAgIHVuc2lnbmVkIG1fZW5kOworICAgIHVuc2lnbmVkIG1fZGl2
b3RMaW5lOworICAgIHVuc2lnbmVkIG1fZGl2b3RMaW5lU3RhcnQ7CiB9OwogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtOTI1LDEwICs5NjYsMTAgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZQogICAgICAqIHNwZWNpYWwgY2FzZSB0aGF0IGxvb2tz
IGZvciBhIGNvbG9uIGFzIHRoZSBuZXh0IGNoYXJhY3RlciBpbiB0aGUgaW5wdXQuCiAgICAgICov
CiAgICAgVmVjdG9yPExhYmVsSW5mbz4gbGFiZWxzOwotICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbjsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24obV9zb3VyY2UtPnN0YXJ0T2Zmc2V0
KCkpOwogICAgIGRvIHsKICAgICAgICAgaW50IHN0YXJ0ID0gdG9rZW5TdGFydCgpOwotICAgICAg
ICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgICAgIGludCBzdGFydGluZ0xpbmUg
PSB0b2tlbkxpbmUoKTsKICAgICAgICAgbG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAg
ICAgIGlmICghbmV4dFRva2VuSXNDb2xvbigpKSB7CiAgICAgICAgICAgICAvLyBJZiB3ZSBoaXQg
dGhpcyBwYXRoIHdlJ3JlIG1ha2luZyBhIGV4cHJlc3Npb24gc3RhdGVtZW50LCB3aGljaApAQCAt
OTM3LDEwICs5NzgsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVt
ZQogICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gZXhwcmVzc2lvbiA9IHBhcnNlRXhwcmVzc2lv
bihjb250ZXh0KTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGV4cHJlc3Npb24pOwogICAgICAg
ICAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKLSAgICAgICAgICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZUV4cHJTdGF0ZW1lbnQobG9jYXRpb24sIGV4cHJlc3Npb24sIHN0YXJ0TGlu
ZSwgbV9sYXN0TGluZSk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFeHByU3Rh
dGVtZW50KGxvY2F0aW9uLCBleHByZXNzaW9uLCBzdGFydGluZ0xpbmUsIG1fbGFzdExpbmUpOwog
ICAgICAgICB9CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2Rh
dGEuaWRlbnQ7CiAgICAgICAgIGludCBlbmQgPSB0b2tlbkVuZCgpOworICAgICAgICB1bnNpZ25l
ZCBkaXZvdExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICAgICAgdW5zaWduZWQgZGl2b3RMaW5lU3Rh
cnQgPSB0b2tlbkxpbmVTdGFydCgpOwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGNvbnN1bWVP
ckZhaWwoQ09MT04pOwogICAgICAgICBpZiAoIW1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZCkgewpA
QCAtOTQ5LDcgKzk5Miw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRl
bWUKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGFiZWxzLnNpemUoKTsgaSsr
KQogICAgICAgICAgICAgICAgIGZhaWxJZlRydWUoaWRlbnQtPmltcGwoKSA9PSBsYWJlbHNbaV0u
bV9pZGVudC0+aW1wbCgpKTsKICAgICAgICAgICAgIGZhaWxJZlRydWUoZ2V0TGFiZWwoaWRlbnQp
KTsKLSAgICAgICAgICAgIGxhYmVscy5hcHBlbmQoTGFiZWxJbmZvKGlkZW50LCBzdGFydCwgZW5k
KSk7CisgICAgICAgICAgICBsYWJlbHMuYXBwZW5kKExhYmVsSW5mbyhpZGVudCwgc3RhcnQsIGVu
ZCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCkpOwogICAgICAgICB9CiAgICAgfSB3aGlsZSAo
bWF0Y2goSURFTlQpKTsKICAgICBib29sIGlzTG9vcCA9IGZhbHNlOwpAQCAtOTc2LDcgKzEwMTks
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiAgICAgZmFpbElm
RmFsc2Uoc3RhdGVtZW50KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxhYmVscy5zaXpl
KCk7IGkrKykgewogICAgICAgICBjb25zdCBMYWJlbEluZm8mIGluZm8gPSBsYWJlbHNbbGFiZWxz
LnNpemUoKSAtIGkgLSAxXTsKLSAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5jcmVhdGVMYWJl
bFN0YXRlbWVudChsb2NhdGlvbiwgaW5mby5tX2lkZW50LCBzdGF0ZW1lbnQsIGluZm8ubV9zdGFy
dCwgaW5mby5tX2VuZCk7CisgICAgICAgIHN0YXRlbWVudCA9IGNvbnRleHQuY3JlYXRlTGFiZWxT
dGF0ZW1lbnQobG9jYXRpb24sIGluZm8ubV9pZGVudCwgc3RhdGVtZW50LCBpbmZvLm1fc3RhcnQs
IGluZm8ubV9lbmQsIGluZm8ubV9kaXZvdExpbmUsIGluZm8ubV9kaXZvdExpbmVTdGFydCk7CiAg
ICAgfQogICAgIHJldHVybiBzdGF0ZW1lbnQ7CiB9CkBAIC0xMTA2LDYgKzExNDksOCBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVHJlZUJ1aWxkZXI+IFRyZWVFeHByCiB7CiAgICAgZmFpbElmU3RhY2tP
dmVyZmxvdygpOwogICAgIGludCBzdGFydCA9IHRva2VuU3RhcnQoKTsKKyAgICB1bnNpZ25lZCBs
aW5lID0gdG9rZW5MaW5lKCk7CisgICAgdW5zaWduZWQgbGluZVN0YXJ0ID0gdG9rZW5MaW5lU3Rh
cnQoKTsKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAg
ICBpbnQgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCA9IG1fYXNzaWdubWVudENvdW50OwogICAgIGlu
dCBpbml0aWFsTm9uTEhTQ291bnQgPSBtX25vbkxIU0NvdW50OwpAQCAtMTEzNiw4ICsxMTgxLDEw
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUcmVlQnVpbGRlcj4gVHJlZUV4cHIKICAgICAgICAgfQog
ICAgICAgICBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAgICAgICAgaGFkQXNzaWdu
bWVudCA9IHRydWU7Ci0gICAgICAgIGNvbnRleHQuYXNzaWdubWVudFN0YWNrQXBwZW5kKGFzc2ln
bm1lbnRTdGFjaywgbGhzLCBzdGFydCwgdG9rZW5TdGFydCgpLCBtX2Fzc2lnbm1lbnRDb3VudCwg
b3ApOworICAgICAgICBjb250ZXh0LmFzc2lnbm1lbnRTdGFja0FwcGVuZChhc3NpZ25tZW50U3Rh
Y2ssIGxocywgc3RhcnQsIHRva2VuU3RhcnQoKSwgbGluZSwgbGluZVN0YXJ0LCBtX2Fzc2lnbm1l
bnRDb3VudCwgb3ApOwogICAgICAgICBzdGFydCA9IHRva2VuU3RhcnQoKTsKKyAgICAgICAgbGlu
ZSA9IHRva2VuTGluZSgpOworICAgICAgICBsaW5lU3RhcnQgPSB0b2tlbkxpbmVTdGFydCgpOwog
ICAgICAgICBtX2Fzc2lnbm1lbnRDb3VudCsrOwogICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpE
b250QnVpbGRTdHJpbmdzKTsKICAgICAgICAgaWYgKHN0cmljdE1vZGUoKSAmJiBtX2xhc3RJZGVu
dGlmaWVyICYmIGNvbnRleHQuaXNSZXNvbHZlKGxocykpIHsKQEAgLTEyMTAsNyArMTI1Nyw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3MKICAgICAgICAgVHJlZUV4
cHJlc3Npb24gY3VycmVudCA9IHBhcnNlVW5hcnlFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAg
ICBmYWlsSWZGYWxzZShjdXJyZW50KTsKICAgICAgICAgCi0gICAgICAgIGNvbnRleHQuYXBwZW5k
QmluYXJ5RXhwcmVzc2lvbkluZm8ob3BlcmFuZFN0YWNrRGVwdGgsIGN1cnJlbnQsIGV4cHJTdGFy
dCwgbGFzdFRva2VuRW5kKCksIGxhc3RUb2tlbkVuZCgpLCBpbml0aWFsQXNzaWdubWVudHMgIT0g
bV9hc3NpZ25tZW50Q291bnQpOworICAgICAgICBjb250ZXh0LmFwcGVuZEJpbmFyeUV4cHJlc3Np
b25JbmZvKG9wZXJhbmRTdGFja0RlcHRoLCBjdXJyZW50LCBleHByU3RhcnQsIGxhc3RUb2tlbkVu
ZCgpLCBsYXN0VG9rZW5FbmQoKSwgbGFzdFRva2VuTGluZSgpLCBsYXN0VG9rZW5MaW5lU3RhcnQo
KSwgaW5pdGlhbEFzc2lnbm1lbnRzICE9IG1fYXNzaWdubWVudENvdW50KTsKICAgICAgICAgaW50
IHByZWNlZGVuY2UgPSBpc0JpbmFyeU9wZXJhdG9yKG1fdG9rZW4ubV90eXBlKTsKICAgICAgICAg
aWYgKCFwcmVjZWRlbmNlKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjY3LDkgKzEzMTQsMTAg
QEAgdGVtcGxhdGUgPGJvb2wgY29tcGxldGUsIGNsYXNzIFRyZWVCdWlsZAogICAgICAgICBjb25z
dCBJZGVudGlmaWVyKiBhY2Nlc3Nvck5hbWUgPSAwOwogICAgICAgICBUcmVlRm9ybWFsUGFyYW1l
dGVyTGlzdCBwYXJhbWV0ZXJzID0gMDsKICAgICAgICAgVHJlZUZ1bmN0aW9uQm9keSBib2R5ID0g
MDsKLSAgICAgICAgaW50IG9wZW5CcmFjZVBvcyA9IDA7Ci0gICAgICAgIGludCBjbG9zZUJyYWNl
UG9zID0gMDsKKyAgICAgICAgdW5zaWduZWQgb3BlbkJyYWNlT2Zmc2V0ID0gMDsKKyAgICAgICAg
dW5zaWduZWQgY2xvc2VCcmFjZU9mZnNldCA9IDA7CiAgICAgICAgIGludCBib2R5U3RhcnRMaW5l
ID0gMDsKKyAgICAgICAgdW5zaWduZWQgYm9keVN0YXJ0Q29sdW1uID0gMDsKICAgICAgICAgUHJv
cGVydHlOb2RlOjpUeXBlIHR5cGU7CiAgICAgICAgIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVy
dHlOYW1lcy0+Z2V0KQogICAgICAgICAgICAgdHlwZSA9IFByb3BlcnR5Tm9kZTo6R2V0dGVyOwpA
QCAtMTI4NywxMCArMTMzNSwxMCBAQCB0ZW1wbGF0ZSA8Ym9vbCBjb21wbGV0ZSwgY2xhc3MgVHJl
ZUJ1aWxkCiAgICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIGZhaWxJZkZh
bHNlKChwYXJzZUZ1bmN0aW9uSW5mbzxGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBmYWxzZT4oY29u
dGV4dCwgYWNjZXNzb3JOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3Nl
QnJhY2VQb3MsIGJvZHlTdGFydExpbmUpKSk7CisgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1
bmN0aW9uSW5mbzxGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBmYWxzZT4oY29udGV4dCwgYWNjZXNz
b3JOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZz
ZXQsIGJvZHlTdGFydExpbmUsIGJvZHlTdGFydENvbHVtbikpKTsKICAgICAgICAgaWYgKHN0cmlu
Z1Byb3BlcnR5TmFtZSkKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0LnRlbXBsYXRlIGNyZWF0
ZUdldHRlck9yU2V0dGVyUHJvcGVydHk8Y29tcGxldGU+KGxvY2F0aW9uLCB0eXBlLCBzdHJpbmdQ
cm9wZXJ0eU5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBv
cywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LnRl
bXBsYXRlIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHk8Y29tcGxldGU+KGNvbnN0X2Nhc3Q8
Vk0qPihtX3ZtKSwgbG9jYXRpb24sIHR5cGUsIG51bWVyaWNQcm9wZXJ0eU5hbWUsIHBhcmFtZXRl
cnMsIGJvZHksIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9s
YXN0TGluZSk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBjcmVhdGVHZXR0
ZXJPclNldHRlclByb3BlcnR5PGNvbXBsZXRlPihsb2NhdGlvbiwgdHlwZSwgc3RyaW5nUHJvcGVy
dHlOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZz
ZXQsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUsIGJvZHlTdGFydENvbHVtbik7CisgICAgICAg
IHJldHVybiBjb250ZXh0LnRlbXBsYXRlIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHk8Y29t
cGxldGU+KGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbG9jYXRpb24sIHR5cGUsIG51bWVyaWNQcm9w
ZXJ0eU5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZU9mZnNldCwgY2xvc2VCcmFjZU9m
ZnNldCwgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSwgYm9keVN0YXJ0Q29sdW1uKTsKICAgICB9
CiAgICAgY2FzZSBOVU1CRVI6IHsKICAgICAgICAgZG91YmxlIHByb3BlcnR5TmFtZSA9IG1fdG9r
ZW4ubV9kYXRhLmRvdWJsZVZhbHVlOwpAQCAtMTMwOSw3ICsxMzU3LDggQEAgdGVtcGxhdGUgPGJv
b2wgY29tcGxldGUsIGNsYXNzIFRyZWVCdWlsZAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlw
ZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlT2JqZWN0TGl0ZXJhbChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKLSAg
ICBpbnQgc3RhcnRPZmZzZXQgPSBtX3Rva2VuLm1fZGF0YS5pbnRWYWx1ZTsKKyAgICBpbnQgc3Rh
cnRPZmZzZXQgPSBtX3Rva2VuLm1fZGF0YS5vZmZzZXQ7CisgICAgdW5zaWduZWQgb2xkTGluZVN0
YXJ0T2Zmc2V0ID0gbV9sZXhlci0+Y3VycmVudExpbmVTdGFydE9mZnNldCgpOwogICAgIHVuc2ln
bmVkIG9sZExhc3RMaW5lTnVtYmVyID0gbV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKTsKICAgICB1
bnNpZ25lZCBvbGRMaW5lTnVtYmVyID0gbV9sZXhlci0+bGluZU51bWJlcigpOwogICAgIGNvbnN1
bWVPckZhaWxXaXRoRmxhZ3MoT1BFTkJSQUNFLCBUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5n
cyk7CkBAIC0xMzI1LDcgKzEzNzQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzCiAgICAgVHJlZVByb3BlcnR5IHByb3BlcnR5ID0gcGFyc2VQcm9wZXJ0eTxmYWxz
ZT4oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UocHJvcGVydHkpOwogICAgIGlmICghbV9zeW50
YXhBbHJlYWR5VmFsaWRhdGVkICYmIGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSkgIT0gUHJvcGVy
dHlOb2RlOjpDb25zdGFudCkgewotICAgICAgICBtX2xleGVyLT5zZXRPZmZzZXQoc3RhcnRPZmZz
ZXQpOworICAgICAgICBtX2xleGVyLT5zZXRPZmZzZXQoc3RhcnRPZmZzZXQsIG9sZExpbmVTdGFy
dE9mZnNldCk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgbV9sZXhlci0+c2V0TGFzdExpbmVO
dW1iZXIob2xkTGFzdExpbmVOdW1iZXIpOwogICAgICAgICBtX2xleGVyLT5zZXRMaW5lTnVtYmVy
KG9sZExpbmVOdW1iZXIpOwpAQCAtMTM0Miw3ICsxMzkxLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlRXhwcmVzcwogICAgICAgICBwcm9wZXJ0eSA9IHBhcnNlUHJvcGVydHk8
ZmFsc2U+KGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShwcm9wZXJ0eSk7CiAgICAgICAg
IGlmICghbV9zeW50YXhBbHJlYWR5VmFsaWRhdGVkICYmIGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0
eSkgIT0gUHJvcGVydHlOb2RlOjpDb25zdGFudCkgewotICAgICAgICAgICAgbV9sZXhlci0+c2V0
T2Zmc2V0KHN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgICAgIG1fbGV4ZXItPnNldE9mZnNldChzdGFy
dE9mZnNldCwgb2xkTGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAg
ICAgICAgIG1fbGV4ZXItPnNldExhc3RMaW5lTnVtYmVyKG9sZExhc3RMaW5lTnVtYmVyKTsKICAg
ICAgICAgICAgIG1fbGV4ZXItPnNldExpbmVOdW1iZXIob2xkTGluZU51bWJlcik7CkBAIC0xNDg4
LDEyICsxNTM3LDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3MK
ICAgICB9CiAgICAgY2FzZSBJREVOVDogewogICAgICAgICBpbnQgc3RhcnQgPSB0b2tlblN0YXJ0
KCk7CisgICAgICAgIGludCBsaW5lID0gdG9rZW5MaW5lKCk7CisgICAgICAgIGludCBsaW5lU3Rh
cnQgPSB0b2tlbkxpbmVTdGFydCgpOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9
IG1fdG9rZW4ubV9kYXRhLmlkZW50OwogICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24o
dG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBjdXJyZW50U2NvcGUo
KS0+dXNlVmFyaWFibGUoaWRlbnQsIG1fdm0tPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gKmlkZW50
KTsKICAgICAgICAgbV9sYXN0SWRlbnRpZmllciA9IGlkZW50OwotICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVSZXNvbHZlKGxvY2F0aW9uLCBpZGVudCwgc3RhcnQpOworICAgICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVSZXNvbHZlKGxvY2F0aW9uLCBpZGVudCwgc3RhcnQsIGxpbmUsIGxp
bmVTdGFydCk7CiAgICAgfQogICAgIGNhc2UgU1RSSU5HOiB7CiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CkBAIC0xNTMzLDkgKzE1ODQsMTEg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzcwogICAgICAgICAgICAg
ZmFpbElmRmFsc2UobV9sZXhlci0+c2NhblJlZ0V4cChwYXR0ZXJuLCBmbGFncykpOwogICAgICAg
ICAKICAgICAgICAgaW50IHN0YXJ0ID0gdG9rZW5TdGFydCgpOworICAgICAgICBpbnQgbGluZSA9
IHRva2VuTGluZSgpOworICAgICAgICBpbnQgbGluZVN0YXJ0ID0gdG9rZW5MaW5lU3RhcnQoKTsK
ICAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAg
ICAgIG5leHQoKTsKLSAgICAgICAgVHJlZUV4cHJlc3Npb24gcmUgPSBjb250ZXh0LmNyZWF0ZVJl
Z0V4cChsb2NhdGlvbiwgKnBhdHRlcm4sICpmbGFncywgc3RhcnQpOworICAgICAgICBUcmVlRXhw
cmVzc2lvbiByZSA9IGNvbnRleHQuY3JlYXRlUmVnRXhwKGxvY2F0aW9uLCAqcGF0dGVybiwgKmZs
YWdzLCBzdGFydCwgbGluZSwgbGluZVN0YXJ0KTsKICAgICAgICAgaWYgKCFyZSkgewogICAgICAg
ICAgICAgY29uc3QgY2hhciogeWFyckVycm9yTXNnID0gWWFycjo6Y2hlY2tTeW50YXgocGF0dGVy
bi0+c3RyaW5nKCkpOwogICAgICAgICAgICAgZmFpbFdpdGhNZXNzYWdlKHlhcnJFcnJvck1zZyk7
CkBAIC0xNTc4LDggKzE2MzEsMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RXhwcmVzcwogICAgIFRyZWVFeHByZXNzaW9uIGJhc2UgPSAwOwogICAgIGludCBzdGFydCA9IHRv
a2VuU3RhcnQoKTsKICAgICBpbnQgZXhwcmVzc2lvblN0YXJ0ID0gc3RhcnQ7CisgICAgaW50IGV4
cHJlc3Npb25MaW5lID0gdG9rZW5MaW5lKCk7CisgICAgaW50IGV4cHJlc3Npb25MaW5lU3RhcnQg
PSB0b2tlbkxpbmVTdGFydCgpOwogICAgIGludCBuZXdDb3VudCA9IDA7Ci0gICAgSlNUb2tlbkxv
Y2F0aW9uIGxvY2F0aW9uOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbihtX3NvdXJjZS0+
c3RhcnRPZmZzZXQoKSk7CiAgICAgd2hpbGUgKG1hdGNoKE5FVykpIHsKICAgICAgICAgbmV4dCgp
OwogICAgICAgICBuZXdDb3VudCsrOwpAQCAtMTU4OSwxMyArMTY0NCwxNCBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIq
IG5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7CiAgICAgICAgIFRy
ZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IHBhcmFtZXRlcnMgPSAwOwogICAgICAgICBUcmVlRnVuY3Rp
b25Cb2R5IGJvZHkgPSAwOwotICAgICAgICBpbnQgb3BlbkJyYWNlUG9zID0gMDsKLSAgICAgICAg
aW50IGNsb3NlQnJhY2VQb3MgPSAwOworICAgICAgICB1bnNpZ25lZCBvcGVuQnJhY2VPZmZzZXQg
PSAwOworICAgICAgICB1bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0ID0gMDsKICAgICAgICAgaW50
IGJvZHlTdGFydExpbmUgPSAwOworICAgICAgICB1bnNpZ25lZCBib2R5U3RhcnRDb2x1bW4gPSAw
OwogICAgICAgICBsb2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsKICAgICAgICAgbmV4dCgpOwot
ICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm88RnVuY3Rpb25Ob1JlcXVpcmVt
ZW50cywgZmFsc2U+KGNvbnRleHQsIG5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZVBv
cywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSkpKTsKLSAgICAgICAgYmFzZSA9IGNvbnRl
eHQuY3JlYXRlRnVuY3Rpb25FeHByKGxvY2F0aW9uLCBuYW1lLCBib2R5LCBwYXJhbWV0ZXJzLCBv
cGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOwor
ICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm88RnVuY3Rpb25Ob1JlcXVpcmVt
ZW50cywgZmFsc2U+KGNvbnRleHQsIG5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZU9m
ZnNldCwgY2xvc2VCcmFjZU9mZnNldCwgYm9keVN0YXJ0TGluZSwgYm9keVN0YXJ0Q29sdW1uKSkp
OworICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobG9jYXRpb24sIG5h
bWUsIGJvZHksIHBhcmFtZXRlcnMsIG9wZW5CcmFjZU9mZnNldCwgY2xvc2VCcmFjZU9mZnNldCwg
Ym9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSwgYm9keVN0YXJ0Q29sdW1uKTsKICAgICB9IGVsc2UK
ICAgICAgICAgYmFzZSA9IHBhcnNlUHJpbWFyeUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgCkBA
IC0xNjA2LDEyICsxNjYyLDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4
cHJlc3MKICAgICAgICAgY2FzZSBPUEVOQlJBQ0tFVDogewogICAgICAgICAgICAgbV9ub25Ucml2
aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAgICAgICBpbnQgZXhwcmVzc2lvbkVuZCA9IGxh
c3RUb2tlbkVuZCgpOworICAgICAgICAgICAgaW50IGV4cHJlc3Npb25MaW5lID0gbGFzdFRva2Vu
TGluZSgpOworICAgICAgICAgICAgaW50IGV4cHJlc3Npb25MaW5lU3RhcnQgPSBsYXN0VG9rZW5M
aW5lU3RhcnQoKTsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGludCBub25MSFND
b3VudCA9IG1fbm9uTEhTQ291bnQ7CiAgICAgICAgICAgICBpbnQgaW5pdGlhbEFzc2lnbm1lbnRz
ID0gbV9hc3NpZ25tZW50Q291bnQ7CiAgICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBwcm9wZXJ0
eSA9IHBhcnNlRXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHBy
b3BlcnR5KTsKLSAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZUJyYWNrZXRBY2Nlc3Mo
bG9jYXRpb24sIGJhc2UsIHByb3BlcnR5LCBpbml0aWFsQXNzaWdubWVudHMgIT0gbV9hc3NpZ25t
ZW50Q291bnQsIGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwgdG9rZW5FbmQoKSk7Cisg
ICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVCcmFja2V0QWNjZXNzKGxvY2F0aW9uLCBi
YXNlLCBwcm9wZXJ0eSwgaW5pdGlhbEFzc2lnbm1lbnRzICE9IG1fYXNzaWdubWVudENvdW50LCBl
eHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25FbmQsIHRva2VuRW5kKCksIGV4cHJlc3Npb25MaW5l
LCBleHByZXNzaW9uTGluZVN0YXJ0KTsKICAgICAgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VC
UkFDS0VUKTsKICAgICAgICAgICAgIG1fbm9uTEhTQ291bnQgPSBub25MSFNDb3VudDsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTYyMiwxNCArMTY4MCwxOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAgICAgICAgICAgICBpZiAobmV3Q291bnQpIHsKICAgICAg
ICAgICAgICAgICBuZXdDb3VudC0tOwogICAgICAgICAgICAgICAgIGludCBleHByRW5kID0gbGFz
dFRva2VuRW5kKCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgZXhwcmVzc2lvbkxpbmUgPSBs
YXN0VG9rZW5MaW5lKCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgZXhwcmVzc2lvbkxpbmVT
dGFydCA9IGxhc3RUb2tlbkxpbmVTdGFydCgpOwogICAgICAgICAgICAgICAgIFRyZWVBcmd1bWVu
dHMgYXJndW1lbnRzID0gcGFyc2VBcmd1bWVudHMoY29udGV4dCk7CiAgICAgICAgICAgICAgICAg
ZmFpbElmRmFsc2UoYXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4dC5j
cmVhdGVOZXdFeHByKGxvY2F0aW9uLCBiYXNlLCBhcmd1bWVudHMsIHN0YXJ0LCBleHByRW5kLCBs
YXN0VG9rZW5FbmQoKSk7CisgICAgICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlTmV3
RXhwcihsb2NhdGlvbiwgYmFzZSwgYXJndW1lbnRzLCBzdGFydCwgZXhwckVuZCwgbGFzdFRva2Vu
RW5kKCksIGV4cHJlc3Npb25MaW5lLCBleHByZXNzaW9uTGluZVN0YXJ0KTsKICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaW50IGV4cHJlc3Npb25FbmQgPSBsYXN0VG9rZW5F
bmQoKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBleHByZXNzaW9uTGluZSA9IGxhc3RUb2tl
bkxpbmUoKTsKKyAgICAgICAgICAgICAgICBpbnQgZXhwcmVzc2lvbkxpbmVTdGFydCA9IGxhc3RU
b2tlbkxpbmVTdGFydCgpOwogICAgICAgICAgICAgICAgIFRyZWVBcmd1bWVudHMgYXJndW1lbnRz
ID0gcGFyc2VBcmd1bWVudHMoY29udGV4dCk7CiAgICAgICAgICAgICAgICAgZmFpbElmRmFsc2Uo
YXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4dC5tYWtlRnVuY3Rpb25D
YWxsTm9kZShsb2NhdGlvbiwgYmFzZSwgYXJndW1lbnRzLCBleHByZXNzaW9uU3RhcnQsIGV4cHJl
c3Npb25FbmQsIGxhc3RUb2tlbkVuZCgpKTsKKyAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4
dC5tYWtlRnVuY3Rpb25DYWxsTm9kZShsb2NhdGlvbiwgYmFzZSwgYXJndW1lbnRzLCBleHByZXNz
aW9uU3RhcnQsIGV4cHJlc3Npb25FbmQsIGxhc3RUb2tlbkVuZCgpLCBleHByZXNzaW9uTGluZSwg
ZXhwcmVzc2lvbkxpbmVTdGFydCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX25vbkxI
U0NvdW50ID0gbm9uTEhTQ291bnQ7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE2MzcsOSArMTY5
OSwxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAgICAgICAg
IGNhc2UgRE9UOiB7CiAgICAgICAgICAgICBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsK
ICAgICAgICAgICAgIGludCBleHByZXNzaW9uRW5kID0gbGFzdFRva2VuRW5kKCk7CisgICAgICAg
ICAgICBleHByZXNzaW9uTGluZVN0YXJ0ID0gbGFzdFRva2VuTGluZVN0YXJ0KCk7CiAgICAgICAg
ICAgICBuZXh0RXhwZWN0SWRlbnRpZmllcihMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcyB8
IFRyZWVCdWlsZGVyOjpEb250QnVpbGRLZXl3b3Jkcyk7CiAgICAgICAgICAgICBtYXRjaE9yRmFp
bChJREVOVCk7Ci0gICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVEb3RBY2Nlc3MobG9j
YXRpb24sIGJhc2UsIG1fdG9rZW4ubV9kYXRhLmlkZW50LCBleHByZXNzaW9uU3RhcnQsIGV4cHJl
c3Npb25FbmQsIHRva2VuRW5kKCkpOworICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRl
RG90QWNjZXNzKGxvY2F0aW9uLCBiYXNlLCBtX3Rva2VuLm1fZGF0YS5pZGVudCwgZXhwcmVzc2lv
blN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZCgpLCBleHByZXNzaW9uTGluZSwgZXhwcmVz
c2lvbkxpbmVTdGFydCk7CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQpAQCAtMTY0OSw3ICsxNzEyLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlRXhwcmVzcwogICAgIH0KIGVuZE1lbWJlckV4cHJlc3Npb246CiAgICAgd2hpbGUg
KG5ld0NvdW50LS0pCi0gICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZU5ld0V4cHIobG9jYXRp
b24sIGJhc2UsIHN0YXJ0LCBsYXN0VG9rZW5FbmQoKSk7CisgICAgICAgIGJhc2UgPSBjb250ZXh0
LmNyZWF0ZU5ld0V4cHIobG9jYXRpb24sIGJhc2UsIHN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgZXhw
cmVzc2lvbkxpbmUsIGV4cHJlc3Npb25MaW5lU3RhcnQpOwogICAgIHJldHVybiBiYXNlOwogfQog
CkBAIC0xNjgyLDExICsxNzQ1LDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHJlc3MKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBtX25vbkxIU0NvdW50
Kys7Ci0gICAgICAgIGNvbnRleHQuYXBwZW5kVW5hcnlUb2tlbih0b2tlblN0YWNrRGVwdGgsIG1f
dG9rZW4ubV90eXBlLCB0b2tlblN0YXJ0KCkpOworICAgICAgICBjb250ZXh0LmFwcGVuZFVuYXJ5
VG9rZW4odG9rZW5TdGFja0RlcHRoLCBtX3Rva2VuLm1fdHlwZSwgdG9rZW5TdGFydCgpLCB0b2tl
bkxpbmUoKSwgdG9rZW5MaW5lU3RhcnQoKSk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgbV9u
b25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgfQogICAgIGludCBzdWJFeHByU3RhcnQg
PSB0b2tlblN0YXJ0KCk7CisgICAgaW50IHN1YkV4cHJMaW5lID0gdG9rZW5MaW5lKCk7CisgICAg
aW50IHN1YkV4cHJMaW5lU3RhcnRQb3NpdGlvbiA9IHRva2VuTGluZVN0YXJ0KCk7CisgICAgQVNT
RVJUKHN1YkV4cHJTdGFydCA+PSBzdWJFeHByTGluZVN0YXJ0UG9zaXRpb24pOwogICAgIEpTVG9r
ZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIFRyZWVFeHByZXNzaW9u
IGV4cHIgPSBwYXJzZU1lbWJlckV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2Uo
ZXhwcik7CkBAIC0xNzAwLDcgKzE3NjYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVFeHByZXNzCiAgICAgY2FzZSBQTFVTUExVUzoKICAgICAgICAgbV9ub25Ucml2aWFsRXhw
cmVzc2lvbkNvdW50Kys7CiAgICAgICAgIG1fbm9uTEhTQ291bnQrKzsKLSAgICAgICAgZXhwciA9
IGNvbnRleHQubWFrZVBvc3RmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcFBsdXNQbHVzLCBzdWJF
eHByU3RhcnQsIGxhc3RUb2tlbkVuZCgpLCB0b2tlbkVuZCgpKTsKKyAgICAgICAgZXhwciA9IGNv
bnRleHQubWFrZVBvc3RmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcFBsdXNQbHVzLCBzdWJFeHBy
U3RhcnQsIGxhc3RUb2tlbkVuZCgpLCB0b2tlbkVuZCgpLCB0b2tlbkxpbmUoKSwgdG9rZW5MaW5l
U3RhcnQoKSk7CiAgICAgICAgIG1fYXNzaWdubWVudENvdW50Kys7CiAgICAgICAgIGZhaWxJZlRy
dWVJZlN0cmljdFdpdGhOYW1lQW5kTWVzc2FnZShpc0V2YWxPckFyZ3VtZW50cywgIiciLCBtX2xh
c3RJZGVudGlmaWVyLT5pbXBsKCksICInIGNhbm5vdCBiZSBtb2RpZmllZCBpbiBzdHJpY3QgbW9k
ZSIpOwogICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3QocmVxdWlyZXNMRXhwcik7CkBAIC0xNzA5
LDcgKzE3NzUsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAg
ICAgY2FzZSBNSU5VU01JTlVTOgogICAgICAgICBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQr
KzsKICAgICAgICAgbV9ub25MSFNDb3VudCsrOwotICAgICAgICBleHByID0gY29udGV4dC5tYWtl
UG9zdGZpeE5vZGUobG9jYXRpb24sIGV4cHIsIE9wTWludXNNaW51cywgc3ViRXhwclN0YXJ0LCBs
YXN0VG9rZW5FbmQoKSwgdG9rZW5FbmQoKSk7CisgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQ
b3N0Zml4Tm9kZShsb2NhdGlvbiwgZXhwciwgT3BNaW51c01pbnVzLCBzdWJFeHByU3RhcnQsIGxh
c3RUb2tlbkVuZCgpLCB0b2tlbkVuZCgpLCB0b2tlbkxpbmUoKSwgdG9rZW5MaW5lU3RhcnQoKSk7
CiAgICAgICAgIG1fYXNzaWdubWVudENvdW50Kys7CiAgICAgICAgIGZhaWxJZlRydWVJZlN0cmlj
dFdpdGhOYW1lQW5kTWVzc2FnZShpc0V2YWxPckFyZ3VtZW50cywgIiciLCBtX2xhc3RJZGVudGlm
aWVyLT5pbXBsKCksICInIGNhbm5vdCBiZSBtb2RpZmllZCBpbiBzdHJpY3QgbW9kZSIpOwogICAg
ICAgICBmYWlsSWZUcnVlSWZTdHJpY3QocmVxdWlyZXNMRXhwcik7CkBAIC0xNzIwLDcgKzE3ODYs
OSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAgICAgfQogICAg
IAogICAgIGludCBlbmQgPSBsYXN0VG9rZW5FbmQoKTsKLSAgICAKKyAgICBpbnQgZW5kTGluZSA9
IGxhc3RUb2tlbkxpbmUoKTsKKyAgICBpbnQgZW5kTGluZVN0YXJ0UG9zaXRpb24gPSBsYXN0VG9r
ZW5MaW5lU3RhcnQoKTsKKwogICAgIGlmICghVHJlZUJ1aWxkZXI6OkNyZWF0ZXNBU1QgJiYgKG1f
c3ludGF4QWxyZWFkeVZhbGlkYXRlZCB8fCAhc3RyaWN0TW9kZSgpKSkKICAgICAgICAgcmV0dXJu
IGV4cHI7CiAKQEAgLTE3NDIsMTIgKzE4MTAsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlRXhwcmVzcwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUExVU1BM
VVM6CiAgICAgICAgIGNhc2UgQVVUT1BMVVNQTFVTOgotICAgICAgICAgICAgZXhwciA9IGNvbnRl
eHQubWFrZVByZWZpeE5vZGUobG9jYXRpb24sIGV4cHIsIE9wUGx1c1BsdXMsIGNvbnRleHQudW5h
cnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCksIHN1YkV4cHJTdGFydCArIDEs
IGVuZCk7CisgICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlUHJlZml4Tm9kZShsb2NhdGlv
biwgZXhwciwgT3BQbHVzUGx1cywgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQodG9r
ZW5TdGFja0RlcHRoKSwgc3ViRXhwclN0YXJ0ICsgMSwgZW5kLCBzdWJFeHByTGluZSwgc3ViRXhw
ckxpbmVTdGFydFBvc2l0aW9uKTsKICAgICAgICAgICAgIG1fYXNzaWdubWVudENvdW50Kys7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBNSU5VU01JTlVTOgogICAgICAgICBjYXNl
IEFVVE9NSU5VU01JTlVTOgotICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVByZWZpeE5v
ZGUobG9jYXRpb24sIGV4cHIsIE9wTWludXNNaW51cywgY29udGV4dC51bmFyeVRva2VuU3RhY2tM
YXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwgc3ViRXhwclN0YXJ0ICsgMSwgZW5kKTsKKyAgICAg
ICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQcmVmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcE1p
bnVzTWludXMsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0
aCksIHN1YkV4cHJTdGFydCArIDEsIGVuZCwgc3ViRXhwckxpbmUsIHN1YkV4cHJMaW5lU3RhcnRQ
b3NpdGlvbik7CiAgICAgICAgICAgICBtX2Fzc2lnbm1lbnRDb3VudCsrOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVFlQRU9GOgpAQCAtMTc1OCwxMyArMTgyNiwxNCBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBERUxFVEVUT0tFTjoKICAgICAgICAgICAgIGZhaWxJZlRydWVJZlN0cmlj
dFdpdGhOYW1lQW5kTWVzc2FnZShjb250ZXh0LmlzUmVzb2x2ZShleHByKSwgIkNhbm5vdCBkZWxl
dGUgdW5xdWFsaWZpZWQgcHJvcGVydHkiLCBtX2xhc3RJZGVudGlmaWVyLT5pbXBsKCksICJpbiBz
dHJpY3QgbW9kZSIpOwotICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZURlbGV0ZU5vZGUo
bG9jYXRpb24sIGV4cHIsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3Rh
Y2tEZXB0aCksIGVuZCwgZW5kKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VEZWxl
dGVOb2RlKGxvY2F0aW9uLCBleHByLCBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0
b2tlblN0YWNrRGVwdGgpLCBlbmQsIGVuZCwgZW5kTGluZSwgZW5kTGluZVN0YXJ0UG9zaXRpb24p
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAvLyBJ
ZiB3ZSBnZXQgaGVyZSBzb21ldGhpbmcgaGFzIGdvbmUgaG9ycmlibHkgaG9ycmlibHkgd3JvbmcK
ICAgICAgICAgICAgIENSQVNIKCk7CiAgICAgICAgIH0KICAgICAgICAgc3ViRXhwclN0YXJ0ID0g
Y29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKTsKKyAgICAg
ICAgc3ViRXhwckxpbmVTdGFydFBvc2l0aW9uID0gY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0
TGluZVN0YXJ0UG9zaXRpb24odG9rZW5TdGFja0RlcHRoKTsKICAgICAgICAgY29udGV4dC51bmFy
eVRva2VuU3RhY2tSZW1vdmVMYXN0KHRva2VuU3RhY2tEZXB0aCk7CiAgICAgfQogICAgIHJldHVy
biBleHByOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCShyZXZpc2lv
biAxNTE5MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00ODIsMTEgKzQ4MiwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNGdW5j
dGlvbkJvZHlOb2RlKFNjb3BlTm9kZSopIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0Z1
bmN0aW9uQm9keU5vZGUoRnVuY3Rpb25Cb2R5Tm9kZSopIHsgcmV0dXJuIHRydWU7IH0KIAotCiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIG5leHQodW5zaWduZWQgbGV4ZXJGbGFncyA9IDApCiAgICAg
ewogICAgICAgICBtX2xhc3RMaW5lID0gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmU7CiAgICAgICAg
IG1fbGFzdFRva2VuRW5kID0gbV90b2tlbi5tX2xvY2F0aW9uLmVuZE9mZnNldDsKKyAgICAgICAg
bV9sYXN0VG9rZW5MaW5lU3RhcnQgPSBtX3Rva2VuLm1fbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0
OwogICAgICAgICBtX2xleGVyLT5zZXRMYXN0TGluZU51bWJlcihtX2xhc3RMaW5lKTsKICAgICAg
ICAgbV90b2tlbi5tX3R5cGUgPSBtX2xleGVyLT5sZXgoJm1fdG9rZW4ubV9kYXRhLCAmbV90b2tl
bi5tX2xvY2F0aW9uLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKCkpOwogICAgIH0KQEAgLTQ5NSw2
ICs0OTUsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgbV9sYXN0TGluZSA9IG1fdG9rZW4u
bV9sb2NhdGlvbi5saW5lOwogICAgICAgICBtX2xhc3RUb2tlbkVuZCA9IG1fdG9rZW4ubV9sb2Nh
dGlvbi5lbmRPZmZzZXQ7CisgICAgICAgIG1fbGFzdFRva2VuTGluZVN0YXJ0ID0gbV90b2tlbi5t
X2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKICAgICAgICAgbV9sZXhlci0+c2V0TGFzdExpbmVO
dW1iZXIobV9sYXN0TGluZSk7CiAgICAgICAgIG1fdG9rZW4ubV90eXBlID0gbV9sZXhlci0+bGV4
RXhwZWN0SWRlbnRpZmllcigmbV90b2tlbi5tX2RhdGEsICZtX3Rva2VuLm1fbG9jYXRpb24sIGxl
eGVyRmxhZ3MsIHN0cmljdE1vZGUoKSk7CiAgICAgfQpAQCAtNTIyLDcgKzUyMyw3IEBAIHByaXZh
dGU6CiAgICAgICAgIHJldHVybiBtX3Rva2VuLm1fdHlwZSA9PSBleHBlY3RlZDsKICAgICB9CiAg
ICAgCi0gICAgQUxXQVlTX0lOTElORSBpbnQgdG9rZW5TdGFydCgpCisgICAgQUxXQVlTX0lOTElO
RSB1bnNpZ25lZCB0b2tlblN0YXJ0KCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX3Rva2VuLm1f
bG9jYXRpb24uc3RhcnRPZmZzZXQ7CiAgICAgfQpAQCAtNTMyLDExICs1MzMsMjEgQEAgcHJpdmF0
ZToKICAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lOwogICAgIH0KICAgICAK
LSAgICBBTFdBWVNfSU5MSU5FIGludCB0b2tlbkVuZCgpCisgICAgQUxXQVlTX0lOTElORSBpbnQg
dG9rZW5Db2x1bW4oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRva2VuU3RhcnQoKSAtIHRva2Vu
TGluZVN0YXJ0KCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCB0b2tlbkVu
ZCgpCiAgICAgewogICAgICAgICByZXR1cm4gbV90b2tlbi5tX2xvY2F0aW9uLmVuZE9mZnNldDsK
ICAgICB9CiAgICAgCisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCB0b2tlbkxpbmVTdGFydCgp
CisgICAgeworICAgICAgICByZXR1cm4gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNl
dDsKKyAgICB9CisgICAgCiAgICAgQUxXQVlTX0lOTElORSBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IHRva2VuTG9jYXRpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV9sb2NhdGlv
bjsKQEAgLTkwNiw3ICs5MTcsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCBwYXJzZUZvcm1h
bFBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IEFMV0FZU19JTkxJTkUgVHJlZUV4cHJlc3Npb24gcGFyc2VWYXJEZWNsYXJhdGlvbkxpc3Qo
VHJlZUJ1aWxkZXImLCBpbnQmIGRlY2xhcmF0aW9ucywgY29uc3QgSWRlbnRpZmllciomIGxhc3RJ
ZGVudCwgVHJlZUV4cHJlc3Npb24mIGxhc3RJbml0aWFsaXplciwgaW50JiBpZGVudFN0YXJ0LCBp
bnQmIGluaXRTdGFydCwgaW50JiBpbml0RW5kKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUNvbnN0RGVjbExpc3QgcGFyc2VDb25zdERlY2xhcmF0
aW9uTGlzdChUcmVlQnVpbGRlciYgY29udGV4dCk7Ci0gICAgdGVtcGxhdGUgPEZ1bmN0aW9uUmVx
dWlyZW1lbnRzLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBjbGFzcyBUcmVlQnVpbGRl
cj4gYm9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIq
JiwgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QmLCBUcmVlRnVuY3Rpb25Cb2R5JiwgaW50JiBvcGVu
QnJhY2UsIGludCYgY2xvc2VCcmFjZSwgaW50JiBib2R5U3RhcnRMaW5lKTsKKyAgICB0ZW1wbGF0
ZSA8RnVuY3Rpb25SZXF1aXJlbWVudHMsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIGNs
YXNzIFRyZWVCdWlsZGVyPiBib29sIHBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiwgY29u
c3QgSWRlbnRpZmllciomLCBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCYsIFRyZWVGdW5jdGlvbkJv
ZHkmLCB1bnNpZ25lZCYgb3BlbkJyYWNlT2Zmc2V0LCB1bnNpZ25lZCYgY2xvc2VCcmFjZU9mZnNl
dCwgaW50JiBib2R5U3RhcnRMaW5lLCB1bnNpZ25lZCYgYm9keVN0YXJ0Q29sdW1uKTsKICAgICBB
TFdBWVNfSU5MSU5FIGludCBpc0JpbmFyeU9wZXJhdG9yKEpTVG9rZW5UeXBlKTsKICAgICBib29s
IGFsbG93QXV0b21hdGljU2VtaWNvbG9uKCk7CiAgICAgCkBAIC05MjksNiArOTQwLDE2IEBAIHBy
aXZhdGU6CiAgICAgICAgIHJldHVybiBtX2xhc3RUb2tlbkVuZDsKICAgICB9CiAKKyAgICB1bnNp
Z25lZCBsYXN0VG9rZW5MaW5lKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xhc3RM
aW5lOworICAgIH0KKworICAgIHVuc2lnbmVkIGxhc3RUb2tlbkxpbmVTdGFydCgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9sYXN0VG9rZW5MaW5lU3RhcnQ7CisgICAgfQorCiAgICAg
Ym9vbCBoYXNFcnJvcigpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gIW1fZXJyb3JNZXNz
YWdlLmlzTnVsbCgpOwpAQCAtOTQ0LDggKzk2NSwxMCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBt
X2Vycm9yTWVzc2FnZTsKICAgICBKU1Rva2VuIG1fdG9rZW47CiAgICAgYm9vbCBtX2FsbG93c0lu
OwotICAgIGludCBtX2xhc3RMaW5lOworICAgIHVuc2lnbmVkIG1fbGFzdExpbmU7CiAgICAgaW50
IG1fbGFzdFRva2VuRW5kOworICAgIHVuc2lnbmVkIG1fbGFzdFRva2VuTGluZTsKKyAgICB1bnNp
Z25lZCBtX2xhc3RUb2tlbkxpbmVTdGFydDsKICAgICBpbnQgbV9hc3NpZ25tZW50Q291bnQ7CiAg
ICAgaW50IG1fbm9uTEhTQ291bnQ7CiAgICAgYm9vbCBtX3N5bnRheEFscmVhZHlWYWxpZGF0ZWQ7
CkBAIC05OTUsNiArMTAxOCw3IEBAIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVy
VHlwZT4KICAgICBlcnJNc2cgPSBTdHJpbmcoKTsKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBzdGFy
dExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSBt
X3NvdXJjZS0+c3RhcnRDb2x1bW4oKTsKIAogICAgIFN0cmluZyBwYXJzZUVycm9yID0gcGFyc2VJ
bm5lcigpOwogCkBAIC0xMDEyLDEyICsxMDM2LDE0IEBAIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4g
UGFyc2VyPExleGVyVHlwZT4KIAogICAgIFJlZlB0cjxQYXJzZWROb2RlPiByZXN1bHQ7CiAgICAg
aWYgKG1fc291cmNlRWxlbWVudHMpIHsKLSAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGVuZExvY2F0
aW9uOworICAgICAgICBKU1Rva2VuTG9jYXRpb24gZW5kTG9jYXRpb24obV9zb3VyY2UtPnN0YXJ0
T2Zmc2V0KCkpOwogICAgICAgICBlbmRMb2NhdGlvbi5saW5lID0gbV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKTsKLSAgICAgICAgZW5kTG9jYXRpb24uY2hhclBvc2l0aW9uID0gbV9sZXhlci0+Y3Vy
cmVudENoYXJQb3NpdGlvbigpOworICAgICAgICBlbmRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQg
PSBtX2xleGVyLT5jdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CisgICAgICAgIGVuZExvY2F0aW9u
LnN0YXJ0T2Zmc2V0ID0gbV9sZXhlci0+Y3VycmVudE9mZnNldCgpOwogICAgICAgICByZXN1bHQg
PSBQYXJzZWROb2RlOjpjcmVhdGUobV92bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXJ0TG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbmRMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0
Q29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zb3VyY2VFbGVt
ZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFyRGVjbGFyYXRp
b25zID8gJm1fdmFyRGVjbGFyYXRpb25zLT5kYXRhIDogMCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZnVuY0RlY2xhcmF0aW9ucyA/ICZtX2Z1bmNEZWNsYXJhdGlvbnMt
PmRhdGEgOiAwLApAQCAtMTAyNSw3ICsxMDUxLDcgQEAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBQ
YXJzZXI8TGV4ZXJUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm1f
c291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mZWF0dXJlcywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbnVtQ29uc3RhbnRzKTsKLSAg
ICAgICAgcmVzdWx0LT5zZXRMb2MobV9zb3VyY2UtPmZpcnN0TGluZSgpLCBtX2xhc3RMaW5lLCBt
X2xleGVyLT5jdXJyZW50Q2hhclBvc2l0aW9uKCkpOworICAgICAgICByZXN1bHQtPnNldExvYyht
X3NvdXJjZS0+Zmlyc3RMaW5lKCksIG1fbGFzdExpbmUsIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQo
KSwgbV9sZXhlci0+Y3VycmVudExpbmVTdGFydE9mZnNldCgpKTsKICAgICB9IGVsc2UgewogICAg
ICAgICAvLyBXZSBjYW4gbmV2ZXIgc2VlIGEgc3ludGF4IGVycm9yIHdoZW4gcmVwYXJzaW5nIGEg
ZnVuY3Rpb24sIHNpbmNlIHdlIHNob3VsZCBoYXZlCiAgICAgICAgIC8vIHJlcG9ydGVkIHRoZSBl
cnJvciB3aGVuIHBhcnNpbmcgdGhlIGNvbnRhaW5pbmcgcHJvZ3JhbSBvciBldmFsIGNvZGUuIFNv
IGlmIHdlJ3JlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vu
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9r
ZW5zLmgJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyVG9rZW5zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OSwyNCArMTQ5LDM2IEBAIGVudW0g
SlNUb2tlblR5cGUgewogfTsKIAogdW5pb24gSlNUb2tlbkRhdGEgewotICAgIGludCBpbnRWYWx1
ZTsKKyAgICBzdHJ1Y3QgeworICAgICAgICB1aW50MzJfdCBsaW5lOworICAgICAgICB1aW50MzJf
dCBvZmZzZXQ7CisgICAgICAgIHVpbnQzMl90IGxpbmVTdGFydE9mZnNldDsKKyAgICB9OwogICAg
IGRvdWJsZSBkb3VibGVWYWx1ZTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudDsKIH07CiAK
IHN0cnVjdCBKU1Rva2VuTG9jYXRpb24gewotICAgIEpTVG9rZW5Mb2NhdGlvbigpIDogbGluZSgw
KSwgY2hhclBvc2l0aW9uKDApIHsgfQorICAgIEpTVG9rZW5Mb2NhdGlvbih1bnNpZ25lZCBfc291
cmNlT2Zmc2V0ID0gVUlOVF9NQVgpIDogbGluZSgwKSwgbGluZVN0YXJ0T2Zmc2V0KDApLCBzdGFy
dE9mZnNldCgwKSwgc291cmNlT2Zmc2V0KF9zb3VyY2VPZmZzZXQpIHsgfQogICAgIEpTVG9rZW5M
b2NhdGlvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKQogICAgIHsKICAgICAgICAg
bGluZSA9IGxvY2F0aW9uLmxpbmU7CisgICAgICAgIGxpbmVTdGFydE9mZnNldCA9IGxvY2F0aW9u
LmxpbmVTdGFydE9mZnNldDsKICAgICAgICAgc3RhcnRPZmZzZXQgPSBsb2NhdGlvbi5zdGFydE9m
ZnNldDsKICAgICAgICAgZW5kT2Zmc2V0ID0gbG9jYXRpb24uZW5kT2Zmc2V0OwotICAgICAgICBj
aGFyUG9zaXRpb24gPSBsb2NhdGlvbi5jaGFyUG9zaXRpb247CisgICAgICAgIHNvdXJjZU9mZnNl
dCA9IGxvY2F0aW9uLnNvdXJjZU9mZnNldDsKKyAgICAgICAgQVNTRVJUKHNvdXJjZU9mZnNldCAh
PSBVSU5UX01BWCk7CiAgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBsaW5lU3Rh
cnRQb3NpdGlvbigpIGNvbnN0IHsgQVNTRVJUKHNvdXJjZU9mZnNldCAhPSBVSU5UX01BWCk7IHJl
dHVybiBsaW5lU3RhcnRPZmZzZXQgLSBzb3VyY2VPZmZzZXQ7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24oKSBjb25zdCB7IEFTU0VSVChzb3VyY2VPZmZzZXQgIT0g
VUlOVF9NQVgpOyByZXR1cm4gc3RhcnRPZmZzZXQgLSBzb3VyY2VPZmZzZXQ7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIHVuc2lnbmVkIGVuZFBvc2l0aW9uKCkgY29uc3QgeyBBU1NFUlQoc291cmNlT2Zm
c2V0ICE9IFVJTlRfTUFYKTsgcmV0dXJuIGVuZE9mZnNldCAtIHNvdXJjZU9mZnNldDsgfQorCiAg
ICAgaW50IGxpbmU7Ci0gICAgaW50IHN0YXJ0T2Zmc2V0OwotICAgIGludCBlbmRPZmZzZXQ7Ci0g
ICAgaW50IGNoYXJQb3NpdGlvbjsKKyAgICB1bnNpZ25lZCBsaW5lU3RhcnRPZmZzZXQ7CisgICAg
dW5zaWduZWQgc3RhcnRPZmZzZXQ7CisgICAgdW5zaWduZWQgZW5kT2Zmc2V0OworICAgIHVuc2ln
bmVkIHNvdXJjZU9mZnNldDsKIH07CiAKIHN0cnVjdCBKU1Rva2VuIHsKQEAgLTE3NSw3ICsxODcs
NiBAQCBzdHJ1Y3QgSlNUb2tlbiB7CiAgICAgSlNUb2tlbkxvY2F0aW9uIG1fbG9jYXRpb247CiB9
OwogCi19Ci0KK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gUGFyc2VyVG9rZW5zX2gK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oCShyZXZpc2lv
biAxNTE5MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgICwgbV9zdGFydENoYXIoMCkKICAgICAgICAgICAgICwgbV9lbmRDaGFyKDApCiAgICAgICAg
ICAgICAsIG1fZmlyc3RMaW5lKDApCisgICAgICAgICAgICAsIG1fc3RhcnRDb2x1bW4oMCkKICAg
ICAgICAgewogICAgICAgICB9CiAKQEAgLTQ5LDE5ICs1MCwzMCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgU291cmNlQ29kZShQYXNzUmVmUHRyPFNv
dXJjZVByb3ZpZGVyPiBwcm92aWRlciwgaW50IGZpcnN0TGluZSA9IDEpCisgICAgICAgIFNvdXJj
ZUNvZGUoUGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gcHJvdmlkZXIpCisgICAgICAgICAgICA6
IG1fcHJvdmlkZXIocHJvdmlkZXIpCisgICAgICAgICAgICAsIG1fc3RhcnRDaGFyKDApCisgICAg
ICAgICAgICAsIG1fZW5kQ2hhcihtX3Byb3ZpZGVyLT5zb3VyY2UoKS5sZW5ndGgoKSkKKyAgICAg
ICAgICAgICwgbV9maXJzdExpbmUoMSkKKyAgICAgICAgICAgICwgbV9zdGFydENvbHVtbigxKQor
ICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBTb3VyY2VDb2RlKFBhc3NSZWZQdHI8U291
cmNlUHJvdmlkZXI+IHByb3ZpZGVyLCBpbnQgZmlyc3RMaW5lLCBpbnQgc3RhcnRDb2x1bW4pCiAg
ICAgICAgICAgICA6IG1fcHJvdmlkZXIocHJvdmlkZXIpCiAgICAgICAgICAgICAsIG1fc3RhcnRD
aGFyKDApCiAgICAgICAgICAgICAsIG1fZW5kQ2hhcihtX3Byb3ZpZGVyLT5zb3VyY2UoKS5sZW5n
dGgoKSkKICAgICAgICAgICAgICwgbV9maXJzdExpbmUoc3RkOjptYXgoZmlyc3RMaW5lLCAxKSkK
KyAgICAgICAgICAgICwgbV9zdGFydENvbHVtbihzdGQ6Om1heChzdGFydENvbHVtbiwgMSkpCiAg
ICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFNvdXJjZUNvZGUoUGFzc1JlZlB0cjxTb3Vy
Y2VQcm92aWRlcj4gcHJvdmlkZXIsIGludCBzdGFydCwgaW50IGVuZCwgaW50IGZpcnN0TGluZSkK
KyAgICAgICAgU291cmNlQ29kZShQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBwcm92aWRlciwg
aW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgZmlyc3RMaW5lLCBpbnQgc3RhcnRDb2x1bW4pCiAgICAg
ICAgICAgICA6IG1fcHJvdmlkZXIocHJvdmlkZXIpCiAgICAgICAgICAgICAsIG1fc3RhcnRDaGFy
KHN0YXJ0KQogICAgICAgICAgICAgLCBtX2VuZENoYXIoZW5kKQogICAgICAgICAgICAgLCBtX2Zp
cnN0TGluZShzdGQ6Om1heChmaXJzdExpbmUsIDEpKQorICAgICAgICAgICAgLCBtX3N0YXJ0Q29s
dW1uKHN0ZDo6bWF4KHN0YXJ0Q29sdW1uLCAxKSkKICAgICAgICAgewogICAgICAgICB9CiAKQEAg
LTg0LDI5ICs5NiwzMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc051bGwoKSBj
b25zdCB7IHJldHVybiAhbV9wcm92aWRlcjsgfQogICAgICAgICBTb3VyY2VQcm92aWRlciogcHJv
dmlkZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb3ZpZGVyLmdldCgpOyB9CiAgICAgICAgIGludCBm
aXJzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0TGluZTsgfQorICAgICAgICBpbnQgc3Rh
cnRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0Q29sdW1uOyB9CiAgICAgICAgIGludCBz
dGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRDaGFyOyB9CiAgICAgICAgIGludCBl
bmRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2VuZENoYXI7IH0KICAgICAgICAgaW50IGxlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kQ2hhciAtIG1fc3RhcnRDaGFyOyB9CiAgICAgICAgIAot
ICAgICAgICBTb3VyY2VDb2RlIHN1YkV4cHJlc3Npb24odW5zaWduZWQgb3BlbkJyYWNlLCB1bnNp
Z25lZCBjbG9zZUJyYWNlLCBpbnQgZmlyc3RMaW5lKTsKKyAgICAgICAgU291cmNlQ29kZSBzdWJF
eHByZXNzaW9uKHVuc2lnbmVkIG9wZW5CcmFjZSwgdW5zaWduZWQgY2xvc2VCcmFjZSwgaW50IGZp
cnN0TGluZSwgaW50IHN0YXJ0Q29sdW1uKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZlB0
cjxTb3VyY2VQcm92aWRlcj4gbV9wcm92aWRlcjsKICAgICAgICAgaW50IG1fc3RhcnRDaGFyOwog
ICAgICAgICBpbnQgbV9lbmRDaGFyOwogICAgICAgICBpbnQgbV9maXJzdExpbmU7CisgICAgICAg
IGludCBtX3N0YXJ0Q29sdW1uOwogICAgIH07CiAKICAgICBpbmxpbmUgU291cmNlQ29kZSBtYWtl
U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCA9IFN0cmluZygp
LCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9zaXRpb246Om1pbmlt
dW1Qb3NpdGlvbigpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFNvdXJjZUNvZGUoU3RyaW5nU291
cmNlUHJvdmlkZXI6OmNyZWF0ZShzb3VyY2UsIHVybCwgc3RhcnRQb3NpdGlvbiksIHN0YXJ0UG9z
aXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCkpOworICAgICAgICByZXR1cm4gU291cmNlQ29kZShT
dHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKHNvdXJjZSwgdXJsLCBzdGFydFBvc2l0aW9uKSwg
c3RhcnRQb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJbnQoKSwgc3RhcnRQb3NpdGlvbi5tX2NvbHVt
bi5vbmVCYXNlZEludCgpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgU291cmNlQ29kZSBTb3VyY2VD
b2RlOjpzdWJFeHByZXNzaW9uKHVuc2lnbmVkIG9wZW5CcmFjZSwgdW5zaWduZWQgY2xvc2VCcmFj
ZSwgaW50IGZpcnN0TGluZSkKKyAgICBpbmxpbmUgU291cmNlQ29kZSBTb3VyY2VDb2RlOjpzdWJF
eHByZXNzaW9uKHVuc2lnbmVkIG9wZW5CcmFjZSwgdW5zaWduZWQgY2xvc2VCcmFjZSwgaW50IGZp
cnN0TGluZSwgaW50IHN0YXJ0Q29sdW1uKQogICAgIHsKICAgICAgICAgQVNTRVJUKHByb3ZpZGVy
KCktPnNvdXJjZSgpW29wZW5CcmFjZV0gPT0gJ3snKTsKICAgICAgICAgQVNTRVJUKHByb3ZpZGVy
KCktPnNvdXJjZSgpW2Nsb3NlQnJhY2VdID09ICd9Jyk7Ci0gICAgICAgIHJldHVybiBTb3VyY2VD
b2RlKHByb3ZpZGVyKCksIG9wZW5CcmFjZSwgY2xvc2VCcmFjZSArIDEsIGZpcnN0TGluZSk7Cisg
ICAgICAgIHN0YXJ0Q29sdW1uICs9IDE7IC8vIENvbnZlcnQgdG8gYmFzZSAxLgorICAgICAgICBy
ZXR1cm4gU291cmNlQ29kZShwcm92aWRlcigpLCBvcGVuQnJhY2UsIGNsb3NlQnJhY2UgKyAxLCBm
aXJzdExpbmUsIHN0YXJ0Q29sdW1uKTsKICAgICB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5jcHAJ
KHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNl
UHJvdmlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw1MCArNDIsMTEgQEAgU291cmNlUHJv
dmlkZXI6On5Tb3VyY2VQcm92aWRlcigpCiB7CiB9CiAKLVZlY3RvcjxzaXplX3Q+JiBTb3VyY2VQ
cm92aWRlcjo6bGluZVN0YXJ0cygpCi17Ci0gICAgaWYgKCFtX2xpbmVTdGFydHMpIHsKLSAgICAg
ICAgbV9saW5lU3RhcnRzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxzaXplX3Q+KCkpOwotICAgICAg
ICBTdHJpbmcgc291cmNlID0gdGhpcy0+c291cmNlKCk7Ci0gICAgICAgIHNpemVfdCBpbmRleCA9
IDA7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIG1fbGluZVN0YXJ0cy0+YXBwZW5kKGluZGV4
KTsKLSAgICAgICAgICAgIGluZGV4ID0gc291cmNlLmZpbmROZXh0TGluZVN0YXJ0KGluZGV4KTsK
LSAgICAgICAgfSB3aGlsZSAoaW5kZXggIT0gbm90Rm91bmQpOwotICAgICAgICBtX2xpbmVTdGFy
dHMtPnNocmlua1RvRml0KCk7Ci0gICAgfQotICAgIHJldHVybiAqbV9saW5lU3RhcnRzOwotfQot
Ci0KIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGNoYXJQb3NpdGlvbkV4dHJhY3Rvcihjb25zdCBzaXpl
X3QqIHZhbHVlKQogewogICAgIHJldHVybiAqdmFsdWU7CiB9CiAKLXNpemVfdCBTb3VyY2VQcm92
aWRlcjo6Y2hhclBvc2l0aW9uVG9Db2x1bW5OdW1iZXIoc2l6ZV90IGNoYXJQb3NpdGlvbikKLXsK
LSAgICBWZWN0b3I8c2l6ZV90PiYgbGluZVN0YXJ0cyA9IHRoaXMtPmxpbmVTdGFydHMoKTsKLSAg
ICBzaXplX3QqIGRhdGEgPSBsaW5lU3RhcnRzLmRhdGEoKTsKLSAgICBzaXplX3QgZGF0YVNpemUg
PSBsaW5lU3RhcnRzLnNpemUoKTsKLQotICAgIC8vIEdldCB0aGUgbmVhcmVzdCBsaW5lIHN0YXJ0
IGVudHJ5ICh3aGljaCBjb3VsZCBiZSB0byB0aGUgbGVmdCBvciB0byB0aGUKLSAgICAvLyByaWdo
dCBvZiB0aGUgcmVxdWVzdGVkIGNoYXJQb3NpdGlvbi4KLSAgICBjb25zdCBzaXplX3QqIGxpbmUg
PSBhcHByb3hpbWF0ZUJpbmFyeVNlYXJjaDxzaXplX3QsIHNpemVfdD4oZGF0YSwgZGF0YVNpemUs
IGNoYXJQb3NpdGlvbiwgY2hhclBvc2l0aW9uRXh0cmFjdG9yKTsKLSAgICBzaXplX3QgbGluZVN0
YXJ0UG9zaXRpb24gPSAqbGluZTsKLQotICAgIGlmIChsaW5lU3RhcnRQb3NpdGlvbiA+IGNoYXJQ
b3NpdGlvbikgewotICAgICAgICBpZiAoZGF0YSA8IGxpbmUpIHsKLSAgICAgICAgICAgIGxpbmUt
LTsKLSAgICAgICAgICAgIGxpbmVTdGFydFBvc2l0aW9uID0gKmxpbmU7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBBU1NFUlQoZGF0YSA8PSBsaW5lKTsKLSAgICBBU1NFUlQobGluZVN0YXJ0UG9z
aXRpb24gPD0gY2hhclBvc2l0aW9uKTsKLSAgICByZXR1cm4gY2hhclBvc2l0aW9uIC0gbGluZVN0
YXJ0UG9zaXRpb247Ci19Ci0KIHN0YXRpYyBUQ01hbGxvY19TcGluTG9jayBwcm92aWRlcklkTG9j
ayA9IFNQSU5MT0NLX0lOSVRJQUxJWkVSOwogCiB2b2lkIFNvdXJjZVByb3ZpZGVyOjpnZXRJRCgp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5o
CShyZXZpc2lvbiAxNTE5MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJj
ZVByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDggKzY1LDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsaWRhdGVkOyB9
CiAgICAgICAgIHZvaWQgc2V0VmFsaWQoKSB7IG1fdmFsaWRhdGVkID0gdHJ1ZTsgfQogCi0gICAg
ICAgIHNpemVfdCBjaGFyUG9zaXRpb25Ub0NvbHVtbk51bWJlcihzaXplX3QgY2hhclBvc2l0aW9u
KTsKLQogICAgIHByaXZhdGU6CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBnZXRJ
RCgpOwpAQCAtNzYsOCArNzQsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVGV4dFBvc2l0
aW9uIG1fc3RhcnRQb3NpdGlvbjsKICAgICAgICAgYm9vbCBtX3ZhbGlkYXRlZCA6IDE7CiAgICAg
ICAgIHVpbnRwdHJfdCBtX2lkIDogc2l6ZW9mKHVpbnRwdHJfdCkgKiA4IC0gMTsKLQotICAgICAg
ICBPd25QdHI8VmVjdG9yPHNpemVfdD4gPiBtX2xpbmVTdGFydHM7CiAgICAgfTsKIAogICAgIGNs
YXNzIFN0cmluZ1NvdXJjZVByb3ZpZGVyIDogcHVibGljIFNvdXJjZVByb3ZpZGVyIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVy
Q2FjaGVJdGVtLmgJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyAr
MzYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIHN0cnVjdCBTb3VyY2VQcm92aWRlckNhY2hlSXRlbUNy
ZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgdW5zaWduZWQgZnVuY3Rpb25TdGFydDsKICAgICB1bnNp
Z25lZCBjbG9zZUJyYWNlTGluZTsKLSAgICB1bnNpZ25lZCBjbG9zZUJyYWNlUG9zOworICAgIHVu
c2lnbmVkIGNsb3NlQnJhY2VPZmZzZXQ7CisgICAgdW5zaWduZWQgY2xvc2VCcmFjZUxpbmVTdGFy
dE9mZnNldDsKICAgICBib29sIG5lZWRzRnVsbEFjdGl2YXRpb247CiAgICAgYm9vbCB1c2VzRXZh
bDsKICAgICBib29sIHN0cmljdE1vZGU7CkBAIC01OSwxMCArNjAsMTMgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgSlNUb2tlbiB0b2tlbjsKICAgICAgICAgdG9rZW4ubV90eXBlID0gQ0xPU0VC
UkFDRTsKLSAgICAgICAgdG9rZW4ubV9kYXRhLmludFZhbHVlID0gY2xvc2VCcmFjZVBvczsKLSAg
ICAgICAgdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldCA9IGNsb3NlQnJhY2VQb3M7Ci0gICAg
ICAgIHRva2VuLm1fbG9jYXRpb24uZW5kT2Zmc2V0ID0gY2xvc2VCcmFjZVBvcyArIDE7CisgICAg
ICAgIHRva2VuLm1fZGF0YS5vZmZzZXQgPSBjbG9zZUJyYWNlT2Zmc2V0OworICAgICAgICB0b2tl
bi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0ID0gY2xvc2VCcmFjZU9mZnNldDsKKyAgICAgICAgdG9r
ZW4ubV9sb2NhdGlvbi5lbmRPZmZzZXQgPSBjbG9zZUJyYWNlT2Zmc2V0ICsgMTsKICAgICAgICAg
dG9rZW4ubV9sb2NhdGlvbi5saW5lID0gY2xvc2VCcmFjZUxpbmU7CisgICAgICAgIHRva2VuLm1f
bG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0ID0gY2xvc2VCcmFjZUxpbmVTdGFydE9mZnNldDsKKyAg
ICAgICAgLy8gdG9rZW4ubV9sb2NhdGlvbi5zb3VyY2VPZmZzZXQgaXMgaW5pdGlhbGl6ZWQgb25j
ZSBieSB0aGUgY2xpZW50LiBTbywKKyAgICAgICAgLy8gd2UgZG8gbm90IG5lZWQgdG8gc2V0IGl0
IGhlcmUuCiAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICB9CiAKQEAgLTcyLDkgKzc2LDEwIEBA
IHB1YmxpYzoKICAgICB1bnNpZ25lZCBjbG9zZUJyYWNlTGluZSA6IDMxOwogICAgIGJvb2wgdXNl
c0V2YWwgOiAxOwogCi0gICAgdW5zaWduZWQgY2xvc2VCcmFjZVBvcyA6IDMxOworICAgIHVuc2ln
bmVkIGNsb3NlQnJhY2VPZmZzZXQgOiAzMTsKICAgICBib29sIHN0cmljdE1vZGUgOiAxOwogCisg
ICAgdW5zaWduZWQgY2xvc2VCcmFjZUxpbmVTdGFydE9mZnNldDsKICAgICB1bnNpZ25lZCB1c2Vk
VmFyaWFibGVzQ291bnQ7CiAgICAgdW5zaWduZWQgd3JpdHRlblZhcmlhYmxlc0NvdW50OwogCkBA
IC0xMDYsOCArMTExLDkgQEAgaW5saW5lIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtOjpTb3VyY2VQ
cgogICAgICwgbmVlZHNGdWxsQWN0aXZhdGlvbihwYXJhbWV0ZXJzLm5lZWRzRnVsbEFjdGl2YXRp
b24pCiAgICAgLCBjbG9zZUJyYWNlTGluZShwYXJhbWV0ZXJzLmNsb3NlQnJhY2VMaW5lKQogICAg
ICwgdXNlc0V2YWwocGFyYW1ldGVycy51c2VzRXZhbCkKLSAgICAsIGNsb3NlQnJhY2VQb3MocGFy
YW1ldGVycy5jbG9zZUJyYWNlUG9zKQorICAgICwgY2xvc2VCcmFjZU9mZnNldChwYXJhbWV0ZXJz
LmNsb3NlQnJhY2VPZmZzZXQpCiAgICAgLCBzdHJpY3RNb2RlKHBhcmFtZXRlcnMuc3RyaWN0TW9k
ZSkKKyAgICAsIGNsb3NlQnJhY2VMaW5lU3RhcnRPZmZzZXQocGFyYW1ldGVycy5jbG9zZUJyYWNl
TGluZVN0YXJ0T2Zmc2V0KQogICAgICwgdXNlZFZhcmlhYmxlc0NvdW50KHBhcmFtZXRlcnMudXNl
ZFZhcmlhYmxlcy5zaXplKCkpCiAgICAgLCB3cml0dGVuVmFyaWFibGVzQ291bnQocGFyYW1ldGVy
cy53cml0dGVuVmFyaWFibGVzLnNpemUoKSkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCShyZXZpc2lvbiAxNTE5MjApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MTE5LDIxICsxMTksMjEgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBEb250
QnVpbGRTdHJpbmdzID0gTGV4ZXJGbGFnc0RvbnRCdWlsZFN0cmluZ3M7CiAKICAgICBpbnQgY3Jl
YXRlU291cmNlRWxlbWVudHMoKSB7IHJldHVybiAxOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFr
ZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIENhbGxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZUZ1
bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBDYWxsRXhwcjsgfQogICAgIHZvaWQgYXBwZW5kVG9D
b21tYShFeHByZXNzaW9uVHlwZSYgYmFzZSwgRXhwcmVzc2lvblR5cGUgcmlnaHQpIHsgYmFzZSA9
IHJpZ2h0OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQ29tbWFFeHByKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSByaWdodCkgeyByZXR1
cm4gcmlnaHQ7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlQXNzaWduTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIEV4cHJlc3Npb25UeXBlLCBi
b29sLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQotICAg
IEV4cHJlc3Npb25UeXBlIG1ha2VQcmVmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25UeXBlLCBPcGVyYXRvciwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gUHJlRXhwcjsg
fQotICAgIEV4cHJlc3Npb25UeXBlIG1ha2VQb3N0Zml4Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFBv
c3RFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZUFzc2lnbk5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIE9wZXJhdG9yLCBFeHByZXNzaW9uVHlwZSwgYm9v
bCwgYm9vbCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHBy
OyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZVByZWZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvblR5cGUsIE9wZXJhdG9yLCBpbnQsIGludCwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gUHJlRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VQb3N0Zml4Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGludCwgaW50
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBQb3N0RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBl
IG1ha2VUeXBlT2ZOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlKSB7
IHJldHVybiBUeXBlb2ZFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZURlbGV0ZU5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQpIHsg
cmV0dXJuIERlbGV0ZUV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtlRGVsZXRlTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIERlbGV0ZUV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBtYWtlTmVn
YXRlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4g
VW5hcnlFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgbWFrZUJpdHdpc2VOb3ROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0K
ICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVMb2dpY2FsTm90KGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KICAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVVbmFyeVBsdXMoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5
cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVZvaWQo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhw
cjsgfQogICAgIEV4cHJlc3Npb25UeXBlIHRoaXNFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYp
IHsgcmV0dXJuIFRoaXNFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVzb2x2ZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50KSB7IHJldHVybiBS
ZXNvbHZlRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlc29sdmUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IFJlc29sdmVFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlT2JqZWN0TGl0ZXJhbChj
b25zdCBKU1Rva2VuTG9jYXRpb24mKSB7IHJldHVybiBPYmplY3RMaXRlcmFsRXhwcjsgfQogICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZU9iamVjdExpdGVyYWwoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgaW50KSB7IHJldHVybiBPYmplY3RMaXRlcmFsRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZUFycmF5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCkgeyByZXR1cm4gQXJyYXlM
aXRlcmFsRXhwcjsgfQpAQCAtMTQyLDE1ICsxNDIsMTUgQEAgcHVibGljOgogICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZVN0cmluZyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlm
aWVyKikgeyByZXR1cm4gU3RyaW5nRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJv
b2xlYW4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgYm9vbCkgeyByZXR1cm4gQm9vbEV4cHI7IH0K
ICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsg
cmV0dXJuIE51bGxFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQnJhY2tldEFjY2Vz
cyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUs
IGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEJyYWNrZXRFeHByOyB9Ci0gICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRG90RXhw
cjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlZ0V4cChjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiwgaW50KSB7
IHJldHVybiBZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnN0cmluZygpKSA/IDAgOiBSZWdFeHBF
eHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQnJhY2tldEFjY2Vzcyhjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGludCwg
aW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBCcmFja2V0RXhwcjsgfQorICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9u
VHlwZSwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVy
biBEb3RFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVnRXhwKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXIm
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnN0cmlu
ZygpKSA/IDAgOiBSZWdFeHBFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTmV3RXhw
cihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGludCwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGludCwg
aW50KSB7IHJldHVybiBOZXdFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQ29uZGl0
aW9uYWxFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNz
aW9uVHlwZSwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIENvbmRpdGlvbmFsRXhwcjsgfQotICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFzc2lnblJlc29sdmUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50KSB7IHJl
dHVybiBBc3NpZ25tZW50RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0aW9u
RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9Ci0gICAgaW50IGNy
ZWF0ZUZ1bmN0aW9uQm9keShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBib29sKSB7IHJldHVybiAxOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXNz
aWduUmVzb2x2ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRXhw
cmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBBc3NpZ25tZW50
RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0aW9uRXhwcihjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCwgaW50KSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KKyAgICBpbnQgY3JlYXRlRnVuY3Rp
b25Cb2R5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGlu
dCwgYm9vbCkgeyByZXR1cm4gMTsgfQogICAgIHZvaWQgc2V0RnVuY3Rpb25TdGFydChpbnQsIGlu
dCkgeyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQg
Y3JlYXRlQXJndW1lbnRzKGludCkgeyByZXR1cm4gMTsgfQpAQCAtMTc5LDM5ICsxNzksMzkgQEAg
cHVibGljOgogICAgIGludCBjcmVhdGVDbGF1c2VMaXN0KGludCkgeyByZXR1cm4gMTsgfQogICAg
IGludCBjcmVhdGVDbGF1c2VMaXN0KGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgdm9pZCBz
ZXRVc2VzQXJndW1lbnRzKGludCkgeyB9Ci0gICAgaW50IGNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUZ1bmNEZWNsU3Rh
dGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRl
QmxvY2tTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCkgeyBy
ZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVFeHByU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlSWZTdGF0
ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVy
biAxOyB9CiAgICAgaW50IGNyZWF0ZUlmU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUZv
ckxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVGb3JJbkxvb3AoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVGb3JJbkxv
b3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlRm9ySW5Mb29wKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAg
aW50IGNyZWF0ZUZvckluTG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBp
bnQgY3JlYXRlRW1wdHlTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4g
MTsgfQogICAgIGludCBjcmVhdGVWYXJTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVSZXR1cm5TdGF0ZW1l
bnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQnJlYWtTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUJy
ZWFrU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBp
bnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQ29udGludWVT
dGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJl
dHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KKyAgICBpbnQgY3JlYXRlUmV0dXJuU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAg
IGludCBjcmVhdGVCcmVha1N0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVCcmVha1N0YXRl
bWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQ29udGludWVTdGF0
ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsg
cmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7
IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZVRyeVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlU3dpdGNoU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBp
bnQgY3JlYXRlV2hpbGVTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQs
IGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVdpdGhTdGF0ZW1lbnQoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gMTsgfQorICAgIGludCBjcmVhdGVXaXRoU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9
CiAgICAgaW50IGNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
aW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUxhYmVsU3Rh
dGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVRocm93U3RhdGVtZW50KGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9
CisgICAgaW50IGNyZWF0ZUxhYmVsU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNv
bnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQor
ICAgIGludCBjcmVhdGVUaHJvd1N0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQs
IGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3Jl
YXRlRGVidWdnZXIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQpIHsgcmV0dXJuIDE7
IH0KICAgICBpbnQgY3JlYXRlQ29uc3RTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAgIGludCBhcHBlbmRDb25zdERlY2woY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50KSB7IHJldHVy
biAxOyB9Ci0gICAgdGVtcGxhdGUgPGJvb2wgc3RyaWN0PiBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJP
clNldHRlclByb3BlcnR5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5Tm9kZTo6VHlw
ZSB0eXBlLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwg
aW50KQorICAgIHRlbXBsYXRlIDxib29sIHN0cmljdD4gUHJvcGVydHkgY3JlYXRlR2V0dGVyT3JT
ZXR0ZXJQcm9wZXJ0eShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eU5vZGU6OlR5cGUg
dHlwZSwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50KQogICAgIHsKICAgICAgICAgQVNTRVJUKG5hbWUpOwogICAgICAgICBpZiAoIXN0cmlj
dCkKICAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eSh0eXBlKTsKICAgICAgICAgcmV0dXJuIFBy
b3BlcnR5KG5hbWUsIHR5cGUpOwogICAgIH0KLSAgICB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+IFBy
b3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoVk0qIHZtLCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgZG91YmxlIG5hbWUsIGludCwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQpCisgICAgdGVtcGxhdGUgPGJvb2wgc3RyaWN0PiBQcm9wZXJ0
eSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGRvdWJsZSBuYW1lLCBpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQpCiAgICAgewogICAgICAgICBpZiAoIXN0cmljdCkKICAgICAg
ICAgICAgIHJldHVybiBQcm9wZXJ0eSh0eXBlKTsKQEAgLTIyMiw3ICsyMjIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBhZGRWYXIoY29uc3QgSWRlbnRpZmllciosIGJvb2wpIHsgfQogICAgIGludCBj
b21iaW5lQ29tbWFOb2Rlcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCkgeyByZXR1
cm4gMTsgfQogICAgIGludCBldmFsQ291bnQoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgdm9p
ZCBhcHBlbmRCaW5hcnlFeHByZXNzaW9uSW5mbyhpbnQmIG9wZXJhbmRTdGFja0RlcHRoLCBpbnQg
ZXhwciwgaW50LCBpbnQsIGludCwgYm9vbCkKKyAgICB2b2lkIGFwcGVuZEJpbmFyeUV4cHJlc3Np
b25JbmZvKGludCYgb3BlcmFuZFN0YWNrRGVwdGgsIGludCBleHByLCBpbnQsIGludCwgaW50LCBp
bnQsIGludCwgYm9vbCkKICAgICB7CiAgICAgICAgIGlmICghbV90b3BCaW5hcnlFeHByKQogICAg
ICAgICAgICAgbV90b3BCaW5hcnlFeHByID0gZXhwcjsKQEAgLTI0MCwxMiArMjQwLDEzIEBAIHB1
YmxpYzoKICAgICB2b2lkIG9wZXJhdG9yU3RhY2tBcHBlbmQoaW50JiBvcGVyYXRvclN0YWNrRGVw
dGgsIGludCwgaW50KSB7IG9wZXJhdG9yU3RhY2tEZXB0aCsrOyB9CiAgICAgaW50IHBvcE9wZXJh
bmRTdGFjayhpbnQmKSB7IGludCByZXMgPSBtX3RvcEJpbmFyeUV4cHI7IG1fdG9wQmluYXJ5RXhw
ciA9IDA7IHJldHVybiByZXM7IH0KICAgICAKLSAgICB2b2lkIGFwcGVuZFVuYXJ5VG9rZW4oaW50
JiBzdGFja0RlcHRoLCBpbnQgdG9rLCBpbnQpIHsgc3RhY2tEZXB0aCA9IDE7IG1fdG9wVW5hcnlU
b2tlbiA9IHRvazsgfQorICAgIHZvaWQgYXBwZW5kVW5hcnlUb2tlbihpbnQmIHN0YWNrRGVwdGgs
IGludCB0b2ssIGludCwgaW50LCBpbnQpIHsgc3RhY2tEZXB0aCA9IDE7IG1fdG9wVW5hcnlUb2tl
biA9IHRvazsgfQogICAgIGludCB1bmFyeVRva2VuU3RhY2tMYXN0VHlwZShpbnQmKSB7IHJldHVy
biBtX3RvcFVuYXJ5VG9rZW47IH0KLSAgICBpbnQgdW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KGlu
dCYpIHsgcmV0dXJuIDA7IH0KKyAgICB1bnNpZ25lZCB1bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQo
aW50JikgeyByZXR1cm4gMDsgfQorICAgIHVuc2lnbmVkIHVuYXJ5VG9rZW5TdGFja0xhc3RMaW5l
U3RhcnRQb3NpdGlvbihpbnQmKSB7IHJldHVybiAwOyB9CiAgICAgdm9pZCB1bmFyeVRva2VuU3Rh
Y2tSZW1vdmVMYXN0KGludCYgc3RhY2tEZXB0aCkgeyBzdGFja0RlcHRoID0gMDsgfQogICAgIAot
ICAgIHZvaWQgYXNzaWdubWVudFN0YWNrQXBwZW5kKGludCwgaW50LCBpbnQsIGludCwgaW50LCBP
cGVyYXRvcikgeyB9CisgICAgdm9pZCBhc3NpZ25tZW50U3RhY2tBcHBlbmQoaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBPcGVyYXRvcikgeyB9CiAgICAgaW50IGNyZWF0ZUFzc2ln
bm1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDE7IH0KICAgICBjb25zdCBJZGVu
dGlmaWVyJiBnZXROYW1lKGNvbnN0IFByb3BlcnR5JiBwcm9wZXJ0eSkgY29uc3QgeyBBU1NFUlQo
cHJvcGVydHkubmFtZSk7IHJldHVybiAqcHJvcGVydHkubmFtZTsgfQogICAgIFByb3BlcnR5Tm9k
ZTo6VHlwZSBnZXRUeXBlKGNvbnN0IFByb3BlcnR5JiBwcm9wZXJ0eSkgY29uc3QgeyByZXR1cm4g
cHJvcGVydHkudHlwZTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29k
ZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2RlQ2FjaGUuY3BwCShyZXZpc2lvbiAxNTE5MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2RlQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIFVu
bGlua2VkQ29kZUJsb2NrVHlwZSogQ29kZUNhY2hlOjpnZW5lcmEKICAgICBSZWZQdHI8Um9vdE5v
ZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5vZGU+KCZ2bSwgc291cmNlLCAwLCBJZGVudGlmaWVy
KCksIHN0cmljdG5lc3MsIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IpOwogICAgIGlmICghcm9v
dE5vZGUpCiAgICAgICAgIHJldHVybiAwOwotICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKHJv
b3ROb2RlLT5mZWF0dXJlcygpLCByb290Tm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgcm9v
dE5vZGUtPmxpbmVObygpLCByb290Tm9kZS0+bGFzdExpbmUoKSk7CisgICAgZXhlY3V0YWJsZS0+
cmVjb3JkUGFyc2Uocm9vdE5vZGUtPmZlYXR1cmVzKCksIHJvb3ROb2RlLT5oYXNDYXB0dXJlZFZh
cmlhYmxlcygpLCByb290Tm9kZS0+bGluZU5vKCksIHJvb3ROb2RlLT5sYXN0TGluZSgpLCByb290
Tm9kZS0+c3RhcnRDb2x1bW4oKSk7CiAKICAgICBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIHVubGlu
a2VkQ29kZSA9IFVubGlua2VkQ29kZUJsb2NrVHlwZTo6Y3JlYXRlKCZ2bSwgZXhlY3V0YWJsZS0+
ZXhlY3V0YWJsZUluZm8oKSk7CiAgICAgdW5saW5rZWRDb2RlLT5yZWNvcmRQYXJzZShyb290Tm9k
ZS0+ZmVhdHVyZXMoKSwgcm9vdE5vZGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIHJvb3ROb2Rl
LT5saW5lTm8oKSAtIHNvdXJjZS5maXJzdExpbmUoKSwgcm9vdE5vZGUtPmxhc3RMaW5lKCkgLSBy
b290Tm9kZS0+bGluZU5vKCkpOwpAQCAtMTE2LDcgKzExNiw4IEBAIFVubGlua2VkQ29kZUJsb2Nr
VHlwZSogQ29kZUNhY2hlOjpnZXRDb2QKICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5ICYm
IGNhbkNhY2hlKSB7CiAgICAgICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSogdW5saW5rZWRDb2Rl
ID0ganNDYXN0PFVubGlua2VkQ29kZUJsb2NrVHlwZSo+KGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUuY2VsbC5nZXQoKSk7CiAgICAgICAgIHVuc2lnbmVkIGZpcnN0TGluZSA9IHNvdXJjZS5maXJz
dExpbmUoKSArIHVubGlua2VkQ29kZS0+Zmlyc3RMaW5lKCk7Ci0gICAgICAgIGV4ZWN1dGFibGUt
PnJlY29yZFBhcnNlKHVubGlua2VkQ29kZS0+Y29kZUZlYXR1cmVzKCksIHVubGlua2VkQ29kZS0+
aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgZmlyc3RMaW5lLCBmaXJzdExpbmUgKyB1bmxpbmtlZENv
ZGUtPmxpbmVDb3VudCgpKTsKKyAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSBzb3VyY2Uu
Zmlyc3RMaW5lKCkgPyBzb3VyY2Uuc3RhcnRDb2x1bW4oKSA6IDA7CisgICAgICAgIGV4ZWN1dGFi
bGUtPnJlY29yZFBhcnNlKHVubGlua2VkQ29kZS0+Y29kZUZlYXR1cmVzKCksIHVubGlua2VkQ29k
ZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgZmlyc3RMaW5lLCBmaXJzdExpbmUgKyB1bmxpbmtl
ZENvZGUtPmxpbmVDb3VudCgpLCBzdGFydENvbHVtbik7CiAgICAgICAgIHJldHVybiB1bmxpbmtl
ZENvZGU7CiAgICAgfQogICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSogdW5saW5rZWRDb2RlID0g
Z2VuZXJhdGVCeXRlY29kZTxVbmxpbmtlZENvZGVCbG9ja1R5cGUsIEV4ZWN1dGFibGVUeXBlPih2
bSwgc2NvcGUsIGV4ZWN1dGFibGUsIHNvdXJjZSwgc3RyaWN0bmVzcywgZGVidWdnZXJNb2RlLCBw
cm9maWxlck1vZGUsIGVycm9yKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAxNTE5MjApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0
MSw3IEBAIHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiAKIAogY29uc3Qg
Q2xhc3NJbmZvIEZ1bmN0aW9uRXhlY3V0YWJsZTo6c19pbmZvID0geyAiRnVuY3Rpb25FeGVjdXRh
YmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShGdW5jdGlvbkV4ZWN1dGFibGUpIH07CiAKLUZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25F
eGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlLCB1bnNpZ25lZCBmaXJzdExpbmUsIHVu
c2lnbmVkIGxhc3RMaW5lKQorRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUo
Vk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFz
dExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uKQogICAgIDogU2NyaXB0RXhlY3V0YWJsZSh2bS5m
dW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHZtLCBzb3VyY2UsIHVubGlua2VkRXhl
Y3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSkKICAgICAsIG1fdW5saW5rZWRFeGVjdXRhYmxl
KHZtLCB0aGlzLCB1bmxpbmtlZEV4ZWN1dGFibGUpCiB7CkBAIC0xNDksNiArMTQ5LDcgQEAgRnVu
Y3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUoVgogICAgIEFTU0VSVChzb3VyY2Uu
bGVuZ3RoKCkpOwogICAgIG1fZmlyc3RMaW5lID0gZmlyc3RMaW5lOwogICAgIG1fbGFzdExpbmUg
PSBsYXN0TGluZTsKKyAgICBtX3N0YXJ0Q29sdW1uID0gc3RhcnRDb2x1bW47CiB9CiAKIHZvaWQg
RnVuY3Rpb25FeGVjdXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKQEAgLTMyMCw3ICszMjEs
NyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlCiAgICAgICAgIG1f
cHJvZ3JhbUNvZGVCbG9jayA9IG5ld0NvZGVCbG9jay5yZWxlYXNlKCk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHNjb3BlLT5nbG9iYWxPYmpl
Y3QoKTsKLSAgICAgICAgbV9wcm9ncmFtQ29kZUJsb2NrID0gYWRvcHRQdHIobmV3IFByb2dyYW1D
b2RlQmxvY2sodGhpcywgbV91bmxpbmtlZFByb2dyYW1Db2RlQmxvY2suZ2V0KCksIGdsb2JhbE9i
amVjdCwgc291cmNlKCkucHJvdmlkZXIoKSwgbV9wcm9ncmFtQ29kZUJsb2NrLnJlbGVhc2UoKSkp
OworICAgICAgICBtX3Byb2dyYW1Db2RlQmxvY2sgPSBhZG9wdFB0cihuZXcgUHJvZ3JhbUNvZGVC
bG9jayh0aGlzLCBtX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9jay5nZXQoKSwgZ2xvYmFsT2JqZWN0
LCBzb3VyY2UoKS5wcm92aWRlcigpLCBzb3VyY2UoKS5zdGFydENvbHVtbigpLCBtX3Byb2dyYW1D
b2RlQmxvY2sucmVsZWFzZSgpKSk7CiAgICAgICAgIG1fcHJvZ3JhbUNvZGVCbG9jay0+Y29weVBv
c3RQYXJzZURhdGFGcm9tQWx0ZXJuYXRpdmUoKTsKICAgICB9CiAKQEAgLTUwMCwxNCArNTAxLDE4
IEBAIFBhc3NPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+IEZ1bmN0aW9uRXgKICAgICBEZWJ1Z2dl
ck1vZGUgZGVidWdnZXJNb2RlID0gZ2xvYmFsT2JqZWN0LT5oYXNEZWJ1Z2dlcigpID8gRGVidWdn
ZXJPbiA6IERlYnVnZ2VyT2ZmOwogICAgIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUgPSBnbG9i
YWxPYmplY3QtPmhhc1Byb2ZpbGVyKCkgPyBQcm9maWxlck9uIDogUHJvZmlsZXJPZmY7CiAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBtX3VubGlua2Vk
RXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yKCp2bSwgc2NvcGUsIG1fc291cmNlLCBzcGVjaWFsaXph
dGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7Ci0gICAgcmVjb3Jk
UGFyc2UobV91bmxpbmtlZEV4ZWN1dGFibGUtPmZlYXR1cmVzKCksIG1fdW5saW5rZWRFeGVjdXRh
YmxlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBsaW5lTm8oKSwgbGFzdExpbmUoKSk7CisgICAg
cmVjb3JkUGFyc2UobV91bmxpbmtlZEV4ZWN1dGFibGUtPmZlYXR1cmVzKCksIG1fdW5saW5rZWRF
eGVjdXRhYmxlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBsaW5lTm8oKSwgbGFzdExpbmUoKSwg
c3RhcnRDb2x1bW4oKSk7CiAKICAgICBpZiAoIXVubGlua2VkQ29kZUJsb2NrKSB7CiAgICAgICAg
IGV4Y2VwdGlvbiA9IGVycm9yLnRvRXJyb3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBtX3NvdXJjZSk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIE93blB0cjxGdW5jdGlvbkNv
ZGVCbG9jaz4gcmVzdWx0ID0gYWRvcHRQdHIobmV3IEZ1bmN0aW9uQ29kZUJsb2NrKHRoaXMsIHVu
bGlua2VkQ29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIHNvdXJjZSgpLnByb3ZpZGVyKCksIHNvdXJj
ZSgpLnN0YXJ0T2Zmc2V0KCkpKTsKKyAgICBTb3VyY2VQcm92aWRlciogcHJvdmlkZXIgPSBzb3Vy
Y2UoKS5wcm92aWRlcigpOworICAgIHVuc2lnbmVkIHNvdXJjZU9mZnNldCA9IHNvdXJjZSgpLnN0
YXJ0T2Zmc2V0KCk7CisgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSBzb3VyY2UoKS5zdGFydENv
bHVtbigpOworCisgICAgT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiByZXN1bHQgPSBhZG9wdFB0
cihuZXcgRnVuY3Rpb25Db2RlQmxvY2sodGhpcywgdW5saW5rZWRDb2RlQmxvY2ssIGdsb2JhbE9i
amVjdCwgcHJvdmlkZXIsIHNvdXJjZU9mZnNldCwgc3RhcnRDb2x1bW4pKTsKICAgICByZXN1bHQt
PmNvcHlQb3N0UGFyc2VEYXRhRnJvbShjb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKS5n
ZXQoKSk7CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CkBAIC02NTcsOSArNjYyLDEw
IEBAIEZ1bmN0aW9uRXhlY3V0YWJsZSogRnVuY3Rpb25FeGVjdXRhYmxlOjoKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgdW5zaWduZWQgZmlyc3RMaW5lID0gc291cmNlLmZpcnN0TGluZSgpICsgdW5s
aW5rZWRGdW5jdGlvbi0+Zmlyc3RMaW5lT2Zmc2V0KCk7CiAgICAgdW5zaWduZWQgc3RhcnRPZmZz
ZXQgPSBzb3VyY2Uuc3RhcnRPZmZzZXQoKSArIHVubGlua2VkRnVuY3Rpb24tPnN0YXJ0T2Zmc2V0
KCk7CisgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSBzb3VyY2Uuc3RhcnRDb2x1bW4oKTsKICAg
ICB1bnNpZ25lZCBzb3VyY2VMZW5ndGggPSB1bmxpbmtlZEZ1bmN0aW9uLT5zb3VyY2VMZW5ndGgo
KTsKLSAgICBTb3VyY2VDb2RlIGZ1bmN0aW9uU291cmNlKHNvdXJjZS5wcm92aWRlcigpLCBzdGFy
dE9mZnNldCwgc3RhcnRPZmZzZXQgKyBzb3VyY2VMZW5ndGgsIGZpcnN0TGluZSk7Ci0gICAgcmV0
dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMtPnZtKCksIGZ1bmN0aW9uU291cmNl
LCB1bmxpbmtlZEZ1bmN0aW9uLCBmaXJzdExpbmUsIHVubGlua2VkRnVuY3Rpb24tPmxpbmVDb3Vu
dCgpKTsKKyAgICBTb3VyY2VDb2RlIGZ1bmN0aW9uU291cmNlKHNvdXJjZS5wcm92aWRlcigpLCBz
dGFydE9mZnNldCwgc3RhcnRPZmZzZXQgKyBzb3VyY2VMZW5ndGgsIGZpcnN0TGluZSwgc3RhcnRD
b2x1bW4pOworICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLT52bSgp
LCBmdW5jdGlvblNvdXJjZSwgdW5saW5rZWRGdW5jdGlvbiwgZmlyc3RMaW5lLCB1bmxpbmtlZEZ1
bmN0aW9uLT5saW5lQ291bnQoKSwgc3RhcnRDb2x1bW4pOwogfQogCiBTdHJpbmcgRnVuY3Rpb25F
eGVjdXRhYmxlOjpwYXJhbVN0cmluZygpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxNTE5MjApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4Miw2
ICszODIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5wcm92aWRlcigpLT51cmwoKTsgfQogICAgICAg
ICBpbnQgbGluZU5vKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdExpbmU7IH0KICAgICAgICAgaW50
IGxhc3RMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TGluZTsgfQorICAgICAgICB1bnNpZ25l
ZCBzdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRDb2x1bW47IH0KIAogICAgICAg
ICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIEV2YWxGZWF0dXJl
OyB9CiAgICAgICAgIGJvb2wgdXNlc0FyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVy
ZXMgJiBBcmd1bWVudHNGZWF0dXJlOyB9CkBAIC0zOTQsMTIgKzM5NSwxMyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwog
Ci0gICAgICAgIHZvaWQgcmVjb3JkUGFyc2UoQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBib29sIGhh
c0NhcHR1cmVkVmFyaWFibGVzLCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCisgICAgICAg
IHZvaWQgcmVjb3JkUGFyc2UoQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBib29sIGhhc0NhcHR1cmVk
VmFyaWFibGVzLCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29s
dW1uKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2ZlYXR1cmVzID0gZmVhdHVyZXM7CiAgICAg
ICAgICAgICBtX2hhc0NhcHR1cmVkVmFyaWFibGVzID0gaGFzQ2FwdHVyZWRWYXJpYWJsZXM7CiAg
ICAgICAgICAgICBtX2ZpcnN0TGluZSA9IGZpcnN0TGluZTsKICAgICAgICAgICAgIG1fbGFzdExp
bmUgPSBsYXN0TGluZTsKKyAgICAgICAgICAgIG1fc3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsK
ICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgpAQCAtNDE5LDYgKzQyMSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBib29sIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXM7CiAgICAgICAgIGlu
dCBtX2ZpcnN0TGluZTsKICAgICAgICAgaW50IG1fbGFzdExpbmU7CisgICAgICAgIHVuc2lnbmVk
IG1fc3RhcnRDb2x1bW47CiAgICAgfTsKIAogICAgIGNsYXNzIEV2YWxFeGVjdXRhYmxlIDogcHVi
bGljIFNjcmlwdEV4ZWN1dGFibGUgewpAQCAtNTczLDkgKzU3Niw5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAK
LSAgICAgICAgc3RhdGljIEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRF
eGVjdXRhYmxlLCB1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lKQorICAgICAg
ICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFi
bGUsIHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIHVuc2lnbmVkIHN0YXJ0
Q29sdW1uKQogICAgICAgICB7Ci0gICAgICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkV4ZWN1dGFibGU+KHZt
LmhlYXApKSBGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHNvdXJjZSwgdW5saW5rZWRFeGVjdXRhYmxl
LCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZ1bmN0aW9uRXhlY3V0YWJs
ZT4odm0uaGVhcCkpIEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgc291cmNlLCB1bmxpbmtlZEV4ZWN1
dGFibGUsIGZpcnN0TGluZSwgbGFzdExpbmUsIHN0YXJ0Q29sdW1uKTsKICAgICAgICAgICAgIGV4
ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgICAgIHJldHVybiBleGVjdXRh
YmxlOwogICAgICAgICB9CkBAIC03NDYsNyArNzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBGdW5jdGlvbkV4
ZWN1dGFibGUoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqLCB1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lKTsKKyAgICAgICAgRnVu
Y3Rpb25FeGVjdXRhYmxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiwgdW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBsYXN0TGluZSwgdW5zaWdu
ZWQgc3RhcnRDb2x1bW4pOwogCiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlRm9yQ2FsbEludGVy
bmFsKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKSVRDb2RlOjpKSVRUeXBlLCB1bnNpZ25lZCBieXRl
Y29kZUluZGV4ID0gVUlOVF9NQVgpOwogICAgICAgICBKU09iamVjdCogY29tcGlsZUZvckNvbnN0
cnVjdEludGVybmFsKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKSVRDb2RlOjpKSVRUeXBlLCB1bnNp
Z25lZCBieXRlY29kZUluZGV4ID0gVUlOVF9NQVgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
MTUyNDY2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjQgQEAKKzIwMTMtMDctMDggIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgor
CisgICAgICAgIEZpeCAzMCUgSlNCZW5jaCByZWdyZXNzaW9uIChjYXVzZWQgYnkgYWRkaW5nIGNv
bHVtbiBudW1iZXJzIHRvIHN0YWNrIHRyYWNlcykuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg0ODEuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9qcy9saW5lLWNvbHVtbi1udW1iZXJz
Lmh0bWwKKworICAgICAgICBVcGRhdGVkIHRoZSBiaW5kaW5ncyB0byB1c2UgU3RhY2tGcmFtZTo6
Y29tcHV0ZUxpbmVBbmRDb2x1bW4oKS4gVGhlIG9sZAorICAgICAgICBTdGFja0ZyYW1lOjpsaW5l
KCkgYW5kIFN0YWNrRnJhbWU6OmNvbHVtbigpIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSBuZXcKKyAg
ICAgICAgYWxnb3JpdGhtIGFsd2F5cyBjb21wdXRlcyB0aGUgMiB2YWx1ZXMgdG9nZXRoZXIgYW55
d2F5LiBIZW5jZSBpdCBpcyBtb3JlCisgICAgICAgIGVmZmljaWVudCB0byByZXR1cm4gdGhlbSBh
cyBhIHBhaXIgaW5zdGVhZCBvZiBkb2luZyB0aGUgc2FtZSBjb21wdXRhdGlvbgorICAgICAgICB0
d2ljZSBmb3IgZWFjaCBoYWxmIG9mIHRoZSByZXN1bHQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNj
cmlwdENhbGxTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2tG
cm9tRXhjZXB0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlOjpTY3JpcHRTb3VyY2VDb2RlKToK
KwogMjAxMy0wNy0wOCAgUmFkdSBTdGF2aWxhICA8c3RhdmlsYUBhZG9iZS5jb20+CiAKICAgICAg
ICAgTmFtZWRGbG93Q29sbGVjdGlvbiBnZXR0ZXJzIHNob3VsZCByZXR1cm4gdW5kZWZpbmVkIHdo
ZW4gdGhlcmUncyBubyBOYW1lZEZsb3cKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCShyZXZpc2lvbiAxNTE5MjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTksOCArNTksMTIgQEAgUGFzc1JlZlB0cjxTY3JpcHRDYWxs
U3RhY2s+IGNyZWF0ZVNjcmlwdAogICAgIGlmIChKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IEpTTWFp
blRocmVhZEV4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCkpIHsKICAgICAgICAgVmVjdG9yPFN0YWNr
RnJhbWU+IHN0YWNrVHJhY2U7CiAgICAgICAgIEludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKCZl
eGVjLT52bSgpLCBzdGFja1RyYWNlLCBtYXhTdGFja1NpemUpOwotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHN0YWNrVHJhY2Uuc2l6ZSgpOyBpKyspCi0gICAgICAgICAgICBmcmFtZXMu
YXBwZW5kKFNjcmlwdENhbGxGcmFtZShzdGFja1RyYWNlW2ldLmZyaWVuZGx5RnVuY3Rpb25OYW1l
KGV4ZWMpLCBzdGFja1RyYWNlW2ldLmZyaWVuZGx5U291cmNlVVJMKCksIHN0YWNrVHJhY2VbaV0u
bGluZSgpLCBzdGFja1RyYWNlW2ldLmNvbHVtbigpKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc3RhY2tUcmFjZS5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgdW5zaWduZWQg
bGluZTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNvbHVtbjsKKyAgICAgICAgICAgIHN0YWNrVHJh
Y2VbaV0uY29tcHV0ZUxpbmVBbmRDb2x1bW4obGluZSwgY29sdW1uKTsKKyAgICAgICAgICAgIGZy
YW1lcy5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1lKHN0YWNrVHJhY2VbaV0uZnJpZW5kbHlGdW5jdGlv
bk5hbWUoZXhlYyksIHN0YWNrVHJhY2VbaV0uZnJpZW5kbHlTb3VyY2VVUkwoKSwgbGluZSwgY29s
dW1uKSk7CisgICAgICAgIH0KICAgICB9CiAgICAgaWYgKGZyYW1lcy5pc0VtcHR5KCkgJiYgIWVt
cHR5SXNBbGxvd2VkKSB7CiAgICAgICAgIC8vIE5vIGZyYW1lcyBmb3VuZC4gSXQgbWF5IGhhcHBl
biBpbiB0aGUgY2FzZSB3aGVyZQpAQCAtODQsNyArODgsMTAgQEAgUGFzc1JlZlB0cjxTY3JpcHRD
YWxsU3RhY2s+IGNyZWF0ZVNjcmlwdAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgU3Ry
aW5nIGZ1bmN0aW9uTmFtZSA9IHN0YWNrVHJhY2VbaV0uZnJpZW5kbHlGdW5jdGlvbk5hbWUoZXhl
Yyk7Ci0gICAgICAgIGZyYW1lcy5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1lKGZ1bmN0aW9uTmFtZSwg
c3RhY2tUcmFjZVtpXS5zb3VyY2VVUkwsIHN0YWNrVHJhY2VbaV0ubGluZSgpLCBzdGFja1RyYWNl
W2ldLmNvbHVtbigpKSk7CisgICAgICAgIHVuc2lnbmVkIGxpbmU7CisgICAgICAgIHVuc2lnbmVk
IGNvbHVtbjsKKyAgICAgICAgc3RhY2tUcmFjZVtpXS5jb21wdXRlTGluZUFuZENvbHVtbihsaW5l
LCBjb2x1bW4pOworICAgICAgICBmcmFtZXMuYXBwZW5kKFNjcmlwdENhbGxGcmFtZShmdW5jdGlv
bk5hbWUsIHN0YWNrVHJhY2VbaV0uc291cmNlVVJMLCBsaW5lLCBjb2x1bW4pKTsKICAgICB9CiAK
ICAgICByZXR1cm4gU2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGUoZnJhbWVzKTsKQEAgLTk5LDcgKzEw
NiwxMCBAQCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0CiAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICBTdHJpbmcgZnVuY3Rpb25OYW1lID0gc3RhY2tUcmFjZVtp
XS5mcmllbmRseUZ1bmN0aW9uTmFtZShleGVjKTsKLSAgICAgICAgZnJhbWVzLmFwcGVuZChTY3Jp
cHRDYWxsRnJhbWUoZnVuY3Rpb25OYW1lLCBzdGFja1RyYWNlW2ldLnNvdXJjZVVSTCwgc3RhY2tU
cmFjZVtpXS5saW5lKCksIHN0YWNrVHJhY2VbaV0uY29sdW1uKCkpKTsKKyAgICAgICAgdW5zaWdu
ZWQgbGluZTsKKyAgICAgICAgdW5zaWduZWQgY29sdW1uOworICAgICAgICBzdGFja1RyYWNlW2ld
LmNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVtbik7CisgICAgICAgIGZyYW1lcy5hcHBl
bmQoU2NyaXB0Q2FsbEZyYW1lKGZ1bmN0aW9uTmFtZSwgc3RhY2tUcmFjZVtpXS5zb3VyY2VVUkws
IGxpbmUsIGNvbHVtbikpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5v
cmcvYi8xMTUwODc+IFdlYiBJbnNwZWN0b3I6IFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlvbiBzaG91
bGQgbm90IGV2YWx1YXRlIEphdmFTY3JpcHQgaGFuZGxpbmcgZXhjZXB0aW9ucwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaAkocmV2aXNpb24g
MTUxOTIwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGUg
ewogcHVibGljOgogICAgIFNjcmlwdFNvdXJjZUNvZGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNv
bnN0IEtVUkwmIHVybCA9IEtVUkwoKSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9u
ID0gVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSkKICAgICAgICAgOiBtX3Byb3ZpZGVy
KEpTQzo6U3RyaW5nU291cmNlUHJvdmlkZXI6OmNyZWF0ZShzb3VyY2UsIHVybC5pc051bGwoKSA/
IFN0cmluZygpIDogdXJsLnN0cmluZygpLCBzdGFydFBvc2l0aW9uKSkKLSAgICAgICAgLCBtX2Nv
ZGUobV9wcm92aWRlciwgc3RhcnRQb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJbnQoKSkKKyAgICAg
ICAgLCBtX2NvZGUobV9wcm92aWRlciwgc3RhcnRQb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJbnQo
KSwgc3RhcnRQb3NpdGlvbi5tX2NvbHVtbi5vbmVCYXNlZEludCgpKQogICAgICAgICAsIG1fdXJs
KHVybCkKICAgICB7CiAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTUyNDY2KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTMtMDct
MDggIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCAzMCUgSlNC
ZW5jaCByZWdyZXNzaW9uIChjYXVzZWQgYnkgYWRkaW5nIGNvbHVtbiBudW1iZXJzIHRvIHN0YWNr
IHRyYWNlcykuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTg0ODEuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIGZpeCBub3cgY29tcHV0ZXMgbGluZSBhbmQgY29sdW1uIG51bWJlcnMgbW9yZSBhY2N1
cmF0ZWx5LiBBcyBhIHJlc3VsdCwKKyAgICAgICAgc29tZSBvZiB0aGUgdGVzdCByZXN1bHRzIG5l
ZWQgdG8gYmUgcmUtYmFzZWxpbmVkLiBBbW9uZyBvdGhlciBmaXhlcywgb25lCisgICAgICAgIG1h
am9yIHNvdXJjZSBvZiBkaWZmZXJlbmNlIGlzIHRoYXQgdGhlIG9sZCBjb2RlIHdhcyBpbmNvcnJl
Y3RseSBjb21wdXRpbmcKKyAgICAgICAgMC1iYXNlZCBjb2x1bW4gbnVtYmVycy4gVGhpcyBoYXMg
bm93IGJlZW4gZml4ZWQgdG8gYmUgMS1iYXNlZC4KKyAgICAgICAgTm90ZTogbGluZSBudW1iZXJz
IHdlcmUgYWx3YXlzIDEtYmFzZWQuCisKKyAgICAgICAgQWxzbyBhZGRlZCBhIG5ldyB0ZXN0OiBm
YXN0L2pzL2xpbmUtY29sdW1uLW51bWJlcnMuaHRtbCwgd2hpY2ggdGVzdHMgbGluZQorICAgICAg
ICBhbmQgY29sdW1uIG51bWJlcnMgZm9yIHNvdXJjZSBjb2RlIGluIHZhcmlvdXMgY29uZmlndXJh
dGlvbnMuCisKKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL291dGRlbnQtYmxvY2txdW90
ZS10ZXN0MS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9vdXRk
ZW50LWJsb2NrcXVvdGUtdGVzdDItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvZXhl
Y0NvbW1hbmQvb3V0ZGVudC1ibG9ja3F1b3RlLXRlc3QzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBlZGl0aW5nL2V4ZWNDb21tYW5kL291dGRlbnQtYmxvY2txdW90ZS10ZXN0NC1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktcGFzdGUtZmxvYXQtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1ibG9ja3F1b3RlLWJl
Zm9yZS1ibG9ja3F1b3RlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9h
cmQvcGFzdGUtZG91YmxlLW5lc3RlZC1ibG9ja3F1b3RlLWJlZm9yZS1ibG9ja3F1b3RlLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXJlc2l6ZS1jb250ZW50
cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9ldmVudHMvcmVtb3ZlLXRhcmdldC13aXRo
LXNoYWRvdy1pbi1kcmFnLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2pzL2xpbmUtY29s
dW1uLW51bWJlcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL2xpbmUt
Y29sdW1uLW51bWJlcnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9zY3JpcHQtdGVz
dHMvbGluZS1jb2x1bW4tbnVtYmVycy5qczogQWRkZWQuCisgICAgICAgICh0cnkuZG9UaHJvdzRi
KToKKyAgICAgICAgKGRvVGhyb3c1Yi50cnkuaW5uZXJGdW5jKToKKyAgICAgICAgKGRvVGhyb3c1
Yik6CisgICAgICAgIChkb1Rocm93NmIudHJ5LmlubmVyRnVuYyk6CisgICAgICAgIChkb1Rocm93
NmIpOgorICAgICAgICAoY2F0Y2gpOgorICAgICAgICAodHJ5LmRvVGhyb3cxMWIpOgorICAgICAg
ICAodHJ5LmRvVGhyb3cxNGIpOgorICAgICAgICAqIGZhc3QvanMvc3RhY2stdHJhY2UtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlL2NvbnNvbGUtdXJsLWxpbmUtY29s
dW1uLWV4cGVjdGVkLnR4dDoKKwogMjAxMy0wNy0wOCAgUmFkdSBTdGF2aWxhICA8c3RhdmlsYUBh
ZG9iZS5jb20+CiAKICAgICAgICAgTmFtZWRGbG93Q29sbGVjdGlvbiBnZXR0ZXJzIHNob3VsZCBy
ZXR1cm4gdW5kZWZpbmVkIHdoZW4gdGhlcmUncyBubyBOYW1lZEZsb3cKSW5kZXg6IExheW91dFRl
c3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1ibG9ja3F1b3RlLXRlc3QxLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL291dGRl
bnQtYmxvY2txdW90ZS10ZXN0MS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1MTkyMCkKKysrIExh
eW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1ibG9ja3F1b3RlLXRlc3QxLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FH
RTogbGluZSAxNDogU1VDQ0VTUzogTm9kZXMgc3RheWVkIGluIG9yZGVyIGFmdGVyIG91dGRlbnQu
CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTI6IFNVQ0NFU1M6IE5vZGVzIHN0YXllZCBpbiBvcmRl
ciBhZnRlciBvdXRkZW50LgogVGhpcyB0ZXN0IHVzZXMgdGhlIGV4ZWNDb21tYW5kIHRvIE91dGRl
bnQgdGhlIHRleHQgYmVsb3cuIFRoaXMgdGVzdCB0aGF0IG5vZGVzLCB3aXRoIGRpZmZlcmVudCBy
ZWxhdGlvbnNoaXBzIHdpdGggYmxvY2txdW90ZXMsIHN0YXkgaW4gdGhlIGNvcnJlY3Qgb3JkZXIg
YWZ0ZXIgYW4gb3V0ZGVudC4KIAogQQpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29t
bWFuZC9vdXRkZW50LWJsb2NrcXVvdGUtdGVzdDItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1ibG9ja3F1b3RlLXRlc3Qy
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTUxOTIwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9l
eGVjQ29tbWFuZC9vdXRkZW50LWJsb2NrcXVvdGUtdGVzdDItZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE0OiBTVUNDRVNT
OiBOb2RlcyBzdGF5ZWQgaW4gb3JkZXIgYWZ0ZXIgb3V0ZGVudC4KK0NPTlNPTEUgTUVTU0FHRTog
bGluZSAxMjogU1VDQ0VTUzogTm9kZXMgc3RheWVkIGluIG9yZGVyIGFmdGVyIG91dGRlbnQuCiBU
aGlzIHRlc3QgdXNlcyB0aGUgZXhlY0NvbW1hbmQgdG8gT3V0ZGVudCB0aGUgdGV4dCBiZWxvdy4g
VGhpcyB0ZXN0IHRoYXQgbm9kZXMsIHdpdGggZGlmZmVyZW50IHJlbGF0aW9uc2hpcHMgd2l0aCBi
bG9ja3F1b3Rlcywgc3RheSBpbiB0aGUgY29ycmVjdCBvcmRlciBhZnRlciBhbiBvdXRkZW50Lgog
CiBBCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL291dGRlbnQtYmxvY2tx
dW90ZS10ZXN0My1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGlu
Zy9leGVjQ29tbWFuZC9vdXRkZW50LWJsb2NrcXVvdGUtdGVzdDMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxNTE5MjApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL291dGRlbnQt
YmxvY2txdW90ZS10ZXN0My1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0
IEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTQ6IFNVQ0NFU1M6IE5vZGVzIHN0YXllZCBpbiBv
cmRlciBhZnRlciBvdXRkZW50LgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEyOiBTVUNDRVNTOiBO
b2RlcyBzdGF5ZWQgaW4gb3JkZXIgYWZ0ZXIgb3V0ZGVudC4KIFRoaXMgdGVzdCB1c2VzIHRoZSBl
eGVjQ29tbWFuZCB0byBPdXRkZW50IHRoZSB0ZXh0IGJlbG93LiBUaGlzIHRlc3QgdGhhdCBub2Rl
cywgd2l0aCBkaWZmZXJlbnQgcmVsYXRpb25zaGlwcyB3aXRoIGJsb2NrcXVvdGVzLCBzdGF5IGlu
IHRoZSBjb3JyZWN0IG9yZGVyIGFmdGVyIGFuIG91dGRlbnQuCiAKIEEKSW5kZXg6IExheW91dFRl
c3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1ibG9ja3F1b3RlLXRlc3Q0LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL291dGRl
bnQtYmxvY2txdW90ZS10ZXN0NC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1MTkyMCkKKysrIExh
eW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1ibG9ja3F1b3RlLXRlc3Q0LWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FH
RTogbGluZSAxNDogU1VDQ0VTUzogTm9kZXMgc3RheWVkIGluIG9yZGVyIGFmdGVyIG91dGRlbnQu
CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTI6IFNVQ0NFU1M6IE5vZGVzIHN0YXllZCBpbiBvcmRl
ciBhZnRlciBvdXRkZW50LgogVGhpcyB0ZXN0IHVzZXMgdGhlIGV4ZWNDb21tYW5kIHRvIE91dGRl
bnQgdGhlIHRleHQgYmVsb3cuIFRoaXMgdGVzdCB0aGF0IG5vZGVzLCB3aXRoIGRpZmZlcmVudCBy
ZWxhdGlvbnNoaXBzIHdpdGggYmxvY2txdW90ZXMsIHN0YXkgaW4gdGhlIGNvcnJlY3Qgb3JkZXIg
YWZ0ZXIgYW4gb3V0ZGVudC4KIAogCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvY29weS1wYXN0ZS1mbG9hdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktcGFzdGUtZmxvYXQtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxNTE5MjApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1wYXN0
ZS1mbG9hdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi1DT05T
T0xFIE1FU1NBR0U6IGxpbmUgMjA6IFNVQ0NFU1M6IHBhc3RlIERJRCBOT1Qga2VlcCBmbG9hdDps
ZWZ0IHN0eWxlLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE4OiBTVUNDRVNTOiBwYXN0ZSBESUQg
Tk9UIGtlZXAgZmxvYXQ6bGVmdCBzdHlsZS4KIFRoaXMgdGVzdCBpcyB0byBzZWUgaWYgdGV4dCB3
aXRoaW4gYSBmbG9hdGluZyBibG9jayBpcyBwdXQgb250byB0aGUgcGFzdGUgYm9hcmQgd2lodG91
dCB0aGUgZmxvYXQgc3R5bGUuCiAKIEZpcnN0IExJCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtYmxvY2txdW90ZS1iZWZvcmUtYmxvY2txdW90ZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWJs
b2NrcXVvdGUtYmVmb3JlLWJsb2NrcXVvdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTE5MjAp
CisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtYmxvY2txdW90ZS1iZWZv
cmUtYmxvY2txdW90ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBA
Ci1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMjA6IFNVQ0NFU1M6IHBhc3Rpbmcgc2luZ2xlTmVzdGVk
Tm9kZVRvQ29weSBESUQgTk9UIGtlZXAgdGhlIG5ld2xpbmUgd2l0aGluIHRoZSBibG9ja3F1b3Rl
LgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE4OiBTVUNDRVNTOiBwYXN0aW5nIHNpbmdsZU5lc3Rl
ZE5vZGVUb0NvcHkgRElEIE5PVCBrZWVwIHRoZSBuZXdsaW5lIHdpdGhpbiB0aGUgYmxvY2txdW90
ZS4KIFRoaXMgdGVzdHMgcGFzdGluZyBhIHNpbmdseSBuZXN0ZWQgYmxvY2txdW90ZSBiZWZvcmUs
IGFuZCBvdXRzaWRlIG9mLCBhbm90aGVyIGJsb2NrcXVvdGUuIFRoaXMgdGVzdCBkb2VzIG5vdCB3
b3JrIG91dHNpZGUgb2YgRFJULgogCiBsaW5lIDIKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC9wYXN0ZS1kb3VibGUtbmVzdGVkLWJsb2NrcXVvdGUtYmVmb3JlLWJsb2NrcXVv
dGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVi
b2FyZC9wYXN0ZS1kb3VibGUtbmVzdGVkLWJsb2NrcXVvdGUtYmVmb3JlLWJsb2NrcXVvdGUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAxNTE5MjApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvcGFzdGUtZG91YmxlLW5lc3RlZC1ibG9ja3F1b3RlLWJlZm9yZS1ibG9ja3F1b3RlLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FH
RTogbGluZSAyMDogU1VDQ0VTUzogcGFzdGluZyBkb3VibGVOZXN0ZWROb2RlVG9Db3B5IERJRCBO
T1Qga2VlcCB0aGUgbmV3bGluZSB3aXRoaW4gdGhlIGJsb2NrcXVvdGUuCitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgMTg6IFNVQ0NFU1M6IHBhc3RpbmcgZG91YmxlTmVzdGVkTm9kZVRvQ29weSBESUQg
Tk9UIGtlZXAgdGhlIG5ld2xpbmUgd2l0aGluIHRoZSBibG9ja3F1b3RlLgogVGhpcyB0ZXN0cyBw
YXN0aW5nIGEgZG91Ymx5IG5lc3RlZCBibG9ja3F1b3RlIGJlZm9yZSwgYW5kIG91dHNpZGUgb2Ys
IGFub3RoZXIgYmxvY2txdW90ZS4gVGhpcyB0ZXN0IGRvZXMgbm90IHdvcmsgb3V0c2lkZSBvZiBE
UlQuCiAKIGxpbmUgNApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1y
ZXNpemUtY29udGVudHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcmVzaXplLWNvbnRlbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMTUxOTIwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1yZXNpemUt
Y29udGVudHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAotQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDE5OiBJbml0aWFsIHJlZmVyZW5jZSBub2RlIGRpbWVuc2lvbnMg
ODAwIHggNjAwCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTg6IEluaXRpYWwgcmVmZXJlbmNlIG5v
ZGUgZGltZW5zaW9ucyA4MDAgeCA2MDAKIENPTlNPTEUgTUVTU0FHRTogbGluZSAyMDogSW5jcmVh
c2luZyB3aW5kb3cgc2l6ZSBieSAxMCB4IDEwCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMjM6IFBv
c3QtcmVzaXplIHJlZmVyZW5jZSBub2RlIGRpbWVuc2lvbnMgODAwIHggNjAwCitDT05TT0xFIE1F
U1NBR0U6IGxpbmUgMjI6IFBvc3QtcmVzaXplIHJlZmVyZW5jZSBub2RlIGRpbWVuc2lvbnMgODAw
IHggNjAwCiBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhlIHllbGxvdyByZWZlcmVuY2UgRE9NIG5v
ZGUgKHdoaWNoIHNob3VsZCBiZSBhcyBiaWcgYXMgdGhlIHdpbmRvdykgZ2V0cyByZXNpemVkIHdo
ZW4gdGhlIHdpbmRvdyBpcyByZXNpemVkLgogCiBUbyBhdm9pZCByZWxheW91dHMgYW5kIHJlcGFp
bnRzIGNhdXNlZCBieSBET00tYmFzZWQgbG9nZ2luZywgaXQgZG9lc24ndCBvdXRwdXQgYW55dGhp
bmcuIFBsZWFzZSBjaGVjayB0aGUgY29uc29sZSBmb3IgY29uZmlybWF0aW9uIHRoYXQgdGhlIG5v
ZGUgZGltZW5zaW9ucyBpbmNyZWFzZSBieSAxMHgxMC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3JlbW92ZS10YXJnZXQtd2l0aC1zaGFkb3ctaW4tZHJhZy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVtb3ZlLXRhcmdldC13aXRoLXNo
YWRvdy1pbi1kcmFnLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTUxOTIwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvcmVtb3ZlLXRhcmdldC13aXRoLXNoYWRvdy1pbi1kcmFnLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGlu
ZSAzNTogTm90Rm91bmRFcnJvcjogRE9NIEV4Y2VwdGlvbiA4OiBBbiBhdHRlbXB0IHdhcyBtYWRl
IHRvIHJlZmVyZW5jZSBhIE5vZGUgaW4gYSBjb250ZXh0IHdoZXJlIGl0IGRvZXMgbm90IGV4aXN0
LgotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDM1OiBOb3RGb3VuZEVycm9yOiBET00gRXhjZXB0aW9u
IDg6IEFuIGF0dGVtcHQgd2FzIG1hZGUgdG8gcmVmZXJlbmNlIGEgTm9kZSBpbiBhIGNvbnRleHQg
d2hlcmUgaXQgZG9lcyBub3QgZXhpc3QuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMzQ6IE5vdEZv
dW5kRXJyb3I6IERPTSBFeGNlcHRpb24gODogQW4gYXR0ZW1wdCB3YXMgbWFkZSB0byByZWZlcmVu
Y2UgYSBOb2RlIGluIGEgY29udGV4dCB3aGVyZSBpdCBkb2VzIG5vdCBleGlzdC4KK0NPTlNPTEUg
TUVTU0FHRTogbGluZSAzNDogTm90Rm91bmRFcnJvcjogRE9NIEV4Y2VwdGlvbiA4OiBBbiBhdHRl
bXB0IHdhcyBtYWRlIHRvIHJlZmVyZW5jZSBhIE5vZGUgaW4gYSBjb250ZXh0IHdoZXJlIGl0IGRv
ZXMgbm90IGV4aXN0LgogUEFTUy4gRFJUIGRpZG4ndCBjcmFzaC4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvanMvbGluZS1jb2x1bW4tbnVtYmVycy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9qcy9saW5lLWNvbHVtbi1udW1iZXJzLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvbGluZS1jb2x1bW4tbnVtYmVycy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODkgQEAKK1RoaXMgdGVzdCBjaGVj
a3MgbGluZSBhbmQgY29sdW1uIG51bWJlcnMgaW4gc3RhY2sgdHJhY2VzIGZvciBjb3JyZWN0bmVz
cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKy0tPiBDYXNlIDEgU3RhY2sgVHJh
Y2U6CisgICAgMCAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDo0MDoz
NgorCistLT4gQ2FzZSAyIFN0YWNrIFRyYWNlOgorICAgIDAgICBnbG9iYWwgY29kZSBhdCBsaW5l
LWNvbHVtbi1udW1iZXJzLmh0bWw6NDQ6NDAKKworLS0+IENhc2UgMyBTdGFjayBUcmFjZToKKyAg
ICAwICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjQ4OjMyCisKKy0t
PiBDYXNlIDMgU3RhY2sgVHJhY2U6CisgICAgMCAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1u
LW51bWJlcnMuaHRtbDo0ODoxMTMKKworLS0+IENhc2UgNCBTdGFjayBUcmFjZToKKyAgICAwICAg
ZG9UaHJvdzQgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjU0OjQ0CisgICAgMSAgIGdsb2Jh
bCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDo1NToxMworCistLT4gQ2FzZSA1IFN0
YWNrIFRyYWNlOgorICAgIDAgICBpbm5lckZ1bmMgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1s
OjY0OjY5CisgICAgMSAgIGRvVGhyb3c1IGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDo2NDo4
MgorICAgIDIgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmh0bWw6NjQ6MTMz
CisKKy0tPiBDYXNlIDYgU3RhY2sgVHJhY2U6CisgICAgMCAgIGlubmVyRnVuYyBhdCBsaW5lLWNv
bHVtbi1udW1iZXJzLmh0bWw6NzA6NjkKKyAgICAxICAgZG9UaHJvdzYgYXQgbGluZS1jb2x1bW4t
bnVtYmVycy5odG1sOjcwOjgyCisgICAgMiAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51
bWJlcnMuaHRtbDo3MDoxMzMKKworLS0+IENhc2UgNyBTdGFjayBUcmFjZToKKyAgICAwICAgIGF0
IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDo3NTo1MQorICAgIDEgICBnbG9iYWwgY29kZSBhdCBs
aW5lLWNvbHVtbi1udW1iZXJzLmh0bWw6NzU6NTUKKworLS0+IENhc2UgOCBTdGFjayBUcmFjZToK
KyAgICAwICAgIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDo3ODo1OQorICAgIDEgICBnbG9i
YWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmh0bWw6Nzg6NjMKKworLS0+IENhc2UgOSBT
dGFjayBUcmFjZToKKyAgICAwICAgIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDo4Mjo1NQor
ICAgIDEgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmh0bWw6ODI6NTkKKwor
LS0+IENhc2UgOSBTdGFjayBUcmFjZToKKyAgICAwICAgIGF0IGxpbmUtY29sdW1uLW51bWJlcnMu
aHRtbDo4MjoxNTcKKyAgICAxICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5o
dG1sOjgyOjE2MQorCistLT4gQ2FzZSAxMCBTdGFjayBUcmFjZToKKyAgICAwICAgIGF0IGxpbmUt
Y29sdW1uLW51bWJlcnMuaHRtbDo4OToyNgorICAgIDEgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNv
bHVtbi1udW1iZXJzLmh0bWw6OTA6OAorCistLT4gQ2FzZSAxMSBTdGFjayBUcmFjZToKKyAgICAw
ICAgIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDoxMDE6NDEKKyAgICAxICAgZG9UaHJvdzEx
IGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDoxMDE6NDUKKyAgICAyICAgZ2xvYmFsIGNvZGUg
YXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjEwMzoxNAorCistLT4gQ2FzZSAxMiBTdGFjayBU
cmFjZToKKyAgICAwICAgIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDoxMTI6NTMKKyAgICAx
ICAgIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDoxMTI6NTcKKyAgICAyICAgZ2xvYmFsIGNv
ZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjExMjo2MgorCistLT4gQ2FzZSAxMyBTdGFj
ayBUcmFjZToKKyAgICAwICAgIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDoxMTg6NTMKKyAg
ICAxICAgIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDoxMTg6NTcKKyAgICAyICAgZ2xvYmFs
IGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjExODo2MgorCistLT4gQ2FzZSAxNCBT
dGFjayBUcmFjZToKKyAgICAwICAgIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDoxMjQ6NzYK
KyAgICAxICAgIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDoxMjQ6ODAKKyAgICAyICAgZG9U
aHJvdzE0IGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDoxMjQ6ODUKKyAgICAzICAgZ2xvYmFs
IGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjEyNDo5OQorCistLT4gQ2FzZSAxNSBT
dGFjayBUcmFjZToKKyAgICAwICAgIGF0IGV2YWwgY29kZQorICAgIDEgICBldmFsIGF0IFtuYXRp
dmUgY29kZV0KKyAgICAyICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1s
OjEzMDo1CisKKy0tPiBDYXNlIDE2IFN0YWNrIFRyYWNlOgorICAgIDAgICAgYXQgZG9UaHJvdzE2
CisgICAgMSAgICBhdCBldmFsIGNvZGUKKyAgICAyICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCisg
ICAgMyAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDoxMzY6NQorCist
LT4gQ2FzZSAxNyBTdGFjayBUcmFjZToKKyAgICAwICAgIGF0IAorICAgIDEgICAgYXQgZXZhbCBj
b2RlCisgICAgMiAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQorICAgIDMgICBnbG9iYWwgY29kZSBh
dCBsaW5lLWNvbHVtbi1udW1iZXJzLmh0bWw6MTQ5OjUKKworLS0+IENhc2UgMTggU3RhY2sgVHJh
Y2U6CisgICAgMCAgICBhdCAKKyAgICAxICAgIGF0IGV2YWwgY29kZQorICAgIDIgICBldmFsIGF0
IFtuYXRpdmUgY29kZV0KKyAgICAzICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVy
cy5odG1sOjE1NTo1CisKKy0tPiBDYXNlIDEgU3RhY2sgVHJhY2U6CisgICAgMCAgIGdsb2JhbCBj
b2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuanM6MzoyOAorCistLT4gQ2FzZSAyIFN0YWNrIFRy
YWNlOgorICAgIDAgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmpzOjc6MzIK
KworLS0+IENhc2UgMyBTdGFjayBUcmFjZToKKyAgICAwICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1j
b2x1bW4tbnVtYmVycy5qczoxMToyNAorCistLT4gQ2FzZSAzIFN0YWNrIFRyYWNlOgorICAgIDAg
ICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmpzOjExOjg4CisKKy0tPiBDYXNl
IDQgU3RhY2sgVHJhY2U6CisgICAgMCAgIGRvVGhyb3c0YiBhdCBsaW5lLWNvbHVtbi1udW1iZXJz
LmpzOjE2OjQ1CisgICAgMSAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuanM6
MTc6MTQKKworLS0+IENhc2UgNSBTdGFjayBUcmFjZToKKyAgICAwICAgaW5uZXJGdW5jIGF0IGxp
bmUtY29sdW1uLW51bWJlcnMuanM6MjQ6NzAKKyAgICAxICAgZG9UaHJvdzViIGF0IGxpbmUtY29s
dW1uLW51bWJlcnMuanM6MjQ6ODMKKyAgICAyICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4t
bnVtYmVycy5qczoyNDoxMzUKKworLS0+IENhc2UgNiBTdGFjayBUcmFjZToKKyAgICAwICAgaW5u
ZXJGdW5jIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuanM6Mjg6NzAKKyAgICAxICAgZG9UaHJvdzZi
IGF0IGxpbmUtY29sdW1uLW51bWJlcnMuanM6Mjg6ODMKKyAgICAyICAgZ2xvYmFsIGNvZGUgYXQg
bGluZS1jb2x1bW4tbnVtYmVycy5qczoyODoxMzUKKworLS0+IENhc2UgNyBTdGFjayBUcmFjZToK
KyAgICAwICAgIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuanM6MzI6NDMKKyAgICAxICAgZ2xvYmFs
IGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5qczozMjo0NworCistLT4gQ2FzZSA4IFN0YWNr
IFRyYWNlOgorICAgIDAgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5qczozNjo0NworICAgIDEg
ICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmpzOjM2OjUxCisKKy0tPiBDYXNl
IDkgU3RhY2sgVHJhY2U6CisgICAgMCAgICBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmpzOjQwOjM5
CisgICAgMSAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuanM6NDA6NDMKKwor
LS0+IENhc2UgOSBTdGFjayBUcmFjZToKKyAgICAwICAgIGF0IGxpbmUtY29sdW1uLW51bWJlcnMu
anM6NDA6MTI0CisgICAgMSAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuanM6
NDA6MTI4CisKKy0tPiBDYXNlIDEwIFN0YWNrIFRyYWNlOgorICAgIDAgICAgYXQgbGluZS1jb2x1
bW4tbnVtYmVycy5qczo0NjoyNgorICAgIDEgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1u
dW1iZXJzLmpzOjQ3OjgKKworLS0+IENhc2UgMTEgU3RhY2sgVHJhY2U6CisgICAgMCAgICBhdCBs
aW5lLWNvbHVtbi1udW1iZXJzLmpzOjU2OjQxCisgICAgMSAgIGRvVGhyb3cxMWIgYXQgbGluZS1j
b2x1bW4tbnVtYmVycy5qczo1Njo0NQorICAgIDIgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVt
bi1udW1iZXJzLmpzOjU4OjE1CisKKy0tPiBDYXNlIDEyIFN0YWNrIFRyYWNlOgorICAgIDAgICAg
YXQgbGluZS1jb2x1bW4tbnVtYmVycy5qczo2NTo1MworICAgIDEgICAgYXQgbGluZS1jb2x1bW4t
bnVtYmVycy5qczo2NTo1NworICAgIDIgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1i
ZXJzLmpzOjY1OjYyCisKKy0tPiBDYXNlIDEzIFN0YWNrIFRyYWNlOgorICAgIDAgICAgYXQgbGlu
ZS1jb2x1bW4tbnVtYmVycy5qczo2OTo1MworICAgIDEgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVy
cy5qczo2OTo1NworICAgIDIgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmpz
OjY5OjYyCisKKy0tPiBDYXNlIDE0IFN0YWNrIFRyYWNlOgorICAgIDAgICAgYXQgbGluZS1jb2x1
bW4tbnVtYmVycy5qczo3Mzo3NworICAgIDEgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5qczo3
Mzo4MQorICAgIDIgICBkb1Rocm93MTRiIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuanM6NzM6ODYK
KyAgICAzICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5qczo3MzoxMDEKKwor
LS0+IENhc2UgMTUgU3RhY2sgVHJhY2U6CisgICAgMCAgICBhdCBldmFsIGNvZGUKKyAgICAxICAg
ZXZhbCBhdCBbbmF0aXZlIGNvZGVdCisgICAgMiAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1u
LW51bWJlcnMuanM6Nzc6NQorCistLT4gQ2FzZSAxNiBTdGFjayBUcmFjZToKKyAgICAwICAgIGF0
IGRvVGhyb3cxNWIKKyAgICAxICAgIGF0IGV2YWwgY29kZQorICAgIDIgICBldmFsIGF0IFtuYXRp
dmUgY29kZV0KKyAgICAzICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5qczo4
MTo1CisKKy0tPiBDYXNlIDE3IFN0YWNrIFRyYWNlOgorICAgIDAgICAgYXQgCisgICAgMSAgICBh
dCBldmFsIGNvZGUKKyAgICAyICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCisgICAgMyAgIGdsb2Jh
bCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuanM6OTI6NQorCistLT4gQ2FzZSAxOCBTdGFj
ayBUcmFjZToKKyAgICAwICAgIGF0IAorICAgIDEgICAgYXQgZXZhbCBjb2RlCisgICAgMiAgIGV2
YWwgYXQgW25hdGl2ZSBjb2RlXQorICAgIDMgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1u
dW1iZXJzLmpzOjk2OjUKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvbGluZS1jb2x1bW4tbnVtYmVy
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvbGluZS1jb2x1bW4tbnVt
YmVycy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9saW5lLWNvbHVt
bi1udW1iZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNzAgQEAKKzxodG1sPgor
PGhlYWQ+CisJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgorCTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+CisJPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisJPHAgaWQ9
ImNvbnNvbGUiPjwvcD4KKworPHNjcmlwdD4KK2lmICghdGhpcy5hbGVydCkgeworICAgIGRlYnVn
ID0gcHJpbnQ7CisgICAgZGVzY3JpcHRpb24gPSBwcmludDsKK30KKworZGVzY3JpcHRpb24oCisn
VGhpcyB0ZXN0IGNoZWNrcyBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycyBpbiBzdGFjayB0cmFjZXMg
Zm9yIGNvcnJlY3RuZXNzLicKKyk7CisKK3Rlc3RJZCA9IDA7CitmdW5jdGlvbiBwcmludFN0YWNr
KHN0YWNrVHJhY2UpIHsKKyAgICBkZWJ1ZygiLS0+IENhc2UgIiArIHRlc3RJZCArICIgU3RhY2sg
VHJhY2U6IikKKyAgICBzdGFja1RyYWNlID0gc3RhY2tUcmFjZS5zcGxpdCgiXG4iKTsKKyAgICB2
YXIgbGVuZ3RoID0gTWF0aC5taW4oc3RhY2tUcmFjZS5sZW5ndGgsIDEwMCk7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICB2YXIgaW5kZXhPZkF0ID0gc3Rh
Y2tUcmFjZVtpXS5pbmRleE9mKCdAJykKKyAgICAgICAgdmFyIGluZGV4T2ZMYXN0U2xhc2ggPSBz
dGFja1RyYWNlW2ldLmxhc3RJbmRleE9mKCcvJyk7CisgICAgICAgIGlmIChpbmRleE9mTGFzdFNs
YXNoID09IC0xKQorICAgICAgICAgICAgaW5kZXhPZkxhc3RTbGFzaCA9IGluZGV4T2ZBdAorICAg
ICAgICB2YXIgZnVuY3Rpb25OYW1lID0gc3RhY2tUcmFjZVtpXS5zdWJzdHJpbmcoMCwgaW5kZXhP
ZkF0KTsKKyAgICAgICAgdmFyIGZpbGVOYW1lID0gc3RhY2tUcmFjZVtpXS5zdWJzdHJpbmcoaW5k
ZXhPZkxhc3RTbGFzaCArIDEpOworICAgICAgICBkZWJ1ZygiICAgICIgKyBpICsgIiAgICIgKyBm
dW5jdGlvbk5hbWUgKyAiIGF0ICIgKyBmaWxlTmFtZSk7CisgICAgfQorICAgIGRlYnVnKCcnKTsK
K30KKzwvc2NyaXB0PgorCis8IS0tIENhc2UgMTogVGhyb3cgYW5kIHByaW50IHN0YWNrOiAtLT4K
KzxzY3JpcHQ+dGVzdElkKys7PC9zY3JpcHQ+CisgICAgPHNjcmlwdD50cnkgeyB0aHJvdyBuZXcg
RXJyb3IoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuc3RhY2spOyB9PC9zY3JpcHQ+CisK
KzwhLS0gQ2FzZSAyOiBTYW1lIHByb2dyYW0gYXMgQ2FzZSAxIGJ1dCBpbmRlbnRlZC4gLS0+Cis8
c2NyaXB0PnRlc3RJZCsrOzwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PnRyeSB7IHRocm93IG5l
dyBFcnJvcigpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH08L3NjcmlwdD4K
KworPCEtLSBDYXNlIDM6IFNhbWUgcHJvZ3JhbSBpbmRlbnRlZCBvbiB0aGUgc2FtZSBsaW5lLiAt
LT4KKzxzY3JpcHQ+dGVzdElkKys7PC9zY3JpcHQ+Cis8c2NyaXB0PnRyeSB7IHRocm93IG5ldyBF
cnJvcigpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH08L3NjcmlwdD4gICA8
c2NyaXB0PnRyeSB7IHRocm93IG5ldyBFcnJvcigpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2so
ZS5zdGFjayk7IH08L3NjcmlwdD4KKworPCEtLSBDYXNlIDQ6IFRocm93IGluc2lkZSBhIEZ1bmN0
aW9uLiAtLT4KKzxzY3JpcHQ+dGVzdElkKys7PC9zY3JpcHQ+Cis8c2NyaXB0PgordHJ5IHsKKyAg
ICBmdW5jdGlvbiBkb1Rocm93NCgpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0KKyAgICBkb1Rocm93
NCgpOworfSBjYXRjaChlKSB7CisgICAgcHJpbnRTdGFjayhlLnN0YWNrKTsKK30KKzwvc2NyaXB0
PgorCis8IS0tIENhc2UgNTogRnVuY3Rpb24gd3JhcHBpbmcgYSBGdW5jdGlvbi4gLS0+Cis8c2Ny
aXB0PnRlc3RJZCsrOzwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGRvVGhyb3c1KCkgeyB0
cnkgeyBmdW5jdGlvbiBpbm5lckZ1bmMoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9IGlubmVyRnVu
YygpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH19OyBkb1Rocm93NSgpOwor
PC9zY3JpcHQ+CisKKzwhLS0gQ2FzZSA2OiBTYW1lIGlubmVyIGZ1bmN0aW9uIGJvZHkgYXMgQ2Fz
ZSA1LiAtLT4KKzxzY3JpcHQ+dGVzdElkKys7PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24g
ZG9UaHJvdzYoKSB7IHRyeSB7IGZ1bmN0aW9uIGlubmVyRnVuYygpIHsgdGhyb3cgbmV3IEVycm9y
KCk7IH0gaW5uZXJGdW5jKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLnN0YWNrKTsgfX07
IGRvVGhyb3c2KCk7Cis8L3NjcmlwdD4KKworPCEtLSBDYXNlIDc6IENhc2UgMSByZWRvbmUgd2l0
aCBhIEZ1bmN0aW9uIEV4cHJlc3Npb24uIC0tPgorPHNjcmlwdD50ZXN0SWQrKzs8L3NjcmlwdD4K
KyAgICA8c2NyaXB0PnRyeSB7IChmdW5jdGlvbiAoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9KSgp
OyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH08L3NjcmlwdD4KKzwhLS0gQ2Fz
ZSA4OiBDYXNlIDIgcmVkb25lIHdpdGggYSBGdW5jdGlvbiBFeHByZXNzaW9uLiAtLT4KKzxzY3Jp
cHQ+dGVzdElkKys7PC9zY3JpcHQ+CisgICAgICAgICAgICA8c2NyaXB0PnRyeSB7IChmdW5jdGlv
biAoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9KSgpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2so
ZS5zdGFjayk7IH08L3NjcmlwdD4KKworPCEtLSBDYXNlIDk6IENhc2UgMyByZWRvbmUgd2l0aCBh
IEZ1bmN0aW9uIEV4cHJlc3Npb24uIC0tPgorPHNjcmlwdD50ZXN0SWQrKzs8L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD50cnkgeyAoZnVuY3Rpb24gKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSko
KTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuc3RhY2spOyB9PC9zY3JpcHQ+ICAgPHNjcmlw
dD50cnkgeyAoZnVuY3Rpb24gKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSkoKTsgfSBjYXRjaCAo
ZSkgeyBwcmludFN0YWNrKGUuc3RhY2spOyB9PC9zY3JpcHQ+CisKKzwhLS0gQ2FzZSAxMDogRnVu
Y3Rpb24gRXhwcmVzc2lvbiBhcyBtdWx0aXBsZSBsaW5lcy4gLS0+Cis8c2NyaXB0PnRlc3RJZCsr
Ozwvc2NyaXB0PgorPHNjcmlwdD4KK3RyeSB7CisgICAgKGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCk7CisgICAgIH0pKCk7Cit9IGNhdGNoKGUpIHsKKyAgICBwcmludFN0
YWNrKGUuc3RhY2spOworfQorPC9zY3JpcHQ+CisKKzwhLS0gQ2FzZSAxMTogQ2FzZSA0IHJlZG9u
ZSB3aXRoIGEgRnVuY3Rpb24gd3JhcHBpbmcgRnVuY3Rpb24gRXhwcmVzc2lvbi4gLS0+Cis8c2Ny
aXB0PnRlc3RJZCsrOzwvc2NyaXB0PgorPHNjcmlwdD4KK3RyeSB7CisgICAgZnVuY3Rpb24gZG9U
aHJvdzExKCkgeworICAgICAgICAoZnVuY3Rpb24gKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSko
KTsKKyAgICB9CisgICAgZG9UaHJvdzExKCk7Cit9IGNhdGNoKGUpIHsKKyAgICBwcmludFN0YWNr
KGUuc3RhY2spOworfQorPC9zY3JpcHQ+CisKKzwhLS0gQ2FzZSAxMjogQSBGdW5jdGlvbiBFeHBy
ZXNzaW9uIHdyYXBwaW5nIGEgRnVuY3Rpb24gRXhwcmVzc2lvbi4gLS0+Cis8c2NyaXB0PnRlc3RJ
ZCsrOzwvc2NyaXB0PgorPHNjcmlwdD4KK3RyeSB7IChmdW5jdGlvbiAoKSB7KGZ1bmN0aW9uICgp
IHsgdGhyb3cgbmV3IEVycm9yKCk7IH0pKCk7fSkoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNr
KGUuc3RhY2spOyB9Cis8L3NjcmlwdD4KKworPCEtLSBDYXNlIDEzOiBTYW1lIGZ1bmN0aW9uIGJv
ZHkgYXMgQ2FzZSAxMi4gLS0+Cis8c2NyaXB0PnRlc3RJZCsrOzwvc2NyaXB0PgorPHNjcmlwdD4K
K3RyeSB7IChmdW5jdGlvbiAoKSB7KGZ1bmN0aW9uICgpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0p
KCk7fSkoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuc3RhY2spOyB9Cis8L3NjcmlwdD4K
KworPCEtLSBDYXNlIDE0OiBGdW5jdGlvbiBFeHByZXNzaW9uIGluIGEgRnVuY3Rpb24gRXhwcmVz
c2lvbiBpbiBhIEZ1bmN0aW9uLiAtLT4KKzxzY3JpcHQ+dGVzdElkKys7PC9zY3JpcHQ+Cis8c2Ny
aXB0PgordHJ5IHsgZnVuY3Rpb24gZG9UaHJvdzE0KCkgeyhmdW5jdGlvbiAoKSB7IChmdW5jdGlv
biAoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9KSgpO30pKCk7fSBkb1Rocm93MTQoKTsgfSBjYXRj
aCAoZSkgeyBwcmludFN0YWNrKGUuc3RhY2spOyB9Cis8L3NjcmlwdD4KKworPCEtLSBDYXNlIDE1
OiBUaHJvdyBpbiBhbiBFdmFsLiAtLT4KKzxzY3JpcHQ+dGVzdElkKys7PC9zY3JpcHQ+Cis8c2Ny
aXB0PgorZXZhbCgidHJ5IHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gY2F0Y2goZSkgeyBwcmludFN0
YWNrKGUuc3RhY2spOyB9Iik7Cis8L3NjcmlwdD4KKworPCEtLSBDYXNlIDE2OiBNdWx0aXBsZSBs
aW5lcyBpbiBhbiBFdmFsLiAtLT4KKzxzY3JpcHQ+dGVzdElkKys7PC9zY3JpcHQ+Cis8c2NyaXB0
PgorZXZhbCgiXG4iICsKKyJ0cnkge1xuIiArCisiICAgIGZ1bmN0aW9uIGRvVGhyb3cxNigpIHt0
aHJvdyBuZXcgRXJyb3IoKTt9XG4iICsKKyIgICAgZG9UaHJvdzE2KCk7XG4iICsKKyJ9IGNhdGNo
KGUpIHtcbiIgKworIiAgICBwcmludFN0YWNrKGUuc3RhY2spO1xuIiArCisifVxuIiArCisiIik7
Cis8L3NjcmlwdD4KKworPCEtLSBDYXNlIDE3OiBGdW5jdGlvbiBFeHByZXNzaW9uIGluIGFuIEV2
YWwuIC0tPgorPHNjcmlwdD50ZXN0SWQrKzs8L3NjcmlwdD4KKzxzY3JpcHQ+CitldmFsKCJ0cnkg
eyAoZnVuY3Rpb24gKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTt9KSgpOyB9IGNhdGNoKGUpIHsgcHJp
bnRTdGFjayhlLnN0YWNrKTsgfSIpOworPC9zY3JpcHQ+CisKKzwhLS0gQ2FzZSAxODogTXVsdGlw
bGUgbGluZXMgd2l0aCBhIEZ1bmN0aW9uIEV4cHJlc3Npb24gaW4gYW4gRXZhbC4gLS0+Cis8c2Ny
aXB0PnRlc3RJZCsrOzwvc2NyaXB0PgorPHNjcmlwdD4KK2V2YWwoIlxuIiArCisidHJ5IHtcbiIg
KworIiAgICAoZnVuY3Rpb24gKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTt9KSgpO1xuIiArCisifSBj
YXRjaChlKSB7XG4iICsKKyIgICAgcHJpbnRTdGFjayhlLnN0YWNrKTtcbiIgKworIn1cbiIgKwor
IiIpOworPC9zY3JpcHQ+CisKKzwhLS0gTm93IGRvIGl0IGFsbCBvdmVyIHdpdGggYSBsb2FkZWQg
c2NyaXB0IGZpbGUuIC0tPgorPHNjcmlwdD50ZXN0SWQgPSAwOzwvc2NyaXB0PgorCTxzY3JpcHQg
c3JjPSJzY3JpcHQtdGVzdHMvbGluZS1jb2x1bW4tbnVtYmVycy5qcyI+PC9zY3JpcHQ+CisKKwk8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3N0YWNrLXRyYWNlLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3N0YWNrLXRyYWNlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMTUxOTIwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9zdGFjay10
cmFjZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNDYxICs0LDQ2MSBAQCBPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBCiAKIAogLS0+IFN0YWNrIFRyYWNl
OgotICAgIDAgICBub3JtYWxJbm5lciBhdCBzdGFjay10cmFjZS5qczozMTo0NgotICAgIDEgICBu
b3JtYWxPdXRlciBhdCBzdGFjay10cmFjZS5qczozMDozNgotICAgIDIgICBnbG9iYWwgY29kZSBh
dCBzdGFjay10cmFjZS5qczozNjoxNworICAgIDAgICBub3JtYWxJbm5lciBhdCBzdGFjay10cmFj
ZS5qczozMTo0NworICAgIDEgICBub3JtYWxPdXRlciBhdCBzdGFjay10cmFjZS5qczozMDozNwor
ICAgIDIgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczozNjoxOAogCiAtLT4gU3RhY2sg
VHJhY2U6Ci0gICAgMCAgIGlubmVyIGF0IHN0YWNrLXRyYWNlLmpzOjI4OjY4CisgICAgMCAgIGlu
bmVyIGF0IHN0YWNrLXRyYWNlLmpzOjI4OjY5CiAgICAgMSAgICBhdCBldmFsIGNvZGUKICAgICAy
ICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgMyAgIGV2YWxlciBhdCBzdGFjay10cmFjZS5q
czoyOToyOAotICAgIDQgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczozOToxMgorICAg
IDMgICBldmFsZXIgYXQgc3RhY2stdHJhY2UuanM6Mjk6MjkKKyAgICA0ICAgZ2xvYmFsIGNvZGUg
YXQgc3RhY2stdHJhY2UuanM6Mzk6MTMKIAogLS0+IFN0YWNrIFRyYWNlOgotICAgIDAgICBpbm5l
ciBhdCBzdGFjay10cmFjZS5qczoyODo2OAotICAgIDEgICBvdXRlciBhdCBzdGFjay10cmFjZS5q
czoyNzozMworICAgIDAgICBpbm5lciBhdCBzdGFjay10cmFjZS5qczoyODo2OQorICAgIDEgICBv
dXRlciBhdCBzdGFjay10cmFjZS5qczoyNzozNAogICAgIDIgICAgYXQgZXZhbCBjb2RlCiAgICAg
MyAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDQgICBldmFsZXIgYXQgc3RhY2stdHJhY2Uu
anM6Mjk6MjgKLSAgICA1ICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6NDA6MTIKKyAg
ICA0ICAgZXZhbGVyIGF0IHN0YWNrLXRyYWNlLmpzOjI5OjI5CisgICAgNSAgIGdsb2JhbCBjb2Rl
IGF0IHN0YWNrLXRyYWNlLmpzOjQwOjEzCiAKIC0tPiBTdGFjayBUcmFjZToKLSAgICAwICAgaW5u
ZXIgYXQgc3RhY2stdHJhY2UuanM6Mjg6NjgKLSAgICAxICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2st
dHJhY2UuanM6NDM6MjIKKyAgICAwICAgaW5uZXIgYXQgc3RhY2stdHJhY2UuanM6Mjg6NjkKKyAg
ICAxICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6NDM6MjMKIAogLS0+IFN0YWNrIFRy
YWNlOgotICAgIDAgICBpbm5lciBhdCBzdGFjay10cmFjZS5qczoyODo2OAotICAgIDEgICBvdXRl
ciBhdCBzdGFjay10cmFjZS5qczoyNzozMwotICAgIDIgICBnbG9iYWwgY29kZSBhdCBzdGFjay10
cmFjZS5qczo0NDoyMgorICAgIDAgICBpbm5lciBhdCBzdGFjay10cmFjZS5qczoyODo2OQorICAg
IDEgICBvdXRlciBhdCBzdGFjay10cmFjZS5qczoyNzozNAorICAgIDIgICBnbG9iYWwgY29kZSBh
dCBzdGFjay10cmFjZS5qczo0NDoyMwogCiAtLT4gU3RhY2sgVHJhY2U6CiAgICAgMCAgIGFwcGVu
ZENoaWxkIGF0IFtuYXRpdmUgY29kZV0KLSAgICAxICAgaG9zdFRocm93ZXIgYXQgc3RhY2stdHJh
Y2UuanM6MjU6NTkKLSAgICAyICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6NDc6MTcK
KyAgICAxICAgaG9zdFRocm93ZXIgYXQgc3RhY2stdHJhY2UuanM6MjU6NjAKKyAgICAyICAgZ2xv
YmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6NDc6MTgKIAogLS0+IFN0YWNrIFRyYWNlOgotICAg
IDAgICBodG1sSW5uZXIgYXQgc3RhY2stdHJhY2UuaHRtbDoxMDo1NQotICAgIDEgICBzY3JpcHRl
cklubmVyIGF0IHN0YWNrLXRyYWNlLmpzOjMyOjM2Ci0gICAgMiAgIGdsb2JhbCBjb2RlIGF0IHN0
YWNrLXRyYWNlLmpzOjQ5OjE5Ci0KLS0tPiBTdGFjayBUcmFjZToKLSAgICAwICAgaHRtbElubmVy
IGF0IHN0YWNrLXRyYWNlLmh0bWw6MTA6NTUKLSAgICAxICAgaHRtbE91dGVyIGF0IHN0YWNrLXRy
YWNlLmh0bWw6MTE6MzIKLSAgICAyICAgc2NyaXB0ZXJPdXRlciBhdCBzdGFjay10cmFjZS5qczoz
MzozNgotICAgIDMgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczo1MDoxOQotCi0tLT4g
U3RhY2sgVHJhY2U6Ci0gICAgMCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUy
OjQyCi0gICAgMSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAg
MiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgMyAgIHNlbGZS
ZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNCAgIHNlbGZSZWN1cnNpdmUx
IGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNr
LXRyYWNlLmpzOjUyOjQyCi0gICAgNiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpz
OjUyOjQyCi0gICAgNyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0g
ICAgOCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgOSAgIHNl
bGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgMTAgICBzZWxmUmVjdXJz
aXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDExICAgc2VsZlJlY3Vyc2l2ZTEgYXQg
c3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICAxMiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRy
YWNlLmpzOjUyOjQyCi0gICAgMTMgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1
Mjo0MgotICAgIDE0ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAg
ICAxNSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgMTYgICBz
ZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDE3ICAgc2VsZlJlY3Vy
c2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICAxOCAgIHNlbGZSZWN1cnNpdmUxIGF0
IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgMTkgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10
cmFjZS5qczo1Mjo0MgotICAgIDIwICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6
NTI6NDIKLSAgICAyMSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0g
ICAgMjIgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDIzICAg
c2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICAyNCAgIHNlbGZSZWN1
cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgMjUgICBzZWxmUmVjdXJzaXZlMSBh
dCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDI2ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2st
dHJhY2UuanM6NTI6NDIKLSAgICAyNyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpz
OjUyOjQyCi0gICAgMjggICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0Mgot
ICAgIDI5ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICAzMCAg
IHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgMzEgICBzZWxmUmVj
dXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDMyICAgc2VsZlJlY3Vyc2l2ZTEg
YXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICAzMyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNr
LXRyYWNlLmpzOjUyOjQyCi0gICAgMzQgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5q
czo1Mjo0MgotICAgIDM1ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIK
LSAgICAzNiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgMzcg
ICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDM4ICAgc2VsZlJl
Y3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICAzOSAgIHNlbGZSZWN1cnNpdmUx
IGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNDAgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFj
ay10cmFjZS5qczo1Mjo0MgotICAgIDQxICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2Uu
anM6NTI6NDIKLSAgICA0MiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQy
Ci0gICAgNDMgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDQ0
ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA0NSAgIHNlbGZS
ZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNDYgICBzZWxmUmVjdXJzaXZl
MSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDQ3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3Rh
Y2stdHJhY2UuanM6NTI6NDIKLSAgICA0OCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNl
LmpzOjUyOjQyCi0gICAgNDkgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0
MgotICAgIDUwICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA1
MSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNTIgICBzZWxm
UmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDUzICAgc2VsZlJlY3Vyc2l2
ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA1NCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0
YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNTUgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFj
ZS5qczo1Mjo0MgotICAgIDU2ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6
NDIKLSAgICA1NyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAg
NTggICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDU5ICAgc2Vs
ZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA2MCAgIHNlbGZSZWN1cnNp
dmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNjEgICBzZWxmUmVjdXJzaXZlMSBhdCBz
dGFjay10cmFjZS5qczo1Mjo0MgotICAgIDYyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJh
Y2UuanM6NTI6NDIKLSAgICA2MyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUy
OjQyCi0gICAgNjQgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAg
IDY1ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA2NiAgIHNl
bGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNjcgICBzZWxmUmVjdXJz
aXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDY4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQg
c3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA2OSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRy
YWNlLmpzOjUyOjQyCi0gICAgNzAgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1
Mjo0MgotICAgIDcxICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAg
ICA3MiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNzMgICBz
ZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDc0ICAgc2VsZlJlY3Vy
c2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA3NSAgIHNlbGZSZWN1cnNpdmUxIGF0
IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNzYgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10
cmFjZS5qczo1Mjo0MgotICAgIDc3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6
NTI6NDIKLSAgICA3OCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0g
ICAgNzkgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDgwICAg
c2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA4MSAgIHNlbGZSZWN1
cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgODIgICBzZWxmUmVjdXJzaXZlMSBh
dCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDgzICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2st
dHJhY2UuanM6NTI6NDIKLSAgICA4NCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpz
OjUyOjQyCi0gICAgODUgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0Mgot
ICAgIDg2ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA4NyAg
IHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgODggICBzZWxmUmVj
dXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDg5ICAgc2VsZlJlY3Vyc2l2ZTEg
YXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA5MCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNr
LXRyYWNlLmpzOjUyOjQyCi0gICAgOTEgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5q
czo1Mjo0MgotICAgIDkyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIK
LSAgICA5MyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgOTQg
ICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDk1ICAgc2VsZlJl
Y3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA5NiAgIHNlbGZSZWN1cnNpdmUx
IGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgOTcgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFj
ay10cmFjZS5qczo1Mjo0MgotICAgIDk4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2Uu
anM6NTI6NDIKLSAgICA5OSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQy
Ci0KLS0tPiBTdGFjayBUcmFjZToKLSAgICAwICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJh
Y2UuanM6NjI6MjYKLSAgICAxICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6
MjYKLSAgICAyICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICAz
ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA0ICAgc2VsZlJl
Y3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA1ICAgc2VsZlJlY3Vyc2l2ZTIg
YXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA2ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2st
dHJhY2UuanM6NjI6MjYKLSAgICA3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6
NjI6MjYKLSAgICA4ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAg
ICA5ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICAxMCAgIHNl
bGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgMTEgICBzZWxmUmVjdXJz
aXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDEyICAgc2VsZlJlY3Vyc2l2ZTIgYXQg
c3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICAxMyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRy
YWNlLmpzOjYyOjI2Ci0gICAgMTQgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2
MjoyNgotICAgIDE1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAg
ICAxNiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgMTcgICBz
ZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDE4ICAgc2VsZlJlY3Vy
c2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICAxOSAgIHNlbGZSZWN1cnNpdmUyIGF0
IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgMjAgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10
cmFjZS5qczo2MjoyNgotICAgIDIxICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6
NjI6MjYKLSAgICAyMiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0g
ICAgMjMgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDI0ICAg
c2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICAyNSAgIHNlbGZSZWN1
cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgMjYgICBzZWxmUmVjdXJzaXZlMiBh
dCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDI3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2st
dHJhY2UuanM6NjI6MjYKLSAgICAyOCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpz
OjYyOjI2Ci0gICAgMjkgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgot
ICAgIDMwICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICAzMSAg
IHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgMzIgICBzZWxmUmVj
dXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDMzICAgc2VsZlJlY3Vyc2l2ZTIg
YXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICAzNCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNr
LXRyYWNlLmpzOjYyOjI2Ci0gICAgMzUgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5q
czo2MjoyNgotICAgIDM2ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYK
LSAgICAzNyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgMzgg
ICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDM5ICAgc2VsZlJl
Y3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA0MCAgIHNlbGZSZWN1cnNpdmUy
IGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNDEgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFj
ay10cmFjZS5qczo2MjoyNgotICAgIDQyICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2Uu
anM6NjI6MjYKLSAgICA0MyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2
Ci0gICAgNDQgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDQ1
ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA0NiAgIHNlbGZS
ZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNDcgICBzZWxmUmVjdXJzaXZl
MiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDQ4ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3Rh
Y2stdHJhY2UuanM6NjI6MjYKLSAgICA0OSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNl
LmpzOjYyOjI2Ci0gICAgNTAgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2Mjoy
NgotICAgIDUxICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA1
MiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNTMgICBzZWxm
UmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDU0ICAgc2VsZlJlY3Vyc2l2
ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA1NSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0
YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNTYgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFj
ZS5qczo2MjoyNgotICAgIDU3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6
MjYKLSAgICA1OCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAg
NTkgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDYwICAgc2Vs
ZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA2MSAgIHNlbGZSZWN1cnNp
dmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNjIgICBzZWxmUmVjdXJzaXZlMiBhdCBz
dGFjay10cmFjZS5qczo2MjoyNgotICAgIDYzICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJh
Y2UuanM6NjI6MjYKLSAgICA2NCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYy
OjI2Ci0gICAgNjUgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAg
IDY2ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA2NyAgIHNl
bGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNjggICBzZWxmUmVjdXJz
aXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDY5ICAgc2VsZlJlY3Vyc2l2ZTIgYXQg
c3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA3MCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRy
YWNlLmpzOjYyOjI2Ci0gICAgNzEgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2
MjoyNgotICAgIDcyICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAg
ICA3MyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNzQgICBz
ZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDc1ICAgc2VsZlJlY3Vy
c2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA3NiAgIHNlbGZSZWN1cnNpdmUyIGF0
IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNzcgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10
cmFjZS5qczo2MjoyNgotICAgIDc4ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6
NjI6MjYKLSAgICA3OSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0g
ICAgODAgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDgxICAg
c2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA4MiAgIHNlbGZSZWN1
cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgODMgICBzZWxmUmVjdXJzaXZlMiBh
dCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDg0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2st
dHJhY2UuanM6NjI6MjYKLSAgICA4NSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpz
OjYyOjI2Ci0gICAgODYgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgot
ICAgIDg3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA4OCAg
IHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgODkgICBzZWxmUmVj
dXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDkwICAgc2VsZlJlY3Vyc2l2ZTIg
YXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA5MSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNr
LXRyYWNlLmpzOjYyOjI2Ci0gICAgOTIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5q
czo2MjoyNgotICAgIDkzICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYK
LSAgICA5NCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgOTUg
ICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDk2ICAgc2VsZlJl
Y3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA5NyAgIHNlbGZSZWN1cnNpdmUy
IGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgOTggICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFj
ay10cmFjZS5qczo2MjoyNgotICAgIDk5ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2Uu
anM6NjI6MjYKKyAgICAwICAgaHRtbElubmVyIGF0IHN0YWNrLXRyYWNlLmh0bWw6MTA6NTYKKyAg
ICAxICAgc2NyaXB0ZXJJbm5lciBhdCBzdGFjay10cmFjZS5qczozMjozNworICAgIDIgICBnbG9i
YWwgY29kZSBhdCBzdGFjay10cmFjZS5qczo0OToyMAorCistLT4gU3RhY2sgVHJhY2U6CisgICAg
MCAgIGh0bWxJbm5lciBhdCBzdGFjay10cmFjZS5odG1sOjEwOjU2CisgICAgMSAgIGh0bWxPdXRl
ciBhdCBzdGFjay10cmFjZS5odG1sOjExOjMzCisgICAgMiAgIHNjcmlwdGVyT3V0ZXIgYXQgc3Rh
Y2stdHJhY2UuanM6MzM6MzcKKyAgICAzICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6
NTA6MjAKKworLS0+IFN0YWNrIFRyYWNlOgorICAgIDAgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFj
ay10cmFjZS5qczo1Mjo0MworICAgIDEgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5q
czo1Mjo0MworICAgIDIgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0Mwor
ICAgIDMgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDQgICBz
ZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDUgICBzZWxmUmVjdXJz
aXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDYgICBzZWxmUmVjdXJzaXZlMSBhdCBz
dGFjay10cmFjZS5qczo1Mjo0MworICAgIDcgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFj
ZS5qczo1Mjo0MworICAgIDggICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0
MworICAgIDkgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDEw
ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICAxMSAgIHNlbGZS
ZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgMTIgICBzZWxmUmVjdXJzaXZl
MSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDEzICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3Rh
Y2stdHJhY2UuanM6NTI6NDMKKyAgICAxNCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNl
LmpzOjUyOjQzCisgICAgMTUgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0
MworICAgIDE2ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICAx
NyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgMTggICBzZWxm
UmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDE5ICAgc2VsZlJlY3Vyc2l2
ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICAyMCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0
YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgMjEgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFj
ZS5qczo1Mjo0MworICAgIDIyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6
NDMKKyAgICAyMyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAg
MjQgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDI1ICAgc2Vs
ZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICAyNiAgIHNlbGZSZWN1cnNp
dmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgMjcgICBzZWxmUmVjdXJzaXZlMSBhdCBz
dGFjay10cmFjZS5qczo1Mjo0MworICAgIDI4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJh
Y2UuanM6NTI6NDMKKyAgICAyOSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUy
OjQzCisgICAgMzAgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAg
IDMxICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICAzMiAgIHNl
bGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgMzMgICBzZWxmUmVjdXJz
aXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDM0ICAgc2VsZlJlY3Vyc2l2ZTEgYXQg
c3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICAzNSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRy
YWNlLmpzOjUyOjQzCisgICAgMzYgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1
Mjo0MworICAgIDM3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAg
ICAzOCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgMzkgICBz
ZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDQwICAgc2VsZlJlY3Vy
c2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA0MSAgIHNlbGZSZWN1cnNpdmUxIGF0
IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNDIgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10
cmFjZS5qczo1Mjo0MworICAgIDQzICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6
NTI6NDMKKyAgICA0NCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisg
ICAgNDUgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDQ2ICAg
c2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA0NyAgIHNlbGZSZWN1
cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNDggICBzZWxmUmVjdXJzaXZlMSBh
dCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDQ5ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2st
dHJhY2UuanM6NTI6NDMKKyAgICA1MCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpz
OjUyOjQzCisgICAgNTEgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0Mwor
ICAgIDUyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA1MyAg
IHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNTQgICBzZWxmUmVj
dXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDU1ICAgc2VsZlJlY3Vyc2l2ZTEg
YXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA1NiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNr
LXRyYWNlLmpzOjUyOjQzCisgICAgNTcgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5q
czo1Mjo0MworICAgIDU4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMK
KyAgICA1OSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNjAg
ICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDYxICAgc2VsZlJl
Y3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA2MiAgIHNlbGZSZWN1cnNpdmUx
IGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNjMgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFj
ay10cmFjZS5qczo1Mjo0MworICAgIDY0ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2Uu
anM6NTI6NDMKKyAgICA2NSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQz
CisgICAgNjYgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDY3
ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA2OCAgIHNlbGZS
ZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNjkgICBzZWxmUmVjdXJzaXZl
MSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDcwICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3Rh
Y2stdHJhY2UuanM6NTI6NDMKKyAgICA3MSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNl
LmpzOjUyOjQzCisgICAgNzIgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0
MworICAgIDczICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA3
NCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNzUgICBzZWxm
UmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDc2ICAgc2VsZlJlY3Vyc2l2
ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA3NyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0
YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNzggICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFj
ZS5qczo1Mjo0MworICAgIDc5ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6
NDMKKyAgICA4MCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAg
ODEgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDgyICAgc2Vs
ZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA4MyAgIHNlbGZSZWN1cnNp
dmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgODQgICBzZWxmUmVjdXJzaXZlMSBhdCBz
dGFjay10cmFjZS5qczo1Mjo0MworICAgIDg1ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJh
Y2UuanM6NTI6NDMKKyAgICA4NiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUy
OjQzCisgICAgODcgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAg
IDg4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA4OSAgIHNl
bGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgOTAgICBzZWxmUmVjdXJz
aXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDkxICAgc2VsZlJlY3Vyc2l2ZTEgYXQg
c3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA5MiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRy
YWNlLmpzOjUyOjQzCisgICAgOTMgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1
Mjo0MworICAgIDk0ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAg
ICA5NSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgOTYgICBz
ZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDk3ICAgc2VsZlJlY3Vy
c2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA5OCAgIHNlbGZSZWN1cnNpdmUxIGF0
IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgOTkgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10
cmFjZS5qczo1Mjo0MworCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIHNlbGZSZWN1cnNpdmUy
IGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgMSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNr
LXRyYWNlLmpzOjYyOjI3CisgICAgMiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpz
OjYyOjI3CisgICAgMyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3Cisg
ICAgNCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNSAgIHNl
bGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNiAgIHNlbGZSZWN1cnNp
dmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0
YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgOCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNl
LmpzOjYyOjI3CisgICAgOSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3
CisgICAgMTAgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDEx
ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICAxMiAgIHNlbGZS
ZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgMTMgICBzZWxmUmVjdXJzaXZl
MiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDE0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3Rh
Y2stdHJhY2UuanM6NjI6MjcKKyAgICAxNSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNl
LmpzOjYyOjI3CisgICAgMTYgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2Mjoy
NworICAgIDE3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICAx
OCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgMTkgICBzZWxm
UmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDIwICAgc2VsZlJlY3Vyc2l2
ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICAyMSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0
YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgMjIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFj
ZS5qczo2MjoyNworICAgIDIzICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6
MjcKKyAgICAyNCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAg
MjUgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDI2ICAgc2Vs
ZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICAyNyAgIHNlbGZSZWN1cnNp
dmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgMjggICBzZWxmUmVjdXJzaXZlMiBhdCBz
dGFjay10cmFjZS5qczo2MjoyNworICAgIDI5ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJh
Y2UuanM6NjI6MjcKKyAgICAzMCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYy
OjI3CisgICAgMzEgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAg
IDMyICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICAzMyAgIHNl
bGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgMzQgICBzZWxmUmVjdXJz
aXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDM1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQg
c3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICAzNiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRy
YWNlLmpzOjYyOjI3CisgICAgMzcgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2
MjoyNworICAgIDM4ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAg
ICAzOSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNDAgICBz
ZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDQxICAgc2VsZlJlY3Vy
c2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA0MiAgIHNlbGZSZWN1cnNpdmUyIGF0
IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNDMgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10
cmFjZS5qczo2MjoyNworICAgIDQ0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6
NjI6MjcKKyAgICA0NSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3Cisg
ICAgNDYgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDQ3ICAg
c2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA0OCAgIHNlbGZSZWN1
cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNDkgICBzZWxmUmVjdXJzaXZlMiBh
dCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDUwICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2st
dHJhY2UuanM6NjI6MjcKKyAgICA1MSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpz
OjYyOjI3CisgICAgNTIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNwor
ICAgIDUzICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA1NCAg
IHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNTUgICBzZWxmUmVj
dXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDU2ICAgc2VsZlJlY3Vyc2l2ZTIg
YXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA1NyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNr
LXRyYWNlLmpzOjYyOjI3CisgICAgNTggICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5q
czo2MjoyNworICAgIDU5ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcK
KyAgICA2MCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNjEg
ICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDYyICAgc2VsZlJl
Y3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA2MyAgIHNlbGZSZWN1cnNpdmUy
IGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNjQgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFj
ay10cmFjZS5qczo2MjoyNworICAgIDY1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2Uu
anM6NjI6MjcKKyAgICA2NiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3
CisgICAgNjcgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDY4
ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA2OSAgIHNlbGZS
ZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNzAgICBzZWxmUmVjdXJzaXZl
MiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDcxICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3Rh
Y2stdHJhY2UuanM6NjI6MjcKKyAgICA3MiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNl
LmpzOjYyOjI3CisgICAgNzMgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2Mjoy
NworICAgIDc0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA3
NSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNzYgICBzZWxm
UmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDc3ICAgc2VsZlJlY3Vyc2l2
ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA3OCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0
YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNzkgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFj
ZS5qczo2MjoyNworICAgIDgwICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6
MjcKKyAgICA4MSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAg
ODIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDgzICAgc2Vs
ZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA4NCAgIHNlbGZSZWN1cnNp
dmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgODUgICBzZWxmUmVjdXJzaXZlMiBhdCBz
dGFjay10cmFjZS5qczo2MjoyNworICAgIDg2ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJh
Y2UuanM6NjI6MjcKKyAgICA4NyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYy
OjI3CisgICAgODggICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAg
IDg5ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA5MCAgIHNl
bGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgOTEgICBzZWxmUmVjdXJz
aXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDkyICAgc2VsZlJlY3Vyc2l2ZTIgYXQg
c3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA5MyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRy
YWNlLmpzOjYyOjI3CisgICAgOTQgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2
MjoyNworICAgIDk1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAg
ICA5NiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgOTcgICBz
ZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDk4ICAgc2VsZlJlY3Vy
c2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA5OSAgIHNlbGZSZWN1cnNpdmUyIGF0
IHN0YWNrLXRyYWNlLmpzOjYyOjI3CiAKIC0tPiBTdGFjayBUcmFjZToKICAgICAwICAgZXZhbCBh
dCBbbmF0aXZlIGNvZGVdCi0gICAgMSAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpz
OjY5OjgKKyAgICAxICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OQogICAg
IDIgICAgYXQgZXZhbCBjb2RlCiAgICAgMyAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDQg
ICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo4CisgICAgNCAgIHNlbGZSZWN1
cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA1ICAgIGF0IGV2YWwgY29kZQogICAg
IDYgICBldmFsIGF0IFtuYXRpdmUgY29kZV0KLSAgICA3ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3Rh
Y2stdHJhY2UuanM6Njk6OAorICAgIDcgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5q
czo2OTo5CiAgICAgOCAgICBhdCBldmFsIGNvZGUKICAgICA5ICAgZXZhbCBhdCBbbmF0aXZlIGNv
ZGVdCi0gICAgMTAgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo4CisgICAg
MTAgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo5CiAgICAgMTEgICAgYXQg
ZXZhbCBjb2RlCiAgICAgMTIgICBldmFsIGF0IFtuYXRpdmUgY29kZV0KLSAgICAxMyAgIHNlbGZS
ZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAgICAxMyAgIHNlbGZSZWN1cnNpdmUz
IGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICAxNCAgICBhdCBldmFsIGNvZGUKICAgICAxNSAg
IGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDE2ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2st
dHJhY2UuanM6Njk6OAorICAgIDE2ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6
Njk6OQogICAgIDE3ICAgIGF0IGV2YWwgY29kZQogICAgIDE4ICAgZXZhbCBhdCBbbmF0aXZlIGNv
ZGVdCi0gICAgMTkgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo4CisgICAg
MTkgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo5CiAgICAgMjAgICAgYXQg
ZXZhbCBjb2RlCiAgICAgMjEgICBldmFsIGF0IFtuYXRpdmUgY29kZV0KLSAgICAyMiAgIHNlbGZS
ZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAgICAyMiAgIHNlbGZSZWN1cnNpdmUz
IGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICAyMyAgICBhdCBldmFsIGNvZGUKICAgICAyNCAg
IGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDI1ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2st
dHJhY2UuanM6Njk6OAorICAgIDI1ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6
Njk6OQogICAgIDI2ICAgIGF0IGV2YWwgY29kZQogICAgIDI3ICAgZXZhbCBhdCBbbmF0aXZlIGNv
ZGVdCi0gICAgMjggICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo4CisgICAg
MjggICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo5CiAgICAgMjkgICAgYXQg
ZXZhbCBjb2RlCiAgICAgMzAgICBldmFsIGF0IFtuYXRpdmUgY29kZV0KLSAgICAzMSAgIHNlbGZS
ZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAgICAzMSAgIHNlbGZSZWN1cnNpdmUz
IGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICAzMiAgICBhdCBldmFsIGNvZGUKICAgICAzMyAg
IGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDM0ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2st
dHJhY2UuanM6Njk6OAorICAgIDM0ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6
Njk6OQogICAgIDM1ICAgIGF0IGV2YWwgY29kZQogICAgIDM2ICAgZXZhbCBhdCBbbmF0aXZlIGNv
ZGVdCi0gICAgMzcgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo4CisgICAg
MzcgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo5CiAgICAgMzggICAgYXQg
ZXZhbCBjb2RlCiAgICAgMzkgICBldmFsIGF0IFtuYXRpdmUgY29kZV0KLSAgICA0MCAgIHNlbGZS
ZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAgICA0MCAgIHNlbGZSZWN1cnNpdmUz
IGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA0MSAgICBhdCBldmFsIGNvZGUKICAgICA0MiAg
IGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDQzICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2st
dHJhY2UuanM6Njk6OAorICAgIDQzICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6
Njk6OQogICAgIDQ0ICAgIGF0IGV2YWwgY29kZQogICAgIDQ1ICAgZXZhbCBhdCBbbmF0aXZlIGNv
ZGVdCi0gICAgNDYgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo4CisgICAg
NDYgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo5CiAgICAgNDcgICAgYXQg
ZXZhbCBjb2RlCiAgICAgNDggICBldmFsIGF0IFtuYXRpdmUgY29kZV0KLSAgICA0OSAgIHNlbGZS
ZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAgICA0OSAgIHNlbGZSZWN1cnNpdmUz
IGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA1MCAgICBhdCBldmFsIGNvZGUKICAgICA1MSAg
IGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDUyICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2st
dHJhY2UuanM6Njk6OAorICAgIDUyICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6
Njk6OQogICAgIDUzICAgIGF0IGV2YWwgY29kZQogICAgIDU0ICAgZXZhbCBhdCBbbmF0aXZlIGNv
ZGVdCi0gICAgNTUgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo4CisgICAg
NTUgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo5CiAgICAgNTYgICAgYXQg
ZXZhbCBjb2RlCiAgICAgNTcgICBldmFsIGF0IFtuYXRpdmUgY29kZV0KLSAgICA1OCAgIHNlbGZS
ZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAgICA1OCAgIHNlbGZSZWN1cnNpdmUz
IGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA1OSAgICBhdCBldmFsIGNvZGUKICAgICA2MCAg
IGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDYxICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2st
dHJhY2UuanM6Njk6OAorICAgIDYxICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6
Njk6OQogICAgIDYyICAgIGF0IGV2YWwgY29kZQogICAgIDYzICAgZXZhbCBhdCBbbmF0aXZlIGNv
ZGVdCi0gICAgNjQgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo4CisgICAg
NjQgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo5CiAgICAgNjUgICAgYXQg
ZXZhbCBjb2RlCiAgICAgNjYgICBldmFsIGF0IFtuYXRpdmUgY29kZV0KLSAgICA2NyAgIHNlbGZS
ZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAgICA2NyAgIHNlbGZSZWN1cnNpdmUz
IGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA2OCAgICBhdCBldmFsIGNvZGUKICAgICA2OSAg
IGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDcwICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2st
dHJhY2UuanM6Njk6OAorICAgIDcwICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6
Njk6OQogICAgIDcxICAgIGF0IGV2YWwgY29kZQogICAgIDcyICAgZXZhbCBhdCBbbmF0aXZlIGNv
ZGVdCi0gICAgNzMgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo4CisgICAg
NzMgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo5CiAgICAgNzQgICAgYXQg
ZXZhbCBjb2RlCiAgICAgNzUgICBldmFsIGF0IFtuYXRpdmUgY29kZV0KLSAgICA3NiAgIHNlbGZS
ZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAgICA3NiAgIHNlbGZSZWN1cnNpdmUz
IGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA3NyAgICBhdCBldmFsIGNvZGUKICAgICA3OCAg
IGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDc5ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2st
dHJhY2UuanM6Njk6OAorICAgIDc5ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6
Njk6OQogICAgIDgwICAgIGF0IGV2YWwgY29kZQogICAgIDgxICAgZXZhbCBhdCBbbmF0aXZlIGNv
ZGVdCi0gICAgODIgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo4CisgICAg
ODIgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo5CiAgICAgODMgICAgYXQg
ZXZhbCBjb2RlCiAgICAgODQgICBldmFsIGF0IFtuYXRpdmUgY29kZV0KLSAgICA4NSAgIHNlbGZS
ZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAgICA4NSAgIHNlbGZSZWN1cnNpdmUz
IGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA4NiAgICBhdCBldmFsIGNvZGUKICAgICA4NyAg
IGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDg4ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2st
dHJhY2UuanM6Njk6OAorICAgIDg4ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6
Njk6OQogICAgIDg5ICAgIGF0IGV2YWwgY29kZQogICAgIDkwICAgZXZhbCBhdCBbbmF0aXZlIGNv
ZGVdCi0gICAgOTEgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo4CisgICAg
OTEgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo5CiAgICAgOTIgICAgYXQg
ZXZhbCBjb2RlCiAgICAgOTMgICBldmFsIGF0IFtuYXRpdmUgY29kZV0KLSAgICA5NCAgIHNlbGZS
ZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAgICA5NCAgIHNlbGZSZWN1cnNpdmUz
IGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA5NSAgICBhdCBldmFsIGNvZGUKICAgICA5NiAg
IGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDk3ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2st
dHJhY2UuanM6Njk6OAorICAgIDk3ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6
Njk6OQogICAgIDk4ICAgIGF0IGV2YWwgY29kZQogICAgIDk5ICAgZXZhbCBhdCBbbmF0aXZlIGNv
ZGVdCiAKIC0tPiBTdGFjayBUcmFjZToKLSAgICAwICAgdGhyb3dFcnJvciBhdCBzdGFjay10cmFj
ZS5qczo3NzoxMgotICAgIDEgICB2YWx1ZU9mIGF0IHN0YWNrLXRyYWNlLmpzOjg0OjI2Ci0gICAg
MiAgIGdldHRlcjEgYXQgc3RhY2stdHJhY2UuanM6ODc6MTgKLSAgICAzICAgbm9uSW5saW5lYWJs
ZSBhdCBzdGFjay10cmFjZS5qczoxMTM6MTYKLSAgICA0ICAgaW5saW5lYWJsZSBhdCBzdGFjay10
cmFjZS5qczoxMjE6MjYKLSAgICA1ICAgeWV0QW5vdGhlcklubGluZWRDYWxsIGF0IHN0YWNrLXRy
YWNlLmpzOjEyNjoxNgotICAgIDYgICBtYWtlSW5saW5hYmxlQ2FsbCBhdCBzdGFjay10cmFjZS5q
czoxMzE6MzMKLSAgICA3ICAgZyBhdCBzdGFjay10cmFjZS5qczoxNDA6MzMKKyAgICAwICAgdGhy
b3dFcnJvciBhdCBzdGFjay10cmFjZS5qczo3NzoxMworICAgIDEgICB2YWx1ZU9mIGF0IHN0YWNr
LXRyYWNlLmpzOjg0OjI3CisgICAgMiAgIGdldHRlcjEgYXQgc3RhY2stdHJhY2UuanM6ODc6MTEK
KyAgICAzICAgbm9uSW5saW5lYWJsZSBhdCBzdGFjay10cmFjZS5qczoxMTM6MTcKKyAgICA0ICAg
aW5saW5lYWJsZSBhdCBzdGFjay10cmFjZS5qczoxMjE6MjcKKyAgICA1ICAgeWV0QW5vdGhlcklu
bGluZWRDYWxsIGF0IHN0YWNrLXRyYWNlLmpzOjEyNjoxNworICAgIDYgICBtYWtlSW5saW5hYmxl
Q2FsbCBhdCBzdGFjay10cmFjZS5qczoxMzE6MzQKKyAgICA3ICAgZyBhdCBzdGFjay10cmFjZS5q
czoxNDA6MzQKICAgICA4ICAgbWFwIGF0IFtuYXRpdmUgY29kZV0KLSAgICA5ICAgZ2xvYmFsIGNv
ZGUgYXQgc3RhY2stdHJhY2UuanM6MTQzOjE1CisgICAgOSAgIGdsb2JhbCBjb2RlIGF0IHN0YWNr
LXRyYWNlLmpzOjE0MzoxNgogCiAtLT4gU3RhY2sgVHJhY2U6Ci0gICAgMCAgIHRocm93RXJyb3Ig
YXQgc3RhY2stdHJhY2UuanM6Nzc6MTIKLSAgICAxICAgZ2V0dGVyMiBhdCBzdGFjay10cmFjZS5q
czo5MzozMQotICAgIDIgICBub25JbmxpbmVhYmxlIGF0IHN0YWNrLXRyYWNlLmpzOjExNToxNgot
ICAgIDMgICBpbmxpbmVhYmxlIGF0IHN0YWNrLXRyYWNlLmpzOjEyMToyNgotICAgIDQgICB5ZXRB
bm90aGVySW5saW5lZENhbGwgYXQgc3RhY2stdHJhY2UuanM6MTI2OjE2Ci0gICAgNSAgIG1ha2VJ
bmxpbmFibGVDYWxsIGF0IHN0YWNrLXRyYWNlLmpzOjEzMTozMwotICAgIDYgICBnIGF0IHN0YWNr
LXRyYWNlLmpzOjE0MDozMworICAgIDAgICB0aHJvd0Vycm9yIGF0IHN0YWNrLXRyYWNlLmpzOjc3
OjEzCisgICAgMSAgIGdldHRlcjIgYXQgc3RhY2stdHJhY2UuanM6OTM6MTEKKyAgICAyICAgbm9u
SW5saW5lYWJsZSBhdCBzdGFjay10cmFjZS5qczoxMTU6MTcKKyAgICAzICAgaW5saW5lYWJsZSBh
dCBzdGFjay10cmFjZS5qczoxMjE6MjcKKyAgICA0ICAgeWV0QW5vdGhlcklubGluZWRDYWxsIGF0
IHN0YWNrLXRyYWNlLmpzOjEyNjoxNworICAgIDUgICBtYWtlSW5saW5hYmxlQ2FsbCBhdCBzdGFj
ay10cmFjZS5qczoxMzE6MzQKKyAgICA2ICAgZyBhdCBzdGFjay10cmFjZS5qczoxNDA6MzQKICAg
ICA3ICAgbWFwIGF0IFtuYXRpdmUgY29kZV0KLSAgICA4ICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2st
dHJhY2UuanM6MTQzOjE1CisgICAgOCAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjE0
MzoxNgogCiAtLT4gU3RhY2sgVHJhY2U6Ci0gICAgMCAgIHRocm93RXJyb3IgYXQgc3RhY2stdHJh
Y2UuanM6Nzc6MTIKLSAgICAxICAgZ2V0dGVyMyBhdCBzdGFjay10cmFjZS5qczoxMDU6MjEKLSAg
ICAyICAgbm9uSW5saW5lYWJsZSBhdCBzdGFjay10cmFjZS5qczoxMTc6MTYKLSAgICAzICAgaW5s
aW5lYWJsZSBhdCBzdGFjay10cmFjZS5qczoxMjE6MjYKLSAgICA0ICAgeWV0QW5vdGhlcklubGlu
ZWRDYWxsIGF0IHN0YWNrLXRyYWNlLmpzOjEyNjoxNgotICAgIDUgICBtYWtlSW5saW5hYmxlQ2Fs
bCBhdCBzdGFjay10cmFjZS5qczoxMzE6MzMKLSAgICA2ICAgZyBhdCBzdGFjay10cmFjZS5qczox
NDA6MzMKKyAgICAwICAgdGhyb3dFcnJvciBhdCBzdGFjay10cmFjZS5qczo3NzoxMworICAgIDEg
ICBnZXR0ZXIzIGF0IHN0YWNrLXRyYWNlLmpzOjEwNToxNgorICAgIDIgICBub25JbmxpbmVhYmxl
IGF0IHN0YWNrLXRyYWNlLmpzOjExNzoxNworICAgIDMgICBpbmxpbmVhYmxlIGF0IHN0YWNrLXRy
YWNlLmpzOjEyMToyNworICAgIDQgICB5ZXRBbm90aGVySW5saW5lZENhbGwgYXQgc3RhY2stdHJh
Y2UuanM6MTI2OjE3CisgICAgNSAgIG1ha2VJbmxpbmFibGVDYWxsIGF0IHN0YWNrLXRyYWNlLmpz
OjEzMTozNAorICAgIDYgICBnIGF0IHN0YWNrLXRyYWNlLmpzOjE0MDozNAogICAgIDcgICBtYXAg
YXQgW25hdGl2ZSBjb2RlXQotICAgIDggICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczox
NDM6MTUKKyAgICA4ICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6MTQzOjE2CiAKIC0t
PiBTdGFjayBUcmFjZToKLSAgICAwICAgdGhyb3dFcnJvciBhdCBzdGFjay10cmFjZS5qczo3Nzox
MgotICAgIDEgICB2YWx1ZU9mIGF0IHN0YWNrLXRyYWNlLmpzOjEwMToyNgotICAgIDIgICBnZXR0
ZXIzIGF0IHN0YWNrLXRyYWNlLmpzOjEwNzoyMQotICAgIDMgICBub25JbmxpbmVhYmxlIGF0IHN0
YWNrLXRyYWNlLmpzOjExNzoxNgotICAgIDQgICBpbmxpbmVhYmxlIGF0IHN0YWNrLXRyYWNlLmpz
OjEyMToyNgotICAgIDUgICB5ZXRBbm90aGVySW5saW5lZENhbGwgYXQgc3RhY2stdHJhY2UuanM6
MTI2OjE2Ci0gICAgNiAgIG1ha2VJbmxpbmFibGVDYWxsIGF0IHN0YWNrLXRyYWNlLmpzOjEzMToz
MwotICAgIDcgICBnIGF0IHN0YWNrLXRyYWNlLmpzOjE0MDozMworICAgIDAgICB0aHJvd0Vycm9y
IGF0IHN0YWNrLXRyYWNlLmpzOjc3OjEzCisgICAgMSAgIHZhbHVlT2YgYXQgc3RhY2stdHJhY2Uu
anM6MTAxOjI3CisgICAgMiAgIGdldHRlcjMgYXQgc3RhY2stdHJhY2UuanM6MTA3OjE2CisgICAg
MyAgIG5vbklubGluZWFibGUgYXQgc3RhY2stdHJhY2UuanM6MTE3OjE3CisgICAgNCAgIGlubGlu
ZWFibGUgYXQgc3RhY2stdHJhY2UuanM6MTIxOjI3CisgICAgNSAgIHlldEFub3RoZXJJbmxpbmVk
Q2FsbCBhdCBzdGFjay10cmFjZS5qczoxMjY6MTcKKyAgICA2ICAgbWFrZUlubGluYWJsZUNhbGwg
YXQgc3RhY2stdHJhY2UuanM6MTMxOjM0CisgICAgNyAgIGcgYXQgc3RhY2stdHJhY2UuanM6MTQw
OjM0CiAgICAgOCAgIG1hcCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgOSAgIGdsb2JhbCBjb2RlIGF0
IHN0YWNrLXRyYWNlLmpzOjE0MzoxNQorICAgIDkgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFj
ZS5qczoxNDM6MTYKIAogLS0+IFN0YWNrIFRyYWNlOgotICAgIDAgICBoIGF0IHN0YWNrLXRyYWNl
LmpzOjE1MToxNgorICAgIDAgICBoIGF0IHN0YWNrLXRyYWNlLmpzOjE1MToxNwogICAgIDEgICBt
YXAgYXQgW25hdGl2ZSBjb2RlXQotICAgIDIgICBtYXBUZXN0IGF0IHN0YWNrLXRyYWNlLmpzOjE1
ODo5Ci0gICAgMyAgIG1hcFRlc3REcml2ZXIgYXQgc3RhY2stdHJhY2UuanM6MTY0OjE1Ci0gICAg
NCAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjE2OToxNworICAgIDIgICBtYXBUZXN0
IGF0IHN0YWNrLXRyYWNlLmpzOjE1ODoxMAorICAgIDMgICBtYXBUZXN0RHJpdmVyIGF0IHN0YWNr
LXRyYWNlLmpzOjE2NDoxNgorICAgIDQgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczox
Njk6MTgKIAogLS0+IFN0YWNrIFRyYWNlOgogICAgIDAgICBtYXAgYXQgW25hdGl2ZSBjb2RlXQot
ICAgIDEgICBoIGF0IHN0YWNrLXRyYWNlLmpzOjE1MzoyMAorICAgIDEgICBoIGF0IHN0YWNrLXRy
YWNlLmpzOjE1MzoyMQogICAgIDIgICBtYXAgYXQgW25hdGl2ZSBjb2RlXQotICAgIDMgICBtYXBU
ZXN0IGF0IHN0YWNrLXRyYWNlLmpzOjE1ODo5Ci0gICAgNCAgIG1hcFRlc3REcml2ZXIgYXQgc3Rh
Y2stdHJhY2UuanM6MTY0OjE1Ci0gICAgNSAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpz
OjE3NToxNworICAgIDMgICBtYXBUZXN0IGF0IHN0YWNrLXRyYWNlLmpzOjE1ODoxMAorICAgIDQg
ICBtYXBUZXN0RHJpdmVyIGF0IHN0YWNrLXRyYWNlLmpzOjE2NDoxNgorICAgIDUgICBnbG9iYWwg
Y29kZSBhdCBzdGFjay10cmFjZS5qczoxNzU6MTgKIAogLS0+IFN0YWNrIFRyYWNlOgotICAgIDAg
ICB0aHJvd0Vycm9yIGF0IHN0YWNrLXRyYWNlLmpzOjc3OjEyCi0gICAgMSAgIGRmZ0Z1bmN0aW9u
IGF0IHN0YWNrLXRyYWNlLmpzOjE4NDoxOAorICAgIDAgICB0aHJvd0Vycm9yIGF0IHN0YWNrLXRy
YWNlLmpzOjc3OjEzCisgICAgMSAgIGRmZ0Z1bmN0aW9uIGF0IHN0YWNrLXRyYWNlLmpzOjE4NDox
OQogICAgIDIgICBtYXAgYXQgW25hdGl2ZSBjb2RlXQotICAgIDMgICBnbG9iYWwgY29kZSBhdCBz
dGFjay10cmFjZS5qczoxOTM6MTcKKyAgICAzICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2Uu
anM6MTkzOjE4CiAKIC0tPiBTdGFjayBUcmFjZToKLSAgICAwICAgdGhyb3dFcnJvciBhdCBzdGFj
ay10cmFjZS5qczo3NzoxMgotICAgIDEgICBkZmdGdW5jdGlvbiBhdCBzdGFjay10cmFjZS5qczox
ODQ6MTgKLSAgICAyICAgZiBhdCBzdGFjay10cmFjZS5qczoyMDI6OQotICAgIDMgICBnbG9iYWwg
Y29kZSBhdCBzdGFjay10cmFjZS5qczoyMDg6NQotCi0tLT4gU3RhY2sgVHJhY2U6Ci0gICAgMCAg
IHdpbGxUaHJvdyBhdCBzdGFjay10cmFjZS5qczoyNDY6MjAKLSAgICAxICAgZGZnMSBhdCBzdGFj
ay10cmFjZS5qczoyNTc6MTIKLSAgICAyICAgZGZnMiBhdCBzdGFjay10cmFjZS5qczoyNjE6OAot
ICAgIDMgICBkZmczIGF0IHN0YWNrLXRyYWNlLmpzOjI2NTo4Ci0gICAgNCAgIGRmZ1Rlc3QgYXQg
c3RhY2stdHJhY2UuanM6MjMxOjEzCi0gICAgNSAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNl
LmpzOjMwNDo3Ci0KLS0tPiBTdGFjayBUcmFjZToKLSAgICAwICAgd2lsbFRocm93RnVuYyBhdCBz
dGFjay10cmFjZS5qczoyNTE6NjEKLSAgICAxICAgZGZnNCBhdCBzdGFjay10cmFjZS5qczoyNjk6
MjYKLSAgICAyICAgZGZnNSBhdCBzdGFjay10cmFjZS5qczoyNzM6OAotICAgIDMgICBkZmc2IGF0
IHN0YWNrLXRyYWNlLmpzOjI3Nzo4Ci0gICAgNCAgIGRmZ1Rlc3QgYXQgc3RhY2stdHJhY2UuanM6
MjMxOjEzCi0gICAgNSAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjMwNTo3Ci0KLS0t
PiBTdGFjayBUcmFjZToKLSAgICAwICAgaW5saW5lYWJsZVRocm93IGF0IHN0YWNrLXRyYWNlLmpz
OjI0MDozMgotICAgIDEgICB3aWxsVGhyb3dFdmVudHVhbGx5IGF0IHN0YWNrLXRyYWNlLmpzOjI0
OToyMwotICAgIDIgICBkZmc3IGF0IHN0YWNrLXRyYWNlLmpzOjI4MToxMgotICAgIDMgICBkZmc4
IGF0IHN0YWNrLXRyYWNlLmpzOjI4NTo4Ci0gICAgNCAgIGRmZzkgYXQgc3RhY2stdHJhY2UuanM6
Mjg5OjgKLSAgICA1ICAgZGZnVGVzdCBhdCBzdGFjay10cmFjZS5qczoyMzE6MTMKLSAgICA2ICAg
Z2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6MzA2OjcKLQotLS0+IFN0YWNrIFRyYWNlOgot
ICAgIDAgICBpbmxpbmVhYmxlVGhyb3cgYXQgc3RhY2stdHJhY2UuanM6MjQwOjMyCi0gICAgMSAg
IHdpbGxUaHJvd0V2ZW50dWFsbHlGdW5jIGF0IHN0YWNrLXRyYWNlLmpzOjI1Mjo1OAotICAgIDIg
ICBkZmdhIGF0IHN0YWNrLXRyYWNlLmpzOjI5MzozNgotICAgIDMgICBkZmdiIGF0IHN0YWNrLXRy
YWNlLmpzOjI5Nzo4Ci0gICAgNCAgIGRmZ2MgYXQgc3RhY2stdHJhY2UuanM6MzAxOjgKLSAgICA1
ICAgZGZnVGVzdCBhdCBzdGFjay10cmFjZS5qczoyMzE6MTMKLSAgICA2ICAgZ2xvYmFsIGNvZGUg
YXQgc3RhY2stdHJhY2UuanM6MzA3OjcKKyAgICAwICAgdGhyb3dFcnJvciBhdCBzdGFjay10cmFj
ZS5qczo3NzoxMworICAgIDEgICBkZmdGdW5jdGlvbiBhdCBzdGFjay10cmFjZS5qczoxODQ6MTkK
KyAgICAyICAgZiBhdCBzdGFjay10cmFjZS5qczoyMDI6MTAKKyAgICAzICAgZ2xvYmFsIGNvZGUg
YXQgc3RhY2stdHJhY2UuanM6MjA4OjYKKworLS0+IFN0YWNrIFRyYWNlOgorICAgIDAgICB3aWxs
VGhyb3cgYXQgc3RhY2stdHJhY2UuanM6MjQ2OjIxCisgICAgMSAgIGRmZzEgYXQgc3RhY2stdHJh
Y2UuanM6MjU3OjEzCisgICAgMiAgIGRmZzIgYXQgc3RhY2stdHJhY2UuanM6MjYxOjkKKyAgICAz
ICAgZGZnMyBhdCBzdGFjay10cmFjZS5qczoyNjU6OQorICAgIDQgICBkZmdUZXN0IGF0IHN0YWNr
LXRyYWNlLmpzOjIzMToxNAorICAgIDUgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczoz
MDQ6OAorCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIHdpbGxUaHJvd0Z1bmMgYXQgc3RhY2st
dHJhY2UuanM6MjUxOjYyCisgICAgMSAgIGRmZzQgYXQgc3RhY2stdHJhY2UuanM6MjY5OjI3Cisg
ICAgMiAgIGRmZzUgYXQgc3RhY2stdHJhY2UuanM6MjczOjkKKyAgICAzICAgZGZnNiBhdCBzdGFj
ay10cmFjZS5qczoyNzc6OQorICAgIDQgICBkZmdUZXN0IGF0IHN0YWNrLXRyYWNlLmpzOjIzMTox
NAorICAgIDUgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczozMDU6OAorCistLT4gU3Rh
Y2sgVHJhY2U6CisgICAgMCAgIGlubGluZWFibGVUaHJvdyBhdCBzdGFjay10cmFjZS5qczoyNDA6
MzMKKyAgICAxICAgd2lsbFRocm93RXZlbnR1YWxseSBhdCBzdGFjay10cmFjZS5qczoyNDk6MjQK
KyAgICAyICAgZGZnNyBhdCBzdGFjay10cmFjZS5qczoyODE6MTMKKyAgICAzICAgZGZnOCBhdCBz
dGFjay10cmFjZS5qczoyODU6OQorICAgIDQgICBkZmc5IGF0IHN0YWNrLXRyYWNlLmpzOjI4OTo5
CisgICAgNSAgIGRmZ1Rlc3QgYXQgc3RhY2stdHJhY2UuanM6MjMxOjE0CisgICAgNiAgIGdsb2Jh
bCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjMwNjo4CisKKy0tPiBTdGFjayBUcmFjZToKKyAgICAw
ICAgaW5saW5lYWJsZVRocm93IGF0IHN0YWNrLXRyYWNlLmpzOjI0MDozMworICAgIDEgICB3aWxs
VGhyb3dFdmVudHVhbGx5RnVuYyBhdCBzdGFjay10cmFjZS5qczoyNTI6NTkKKyAgICAyICAgZGZn
YSBhdCBzdGFjay10cmFjZS5qczoyOTM6MzcKKyAgICAzICAgZGZnYiBhdCBzdGFjay10cmFjZS5q
czoyOTc6OQorICAgIDQgICBkZmdjIGF0IHN0YWNrLXRyYWNlLmpzOjMwMTo5CisgICAgNSAgIGRm
Z1Rlc3QgYXQgc3RhY2stdHJhY2UuanM6MjMxOjE0CisgICAgNiAgIGdsb2JhbCBjb2RlIGF0IHN0
YWNrLXRyYWNlLmpzOjMwNzo4CiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQt
dGVzdHMvbGluZS1jb2x1bW4tbnVtYmVycy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2pzL3NjcmlwdC10ZXN0cy9saW5lLWNvbHVtbi1udW1iZXJzLmpzCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvbGluZS1jb2x1bW4tbnVtYmVycy5q
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNCBAQAorLy8gQ2FzZSAxOiBUaHJvdyBhbmQg
cHJpbnQgc3RhY2s6Cit0ZXN0SWQrKzsKKyAgICB0cnkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSBj
YXRjaCAoZSkgeyBwcmludFN0YWNrKGUuc3RhY2spOyB9CisKKy8vIENhc2UgMjogU2FtZSBwcm9n
cmFtIGFzIENhc2UgMSBidXQgaW5kZW50ZWQuCit0ZXN0SWQrKzsKKyAgICAgICAgdHJ5IHsgdGhy
b3cgbmV3IEVycm9yKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLnN0YWNrKTsgfQorCisv
LyBDYXNlIDM6IFNhbWUgcHJvZ3JhbSBpbmRlbnRlZCBvbiB0aGUgc2FtZSBsaW5lLgordGVzdElk
Kys7Cit0cnkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUu
c3RhY2spOyB9ICAgdHJ5IHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRT
dGFjayhlLnN0YWNrKTsgfQorCisvLyBDYXNlIDQ6IFN0YWNrIHdpdGggMiBmdW5jdGlvbiBmcmFt
ZXMuCit0ZXN0SWQrKzsKK3RyeSB7CisgICAgZnVuY3Rpb24gZG9UaHJvdzRiKCkgeyB0aHJvdyBu
ZXcgRXJyb3IoKTsgfQorICAgIGRvVGhyb3c0YigpOworfSBjYXRjaChlKSB7CisgICAgcHJpbnRT
dGFjayhlLnN0YWNrKTsKK30KKworLy8gQ2FzZSA1OiBGdW5jdGlvbiB3cmFwcGluZyBhIEZ1bmN0
aW9uLgordGVzdElkKys7CitmdW5jdGlvbiBkb1Rocm93NWIoKSB7IHRyeSB7IGZ1bmN0aW9uIGlu
bmVyRnVuYygpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gaW5uZXJGdW5jKCk7IH0gY2F0Y2ggKGUp
IHsgcHJpbnRTdGFjayhlLnN0YWNrKTsgfX07IGRvVGhyb3c1YigpOworCisvLyBDYXNlIDY6IFNh
bWUgaW5uZXIgZnVuY3Rpb24gYm9keSBhcyBDYXNlIDUuCit0ZXN0SWQrKzsKK2Z1bmN0aW9uIGRv
VGhyb3c2YigpIHsgdHJ5IHsgZnVuY3Rpb24gaW5uZXJGdW5jKCkgeyB0aHJvdyBuZXcgRXJyb3Io
KTsgfSBpbm5lckZ1bmMoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuc3RhY2spOyB9fTsg
ZG9UaHJvdzZiKCk7CisKKy8vIENhc2UgNzogQ2FzZSAxIHJlZG9uZSB3aXRoIGEgRnVuY3Rpb24g
RXhwcmVzc2lvbi4KK3Rlc3RJZCsrOworICAgIHRyeSB7IChmdW5jdGlvbiAoKSB7IHRocm93IG5l
dyBFcnJvcigpOyB9KSgpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH0KKwor
Ly8gQ2FzZSA4OiBDYXNlIDIgcmVkb25lIHdpdGggYSBGdW5jdGlvbiBFeHByZXNzaW9uLgordGVz
dElkKys7CisgICAgICAgIHRyeSB7IChmdW5jdGlvbiAoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9
KSgpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH0KKworLy8gQ2FzZSA5OiBD
YXNlIDMgcmVkb25lIHdpdGggYSBGdW5jdGlvbiBFeHByZXNzaW9uLgordGVzdElkKys7Cit0cnkg
eyAoZnVuY3Rpb24gKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSkoKTsgfSBjYXRjaCAoZSkgeyBw
cmludFN0YWNrKGUuc3RhY2spOyB9ICAgdHJ5IHsgKGZ1bmN0aW9uICgpIHsgdGhyb3cgbmV3IEVy
cm9yKCk7IH0pKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLnN0YWNrKTsgfQorCisvLyBD
YXNlIDEwOiBGdW5jdGlvbiBFeHByZXNzaW9uIGFzIG11bHRpcGxlIGxpbmVzLgordGVzdElkKys7
Cit0cnkgeworICAgIChmdW5jdGlvbiAoKSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOwor
ICAgICB9KSgpOworfSBjYXRjaChlKSB7CisgICAgcHJpbnRTdGFjayhlLnN0YWNrKTsKK30KKwor
Ly8gQ2FzZSAxMTogQ2FzZSA0IHJlZG9uZSB3aXRoIGEgRnVuY3Rpb24gd3JhcHBpbmcgRnVuY3Rp
b24gRXhwcmVzc2lvbi4KK3Rlc3RJZCsrOwordHJ5IHsKKyAgICBmdW5jdGlvbiBkb1Rocm93MTFi
KCkgeworICAgICAgICAoZnVuY3Rpb24gKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSkoKTsKKyAg
ICB9CisgICAgZG9UaHJvdzExYigpOworfSBjYXRjaChlKSB7CisgICAgcHJpbnRTdGFjayhlLnN0
YWNrKTsKK30KKworLy8gQ2FzZSAxMjogQSBGdW5jdGlvbiBFeHByZXNzaW9uIHdyYXBwaW5nIGEg
RnVuY3Rpb24gRXhwcmVzc2lvbi4KK3Rlc3RJZCsrOwordHJ5IHsgKGZ1bmN0aW9uICgpIHsoZnVu
Y3Rpb24gKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSkoKTt9KSgpOyB9IGNhdGNoIChlKSB7IHBy
aW50U3RhY2soZS5zdGFjayk7IH0KKworLy8gQ2FzZSAxMzogU2FtZSBmdW5jdGlvbiBib2R5IGFz
IENhc2UgMTIuCit0ZXN0SWQrKzsKK3RyeSB7IChmdW5jdGlvbiAoKSB7KGZ1bmN0aW9uICgpIHsg
dGhyb3cgbmV3IEVycm9yKCk7IH0pKCk7fSkoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUu
c3RhY2spOyB9CisKKy8vIENhc2UgMTQ6IEZ1bmN0aW9uIEV4cHJlc3Npb24gaW4gYSBGdW5jdGlv
biBFeHByZXNzaW9uIGluIGEgRnVuY3Rpb24uCit0ZXN0SWQrKzsKK3RyeSB7IGZ1bmN0aW9uIGRv
VGhyb3cxNGIoKSB7KGZ1bmN0aW9uICgpIHsgKGZ1bmN0aW9uICgpIHsgdGhyb3cgbmV3IEVycm9y
KCk7IH0pKCk7fSkoKTt9IGRvVGhyb3cxNGIoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUu
c3RhY2spOyB9CisKKy8vIENhc2UgMTU6IFRocm93IGluIGFuIEV2YWwuCit0ZXN0SWQrKzsKK2V2
YWwoInRyeSB7IHRocm93IG5ldyBFcnJvcigpOyB9IGNhdGNoKGUpIHsgcHJpbnRTdGFjayhlLnN0
YWNrKTsgfSIpOworCisvLyBDYXNlIDE2OiBNdWx0aXBsZSBsaW5lcyBpbiBhbiBFdmFsLgordGVz
dElkKys7CitldmFsKCJcbiIgKworInRyeSB7XG4iICsKKyIgICAgZnVuY3Rpb24gZG9UaHJvdzE1
YigpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH1cbiIgKworIiAgICBkb1Rocm93MTViKCk7XG4iICsK
KyJ9IGNhdGNoKGUpIHtcbiIgKworIiAgICBwcmludFN0YWNrKGUuc3RhY2spO1xuIiArCisifVxu
IiArCisiIik7CisKKy8vIENhc2UgMTc6IEZ1bmN0aW9uIEV4cHJlc3Npb24gaW4gYW4gRXZhbC4K
K3Rlc3RJZCsrOworZXZhbCgidHJ5IHsgKGZ1bmN0aW9uICgpIHsgdGhyb3cgbmV3IEVycm9yKCk7
IH0pKCk7IH0gY2F0Y2goZSkgeyBwcmludFN0YWNrKGUuc3RhY2spOyB9Iik7CisKKy8vIENhc2Ug
MTg6IE11bHRpcGxlIGxpbmVzIHdpdGggYSBGdW5jdGlvbiBFeHByZXNzaW9uIGluIGFuIEV2YWwu
Cit0ZXN0SWQrKzsKK2V2YWwoIlxuIiArCisidHJ5IHtcbiIgKworIiAgICAoZnVuY3Rpb24gKCkg
eyB0aHJvdyBuZXcgRXJyb3IoKTsgfSkoKTtcbiIgKworIn0gY2F0Y2goZSkge1xuIiArCisiICAg
IHByaW50U3RhY2soZS5zdGFjayk7XG4iICsKKyJ9XG4iICsKKyIiKTsKKworc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbnNv
bGUtdXJsLWxpbmUtY29sdW1uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9pbnNwZWN0b3IvY29uc29sZS9jb25zb2xlLXVybC1saW5lLWNvbHVtbi1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDE1MTkyMCkKKysrIExheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbnNv
bGUtdXJsLWxpbmUtY29sdW1uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOCwxMiAr
OCwxMiBAQCBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTU6IHdhcm4KIENPTlNPTEUgTUVTU0FHRTog
bGluZSAxNjogYXNzZXJ0CiBUZXN0cyB0aGF0IHVybCwgbGluZSwgYW5kIGNvbHVtbiBwcm9wZXJ0
aWVzIGFyZSBkZWZpbmVkIGZvciBjb25zb2xlIGZ1bmN0aW9ucy4KIAotTWVzc2FnZSBhdCBsb2Nh
dGlvbjogY29uc29sZS11cmwtbGluZS1jb2x1bW4uaHRtbDo5OjE1Ci1NZXNzYWdlIGF0IGxvY2F0
aW9uOiBjb25zb2xlLXVybC1saW5lLWNvbHVtbi5odG1sOjEwOjE1Ci1NZXNzYWdlIGF0IGxvY2F0
aW9uOiBjb25zb2xlLXVybC1saW5lLWNvbHVtbi5odG1sOjExOjE1Ci1NZXNzYWdlIGF0IGxvY2F0
aW9uOiBjb25zb2xlLXVybC1saW5lLWNvbHVtbi5odG1sOjE0OjE3Ci1NZXNzYWdlIGF0IGxvY2F0
aW9uOiBjb25zb2xlLXVybC1saW5lLWNvbHVtbi5odG1sOjE0OjM5Ci1NZXNzYWdlIGF0IGxvY2F0
aW9uOiBjb25zb2xlLXVybC1saW5lLWNvbHVtbi5odG1sOjE1OjE2Ci1NZXNzYWdlIGF0IGxvY2F0
aW9uOiBjb25zb2xlLXVybC1saW5lLWNvbHVtbi5odG1sOjE1OjM4Ci1NZXNzYWdlIGF0IGxvY2F0
aW9uOiBjb25zb2xlLXVybC1saW5lLWNvbHVtbi5odG1sOjE2OjE4CitNZXNzYWdlIGF0IGxvY2F0
aW9uOiBjb25zb2xlLXVybC1saW5lLWNvbHVtbi5odG1sOjk6MTYKK01lc3NhZ2UgYXQgbG9jYXRp
b246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTA6MTYKK01lc3NhZ2UgYXQgbG9jYXRp
b246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTE6MTYKK01lc3NhZ2UgYXQgbG9jYXRp
b246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTQ6MTgKK01lc3NhZ2UgYXQgbG9jYXRp
b246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTQ6NDAKK01lc3NhZ2UgYXQgbG9jYXRp
b246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTU6MTcKK01lc3NhZ2UgYXQgbG9jYXRp
b246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTU6MzkKK01lc3NhZ2UgYXQgbG9jYXRp
b246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTY6MTkKIAo=
</data>
<flag name="commit-queue"
          id="227944"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206278</attachid>
            <date>2013-07-08 15:57:59 -0700</date>
            <delta_ts>2013-07-08 16:05:18 -0700</delta_ts>
            <desc>patch 2</desc>
            <filename>bug-118481.patch</filename>
            <type>text/plain</type>
            <size>361942</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUyNDY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxMCBA
QAorMjAxMy0wNy0wOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
Rml4IDMwJSBKU0JlbmNoIHJlZ3Jlc3Npb24gKGNhdXNlZCBieSBhZGRpbmcgY29sdW1uIG51bWJl
cnMgdG8gc3RhY2sgdHJhY2VzKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExODQ4MS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBQcmV2aW91c2x5LCB3ZSBhbHJlYWR5IGNhcHR1cmUgRXhwcmVzc2lvblJh
bmdlSW5mbyB0aGF0IHByb3ZpZGVzIGEgZGl2b3QgZm9yCisgICAgICAgIGVhY2ggYnl0ZWNvZGUg
dGhhdCBjYW4gcG90ZW50aWFsbHkgdGhyb3cgYW4gZXhjZXB0aW9uIChhbmQgdGhlcmVmb3JlIGdl
bmVyYXRlCisgICAgICAgIGEgc3RhY2sgdHJhY2UpLiBPbiBmaXJzdCBhdHRlbXB0IHRvIGNvbXB1
dGUgY29sdW1uIG51bWJlcnMsIHdlIHRoZW4gZG8gYSB3YWxrCisgICAgICAgIG9mIHRoZSBzb3Vy
Y2Ugc3RyaW5nIHRvIHJlY29yZCBhbGwgbGluZSBzdGFydCBwb3NpdGlvbnMgaW4gYSB0YWJsZSBh
c3NvY2lhdGVkCisgICAgICAgIHdpdGggdGhlIFNvdXJjZVByb3ZpZGVyLiBUaGUgY29sdW1uIG51
bWJlciBjYW4gdGhlbiBiZSBjb21wdXRlZCBhcworICAgICAgICAgICAgZGl2b3QgLSBsaW5lU3Rh
cnRGb3IoYnl0ZWNvZGVPZmZzZXQpLgorCisgICAgICAgIFRoZSBjb21wdXRhdGlvbiBvZiB0aGlz
IGxpbmVTdGFydHMgdGFibGUgaXMgdGhlIHNvdXJjZSBvZiB0aGUgMzAlIEpTQmVuY2gKKyAgICAg
ICAgcGVyZm9ybWFuY2UgcmVncmVzc2lvbi4KKworICAgICAgICBUaGUgbmV3IGNvZGUgbm93IHJl
Y29yZHMgbGluZVN0YXJ0cyBhcyB0aGUgbGV4ZXIgYW5kIHBhcnNlciBzY2FucyB0aGUgc291cmNl
CisgICAgICAgIGNvZGUuIFRoZXNlIGxpbmVTdGFydHMgYXJlIHRoZW4gdXNlZCB0byBjb21wdXRl
IHRoZSBjb2x1bW4gbnVtYmVyIGZvciB0aGUKKyAgICAgICAgZ2l2ZW4gZGl2b3QsIGFuZCBzdG9y
ZWQgaW4gdGhlIEV4cHJlc3Npb25SYW5nZUluZm8uIFNpbWlsYXJseSwgd2UgYWxzbyBjYXB0dXJl
CisgICAgICAgIHRoZSBsaW5lIG51bWJlciBhdCB0aGUgZGl2b3QgcG9pbnQgYW5kIHN0b3JlIHRo
YXQgaW4gdGhlIEV4cHJlc3Npb25SYW5nZUluZm8uCisgICAgICAgIEhlbmNlLCB0byBsb29rIHVw
IGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzLCB3ZSBub3cgbG9va3VwIHRoZSBFeHByZXNzaW9uUmFu
Z2VJbmZvCisgICAgICAgIGZvciB0aGUgYnl0ZWNvZGVPZmZzZXQsIGFuZCB0aGVuIGNvbXB1dGUg
dGhlIGxpbmUgYW5kIGNvbHVtbiBmcm9tIHRoZSB2YWx1ZXMKKyAgICAgICAgc3RvcmVkIGluIHRo
ZSBleHByZXNzaW9uIGluZm8uCisKKyAgICAgICAgVGhlIHN0cmF0ZWd5OgorICAgICAgICAxLiBX
ZSBkbyBub3Qgd2FudCB0byBwZXJ0dXJiIHRoZSBsZXhlciBhbmQgcGFyc2VyIGFzIG1pbmltYWxs
eSBhcyBwb3NzaWJsZS4KKyAgICAgICAgICAgU3BlY2lmaWNhbGx5LCB0aGUgY2hhbmdlcyBhZGRl
ZCBzaG91bGQgbm90IGNoYW5nZSBob3cgaXQgc2NhbnMgY29kZSwgYW5kCisgICAgICAgICAgIGdl
bmVyYXRlIGJ5dGVjb2RlLgorICAgICAgICAyLiBXZSByZWdhcmQgdGhlIGRpdm90IGFzIHRoZSBz
b3VyY2UgY2hhcmFjdGVyIHBvc2l0aW9uIHdlJ3JlIGFyZSBpbnRlcmVzdGVkCisgICAgICAgICAg
IGluLiBBcyBzdWNoLCB3ZSdsbCBjYXB0dXJlIGxpbmUgYW5kIGxpbmVTdGFydCAoZm9yIGNvbHVt
bikgYXQgdGhlIHBvaW50CisgICAgICAgICAgIHdoZW4gd2UgY2FwdHVyZSB0aGUgZGl2b3QgaW5m
b3JtYXRpb24uIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSAzIHZhbHVlcyBhcmUKKyAgICAgICAgICAg
Y29uc2lzdGVudC4KKworICAgICAgICBIb3cgdGhlIGNoYW5nZSBpcyBkb25lOgorICAgICAgICAx
LiBDaGFuZ2UgdGhlIGxleGVyIHRvIHRyYWNrIGxpbmVTdGFydHMuCisgICAgICAgIDIuIENoYW5n
ZSB0aGUgcGFyc2VyIHRvIGNhcHR1cmUgbGluZSBhbmQgbGluZVN0YXJ0cyBhdCB0aGUgcG9pbnQg
b2YgY2FwdHVyaW5nCisgICAgICAgICAgIGRpdm90cy4KKyAgICAgICAgMy4gQ2hhbmdlIHRoZSBw
YXJzZXIgYW5kIGFzc29jaWF0ZWQgY29kZSB0byBwbHVtYiB0aGVzZSB2YWx1ZXMgYWxsIHRoZSB3
YXkgdG8KKyAgICAgICAgICAgdGhlIHBvaW50IHRoYXQgdGhlIGNvcnJlc3BvaW5kaW5nIEV4cHJl
c3Npb25SYW5nZUluZm8gaXMgZW1pdHRlZC4KKyAgICAgICAgNC4gUHJvcGFnYXRlIGFuZCByZWNv
cmQgU291cmNlQ29kZSBmaXJzdExpbmUgYW5kIGZpcnN0TGluZUNvbHVtbk9mZnNldCB0byB0aGUK
KyAgICAgICAgICAgdGhlIG5lY2Vzc2FyeSBwbGFjZXMgc28gdGhhdCB3ZSBjYW4gYWRkIHRoZW0g
YXMgbmVlZGVkIHdoZW4gcmVpZnlpbmcKKyAgICAgICAgICAgVW5saW5rZUNvZGVCbG9ja3MgaW50
byBDb2RlQmxvY2tzLgorICAgICAgICA1LiBDb21wcmVzcyB0aGUgbGluZSBhbmQgY29sdW1uIG51
bWJlciB2YWx1ZXMgaW4gdGhlIEV4cHJlc3Npb25SYW5nZUluZm8uIEluCisgICAgICAgICAgIHBy
YWN0aWNlLCB3ZSBzZWxkb20gaGF2ZSBib3RoIGxhcmdlIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJz
LiBIZW5jZSwgd2UgY2FuCisgICAgICAgICAgIGVuY29kZSBib3RoIGluIGFuIHVpbnQzMl90IG1v
c3Qgb2YgdGhlIHRpbWUuIEZvciB0aGUgdGltZXMgd2hlbiB3ZSBlbmNvdW50ZXIKKyAgICAgICAg
ICAgYm90aCBsYXJnZSBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycywgd2UgaGF2ZSBhIGZhbGxiYWNr
IHRvIHN0b3JlIHRoZSAiZmF0IgorICAgICAgICAgICBwb3NpdGlvbiBpbmZvLgorICAgICAgICA2
LiBFbWl0IGFuIEV4cHJlc3Npb25SYW5nZUluZm8gZm9yIFVuYXJ5T3Agbm9kZXMgdG8gZ2V0IG1v
cmUgbGluZSBhbmQgY29sdW1uCisgICAgICAgICAgIG51bWJlciBjb3ZlcmFnZS4KKyAgICAgICAg
Ny4gQ2hhbmdlIHRoZSBpbnRlcnByZXRlciB0byB1c2UgdGhlIG5ldyB3YXkgb2YgY29tcHV0aW5n
IGxpbmUgYW5kIGNvbHVtbi4KKyAgICAgICAgOC4gRGVsZXRlIG9sZCBsaW5lIGFuZCBjb2x1bW4g
Y29tcHV0YXRpb24gY29kZSB0aGF0IGlzIG5vdyB1bnVzZWQuCisKKyAgICAgICAgTWlzYyBkZXRh
aWxzOgorICAgICAgICAtIHRoZSBvbGQgbGV4ZXIgd2FzIHRyYWNraW5nIGJvdGggYSBzdGFydE9m
ZnNldCBhbmQgY2hhclBvc2l0aW9uIHdoZXJlCisgICAgICAgICAgY2hhclBvc2l0aW9uIGVxdWFs
cyBzdGFydE9mZnNldCAtIFNvdXJjZUNvZGUuc3RhcnRPZmZzZXQuIFdlIG5vdyB1c2UKKyAgICAg
ICAgICBzdGFydE9mZnNldCBleGNsdXNpdmVseSB0aHJvdWdob3V0IHRoZSBzeXN0ZW0gdG8gZm9y
IGNvbnNpc3RlbmN5LgorICAgICAgICAgIEFsbCBvZmZzZXQgdmFsdWVzIChpbmNsdWRpbmcgbGlu
ZVN0YXJ0KSBhcmUgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZQorICAgICAgICAgIFNvdXJj
ZVByb3ZpZGVyIHN0cmluZy4gVGhlc2UgdmFsdWVzIHdpbGwgYmUgY29udmVydGVkIHRvIGJlIHJl
bGF0aXZlIHRvCisgICAgICAgICAgdGhlIFNvdXJjZUNvZGUuc3RhcnRPZmZzZXQgYXQgdGhlIHZl
cnkgbGFzdCBtaW51dGUgaS5lLiB3aGVuIHRoZSBkaXZvdAorICAgICAgICAgIGlzIHN0b3JlZCBp
bnRvIHRoZSBFeHByZXNzaW9uUmFuZ2VJbmZvLgorCisgICAgICAgICAgVGhpcyBjaGFuZ2UgdG8g
dXNlIHRoZSBzYW1lIG9mZnNldCBzeXN0ZW0gZXZlcnl3aGVyZSByZWR1Y2VzIGNvbmZ1c2lvbgor
ICAgICAgICAgIGZyb20gaGF2aW5nIHRvIGNvbnZlcnQgYmFjayBhbmQgZm9ydGggYmV0d2VlbiB0
aGUgMiBzeXN0ZW1zLiBJdCBhbHNvCisgICAgICAgICAgZW5hYmxlcyBhIGxvdCBvZiBhc3NlcnRp
b25zIHRvIGJlIHVzZWQuCisKKyAgICAgICAgLSBBbHNvIGZpeGVkIHNvbWUgYnVncyBpbiB3aGF0
IGRpdm90IHBvc2l0aW9ucyB0byBiZSB1c2VkLiBGb3IgZXhhbXBsZSwKKyAgICAgICAgICBib3Ro
IEV2YWwgYW5kIEZ1bmN0aW9uIGV4cHJlc3Npb25zIHdpbGwgcHJldmlvdXNseSB1c2UgY29sdW1u
IG51bWJlcnMKKyAgICAgICAgICBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZXhwcmVzc2lvbiBidXQg
dXNlIHRoZSBsaW5lIG51bWJlciBhdCB0aGUgZW5kIG9mCisgICAgICAgICAgdGhlIGV4cHJlc3Np
b24uIFRoaXMgaXMgbm93IGZpeGVkIHRvIGJlIGNvbnNpc3RlbnRseSBlaXRoZXIgdXNpbmcgdGhl
CisgICAgICAgICAgc3RhcnQgb3IgZW5kIHBvc2l0aW9ucyBhcyBhcHByb3ByaWF0ZSwgYnV0IG5v
dCBhIG1peCBvZiBsaW5lIGFuZCBjb2x1bW5zCisgICAgICAgICAgZnJvbSBib3RoLgorCisgICAg
ICAgIC0gV2h5IHVzZSBpbnRzIGluc3RlYWQgb2YgdW5zaWduZWRzIGZvciBvZmZzZXRzIGFuZCBs
aW5lU3RhcnRzIGluc2lkZSB0aGUKKyAgICAgICAgICBsZXhlciBhbmQgcGFyc2VyPworICAgICAg
ICAgIFNvbWUgdGVzdHMgKGUuZy4gZmFzdC9qcy9jYWxsLWJhc2UtcmVzb2x1dGlvbi5odG1sIGFu
ZAorICAgICAgICAgIGZhc3QvanMvZXZhbC1jcm9zcy13aW5kb3cuaHRtbCkgaGFzIHNob3duIHRo
YXQgbGluZVN0YXJ0IG9mZnNldHMgY2FuIGJlCisgICAgICAgICAgcHJpb3IgdG8gdGhlIFNvdXJj
ZUNvZGUuc3RhcnRPZmZzZXQuIEtlZXBpbmcgdGhlIGxleGVyIG9mZnNldHMgYXMgaW50cworICAg
ICAgICAgIHNpbXBsaWZpZXMgY29tcHV0YXRpb25zIGFuZCBtYWtlcyBpdCBlYXNpZXIgdG8gbWFp
bnRhaW4gdGhlIGFzc2VydGlvbnMKKyAgICAgICAgICB0aGF0IChzdGFydE9mZnNldCA+PSBsaW5l
U3RhcnRPZmZzZXQpLgorCisgICAgICAgICAgSG93ZXZlciwgY29sdW1uIGFuZCBsaW5lIG51bWJl
cnMgYXJlIGFsd2F5cyB1bnNpZ25lZCB3aGVuIHdlIHB1Ymxpc2gKKyAgICAgICAgICB0aGVtIHRv
IHRoZSBFeHByZXNzaW9uUmFuZ2VJbmZvLiBUaGUgaW50cyBhcmUgb25seSB1c2VkIGluc2lkZSB0
aGUKKyAgICAgICAgICBsZXhlciBhbmQgcGFyc2VyIC4uLiB3ZWxsLCBhbmQgYnl0ZWNvZGUgZ2Vu
ZXJhdG9yLgorCisgICAgICAgIC0gRm9yIGFsbCBjYXNlcywgbGluZVN0YXJ0IGlzIGFsd2F5cyBj
YXB0dXJlZCB3aGVyZSB0aGUgZGl2b3QgaXMgY2FwdHVyZWQuCisgICAgICAgICAgSG93ZXZlciwg
c29tZSBzcHV0bmlrIGNvbmZvcm1hbmNlIHRlc3RzIGhhdmUgc2hvd24gdGhhdCB3ZSBjYW5ub3Qg
aG9ub3IKKyAgICAgICAgICBsaW5lIGJyZWFrcyBmb3IgYXNzaWdubWVudCBzdGF0ZW1lbnRzIGxp
a2UgdGhlIGZvbGxvd2luZzoKKworICAgICAgICAgICAgICBldmFsKCJ4XHUwMDBBKj1cdTAwMEEt
MTsiKTsKKworICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIGxpbmVTdGFydCBpcyBleHBlY3Rl
ZCB0byBiZSBjYXB0dXJlZCBhdCB0aGUgc3RhcnQgb2YKKyAgICAgICAgICB0aGUgYXNzaWdubWVu
dCBleHByZXNzaW9uIGluc3RlYWQgb2YgYXQgdGhlIGRpdm90IHBvaW50IGluIHRoZSBtaWRkbGUu
CisgICAgICAgICAgVGhlIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBpcyB0aGUgb25seSBzcGVjaWFs
IGNhc2UgZm9yIHRoaXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBoYXMgYmVlbiB0ZXN0ZWQgYWdh
aW5zdCB0aGUgZnVsbCBsYXlvdXQgdGVzdHMgYm90aCB3aXRoIHJlbGVhc2UKKyAgICAgICAgYW5k
IGRlYnVnIGJ1aWxkcyB3aXRoIG5vIHJlZ3Jlc3Npb24uCisKKyAgICAgICAgKiBBUEkvSlNDb250
ZXh0UmVmLmNwcDoKKyAgICAgICAgKEpTQ29udGV4dENyZWF0ZUJhY2t0cmFjZSk6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2Rl
QmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpbmVOdW1iZXJGb3JCeXRlY29kZU9m
ZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y29sdW1uTnVtYmVyRm9yQnl0ZWNvZGVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmV4cHJlc3Npb25SYW5nZUZvckJ5dGVj
b2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpmaXJzdExpbmVDb2x1bW5PZmZzZXQpOgorICAgICAgICAoSlNDOjpHbG9i
YWxDb2RlQmxvY2s6Okdsb2JhbENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OlByb2dyYW1Db2Rl
QmxvY2s6OlByb2dyYW1Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUJsb2NrOjpF
dmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OkZ1bmN0aW9u
Q29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9FeHByZXNzaW9uUmFuZ2VJbmZvLmg6Cisg
ICAgICAgIChKU0M6OkV4cHJlc3Npb25SYW5nZUluZm86OmVuY29kZU1vZGUwKToKKyAgICAgICAg
KEpTQzo6RXhwcmVzc2lvblJhbmdlSW5mbzo6ZW5jb2RlTW9kZTEpOgorICAgICAgICAoSlNDOjpF
eHByZXNzaW9uUmFuZ2VJbmZvOjpkZWNvZGVNb2RlMCk6CisgICAgICAgIChKU0M6OkV4cHJlc3Np
b25SYW5nZUluZm86OmRlY29kZU1vZGUxKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjpsaW5rKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Omxp
bmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJs
b2NrOjpleHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlVu
bGlua2VkQ29kZUJsb2NrOjphZGRFeHByZXNzaW9uSW5mbyk6CisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OmZ1bmN0aW9uU3RhcnRDb2x1bW4pOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVC
bG9jazo6c2hyaW5rVG9GaXQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbEV2YWwpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Tm9k
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Tm9kZUluQ29uZGl0aW9u
Q29udGV4dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXhwcmVzc2lv
bkluZm9XaXRoUG9zaXRpb25zKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRFeHByZXNzaW9uSW5mbyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHA6CisgICAgICAgIChKU0M6OlRocm93YWJsZUV4cHJlc3Npb25EYXRhOjplbWl0VGhyb3dSZWZl
cmVuY2VFcnJvcik6CisgICAgICAgIChKU0M6OlJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0KToKKyAgICAgICAgKEpTQzo6
QnJhY2tldEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RG90QWNj
ZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpOZXdFeHByTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RXZhbEZ1bmN0aW9uQ2FsbE5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdFJlc29sdmUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9k
ZTo6ZW1pdEJyYWNrZXQpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdERvdCk6Cisg
ICAgICAgIChKU0M6OkRlbGV0ZVJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpEZWxldGVCcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RGVs
ZXRlRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6ZW1p
dFJlc29sdmUpOgorICAgICAgICAoSlNDOjpQcmVmaXhOb2RlOjplbWl0QnJhY2tldCk6CisgICAg
ICAgIChKU0M6OlByZWZpeE5vZGU6OmVtaXREb3QpOgorICAgICAgICAoSlNDOjpVbmFyeU9wTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QmluYXJ5T3BOb2RlOjplbWl0U3RyY2F0
KToKKyAgICAgICAgKEpTQzo6VGhyb3dhYmxlQmluYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpJbnN0YW5jZU9mTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6ZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeVJl
c29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25SZXNvbHZlTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeURvdE5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OkFzc2lnbkJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpSZWFkTW9kaWZ5QnJhY2tldE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OkNvbnN0U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RW1wdHlT
dGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclN0YXRl
bWVudE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4cHJTdGF0ZW1lbnROb2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpWYXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpJZkVsc2VOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpEb1doaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6V2hpbGVO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGb3JOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OkNvbnRpbnVlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QnJlYWtOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpXaXRoTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6U3dp
dGNoTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6TGFiZWxOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpUaHJvd05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OlRyeU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFdmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmFwcGVuZFNvdXJj
ZVRvRXJyb3IpOgorICAgICAgICAoSlNDOjpTdGFja0ZyYW1lOjpjb21wdXRlTGluZUFuZENvbHVt
bik6CisgICAgICAgIChKU0M6OlN0YWNrRnJhbWU6OmV4cHJlc3Npb25JbmZvKToKKyAgICAgICAg
KEpTQzo6U3RhY2tGcmFtZTo6dG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
Z2V0U3RhY2tUcmFjZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAg
ICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpC
aW5hcnlPcEluZm86OkJpbmFyeU9wSW5mbyk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OkFz
c2lnbm1lbnRJbmZvOjpBc3NpZ25tZW50SW5mbyk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZVJlc29sdmUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCcmFja2V0
QWNjZXNzKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRG90QWNjZXNzKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUmVnRXhwKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlTmV3RXhwcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZUFzc2lnblJlc29sdmUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlv
bkV4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlvbkJvZHkpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCbG9ja1N0YXRlbWVudCk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUV4cHJTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjpjcmVhdGVJZlN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNy
ZWF0ZUZvckxvb3ApOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGb3JJbkxvb3Ap
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVWYXJTdGF0ZW1lbnQpOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVSZXR1cm5TdGF0ZW1lbnQpOgorICAgICAgICAoSlND
OjpBU1RCdWlsZGVyOjpjcmVhdGVCcmVha1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6Y3JlYXRlVHJ5U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRl
U3dpdGNoU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlV2hpbGVT
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVEb1doaWxlU3RhdGVt
ZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlTGFiZWxTdGF0ZW1lbnQpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVXaXRoU3RhdGVtZW50KToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVGhyb3dTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpB
U1RCdWlsZGVyOjpjcmVhdGVEZWJ1Z2dlcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNy
ZWF0ZUNvbnN0U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6YXBwZW5kQmlu
YXJ5RXhwcmVzc2lvbkluZm8pOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjphcHBlbmRVbmFy
eVRva2VuKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6dW5hcnlUb2tlblN0YWNrTGFzdFN0
YXJ0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6dW5hcnlUb2tlblN0YWNrTGFzdExpbmVT
dGFydFBvc2l0aW9uKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6YXNzaWdubWVudFN0YWNr
QXBwZW5kKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQXNzaWdubWVudCk6Cisg
ICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OnNldEV4Y2VwdGlvbkxvY2F0aW9uKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6bWFrZURlbGV0ZU5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1h
a2VCaW5hcnlOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUFzc2lnbk5vZGUp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlUHJlZml4Tm9kZSk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6Om1ha2VQb3N0Zml4Tm9kZSk6CisgICAgICAgICogcGFyc2VyL0xleGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6OjpjdXJyZW50Q29kZVB0cik6CisgICAgICAgIChKU0M6Ojo6
c2V0Q29kZSk6CisgICAgICAgIChKU0M6Ojo6aW50ZXJuYWxTaGlmdCk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUlkZW50aWZpZXJTbG93
Q2FzZSk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VTdHJpbmcpOgorICAgICAgICAoSlNDOjo6OnBh
cnNlU3RyaW5nU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjo6OmxleCk6CisgICAgICAgIChKU0M6
Ojo6c291cmNlQ29kZSk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6
OkxleGVyOjpjdXJyZW50T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OmN1cnJlbnRMaW5l
U3RhcnRPZmZzZXQpOgorICAgICAgICAoSlNDOjpMZXhlcjo6c2V0T2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6TGV4ZXI6Om9mZnNldEZyb21Db2RlUHRyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OmNv
ZGVQdHJGcm9tT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OnNldE9mZnNldEZyb21Db2Rl
UHRyKToKKyAgICAgICAgKEpTQzo6OjpsZXhFeHBlY3RJZGVudGlmaWVyKToKKyAgICAgICAgKiBw
YXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlNDOjpOb2RlOjpOb2RlKToKKyAg
ICAgICAgKEpTQzo6UmVzb2x2ZU5vZGU6OlJlc29sdmVOb2RlKToKKyAgICAgICAgKEpTQzo6RXZh
bEZ1bmN0aW9uQ2FsbE5vZGU6OkV2YWxGdW5jdGlvbkNhbGxOb2RlKToKKyAgICAgICAgKEpTQzo6
RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGUpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUpOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZTo6RnVuY3Rpb25DYWxsQnJhY2tl
dE5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxE
b3ROb2RlKToKKyAgICAgICAgKEpTQzo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5j
dGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2Rl
OjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6
UG9zdGZpeE5vZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVSZXNvbHZlTm9kZTo6RGVsZXRlUmVz
b2x2ZU5vZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVCcmFja2V0Tm9kZTo6RGVsZXRlQnJhY2tl
dE5vZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVEb3ROb2RlOjpEZWxldGVEb3ROb2RlKToKKyAg
ICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6UHJlZml4Tm9kZSk6CisgICAgICAgIChKU0M6OlJlYWRN
b2RpZnlSZXNvbHZlTm9kZTo6UmVhZE1vZGlmeVJlc29sdmVOb2RlKToKKyAgICAgICAgKEpTQzo6
UmVhZE1vZGlmeUJyYWNrZXROb2RlOjpSZWFkTW9kaWZ5QnJhY2tldE5vZGUpOgorICAgICAgICAo
SlNDOjpBc3NpZ25CcmFja2V0Tm9kZTo6QXNzaWduQnJhY2tldE5vZGUpOgorICAgICAgICAoSlND
OjpBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlm
eURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRXJyb3JO
b2RlOjpBc3NpZ25FcnJvck5vZGUpOgorICAgICAgICAoSlNDOjpXaXRoTm9kZTo6V2l0aE5vZGUp
OgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OkZvckluTm9kZSk6CisgICAgICAgICogcGFyc2Vy
L05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhdGVtZW50Tm9kZTo6c2V0TG9jKToKKyAgICAg
ICAgKEpTQzo6U2NvcGVOb2RlOjpTY29wZU5vZGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9k
ZTo6UHJvZ3JhbU5vZGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6RXZhbE5vZGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQm9k
eU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2Rl
OjpjcmVhdGUpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpOb2Rl
OjpzdGFydE9mZnNldCk6CisgICAgICAgIChKU0M6Ok5vZGU6OmxpbmVTdGFydE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OlN0YXRlbWVudE5vZGU6OmZpcnN0TGluZSk6CisgICAgICAgIChKU0M6OlN0
YXRlbWVudE5vZGU6Omxhc3RMaW5lKToKKyAgICAgICAgKEpTQzo6VGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGE6OlRocm93YWJsZUV4cHJlc3Npb25EYXRhKToKKyAgICAgICAgKEpTQzo6VGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGE6OnNldEV4Y2VwdGlvblNvdXJjZUNvZGUpOgorICAgICAgICAoSlNDOjpU
aHJvd2FibGVFeHByZXNzaW9uRGF0YTo6ZGl2b3RTdGFydE9mZnNldCk6CisgICAgICAgIChKU0M6
OlRocm93YWJsZUV4cHJlc3Npb25EYXRhOjpkaXZvdEVuZE9mZnNldCk6CisgICAgICAgIChKU0M6
OlRocm93YWJsZUV4cHJlc3Npb25EYXRhOjpkaXZvdExpbmUpOgorICAgICAgICAoSlNDOjpUaHJv
d2FibGVFeHByZXNzaW9uRGF0YTo6ZGl2b3RMaW5lU3RhcnQpOgorICAgICAgICAoSlNDOjpUaHJv
d2FibGVTdWJFeHByZXNzaW9uRGF0YTo6VGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEpOgorICAg
ICAgICAoSlNDOjpUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YTo6c2V0U3ViZXhwcmVzc2lvbklu
Zm8pOgorICAgICAgICAoSlNDOjpUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YTo6c3ViZXhwcmVz
c2lvbkRpdm90KToKKyAgICAgICAgKEpTQzo6VGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGE6OnN1
YmV4cHJlc3Npb25TdGFydE9mZnNldCk6CisgICAgICAgIChKU0M6OlRocm93YWJsZVN1YkV4cHJl
c3Npb25EYXRhOjpzdWJleHByZXNzaW9uRW5kT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VGhyb3dh
YmxlU3ViRXhwcmVzc2lvbkRhdGE6OnN1YmV4cHJlc3Npb25MaW5lKToKKyAgICAgICAgKEpTQzo6
VGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGE6OnN1YmV4cHJlc3Npb25MaW5lU3RhcnQpOgorICAg
ICAgICAoSlNDOjpUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhOjpUaHJvd2FibGVQ
cmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhKToKKyAgICAgICAgKEpTQzo6VGhyb3dhYmxlUHJlZml4
ZWRTdWJFeHByZXNzaW9uRGF0YTo6c2V0U3ViZXhwcmVzc2lvbkluZm8pOgorICAgICAgICAoSlND
OjpUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhOjpzdWJleHByZXNzaW9uRGl2b3Qp
OgorICAgICAgICAoSlNDOjpUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhOjpzdWJl
eHByZXNzaW9uU3RhcnRPZmZzZXQpOgorICAgICAgICAoSlNDOjpUaHJvd2FibGVQcmVmaXhlZFN1
YkV4cHJlc3Npb25EYXRhOjpzdWJleHByZXNzaW9uRW5kT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
VGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNzaW9uRGF0YTo6c3ViZXhwcmVzc2lvbkxpbmUpOgor
ICAgICAgICAoSlNDOjpUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhOjpzdWJleHBy
ZXNzaW9uTGluZVN0YXJ0KToKKyAgICAgICAgKEpTQzo6U2NvcGVOb2RlOjpzdGFydFN0YXJ0T2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6U2NvcGVOb2RlOjpzdGFydExpbmVTdGFydE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpzdGFydENvbHVtbik6CisgICAgICAgIChKU0M6OkV2
YWxOb2RlOjpzdGFydENvbHVtbik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6OnN0
YXJ0Q29sdW1uKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
OjpQYXJzZXIpOgorICAgICAgICAoSlNDOjo6OnBhcnNlU291cmNlRWxlbWVudHMpOgorICAgICAg
ICAoSlNDOjo6OnBhcnNlVmFyRGVjbGFyYXRpb25MaXN0KToKKyAgICAgICAgKEpTQzo6OjpwYXJz
ZUNvbnN0RGVjbGFyYXRpb25MaXN0KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUZvclN0YXRlbWVu
dCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VCcmVha1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VDb250aW51ZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VSZXR1cm5T
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlVGhyb3dTdGF0ZW1lbnQpOgorICAgICAg
ICAoSlNDOjo6OnBhcnNlV2l0aFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VGdW5j
dGlvbkJvZHkpOgorICAgICAgICAoSlNDOjo6OnBhcnNlRnVuY3Rpb25JbmZvKToKKyAgICAgICAg
KEpTQzo6OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjpMYWJlbElu
Zm86OkxhYmVsSW5mbyk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VFeHByZXNzaW9uT3JMYWJlbFN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbik6Cisg
ICAgICAgIChKU0M6Ojo6cGFyc2VCaW5hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6Ojpw
YXJzZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZU9iamVjdExpdGVyYWwpOgorICAg
ICAgICAoSlNDOjo6OnBhcnNlUHJpbWFyeUV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjo6OnBh
cnNlTWVtYmVyRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VVbmFyeUV4cHJlc3Np
b24pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpu
ZXh0KToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpuZXh0RXhwZWN0SWRlbnRpZmllcik6CisgICAg
ICAgIChKU0M6OlBhcnNlcjo6dG9rZW5TdGFydCk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6dG9r
ZW5Db2x1bW4pOgorICAgICAgICAoSlNDOjpQYXJzZXI6OnRva2VuRW5kKToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyOjp0b2tlbkxpbmVTdGFydCk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6bGFzdFRv
a2VuTGluZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6bGFzdFRva2VuTGluZVN0YXJ0KToKKyAg
ICAgICAgKEpTQzo6OjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vucy5oOgor
ICAgICAgICAoSlNDOjpKU1Rva2VuTG9jYXRpb246OkpTVG9rZW5Mb2NhdGlvbik6CisgICAgICAg
IChKU0M6OkpTVG9rZW5Mb2NhdGlvbjo6bGluZVN0YXJ0UG9zaXRpb24pOgorICAgICAgICAoSlND
OjpKU1Rva2VuTG9jYXRpb246OnN0YXJ0UG9zaXRpb24pOgorICAgICAgICAoSlNDOjpKU1Rva2Vu
TG9jYXRpb246OmVuZFBvc2l0aW9uKToKKyAgICAgICAgKiBwYXJzZXIvU291cmNlQ29kZS5oOgor
ICAgICAgICAoSlNDOjpTb3VyY2VDb2RlOjpTb3VyY2VDb2RlKToKKyAgICAgICAgKEpTQzo6U291
cmNlQ29kZTo6c3RhcnRDb2x1bW4pOgorICAgICAgICAoSlNDOjptYWtlU291cmNlKToKKyAgICAg
ICAgKEpTQzo6U291cmNlQ29kZTo6c3ViRXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1Nv
dXJjZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXIuaDoKKyAg
ICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaDoKKyAgICAgICAgKEpTQzo6
U291cmNlUHJvdmlkZXJDYWNoZUl0ZW06OmNsb3NlQnJhY2VUb2tlbik6CisgICAgICAgIChKU0M6
OlNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtOjpTb3VyY2VQcm92aWRlckNhY2hlSXRlbSk6CisgICAg
ICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tl
cjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpt
YWtlQXNzaWduTm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VQcmVmaXhO
b2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZVBvc3RmaXhOb2RlKToKKyAg
ICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZURlbGV0ZU5vZGUpOgorICAgICAgICAoSlND
OjpTeW50YXhDaGVja2VyOjpjcmVhdGVSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y3JlYXRlQnJhY2tldEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6
OmNyZWF0ZURvdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVJl
Z0V4cCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZU5ld0V4cHIpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVBc3NpZ25SZXNvbHZlKToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25FeHByKToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhD
aGVja2VyOjpjcmVhdGVGb3JJbkxvb3ApOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpj
cmVhdGVSZXR1cm5TdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVh
dGVCcmVha1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUNv
bnRpbnVlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlV2l0
aFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUxhYmVsU3Rh
dGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlVGhyb3dTdGF0ZW1l
bnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVHZXR0ZXJPclNldHRlclBy
b3BlcnR5KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6YXBwZW5kQmluYXJ5RXhwcmVz
c2lvbkluZm8pOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpvcGVyYXRvclN0YWNrUG9w
KToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVD
YWNoZTo6Z2VuZXJhdGVCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0Q29k
ZUJsb2NrKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlND
OjpGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6
OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGU6OnByb2R1Y2VDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1
dGFibGUuaDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6c3RhcnRDb2x1bW4pOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpyZWNvcmRQYXJzZSk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKToKKwogMjAxMy0wNy0wOCAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4g
Rml4IG1ha2UgZGlzdGNoZWNrLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHRSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
b250ZXh0UmVmLmNwcAkocmV2aXNpb24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NvbnRleHRSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzcsNyArMjM3LDkgQEAg
SlNTdHJpbmdSZWYgSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKEpTQwogICAgICAgICAgICAgaWYg
KGkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgdW5zaWduZWQg
bGluZU51bWJlciA9IGZyYW1lLmxpbmUoKTsKKyAgICAgICAgdW5zaWduZWQgbGluZU51bWJlcjsK
KyAgICAgICAgdW5zaWduZWQgY29sdW1uOworICAgICAgICBmcmFtZS5jb21wdXRlTGluZUFuZENv
bHVtbihsaW5lTnVtYmVyLCBjb2x1bW4pOwogICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgp
KQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCcjJyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkocmV2aXNpb24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MDMsNiArMTYwMyw3IEBAIENv
ZGVCbG9jazo6Q29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1RhZywKICAgICAsIG1fbmVlZHNBY3Rp
dmF0aW9uKG90aGVyLm1fbmVlZHNBY3RpdmF0aW9uKQogICAgICwgbV9zb3VyY2Uob3RoZXIubV9z
b3VyY2UpCiAgICAgLCBtX3NvdXJjZU9mZnNldChvdGhlci5tX3NvdXJjZU9mZnNldCkKKyAgICAs
IG1fZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KG90aGVyLm1fZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQog
ICAgICwgbV9jb2RlVHlwZShvdGhlci5tX2NvZGVUeXBlKQogICAgICwgbV9pZGVudGlmaWVycyhv
dGhlci5tX2lkZW50aWZpZXJzKQogICAgICwgbV9jb25zdGFudFJlZ2lzdGVycyhvdGhlci5tX2Nv
bnN0YW50UmVnaXN0ZXJzKQpAQCAtMTYzMiw3ICsxNjMzLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxv
Y2soQ29weVBhcnNlZEJsb2NrVGFnLAogICAgIH0KIH0KIAotQ29kZUJsb2NrOjpDb2RlQmxvY2so
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5s
aW5rZWRDb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGJh
c2VTY29wZURlcHRoLCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlciwg
dW5zaWduZWQgc291cmNlT2Zmc2V0LCBQYXNzT3duUHRyPENvZGVCbG9jaz4gYWx0ZXJuYXRpdmUp
CitDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUs
IFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgdW5zaWduZWQgYmFzZVNjb3BlRGVwdGgsIFBhc3NSZWZQdHI8U291cmNlUHJv
dmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBzb3VyY2VPZmZzZXQsIHVuc2lnbmVkIGZp
cnN0TGluZUNvbHVtbk9mZnNldCwgUGFzc093blB0cjxDb2RlQmxvY2s+IGFsdGVybmF0aXZlKQog
ICAgIDogbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LT52bSgpLCBvd25lckV4ZWN1dGFibGUs
IGdsb2JhbE9iamVjdCkKICAgICAsIG1faGVhcCgmbV9nbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkK
ICAgICAsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxl
ZVJlZ2lzdGVycykKQEAgLTE2NDgsNiArMTY0OSw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNj
cmlwdEV4ZWN1dGFibGUqIG8KICAgICAsIG1fbmVlZHNBY3RpdmF0aW9uKHVubGlua2VkQ29kZUJs
b2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpCiAgICAgLCBtX3NvdXJjZShzb3VyY2VQcm92aWRl
cikKICAgICAsIG1fc291cmNlT2Zmc2V0KHNvdXJjZU9mZnNldCkKKyAgICAsIG1fZmlyc3RMaW5l
Q29sdW1uT2Zmc2V0KGZpcnN0TGluZUNvbHVtbk9mZnNldCkKICAgICAsIG1fY29kZVR5cGUodW5s
aW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkpCiAgICAgLCBtX2FsdGVybmF0aXZlKGFsdGVybmF0
aXZlKQogICAgICwgbV9vc3JFeGl0Q291bnRlcigwKQpAQCAtMTY3MSwxMCArMTY3MywxMiBAQCBD
b2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9j
ay0+ZnVuY3Rpb25EZWNsKGkpOwogICAgICAgICB1bnNpZ25lZCBsaW5lQ291bnQgPSB1bmxpbmtl
ZEV4ZWN1dGFibGUtPmxpbmVDb3VudCgpOwogICAgICAgICB1bnNpZ25lZCBmaXJzdExpbmUgPSBv
d25lckV4ZWN1dGFibGUtPmxpbmVObygpICsgdW5saW5rZWRFeGVjdXRhYmxlLT5maXJzdExpbmVP
ZmZzZXQoKTsKKyAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSB1bmxpbmtlZEV4ZWN1dGFi
bGUtPmZ1bmN0aW9uU3RhcnRDb2x1bW4oKTsKKyAgICAgICAgc3RhcnRDb2x1bW4gKz0gKCF1bmxp
bmtlZEV4ZWN1dGFibGUtPmZpcnN0TGluZU9mZnNldCgpKSA/IG93bmVyRXhlY3V0YWJsZS0+c3Rh
cnRDb2x1bW4oKSA6IDE7CiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gc291cmNlT2Zm
c2V0ICsgdW5saW5rZWRFeGVjdXRhYmxlLT5zdGFydE9mZnNldCgpOwogICAgICAgICB1bnNpZ25l
ZCBzb3VyY2VMZW5ndGggPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnNvdXJjZUxlbmd0aCgpOwotICAg
ICAgICBTb3VyY2VDb2RlIGNvZGUobV9zb3VyY2UsIHN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCAr
IHNvdXJjZUxlbmd0aCwgZmlyc3RMaW5lKTsKLSAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlID0gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoKm1fdm0sIGNvZGUsIHVubGlu
a2VkRXhlY3V0YWJsZSwgZmlyc3RMaW5lLCBmaXJzdExpbmUgKyBsaW5lQ291bnQpOworICAgICAg
ICBTb3VyY2VDb2RlIGNvZGUobV9zb3VyY2UsIHN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCArIHNv
dXJjZUxlbmd0aCwgZmlyc3RMaW5lLCBzdGFydENvbHVtbik7CisgICAgICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSA9IEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCptX3ZtLCBj
b2RlLCB1bmxpbmtlZEV4ZWN1dGFibGUsIGZpcnN0TGluZSwgZmlyc3RMaW5lICsgbGluZUNvdW50
LCBzdGFydENvbHVtbik7CiAgICAgICAgIG1fZnVuY3Rpb25EZWNsc1tpXS5zZXQoKm1fdm0sIG93
bmVyRXhlY3V0YWJsZSwgZXhlY3V0YWJsZSk7CiAgICAgfQogCkBAIC0xNjgzLDEwICsxNjg3LDEy
IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICAgICAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9IHVubGlua2VkQ29k
ZUJsb2NrLT5mdW5jdGlvbkV4cHIoaSk7CiAgICAgICAgIHVuc2lnbmVkIGxpbmVDb3VudCA9IHVu
bGlua2VkRXhlY3V0YWJsZS0+bGluZUNvdW50KCk7CiAgICAgICAgIHVuc2lnbmVkIGZpcnN0TGlu
ZSA9IG93bmVyRXhlY3V0YWJsZS0+bGluZU5vKCkgKyB1bmxpbmtlZEV4ZWN1dGFibGUtPmZpcnN0
TGluZU9mZnNldCgpOworICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IHVubGlua2VkRXhl
Y3V0YWJsZS0+ZnVuY3Rpb25TdGFydENvbHVtbigpOworICAgICAgICBzdGFydENvbHVtbiArPSAo
IXVubGlua2VkRXhlY3V0YWJsZS0+Zmlyc3RMaW5lT2Zmc2V0KCkpID8gb3duZXJFeGVjdXRhYmxl
LT5zdGFydENvbHVtbigpIDogMTsKICAgICAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBzb3Vy
Y2VPZmZzZXQgKyB1bmxpbmtlZEV4ZWN1dGFibGUtPnN0YXJ0T2Zmc2V0KCk7CiAgICAgICAgIHVu
c2lnbmVkIHNvdXJjZUxlbmd0aCA9IHVubGlua2VkRXhlY3V0YWJsZS0+c291cmNlTGVuZ3RoKCk7
Ci0gICAgICAgIFNvdXJjZUNvZGUgY29kZShtX3NvdXJjZSwgc3RhcnRPZmZzZXQsIHN0YXJ0T2Zm
c2V0ICsgc291cmNlTGVuZ3RoLCBmaXJzdExpbmUpOwotICAgICAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgqbV92bSwgY29kZSwg
dW5saW5rZWRFeGVjdXRhYmxlLCBmaXJzdExpbmUsIGZpcnN0TGluZSArIGxpbmVDb3VudCk7Cisg
ICAgICAgIFNvdXJjZUNvZGUgY29kZShtX3NvdXJjZSwgc3RhcnRPZmZzZXQsIHN0YXJ0T2Zmc2V0
ICsgc291cmNlTGVuZ3RoLCBmaXJzdExpbmUsIHN0YXJ0Q29sdW1uKTsKKyAgICAgICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoKm1f
dm0sIGNvZGUsIHVubGlua2VkRXhlY3V0YWJsZSwgZmlyc3RMaW5lLCBmaXJzdExpbmUgKyBsaW5l
Q291bnQsIHN0YXJ0Q29sdW1uKTsKICAgICAgICAgbV9mdW5jdGlvbkV4cHJzW2ldLnNldCgqbV92
bSwgb3duZXJFeGVjdXRhYmxlLCBleGVjdXRhYmxlKTsKICAgICB9CiAKQEAgLTE5NDMsMTAgKzE5
NDksNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgICAg
IH0KIAogICAgICAgICBjYXNlIG9wX2RlYnVnOiB7Ci0gICAgICAgICAgICBzaXplX3QgY2hhclBv
c2l0aW9uID0gcGNbaSArIDRdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIHNpemVfdCBhY3R1YWxD
aGFyUG9zaXRpb24gPSBjaGFyUG9zaXRpb24gKyBtX3NvdXJjZU9mZnNldDsKLSAgICAgICAgICAg
IHNpemVfdCBjb2x1bW4gPSBtX3NvdXJjZS0+Y2hhclBvc2l0aW9uVG9Db2x1bW5OdW1iZXIoYWN0
dWFsQ2hhclBvc2l0aW9uKTsKLSAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNF0gPSBjb2x1
bW47CisgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDRdID0gY29sdW1uTnVtYmVyRm9yQnl0
ZWNvZGVPZmZzZXQoaSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yNDYz
LDE2ICsyNDY2LDMyIEBAIEhhbmRsZXJJbmZvKiBDb2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRlY28K
ICAgICByZXR1cm4gMDsKIH0KIAotaW50IENvZGVCbG9jazo6bGluZU51bWJlckZvckJ5dGVjb2Rl
T2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQordW5zaWduZWQgQ29kZUJsb2NrOjpsaW5l
TnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQoYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwog
ICAgIHJldHVybiBtX293bmVyRXhlY3V0YWJsZS0+bGluZU5vKCkgKyBtX3VubGlua2VkQ29kZS0+
bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKIH0KIAotdm9pZCBD
b2RlQmxvY2s6OmV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCBpbnQmIGRpdm90LCBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCkK
K3Vuc2lnbmVkIENvZGVCbG9jazo6Y29sdW1uTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQpCiB7Ci0gICAgbV91bmxpbmtlZENvZGUtPmV4cHJlc3Npb25SYW5n
ZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldCk7CisgICAgLy8gV2UgY2FuJ3QgYXNzZXJ0IHRoaXMgaGVyZSBiZWNhdXNlIHRoaXMg
aXMgY2FsbGVkIGZyb20gdGhlIENvZGVCbG9jaworICAgIC8vIGNvbnN0cnVjdG9yIGJlZm9yZSBp
bnN0cnVjdGlvbnMoKSBpcyBpbml0aWFsaXplZC4KKyAgICAvLyBSRUxFQVNFX0FTU0VSVChieXRl
Y29kZU9mZnNldCA8IGluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgaW50IGRpdm90OworICAg
IGludCBzdGFydE9mZnNldDsKKyAgICBpbnQgZW5kT2Zmc2V0OworICAgIHVuc2lnbmVkIGxpbmU7
CisgICAgdW5zaWduZWQgY29sdW1uOworICAgIGV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zm
c2V0KGJ5dGVjb2RlT2Zmc2V0LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgbGluZSwg
Y29sdW1uKTsKKyAgICByZXR1cm4gY29sdW1uOworfQorCit2b2lkIENvZGVCbG9jazo6ZXhwcmVz
c2lvblJhbmdlRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGludCYg
ZGl2b3QsIGludCYgc3RhcnRPZmZzZXQsIGludCYgZW5kT2Zmc2V0LCB1bnNpZ25lZCYgbGluZSwg
dW5zaWduZWQmIGNvbHVtbikKK3sKKyAgICBtX3VubGlua2VkQ29kZS0+ZXhwcmVzc2lvblJhbmdl
Rm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5k
T2Zmc2V0LCBsaW5lLCBjb2x1bW4pOwogICAgIGRpdm90ICs9IG1fc291cmNlT2Zmc2V0OworICAg
IGNvbHVtbiArPSBsaW5lID8gMSA6IGZpcnN0TGluZUNvbHVtbk9mZnNldCgpOworICAgIGxpbmUg
Kz0gbV9vd25lckV4ZWN1dGFibGUtPmxpbmVObygpOwogfQogCiB2b2lkIENvZGVCbG9jazo6c2hy
aW5rVG9GaXQoU2hyaW5rTW9kZSBzaHJpbmtNb2RlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTUxOTIwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IENhbWVyb24gWndhcmljaCA8Y3d6d2FyaWNoQHV3
YXRlcmxvby5jYT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgog
cHJvdGVjdGVkOgogICAgIENvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jayYg
b3RoZXIpOwogICAgICAgICAKLSAgICBDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQg
YmFzZVNjb3BlRGVwdGgsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+LCB1bnNpZ25lZCBzb3Vy
Y2VPZmZzZXQsIFBhc3NPd25QdHI8Q29kZUJsb2NrPiBhbHRlcm5hdGl2ZSk7CisgICAgQ29kZUJs
b2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sq
LCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIGJhc2VTY29wZURlcHRoLCBQYXNzUmVmUHRyPFNv
dXJjZVByb3ZpZGVyPiwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExpbmVD
b2x1bW5PZmZzZXQsIFBhc3NPd25QdHI8Q29kZUJsb2NrPiBhbHRlcm5hdGl2ZSk7CiAKICAgICBX
cml0ZUJhcnJpZXI8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwogICAgIEhlYXAqIG1f
aGVhcDsKQEAgLTE3Niw4ICsxNzYsMTAgQEAgcHVibGljOgogICAgIH0KIAogICAgIEhhbmRsZXJJ
bmZvKiBoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwot
ICAgIGludCBsaW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQpOwotICAgIHZvaWQgZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQsIGludCYgZGl2b3QsIGludCYgc3RhcnRPZmZzZXQsIGludCYgZW5kT2Zm
c2V0KTsKKyAgICB1bnNpZ25lZCBsaW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQpOworICAgIHVuc2lnbmVkIGNvbHVtbk51bWJlckZvckJ5dGVjb2RlT2Zm
c2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICB2b2lkIGV4cHJlc3Npb25SYW5nZUZv
ckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBpbnQmIGRpdm90LAorICAg
ICAgICBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCwgdW5zaWduZWQmIGxpbmUsIHVu
c2lnbmVkJiBjb2x1bW4pOwogCiAjaWYgRU5BQkxFKEpJVCkKIApAQCAtNTY2LDYgKzU2OCw3IEBA
IHB1YmxpYzoKIAogICAgIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZS5nZXQoKTsgfQogICAgIHVuc2lnbmVkIHNvdXJjZU9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fc291cmNlT2Zmc2V0OyB9CisgICAgdW5zaWduZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdExpbmVDb2x1bW5PZmZzZXQ7IH0KIAogICAgIHNpemVf
dCBudW1iZXJPZkp1bXBUYXJnZXRzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPm51
bWJlck9mSnVtcFRhcmdldHMoKTsgfQogICAgIHVuc2lnbmVkIGp1bXBUYXJnZXQoaW50IGluZGV4
KSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+anVtcFRhcmdldChpbmRleCk7IH0KQEAg
LTExNzEsNiArMTE3NCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXI+
IG1fc291cmNlOwogICAgIHVuc2lnbmVkIG1fc291cmNlT2Zmc2V0OworICAgIHVuc2lnbmVkIG1f
Zmlyc3RMaW5lQ29sdW1uT2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fY29kZVR5cGU7CiAKICNpZiBF
TkFCTEUoTExJTlQpCkBAIC0xMzA5LDggKzEzMTMsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAg
IH0KICAgICAgICAgCi0gICAgR2xvYmFsQ29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVy
RXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBiYXNlU2NvcGVEZXB0aCwgUGFzc1JlZlB0
cjxTb3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIHNvdXJjZU9mZnNldCwg
UGFzc093blB0cjxDb2RlQmxvY2s+IGFsdGVybmF0aXZlKQotICAgICAgICA6IENvZGVCbG9jayhv
d25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGJhc2VTY29w
ZURlcHRoLCBzb3VyY2VQcm92aWRlciwgc291cmNlT2Zmc2V0LCBhbHRlcm5hdGl2ZSkKKyAgICBH
bG9iYWxDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtl
ZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIHVuc2lnbmVkIGJhc2VTY29wZURlcHRoLCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBz
b3VyY2VQcm92aWRlciwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExpbmVD
b2x1bW5PZmZzZXQsIFBhc3NPd25QdHI8Q29kZUJsb2NrPiBhbHRlcm5hdGl2ZSkKKyAgICAgICAg
OiBDb2RlQmxvY2sob3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgZ2xvYmFsT2Jq
ZWN0LCBiYXNlU2NvcGVEZXB0aCwgc291cmNlUHJvdmlkZXIsIHNvdXJjZU9mZnNldCwgZmlyc3RM
aW5lQ29sdW1uT2Zmc2V0LCBhbHRlcm5hdGl2ZSkKICAgICB7CiAgICAgfQogfTsKQEAgLTEzMjIs
OCArMTMyNiw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgUHJvZ3JhbUNvZGVCbG9j
ayhQcm9ncmFtRXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
YXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlciwgUGFzc093blB0cjxDb2Rl
QmxvY2s+IGFsdGVybmF0aXZlKQotICAgICAgICA6IEdsb2JhbENvZGVCbG9jayhvd25lckV4ZWN1
dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIDAsIHNvdXJjZVByb3ZpZGVy
LCAwLCBhbHRlcm5hdGl2ZSkKKyAgICBQcm9ncmFtQ29kZUJsb2NrKFByb2dyYW1FeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2Rl
QmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8U291cmNlUHJv
dmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQsIFBh
c3NPd25QdHI8Q29kZUJsb2NrPiBhbHRlcm5hdGl2ZSkKKyAgICAgICAgOiBHbG9iYWxDb2RlQmxv
Y2sob3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCAwLCBz
b3VyY2VQcm92aWRlciwgMCwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0LCBhbHRlcm5hdGl2ZSkKICAg
ICB7CiAgICAgfQogCkBAIC0xMzQ1LDcgKzEzNDksNyBAQCBwdWJsaWM6CiAgICAgfQogICAgICAg
ICAKICAgICBFdmFsQ29kZUJsb2NrKEV2YWxFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVu
bGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCBp
bnQgYmFzZVNjb3BlRGVwdGgsIFBhc3NPd25QdHI8Q29kZUJsb2NrPiBhbHRlcm5hdGl2ZSkKLSAg
ICAgICAgOiBHbG9iYWxDb2RlQmxvY2sob3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9j
aywgZ2xvYmFsT2JqZWN0LCBiYXNlU2NvcGVEZXB0aCwgc291cmNlUHJvdmlkZXIsIDAsIGFsdGVy
bmF0aXZlKQorICAgICAgICA6IEdsb2JhbENvZGVCbG9jayhvd25lckV4ZWN1dGFibGUsIHVubGlu
a2VkQ29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGJhc2VTY29wZURlcHRoLCBzb3VyY2VQcm92aWRl
ciwgMCwgMSwgYWx0ZXJuYXRpdmUpCiAgICAgewogICAgIH0KIApAQCAtMTM3Miw4ICsxMzc2LDgg
QEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBGdW5jdGlvbkNvZGVCbG9jayhGdW5jdGlv
bkV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayog
dW5saW5rZWRDb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQ
dHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBzb3VyY2VPZmZzZXQs
IFBhc3NPd25QdHI8Q29kZUJsb2NrPiBhbHRlcm5hdGl2ZSA9IG51bGxwdHIpCi0gICAgICAgIDog
Q29kZUJsb2NrKG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIGdsb2JhbE9iamVj
dCwgMCwgc291cmNlUHJvdmlkZXIsIHNvdXJjZU9mZnNldCwgYWx0ZXJuYXRpdmUpCisgICAgRnVu
Y3Rpb25Db2RlQmxvY2soRnVuY3Rpb25FeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlciwg
dW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQsIFBh
c3NPd25QdHI8Q29kZUJsb2NrPiBhbHRlcm5hdGl2ZSA9IG51bGxwdHIpCisgICAgICAgIDogQ29k
ZUJsb2NrKG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwg
MCwgc291cmNlUHJvdmlkZXIsIHNvdXJjZU9mZnNldCwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0LCBh
bHRlcm5hdGl2ZSkKICAgICB7CiAgICAgfQogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9FeHByZXNzaW9uUmFuZ2VJbmZvLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4cHJlc3Npb25SYW5nZUluZm8uaAkocmV2aXNp
b24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4cHJlc3Npb25S
YW5nZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsMTQgKzMxLDYxIEBACiBuYW1lc3BhY2UgSlND
IHsKIAogc3RydWN0IEV4cHJlc3Npb25SYW5nZUluZm8geworICAgIHN0cnVjdCBGYXRQb3NpdGlv
biB7CisgICAgICAgIHVpbnQzMl90IGxpbmU7CisgICAgICAgIHVpbnQzMl90IGNvbHVtbjsKKyAg
ICB9OworCisgICAgZW51bSB7CisgICAgICAgIE1vZGUwTGluZVNoaWZ0ID0gOCwKKyAgICAgICAg
TW9kZTBMaW5lTWFzayA9ICgxIDw8IDIyKSAtIDEsCisgICAgICAgIE1vZGUwQ29sdW1uTWFzayA9
ICgxIDw8IDgpIC0gMSwKKyAgICAgICAgTW9kZTFMaW5lU2hpZnQgPSAyMiwKKyAgICAgICAgTW9k
ZTFMaW5lTWFzayA9ICgxIDw8IDgpIC0gMSwKKyAgICAgICAgTW9kZTFDb2x1bW5NYXNrID0gKDEg
PDwgMjIpIC0gMQorICAgIH07CisKICAgICBlbnVtIHsKICAgICAgICAgTWF4T2Zmc2V0ID0gKDEg
PDwgNykgLSAxLCAKLSAgICAgICAgTWF4RGl2b3QgPSAoMSA8PCAyNSkgLSAxCisgICAgICAgIE1h
eERpdm90ID0gKDEgPDwgMjUpIC0gMSwKKyAgICAgICAgTWF4TW9kZTBMaW5lID0gKDEgPDwgMjIp
IC0gMSwKKyAgICAgICAgTWF4TW9kZTBDb2x1bW4gPSAoMSA8PCA4KSAtIDEsCisgICAgICAgIE1h
eE1vZGUxTGluZSA9ICgxIDw8IDgpIC0gMSwKKyAgICAgICAgTWF4TW9kZTFDb2x1bW4gPSAoMSA8
PCAyMikgLSAxCiAgICAgfTsKKworICAgIHZvaWQgZW5jb2RlTW9kZTAodW5zaWduZWQgbGluZSwg
dW5zaWduZWQgY29sdW1uKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGxpbmUgPD0gTWF4TW9kZTBM
aW5lKTsKKyAgICAgICAgQVNTRVJUKGNvbHVtbiA8PSBNYXhNb2RlMENvbHVtbik7CisgICAgICAg
IHBvc2l0aW9uID0gKChsaW5lICYgTW9kZTBMaW5lTWFzaykgPDwgTW9kZTBMaW5lU2hpZnQgfCAo
Y29sdW1uICYgTW9kZTBDb2x1bW5NYXNrKSk7CisgICAgfQorCisgICAgdm9pZCBlbmNvZGVNb2Rl
MSh1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBjb2x1bW4pCisgICAgeworICAgICAgICBBU1NFUlQo
bGluZSA8PSBNYXhNb2RlMUxpbmUpOworICAgICAgICBBU1NFUlQoY29sdW1uIDw9IE1heE1vZGUx
Q29sdW1uKTsKKyAgICAgICAgcG9zaXRpb24gPSAoKGxpbmUgJiBNb2RlMUxpbmVNYXNrKSA8PCBN
b2RlMUxpbmVTaGlmdCB8IChjb2x1bW4gJiBNb2RlMUNvbHVtbk1hc2spKTsKKyAgICB9CisKKyAg
ICB2b2lkIGRlY29kZU1vZGUwKHVuc2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYgY29sdW1uKQorICAg
IHsKKyAgICAgICAgbGluZSA9IChwb3NpdGlvbiA+PiBNb2RlMExpbmVTaGlmdCkgJiBNb2RlMExp
bmVNYXNrOworICAgICAgICBjb2x1bW4gPSBwb3NpdGlvbiAmIE1vZGUwQ29sdW1uTWFzazsKKyAg
ICB9CisKKyAgICB2b2lkIGRlY29kZU1vZGUxKHVuc2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYgY29s
dW1uKQorICAgIHsKKyAgICAgICAgbGluZSA9IChwb3NpdGlvbiA+PiBNb2RlMUxpbmVTaGlmdCkg
JiBNb2RlMUxpbmVNYXNrOworICAgICAgICBjb2x1bW4gPSBwb3NpdGlvbiAmIE1vZGUxQ29sdW1u
TWFzazsKKyAgICB9CisKICAgICB1aW50MzJfdCBpbnN0cnVjdGlvbk9mZnNldCA6IDI1OwotICAg
IHVpbnQzMl90IGRpdm90UG9pbnQgOiAyNTsKICAgICB1aW50MzJfdCBzdGFydE9mZnNldCA6IDc7
CisgICAgdWludDMyX3QgZGl2b3RQb2ludCA6IDI1OwogICAgIHVpbnQzMl90IGVuZE9mZnNldCA6
IDc7CisgICAgdWludDMyX3QgbW9kZSA6IDI7CisgICAgdWludDMyX3QgcG9zaXRpb24gOiAzMDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNTE5MjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIs
IDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC05Miw2ICs5Miw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OjpVbmxpbmtlZEZ1bmMKICAgICAsIG1fZmlyc3RMaW5lT2Zmc2V0KG5vZGUtPmZpcnN0TGluZSgp
IC0gc291cmNlLmZpcnN0TGluZSgpKQogICAgICwgbV9saW5lQ291bnQobm9kZS0+bGFzdExpbmUo
KSAtIG5vZGUtPmZpcnN0TGluZSgpKQogICAgICwgbV9mdW5jdGlvblN0YXJ0T2Zmc2V0KG5vZGUt
PmZ1bmN0aW9uU3RhcnQoKSAtIHNvdXJjZS5zdGFydE9mZnNldCgpKQorICAgICwgbV9mdW5jdGlv
blN0YXJ0Q29sdW1uKG5vZGUtPnN0YXJ0Q29sdW1uKCkpCiAgICAgLCBtX3N0YXJ0T2Zmc2V0KG5v
ZGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCkgLSBzb3VyY2Uuc3RhcnRPZmZzZXQoKSkKICAgICAs
IG1fc291cmNlTGVuZ3RoKG5vZGUtPnNvdXJjZSgpLmxlbmd0aCgpKQogICAgICwgbV9mZWF0dXJl
cyhub2RlLT5mZWF0dXJlcygpKQpAQCAtMTIyLDggKzEyMyw5IEBAIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogVW5saW5rZWRGdW5jdGlvbkV4ZWMKIHsKICAgICB1bnNpZ25lZCBmaXJzdExpbmUgPSBsaW5l
T2Zmc2V0ICsgbV9maXJzdExpbmVPZmZzZXQ7CiAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBz
b3VyY2VPZmZzZXQgKyBtX3N0YXJ0T2Zmc2V0OwotICAgIFNvdXJjZUNvZGUgY29kZShzb3VyY2Uu
cHJvdmlkZXIoKSwgc3RhcnRPZmZzZXQsIHN0YXJ0T2Zmc2V0ICsgbV9zb3VyY2VMZW5ndGgsIGZp
cnN0TGluZSk7Ci0gICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBjb2Rl
LCB0aGlzLCBmaXJzdExpbmUsIGZpcnN0TGluZSArIG1fbGluZUNvdW50KTsKKyAgICB1bnNpZ25l
ZCBzdGFydENvbHVtbiA9IG1fZnVuY3Rpb25TdGFydENvbHVtbiArIDE7IC8vIENvbnZlcnQgdG8g
YmFzZSAxLgorICAgIFNvdXJjZUNvZGUgY29kZShzb3VyY2UucHJvdmlkZXIoKSwgc3RhcnRPZmZz
ZXQsIHN0YXJ0T2Zmc2V0ICsgbV9zb3VyY2VMZW5ndGgsIGZpcnN0TGluZSwgc3RhcnRDb2x1bW4p
OworICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgY29kZSwgdGhpcywg
Zmlyc3RMaW5lLCBmaXJzdExpbmUgKyBtX2xpbmVDb3VudCwgc3RhcnRDb2x1bW4pOwogfQogCiBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZy
b21HbG9iYWxDb2RlKGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEV4ZWNTdGF0ZSogZXhlYywgRGVi
dWdnZXIqLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTT2JqZWN0KiogZXhjZXB0aW9uKQpA
QCAtMjM2LDI0ICsyMzgsMTcgQEAgdm9pZCBVbmxpbmtlZENvZGVCbG9jazo6dmlzaXRDaGlsZHJl
bihKUwogaW50IFVubGlua2VkQ29kZUJsb2NrOjpsaW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQo
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCiB7CiAgICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0IDwg
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSAgICBWZWN0b3I8TGluZUluZm8+JiBsaW5lSW5mbyA9
IG1fbGluZUluZm87Ci0gICAgCi0gICAgaW50IGxvdyA9IDA7Ci0gICAgaW50IGhpZ2ggPSBsaW5l
SW5mby5zaXplKCk7Ci0gICAgd2hpbGUgKGxvdyA8IGhpZ2gpIHsKLSAgICAgICAgaW50IG1pZCA9
IGxvdyArIChoaWdoIC0gbG93KSAvIDI7Ci0gICAgICAgIGlmIChsaW5lSW5mb1ttaWRdLmluc3Ry
dWN0aW9uT2Zmc2V0IDw9IGJ5dGVjb2RlT2Zmc2V0KQotICAgICAgICAgICAgbG93ID0gbWlkICsg
MTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaGlnaCA9IG1pZDsKLSAgICB9Ci0gICAgCi0g
ICAgaWYgKCFsb3cpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBsaW5lSW5mb1tsb3cg
LSAxXS5saW5lTnVtYmVyOworICAgIGludCBkaXZvdDsKKyAgICBpbnQgc3RhcnRPZmZzZXQ7Cisg
ICAgaW50IGVuZE9mZnNldDsKKyAgICB1bnNpZ25lZCBsaW5lOworICAgIHVuc2lnbmVkIGNvbHVt
bjsKKyAgICBleHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCwg
ZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGxpbmUsIGNvbHVtbik7CisgICAgcmV0dXJu
IGxpbmU7CiB9CiAKLXZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OmV4cHJlc3Npb25SYW5nZUZvckJ5
dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBpbnQmIGRpdm90LCBpbnQmIHN0
YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCkKK3ZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OmV4cHJl
c3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LAorICAg
IGludCYgZGl2b3QsIGludCYgc3RhcnRPZmZzZXQsIGludCYgZW5kT2Zmc2V0LCB1bnNpZ25lZCYg
bGluZSwgdW5zaWduZWQmIGNvbHVtbikKIHsKICAgICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgPCBp
bnN0cnVjdGlvbnMoKS5zaXplKCkpOwogCkBAIC0yNjEsNiArMjU2LDggQEAgdm9pZCBVbmxpbmtl
ZENvZGVCbG9jazo6ZXhwcmVzc2lvblJhbmdlRgogICAgICAgICBzdGFydE9mZnNldCA9IDA7CiAg
ICAgICAgIGVuZE9mZnNldCA9IDA7CiAgICAgICAgIGRpdm90ID0gMDsKKyAgICAgICAgbGluZSA9
IDA7CisgICAgICAgIGNvbHVtbiA9IDA7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI3
NywxNiArMjc0LDgxIEBAIHZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OmV4cHJlc3Npb25SYW5nZUYK
ICAgICB9CiAKICAgICBBU1NFUlQobG93KTsKLSAgICBpZiAoIWxvdykgeworICAgIGlmICghbG93
KQorICAgICAgICBsb3cgPSAxOyAvLyBVc2UgbmVhcmVzdCBuZWlnaGJvciBpLmUuIDFzdCBlbnRy
eS4KKworICAgIEV4cHJlc3Npb25SYW5nZUluZm8mIGluZm8gPSBleHByZXNzaW9uSW5mb1tsb3cg
LSAxXTsKKyAgICBzdGFydE9mZnNldCA9IGluZm8uc3RhcnRPZmZzZXQ7CisgICAgZW5kT2Zmc2V0
ID0gaW5mby5lbmRPZmZzZXQ7CisgICAgZGl2b3QgPSBpbmZvLmRpdm90UG9pbnQ7CisKKyAgICBz
d2l0Y2ggKGluZm8ubW9kZSkgeworICAgIGNhc2UgMDoKKyAgICAgICAgaW5mby5kZWNvZGVNb2Rl
MChsaW5lLCBjb2x1bW4pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDE6CisgICAgICAgIGlu
Zm8uZGVjb2RlTW9kZTEobGluZSwgY29sdW1uKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAy
OiB7CisgICAgICAgIHVuc2lnbmVkIGZhdEluZGV4ID0gaW5mby5wb3NpdGlvbjsKKyAgICAgICAg
RXhwcmVzc2lvblJhbmdlSW5mbzo6RmF0UG9zaXRpb24mIGZhdFBvcyA9IG1fcmFyZURhdGEtPm1f
ZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnNbZmF0SW5kZXhdOworICAgICAgICBsaW5lID0gZmF0
UG9zLmxpbmU7CisgICAgICAgIGNvbHVtbiA9IGZhdFBvcy5jb2x1bW47CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICB9IC8vIHN3aXRjaAorfQorCit2b2lkIFVubGlua2VkQ29kZUJsb2NrOjph
ZGRFeHByZXNzaW9uSW5mbyh1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCwKKyAgICBpbnQgZGl2
b3QsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCwgdW5zaWduZWQgbGluZSwgdW5zaWdu
ZWQgY29sdW1uKQoreworICAgIGlmIChkaXZvdCA+IEV4cHJlc3Npb25SYW5nZUluZm86Ok1heERp
dm90KSB7CisgICAgICAgIC8vIE92ZXJmbG93IGhhcyBvY2N1cnJlZCwgd2UgY2FuIG9ubHkgZ2l2
ZSBsaW5lIG51bWJlciBpbmZvIGZvciBlcnJvcnMgZm9yIHRoaXMgcmVnaW9uCisgICAgICAgIGRp
dm90ID0gMDsKICAgICAgICAgc3RhcnRPZmZzZXQgPSAwOwogICAgICAgICBlbmRPZmZzZXQgPSAw
OwotICAgICAgICBkaXZvdCA9IDA7Ci0gICAgICAgIHJldHVybjsKKyAgICB9IGVsc2UgaWYgKHN0
YXJ0T2Zmc2V0ID4gRXhwcmVzc2lvblJhbmdlSW5mbzo6TWF4T2Zmc2V0KSB7CisgICAgICAgIC8v
IElmIHRoZSBzdGFydCBvZmZzZXQgaXMgb3V0IG9mIGJvdW5kcyB3ZSBjbGVhciBib3RoIG9mZnNl
dHMKKyAgICAgICAgLy8gc28gd2Ugb25seSBnZXQgdGhlIGRpdm90IG1hcmtlci4gRXJyb3IgbWVz
c2FnZSB3aWxsIGhhdmUgdG8gYmUgcmVkdWNlZAorICAgICAgICAvLyB0byBsaW5lIGFuZCBjaGFy
UG9zaXRpb24gbnVtYmVyLgorICAgICAgICBzdGFydE9mZnNldCA9IDA7CisgICAgICAgIGVuZE9m
ZnNldCA9IDA7CisgICAgfSBlbHNlIGlmIChlbmRPZmZzZXQgPiBFeHByZXNzaW9uUmFuZ2VJbmZv
OjpNYXhPZmZzZXQpIHsKKyAgICAgICAgLy8gVGhlIGVuZCBvZmZzZXQgaXMgb25seSB1c2VkIGZv
ciBhZGRpdGlvbmFsIGNvbnRleHQsIGFuZCBpcyBtdWNoIG1vcmUgbGlrZWx5CisgICAgICAgIC8v
IHRvIG92ZXJmbG93IChlZy4gZnVuY3Rpb24gY2FsbCBhcmd1bWVudHMpIHNvIHdlIGFyZSB3aWxs
aW5nIHRvIGRyb3AgaXQgd2l0aG91dAorICAgICAgICAvLyBkcm9wcGluZyB0aGUgcmVzdCBvZiB0
aGUgcmFuZ2UuCisgICAgICAgIGVuZE9mZnNldCA9IDA7CisgICAgfQorCisgICAgdW5zaWduZWQg
cG9zaXRpb25Nb2RlID0KKyAgICAgICAgKGxpbmUgPD0gRXhwcmVzc2lvblJhbmdlSW5mbzo6TWF4
TW9kZTBMaW5lICYmIGNvbHVtbiA8PSBFeHByZXNzaW9uUmFuZ2VJbmZvOjpNYXhNb2RlMENvbHVt
bikgPyAwCisgICAgICAgIDogKGxpbmUgPD0gRXhwcmVzc2lvblJhbmdlSW5mbzo6TWF4TW9kZTFM
aW5lICYmIGNvbHVtbiA8PSBFeHByZXNzaW9uUmFuZ2VJbmZvOjpNYXhNb2RlMUNvbHVtbikgPyAx
CisgICAgICAgIDogMjsKKworICAgIEV4cHJlc3Npb25SYW5nZUluZm8gaW5mbzsKKyAgICBpbmZv
Lmluc3RydWN0aW9uT2Zmc2V0ID0gaW5zdHJ1Y3Rpb25PZmZzZXQ7CisgICAgaW5mby5kaXZvdFBv
aW50ID0gZGl2b3Q7CisgICAgaW5mby5zdGFydE9mZnNldCA9IHN0YXJ0T2Zmc2V0OworICAgIGlu
Zm8uZW5kT2Zmc2V0ID0gZW5kT2Zmc2V0OworCisgICAgaW5mby5tb2RlID0gcG9zaXRpb25Nb2Rl
OworICAgIHN3aXRjaCAocG9zaXRpb25Nb2RlKSB7CisgICAgY2FzZSAwOgorICAgICAgICBpbmZv
LmVuY29kZU1vZGUwKGxpbmUsIGNvbHVtbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMToK
KyAgICAgICAgaW5mby5lbmNvZGVNb2RlMShsaW5lLCBjb2x1bW4pOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIDI6IHsKKyAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOworICAg
ICAgICB1bnNpZ25lZCBmYXRJbmRleCA9IG1fcmFyZURhdGEtPm1fZXhwcmVzc2lvbkluZm9GYXRQ
b3NpdGlvbnMuc2l6ZSgpOworICAgICAgICBFeHByZXNzaW9uUmFuZ2VJbmZvOjpGYXRQb3NpdGlv
biBmYXRQb3MgPSB7IGxpbmUsIGNvbHVtbiB9OworICAgICAgICBtX3JhcmVEYXRhLT5tX2V4cHJl
c3Npb25JbmZvRmF0UG9zaXRpb25zLmFwcGVuZChmYXRQb3MpOworICAgICAgICBpbmZvLnBvc2l0
aW9uID0gZmF0SW5kZXg7CiAgICAgfQorICAgIH07CiAKLSAgICBzdGFydE9mZnNldCA9IGV4cHJl
c3Npb25JbmZvW2xvdyAtIDFdLnN0YXJ0T2Zmc2V0OwotICAgIGVuZE9mZnNldCA9IGV4cHJlc3Np
b25JbmZvW2xvdyAtIDFdLmVuZE9mZnNldDsKLSAgICBkaXZvdCA9IGV4cHJlc3Npb25JbmZvW2xv
dyAtIDFdLmRpdm90UG9pbnQ7CisgICAgbV9leHByZXNzaW9uSW5mby5hcHBlbmQoaW5mbyk7CiB9
CiAKIHZvaWQgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkocmV2aXNpb24gMTUxOTIwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgZmly
c3RMaW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdExpbmVPZmZzZXQ7IH0KICAgICB1
bnNpZ25lZCBsaW5lQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2xpbmVDb3VudDsgfQogICAgIHVu
c2lnbmVkIGZ1bmN0aW9uU3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uU3Rh
cnRPZmZzZXQ7IH0KKyAgICB1bnNpZ25lZCBmdW5jdGlvblN0YXJ0Q29sdW1uKCkgY29uc3QgeyBy
ZXR1cm4gbV9mdW5jdGlvblN0YXJ0Q29sdW1uOyB9CiAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQo
KSBjb25zdCB7IHJldHVybiBtX3N0YXJ0T2Zmc2V0OyB9CiAgICAgdW5zaWduZWQgc291cmNlTGVu
Z3RoKCkgeyByZXR1cm4gbV9zb3VyY2VMZW5ndGg7IH0KIApAQCAtMTU5LDYgKzE2MCw3IEBAIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQgbV9maXJzdExpbmVPZmZzZXQ7CiAgICAgdW5zaWduZWQgbV9s
aW5lQ291bnQ7CiAgICAgdW5zaWduZWQgbV9mdW5jdGlvblN0YXJ0T2Zmc2V0OworICAgIHVuc2ln
bmVkIG1fZnVuY3Rpb25TdGFydENvbHVtbjsKICAgICB1bnNpZ25lZCBtX3N0YXJ0T2Zmc2V0Owog
ICAgIHVuc2lnbmVkIG1fc291cmNlTGVuZ3RoOwogCkBAIC0yNDUsMTkgKzI0Nyw4IEBAIHB1Ymxp
YzoKICAgICBib29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRz
RnVsbFNjb3BlQ2hhaW47IH0KICAgICB2b2lkIHNldE5lZWRzRnVsbFNjb3BlQ2hhaW4oYm9vbCBu
ZWVkc0Z1bGxTY29wZUNoYWluKSB7IG1fbmVlZHNGdWxsU2NvcGVDaGFpbiA9IG5lZWRzRnVsbFNj
b3BlQ2hhaW47IH0KIAotICAgIHZvaWQgYWRkRXhwcmVzc2lvbkluZm8oY29uc3QgRXhwcmVzc2lv
blJhbmdlSW5mbyYgZXhwcmVzc2lvbkluZm8pCi0gICAgewotICAgICAgICBtX2V4cHJlc3Npb25J
bmZvLmFwcGVuZChleHByZXNzaW9uSW5mbyk7Ci0gICAgfQotCi0gICAgdm9pZCBhZGRMaW5lSW5m
byh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgaW50IGxpbmVObykKLSAgICB7Ci0gICAgICAgIFZl
Y3RvcjxMaW5lSW5mbz4mIGxpbmVJbmZvID0gbV9saW5lSW5mbzsKLSAgICAgICAgaWYgKCFsaW5l
SW5mby5zaXplKCkgfHwgbGluZUluZm8ubGFzdCgpLmxpbmVOdW1iZXIgIT0gbGluZU5vKSB7Ci0g
ICAgICAgICAgICBMaW5lSW5mbyBpbmZvID0geyBieXRlY29kZU9mZnNldCwgbGluZU5vIH07Ci0g
ICAgICAgICAgICBsaW5lSW5mby5hcHBlbmQoaW5mbyk7Ci0gICAgICAgIH0KLSAgICB9CisgICAg
dm9pZCBhZGRFeHByZXNzaW9uSW5mbyh1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCwgaW50IGRp
dm90LAorICAgICAgICBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIHVuc2lnbmVkIGxp
bmUsIHVuc2lnbmVkIGNvbHVtbik7CiAKICAgICBib29sIGhhc0V4cHJlc3Npb25JbmZvKCkgeyBy
ZXR1cm4gbV9leHByZXNzaW9uSW5mby5zaXplKCk7IH0KIApAQCAtMzMxLDcgKzMyMiw2IEBAIHB1
YmxpYzoKICAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVycy5zaHJpbmtUb0ZpdCgpOwogICAgICAg
ICBtX2Z1bmN0aW9uRGVjbHMuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgbV9mdW5jdGlvbkV4cHJz
LnNocmlua1RvRml0KCk7Ci0gICAgICAgIG1fbGluZUluZm8uc2hyaW5rVG9GaXQoKTsKICAgICAg
ICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICBt
X2V4cHJlc3Npb25JbmZvLnNocmlua1RvRml0KCk7CiAKQEAgLTM0NSw2ICszMzUsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMu
c2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fY2hhcmFjdGVyU3dpdGNo
SnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJp
bmdTd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7CisgICAgICAgICAgICBtX3JhcmVEYXRh
LT5tX2V4cHJlc3Npb25JbmZvRmF0UG9zaXRpb25zLnNocmlua1RvRml0KCk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTQ1Niw3ICs0NDcsOCBAQCBwdWJsaWM6CiAKICAgICBpbnQgbGluZU51bWJl
ckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKIAotICAgIHZvaWQg
ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IGludCYgZGl2b3QsIGludCYgc3RhcnRPZmZzZXQsIGludCYgZW5kT2Zmc2V0KTsKKyAgICB2b2lk
IGV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBpbnQmIGRpdm90LAorICAgICAgICBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCwg
dW5zaWduZWQmIGxpbmUsIHVuc2lnbmVkJiBjb2x1bW4pOwogCiAgICAgdm9pZCByZWNvcmRQYXJz
ZShDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMsIHVuc2ln
bmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGluZUNvdW50KQogICAgIHsKQEAgLTUzNCw4ICs1MjYs
NiBAQCBwcml2YXRlOgogCiAgICAgV3JpdGVCYXJyaWVyPFNoYXJlZFN5bWJvbFRhYmxlPiBtX3N5
bWJvbFRhYmxlOwogCi0gICAgVmVjdG9yPExpbmVJbmZvPiBtX2xpbmVJbmZvOwotCiAgICAgVmVj
dG9yPHVuc2lnbmVkPiBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zOwogCiAjaWYgRU5BQkxF
KEJZVEVDT0RFX0NPTU1FTlRTKQpAQCAtNTY4LDYgKzU1OCw4IEBAIHB1YmxpYzoKICAgICAgICAg
VmVjdG9yPFVubGlua2VkU2ltcGxlSnVtcFRhYmxlPiBtX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJs
ZXM7CiAgICAgICAgIFZlY3RvcjxVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZT4gbV9zdHJpbmdTd2l0
Y2hKdW1wVGFibGVzOwogICAgICAgICBSZWZQdHI8Q29kZUNhY2hlPiBtX2V2YWxDb2RlQ2FjaGU7
CisKKyAgICAgICAgVmVjdG9yPEV4cHJlc3Npb25SYW5nZUluZm86OkZhdFBvc2l0aW9uPiBtX2V4
cHJlc3Npb25JbmZvRmF0UG9zaXRpb25zOwogICAgIH07CiAKIHByaXZhdGU6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAkocmV2aXNpb24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MDEs
OSArMTcwMSw5IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnUKICAg
ICByZXR1cm4gcjA7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2Fs
bChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24gZXhw
ZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50cywgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCitSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMm
IGNhbGxBcmd1bWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBsaW5lU3RhcnQpCiB7Ci0g
ICAgcmV0dXJuIGVtaXRDYWxsKG9wX2NhbGwsIGRzdCwgZnVuYywgZXhwZWN0ZWRGdW5jdGlvbiwg
Y2FsbEFyZ3VtZW50cywgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpOworICAgIHJldHVy
biBlbWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBsaW5lLCBsaW5lU3RhcnQpOwog
fQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpjcmVhdGVBcmd1bWVudHNJZk5lY2Vzc2FyeSgp
CkBAIC0xNzM0LDkgKzE3MzQsOSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpjcmVhdGVBY3Rp
dmF0aW9uCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fYWN0aXZhdGlvblJlZ2lzdGVyLT5p
bmRleCgpKTsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRXZh
bChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIENhbGxBcmd1bWVudHMmIGNhbGxB
cmd1bWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRXZhbChS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIENhbGxBcmd1bWVudHMmIGNhbGxBcmd1
bWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0LCB1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBsaW5lU3RhcnQpCiB7Ci0gICAgcmV0dXJu
IGVtaXRDYWxsKG9wX2NhbGxfZXZhbCwgZHN0LCBmdW5jLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNh
bGxBcmd1bWVudHMsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKKyAgICByZXR1cm4g
ZW1pdENhbGwob3BfY2FsbF9ldmFsLCBkc3QsIGZ1bmMsIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2Fs
bEFyZ3VtZW50cywgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGxpbmUsIGxpbmVTdGFy
dCk7CiB9CiAKIEV4cGVjdGVkRnVuY3Rpb24gQnl0ZWNvZGVHZW5lcmF0b3I6OmV4cGVjdGVkRnVu
Y3Rpb25Gb3JJZGVudGlmaWVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCkBAIC0xODE0
LDcgKzE4MTQsNyBAQCBFeHBlY3RlZEZ1bmN0aW9uIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0CiAg
ICAgcmV0dXJuIGV4cGVjdGVkRnVuY3Rpb247CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0Q2FsbChPcGNvZGVJRCBvcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1
bWVudHMmIGNhbGxBcmd1bWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRDYWxsKE9wY29kZUlEIG9wY29kZUlELCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1
bmMsIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2Fs
bEFyZ3VtZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGxpbmVTdGFydCkKIHsKICAgICBB
U1NFUlQob3Bjb2RlSUQgPT0gb3BfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF9jYWxsX2V2YWwpOwog
ICAgIEFTU0VSVChmdW5jLT5yZWZDb3VudCgpKTsKQEAgLTE4MzcsNyArMTgzNyw3IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCgKICAgICAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGNhbGxBcmd1bWVudHMucHJvZmlsZUhvb2tSZWdpc3RlcigpLT5pbmRleCgpKTsK
ICAgICB9CiAKLSAgICBlbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpOworICAgIGVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9m
ZnNldCwgbGluZSwgbGluZVN0YXJ0KTsKIAogICAgIFJlZlB0cjxMYWJlbD4gZG9uZSA9IG5ld0xh
YmVsKCk7CiAgICAgZXhwZWN0ZWRGdW5jdGlvbiA9IGVtaXRFeHBlY3RlZEZ1bmN0aW9uU25pcHBl
dChkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRvbmUuZ2V0KCkp
OwpAQCAtMTg3MSw3ICsxODcxLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRDYWxsKAogICAgIHJldHVybiBkc3Q7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q2FsbFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBS
ZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJ
RCogZmlyc3RGcmVlUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHByb2ZpbGVIb29rUmVnaXN0ZXIsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQor
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsVmFyYXJncyhSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0
ZXJJRCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgUmVnaXN0ZXJJ
RCogcHJvZmlsZUhvb2tSZWdpc3RlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGxpbmVTdGFy
dCkKIHsKICAgICBpZiAobV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzKSB7CiAgICAgICAgIGVtaXRN
b3ZlKHByb2ZpbGVIb29rUmVnaXN0ZXIsIGZ1bmMpOwpAQCAtMTg3OSw3ICsxODc5LDcgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsVgogICAgICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQocHJvZmlsZUhvb2tSZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgfQogICAgIAot
ICAgIGVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCk7Cisg
ICAgZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBsaW5l
LCBsaW5lU3RhcnQpOwogCiAgICAgLy8gRW1pdCBjYWxsLgogICAgIGVtaXRPcGNvZGUob3BfY2Fs
bF92YXJhcmdzKTsKQEAgLTE5MzEsNyArMTkzMSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0VW5hcnkKICAgICByZXR1cm4gc3JjOwogfQogCi1SZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0cnVjdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYg
Y2FsbEFyZ3VtZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0
cnVjdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24g
ZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50cywgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVk
IGxpbmUsIHVuc2lnbmVkIGxpbmVTdGFydCkKIHsKICAgICBBU1NFUlQoZnVuYy0+cmVmQ291bnQo
KSk7CiAKQEAgLTE5NTUsNyArMTk1NSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0Q29uc3QKICAgICBmb3IgKGludCBpID0gMDsgaSA8IEpTU3RhY2s6OkNhbGxGcmFtZUhl
YWRlclNpemU7ICsraSkKICAgICAgICAgY2FsbEZyYW1lLmFwcGVuZChuZXdUZW1wb3JhcnkoKSk7
CiAKLSAgICBlbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQp
OworICAgIGVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwg
bGluZSwgbGluZVN0YXJ0KTsKICAgICAKICAgICBSZWZQdHI8TGFiZWw+IGRvbmUgPSBuZXdMYWJl
bCgpOwogICAgIGV4cGVjdGVkRnVuY3Rpb24gPSBlbWl0RXhwZWN0ZWRGdW5jdGlvblNuaXBwZXQo
ZHN0LCBmdW5jLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkb25lLmdldCgpKTsK
QEAgLTIwMjUsNyArMjAyNSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQb3BTY29w
ZSgpCiAgICAgbV9keW5hbWljU2NvcGVEZXB0aC0tOwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0RGVidWdIb29rKERlYnVnSG9va0lEIGRlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5l
LCBpbnQgbGFzdExpbmUsIGludCBjaGFyUG9zaXRpb24pCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0RGVidWdIb29rKERlYnVnSG9va0lEIGRlYnVnSG9va0lELCB1bnNpZ25lZCBmaXJzdExp
bmUsIHVuc2lnbmVkIGxhc3RMaW5lLCB1bnNpZ25lZCBjaGFyT2Zmc2V0LCB1bnNpZ25lZCBsaW5l
U3RhcnQpCiB7CiAjaWYgRU5BQkxFKERFQlVHX1dJVEhfQlJFQUtQT0lOVCkKICAgICBpZiAoZGVi
dWdIb29rSUQgIT0gRGlkUmVhY2hCcmVha3BvaW50KQpAQCAtMjAzNCw3ICsyMDM0LDggQEAgdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayhEZQogICAgIGlmICghbV9zaG91bGRF
bWl0RGVidWdIb29rcykKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCi0gICAgZW1pdEV4cHJlc3Np
b25JbmZvKGNoYXJQb3NpdGlvbiwgMCwgMCk7CisgICAgZW1pdEV4cHJlc3Npb25JbmZvKGNoYXJP
ZmZzZXQsIDAsIDAsIGZpcnN0TGluZSwgbGluZVN0YXJ0KTsKKyAgICB1bnNpZ25lZCBjaGFyUG9z
aXRpb24gPSBjaGFyT2Zmc2V0IC0gbV9zY29wZU5vZGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCk7
CiAgICAgZW1pdE9wY29kZShvcF9kZWJ1Zyk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRl
YnVnSG9va0lEKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZmlyc3RMaW5lKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzM5LDcg
KzMzOSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICAvLyBOb2Rl
OjplbWl0Q29kZSBhc3N1bWVzIHRoYXQgZHN0LCBpZiBwcm92aWRlZCwgaXMgZWl0aGVyIGEgbG9j
YWwgb3IgYSByZWZlcmVuY2VkIHRlbXBvcmFyeS4KICAgICAgICAgICAgIEFTU0VSVCghZHN0IHx8
IGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkgfHwgIWRzdC0+aXNUZW1wb3JhcnkoKSB8fCBkc3QtPnJl
ZkNvdW50KCkpOwotICAgICAgICAgICAgYWRkTGluZUluZm8obi0+bGluZU5vKCkpOwogICAgICAg
ICAgICAgaWYgKCFtX3N0YWNrLmlzU2FmZVRvUmVjdXJzZSgpKSB7CiAgICAgICAgICAgICAgICAg
ZW1pdFRocm93RXhwcmVzc2lvblRvb0RlZXBFeGNlcHRpb24oKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0zNTYsNyArMzU1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAg
ICAgICAgICAgIC8vIE5vZGU6OmVtaXRDb2RlIGFzc3VtZXMgdGhhdCBkc3QsIGlmIHByb3ZpZGVk
LCBpcyBlaXRoZXIgYSBsb2NhbCBvciBhIHJlZmVyZW5jZWQgdGVtcG9yYXJ5LgogICAgICAgICAg
ICAgQVNTRVJUKCFkc3QgfHwgZHN0ID09IGlnbm9yZWRSZXN1bHQoKSB8fCAhZHN0LT5pc1RlbXBv
cmFyeSgpIHx8IGRzdC0+cmVmQ291bnQoKSk7Ci0gICAgICAgICAgICBhZGRMaW5lSW5mbyhuLT5s
aW5lTm8oKSk7CiAgICAgICAgICAgICBpZiAoIW1fc3RhY2suaXNTYWZlVG9SZWN1cnNlKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGVtaXRUaHJvd0V4cHJlc3Npb25Ub29EZWVwRXhjZXB0aW9u
KCk7CiAgICAgICAgICAgICByZXR1cm4gbi0+ZW1pdEJ5dGVjb2RlKCp0aGlzLCBkc3QpOwpAQCAt
MzY5LDcgKzM2Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgZW1pdE5vZGVJ
bkNvbmRpdGlvbkNvbnRleHQoRXhwcmVzc2lvbk5vZGUqIG4sIExhYmVsKiB0cnVlVGFyZ2V0LCBM
YWJlbCogZmFsc2VUYXJnZXQsIEZhbGxUaHJvdWdoTW9kZSBmYWxsVGhyb3VnaE1vZGUpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGFkZExpbmVJbmZvKG4tPmxpbmVObygpKTsKICAgICAgICAgICAg
IGlmICghbV9zdGFjay5pc1NhZmVUb1JlY3Vyc2UoKSkgewogICAgICAgICAgICAgICAgIGVtaXRU
aHJvd0V4cHJlc3Npb25Ub29EZWVwRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMzc4LDMzICszNzUsMzUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBuLT5l
bWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoKnRoaXMsIHRydWVUYXJnZXQsIGZhbHNlVGFy
Z2V0LCBmYWxsVGhyb3VnaE1vZGUpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBlbWl0RXhw
cmVzc2lvbkluZm8odW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpCisgICAgICAgIHZvaWQgZW1pdEV4cHJlc3Npb25JbmZvV2l0aFBvc2l0aW9u
cyhpbnQgZGl2b3RQb3MsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCwgdW5zaWduZWQg
bGluZSwgaW50IGxpbmVTdGFydFBvcykKICAgICAgICAgewotICAgICAgICAgICAgZGl2b3QgLT0g
bV9zY29wZU5vZGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCk7Ci0gICAgICAgICAgICBpZiAoZGl2
b3QgPiBFeHByZXNzaW9uUmFuZ2VJbmZvOjpNYXhEaXZvdCkgewotICAgICAgICAgICAgICAgIC8v
IE92ZXJmbG93IGhhcyBvY2N1cnJlZCwgd2UgY2FuIG9ubHkgZ2l2ZSBsaW5lIG51bWJlciBpbmZv
IGZvciBlcnJvcnMgZm9yIHRoaXMgcmVnaW9uCi0gICAgICAgICAgICAgICAgZGl2b3QgPSAwOwot
ICAgICAgICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gMDsKLSAgICAgICAgICAgICAgICBlbmRPZmZz
ZXQgPSAwOwotICAgICAgICAgICAgfSBlbHNlIGlmIChzdGFydE9mZnNldCA+IEV4cHJlc3Npb25S
YW5nZUluZm86Ok1heE9mZnNldCkgewotICAgICAgICAgICAgICAgIC8vIElmIHRoZSBzdGFydCBv
ZmZzZXQgaXMgb3V0IG9mIGJvdW5kcyB3ZSBjbGVhciBib3RoIG9mZnNldHMKLSAgICAgICAgICAg
ICAgICAvLyBzbyB3ZSBvbmx5IGdldCB0aGUgZGl2b3QgbWFya2VyLiAgRXJyb3IgbWVzc2FnZSB3
aWxsIGhhdmUgdG8gYmUgcmVkdWNlZAotICAgICAgICAgICAgICAgIC8vIHRvIGxpbmUgYW5kIGNo
YXJQb3NpdGlvbiBudW1iZXIuCi0gICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQgPSAwOwotICAg
ICAgICAgICAgICAgIGVuZE9mZnNldCA9IDA7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGVuZE9m
ZnNldCA+IEV4cHJlc3Npb25SYW5nZUluZm86Ok1heE9mZnNldCkgewotICAgICAgICAgICAgICAg
IC8vIFRoZSBlbmQgb2Zmc2V0IGlzIG9ubHkgdXNlZCBmb3IgYWRkaXRpb25hbCBjb250ZXh0LCBh
bmQgaXMgbXVjaCBtb3JlIGxpa2VseQotICAgICAgICAgICAgICAgIC8vIHRvIG92ZXJmbG93IChl
Zy4gZnVuY3Rpb24gY2FsbCBhcmd1bWVudHMpIHNvIHdlIGFyZSB3aWxsaW5nIHRvIGRyb3AgaXQg
d2l0aG91dAotICAgICAgICAgICAgICAgIC8vIGRyb3BwaW5nIHRoZSByZXN0IG9mIHRoZSByYW5n
ZS4KLSAgICAgICAgICAgICAgICBlbmRPZmZzZXQgPSAwOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgCi0gICAgICAgICAgICBFeHByZXNzaW9uUmFuZ2VJbmZvIGluZm87Ci0gICAgICAgICAg
ICBpbmZvLmluc3RydWN0aW9uT2Zmc2V0ID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAgICAg
ICAgICAgaW5mby5kaXZvdFBvaW50ID0gZGl2b3Q7Ci0gICAgICAgICAgICBpbmZvLnN0YXJ0T2Zm
c2V0ID0gc3RhcnRPZmZzZXQ7Ci0gICAgICAgICAgICBpbmZvLmVuZE9mZnNldCA9IGVuZE9mZnNl
dDsKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRFeHByZXNzaW9uSW5mbyhpbmZvKTsKKyAg
ICAgICAgICAgIGludCBzb3VyY2VPZmZzZXQgPSBtX3Njb3BlTm9kZS0+c291cmNlKCkuc3RhcnRP
ZmZzZXQoKTsKKyAgICAgICAgICAgIGludCBkaXZvdCA9IHNvdXJjZU9mZnNldCArIGRpdm90UG9z
OworICAgICAgICAgICAgaW50IGxpbmVTdGFydCA9IHNvdXJjZU9mZnNldCArIGxpbmVTdGFydFBv
czsKKyAgICAgICAgICAgIGVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCwgc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldCwgbGluZSwgbGluZVN0YXJ0KTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZW1p
dEV4cHJlc3Npb25JbmZvKGludCBkaXZvdCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0
LCB1bnNpZ25lZCBsaW5lLCBpbnQgbGluZVN0YXJ0KQorICAgICAgICB7CisgICAgICAgICAgICBp
bnQgc291cmNlT2Zmc2V0ID0gbV9zY29wZU5vZGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCk7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBmaXJzdExpbmUgPSBtX3Njb3BlTm9kZS0+c291cmNlKCkuZmly
c3RMaW5lKCk7CisKKyAgICAgICAgICAgIEFTU0VSVChkaXZvdCA+PSBsaW5lU3RhcnQpOworICAg
ICAgICAgICAgQVNTRVJUKGRpdm90ID49IHNvdXJjZU9mZnNldCk7CisgICAgICAgICAgICBkaXZv
dCAtPSBzb3VyY2VPZmZzZXQ7CisKKyAgICAgICAgICAgIGlmIChsaW5lU3RhcnQgPiBzb3VyY2VP
ZmZzZXQpCisgICAgICAgICAgICAgICAgbGluZVN0YXJ0IC09IHNvdXJjZU9mZnNldDsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsaW5lU3RhcnQgPSAwOworCisgICAgICAgICAg
ICBBU1NFUlQobGluZSA+PSBmaXJzdExpbmUpOworICAgICAgICAgICAgbGluZSAtPSBmaXJzdExp
bmU7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0ID0gaW5zdHJ1Y3Rp
b25zKCkuc2l6ZSgpOworICAgICAgICAgICAgQVNTRVJUKGRpdm90ID49IGxpbmVTdGFydCk7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBjb2x1bW4gPSBkaXZvdCAtIGxpbmVTdGFydDsKKyAgICAgICAg
ICAgIG1fY29kZUJsb2NrLT5hZGRFeHByZXNzaW9uSW5mbyhpbnN0cnVjdGlvbk9mZnNldCwgZGl2
b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGxpbmUsIGNvbHVtbik7CiAgICAgICAgIH0KIAog
ICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgbGVmdEhhbmRTaWRlTmVlZHNDb3B5KGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodElzUHVyZSkKQEAgLTQ4MCwxNSArNDc5LDE1IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRQdXRHZXR0ZXJTZXR0ZXIoUmVnaXN0
ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIGdldHRl
ciwgUmVnaXN0ZXJJRCogc2V0dGVyKTsKICAgICAgICAgCiAgICAgICAgIEV4cGVjdGVkRnVuY3Rp
b24gZXhwZWN0ZWRGdW5jdGlvbkZvcklkZW50aWZpZXIoY29uc3QgSWRlbnRpZmllciYpOwotICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1
bmMsIEV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMmLCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7Ci0gICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRDYWxsRXZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIENhbGxB
cmd1bWVudHMmLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsVmFyYXJncyhSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVn
aXN0ZXJJRCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgUmVnaXN0
ZXJJRCogcHJvZmlsZUhvb2tSZWdpc3RlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2Fs
bChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24sIENh
bGxBcmd1bWVudHMmLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCwgdW5zaWduZWQgbGluZSwgdW5zaWduZWQgbGluZVN0YXJ0KTsKKyAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdENhbGxFdmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
ZnVuYywgQ2FsbEFyZ3VtZW50cyYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBsaW5lU3RhcnQp
OworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFy
Z3VtZW50cywgUmVnaXN0ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHByb2Zp
bGVIb29rUmVnaXN0ZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBsaW5lU3RhcnQpOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0TG9hZFZhcmFyZ3MoUmVnaXN0ZXJJRCogYXJnQ291bnREc3Qs
IFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJncyk7CiAKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdFJldHVybihSZWdpc3RlcklEKiBzcmMpOwogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0RW5kKFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdFVuYXJ5Tm9Ec3RPcChv
cF9lbmQsIHNyYyk7IH0KIAotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q29uc3RydWN0KFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3Vt
ZW50cyYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENvbnN0cnVjdChSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMmLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwg
dW5zaWduZWQgbGluZSwgdW5zaWduZWQgbGluZVN0YXJ0KTsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdFN0cmNhdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgaW50IGNvdW50KTsK
ICAgICAgICAgdm9pZCBlbWl0VG9QcmltaXRpdmUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBzcmMpOwogCkBAIC01MjQsNyArNTIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRQdXNoV2l0aFNjb3BlKFJlZ2lzdGVySUQqIHNjb3BlKTsKICAgICAgICAg
dm9pZCBlbWl0UG9wU2NvcGUoKTsKIAotICAgICAgICB2b2lkIGVtaXREZWJ1Z0hvb2soRGVidWdI
b29rSUQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50IGNoYXJQb3NpdGlvbik7Cisg
ICAgICAgIHZvaWQgZW1pdERlYnVnSG9vayhEZWJ1Z0hvb2tJRCwgdW5zaWduZWQgZmlyc3RMaW5l
LCB1bnNpZ25lZCBsYXN0TGluZSwgdW5zaWduZWQgY2hhck9mZnNldCwgdW5zaWduZWQgbGluZVN0
YXJ0KTsKIAogICAgICAgICBpbnQgc2NvcGVEZXB0aCgpIHsgcmV0dXJuIG1fZHluYW1pY1Njb3Bl
RGVwdGggKyBtX2ZpbmFsbHlEZXB0aDsgfQogICAgICAgICBib29sIGhhc0ZpbmFsaXNlcigpIHsg
cmV0dXJuIG1fZmluYWxseURlcHRoICE9IDA7IH0KQEAgLTU5Miw3ICs1OTEsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgLy8gKGkuZS4gIk9iamVjdCgpIiBpcyBpZGVudGljYWwgdG8gIm5l
dyBPYmplY3QoKSIpLgogICAgICAgICBFeHBlY3RlZEZ1bmN0aW9uIGVtaXRFeHBlY3RlZEZ1bmN0
aW9uU25pcHBldChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVu
Y3Rpb24sIENhbGxBcmd1bWVudHMmLCBMYWJlbCogZG9uZSk7CiAgICAgICAgIAotICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0Q2FsbChPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiwgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBSZWdp
c3RlcklEKiBlbWl0Q2FsbChPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBm
dW5jLCBFeHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiwgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGxpbmUsIHVu
c2lnbmVkIGxpbmVTdGFydCk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogbmV3UmVnaXN0ZXIoKTsK
IApAQCAtNjQ2LDExICs2NDUsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVy
biBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5z
b3VyY2UoKSwgYm9keSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGFkZExpbmVJbmZvKHVu
c2lnbmVkIGxpbmVObykKLSAgICAgICAgewotICAgICAgICAgICAgbV9jb2RlQmxvY2stPmFkZExp
bmVJbmZvKGluc3RydWN0aW9ucygpLnNpemUoKSwgbGluZU5vIC0gbV9zY29wZU5vZGUtPmZpcnN0
TGluZSgpKTsKLSAgICAgICAgfQotCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbml0TGF6eVJl
Z2lzdGVyKFJlZ2lzdGVySUQqKTsKIAogICAgIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9u
IDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcsNyArODcsNyBAQCB2b2lkIEV4cHJlc3Npb25O
b2RlOjplbWl0Qnl0ZWNvZGVJbkNvbmRpCiAKIFJlZ2lzdGVySUQqIFRocm93YWJsZUV4cHJlc3Np
b25EYXRhOjplbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90
RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICBnZW5lcmF0
b3IuZW1pdFRocm93UmVmZXJlbmNlRXJyb3IobWVzc2FnZSk7CiAgICAgcmV0dXJuIGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKTsKIH0KQEAgLTE1Myw3ICsxNTMsOCBAQCBSZWdpc3RlcklEKiBSZXNv
bHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5CiAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRv
RGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGxvY2FsKTsKICAgICB9CiAgICAgCi0gICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhtX3N0YXJ0T2Zmc2V0ICsgbV9pZGVudC5sZW5ndGgoKSwg
bV9pZGVudC5sZW5ndGgoKSwgMCk7CisgICAgdW5zaWduZWQgZGl2b3QgPSBtX3N0YXJ0T2Zmc2V0
ICsgbV9pZGVudC5sZW5ndGgoKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90LCBtX2lkZW50Lmxlbmd0aCgpLCAwLCBtX2Rpdm90TGluZSwgbV9kaXZvdExpbmVTdGFydCk7
CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0UmVzb2x2ZShnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbihkc3QpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50KTsKIH0KIApAQCAtMjAxLDE1ICsyMDIs
MTYgQEAgYm9vbCBBcnJheU5vZGU6OmlzU2ltcGxlQXJyYXkoKSBjb25zdAogICAgIHJldHVybiB0
cnVlOwogfQogCi1Bcmd1bWVudExpc3ROb2RlKiBBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0KFZN
KiB2bSwgaW50IGxpbmVOdW1iZXIsIGludCBjaGFyUG9zaXRpb24pIGNvbnN0CitBcmd1bWVudExp
c3ROb2RlKiBBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0KFZNKiB2bSwgaW50IGxpbmVOdW1iZXIs
IGludCBzdGFydFBvc2l0aW9uLCB1bnNpZ25lZCBzb3VyY2VPZmZzZXQpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKCFtX2VsaXNpb24gJiYgIW1fb3B0aW9uYWwpOwogICAgIEVsZW1lbnROb2RlKiBwdHIg
PSBtX2VsZW1lbnQ7CiAgICAgaWYgKCFwdHIpCiAgICAgICAgIHJldHVybiAwOwotICAgIEpTVG9r
ZW5Mb2NhdGlvbiBsb2NhdGlvbjsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24oc291cmNl
T2Zmc2V0KTsKICAgICBsb2NhdGlvbi5saW5lID0gbGluZU51bWJlcjsKLSAgICBsb2NhdGlvbi5j
aGFyUG9zaXRpb24gPSBjaGFyUG9zaXRpb247CisgICAgbG9jYXRpb24uc3RhcnRPZmZzZXQgPSBz
dGFydFBvc2l0aW9uOworICAgIGxvY2F0aW9uLnNvdXJjZU9mZnNldCA9IHNvdXJjZU9mZnNldDsK
ICAgICBBcmd1bWVudExpc3ROb2RlKiBoZWFkID0gbmV3ICh2bSkgQXJndW1lbnRMaXN0Tm9kZShs
b2NhdGlvbiwgcHRyLT52YWx1ZSgpKTsKICAgICBBcmd1bWVudExpc3ROb2RlKiB0YWlsID0gaGVh
ZDsKICAgICBwdHIgPSBwdHItPm5leHQoKTsKQEAgLTMyNCwxMyArMzI2LDEzIEBAIFJlZ2lzdGVy
SUQqIEJyYWNrZXRBY2Nlc3Nvck5vZGU6OmVtaXRCeXQKICAgICAgICAgJiYgZ2VuZXJhdG9yLndp
bGxSZXNvbHZlVG9Bcmd1bWVudHMoc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihtX2Jhc2UpLT5p
ZGVudGlmaWVyKCkpCiAgICAgICAgICYmICFnZW5lcmF0b3Iuc3ltYm9sVGFibGUoKS5zbG93QXJn
dW1lbnRzKCkpIHsKICAgICAgICAgUmVnaXN0ZXJJRCogcHJvcGVydHkgPSBnZW5lcmF0b3IuZW1p
dE5vZGUobV9zdWJzY3JpcHQpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsgICAgCisgICAgICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNldCgpLCBkaXZv
dEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgICAgIHJl
dHVybiBnZW5lcmF0b3IuZW1pdEdldEFyZ3VtZW50QnlWYWwoZ2VuZXJhdG9yLmZpbmFsRGVzdGlu
YXRpb24oZHN0KSwgZ2VuZXJhdG9yLnVuY2hlY2tlZFJlZ2lzdGVyRm9yQXJndW1lbnRzKCksIHBy
b3BlcnR5KTsKICAgICB9CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRv
ci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2Jhc2UsIG1fc3Vic2NyaXB0SGFzQXNzaWdubWVu
dHMsIG1fc3Vic2NyaXB0LT5pc1B1cmUoZ2VuZXJhdG9yKSk7CiAgICAgUmVnaXN0ZXJJRCogcHJv
cGVydHkgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9zdWJzY3JpcHQpOwotICAgIGdlbmVyYXRvci5l
bWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOwor
ICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNl
dCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAg
ICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRp
b24oZHN0KSwgYmFzZS5nZXQoKSwgcHJvcGVydHkpOwogfQogCkBAIC0zNDQsMTMgKzM0NiwxMyBA
QCBSZWdpc3RlcklEKiBEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kCiAgICAgICAgIFJlc29s
dmVOb2RlKiByZXNvbHZlTm9kZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4obV9iYXNlKTsK
ICAgICAgICAgaWYgKCFnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhyZXNvbHZlTm9k
ZS0+aWRlbnRpZmllcigpKSkKICAgICAgICAgICAgIGdvdG8gbm9uQXJndW1lbnRzUGF0aDsKLSAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgp
LCBlbmRPZmZzZXQoKSk7ICAgIAorICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5l
KCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRB
cmd1bWVudHNMZW5ndGgoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgZ2VuZXJhdG9y
LnVuY2hlY2tlZFJlZ2lzdGVyRm9yQXJndW1lbnRzKCkpOwogICAgIH0KIAogbm9uQXJndW1lbnRz
UGF0aDoKICAgICBSZWdpc3RlcklEKiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7
Ci0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgp
LCBlbmRPZmZzZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgp
LCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZv
dExpbmVTdGFydCgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRv
ci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGJhc2UsIG1faWRlbnQpOwogfQogCkBAIC0zNzMsNyAr
Mzc1LDcgQEAgUmVnaXN0ZXJJRCogTmV3RXhwck5vZGU6OmVtaXRCeXRlY29kZShCeQogICAgICAg
ICBleHBlY3RlZEZ1bmN0aW9uID0gTm9FeHBlY3RlZEZ1bmN0aW9uOwogICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBmdW5jID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7CiAgICAgQ2FsbEFyZ3Vt
ZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICByZXR1cm4gZ2VuZXJh
dG9yLmVtaXRDb25zdHJ1Y3QoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQoZHN0
KSwgZnVuYy5nZXQoKSwgZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwg
c3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdENv
bnN0cnVjdChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZChkc3QpLCBmdW5jLmdl
dCgpLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0
T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgp
KTsKIH0KIAogaW5saW5lIENhbGxBcmd1bWVudHM6OkNhbGxBcmd1bWVudHMoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgQXJndW1lbnRzTm9kZSogYXJndW1lbnRzTm9kZSkKQEAgLTQwOCw5
ICs0MTAsOSBAQCBSZWdpc3RlcklEKiBFdmFsRnVuY3Rpb25DYWxsTm9kZTo6ZW1pdEJ5CiB7CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmMgPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRz
dCk7CiAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsK
LSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCkgLSBzdGFydE9mZnNldCgp
ICsgNCwgNCwgMCk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpIC0g
ZGl2b3RTdGFydE9mZnNldCgpICsgNCwgNCwgMCwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0
KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVdpdGhUaGlzKGNhbGxBcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCksIGZ1bmMuZ2V0KCksIGdlbmVyYXRvci5yZXNvbHZlKGdlbmVyYXRvci5wcm9w
ZXJ0eU5hbWVzKCkuZXZhbCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZXZhbCk7Ci0gICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbEV2YWwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24o
ZHN0LCBmdW5jLmdldCgpKSwgZnVuYy5nZXQoKSwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgc3Rh
cnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdENhbGxF
dmFsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuYy5nZXQoKSksIGZ1bmMuZ2V0
KCksIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRP
ZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogfQogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25DYWxsVmFsdWVOb2RlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQyMCw3ICs0MjIsNyBAQCBSZWdpc3RlcklEKiBG
dW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmMg
PSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1
bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJn
dW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKLSAgICByZXR1cm4gZ2VuZXJh
dG9yLmVtaXRDYWxsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVu
Yy5nZXQoKSksIGZ1bmMuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywg
ZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdENhbGwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQoZHN0LCBmdW5j
LmdldCgpKSwgZnVuYy5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBk
aXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgp
LCBkaXZvdExpbmVTdGFydCgpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KQEAgLTQzNiw3ICs0MzgsNyBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxSZXNvbHZl
Tm9kZTo6ZW1pCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNS
ZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgLy8gVGhpcyBwYXNzZXMgTm9FeHBl
Y3RlZEZ1bmN0aW9uIGJlY2F1c2Ugd2UgZXhwZWN0IHRoYXQgaWYgdGhlIGZ1bmN0aW9uIGlzIGlu
IGEKICAgICAgICAgLy8gbG9jYWwgdmFyaWFibGUsIHRoZW4gaXQncyBub3Qgb25lIG9mIG91ciBi
dWlsdC1pbiBjb25zdHJ1Y3RvcnMuCi0gICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdENhbGwo
Z2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQoZHN0LCBjYWxsQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpKSwgZnVuYy5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1l
bnRzLCBkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgICAgIHJldHVy
biBnZW5lcmF0b3IuZW1pdENhbGwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQo
ZHN0LCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpKSwgZnVuYy5nZXQoKSwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRp
dm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICB9CiAK
ICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpKSB7CkBAIC00NDQsMTYgKzQ0NiwxNiBA
QCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1pCiAgICAgICAgIENhbGxB
cmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgIGdlbmVy
YXRvci5lbWl0R2V0U3RhdGljVmFyKGZ1bmMuZ2V0KCksIHJlc29sdmVSZXN1bHQsIG1faWRlbnQp
OwogICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdENhbGwoZ2Vu
ZXJhdG9yLmZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQoZHN0LCBmdW5jLmdldCgpKSwgZnVuYy5n
ZXQoKSwgZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgc3RhcnRPZmZz
ZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsKGdl
bmVyYXRvci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVuYy5nZXQoKSksIGZ1bmMu
Z2V0KCksIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3Rh
cnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0
KCkpOwogICAgIH0KIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOwogICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3Is
IG1fYXJncyk7Ci0gICAgaW50IGlkZW50aWZpZXJTdGFydCA9IGRpdm90KCkgLSBzdGFydE9mZnNl
dCgpOworICAgIGludCBpZGVudGlmaWVyU3RhcnQgPSBkaXZvdCgpIC0gZGl2b3RTdGFydE9mZnNl
dCgpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhpZGVudGlmaWVyU3RhcnQg
KyBtX2lkZW50Lmxlbmd0aCgpLCBtX2lkZW50Lmxlbmd0aCgpLCAwKTsKKyAgICBnZW5lcmF0b3Iu
ZW1pdEV4cHJlc3Npb25JbmZvKGlkZW50aWZpZXJTdGFydCArIG1faWRlbnQubGVuZ3RoKCksIG1f
aWRlbnQubGVuZ3RoKCksIDAsIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICBn
ZW5lcmF0b3IuZW1pdFJlc29sdmVXaXRoVGhpcyhjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBmdW5jLmdldCgpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50KTsKLSAgICByZXR1cm4gZ2VuZXJh
dG9yLmVtaXRDYWxsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVu
Yy5nZXQoKSksIGZ1bmMuZ2V0KCksIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRp
dm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9y
LmVtaXRDYWxsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVuYy5n
ZXQoKSksIGZ1bmMuZ2V0KCksIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90
KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRp
dm90TGluZVN0YXJ0KCkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
RnVuY3Rpb25DYWxsQnJhY2tldE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpAQCAtNDYyLDExICs0NjQsMTEgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsQnJhY2tldE5v
ZGU6OmVtaQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXRO
b2RlKG1fYmFzZSk7CiAgICAgUmVnaXN0ZXJJRCogcHJvcGVydHkgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobV9zdWJzY3JpcHQpOwotICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3Qo
KSAtIG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0LCBzdGFydE9mZnNldCgpIC0gbV9zdWJleHBy
ZXNzaW9uRGl2b3RPZmZzZXQsIG1fc3ViZXhwcmVzc2lvbkVuZE9mZnNldCk7CisgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lv
blN0YXJ0T2Zmc2V0KCksIHN1YmV4cHJlc3Npb25FbmRPZmZzZXQoKSwgc3ViZXhwcmVzc2lvbkxp
bmUoKSwgc3ViZXhwcmVzc2lvbkxpbmVTdGFydCgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
ZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRvci50ZW1wRGVzdGluYXRp
b24oZHN0KSwgYmFzZS5nZXQoKSwgcHJvcGVydHkpOwogICAgIENhbGxBcmd1bWVudHMgY2FsbEFy
Z3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxB
cmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwotICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdENhbGwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQoZHN0LCBmdW5j
dGlvbi5nZXQoKSksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICByZXR1cm4g
Z2VuZXJhdG9yLmVtaXRDYWxsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRz
dCwgZnVuY3Rpb24uZ2V0KCkpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBj
YWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0
KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9uQ2FsbERvdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQpAQCAtNDc2LDkgKzQ3OCw5IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9u
Q2FsbERvdE5vZGU6OmVtaXRCeXQKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb24gPSBn
ZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJn
dW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFy
Z3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9iYXNlKTsKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGRpdm90KCkgLSBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNldCwgc3RhcnRPZmZz
ZXQoKSAtIG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0LCBtX3N1YmV4cHJlc3Npb25FbmRPZmZz
ZXQpOworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90
KCksIHN1YmV4cHJlc3Npb25TdGFydE9mZnNldCgpLCBzdWJleHByZXNzaW9uRW5kT2Zmc2V0KCks
IHN1YmV4cHJlc3Npb25MaW5lKCksIHN1YmV4cHJlc3Npb25MaW5lU3RhcnQoKSk7CiAgICAgZ2Vu
ZXJhdG9yLmVtaXRHZXRCeUlkKGZ1bmN0aW9uLmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdp
c3RlcigpLCBtX2lkZW50KTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsKGdlbmVyYXRv
ci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVuY3Rpb24uZ2V0KCkpLCBmdW5jdGlv
bi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBzdGFy
dE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbChn
ZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZChkc3QsIGZ1bmN0aW9uLmdldCgpKSwg
ZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3Qo
KSwgZGl2b3RTdGFydE9mZnNldCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2
b3RMaW5lU3RhcnQoKSk7CiB9CiAKIFJlZ2lzdGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3ROb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQpAQCAtNDg2LDcgKzQ4OCw3IEBAIFJlZ2lzdGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3RO
b2RlOjplbWkKICAgICBSZWZQdHI8TGFiZWw+IHJlYWxDYWxsID0gZ2VuZXJhdG9yLm5ld0xhYmVs
KCk7CiAgICAgUmVmUHRyPExhYmVsPiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwotICAg
IGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSAtIG1fc3ViZXhwcmVzc2lvbkRp
dm90T2Zmc2V0LCBzdGFydE9mZnNldCgpIC0gbV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQsIG1f
c3ViZXhwcmVzc2lvbkVuZE9mZnNldCk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5m
byhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0T2Zmc2V0KCksIHN1YmV4
cHJlc3Npb25FbmRPZmZzZXQoKSwgc3ViZXhwcmVzc2lvbkxpbmUoKSwgc3ViZXhwcmVzc2lvbkxp
bmVTdGFydCgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3Iu
ZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBt
X2lkZW50KTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZmluYWxEZXN0aW5hdGlvbk9ySWdub3Jl
ZCA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVuY3Rpb24uZ2V0
KCkpOwogICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKGZ1bmN0aW9uLmdl
dCgpLCByZWFsQ2FsbC5nZXQoKSk7CkBAIC00OTgsNyArNTAwLDcgQEAgUmVnaXN0ZXJJRCogQ2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaQogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0
aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJn
dW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKGZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQuZ2V0KCks
IHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBk
aXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdENhbGwoZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZC5nZXQoKSwgcmVhbEZ1bmN0aW9u
LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90
U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0
YXJ0KCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CiAKICAg
ICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7CkBAIC01MDYsNyArNTA4LDcg
QEAgUmVnaXN0ZXJJRCogQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaQogICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5l
cmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgQ2Fs
bEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVm
aW5lZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChmaW5hbERlc3RpbmF0aW9u
T3JJZ25vcmVkLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwg
Y2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKGZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQuZ2V0
KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRz
LCBkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGlu
ZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChl
bmQuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtNTE0LDcgKzUxNiw3IEBAIFJlZ2lzdGVy
SUQqIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWkKICAgICB7CiAgICAgICAgIENhbGxBcmd1
bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKLSAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKGZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQuZ2V0KCks
IGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90
KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRD
YWxsKGZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQo
KSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAg
IH0KICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgcmV0dXJuIGZpbmFs
RGVzdGluYXRpb25Pcklnbm9yZWQuZ2V0KCk7CkBAIC01MzYsNyArNTM4LDcgQEAgUmVnaXN0ZXJJ
RCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbQogICAgIFJlZlB0cjxMYWJlbD4gcmVhbENh
bGwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8TGFiZWw+IGVuZCA9IGdlbmVy
YXRvci5uZXdMYWJlbCgpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9y
LmVtaXROb2RlKG1fYmFzZSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZv
dCgpIC0gbV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQsIHN0YXJ0T2Zmc2V0KCkgLSBtX3N1YmV4
cHJlc3Npb25EaXZvdE9mZnNldCwgbV9zdWJleHByZXNzaW9uRW5kT2Zmc2V0KTsKKyAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNz
aW9uU3RhcnRPZmZzZXQoKSwgc3ViZXhwcmVzc2lvbkVuZE9mZnNldCgpLCBzdWJleHByZXNzaW9u
TGluZSgpLCBzdWJleHByZXNzaW9uTGluZVN0YXJ0KCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0
aW9uKGRzdCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBm
aW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb25Pckln
bm9yZWQoZHN0LCBmdW5jdGlvbi5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RG
dW5jdGlvbkFwcGx5KGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CkBAIC01NDcsMjQg
KzU0OSwyNCBAQCBSZWdpc3RlcklEKiBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtCiAgICAg
ICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7CiAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1Np
bXBsZUFycmF5KCkpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fYXJncy0+bV9saXN0
Tm9kZS0+bV9uZXh0LT5tX25leHQpOwotICAgICAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlz
dE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4
dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3QoZ2VuZXJhdG9yLnZtKCksIDAsIDApOworICAgICAg
ICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUq
PihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3QoZ2Vu
ZXJhdG9yLnZtKCksIDAsIDAsIDApOwogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVz
dGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIENhbGxBcmd1
bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRM
aXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwoZmlu
YWxEZXN0aW5hdGlvbk9ySWdub3JlZC5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVj
dGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9m
ZnNldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKGZpbmFsRGVz
dGluYXRpb25Pcklnbm9yZWQuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1
bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90
RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBt
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVt
cERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBDYWxs
QXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwg
b2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxs
KGZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBl
bmRPZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChmaW5h
bERlc3RpbmF0aW9uT3JJZ25vcmVkLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNldCgpLCBk
aXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5h
dGlvbihkc3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNh
bGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsK
LSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwoZmluYWxEZXN0aW5hdGlvbk9ySWdu
b3JlZC5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxB
cmd1bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwoZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZC5nZXQo
KSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMs
IGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5l
KCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5v
ZGUtPm1fbmV4dCk7CkBAIC01ODUsNyArNTg3LDcgQEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlv
bkNhbGxEb3ROb2RlOjplbQogICAgICAgICAgICAgd2hpbGUgKChhcmdzID0gYXJncy0+bV9uZXh0
KSkKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKIAot
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJncyhmaW5hbERlc3RpbmF0aW9uT3JJ
Z25vcmVkLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJn
c1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb2ZpbGVIb29rUmVn
aXN0ZXIuZ2V0KCksIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3MoZmluYWxEZXN0aW5hdGlvbk9ySWdub3Jl
ZC5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3NSZWdp
c3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9maWxlSG9va1JlZ2lzdGVy
LmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRp
dm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICAgICAgfQogICAgICAgICBnZW5lcmF0
b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKICAgICB9CkBAIC01OTMsNyArNTk1LDcgQEAgUmVnaXN0
ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbQogICAgIHsKICAgICAgICAgQ2FsbEFy
Z3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwot
ICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwoZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZC5nZXQo
KSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2
b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dENhbGwoZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZC5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5v
RXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNl
dCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAg
ICAgfQogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICByZXR1cm4gZmlu
YWxEZXN0aW5hdGlvbk9ySWdub3JlZC5nZXQoKTsKQEAgLTY0MSw3ICs2NDMsNyBAQCBSZWdpc3Rl
cklEKiBQb3N0Zml4Tm9kZTo6ZW1pdFJlc29sdmUoQnl0CiAgICAgICAgIHJldHVybiBvbGRWYWx1
ZS5nZXQoKTsKICAgICB9CiAKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90
KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwg
ZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2
YWx1ZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBOb25sb2NhbFJlc29sdmVJbmZv
IHJlc29sdmVJbmZvOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVt
aXRSZXNvbHZlV2l0aEJhc2VGb3JQdXQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5n
ZXQoKSwgcmVzb2x2ZVJlc3VsdCwgaWRlbnQsIHJlc29sdmVJbmZvKTsKQEAgLTY2MywxMCArNjY1
LDEwIEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0QnJhY2tldChCeXQKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShi
YXNlTm9kZSwgYnJhY2tldEFjY2Vzc29yLT5zdWJzY3JpcHRIYXNBc3NpZ25tZW50cygpLCBzdWJz
Y3JpcHQtPmlzUHVyZShnZW5lcmF0b3IpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVy
dHkgPSBnZW5lcmF0b3IuZW1pdE5vZGUoc3Vic2NyaXB0KTsKIAotICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oYnJhY2tldEFjY2Vzc29yLT5kaXZvdCgpLCBicmFja2V0QWNjZXNzb3It
PnN0YXJ0T2Zmc2V0KCksIGJyYWNrZXRBY2Nlc3Nvci0+ZW5kT2Zmc2V0KCkpOworICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oYnJhY2tldEFjY2Vzc29yLT5kaXZvdCgpLCBicmFja2V0
QWNjZXNzb3ItPmRpdm90U3RhcnRPZmZzZXQoKSwgYnJhY2tldEFjY2Vzc29yLT5kaXZvdEVuZE9m
ZnNldCgpLCBicmFja2V0QWNjZXNzb3ItPmRpdm90TGluZSgpLCBicmFja2V0QWNjZXNzb3ItPmRp
dm90TGluZVN0YXJ0KCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRv
ci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBwcm9w
ZXJ0eS5nZXQoKSk7CiAgICAgUmVnaXN0ZXJJRCogb2xkVmFsdWUgPSBlbWl0UG9zdEluY09yRGVj
KGdlbmVyYXRvciwgZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSwg
bV9vcGVyYXRvcik7Ci0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBz
dGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90
TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJh
c2UuZ2V0KCksIHByb3BlcnR5LmdldCgpLCB2YWx1ZS5nZXQoKSk7CiAgICAgcmV0dXJuIGdlbmVy
YXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgb2xkVmFsdWUpOwogfQpAQCAtNjgz
LDEwICs2ODUsMTAgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXREb3QoQnl0ZWNvZAog
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYmFzZU5v
ZGUpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2
b3QoKSwgZG90QWNjZXNzb3ItPnN0YXJ0T2Zmc2V0KCksIGRvdEFjY2Vzc29yLT5lbmRPZmZzZXQo
KSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3Qo
KSwgZG90QWNjZXNzb3ItPmRpdm90U3RhcnRPZmZzZXQoKSwgZG90QWNjZXNzb3ItPmRpdm90RW5k
T2Zmc2V0KCksIGRvdEFjY2Vzc29yLT5kaXZvdExpbmUoKSwgZG90QWNjZXNzb3ItPmRpdm90TGlu
ZVN0YXJ0KCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0
R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIGlkZW50KTsKICAg
ICBSZWdpc3RlcklEKiBvbGRWYWx1ZSA9IGVtaXRQb3N0SW5jT3JEZWMoZ2VuZXJhdG9yLCBnZW5l
cmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgpLCBtX29wZXJhdG9yKTsKLSAg
ICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVu
ZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRp
dm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGlu
ZVN0YXJ0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBpZGVudCwg
dmFsdWUuZ2V0KCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5l
ZWRlZChkc3QsIG9sZFZhbHVlKTsKIH0KQEAgLTcxNSw3ICs3MTcsNyBAQCBSZWdpc3RlcklEKiBE
ZWxldGVSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjCiAgICAgaWYgKHJlc29sdmVSZXN1bHQuaXNSZWdp
c3RlcigpKQogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCksIGZhbHNlKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lv
bkluZm8oZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNldCgpLCBkaXZvdEVu
ZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgUmVnaXN0ZXJJ
RCogYmFzZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZUJhc2UoZ2VuZXJhdG9yLnRlbXBEZXN0aW5h
dGlvbihkc3QpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50KTsKICAgICByZXR1cm4gZ2VuZXJhdG9y
LmVtaXREZWxldGVCeUlkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgYmFzZSksIGJh
c2UsIG1faWRlbnQpOwogfQpAQCAtNzI3LDcgKzcyOSw3IEBAIFJlZ2lzdGVySUQqIERlbGV0ZUJy
YWNrZXROb2RlOjplbWl0Qnl0ZWMKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcjAgPSBnZW5lcmF0
b3IuZW1pdE5vZGUobV9iYXNlKTsKICAgICBSZWdpc3RlcklEKiByMSA9IGdlbmVyYXRvci5lbWl0
Tm9kZShtX3N1YnNjcmlwdCk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQo
KSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdERlbGV0ZUJ5VmFsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHIwLmdldCgp
LCByMSk7CiB9CiAKQEAgLTczNyw3ICs3MzksNyBAQCBSZWdpc3RlcklEKiBEZWxldGVEb3ROb2Rl
OjplbWl0Qnl0ZWNvZGUoCiB7CiAgICAgUmVnaXN0ZXJJRCogcjAgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobV9iYXNlKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwg
c3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lv
bkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNldCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZv
dExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0RGVs
ZXRlQnlJZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCByMCwgbV9pZGVudCk7CiB9
CiAKQEAgLTgyMyw3ICs4MjUsNyBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0UmVzb2x2
ZShCeXRlCiAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRl
ZChkc3QsIHByb3BEc3QuZ2V0KCkpOwogICAgIH0KIAotICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8oZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNldCgpLCBkaXZv
dEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHByb3BEc3QgPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAg
ICAgTm9ubG9jYWxSZXNvbHZlSW5mbyByZXNvbHZlVmVyaWZpZXI7CiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVXaXRoQmFzZUZvclB1dChnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksIHByb3BEc3QuZ2V0KCksIHJlc29sdmVSZXN1bHQsIGlkZW50LCBy
ZXNvbHZlVmVyaWZpZXIpOwpAQCAtODQzLDEwICs4NDUsMTAgQEAgUmVnaXN0ZXJJRCogUHJlZml4
Tm9kZTo6ZW1pdEJyYWNrZXQoQnl0ZQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eSA9
IGdlbmVyYXRvci5lbWl0Tm9kZShzdWJzY3JpcHQpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBw
cm9wRHN0ID0gZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpOwogCi0gICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhicmFja2V0QWNjZXNzb3ItPmRpdm90KCksIGJyYWNrZXRBY2Nl
c3Nvci0+c3RhcnRPZmZzZXQoKSwgYnJhY2tldEFjY2Vzc29yLT5lbmRPZmZzZXQoKSk7CisgICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhicmFja2V0QWNjZXNzb3ItPmRpdm90KCksIGJy
YWNrZXRBY2Nlc3Nvci0+ZGl2b3RTdGFydE9mZnNldCgpLCBicmFja2V0QWNjZXNzb3ItPmRpdm90
RW5kT2Zmc2V0KCksIGJyYWNrZXRBY2Nlc3Nvci0+ZGl2b3RMaW5lKCksIGJyYWNrZXRBY2Nlc3Nv
ci0+ZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgUmVnaXN0ZXJJRCogdmFsdWUgPSBnZW5lcmF0b3Iu
ZW1pdEdldEJ5VmFsKHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpKTsK
ICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJhdG9yLCB2YWx1ZSwgbV9vcGVyYXRvcik7Ci0gICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZz
ZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0
YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFy
dCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIHByb3BlcnR5Lmdl
dCgpLCB2YWx1ZSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVl
ZGVkKGRzdCwgcHJvcERzdC5nZXQoKSk7CiB9CkBAIC04NjEsMTAgKzg2MywxMCBAQCBSZWdpc3Rl
cklEKiBQcmVmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYmFzZU5vZGUpOwogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBwcm9wRHN0ID0gZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpOwogCi0gICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNz
b3ItPnN0YXJ0T2Zmc2V0KCksIGRvdEFjY2Vzc29yLT5lbmRPZmZzZXQoKSk7CisgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNzb3It
PmRpdm90U3RhcnRPZmZzZXQoKSwgZG90QWNjZXNzb3ItPmRpdm90RW5kT2Zmc2V0KCksIGRvdEFj
Y2Vzc29yLT5kaXZvdExpbmUoKSwgZG90QWNjZXNzb3ItPmRpdm90TGluZVN0YXJ0KCkpOwogICAg
IFJlZ2lzdGVySUQqIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHByb3BEc3QuZ2V0KCks
IGJhc2UuZ2V0KCksIGlkZW50KTsKICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJhdG9yLCB2YWx1ZSwg
bV9vcGVyYXRvcik7Ci0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBz
dGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90
TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFz
ZS5nZXQoKSwgaWRlbnQsIHZhbHVlKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3Rp
bmF0aW9uSWZOZWVkZWQoZHN0LCBwcm9wRHN0LmdldCgpKTsKIH0KQEAgLTg5MCw2ICs4OTIsNyBA
QCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0CiBSZWdpc3RlcklEKiBV
bmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKIHsKICAgICBSZWdpc3RlcklEKiBzcmMgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobV9leHByKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN0YXJ0T2Zmc2V0
KCksIDAsIDAsIGxpbmVObygpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAgICAgcmV0dXJuIGdlbmVy
YXRvci5lbWl0VW5hcnlPcChvcGNvZGVJRCgpLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihk
c3QpLCBzcmMpOwogfQogCkBAIC0xMDIxLDcgKzEwMjQsNyBAQCBSZWdpc3RlcklEKiBCaW5hcnlP
cE5vZGU6OmVtaXRTdHJjYXQoQnl0CiAgICAgLy8gQ2VydGFpbiByZWFkLW1vZGlmeSBub2RlcyBy
ZXF1aXJlIGV4cHJlc3Npb24gaW5mbyB0byBiZSBlbWl0dGVkICphZnRlciogbV9yaWdodCBoYXMg
YmVlbiBnZW5lcmF0ZWQuCiAgICAgLy8gSWYgdGhpcyBpcyByZXF1aXJlZCB0aGUgbm9kZSBpcyBw
YXNzZWQgYXMgJ2VtaXRFeHByZXNzaW9uSW5mb0Zvck1lJzsgZG8gc28gbm93LgogICAgIGlmIChl
bWl0RXhwcmVzc2lvbkluZm9Gb3JNZSkKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhlbWl0RXhwcmVzc2lvbkluZm9Gb3JNZS0+ZGl2b3QoKSwgZW1pdEV4cHJlc3Npb25JbmZv
Rm9yTWUtPnN0YXJ0T2Zmc2V0KCksIGVtaXRFeHByZXNzaW9uSW5mb0Zvck1lLT5lbmRPZmZzZXQo
KSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZW1pdEV4cHJlc3Npb25J
bmZvRm9yTWUtPmRpdm90KCksIGVtaXRFeHByZXNzaW9uSW5mb0Zvck1lLT5kaXZvdFN0YXJ0T2Zm
c2V0KCksIGVtaXRFeHByZXNzaW9uSW5mb0Zvck1lLT5kaXZvdEVuZE9mZnNldCgpLCBlbWl0RXhw
cmVzc2lvbkluZm9Gb3JNZS0+ZGl2b3RMaW5lKCksIGVtaXRFeHByZXNzaW9uSW5mb0Zvck1lLT5k
aXZvdExpbmVTdGFydCgpKTsKIAogICAgIC8vIElmIHRoZXJlIGlzIGFuIGFzc2lnbm1lbnQgY29u
dmVydCB0aGUgbGhzIG5vdy4gIFRoaXMgd2lsbCBhbHNvIGNvcHkgbGhzIHRvCiAgICAgLy8gdGhl
IHRlbXBvcmFyeSByZWdpc3RlciB3ZSBhbGxvY2F0ZWQgZm9yIGl0LgpAQCAtMTE2MSw3ICsxMTY0
LDcgQEAgUmVnaXN0ZXJJRCogVGhyb3dhYmxlQmluYXJ5T3BOb2RlOjplbWl0QgogewogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBzcmMxID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRl
KG1fZXhwcjEsIG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9leHByMi0+aXNQdXJlKGdlbmVyYXRv
cikpOwogICAgIFJlZ2lzdGVySUQqIHNyYzIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByMik7
Ci0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgp
LCBlbmRPZmZzZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgp
LCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZv
dExpbmVTdGFydCgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRCaW5hcnlPcChvcGNvZGVJ
RCgpLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHNyYzEuZ2V0KCkpLCBzcmMxLmdl
dCgpLCBzcmMyLCBPcGVyYW5kVHlwZXMobV9leHByMS0+cmVzdWx0RGVzY3JpcHRvcigpLCBtX2V4
cHIyLT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKIH0KIApAQCAtMTE3MywxMyArMTE3NiwxMyBAQCBS
ZWdpc3RlcklEKiBJbnN0YW5jZU9mTm9kZTo6ZW1pdEJ5dGVjb2RlCiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGRzdFJlZyA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQo
KSk7CiAgICAgUmVmUHRyPExhYmVsPiB0YXJnZXQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIAot
ICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwg
ZW5kT2Zmc2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwg
ZGl2b3RTdGFydE9mZnNldCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RM
aW5lU3RhcnQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRDaGVja0hhc0luc3RhbmNlKGRzdFJlZy5n
ZXQoKSwgc3JjMS5nZXQoKSwgc3JjMi5nZXQoKSwgdGFyZ2V0LmdldCgpKTsKIAotICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0
KCkpOworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFy
dE9mZnNldCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQo
KSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHByb3RvdHlwZS5nZXQoKSwgc3JjMi5nZXQo
KSwgZ2VuZXJhdG9yLnZtKCktPnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7CiAKLSAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNl
dCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3Rh
cnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0
KCkpOwogICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0SW5zdGFuY2VPZihk
c3RSZWcuZ2V0KCksIHNyYzEuZ2V0KCksIHByb3RvdHlwZS5nZXQoKSk7CiAgICAgZ2VuZXJhdG9y
LmVtaXRMYWJlbCh0YXJnZXQuZ2V0KCkpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMjkwLDcg
KzEyOTMsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBSZWdpc3RlcklEKiBlbWl0UmVhCiAgICAg
Ly8gQ2VydGFpbiByZWFkLW1vZGlmeSBub2RlcyByZXF1aXJlIGV4cHJlc3Npb24gaW5mbyB0byBi
ZSBlbWl0dGVkICphZnRlciogbV9yaWdodCBoYXMgYmVlbiBnZW5lcmF0ZWQuCiAgICAgLy8gSWYg
dGhpcyBpcyByZXF1aXJlZCB0aGUgbm9kZSBpcyBwYXNzZWQgYXMgJ2VtaXRFeHByZXNzaW9uSW5m
b0Zvck1lJzsgZG8gc28gbm93LgogICAgIGlmIChlbWl0RXhwcmVzc2lvbkluZm9Gb3JNZSkKLSAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhlbWl0RXhwcmVzc2lvbkluZm9Gb3JN
ZS0+ZGl2b3QoKSwgZW1pdEV4cHJlc3Npb25JbmZvRm9yTWUtPnN0YXJ0T2Zmc2V0KCksIGVtaXRF
eHByZXNzaW9uSW5mb0Zvck1lLT5lbmRPZmZzZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oZW1pdEV4cHJlc3Npb25JbmZvRm9yTWUtPmRpdm90KCksIGVtaXRFeHBy
ZXNzaW9uSW5mb0Zvck1lLT5kaXZvdFN0YXJ0T2Zmc2V0KCksIGVtaXRFeHByZXNzaW9uSW5mb0Zv
ck1lLT5kaXZvdEVuZE9mZnNldCgpLCBlbWl0RXhwcmVzc2lvbkluZm9Gb3JNZS0+ZGl2b3RMaW5l
KCksIGVtaXRFeHByZXNzaW9uSW5mb0Zvck1lLT5kaXZvdExpbmVTdGFydCgpKTsKIAogICAgIHJl
dHVybiBnZW5lcmF0b3IuZW1pdEJpbmFyeU9wKG9wY29kZUlELCBkc3QsIHNyYzEsIHNyYzIsIHR5
cGVzKTsKIH0KQEAgLTEzMjUsNyArMTMyOCw3IEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlSZXNv
bHZlTm9kZTo6ZW1pdEIKICAgICB9CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdl
bmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KTsKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Np
b25JbmZvKGRpdm90KCkgLSBzdGFydE9mZnNldCgpICsgbV9pZGVudC5sZW5ndGgoKSwgbV9pZGVu
dC5sZW5ndGgoKSwgMCk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgp
IC0gZGl2b3RTdGFydE9mZnNldCgpICsgbV9pZGVudC5sZW5ndGgoKSwgbV9pZGVudC5sZW5ndGgo
KSwgMCwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgIE5vbmxvY2FsUmVzb2x2
ZUluZm8gcmVzb2x2ZVZlcmlmaWVyOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2Vu
ZXJhdG9yLmVtaXRSZXNvbHZlV2l0aEJhc2VGb3JQdXQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
LCBzcmMxLmdldCgpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50LCByZXNvbHZlVmVyaWZpZXIpOwog
ICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0
b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQoKSksIHNyYzEuZ2V0
KCksIG1fcmlnaHQsIG1fb3BlcmF0b3IsIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3du
VHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9yKCkpLCB0aGlzKTsKQEAgLTEzNjAsNyAr
MTM2Myw3IEBAIFJlZ2lzdGVySUQqIEFzc2lnblJlc29sdmVOb2RlOjplbWl0Qnl0ZWMKICAgICBp
ZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgIGRzdCA9IDA7CiAg
ICAgUmVnaXN0ZXJJRCogdmFsdWUgPSBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3JpZ2h0KTsK
LSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0KCks
IGVuZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCks
IGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90
TGluZVN0YXJ0KCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFB1dFRvQmFzZShiYXNlLmdl
dCgpLCBtX2lkZW50LCB2YWx1ZSwgcmVzb2x2ZVZlcmlmaWVyKTsKIH0KIApAQCAtMTM3MSw3ICsx
Mzc0LDcgQEAgUmVnaXN0ZXJJRCogQXNzaWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKAogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRl
KG1fYmFzZSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2VuZXJhdG9y
KSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmRlc3RpbmF0aW9u
Rm9yQXNzaWduUmVzdWx0KGRzdCk7CiAgICAgUmVnaXN0ZXJJRCogcmVzdWx0ID0gZ2VuZXJhdG9y
LmVtaXROb2RlKHZhbHVlLmdldCgpLCBtX3JpZ2h0KTsKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2
b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgIFJlZ2lz
dGVySUQqIGZvcndhcmRSZXN1bHQgPSAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkp
ID8gcmVzdWx0IDogZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZ2VuZXJhdG9y
LnRlbXBEZXN0aW5hdGlvbihyZXN1bHQpLCByZXN1bHQpOwogICAgIGdlbmVyYXRvci5lbWl0UHV0
QnlJZChiYXNlLmdldCgpLCBtX2lkZW50LCBmb3J3YXJkUmVzdWx0KTsKICAgICByZXR1cm4gZ2Vu
ZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBmb3J3YXJkUmVzdWx0KTsKQEAg
LTEzODMsMTEgKzEzODYsMTEgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeURvdE5vZGU6OmVtaXRC
eXRlYwogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2Rl
Rm9yTGVmdEhhbmRTaWRlKG1fYmFzZSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5p
c1B1cmUoZ2VuZXJhdG9yKSk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90KCkgLSBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNldCwgc3RhcnRPZmZzZXQoKSAtIG1fc3Vi
ZXhwcmVzc2lvbkRpdm90T2Zmc2V0LCBtX3N1YmV4cHJlc3Npb25FbmRPZmZzZXQpOworICAgIGdl
bmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJl
c3Npb25TdGFydE9mZnNldCgpLCBzdWJleHByZXNzaW9uRW5kT2Zmc2V0KCksIHN1YmV4cHJlc3Np
b25MaW5lKCksIHN1YmV4cHJlc3Npb25MaW5lU3RhcnQoKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRp
b24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CiAgICAgUmVnaXN0ZXJJRCogdXBkYXRlZFZh
bHVlID0gZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0LCB2YWx1ZS5nZXQoKSksIHZhbHVlLmdldCgpLCBtX3JpZ2h0LCBtX29w
ZXJhdG9yLCBPcGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+
cmVzdWx0RGVzY3JpcHRvcigpKSk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1p
dEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZz
ZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgdXBkYXRlZFZhbHVlKTsKIH0KIApA
QCAtMTQwNyw3ICsxNDEwLDcgQEAgUmVnaXN0ZXJJRCogQXNzaWduQnJhY2tldE5vZGU6OmVtaXRC
eXRlYwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5kZXN0aW5hdGlv
bkZvckFzc2lnblJlc3VsdChkc3QpOwogICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGdlbmVyYXRv
ci5lbWl0Tm9kZSh2YWx1ZS5nZXQoKSwgbV9yaWdodCk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICBn
ZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwg
ZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgIFJl
Z2lzdGVySUQqIGZvcndhcmRSZXN1bHQgPSAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0
KCkpID8gcmVzdWx0IDogZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZ2VuZXJh
dG9yLnRlbXBEZXN0aW5hdGlvbihyZXN1bHQpLCByZXN1bHQpOwogICAgIGdlbmVyYXRvci5lbWl0
UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIGZvcndhcmRSZXN1bHQpOwogICAg
IHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGZvcndhcmRS
ZXN1bHQpOwpAQCAtMTQyMCwxMSArMTQyMywxMSBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5QnJh
Y2tldE5vZGU6OmVtaXRCCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV9iYXNlLCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRz
IHx8IG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9zdWJzY3JpcHQtPmlzUHVyZShnZW5lcmF0b3Ip
ICYmIG1fcmlnaHQtPmlzUHVyZShnZW5lcmF0b3IpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cHJvcGVydHkgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV9zdWJzY3JpcHQs
IG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9yaWdodC0+aXNQdXJlKGdlbmVyYXRvcikpOwogCi0g
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpIC0gbV9zdWJleHByZXNzaW9u
RGl2b3RPZmZzZXQsIHN0YXJ0T2Zmc2V0KCkgLSBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNldCwg
bV9zdWJleHByZXNzaW9uRW5kT2Zmc2V0KTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnRPZmZzZXQoKSwgc3Vi
ZXhwcmVzc2lvbkVuZE9mZnNldCgpLCBzdWJleHByZXNzaW9uTGluZSgpLCBzdWJleHByZXNzaW9u
TGluZVN0YXJ0KCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5l
bWl0R2V0QnlWYWwoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBw
cm9wZXJ0eS5nZXQoKSk7CiAgICAgUmVnaXN0ZXJJRCogdXBkYXRlZFZhbHVlID0gZW1pdFJlYWRN
b2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0
LCB2YWx1ZS5nZXQoKSksIHZhbHVlLmdldCgpLCBtX3JpZ2h0LCBtX29wZXJhdG9yLCBPcGVyYW5k
VHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVzY3JpcHRv
cigpKSk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIHN0YXJ0
T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5l
KCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5n
ZXQoKSwgcHJvcGVydHkuZ2V0KCksIHVwZGF0ZWRWYWx1ZSk7CiAKICAgICByZXR1cm4gdXBkYXRl
ZFZhbHVlOwpAQCAtMTQ4MCw3ICsxNDgzLDcgQEAgUmVnaXN0ZXJJRCogQ29uc3REZWNsTm9kZTo6
ZW1pdEJ5dGVjb2RlKAogCiB2b2lkIENvbnN0U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewotICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExp
bmUoKSwgY2hhclBvc2l0aW9uKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxF
eGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwg
bGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0Tm9kZShtX25leHQpOwogfQog
CkBAIC0xNTIzLDE0ICsxNTI2LDE0IEBAIHZvaWQgQmxvY2tOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW4KIAogdm9pZCBFbXB0eVN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKLSAgICBnZW5lcmF0b3IuZW1p
dERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCks
IGNoYXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0
ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVT
dGFydE9mZnNldCgpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERl
YnVnZ2VyU3RhdGVtZW50Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogdm9pZCBE
ZWJ1Z2dlclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRS
ZWFjaEJyZWFrcG9pbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24oKSk7
CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkUmVhY2hCcmVha3BvaW50LCBmaXJzdExp
bmUoKSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogfQog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXhwclN0YXRlbWVudE5vZGUgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTUzOCw3ICsxNTQxLDcgQEAgdm9pZCBEZWJ1
Z2dlclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZQogdm9pZCBFeHByU3RhdGVtZW50Tm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKIHsKICAgICBBU1NFUlQobV9leHByKTsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhX
aWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3NpdGlv
bigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwg
Zmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgp
KTsKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2V4cHIpOwogfQogCkBAIC0xNTQ3LDcg
KzE1NTAsNyBAQCB2b2lkIEV4cHJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0CiB2b2lk
IFZhclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKikKIHsKICAgICBBU1NFUlQobV9leHByKTsKLSAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCksIGNoYXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhl
Y3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxp
bmVTdGFydE9mZnNldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKIH0KIApA
QCAtMTU5Miw3ICsxNTk1LDcgQEAgYm9vbCBJZkVsc2VOb2RlOjp0cnlGb2xkQnJlYWtBbmRDb250
aW51ZQogCiB2b2lkIElmRWxzZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9z
aXRpb24oKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1l
bnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZz
ZXQoKSk7CiAgICAgCiAgICAgUmVmUHRyPExhYmVsPiBiZWZvcmVUaGVuID0gZ2VuZXJhdG9yLm5l
d0xhYmVsKCk7CiAgICAgUmVmUHRyPExhYmVsPiBiZWZvcmVFbHNlID0gZ2VuZXJhdG9yLm5ld0xh
YmVsKCk7CkBAIC0xNjI5LDEyICsxNjMyLDEyIEBAIHZvaWQgRG9XaGlsZU5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUcKICAgICBSZWZQdHI8TGFiZWw+IHRvcE9mTG9vcCA9IGdlbmVyYXRvci5u
ZXdMYWJlbCgpOwogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwodG9wT2ZMb29wLmdldCgpKTsKICAg
ICBnZW5lcmF0b3IuZW1pdExvb3BIaW50KCk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2so
V2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGxhc3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3NpdGlv
bigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwg
bGFzdExpbmUoKSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkp
OwogCiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2Vu
ZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+Y29udGludWVUYXJnZXQoKSk7Ci0gICAgZ2VuZXJhdG9y
LmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGxhc3RMaW5lKCksIGxhc3RMaW5l
KCksIGNoYXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhl
Y3V0ZVN0YXRlbWVudCwgbGFzdExpbmUoKSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGlu
ZVN0YXJ0T2Zmc2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4
dChtX2V4cHIsIHRvcE9mTG9vcC5nZXQoKSwgc2NvcGUtPmJyZWFrVGFyZ2V0KCksIEZhbGxUaHJv
dWdoTWVhbnNGYWxzZSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5icmVha1Rh
cmdldCgpKTsKQEAgLTE2NDcsNyArMTY1MCw3IEBAIHZvaWQgV2hpbGVOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW4KICAgICBMYWJlbFNjb3BlUHRyIHNjb3BlID0gZ2VuZXJhdG9yLm5ld0xh
YmVsU2NvcGUoTGFiZWxTY29wZTo6TG9vcCk7CiAgICAgUmVmUHRyPExhYmVsPiB0b3BPZkxvb3Ag
PSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdp
bGxFeGVjdXRlU3RhdGVtZW50LCBtX2V4cHItPmxpbmVObygpLCBtX2V4cHItPmxpbmVObygpLCBt
X2V4cHItPmNoYXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxs
RXhlY3V0ZVN0YXRlbWVudCwgbV9leHByLT5saW5lTm8oKSwgbV9leHByLT5saW5lTm8oKSwgbV9l
eHByLT5zdGFydE9mZnNldCgpLCBtX2V4cHItPmxpbmVTdGFydE9mZnNldCgpKTsKICAgICBnZW5l
cmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByLCB0b3BPZkxvb3AuZ2V0KCks
IHNjb3BlLT5icmVha1RhcmdldCgpLCBGYWxsVGhyb3VnaE1lYW5zVHJ1ZSk7CiAKICAgICBnZW5l
cmF0b3IuZW1pdExhYmVsKHRvcE9mTG9vcC5nZXQoKSk7CkBAIC0xNjU2LDcgKzE2NTksNyBAQCB2
b2lkIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuCiAgICAgZ2VuZXJhdG9yLmVt
aXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29w
ZS0+Y29udGludWVUYXJnZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4
ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24oKSk7
CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0
TGluZSgpLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAK
ICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByLCB0b3BPZkxv
b3AuZ2V0KCksIHNjb3BlLT5icmVha1RhcmdldCgpLCBGYWxsVGhyb3VnaE1lYW5zRmFsc2UpOwog
CkBAIC0xNjY5LDcgKzE2NzIsNyBAQCB2b2lkIEZvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyCiB7CiAgICAgTGFiZWxTY29wZVB0ciBzY29wZSA9IGdlbmVyYXRvci5uZXdMYWJlbFNj
b3BlKExhYmVsU2NvcGU6Okxvb3ApOwogCi0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24o
KSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZp
cnN0TGluZSgpLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7
CiAKICAgICBpZiAobV9leHByMSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVyYXRv
ci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcjEpOwpAQCAtMTY4NCw3ICsxNjg3LDcgQEAgdm9pZCBG
b3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcgogICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZShkc3QsIG1fc3RhdGVtZW50KTsKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNv
bnRpbnVlVGFyZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRl
U3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY2hhclBvc2l0aW9uKCkpOworICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgIGlm
IChtX2V4cHIzKQogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZ2VuZXJhdG9yLmlnbm9yZWRS
ZXN1bHQoKSwgbV9leHByMyk7CiAKQEAgLTE3MDcsNyArMTcxMCw3IEBAIHZvaWQgRm9ySW5Ob2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSwgY2hhclBvc2l0aW9uKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgc3RhcnRP
ZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgaWYgKG1faW5pdCkKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1faW5pdCk7CkBA
IC0xNzM2LDcgKzE3MzksNyBAQCB2b2lkIEZvckluTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuCiAgICAgICAgICAgICBOb25sb2NhbFJlc29sdmVJbmZvIHJlc29sdmVWZXJpZmllcjsKICAg
ICAgICAgICAgIFJlZ2lzdGVySUQqIGJhc2UgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVCYXNlRm9y
UHV0KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcmVzb2x2ZVJlc3VsdCwgaWRlbnQsIHJlc29s
dmVWZXJpZmllcik7CiAKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8o
ZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90
RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0UHV0VG9CYXNlKGJhc2UsIGlkZW50LCBwcm9wZXJ0eU5hbWUsIHJlc29s
dmVWZXJpZmllcik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBleHBlY3RlZFN1YnNj
cmlwdCA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb3Bl
cnR5TmFtZSk7CkBAIC0xNzUwLDcgKzE3NTMsNyBAQCB2b2lkIEZvckluTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuCiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm90ZWN0ID0gcHJv
cGVydHlOYW1lOwogICAgICAgICBSZWdpc3RlcklEKiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2Rl
KGFzc2lnbk5vZGUtPmJhc2UoKSk7CiAKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhhc3NpZ25Ob2RlLT5kaXZvdCgpLCBhc3NpZ25Ob2RlLT5zdGFydE9mZnNldCgpLCBhc3Np
Z25Ob2RlLT5lbmRPZmZzZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oYXNzaWduTm9kZS0+ZGl2b3QoKSwgYXNzaWduTm9kZS0+ZGl2b3RTdGFydE9mZnNldCgpLCBh
c3NpZ25Ob2RlLT5kaXZvdEVuZE9mZnNldCgpLCBhc3NpZ25Ob2RlLT5kaXZvdExpbmUoKSwgYXNz
aWduTm9kZS0+ZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJ
ZChiYXNlLCBpZGVudCwgcHJvcGVydHlOYW1lKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NF
UlQobV9sZXhwci0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpOwpAQCAtMTc2MCw3ICsxNzYzLDcg
QEAgdm9pZCBGb3JJbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbgogICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShhc3NpZ25Ob2RlLT5iYXNl
KCkpOwogICAgICAgICBSZWdpc3RlcklEKiBzdWJzY3JpcHQgPSBnZW5lcmF0b3IuZW1pdE5vZGUo
YXNzaWduTm9kZS0+c3Vic2NyaXB0KCkpOwogICAgICAgICAKLSAgICAgICAgZ2VuZXJhdG9yLmVt
aXRFeHByZXNzaW9uSW5mbyhhc3NpZ25Ob2RlLT5kaXZvdCgpLCBhc3NpZ25Ob2RlLT5zdGFydE9m
ZnNldCgpLCBhc3NpZ25Ob2RlLT5lbmRPZmZzZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oYXNzaWduTm9kZS0+ZGl2b3QoKSwgYXNzaWduTm9kZS0+ZGl2b3RTdGFy
dE9mZnNldCgpLCBhc3NpZ25Ob2RlLT5kaXZvdEVuZE9mZnNldCgpLCBhc3NpZ25Ob2RlLT5kaXZv
dExpbmUoKSwgYXNzaWduTm9kZS0+ZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgc3Vic2NyaXB0LCBwcm9wZXJ0eU5hbWUpOwogICAg
IH0gICAKIApAQCAtMTc3MSw3ICsxNzc0LDcgQEAgdm9pZCBGb3JJbk5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbgogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+Y29udGludWVU
YXJnZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXROZXh0UHJvcGVydHlOYW1lKHByb3BlcnR5TmFt
ZSwgYmFzZS5nZXQoKSwgaS5nZXQoKSwgc2l6ZS5nZXQoKSwgaXRlci5nZXQoKSwgbG9vcFN0YXJ0
LmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVu
dCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RM
aW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKICAgICBnZW5lcmF0b3Iu
ZW1pdExhYmVsKHNjb3BlLT5icmVha1RhcmdldCgpKTsKIH0KIApAQCAtMTc5Myw3ICsxNzk2LDcg
QEAgTGFiZWwqIENvbnRpbnVlTm9kZTo6dHJpdmlhbFRhcmdldChCeXRlYwogCiB2b2lkIENvbnRp
bnVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqKQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY2hhclBvc2l0aW9uKCkpOworICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFz
dExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgIAogICAgIExh
YmVsU2NvcGUqIHNjb3BlID0gZ2VuZXJhdG9yLmNvbnRpbnVlVGFyZ2V0KG1faWRlbnQpOwogICAg
IEFTU0VSVChzY29wZSk7CkBAIC0xODIwLDcgKzE4MjMsNyBAQCBMYWJlbCogQnJlYWtOb2RlOjp0
cml2aWFsVGFyZ2V0KEJ5dGVjb2RlCiAKIHZvaWQgQnJlYWtOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7Ci0gICAgZ2VuZXJhdG9y
LmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGlu
ZSgpLCBjaGFyUG9zaXRpb24oKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4
ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBs
aW5lU3RhcnRPZmZzZXQoKSk7CiAgICAgCiAgICAgTGFiZWxTY29wZSogc2NvcGUgPSBnZW5lcmF0
b3IuYnJlYWtUYXJnZXQobV9pZGVudCk7CiAgICAgQVNTRVJUKHNjb3BlKTsKQEAgLTE4MzMsNyAr
MTgzNiw3IEBAIHZvaWQgQnJlYWtOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW4KIAogdm9p
ZCBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVj
dXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY2hhclBvc2l0aW9uKCkpOwor
ICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExp
bmUoKSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAg
IEFTU0VSVChnZW5lcmF0b3IuY29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpOwogCiAgICAgaWYg
KGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQpAQCAtMTg0NSw3ICsxODQ4LDcgQEAg
dm9pZCBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZQogICAgICAgICBnZW5lcmF0
b3IuZW1pdFBvcFNjb3BlcygwKTsKICAgICB9CiAKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9v
ayhXaWxsTGVhdmVDYWxsRnJhbWUsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRp
b24oKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBm
aXJzdExpbmUoKSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkp
OwogICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHJldHVyblJlZ2lzdGVyLmdldCgpKTsKIH0KIApA
QCAtMTg1MywxMCArMTg1NiwxMCBAQCB2b2lkIFJldHVybk5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlCiAKIHZvaWQgV2l0aE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9z
aXRpb24oKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1l
bnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZz
ZXQoKSk7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobV9leHByKTsKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG1fZGl2b3QsIG1f
ZXhwcmVzc2lvbkxlbmd0aCwgMCk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyht
X2Rpdm90LCBtX2V4cHJlc3Npb25MZW5ndGgsIDAsIG1fZGl2b3RMaW5lLCBtX2Rpdm90TGluZVN0
YXJ0KTsKICAgICBnZW5lcmF0b3IuZW1pdFB1c2hXaXRoU2NvcGUoc2NvcGUuZ2V0KCkpOwogICAg
IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKICAgICBnZW5lcmF0b3IuZW1p
dFBvcFNjb3BlKCk7CkBAIC0yMDI3LDcgKzIwMzAsNyBAQCB2b2lkIENhc2VCbG9ja05vZGU6OmVt
aXRCeXRlY29kZUZvckJsb2NrCiAKIHZvaWQgU3dpdGNoTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RM
aW5lKCksIGNoYXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxs
RXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCks
IGxpbmVTdGFydE9mZnNldCgpKTsKICAgICAKICAgICBMYWJlbFNjb3BlUHRyIHNjb3BlID0gZ2Vu
ZXJhdG9yLm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6U3dpdGNoKTsKIApAQCAtMjA0MSw3ICsy
MDQ0LDcgQEAgdm9pZCBTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZQogCiB2b2lk
IExhYmVsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0
ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3NpdGlvbigpKTsKKyAg
ICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5l
KCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKIAogICAg
IEFTU0VSVCghZ2VuZXJhdG9yLmJyZWFrVGFyZ2V0KG1fbmFtZSkpOwogCkBAIC0yMDU1LDEyICsy
MDU4LDEyIEBAIHZvaWQgTGFiZWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW4KIAogdm9p
ZCBUaHJvd05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1
dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24oKSk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGlu
ZSgpLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAKICAg
ICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgIGRzdCA9IDA7
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGV4cHIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHBy
KTsKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0
KCksIGVuZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90
KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRp
dm90TGluZVN0YXJ0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0VGhyb3coZXhwci5nZXQoKSk7CiB9
CiAKQEAgLTIwNzEsNyArMjA3NCw3IEBAIHZvaWQgVHJ5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXIKICAgICAvLyBOT1RFOiBUaGUgY2F0Y2ggYW5kIGZpbmFsbHkgYmxvY2tzIG11c3Qg
YmUgbGFiZWxlZCBleHBsaWNpdGx5LCBzbyB0aGUKICAgICAvLyBvcHRpbWl6ZXIga25vd3MgdGhl
eSBtYXkgYmUganVtcGVkIHRvIGZyb20gYW55d2hlcmUuCiAKLSAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNo
YXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0
YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFy
dE9mZnNldCgpKTsKIAogICAgIEFTU0VSVChtX2NhdGNoQmxvY2sgfHwgbV9maW5hbGx5QmxvY2sp
OwogCkBAIC0yMTM5LDEzICsyMTQyLDEzIEBAIGlubGluZSB2b2lkIFNjb3BlTm9kZTo6ZW1pdFN0
YXRlbWVudHNCeXQKIAogdm9pZCBQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewotICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlUHJvZ3JhbSwgc3RhcnRMaW5lKCksIHN0YXJ0TGluZSgpLCBzdGFy
dENoYXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0
ZVByb2dyYW0sIHN0YXJ0TGluZSgpLCBzdGFydExpbmUoKSwgc3RhcnRTdGFydE9mZnNldCgpLCBz
dGFydExpbmVTdGFydE9mZnNldCgpKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkc3RSZWdp
c3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBnZW5lcmF0b3IuZW1pdExvYWQo
ZHN0UmVnaXN0ZXIuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOwogICAgIGVtaXRTdGF0ZW1lbnRzQnl0
ZWNvZGUoZ2VuZXJhdG9yLCBkc3RSZWdpc3Rlci5nZXQoKSk7CiAKLSAgICBnZW5lcmF0b3IuZW1p
dERlYnVnSG9vayhEaWRFeGVjdXRlUHJvZ3JhbSwgbGFzdExpbmUoKSwgbGFzdExpbmUoKSwgY2hh
clBvc2l0aW9uKCkgLSAxKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRFeGVjdXRl
UHJvZ3JhbSwgbGFzdExpbmUoKSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0
T2Zmc2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0RW5kKGRzdFJlZ2lzdGVyLmdldCgpKTsKIH0K
IApAQCAtMjE1MywxMyArMjE1NiwxMyBAQCB2b2lkIFByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHCiAKIHZvaWQgRXZhbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9v
ayhXaWxsRXhlY3V0ZVByb2dyYW0sIHN0YXJ0TGluZSgpLCBzdGFydExpbmUoKSwgc3RhcnRDaGFy
UG9zaXRpb24oKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVQcm9n
cmFtLCBzdGFydExpbmUoKSwgc3RhcnRMaW5lKCksIHN0YXJ0U3RhcnRPZmZzZXQoKSwgc3RhcnRM
aW5lU3RhcnRPZmZzZXQoKSk7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZHN0UmVnaXN0ZXIg
PSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdFJl
Z2lzdGVyLmdldCgpLCBqc1VuZGVmaW5lZCgpKTsKICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2Rl
KGdlbmVyYXRvciwgZHN0UmVnaXN0ZXIuZ2V0KCkpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1
Z0hvb2soRGlkRXhlY3V0ZVByb2dyYW0sIGxhc3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3Np
dGlvbigpIC0gMSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkRXhlY3V0ZVByb2dy
YW0sIGxhc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNl
dCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdEVuZChkc3RSZWdpc3Rlci5nZXQoKSk7CiB9CiAKQEAg
LTIxNjcsNyArMjE3MCw3IEBAIHZvaWQgRXZhbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmUKIAogdm9pZCBGdW5jdGlvbkJvZHlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soRGlkRW50ZXJDYWxsRnJhbWUsIHN0YXJ0TGluZSgpLCBzdGFydExpbmUoKSwgc3RhcnRDaGFy
UG9zaXRpb24oKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkRW50ZXJDYWxsRnJh
bWUsIHN0YXJ0TGluZSgpLCBzdGFydExpbmUoKSwgc3RhcnRTdGFydE9mZnNldCgpLCBzdGFydExp
bmVTdGFydE9mZnNldCgpKTsKICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwg
Z2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CiAKICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVT
dGF0ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQoKTsKQEAgLTIxODMsOCArMjE4Niw4IEBA
IHZvaWQgRnVuY3Rpb25Cb2R5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGUKICAgICAvLyBJZiB0aGVy
ZSBpcyBubyByZXR1cm4gd2UgbXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBvbmUuCiAgICAgaWYg
KCFyZXR1cm5Ob2RlKSB7CiAgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29u
c3RydWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9h
ZCgwLCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgQVNTRVJUKChjaGFyUG9zaXRpb24oKSAtICAx
KSA+PSAwKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZy
YW1lLCBsYXN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24oKSAtIDEpOworICAgICAg
ICBBU1NFUlQoKHN0YXJ0T2Zmc2V0KCkgLSAgMSkgPj0gbGluZVN0YXJ0T2Zmc2V0KCkpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5l
KCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCkgLSAxLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHIwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAkocmV2aXNpb24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIyLDkgKzQyMiwxMSBA
QCBzdGF0aWMgdm9pZCBhcHBlbmRTb3VyY2VUb0Vycm9yKENhbGxGcmFtCiAgICAgaW50IHN0YXJ0
T2Zmc2V0ID0gMDsKICAgICBpbnQgZW5kT2Zmc2V0ID0gMDsKICAgICBpbnQgZGl2b3RQb2ludCA9
IDA7CisgICAgdW5zaWduZWQgbGluZSA9IDA7CisgICAgdW5zaWduZWQgY29sdW1uID0gMDsKIAog
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKLSAgICBj
b2RlQmxvY2stPmV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0
LCBkaXZvdFBvaW50LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKKyAgICBjb2RlQmxvY2stPmV4
cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBkaXZvdFBvaW50
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBsaW5lLCBjb2x1bW4pOwogCiAgICAgaW50IGV4cHJl
c3Npb25TdGFydCA9IGRpdm90UG9pbnQgLSBzdGFydE9mZnNldDsKICAgICBpbnQgZXhwcmVzc2lv
blN0b3AgPSBkaXZvdFBvaW50ICsgZW5kT2Zmc2V0OwpAQCAtNTcyLDI1ICs1NzQsMjggQEAgc3Rh
dGljIFN0YWNrRnJhbWVDb2RlVHlwZSBnZXRTdGFja0ZyYW1lQwogICAgIHJldHVybiBTdGFja0Zy
YW1lR2xvYmFsQ29kZTsKIH0KIAotdW5zaWduZWQgU3RhY2tGcmFtZTo6bGluZSgpCit2b2lkIFN0
YWNrRnJhbWU6OmNvbXB1dGVMaW5lQW5kQ29sdW1uKHVuc2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYg
Y29sdW1uKQogewotICAgIHJldHVybiBjb2RlQmxvY2sgPyBjb2RlQmxvY2stPmxpbmVOdW1iZXJG
b3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkgKyBsaW5lT2Zmc2V0IDogMDsKLX0KKyAg
ICBpZiAoIWNvZGVCbG9jaykgeworICAgICAgICBsaW5lID0gMDsKKyAgICAgICAgY29sdW1uID0g
MDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotdW5zaWduZWQgU3RhY2tGcmFtZTo6Y29sdW1u
KCkKLXsKLSAgICBpZiAoIWNvZGUpCi0gICAgICAgIHJldHVybiAwOwogICAgIGludCBkaXZvdCA9
IDA7CiAgICAgaW50IHVudXNlZFN0YXJ0T2Zmc2V0ID0gMDsKICAgICBpbnQgdW51c2VkRW5kT2Zm
c2V0ID0gMDsKLSAgICBleHByZXNzaW9uSW5mbyhkaXZvdCwgdW51c2VkU3RhcnRPZmZzZXQsIHVu
dXNlZEVuZE9mZnNldCk7Ci0gICAgcmV0dXJuIGNvZGUtPmNoYXJQb3NpdGlvblRvQ29sdW1uTnVt
YmVyKGRpdm90KTsKKyAgICB1bnNpZ25lZCBkaXZvdExpbmUgPSAwOworICAgIHVuc2lnbmVkIGRp
dm90Q29sdW1uID0gMDsKKyAgICBleHByZXNzaW9uSW5mbyhkaXZvdCwgdW51c2VkU3RhcnRPZmZz
ZXQsIHVudXNlZEVuZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdENvbHVtbik7CisKKyAgICBsaW5l
ID0gZGl2b3RMaW5lICsgbGluZU9mZnNldDsKKyAgICBjb2x1bW4gPSBkaXZvdENvbHVtbiArIChk
aXZvdExpbmUgPyAxIDogZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KTsKIH0KIAotdm9pZCBTdGFja0Zy
YW1lOjpleHByZXNzaW9uSW5mbyhpbnQmIGRpdm90LCBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVu
ZE9mZnNldCkKK3ZvaWQgU3RhY2tGcmFtZTo6ZXhwcmVzc2lvbkluZm8oaW50JiBkaXZvdCwgaW50
JiBzdGFydE9mZnNldCwgaW50JiBlbmRPZmZzZXQsIHVuc2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYg
Y29sdW1uKQogewotICAgIGNvZGVCbG9jay0+ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVPZmZz
ZXQoYnl0ZWNvZGVPZmZzZXQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKKyAgICBj
b2RlQmxvY2stPmV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0
LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgbGluZSwgY29sdW1uKTsKICAgICBkaXZv
dCArPSBjaGFyYWN0ZXJPZmZzZXQ7CiB9CiAKQEAgLTYwNSwxMCArNjEwLDE0IEBAIFN0cmluZyBT
dGFja0ZyYW1lOjp0b1N0cmluZyhDYWxsRnJhbWUqIGMKICAgICAgICAgICAgIHRyYWNlQnVpbGQu
YXBwZW5kKCdAJyk7CiAgICAgICAgIHRyYWNlQnVpbGQuYXBwZW5kKHNvdXJjZVVSTCk7CiAgICAg
ICAgIGlmIChjb2RlVHlwZSAhPSBTdGFja0ZyYW1lTmF0aXZlQ29kZSkgeworICAgICAgICAgICAg
dW5zaWduZWQgbGluZTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNvbHVtbjsKKyAgICAgICAgICAg
IGNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVtbik7CisKICAgICAgICAgICAgIHRyYWNl
QnVpbGQuYXBwZW5kKCc6Jyk7Ci0gICAgICAgICAgICB0cmFjZUJ1aWxkLmFwcGVuZE51bWJlcihs
aW5lKCkpOworICAgICAgICAgICAgdHJhY2VCdWlsZC5hcHBlbmROdW1iZXIobGluZSk7CiAgICAg
ICAgICAgICB0cmFjZUJ1aWxkLmFwcGVuZCgnOicpOwotICAgICAgICAgICAgdHJhY2VCdWlsZC5h
cHBlbmROdW1iZXIoY29sdW1uKCkpOworICAgICAgICAgICAgdHJhY2VCdWlsZC5hcHBlbmROdW1i
ZXIoY29sdW1uKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdHJhY2VCdWlsZC50b1N0
cmluZygpLmltcGwoKTsKQEAgLTYzNiwxMyArNjQ1LDE1IEBAIHZvaWQgSW50ZXJwcmV0ZXI6Omdl
dFN0YWNrVHJhY2UoVk0qIHZtLCAKICAgICAgICAgICAgICAgICBTdHJvbmc8VW5saW5rZWRDb2Rl
QmxvY2s+KCp2bSwgY2FsbGVyQ29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpKSwKICAgICAg
ICAgICAgICAgICBjYWxsZXJDb2RlQmxvY2stPnNvdXJjZSgpLAogICAgICAgICAgICAgICAgIGNh
bGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmxpbmVObygpLAorICAgICAgICAgICAg
ICAgIGNhbGxlckNvZGVCbG9jay0+Zmlyc3RMaW5lQ29sdW1uT2Zmc2V0KCksCiAgICAgICAgICAg
ICAgICAgY2FsbGVyQ29kZUJsb2NrLT5zb3VyY2VPZmZzZXQoKSwKICAgICAgICAgICAgICAgICBi
eXRlY29kZU9mZnNldCwKICAgICAgICAgICAgICAgICBzb3VyY2VVUkwKICAgICAgICAgICAgIH07
CisKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHMpOwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgU3RhY2tGcmFtZSBzID0geyBTdHJvbmc8SlNPYmplY3Q+KCp2bSwgY2FsbEZyYW1l
LT5jYWxsZWUoKSksIFN0YWNrRnJhbWVOYXRpdmVDb2RlLCBTdHJvbmc8RXhlY3V0YWJsZUJhc2U+
KCksIFN0cm9uZzxVbmxpbmtlZENvZGVCbG9jaz4oKSwgMCwgMCwgMCwgMCwgU3RyaW5nKCl9Owor
ICAgICAgICAgICAgU3RhY2tGcmFtZSBzID0geyBTdHJvbmc8SlNPYmplY3Q+KCp2bSwgY2FsbEZy
YW1lLT5jYWxsZWUoKSksIFN0YWNrRnJhbWVOYXRpdmVDb2RlLCBTdHJvbmc8RXhlY3V0YWJsZUJh
c2U+KCksIFN0cm9uZzxVbmxpbmtlZENvZGVCbG9jaz4oKSwgMCwgMCwgMCwgMCwgMCwgU3RyaW5n
KCl9OwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocyk7CiAgICAgICAgIH0KICAgICAgICAg
Y2FsbEZyYW1lID0gZ2V0Q2FsbGVySW5mbyh2bSwgY2FsbEZyYW1lLCBieXRlY29kZU9mZnNldCwg
Y2FsbGVyQ29kZUJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxNTE5MjApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODIs
NiArODIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3Ryb25nPFVubGlua2VkQ29kZUJs
b2NrPiBjb2RlQmxvY2s7CiAgICAgICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gY29kZTsKICAg
ICAgICAgaW50IGxpbmVPZmZzZXQ7CisgICAgICAgIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9m
ZnNldDsKICAgICAgICAgdW5zaWduZWQgY2hhcmFjdGVyT2Zmc2V0OwogICAgICAgICB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldDsKICAgICAgICAgU3RyaW5nIHNvdXJjZVVSTDsKQEAgLTEyNSw5ICsx
MjYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1
cm4gdHJhY2VMaW5lLmlzTnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IHRyYWNlTGluZTsKICAgICAg
ICAgfQotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBsaW5lKCk7Ci0gICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGNvbHVtbigpOwotICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGV4cHJlc3Npb25JbmZvKGludCYgZGl2b3QsIGludCYgc3RhcnRPZmZzZXQs
IGludCYgZW5kT2Zmc2V0KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjb21wdXRl
TGluZUFuZENvbHVtbih1bnNpZ25lZCYgbGluZSwgdW5zaWduZWQmIGNvbHVtbik7CisKKyAgICBw
cml2YXRlOgorICAgICAgICB2b2lkIGV4cHJlc3Npb25JbmZvKGludCYgZGl2b3QsIGludCYgc3Rh
cnRPZmZzZXQsIGludCYgZW5kT2Zmc2V0LCB1bnNpZ25lZCYgbGluZSwgdW5zaWduZWQmIGNvbHVt
bik7CiAgICAgfTsKIAogICAgIGNsYXNzIFRvcENhbGxGcmFtZVNldHRlciB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAkocmV2aXNpb24gMTUxOTIwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDEyICszMywyMCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEFTVEJ1aWxk
ZXIgeworICAgIHN0cnVjdCBQb3NpdGlvbkluZm8geworICAgICAgICB1bnNpZ25lZCBzdGFydFBv
czsKKyAgICAgICAgdW5zaWduZWQgbGluZTsKKyAgICAgICAgdW5zaWduZWQgbGluZVN0YXJ0UG9z
OworICAgIH07CisKICAgICBzdHJ1Y3QgQmluYXJ5T3BJbmZvIHsKICAgICAgICAgQmluYXJ5T3BJ
bmZvKCkge30KLSAgICAgICAgQmluYXJ5T3BJbmZvKGludCBzLCBpbnQgZCwgaW50IGUsIGJvb2wg
cikKKyAgICAgICAgQmluYXJ5T3BJbmZvKGludCBzLCBpbnQgZCwgaW50IGUsIHVuc2lnbmVkIGRM
aW5lLCB1bnNpZ25lZCBkTGluZVN0YXJ0LCBib29sIHIpCiAgICAgICAgICAgICA6IHN0YXJ0KHMp
CiAgICAgICAgICAgICAsIGRpdm90KGQpCiAgICAgICAgICAgICAsIGVuZChlKQorICAgICAgICAg
ICAgLCBkaXZvdExpbmUoZExpbmUpCisgICAgICAgICAgICAsIGRpdm90TGluZVN0YXJ0KGRMaW5l
U3RhcnQpCiAgICAgICAgICAgICAsIGhhc0Fzc2lnbm1lbnQocikKICAgICAgICAgewogICAgICAg
ICB9CkBAIC00NiwyOSArNTQsMzkgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAgICAgICA6
IHN0YXJ0KGxocy5zdGFydCkKICAgICAgICAgICAgICwgZGl2b3QocmhzLnN0YXJ0KQogICAgICAg
ICAgICAgLCBlbmQocmhzLmVuZCkKKyAgICAgICAgICAgICwgZGl2b3RMaW5lKHJocy5kaXZvdExp
bmUpCisgICAgICAgICAgICAsIGRpdm90TGluZVN0YXJ0KHJocy5kaXZvdExpbmVTdGFydCkKICAg
ICAgICAgICAgICwgaGFzQXNzaWdubWVudChsaHMuaGFzQXNzaWdubWVudCB8fCByaHMuaGFzQXNz
aWdubWVudCkKICAgICAgICAgewogICAgICAgICB9CiAgICAgICAgIGludCBzdGFydDsKICAgICAg
ICAgaW50IGRpdm90OwogICAgICAgICBpbnQgZW5kOworICAgICAgICB1bnNpZ25lZCBkaXZvdExp
bmU7CisgICAgICAgIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0OwogICAgICAgICBib29sIGhhc0Fz
c2lnbm1lbnQ7CiAgICAgfTsKICAgICAKICAgICAKICAgICBzdHJ1Y3QgQXNzaWdubWVudEluZm8g
ewogICAgICAgICBBc3NpZ25tZW50SW5mbygpIHt9Ci0gICAgICAgIEFzc2lnbm1lbnRJbmZvKEV4
cHJlc3Npb25Ob2RlKiBub2RlLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGluaXRBc3NpZ25t
ZW50cywgT3BlcmF0b3Igb3ApCisgICAgICAgIEFzc2lnbm1lbnRJbmZvKEV4cHJlc3Npb25Ob2Rl
KiBub2RlLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIGRpdm90TGlu
ZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQsIGludCBpbml0QXNzaWdubWVudHMsIE9wZXJhdG9y
IG9wKQogICAgICAgICAgICAgOiBtX25vZGUobm9kZSkKICAgICAgICAgICAgICwgbV9zdGFydChz
dGFydCkKICAgICAgICAgICAgICwgbV9kaXZvdChkaXZvdCkKKyAgICAgICAgICAgICwgbV9kaXZv
dExpbmUoZGl2b3RMaW5lKQorICAgICAgICAgICAgLCBtX2Rpdm90TGluZVN0YXJ0KGRpdm90TGlu
ZVN0YXJ0KQogICAgICAgICAgICAgLCBtX2luaXRBc3NpZ25tZW50cyhpbml0QXNzaWdubWVudHMp
CiAgICAgICAgICAgICAsIG1fb3Aob3ApCiAgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCht
X2Rpdm90ID49IG1fZGl2b3RMaW5lU3RhcnQpOworICAgICAgICAgICAgQVNTRVJUKG1fc3RhcnQg
Pj0gbV9kaXZvdExpbmVTdGFydCk7CiAgICAgICAgIH0KICAgICAgICAgRXhwcmVzc2lvbk5vZGUq
IG1fbm9kZTsKLSAgICAgICAgaW50IG1fc3RhcnQ7Ci0gICAgICAgIGludCBtX2Rpdm90OworICAg
ICAgICB1bnNpZ25lZCBtX3N0YXJ0OworICAgICAgICB1bnNpZ25lZCBtX2Rpdm90OworICAgICAg
ICB1bnNpZ25lZCBtX2Rpdm90TGluZTsKKyAgICAgICAgdW5zaWduZWQgbV9kaXZvdExpbmVTdGFy
dDsKICAgICAgICAgaW50IG1faW5pdEFzc2lnbm1lbnRzOwogICAgICAgICBPcGVyYXRvciBtX29w
OwogICAgIH07CkBAIC0xMTMsNyArMTMxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBp
bnQgIERvbnRCdWlsZFN0cmluZ3MgPSAwOwogCiAgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaW5h
cnlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCB0b2tlbiwgc3RkOjpwYWlyPEV4cHJl
c3Npb25Ob2RlKiwgQmluYXJ5T3BJbmZvPiwgc3RkOjpwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmlu
YXJ5T3BJbmZvPik7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VGdW5jdGlvbkNhbGxOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBmdW5jLCBBcmd1bWVudHNOb2Rl
KiBhcmdzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7CisgICAgRXhwcmVzc2lvbk5v
ZGUqIG1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBmdW5jLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBpbnQgc3RhcnQsIHVuc2lnbmVkIGRp
dm90LCBpbnQgZW5kLCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0
KTsKIAogICAgIEpTQzo6U291cmNlRWxlbWVudHMqIGNyZWF0ZVNvdXJjZUVsZW1lbnRzKCkgeyBy
ZXR1cm4gbmV3IChtX3ZtKSBKU0M6OlNvdXJjZUVsZW1lbnRzKCk7IH0KIApAQCAtMTI2LDExICsx
NDQsMTEgQEAgcHVibGljOgogCiAgICAgQ29tbWFOb2RlKiBjcmVhdGVDb21tYUV4cHIoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhwcmVzc2lv
bk5vZGUqIHJocykgeyByZXR1cm4gbmV3IChtX3ZtKSBDb21tYU5vZGUobG9jYXRpb24sIGxocywg
cmhzKTsgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VBc3NpZ25Ob2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBPcGVyYXRvciwgRXhwcmVzc2lvbk5v
ZGUqIHJpZ2h0LCBib29sIGxlZnRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7Ci0gICAgRXhwcmVzc2lvbk5vZGUq
IG1ha2VQcmVmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwg
T3BlcmF0b3IsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKLSAgICBFeHByZXNzaW9u
Tm9kZSogbWFrZVBvc3RmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKiwgT3BlcmF0b3IsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKKyAgICBFeHBy
ZXNzaW9uTm9kZSogbWFrZUFzc2lnbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqIGxlZnQsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgbGVm
dEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50
IGRpdm90LCBpbnQgZW5kLCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0
YXJ0KTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZVByZWZpeE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgaW50IHN0YXJ0LCBpbnQgZGl2b3Qs
IGludCBlbmQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpOwor
ICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlUG9zdGZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBl
bmQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpOwogICAgIEV4
cHJlc3Npb25Ob2RlKiBtYWtlVHlwZU9mTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSopOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRGVsZXRlTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIGludCBzdGFydCwgaW50IGRpdm90LCBp
bnQgZW5kKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZURlbGV0ZU5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVu
ZCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCk7IAogICAgIEV4
cHJlc3Npb25Ob2RlKiBtYWtlTmVnYXRlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSopOwogICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0d2lzZU5vdE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKICAgICBFeHByZXNzaW9uTm9k
ZSogbWFrZU11bHROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBs
ZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CkBA
IC0xNjMsMTEgKzE4MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHVzZXNUaGlzKCk7CiAgICAgICAg
IHJldHVybiBuZXcgKG1fdm0pIFRoaXNOb2RlKGxvY2F0aW9uKTsKICAgICB9Ci0gICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZVJlc29sdmUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
Y29uc3QgSWRlbnRpZmllciogaWRlbnQsIGludCBzdGFydCkKKyAgICBFeHByZXNzaW9uTm9kZSog
Y3JlYXRlUmVzb2x2ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVu
dGlmaWVyKiBpZGVudCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWdu
ZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAgewogICAgICAgICBpZiAobV92bS0+cHJvcGVydHlOYW1l
cy0+YXJndW1lbnRzID09ICppZGVudCkKICAgICAgICAgICAgIHVzZXNBcmd1bWVudHMoKTsKLSAg
ICAgICAgcmV0dXJuIG5ldyAobV92bSkgUmVzb2x2ZU5vZGUobG9jYXRpb24sICppZGVudCwgc3Rh
cnQpOworICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBSZXNvbHZlTm9kZShsb2NhdGlvbiwgKmlk
ZW50LCBzdGFydCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7CiAgICAgfQogICAgIEV4cHJl
c3Npb25Ob2RlKiBjcmVhdGVPYmplY3RMaXRlcmFsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24pIHsgcmV0dXJuIG5ldyAobV92bSkgT2JqZWN0TGl0ZXJhbE5vZGUobG9jYXRpb24pOyB9
CiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU9iamVjdExpdGVyYWwoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlMaXN0Tm9kZSogcHJvcGVydGllcykgeyByZXR1cm4g
bmV3IChtX3ZtKSBPYmplY3RMaXRlcmFsTm9kZShsb2NhdGlvbiwgcHJvcGVydGllcyk7IH0KQEAg
LTIxMCw0MSArMjI4LDQxIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5ldyAobV92bSkgTnVs
bE5vZGUobG9jYXRpb24pOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVCcmFj
a2V0QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBFeHByZXNzaW9uTm9kZSogcHJvcGVydHksIGJvb2wgcHJvcGVydHlIYXNBc3NpZ25t
ZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCisgICAgRXhwcmVzc2lvbk5vZGUq
IGNyZWF0ZUJyYWNrZXRBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eSwgYm9vbCBwcm9wZXJ0
eUhhc0Fzc2lnbm1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCwgdW5zaWduZWQg
ZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICB7CiAgICAgICAgIEJyYWNr
ZXRBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fdm0pIEJyYWNrZXRBY2Nlc3Nvck5vZGUobG9j
YXRpb24sIGJhc2UsIHByb3BlcnR5LCBwcm9wZXJ0eUhhc0Fzc2lnbm1lbnRzKTsKLSAgICAgICAg
c2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOworICAgICAgICBz
ZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCwgZGl2b3RMaW5lLCBk
aXZvdExpbmVTdGFydCk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJl
c3Npb25Ob2RlKiBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5LCBpbnQg
c3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRG90
QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eSwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGlu
dCBlbmQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAg
ewogICAgICAgICBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fdm0pIERvdEFjY2Vzc29y
Tm9kZShsb2NhdGlvbiwgYmFzZSwgKnByb3BlcnR5KTsKLSAgICAgICAgc2V0RXhjZXB0aW9uTG9j
YXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOworICAgICAgICBzZXRFeGNlcHRpb25Mb2Nh
dGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7
CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVh
dGVSZWdFeHAoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmll
ciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MsIGludCBzdGFydCkKKyAgICBFeHBy
ZXNzaW9uTm9kZSogY3JlYXRlUmVnRXhwKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzLCBpbnQg
c3RhcnQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAg
ewogICAgICAgICBpZiAoWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi5zdHJpbmcoKSkpCiAgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgUmVnRXhwTm9kZSogbm9kZSA9IG5ldyAobV92bSkg
UmVnRXhwTm9kZShsb2NhdGlvbiwgcGF0dGVybiwgZmxhZ3MpOwogICAgICAgICBpbnQgc2l6ZSA9
IHBhdHRlcm4ubGVuZ3RoKCkgKyAyOyAvLyArIDIgZm9yIHRoZSB0d28gLydzCi0gICAgICAgIHNl
dEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBzdGFydCArIHNpemUsIHN0YXJ0ICsgc2l6
ZSk7CisgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBzdGFydCArIHNp
emUsIHN0YXJ0ICsgc2l6ZSwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7CiAgICAgICAgIHJl
dHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOZXdFeHByKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1
bWVudHNOb2RlKiBhcmd1bWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQorICAg
IEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmd1bWVudHMsIGlu
dCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kLCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVk
IGRpdm90TGluZVN0YXJ0KQogICAgIHsKICAgICAgICAgTmV3RXhwck5vZGUqIG5vZGUgPSBuZXcg
KG1fdm0pIE5ld0V4cHJOb2RlKGxvY2F0aW9uLCBleHByLCBhcmd1bWVudHMpOwotICAgICAgICBz
ZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CisgICAgICAgIHNl
dEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kLCBkaXZvdExpbmUsIGRp
dm90TGluZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGVuZCkKKyAgICBFeHByZXNzaW9u
Tm9kZSogY3JlYXRlTmV3RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBkaXZvdExpbmUs
IHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogICAgIHsKICAgICAgICAgTmV3RXhwck5vZGUqIG5v
ZGUgPSBuZXcgKG1fdm0pIE5ld0V4cHJOb2RlKGxvY2F0aW9uLCBleHByKTsKLSAgICAgICAgc2V0
RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGVuZCwgZW5kKTsKKyAgICAgICAgc2V0RXhj
ZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGVuZCwgZW5kLCBkaXZvdExpbmUsIGRpdm90TGlu
ZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCkBAIC0yNTMsMjUgKzI3MSwy
NSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBuZXcgKG1fdm0pIENvbmRpdGlvbmFsTm9kZShs
b2NhdGlvbiwgY29uZGl0aW9uLCBsaHMsIHJocyk7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5v
ZGUqIGNyZWF0ZUFzc2lnblJlc29sdmUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaHMsIGludCBzdGFydCwg
aW50IGRpdm90LCBpbnQgZW5kKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBc3NpZ25SZXNv
bHZlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBFeHByZXNzaW9uTm9kZSogcmhzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCwg
dW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICB7CiAgICAg
ICAgIGlmIChyaHMtPmlzRnVuY0V4cHJOb2RlKCkpCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxG
dW5jRXhwck5vZGUqPihyaHMpLT5ib2R5KCktPnNldEluZmVycmVkTmFtZShpZGVudCk7CiAgICAg
ICAgIEFzc2lnblJlc29sdmVOb2RlKiBub2RlID0gbmV3IChtX3ZtKSBBc3NpZ25SZXNvbHZlTm9k
ZShsb2NhdGlvbiwgaWRlbnQsIHJocyk7Ci0gICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5v
ZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKKyAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9k
ZSwgc3RhcnQsIGRpdm90LCBlbmQsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogICAgICAg
ICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRnVuY3Rp
b25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIq
IG5hbWUsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcnMs
IGludCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwg
aW50IGJvZHlFbmRMaW5lKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVGdW5jdGlvbkV4cHIo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogbmFtZSwg
RnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVycywgdW5zaWdu
ZWQgb3BlbkJyYWNlT2Zmc2V0LCB1bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0LCBpbnQgYm9keVN0
YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbikKICAgICB7Ci0g
ICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBGdW5jRXhwck5vZGUobG9j
YXRpb24sICpuYW1lLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNl
UG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSwgcGFyYW1ldGVycyk7Ci0gICAgICAg
IGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSwgbG9jYXRpb24uY2hhclBv
c2l0aW9uKTsKKyAgICAgICAgRnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fdm0pIEZ1bmNF
eHByTm9kZShsb2NhdGlvbiwgKm5hbWUsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lv
bihvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZzZXQsIGJvZHlTdGFydExpbmUsIHN0YXJ0
Q29sdW1uKSwgcGFyYW1ldGVycyk7CisgICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5l
LCBib2R5RW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9m
ZnNldCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgRnVuY3Rpb25Cb2R5
Tm9kZSogY3JlYXRlRnVuY3Rpb25Cb2R5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2Nh
dGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgYm9vbCBpblN0cmljdENv
bnRleHQpCisgICAgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlRnVuY3Rpb25Cb2R5KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRM
b2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIGJvb2wgaW5TdHJpY3RDb250ZXh0KQogICAg
IHsKLSAgICAgICAgcmV0dXJuIEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShtX3ZtLCBzdGFydExv
Y2F0aW9uLCBlbmRMb2NhdGlvbiwgaW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIEZ1
bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShtX3ZtLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwg
c3RhcnRDb2x1bW4sIGluU3RyaWN0Q29udGV4dCk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRGdW5j
dGlvblN0YXJ0KEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGludCBmdW5jdGlvblN0YXJ0KQpAQCAt
Mjc5LDE4ICsyOTcsMTggQEAgcHVibGljOgogICAgICAgICBib2R5LT5zZXRGdW5jdGlvblN0YXJ0
KGZ1bmN0aW9uU3RhcnQpOwogICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVy
dHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBjb25zdCBJZGVudGlmaWVyKiBu
YW1lLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGludCBv
cGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJv
ZHlFbmRMaW5lKQorICAgIHRlbXBsYXRlIDxib29sPiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRl
ck9yU2V0dGVyUHJvcGVydHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVy
dHlOb2RlOjpUeXBlIHR5cGUsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIFBhcmFtZXRlck5vZGUq
IHBhcmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgdW5zaWduZWQgb3BlbkJyYWNlT2Zmc2V0
LCB1bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0LCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlF
bmRMaW5lLCB1bnNpZ25lZCBib2R5U3RhcnRDb2x1bW4pCiAgICAgewogICAgICAgICBBU1NFUlQo
bmFtZSk7Ci0gICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSwg
bG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExp
bmUsIGJvZHlFbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0
T2Zmc2V0KTsKICAgICAgICAgYm9keS0+c2V0SW5mZXJyZWROYW1lKCpuYW1lKTsKLSAgICAgICAg
cmV0dXJuIG5ldyAobV92bSkgUHJvcGVydHlOb2RlKG1fdm0sICpuYW1lLCBuZXcgKG1fdm0pIEZ1
bmNFeHByTm9kZShsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIs
IGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJh
Y2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJhbXMpLCB0eXBlKTsKKyAgICAgICAgcmV0dXJuIG5l
dyAobV92bSkgUHJvcGVydHlOb2RlKG1fdm0sICpuYW1lLCBuZXcgKG1fdm0pIEZ1bmNFeHByTm9k
ZShsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGJvZHksIG1f
c291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZz
ZXQsIGJvZHlTdGFydExpbmUsIGJvZHlTdGFydENvbHVtbiksIHBhcmFtcyksIHR5cGUpOwogICAg
IH0KICAgICAKLSAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJP
clNldHRlclByb3BlcnR5KFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJv
cGVydHlOb2RlOjpUeXBlIHR5cGUsIGRvdWJsZSBuYW1lLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMs
IEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGludCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNl
UG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lKQorICAgIHRlbXBsYXRlIDxi
b29sPiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoVk0qLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgZG91
YmxlIG5hbWUsIFBhcmFtZXRlck5vZGUqIHBhcmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwg
dW5zaWduZWQgb3BlbkJyYWNlT2Zmc2V0LCB1bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0LCBpbnQg
Ym9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lLCB1bnNpZ25lZCBib2R5U3RhcnRDb2x1bW4p
CiAgICAgewotICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUs
IGxvY2F0aW9uLmNoYXJQb3NpdGlvbik7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fdm0pIFByb3Bl
cnR5Tm9kZShtX3ZtLCBuYW1lLCBuZXcgKG1fdm0pIEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgbV92
bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGJvZHksIG1fc291cmNlQ29kZS0+c3Vi
RXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpLCBw
YXJhbXMpLCB0eXBlKTsKKyAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlF
bmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsK
KyAgICAgICAgcmV0dXJuIG5ldyAobV92bSkgUHJvcGVydHlOb2RlKG1fdm0sIG5hbWUsIG5ldyAo
bV92bSkgRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRl
bnRpZmllciwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZU9mZnNl
dCwgY2xvc2VCcmFjZU9mZnNldCwgYm9keVN0YXJ0TGluZSwgYm9keVN0YXJ0Q29sdW1uKSwgcGFy
YW1zKSwgdHlwZSk7CiAgICAgfQogCiAgICAgQXJndW1lbnRzTm9kZSogY3JlYXRlQXJndW1lbnRz
KCkgeyByZXR1cm4gbmV3IChtX3ZtKSBBcmd1bWVudHNOb2RlKCk7IH0KQEAgLTMyMCw1NyArMzM4
LDU3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VXNlc0FyZ3VtZW50cyhGdW5jdGlvbkJvZHlO
b2RlKiBub2RlKSB7IG5vZGUtPnNldFVzZXNBcmd1bWVudHMoKTsgfQogCi0gICAgU3RhdGVtZW50
Tm9kZSogY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgUGFy
YW1ldGVyTm9kZSogcGFyYW1ldGVycywgaW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3NlQnJhY2VQ
b3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9k
ZSogY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgUGFyYW1l
dGVyTm9kZSogcGFyYW1ldGVycywgdW5zaWduZWQgb3BlbkJyYWNlT2Zmc2V0LCB1bnNpZ25lZCBj
bG9zZUJyYWNlT2Zmc2V0LCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lLCB1bnNp
Z25lZCBib2R5U3RhcnRDb2x1bW4pCiAgICAgewotICAgICAgICBGdW5jRGVjbE5vZGUqIGRlY2wg
PSBuZXcgKG1fdm0pIEZ1bmNEZWNsTm9kZShsb2NhdGlvbiwgKm5hbWUsIGJvZHksIG1fc291cmNl
Q29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFy
dExpbmUpLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgRnVuY0RlY2xOb2RlKiBkZWNsID0gbmV3ICht
X3ZtKSBGdW5jRGVjbE5vZGUobG9jYXRpb24sICpuYW1lLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1
YkV4cHJlc3Npb24ob3BlbkJyYWNlT2Zmc2V0LCBjbG9zZUJyYWNlT2Zmc2V0LCBib2R5U3RhcnRM
aW5lLCBib2R5U3RhcnRDb2x1bW4pLCBwYXJhbWV0ZXJzKTsKICAgICAgICAgaWYgKCpuYW1lID09
IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cykKICAgICAgICAgICAgIHVzZXNBcmd1bWVu
dHMoKTsKICAgICAgICAgbV9zY29wZS5tX2Z1bmNEZWNsYXJhdGlvbnMtPmRhdGEuYXBwZW5kKGRl
Y2wtPmJvZHkoKSk7Ci0gICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5k
TGluZSwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlT
dGFydExpbmUsIGJvZHlFbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGlu
ZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIGRlY2w7CiAgICAgfQogCiAgICAgU3RhdGVt
ZW50Tm9kZSogY3JlYXRlQmxvY2tTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgSlNDOjpTb3VyY2VFbGVtZW50cyogZWxlbWVudHMsIGludCBzdGFydExpbmUsIGludCBl
bmRMaW5lKQogICAgIHsKICAgICAgICAgQmxvY2tOb2RlKiBibG9jayA9IG5ldyAobV92bSkgQmxv
Y2tOb2RlKGxvY2F0aW9uLCBlbGVtZW50cyk7Ci0gICAgICAgIGJsb2NrLT5zZXRMb2Moc3RhcnRM
aW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jaGFyUG9zaXRpb24pOworICAgICAgICBibG9jay0+c2V0
TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxp
bmVTdGFydE9mZnNldCk7CiAgICAgICAgIHJldHVybiBibG9jazsKICAgICB9CiAKICAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVFeHByU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBlbmQpCiAgICAgewog
ICAgICAgICBFeHByU3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBFeHByU3RhdGVt
ZW50Tm9kZShsb2NhdGlvbiwgZXhwcik7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBl
bmQsIGxvY2F0aW9uLmNoYXJQb3NpdGlvbik7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0
LCBlbmQsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0
ZUlmU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIHRydWVCbG9jaywgU3RhdGVtZW50Tm9kZSog
ZmFsc2VCbG9jaywgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKICAgICAgICAgSWZFbHNlTm9k
ZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBJZkVsc2VOb2RlKGxvY2F0aW9uLCBjb25kaXRpb24sIHRy
dWVCbG9jaywgZmFsc2VCbG9jayk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQs
IGxvY2F0aW9uLmNoYXJQb3NpdGlvbik7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBl
bmQsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZv
ckxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGlu
aXRpYWxpemVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBFeHByZXNzaW9uTm9kZSogaXRl
ciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsK
ICAgICAgICAgRm9yTm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBGb3JOb2RlKGxvY2F0aW9uLCBp
bml0aWFsaXplciwgY29uZGl0aW9uLCBpdGVyLCBzdGF0ZW1lbnRzKTsKLSAgICAgICAgcmVzdWx0
LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgcmVz
dWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxp
bmVTdGFydE9mZnNldCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3Rh
dGVtZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIs
IEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBpbnQgc3Rh
cnQsIGludCBkaXZvdCwgaW50IGVuZCwgaW50IGluaXRTdGFydCwgaW50IGluaXRFbmQsIGludCBz
dGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9v
cChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCwgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVyLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3Rh
dGVtZW50Tm9kZSogc3RhdGVtZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQsIGlu
dCBpbml0U3RhcnQsIGludCBpbml0RW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSwgdW5z
aWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICB7Ci0gICAgICAg
IEZvckluTm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBGb3JJbk5vZGUobV92bSwgbG9jYXRpb24s
ICppZGVudCwgaW5pdGlhbGl6ZXIsIGl0ZXIsIHN0YXRlbWVudHMsIGluaXRTdGFydCwgaW5pdFN0
YXJ0IC0gc3RhcnQsIGluaXRFbmQgLSBpbml0U3RhcnQpOwotICAgICAgICByZXN1bHQtPnNldExv
YyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNoYXJQb3NpdGlvbik7Ci0gICAgICAgIHNl
dEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgc3RhcnQsIGRpdm90ICsgMSwgZW5kKTsKKyAgICAg
ICAgRm9ySW5Ob2RlKiByZXN1bHQgPSBuZXcgKG1fdm0pIEZvckluTm9kZShtX3ZtLCBsb2NhdGlv
biwgKmlkZW50LCBpbml0aWFsaXplciwgaXRlciwgc3RhdGVtZW50cywgaW5pdFN0YXJ0LCBpbml0
U3RhcnQgLSBzdGFydCwgaW5pdEVuZCAtIGluaXRTdGFydCwgZGl2b3RMaW5lLCBkaXZvdExpbmVT
dGFydCk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRp
b24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CisgICAgICAgIHNldEV4
Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgc3RhcnQsIGRpdm90ICsgMSwgZW5kLCBkaXZvdExpbmUs
IGRpdm90TGluZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBT
dGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JJbkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVu
dE5vZGUqIHN0YXRlbWVudHMsIGludCBlU3RhcnQsIGludCBlRGl2b3QsIGludCBlRW5kLCBpbnQg
c3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29wKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Np
b25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBpbnQgZVN0YXJ0LCBpbnQg
ZURpdm90LCBpbnQgZUVuZCwgaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBkaXZvdExpbmUs
IHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogICAgIHsKICAgICAgICAgRm9ySW5Ob2RlKiByZXN1
bHQgPSBuZXcgKG1fdm0pIEZvckluTm9kZShsb2NhdGlvbiwgbGhzLCBpdGVyLCBzdGF0ZW1lbnRz
KTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uY2hhclBvc2l0
aW9uKTsKLSAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVEaXZv
dCwgZUVuZCk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQsIGxvY2F0aW9uLnN0
YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOworICAgICAgICBzZXRFeGNlcHRp
b25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZURpdm90LCBlRW5kLCBkaXZvdExpbmUsIGRpdm90
TGluZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTM4Myw0NyAr
NDAxLDQ3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyAobV92bSkgRW1wdHlT
dGF0ZW1lbnROb2RlKGxvY2F0aW9uKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0
ID0gbmV3IChtX3ZtKSBWYXJTdGF0ZW1lbnROb2RlKGxvY2F0aW9uLCBleHByKTsKLSAgICAgICAg
cmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAg
ICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0
aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0g
ICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlUmV0dXJuU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByZXNzaW9uLCBpbnQgZVN0YXJ0LCBp
bnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSog
Y3JlYXRlUmV0dXJuU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4
cHJlc3Npb25Ob2RlKiBleHByZXNzaW9uLCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0
TGluZSwgaW50IGVuZExpbmUsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5l
U3RhcnQpCiAgICAgewogICAgICAgICBSZXR1cm5Ob2RlKiByZXN1bHQgPSBuZXcgKG1fdm0pIFJl
dHVybk5vZGUobG9jYXRpb24sIGV4cHJlc3Npb24pOwotICAgICAgICBzZXRFeGNlcHRpb25Mb2Nh
dGlvbihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9j
KHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgc2V0
RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVFbmQsIGVFbmQsIGRpdm90TGluZSwg
ZGl2b3RMaW5lU3RhcnQpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExp
bmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUJy
ZWFrU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGludCBlU3RhcnQs
IGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2Rl
KiBjcmVhdGVCcmVha1N0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBp
bnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUsIHVuc2lnbmVk
IGVuZExpbmVTdGFydCkKICAgICB7CiAgICAgICAgIEJyZWFrTm9kZSogcmVzdWx0ID0gbmV3ICht
X3ZtKSBCcmVha05vZGUobV92bSwgbG9jYXRpb24pOwotICAgICAgICBzZXRFeGNlcHRpb25Mb2Nh
dGlvbihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9j
KHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgc2V0
RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVFbmQsIGVFbmQsIGVuZExpbmUsIGVu
ZExpbmVTdGFydCk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwg
bG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQnJlYWtT
dGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmll
ciogaWRlbnQsIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGlu
ZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVCcmVha1N0YXRlbWVudChjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgaW50IGVTdGFydCwg
aW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lLCB1bnNpZ25lZCBlbmRMaW5lU3Rh
cnQpCiAgICAgewogICAgICAgICBCcmVha05vZGUqIHJlc3VsdCA9IG5ldyAobV92bSkgQnJlYWtO
b2RlKGxvY2F0aW9uLCAqaWRlbnQpOwotICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1
bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGlu
ZSwgZW5kTGluZSwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgc2V0RXhjZXB0aW9u
TG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVFbmQsIGVFbmQsIGVuZExpbmUsIGVuZExpbmVTdGFy
dCk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24u
c3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQ29udGludWVTdGF0ZW1l
bnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50IGVTdGFydCwgaW50IGVFbmQs
IGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUNv
bnRpbnVlU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGludCBlU3Rh
cnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSwgdW5zaWduZWQgZW5kTGlu
ZVN0YXJ0KQogICAgIHsKICAgICAgICAgQ29udGludWVOb2RlKiByZXN1bHQgPSBuZXcgKG1fdm0p
IENvbnRpbnVlTm9kZShtX3ZtLCBsb2NhdGlvbik7Ci0gICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0
aW9uKHJlc3VsdCwgZVN0YXJ0LCBlRW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Mo
c3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jaGFyUG9zaXRpb24pOworICAgICAgICBzZXRF
eGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCwgZW5kTGluZSwgZW5k
TGluZVN0YXJ0KTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBs
b2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVDb250aW51
ZVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlm
aWVyKiBpZGVudCwgaW50IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRM
aW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBpbnQgZVN0
YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUsIHVuc2lnbmVkIGVuZExp
bmVTdGFydCkKICAgICB7CiAgICAgICAgIENvbnRpbnVlTm9kZSogcmVzdWx0ID0gbmV3IChtX3Zt
KSBDb250aW51ZU5vZGUobG9jYXRpb24sICppZGVudCk7Ci0gICAgICAgIHNldEV4Y2VwdGlvbkxv
Y2F0aW9uKHJlc3VsdCwgZVN0YXJ0LCBlRW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0LT5zZXRM
b2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jaGFyUG9zaXRpb24pOworICAgICAgICBz
ZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCwgZW5kTGluZSwg
ZW5kTGluZVN0YXJ0KTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5l
LCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTQzMiw3ICs0NTAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFRyeU5vZGUqIHJlc3VsdCA9IG5ldyAobV92bSkgVHJ5Tm9kZShsb2NhdGlvbiwgdHJ5
QmxvY2ssICppZGVudCwgY2F0Y2hCbG9jaywgZmluYWxseUJsb2NrKTsKICAgICAgICAgaWYgKGNh
dGNoQmxvY2spCiAgICAgICAgICAgICB1c2VzQ2F0Y2goKTsKLSAgICAgICAgcmVzdWx0LT5zZXRM
b2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jaGFyUG9zaXRpb24pOworICAgICAgICBy
ZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBs
b2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IApAQCAtNDQwLDU4ICs0NTgsNTggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQ2FzZUJsb2Nr
Tm9kZSogY2FzZXMgPSBuZXcgKG1fdm0pIENhc2VCbG9ja05vZGUoZmlyc3RDbGF1c2VzLCBkZWZh
dWx0Q2xhdXNlLCBzZWNvbmRDbGF1c2VzKTsKICAgICAgICAgU3dpdGNoTm9kZSogcmVzdWx0ID0g
bmV3IChtX3ZtKSBTd2l0Y2hOb2RlKGxvY2F0aW9uLCBleHByLCBjYXNlcyk7Ci0gICAgICAgIHJl
c3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsK
KyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5zdGFy
dE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAKICAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVXaGlsZVN0YXRlbWVudChjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVt
ZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7CiAg
ICAgICAgIFdoaWxlTm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBXaGlsZU5vZGUobG9jYXRpb24s
IGV4cHIsIHN0YXRlbWVudCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5k
TGluZSwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3Rh
cnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0
T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBTdGF0ZW1lbnRO
b2RlKiBjcmVhdGVEb1doaWxlU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBz
dGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKICAgICAgICAgRG9XaGlsZU5vZGUqIHJlc3Vs
dCA9IG5ldyAobV92bSkgRG9XaGlsZU5vZGUobG9jYXRpb24sIHN0YXRlbWVudCwgZXhwcik7Ci0g
ICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY2hhclBv
c2l0aW9uKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2Nh
dGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVMYWJlbFN0YXRl
bWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBp
ZGVudCwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAg
U3RhdGVtZW50Tm9kZSogY3JlYXRlTGFiZWxTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIFN0YXRlbWVudE5vZGUqIHN0YXRl
bWVudCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1
bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICB7CiAgICAgICAgIExhYmVsTm9kZSogcmVzdWx0
ID0gbmV3IChtX3ZtKSBMYWJlbE5vZGUobG9jYXRpb24sICppZGVudCwgc3RhdGVtZW50KTsKLSAg
ICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBzdGFydCwgZW5kLCBlbmQpOworICAg
ICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIHN0YXJ0LCBlbmQsIGVuZCwgZGl2b3RM
aW5lLCBkaXZvdExpbmVTdGFydCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0g
ICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlV2l0aFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVt
ZW50LCBpbnQgc3RhcnQsIGludCBlbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAg
IFN0YXRlbWVudE5vZGUqIGNyZWF0ZVdpdGhTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVu
dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwgdW5zaWduZWQgc3RhcnRMaW5lLCB1bnNp
Z25lZCBlbmRMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0
KQogICAgIHsKICAgICAgICAgdXNlc1dpdGgoKTsKLSAgICAgICAgV2l0aE5vZGUqIHJlc3VsdCA9
IG5ldyAobV92bSkgV2l0aE5vZGUobG9jYXRpb24sIGV4cHIsIHN0YXRlbWVudCwgZW5kLCBlbmQg
LSBzdGFydCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9j
YXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgV2l0aE5vZGUqIHJlc3VsdCA9IG5ldyAobV92
bSkgV2l0aE5vZGUobG9jYXRpb24sIGV4cHIsIHN0YXRlbWVudCwgZW5kLCBkaXZvdExpbmUsIGRp
dm90TGluZVN0YXJ0LCBlbmQgLSBzdGFydCk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0
TGluZSwgZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9m
ZnNldCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfSAgICAKICAgICAKLSAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVUaHJvd1N0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgc3Rh
cnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVUaHJvd1N0YXRl
bWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhw
ciwgaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSwgdW5zaWdu
ZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICB7CiAgICAgICAgIFRo
cm93Tm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBUaHJvd05vZGUobG9jYXRpb24sIGV4cHIpOwot
ICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNoYXJQ
b3NpdGlvbik7Ci0gICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgc3RhcnQsIGVu
ZCwgZW5kKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2Nh
dGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgc2V0
RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBzdGFydCwgZW5kLCBlbmQsIGRpdm90TGluZSwgZGl2
b3RMaW5lU3RhcnQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKICAgICBT
dGF0ZW1lbnROb2RlKiBjcmVhdGVEZWJ1Z2dlcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7CiAgICAgICAgIERlYnVnZ2Vy
U3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBEZWJ1Z2dlclN0YXRlbWVudE5vZGUo
bG9jYXRpb24pOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxv
Y2F0aW9uLmNoYXJQb3NpdGlvbik7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwg
ZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAogICAgIFN0YXRlbWVudE5vZGUq
IGNyZWF0ZUNvbnN0U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIENv
bnN0RGVjbE5vZGUqIGRlY2xzLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7CiAg
ICAgICAgIENvbnN0U3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBDb25zdFN0YXRl
bWVudE5vZGUobG9jYXRpb24sIGRlY2xzKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRM
aW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jaGFyUG9zaXRpb24pOworICAgICAgICByZXN1bHQtPnNl
dExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5s
aW5lU3RhcnRPZmZzZXQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtNTI4
LDEwICs1NDYsMTAgQEAgcHVibGljOgogCiAgICAgaW50IGV2YWxDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fZXZhbENvdW50OyB9CiAKLSAgICB2b2lkIGFwcGVuZEJpbmFyeUV4cHJlc3Npb25JbmZv
KGludCYgb3BlcmFuZFN0YWNrRGVwdGgsIEV4cHJlc3Npb25Ob2RlKiBjdXJyZW50LCBpbnQgZXhw
clN0YXJ0LCBpbnQgbGhzLCBpbnQgcmhzLCBib29sIGhhc0Fzc2lnbm1lbnRzKQorICAgIHZvaWQg
YXBwZW5kQmluYXJ5RXhwcmVzc2lvbkluZm8oaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgRXhwcmVz
c2lvbk5vZGUqIGN1cnJlbnQsIGludCBleHByU3RhcnQsIGludCBsaHMsIGludCByaHMsIHVuc2ln
bmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQsIGJvb2wgaGFzQXNzaWdubWVu
dHMpCiAgICAgewogICAgICAgICBvcGVyYW5kU3RhY2tEZXB0aCsrOwotICAgICAgICBtX2JpbmFy
eU9wZXJhbmRTdGFjay5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY3VycmVudCwgQmluYXJ5T3BJbmZv
KGV4cHJTdGFydCwgbGhzLCByaHMsIGhhc0Fzc2lnbm1lbnRzKSkpOworICAgICAgICBtX2JpbmFy
eU9wZXJhbmRTdGFjay5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY3VycmVudCwgQmluYXJ5T3BJbmZv
KGV4cHJTdGFydCwgbGhzLCByaHMsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQsIGhhc0Fzc2ln
bm1lbnRzKSkpOwogICAgIH0KIAogICAgIC8vIExvZ2ljIHRvIGhhbmRsZSBkYXRhc3RydWN0dXJl
cyB1c2VkIGR1cmluZyBwYXJzaW5nIG9mIGJpbmFyeSBleHByZXNzaW9ucwpAQCAtNTY4LDEwICs1
ODYsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAg
ICB2b2lkIGFwcGVuZFVuYXJ5VG9rZW4oaW50JiB0b2tlblN0YWNrRGVwdGgsIGludCB0eXBlLCBp
bnQgc3RhcnQpCisgICAgdm9pZCBhcHBlbmRVbmFyeVRva2VuKGludCYgdG9rZW5TdGFja0RlcHRo
LCBpbnQgdHlwZSwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQg
ZGl2b3RMaW5lU3RhcnQpCiAgICAgewogICAgICAgICB0b2tlblN0YWNrRGVwdGgrKzsKLSAgICAg
ICAgbV91bmFyeVRva2VuU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHR5cGUsIHN0YXJ0KSk7
CisgICAgICAgIFBvc2l0aW9uSW5mbyBwb3NpdGlvbiA9IHsgc3RhcnQsIGRpdm90TGluZSwgZGl2
b3RMaW5lU3RhcnQgfTsKKyAgICAgICAgbV91bmFyeVRva2VuU3RhY2suYXBwZW5kKHN0ZDo6bWFr
ZV9wYWlyKHR5cGUsIHBvc2l0aW9uKSk7CiAgICAgfQogCiAgICAgaW50IHVuYXJ5VG9rZW5TdGFj
a0xhc3RUeXBlKGludCYpCkBAIC01NzksMjYgKzU5OCwzNCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBtX3VuYXJ5VG9rZW5TdGFjay5sYXN0KCkuZmlyc3Q7CiAgICAgfQogICAgIAotICAgIGlu
dCB1bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQoaW50JikKKyAgICB1bnNpZ25lZCB1bmFyeVRva2Vu
U3RhY2tMYXN0U3RhcnQoaW50JikKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3VuYXJ5VG9rZW5T
dGFjay5sYXN0KCkuc2Vjb25kOworICAgICAgICByZXR1cm4gbV91bmFyeVRva2VuU3RhY2subGFz
dCgpLnNlY29uZC5zdGFydFBvczsKICAgICB9CiAgICAgCisgICAgdW5zaWduZWQgdW5hcnlUb2tl
blN0YWNrTGFzdExpbmVTdGFydFBvc2l0aW9uKGludCYpCisgICAgeworICAgICAgICByZXR1cm4g
bV91bmFyeVRva2VuU3RhY2subGFzdCgpLnNlY29uZC5saW5lU3RhcnRQb3M7CisgICAgfQorCiAg
ICAgdm9pZCB1bmFyeVRva2VuU3RhY2tSZW1vdmVMYXN0KGludCYgdG9rZW5TdGFja0RlcHRoKQog
ICAgIHsKICAgICAgICAgdG9rZW5TdGFja0RlcHRoLS07CiAgICAgICAgIG1fdW5hcnlUb2tlblN0
YWNrLnJlbW92ZUxhc3QoKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBhc3NpZ25tZW50U3RhY2tB
cHBlbmQoaW50JiBhc3NpZ25tZW50U3RhY2tEZXB0aCwgRXhwcmVzc2lvbk5vZGUqIG5vZGUsIGlu
dCBzdGFydCwgaW50IGRpdm90LCBpbnQgYXNzaWdubWVudENvdW50LCBPcGVyYXRvciBvcCkKKyAg
ICB2b2lkIGFzc2lnbm1lbnRTdGFja0FwcGVuZChpbnQmIGFzc2lnbm1lbnRTdGFja0RlcHRoLCBF
eHByZXNzaW9uTm9kZSogbm9kZSwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0LCBpbnQgYXNzaWdubWVudENv
dW50LCBPcGVyYXRvciBvcCkKICAgICB7CiAgICAgICAgIGFzc2lnbm1lbnRTdGFja0RlcHRoKys7
Ci0gICAgICAgIG1fYXNzaWdubWVudEluZm9TdGFjay5hcHBlbmQoQXNzaWdubWVudEluZm8obm9k
ZSwgc3RhcnQsIGRpdm90LCBhc3NpZ25tZW50Q291bnQsIG9wKSk7CisgICAgICAgIEFTU0VSVChz
dGFydCA+PSBkaXZvdExpbmVTdGFydCk7CisgICAgICAgIEFTU0VSVChkaXZvdCA+PSBkaXZvdExp
bmVTdGFydCk7CisgICAgICAgIG1fYXNzaWdubWVudEluZm9TdGFjay5hcHBlbmQoQXNzaWdubWVu
dEluZm8obm9kZSwgc3RhcnQsIGRpdm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0LCBhc3Np
Z25tZW50Q291bnQsIG9wKSk7CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFz
c2lnbm1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50JiBhc3NpZ25tZW50
U3RhY2tEZXB0aCwgRXhwcmVzc2lvbk5vZGUqIHJocywgaW50IGluaXRpYWxBc3NpZ25tZW50Q291
bnQsIGludCBjdXJyZW50QXNzaWdubWVudENvdW50LCBpbnQgbGFzdFRva2VuRW5kKQogICAgIHsK
LSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIHJlc3VsdCA9IG1ha2VBc3NpZ25Ob2RlKGxvY2F0aW9u
LCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1fbm9kZSwgbV9hc3NpZ25tZW50SW5mb1N0
YWNrLmxhc3QoKS5tX29wLCByaHMsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9pbml0
QXNzaWdubWVudHMgIT0gaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25tZW50SW5mb1N0
YWNrLmxhc3QoKS5tX2luaXRBc3NpZ25tZW50cyAhPSBjdXJyZW50QXNzaWdubWVudENvdW50LCBt
X2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1fc3RhcnQsIG1fYXNzaWdubWVudEluZm9TdGFj
ay5sYXN0KCkubV9kaXZvdCArIDEsIGxhc3RUb2tlbkVuZCk7CisgICAgICAgIEFzc2lnbm1lbnRJ
bmZvJiBpbmZvID0gbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKTsKKyAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIHJlc3VsdCA9IG1ha2VBc3NpZ25Ob2RlKGxvY2F0aW9uLCBpbmZvLm1fbm9kZSwg
aW5mby5tX29wLCByaHMsIGluZm8ubV9pbml0QXNzaWdubWVudHMgIT0gaW5pdGlhbEFzc2lnbm1l
bnRDb3VudCwgaW5mby5tX2luaXRBc3NpZ25tZW50cyAhPSBjdXJyZW50QXNzaWdubWVudENvdW50
LCBpbmZvLm1fc3RhcnQsIGluZm8ubV9kaXZvdCArIDEsIGxhc3RUb2tlbkVuZCwgaW5mby5tX2Rp
dm90TGluZSwgaW5mby5tX2Rpdm90TGluZVN0YXJ0KTsKICAgICAgICAgbV9hc3NpZ25tZW50SW5m
b1N0YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAgYXNzaWdubWVudFN0YWNrRGVwdGgtLTsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTYyNCw5ICs2NTEsMTAgQEAgcHJpdmF0ZToKICAgICAg
ICAgaW50IG1fbnVtQ29uc3RhbnRzOwogICAgIH07CiAKLSAgICBzdGF0aWMgdm9pZCBzZXRFeGNl
cHRpb25Mb2NhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgdW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBlbmQpCisgICAgc3RhdGljIHZvaWQgc2V0RXhj
ZXB0aW9uTG9jYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIHVuc2lnbmVkIHN0
YXJ0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgZW5kLCB1bnNpZ25lZCBkaXZvdExpbmUsIHVu
c2lnbmVkIGRpdm90TGluZVN0YXJ0KQogICAgIHsKLSAgICAgICAgbm9kZS0+c2V0RXhjZXB0aW9u
U291cmNlQ29kZShkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICBB
U1NFUlQoZGl2b3QgPj0gZGl2b3RMaW5lU3RhcnQpOworICAgICAgICBub2RlLT5zZXRFeGNlcHRp
b25Tb3VyY2VDb2RlKGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCwgZGl2b3RMaW5l
LCBkaXZvdExpbmVTdGFydCk7CiAgICAgfQogCiAgICAgdm9pZCBpbmNDb25zdGFudHMoKSB7IG1f
c2NvcGUubV9udW1Db25zdGFudHMrKzsgfQpAQCAtNjUwLDcgKzY3OCw3IEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPEJpbmFyeU9wZXJhbmQsIDEwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9iaW5h
cnlPcGVyYW5kU3RhY2s7CiAgICAgVmVjdG9yPEFzc2lnbm1lbnRJbmZvLCAxMCwgVW5zYWZlVmVj
dG9yT3ZlcmZsb3c+IG1fYXNzaWdubWVudEluZm9TdGFjazsKICAgICBWZWN0b3I8cGFpcjxpbnQs
IGludD4sIDEwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9iaW5hcnlPcGVyYXRvclN0YWNrOwot
ICAgIFZlY3RvcjxwYWlyPGludCwgaW50PiwgMTAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX3Vu
YXJ5VG9rZW5TdGFjazsKKyAgICBWZWN0b3I8cGFpcjxpbnQsIFBvc2l0aW9uSW5mbz4sIDEwLCBV
bnNhZmVWZWN0b3JPdmVyZmxvdz4gbV91bmFyeVRva2VuU3RhY2s7CiAgICAgaW50IG1fZXZhbENv
dW50OwogfTsKIApAQCAtNjYzLDIxICs2OTEsMjEgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxk
ZXI6Om1ha2VUeXBlT2ZObwogICAgIHJldHVybiBuZXcgKG1fdm0pIFR5cGVPZlZhbHVlTm9kZShs
b2NhdGlvbiwgZXhwcik7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRGVs
ZXRlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
ZXhwciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCitFeHByZXNzaW9uTm9kZSogQVNU
QnVpbGRlcjo6bWFrZURlbGV0ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kLCB1bnNp
Z25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogewogICAgIGlmICghZXhw
ci0+aXNMb2NhdGlvbigpKQogICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBEZWxldGVWYWx1ZU5v
ZGUobG9jYXRpb24sIGV4cHIpOwogICAgIGlmIChleHByLT5pc1Jlc29sdmVOb2RlKCkpIHsKICAg
ICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGV4
cHIpOwotICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBEZWxldGVSZXNvbHZlTm9kZShsb2NhdGlv
biwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2
b3QpOworICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBEZWxldGVSZXNvbHZlTm9kZShsb2NhdGlv
biwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2
b3QsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogICAgIH0KICAgICBpZiAoZXhwci0+aXNC
cmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogYnJh
Y2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICAgICAg
cmV0dXJuIG5ldyAobV92bSkgRGVsZXRlQnJhY2tldE5vZGUobG9jYXRpb24sIGJyYWNrZXQtPmJh
c2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBk
aXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fdm0pIERlbGV0ZUJyYWNrZXROb2RlKGxvY2F0
aW9uLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBkaXZvdCwgZGl2b3Qg
LSBzdGFydCwgZW5kIC0gZGl2b3QsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogICAgIH0K
ICAgICBBU1NFUlQoZXhwci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgRG90QWNjZXNzb3JO
b2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICByZXR1
cm4gbmV3IChtX3ZtKSBEZWxldGVEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5p
ZGVudGlmaWVyKCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgcmV0
dXJuIG5ldyAobV92bSkgRGVsZXRlRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+
aWRlbnRpZmllcigpLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QsIGRpdm90TGlu
ZSwgZGl2b3RMaW5lU3RhcnQpOwogfQogCiBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFr
ZU5lZ2F0ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIG4pCkBAIC03OTQsMzUgKzgyMiwzNiBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6
bWFrZUJpdFhPck5vCiAgICAgcmV0dXJuIG5ldyAobV92bSkgQml0WE9yTm9kZShsb2NhdGlvbiwg
ZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUq
IEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBmdW5jLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBpbnQg
c3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjpt
YWtlRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogZnVuYywgQXJndW1lbnRzTm9kZSogYXJncywgaW50IHN0YXJ0LCB1bnNpZ25l
ZCBkaXZvdCwgaW50IGVuZCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVT
dGFydCkKIHsKKyAgICBBU1NFUlQoZGl2b3QgPj0gZGl2b3RMaW5lU3RhcnQpOwogICAgIGlmICgh
ZnVuYy0+aXNMb2NhdGlvbigpKQotICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBGdW5jdGlvbkNh
bGxWYWx1ZU5vZGUobG9jYXRpb24sIGZ1bmMsIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBl
bmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fdm0pIEZ1bmN0aW9uQ2FsbFZhbHVl
Tm9kZShsb2NhdGlvbiwgZnVuYywgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRp
dm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KTsKICAgICBpZiAoZnVuYy0+aXNSZXNvbHZl
Tm9kZSgpKSB7CiAgICAgICAgIFJlc29sdmVOb2RlKiByZXNvbHZlID0gc3RhdGljX2Nhc3Q8UmVz
b2x2ZU5vZGUqPihmdW5jKTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciA9
IHJlc29sdmUtPmlkZW50aWZpZXIoKTsKICAgICAgICAgaWYgKGlkZW50aWZpZXIgPT0gbV92bS0+
cHJvcGVydHlOYW1lcy0+ZXZhbCkgewogICAgICAgICAgICAgdXNlc0V2YWwoKTsKLSAgICAgICAg
ICAgIHJldHVybiBuZXcgKG1fdm0pIEV2YWxGdW5jdGlvbkNhbGxOb2RlKGxvY2F0aW9uLCBhcmdz
LCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICAgICAgcmV0dXJu
IG5ldyAobV92bSkgRXZhbEZ1bmN0aW9uQ2FsbE5vZGUobG9jYXRpb24sIGFyZ3MsIGRpdm90LCBk
aXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7CiAg
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5ldyAobV92bSkgRnVuY3Rpb25DYWxsUmVzb2x2ZU5v
ZGUobG9jYXRpb24sIGlkZW50aWZpZXIsIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQg
LSBkaXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fdm0pIEZ1bmN0aW9uQ2FsbFJlc29sdmVO
b2RlKGxvY2F0aW9uLCBpZGVudGlmaWVyLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5k
IC0gZGl2b3QsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogICAgIH0KICAgICBpZiAoZnVu
Yy0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9k
ZSogYnJhY2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihmdW5jKTsKLSAg
ICAgICAgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUqIG5vZGUgPSBuZXcgKG1fdm0pIEZ1bmN0aW9u
Q2FsbEJyYWNrZXROb2RlKGxvY2F0aW9uLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNj
cmlwdCgpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwotICAgICAg
ICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhicmFja2V0LT5kaXZvdCgpLCBicmFja2V0LT5l
bmRPZmZzZXQoKSk7CisgICAgICAgIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKiBub2RlID0gbmV3
IChtX3ZtKSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShsb2NhdGlvbiwgYnJhY2tldC0+YmFzZSgp
LCBicmFja2V0LT5zdWJzY3JpcHQoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAt
IGRpdm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KTsKKyAgICAgICAgbm9kZS0+c2V0U3Vi
ZXhwcmVzc2lvbkluZm8oYnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+ZGl2b3RFbmRPZmZzZXQo
KSwgYnJhY2tldC0+ZGl2b3RMaW5lKCksIGJyYWNrZXQtPmRpdm90TGluZVN0YXJ0KCkpOwogICAg
ICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAgICAgQVNTRVJUKGZ1bmMtPmlzRG90QWNjZXNzb3JO
b2RlKCkpOwogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNz
b3JOb2RlKj4oZnVuYyk7CiAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZSogbm9kZTsKICAgICBpZiAo
ZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbCkKLSAgICAgICAg
bm9kZSA9IG5ldyAobV92bSkgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+
YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVu
ZCAtIGRpdm90KTsKKyAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgQ2FsbEZ1bmN0aW9uQ2FsbERv
dE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2
b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0
KTsKICAgICBlbHNlIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5hcHBseSkKLSAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgQXBwbHlGdW5jdGlvbkNhbGxEb3RO
b2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90
LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fdm0p
IEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRl
bnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QsIGRpdm90
TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogICAgIGVsc2UKLSAgICAgICAgbm9kZSA9IG5ldyAobV92
bSkgRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRp
ZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwotICAgIG5v
ZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5lbmRPZmZzZXQoKSk7
CisgICAgICAgIG5vZGUgPSBuZXcgKG1fdm0pIEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24s
IGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3Rh
cnQsIGVuZCAtIGRpdm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KTsKKyAgICBub2RlLT5z
ZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCksIGRvdC0+ZGl2b3RFbmRPZmZzZXQoKSwg
ZG90LT5kaXZvdExpbmUoKSwgZG90LT5kaXZvdExpbmVTdGFydCgpKTsKICAgICByZXR1cm4gbm9k
ZTsKIH0KIApAQCAtODcwLDEzICs4OTksMTMgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6
Om1ha2VCaW5hcnlObwogCiAgICAgY2FzZSBJTlNUQU5DRU9GOiB7CiAgICAgICAgIEluc3RhbmNl
T2ZOb2RlKiBub2RlID0gbmV3IChtX3ZtKSBJbnN0YW5jZU9mTm9kZShsb2NhdGlvbiwgbGhzLmZp
cnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7Ci0gICAgICAgIHNldEV4
Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIGxocy5zZWNvbmQuc3RhcnQsIHJocy5zZWNvbmQuc3RhcnQs
IHJocy5zZWNvbmQuZW5kKTsKKyAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgbGhz
LnNlY29uZC5zdGFydCwgcmhzLnNlY29uZC5zdGFydCwgcmhzLnNlY29uZC5lbmQsIHJocy5zZWNv
bmQuZGl2b3RMaW5lLCByaHMuc2Vjb25kLmRpdm90TGluZVN0YXJ0KTsKICAgICAgICAgcmV0dXJu
IG5vZGU7CiAgICAgfQogCiAgICAgY2FzZSBJTlRPS0VOOiB7CiAgICAgICAgIEluTm9kZSogbm9k
ZSA9IG5ldyAobV92bSkgSW5Ob2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhz
LnNlY29uZC5oYXNBc3NpZ25tZW50KTsKLSAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9k
ZSwgbGhzLnNlY29uZC5zdGFydCwgcmhzLnNlY29uZC5zdGFydCwgcmhzLnNlY29uZC5lbmQpOwor
ICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBsaHMuc2Vjb25kLnN0YXJ0LCByaHMu
c2Vjb25kLnN0YXJ0LCByaHMuc2Vjb25kLmVuZCwgcmhzLnNlY29uZC5kaXZvdExpbmUsIHJocy5z
ZWNvbmQuZGl2b3RMaW5lU3RhcnQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKQEAg
LTkwOCwxMCArOTM3LDEwIEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQmluYXJ5
Tm8KICAgICByZXR1cm4gMDsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VB
c3NpZ25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBsb2MsIE9wZXJhdG9yIG9wLCBFeHByZXNzaW9uTm9kZSogZXhwciwgYm9vbCBsb2NIYXNBc3Np
Z25tZW50cywgYm9vbCBleHBySGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBp
bnQgZW5kKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25Ob2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsb2MsIE9wZXJhdG9y
IG9wLCBFeHByZXNzaW9uTm9kZSogZXhwciwgYm9vbCBsb2NIYXNBc3NpZ25tZW50cywgYm9vbCBl
eHBySGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kLCB1bnNpZ25l
ZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogewogICAgIGlmICghbG9jLT5p
c0xvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiBuZXcgKG1fdm0pIEFzc2lnbkVycm9yTm9kZShs
b2NhdGlvbiwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0
dXJuIG5ldyAobV92bSkgQXNzaWduRXJyb3JOb2RlKGxvY2F0aW9uLCBkaXZvdCwgZGl2b3QgLSBz
dGFydCwgZW5kIC0gZGl2b3QsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogCiAgICAgaWYg
KGxvYy0+aXNSZXNvbHZlTm9kZSgpKSB7CiAgICAgICAgIFJlc29sdmVOb2RlKiByZXNvbHZlID0g
c3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihsb2MpOwpAQCAtOTE5LDE3ICs5NDgsMTcgQEAgRXhw
cmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25ObwogICAgICAgICAgICAgaWYgKGV4
cHItPmlzRnVuY0V4cHJOb2RlKCkpCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RnVuY0V4
cHJOb2RlKj4oZXhwciktPmJvZHkoKS0+c2V0SW5mZXJyZWROYW1lKHJlc29sdmUtPmlkZW50aWZp
ZXIoKSk7CiAgICAgICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZSogbm9kZSA9IG5ldyAobV92bSkg
QXNzaWduUmVzb2x2ZU5vZGUobG9jYXRpb24sIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgZXhwcik7
Ci0gICAgICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVu
ZCk7CisgICAgICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3Qs
IGVuZCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7CiAgICAgICAgICAgICByZXR1cm4gbm9k
ZTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBSZWFkTW9kaWZ5UmVzb2x2
ZU5vZGUobG9jYXRpb24sIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNB
c3NpZ25tZW50cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAg
cmV0dXJuIG5ldyAobV92bSkgUmVhZE1vZGlmeVJlc29sdmVOb2RlKGxvY2F0aW9uLCByZXNvbHZl
LT5pZGVudGlmaWVyKCksIG9wLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBkaXZv
dCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7CiAgICAg
fQogICAgIGlmIChsb2MtPmlzQnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7CiAgICAgICAgIEJyYWNr
ZXRBY2Nlc3Nvck5vZGUqIGJyYWNrZXQgPSBzdGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2Rl
Kj4obG9jKTsKICAgICAgICAgaWYgKG9wID09IE9wRXF1YWwpCi0gICAgICAgICAgICByZXR1cm4g
bmV3IChtX3ZtKSBBc3NpZ25CcmFja2V0Tm9kZShsb2NhdGlvbiwgYnJhY2tldC0+YmFzZSgpLCBi
cmFja2V0LT5zdWJzY3JpcHQoKSwgZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4cHJIYXNBc3Np
Z25tZW50cywgYnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+ZGl2b3QoKSAtIHN0YXJ0LCBlbmQg
LSBicmFja2V0LT5kaXZvdCgpKTsKLSAgICAgICAgUmVhZE1vZGlmeUJyYWNrZXROb2RlKiBub2Rl
ID0gbmV3IChtX3ZtKSBSZWFkTW9kaWZ5QnJhY2tldE5vZGUobG9jYXRpb24sIGJyYWNrZXQtPmJh
c2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIG9wLCBleHByLCBsb2NIYXNBc3NpZ25tZW50cywg
ZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwot
ICAgICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhicmFja2V0LT5kaXZvdCgpLCBicmFj
a2V0LT5lbmRPZmZzZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBBc3NpZ25C
cmFja2V0Tm9kZShsb2NhdGlvbiwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQo
KSwgZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4cHJIYXNBc3NpZ25tZW50cywgYnJhY2tldC0+
ZGl2b3QoKSwgYnJhY2tldC0+ZGl2b3QoKSAtIHN0YXJ0LCBlbmQgLSBicmFja2V0LT5kaXZvdCgp
LCBicmFja2V0LT5kaXZvdExpbmUoKSwgYnJhY2tldC0+ZGl2b3RMaW5lU3RhcnQoKSk7CisgICAg
ICAgIFJlYWRNb2RpZnlCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyAobV92bSkgUmVhZE1vZGlmeUJy
YWNrZXROb2RlKGxvY2F0aW9uLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgp
LCBvcCwgZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3Qs
IGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KTsK
KyAgICAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oYnJhY2tldC0+ZGl2b3QoKSwgYnJh
Y2tldC0+ZGl2b3RFbmRPZmZzZXQoKSwgYnJhY2tldC0+ZGl2b3RMaW5lKCksIGJyYWNrZXQtPmRp
dm90TGluZVN0YXJ0KCkpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAgICAgQVNTRVJU
KGxvYy0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CkBAIC05MzcsMjIgKzk2NiwyMiBAQCBFeHByZXNz
aW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUFzc2lnbk5vCiAgICAgaWYgKG9wID09IE9wRXF1YWwp
IHsKICAgICAgICAgaWYgKGV4cHItPmlzRnVuY0V4cHJOb2RlKCkpCiAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxGdW5jRXhwck5vZGUqPihleHByKS0+Ym9keSgpLT5zZXRJbmZlcnJlZE5hbWUoZG90
LT5pZGVudGlmaWVyKCkpOwotICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBBc3NpZ25Eb3ROb2Rl
KGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGV4cHIsIGV4cHJIYXNB
c3NpZ25tZW50cywgZG90LT5kaXZvdCgpLCBkb3QtPmRpdm90KCkgLSBzdGFydCwgZW5kIC0gZG90
LT5kaXZvdCgpKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV92bSkgQXNzaWduRG90Tm9kZShsb2Nh
dGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBleHByLCBleHBySGFzQXNzaWdu
bWVudHMsIGRvdC0+ZGl2b3QoKSwgZG90LT5kaXZvdCgpIC0gc3RhcnQsIGVuZCAtIGRvdC0+ZGl2
b3QoKSwgZG90LT5kaXZvdExpbmUoKSwgZG90LT5kaXZvdExpbmVTdGFydCgpKTsKICAgICB9CiAK
LSAgICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9kZSA9IG5ldyAobV92bSkgUmVhZE1vZGlmeURvdE5v
ZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4
cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKLSAg
ICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCksIGRvdC0+ZW5kT2Zmc2V0
KCkpOworICAgIFJlYWRNb2RpZnlEb3ROb2RlKiBub2RlID0gbmV3IChtX3ZtKSBSZWFkTW9kaWZ5
RG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZXhw
ciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3Qs
IGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOworICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25J
bmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5kaXZvdEVuZE9mZnNldCgpLCBkb3QtPmRpdm90TGluZSgp
LCBkb3QtPmRpdm90TGluZVN0YXJ0KCkpOwogICAgIHJldHVybiBub2RlOwogfQogCi1FeHByZXNz
aW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVByZWZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wLCBpbnQgc3RhcnQs
IGludCBkaXZvdCwgaW50IGVuZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlUHJl
Zml4Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
ZXhwciwgT3BlcmF0b3Igb3AsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kLCB1bnNpZ25l
ZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogewotICAgIHJldHVybiBuZXcg
KG1fdm0pIFByZWZpeE5vZGUobG9jYXRpb24sIGV4cHIsIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFy
dCwgZW5kIC0gZGl2b3QpOworICAgIHJldHVybiBuZXcgKG1fdm0pIFByZWZpeE5vZGUobG9jYXRp
b24sIGV4cHIsIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QsIGRpdm90TGlu
ZSwgZGl2b3RMaW5lU3RhcnQpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFr
ZVBvc3RmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBleHByLCBPcGVyYXRvciBvcCwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCitF
eHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVBvc3RmaXhOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvciBvcCwgaW50
IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQg
ZGl2b3RMaW5lU3RhcnQpCiB7Ci0gICAgcmV0dXJuIG5ldyAobV92bSkgUG9zdGZpeE5vZGUobG9j
YXRpb24sIGV4cHIsIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAg
IHJldHVybiBuZXcgKG1fdm0pIFBvc3RmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBvcCwgZGl2b3Qs
IGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KTsK
IH0KIAogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAJKHJldmlz
aW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MjQsNyArNTI0LDcgQEAgU3RyaW5nIExleGVyPFQ+OjppbnZhbGlk
Q2hhcmFjdGVyTWVzc2FnZQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJ
TkUgY29uc3QgVCogTGV4ZXI8VD46OmN1cnJlbnRDaGFyYWN0ZXIoKSBjb25zdAorQUxXQVlTX0lO
TElORSBjb25zdCBUKiBMZXhlcjxUPjo6Y3VycmVudENvZGVQdHIoKSBjb25zdAogewogICAgIEFT
U0VSVChtX2NvZGUgPD0gbV9jb2RlRW5kKTsKICAgICByZXR1cm4gbV9jb2RlOwpAQCAtNTQ2LDEx
ICs1NDYsMTMgQEAgdm9pZCBMZXhlcjxUPjo6c2V0Q29kZShjb25zdCBTb3VyY2VDb2RlJgogICAg
ICAgICBtX2NvZGVTdGFydCA9IDA7CiAKICAgICBtX3NvdXJjZSA9ICZzb3VyY2U7CisgICAgbV9z
b3VyY2VPZmZzZXQgPSBzb3VyY2Uuc3RhcnRPZmZzZXQoKTsKICAgICBtX2NvZGVTdGFydFBsdXNP
ZmZzZXQgPSBtX2NvZGVTdGFydCArIHNvdXJjZS5zdGFydE9mZnNldCgpOwogICAgIG1fY29kZSA9
IG1fY29kZVN0YXJ0UGx1c09mZnNldDsKICAgICBtX2NvZGVFbmQgPSBtX2NvZGVTdGFydCArIHNv
dXJjZS5lbmRPZmZzZXQoKTsKICAgICBtX2Vycm9yID0gZmFsc2U7CiAgICAgbV9hdExpbmVTdGFy
dCA9IHRydWU7CisgICAgbV9saW5lU3RhcnQgPSBtX2NvZGU7CiAgICAgbV9sZXhFcnJvck1lc3Nh
Z2UgPSBTdHJpbmcoKTsKICAgICAKICAgICBtX2J1ZmZlcjgucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShpbml0aWFsUmVhZEJ1ZmZlckNhcGFjaXR5KTsKQEAgLTU2Nyw2ICs1NjksNyBAQCB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KIHRlbXBsYXRlIDxpbnQgc2hpZnRBbW91bnQ+IEFMV0FZU19JTkxJTkUg
dm9pZCBMZXhlcjxUPjo6aW50ZXJuYWxTaGlmdCgpCiB7CiAgICAgbV9jb2RlICs9IHNoaWZ0QW1v
dW50OworICAgIEFTU0VSVChjdXJyZW50T2Zmc2V0KCkgPj0gY3VycmVudExpbmVTdGFydE9mZnNl
dCgpKTsKICAgICBtX2N1cnJlbnQgPSAqbV9jb2RlOwogfQogCkBAIC03NjYsMjAgKzc2OSwyMSBA
QCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBjb25zdCBMQ2hhciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudENoYXJhY3Rl
cigpOworICAgIGNvbnN0IExDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50Q29kZVB0cigp
OworICAgIHVuc2lnbmVkIGlkZW50aWZpZXJMaW5lU3RhcnQgPSBjdXJyZW50TGluZVN0YXJ0T2Zm
c2V0KCk7CiAgICAgCiAgICAgd2hpbGUgKGlzSWRlbnRQYXJ0KG1fY3VycmVudCkpCiAgICAgICAg
IHNoaWZ0KCk7CiAgICAgCiAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCA9PSAnXFwnKSkgewot
ICAgICAgICBzZXRPZmZzZXRGcm9tQ2hhck9mZnNldChpZGVudGlmaWVyU3RhcnQpOworICAgICAg
ICBzZXRPZmZzZXRGcm9tQ29kZVB0cihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMaW5lU3Rh
cnQpOwogICAgICAgICByZXR1cm4gcGFyc2VJZGVudGlmaWVyU2xvd0Nhc2U8c2hvdWxkQ3JlYXRl
SWRlbnRpZmllcj4odG9rZW5EYXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsKICAgICB9CiAK
ICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IDA7CiAgICAgCiAgICAgaWYgKHNob3VsZENy
ZWF0ZUlkZW50aWZpZXIpIHsKLSAgICAgICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJyZW50
Q2hhcmFjdGVyKCkgLSBpZGVudGlmaWVyU3RhcnQ7CisgICAgICAgIGludCBpZGVudGlmaWVyTGVu
Z3RoID0gY3VycmVudENvZGVQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsKICAgICAgICAgaWRlbnQg
PSBtYWtlSWRlbnRpZmllcihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwogCiAg
ICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBpZGVudDsKQEAgLTgxNCw3ICs4MTgsOCBAQCB0ZW1w
bGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBjb25zdCBVQ2hhciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudENoYXJhY3RlcigpOwor
ICAgIGNvbnN0IFVDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50Q29kZVB0cigpOworICAg
IGludCBpZGVudGlmaWVyTGluZVN0YXJ0ID0gY3VycmVudExpbmVTdGFydE9mZnNldCgpOwogCiAg
ICAgVUNoYXIgb3JBbGxDaGFycyA9IDA7CiAgICAgCkBAIC04MjQsNyArODI5LDcgQEAgdGVtcGxh
dGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQQogICAgIH0KICAgICAKICAgICBpZiAo
VU5MSUtFTFkobV9jdXJyZW50ID09ICdcXCcpKSB7Ci0gICAgICAgIHNldE9mZnNldEZyb21DaGFy
T2Zmc2V0KGlkZW50aWZpZXJTdGFydCk7CisgICAgICAgIHNldE9mZnNldEZyb21Db2RlUHRyKGlk
ZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxpbmVTdGFydCk7CiAgICAgICAgIHJldHVybiBwYXJz
ZUlkZW50aWZpZXJTbG93Q2FzZTxzaG91bGRDcmVhdGVJZGVudGlmaWVyPih0b2tlbkRhdGEsIGxl
eGVyRmxhZ3MsIHN0cmljdE1vZGUpOwogICAgIH0KIApAQCAtODM2LDcgKzg0MSw3IEBAIHRlbXBs
YXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEEKICAgICBjb25zdCBJZGVudGlmaWVy
KiBpZGVudCA9IDA7CiAgICAgCiAgICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpIHsKLSAg
ICAgICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJyZW50Q2hhcmFjdGVyKCkgLSBpZGVudGlm
aWVyU3RhcnQ7CisgICAgICAgIGludCBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudENvZGVQdHIo
KSAtIGlkZW50aWZpZXJTdGFydDsKICAgICAgICAgaWYgKGlzQWxsOEJpdCkKICAgICAgICAgICAg
IGlkZW50ID0gbWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcihpZGVudGlmaWVyU3RhcnQsIGlk
ZW50aWZpZXJMZW5ndGgpOwogICAgICAgICBlbHNlCkBAIC04NjYsNyArODcxLDcgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBK
U1Rva2VuVHlwZSBMZXhlcjxUPjo6cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2UoSlNUb2tlbkRhdGEq
IHRva2VuRGF0YSwgdW5zaWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RNb2RlKQogewogICAg
IGNvbnN0IHB0cmRpZmZfdCByZW1haW5pbmcgPSBtX2NvZGVFbmQgLSBtX2NvZGU7Ci0gICAgY29u
c3QgVCogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudENoYXJhY3RlcigpOworICAgIGNvbnN0IFQq
IGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRDb2RlUHRyKCk7CiAgICAgYm9vbCBidWZmZXJSZXF1
aXJlZCA9IGZhbHNlOwogCiAgICAgd2hpbGUgKHRydWUpIHsKQEAgLTg3OSw4ICs4ODQsOCBAQCB0
ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBKCiAKICAgICAgICAgLy8gXHVY
WFhYIHVuaWNvZGUgY2hhcmFjdGVycy4KICAgICAgICAgYnVmZmVyUmVxdWlyZWQgPSB0cnVlOwot
ICAgICAgICBpZiAoaWRlbnRpZmllclN0YXJ0ICE9IGN1cnJlbnRDaGFyYWN0ZXIoKSkKLSAgICAg
ICAgICAgIG1fYnVmZmVyMTYuYXBwZW5kKGlkZW50aWZpZXJTdGFydCwgY3VycmVudENoYXJhY3Rl
cigpIC0gaWRlbnRpZmllclN0YXJ0KTsKKyAgICAgICAgaWYgKGlkZW50aWZpZXJTdGFydCAhPSBj
dXJyZW50Q29kZVB0cigpKQorICAgICAgICAgICAgbV9idWZmZXIxNi5hcHBlbmQoaWRlbnRpZmll
clN0YXJ0LCBjdXJyZW50Q29kZVB0cigpIC0gaWRlbnRpZmllclN0YXJ0KTsKICAgICAgICAgc2hp
ZnQoKTsKICAgICAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCAhPSAndScpKQogICAgICAgICAg
ICAgcmV0dXJuIGF0RW5kKCkgPyBVTlRFUk1JTkFURURfSURFTlRJRklFUl9FU0NBUEVfRVJST1JU
T0sgOiBJTlZBTElEX0lERU5USUZJRVJfRVNDQVBFX0VSUk9SVE9LOwpAQCAtODkzLDE4ICs4OTgs
MTggQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gSgogICAgICAgICAg
ICAgcmV0dXJuIElOVkFMSURfSURFTlRJRklFUl9VTklDT0RFX0VTQ0FQRV9FUlJPUlRPSzsKICAg
ICAgICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpCiAgICAgICAgICAgICByZWNvcmQxNih1
Y2hhcmFjdGVyKTsKLSAgICAgICAgaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudENoYXJhY3Rlcigp
OworICAgICAgICBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50Q29kZVB0cigpOwogICAgIH0KIAog
ICAgIGludCBpZGVudGlmaWVyTGVuZ3RoOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0g
MDsKICAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikgewogICAgICAgICBpZiAoIWJ1ZmZl
clJlcXVpcmVkKSB7Ci0gICAgICAgICAgICBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudENoYXJh
Y3RlcigpIC0gaWRlbnRpZmllclN0YXJ0OworICAgICAgICAgICAgaWRlbnRpZmllckxlbmd0aCA9
IGN1cnJlbnRDb2RlUHRyKCkgLSBpZGVudGlmaWVyU3RhcnQ7CiAgICAgICAgICAgICBpZGVudCA9
IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoaWRlbnRpZmllclN0YXJ0ICE9IGN1cnJlbnRD
aGFyYWN0ZXIoKSkKLSAgICAgICAgICAgICAgICBtX2J1ZmZlcjE2LmFwcGVuZChpZGVudGlmaWVy
U3RhcnQsIGN1cnJlbnRDaGFyYWN0ZXIoKSAtIGlkZW50aWZpZXJTdGFydCk7CisgICAgICAgICAg
ICBpZiAoaWRlbnRpZmllclN0YXJ0ICE9IGN1cnJlbnRDb2RlUHRyKCkpCisgICAgICAgICAgICAg
ICAgbV9idWZmZXIxNi5hcHBlbmQoaWRlbnRpZmllclN0YXJ0LCBjdXJyZW50Q29kZVB0cigpIC0g
aWRlbnRpZmllclN0YXJ0KTsKICAgICAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXIobV9i
dWZmZXIxNi5kYXRhKCksIG1fYnVmZmVyMTYuc2l6ZSgpKTsKICAgICAgICAgfQogCkBAIC05NDQs
MTYgKzk0OSwxNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHRlbXBsYXRlIDxib29sIHNob3Vs
ZEJ1aWxkU3RyaW5ncz4gQUxXQVlTX0lOTElORSB0eXBlbmFtZSBMZXhlcjxUPjo6U3RyaW5nUGFy
c2VSZXN1bHQgTGV4ZXI8VD46OnBhcnNlU3RyaW5nKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsIGJv
b2wgc3RyaWN0TW9kZSkKIHsKICAgICBpbnQgc3RhcnRpbmdPZmZzZXQgPSBjdXJyZW50T2Zmc2V0
KCk7CisgICAgaW50IHN0YXJ0aW5nTGluZVN0YXJ0T2Zmc2V0ID0gY3VycmVudExpbmVTdGFydE9m
ZnNldCgpOwogICAgIGludCBzdGFydGluZ0xpbmVOdW1iZXIgPSBsaW5lTnVtYmVyKCk7CiAgICAg
VCBzdHJpbmdRdW90ZUNoYXJhY3RlciA9IG1fY3VycmVudDsKICAgICBzaGlmdCgpOwogCi0gICAg
Y29uc3QgVCogc3RyaW5nU3RhcnQgPSBjdXJyZW50Q2hhcmFjdGVyKCk7CisgICAgY29uc3QgVCog
c3RyaW5nU3RhcnQgPSBjdXJyZW50Q29kZVB0cigpOwogCiAgICAgd2hpbGUgKG1fY3VycmVudCAh
PSBzdHJpbmdRdW90ZUNoYXJhY3RlcikgewogICAgICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50
ID09ICdcXCcpKSB7Ci0gICAgICAgICAgICBpZiAoc3RyaW5nU3RhcnQgIT0gY3VycmVudENoYXJh
Y3RlcigpICYmIHNob3VsZEJ1aWxkU3RyaW5ncykKLSAgICAgICAgICAgICAgICBhcHBlbmQ4KHN0
cmluZ1N0YXJ0LCBjdXJyZW50Q2hhcmFjdGVyKCkgLSBzdHJpbmdTdGFydCk7CisgICAgICAgICAg
ICBpZiAoc3RyaW5nU3RhcnQgIT0gY3VycmVudENvZGVQdHIoKSAmJiBzaG91bGRCdWlsZFN0cmlu
Z3MpCisgICAgICAgICAgICAgICAgYXBwZW5kOChzdHJpbmdTdGFydCwgY3VycmVudENvZGVQdHIo
KSAtIHN0cmluZ1N0YXJ0KTsKICAgICAgICAgICAgIHNoaWZ0KCk7CiAKICAgICAgICAgICAgIExD
aGFyIGVzY2FwZSA9IHNpbmdsZUVzY2FwZShtX2N1cnJlbnQpOwpAQCAtOTc3LDE3ICs5ODMsMTcg
QEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdzPiBBTFdBWQogICAgICAgICAgICAg
ICAgICAgICByZWNvcmQ4KGNvbnZlcnRIZXgocHJldiwgbV9jdXJyZW50KSk7CiAgICAgICAgICAg
ICAgICAgc2hpZnQoKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgc2V0
T2Zmc2V0KHN0YXJ0aW5nT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBzZXRPZmZzZXQoc3RhcnRp
bmdPZmZzZXQsIHN0YXJ0aW5nTGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgICAgICAgICBzZXRM
aW5lTnVtYmVyKHN0YXJ0aW5nTGluZU51bWJlcik7CiAgICAgICAgICAgICAgICAgbV9idWZmZXI4
LnJlc2l6ZSgwKTsKICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VTdHJpbmdTbG93Q2FzZTxz
aG91bGRCdWlsZFN0cmluZ3M+KHRva2VuRGF0YSwgc3RyaWN0TW9kZSk7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBzdHJpbmdTdGFydCA9IGN1cnJlbnRDaGFyYWN0ZXIoKTsKKyAgICAgICAg
ICAgIHN0cmluZ1N0YXJ0ID0gY3VycmVudENvZGVQdHIoKTsKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFVOTElLRUxZKGNoYXJhY3RlclJlcXVpcmVzUGFy
c2VTdHJpbmdTbG93Q2FzZShtX2N1cnJlbnQpKSkgewotICAgICAgICAgICAgc2V0T2Zmc2V0KHN0
YXJ0aW5nT2Zmc2V0KTsKKyAgICAgICAgICAgIHNldE9mZnNldChzdGFydGluZ09mZnNldCwgc3Rh
cnRpbmdMaW5lU3RhcnRPZmZzZXQpOwogICAgICAgICAgICAgc2V0TGluZU51bWJlcihzdGFydGlu
Z0xpbmVOdW1iZXIpOwogICAgICAgICAgICAgbV9idWZmZXI4LnJlc2l6ZSgwKTsKICAgICAgICAg
ICAgIHJldHVybiBwYXJzZVN0cmluZ1Nsb3dDYXNlPHNob3VsZEJ1aWxkU3RyaW5ncz4odG9rZW5E
YXRhLCBzdHJpY3RNb2RlKTsKQEAgLTk5Niw4ICsxMDAyLDggQEAgdGVtcGxhdGUgPGJvb2wgc2hv
dWxkQnVpbGRTdHJpbmdzPiBBTFdBWQogICAgICAgICBzaGlmdCgpOwogICAgIH0KIAotICAgIGlm
IChjdXJyZW50Q2hhcmFjdGVyKCkgIT0gc3RyaW5nU3RhcnQgJiYgc2hvdWxkQnVpbGRTdHJpbmdz
KQotICAgICAgICBhcHBlbmQ4KHN0cmluZ1N0YXJ0LCBjdXJyZW50Q2hhcmFjdGVyKCkgLSBzdHJp
bmdTdGFydCk7CisgICAgaWYgKGN1cnJlbnRDb2RlUHRyKCkgIT0gc3RyaW5nU3RhcnQgJiYgc2hv
dWxkQnVpbGRTdHJpbmdzKQorICAgICAgICBhcHBlbmQ4KHN0cmluZ1N0YXJ0LCBjdXJyZW50Q29k
ZVB0cigpIC0gc3RyaW5nU3RhcnQpOwogICAgIGlmIChzaG91bGRCdWlsZFN0cmluZ3MpIHsKICAg
ICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG1ha2VJZGVudGlmaWVyKG1fYnVmZmVyOC5kYXRhKCks
IG1fYnVmZmVyOC5zaXplKCkpOwogICAgICAgICBtX2J1ZmZlcjgucmVzaXplKDApOwpAQCAtMTAx
MywxMiArMTAxOSwxMiBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IHR5cGVu
CiAgICAgVCBzdHJpbmdRdW90ZUNoYXJhY3RlciA9IG1fY3VycmVudDsKICAgICBzaGlmdCgpOwog
Ci0gICAgY29uc3QgVCogc3RyaW5nU3RhcnQgPSBjdXJyZW50Q2hhcmFjdGVyKCk7CisgICAgY29u
c3QgVCogc3RyaW5nU3RhcnQgPSBjdXJyZW50Q29kZVB0cigpOwogCiAgICAgd2hpbGUgKG1fY3Vy
cmVudCAhPSBzdHJpbmdRdW90ZUNoYXJhY3RlcikgewogICAgICAgICBpZiAoVU5MSUtFTFkobV9j
dXJyZW50ID09ICdcXCcpKSB7Ci0gICAgICAgICAgICBpZiAoc3RyaW5nU3RhcnQgIT0gY3VycmVu
dENoYXJhY3RlcigpICYmIHNob3VsZEJ1aWxkU3RyaW5ncykKLSAgICAgICAgICAgICAgICBhcHBl
bmQxNihzdHJpbmdTdGFydCwgY3VycmVudENoYXJhY3RlcigpIC0gc3RyaW5nU3RhcnQpOworICAg
ICAgICAgICAgaWYgKHN0cmluZ1N0YXJ0ICE9IGN1cnJlbnRDb2RlUHRyKCkgJiYgc2hvdWxkQnVp
bGRTdHJpbmdzKQorICAgICAgICAgICAgICAgIGFwcGVuZDE2KHN0cmluZ1N0YXJ0LCBjdXJyZW50
Q29kZVB0cigpIC0gc3RyaW5nU3RhcnQpOwogICAgICAgICAgICAgc2hpZnQoKTsKIAogICAgICAg
ICAgICAgTENoYXIgZXNjYXBlID0gc2luZ2xlRXNjYXBlKG1fY3VycmVudCk7CkBAIC0xMDkzLDcg
KzEwOTksNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IHR5cGVuCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIFN0cmluZ1VudGVybWluYXRlZDsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgc3RyaW5nU3RhcnQgPSBjdXJyZW50Q2hhcmFjdGVyKCk7CisgICAgICAgICAg
ICBzdHJpbmdTdGFydCA9IGN1cnJlbnRDb2RlUHRyKCk7CiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQogICAgICAgICAvLyBGYXN0IGNoZWNrIGZvciBjaGFyYWN0ZXJzIHRoYXQgcmVx
dWlyZSBzcGVjaWFsIGhhbmRsaW5nLgpAQCAtMTExMCw4ICsxMTE2LDggQEAgdGVtcGxhdGUgPGJv
b2wgc2hvdWxkQnVpbGRTdHJpbmdzPiB0eXBlbgogICAgICAgICBzaGlmdCgpOwogICAgIH0KIAot
ICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyKCkgIT0gc3RyaW5nU3RhcnQgJiYgc2hvdWxkQnVpbGRT
dHJpbmdzKQotICAgICAgICBhcHBlbmQxNihzdHJpbmdTdGFydCwgY3VycmVudENoYXJhY3Rlcigp
IC0gc3RyaW5nU3RhcnQpOworICAgIGlmIChjdXJyZW50Q29kZVB0cigpICE9IHN0cmluZ1N0YXJ0
ICYmIHNob3VsZEJ1aWxkU3RyaW5ncykKKyAgICAgICAgYXBwZW5kMTYoc3RyaW5nU3RhcnQsIGN1
cnJlbnRDb2RlUHRyKCkgLSBzdHJpbmdTdGFydCk7CiAgICAgaWYgKHNob3VsZEJ1aWxkU3RyaW5n
cykKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG1ha2VJZGVudGlmaWVyKG1fYnVmZmVyMTYu
ZGF0YSgpLCBtX2J1ZmZlcjE2LnNpemUoKSk7CiAgICAgZWxzZQpAQCAtMTMxNyw3ICsxMzIzLDgg
QEAgc3RhcnQ6CiAgICAgICAgIHJldHVybiBFT0ZUT0s7CiAgICAgCiAgICAgdG9rZW5Mb2NhdGlv
bi0+c3RhcnRPZmZzZXQgPSBjdXJyZW50T2Zmc2V0KCk7Ci0gICAgdG9rZW5Mb2NhdGlvbi0+Y2hh
clBvc2l0aW9uID0gY3VycmVudENoYXJQb3NpdGlvbigpOworICAgIHRva2VuTG9jYXRpb24tPnNv
dXJjZU9mZnNldCA9IG1fc291cmNlT2Zmc2V0OworICAgIEFTU0VSVChjdXJyZW50T2Zmc2V0KCkg
Pj0gY3VycmVudExpbmVTdGFydE9mZnNldCgpKTsKIAogICAgIENoYXJhY3RlclR5cGUgdHlwZTsK
ICAgICBpZiAoTElLRUxZKGlzTGF0aW4xKG1fY3VycmVudCkpKQpAQCAtMTU1NSwxMiArMTU2Miwx
OCBAQCBzdGFydDoKICAgICAgICAgdG9rZW4gPSBTRU1JQ09MT047CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQ2hhcmFjdGVyT3BlbkJyYWNlOgotICAgICAgICB0b2tlbkRhdGEtPmludFZhbHVl
ID0gY3VycmVudE9mZnNldCgpOworICAgICAgICB0b2tlbkRhdGEtPmxpbmUgPSBsaW5lTnVtYmVy
KCk7CisgICAgICAgIHRva2VuRGF0YS0+b2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOworICAgICAg
ICB0b2tlbkRhdGEtPmxpbmVTdGFydE9mZnNldCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsK
KyAgICAgICAgQVNTRVJUKHRva2VuRGF0YS0+b2Zmc2V0ID49IHRva2VuRGF0YS0+bGluZVN0YXJ0
T2Zmc2V0KTsKICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgdG9rZW4gPSBPUEVOQlJBQ0U7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ2hhcmFjdGVyQ2xvc2VCcmFjZToKLSAgICAgICAgdG9r
ZW5EYXRhLT5pbnRWYWx1ZSA9IGN1cnJlbnRPZmZzZXQoKTsKKyAgICAgICAgdG9rZW5EYXRhLT5s
aW5lID0gbGluZU51bWJlcigpOworICAgICAgICB0b2tlbkRhdGEtPm9mZnNldCA9IGN1cnJlbnRP
ZmZzZXQoKTsKKyAgICAgICAgdG9rZW5EYXRhLT5saW5lU3RhcnRPZmZzZXQgPSBjdXJyZW50TGlu
ZVN0YXJ0T2Zmc2V0KCk7CisgICAgICAgIEFTU0VSVCh0b2tlbkRhdGEtPm9mZnNldCA+PSB0b2tl
bkRhdGEtPmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIHRva2Vu
ID0gQ0xPU0VCUkFDRTsKICAgICAgICAgYnJlYWs7CkBAIC0xNjUwLDYgKzE2NjMsNyBAQCBpbk51
bWJlckFmdGVyRGVjaW1hbFBvaW50OgogICAgICAgICBzaGlmdExpbmVUZXJtaW5hdG9yKCk7CiAg
ICAgICAgIG1fYXRMaW5lU3RhcnQgPSB0cnVlOwogICAgICAgICBtX3Rlcm1pbmF0b3IgPSB0cnVl
OworICAgICAgICBtX2xpbmVTdGFydCA9IG1fY29kZTsKICAgICAgICAgZ290byBzdGFydDsKICAg
ICBjYXNlIENoYXJhY3RlckludmFsaWQ6CiAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gaW52
YWxpZENoYXJhY3Rlck1lc3NhZ2UoKTsKQEAgLTE2NzQsNiArMTY4OCw3IEBAIGluU2luZ2xlTGlu
ZUNvbW1lbnQ6CiAgICAgc2hpZnRMaW5lVGVybWluYXRvcigpOwogICAgIG1fYXRMaW5lU3RhcnQg
PSB0cnVlOwogICAgIG1fdGVybWluYXRvciA9IHRydWU7CisgICAgbV9saW5lU3RhcnQgPSBtX2Nv
ZGU7CiAgICAgaWYgKCFsYXN0VG9rZW5XYXNSZXN0cktleXdvcmQoKSkKICAgICAgICAgZ290byBz
dGFydDsKIApAQCAtMTY4Myw2ICsxNjk4LDggQEAgaW5TaW5nbGVMaW5lQ29tbWVudDoKIHJldHVy
blRva2VuOgogICAgIHRva2VuTG9jYXRpb24tPmxpbmUgPSBtX2xpbmVOdW1iZXI7CiAgICAgdG9r
ZW5Mb2NhdGlvbi0+ZW5kT2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOworICAgIHRva2VuTG9jYXRp
b24tPmxpbmVTdGFydE9mZnNldCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKKyAgICBBU1NF
UlQodG9rZW5Mb2NhdGlvbi0+ZW5kT2Zmc2V0ID49IHRva2VuTG9jYXRpb24tPmxpbmVTdGFydE9m
ZnNldCk7CiAgICAgbV9sYXN0VG9rZW4gPSB0b2tlbjsKICAgICByZXR1cm4gdG9rZW47CiAKQEAg
LTE2OTAsNiArMTcwNyw4IEBAIHJldHVybkVycm9yOgogICAgIG1fZXJyb3IgPSB0cnVlOwogICAg
IHRva2VuTG9jYXRpb24tPmxpbmUgPSBtX2xpbmVOdW1iZXI7CiAgICAgdG9rZW5Mb2NhdGlvbi0+
ZW5kT2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOworICAgIHRva2VuTG9jYXRpb24tPmxpbmVTdGFy
dE9mZnNldCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKKyAgICBBU1NFUlQodG9rZW5Mb2Nh
dGlvbi0+ZW5kT2Zmc2V0ID49IHRva2VuTG9jYXRpb24tPmxpbmVTdGFydE9mZnNldCk7CiAgICAg
UkVMRUFTRV9BU1NFUlQodG9rZW4gJiBFcnJvclRva2VuRmxhZyk7CiAgICAgcmV0dXJuIHRva2Vu
OwogfQpAQCAtMTgyOSwxMSArMTg0OCwxMSBAQCB2b2lkIExleGVyPFQ+OjpjbGVhcigpCiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotU291cmNlQ29kZSBMZXhlcjxUPjo6c291cmNlQ29kZShp
bnQgb3BlbkJyYWNlLCBpbnQgY2xvc2VCcmFjZSwgaW50IGZpcnN0TGluZSkKK1NvdXJjZUNvZGUg
TGV4ZXI8VD46OnNvdXJjZUNvZGUoaW50IG9wZW5CcmFjZSwgaW50IGNsb3NlQnJhY2UsIGludCBm
aXJzdExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uKQogewogICAgIEFTU0VSVChtX3NvdXJjZS0+
cHJvdmlkZXIoKS0+c291cmNlKClbb3BlbkJyYWNlXSA9PSAneycpOwogICAgIEFTU0VSVChtX3Nv
dXJjZS0+cHJvdmlkZXIoKS0+c291cmNlKClbY2xvc2VCcmFjZV0gPT0gJ30nKTsKLSAgICByZXR1
cm4gU291cmNlQ29kZShtX3NvdXJjZS0+cHJvdmlkZXIoKSwgb3BlbkJyYWNlLCBjbG9zZUJyYWNl
ICsgMSwgZmlyc3RMaW5lKTsKKyAgICByZXR1cm4gU291cmNlQ29kZShtX3NvdXJjZS0+cHJvdmlk
ZXIoKSwgb3BlbkJyYWNlLCBjbG9zZUJyYWNlICsgMSwgZmlyc3RMaW5lLCBzdGFydENvbHVtbik7
CiB9CiAKIC8vIEluc3RhbnRpYXRlIHRoZSB0d28gZmxhdm9ycyBvZiBMZXhlciB3ZSBuZWVkIGlu
c3RlYWQgb2YgcHV0dGluZyBtb3N0IG9mIHRoaXMgZmlsZSBpbiBMZXhlci5oCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCShyZXZpc2lvbiAxNTE5MjApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDExICs4
OSwxMiBAQCBwdWJsaWM6CiAgICAgSlNUb2tlblR5cGUgbGV4KEpTVG9rZW5EYXRhKiwgSlNUb2tl
bkxvY2F0aW9uKiwgdW5zaWduZWQsIGJvb2wgc3RyaWN0TW9kZSk7CiAgICAgYm9vbCBuZXh0VG9r
ZW5Jc0NvbG9uKCk7CiAgICAgaW50IGxpbmVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2xpbmVO
dW1iZXI7IH0KLSAgICBpbnQgY3VycmVudENoYXJQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29kZSAtIG1fY29kZVN0YXJ0UGx1c09mZnNldDsgfQorICAgIEFMV0FZU19JTkxJTkUgaW50IGN1
cnJlbnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBvZmZzZXRGcm9tQ29kZVB0cihtX2NvZGUpOyB9
CisgICAgQUxXQVlTX0lOTElORSBpbnQgY3VycmVudExpbmVTdGFydE9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG9mZnNldEZyb21Db2RlUHRyKG1fbGluZVN0YXJ0KTsgfQogICAgIHZvaWQgc2V0TGFz
dExpbmVOdW1iZXIoaW50IGxhc3RMaW5lTnVtYmVyKSB7IG1fbGFzdExpbmVOdW1iZXIgPSBsYXN0
TGluZU51bWJlcjsgfQogICAgIGludCBsYXN0TGluZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1f
bGFzdExpbmVOdW1iZXI7IH0KICAgICBib29sIHByZXZUZXJtaW5hdG9yKCkgY29uc3QgeyByZXR1
cm4gbV90ZXJtaW5hdG9yOyB9Ci0gICAgU291cmNlQ29kZSBzb3VyY2VDb2RlKGludCBvcGVuQnJh
Y2UsIGludCBjbG9zZUJyYWNlLCBpbnQgZmlyc3RMaW5lKTsKKyAgICBTb3VyY2VDb2RlIHNvdXJj
ZUNvZGUoaW50IG9wZW5CcmFjZSwgaW50IGNsb3NlQnJhY2UsIGludCBmaXJzdExpbmUsIHVuc2ln
bmVkIHN0YXJ0Q29sdW1uKTsKICAgICBib29sIHNjYW5SZWdFeHAoY29uc3QgSWRlbnRpZmllciom
IHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXIqJiBmbGFncywgVUNoYXIgcGF0dGVyblByZWZpeCA9
IDApOwogICAgIGJvb2wgc2tpcFJlZ0V4cCgpOwogCkBAIC0xMDEsMTEgKzEwMiwxNSBAQCBwdWJs
aWM6CiAgICAgYm9vbCBzYXdFcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0KICAgICBT
dHJpbmcgZ2V0RXJyb3JNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9sZXhFcnJvck1lc3NhZ2U7
IH0KICAgICB2b2lkIGNsZWFyKCk7Ci0gICAgdm9pZCBzZXRPZmZzZXQoaW50IG9mZnNldCkKKyAg
ICB2b2lkIHNldE9mZnNldChpbnQgb2Zmc2V0LCBpbnQgbGluZVN0YXJ0T2Zmc2V0KQogICAgIHsK
ICAgICAgICAgbV9lcnJvciA9IDA7CiAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gU3RyaW5n
KCk7Ci0gICAgICAgIG1fY29kZSA9IG1fY29kZVN0YXJ0ICsgb2Zmc2V0OworCisgICAgICAgIG1f
Y29kZSA9IGNvZGVQdHJGcm9tT2Zmc2V0KG9mZnNldCk7CisgICAgICAgIG1fbGluZVN0YXJ0ID0g
Y29kZVB0ckZyb21PZmZzZXQobGluZVN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKGN1cnJl
bnRPZmZzZXQoKSA+PSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCkpOworCiAgICAgICAgIG1fYnVm
ZmVyOC5yZXNpemUoMCk7CiAgICAgICAgIG1fYnVmZmVyMTYucmVzaXplKDApOwogICAgICAgICBp
ZiAoTElLRUxZKG1fY29kZSA8IG1fY29kZUVuZCkpCkBAIC0xNjUsMTAgKzE3MCwxMiBAQCBwcml2
YXRlOgogICAgIFVuaWNvZGVIZXhWYWx1ZSBwYXJzZUZvdXJEaWdpdFVuaWNvZGVIZXgoKTsKICAg
ICB2b2lkIHNoaWZ0TGluZVRlcm1pbmF0b3IoKTsKIAorICAgIEFMV0FZU19JTkxJTkUgaW50IG9m
ZnNldEZyb21Db2RlUHRyKGNvbnN0IFQqIHB0cikgY29uc3QgeyByZXR1cm4gcHRyIC0gbV9jb2Rl
U3RhcnQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IFQqIGNvZGVQdHJGcm9tT2Zmc2V0KGlu
dCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVN0YXJ0ICsgb2Zmc2V0OyB9CisKICAgICBT
dHJpbmcgaW52YWxpZENoYXJhY3Rlck1lc3NhZ2UoKSBjb25zdDsKLSAgICBBTFdBWVNfSU5MSU5F
IGNvbnN0IFQqIGN1cnJlbnRDaGFyYWN0ZXIoKSBjb25zdDsKLSAgICBBTFdBWVNfSU5MSU5FIGlu
dCBjdXJyZW50T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlIC0gbV9jb2RlU3RhcnQ7IH0K
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0T2Zmc2V0RnJvbUNoYXJPZmZzZXQoY29uc3QgVCog
Y2hhck9mZnNldCkgeyBzZXRPZmZzZXQoY2hhck9mZnNldCAtIG1fY29kZVN0YXJ0KTsgfQorICAg
IEFMV0FZU19JTkxJTkUgY29uc3QgVCogY3VycmVudENvZGVQdHIoKSBjb25zdDsKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0T2Zmc2V0RnJvbUNvZGVQdHIoY29uc3QgVCogY29kZVB0ciwgdW5z
aWduZWQgbGluZVN0YXJ0T2Zmc2V0KSB7IHNldE9mZnNldChvZmZzZXRGcm9tQ29kZVB0cihjb2Rl
UHRyKSwgbGluZVN0YXJ0T2Zmc2V0KTsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldENv
ZGVTdGFydChjb25zdCBTdHJpbmdJbXBsKik7CiAKQEAgLTIxMCwxMCArMjE3LDEyIEBAIHByaXZh
dGU6CiAgICAgaW50IG1fbGFzdFRva2VuOwogCiAgICAgY29uc3QgU291cmNlQ29kZSogbV9zb3Vy
Y2U7CisgICAgdW5zaWduZWQgbV9zb3VyY2VPZmZzZXQ7CiAgICAgY29uc3QgVCogbV9jb2RlOwog
ICAgIGNvbnN0IFQqIG1fY29kZVN0YXJ0OwogICAgIGNvbnN0IFQqIG1fY29kZUVuZDsKICAgICBj
b25zdCBUKiBtX2NvZGVTdGFydFBsdXNPZmZzZXQ7CisgICAgY29uc3QgVCogbV9saW5lU3RhcnQ7
CiAgICAgYm9vbCBtX2lzUmVwYXJzaW5nOwogICAgIGJvb2wgbV9hdExpbmVTdGFydDsKICAgICBi
b29sIG1fZXJyb3I7CkBAIC0zNTAsNiArMzU5LDcgQEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlw
ZSBMZXhlcjxUPjo6bGV4RQogICAgICAgICBtX2N1cnJlbnQgPSAwOwogCiAgICAgbV9jb2RlID0g
cHRyOworICAgIEFTU0VSVChjdXJyZW50T2Zmc2V0KCkgPj0gY3VycmVudExpbmVTdGFydE9mZnNl
dCgpKTsKIAogICAgIC8vIENyZWF0ZSB0aGUgaWRlbnRpZmllciBpZiBuZWVkZWQKICAgICBpZiAo
bGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcykKQEAgLTM1Nyw5ICszNjcs
MTEgQEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RQogICAgIGVsc2UK
ICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG1ha2VMQ2hhcklkZW50aWZpZXIoc3RhcnQsIHB0
ciAtIHN0YXJ0KTsKICAgICB0b2tlbkxvY2F0aW9uLT5saW5lID0gbV9saW5lTnVtYmVyOwotICAg
IHRva2VuTG9jYXRpb24tPnN0YXJ0T2Zmc2V0ID0gc3RhcnQgLSBtX2NvZGVTdGFydDsKKyAgICB0
b2tlbkxvY2F0aW9uLT5saW5lU3RhcnRPZmZzZXQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7
CisgICAgdG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQgPSBvZmZzZXRGcm9tQ29kZVB0cihzdGFy
dCk7CiAgICAgdG9rZW5Mb2NhdGlvbi0+ZW5kT2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOwotICAg
IHRva2VuTG9jYXRpb24tPmNoYXJQb3NpdGlvbiA9IGN1cnJlbnRDaGFyUG9zaXRpb24oKTsKKyAg
ICB0b2tlbkxvY2F0aW9uLT5zb3VyY2VPZmZzZXQgPSBtX3NvdXJjZU9mZnNldDsKKyAgICBBU1NF
UlQodG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQgPj0gdG9rZW5Mb2NhdGlvbi0+bGluZVN0YXJ0
T2Zmc2V0KTsKICAgICBtX2xhc3RUb2tlbiA9IElERU5UOwogICAgIHJldHVybiBJREVOVDsKICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVj
dG9ycy5oCShyZXZpc2lvbiAxNTE5MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVDb25zdHJ1Y3RvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsOCArNDQsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBpbmxpbmUgTm9kZTo6Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uKQogICAgICAgICA6IG1fbGluZU51bWJlcihsb2NhdGlvbi5saW5lKQotICAg
ICAgICAsIG1fY2hhclBvc2l0aW9uKGxvY2F0aW9uLmNoYXJQb3NpdGlvbikKKyAgICAgICAgLCBt
X3N0YXJ0T2Zmc2V0KGxvY2F0aW9uLnN0YXJ0T2Zmc2V0KQorICAgICAgICAsIG1fbGluZVN0YXJ0
T2Zmc2V0KGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCkKICAgICB7CisgICAgICAgIEFTU0VSVChs
b2NhdGlvbi5zdGFydE9mZnNldCA+PSBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgIH0K
IAogICAgIGlubGluZSBFeHByZXNzaW9uTm9kZTo6RXhwcmVzc2lvbk5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgUmVzdWx0VHlwZSByZXN1bHRUeXBlKQpAQCAtMTAwLDExICsx
MDIsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBSZXNv
bHZlTm9kZTo6UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIGludCBzdGFydE9mZnNldCkKK2lubGluZSBSZXNvbHZlTm9k
ZTo6UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBkaXZvdExpbmUs
IHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0
aW9uKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9zdGFydE9mZnNldChz
dGFydE9mZnNldCkKKyAgICAgICAgLCBtX2Rpdm90TGluZShkaXZvdExpbmUpCisgICAgICAgICwg
bV9kaXZvdExpbmVTdGFydChkaXZvdExpbmVTdGFydCkKICAgICB7CisgICAgICAgIEFTU0VSVCht
X3N0YXJ0T2Zmc2V0ID49IG1fZGl2b3RMaW5lU3RhcnQpOwogICAgIH0KIAogICAgIGlubGluZSBF
bGVtZW50Tm9kZTo6RWxlbWVudE5vZGUoaW50IGVsaXNpb24sIEV4cHJlc3Npb25Ob2RlKiBub2Rl
KQpAQCAtMjQxLDgwICsyNDYsODEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBFdmFsRnVuY3Rpb25DYWxsTm9kZTo6RXZhbEZ1bmN0aW9uQ2FsbE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAg
aW5saW5lIEV2YWxGdW5jdGlvbkNhbGxOb2RlOjpFdmFsRnVuY3Rpb25DYWxsTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQg
ZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsb2NhdGlvbikKLSAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwg
c3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFy
dCkKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICB7CisgICAgICAgIEFTU0VSVChkaXZvdCA+
PSBkaXZvdExpbmVTdGFydCk7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmN0aW9uQ2FsbFZhbHVl
Tm9kZTo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICBpbmxp
bmUgRnVuY3Rpb25DYWxsVmFsdWVOb2RlOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50c05v
ZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQog
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQotICAgICAgICAsIFRocm93YWJsZUV4
cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgICAgICAsIFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBkaXZv
dExpbmUsIGRpdm90TGluZVN0YXJ0KQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgICAgICAs
IG1fYXJncyhhcmdzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRnVuY3Rpb25DYWxsUmVz
b2x2ZU5vZGU6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkK
KyAgICBpbmxpbmUgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OkZ1bmN0aW9uQ2FsbFJlc29sdmVO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBk
aXZvdExpbmVTdGFydCkKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKLSAgICAg
ICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dCkKKyAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQs
IGVuZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgLCBtX2lkZW50
KGlkZW50KQogICAgICAgICAsIG1fYXJncyhhcmdzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxp
bmUgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNz
aW9uTm9kZSogc3Vic2NyaXB0LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICBpbmxpbmUgRnVu
Y3Rpb25DYWxsQnJhY2tldE5vZGU6OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9k
ZSogc3Vic2NyaXB0LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1
bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlv
bikKLSAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZz
ZXQsIGVuZE9mZnNldCkKKyAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZv
dCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCkKICAg
ICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQpCiAg
ICAgICAgICwgbV9hcmdzKGFyZ3MpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGdW5jdGlv
bkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
QXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgaW5saW5lIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkZ1
bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBh
cmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKLSAgICAgICAgLCBUaHJvd2FibGVTdWJFeHBy
ZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICAgICAgLCBUaHJv
d2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZGl2
b3RMaW5lLCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAg
LCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1fYXJncyhhcmdzKQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3RO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAg
IDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRpdm90
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgIGlubGluZSBDYWxsRnVuY3Rpb25DYWxsRG90
Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1
bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVT
dGFydCkKKyAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVu
dCwgYXJncywgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGRpdm90TGluZSwgZGl2b3RM
aW5lU3RhcnQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBcHBseUZ1bmN0aW9uQ2FsbERv
dE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFy
Z3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRp
b24sIGJhc2UsIGlkZW50LCBhcmdzLCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAg
ICBpbmxpbmUgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQg
ZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKKyAgICAgICAgOiBGdW5jdGlvbkNh
bGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIHN0YXJ0T2Zmc2V0
LCBlbmRPZmZzZXQsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpCiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBQb3N0Zml4Tm9kZTo6UG9zdGZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAg
ICA6IFByZWZpeE5vZGUobG9jYXRpb24sIGV4cHIsIG9wZXIsIGRpdm90LCBzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0KQorICAgIGlubGluZSBQb3N0Zml4Tm9kZTo6UG9zdGZpeE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9w
ZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQorICAgICAg
ICA6IFByZWZpeE5vZGUobG9jYXRpb24sIGV4cHIsIG9wZXIsIGRpdm90LCBzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgRGVsZXRlUmVzb2x2ZU5vZGU6OkRlbGV0ZVJlc29sdmVOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICBpbmxp
bmUgRGVsZXRlUmVzb2x2ZU5vZGU6OkRlbGV0ZVJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RM
aW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
b2NhdGlvbikKLSAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRP
ZmZzZXQsIGVuZE9mZnNldCkKKyAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZv
dCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCkKICAg
ICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRGVsZXRl
QnJhY2tldE5vZGU6OkRlbGV0ZUJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkK
KyAgICBpbmxpbmUgRGVsZXRlQnJhY2tldE5vZGU6OkRlbGV0ZUJyYWNrZXROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9u
Tm9kZSogc3Vic2NyaXB0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVT
dGFydCkKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKLSAgICAgICAgLCBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICAg
ICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAg
ICAgICAgLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQpCiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBEZWxldGVEb3ROb2RlOjpEZWxldGVEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisg
ICAgaW5saW5lIERlbGV0ZURvdE5vZGU6OkRlbGV0ZURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKLSAgICAgICAgLCBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICAgICAgLCBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZGl2b3RMaW5l
LCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lk
ZW50KGlkZW50KQogICAgIHsKQEAgLTM0NCw5ICszNTAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIFByZWZpeE5vZGU6OlByZWZpeE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9w
ZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KQorICAgIGlubGluZSBQcmVmaXhOb2RlOjpQcmVmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvciBvcGVyLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5z
aWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsb2NhdGlvbikKLSAgICAgICAgLCBUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJl
c3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgICAgICAsIFRocm93
YWJsZVByZWZpeGVkU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZz
ZXQsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAg
ICAgICAgICwgbV9vcGVyYXRvcihvcGVyKQogICAgIHsKQEAgLTUzMCwxNCArNTM2LDE2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVhZE1vZGlmeVJlc29s
dmVOb2RlOjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25O
b2RlKiAgcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgaW5saW5lIFJlYWRN
b2RpZnlSZXNvbHZlTm9kZTo6UmVhZE1vZGlmeVJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBF
eHByZXNzaW9uTm9kZSogIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCB1bnNpZ25l
ZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogICAgICAgICA6IEV4cHJlc3Np
b25Ob2RlKGxvY2F0aW9uKQotICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBkaXZvdExpbmUsIGRpdm90TGluZVN0
YXJ0KQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9yaWdodChyaWdodCkK
ICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCiAgICAgICAgICwgbV9yaWdodEhhc0Fzc2lnbm1l
bnRzKHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgeworICAgICAgICBBU1NFUlQoZGl2b3QgPj0g
ZGl2b3RMaW5lU3RhcnQpOworICAgICAgICBBU1NFUlQoZGl2b3QgLSBzdGFydE9mZnNldCA+PSBk
aXZvdExpbmVTdGFydCk7CiAgICAgfQogCiAgICAgaW5saW5lIEFzc2lnblJlc29sdmVOb2RlOjpB
c3NpZ25SZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0KQpAQCAtNTQ3LDkgKzU1NSw5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVhZE1vZGlm
eUJyYWNrZXROb2RlOjpSZWFkTW9kaWZ5QnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3Jp
cHQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRI
YXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICBpbmxpbmUgUmVh
ZE1vZGlmeUJyYWNrZXROb2RlOjpSZWFkTW9kaWZ5QnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBz
dWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJz
Y3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQg
ZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsb2NhdGlvbikKLSAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZv
dCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNz
aW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdExp
bmVTdGFydCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChz
dWJzY3JpcHQpCiAgICAgICAgICwgbV9yaWdodChyaWdodCkKQEAgLTU1OSw5ICs1NjcsOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFzc2lnbkJyYWNrZXRO
b2RlOjpBc3NpZ25CcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgRXhwcmVzc2lv
bk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KQorICAgIGlubGluZSBBc3NpZ25CcmFja2V0Tm9kZTo6QXNzaWduQnJhY2tl
dE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9v
bCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5z
aWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsb2NhdGlvbikKLSAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShk
aXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICAgICAgLCBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdExp
bmVTdGFydCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChz
dWJzY3JpcHQpCiAgICAgICAgICwgbV9yaWdodChyaWdodCkKQEAgLTU3MCw5ICs1NzgsOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFzc2lnbkRvdE5vZGU6
OkFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmln
aHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgaW5saW5lIEFzc2lnbkRvdE5vZGU6
OkFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmln
aHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWdu
ZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCi0g
ICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpCisgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zm
c2V0LCBlbmRPZmZzZXQsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgICwgbV9i
YXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX3JpZ2h0KHJp
Z2h0KQpAQCAtNTgwLDkgKzU4OCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgUmVhZE1vZGlmeURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgIGlubGluZSBSZWFkTW9kaWZ5RG90Tm9kZTo6UmVh
ZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBFeHBy
ZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRp
dm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobG9jYXRpb24pCi0gICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3Qs
IHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCisgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lv
bkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGRpdm90TGluZSwgZGl2b3RMaW5l
U3RhcnQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkK
ICAgICAgICAgLCBtX3JpZ2h0KHJpZ2h0KQpAQCAtNTkxLDkgKzU5OSw5IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXNzaWduRXJyb3JOb2RlOjpBc3NpZ25F
cnJvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgaW5saW5lIEFz
c2lnbkVycm9yTm9kZTo6QXNzaWduRXJyb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQotICAgICAgICAsIFRocm93YWJsZUV4cHJl
c3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgICAgICAsIFRocm93
YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBkaXZvdExp
bmUsIGRpdm90TGluZVN0YXJ0KQogICAgIHsKICAgICB9CiAKQEAgLTY5OCwxMSArNzA2LDEzIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgV2l0aE5vZGU6Oldp
dGhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBl
eHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIHVpbnQzMl90IGRpdm90LCB1aW50MzJfdCBl
eHByZXNzaW9uTGVuZ3RoKQorICAgIGlubGluZSBXaXRoTm9kZTo6V2l0aE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5v
ZGUqIHN0YXRlbWVudCwgdWludDMyX3QgZGl2b3QsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWdu
ZWQgZGl2b3RMaW5lU3RhcnQsIHVpbnQzMl90IGV4cHJlc3Npb25MZW5ndGgpCiAgICAgICAgIDog
U3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAg
LCBtX3N0YXRlbWVudChzdGF0ZW1lbnQpCiAgICAgICAgICwgbV9kaXZvdChkaXZvdCkKKyAgICAg
ICAgLCBtX2Rpdm90TGluZShkaXZvdExpbmUpCisgICAgICAgICwgbV9kaXZvdExpbmVTdGFydChk
aXZvdExpbmVTdGFydCkKICAgICAgICAgLCBtX2V4cHJlc3Npb25MZW5ndGgoZXhwcmVzc2lvbkxl
bmd0aCkKICAgICB7CiAgICAgfQpAQCAtODEyLDE2ICs4MjIsMTcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGb3JJbk5vZGU6OkZvckluTm9kZShWTSogdm0s
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBFeHByZXNzaW9uTm9kZSogaW4sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2Rl
KiBzdGF0ZW1lbnQsIGludCBkaXZvdCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KQor
ICAgIGlubGluZSBGb3JJbk5vZGU6OkZvckluTm9kZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSog
aW4sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIHVuc2ln
bmVkIGRpdm90LCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90
TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgIDogU3RhdGVtZW50Tm9kZShs
b2NhdGlvbikKICAgICAgICAgLCBtX2luaXQoMCkKLSAgICAgICAgLCBtX2xleHByKG5ldyAodm0p
IFJlc29sdmVOb2RlKGxvY2F0aW9uLCBpZGVudCwgZGl2b3QgLSBzdGFydE9mZnNldCkpCisgICAg
ICAgICwgbV9sZXhwcihuZXcgKHZtKSBSZXNvbHZlTm9kZShsb2NhdGlvbiwgaWRlbnQsIGRpdm90
IC0gc3RhcnRPZmZzZXQsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpKQogICAgICAgICAsIG1f
ZXhwcihleHByKQogICAgICAgICAsIG1fc3RhdGVtZW50KHN0YXRlbWVudCkKICAgICB7CiAgICAg
ICAgIGlmIChpbikgewogICAgICAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcg
KHZtKSBBc3NpZ25SZXNvbHZlTm9kZShsb2NhdGlvbiwgaWRlbnQsIGluKTsKLSAgICAgICAgICAg
IG5vZGUtPnNldEV4Y2VwdGlvblNvdXJjZUNvZGUoZGl2b3QsIGRpdm90IC0gc3RhcnRPZmZzZXQs
IGVuZE9mZnNldCAtIGRpdm90KTsKKyAgICAgICAgICAgIEFTU0VSVChkaXZvdCA+PSBkaXZvdExp
bmVTdGFydCk7CisgICAgICAgICAgICBub2RlLT5zZXRFeGNlcHRpb25Tb3VyY2VDb2RlKGRpdm90
LCBkaXZvdCAtIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQgLSBkaXZvdCwgZGl2b3RMaW5lLCBkaXZv
dExpbmVTdGFydCk7CiAgICAgICAgICAgICBtX2luaXQgPSBub2RlOwogICAgICAgICB9CiAgICAg
ICAgIC8vIGZvciggdmFyIGZvbyA9IGJhciBpbiBiYXogKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5jcHAJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxMSArNTIsMTMg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBT
dGF0ZW1lbnROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgU3Rh
dGVtZW50Tm9kZTo6c2V0TG9jKGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50IGNoYXJQ
b3NpdGlvbikKK3ZvaWQgU3RhdGVtZW50Tm9kZTo6c2V0TG9jKHVuc2lnbmVkIGZpcnN0TGluZSwg
dW5zaWduZWQgbGFzdExpbmUsIGludCBzdGFydE9mZnNldCwgaW50IGxpbmVTdGFydE9mZnNldCkK
IHsKICAgICBtX2xpbmVOdW1iZXIgPSBmaXJzdExpbmU7CiAgICAgbV9sYXN0TGluZSA9IGxhc3RM
aW5lOwotICAgIG1fY2hhclBvc2l0aW9uID0gY2hhclBvc2l0aW9uOworICAgIG1fc3RhcnRPZmZz
ZXQgPSBzdGFydE9mZnNldDsKKyAgICBtX2xpbmVTdGFydE9mZnNldCA9IGxpbmVTdGFydE9mZnNl
dDsKKyAgICBBU1NFUlQobV9zdGFydE9mZnNldCA+PSBtX2xpbmVTdGFydE9mZnNldCk7CiB9CiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTb3VyY2VFbGVtZW50cyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtODAsNyArODIsOCBAQCBTY29wZU5vZGU6OlNj
b3BlTm9kZShWTSogdm0sIGNvbnN0IEpTVG9rCiAgICAgOiBTdGF0ZW1lbnROb2RlKGVuZExvY2F0
aW9uKQogICAgICwgUGFyc2VyQXJlbmFSZWZDb3VudGVkKHZtKQogICAgICwgbV9zdGFydExpbmVO
dW1iZXIoc3RhcnRMb2NhdGlvbi5saW5lKQotICAgICwgbV9zdGFydENoYXJQb3NpdGlvbihzdGFy
dExvY2F0aW9uLmNoYXJQb3NpdGlvbikKKyAgICAsIG1fc3RhcnRTdGFydE9mZnNldChzdGFydExv
Y2F0aW9uLnN0YXJ0T2Zmc2V0KQorICAgICwgbV9zdGFydExpbmVTdGFydE9mZnNldChzdGFydExv
Y2F0aW9uLmxpbmVTdGFydE9mZnNldCkKICAgICAsIG1fZmVhdHVyZXMoaW5TdHJpY3RDb250ZXh0
ID8gU3RyaWN0TW9kZUZlYXR1cmUgOiBOb0ZlYXR1cmVzKQogICAgICwgbV9udW1Db25zdGFudHMo
MCkKICAgICAsIG1fc3RhdGVtZW50cygwKQpAQCAtOTEsNyArOTQsOCBAQCBTY29wZU5vZGU6OlNj
b3BlTm9kZShWTSogdm0sIGNvbnN0IEpTVG9rCiAgICAgOiBTdGF0ZW1lbnROb2RlKGVuZExvY2F0
aW9uKQogICAgICwgUGFyc2VyQXJlbmFSZWZDb3VudGVkKHZtKQogICAgICwgbV9zdGFydExpbmVO
dW1iZXIoc3RhcnRMb2NhdGlvbi5saW5lKQotICAgICwgbV9zdGFydENoYXJQb3NpdGlvbihzdGFy
dExvY2F0aW9uLmNoYXJQb3NpdGlvbikKKyAgICAsIG1fc3RhcnRTdGFydE9mZnNldChzdGFydExv
Y2F0aW9uLnN0YXJ0T2Zmc2V0KQorICAgICwgbV9zdGFydExpbmVTdGFydE9mZnNldChzdGFydExv
Y2F0aW9uLmxpbmVTdGFydE9mZnNldCkKICAgICAsIG1fZmVhdHVyZXMoZmVhdHVyZXMpCiAgICAg
LCBtX3NvdXJjZShzb3VyY2UpCiAgICAgLCBtX251bUNvbnN0YW50cyhudW1Db25zdGFudHMpCkBA
IC0xMTIsMTQgKzExNiwxNSBAQCBTdGF0ZW1lbnROb2RlKiBTY29wZU5vZGU6OnNpbmdsZVN0YXRl
bWVuCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm9ncmFtTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgUHJvZ3JhbU5vZGU6OlByb2dyYW1O
b2RlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZh
clN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0
JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVy
ZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCitpbmxpbmUgUHJvZ3JhbU5vZGU6OlByb2dy
YW1Ob2RlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgU291
cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sq
IGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQog
ICAgIDogU2NvcGVOb2RlKHZtLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc291cmNlLCBj
aGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVz
LCBudW1Db25zdGFudHMpCisgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogewogfQog
Ci1QYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBQcm9ncmFtTm9kZTo6Y3JlYXRlKFZNKiB2bSwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGVuZExvY2F0aW9uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFj
aywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlh
YmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGlu
dCBudW1Db25zdGFudHMpCitQYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBQcm9ncmFtTm9kZTo6Y3Jl
YXRlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgU291cmNl
RWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1
bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQogewot
ICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gbm9kZSA9IG5ldyBQcm9ncmFtTm9kZSh2bSwgc3RhcnRM
b2NhdGlvbiwgZW5kTG9jYXRpb24sIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCAgY2Fw
dHVyZWRWYXJpYWJsZXMsIHNvdXJjZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CisgICAgUmVm
UHRyPFByb2dyYW1Ob2RlPiBub2RlID0gbmV3IFByb2dyYW1Ob2RlKHZtLCBzdGFydExvY2F0aW9u
LCBlbmRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNr
LCAgY2FwdHVyZWRWYXJpYWJsZXMsIHNvdXJjZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CiAK
ICAgICBBU1NFUlQobm9kZS0+bV9hcmVuYS5sYXN0KCkgPT0gbm9kZSk7CiAgICAgbm9kZS0+bV9h
cmVuYS5yZW1vdmVMYXN0KCk7CkBAIC0xMzUsNyArMTQwLDcgQEAgaW5saW5lIEV2YWxOb2RlOjpF
dmFsTm9kZShWTSogdm0sIGNvbnN0IAogewogfQogCi1QYXNzUmVmUHRyPEV2YWxOb2RlPiBFdmFs
Tm9kZTo6Y3JlYXRlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9u
LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCBTb3VyY2VFbGVtZW50cyogY2hp
bGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVu
dGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBD
b2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCitQYXNzUmVmUHRyPEV2YWxO
b2RlPiBFdmFsTm9kZTo6Y3JlYXRlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFy
dExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCwg
U291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3Rh
Y2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRz
KQogewogICAgIFJlZlB0cjxFdmFsTm9kZT4gbm9kZSA9IG5ldyBFdmFsTm9kZSh2bSwgc3RhcnRM
b2NhdGlvbiwgZW5kTG9jYXRpb24sIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0
dXJlZFZhcmlhYmxlcywgc291cmNlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKIApAQCAtMTcz
LDEzICsxNzgsMTUgQEAgRnVuY3Rpb25QYXJhbWV0ZXJzOjp+RnVuY3Rpb25QYXJhbWV0ZXJzKAog
ICAgICAgICBpZGVudGlmaWVycygpW2ldLn5JZGVudGlmaWVyKCk7CiB9CiAKLWlubGluZSBGdW5j
dGlvbkJvZHlOb2RlOjpGdW5jdGlvbkJvZHlOb2RlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCBi
b29sIGluU3RyaWN0Q29udGV4dCkKK2lubGluZSBGdW5jdGlvbkJvZHlOb2RlOjpGdW5jdGlvbkJv
ZHlOb2RlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgYm9v
bCBpblN0cmljdENvbnRleHQpCiAgICAgOiBTY29wZU5vZGUodm0sIHN0YXJ0TG9jYXRpb24sIGVu
ZExvY2F0aW9uLCBpblN0cmljdENvbnRleHQpCisgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29s
dW1uKQogewogfQogCi1pbmxpbmUgRnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZShW
TSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFj
ayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2Fw
dHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJl
cyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKK2lubGluZSBGdW5jdGlvbkJvZHlOb2RlOjpG
dW5jdGlvbkJvZHlOb2RlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0
aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENv
bHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0
aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51
bUNvbnN0YW50cykKICAgICA6IFNjb3BlTm9kZSh2bSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRp
b24sIHNvdXJjZUNvZGUsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZh
cmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykKKyAgICAsIG1fc3RhcnRDb2x1bW4oc3Rh
cnRDb2x1bW4pCiB7CiB9CiAKQEAgLTE5NywxNCArMjA0LDE0IEBAIHZvaWQgRnVuY3Rpb25Cb2R5
Tm9kZTo6ZmluaXNoUGFyc2luZyhQYXMKICAgICBtX2Z1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2ds
ZSA9IGZ1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZTsKIH0KIAotRnVuY3Rpb25Cb2R5Tm9kZSog
RnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBz
dGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCBib29sIGlu
U3RyaWN0Q29udGV4dCkKK0Z1bmN0aW9uQm9keU5vZGUqIEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0
ZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIGJvb2wgaW5T
dHJpY3RDb250ZXh0KQogewotICAgIHJldHVybiBuZXcgRnVuY3Rpb25Cb2R5Tm9kZSh2bSwgc3Rh
cnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIGluU3RyaWN0Q29udGV4dCk7CisgICAgcmV0dXJuIG5l
dyBGdW5jdGlvbkJvZHlOb2RlKHZtLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc3RhcnRD
b2x1bW4sIGluU3RyaWN0Q29udGV4dCk7CiB9CiAKLVBhc3NSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9k
ZT4gRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCBTb3Vy
Y2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayog
ZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNl
Q29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRz
KQorUGFzc1JlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUo
Vk0qIHZtLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCBTb3VyY2VFbGVt
ZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0
YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQogewot
ICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBub2RlID0gbmV3IEZ1bmN0aW9uQm9keU5vZGUo
dm0sIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNT
dGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIHNvdXJjZUNvZGUsIGZlYXR1cmVzLCBudW1Db25zdGFu
dHMpOworICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBub2RlID0gbmV3IEZ1bmN0aW9uQm9k
eU5vZGUodm0sIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzdGFydENvbHVtbiwgY2hpbGRy
ZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBzb3VyY2VDb2RlLCBm
ZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKIAogICAgIEFTU0VSVChub2RlLT5tX2FyZW5hLmxhc3Qo
KSA9PSBub2RlKTsKICAgICBub2RlLT5tX2FyZW5hLnJlbW92ZUxhc3QoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDEyICsx
MzAsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgfk5vZGUoKSB7IH0KIAog
ICAgICAgICBpbnQgbGluZU5vKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9Ci0KLSAg
ICAgICAgaW50IGNoYXJQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hhclBvc2l0aW9uOyB9
CisgICAgICAgIGludCBzdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRPZmZzZXQ7
IH0KKyAgICAgICAgaW50IGxpbmVTdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZVN0
YXJ0T2Zmc2V0OyB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGludCBtX2xpbmVOdW1iZXI7
Ci0gICAgICAgIGludCBtX2NoYXJQb3NpdGlvbjsKKyAgICAgICAgaW50IG1fc3RhcnRPZmZzZXQ7
CisgICAgICAgIGludCBtX2xpbmVTdGFydE9mZnNldDsKICAgICB9OwogCiAgICAgY2xhc3MgRXhw
cmVzc2lvbk5vZGUgOiBwdWJsaWMgTm9kZSB7CkBAIC0xNzgsOSArMTc5LDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24gPSAwKSA9IDA7CiAKLSAg
ICAgICAgdm9pZCBzZXRMb2MoaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lLCBpbnQgY2hhclBv
c2l0aW9uKTsKLSAgICAgICAgaW50IGZpcnN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIGxpbmVObygp
OyB9Ci0gICAgICAgIGludCBsYXN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdExpbmU7IH0K
KyAgICAgICAgdm9pZCBzZXRMb2ModW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBsYXN0TGlu
ZSwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgbGluZVN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgdW5zaWdu
ZWQgZmlyc3RMaW5lKCkgY29uc3QgeyByZXR1cm4gbGluZU5vKCk7IH0KKyAgICAgICAgdW5zaWdu
ZWQgbGFzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RMaW5lOyB9CiAKICAgICAgICAgdmly
dHVhbCBib29sIGlzRW1wdHlTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNSZXR1cm5Ob2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
QEAgLTI1NCwzNiArMjU1LDQ4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAg
ICAgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoKQogICAgICAgICAgICAgOiBtX2Rpdm90KHN0YXRp
Y19jYXN0PHVpbnQzMl90PigtMSkpCi0gICAgICAgICAgICAsIG1fc3RhcnRPZmZzZXQoc3RhdGlj
X2Nhc3Q8dWludDE2X3Q+KC0xKSkKLSAgICAgICAgICAgICwgbV9lbmRPZmZzZXQoc3RhdGljX2Nh
c3Q8dWludDE2X3Q+KC0xKSkKKyAgICAgICAgICAgICwgbV9kaXZvdFN0YXJ0T2Zmc2V0KHN0YXRp
Y19jYXN0PHVpbnQxNl90PigtMSkpCisgICAgICAgICAgICAsIG1fZGl2b3RFbmRPZmZzZXQoc3Rh
dGljX2Nhc3Q8dWludDE2X3Q+KC0xKSkKKyAgICAgICAgICAgICwgbV9kaXZvdExpbmUoc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KC0xKSkKKyAgICAgICAgICAgICwgbV9kaXZvdExpbmVTdGFydChzdGF0
aWNfY2FzdDx1aW50MzJfdD4oLTEpKQogICAgICAgICB7CiAgICAgICAgIH0KICAgICAgICAgCi0g
ICAgICAgIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSh1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAg
ICAgICAgICAgIDogbV9kaXZvdChkaXZvdCkKLSAgICAgICAgICAgICwgbV9zdGFydE9mZnNldChz
dGFydE9mZnNldCkKLSAgICAgICAgICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zmc2V0KQorICAgICAg
ICAgICAgLCBtX2Rpdm90U3RhcnRPZmZzZXQoc3RhcnRPZmZzZXQpCisgICAgICAgICAgICAsIG1f
ZGl2b3RFbmRPZmZzZXQoZW5kT2Zmc2V0KQorICAgICAgICAgICAgLCBtX2Rpdm90TGluZShkaXZv
dExpbmUpCisgICAgICAgICAgICAsIG1fZGl2b3RMaW5lU3RhcnQoZGl2b3RMaW5lU3RhcnQpCiAg
ICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2Rpdm90ID49IG1fZGl2b3RMaW5lU3RhcnQp
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2b2lkIHNldEV4Y2VwdGlvblNvdXJjZUNv
ZGUodW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCisgICAgICAgIHZvaWQgc2V0RXhjZXB0aW9uU291cmNlQ29kZSh1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RM
aW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgeworICAgICAgICAgICAgQVNT
RVJUKGRpdm90ID49IGRpdm90TGluZVN0YXJ0KTsKICAgICAgICAgICAgIG1fZGl2b3QgPSBkaXZv
dDsKLSAgICAgICAgICAgIG1fc3RhcnRPZmZzZXQgPSBzdGFydE9mZnNldDsKLSAgICAgICAgICAg
IG1fZW5kT2Zmc2V0ID0gZW5kT2Zmc2V0OworICAgICAgICAgICAgbV9kaXZvdFN0YXJ0T2Zmc2V0
ID0gc3RhcnRPZmZzZXQ7CisgICAgICAgICAgICBtX2Rpdm90RW5kT2Zmc2V0ID0gZW5kT2Zmc2V0
OworICAgICAgICAgICAgbV9kaXZvdExpbmUgPSBkaXZvdExpbmU7CisgICAgICAgICAgICBtX2Rp
dm90TGluZVN0YXJ0ID0gZGl2b3RMaW5lU3RhcnQ7CiAgICAgICAgIH0KIAogICAgICAgICB1aW50
MzJfdCBkaXZvdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGl2b3Q7IH0KLSAgICAgICAgdWludDE2X3Qg
c3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0T2Zmc2V0OyB9Ci0gICAgICAgIHVp
bnQxNl90IGVuZE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kT2Zmc2V0OyB9CisgICAgICAg
IHVpbnQxNl90IGRpdm90U3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Rpdm90U3RhcnRP
ZmZzZXQ7IH0KKyAgICAgICAgdWludDE2X3QgZGl2b3RFbmRPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX2Rpdm90RW5kT2Zmc2V0OyB9CisgICAgICAgIHVpbnQzMl90IGRpdm90TGluZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGl2b3RMaW5lOyB9CisgICAgICAgIHVpbnQzMl90IGRpdm90TGluZVN0YXJ0
KCkgY29uc3QgeyByZXR1cm4gbV9kaXZvdExpbmVTdGFydDsgfQogCiAgICAgcHJvdGVjdGVkOgog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihCeXRlY29kZUdlbmVy
YXRvciYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB1
aW50MzJfdCBtX2Rpdm90OwotICAgICAgICB1aW50MTZfdCBtX3N0YXJ0T2Zmc2V0OwotICAgICAg
ICB1aW50MTZfdCBtX2VuZE9mZnNldDsKKyAgICAgICAgdWludDE2X3QgbV9kaXZvdFN0YXJ0T2Zm
c2V0OworICAgICAgICB1aW50MTZfdCBtX2Rpdm90RW5kT2Zmc2V0OworICAgICAgICB1aW50MzJf
dCBtX2Rpdm90TGluZTsKKyAgICAgICAgdWludDMyX3QgbV9kaXZvdExpbmVTdGFydDsKICAgICB9
OwogCiAgICAgY2xhc3MgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgOiBwdWJsaWMgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEgewpAQCAtMjkxLDI4ICszMDQsNDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKCkKICAgICAgICAgICAgIDogbV9z
dWJleHByZXNzaW9uRGl2b3RPZmZzZXQoMCkKICAgICAgICAgICAgICwgbV9zdWJleHByZXNzaW9u
RW5kT2Zmc2V0KDApCisgICAgICAgICAgICAsIG1fc3ViZXhwcmVzc2lvbkxpbmVPZmZzZXQoMCkK
KyAgICAgICAgICAgICwgbV9zdWJleHByZXNzaW9uTGluZVN0YXJ0T2Zmc2V0KDApCiAgICAgICAg
IHsKICAgICAgICAgfQogCi0gICAgICAgIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAg
ICAgICAgICAgOiBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldCkKKyAgICAgICAgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEodW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRp
dm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpCisgICAgICAgICAgICA6IFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBkaXZvdExpbmUs
IGRpdm90TGluZVN0YXJ0KQogICAgICAgICAgICAgLCBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNl
dCgwKQogICAgICAgICAgICAgLCBtX3N1YmV4cHJlc3Npb25FbmRPZmZzZXQoMCkKKyAgICAgICAg
ICAgICwgbV9zdWJleHByZXNzaW9uTGluZU9mZnNldCgwKQorICAgICAgICAgICAgLCBtX3N1YmV4
cHJlc3Npb25MaW5lU3RhcnRPZmZzZXQoMCkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgdm9pZCBzZXRTdWJleHByZXNzaW9uSW5mbyh1aW50MzJfdCBzdWJleHByZXNzaW9uRGl2b3Qs
IHVpbnQxNl90IHN1YmV4cHJlc3Npb25PZmZzZXQpCisgICAgICAgIHZvaWQgc2V0U3ViZXhwcmVz
c2lvbkluZm8odWludDMyX3Qgc3ViZXhwcmVzc2lvbkRpdm90LCB1aW50MTZfdCBzdWJleHByZXNz
aW9uT2Zmc2V0LCB1aW50MzJfdCBzdWJleHByZXNzaW9uTGluZSwgdWludDMyX3Qgc3ViZXhwcmVz
c2lvbkxpbmVTdGFydCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHN1YmV4cHJlc3Np
b25EaXZvdCA8PSBkaXZvdCgpKTsKLSAgICAgICAgICAgIGlmICgoZGl2b3QoKSAtIHN1YmV4cHJl
c3Npb25EaXZvdCkgJiB+MHhGRkZGKSAvLyBPdmVyZmxvdyBtZWFucyB3ZSBjYW4ndCBkbyB0aGlz
IHNhZmVseSwgc28ganVzdCBwb2ludCBhdCB0aGUgcHJpbWFyeSBkaXZvdAorICAgICAgICAgICAg
Ly8gT3ZlcmZsb3cgbWVhbnMgd2UgY2FuJ3QgZG8gdGhpcyBzYWZlbHksIHNvIGp1c3QgcG9pbnQg
YXQgdGhlIHByaW1hcnkgZGl2b3QsCisgICAgICAgICAgICAvLyBkaXZvdExpbmUsIG9yIGRpdm90
TGluZVN0YXJ0LgorICAgICAgICAgICAgaWYgKChkaXZvdCgpIC0gc3ViZXhwcmVzc2lvbkRpdm90
KSAmIH4weEZGRkYpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKChk
aXZvdExpbmUoKSAtIHN1YmV4cHJlc3Npb25MaW5lKSAmIH4weEZGRkYpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKChkaXZvdExpbmVTdGFydCgpIC0gc3ViZXhwcmVz
c2lvbkxpbmVTdGFydCkgJiB+MHhGRkZGKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0ID0gZGl2b3QoKSAtIHN1YmV4cHJlc3Np
b25EaXZvdDsKICAgICAgICAgICAgIG1fc3ViZXhwcmVzc2lvbkVuZE9mZnNldCA9IHN1YmV4cHJl
c3Npb25PZmZzZXQ7CisgICAgICAgICAgICBtX3N1YmV4cHJlc3Npb25MaW5lT2Zmc2V0ID0gZGl2
b3RMaW5lKCkgLSBzdWJleHByZXNzaW9uTGluZTsKKyAgICAgICAgICAgIG1fc3ViZXhwcmVzc2lv
bkxpbmVTdGFydE9mZnNldCA9IGRpdm90TGluZVN0YXJ0KCkgLSBzdWJleHByZXNzaW9uTGluZVN0
YXJ0OwogICAgICAgICB9CiAKKyAgICAgICAgdW5zaWduZWQgc3ViZXhwcmVzc2lvbkRpdm90KCkg
eyByZXR1cm4gZGl2b3QoKSAtIG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0OyB9CisgICAgICAg
IHVuc2lnbmVkIHN1YmV4cHJlc3Npb25TdGFydE9mZnNldCgpIHsgcmV0dXJuIGRpdm90U3RhcnRP
ZmZzZXQoKSAtIG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0OyB9CisgICAgICAgIHVuc2lnbmVk
IHN1YmV4cHJlc3Npb25FbmRPZmZzZXQoKSB7IHJldHVybiBtX3N1YmV4cHJlc3Npb25FbmRPZmZz
ZXQ7IH0KKyAgICAgICAgdW5zaWduZWQgc3ViZXhwcmVzc2lvbkxpbmUoKSB7IHJldHVybiBkaXZv
dExpbmUoKSAtIG1fc3ViZXhwcmVzc2lvbkxpbmVPZmZzZXQ7IH0KKyAgICAgICAgdW5zaWduZWQg
c3ViZXhwcmVzc2lvbkxpbmVTdGFydCgpIHsgcmV0dXJuIGRpdm90TGluZVN0YXJ0KCkgLSBtX3N1
YmV4cHJlc3Npb25MaW5lU3RhcnRPZmZzZXQ7IH0KKwogICAgIHByb3RlY3RlZDoKICAgICAgICAg
dWludDE2X3QgbV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQ7CiAgICAgICAgIHVpbnQxNl90IG1f
c3ViZXhwcmVzc2lvbkVuZE9mZnNldDsKKyAgICAgICAgdWludDE2X3QgbV9zdWJleHByZXNzaW9u
TGluZU9mZnNldDsKKyAgICAgICAgdWludDE2X3QgbV9zdWJleHByZXNzaW9uTGluZVN0YXJ0T2Zm
c2V0OwogICAgIH07CiAgICAgCiAgICAgY2xhc3MgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNz
aW9uRGF0YSA6IHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CkBAIC0zMjAsMjggKzM1
Myw0OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHBy
ZXNzaW9uRGF0YSgpCiAgICAgICAgICAgICA6IG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0KDAp
CiAgICAgICAgICAgICAsIG1fc3ViZXhwcmVzc2lvblN0YXJ0T2Zmc2V0KDApCisgICAgICAgICAg
ICAsIG1fc3ViZXhwcmVzc2lvbkxpbmVPZmZzZXQoMCkKKyAgICAgICAgICAgICwgbV9zdWJleHBy
ZXNzaW9uTGluZVN0YXJ0T2Zmc2V0KDApCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAg
IFRocm93YWJsZVByZWZpeGVkU3ViRXhwcmVzc2lvbkRhdGEodW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgICAgICA6IFRocm93
YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgICAg
ICBUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhKHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBkaXZvdExpbmUs
IHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQorICAgICAgICAgICAgOiBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdExp
bmVTdGFydCkKICAgICAgICAgICAgICwgbV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQoMCkKICAg
ICAgICAgICAgICwgbV9zdWJleHByZXNzaW9uU3RhcnRPZmZzZXQoMCkKKyAgICAgICAgICAgICwg
bV9zdWJleHByZXNzaW9uTGluZU9mZnNldCgwKQorICAgICAgICAgICAgLCBtX3N1YmV4cHJlc3Np
b25MaW5lU3RhcnRPZmZzZXQoMCkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdm9p
ZCBzZXRTdWJleHByZXNzaW9uSW5mbyh1aW50MzJfdCBzdWJleHByZXNzaW9uRGl2b3QsIHVpbnQx
Nl90IHN1YmV4cHJlc3Npb25PZmZzZXQpCisgICAgICAgIHZvaWQgc2V0U3ViZXhwcmVzc2lvbklu
Zm8odWludDMyX3Qgc3ViZXhwcmVzc2lvbkRpdm90LCB1aW50MTZfdCBzdWJleHByZXNzaW9uT2Zm
c2V0LCB1aW50MzJfdCBzdWJleHByZXNzaW9uTGluZSwgdWludDMyX3Qgc3ViZXhwcmVzc2lvbkxp
bmVTdGFydCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHN1YmV4cHJlc3Npb25EaXZv
dCA+PSBkaXZvdCgpKTsKLSAgICAgICAgICAgIGlmICgoc3ViZXhwcmVzc2lvbkRpdm90IC0gZGl2
b3QoKSkgJiB+MHhGRkZGKSAvLyBPdmVyZmxvdyBtZWFucyB3ZSBjYW4ndCBkbyB0aGlzIHNhZmVs
eSwgc28ganVzdCBwb2ludCBhdCB0aGUgcHJpbWFyeSBkaXZvdAorICAgICAgICAgICAgLy8gT3Zl
cmZsb3cgbWVhbnMgd2UgY2FuJ3QgZG8gdGhpcyBzYWZlbHksIHNvIGp1c3QgcG9pbnQgYXQgdGhl
IHByaW1hcnkgZGl2b3QsCisgICAgICAgICAgICAvLyBkaXZvdExpbmUsIG9yIGRpdm90TGluZVN0
YXJ0LgorICAgICAgICAgICAgaWYgKChzdWJleHByZXNzaW9uRGl2b3QgLSBkaXZvdCgpKSAmIH4w
eEZGRkYpIAorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmICgoc3ViZXhw
cmVzc2lvbkxpbmUgLSBkaXZvdExpbmUoKSkgJiB+MHhGRkZGKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIGlmICgoc3ViZXhwcmVzc2lvbkxpbmVTdGFydCAtIGRpdm90TGlu
ZVN0YXJ0KCkpICYgfjB4RkZGRikKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNldCA9IHN1YmV4cHJlc3Npb25EaXZvdCAtIGRpdm90
KCk7CiAgICAgICAgICAgICBtX3N1YmV4cHJlc3Npb25TdGFydE9mZnNldCA9IHN1YmV4cHJlc3Np
b25PZmZzZXQ7CisgICAgICAgICAgICBtX3N1YmV4cHJlc3Npb25MaW5lT2Zmc2V0ID0gc3ViZXhw
cmVzc2lvbkxpbmUgLSBkaXZvdExpbmUoKTsKKyAgICAgICAgICAgIG1fc3ViZXhwcmVzc2lvbkxp
bmVTdGFydE9mZnNldCA9IHN1YmV4cHJlc3Npb25MaW5lU3RhcnQgLSBkaXZvdExpbmVTdGFydCgp
OwogICAgICAgICB9CiAKKyAgICAgICAgdW5zaWduZWQgc3ViZXhwcmVzc2lvbkRpdm90KCkgeyBy
ZXR1cm4gZGl2b3QoKSArIG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0OyB9CisgICAgICAgIHVu
c2lnbmVkIHN1YmV4cHJlc3Npb25TdGFydE9mZnNldCgpIHsgcmV0dXJuIG1fc3ViZXhwcmVzc2lv
blN0YXJ0T2Zmc2V0OyB9CisgICAgICAgIHVuc2lnbmVkIHN1YmV4cHJlc3Npb25FbmRPZmZzZXQo
KSB7IHJldHVybiBkaXZvdEVuZE9mZnNldCgpICsgbV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQ7
IH0KKyAgICAgICAgdW5zaWduZWQgc3ViZXhwcmVzc2lvbkxpbmUoKSB7IHJldHVybiBkaXZvdExp
bmUoKSArIG1fc3ViZXhwcmVzc2lvbkxpbmVPZmZzZXQ7IH0KKyAgICAgICAgdW5zaWduZWQgc3Vi
ZXhwcmVzc2lvbkxpbmVTdGFydCgpIHsgcmV0dXJuIGRpdm90TGluZVN0YXJ0KCkgKyBtX3N1YmV4
cHJlc3Npb25MaW5lU3RhcnRPZmZzZXQ7IH0KKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgdWlu
dDE2X3QgbV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQ7CiAgICAgICAgIHVpbnQxNl90IG1fc3Vi
ZXhwcmVzc2lvblN0YXJ0T2Zmc2V0OworICAgICAgICB1aW50MTZfdCBtX3N1YmV4cHJlc3Npb25M
aW5lT2Zmc2V0OworICAgICAgICB1aW50MTZfdCBtX3N1YmV4cHJlc3Npb25MaW5lU3RhcnRPZmZz
ZXQ7CiAgICAgfTsKIAogICAgIGNsYXNzIFJlZ0V4cE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5v
ZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CkBAIC0zNjUsNyArNDE4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZXNvbHZlTm9kZSA6IHB1YmxpYyBFeHByZXNz
aW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBSZXNvbHZlTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgaW50IHN0YXJ0T2Zmc2V0KTsKKyAgICAgICAg
UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGlu
ZVN0YXJ0KTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudDsgfQogCkBAIC0zNzcsNyArNDMwLDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Jlc29sdmVOb2RlKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7Ci0gICAgICAgIGludDMy
X3QgbV9zdGFydE9mZnNldDsKKyAgICAgICAgdWludDMyX3QgbV9zdGFydE9mZnNldDsKKyAgICAg
ICAgdWludDMyX3QgbV9kaXZvdExpbmU7CisgICAgICAgIHVpbnQzMl90IG1fZGl2b3RMaW5lU3Rh
cnQ7CiAgICAgfTsKIAogICAgIGNsYXNzIEVsZW1lbnROb2RlIDogcHVibGljIFBhcnNlckFyZW5h
RnJlZWFibGUgewpAQCAtNDAxLDcgKzQ1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBB
cnJheU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRWxlbWVudE5vZGUqKTsKICAgICAgICAg
QXJyYXlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCBlbGlzaW9uLCBFbGVtZW50Tm9k
ZSopOwogCi0gICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIHRvQXJndW1lbnRMaXN0KFZNKiwgaW50
LCBpbnQpIGNvbnN0OworICAgICAgICBBcmd1bWVudExpc3ROb2RlKiB0b0FyZ3VtZW50TGlzdChW
TSosIGludCwgaW50LCB1bnNpZ25lZCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCk7CkBAIC01MjQsNyArNTc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBFdmFsRnVuY3Rpb25DYWxsTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGlj
IFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEV2YWxGdW5j
dGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEFyZ3VtZW50c05vZGUqLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7Cisg
ICAgICAgIEV2YWxGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEFyZ3Vt
ZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCk7
CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01MzQsNyArNTg5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAg
ICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBGdW5j
dGlvbkNhbGxWYWx1ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
LCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5l
U3RhcnQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTQ1LDcg
KzYwMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25DYWxsUmVzb2x2
ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsK
KyAgICAgICAgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Y29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1
bnNpZ25lZCBkaXZvdExpbmVTdGFydCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCk7CkBAIC01NTYsNyArNjExLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xh
c3MgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1Ymxp
YyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5j
dGlvbkNhbGxCcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgQXJndW1lbnRzTm9kZSosIHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAg
ICAgICAgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEFyZ3VtZW50c05v
ZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCk7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01NjgsNyArNjIzLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkNhbGxEb3ROb2RlIDogcHVibGljIEV4
cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1
YmxpYzoKLSAgICAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUq
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCk7CisgICAgICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQs
IHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTgxLDcgKzYzNiw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMgRnVu
Y3Rpb25DYWxsRG90Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBDYWxsRnVuY3Rpb25DYWxs
RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIENhbGxGdW5jdGlvbkNh
bGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVu
c2lnbmVkIGRpdm90TGluZVN0YXJ0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKQEAgLTU4OSw3ICs2NDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFz
cyBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMgRnVuY3Rpb25DYWxsRG90Tm9kZSB7
CiAgICAgcHVibGljOgotICAgICAgICBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBB
cmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpOworICAgICAgICBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
LCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5l
U3RhcnQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTk3LDcg
KzY1Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRGVsZXRlUmVzb2x2ZU5vZGUg
OiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7
CiAgICAgcHVibGljOgotICAgICAgICBEZWxldGVSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBEZWxldGVSZXNvbHZlTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90
TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApOwpAQCAtNjA3LDcgKzY2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgRGVsZXRlQnJhY2tldE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBEZWxldGVCcmFj
a2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhw
cmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBEZWxldGVCcmFja2V0Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUq
IHN1YnNjcmlwdCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQp
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNjE4LDcgKzY3Myw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRGVsZXRlRG90Tm9kZSA6IHB1YmxpYyBF
eHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIERlbGV0ZURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIERlbGV0ZURvdE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCk7
CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02NzEsNyArNzI2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcmVmaXhOb2RlIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNzaW9uRGF0YSB7CiAg
ICAgcHVibGljOgotICAgICAgICBQcmVmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUHJlZml4Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RM
aW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCk7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKTsKQEAgLTY4NSw3ICs3NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIFBvc3RmaXhOb2RlIDogcHVibGljIFByZWZpeE5vZGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgUG9zdGZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
LCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpOworICAgICAgICBQb3N0Zml4Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSosIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25l
ZCBkaXZvdExpbmVTdGFydCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7
CkBAIC05MjgsNyArOTgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWFkTW9k
aWZ5UmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBSZWFkTW9kaWZ5UmVzb2x2ZU5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCBF
eHByZXNzaW9uTm9kZSogIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAg
ICAgUmVhZE1vZGlmeVJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElk
ZW50aWZpZXImLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqICByaWdodCwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCwgdW5zaWduZWQgbGluZSwgdW5zaWduZWQgbGluZVN0YXJ0KTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTk1Miw3ICsxMDA3LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWFkTW9kaWZ5QnJhY2tldE5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAg
cHVibGljOgotICAgICAgICBSZWFkTW9kaWZ5QnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9w
ZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVu
dHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBSZWFkTW9kaWZ5QnJhY2tl
dE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJl
c3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJv
b2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVu
c2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtOTY3LDcgKzEwMjIsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIEFzc2lnbkJyYWNrZXROb2RlIDogcHVibGljIEV4cHJlc3Npb25O
b2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgQXNzaWduQnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEV4cHJlc3Npb25Ob2RlKiByaWdo
dCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCk7CisgICAgICAgIEFzc2lnbkJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBFeHByZXNzaW9u
Tm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQp
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtOTgxLDcgKzEwMzYs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFzc2lnbkRvdE5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVi
bGljOgotICAgICAgICBBc3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgQXNzaWduRG90Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5z
aWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCk7CiAKICAgICBwcml2YXRl
OgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC05OTQsNyArMTA0OSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgUmVhZE1vZGlmeURvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5v
ZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAg
ICAgICBSZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSog
cmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBSZWFkTW9kaWZ5RG90
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3Rh
cnQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTAwOCw3ICsx
MDYzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBc3NpZ25FcnJvck5vZGUgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAg
ICAgcHVibGljOgotICAgICAgICBBc3NpZ25FcnJvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpOworICAgICAgICBBc3NpZ25FcnJvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVu
c2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTE4NCw3ICsxMjM5LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgY2xhc3MgRm9ySW5Ob2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1Ymxp
YyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgogICAgICAgICBGb3JJbk5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBFeHByZXNzaW9uTm9k
ZSosIFN0YXRlbWVudE5vZGUqKTsKLSAgICAgICAgRm9ySW5Ob2RlKFZNKiwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgRXhwcmVzc2lv
bk5vZGUqLCBTdGF0ZW1lbnROb2RlKiwgaW50IGRpdm90LCBpbnQgc3RhcnRPZmZzZXQsIGludCBl
bmRPZmZzZXQpOworICAgICAgICBGb3JJbk5vZGUoVk0qLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBFeHByZXNzaW9uTm9kZSosIFN0
YXRlbWVudE5vZGUqLCB1bnNpZ25lZCBkaXZvdCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zm
c2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTIzNyw3ICsxMjkyLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBXaXRoTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIFdpdGhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSosIHVpbnQzMl90IGRpdm90LCB1aW50MzJfdCBleHBy
ZXNzaW9uTGVuZ3RoKTsKKyAgICAgICAgV2l0aE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKiwgdWludDMyX3QgZGl2b3QsIHVuc2lnbmVk
IGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQsIHVpbnQzMl90IGV4cHJlc3Npb25M
ZW5ndGgpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMjQ1LDYgKzEzMDAs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAg
ICAgICAgU3RhdGVtZW50Tm9kZSogbV9zdGF0ZW1lbnQ7CiAgICAgICAgIHVpbnQzMl90IG1fZGl2
b3Q7CisgICAgICAgIHVpbnQzMl90IG1fZGl2b3RMaW5lOworICAgICAgICB1aW50MzJfdCBtX2Rp
dm90TGluZVN0YXJ0OwogICAgICAgICB1aW50MzJfdCBtX2V4cHJlc3Npb25MZW5ndGg7CiAgICAg
fTsKIApAQCAtMTMxOSw3ICsxMzc2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGludHB0
cl90IHNvdXJjZUlEKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UucHJvdmlkZXJJRCgpOyB9CiAK
ICAgICAgICAgaW50IHN0YXJ0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRMaW5lTnVtYmVy
OyB9Ci0gICAgICAgIGludCBzdGFydENoYXJQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
cnRDaGFyUG9zaXRpb247fQorICAgICAgICBpbnQgc3RhcnRTdGFydE9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhcnRTdGFydE9mZnNldDsgfQorICAgICAgICBpbnQgc3RhcnRMaW5lU3RhcnRP
ZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0TGluZVN0YXJ0T2Zmc2V0OyB9CiAKICAgICAg
ICAgdm9pZCBzZXRGZWF0dXJlcyhDb2RlRmVhdHVyZXMgZmVhdHVyZXMpIHsgbV9mZWF0dXJlcyA9
IGZlYXR1cmVzOyB9CiAgICAgICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcygpIHsgcmV0dXJuIG1f
ZmVhdHVyZXM7IH0KQEAgLTEzNTQsNyArMTQxMiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBQYXJzZXJBcmVuYSBtX2FyZW5hOwogCiAgICAgICAgIGludCBtX3N0YXJ0TGluZU51bWJlcjsK
LSAgICAgICAgaW50IG1fc3RhcnRDaGFyUG9zaXRpb247CisgICAgICAgIHVuc2lnbmVkIG1fc3Rh
cnRTdGFydE9mZnNldDsKKyAgICAgICAgdW5zaWduZWQgbV9zdGFydExpbmVTdGFydE9mZnNldDsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1cmVzOwpAQCAtMTM2
OSwyMCArMTQyOCwyNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBQcm9ncmFtTm9kZSA6
IHB1YmxpYyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNGdW5jdGlvbk5vZGUgPSBmYWxzZTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJv
Z3JhbU5vZGU+IGNyZWF0ZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rp
b25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJvZ3JhbU5v
ZGU+IGNyZWF0ZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBW
YXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29k
ZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisKKyAgICAgICAgdW5zaWduZWQg
c3RhcnRDb2x1bW4oKSB7IHJldHVybiBtX3N0YXJ0Q29sdW1uOyB9CiAKICAgICAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gZmFsc2U7CiAKICAgICBwcml2YXRlOgotICAg
ICAgICBQcm9ncmFtTm9kZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rp
b25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgUHJvZ3JhbU5vZGUoVk0qLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQg
c3RhcnRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwg
SWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1D
b25zdGFudHMpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOworCisgICAgICAgIHVuc2lnbmVkIG1fc3RhcnRD
b2x1bW47CiAgICAgfTsKIAogICAgIGNsYXNzIEV2YWxOb2RlIDogcHVibGljIFNjb3BlTm9kZSB7
CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc0Z1bmN0aW9uTm9kZSA9
IGZhbHNlOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxFdmFsTm9kZT4gY3JlYXRlKFZNKiwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQs
IFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNl
dCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwor
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxFdmFsTm9kZT4gY3JlYXRlKFZNKiwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVk
IHN0YXJ0Q29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayos
IElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVt
Q29uc3RhbnRzKTsKKworICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbigpIHsgcmV0dXJuIDE7
IH0KIAogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzY29wZUlzRnVuY3Rpb24gPSBmYWxzZTsK
IApAQCAtMTQxNCw4ICsxNDc5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rp
b25Cb2R5Tm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNGdW5jdGlvbk5vZGUgPSB0cnVlOwotICAgICAgICBzdGF0aWMgRnVu
Y3Rpb25Cb2R5Tm9kZSogY3JlYXRlKFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIGJvb2wgaXNTdHJpY3RNb2RlKTsKLSAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gY3JlYXRlKFZNKiwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIFNvdXJjZUVs
ZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0
IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAgICBz
dGF0aWMgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlKFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1u
LCBib29sIGlzU3RyaWN0TW9kZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZ1bmN0aW9u
Qm9keU5vZGU+IGNyZWF0ZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgU291cmNlRWxlbWVu
dHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291
cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgRnVu
Y3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJz
LmdldCgpOyB9CiAgICAgICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFyYW1ldGVycy0+c2l6ZSgpOyB9CkBAIC0xNDM0LDE4ICsxNDk5LDIwIEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIHZvaWQgc2V0RnVuY3Rpb25TdGFydChpbnQgZnVuY3Rpb25TdGFy
dCkgeyBtX2Z1bmN0aW9uU3RhcnQgPSBmdW5jdGlvblN0YXJ0OyB9CiAgICAgICAgIGludCBmdW5j
dGlvblN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblN0YXJ0OyB9CisgICAgICAgIHVu
c2lnbmVkIHN0YXJ0Q29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydENvbHVtbjsgfQogCiAg
ICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNjb3BlSXNGdW5jdGlvbiA9IHRydWU7CiAKICAgICBw
cml2YXRlOgotICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIGJvb2wgaW5TdHJpY3RDb250
ZXh0KTsKLSAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCBTb3VyY2VFbGVtZW50cyosIFZh
clN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2Rl
JiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgRnVuY3Rpb25Cb2R5
Tm9kZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgYm9vbCBpblN0cmljdENvbnRleHQpOwor
ICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFy
dCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCBTb3Vy
Y2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBj
b25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAg
ICAgICBJZGVudGlmaWVyIG1faWRlbnQ7CiAgICAgICAgIElkZW50aWZpZXIgbV9pbmZlcnJlZE5h
bWU7CiAgICAgICAgIEZ1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZSBtX2Z1bmN0aW9uTmFtZUlz
SW5TY29wZVRvZ2dsZTsKICAgICAgICAgUmVmUHRyPEZ1bmN0aW9uUGFyYW1ldGVycz4gbV9wYXJh
bWV0ZXJzOwogICAgICAgICBpbnQgbV9mdW5jdGlvblN0YXJ0OworICAgICAgICB1bnNpZ25lZCBt
X3N0YXJ0Q29sdW1uOwogICAgIH07CiAKICAgICBjbGFzcyBGdW5jRXhwck5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcAkocmV2aXNpb24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw5IEBAIFBhcnNlcjxMZXhlclR5
cGU+OjpQYXJzZXIoVk0qIHZtLCBjb25zdCAKICAgICBtX2xleGVyID0gYWRvcHRQdHIobmV3IExl
eGVyVHlwZSh2bSkpOwogICAgIG1fYXJlbmEgPSBtX3ZtLT5wYXJzZXJBcmVuYS5nZXQoKTsKICAg
ICBtX2xleGVyLT5zZXRDb2RlKHNvdXJjZSwgbV9hcmVuYSk7CisgICAgbV90b2tlbi5tX2xvY2F0
aW9uLnNvdXJjZU9mZnNldCA9IHNvdXJjZS5zdGFydE9mZnNldCgpOworICAgIG1fdG9rZW4ubV9s
b2NhdGlvbi5lbmRPZmZzZXQgPSBzb3VyY2Uuc3RhcnRPZmZzZXQoKTsKKyAgICBtX3Rva2VuLm1f
bG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0ID0gc291cmNlLnN0YXJ0T2Zmc2V0KCk7CiAKICAgICBt
X2Z1bmN0aW9uQ2FjaGUgPSB2bS0+YWRkU291cmNlUHJvdmlkZXJDYWNoZShzb3VyY2UucHJvdmlk
ZXIoKSk7CiAgICAgU2NvcGVSZWYgc2NvcGUgPSBwdXNoU2NvcGUoKTsKQEAgLTE2Miw2ICsxNjUs
NyBAQCB0ZW1wbGF0ZSA8U291cmNlRWxlbWVudHNNb2RlIG1vZGUsIGNsYXNzCiAgICAgY29uc3Qg
SWRlbnRpZmllciogZGlyZWN0aXZlID0gMDsKICAgICB1bnNpZ25lZCBkaXJlY3RpdmVMaXRlcmFs
TGVuZ3RoID0gMDsKICAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IG1fdG9rZW4ubV9sb2NhdGlv
bi5zdGFydE9mZnNldDsKKyAgICB1bnNpZ25lZCBzdGFydExpbmVTdGFydE9mZnNldCA9IG1fdG9r
ZW4ubV9sb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7CiAgICAgdW5zaWduZWQgb2xkTGFzdExpbmVO
dW1iZXIgPSBtX2xleGVyLT5sYXN0TGluZU51bWJlcigpOwogICAgIHVuc2lnbmVkIG9sZExpbmVO
dW1iZXIgPSBtX2xleGVyLT5saW5lTnVtYmVyKCk7CiAgICAgYm9vbCBoYXNTZXRTdHJpY3QgPSBm
YWxzZTsKQEAgLTE3Myw3ICsxNzcsNyBAQCB0ZW1wbGF0ZSA8U291cmNlRWxlbWVudHNNb2RlIG1v
ZGUsIGNsYXNzCiAgICAgICAgICAgICAgICAgICAgIHNldFN0cmljdE1vZGUoKTsKICAgICAgICAg
ICAgICAgICAgICAgaGFzU2V0U3RyaWN0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgZmFp
bElmRmFsc2UoaXNWYWxpZFN0cmljdE1vZGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1fbGV4
ZXItPnNldE9mZnNldChzdGFydE9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIG1fbGV4ZXIt
PnNldE9mZnNldChzdGFydE9mZnNldCwgc3RhcnRMaW5lU3RhcnRPZmZzZXQpOwogICAgICAgICAg
ICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgIG1fbGV4ZXItPnNldExhc3RM
aW5lTnVtYmVyKG9sZExhc3RMaW5lTnVtYmVyKTsKICAgICAgICAgICAgICAgICAgICAgbV9sZXhl
ci0+c2V0TGluZU51bWJlcihvbGRMaW5lTnVtYmVyKTsKQEAgLTI4NSw2ICsyODksOCBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAgICAgICAgIGNvbnRleHQuYWRk
VmFyKG5hbWUsIChoYXNJbml0aWFsaXplciB8fCAoIW1fYWxsb3dzSW4gJiYgbWF0Y2goSU5UT0tF
TikpKSA/IERlY2xhcmF0aW9uU3RhY2tzOjpIYXNJbml0aWFsaXplciA6IDApOwogICAgICAgICBp
ZiAoaGFzSW5pdGlhbGl6ZXIpIHsKICAgICAgICAgICAgIGludCB2YXJEaXZvdCA9IHRva2VuU3Rh
cnQoKSArIDE7CisgICAgICAgICAgICB1bnNpZ25lZCB2YXJMaW5lID0gdG9rZW5MaW5lKCk7IAor
ICAgICAgICAgICAgdW5zaWduZWQgdmFyTGluZVN0YXJ0ID0gdG9rZW5MaW5lU3RhcnQoKTsKICAg
ICAgICAgICAgIGluaXRTdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICAgICAgICAgIG5leHQoVHJl
ZUJ1aWxkZXI6OkRvbnRCdWlsZFN0cmluZ3MpOyAvLyBjb25zdW1lICc9JwogICAgICAgICAgICAg
VHJlZUV4cHJlc3Npb24gaW5pdGlhbGl6ZXIgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNv
bnRleHQpOwpAQCAtMjkyLDcgKzI5OCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3MKICAgICAgICAgICAgIGxhc3RJbml0aWFsaXplciA9IGluaXRpYWxpemVyOwog
ICAgICAgICAgICAgZmFpbElmRmFsc2UoaW5pdGlhbGl6ZXIpOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gY29udGV4dC5jcmVhdGVBc3NpZ25SZXNvbHZl
KGxvY2F0aW9uLCAqbmFtZSwgaW5pdGlhbGl6ZXIsIHZhclN0YXJ0LCB2YXJEaXZvdCwgbGFzdFRv
a2VuRW5kKCkpOworICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gbm9kZSA9IGNvbnRleHQuY3Jl
YXRlQXNzaWduUmVzb2x2ZShsb2NhdGlvbiwgKm5hbWUsIGluaXRpYWxpemVyLCB2YXJTdGFydCwg
dmFyRGl2b3QsIGxhc3RUb2tlbkVuZCgpLCB2YXJMaW5lLCB2YXJMaW5lU3RhcnQpOwogICAgICAg
ICAgICAgaWYgKCF2YXJEZWNscykKICAgICAgICAgICAgICAgICB2YXJEZWNscyA9IG5vZGU7CiAg
ICAgICAgICAgICBlbHNlCkBAIC0zMTcsNiArMzIzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlQ29uc3REZQogICAgICAgICBib29sIGhhc0luaXRpYWxpemVyID0gbWF0Y2go
RVFVQUwpOwogICAgICAgICBkZWNsYXJlVmFyaWFibGUobmFtZSk7CiAgICAgICAgIGNvbnRleHQu
YWRkVmFyKG5hbWUsIERlY2xhcmF0aW9uU3RhY2tzOjpJc0NvbnN0YW50IHwgKGhhc0luaXRpYWxp
emVyID8gRGVjbGFyYXRpb25TdGFja3M6Okhhc0luaXRpYWxpemVyIDogMCkpOworCiAgICAgICAg
IFRyZWVFeHByZXNzaW9uIGluaXRpYWxpemVyID0gMDsKICAgICAgICAgaWYgKGhhc0luaXRpYWxp
emVyKSB7CiAgICAgICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsg
Ly8gY29uc3VtZSAnPScKQEAgLTM0MSw2ICszNDgsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTdGF0ZW1lCiAgICAgaW50IGRlY2xhcmF0aW9ucyA9IDA7CiAgICAgaW50IGRl
Y2xzU3RhcnQgPSAwOwogICAgIGludCBkZWNsc0VuZCA9IDA7CisgICAgdW5zaWduZWQgZGVjbHNM
aW5lID0gMDsKKyAgICB1bnNpZ25lZCBkZWNsc0xpbmVTdGFydCA9IDA7CiAgICAgVHJlZUV4cHJl
c3Npb24gZGVjbHMgPSAwOwogICAgIGlmIChtYXRjaChWQVIpKSB7CiAgICAgICAgIC8qCkBAIC0z
NjUsNiArMzc0LDggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZQog
ICAgICAgICAKICAgICAgICAgLy8gSGFuZGxlIGZvci1pbiB3aXRoIHZhciBkZWNsYXJhdGlvbgog
ICAgICAgICBpbnQgaW5Mb2NhdGlvbiA9IHRva2VuU3RhcnQoKTsKKyAgICAgICAgdW5zaWduZWQg
aW5MaW5lID0gdG9rZW5MaW5lKCk7CisgICAgICAgIHVuc2lnbmVkIGluTGluZVN0YXJ0ID0gdG9r
ZW5MaW5lU3RhcnQoKTsKICAgICAgICAgY29uc3VtZU9yRmFpbChJTlRPS0VOKTsKICAgICAgICAg
CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7
CkBAIC0zODAsNyArMzkxLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZQogICAgICAgICBlbmRMb29wKCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7
CiAgICAgICAgIAotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGb3JJbkxvb3AobG9jYXRp
b24sIGZvckluVGFyZ2V0LCBmb3JJbkluaXRpYWxpemVyLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xz
U3RhcnQsIGluTG9jYXRpb24sIGV4cHJFbmQsIGluaXRTdGFydCwgaW5pdEVuZCwgc3RhcnRMaW5l
LCBlbmRMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9ySW5Mb29wKGxvY2F0
aW9uLCBmb3JJblRhcmdldCwgZm9ySW5Jbml0aWFsaXplciwgZXhwciwgc3RhdGVtZW50LCBkZWNs
c1N0YXJ0LCBpbkxvY2F0aW9uLCBleHByRW5kLCBpbml0U3RhcnQsIGluaXRFbmQsIHN0YXJ0TGlu
ZSwgZW5kTGluZSwgaW5MaW5lLCBpbkxpbmVTdGFydCk7CiAgICAgfQogICAgIAogICAgIGlmICgh
bWF0Y2goU0VNSUNPTE9OKSkgewpAQCAtMzg4LDYgKzM5OSw4IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWUKICAgICAgICAgZGVjbHNTdGFydCA9IHRva2VuU3RhcnQo
KTsKICAgICAgICAgZGVjbHMgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgIGRl
Y2xzRW5kID0gbGFzdFRva2VuRW5kKCk7CisgICAgICAgIGRlY2xzTGluZSA9IGxhc3RUb2tlbkxp
bmUoKTsKKyAgICAgICAgZGVjbHNMaW5lU3RhcnQgPSBsYXN0VG9rZW5MaW5lU3RhcnQoKTsKICAg
ICAgICAgbV9hbGxvd3NJbiA9IHRydWU7CiAgICAgICAgIGZhaWxJZkZhbHNlKGRlY2xzKTsKICAg
ICB9CkBAIC00MzMsNyArNDQ2LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U3RhdGVtZQogICAgIGVuZExvb3AoKTsKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogICAg
IAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckluTG9vcChsb2NhdGlvbiwgZGVjbHMsIGV4
cHIsIHN0YXRlbWVudCwgZGVjbHNTdGFydCwgZGVjbHNFbmQsIGV4cHJFbmQsIHN0YXJ0TGluZSwg
ZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9ySW5Mb29wKGxvY2F0aW9uLCBk
ZWNscywgZXhwciwgc3RhdGVtZW50LCBkZWNsc1N0YXJ0LCBkZWNsc0VuZCwgZXhwckVuZCwgc3Rh
cnRMaW5lLCBlbmRMaW5lLCBkZWNsc0xpbmUsIGRlY2xzTGluZVN0YXJ0KTsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTQ0NSwyMCArNDU4LDIyIEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWUKICAgICBpbnQgZW5kQ29sID0gdG9rZW5FbmQo
KTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgaW50IGVuZExpbmUgPSB0
b2tlbkxpbmUoKTsKKyAgICB1bnNpZ25lZCBlbmRMaW5lU3RhcnQgPSB0b2tlbkxpbmVTdGFydCgp
OwogICAgIG5leHQoKTsKICAgICAKICAgICBpZiAoYXV0b1NlbWlDb2xvbigpKSB7CiAgICAgICAg
IGZhaWxJZkZhbHNlV2l0aE1lc3NhZ2UoYnJlYWtJc1ZhbGlkKCksICInYnJlYWsnIGlzIG9ubHkg
dmFsaWQgaW5zaWRlIGEgc3dpdGNoIG9yIGxvb3Agc3RhdGVtZW50Iik7Ci0gICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUJyZWFrU3RhdGVtZW50KGxvY2F0aW9uLCBzdGFydENvbCwgZW5kQ29s
LCBzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCcmVh
a1N0YXRlbWVudChsb2NhdGlvbiwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5l
LCBlbmRMaW5lU3RhcnQpOwogICAgIH0KICAgICBtYXRjaE9yRmFpbChJREVOVCk7CiAgICAgY29u
c3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICBmYWlsSWZG
YWxzZVdpdGhOYW1lQW5kTWVzc2FnZShnZXRMYWJlbChpZGVudCksICJMYWJlbCIsIGlkZW50LT5p
bXBsKCksICJpcyBub3QgZGVmaW5lZCIpOwogICAgIGVuZENvbCA9IHRva2VuRW5kKCk7CiAgICAg
ZW5kTGluZSA9IHRva2VuTGluZSgpOworICAgIGVuZExpbmVTdGFydCA9IHRva2VuTGluZVN0YXJ0
KCk7CiAgICAgbmV4dCgpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlQnJlYWtTdGF0ZW1lbnQobG9jYXRpb24sIGlkZW50LCBzdGFy
dENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZUJyZWFrU3RhdGVtZW50KGxvY2F0aW9uLCBpZGVudCwgc3RhcnRDb2wsIGVuZENvbCwgc3Rh
cnRMaW5lLCBlbmRMaW5lLCBlbmRMaW5lU3RhcnQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
TGV4ZXJUeXBlPgpAQCAtNDcwLDExICs0ODUsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU3RhdGVtZQogICAgIGludCBlbmRDb2wgPSB0b2tlbkVuZCgpOwogICAgIGludCBz
dGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBpbnQgZW5kTGluZSA9IHRva2VuTGluZSgpOwor
ICAgIHVuc2lnbmVkIGVuZExpbmVTdGFydCA9IHRva2VuTGluZVN0YXJ0KCk7CiAgICAgbmV4dCgp
OwogICAgIAogICAgIGlmIChhdXRvU2VtaUNvbG9uKCkpIHsKICAgICAgICAgZmFpbElmRmFsc2VX
aXRoTWVzc2FnZShjb250aW51ZUlzVmFsaWQoKSwgIidjb250aW51ZScgaXMgb25seSB2YWxpZCBp
bnNpZGUgYSBsb29wIHN0YXRlbWVudCIpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVD
b250aW51ZVN0YXRlbWVudChsb2NhdGlvbiwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBl
bmRMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ29udGludWVTdGF0ZW1lbnQo
bG9jYXRpb24sIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSwgZW5kTGluZVN0
YXJ0KTsKICAgICB9CiAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwogICAgIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CkBAIC00ODMsOSArNDk5LDEwIEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWUKICAgICBmYWlsSWZGYWxzZVdp
dGhNZXNzYWdlKGxhYmVsLT5tX2lzTG9vcCwgIidjb250aW51ZScgaXMgb25seSB2YWxpZCBpbnNp
ZGUgYSBsb29wIHN0YXRlbWVudCIpOwogICAgIGVuZENvbCA9IHRva2VuRW5kKCk7CiAgICAgZW5k
TGluZSA9IHRva2VuTGluZSgpOworICAgIGVuZExpbmVTdGFydCA9IHRva2VuTGluZVN0YXJ0KCk7
CiAgICAgbmV4dCgpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlQ29udGludWVTdGF0ZW1lbnQobG9jYXRpb24sIGlkZW50LCBzdGFy
dENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGxvY2F0aW9uLCBpZGVudCwgc3RhcnRDb2wsIGVuZENvbCwg
c3RhcnRMaW5lLCBlbmRMaW5lLCBlbmRMaW5lU3RhcnQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGV4ZXJUeXBlPgpAQCAtNDk4LDYgKzUxNSw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVN0YXRlbWUKICAgICBpbnQgZW5kTGluZSA9IHN0YXJ0TGluZTsKICAgICBpbnQg
c3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgaW50IGVuZCA9IHRva2VuRW5kKCk7CisgICAgdW5z
aWduZWQgZGl2b3RMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgdW5zaWduZWQgZGl2b3RMaW5lU3Rh
cnQgPSB0b2tlbkxpbmVTdGFydCgpOwogICAgIG5leHQoKTsKICAgICAvLyBXZSBkbyB0aGUgYXV0
byBzZW1pY29sb24gY2hlY2sgYmVmb3JlIGF0dGVtcHRpbmcgdG8gcGFyc2UgYW4gZXhwcmVzc2lv
bgogICAgIC8vIGFzIHdlIG5lZWQgdG8gZW5zdXJlIHRoZSBhIGxpbmUgYnJlYWsgYWZ0ZXIgdGhl
IHJldHVybiBjb3JyZWN0bHkgdGVybWluYXRlcwpAQCAtNTA1LDE0ICs1MjQsMTYgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZQogICAgIGlmIChtYXRjaChTRU1JQ09M
T04pKQogICAgICAgICBlbmRMaW5lICA9IHRva2VuTGluZSgpOwogICAgIGlmIChhdXRvU2VtaUNv
bG9uKCkpCi0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVJldHVyblN0YXRlbWVudChsb2Nh
dGlvbiwgMCwgc3RhcnQsIGVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50KGxvY2F0aW9uLCAwLCBzdGFydCwgZW5kLCBz
dGFydExpbmUsIGVuZExpbmUsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogICAgIFRyZWVF
eHByZXNzaW9uIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFs
c2UoZXhwcik7CiAgICAgZW5kID0gbGFzdFRva2VuRW5kKCk7CisgICAgZGl2b3RMaW5lID0gbGFz
dFRva2VuTGluZSgpOworICAgIGRpdm90TGluZVN0YXJ0ID0gbGFzdFRva2VuTGluZVN0YXJ0KCk7
CiAgICAgaWYgKG1hdGNoKFNFTUlDT0xPTikpCiAgICAgICAgIGVuZExpbmUgID0gdG9rZW5MaW5l
KCk7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKLSAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQobG9jYXRpb24sIGV4cHIsIHN0YXJ0LCBlbmQsIHN0YXJ0
TGluZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50
KGxvY2F0aW9uLCBleHByLCBzdGFydCwgZW5kLCBzdGFydExpbmUsIGVuZExpbmUsIGRpdm90TGlu
ZSwgZGl2b3RMaW5lU3RhcnQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpA
QCAtNTI5LDEwICs1NTAsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZQogICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7
CiAgICAgZmFpbElmRmFsc2UoZXhwcik7CiAgICAgaW50IGVFbmQgPSBsYXN0VG9rZW5FbmQoKTsK
KyAgICB1bnNpZ25lZCBkaXZvdExpbmUgPSBsYXN0VG9rZW5MaW5lKCk7CisgICAgdW5zaWduZWQg
ZGl2b3RMaW5lU3RhcnQgPSBsYXN0VG9rZW5MaW5lU3RhcnQoKTsKICAgICBpbnQgZW5kTGluZSA9
IHRva2VuTGluZSgpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7CiAgICAgCi0g
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlVGhyb3dTdGF0ZW1lbnQobG9jYXRpb24sIGV4cHIsIGVT
dGFydCwgZUVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVUaHJvd1N0YXRlbWVudChsb2NhdGlvbiwgZXhwciwgZVN0YXJ0LCBlRW5kLCBzdGFydExpbmUs
IGVuZExpbmUsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGV4ZXJUeXBlPgpAQCAtNTQ5LDE0ICs1NzIsMTUgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZQogICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJzZUV4
cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UoZXhwcik7CiAgICAgaW50IGVuZCA9
IGxhc3RUb2tlbkVuZCgpOwotICAgIAorICAgIHVuc2lnbmVkIGRpdm90TGluZSA9IGxhc3RUb2tl
bkxpbmUoKTsKKyAgICB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCA9IGxhc3RUb2tlbkxpbmVTdGFy
dCgpOwogICAgIGludCBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgY29uc3VtZU9yRmFpbChD
TE9TRVBBUkVOKTsKICAgICBjb25zdCBJZGVudGlmaWVyKiB1bnVzZWQgPSAwOwogICAgIFRyZWVT
dGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKICAg
ICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogICAgIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZVdpdGhTdGF0ZW1lbnQobG9jYXRpb24sIGV4cHIsIHN0YXRlbWVudCwgc3RhcnQsIGVuZCwgc3Rh
cnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVXaXRoU3RhdGVtZW50
KGxvY2F0aW9uLCBleHByLCBzdGF0ZW1lbnQsIHN0YXJ0LCBlbmQsIHN0YXJ0TGluZSwgZW5kTGlu
ZSwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+CkBAIC03OTUsMTkgKzgxOSwyMCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJU
eXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keShUcmVlQnVpbGRlciYgY29udGV4dCkKIHsK
ICAgICBKU1Rva2VuTG9jYXRpb24gc3RhcnRMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAg
IHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICBuZXh0KCk7CiAKICAg
ICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpCi0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1
bmN0aW9uQm9keShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0cmljdE1vZGUoKSk7
CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShzdGFydExvY2F0aW9u
LCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBzdHJpY3RNb2RlKCkpOwogICAgIERlcHRo
TWFuYWdlciBzdGF0ZW1lbnREZXB0aCgmbV9zdGF0ZW1lbnREZXB0aCk7CiAgICAgbV9zdGF0ZW1l
bnREZXB0aCA9IDA7CiAgICAgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZ1bmN0aW9uQm9keUJ1aWxk
ZXIgYm9keUJ1aWxkZXIoY29uc3RfY2FzdDxWTSo+KG1fdm0pLCBtX2xleGVyLmdldCgpKTsKICAg
ICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzPENoZWNrRm9yU3RyaWN0TW9kZT4oYm9k
eUJ1aWxkZXIpKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkoc3RhcnRM
b2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdHJpY3RNb2RlKCkpOworICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0
YXJ0Q29sdW1uLCBzdHJpY3RNb2RlKCkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJU
eXBlPgotdGVtcGxhdGUgPEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgYm9vbCBu
YW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgY2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJ
ZGVudGlmaWVyKiYgbmFtZSwgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QmIHBhcmFtZXRlcnMsIFRy
ZWVGdW5jdGlvbkJvZHkmIGJvZHksIGludCYgb3BlbkJyYWNlUG9zLCBpbnQmIGNsb3NlQnJhY2VQ
b3MsIGludCYgYm9keVN0YXJ0TGluZSkKK3RlbXBsYXRlIDxGdW5jdGlvblJlcXVpcmVtZW50cyBy
ZXF1aXJlbWVudHMsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIGNsYXNzIFRyZWVCdWls
ZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRl
ciYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciomIG5hbWUsIFRyZWVGb3JtYWxQYXJhbWV0ZXJM
aXN0JiBwYXJhbWV0ZXJzLCBUcmVlRnVuY3Rpb25Cb2R5JiBib2R5LCB1bnNpZ25lZCYgb3BlbkJy
YWNlT2Zmc2V0LCB1bnNpZ25lZCYgY2xvc2VCcmFjZU9mZnNldCwgaW50JiBib2R5U3RhcnRMaW5l
LCB1bnNpZ25lZCYgYm9keVN0YXJ0Q29sdW1uKQogewogICAgIEF1dG9Qb3BTY29wZVJlZiBmdW5j
dGlvblNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKICAgICBmdW5jdGlvblNjb3BlLT5zZXRJc0Z1
bmN0aW9uKCk7CkBAIC04MjcsMjYgKzg1MiwzMyBAQCB0ZW1wbGF0ZSA8RnVuY3Rpb25SZXF1aXJl
bWVudHMgcmVxdWlyZW1lCiAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOKTsKICAgICBtYXRj
aE9yRmFpbChPUEVOQlJBQ0UpOwogICAgIAotICAgIG9wZW5CcmFjZVBvcyA9IG1fdG9rZW4ubV9k
YXRhLmludFZhbHVlOworICAgIG9wZW5CcmFjZU9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNl
dDsKICAgICBib2R5U3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgYm9keVN0YXJ0Q29sdW1u
ID0gbV90b2tlbi5tX2RhdGEub2Zmc2V0IC0gbV90b2tlbi5tX2RhdGEubGluZVN0YXJ0T2Zmc2V0
OwogICAgIEpTVG9rZW5Mb2NhdGlvbiBzdGFydExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAg
ICAgCiAgICAgLy8gSWYgd2Uga25vdyBhYm91dCB0aGlzIGZ1bmN0aW9uIGFscmVhZHksIHdlIGNh
biB1c2UgdGhlIGNhY2hlZCBpbmZvIGFuZCBza2lwIHRoZSBwYXJzZXIgdG8gdGhlIGVuZCBvZiB0
aGUgZnVuY3Rpb24uCi0gICAgaWYgKGNvbnN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKiBjYWNo
ZWRJbmZvID0gVHJlZUJ1aWxkZXI6OkNhblVzZUZ1bmN0aW9uQ2FjaGUgPyBmaW5kQ2FjaGVkRnVu
Y3Rpb25JbmZvKG9wZW5CcmFjZVBvcykgOiAwKSB7CisgICAgaWYgKGNvbnN0IFNvdXJjZVByb3Zp
ZGVyQ2FjaGVJdGVtKiBjYWNoZWRJbmZvID0gVHJlZUJ1aWxkZXI6OkNhblVzZUZ1bmN0aW9uQ2Fj
aGUgPyBmaW5kQ2FjaGVkRnVuY3Rpb25JbmZvKG9wZW5CcmFjZU9mZnNldCkgOiAwKSB7CiAgICAg
ICAgIC8vIElmIHdlJ3JlIGluIGEgc3RyaWN0IGNvbnRleHQsIHRoZSBjYWNoZWQgZnVuY3Rpb24g
aW5mbyBtdXN0IHNheSBpdCB3YXMgc3RyaWN0IHRvby4KICAgICAgICAgQVNTRVJUKCFzdHJpY3RN
b2RlKCkgfHwgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSk7Ci0gICAgICAgIEpTVG9rZW5Mb2NhdGlv
biBlbmRMb2NhdGlvbjsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGVuZExvY2F0aW9uKG1fc291
cmNlLT5zdGFydE9mZnNldCgpKTsKKwogICAgICAgICBlbmRMb2NhdGlvbi5saW5lID0gY2FjaGVk
SW5mby0+Y2xvc2VCcmFjZUxpbmU7Ci0gICAgICAgIGVuZExvY2F0aW9uLmNoYXJQb3NpdGlvbiA9
IGNhY2hlZEluZm8tPmNsb3NlQnJhY2VQb3M7Ci0gICAgICAgIGJvZHkgPSBjb250ZXh0LmNyZWF0
ZUZ1bmN0aW9uQm9keShzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgY2FjaGVkSW5mby0+c3Ry
aWN0TW9kZSk7CisgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0ID0gY2FjaGVkSW5mby0+
Y2xvc2VCcmFjZU9mZnNldDsKKyAgICAgICAgZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0ID0g
Y2FjaGVkSW5mby0+Y2xvc2VCcmFjZUxpbmVTdGFydE9mZnNldDsKKyAgICAgICAgQVNTRVJUKGVu
ZExvY2F0aW9uLnN0YXJ0T2Zmc2V0ID49IGVuZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CisK
KyAgICAgICAgYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KHN0YXJ0TG9jYXRpb24s
IGVuZExvY2F0aW9uLCBib2R5U3RhcnRDb2x1bW4sIGNhY2hlZEluZm8tPnN0cmljdE1vZGUpOwog
ICAgICAgICAKICAgICAgICAgZnVuY3Rpb25TY29wZS0+cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRl
ckNhY2hlKGNhY2hlZEluZm8pOwogICAgICAgICBmYWlsSWZGYWxzZShwb3BTY29wZShmdW5jdGlv
blNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKSk7CiAgICAgICAgIAot
ICAgICAgICBjbG9zZUJyYWNlUG9zID0gY2FjaGVkSW5mby0+Y2xvc2VCcmFjZVBvczsKKyAgICAg
ICAgY2xvc2VCcmFjZU9mZnNldCA9IGNhY2hlZEluZm8tPmNsb3NlQnJhY2VPZmZzZXQ7CisKICAg
ICAgICAgY29udGV4dC5zZXRGdW5jdGlvblN0YXJ0KGJvZHksIGZ1bmN0aW9uU3RhcnQpOwogICAg
ICAgICBtX3Rva2VuID0gY2FjaGVkSW5mby0+Y2xvc2VCcmFjZVRva2VuKCk7Ci0gICAgICAgIG1f
bGV4ZXItPnNldE9mZnNldChtX3Rva2VuLm1fbG9jYXRpb24uZW5kT2Zmc2V0KTsKKworICAgICAg
ICBtX2xleGVyLT5zZXRPZmZzZXQobV90b2tlbi5tX2xvY2F0aW9uLmVuZE9mZnNldCwgbV90b2tl
bi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIG1fbGV4ZXItPnNldExpbmVO
dW1iZXIobV90b2tlbi5tX2xvY2F0aW9uLmxpbmUpOwogICAgICAgICAKICAgICAgICAgbmV4dCgp
OwpAQCAtODU5LDIwICs4OTEsMjQgQEAgdGVtcGxhdGUgPEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJl
cXVpcmVtZQogICAgICAgICBmYWlsSWZUcnVlV2l0aE5hbWVBbmRNZXNzYWdlKG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqbmFtZSwgIkZ1bmN0aW9uIG5hbWUiLCBuYW1lLT5pbXBs
KCksICJpcyBub3QgdmFsaWQgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgZmFpbElmVHJ1ZVdp
dGhOYW1lQW5kTWVzc2FnZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09ICpuYW1lLCAiRnVu
Y3Rpb24gbmFtZSIsIG5hbWUtPmltcGwoKSwgImlzIG5vdCB2YWxpZCBpbiBzdHJpY3QgbW9kZSIp
OwogICAgIH0KLSAgICBjbG9zZUJyYWNlUG9zID0gbV90b2tlbi5tX2RhdGEuaW50VmFsdWU7Cisg
ICAgY2xvc2VCcmFjZU9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsKKyAgICB1bnNpZ25l
ZCBjbG9zZUJyYWNlTGluZSA9IG1fdG9rZW4ubV9kYXRhLmxpbmU7CisgICAgdW5zaWduZWQgY2xv
c2VCcmFjZUxpbmVTdGFydE9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLmxpbmVTdGFydE9mZnNldDsK
ICAgICAKICAgICAvLyBDYWNoZSB0aGUgdG9rZW5pemVyIHN0YXRlIGFuZCB0aGUgZnVuY3Rpb24g
c2NvcGUgdGhlIGZpcnN0IHRpbWUgdGhlIGZ1bmN0aW9uIGlzIHBhcnNlZC4KICAgICAvLyBBbnkg
ZnV0dXJlIHJlcGFyc2luZyBjYW4gdGhlbiBza2lwIHRoZSBmdW5jdGlvbi4KICAgICBzdGF0aWMg
Y29uc3QgaW50IG1pbmltdW1GdW5jdGlvbkxlbmd0aFRvQ2FjaGUgPSAxNjsKICAgICBPd25QdHI8
U291cmNlUHJvdmlkZXJDYWNoZUl0ZW0+IG5ld0luZm87Ci0gICAgaW50IGZ1bmN0aW9uTGVuZ3Ro
ID0gY2xvc2VCcmFjZVBvcyAtIG9wZW5CcmFjZVBvczsKKyAgICBpbnQgZnVuY3Rpb25MZW5ndGgg
PSBjbG9zZUJyYWNlT2Zmc2V0IC0gb3BlbkJyYWNlT2Zmc2V0OwogICAgIGlmIChUcmVlQnVpbGRl
cjo6Q2FuVXNlRnVuY3Rpb25DYWNoZSAmJiBtX2Z1bmN0aW9uQ2FjaGUgJiYgZnVuY3Rpb25MZW5n
dGggPiBtaW5pbXVtRnVuY3Rpb25MZW5ndGhUb0NhY2hlKSB7CiAgICAgICAgIFNvdXJjZVByb3Zp
ZGVyQ2FjaGVJdGVtQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgICAgIHBhcmFt
ZXRlcnMuZnVuY3Rpb25TdGFydCA9IGZ1bmN0aW9uU3RhcnQ7Ci0gICAgICAgIHBhcmFtZXRlcnMu
Y2xvc2VCcmFjZUxpbmUgPSBtX3Rva2VuLm1fbG9jYXRpb24ubGluZTsKLSAgICAgICAgcGFyYW1l
dGVycy5jbG9zZUJyYWNlUG9zID0gY2xvc2VCcmFjZVBvczsKKyAgICAgICAgcGFyYW1ldGVycy5j
bG9zZUJyYWNlTGluZSA9IGNsb3NlQnJhY2VMaW5lOworICAgICAgICBwYXJhbWV0ZXJzLmNsb3Nl
QnJhY2VPZmZzZXQgPSBjbG9zZUJyYWNlT2Zmc2V0OworICAgICAgICBwYXJhbWV0ZXJzLmNsb3Nl
QnJhY2VMaW5lU3RhcnRPZmZzZXQgPSBjbG9zZUJyYWNlTGluZVN0YXJ0T2Zmc2V0OwogICAgICAg
ICBmdW5jdGlvblNjb3BlLT5maWxsUGFyYW1ldGVyc0ZvclNvdXJjZVByb3ZpZGVyQ2FjaGUocGFy
YW1ldGVycyk7CiAgICAgICAgIG5ld0luZm8gPSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbTo6Y3Jl
YXRlKHBhcmFtZXRlcnMpOworCiAgICAgfQogICAgIGNvbnRleHQuc2V0RnVuY3Rpb25TdGFydChi
b2R5LCBmdW5jdGlvblN0YXJ0KTsKICAgICAKQEAgLTg4MCw3ICs5MTYsNyBAQCB0ZW1wbGF0ZSA8
RnVuY3Rpb25SZXF1aXJlbWVudHMgcmVxdWlyZW1lCiAgICAgbWF0Y2hPckZhaWwoQ0xPU0VCUkFD
RSk7CiAgICAgCiAgICAgaWYgKG5ld0luZm8pCi0gICAgICAgIG1fZnVuY3Rpb25DYWNoZS0+YWRk
KG9wZW5CcmFjZVBvcywgbmV3SW5mby5yZWxlYXNlKCkpOworICAgICAgICBtX2Z1bmN0aW9uQ2Fj
aGUtPmFkZChvcGVuQnJhY2VPZmZzZXQsIG5ld0luZm8ucmVsZWFzZSgpKTsKICAgICAKICAgICBu
ZXh0KCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC04OTUsMjYgKzkzMSwzMSBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiAgICAgY29uc3QgSWRlbnRpZmllciogbmFt
ZSA9IDA7CiAgICAgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgcGFyYW1ldGVycyA9IDA7CiAgICAg
VHJlZUZ1bmN0aW9uQm9keSBib2R5ID0gMDsKLSAgICBpbnQgb3BlbkJyYWNlUG9zID0gMDsKLSAg
ICBpbnQgY2xvc2VCcmFjZVBvcyA9IDA7CisgICAgdW5zaWduZWQgb3BlbkJyYWNlT2Zmc2V0ID0g
MDsKKyAgICB1bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0ID0gMDsKICAgICBpbnQgYm9keVN0YXJ0
TGluZSA9IDA7Ci0gICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvPEZ1bmN0aW9uTmVl
ZHNOYW1lLCB0cnVlPihjb250ZXh0LCBuYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQ
b3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpKSk7CisgICAgdW5zaWduZWQgYm9keVN0
YXJ0Q29sdW1uID0gMDsKKyAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm88RnVuY3Rp
b25OZWVkc05hbWUsIHRydWU+KGNvbnRleHQsIG5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5C
cmFjZU9mZnNldCwgY2xvc2VCcmFjZU9mZnNldCwgYm9keVN0YXJ0TGluZSwgYm9keVN0YXJ0Q29s
dW1uKSkpOwogICAgIGZhaWxJZkZhbHNlKG5hbWUpOwogICAgIGZhaWxJZkZhbHNlSWZTdHJpY3Qo
ZGVjbGFyZVZhcmlhYmxlKG5hbWUpKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jRGVj
bFN0YXRlbWVudChsb2NhdGlvbiwgbmFtZSwgYm9keSwgcGFyYW1ldGVycywgb3BlbkJyYWNlUG9z
LCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKKyAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVGdW5jRGVjbFN0YXRlbWVudChsb2NhdGlvbiwgbmFtZSwgYm9keSwgcGFy
YW1ldGVycywgb3BlbkJyYWNlT2Zmc2V0LCBjbG9zZUJyYWNlT2Zmc2V0LCBib2R5U3RhcnRMaW5l
LCBtX2xhc3RMaW5lLCBib2R5U3RhcnRDb2x1bW4pOwogfQogCiBzdHJ1Y3QgTGFiZWxJbmZvIHsK
LSAgICBMYWJlbEluZm8oY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGludCBzdGFydCwgaW50IGVu
ZCkKKyAgICBMYWJlbEluZm8oY29uc3QgSWRlbnRpZmllciogaWRlbnQsIHVuc2lnbmVkIHN0YXJ0
LCB1bnNpZ25lZCBlbmQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3Rh
cnQpCiAgICAgOiBtX2lkZW50KGlkZW50KQogICAgICwgbV9zdGFydChzdGFydCkKICAgICAsIG1f
ZW5kKGVuZCkKKyAgICAsIG1fZGl2b3RMaW5lKGRpdm90TGluZSkKKyAgICAsIG1fZGl2b3RMaW5l
U3RhcnQoZGl2b3RMaW5lU3RhcnQpCiAgICAgewogICAgIH0KICAgICAKICAgICBjb25zdCBJZGVu
dGlmaWVyKiBtX2lkZW50OwotICAgIGludCBtX3N0YXJ0OwotICAgIGludCBtX2VuZDsKKyAgICB1
bnNpZ25lZCBtX3N0YXJ0OworICAgIHVuc2lnbmVkIG1fZW5kOworICAgIHVuc2lnbmVkIG1fZGl2
b3RMaW5lOworICAgIHVuc2lnbmVkIG1fZGl2b3RMaW5lU3RhcnQ7CiB9OwogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtOTI1LDEwICs5NjYsMTAgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZQogICAgICAqIHNwZWNpYWwgY2FzZSB0aGF0IGxvb2tz
IGZvciBhIGNvbG9uIGFzIHRoZSBuZXh0IGNoYXJhY3RlciBpbiB0aGUgaW5wdXQuCiAgICAgICov
CiAgICAgVmVjdG9yPExhYmVsSW5mbz4gbGFiZWxzOwotICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbjsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24obV9zb3VyY2UtPnN0YXJ0T2Zmc2V0
KCkpOwogICAgIGRvIHsKICAgICAgICAgaW50IHN0YXJ0ID0gdG9rZW5TdGFydCgpOwotICAgICAg
ICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgICAgIGludCBzdGFydGluZ0xpbmUg
PSB0b2tlbkxpbmUoKTsKICAgICAgICAgbG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAg
ICAgIGlmICghbmV4dFRva2VuSXNDb2xvbigpKSB7CiAgICAgICAgICAgICAvLyBJZiB3ZSBoaXQg
dGhpcyBwYXRoIHdlJ3JlIG1ha2luZyBhIGV4cHJlc3Npb24gc3RhdGVtZW50LCB3aGljaApAQCAt
OTM3LDEwICs5NzgsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVt
ZQogICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gZXhwcmVzc2lvbiA9IHBhcnNlRXhwcmVzc2lv
bihjb250ZXh0KTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGV4cHJlc3Npb24pOwogICAgICAg
ICAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKLSAgICAgICAgICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZUV4cHJTdGF0ZW1lbnQobG9jYXRpb24sIGV4cHJlc3Npb24sIHN0YXJ0TGlu
ZSwgbV9sYXN0TGluZSk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFeHByU3Rh
dGVtZW50KGxvY2F0aW9uLCBleHByZXNzaW9uLCBzdGFydGluZ0xpbmUsIG1fbGFzdExpbmUpOwog
ICAgICAgICB9CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2Rh
dGEuaWRlbnQ7CiAgICAgICAgIGludCBlbmQgPSB0b2tlbkVuZCgpOworICAgICAgICB1bnNpZ25l
ZCBkaXZvdExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICAgICAgdW5zaWduZWQgZGl2b3RMaW5lU3Rh
cnQgPSB0b2tlbkxpbmVTdGFydCgpOwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGNvbnN1bWVP
ckZhaWwoQ09MT04pOwogICAgICAgICBpZiAoIW1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZCkgewpA
QCAtOTQ5LDcgKzk5Miw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRl
bWUKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGFiZWxzLnNpemUoKTsgaSsr
KQogICAgICAgICAgICAgICAgIGZhaWxJZlRydWUoaWRlbnQtPmltcGwoKSA9PSBsYWJlbHNbaV0u
bV9pZGVudC0+aW1wbCgpKTsKICAgICAgICAgICAgIGZhaWxJZlRydWUoZ2V0TGFiZWwoaWRlbnQp
KTsKLSAgICAgICAgICAgIGxhYmVscy5hcHBlbmQoTGFiZWxJbmZvKGlkZW50LCBzdGFydCwgZW5k
KSk7CisgICAgICAgICAgICBsYWJlbHMuYXBwZW5kKExhYmVsSW5mbyhpZGVudCwgc3RhcnQsIGVu
ZCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCkpOwogICAgICAgICB9CiAgICAgfSB3aGlsZSAo
bWF0Y2goSURFTlQpKTsKICAgICBib29sIGlzTG9vcCA9IGZhbHNlOwpAQCAtOTc2LDcgKzEwMTks
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiAgICAgZmFpbElm
RmFsc2Uoc3RhdGVtZW50KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxhYmVscy5zaXpl
KCk7IGkrKykgewogICAgICAgICBjb25zdCBMYWJlbEluZm8mIGluZm8gPSBsYWJlbHNbbGFiZWxz
LnNpemUoKSAtIGkgLSAxXTsKLSAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5jcmVhdGVMYWJl
bFN0YXRlbWVudChsb2NhdGlvbiwgaW5mby5tX2lkZW50LCBzdGF0ZW1lbnQsIGluZm8ubV9zdGFy
dCwgaW5mby5tX2VuZCk7CisgICAgICAgIHN0YXRlbWVudCA9IGNvbnRleHQuY3JlYXRlTGFiZWxT
dGF0ZW1lbnQobG9jYXRpb24sIGluZm8ubV9pZGVudCwgc3RhdGVtZW50LCBpbmZvLm1fc3RhcnQs
IGluZm8ubV9lbmQsIGluZm8ubV9kaXZvdExpbmUsIGluZm8ubV9kaXZvdExpbmVTdGFydCk7CiAg
ICAgfQogICAgIHJldHVybiBzdGF0ZW1lbnQ7CiB9CkBAIC0xMTA2LDYgKzExNDksOCBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVHJlZUJ1aWxkZXI+IFRyZWVFeHByCiB7CiAgICAgZmFpbElmU3RhY2tP
dmVyZmxvdygpOwogICAgIGludCBzdGFydCA9IHRva2VuU3RhcnQoKTsKKyAgICB1bnNpZ25lZCBs
aW5lID0gdG9rZW5MaW5lKCk7CisgICAgdW5zaWduZWQgbGluZVN0YXJ0ID0gdG9rZW5MaW5lU3Rh
cnQoKTsKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAg
ICBpbnQgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCA9IG1fYXNzaWdubWVudENvdW50OwogICAgIGlu
dCBpbml0aWFsTm9uTEhTQ291bnQgPSBtX25vbkxIU0NvdW50OwpAQCAtMTEzNiw4ICsxMTgxLDEw
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUcmVlQnVpbGRlcj4gVHJlZUV4cHIKICAgICAgICAgfQog
ICAgICAgICBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAgICAgICAgaGFkQXNzaWdu
bWVudCA9IHRydWU7Ci0gICAgICAgIGNvbnRleHQuYXNzaWdubWVudFN0YWNrQXBwZW5kKGFzc2ln
bm1lbnRTdGFjaywgbGhzLCBzdGFydCwgdG9rZW5TdGFydCgpLCBtX2Fzc2lnbm1lbnRDb3VudCwg
b3ApOworICAgICAgICBjb250ZXh0LmFzc2lnbm1lbnRTdGFja0FwcGVuZChhc3NpZ25tZW50U3Rh
Y2ssIGxocywgc3RhcnQsIHRva2VuU3RhcnQoKSwgbGluZSwgbGluZVN0YXJ0LCBtX2Fzc2lnbm1l
bnRDb3VudCwgb3ApOwogICAgICAgICBzdGFydCA9IHRva2VuU3RhcnQoKTsKKyAgICAgICAgbGlu
ZSA9IHRva2VuTGluZSgpOworICAgICAgICBsaW5lU3RhcnQgPSB0b2tlbkxpbmVTdGFydCgpOwog
ICAgICAgICBtX2Fzc2lnbm1lbnRDb3VudCsrOwogICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpE
b250QnVpbGRTdHJpbmdzKTsKICAgICAgICAgaWYgKHN0cmljdE1vZGUoKSAmJiBtX2xhc3RJZGVu
dGlmaWVyICYmIGNvbnRleHQuaXNSZXNvbHZlKGxocykpIHsKQEAgLTEyMTAsNyArMTI1Nyw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3MKICAgICAgICAgVHJlZUV4
cHJlc3Npb24gY3VycmVudCA9IHBhcnNlVW5hcnlFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAg
ICBmYWlsSWZGYWxzZShjdXJyZW50KTsKICAgICAgICAgCi0gICAgICAgIGNvbnRleHQuYXBwZW5k
QmluYXJ5RXhwcmVzc2lvbkluZm8ob3BlcmFuZFN0YWNrRGVwdGgsIGN1cnJlbnQsIGV4cHJTdGFy
dCwgbGFzdFRva2VuRW5kKCksIGxhc3RUb2tlbkVuZCgpLCBpbml0aWFsQXNzaWdubWVudHMgIT0g
bV9hc3NpZ25tZW50Q291bnQpOworICAgICAgICBjb250ZXh0LmFwcGVuZEJpbmFyeUV4cHJlc3Np
b25JbmZvKG9wZXJhbmRTdGFja0RlcHRoLCBjdXJyZW50LCBleHByU3RhcnQsIGxhc3RUb2tlbkVu
ZCgpLCBsYXN0VG9rZW5FbmQoKSwgbGFzdFRva2VuTGluZSgpLCBsYXN0VG9rZW5MaW5lU3RhcnQo
KSwgaW5pdGlhbEFzc2lnbm1lbnRzICE9IG1fYXNzaWdubWVudENvdW50KTsKICAgICAgICAgaW50
IHByZWNlZGVuY2UgPSBpc0JpbmFyeU9wZXJhdG9yKG1fdG9rZW4ubV90eXBlKTsKICAgICAgICAg
aWYgKCFwcmVjZWRlbmNlKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjY3LDkgKzEzMTQsMTAg
QEAgdGVtcGxhdGUgPGJvb2wgY29tcGxldGUsIGNsYXNzIFRyZWVCdWlsZAogICAgICAgICBjb25z
dCBJZGVudGlmaWVyKiBhY2Nlc3Nvck5hbWUgPSAwOwogICAgICAgICBUcmVlRm9ybWFsUGFyYW1l
dGVyTGlzdCBwYXJhbWV0ZXJzID0gMDsKICAgICAgICAgVHJlZUZ1bmN0aW9uQm9keSBib2R5ID0g
MDsKLSAgICAgICAgaW50IG9wZW5CcmFjZVBvcyA9IDA7Ci0gICAgICAgIGludCBjbG9zZUJyYWNl
UG9zID0gMDsKKyAgICAgICAgdW5zaWduZWQgb3BlbkJyYWNlT2Zmc2V0ID0gMDsKKyAgICAgICAg
dW5zaWduZWQgY2xvc2VCcmFjZU9mZnNldCA9IDA7CiAgICAgICAgIGludCBib2R5U3RhcnRMaW5l
ID0gMDsKKyAgICAgICAgdW5zaWduZWQgYm9keVN0YXJ0Q29sdW1uID0gMDsKICAgICAgICAgUHJv
cGVydHlOb2RlOjpUeXBlIHR5cGU7CiAgICAgICAgIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVy
dHlOYW1lcy0+Z2V0KQogICAgICAgICAgICAgdHlwZSA9IFByb3BlcnR5Tm9kZTo6R2V0dGVyOwpA
QCAtMTI4NywxMCArMTMzNSwxMCBAQCB0ZW1wbGF0ZSA8Ym9vbCBjb21wbGV0ZSwgY2xhc3MgVHJl
ZUJ1aWxkCiAgICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIGZhaWxJZkZh
bHNlKChwYXJzZUZ1bmN0aW9uSW5mbzxGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBmYWxzZT4oY29u
dGV4dCwgYWNjZXNzb3JOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3Nl
QnJhY2VQb3MsIGJvZHlTdGFydExpbmUpKSk7CisgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1
bmN0aW9uSW5mbzxGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBmYWxzZT4oY29udGV4dCwgYWNjZXNz
b3JOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZz
ZXQsIGJvZHlTdGFydExpbmUsIGJvZHlTdGFydENvbHVtbikpKTsKICAgICAgICAgaWYgKHN0cmlu
Z1Byb3BlcnR5TmFtZSkKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0LnRlbXBsYXRlIGNyZWF0
ZUdldHRlck9yU2V0dGVyUHJvcGVydHk8Y29tcGxldGU+KGxvY2F0aW9uLCB0eXBlLCBzdHJpbmdQ
cm9wZXJ0eU5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBv
cywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LnRl
bXBsYXRlIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHk8Y29tcGxldGU+KGNvbnN0X2Nhc3Q8
Vk0qPihtX3ZtKSwgbG9jYXRpb24sIHR5cGUsIG51bWVyaWNQcm9wZXJ0eU5hbWUsIHBhcmFtZXRl
cnMsIGJvZHksIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9s
YXN0TGluZSk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBjcmVhdGVHZXR0
ZXJPclNldHRlclByb3BlcnR5PGNvbXBsZXRlPihsb2NhdGlvbiwgdHlwZSwgc3RyaW5nUHJvcGVy
dHlOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZz
ZXQsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUsIGJvZHlTdGFydENvbHVtbik7CisgICAgICAg
IHJldHVybiBjb250ZXh0LnRlbXBsYXRlIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHk8Y29t
cGxldGU+KGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbG9jYXRpb24sIHR5cGUsIG51bWVyaWNQcm9w
ZXJ0eU5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZU9mZnNldCwgY2xvc2VCcmFjZU9m
ZnNldCwgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSwgYm9keVN0YXJ0Q29sdW1uKTsKICAgICB9
CiAgICAgY2FzZSBOVU1CRVI6IHsKICAgICAgICAgZG91YmxlIHByb3BlcnR5TmFtZSA9IG1fdG9r
ZW4ubV9kYXRhLmRvdWJsZVZhbHVlOwpAQCAtMTMwOSw3ICsxMzU3LDggQEAgdGVtcGxhdGUgPGJv
b2wgY29tcGxldGUsIGNsYXNzIFRyZWVCdWlsZAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlw
ZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlT2JqZWN0TGl0ZXJhbChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKLSAg
ICBpbnQgc3RhcnRPZmZzZXQgPSBtX3Rva2VuLm1fZGF0YS5pbnRWYWx1ZTsKKyAgICBpbnQgc3Rh
cnRPZmZzZXQgPSBtX3Rva2VuLm1fZGF0YS5vZmZzZXQ7CisgICAgdW5zaWduZWQgb2xkTGluZVN0
YXJ0T2Zmc2V0ID0gbV9sZXhlci0+Y3VycmVudExpbmVTdGFydE9mZnNldCgpOwogICAgIHVuc2ln
bmVkIG9sZExhc3RMaW5lTnVtYmVyID0gbV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKTsKICAgICB1
bnNpZ25lZCBvbGRMaW5lTnVtYmVyID0gbV9sZXhlci0+bGluZU51bWJlcigpOwogICAgIGNvbnN1
bWVPckZhaWxXaXRoRmxhZ3MoT1BFTkJSQUNFLCBUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5n
cyk7CkBAIC0xMzI1LDcgKzEzNzQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzCiAgICAgVHJlZVByb3BlcnR5IHByb3BlcnR5ID0gcGFyc2VQcm9wZXJ0eTxmYWxz
ZT4oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UocHJvcGVydHkpOwogICAgIGlmICghbV9zeW50
YXhBbHJlYWR5VmFsaWRhdGVkICYmIGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSkgIT0gUHJvcGVy
dHlOb2RlOjpDb25zdGFudCkgewotICAgICAgICBtX2xleGVyLT5zZXRPZmZzZXQoc3RhcnRPZmZz
ZXQpOworICAgICAgICBtX2xleGVyLT5zZXRPZmZzZXQoc3RhcnRPZmZzZXQsIG9sZExpbmVTdGFy
dE9mZnNldCk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgbV9sZXhlci0+c2V0TGFzdExpbmVO
dW1iZXIob2xkTGFzdExpbmVOdW1iZXIpOwogICAgICAgICBtX2xleGVyLT5zZXRMaW5lTnVtYmVy
KG9sZExpbmVOdW1iZXIpOwpAQCAtMTM0Miw3ICsxMzkxLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlRXhwcmVzcwogICAgICAgICBwcm9wZXJ0eSA9IHBhcnNlUHJvcGVydHk8
ZmFsc2U+KGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShwcm9wZXJ0eSk7CiAgICAgICAg
IGlmICghbV9zeW50YXhBbHJlYWR5VmFsaWRhdGVkICYmIGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0
eSkgIT0gUHJvcGVydHlOb2RlOjpDb25zdGFudCkgewotICAgICAgICAgICAgbV9sZXhlci0+c2V0
T2Zmc2V0KHN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgICAgIG1fbGV4ZXItPnNldE9mZnNldChzdGFy
dE9mZnNldCwgb2xkTGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAg
ICAgICAgIG1fbGV4ZXItPnNldExhc3RMaW5lTnVtYmVyKG9sZExhc3RMaW5lTnVtYmVyKTsKICAg
ICAgICAgICAgIG1fbGV4ZXItPnNldExpbmVOdW1iZXIob2xkTGluZU51bWJlcik7CkBAIC0xNDg4
LDEyICsxNTM3LDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3MK
ICAgICB9CiAgICAgY2FzZSBJREVOVDogewogICAgICAgICBpbnQgc3RhcnQgPSB0b2tlblN0YXJ0
KCk7CisgICAgICAgIGludCBsaW5lID0gdG9rZW5MaW5lKCk7CisgICAgICAgIGludCBsaW5lU3Rh
cnQgPSB0b2tlbkxpbmVTdGFydCgpOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9
IG1fdG9rZW4ubV9kYXRhLmlkZW50OwogICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24o
dG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBjdXJyZW50U2NvcGUo
KS0+dXNlVmFyaWFibGUoaWRlbnQsIG1fdm0tPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gKmlkZW50
KTsKICAgICAgICAgbV9sYXN0SWRlbnRpZmllciA9IGlkZW50OwotICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVSZXNvbHZlKGxvY2F0aW9uLCBpZGVudCwgc3RhcnQpOworICAgICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVSZXNvbHZlKGxvY2F0aW9uLCBpZGVudCwgc3RhcnQsIGxpbmUsIGxp
bmVTdGFydCk7CiAgICAgfQogICAgIGNhc2UgU1RSSU5HOiB7CiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CkBAIC0xNTMzLDkgKzE1ODQsMTEg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzcwogICAgICAgICAgICAg
ZmFpbElmRmFsc2UobV9sZXhlci0+c2NhblJlZ0V4cChwYXR0ZXJuLCBmbGFncykpOwogICAgICAg
ICAKICAgICAgICAgaW50IHN0YXJ0ID0gdG9rZW5TdGFydCgpOworICAgICAgICBpbnQgbGluZSA9
IHRva2VuTGluZSgpOworICAgICAgICBpbnQgbGluZVN0YXJ0ID0gdG9rZW5MaW5lU3RhcnQoKTsK
ICAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAg
ICAgIG5leHQoKTsKLSAgICAgICAgVHJlZUV4cHJlc3Npb24gcmUgPSBjb250ZXh0LmNyZWF0ZVJl
Z0V4cChsb2NhdGlvbiwgKnBhdHRlcm4sICpmbGFncywgc3RhcnQpOworICAgICAgICBUcmVlRXhw
cmVzc2lvbiByZSA9IGNvbnRleHQuY3JlYXRlUmVnRXhwKGxvY2F0aW9uLCAqcGF0dGVybiwgKmZs
YWdzLCBzdGFydCwgbGluZSwgbGluZVN0YXJ0KTsKICAgICAgICAgaWYgKCFyZSkgewogICAgICAg
ICAgICAgY29uc3QgY2hhciogeWFyckVycm9yTXNnID0gWWFycjo6Y2hlY2tTeW50YXgocGF0dGVy
bi0+c3RyaW5nKCkpOwogICAgICAgICAgICAgZmFpbFdpdGhNZXNzYWdlKHlhcnJFcnJvck1zZyk7
CkBAIC0xNTc4LDggKzE2MzEsMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RXhwcmVzcwogICAgIFRyZWVFeHByZXNzaW9uIGJhc2UgPSAwOwogICAgIGludCBzdGFydCA9IHRv
a2VuU3RhcnQoKTsKICAgICBpbnQgZXhwcmVzc2lvblN0YXJ0ID0gc3RhcnQ7CisgICAgaW50IGV4
cHJlc3Npb25MaW5lID0gdG9rZW5MaW5lKCk7CisgICAgaW50IGV4cHJlc3Npb25MaW5lU3RhcnQg
PSB0b2tlbkxpbmVTdGFydCgpOwogICAgIGludCBuZXdDb3VudCA9IDA7Ci0gICAgSlNUb2tlbkxv
Y2F0aW9uIGxvY2F0aW9uOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbihtX3NvdXJjZS0+
c3RhcnRPZmZzZXQoKSk7CiAgICAgd2hpbGUgKG1hdGNoKE5FVykpIHsKICAgICAgICAgbmV4dCgp
OwogICAgICAgICBuZXdDb3VudCsrOwpAQCAtMTU4OSwxMyArMTY0NCwxNCBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIq
IG5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7CiAgICAgICAgIFRy
ZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IHBhcmFtZXRlcnMgPSAwOwogICAgICAgICBUcmVlRnVuY3Rp
b25Cb2R5IGJvZHkgPSAwOwotICAgICAgICBpbnQgb3BlbkJyYWNlUG9zID0gMDsKLSAgICAgICAg
aW50IGNsb3NlQnJhY2VQb3MgPSAwOworICAgICAgICB1bnNpZ25lZCBvcGVuQnJhY2VPZmZzZXQg
PSAwOworICAgICAgICB1bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0ID0gMDsKICAgICAgICAgaW50
IGJvZHlTdGFydExpbmUgPSAwOworICAgICAgICB1bnNpZ25lZCBib2R5U3RhcnRDb2x1bW4gPSAw
OwogICAgICAgICBsb2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsKICAgICAgICAgbmV4dCgpOwot
ICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm88RnVuY3Rpb25Ob1JlcXVpcmVt
ZW50cywgZmFsc2U+KGNvbnRleHQsIG5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZVBv
cywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSkpKTsKLSAgICAgICAgYmFzZSA9IGNvbnRl
eHQuY3JlYXRlRnVuY3Rpb25FeHByKGxvY2F0aW9uLCBuYW1lLCBib2R5LCBwYXJhbWV0ZXJzLCBv
cGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOwor
ICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm88RnVuY3Rpb25Ob1JlcXVpcmVt
ZW50cywgZmFsc2U+KGNvbnRleHQsIG5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZU9m
ZnNldCwgY2xvc2VCcmFjZU9mZnNldCwgYm9keVN0YXJ0TGluZSwgYm9keVN0YXJ0Q29sdW1uKSkp
OworICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobG9jYXRpb24sIG5h
bWUsIGJvZHksIHBhcmFtZXRlcnMsIG9wZW5CcmFjZU9mZnNldCwgY2xvc2VCcmFjZU9mZnNldCwg
Ym9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSwgYm9keVN0YXJ0Q29sdW1uKTsKICAgICB9IGVsc2UK
ICAgICAgICAgYmFzZSA9IHBhcnNlUHJpbWFyeUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgCkBA
IC0xNjA2LDEyICsxNjYyLDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4
cHJlc3MKICAgICAgICAgY2FzZSBPUEVOQlJBQ0tFVDogewogICAgICAgICAgICAgbV9ub25Ucml2
aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAgICAgICBpbnQgZXhwcmVzc2lvbkVuZCA9IGxh
c3RUb2tlbkVuZCgpOworICAgICAgICAgICAgaW50IGV4cHJlc3Npb25MaW5lID0gbGFzdFRva2Vu
TGluZSgpOworICAgICAgICAgICAgaW50IGV4cHJlc3Npb25MaW5lU3RhcnQgPSBsYXN0VG9rZW5M
aW5lU3RhcnQoKTsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGludCBub25MSFND
b3VudCA9IG1fbm9uTEhTQ291bnQ7CiAgICAgICAgICAgICBpbnQgaW5pdGlhbEFzc2lnbm1lbnRz
ID0gbV9hc3NpZ25tZW50Q291bnQ7CiAgICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBwcm9wZXJ0
eSA9IHBhcnNlRXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHBy
b3BlcnR5KTsKLSAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZUJyYWNrZXRBY2Nlc3Mo
bG9jYXRpb24sIGJhc2UsIHByb3BlcnR5LCBpbml0aWFsQXNzaWdubWVudHMgIT0gbV9hc3NpZ25t
ZW50Q291bnQsIGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwgdG9rZW5FbmQoKSk7Cisg
ICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVCcmFja2V0QWNjZXNzKGxvY2F0aW9uLCBi
YXNlLCBwcm9wZXJ0eSwgaW5pdGlhbEFzc2lnbm1lbnRzICE9IG1fYXNzaWdubWVudENvdW50LCBl
eHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25FbmQsIHRva2VuRW5kKCksIGV4cHJlc3Npb25MaW5l
LCBleHByZXNzaW9uTGluZVN0YXJ0KTsKICAgICAgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VC
UkFDS0VUKTsKICAgICAgICAgICAgIG1fbm9uTEhTQ291bnQgPSBub25MSFNDb3VudDsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTYyMiwxNCArMTY4MCwxOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAgICAgICAgICAgICBpZiAobmV3Q291bnQpIHsKICAgICAg
ICAgICAgICAgICBuZXdDb3VudC0tOwogICAgICAgICAgICAgICAgIGludCBleHByRW5kID0gbGFz
dFRva2VuRW5kKCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgZXhwcmVzc2lvbkxpbmUgPSBs
YXN0VG9rZW5MaW5lKCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgZXhwcmVzc2lvbkxpbmVT
dGFydCA9IGxhc3RUb2tlbkxpbmVTdGFydCgpOwogICAgICAgICAgICAgICAgIFRyZWVBcmd1bWVu
dHMgYXJndW1lbnRzID0gcGFyc2VBcmd1bWVudHMoY29udGV4dCk7CiAgICAgICAgICAgICAgICAg
ZmFpbElmRmFsc2UoYXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4dC5j
cmVhdGVOZXdFeHByKGxvY2F0aW9uLCBiYXNlLCBhcmd1bWVudHMsIHN0YXJ0LCBleHByRW5kLCBs
YXN0VG9rZW5FbmQoKSk7CisgICAgICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlTmV3
RXhwcihsb2NhdGlvbiwgYmFzZSwgYXJndW1lbnRzLCBzdGFydCwgZXhwckVuZCwgbGFzdFRva2Vu
RW5kKCksIGV4cHJlc3Npb25MaW5lLCBleHByZXNzaW9uTGluZVN0YXJ0KTsKICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaW50IGV4cHJlc3Npb25FbmQgPSBsYXN0VG9rZW5F
bmQoKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBleHByZXNzaW9uTGluZSA9IGxhc3RUb2tl
bkxpbmUoKTsKKyAgICAgICAgICAgICAgICBpbnQgZXhwcmVzc2lvbkxpbmVTdGFydCA9IGxhc3RU
b2tlbkxpbmVTdGFydCgpOwogICAgICAgICAgICAgICAgIFRyZWVBcmd1bWVudHMgYXJndW1lbnRz
ID0gcGFyc2VBcmd1bWVudHMoY29udGV4dCk7CiAgICAgICAgICAgICAgICAgZmFpbElmRmFsc2Uo
YXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4dC5tYWtlRnVuY3Rpb25D
YWxsTm9kZShsb2NhdGlvbiwgYmFzZSwgYXJndW1lbnRzLCBleHByZXNzaW9uU3RhcnQsIGV4cHJl
c3Npb25FbmQsIGxhc3RUb2tlbkVuZCgpKTsKKyAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4
dC5tYWtlRnVuY3Rpb25DYWxsTm9kZShsb2NhdGlvbiwgYmFzZSwgYXJndW1lbnRzLCBleHByZXNz
aW9uU3RhcnQsIGV4cHJlc3Npb25FbmQsIGxhc3RUb2tlbkVuZCgpLCBleHByZXNzaW9uTGluZSwg
ZXhwcmVzc2lvbkxpbmVTdGFydCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX25vbkxI
U0NvdW50ID0gbm9uTEhTQ291bnQ7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE2MzcsOSArMTY5
OSwxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAgICAgICAg
IGNhc2UgRE9UOiB7CiAgICAgICAgICAgICBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsK
ICAgICAgICAgICAgIGludCBleHByZXNzaW9uRW5kID0gbGFzdFRva2VuRW5kKCk7CisgICAgICAg
ICAgICBleHByZXNzaW9uTGluZVN0YXJ0ID0gbGFzdFRva2VuTGluZVN0YXJ0KCk7CiAgICAgICAg
ICAgICBuZXh0RXhwZWN0SWRlbnRpZmllcihMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcyB8
IFRyZWVCdWlsZGVyOjpEb250QnVpbGRLZXl3b3Jkcyk7CiAgICAgICAgICAgICBtYXRjaE9yRmFp
bChJREVOVCk7Ci0gICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVEb3RBY2Nlc3MobG9j
YXRpb24sIGJhc2UsIG1fdG9rZW4ubV9kYXRhLmlkZW50LCBleHByZXNzaW9uU3RhcnQsIGV4cHJl
c3Npb25FbmQsIHRva2VuRW5kKCkpOworICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRl
RG90QWNjZXNzKGxvY2F0aW9uLCBiYXNlLCBtX3Rva2VuLm1fZGF0YS5pZGVudCwgZXhwcmVzc2lv
blN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZCgpLCBleHByZXNzaW9uTGluZSwgZXhwcmVz
c2lvbkxpbmVTdGFydCk7CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQpAQCAtMTY0OSw3ICsxNzEyLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlRXhwcmVzcwogICAgIH0KIGVuZE1lbWJlckV4cHJlc3Npb246CiAgICAgd2hpbGUg
KG5ld0NvdW50LS0pCi0gICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZU5ld0V4cHIobG9jYXRp
b24sIGJhc2UsIHN0YXJ0LCBsYXN0VG9rZW5FbmQoKSk7CisgICAgICAgIGJhc2UgPSBjb250ZXh0
LmNyZWF0ZU5ld0V4cHIobG9jYXRpb24sIGJhc2UsIHN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgZXhw
cmVzc2lvbkxpbmUsIGV4cHJlc3Npb25MaW5lU3RhcnQpOwogICAgIHJldHVybiBiYXNlOwogfQog
CkBAIC0xNjgyLDExICsxNzQ1LDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHJlc3MKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBtX25vbkxIU0NvdW50
Kys7Ci0gICAgICAgIGNvbnRleHQuYXBwZW5kVW5hcnlUb2tlbih0b2tlblN0YWNrRGVwdGgsIG1f
dG9rZW4ubV90eXBlLCB0b2tlblN0YXJ0KCkpOworICAgICAgICBjb250ZXh0LmFwcGVuZFVuYXJ5
VG9rZW4odG9rZW5TdGFja0RlcHRoLCBtX3Rva2VuLm1fdHlwZSwgdG9rZW5TdGFydCgpLCB0b2tl
bkxpbmUoKSwgdG9rZW5MaW5lU3RhcnQoKSk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgbV9u
b25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgfQogICAgIGludCBzdWJFeHByU3RhcnQg
PSB0b2tlblN0YXJ0KCk7CisgICAgaW50IHN1YkV4cHJMaW5lID0gdG9rZW5MaW5lKCk7CisgICAg
aW50IHN1YkV4cHJMaW5lU3RhcnRQb3NpdGlvbiA9IHRva2VuTGluZVN0YXJ0KCk7CisgICAgQVNT
RVJUKHN1YkV4cHJTdGFydCA+PSBzdWJFeHByTGluZVN0YXJ0UG9zaXRpb24pOwogICAgIEpTVG9r
ZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIFRyZWVFeHByZXNzaW9u
IGV4cHIgPSBwYXJzZU1lbWJlckV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2Uo
ZXhwcik7CkBAIC0xNzAwLDcgKzE3NjYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVFeHByZXNzCiAgICAgY2FzZSBQTFVTUExVUzoKICAgICAgICAgbV9ub25Ucml2aWFsRXhw
cmVzc2lvbkNvdW50Kys7CiAgICAgICAgIG1fbm9uTEhTQ291bnQrKzsKLSAgICAgICAgZXhwciA9
IGNvbnRleHQubWFrZVBvc3RmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcFBsdXNQbHVzLCBzdWJF
eHByU3RhcnQsIGxhc3RUb2tlbkVuZCgpLCB0b2tlbkVuZCgpKTsKKyAgICAgICAgZXhwciA9IGNv
bnRleHQubWFrZVBvc3RmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcFBsdXNQbHVzLCBzdWJFeHBy
U3RhcnQsIGxhc3RUb2tlbkVuZCgpLCB0b2tlbkVuZCgpLCB0b2tlbkxpbmUoKSwgdG9rZW5MaW5l
U3RhcnQoKSk7CiAgICAgICAgIG1fYXNzaWdubWVudENvdW50Kys7CiAgICAgICAgIGZhaWxJZlRy
dWVJZlN0cmljdFdpdGhOYW1lQW5kTWVzc2FnZShpc0V2YWxPckFyZ3VtZW50cywgIiciLCBtX2xh
c3RJZGVudGlmaWVyLT5pbXBsKCksICInIGNhbm5vdCBiZSBtb2RpZmllZCBpbiBzdHJpY3QgbW9k
ZSIpOwogICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3QocmVxdWlyZXNMRXhwcik7CkBAIC0xNzA5
LDcgKzE3NzUsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAg
ICAgY2FzZSBNSU5VU01JTlVTOgogICAgICAgICBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQr
KzsKICAgICAgICAgbV9ub25MSFNDb3VudCsrOwotICAgICAgICBleHByID0gY29udGV4dC5tYWtl
UG9zdGZpeE5vZGUobG9jYXRpb24sIGV4cHIsIE9wTWludXNNaW51cywgc3ViRXhwclN0YXJ0LCBs
YXN0VG9rZW5FbmQoKSwgdG9rZW5FbmQoKSk7CisgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQ
b3N0Zml4Tm9kZShsb2NhdGlvbiwgZXhwciwgT3BNaW51c01pbnVzLCBzdWJFeHByU3RhcnQsIGxh
c3RUb2tlbkVuZCgpLCB0b2tlbkVuZCgpLCB0b2tlbkxpbmUoKSwgdG9rZW5MaW5lU3RhcnQoKSk7
CiAgICAgICAgIG1fYXNzaWdubWVudENvdW50Kys7CiAgICAgICAgIGZhaWxJZlRydWVJZlN0cmlj
dFdpdGhOYW1lQW5kTWVzc2FnZShpc0V2YWxPckFyZ3VtZW50cywgIiciLCBtX2xhc3RJZGVudGlm
aWVyLT5pbXBsKCksICInIGNhbm5vdCBiZSBtb2RpZmllZCBpbiBzdHJpY3QgbW9kZSIpOwogICAg
ICAgICBmYWlsSWZUcnVlSWZTdHJpY3QocmVxdWlyZXNMRXhwcik7CkBAIC0xNzIwLDcgKzE3ODYs
OSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAgICAgfQogICAg
IAogICAgIGludCBlbmQgPSBsYXN0VG9rZW5FbmQoKTsKLSAgICAKKyAgICBpbnQgZW5kTGluZSA9
IGxhc3RUb2tlbkxpbmUoKTsKKyAgICBpbnQgZW5kTGluZVN0YXJ0UG9zaXRpb24gPSBsYXN0VG9r
ZW5MaW5lU3RhcnQoKTsKKwogICAgIGlmICghVHJlZUJ1aWxkZXI6OkNyZWF0ZXNBU1QgJiYgKG1f
c3ludGF4QWxyZWFkeVZhbGlkYXRlZCB8fCAhc3RyaWN0TW9kZSgpKSkKICAgICAgICAgcmV0dXJu
IGV4cHI7CiAKQEAgLTE3NDIsMTIgKzE4MTAsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlRXhwcmVzcwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUExVU1BM
VVM6CiAgICAgICAgIGNhc2UgQVVUT1BMVVNQTFVTOgotICAgICAgICAgICAgZXhwciA9IGNvbnRl
eHQubWFrZVByZWZpeE5vZGUobG9jYXRpb24sIGV4cHIsIE9wUGx1c1BsdXMsIGNvbnRleHQudW5h
cnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCksIHN1YkV4cHJTdGFydCArIDEs
IGVuZCk7CisgICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlUHJlZml4Tm9kZShsb2NhdGlv
biwgZXhwciwgT3BQbHVzUGx1cywgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQodG9r
ZW5TdGFja0RlcHRoKSwgc3ViRXhwclN0YXJ0ICsgMSwgZW5kLCBzdWJFeHByTGluZSwgc3ViRXhw
ckxpbmVTdGFydFBvc2l0aW9uKTsKICAgICAgICAgICAgIG1fYXNzaWdubWVudENvdW50Kys7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBNSU5VU01JTlVTOgogICAgICAgICBjYXNl
IEFVVE9NSU5VU01JTlVTOgotICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVByZWZpeE5v
ZGUobG9jYXRpb24sIGV4cHIsIE9wTWludXNNaW51cywgY29udGV4dC51bmFyeVRva2VuU3RhY2tM
YXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwgc3ViRXhwclN0YXJ0ICsgMSwgZW5kKTsKKyAgICAg
ICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQcmVmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcE1p
bnVzTWludXMsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0
aCksIHN1YkV4cHJTdGFydCArIDEsIGVuZCwgc3ViRXhwckxpbmUsIHN1YkV4cHJMaW5lU3RhcnRQ
b3NpdGlvbik7CiAgICAgICAgICAgICBtX2Fzc2lnbm1lbnRDb3VudCsrOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVFlQRU9GOgpAQCAtMTc1OCwxMyArMTgyNiwxNCBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBERUxFVEVUT0tFTjoKICAgICAgICAgICAgIGZhaWxJZlRydWVJZlN0cmlj
dFdpdGhOYW1lQW5kTWVzc2FnZShjb250ZXh0LmlzUmVzb2x2ZShleHByKSwgIkNhbm5vdCBkZWxl
dGUgdW5xdWFsaWZpZWQgcHJvcGVydHkiLCBtX2xhc3RJZGVudGlmaWVyLT5pbXBsKCksICJpbiBz
dHJpY3QgbW9kZSIpOwotICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZURlbGV0ZU5vZGUo
bG9jYXRpb24sIGV4cHIsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3Rh
Y2tEZXB0aCksIGVuZCwgZW5kKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VEZWxl
dGVOb2RlKGxvY2F0aW9uLCBleHByLCBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0
b2tlblN0YWNrRGVwdGgpLCBlbmQsIGVuZCwgZW5kTGluZSwgZW5kTGluZVN0YXJ0UG9zaXRpb24p
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAvLyBJ
ZiB3ZSBnZXQgaGVyZSBzb21ldGhpbmcgaGFzIGdvbmUgaG9ycmlibHkgaG9ycmlibHkgd3JvbmcK
ICAgICAgICAgICAgIENSQVNIKCk7CiAgICAgICAgIH0KICAgICAgICAgc3ViRXhwclN0YXJ0ID0g
Y29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKTsKKyAgICAg
ICAgc3ViRXhwckxpbmVTdGFydFBvc2l0aW9uID0gY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0
TGluZVN0YXJ0UG9zaXRpb24odG9rZW5TdGFja0RlcHRoKTsKICAgICAgICAgY29udGV4dC51bmFy
eVRva2VuU3RhY2tSZW1vdmVMYXN0KHRva2VuU3RhY2tEZXB0aCk7CiAgICAgfQogICAgIHJldHVy
biBleHByOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCShyZXZpc2lv
biAxNTE5MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00ODIsMTEgKzQ4MiwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNGdW5j
dGlvbkJvZHlOb2RlKFNjb3BlTm9kZSopIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0Z1
bmN0aW9uQm9keU5vZGUoRnVuY3Rpb25Cb2R5Tm9kZSopIHsgcmV0dXJuIHRydWU7IH0KIAotCiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIG5leHQodW5zaWduZWQgbGV4ZXJGbGFncyA9IDApCiAgICAg
ewogICAgICAgICBtX2xhc3RMaW5lID0gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmU7CiAgICAgICAg
IG1fbGFzdFRva2VuRW5kID0gbV90b2tlbi5tX2xvY2F0aW9uLmVuZE9mZnNldDsKKyAgICAgICAg
bV9sYXN0VG9rZW5MaW5lU3RhcnQgPSBtX3Rva2VuLm1fbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0
OwogICAgICAgICBtX2xleGVyLT5zZXRMYXN0TGluZU51bWJlcihtX2xhc3RMaW5lKTsKICAgICAg
ICAgbV90b2tlbi5tX3R5cGUgPSBtX2xleGVyLT5sZXgoJm1fdG9rZW4ubV9kYXRhLCAmbV90b2tl
bi5tX2xvY2F0aW9uLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKCkpOwogICAgIH0KQEAgLTQ5NSw2
ICs0OTUsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgbV9sYXN0TGluZSA9IG1fdG9rZW4u
bV9sb2NhdGlvbi5saW5lOwogICAgICAgICBtX2xhc3RUb2tlbkVuZCA9IG1fdG9rZW4ubV9sb2Nh
dGlvbi5lbmRPZmZzZXQ7CisgICAgICAgIG1fbGFzdFRva2VuTGluZVN0YXJ0ID0gbV90b2tlbi5t
X2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKICAgICAgICAgbV9sZXhlci0+c2V0TGFzdExpbmVO
dW1iZXIobV9sYXN0TGluZSk7CiAgICAgICAgIG1fdG9rZW4ubV90eXBlID0gbV9sZXhlci0+bGV4
RXhwZWN0SWRlbnRpZmllcigmbV90b2tlbi5tX2RhdGEsICZtX3Rva2VuLm1fbG9jYXRpb24sIGxl
eGVyRmxhZ3MsIHN0cmljdE1vZGUoKSk7CiAgICAgfQpAQCAtNTIyLDcgKzUyMyw3IEBAIHByaXZh
dGU6CiAgICAgICAgIHJldHVybiBtX3Rva2VuLm1fdHlwZSA9PSBleHBlY3RlZDsKICAgICB9CiAg
ICAgCi0gICAgQUxXQVlTX0lOTElORSBpbnQgdG9rZW5TdGFydCgpCisgICAgQUxXQVlTX0lOTElO
RSB1bnNpZ25lZCB0b2tlblN0YXJ0KCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX3Rva2VuLm1f
bG9jYXRpb24uc3RhcnRPZmZzZXQ7CiAgICAgfQpAQCAtNTMyLDExICs1MzMsMjEgQEAgcHJpdmF0
ZToKICAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lOwogICAgIH0KICAgICAK
LSAgICBBTFdBWVNfSU5MSU5FIGludCB0b2tlbkVuZCgpCisgICAgQUxXQVlTX0lOTElORSBpbnQg
dG9rZW5Db2x1bW4oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRva2VuU3RhcnQoKSAtIHRva2Vu
TGluZVN0YXJ0KCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCB0b2tlbkVu
ZCgpCiAgICAgewogICAgICAgICByZXR1cm4gbV90b2tlbi5tX2xvY2F0aW9uLmVuZE9mZnNldDsK
ICAgICB9CiAgICAgCisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCB0b2tlbkxpbmVTdGFydCgp
CisgICAgeworICAgICAgICByZXR1cm4gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNl
dDsKKyAgICB9CisgICAgCiAgICAgQUxXQVlTX0lOTElORSBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IHRva2VuTG9jYXRpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV9sb2NhdGlv
bjsKQEAgLTkwNiw3ICs5MTcsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCBwYXJzZUZvcm1h
bFBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IEFMV0FZU19JTkxJTkUgVHJlZUV4cHJlc3Npb24gcGFyc2VWYXJEZWNsYXJhdGlvbkxpc3Qo
VHJlZUJ1aWxkZXImLCBpbnQmIGRlY2xhcmF0aW9ucywgY29uc3QgSWRlbnRpZmllciomIGxhc3RJ
ZGVudCwgVHJlZUV4cHJlc3Npb24mIGxhc3RJbml0aWFsaXplciwgaW50JiBpZGVudFN0YXJ0LCBp
bnQmIGluaXRTdGFydCwgaW50JiBpbml0RW5kKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUNvbnN0RGVjbExpc3QgcGFyc2VDb25zdERlY2xhcmF0
aW9uTGlzdChUcmVlQnVpbGRlciYgY29udGV4dCk7Ci0gICAgdGVtcGxhdGUgPEZ1bmN0aW9uUmVx
dWlyZW1lbnRzLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBjbGFzcyBUcmVlQnVpbGRl
cj4gYm9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIq
JiwgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QmLCBUcmVlRnVuY3Rpb25Cb2R5JiwgaW50JiBvcGVu
QnJhY2UsIGludCYgY2xvc2VCcmFjZSwgaW50JiBib2R5U3RhcnRMaW5lKTsKKyAgICB0ZW1wbGF0
ZSA8RnVuY3Rpb25SZXF1aXJlbWVudHMsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIGNs
YXNzIFRyZWVCdWlsZGVyPiBib29sIHBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiwgY29u
c3QgSWRlbnRpZmllciomLCBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCYsIFRyZWVGdW5jdGlvbkJv
ZHkmLCB1bnNpZ25lZCYgb3BlbkJyYWNlT2Zmc2V0LCB1bnNpZ25lZCYgY2xvc2VCcmFjZU9mZnNl
dCwgaW50JiBib2R5U3RhcnRMaW5lLCB1bnNpZ25lZCYgYm9keVN0YXJ0Q29sdW1uKTsKICAgICBB
TFdBWVNfSU5MSU5FIGludCBpc0JpbmFyeU9wZXJhdG9yKEpTVG9rZW5UeXBlKTsKICAgICBib29s
IGFsbG93QXV0b21hdGljU2VtaWNvbG9uKCk7CiAgICAgCkBAIC05MjksNiArOTQwLDE2IEBAIHBy
aXZhdGU6CiAgICAgICAgIHJldHVybiBtX2xhc3RUb2tlbkVuZDsKICAgICB9CiAKKyAgICB1bnNp
Z25lZCBsYXN0VG9rZW5MaW5lKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xhc3RM
aW5lOworICAgIH0KKworICAgIHVuc2lnbmVkIGxhc3RUb2tlbkxpbmVTdGFydCgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9sYXN0VG9rZW5MaW5lU3RhcnQ7CisgICAgfQorCiAgICAg
Ym9vbCBoYXNFcnJvcigpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gIW1fZXJyb3JNZXNz
YWdlLmlzTnVsbCgpOwpAQCAtOTQ0LDggKzk2NSwxMCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBt
X2Vycm9yTWVzc2FnZTsKICAgICBKU1Rva2VuIG1fdG9rZW47CiAgICAgYm9vbCBtX2FsbG93c0lu
OwotICAgIGludCBtX2xhc3RMaW5lOworICAgIHVuc2lnbmVkIG1fbGFzdExpbmU7CiAgICAgaW50
IG1fbGFzdFRva2VuRW5kOworICAgIHVuc2lnbmVkIG1fbGFzdFRva2VuTGluZTsKKyAgICB1bnNp
Z25lZCBtX2xhc3RUb2tlbkxpbmVTdGFydDsKICAgICBpbnQgbV9hc3NpZ25tZW50Q291bnQ7CiAg
ICAgaW50IG1fbm9uTEhTQ291bnQ7CiAgICAgYm9vbCBtX3N5bnRheEFscmVhZHlWYWxpZGF0ZWQ7
CkBAIC05OTUsNiArMTAxOCw3IEBAIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVy
VHlwZT4KICAgICBlcnJNc2cgPSBTdHJpbmcoKTsKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBzdGFy
dExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSBt
X3NvdXJjZS0+c3RhcnRDb2x1bW4oKTsKIAogICAgIFN0cmluZyBwYXJzZUVycm9yID0gcGFyc2VJ
bm5lcigpOwogCkBAIC0xMDEyLDEyICsxMDM2LDE0IEBAIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4g
UGFyc2VyPExleGVyVHlwZT4KIAogICAgIFJlZlB0cjxQYXJzZWROb2RlPiByZXN1bHQ7CiAgICAg
aWYgKG1fc291cmNlRWxlbWVudHMpIHsKLSAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGVuZExvY2F0
aW9uOworICAgICAgICBKU1Rva2VuTG9jYXRpb24gZW5kTG9jYXRpb24obV9zb3VyY2UtPnN0YXJ0
T2Zmc2V0KCkpOwogICAgICAgICBlbmRMb2NhdGlvbi5saW5lID0gbV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKTsKLSAgICAgICAgZW5kTG9jYXRpb24uY2hhclBvc2l0aW9uID0gbV9sZXhlci0+Y3Vy
cmVudENoYXJQb3NpdGlvbigpOworICAgICAgICBlbmRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQg
PSBtX2xleGVyLT5jdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CisgICAgICAgIGVuZExvY2F0aW9u
LnN0YXJ0T2Zmc2V0ID0gbV9sZXhlci0+Y3VycmVudE9mZnNldCgpOwogICAgICAgICByZXN1bHQg
PSBQYXJzZWROb2RlOjpjcmVhdGUobV92bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXJ0TG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbmRMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0
Q29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zb3VyY2VFbGVt
ZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFyRGVjbGFyYXRp
b25zID8gJm1fdmFyRGVjbGFyYXRpb25zLT5kYXRhIDogMCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZnVuY0RlY2xhcmF0aW9ucyA/ICZtX2Z1bmNEZWNsYXJhdGlvbnMt
PmRhdGEgOiAwLApAQCAtMTAyNSw3ICsxMDUxLDcgQEAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBQ
YXJzZXI8TGV4ZXJUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm1f
c291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mZWF0dXJlcywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbnVtQ29uc3RhbnRzKTsKLSAg
ICAgICAgcmVzdWx0LT5zZXRMb2MobV9zb3VyY2UtPmZpcnN0TGluZSgpLCBtX2xhc3RMaW5lLCBt
X2xleGVyLT5jdXJyZW50Q2hhclBvc2l0aW9uKCkpOworICAgICAgICByZXN1bHQtPnNldExvYyht
X3NvdXJjZS0+Zmlyc3RMaW5lKCksIG1fbGFzdExpbmUsIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQo
KSwgbV9sZXhlci0+Y3VycmVudExpbmVTdGFydE9mZnNldCgpKTsKICAgICB9IGVsc2UgewogICAg
ICAgICAvLyBXZSBjYW4gbmV2ZXIgc2VlIGEgc3ludGF4IGVycm9yIHdoZW4gcmVwYXJzaW5nIGEg
ZnVuY3Rpb24sIHNpbmNlIHdlIHNob3VsZCBoYXZlCiAgICAgICAgIC8vIHJlcG9ydGVkIHRoZSBl
cnJvciB3aGVuIHBhcnNpbmcgdGhlIGNvbnRhaW5pbmcgcHJvZ3JhbSBvciBldmFsIGNvZGUuIFNv
IGlmIHdlJ3JlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vu
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9r
ZW5zLmgJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyVG9rZW5zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUg
UGFyc2VyVG9rZW5zX2gKIAogI2luY2x1ZGUgIlBhcnNlck1vZGVzLmgiCisjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTQ5LDI0ICsxNTAsMzYg
QEAgZW51bSBKU1Rva2VuVHlwZSB7CiB9OwogCiB1bmlvbiBKU1Rva2VuRGF0YSB7Ci0gICAgaW50
IGludFZhbHVlOworICAgIHN0cnVjdCB7CisgICAgICAgIHVpbnQzMl90IGxpbmU7CisgICAgICAg
IHVpbnQzMl90IG9mZnNldDsKKyAgICAgICAgdWludDMyX3QgbGluZVN0YXJ0T2Zmc2V0OworICAg
IH07CiAgICAgZG91YmxlIGRvdWJsZVZhbHVlOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50
OwogfTsKIAogc3RydWN0IEpTVG9rZW5Mb2NhdGlvbiB7Ci0gICAgSlNUb2tlbkxvY2F0aW9uKCkg
OiBsaW5lKDApLCBjaGFyUG9zaXRpb24oMCkgeyB9CisgICAgSlNUb2tlbkxvY2F0aW9uKHVuc2ln
bmVkIF9zb3VyY2VPZmZzZXQgPSBVSU5UX01BWCkgOiBsaW5lKDApLCBsaW5lU3RhcnRPZmZzZXQo
MCksIHN0YXJ0T2Zmc2V0KDApLCBzb3VyY2VPZmZzZXQoX3NvdXJjZU9mZnNldCkgeyB9CiAgICAg
SlNUb2tlbkxvY2F0aW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pCiAgICAgewog
ICAgICAgICBsaW5lID0gbG9jYXRpb24ubGluZTsKKyAgICAgICAgbGluZVN0YXJ0T2Zmc2V0ID0g
bG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogICAgICAgICBzdGFydE9mZnNldCA9IGxvY2F0aW9u
LnN0YXJ0T2Zmc2V0OwogICAgICAgICBlbmRPZmZzZXQgPSBsb2NhdGlvbi5lbmRPZmZzZXQ7Ci0g
ICAgICAgIGNoYXJQb3NpdGlvbiA9IGxvY2F0aW9uLmNoYXJQb3NpdGlvbjsKKyAgICAgICAgc291
cmNlT2Zmc2V0ID0gbG9jYXRpb24uc291cmNlT2Zmc2V0OworICAgICAgICBBU1NFUlQoc291cmNl
T2Zmc2V0ICE9IFVJTlRfTUFYKTsKICAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVk
IGxpbmVTdGFydFBvc2l0aW9uKCkgY29uc3QgeyBBU1NFUlQoc291cmNlT2Zmc2V0ICE9IFVJTlRf
TUFYKTsgcmV0dXJuIGxpbmVTdGFydE9mZnNldCAtIHNvdXJjZU9mZnNldDsgfQorICAgIEFMV0FZ
U19JTkxJTkUgdW5zaWduZWQgc3RhcnRQb3NpdGlvbigpIGNvbnN0IHsgQVNTRVJUKHNvdXJjZU9m
ZnNldCAhPSBVSU5UX01BWCk7IHJldHVybiBzdGFydE9mZnNldCAtIHNvdXJjZU9mZnNldDsgfQor
ICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgZW5kUG9zaXRpb24oKSBjb25zdCB7IEFTU0VSVChz
b3VyY2VPZmZzZXQgIT0gVUlOVF9NQVgpOyByZXR1cm4gZW5kT2Zmc2V0IC0gc291cmNlT2Zmc2V0
OyB9CisKICAgICBpbnQgbGluZTsKLSAgICBpbnQgc3RhcnRPZmZzZXQ7Ci0gICAgaW50IGVuZE9m
ZnNldDsKLSAgICBpbnQgY2hhclBvc2l0aW9uOworICAgIHVuc2lnbmVkIGxpbmVTdGFydE9mZnNl
dDsKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldDsKKyAgICB1bnNpZ25lZCBlbmRPZmZzZXQ7Cisg
ICAgdW5zaWduZWQgc291cmNlT2Zmc2V0OwogfTsKIAogc3RydWN0IEpTVG9rZW4gewpAQCAtMTc1
LDcgKzE4OCw2IEBAIHN0cnVjdCBKU1Rva2VuIHsKICAgICBKU1Rva2VuTG9jYXRpb24gbV9sb2Nh
dGlvbjsKIH07CiAKLX0KLQorfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBQYXJzZXJU
b2tlbnNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmgJ
KHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNl
Q29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgLCBtX3N0YXJ0Q2hhcigwKQogICAgICAgICAgICAgLCBtX2VuZENoYXIoMCkK
ICAgICAgICAgICAgICwgbV9maXJzdExpbmUoMCkKKyAgICAgICAgICAgICwgbV9zdGFydENvbHVt
bigwKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNDksMTkgKzUwLDMwIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBTb3VyY2VDb2RlKFBhc3NS
ZWZQdHI8U291cmNlUHJvdmlkZXI+IHByb3ZpZGVyLCBpbnQgZmlyc3RMaW5lID0gMSkKKyAgICAg
ICAgU291cmNlQ29kZShQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBwcm92aWRlcikKKyAgICAg
ICAgICAgIDogbV9wcm92aWRlcihwcm92aWRlcikKKyAgICAgICAgICAgICwgbV9zdGFydENoYXIo
MCkKKyAgICAgICAgICAgICwgbV9lbmRDaGFyKG1fcHJvdmlkZXItPnNvdXJjZSgpLmxlbmd0aCgp
KQorICAgICAgICAgICAgLCBtX2ZpcnN0TGluZSgxKQorICAgICAgICAgICAgLCBtX3N0YXJ0Q29s
dW1uKDEpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIFNvdXJjZUNvZGUoUGFzc1Jl
ZlB0cjxTb3VyY2VQcm92aWRlcj4gcHJvdmlkZXIsIGludCBmaXJzdExpbmUsIGludCBzdGFydENv
bHVtbikKICAgICAgICAgICAgIDogbV9wcm92aWRlcihwcm92aWRlcikKICAgICAgICAgICAgICwg
bV9zdGFydENoYXIoMCkKICAgICAgICAgICAgICwgbV9lbmRDaGFyKG1fcHJvdmlkZXItPnNvdXJj
ZSgpLmxlbmd0aCgpKQogICAgICAgICAgICAgLCBtX2ZpcnN0TGluZShzdGQ6Om1heChmaXJzdExp
bmUsIDEpKQorICAgICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0ZDo6bWF4KHN0YXJ0Q29sdW1u
LCAxKSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgU291cmNlQ29kZShQYXNzUmVm
UHRyPFNvdXJjZVByb3ZpZGVyPiBwcm92aWRlciwgaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgZmly
c3RMaW5lKQorICAgICAgICBTb3VyY2VDb2RlKFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHBy
b3ZpZGVyLCBpbnQgc3RhcnQsIGludCBlbmQsIGludCBmaXJzdExpbmUsIGludCBzdGFydENvbHVt
bikKICAgICAgICAgICAgIDogbV9wcm92aWRlcihwcm92aWRlcikKICAgICAgICAgICAgICwgbV9z
dGFydENoYXIoc3RhcnQpCiAgICAgICAgICAgICAsIG1fZW5kQ2hhcihlbmQpCiAgICAgICAgICAg
ICAsIG1fZmlyc3RMaW5lKHN0ZDo6bWF4KGZpcnN0TGluZSwgMSkpCisgICAgICAgICAgICAsIG1f
c3RhcnRDb2x1bW4oc3RkOjptYXgoc3RhcnRDb2x1bW4sIDEpKQogICAgICAgICB7CiAgICAgICAg
IH0KIApAQCAtODQsMjkgKzk2LDMyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGlz
TnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX3Byb3ZpZGVyOyB9CiAgICAgICAgIFNvdXJjZVByb3Zp
ZGVyKiBwcm92aWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlkZXIuZ2V0KCk7IH0KICAgICAg
ICAgaW50IGZpcnN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RMaW5lOyB9CisgICAgICAg
IGludCBzdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRDb2x1bW47IH0KICAgICAg
ICAgaW50IHN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydENoYXI7IH0KICAgICAg
ICAgaW50IGVuZE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kQ2hhcjsgfQogICAgICAgICBp
bnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDaGFyIC0gbV9zdGFydENoYXI7IH0KICAg
ICAgICAgCi0gICAgICAgIFNvdXJjZUNvZGUgc3ViRXhwcmVzc2lvbih1bnNpZ25lZCBvcGVuQnJh
Y2UsIHVuc2lnbmVkIGNsb3NlQnJhY2UsIGludCBmaXJzdExpbmUpOworICAgICAgICBTb3VyY2VD
b2RlIHN1YkV4cHJlc3Npb24odW5zaWduZWQgb3BlbkJyYWNlLCB1bnNpZ25lZCBjbG9zZUJyYWNl
LCBpbnQgZmlyc3RMaW5lLCBpbnQgc3RhcnRDb2x1bW4pOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBtX3Byb3ZpZGVyOwogICAgICAgICBpbnQgbV9zdGFy
dENoYXI7CiAgICAgICAgIGludCBtX2VuZENoYXI7CiAgICAgICAgIGludCBtX2ZpcnN0TGluZTsK
KyAgICAgICAgaW50IG1fc3RhcnRDb2x1bW47CiAgICAgfTsKIAogICAgIGlubGluZSBTb3VyY2VD
b2RlIG1ha2VTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsID0g
U3RyaW5nKCksIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiA9IFRleHRQb3NpdGlv
bjo6bWluaW11bVBvc2l0aW9uKCkpCiAgICAgewotICAgICAgICByZXR1cm4gU291cmNlQ29kZShT
dHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKHNvdXJjZSwgdXJsLCBzdGFydFBvc2l0aW9uKSwg
c3RhcnRQb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJbnQoKSk7CisgICAgICAgIHJldHVybiBTb3Vy
Y2VDb2RlKFN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUoc291cmNlLCB1cmwsIHN0YXJ0UG9z
aXRpb24pLCBzdGFydFBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpLCBzdGFydFBvc2l0aW9u
Lm1fY29sdW1uLm9uZUJhc2VkSW50KCkpOwogICAgIH0KIAotICAgIGlubGluZSBTb3VyY2VDb2Rl
IFNvdXJjZUNvZGU6OnN1YkV4cHJlc3Npb24odW5zaWduZWQgb3BlbkJyYWNlLCB1bnNpZ25lZCBj
bG9zZUJyYWNlLCBpbnQgZmlyc3RMaW5lKQorICAgIGlubGluZSBTb3VyY2VDb2RlIFNvdXJjZUNv
ZGU6OnN1YkV4cHJlc3Npb24odW5zaWduZWQgb3BlbkJyYWNlLCB1bnNpZ25lZCBjbG9zZUJyYWNl
LCBpbnQgZmlyc3RMaW5lLCBpbnQgc3RhcnRDb2x1bW4pCiAgICAgewogICAgICAgICBBU1NFUlQo
cHJvdmlkZXIoKS0+c291cmNlKClbb3BlbkJyYWNlXSA9PSAneycpOwogICAgICAgICBBU1NFUlQo
cHJvdmlkZXIoKS0+c291cmNlKClbY2xvc2VCcmFjZV0gPT0gJ30nKTsKLSAgICAgICAgcmV0dXJu
IFNvdXJjZUNvZGUocHJvdmlkZXIoKSwgb3BlbkJyYWNlLCBjbG9zZUJyYWNlICsgMSwgZmlyc3RM
aW5lKTsKKyAgICAgICAgc3RhcnRDb2x1bW4gKz0gMTsgLy8gQ29udmVydCB0byBiYXNlIDEuCisg
ICAgICAgIHJldHVybiBTb3VyY2VDb2RlKHByb3ZpZGVyKCksIG9wZW5CcmFjZSwgY2xvc2VCcmFj
ZSArIDEsIGZpcnN0TGluZSwgc3RhcnRDb2x1bW4pOwogICAgIH0KIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3Zp
ZGVyLmNwcAkocmV2aXNpb24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Tb3VyY2VQcm92aWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDUwICs0MiwxMSBAQCBT
b3VyY2VQcm92aWRlcjo6flNvdXJjZVByb3ZpZGVyKCkKIHsKIH0KIAotVmVjdG9yPHNpemVfdD4m
IFNvdXJjZVByb3ZpZGVyOjpsaW5lU3RhcnRzKCkKLXsKLSAgICBpZiAoIW1fbGluZVN0YXJ0cykg
ewotICAgICAgICBtX2xpbmVTdGFydHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPHNpemVfdD4oKSk7
Ci0gICAgICAgIFN0cmluZyBzb3VyY2UgPSB0aGlzLT5zb3VyY2UoKTsKLSAgICAgICAgc2l6ZV90
IGluZGV4ID0gMDsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgbV9saW5lU3RhcnRzLT5hcHBl
bmQoaW5kZXgpOwotICAgICAgICAgICAgaW5kZXggPSBzb3VyY2UuZmluZE5leHRMaW5lU3RhcnQo
aW5kZXgpOwotICAgICAgICB9IHdoaWxlIChpbmRleCAhPSBub3RGb3VuZCk7Ci0gICAgICAgIG1f
bGluZVN0YXJ0cy0+c2hyaW5rVG9GaXQoKTsKLSAgICB9Ci0gICAgcmV0dXJuICptX2xpbmVTdGFy
dHM7Ci19Ci0KLQogc3RhdGljIGlubGluZSBzaXplX3QgY2hhclBvc2l0aW9uRXh0cmFjdG9yKGNv
bnN0IHNpemVfdCogdmFsdWUpCiB7CiAgICAgcmV0dXJuICp2YWx1ZTsKIH0KIAotc2l6ZV90IFNv
dXJjZVByb3ZpZGVyOjpjaGFyUG9zaXRpb25Ub0NvbHVtbk51bWJlcihzaXplX3QgY2hhclBvc2l0
aW9uKQotewotICAgIFZlY3RvcjxzaXplX3Q+JiBsaW5lU3RhcnRzID0gdGhpcy0+bGluZVN0YXJ0
cygpOwotICAgIHNpemVfdCogZGF0YSA9IGxpbmVTdGFydHMuZGF0YSgpOwotICAgIHNpemVfdCBk
YXRhU2l6ZSA9IGxpbmVTdGFydHMuc2l6ZSgpOwotCi0gICAgLy8gR2V0IHRoZSBuZWFyZXN0IGxp
bmUgc3RhcnQgZW50cnkgKHdoaWNoIGNvdWxkIGJlIHRvIHRoZSBsZWZ0IG9yIHRvIHRoZQotICAg
IC8vIHJpZ2h0IG9mIHRoZSByZXF1ZXN0ZWQgY2hhclBvc2l0aW9uLgotICAgIGNvbnN0IHNpemVf
dCogbGluZSA9IGFwcHJveGltYXRlQmluYXJ5U2VhcmNoPHNpemVfdCwgc2l6ZV90PihkYXRhLCBk
YXRhU2l6ZSwgY2hhclBvc2l0aW9uLCBjaGFyUG9zaXRpb25FeHRyYWN0b3IpOwotICAgIHNpemVf
dCBsaW5lU3RhcnRQb3NpdGlvbiA9ICpsaW5lOwotCi0gICAgaWYgKGxpbmVTdGFydFBvc2l0aW9u
ID4gY2hhclBvc2l0aW9uKSB7Ci0gICAgICAgIGlmIChkYXRhIDwgbGluZSkgewotICAgICAgICAg
ICAgbGluZS0tOwotICAgICAgICAgICAgbGluZVN0YXJ0UG9zaXRpb24gPSAqbGluZTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIEFTU0VSVChkYXRhIDw9IGxpbmUpOwotICAgIEFTU0VSVChsaW5l
U3RhcnRQb3NpdGlvbiA8PSBjaGFyUG9zaXRpb24pOwotICAgIHJldHVybiBjaGFyUG9zaXRpb24g
LSBsaW5lU3RhcnRQb3NpdGlvbjsKLX0KLQogc3RhdGljIFRDTWFsbG9jX1NwaW5Mb2NrIHByb3Zp
ZGVySWRMb2NrID0gU1BJTkxPQ0tfSU5JVElBTElaRVI7CiAKIHZvaWQgU291cmNlUHJvdmlkZXI6
OmdldElEKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlk
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVBy
b3ZpZGVyLmgJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvU291cmNlUHJvdmlkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsOCArNjUsNiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV92YWxp
ZGF0ZWQ7IH0KICAgICAgICAgdm9pZCBzZXRWYWxpZCgpIHsgbV92YWxpZGF0ZWQgPSB0cnVlOyB9
CiAKLSAgICAgICAgc2l6ZV90IGNoYXJQb3NpdGlvblRvQ29sdW1uTnVtYmVyKHNpemVfdCBjaGFy
UG9zaXRpb24pOwotCiAgICAgcHJpdmF0ZToKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGdldElEKCk7CkBAIC03Niw4ICs3NCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBU
ZXh0UG9zaXRpb24gbV9zdGFydFBvc2l0aW9uOwogICAgICAgICBib29sIG1fdmFsaWRhdGVkIDog
MTsKICAgICAgICAgdWludHB0cl90IG1faWQgOiBzaXplb2YodWludHB0cl90KSAqIDggLSAxOwot
Ci0gICAgICAgIE93blB0cjxWZWN0b3I8c2l6ZV90PiA+IG1fbGluZVN0YXJ0czsKICAgICB9Owog
CiAgICAgY2xhc3MgU3RyaW5nU291cmNlUHJvdmlkZXIgOiBwdWJsaWMgU291cmNlUHJvdmlkZXIg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hl
SXRlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNl
UHJvdmlkZXJDYWNoZUl0ZW0uaAkocmV2aXNpb24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw3ICszNiw4IEBAIG5hbWVzcGFjZSBKU0Mgewogc3RydWN0IFNvdXJjZVByb3ZpZGVyQ2Fj
aGVJdGVtQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICB1bnNpZ25lZCBmdW5jdGlvblN0YXJ0Owog
ICAgIHVuc2lnbmVkIGNsb3NlQnJhY2VMaW5lOwotICAgIHVuc2lnbmVkIGNsb3NlQnJhY2VQb3M7
CisgICAgdW5zaWduZWQgY2xvc2VCcmFjZU9mZnNldDsKKyAgICB1bnNpZ25lZCBjbG9zZUJyYWNl
TGluZVN0YXJ0T2Zmc2V0OwogICAgIGJvb2wgbmVlZHNGdWxsQWN0aXZhdGlvbjsKICAgICBib29s
IHVzZXNFdmFsOwogICAgIGJvb2wgc3RyaWN0TW9kZTsKQEAgLTU5LDEwICs2MCwxMyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBKU1Rva2VuIHRva2VuOwogICAgICAgICB0b2tlbi5tX3R5cGUg
PSBDTE9TRUJSQUNFOwotICAgICAgICB0b2tlbi5tX2RhdGEuaW50VmFsdWUgPSBjbG9zZUJyYWNl
UG9zOwotICAgICAgICB0b2tlbi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0ID0gY2xvc2VCcmFjZVBv
czsKLSAgICAgICAgdG9rZW4ubV9sb2NhdGlvbi5lbmRPZmZzZXQgPSBjbG9zZUJyYWNlUG9zICsg
MTsKKyAgICAgICAgdG9rZW4ubV9kYXRhLm9mZnNldCA9IGNsb3NlQnJhY2VPZmZzZXQ7CisgICAg
ICAgIHRva2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQgPSBjbG9zZUJyYWNlT2Zmc2V0OworICAg
ICAgICB0b2tlbi5tX2xvY2F0aW9uLmVuZE9mZnNldCA9IGNsb3NlQnJhY2VPZmZzZXQgKyAxOwog
ICAgICAgICB0b2tlbi5tX2xvY2F0aW9uLmxpbmUgPSBjbG9zZUJyYWNlTGluZTsKKyAgICAgICAg
dG9rZW4ubV9sb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQgPSBjbG9zZUJyYWNlTGluZVN0YXJ0T2Zm
c2V0OworICAgICAgICAvLyB0b2tlbi5tX2xvY2F0aW9uLnNvdXJjZU9mZnNldCBpcyBpbml0aWFs
aXplZCBvbmNlIGJ5IHRoZSBjbGllbnQuIFNvLAorICAgICAgICAvLyB3ZSBkbyBub3QgbmVlZCB0
byBzZXQgaXQgaGVyZS4KICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgIH0KIApAQCAtNzIsOSAr
NzYsMTAgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGNsb3NlQnJhY2VMaW5lIDogMzE7CiAgICAg
Ym9vbCB1c2VzRXZhbCA6IDE7CiAKLSAgICB1bnNpZ25lZCBjbG9zZUJyYWNlUG9zIDogMzE7Cisg
ICAgdW5zaWduZWQgY2xvc2VCcmFjZU9mZnNldCA6IDMxOwogICAgIGJvb2wgc3RyaWN0TW9kZSA6
IDE7CiAKKyAgICB1bnNpZ25lZCBjbG9zZUJyYWNlTGluZVN0YXJ0T2Zmc2V0OwogICAgIHVuc2ln
bmVkIHVzZWRWYXJpYWJsZXNDb3VudDsKICAgICB1bnNpZ25lZCB3cml0dGVuVmFyaWFibGVzQ291
bnQ7CiAKQEAgLTEwNiw4ICsxMTEsOSBAQCBpbmxpbmUgU291cmNlUHJvdmlkZXJDYWNoZUl0ZW06
OlNvdXJjZVByCiAgICAgLCBuZWVkc0Z1bGxBY3RpdmF0aW9uKHBhcmFtZXRlcnMubmVlZHNGdWxs
QWN0aXZhdGlvbikKICAgICAsIGNsb3NlQnJhY2VMaW5lKHBhcmFtZXRlcnMuY2xvc2VCcmFjZUxp
bmUpCiAgICAgLCB1c2VzRXZhbChwYXJhbWV0ZXJzLnVzZXNFdmFsKQotICAgICwgY2xvc2VCcmFj
ZVBvcyhwYXJhbWV0ZXJzLmNsb3NlQnJhY2VQb3MpCisgICAgLCBjbG9zZUJyYWNlT2Zmc2V0KHBh
cmFtZXRlcnMuY2xvc2VCcmFjZU9mZnNldCkKICAgICAsIHN0cmljdE1vZGUocGFyYW1ldGVycy5z
dHJpY3RNb2RlKQorICAgICwgY2xvc2VCcmFjZUxpbmVTdGFydE9mZnNldChwYXJhbWV0ZXJzLmNs
b3NlQnJhY2VMaW5lU3RhcnRPZmZzZXQpCiAgICAgLCB1c2VkVmFyaWFibGVzQ291bnQocGFyYW1l
dGVycy51c2VkVmFyaWFibGVzLnNpemUoKSkKICAgICAsIHdyaXR0ZW5WYXJpYWJsZXNDb3VudChw
YXJhbWV0ZXJzLndyaXR0ZW5WYXJpYWJsZXMuc2l6ZSgpKQogewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgJKHJldmlzaW9uIDE1MTkyMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTksMjEgKzExOSwyMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIERvbnRCdWlsZFN0cmluZ3MgPSBMZXhlckZsYWdzRG9udEJ1aWxkU3RyaW5nczsKIAogICAg
IGludCBjcmVhdGVTb3VyY2VFbGVtZW50cygpIHsgcmV0dXJuIDE7IH0KLSAgICBFeHByZXNzaW9u
VHlwZSBtYWtlRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQ2FsbEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlw
ZSBtYWtlRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIENhbGxFeHByOyB9CiAgICAgdm9pZCBh
cHBlbmRUb0NvbW1hKEV4cHJlc3Npb25UeXBlJiBiYXNlLCBFeHByZXNzaW9uVHlwZSByaWdodCkg
eyBiYXNlID0gcmlnaHQ7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVDb21tYUV4cHIoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlIHJpZ2h0
KSB7IHJldHVybiByaWdodDsgfQotICAgIEV4cHJlc3Npb25UeXBlIG1ha2VBc3NpZ25Ob2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBPcGVyYXRvciwgRXhwcmVzc2lv
blR5cGUsIGJvb2wsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHBy
OyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZVByZWZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvblR5cGUsIE9wZXJhdG9yLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBQ
cmVFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZVBvc3RmaXhOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBPcGVyYXRvciwgaW50LCBpbnQsIGludCkgeyBy
ZXR1cm4gUG9zdEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtlQXNzaWduTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIEV4cHJlc3Npb25U
eXBlLCBib29sLCBib29sLCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQXNzaWdu
bWVudEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtlUHJlZml4Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiBQcmVFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZVBvc3Rm
aXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBPcGVyYXRvciwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFBvc3RFeHByOyB9CiAgICAgRXhwcmVz
c2lvblR5cGUgbWFrZVR5cGVPZk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
blR5cGUpIHsgcmV0dXJuIFR5cGVvZkV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlRGVs
ZXRlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gRGVsZXRlRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VEZWxl
dGVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gRGVsZXRlRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBl
IG1ha2VOZWdhdGVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlKSB7
IHJldHVybiBVbmFyeUV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBtYWtlQml0d2lzZU5vdE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5
RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUxvZ2ljYWxOb3QoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQogICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZVVuYXJ5UGx1cyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlVm9pZChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4g
VW5hcnlFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgdGhpc0V4cHIoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJikgeyByZXR1cm4gVGhpc0V4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVS
ZXNvbHZlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQpIHsg
cmV0dXJuIFJlc29sdmVFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVzb2x2ZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gUmVzb2x2ZUV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVPYmplY3RM
aXRlcmFsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIE9iamVjdExpdGVyYWxFeHBy
OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlT2JqZWN0TGl0ZXJhbChjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBpbnQpIHsgcmV0dXJuIE9iamVjdExpdGVyYWxFeHByOyB9CiAgICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlQXJyYXkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50KSB7IHJldHVy
biBBcnJheUxpdGVyYWxFeHByOyB9CkBAIC0xNDIsMTUgKzE0MiwxNSBAQCBwdWJsaWM6CiAgICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlU3RyaW5nKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0
IElkZW50aWZpZXIqKSB7IHJldHVybiBTdHJpbmdFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUg
Y3JlYXRlQm9vbGVhbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBib29sKSB7IHJldHVybiBCb29s
RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU51bGwoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJikgeyByZXR1cm4gTnVsbEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCcmFj
a2V0QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNz
aW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQnJhY2tldEV4cHI7IH0KLSAg
ICBFeHByZXNzaW9uVHlwZSBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvblR5cGUsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50KSB7IHJldHVy
biBEb3RFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVnRXhwKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXIm
LCBpbnQpIHsgcmV0dXJuIFlhcnI6OmNoZWNrU3ludGF4KHBhdHRlcm4uc3RyaW5nKCkpID8gMCA6
IFJlZ0V4cEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCcmFja2V0QWNjZXNzKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgYm9v
bCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEJyYWNrZXRFeHByOyB9CisgICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQp
IHsgcmV0dXJuIERvdEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVSZWdFeHAoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRl
bnRpZmllciYsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFlhcnI6OmNoZWNrU3ludGF4KHBhdHRl
cm4uc3RyaW5nKCkpID8gMCA6IFJlZ0V4cEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVh
dGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9CiAgICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlTmV3RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlw
ZSwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9Ci0gICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlTmV3RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlw
ZSwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVh
dGVDb25kaXRpb25hbEV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUs
IEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gQ29uZGl0aW9uYWxFeHBy
OyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXNzaWduUmVzb2x2ZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KLSAg
ICBpbnQgY3JlYXRlRnVuY3Rpb25Cb2R5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGJvb2wpIHsgcmV0dXJuIDE7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVBc3NpZ25SZXNvbHZlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZp
ZXImLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFz
c2lnbm1lbnRFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25FeHByKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQorICAgIGludCBjcmVh
dGVGdW5jdGlvbkJvZHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgaW50LCBib29sKSB7IHJldHVybiAxOyB9CiAgICAgdm9pZCBzZXRGdW5jdGlvblN0YXJ0
KGludCwgaW50KSB7IH0KICAgICBpbnQgY3JlYXRlQXJndW1lbnRzKCkgeyByZXR1cm4gMTsgfQog
ICAgIGludCBjcmVhdGVBcmd1bWVudHMoaW50KSB7IHJldHVybiAxOyB9CkBAIC0xNzksMzkgKzE3
OSwzOSBAQCBwdWJsaWM6CiAgICAgaW50IGNyZWF0ZUNsYXVzZUxpc3QoaW50KSB7IHJldHVybiAx
OyB9CiAgICAgaW50IGNyZWF0ZUNsYXVzZUxpc3QoaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAg
ICB2b2lkIHNldFVzZXNBcmd1bWVudHMoaW50KSB7IH0KLSAgICBpbnQgY3JlYXRlRnVuY0RlY2xT
dGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlRnVu
Y0RlY2xTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllcios
IGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAgIGlu
dCBjcmVhdGVCbG9ja1N0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwg
aW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUV4cHJTdGF0ZW1lbnQoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVh
dGVJZlN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQp
IHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlSWZTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQg
Y3JlYXRlRm9yTG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQs
IGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUZvckluTG9vcChjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0
ZUZvckluTG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVGb3JJbkxvb3Ao
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7
IH0KKyAgICBpbnQgY3JlYXRlRm9ySW5Mb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsg
fQogICAgIGludCBjcmVhdGVFbXB0eVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mKSB7
IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZVZhclN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVJldHVy
blN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVCcmVha1N0YXRlbWVudChjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQg
Y3JlYXRlQnJlYWtTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRp
ZmllciosIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVD
b250aW51ZVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAx
OyB9CisgICAgaW50IGNyZWF0ZUJyZWFrU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUJy
ZWFrU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBp
bnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVDb250
aW51ZVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVDb250aW51ZVN0YXRlbWVudChjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlVHJ5U3RhdGVtZW50KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVTd2l0Y2hTdGF0ZW1lbnQoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsg
fQogICAgIGludCBjcmVhdGVXaGlsZVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBp
bnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlV2l0aFN0YXRl
bWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50
KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVdpdGhTdGF0ZW1lbnQoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlRG9XaGlsZVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRl
TGFiZWxTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllcios
IGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlVGhyb3dTdGF0ZW1l
bnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlTGFiZWxTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVy
biAxOyB9CisgICAgaW50IGNyZWF0ZVRocm93U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAg
IGludCBjcmVhdGVEZWJ1Z2dlcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCkgeyBy
ZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVDb25zdFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGFwcGVuZENvbnN0
RGVjbChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQp
IHsgcmV0dXJuIDE7IH0KLSAgICB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+IFByb3BlcnR5IGNyZWF0
ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUHJvcGVydHlO
b2RlOjpUeXBlIHR5cGUsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQpCisgICAgdGVtcGxhdGUgPGJvb2wgc3RyaWN0PiBQcm9wZXJ0eSBjcmVhdGVH
ZXR0ZXJPclNldHRlclByb3BlcnR5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5Tm9k
ZTo6VHlwZSB0eXBlLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBpbnQsIGludCwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQpCiAgICAgewogICAgICAgICBBU1NFUlQobmFtZSk7CiAgICAgICAgIGlm
ICghc3RyaWN0KQogICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5cGUpOwogICAgICAgICBy
ZXR1cm4gUHJvcGVydHkobmFtZSwgdHlwZSk7CiAgICAgfQotICAgIHRlbXBsYXRlIDxib29sIHN0
cmljdD4gUHJvcGVydHkgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShWTSogdm0sIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBkb3VibGUgbmFtZSwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkKKyAgICB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+
IFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoVk0qIHZtLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgZG91YmxlIG5hbWUsIGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkKICAgICB7CiAgICAgICAgIGlmICghc3RyaWN0
KQogICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5cGUpOwpAQCAtMjIyLDcgKzIyMiw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGFkZFZhcihjb25zdCBJZGVudGlmaWVyKiwgYm9vbCkgeyB9CiAg
ICAgaW50IGNvbWJpbmVDb21tYU5vZGVzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50
KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGV2YWxDb3VudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
LSAgICB2b2lkIGFwcGVuZEJpbmFyeUV4cHJlc3Npb25JbmZvKGludCYgb3BlcmFuZFN0YWNrRGVw
dGgsIGludCBleHByLCBpbnQsIGludCwgaW50LCBib29sKQorICAgIHZvaWQgYXBwZW5kQmluYXJ5
RXhwcmVzc2lvbkluZm8oaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgaW50IGV4cHIsIGludCwgaW50
LCBpbnQsIGludCwgaW50LCBib29sKQogICAgIHsKICAgICAgICAgaWYgKCFtX3RvcEJpbmFyeUV4
cHIpCiAgICAgICAgICAgICBtX3RvcEJpbmFyeUV4cHIgPSBleHByOwpAQCAtMjQwLDEyICsyNDAs
MTMgQEAgcHVibGljOgogICAgIHZvaWQgb3BlcmF0b3JTdGFja0FwcGVuZChpbnQmIG9wZXJhdG9y
U3RhY2tEZXB0aCwgaW50LCBpbnQpIHsgb3BlcmF0b3JTdGFja0RlcHRoKys7IH0KICAgICBpbnQg
cG9wT3BlcmFuZFN0YWNrKGludCYpIHsgaW50IHJlcyA9IG1fdG9wQmluYXJ5RXhwcjsgbV90b3BC
aW5hcnlFeHByID0gMDsgcmV0dXJuIHJlczsgfQogICAgIAotICAgIHZvaWQgYXBwZW5kVW5hcnlU
b2tlbihpbnQmIHN0YWNrRGVwdGgsIGludCB0b2ssIGludCkgeyBzdGFja0RlcHRoID0gMTsgbV90
b3BVbmFyeVRva2VuID0gdG9rOyB9CisgICAgdm9pZCBhcHBlbmRVbmFyeVRva2VuKGludCYgc3Rh
Y2tEZXB0aCwgaW50IHRvaywgaW50LCBpbnQsIGludCkgeyBzdGFja0RlcHRoID0gMTsgbV90b3BV
bmFyeVRva2VuID0gdG9rOyB9CiAgICAgaW50IHVuYXJ5VG9rZW5TdGFja0xhc3RUeXBlKGludCYp
IHsgcmV0dXJuIG1fdG9wVW5hcnlUb2tlbjsgfQotICAgIGludCB1bmFyeVRva2VuU3RhY2tMYXN0
U3RhcnQoaW50JikgeyByZXR1cm4gMDsgfQorICAgIHVuc2lnbmVkIHVuYXJ5VG9rZW5TdGFja0xh
c3RTdGFydChpbnQmKSB7IHJldHVybiAwOyB9CisgICAgdW5zaWduZWQgdW5hcnlUb2tlblN0YWNr
TGFzdExpbmVTdGFydFBvc2l0aW9uKGludCYpIHsgcmV0dXJuIDA7IH0KICAgICB2b2lkIHVuYXJ5
VG9rZW5TdGFja1JlbW92ZUxhc3QoaW50JiBzdGFja0RlcHRoKSB7IHN0YWNrRGVwdGggPSAwOyB9
CiAgICAgCi0gICAgdm9pZCBhc3NpZ25tZW50U3RhY2tBcHBlbmQoaW50LCBpbnQsIGludCwgaW50
LCBpbnQsIE9wZXJhdG9yKSB7IH0KKyAgICB2b2lkIGFzc2lnbm1lbnRTdGFja0FwcGVuZChpbnQs
IGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIE9wZXJhdG9yKSB7IH0KICAgICBpbnQgY3Jl
YXRlQXNzaWdubWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQs
IGludCkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMTsgfQogICAgIGNv
bnN0IElkZW50aWZpZXImIGdldE5hbWUoY29uc3QgUHJvcGVydHkmIHByb3BlcnR5KSBjb25zdCB7
IEFTU0VSVChwcm9wZXJ0eS5uYW1lKTsgcmV0dXJuICpwcm9wZXJ0eS5uYW1lOyB9CiAgICAgUHJv
cGVydHlOb2RlOjpUeXBlIGdldFR5cGUoY29uc3QgUHJvcGVydHkmIHByb3BlcnR5KSBjb25zdCB7
IHJldHVybiBwcm9wZXJ0eS50eXBlOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db2RlQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVDYWNoZS5jcHAJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4
LDcgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBDb2RlQ2FjaGU6OmdlbmVyYQogICAgIFJlZlB0
cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBwYXJzZTxSb290Tm9kZT4oJnZtLCBzb3VyY2UsIDAsIElk
ZW50aWZpZXIoKSwgc3RyaWN0bmVzcywgSlNQYXJzZVByb2dyYW1Db2RlLCBlcnJvcik7CiAgICAg
aWYgKCFyb290Tm9kZSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgZXhlY3V0YWJsZS0+cmVjb3Jk
UGFyc2Uocm9vdE5vZGUtPmZlYXR1cmVzKCksIHJvb3ROb2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxl
cygpLCByb290Tm9kZS0+bGluZU5vKCksIHJvb3ROb2RlLT5sYXN0TGluZSgpKTsKKyAgICBleGVj
dXRhYmxlLT5yZWNvcmRQYXJzZShyb290Tm9kZS0+ZmVhdHVyZXMoKSwgcm9vdE5vZGUtPmhhc0Nh
cHR1cmVkVmFyaWFibGVzKCksIHJvb3ROb2RlLT5saW5lTm8oKSwgcm9vdE5vZGUtPmxhc3RMaW5l
KCksIHJvb3ROb2RlLT5zdGFydENvbHVtbigpKTsKIAogICAgIFVubGlua2VkQ29kZUJsb2NrVHlw
ZSogdW5saW5rZWRDb2RlID0gVW5saW5rZWRDb2RlQmxvY2tUeXBlOjpjcmVhdGUoJnZtLCBleGVj
dXRhYmxlLT5leGVjdXRhYmxlSW5mbygpKTsKICAgICB1bmxpbmtlZENvZGUtPnJlY29yZFBhcnNl
KHJvb3ROb2RlLT5mZWF0dXJlcygpLCByb290Tm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwg
cm9vdE5vZGUtPmxpbmVObygpIC0gc291cmNlLmZpcnN0TGluZSgpLCByb290Tm9kZS0+bGFzdExp
bmUoKSAtIHJvb3ROb2RlLT5saW5lTm8oKSk7CkBAIC0xMTYsNyArMTE2LDggQEAgVW5saW5rZWRD
b2RlQmxvY2tUeXBlKiBDb2RlQ2FjaGU6OmdldENvZAogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3
RW50cnkgJiYgY2FuQ2FjaGUpIHsKICAgICAgICAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiB1bmxp
bmtlZENvZGUgPSBqc0Nhc3Q8VW5saW5rZWRDb2RlQmxvY2tUeXBlKj4oYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZS5jZWxsLmdldCgpKTsKICAgICAgICAgdW5zaWduZWQgZmlyc3RMaW5lID0gc291
cmNlLmZpcnN0TGluZSgpICsgdW5saW5rZWRDb2RlLT5maXJzdExpbmUoKTsKLSAgICAgICAgZXhl
Y3V0YWJsZS0+cmVjb3JkUGFyc2UodW5saW5rZWRDb2RlLT5jb2RlRmVhdHVyZXMoKSwgdW5saW5r
ZWRDb2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBmaXJzdExpbmUsIGZpcnN0TGluZSArIHVu
bGlua2VkQ29kZS0+bGluZUNvdW50KCkpOworICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9
IHNvdXJjZS5maXJzdExpbmUoKSA/IHNvdXJjZS5zdGFydENvbHVtbigpIDogMDsKKyAgICAgICAg
ZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UodW5saW5rZWRDb2RlLT5jb2RlRmVhdHVyZXMoKSwgdW5s
aW5rZWRDb2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBmaXJzdExpbmUsIGZpcnN0TGluZSAr
IHVubGlua2VkQ29kZS0+bGluZUNvdW50KCksIHN0YXJ0Q29sdW1uKTsKICAgICAgICAgcmV0dXJu
IHVubGlua2VkQ29kZTsKICAgICB9CiAgICAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiB1bmxpbmtl
ZENvZGUgPSBnZW5lcmF0ZUJ5dGVjb2RlPFVubGlua2VkQ29kZUJsb2NrVHlwZSwgRXhlY3V0YWJs
ZVR5cGU+KHZtLCBzY29wZSwgZXhlY3V0YWJsZSwgc291cmNlLCBzdHJpY3RuZXNzLCBkZWJ1Z2dl
ck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDEsNyArMTQxLDcgQEAgdm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIAog
CiBjb25zdCBDbGFzc0luZm8gRnVuY3Rpb25FeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJGdW5jdGlv
bkV4ZWN1dGFibGUiLCAmU2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEZ1bmN0aW9uRXhlY3V0YWJsZSkgfTsKIAotRnVuY3Rpb25FeGVjdXRhYmxlOjpG
dW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIHVuc2lnbmVkIGZpcnN0
TGluZSwgdW5zaWduZWQgbGFzdExpbmUpCitGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhl
Y3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSwgdW5zaWduZWQgZmlyc3RMaW5lLCB1bnNp
Z25lZCBsYXN0TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4pCiAgICAgOiBTY3JpcHRFeGVjdXRh
YmxlKHZtLmZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgdm0sIHNvdXJjZSwgdW5s
aW5rZWRFeGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpKQogICAgICwgbV91bmxpbmtlZEV4
ZWN1dGFibGUodm0sIHRoaXMsIHVubGlua2VkRXhlY3V0YWJsZSkKIHsKQEAgLTE0OSw2ICsxNDks
NyBAQCBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShWCiAgICAgQVNTRVJU
KHNvdXJjZS5sZW5ndGgoKSk7CiAgICAgbV9maXJzdExpbmUgPSBmaXJzdExpbmU7CiAgICAgbV9s
YXN0TGluZSA9IGxhc3RMaW5lOworICAgIG1fc3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsKIH0K
IAogdm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQpAQCAtMzIw
LDcgKzMyMSw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGUKICAg
ICAgICAgbV9wcm9ncmFtQ29kZUJsb2NrID0gbmV3Q29kZUJsb2NrLnJlbGVhc2UoKTsKICAgICB9
IGVsc2UgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc2NvcGUtPmds
b2JhbE9iamVjdCgpOwotICAgICAgICBtX3Byb2dyYW1Db2RlQmxvY2sgPSBhZG9wdFB0cihuZXcg
UHJvZ3JhbUNvZGVCbG9jayh0aGlzLCBtX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9jay5nZXQoKSwg
Z2xvYmFsT2JqZWN0LCBzb3VyY2UoKS5wcm92aWRlcigpLCBtX3Byb2dyYW1Db2RlQmxvY2sucmVs
ZWFzZSgpKSk7CisgICAgICAgIG1fcHJvZ3JhbUNvZGVCbG9jayA9IGFkb3B0UHRyKG5ldyBQcm9n
cmFtQ29kZUJsb2NrKHRoaXMsIG1fdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrLmdldCgpLCBnbG9i
YWxPYmplY3QsIHNvdXJjZSgpLnByb3ZpZGVyKCksIHNvdXJjZSgpLnN0YXJ0Q29sdW1uKCksIG1f
cHJvZ3JhbUNvZGVCbG9jay5yZWxlYXNlKCkpKTsKICAgICAgICAgbV9wcm9ncmFtQ29kZUJsb2Nr
LT5jb3B5UG9zdFBhcnNlRGF0YUZyb21BbHRlcm5hdGl2ZSgpOwogICAgIH0KIApAQCAtNTAwLDE0
ICs1MDEsMTggQEAgUGFzc093blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4gRnVuY3Rpb25FeAogICAg
IERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUgPSBnbG9iYWxPYmplY3QtPmhhc0RlYnVnZ2VyKCkg
PyBEZWJ1Z2dlck9uIDogRGVidWdnZXJPZmY7CiAgICAgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9k
ZSA9IGdsb2JhbE9iamVjdC0+aGFzUHJvZmlsZXIoKSA/IFByb2ZpbGVyT24gOiBQcm9maWxlck9m
ZjsKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IG1f
dW5saW5rZWRFeGVjdXRhYmxlLT5jb2RlQmxvY2tGb3IoKnZtLCBzY29wZSwgbV9zb3VyY2UsIHNw
ZWNpYWxpemF0aW9uS2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKLSAg
ICByZWNvcmRQYXJzZShtX3VubGlua2VkRXhlY3V0YWJsZS0+ZmVhdHVyZXMoKSwgbV91bmxpbmtl
ZEV4ZWN1dGFibGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGxpbmVObygpLCBsYXN0TGluZSgp
KTsKKyAgICByZWNvcmRQYXJzZShtX3VubGlua2VkRXhlY3V0YWJsZS0+ZmVhdHVyZXMoKSwgbV91
bmxpbmtlZEV4ZWN1dGFibGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGxpbmVObygpLCBsYXN0
TGluZSgpLCBzdGFydENvbHVtbigpKTsKIAogICAgIGlmICghdW5saW5rZWRDb2RlQmxvY2spIHsK
ICAgICAgICAgZXhjZXB0aW9uID0gZXJyb3IudG9FcnJvck9iamVjdChnbG9iYWxPYmplY3QsIG1f
c291cmNlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgT3duUHRyPEZ1
bmN0aW9uQ29kZUJsb2NrPiByZXN1bHQgPSBhZG9wdFB0cihuZXcgRnVuY3Rpb25Db2RlQmxvY2so
dGhpcywgdW5saW5rZWRDb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgc291cmNlKCkucHJvdmlkZXIo
KSwgc291cmNlKCkuc3RhcnRPZmZzZXQoKSkpOworICAgIFNvdXJjZVByb3ZpZGVyKiBwcm92aWRl
ciA9IHNvdXJjZSgpLnByb3ZpZGVyKCk7CisgICAgdW5zaWduZWQgc291cmNlT2Zmc2V0ID0gc291
cmNlKCkuc3RhcnRPZmZzZXQoKTsKKyAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IHNvdXJjZSgp
LnN0YXJ0Q29sdW1uKCk7CisKKyAgICBPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+IHJlc3VsdCA9
IGFkb3B0UHRyKG5ldyBGdW5jdGlvbkNvZGVCbG9jayh0aGlzLCB1bmxpbmtlZENvZGVCbG9jaywg
Z2xvYmFsT2JqZWN0LCBwcm92aWRlciwgc291cmNlT2Zmc2V0LCBzdGFydENvbHVtbikpOwogICAg
IHJlc3VsdC0+Y29weVBvc3RQYXJzZURhdGFGcm9tKGNvZGVCbG9ja0ZvcihzcGVjaWFsaXphdGlv
bktpbmQpLmdldCgpKTsKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KQEAgLTY1Nyw5
ICs2NjIsMTAgQEAgRnVuY3Rpb25FeGVjdXRhYmxlKiBGdW5jdGlvbkV4ZWN1dGFibGU6OgogICAg
ICAgICByZXR1cm4gMDsKICAgICB1bnNpZ25lZCBmaXJzdExpbmUgPSBzb3VyY2UuZmlyc3RMaW5l
KCkgKyB1bmxpbmtlZEZ1bmN0aW9uLT5maXJzdExpbmVPZmZzZXQoKTsKICAgICB1bnNpZ25lZCBz
dGFydE9mZnNldCA9IHNvdXJjZS5zdGFydE9mZnNldCgpICsgdW5saW5rZWRGdW5jdGlvbi0+c3Rh
cnRPZmZzZXQoKTsKKyAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IHNvdXJjZS5zdGFydENvbHVt
bigpOwogICAgIHVuc2lnbmVkIHNvdXJjZUxlbmd0aCA9IHVubGlua2VkRnVuY3Rpb24tPnNvdXJj
ZUxlbmd0aCgpOwotICAgIFNvdXJjZUNvZGUgZnVuY3Rpb25Tb3VyY2Uoc291cmNlLnByb3ZpZGVy
KCksIHN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCArIHNvdXJjZUxlbmd0aCwgZmlyc3RMaW5lKTsK
LSAgICByZXR1cm4gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoZXhlYy0+dm0oKSwgZnVuY3Rp
b25Tb3VyY2UsIHVubGlua2VkRnVuY3Rpb24sIGZpcnN0TGluZSwgdW5saW5rZWRGdW5jdGlvbi0+
bGluZUNvdW50KCkpOworICAgIFNvdXJjZUNvZGUgZnVuY3Rpb25Tb3VyY2Uoc291cmNlLnByb3Zp
ZGVyKCksIHN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCArIHNvdXJjZUxlbmd0aCwgZmlyc3RMaW5l
LCBzdGFydENvbHVtbik7CisgICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKGV4
ZWMtPnZtKCksIGZ1bmN0aW9uU291cmNlLCB1bmxpbmtlZEZ1bmN0aW9uLCBmaXJzdExpbmUsIHVu
bGlua2VkRnVuY3Rpb24tPmxpbmVDb3VudCgpLCBzdGFydENvbHVtbik7CiB9CiAKIFN0cmluZyBG
dW5jdGlvbkV4ZWN1dGFibGU6OnBhcmFtU3RyaW5nKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzgyLDYgKzM4Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLnByb3ZpZGVyKCktPnVybCgpOyB9
CiAgICAgICAgIGludCBsaW5lTm8oKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0TGluZTsgfQogICAg
ICAgICBpbnQgbGFzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RMaW5lOyB9CisgICAgICAg
IHVuc2lnbmVkIHN0YXJ0Q29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydENvbHVtbjsgfQog
CiAgICAgICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgRXZh
bEZlYXR1cmU7IH0KICAgICAgICAgYm9vbCB1c2VzQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4g
bV9mZWF0dXJlcyAmIEFyZ3VtZW50c0ZlYXR1cmU7IH0KQEAgLTM5NCwxMiArMzk1LDEzIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBz
X2luZm87CiAKLSAgICAgICAgdm9pZCByZWNvcmRQYXJzZShDb2RlRmVhdHVyZXMgZmVhdHVyZXMs
IGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkK
KyAgICAgICAgdm9pZCByZWNvcmRQYXJzZShDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGJvb2wgaGFz
Q2FwdHVyZWRWYXJpYWJsZXMsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgdW5zaWduZWQg
c3RhcnRDb2x1bW4pCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fZmVhdHVyZXMgPSBmZWF0dXJl
czsKICAgICAgICAgICAgIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgPSBoYXNDYXB0dXJlZFZhcmlh
YmxlczsKICAgICAgICAgICAgIG1fZmlyc3RMaW5lID0gZmlyc3RMaW5lOwogICAgICAgICAgICAg
bV9sYXN0TGluZSA9IGxhc3RMaW5lOworICAgICAgICAgICAgbV9zdGFydENvbHVtbiA9IHN0YXJ0
Q29sdW1uOwogICAgICAgICB9CiAKICAgICBwcm90ZWN0ZWQ6CkBAIC00MTksNiArNDIxLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9oYXNDYXB0dXJlZFZhcmlhYmxlczsKICAg
ICAgICAgaW50IG1fZmlyc3RMaW5lOwogICAgICAgICBpbnQgbV9sYXN0TGluZTsKKyAgICAgICAg
dW5zaWduZWQgbV9zdGFydENvbHVtbjsKICAgICB9OwogCiAgICAgY2xhc3MgRXZhbEV4ZWN1dGFi
bGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CkBAIC01NzMsOSArNTc2LDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUg
QmFzZTsKIAotICAgICAgICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZt
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1
bmxpbmtlZEV4ZWN1dGFibGUsIHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUp
CisgICAgICAgIHN0YXRpYyBGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSYgdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2Vk
RXhlY3V0YWJsZSwgdW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBsYXN0TGluZSwgdW5zaWdu
ZWQgc3RhcnRDb2x1bW4pCiAgICAgICAgIHsKLSAgICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZ1bmN0aW9uRXhlY3V0
YWJsZT4odm0uaGVhcCkpIEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgc291cmNlLCB1bmxpbmtlZEV4
ZWN1dGFibGUsIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgICAgICAgICAgRnVuY3Rpb25FeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RnVuY3Rpb25F
eGVjdXRhYmxlPih2bS5oZWFwKSkgRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCBzb3VyY2UsIHVubGlu
a2VkRXhlY3V0YWJsZSwgZmlyc3RMaW5lLCBsYXN0TGluZSwgc3RhcnRDb2x1bW4pOwogICAgICAg
ICAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICAgICAgcmV0dXJu
IGV4ZWN1dGFibGU7CiAgICAgICAgIH0KQEAgLTc0Niw3ICs3NDksNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCBjbGVhckNvZGUoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSosIHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUpOworICAg
ICAgICBGdW5jdGlvbkV4ZWN1dGFibGUoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqLCB1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5l
LCB1bnNpZ25lZCBzdGFydENvbHVtbik7CiAKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVGb3JD
YWxsSW50ZXJuYWwoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpJVENvZGU6OkpJVFR5cGUsIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXggPSBVSU5UX01BWCk7CiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxl
Rm9yQ29uc3RydWN0SW50ZXJuYWwoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpJVENvZGU6OkpJVFR5
cGUsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXggPSBVSU5UX01BWCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxNTI0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyNCBAQAorMjAxMy0wNy0wOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBs
ZS5jb20+CisKKyAgICAgICAgRml4IDMwJSBKU0JlbmNoIHJlZ3Jlc3Npb24gKGNhdXNlZCBieSBh
ZGRpbmcgY29sdW1uIG51bWJlcnMgdG8gc3RhY2sgdHJhY2VzKS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODQ4MS4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2pzL2xpbmUtY29sdW1u
LW51bWJlcnMuaHRtbAorCisgICAgICAgIFVwZGF0ZWQgdGhlIGJpbmRpbmdzIHRvIHVzZSBTdGFj
a0ZyYW1lOjpjb21wdXRlTGluZUFuZENvbHVtbigpLiBUaGUgb2xkCisgICAgICAgIFN0YWNrRnJh
bWU6OmxpbmUoKSBhbmQgU3RhY2tGcmFtZTo6Y29sdW1uKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVGhl
IG5ldworICAgICAgICBhbGdvcml0aG0gYWx3YXlzIGNvbXB1dGVzIHRoZSAyIHZhbHVlcyB0b2dl
dGhlciBhbnl3YXkuIEhlbmNlIGl0IGlzIG1vcmUKKyAgICAgICAgZWZmaWNpZW50IHRvIHJldHVy
biB0aGVtIGFzIGEgcGFpciBpbnN0ZWFkIG9mIGRvaW5nIHRoZSBzYW1lIGNvbXB1dGF0aW9uCisg
ICAgICAgIHR3aWNlIGZvciBlYWNoIGhhbGYgb2YgdGhlIHJlc3VsdC4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNjcmlwdENh
bGxTdGFja0Zyb21FeGNlcHRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFNvdXJj
ZUNvZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFNvdXJjZUNvZGU6OlNjcmlwdFNvdXJj
ZUNvZGUpOgorCiAyMDEzLTA3LTA4ICBSYWR1IFN0YXZpbGEgIDxzdGF2aWxhQGFkb2JlLmNvbT4K
IAogICAgICAgICBOYW1lZEZsb3dDb2xsZWN0aW9uIGdldHRlcnMgc2hvdWxkIHJldHVybiB1bmRl
ZmluZWQgd2hlbiB0aGVyZSdzIG5vIE5hbWVkRmxvdwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAJKHJldmlzaW9u
IDE1MTkyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0Zh
Y3RvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw4ICs1OSwxMiBAQCBQYXNzUmVmUHRyPFNj
cmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0CiAgICAgaWYgKEpTQzo6RXhlY1N0YXRlKiBleGVj
ID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSkgewogICAgICAgICBWZWN0
b3I8U3RhY2tGcmFtZT4gc3RhY2tUcmFjZTsKICAgICAgICAgSW50ZXJwcmV0ZXI6OmdldFN0YWNr
VHJhY2UoJmV4ZWMtPnZtKCksIHN0YWNrVHJhY2UsIG1heFN0YWNrU2l6ZSk7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhY2tUcmFjZS5zaXplKCk7IGkrKykKLSAgICAgICAgICAg
IGZyYW1lcy5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1lKHN0YWNrVHJhY2VbaV0uZnJpZW5kbHlGdW5j
dGlvbk5hbWUoZXhlYyksIHN0YWNrVHJhY2VbaV0uZnJpZW5kbHlTb3VyY2VVUkwoKSwgc3RhY2tU
cmFjZVtpXS5saW5lKCksIHN0YWNrVHJhY2VbaV0uY29sdW1uKCkpKTsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzdGFja1RyYWNlLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICB1
bnNpZ25lZCBsaW5lOworICAgICAgICAgICAgdW5zaWduZWQgY29sdW1uOworICAgICAgICAgICAg
c3RhY2tUcmFjZVtpXS5jb21wdXRlTGluZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOworICAgICAg
ICAgICAgZnJhbWVzLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUoc3RhY2tUcmFjZVtpXS5mcmllbmRs
eUZ1bmN0aW9uTmFtZShleGVjKSwgc3RhY2tUcmFjZVtpXS5mcmllbmRseVNvdXJjZVVSTCgpLCBs
aW5lLCBjb2x1bW4pKTsKKyAgICAgICAgfQogICAgIH0KICAgICBpZiAoZnJhbWVzLmlzRW1wdHko
KSAmJiAhZW1wdHlJc0FsbG93ZWQpIHsKICAgICAgICAgLy8gTm8gZnJhbWVzIGZvdW5kLiBJdCBt
YXkgaGFwcGVuIGluIHRoZSBjYXNlIHdoZXJlCkBAIC04NCw3ICs4OCwxMCBAQCBQYXNzUmVmUHRy
PFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0CiAgICAgICAgICAgICBicmVhazsKIAogICAg
ICAgICBTdHJpbmcgZnVuY3Rpb25OYW1lID0gc3RhY2tUcmFjZVtpXS5mcmllbmRseUZ1bmN0aW9u
TmFtZShleGVjKTsKLSAgICAgICAgZnJhbWVzLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUoZnVuY3Rp
b25OYW1lLCBzdGFja1RyYWNlW2ldLnNvdXJjZVVSTCwgc3RhY2tUcmFjZVtpXS5saW5lKCksIHN0
YWNrVHJhY2VbaV0uY29sdW1uKCkpKTsKKyAgICAgICAgdW5zaWduZWQgbGluZTsKKyAgICAgICAg
dW5zaWduZWQgY29sdW1uOworICAgICAgICBzdGFja1RyYWNlW2ldLmNvbXB1dGVMaW5lQW5kQ29s
dW1uKGxpbmUsIGNvbHVtbik7CisgICAgICAgIGZyYW1lcy5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1l
KGZ1bmN0aW9uTmFtZSwgc3RhY2tUcmFjZVtpXS5zb3VyY2VVUkwsIGxpbmUsIGNvbHVtbikpOwog
ICAgIH0KIAogICAgIHJldHVybiBTY3JpcHRDYWxsU3RhY2s6OmNyZWF0ZShmcmFtZXMpOwpAQCAt
OTksNyArMTA2LDEwIEBAIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHQK
ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIFN0cmluZyBmdW5jdGlvbk5hbWUgPSBzdGFj
a1RyYWNlW2ldLmZyaWVuZGx5RnVuY3Rpb25OYW1lKGV4ZWMpOwotICAgICAgICBmcmFtZXMuYXBw
ZW5kKFNjcmlwdENhbGxGcmFtZShmdW5jdGlvbk5hbWUsIHN0YWNrVHJhY2VbaV0uc291cmNlVVJM
LCBzdGFja1RyYWNlW2ldLmxpbmUoKSwgc3RhY2tUcmFjZVtpXS5jb2x1bW4oKSkpOworICAgICAg
ICB1bnNpZ25lZCBsaW5lOworICAgICAgICB1bnNpZ25lZCBjb2x1bW47CisgICAgICAgIHN0YWNr
VHJhY2VbaV0uY29tcHV0ZUxpbmVBbmRDb2x1bW4obGluZSwgY29sdW1uKTsKKyAgICAgICAgZnJh
bWVzLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUoZnVuY3Rpb25OYW1lLCBzdGFja1RyYWNlW2ldLnNv
dXJjZVVSTCwgbGluZSwgY29sdW1uKSk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IDxodHRwOi8v
d2Via2l0Lm9yZy9iLzExNTA4Nz4gV2ViIEluc3BlY3RvcjogV2ViQ29yZTo6cmVwb3J0RXhjZXB0
aW9uIHNob3VsZCBub3QgZXZhbHVhdGUgSmF2YVNjcmlwdCBoYW5kbGluZyBleGNlcHRpb25zCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oCShy
ZXZpc2lvbiAxNTE5MjApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3Vy
Y2VDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgU2NyaXB0U291
cmNlQ29kZSB7CiBwdWJsaWM6CiAgICAgU2NyaXB0U291cmNlQ29kZShjb25zdCBTdHJpbmcmIHNv
dXJjZSwgY29uc3QgS1VSTCYgdXJsID0gS1VSTCgpLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0
UG9zaXRpb24gPSBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpKQogICAgICAgICA6IG1f
cHJvdmlkZXIoSlNDOjpTdHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKHNvdXJjZSwgdXJsLmlz
TnVsbCgpID8gU3RyaW5nKCkgOiB1cmwuc3RyaW5nKCksIHN0YXJ0UG9zaXRpb24pKQotICAgICAg
ICAsIG1fY29kZShtX3Byb3ZpZGVyLCBzdGFydFBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgp
KQorICAgICAgICAsIG1fY29kZShtX3Byb3ZpZGVyLCBzdGFydFBvc2l0aW9uLm1fbGluZS5vbmVC
YXNlZEludCgpLCBzdGFydFBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCkpCiAgICAgICAg
ICwgbV91cmwodXJsKQogICAgIHsKICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTI0NjYpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MiBAQAor
MjAxMy0wNy0wOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRml4
IDMwJSBKU0JlbmNoIHJlZ3Jlc3Npb24gKGNhdXNlZCBieSBhZGRpbmcgY29sdW1uIG51bWJlcnMg
dG8gc3RhY2sgdHJhY2VzKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExODQ4MS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGUgZml4IG5vdyBjb21wdXRlcyBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycyBt
b3JlIGFjY3VyYXRlbHkuIEFzIGEgcmVzdWx0LAorICAgICAgICBzb21lIG9mIHRoZSB0ZXN0IHJl
c3VsdHMgbmVlZCB0byBiZSByZS1iYXNlbGluZWQuIEFtb25nIG90aGVyIGZpeGVzLCBvbmUKKyAg
ICAgICAgbWFqb3Igc291cmNlIG9mIGRpZmZlcmVuY2UgaXMgdGhhdCB0aGUgb2xkIGNvZGUgd2Fz
IGluY29ycmVjdGx5IGNvbXB1dGluZworICAgICAgICAwLWJhc2VkIGNvbHVtbiBudW1iZXJzLiBU
aGlzIGhhcyBub3cgYmVlbiBmaXhlZCB0byBiZSAxLWJhc2VkLgorICAgICAgICBOb3RlOiBsaW5l
IG51bWJlcnMgd2VyZSBhbHdheXMgMS1iYXNlZC4KKworICAgICAgICBBbHNvIGFkZGVkIGEgbmV3
IHRlc3Q6IGZhc3QvanMvbGluZS1jb2x1bW4tbnVtYmVycy5odG1sLCB3aGljaCB0ZXN0cyBsaW5l
CisgICAgICAgIGFuZCBjb2x1bW4gbnVtYmVycyBmb3Igc291cmNlIGNvZGUgaW4gdmFyaW91cyBj
b25maWd1cmF0aW9ucy4KKworICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1i
bG9ja3F1b3RlLXRlc3QxLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21t
YW5kL291dGRlbnQtYmxvY2txdW90ZS10ZXN0Mi1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRp
dGluZy9leGVjQ29tbWFuZC9vdXRkZW50LWJsb2NrcXVvdGUtdGVzdDMtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1ibG9ja3F1b3RlLXRlc3Q0LWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1wYXN0ZS1mbG9h
dC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWJsb2Nr
cXVvdGUtYmVmb3JlLWJsb2NrcXVvdGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcv
cGFzdGVib2FyZC9wYXN0ZS1kb3VibGUtbmVzdGVkLWJsb2NrcXVvdGUtYmVmb3JlLWJsb2NrcXVv
dGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcmVzaXpl
LWNvbnRlbnRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9yZW1vdmUtdGFy
Z2V0LXdpdGgtc2hhZG93LWluLWRyYWctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvanMv
bGluZS1jb2x1bW4tbnVtYmVycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
anMvbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3Nj
cmlwdC10ZXN0cy9saW5lLWNvbHVtbi1udW1iZXJzLmpzOiBBZGRlZC4KKyAgICAgICAgKHRyeS5k
b1Rocm93NGIpOgorICAgICAgICAoZG9UaHJvdzViLnRyeS5pbm5lckZ1bmMpOgorICAgICAgICAo
ZG9UaHJvdzViKToKKyAgICAgICAgKGRvVGhyb3c2Yi50cnkuaW5uZXJGdW5jKToKKyAgICAgICAg
KGRvVGhyb3c2Yik6CisgICAgICAgIChjYXRjaCk6CisgICAgICAgICh0cnkuZG9UaHJvdzExYik6
CisgICAgICAgICh0cnkuZG9UaHJvdzE0Yik6CisgICAgICAgICogZmFzdC9qcy9zdGFjay10cmFj
ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2NvbnNvbGUvY29uc29sZS11cmwt
bGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0OgorCiAyMDEzLTA3LTA4ICBSYWR1IFN0YXZpbGEgIDxz
dGF2aWxhQGFkb2JlLmNvbT4KIAogICAgICAgICBOYW1lZEZsb3dDb2xsZWN0aW9uIGdldHRlcnMg
c2hvdWxkIHJldHVybiB1bmRlZmluZWQgd2hlbiB0aGVyZSdzIG5vIE5hbWVkRmxvdwpJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LWJsb2NrcXVvdGUtdGVzdDEt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1h
bmQvb3V0ZGVudC1ibG9ja3F1b3RlLXRlc3QxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTUxOTIw
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LWJsb2NrcXVvdGUt
dGVzdDEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDE0OiBTVUNDRVNTOiBOb2RlcyBzdGF5ZWQgaW4gb3JkZXIgYWZ0ZXIg
b3V0ZGVudC4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxMjogU1VDQ0VTUzogTm9kZXMgc3RheWVk
IGluIG9yZGVyIGFmdGVyIG91dGRlbnQuCiBUaGlzIHRlc3QgdXNlcyB0aGUgZXhlY0NvbW1hbmQg
dG8gT3V0ZGVudCB0aGUgdGV4dCBiZWxvdy4gVGhpcyB0ZXN0IHRoYXQgbm9kZXMsIHdpdGggZGlm
ZmVyZW50IHJlbGF0aW9uc2hpcHMgd2l0aCBibG9ja3F1b3Rlcywgc3RheSBpbiB0aGUgY29ycmVj
dCBvcmRlciBhZnRlciBhbiBvdXRkZW50LgogCiBBCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5n
L2V4ZWNDb21tYW5kL291dGRlbnQtYmxvY2txdW90ZS10ZXN0Mi1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LWJsb2NrcXVv
dGUtdGVzdDItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTE5MjApCisrKyBMYXlvdXRUZXN0cy9l
ZGl0aW5nL2V4ZWNDb21tYW5kL291dGRlbnQtYmxvY2txdW90ZS10ZXN0Mi1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTQ6
IFNVQ0NFU1M6IE5vZGVzIHN0YXllZCBpbiBvcmRlciBhZnRlciBvdXRkZW50LgorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDEyOiBTVUNDRVNTOiBOb2RlcyBzdGF5ZWQgaW4gb3JkZXIgYWZ0ZXIgb3V0
ZGVudC4KIFRoaXMgdGVzdCB1c2VzIHRoZSBleGVjQ29tbWFuZCB0byBPdXRkZW50IHRoZSB0ZXh0
IGJlbG93LiBUaGlzIHRlc3QgdGhhdCBub2Rlcywgd2l0aCBkaWZmZXJlbnQgcmVsYXRpb25zaGlw
cyB3aXRoIGJsb2NrcXVvdGVzLCBzdGF5IGluIHRoZSBjb3JyZWN0IG9yZGVyIGFmdGVyIGFuIG91
dGRlbnQuCiAKIEEKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVu
dC1ibG9ja3F1b3RlLXRlc3QzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL2V4ZWNDb21tYW5kL291dGRlbnQtYmxvY2txdW90ZS10ZXN0My1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDE1MTkyMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQv
b3V0ZGVudC1ibG9ja3F1b3RlLXRlc3QzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSw0ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxNDogU1VDQ0VTUzogTm9kZXMgc3Rh
eWVkIGluIG9yZGVyIGFmdGVyIG91dGRlbnQuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTI6IFNV
Q0NFU1M6IE5vZGVzIHN0YXllZCBpbiBvcmRlciBhZnRlciBvdXRkZW50LgogVGhpcyB0ZXN0IHVz
ZXMgdGhlIGV4ZWNDb21tYW5kIHRvIE91dGRlbnQgdGhlIHRleHQgYmVsb3cuIFRoaXMgdGVzdCB0
aGF0IG5vZGVzLCB3aXRoIGRpZmZlcmVudCByZWxhdGlvbnNoaXBzIHdpdGggYmxvY2txdW90ZXMs
IHN0YXkgaW4gdGhlIGNvcnJlY3Qgb3JkZXIgYWZ0ZXIgYW4gb3V0ZGVudC4KIAogQQpJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LWJsb2NrcXVvdGUtdGVzdDQt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1h
bmQvb3V0ZGVudC1ibG9ja3F1b3RlLXRlc3Q0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTUxOTIw
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LWJsb2NrcXVvdGUt
dGVzdDQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDE0OiBTVUNDRVNTOiBOb2RlcyBzdGF5ZWQgaW4gb3JkZXIgYWZ0ZXIg
b3V0ZGVudC4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxMjogU1VDQ0VTUzogTm9kZXMgc3RheWVk
IGluIG9yZGVyIGFmdGVyIG91dGRlbnQuCiBUaGlzIHRlc3QgdXNlcyB0aGUgZXhlY0NvbW1hbmQg
dG8gT3V0ZGVudCB0aGUgdGV4dCBiZWxvdy4gVGhpcyB0ZXN0IHRoYXQgbm9kZXMsIHdpdGggZGlm
ZmVyZW50IHJlbGF0aW9uc2hpcHMgd2l0aCBibG9ja3F1b3Rlcywgc3RheSBpbiB0aGUgY29ycmVj
dCBvcmRlciBhZnRlciBhbiBvdXRkZW50LgogCiAKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC9jb3B5LXBhc3RlLWZsb2F0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1wYXN0ZS1mbG9hdC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDE1MTkyMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9j
b3B5LXBhc3RlLWZsb2F0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQg
QEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAyMDogU1VDQ0VTUzogcGFzdGUgRElEIE5PVCBrZWVw
IGZsb2F0OmxlZnQgc3R5bGUuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTg6IFNVQ0NFU1M6IHBh
c3RlIERJRCBOT1Qga2VlcCBmbG9hdDpsZWZ0IHN0eWxlLgogVGhpcyB0ZXN0IGlzIHRvIHNlZSBp
ZiB0ZXh0IHdpdGhpbiBhIGZsb2F0aW5nIGJsb2NrIGlzIHB1dCBvbnRvIHRoZSBwYXN0ZSBib2Fy
ZCB3aWh0b3V0IHRoZSBmbG9hdCBzdHlsZS4KIAogRmlyc3QgTEkKSW5kZXg6IExheW91dFRlc3Rz
L2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1ibG9ja3F1b3RlLWJlZm9yZS1ibG9ja3F1b3RlLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
cGFzdGUtYmxvY2txdW90ZS1iZWZvcmUtYmxvY2txdW90ZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDE1MTkyMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1ibG9ja3F1
b3RlLWJlZm9yZS1ibG9ja3F1b3RlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0
ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAyMDogU1VDQ0VTUzogcGFzdGluZyBzaW5n
bGVOZXN0ZWROb2RlVG9Db3B5IERJRCBOT1Qga2VlcCB0aGUgbmV3bGluZSB3aXRoaW4gdGhlIGJs
b2NrcXVvdGUuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTg6IFNVQ0NFU1M6IHBhc3Rpbmcgc2lu
Z2xlTmVzdGVkTm9kZVRvQ29weSBESUQgTk9UIGtlZXAgdGhlIG5ld2xpbmUgd2l0aGluIHRoZSBi
bG9ja3F1b3RlLgogVGhpcyB0ZXN0cyBwYXN0aW5nIGEgc2luZ2x5IG5lc3RlZCBibG9ja3F1b3Rl
IGJlZm9yZSwgYW5kIG91dHNpZGUgb2YsIGFub3RoZXIgYmxvY2txdW90ZS4gVGhpcyB0ZXN0IGRv
ZXMgbm90IHdvcmsgb3V0c2lkZSBvZiBEUlQuCiAKIGxpbmUgMgpJbmRleDogTGF5b3V0VGVzdHMv
ZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWRvdWJsZS1uZXN0ZWQtYmxvY2txdW90ZS1iZWZvcmUt
YmxvY2txdW90ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLWRvdWJsZS1uZXN0ZWQtYmxvY2txdW90ZS1iZWZvcmUtYmxvY2tx
dW90ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1MTkyMCkKKysrIExheW91dFRlc3RzL2VkaXRp
bmcvcGFzdGVib2FyZC9wYXN0ZS1kb3VibGUtbmVzdGVkLWJsb2NrcXVvdGUtYmVmb3JlLWJsb2Nr
cXVvdGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDIwOiBTVUNDRVNTOiBwYXN0aW5nIGRvdWJsZU5lc3RlZE5vZGVUb0Nv
cHkgRElEIE5PVCBrZWVwIHRoZSBuZXdsaW5lIHdpdGhpbiB0aGUgYmxvY2txdW90ZS4KK0NPTlNP
TEUgTUVTU0FHRTogbGluZSAxODogU1VDQ0VTUzogcGFzdGluZyBkb3VibGVOZXN0ZWROb2RlVG9D
b3B5IERJRCBOT1Qga2VlcCB0aGUgbmV3bGluZSB3aXRoaW4gdGhlIGJsb2NrcXVvdGUuCiBUaGlz
IHRlc3RzIHBhc3RpbmcgYSBkb3VibHkgbmVzdGVkIGJsb2NrcXVvdGUgYmVmb3JlLCBhbmQgb3V0
c2lkZSBvZiwgYW5vdGhlciBibG9ja3F1b3RlLiBUaGlzIHRlc3QgZG9lcyBub3Qgd29yayBvdXRz
aWRlIG9mIERSVC4KIAogbGluZSA0CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cv
d2luZG93LXJlc2l6ZS1jb250ZW50cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1yZXNpemUtY29udGVudHMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAxNTE5MjApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93
LXJlc2l6ZS1jb250ZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTk6IEluaXRpYWwgcmVmZXJlbmNlIG5vZGUgZGlt
ZW5zaW9ucyA4MDAgeCA2MDAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxODogSW5pdGlhbCByZWZl
cmVuY2Ugbm9kZSBkaW1lbnNpb25zIDgwMCB4IDYwMAogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIw
OiBJbmNyZWFzaW5nIHdpbmRvdyBzaXplIGJ5IDEwIHggMTAKLUNPTlNPTEUgTUVTU0FHRTogbGlu
ZSAyMzogUG9zdC1yZXNpemUgcmVmZXJlbmNlIG5vZGUgZGltZW5zaW9ucyA4MDAgeCA2MDAKK0NP
TlNPTEUgTUVTU0FHRTogbGluZSAyMjogUG9zdC1yZXNpemUgcmVmZXJlbmNlIG5vZGUgZGltZW5z
aW9ucyA4MDAgeCA2MDAKIFRoaXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgeWVsbG93IHJlZmVyZW5j
ZSBET00gbm9kZSAod2hpY2ggc2hvdWxkIGJlIGFzIGJpZyBhcyB0aGUgd2luZG93KSBnZXRzIHJl
c2l6ZWQgd2hlbiB0aGUgd2luZG93IGlzIHJlc2l6ZWQuCiAKIFRvIGF2b2lkIHJlbGF5b3V0cyBh
bmQgcmVwYWludHMgY2F1c2VkIGJ5IERPTS1iYXNlZCBsb2dnaW5nLCBpdCBkb2Vzbid0IG91dHB1
dCBhbnl0aGluZy4gUGxlYXNlIGNoZWNrIHRoZSBjb25zb2xlIGZvciBjb25maXJtYXRpb24gdGhh
dCB0aGUgbm9kZSBkaW1lbnNpb25zIGluY3JlYXNlIGJ5IDEweDEwLgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvcmVtb3ZlLXRhcmdldC13aXRoLXNoYWRvdy1pbi1kcmFnLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZW1vdmUtdGFyZ2V0
LXdpdGgtc2hhZG93LWluLWRyYWctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTE5MjApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZW1vdmUtdGFyZ2V0LXdpdGgtc2hhZG93LWluLWRyYWct
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMyBAQAotQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDM1OiBOb3RGb3VuZEVycm9yOiBET00gRXhjZXB0aW9uIDg6IEFuIGF0dGVtcHQg
d2FzIG1hZGUgdG8gcmVmZXJlbmNlIGEgTm9kZSBpbiBhIGNvbnRleHQgd2hlcmUgaXQgZG9lcyBu
b3QgZXhpc3QuCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMzU6IE5vdEZvdW5kRXJyb3I6IERPTSBF
eGNlcHRpb24gODogQW4gYXR0ZW1wdCB3YXMgbWFkZSB0byByZWZlcmVuY2UgYSBOb2RlIGluIGEg
Y29udGV4dCB3aGVyZSBpdCBkb2VzIG5vdCBleGlzdC4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAz
NDogTm90Rm91bmRFcnJvcjogRE9NIEV4Y2VwdGlvbiA4OiBBbiBhdHRlbXB0IHdhcyBtYWRlIHRv
IHJlZmVyZW5jZSBhIE5vZGUgaW4gYSBjb250ZXh0IHdoZXJlIGl0IGRvZXMgbm90IGV4aXN0Lgor
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDM0OiBOb3RGb3VuZEVycm9yOiBET00gRXhjZXB0aW9uIDg6
IEFuIGF0dGVtcHQgd2FzIG1hZGUgdG8gcmVmZXJlbmNlIGEgTm9kZSBpbiBhIGNvbnRleHQgd2hl
cmUgaXQgZG9lcyBub3QgZXhpc3QuCiBQQVNTLiBEUlQgZGlkbid0IGNyYXNoLgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9qcy9saW5lLWNvbHVtbi1udW1iZXJzLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2xpbmUtY29sdW1uLW51bWJlcnMtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9saW5lLWNvbHVtbi1udW1i
ZXJzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4OSBAQAorVGhpcyB0
ZXN0IGNoZWNrcyBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycyBpbiBzdGFjayB0cmFjZXMgZm9yIGNv
cnJlY3RuZXNzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworLS0+IENhc2UgMSBT
dGFjayBUcmFjZToKKyAgICAwICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5o
dG1sOjQwOjM2CisKKy0tPiBDYXNlIDIgU3RhY2sgVHJhY2U6CisgICAgMCAgIGdsb2JhbCBjb2Rl
IGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDo0NDo0MAorCistLT4gQ2FzZSAzIFN0YWNrIFRy
YWNlOgorICAgIDAgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmh0bWw6NDg6
MzIKKworLS0+IENhc2UgMyBTdGFjayBUcmFjZToKKyAgICAwICAgZ2xvYmFsIGNvZGUgYXQgbGlu
ZS1jb2x1bW4tbnVtYmVycy5odG1sOjQ4OjExMworCistLT4gQ2FzZSA0IFN0YWNrIFRyYWNlOgor
ICAgIDAgICBkb1Rocm93NCBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmh0bWw6NTQ6NDQKKyAgICAx
ICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjU1OjEzCisKKy0tPiBD
YXNlIDUgU3RhY2sgVHJhY2U6CisgICAgMCAgIGlubmVyRnVuYyBhdCBsaW5lLWNvbHVtbi1udW1i
ZXJzLmh0bWw6NjQ6NjkKKyAgICAxICAgZG9UaHJvdzUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5o
dG1sOjY0OjgyCisgICAgMiAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRt
bDo2NDoxMzMKKworLS0+IENhc2UgNiBTdGFjayBUcmFjZToKKyAgICAwICAgaW5uZXJGdW5jIGF0
IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDo3MDo2OQorICAgIDEgICBkb1Rocm93NiBhdCBsaW5l
LWNvbHVtbi1udW1iZXJzLmh0bWw6NzA6ODIKKyAgICAyICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1j
b2x1bW4tbnVtYmVycy5odG1sOjcwOjEzMworCistLT4gQ2FzZSA3IFN0YWNrIFRyYWNlOgorICAg
IDAgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjc1OjUxCisgICAgMSAgIGdsb2JhbCBj
b2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDo3NTo1NQorCistLT4gQ2FzZSA4IFN0YWNr
IFRyYWNlOgorICAgIDAgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjc4OjU5CisgICAg
MSAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDo3ODo2MworCistLT4g
Q2FzZSA5IFN0YWNrIFRyYWNlOgorICAgIDAgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1s
OjgyOjU1CisgICAgMSAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDo4
Mjo1OQorCistLT4gQ2FzZSA5IFN0YWNrIFRyYWNlOgorICAgIDAgICAgYXQgbGluZS1jb2x1bW4t
bnVtYmVycy5odG1sOjgyOjE1NworICAgIDEgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1u
dW1iZXJzLmh0bWw6ODI6MTYxCisKKy0tPiBDYXNlIDEwIFN0YWNrIFRyYWNlOgorICAgIDAgICAg
YXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjg5OjI2CisgICAgMSAgIGdsb2JhbCBjb2RlIGF0
IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDo5MDo4CisKKy0tPiBDYXNlIDExIFN0YWNrIFRyYWNl
OgorICAgIDAgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjEwMTo0MQorICAgIDEgICBk
b1Rocm93MTEgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjEwMTo0NQorICAgIDIgICBnbG9i
YWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmh0bWw6MTAzOjE0CisKKy0tPiBDYXNlIDEy
IFN0YWNrIFRyYWNlOgorICAgIDAgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjExMjo1
MworICAgIDEgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjExMjo1NworICAgIDIgICBn
bG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmh0bWw6MTEyOjYyCisKKy0tPiBDYXNl
IDEzIFN0YWNrIFRyYWNlOgorICAgIDAgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjEx
ODo1MworICAgIDEgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjExODo1NworICAgIDIg
ICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmh0bWw6MTE4OjYyCisKKy0tPiBD
YXNlIDE0IFN0YWNrIFRyYWNlOgorICAgIDAgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1s
OjEyNDo3NgorICAgIDEgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjEyNDo4MAorICAg
IDIgICBkb1Rocm93MTQgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjEyNDo4NQorICAgIDMg
ICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmh0bWw6MTI0Ojk5CisKKy0tPiBD
YXNlIDE1IFN0YWNrIFRyYWNlOgorICAgIDAgICAgYXQgZXZhbCBjb2RlCisgICAgMSAgIGV2YWwg
YXQgW25hdGl2ZSBjb2RlXQorICAgIDIgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1i
ZXJzLmh0bWw6MTMwOjUKKworLS0+IENhc2UgMTYgU3RhY2sgVHJhY2U6CisgICAgMCAgICBhdCBk
b1Rocm93MTYKKyAgICAxICAgIGF0IGV2YWwgY29kZQorICAgIDIgICBldmFsIGF0IFtuYXRpdmUg
Y29kZV0KKyAgICAzICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjEz
Njo1CisKKy0tPiBDYXNlIDE3IFN0YWNrIFRyYWNlOgorICAgIDAgICAgYXQgCisgICAgMSAgICBh
dCBldmFsIGNvZGUKKyAgICAyICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCisgICAgMyAgIGdsb2Jh
bCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDoxNDk6NQorCistLT4gQ2FzZSAxOCBT
dGFjayBUcmFjZToKKyAgICAwICAgIGF0IAorICAgIDEgICAgYXQgZXZhbCBjb2RlCisgICAgMiAg
IGV2YWwgYXQgW25hdGl2ZSBjb2RlXQorICAgIDMgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVt
bi1udW1iZXJzLmh0bWw6MTU1OjUKKworLS0+IENhc2UgMSBTdGFjayBUcmFjZToKKyAgICAwICAg
Z2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5qczozOjI4CisKKy0tPiBDYXNlIDIg
U3RhY2sgVHJhY2U6CisgICAgMCAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMu
anM6NzozMgorCistLT4gQ2FzZSAzIFN0YWNrIFRyYWNlOgorICAgIDAgICBnbG9iYWwgY29kZSBh
dCBsaW5lLWNvbHVtbi1udW1iZXJzLmpzOjExOjI0CisKKy0tPiBDYXNlIDMgU3RhY2sgVHJhY2U6
CisgICAgMCAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuanM6MTE6ODgKKwor
LS0+IENhc2UgNCBTdGFjayBUcmFjZToKKyAgICAwICAgZG9UaHJvdzRiIGF0IGxpbmUtY29sdW1u
LW51bWJlcnMuanM6MTY6NDUKKyAgICAxICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVt
YmVycy5qczoxNzoxNAorCistLT4gQ2FzZSA1IFN0YWNrIFRyYWNlOgorICAgIDAgICBpbm5lckZ1
bmMgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5qczoyNDo3MAorICAgIDEgICBkb1Rocm93NWIgYXQg
bGluZS1jb2x1bW4tbnVtYmVycy5qczoyNDo4MworICAgIDIgICBnbG9iYWwgY29kZSBhdCBsaW5l
LWNvbHVtbi1udW1iZXJzLmpzOjI0OjEzNQorCistLT4gQ2FzZSA2IFN0YWNrIFRyYWNlOgorICAg
IDAgICBpbm5lckZ1bmMgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5qczoyODo3MAorICAgIDEgICBk
b1Rocm93NmIgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5qczoyODo4MworICAgIDIgICBnbG9iYWwg
Y29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmpzOjI4OjEzNQorCistLT4gQ2FzZSA3IFN0YWNr
IFRyYWNlOgorICAgIDAgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5qczozMjo0MworICAgIDEg
ICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmpzOjMyOjQ3CisKKy0tPiBDYXNl
IDggU3RhY2sgVHJhY2U6CisgICAgMCAgICBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmpzOjM2OjQ3
CisgICAgMSAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuanM6MzY6NTEKKwor
LS0+IENhc2UgOSBTdGFjayBUcmFjZToKKyAgICAwICAgIGF0IGxpbmUtY29sdW1uLW51bWJlcnMu
anM6NDA6MzkKKyAgICAxICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5qczo0
MDo0MworCistLT4gQ2FzZSA5IFN0YWNrIFRyYWNlOgorICAgIDAgICAgYXQgbGluZS1jb2x1bW4t
bnVtYmVycy5qczo0MDoxMjQKKyAgICAxICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVt
YmVycy5qczo0MDoxMjgKKworLS0+IENhc2UgMTAgU3RhY2sgVHJhY2U6CisgICAgMCAgICBhdCBs
aW5lLWNvbHVtbi1udW1iZXJzLmpzOjQ2OjI2CisgICAgMSAgIGdsb2JhbCBjb2RlIGF0IGxpbmUt
Y29sdW1uLW51bWJlcnMuanM6NDc6OAorCistLT4gQ2FzZSAxMSBTdGFjayBUcmFjZToKKyAgICAw
ICAgIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuanM6NTY6NDEKKyAgICAxICAgZG9UaHJvdzExYiBh
dCBsaW5lLWNvbHVtbi1udW1iZXJzLmpzOjU2OjQ1CisgICAgMiAgIGdsb2JhbCBjb2RlIGF0IGxp
bmUtY29sdW1uLW51bWJlcnMuanM6NTg6MTUKKworLS0+IENhc2UgMTIgU3RhY2sgVHJhY2U6Cisg
ICAgMCAgICBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmpzOjY1OjUzCisgICAgMSAgICBhdCBsaW5l
LWNvbHVtbi1udW1iZXJzLmpzOjY1OjU3CisgICAgMiAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29s
dW1uLW51bWJlcnMuanM6NjU6NjIKKworLS0+IENhc2UgMTMgU3RhY2sgVHJhY2U6CisgICAgMCAg
ICBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmpzOjY5OjUzCisgICAgMSAgICBhdCBsaW5lLWNvbHVt
bi1udW1iZXJzLmpzOjY5OjU3CisgICAgMiAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51
bWJlcnMuanM6Njk6NjIKKworLS0+IENhc2UgMTQgU3RhY2sgVHJhY2U6CisgICAgMCAgICBhdCBs
aW5lLWNvbHVtbi1udW1iZXJzLmpzOjczOjc3CisgICAgMSAgICBhdCBsaW5lLWNvbHVtbi1udW1i
ZXJzLmpzOjczOjgxCisgICAgMiAgIGRvVGhyb3cxNGIgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5q
czo3Mzo4NgorICAgIDMgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmpzOjcz
OjEwMQorCistLT4gQ2FzZSAxNSBTdGFjayBUcmFjZToKKyAgICAwICAgIGF0IGV2YWwgY29kZQor
ICAgIDEgICBldmFsIGF0IFtuYXRpdmUgY29kZV0KKyAgICAyICAgZ2xvYmFsIGNvZGUgYXQgbGlu
ZS1jb2x1bW4tbnVtYmVycy5qczo3Nzo1CisKKy0tPiBDYXNlIDE2IFN0YWNrIFRyYWNlOgorICAg
IDAgICAgYXQgZG9UaHJvdzE1YgorICAgIDEgICAgYXQgZXZhbCBjb2RlCisgICAgMiAgIGV2YWwg
YXQgW25hdGl2ZSBjb2RlXQorICAgIDMgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1i
ZXJzLmpzOjgxOjUKKworLS0+IENhc2UgMTcgU3RhY2sgVHJhY2U6CisgICAgMCAgICBhdCAKKyAg
ICAxICAgIGF0IGV2YWwgY29kZQorICAgIDIgICBldmFsIGF0IFtuYXRpdmUgY29kZV0KKyAgICAz
ICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5qczo5Mjo1CisKKy0tPiBDYXNl
IDE4IFN0YWNrIFRyYWNlOgorICAgIDAgICAgYXQgCisgICAgMSAgICBhdCBldmFsIGNvZGUKKyAg
ICAyICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCisgICAgMyAgIGdsb2JhbCBjb2RlIGF0IGxpbmUt
Y29sdW1uLW51bWJlcnMuanM6OTY6NQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9saW5lLWNvbHVt
bi1udW1iZXJzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9saW5lLWNv
bHVtbi1udW1iZXJzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2xp
bmUtY29sdW1uLW51bWJlcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3MCBAQAor
PGh0bWw+Cis8aGVhZD4KKwk8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyI+CisJPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKwk8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
Kwk8cCBpZD0iY29uc29sZSI+PC9wPgorCis8c2NyaXB0PgoraWYgKCF0aGlzLmFsZXJ0KSB7Cisg
ICAgZGVidWcgPSBwcmludDsKKyAgICBkZXNjcmlwdGlvbiA9IHByaW50OworfQorCitkZXNjcmlw
dGlvbigKKydUaGlzIHRlc3QgY2hlY2tzIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzIGluIHN0YWNr
IHRyYWNlcyBmb3IgY29ycmVjdG5lc3MuJworKTsKKwordGVzdElkID0gMDsKK2Z1bmN0aW9uIHBy
aW50U3RhY2soc3RhY2tUcmFjZSkgeworICAgIGRlYnVnKCItLT4gQ2FzZSAiICsgdGVzdElkICsg
IiBTdGFjayBUcmFjZToiKQorICAgIHN0YWNrVHJhY2UgPSBzdGFja1RyYWNlLnNwbGl0KCJcbiIp
OworICAgIHZhciBsZW5ndGggPSBNYXRoLm1pbihzdGFja1RyYWNlLmxlbmd0aCwgMTAwKTsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIHZhciBpbmRleE9m
QXQgPSBzdGFja1RyYWNlW2ldLmluZGV4T2YoJ0AnKQorICAgICAgICB2YXIgaW5kZXhPZkxhc3RT
bGFzaCA9IHN0YWNrVHJhY2VbaV0ubGFzdEluZGV4T2YoJy8nKTsKKyAgICAgICAgaWYgKGluZGV4
T2ZMYXN0U2xhc2ggPT0gLTEpCisgICAgICAgICAgICBpbmRleE9mTGFzdFNsYXNoID0gaW5kZXhP
ZkF0CisgICAgICAgIHZhciBmdW5jdGlvbk5hbWUgPSBzdGFja1RyYWNlW2ldLnN1YnN0cmluZygw
LCBpbmRleE9mQXQpOworICAgICAgICB2YXIgZmlsZU5hbWUgPSBzdGFja1RyYWNlW2ldLnN1YnN0
cmluZyhpbmRleE9mTGFzdFNsYXNoICsgMSk7CisgICAgICAgIGRlYnVnKCIgICAgIiArIGkgKyAi
ICAgIiArIGZ1bmN0aW9uTmFtZSArICIgYXQgIiArIGZpbGVOYW1lKTsKKyAgICB9CisgICAgZGVi
dWcoJycpOworfQorPC9zY3JpcHQ+CisKKzwhLS0gQ2FzZSAxOiBUaHJvdyBhbmQgcHJpbnQgc3Rh
Y2s6IC0tPgorPHNjcmlwdD50ZXN0SWQrKzs8L3NjcmlwdD4KKyAgICA8c2NyaXB0PnRyeSB7IHRo
cm93IG5ldyBFcnJvcigpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH08L3Nj
cmlwdD4KKworPCEtLSBDYXNlIDI6IFNhbWUgcHJvZ3JhbSBhcyBDYXNlIDEgYnV0IGluZGVudGVk
LiAtLT4KKzxzY3JpcHQ+dGVzdElkKys7PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+dHJ5IHsg
dGhyb3cgbmV3IEVycm9yKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLnN0YWNrKTsgfTwv
c2NyaXB0PgorCis8IS0tIENhc2UgMzogU2FtZSBwcm9ncmFtIGluZGVudGVkIG9uIHRoZSBzYW1l
IGxpbmUuIC0tPgorPHNjcmlwdD50ZXN0SWQrKzs8L3NjcmlwdD4KKzxzY3JpcHQ+dHJ5IHsgdGhy
b3cgbmV3IEVycm9yKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLnN0YWNrKTsgfTwvc2Ny
aXB0PiAgIDxzY3JpcHQ+dHJ5IHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gY2F0Y2ggKGUpIHsgcHJp
bnRTdGFjayhlLnN0YWNrKTsgfTwvc2NyaXB0PgorCis8IS0tIENhc2UgNDogVGhyb3cgaW5zaWRl
IGEgRnVuY3Rpb24uIC0tPgorPHNjcmlwdD50ZXN0SWQrKzs8L3NjcmlwdD4KKzxzY3JpcHQ+Cit0
cnkgeworICAgIGZ1bmN0aW9uIGRvVGhyb3c0KCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfQorICAg
IGRvVGhyb3c0KCk7Cit9IGNhdGNoKGUpIHsKKyAgICBwcmludFN0YWNrKGUuc3RhY2spOworfQor
PC9zY3JpcHQ+CisKKzwhLS0gQ2FzZSA1OiBGdW5jdGlvbiB3cmFwcGluZyBhIEZ1bmN0aW9uLiAt
LT4KKzxzY3JpcHQ+dGVzdElkKys7PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gZG9UaHJv
dzUoKSB7IHRyeSB7IGZ1bmN0aW9uIGlubmVyRnVuYygpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0g
aW5uZXJGdW5jKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLnN0YWNrKTsgfX07IGRvVGhy
b3c1KCk7Cis8L3NjcmlwdD4KKworPCEtLSBDYXNlIDY6IFNhbWUgaW5uZXIgZnVuY3Rpb24gYm9k
eSBhcyBDYXNlIDUuIC0tPgorPHNjcmlwdD50ZXN0SWQrKzs8L3NjcmlwdD4KKzxzY3JpcHQ+Citm
dW5jdGlvbiBkb1Rocm93NigpIHsgdHJ5IHsgZnVuY3Rpb24gaW5uZXJGdW5jKCkgeyB0aHJvdyBu
ZXcgRXJyb3IoKTsgfSBpbm5lckZ1bmMoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuc3Rh
Y2spOyB9fTsgZG9UaHJvdzYoKTsKKzwvc2NyaXB0PgorCis8IS0tIENhc2UgNzogQ2FzZSAxIHJl
ZG9uZSB3aXRoIGEgRnVuY3Rpb24gRXhwcmVzc2lvbi4gLS0+Cis8c2NyaXB0PnRlc3RJZCsrOzwv
c2NyaXB0PgorICAgIDxzY3JpcHQ+dHJ5IHsgKGZ1bmN0aW9uICgpIHsgdGhyb3cgbmV3IEVycm9y
KCk7IH0pKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLnN0YWNrKTsgfTwvc2NyaXB0Pgor
PCEtLSBDYXNlIDg6IENhc2UgMiByZWRvbmUgd2l0aCBhIEZ1bmN0aW9uIEV4cHJlc3Npb24uIC0t
PgorPHNjcmlwdD50ZXN0SWQrKzs8L3NjcmlwdD4KKyAgICAgICAgICAgIDxzY3JpcHQ+dHJ5IHsg
KGZ1bmN0aW9uICgpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0pKCk7IH0gY2F0Y2ggKGUpIHsgcHJp
bnRTdGFjayhlLnN0YWNrKTsgfTwvc2NyaXB0PgorCis8IS0tIENhc2UgOTogQ2FzZSAzIHJlZG9u
ZSB3aXRoIGEgRnVuY3Rpb24gRXhwcmVzc2lvbi4gLS0+Cis8c2NyaXB0PnRlc3RJZCsrOzwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0PnRyeSB7IChmdW5jdGlvbiAoKSB7IHRocm93IG5ldyBFcnJv
cigpOyB9KSgpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH08L3NjcmlwdD4g
ICA8c2NyaXB0PnRyeSB7IChmdW5jdGlvbiAoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9KSgpOyB9
IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH08L3NjcmlwdD4KKworPCEtLSBDYXNl
IDEwOiBGdW5jdGlvbiBFeHByZXNzaW9uIGFzIG11bHRpcGxlIGxpbmVzLiAtLT4KKzxzY3JpcHQ+
dGVzdElkKys7PC9zY3JpcHQ+Cis8c2NyaXB0PgordHJ5IHsKKyAgICAoZnVuY3Rpb24gKCkgewor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKKyAgICAgfSkoKTsKK30gY2F0Y2goZSkgeworICAg
IHByaW50U3RhY2soZS5zdGFjayk7Cit9Cis8L3NjcmlwdD4KKworPCEtLSBDYXNlIDExOiBDYXNl
IDQgcmVkb25lIHdpdGggYSBGdW5jdGlvbiB3cmFwcGluZyBGdW5jdGlvbiBFeHByZXNzaW9uLiAt
LT4KKzxzY3JpcHQ+dGVzdElkKys7PC9zY3JpcHQ+Cis8c2NyaXB0PgordHJ5IHsKKyAgICBmdW5j
dGlvbiBkb1Rocm93MTEoKSB7CisgICAgICAgIChmdW5jdGlvbiAoKSB7IHRocm93IG5ldyBFcnJv
cigpOyB9KSgpOworICAgIH0KKyAgICBkb1Rocm93MTEoKTsKK30gY2F0Y2goZSkgeworICAgIHBy
aW50U3RhY2soZS5zdGFjayk7Cit9Cis8L3NjcmlwdD4KKworPCEtLSBDYXNlIDEyOiBBIEZ1bmN0
aW9uIEV4cHJlc3Npb24gd3JhcHBpbmcgYSBGdW5jdGlvbiBFeHByZXNzaW9uLiAtLT4KKzxzY3Jp
cHQ+dGVzdElkKys7PC9zY3JpcHQ+Cis8c2NyaXB0PgordHJ5IHsgKGZ1bmN0aW9uICgpIHsoZnVu
Y3Rpb24gKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSkoKTt9KSgpOyB9IGNhdGNoIChlKSB7IHBy
aW50U3RhY2soZS5zdGFjayk7IH0KKzwvc2NyaXB0PgorCis8IS0tIENhc2UgMTM6IFNhbWUgZnVu
Y3Rpb24gYm9keSBhcyBDYXNlIDEyLiAtLT4KKzxzY3JpcHQ+dGVzdElkKys7PC9zY3JpcHQ+Cis8
c2NyaXB0PgordHJ5IHsgKGZ1bmN0aW9uICgpIHsoZnVuY3Rpb24gKCkgeyB0aHJvdyBuZXcgRXJy
b3IoKTsgfSkoKTt9KSgpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH0KKzwv
c2NyaXB0PgorCis8IS0tIENhc2UgMTQ6IEZ1bmN0aW9uIEV4cHJlc3Npb24gaW4gYSBGdW5jdGlv
biBFeHByZXNzaW9uIGluIGEgRnVuY3Rpb24uIC0tPgorPHNjcmlwdD50ZXN0SWQrKzs8L3Njcmlw
dD4KKzxzY3JpcHQ+Cit0cnkgeyBmdW5jdGlvbiBkb1Rocm93MTQoKSB7KGZ1bmN0aW9uICgpIHsg
KGZ1bmN0aW9uICgpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0pKCk7fSkoKTt9IGRvVGhyb3cxNCgp
OyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH0KKzwvc2NyaXB0PgorCis8IS0t
IENhc2UgMTU6IFRocm93IGluIGFuIEV2YWwuIC0tPgorPHNjcmlwdD50ZXN0SWQrKzs8L3Njcmlw
dD4KKzxzY3JpcHQ+CitldmFsKCJ0cnkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSBjYXRjaChlKSB7
IHByaW50U3RhY2soZS5zdGFjayk7IH0iKTsKKzwvc2NyaXB0PgorCis8IS0tIENhc2UgMTY6IE11
bHRpcGxlIGxpbmVzIGluIGFuIEV2YWwuIC0tPgorPHNjcmlwdD50ZXN0SWQrKzs8L3NjcmlwdD4K
KzxzY3JpcHQ+CitldmFsKCJcbiIgKworInRyeSB7XG4iICsKKyIgICAgZnVuY3Rpb24gZG9UaHJv
dzE2KCkge3Rocm93IG5ldyBFcnJvcigpO31cbiIgKworIiAgICBkb1Rocm93MTYoKTtcbiIgKwor
In0gY2F0Y2goZSkge1xuIiArCisiICAgIHByaW50U3RhY2soZS5zdGFjayk7XG4iICsKKyJ9XG4i
ICsKKyIiKTsKKzwvc2NyaXB0PgorCis8IS0tIENhc2UgMTc6IEZ1bmN0aW9uIEV4cHJlc3Npb24g
aW4gYW4gRXZhbC4gLS0+Cis8c2NyaXB0PnRlc3RJZCsrOzwvc2NyaXB0PgorPHNjcmlwdD4KK2V2
YWwoInRyeSB7IChmdW5jdGlvbiAoKSB7IHRocm93IG5ldyBFcnJvcigpO30pKCk7IH0gY2F0Y2go
ZSkgeyBwcmludFN0YWNrKGUuc3RhY2spOyB9Iik7Cis8L3NjcmlwdD4KKworPCEtLSBDYXNlIDE4
OiBNdWx0aXBsZSBsaW5lcyB3aXRoIGEgRnVuY3Rpb24gRXhwcmVzc2lvbiBpbiBhbiBFdmFsLiAt
LT4KKzxzY3JpcHQ+dGVzdElkKys7PC9zY3JpcHQ+Cis8c2NyaXB0PgorZXZhbCgiXG4iICsKKyJ0
cnkge1xuIiArCisiICAgIChmdW5jdGlvbiAoKSB7IHRocm93IG5ldyBFcnJvcigpO30pKCk7XG4i
ICsKKyJ9IGNhdGNoKGUpIHtcbiIgKworIiAgICBwcmludFN0YWNrKGUuc3RhY2spO1xuIiArCisi
fVxuIiArCisiIik7Cis8L3NjcmlwdD4KKworPCEtLSBOb3cgZG8gaXQgYWxsIG92ZXIgd2l0aCBh
IGxvYWRlZCBzY3JpcHQgZmlsZS4gLS0+Cis8c2NyaXB0PnRlc3RJZCA9IDA7PC9zY3JpcHQ+CisJ
PHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9saW5lLWNvbHVtbi1udW1iZXJzLmpzIj48L3Njcmlw
dD4KKworCTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvc3RhY2stdHJhY2Ut
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvc3RhY2stdHJh
Y2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTE5MjApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pz
L3N0YWNrLXRyYWNlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw0NjEgKzQsNDYx
IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEEKIAogCiAtLT4gU3Rh
Y2sgVHJhY2U6Ci0gICAgMCAgIG5vcm1hbElubmVyIGF0IHN0YWNrLXRyYWNlLmpzOjMxOjQ2Ci0g
ICAgMSAgIG5vcm1hbE91dGVyIGF0IHN0YWNrLXRyYWNlLmpzOjMwOjM2Ci0gICAgMiAgIGdsb2Jh
bCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjM2OjE3CisgICAgMCAgIG5vcm1hbElubmVyIGF0IHN0
YWNrLXRyYWNlLmpzOjMxOjQ3CisgICAgMSAgIG5vcm1hbE91dGVyIGF0IHN0YWNrLXRyYWNlLmpz
OjMwOjM3CisgICAgMiAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjM2OjE4CiAKIC0t
PiBTdGFjayBUcmFjZToKLSAgICAwICAgaW5uZXIgYXQgc3RhY2stdHJhY2UuanM6Mjg6NjgKKyAg
ICAwICAgaW5uZXIgYXQgc3RhY2stdHJhY2UuanM6Mjg6NjkKICAgICAxICAgIGF0IGV2YWwgY29k
ZQogICAgIDIgICBldmFsIGF0IFtuYXRpdmUgY29kZV0KLSAgICAzICAgZXZhbGVyIGF0IHN0YWNr
LXRyYWNlLmpzOjI5OjI4Ci0gICAgNCAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjM5
OjEyCisgICAgMyAgIGV2YWxlciBhdCBzdGFjay10cmFjZS5qczoyOToyOQorICAgIDQgICBnbG9i
YWwgY29kZSBhdCBzdGFjay10cmFjZS5qczozOToxMwogCiAtLT4gU3RhY2sgVHJhY2U6Ci0gICAg
MCAgIGlubmVyIGF0IHN0YWNrLXRyYWNlLmpzOjI4OjY4Ci0gICAgMSAgIG91dGVyIGF0IHN0YWNr
LXRyYWNlLmpzOjI3OjMzCisgICAgMCAgIGlubmVyIGF0IHN0YWNrLXRyYWNlLmpzOjI4OjY5Cisg
ICAgMSAgIG91dGVyIGF0IHN0YWNrLXRyYWNlLmpzOjI3OjM0CiAgICAgMiAgICBhdCBldmFsIGNv
ZGUKICAgICAzICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgNCAgIGV2YWxlciBhdCBzdGFj
ay10cmFjZS5qczoyOToyOAotICAgIDUgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczo0
MDoxMgorICAgIDQgICBldmFsZXIgYXQgc3RhY2stdHJhY2UuanM6Mjk6MjkKKyAgICA1ICAgZ2xv
YmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6NDA6MTMKIAogLS0+IFN0YWNrIFRyYWNlOgotICAg
IDAgICBpbm5lciBhdCBzdGFjay10cmFjZS5qczoyODo2OAotICAgIDEgICBnbG9iYWwgY29kZSBh
dCBzdGFjay10cmFjZS5qczo0MzoyMgorICAgIDAgICBpbm5lciBhdCBzdGFjay10cmFjZS5qczoy
ODo2OQorICAgIDEgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczo0MzoyMwogCiAtLT4g
U3RhY2sgVHJhY2U6Ci0gICAgMCAgIGlubmVyIGF0IHN0YWNrLXRyYWNlLmpzOjI4OjY4Ci0gICAg
MSAgIG91dGVyIGF0IHN0YWNrLXRyYWNlLmpzOjI3OjMzCi0gICAgMiAgIGdsb2JhbCBjb2RlIGF0
IHN0YWNrLXRyYWNlLmpzOjQ0OjIyCisgICAgMCAgIGlubmVyIGF0IHN0YWNrLXRyYWNlLmpzOjI4
OjY5CisgICAgMSAgIG91dGVyIGF0IHN0YWNrLXRyYWNlLmpzOjI3OjM0CisgICAgMiAgIGdsb2Jh
bCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjQ0OjIzCiAKIC0tPiBTdGFjayBUcmFjZToKICAgICAw
ICAgYXBwZW5kQ2hpbGQgYXQgW25hdGl2ZSBjb2RlXQotICAgIDEgICBob3N0VGhyb3dlciBhdCBz
dGFjay10cmFjZS5qczoyNTo1OQotICAgIDIgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5q
czo0NzoxNworICAgIDEgICBob3N0VGhyb3dlciBhdCBzdGFjay10cmFjZS5qczoyNTo2MAorICAg
IDIgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczo0NzoxOAogCiAtLT4gU3RhY2sgVHJh
Y2U6Ci0gICAgMCAgIGh0bWxJbm5lciBhdCBzdGFjay10cmFjZS5odG1sOjEwOjU1Ci0gICAgMSAg
IHNjcmlwdGVySW5uZXIgYXQgc3RhY2stdHJhY2UuanM6MzI6MzYKLSAgICAyICAgZ2xvYmFsIGNv
ZGUgYXQgc3RhY2stdHJhY2UuanM6NDk6MTkKLQotLS0+IFN0YWNrIFRyYWNlOgotICAgIDAgICBo
dG1sSW5uZXIgYXQgc3RhY2stdHJhY2UuaHRtbDoxMDo1NQotICAgIDEgICBodG1sT3V0ZXIgYXQg
c3RhY2stdHJhY2UuaHRtbDoxMTozMgotICAgIDIgICBzY3JpcHRlck91dGVyIGF0IHN0YWNrLXRy
YWNlLmpzOjMzOjM2Ci0gICAgMyAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjUwOjE5
Ci0KLS0tPiBTdGFjayBUcmFjZToKLSAgICAwICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJh
Y2UuanM6NTI6NDIKLSAgICAxICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6
NDIKLSAgICAyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICAz
ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA0ICAgc2VsZlJl
Y3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA1ICAgc2VsZlJlY3Vyc2l2ZTEg
YXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA2ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2st
dHJhY2UuanM6NTI6NDIKLSAgICA3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6
NTI6NDIKLSAgICA4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAg
ICA5ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICAxMCAgIHNl
bGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgMTEgICBzZWxmUmVjdXJz
aXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDEyICAgc2VsZlJlY3Vyc2l2ZTEgYXQg
c3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICAxMyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRy
YWNlLmpzOjUyOjQyCi0gICAgMTQgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1
Mjo0MgotICAgIDE1ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAg
ICAxNiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgMTcgICBz
ZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDE4ICAgc2VsZlJlY3Vy
c2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICAxOSAgIHNlbGZSZWN1cnNpdmUxIGF0
IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgMjAgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10
cmFjZS5qczo1Mjo0MgotICAgIDIxICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6
NTI6NDIKLSAgICAyMiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0g
ICAgMjMgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDI0ICAg
c2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICAyNSAgIHNlbGZSZWN1
cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgMjYgICBzZWxmUmVjdXJzaXZlMSBh
dCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDI3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2st
dHJhY2UuanM6NTI6NDIKLSAgICAyOCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpz
OjUyOjQyCi0gICAgMjkgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0Mgot
ICAgIDMwICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICAzMSAg
IHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgMzIgICBzZWxmUmVj
dXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDMzICAgc2VsZlJlY3Vyc2l2ZTEg
YXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICAzNCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNr
LXRyYWNlLmpzOjUyOjQyCi0gICAgMzUgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5q
czo1Mjo0MgotICAgIDM2ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIK
LSAgICAzNyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgMzgg
ICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDM5ICAgc2VsZlJl
Y3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA0MCAgIHNlbGZSZWN1cnNpdmUx
IGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNDEgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFj
ay10cmFjZS5qczo1Mjo0MgotICAgIDQyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2Uu
anM6NTI6NDIKLSAgICA0MyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQy
Ci0gICAgNDQgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDQ1
ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA0NiAgIHNlbGZS
ZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNDcgICBzZWxmUmVjdXJzaXZl
MSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDQ4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3Rh
Y2stdHJhY2UuanM6NTI6NDIKLSAgICA0OSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNl
LmpzOjUyOjQyCi0gICAgNTAgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0
MgotICAgIDUxICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA1
MiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNTMgICBzZWxm
UmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDU0ICAgc2VsZlJlY3Vyc2l2
ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA1NSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0
YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNTYgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFj
ZS5qczo1Mjo0MgotICAgIDU3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6
NDIKLSAgICA1OCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAg
NTkgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDYwICAgc2Vs
ZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA2MSAgIHNlbGZSZWN1cnNp
dmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNjIgICBzZWxmUmVjdXJzaXZlMSBhdCBz
dGFjay10cmFjZS5qczo1Mjo0MgotICAgIDYzICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJh
Y2UuanM6NTI6NDIKLSAgICA2NCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUy
OjQyCi0gICAgNjUgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAg
IDY2ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA2NyAgIHNl
bGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNjggICBzZWxmUmVjdXJz
aXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDY5ICAgc2VsZlJlY3Vyc2l2ZTEgYXQg
c3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA3MCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRy
YWNlLmpzOjUyOjQyCi0gICAgNzEgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1
Mjo0MgotICAgIDcyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAg
ICA3MyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNzQgICBz
ZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDc1ICAgc2VsZlJlY3Vy
c2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA3NiAgIHNlbGZSZWN1cnNpdmUxIGF0
IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNzcgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10
cmFjZS5qczo1Mjo0MgotICAgIDc4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6
NTI6NDIKLSAgICA3OSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0g
ICAgODAgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDgxICAg
c2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA4MiAgIHNlbGZSZWN1
cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgODMgICBzZWxmUmVjdXJzaXZlMSBh
dCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDg0ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2st
dHJhY2UuanM6NTI6NDIKLSAgICA4NSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpz
OjUyOjQyCi0gICAgODYgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0Mgot
ICAgIDg3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA4OCAg
IHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgODkgICBzZWxmUmVj
dXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDkwICAgc2VsZlJlY3Vyc2l2ZTEg
YXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA5MSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNr
LXRyYWNlLmpzOjUyOjQyCi0gICAgOTIgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5q
czo1Mjo0MgotICAgIDkzICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIK
LSAgICA5NCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgOTUg
ICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDk2ICAgc2VsZlJl
Y3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA5NyAgIHNlbGZSZWN1cnNpdmUx
IGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgOTggICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFj
ay10cmFjZS5qczo1Mjo0MgotICAgIDk5ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2Uu
anM6NTI6NDIKLQotLS0+IFN0YWNrIFRyYWNlOgotICAgIDAgICBzZWxmUmVjdXJzaXZlMiBhdCBz
dGFjay10cmFjZS5qczo2MjoyNgotICAgIDEgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFj
ZS5qczo2MjoyNgotICAgIDIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2Mjoy
NgotICAgIDMgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDQg
ICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDUgICBzZWxmUmVj
dXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDYgICBzZWxmUmVjdXJzaXZlMiBh
dCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDcgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10
cmFjZS5qczo2MjoyNgotICAgIDggICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2
MjoyNgotICAgIDkgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAg
IDEwICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICAxMSAgIHNl
bGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgMTIgICBzZWxmUmVjdXJz
aXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDEzICAgc2VsZlJlY3Vyc2l2ZTIgYXQg
c3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICAxNCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRy
YWNlLmpzOjYyOjI2Ci0gICAgMTUgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2
MjoyNgotICAgIDE2ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAg
ICAxNyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgMTggICBz
ZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDE5ICAgc2VsZlJlY3Vy
c2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICAyMCAgIHNlbGZSZWN1cnNpdmUyIGF0
IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgMjEgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10
cmFjZS5qczo2MjoyNgotICAgIDIyICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6
NjI6MjYKLSAgICAyMyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0g
ICAgMjQgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDI1ICAg
c2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICAyNiAgIHNlbGZSZWN1
cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgMjcgICBzZWxmUmVjdXJzaXZlMiBh
dCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDI4ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2st
dHJhY2UuanM6NjI6MjYKLSAgICAyOSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpz
OjYyOjI2Ci0gICAgMzAgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgot
ICAgIDMxICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICAzMiAg
IHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgMzMgICBzZWxmUmVj
dXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDM0ICAgc2VsZlJlY3Vyc2l2ZTIg
YXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICAzNSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNr
LXRyYWNlLmpzOjYyOjI2Ci0gICAgMzYgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5q
czo2MjoyNgotICAgIDM3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYK
LSAgICAzOCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgMzkg
ICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDQwICAgc2VsZlJl
Y3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA0MSAgIHNlbGZSZWN1cnNpdmUy
IGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNDIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFj
ay10cmFjZS5qczo2MjoyNgotICAgIDQzICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2Uu
anM6NjI6MjYKLSAgICA0NCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2
Ci0gICAgNDUgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDQ2
ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA0NyAgIHNlbGZS
ZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNDggICBzZWxmUmVjdXJzaXZl
MiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDQ5ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3Rh
Y2stdHJhY2UuanM6NjI6MjYKLSAgICA1MCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNl
LmpzOjYyOjI2Ci0gICAgNTEgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2Mjoy
NgotICAgIDUyICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA1
MyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNTQgICBzZWxm
UmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDU1ICAgc2VsZlJlY3Vyc2l2
ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA1NiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0
YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNTcgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFj
ZS5qczo2MjoyNgotICAgIDU4ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6
MjYKLSAgICA1OSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAg
NjAgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDYxICAgc2Vs
ZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA2MiAgIHNlbGZSZWN1cnNp
dmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNjMgICBzZWxmUmVjdXJzaXZlMiBhdCBz
dGFjay10cmFjZS5qczo2MjoyNgotICAgIDY0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJh
Y2UuanM6NjI6MjYKLSAgICA2NSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYy
OjI2Ci0gICAgNjYgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAg
IDY3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA2OCAgIHNl
bGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNjkgICBzZWxmUmVjdXJz
aXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDcwICAgc2VsZlJlY3Vyc2l2ZTIgYXQg
c3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA3MSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRy
YWNlLmpzOjYyOjI2Ci0gICAgNzIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2
MjoyNgotICAgIDczICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAg
ICA3NCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNzUgICBz
ZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDc2ICAgc2VsZlJlY3Vy
c2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA3NyAgIHNlbGZSZWN1cnNpdmUyIGF0
IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNzggICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10
cmFjZS5qczo2MjoyNgotICAgIDc5ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6
NjI6MjYKLSAgICA4MCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0g
ICAgODEgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDgyICAg
c2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA4MyAgIHNlbGZSZWN1
cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgODQgICBzZWxmUmVjdXJzaXZlMiBh
dCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDg1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2st
dHJhY2UuanM6NjI6MjYKLSAgICA4NiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpz
OjYyOjI2Ci0gICAgODcgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgot
ICAgIDg4ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA4OSAg
IHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgOTAgICBzZWxmUmVj
dXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDkxICAgc2VsZlJlY3Vyc2l2ZTIg
YXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA5MiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNr
LXRyYWNlLmpzOjYyOjI2Ci0gICAgOTMgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5q
czo2MjoyNgotICAgIDk0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYK
LSAgICA5NSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgOTYg
ICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDk3ICAgc2VsZlJl
Y3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA5OCAgIHNlbGZSZWN1cnNpdmUy
IGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgOTkgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFj
ay10cmFjZS5qczo2MjoyNgorICAgIDAgICBodG1sSW5uZXIgYXQgc3RhY2stdHJhY2UuaHRtbDox
MDo1NgorICAgIDEgICBzY3JpcHRlcklubmVyIGF0IHN0YWNrLXRyYWNlLmpzOjMyOjM3CisgICAg
MiAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjQ5OjIwCisKKy0tPiBTdGFjayBUcmFj
ZToKKyAgICAwICAgaHRtbElubmVyIGF0IHN0YWNrLXRyYWNlLmh0bWw6MTA6NTYKKyAgICAxICAg
aHRtbE91dGVyIGF0IHN0YWNrLXRyYWNlLmh0bWw6MTE6MzMKKyAgICAyICAgc2NyaXB0ZXJPdXRl
ciBhdCBzdGFjay10cmFjZS5qczozMzozNworICAgIDMgICBnbG9iYWwgY29kZSBhdCBzdGFjay10
cmFjZS5qczo1MDoyMAorCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIHNlbGZSZWN1cnNpdmUx
IGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgMSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNr
LXRyYWNlLmpzOjUyOjQzCisgICAgMiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpz
OjUyOjQzCisgICAgMyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisg
ICAgNCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNSAgIHNl
bGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNiAgIHNlbGZSZWN1cnNp
dmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0
YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgOCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNl
LmpzOjUyOjQzCisgICAgOSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQz
CisgICAgMTAgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDEx
ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICAxMiAgIHNlbGZS
ZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgMTMgICBzZWxmUmVjdXJzaXZl
MSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDE0ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3Rh
Y2stdHJhY2UuanM6NTI6NDMKKyAgICAxNSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNl
LmpzOjUyOjQzCisgICAgMTYgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0
MworICAgIDE3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICAx
OCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgMTkgICBzZWxm
UmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDIwICAgc2VsZlJlY3Vyc2l2
ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICAyMSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0
YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgMjIgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFj
ZS5qczo1Mjo0MworICAgIDIzICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6
NDMKKyAgICAyNCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAg
MjUgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDI2ICAgc2Vs
ZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICAyNyAgIHNlbGZSZWN1cnNp
dmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgMjggICBzZWxmUmVjdXJzaXZlMSBhdCBz
dGFjay10cmFjZS5qczo1Mjo0MworICAgIDI5ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJh
Y2UuanM6NTI6NDMKKyAgICAzMCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUy
OjQzCisgICAgMzEgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAg
IDMyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICAzMyAgIHNl
bGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgMzQgICBzZWxmUmVjdXJz
aXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDM1ICAgc2VsZlJlY3Vyc2l2ZTEgYXQg
c3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICAzNiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRy
YWNlLmpzOjUyOjQzCisgICAgMzcgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1
Mjo0MworICAgIDM4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAg
ICAzOSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNDAgICBz
ZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDQxICAgc2VsZlJlY3Vy
c2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA0MiAgIHNlbGZSZWN1cnNpdmUxIGF0
IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNDMgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10
cmFjZS5qczo1Mjo0MworICAgIDQ0ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6
NTI6NDMKKyAgICA0NSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisg
ICAgNDYgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDQ3ICAg
c2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA0OCAgIHNlbGZSZWN1
cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNDkgICBzZWxmUmVjdXJzaXZlMSBh
dCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDUwICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2st
dHJhY2UuanM6NTI6NDMKKyAgICA1MSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpz
OjUyOjQzCisgICAgNTIgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0Mwor
ICAgIDUzICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA1NCAg
IHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNTUgICBzZWxmUmVj
dXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDU2ICAgc2VsZlJlY3Vyc2l2ZTEg
YXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA1NyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNr
LXRyYWNlLmpzOjUyOjQzCisgICAgNTggICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5q
czo1Mjo0MworICAgIDU5ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMK
KyAgICA2MCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNjEg
ICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDYyICAgc2VsZlJl
Y3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA2MyAgIHNlbGZSZWN1cnNpdmUx
IGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNjQgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFj
ay10cmFjZS5qczo1Mjo0MworICAgIDY1ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2Uu
anM6NTI6NDMKKyAgICA2NiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQz
CisgICAgNjcgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDY4
ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA2OSAgIHNlbGZS
ZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNzAgICBzZWxmUmVjdXJzaXZl
MSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDcxICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3Rh
Y2stdHJhY2UuanM6NTI6NDMKKyAgICA3MiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNl
LmpzOjUyOjQzCisgICAgNzMgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0
MworICAgIDc0ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA3
NSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNzYgICBzZWxm
UmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDc3ICAgc2VsZlJlY3Vyc2l2
ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA3OCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0
YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNzkgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFj
ZS5qczo1Mjo0MworICAgIDgwICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6
NDMKKyAgICA4MSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAg
ODIgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDgzICAgc2Vs
ZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA4NCAgIHNlbGZSZWN1cnNp
dmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgODUgICBzZWxmUmVjdXJzaXZlMSBhdCBz
dGFjay10cmFjZS5qczo1Mjo0MworICAgIDg2ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJh
Y2UuanM6NTI6NDMKKyAgICA4NyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUy
OjQzCisgICAgODggICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAg
IDg5ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA5MCAgIHNl
bGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgOTEgICBzZWxmUmVjdXJz
aXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDkyICAgc2VsZlJlY3Vyc2l2ZTEgYXQg
c3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA5MyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRy
YWNlLmpzOjUyOjQzCisgICAgOTQgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1
Mjo0MworICAgIDk1ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAg
ICA5NiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgOTcgICBz
ZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDk4ICAgc2VsZlJlY3Vy
c2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA5OSAgIHNlbGZSZWN1cnNpdmUxIGF0
IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisKKy0tPiBTdGFjayBUcmFjZToKKyAgICAwICAgc2VsZlJl
Y3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICAxICAgc2VsZlJlY3Vyc2l2ZTIg
YXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICAyICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2st
dHJhY2UuanM6NjI6MjcKKyAgICAzICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6
NjI6MjcKKyAgICA0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAg
ICA1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA2ICAgc2Vs
ZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA3ICAgc2VsZlJlY3Vyc2l2
ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA4ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3Rh
Y2stdHJhY2UuanM6NjI6MjcKKyAgICA5ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2Uu
anM6NjI6MjcKKyAgICAxMCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3
CisgICAgMTEgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDEy
ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICAxMyAgIHNlbGZS
ZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgMTQgICBzZWxmUmVjdXJzaXZl
MiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDE1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3Rh
Y2stdHJhY2UuanM6NjI6MjcKKyAgICAxNiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNl
LmpzOjYyOjI3CisgICAgMTcgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2Mjoy
NworICAgIDE4ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICAx
OSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgMjAgICBzZWxm
UmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDIxICAgc2VsZlJlY3Vyc2l2
ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICAyMiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0
YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgMjMgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFj
ZS5qczo2MjoyNworICAgIDI0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6
MjcKKyAgICAyNSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAg
MjYgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDI3ICAgc2Vs
ZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICAyOCAgIHNlbGZSZWN1cnNp
dmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgMjkgICBzZWxmUmVjdXJzaXZlMiBhdCBz
dGFjay10cmFjZS5qczo2MjoyNworICAgIDMwICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJh
Y2UuanM6NjI6MjcKKyAgICAzMSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYy
OjI3CisgICAgMzIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAg
IDMzICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICAzNCAgIHNl
bGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgMzUgICBzZWxmUmVjdXJz
aXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDM2ICAgc2VsZlJlY3Vyc2l2ZTIgYXQg
c3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICAzNyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRy
YWNlLmpzOjYyOjI3CisgICAgMzggICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2
MjoyNworICAgIDM5ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAg
ICA0MCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNDEgICBz
ZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDQyICAgc2VsZlJlY3Vy
c2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA0MyAgIHNlbGZSZWN1cnNpdmUyIGF0
IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNDQgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10
cmFjZS5qczo2MjoyNworICAgIDQ1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6
NjI6MjcKKyAgICA0NiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3Cisg
ICAgNDcgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDQ4ICAg
c2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA0OSAgIHNlbGZSZWN1
cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNTAgICBzZWxmUmVjdXJzaXZlMiBh
dCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDUxICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2st
dHJhY2UuanM6NjI6MjcKKyAgICA1MiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpz
OjYyOjI3CisgICAgNTMgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNwor
ICAgIDU0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA1NSAg
IHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNTYgICBzZWxmUmVj
dXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDU3ICAgc2VsZlJlY3Vyc2l2ZTIg
YXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA1OCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNr
LXRyYWNlLmpzOjYyOjI3CisgICAgNTkgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5q
czo2MjoyNworICAgIDYwICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcK
KyAgICA2MSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNjIg
ICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDYzICAgc2VsZlJl
Y3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA2NCAgIHNlbGZSZWN1cnNpdmUy
IGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNjUgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFj
ay10cmFjZS5qczo2MjoyNworICAgIDY2ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2Uu
anM6NjI6MjcKKyAgICA2NyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3
CisgICAgNjggICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDY5
ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA3MCAgIHNlbGZS
ZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNzEgICBzZWxmUmVjdXJzaXZl
MiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDcyICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3Rh
Y2stdHJhY2UuanM6NjI6MjcKKyAgICA3MyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNl
LmpzOjYyOjI3CisgICAgNzQgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2Mjoy
NworICAgIDc1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA3
NiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNzcgICBzZWxm
UmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDc4ICAgc2VsZlJlY3Vyc2l2
ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA3OSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0
YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgODAgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFj
ZS5qczo2MjoyNworICAgIDgxICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6
MjcKKyAgICA4MiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAg
ODMgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDg0ICAgc2Vs
ZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA4NSAgIHNlbGZSZWN1cnNp
dmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgODYgICBzZWxmUmVjdXJzaXZlMiBhdCBz
dGFjay10cmFjZS5qczo2MjoyNworICAgIDg3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJh
Y2UuanM6NjI6MjcKKyAgICA4OCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYy
OjI3CisgICAgODkgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAg
IDkwICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA5MSAgIHNl
bGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgOTIgICBzZWxmUmVjdXJz
aXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDkzICAgc2VsZlJlY3Vyc2l2ZTIgYXQg
c3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA5NCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRy
YWNlLmpzOjYyOjI3CisgICAgOTUgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2
MjoyNworICAgIDk2ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAg
ICA5NyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgOTggICBz
ZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDk5ICAgc2VsZlJlY3Vy
c2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKIAogLS0+IFN0YWNrIFRyYWNlOgogICAgIDAg
ICBldmFsIGF0IFtuYXRpdmUgY29kZV0KLSAgICAxICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2st
dHJhY2UuanM6Njk6OAorICAgIDEgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2
OTo5CiAgICAgMiAgICBhdCBldmFsIGNvZGUKICAgICAzICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVd
Ci0gICAgNCAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAgICA0ICAg
c2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OQogICAgIDUgICAgYXQgZXZhbCBj
b2RlCiAgICAgNiAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDcgICBzZWxmUmVjdXJzaXZl
MyBhdCBzdGFjay10cmFjZS5qczo2OTo4CisgICAgNyAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNr
LXRyYWNlLmpzOjY5OjkKICAgICA4ICAgIGF0IGV2YWwgY29kZQogICAgIDkgICBldmFsIGF0IFtu
YXRpdmUgY29kZV0KLSAgICAxMCAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5
OjgKKyAgICAxMCAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICAx
MSAgICBhdCBldmFsIGNvZGUKICAgICAxMiAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDEz
ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OAorICAgIDEzICAgc2VsZlJl
Y3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OQogICAgIDE0ICAgIGF0IGV2YWwgY29kZQog
ICAgIDE1ICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgMTYgICBzZWxmUmVjdXJzaXZlMyBh
dCBzdGFjay10cmFjZS5qczo2OTo4CisgICAgMTYgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10
cmFjZS5qczo2OTo5CiAgICAgMTcgICAgYXQgZXZhbCBjb2RlCiAgICAgMTggICBldmFsIGF0IFtu
YXRpdmUgY29kZV0KLSAgICAxOSAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5
OjgKKyAgICAxOSAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICAy
MCAgICBhdCBldmFsIGNvZGUKICAgICAyMSAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDIy
ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OAorICAgIDIyICAgc2VsZlJl
Y3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OQogICAgIDIzICAgIGF0IGV2YWwgY29kZQog
ICAgIDI0ICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgMjUgICBzZWxmUmVjdXJzaXZlMyBh
dCBzdGFjay10cmFjZS5qczo2OTo4CisgICAgMjUgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10
cmFjZS5qczo2OTo5CiAgICAgMjYgICAgYXQgZXZhbCBjb2RlCiAgICAgMjcgICBldmFsIGF0IFtu
YXRpdmUgY29kZV0KLSAgICAyOCAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5
OjgKKyAgICAyOCAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICAy
OSAgICBhdCBldmFsIGNvZGUKICAgICAzMCAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDMx
ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OAorICAgIDMxICAgc2VsZlJl
Y3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OQogICAgIDMyICAgIGF0IGV2YWwgY29kZQog
ICAgIDMzICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgMzQgICBzZWxmUmVjdXJzaXZlMyBh
dCBzdGFjay10cmFjZS5qczo2OTo4CisgICAgMzQgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10
cmFjZS5qczo2OTo5CiAgICAgMzUgICAgYXQgZXZhbCBjb2RlCiAgICAgMzYgICBldmFsIGF0IFtu
YXRpdmUgY29kZV0KLSAgICAzNyAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5
OjgKKyAgICAzNyAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICAz
OCAgICBhdCBldmFsIGNvZGUKICAgICAzOSAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDQw
ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OAorICAgIDQwICAgc2VsZlJl
Y3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OQogICAgIDQxICAgIGF0IGV2YWwgY29kZQog
ICAgIDQyICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgNDMgICBzZWxmUmVjdXJzaXZlMyBh
dCBzdGFjay10cmFjZS5qczo2OTo4CisgICAgNDMgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10
cmFjZS5qczo2OTo5CiAgICAgNDQgICAgYXQgZXZhbCBjb2RlCiAgICAgNDUgICBldmFsIGF0IFtu
YXRpdmUgY29kZV0KLSAgICA0NiAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5
OjgKKyAgICA0NiAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA0
NyAgICBhdCBldmFsIGNvZGUKICAgICA0OCAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDQ5
ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OAorICAgIDQ5ICAgc2VsZlJl
Y3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OQogICAgIDUwICAgIGF0IGV2YWwgY29kZQog
ICAgIDUxICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgNTIgICBzZWxmUmVjdXJzaXZlMyBh
dCBzdGFjay10cmFjZS5qczo2OTo4CisgICAgNTIgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10
cmFjZS5qczo2OTo5CiAgICAgNTMgICAgYXQgZXZhbCBjb2RlCiAgICAgNTQgICBldmFsIGF0IFtu
YXRpdmUgY29kZV0KLSAgICA1NSAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5
OjgKKyAgICA1NSAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA1
NiAgICBhdCBldmFsIGNvZGUKICAgICA1NyAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDU4
ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OAorICAgIDU4ICAgc2VsZlJl
Y3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OQogICAgIDU5ICAgIGF0IGV2YWwgY29kZQog
ICAgIDYwICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgNjEgICBzZWxmUmVjdXJzaXZlMyBh
dCBzdGFjay10cmFjZS5qczo2OTo4CisgICAgNjEgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10
cmFjZS5qczo2OTo5CiAgICAgNjIgICAgYXQgZXZhbCBjb2RlCiAgICAgNjMgICBldmFsIGF0IFtu
YXRpdmUgY29kZV0KLSAgICA2NCAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5
OjgKKyAgICA2NCAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA2
NSAgICBhdCBldmFsIGNvZGUKICAgICA2NiAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDY3
ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OAorICAgIDY3ICAgc2VsZlJl
Y3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OQogICAgIDY4ICAgIGF0IGV2YWwgY29kZQog
ICAgIDY5ICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgNzAgICBzZWxmUmVjdXJzaXZlMyBh
dCBzdGFjay10cmFjZS5qczo2OTo4CisgICAgNzAgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10
cmFjZS5qczo2OTo5CiAgICAgNzEgICAgYXQgZXZhbCBjb2RlCiAgICAgNzIgICBldmFsIGF0IFtu
YXRpdmUgY29kZV0KLSAgICA3MyAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5
OjgKKyAgICA3MyAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA3
NCAgICBhdCBldmFsIGNvZGUKICAgICA3NSAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDc2
ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OAorICAgIDc2ICAgc2VsZlJl
Y3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OQogICAgIDc3ICAgIGF0IGV2YWwgY29kZQog
ICAgIDc4ICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgNzkgICBzZWxmUmVjdXJzaXZlMyBh
dCBzdGFjay10cmFjZS5qczo2OTo4CisgICAgNzkgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10
cmFjZS5qczo2OTo5CiAgICAgODAgICAgYXQgZXZhbCBjb2RlCiAgICAgODEgICBldmFsIGF0IFtu
YXRpdmUgY29kZV0KLSAgICA4MiAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5
OjgKKyAgICA4MiAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA4
MyAgICBhdCBldmFsIGNvZGUKICAgICA4NCAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDg1
ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OAorICAgIDg1ICAgc2VsZlJl
Y3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OQogICAgIDg2ICAgIGF0IGV2YWwgY29kZQog
ICAgIDg3ICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgODggICBzZWxmUmVjdXJzaXZlMyBh
dCBzdGFjay10cmFjZS5qczo2OTo4CisgICAgODggICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10
cmFjZS5qczo2OTo5CiAgICAgODkgICAgYXQgZXZhbCBjb2RlCiAgICAgOTAgICBldmFsIGF0IFtu
YXRpdmUgY29kZV0KLSAgICA5MSAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5
OjgKKyAgICA5MSAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA5
MiAgICBhdCBldmFsIGNvZGUKICAgICA5MyAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDk0
ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OAorICAgIDk0ICAgc2VsZlJl
Y3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OQogICAgIDk1ICAgIGF0IGV2YWwgY29kZQog
ICAgIDk2ICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgOTcgICBzZWxmUmVjdXJzaXZlMyBh
dCBzdGFjay10cmFjZS5qczo2OTo4CisgICAgOTcgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10
cmFjZS5qczo2OTo5CiAgICAgOTggICAgYXQgZXZhbCBjb2RlCiAgICAgOTkgICBldmFsIGF0IFtu
YXRpdmUgY29kZV0KIAogLS0+IFN0YWNrIFRyYWNlOgotICAgIDAgICB0aHJvd0Vycm9yIGF0IHN0
YWNrLXRyYWNlLmpzOjc3OjEyCi0gICAgMSAgIHZhbHVlT2YgYXQgc3RhY2stdHJhY2UuanM6ODQ6
MjYKLSAgICAyICAgZ2V0dGVyMSBhdCBzdGFjay10cmFjZS5qczo4NzoxOAotICAgIDMgICBub25J
bmxpbmVhYmxlIGF0IHN0YWNrLXRyYWNlLmpzOjExMzoxNgotICAgIDQgICBpbmxpbmVhYmxlIGF0
IHN0YWNrLXRyYWNlLmpzOjEyMToyNgotICAgIDUgICB5ZXRBbm90aGVySW5saW5lZENhbGwgYXQg
c3RhY2stdHJhY2UuanM6MTI2OjE2Ci0gICAgNiAgIG1ha2VJbmxpbmFibGVDYWxsIGF0IHN0YWNr
LXRyYWNlLmpzOjEzMTozMwotICAgIDcgICBnIGF0IHN0YWNrLXRyYWNlLmpzOjE0MDozMworICAg
IDAgICB0aHJvd0Vycm9yIGF0IHN0YWNrLXRyYWNlLmpzOjc3OjEzCisgICAgMSAgIHZhbHVlT2Yg
YXQgc3RhY2stdHJhY2UuanM6ODQ6MjcKKyAgICAyICAgZ2V0dGVyMSBhdCBzdGFjay10cmFjZS5q
czo4NzoxMQorICAgIDMgICBub25JbmxpbmVhYmxlIGF0IHN0YWNrLXRyYWNlLmpzOjExMzoxNwor
ICAgIDQgICBpbmxpbmVhYmxlIGF0IHN0YWNrLXRyYWNlLmpzOjEyMToyNworICAgIDUgICB5ZXRB
bm90aGVySW5saW5lZENhbGwgYXQgc3RhY2stdHJhY2UuanM6MTI2OjE3CisgICAgNiAgIG1ha2VJ
bmxpbmFibGVDYWxsIGF0IHN0YWNrLXRyYWNlLmpzOjEzMTozNAorICAgIDcgICBnIGF0IHN0YWNr
LXRyYWNlLmpzOjE0MDozNAogICAgIDggICBtYXAgYXQgW25hdGl2ZSBjb2RlXQotICAgIDkgICBn
bG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczoxNDM6MTUKKyAgICA5ICAgZ2xvYmFsIGNvZGUg
YXQgc3RhY2stdHJhY2UuanM6MTQzOjE2CiAKIC0tPiBTdGFjayBUcmFjZToKLSAgICAwICAgdGhy
b3dFcnJvciBhdCBzdGFjay10cmFjZS5qczo3NzoxMgotICAgIDEgICBnZXR0ZXIyIGF0IHN0YWNr
LXRyYWNlLmpzOjkzOjMxCi0gICAgMiAgIG5vbklubGluZWFibGUgYXQgc3RhY2stdHJhY2UuanM6
MTE1OjE2Ci0gICAgMyAgIGlubGluZWFibGUgYXQgc3RhY2stdHJhY2UuanM6MTIxOjI2Ci0gICAg
NCAgIHlldEFub3RoZXJJbmxpbmVkQ2FsbCBhdCBzdGFjay10cmFjZS5qczoxMjY6MTYKLSAgICA1
ICAgbWFrZUlubGluYWJsZUNhbGwgYXQgc3RhY2stdHJhY2UuanM6MTMxOjMzCi0gICAgNiAgIGcg
YXQgc3RhY2stdHJhY2UuanM6MTQwOjMzCisgICAgMCAgIHRocm93RXJyb3IgYXQgc3RhY2stdHJh
Y2UuanM6Nzc6MTMKKyAgICAxICAgZ2V0dGVyMiBhdCBzdGFjay10cmFjZS5qczo5MzoxMQorICAg
IDIgICBub25JbmxpbmVhYmxlIGF0IHN0YWNrLXRyYWNlLmpzOjExNToxNworICAgIDMgICBpbmxp
bmVhYmxlIGF0IHN0YWNrLXRyYWNlLmpzOjEyMToyNworICAgIDQgICB5ZXRBbm90aGVySW5saW5l
ZENhbGwgYXQgc3RhY2stdHJhY2UuanM6MTI2OjE3CisgICAgNSAgIG1ha2VJbmxpbmFibGVDYWxs
IGF0IHN0YWNrLXRyYWNlLmpzOjEzMTozNAorICAgIDYgICBnIGF0IHN0YWNrLXRyYWNlLmpzOjE0
MDozNAogICAgIDcgICBtYXAgYXQgW25hdGl2ZSBjb2RlXQotICAgIDggICBnbG9iYWwgY29kZSBh
dCBzdGFjay10cmFjZS5qczoxNDM6MTUKKyAgICA4ICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJh
Y2UuanM6MTQzOjE2CiAKIC0tPiBTdGFjayBUcmFjZToKLSAgICAwICAgdGhyb3dFcnJvciBhdCBz
dGFjay10cmFjZS5qczo3NzoxMgotICAgIDEgICBnZXR0ZXIzIGF0IHN0YWNrLXRyYWNlLmpzOjEw
NToyMQotICAgIDIgICBub25JbmxpbmVhYmxlIGF0IHN0YWNrLXRyYWNlLmpzOjExNzoxNgotICAg
IDMgICBpbmxpbmVhYmxlIGF0IHN0YWNrLXRyYWNlLmpzOjEyMToyNgotICAgIDQgICB5ZXRBbm90
aGVySW5saW5lZENhbGwgYXQgc3RhY2stdHJhY2UuanM6MTI2OjE2Ci0gICAgNSAgIG1ha2VJbmxp
bmFibGVDYWxsIGF0IHN0YWNrLXRyYWNlLmpzOjEzMTozMwotICAgIDYgICBnIGF0IHN0YWNrLXRy
YWNlLmpzOjE0MDozMworICAgIDAgICB0aHJvd0Vycm9yIGF0IHN0YWNrLXRyYWNlLmpzOjc3OjEz
CisgICAgMSAgIGdldHRlcjMgYXQgc3RhY2stdHJhY2UuanM6MTA1OjE2CisgICAgMiAgIG5vbklu
bGluZWFibGUgYXQgc3RhY2stdHJhY2UuanM6MTE3OjE3CisgICAgMyAgIGlubGluZWFibGUgYXQg
c3RhY2stdHJhY2UuanM6MTIxOjI3CisgICAgNCAgIHlldEFub3RoZXJJbmxpbmVkQ2FsbCBhdCBz
dGFjay10cmFjZS5qczoxMjY6MTcKKyAgICA1ICAgbWFrZUlubGluYWJsZUNhbGwgYXQgc3RhY2st
dHJhY2UuanM6MTMxOjM0CisgICAgNiAgIGcgYXQgc3RhY2stdHJhY2UuanM6MTQwOjM0CiAgICAg
NyAgIG1hcCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgOCAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRy
YWNlLmpzOjE0MzoxNQorICAgIDggICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczoxNDM6
MTYKIAogLS0+IFN0YWNrIFRyYWNlOgotICAgIDAgICB0aHJvd0Vycm9yIGF0IHN0YWNrLXRyYWNl
LmpzOjc3OjEyCi0gICAgMSAgIHZhbHVlT2YgYXQgc3RhY2stdHJhY2UuanM6MTAxOjI2Ci0gICAg
MiAgIGdldHRlcjMgYXQgc3RhY2stdHJhY2UuanM6MTA3OjIxCi0gICAgMyAgIG5vbklubGluZWFi
bGUgYXQgc3RhY2stdHJhY2UuanM6MTE3OjE2Ci0gICAgNCAgIGlubGluZWFibGUgYXQgc3RhY2st
dHJhY2UuanM6MTIxOjI2Ci0gICAgNSAgIHlldEFub3RoZXJJbmxpbmVkQ2FsbCBhdCBzdGFjay10
cmFjZS5qczoxMjY6MTYKLSAgICA2ICAgbWFrZUlubGluYWJsZUNhbGwgYXQgc3RhY2stdHJhY2Uu
anM6MTMxOjMzCi0gICAgNyAgIGcgYXQgc3RhY2stdHJhY2UuanM6MTQwOjMzCisgICAgMCAgIHRo
cm93RXJyb3IgYXQgc3RhY2stdHJhY2UuanM6Nzc6MTMKKyAgICAxICAgdmFsdWVPZiBhdCBzdGFj
ay10cmFjZS5qczoxMDE6MjcKKyAgICAyICAgZ2V0dGVyMyBhdCBzdGFjay10cmFjZS5qczoxMDc6
MTYKKyAgICAzICAgbm9uSW5saW5lYWJsZSBhdCBzdGFjay10cmFjZS5qczoxMTc6MTcKKyAgICA0
ICAgaW5saW5lYWJsZSBhdCBzdGFjay10cmFjZS5qczoxMjE6MjcKKyAgICA1ICAgeWV0QW5vdGhl
cklubGluZWRDYWxsIGF0IHN0YWNrLXRyYWNlLmpzOjEyNjoxNworICAgIDYgICBtYWtlSW5saW5h
YmxlQ2FsbCBhdCBzdGFjay10cmFjZS5qczoxMzE6MzQKKyAgICA3ICAgZyBhdCBzdGFjay10cmFj
ZS5qczoxNDA6MzQKICAgICA4ICAgbWFwIGF0IFtuYXRpdmUgY29kZV0KLSAgICA5ICAgZ2xvYmFs
IGNvZGUgYXQgc3RhY2stdHJhY2UuanM6MTQzOjE1CisgICAgOSAgIGdsb2JhbCBjb2RlIGF0IHN0
YWNrLXRyYWNlLmpzOjE0MzoxNgogCiAtLT4gU3RhY2sgVHJhY2U6Ci0gICAgMCAgIGggYXQgc3Rh
Y2stdHJhY2UuanM6MTUxOjE2CisgICAgMCAgIGggYXQgc3RhY2stdHJhY2UuanM6MTUxOjE3CiAg
ICAgMSAgIG1hcCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgMiAgIG1hcFRlc3QgYXQgc3RhY2stdHJh
Y2UuanM6MTU4OjkKLSAgICAzICAgbWFwVGVzdERyaXZlciBhdCBzdGFjay10cmFjZS5qczoxNjQ6
MTUKLSAgICA0ICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6MTY5OjE3CisgICAgMiAg
IG1hcFRlc3QgYXQgc3RhY2stdHJhY2UuanM6MTU4OjEwCisgICAgMyAgIG1hcFRlc3REcml2ZXIg
YXQgc3RhY2stdHJhY2UuanM6MTY0OjE2CisgICAgNCAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRy
YWNlLmpzOjE2OToxOAogCiAtLT4gU3RhY2sgVHJhY2U6CiAgICAgMCAgIG1hcCBhdCBbbmF0aXZl
IGNvZGVdCi0gICAgMSAgIGggYXQgc3RhY2stdHJhY2UuanM6MTUzOjIwCisgICAgMSAgIGggYXQg
c3RhY2stdHJhY2UuanM6MTUzOjIxCiAgICAgMiAgIG1hcCBhdCBbbmF0aXZlIGNvZGVdCi0gICAg
MyAgIG1hcFRlc3QgYXQgc3RhY2stdHJhY2UuanM6MTU4OjkKLSAgICA0ICAgbWFwVGVzdERyaXZl
ciBhdCBzdGFjay10cmFjZS5qczoxNjQ6MTUKLSAgICA1ICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2st
dHJhY2UuanM6MTc1OjE3CisgICAgMyAgIG1hcFRlc3QgYXQgc3RhY2stdHJhY2UuanM6MTU4OjEw
CisgICAgNCAgIG1hcFRlc3REcml2ZXIgYXQgc3RhY2stdHJhY2UuanM6MTY0OjE2CisgICAgNSAg
IGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjE3NToxOAogCiAtLT4gU3RhY2sgVHJhY2U6
Ci0gICAgMCAgIHRocm93RXJyb3IgYXQgc3RhY2stdHJhY2UuanM6Nzc6MTIKLSAgICAxICAgZGZn
RnVuY3Rpb24gYXQgc3RhY2stdHJhY2UuanM6MTg0OjE4CisgICAgMCAgIHRocm93RXJyb3IgYXQg
c3RhY2stdHJhY2UuanM6Nzc6MTMKKyAgICAxICAgZGZnRnVuY3Rpb24gYXQgc3RhY2stdHJhY2Uu
anM6MTg0OjE5CiAgICAgMiAgIG1hcCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgMyAgIGdsb2JhbCBj
b2RlIGF0IHN0YWNrLXRyYWNlLmpzOjE5MzoxNworICAgIDMgICBnbG9iYWwgY29kZSBhdCBzdGFj
ay10cmFjZS5qczoxOTM6MTgKIAogLS0+IFN0YWNrIFRyYWNlOgotICAgIDAgICB0aHJvd0Vycm9y
IGF0IHN0YWNrLXRyYWNlLmpzOjc3OjEyCi0gICAgMSAgIGRmZ0Z1bmN0aW9uIGF0IHN0YWNrLXRy
YWNlLmpzOjE4NDoxOAotICAgIDIgICBmIGF0IHN0YWNrLXRyYWNlLmpzOjIwMjo5Ci0gICAgMyAg
IGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjIwODo1Ci0KLS0tPiBTdGFjayBUcmFjZToK
LSAgICAwICAgd2lsbFRocm93IGF0IHN0YWNrLXRyYWNlLmpzOjI0NjoyMAotICAgIDEgICBkZmcx
IGF0IHN0YWNrLXRyYWNlLmpzOjI1NzoxMgotICAgIDIgICBkZmcyIGF0IHN0YWNrLXRyYWNlLmpz
OjI2MTo4Ci0gICAgMyAgIGRmZzMgYXQgc3RhY2stdHJhY2UuanM6MjY1OjgKLSAgICA0ICAgZGZn
VGVzdCBhdCBzdGFjay10cmFjZS5qczoyMzE6MTMKLSAgICA1ICAgZ2xvYmFsIGNvZGUgYXQgc3Rh
Y2stdHJhY2UuanM6MzA0OjcKLQotLS0+IFN0YWNrIFRyYWNlOgotICAgIDAgICB3aWxsVGhyb3dG
dW5jIGF0IHN0YWNrLXRyYWNlLmpzOjI1MTo2MQotICAgIDEgICBkZmc0IGF0IHN0YWNrLXRyYWNl
LmpzOjI2OToyNgotICAgIDIgICBkZmc1IGF0IHN0YWNrLXRyYWNlLmpzOjI3Mzo4Ci0gICAgMyAg
IGRmZzYgYXQgc3RhY2stdHJhY2UuanM6Mjc3OjgKLSAgICA0ICAgZGZnVGVzdCBhdCBzdGFjay10
cmFjZS5qczoyMzE6MTMKLSAgICA1ICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6MzA1
OjcKLQotLS0+IFN0YWNrIFRyYWNlOgotICAgIDAgICBpbmxpbmVhYmxlVGhyb3cgYXQgc3RhY2st
dHJhY2UuanM6MjQwOjMyCi0gICAgMSAgIHdpbGxUaHJvd0V2ZW50dWFsbHkgYXQgc3RhY2stdHJh
Y2UuanM6MjQ5OjIzCi0gICAgMiAgIGRmZzcgYXQgc3RhY2stdHJhY2UuanM6MjgxOjEyCi0gICAg
MyAgIGRmZzggYXQgc3RhY2stdHJhY2UuanM6Mjg1OjgKLSAgICA0ICAgZGZnOSBhdCBzdGFjay10
cmFjZS5qczoyODk6OAotICAgIDUgICBkZmdUZXN0IGF0IHN0YWNrLXRyYWNlLmpzOjIzMToxMwot
ICAgIDYgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczozMDY6NwotCi0tLT4gU3RhY2sg
VHJhY2U6Ci0gICAgMCAgIGlubGluZWFibGVUaHJvdyBhdCBzdGFjay10cmFjZS5qczoyNDA6MzIK
LSAgICAxICAgd2lsbFRocm93RXZlbnR1YWxseUZ1bmMgYXQgc3RhY2stdHJhY2UuanM6MjUyOjU4
Ci0gICAgMiAgIGRmZ2EgYXQgc3RhY2stdHJhY2UuanM6MjkzOjM2Ci0gICAgMyAgIGRmZ2IgYXQg
c3RhY2stdHJhY2UuanM6Mjk3OjgKLSAgICA0ICAgZGZnYyBhdCBzdGFjay10cmFjZS5qczozMDE6
OAotICAgIDUgICBkZmdUZXN0IGF0IHN0YWNrLXRyYWNlLmpzOjIzMToxMwotICAgIDYgICBnbG9i
YWwgY29kZSBhdCBzdGFjay10cmFjZS5qczozMDc6NworICAgIDAgICB0aHJvd0Vycm9yIGF0IHN0
YWNrLXRyYWNlLmpzOjc3OjEzCisgICAgMSAgIGRmZ0Z1bmN0aW9uIGF0IHN0YWNrLXRyYWNlLmpz
OjE4NDoxOQorICAgIDIgICBmIGF0IHN0YWNrLXRyYWNlLmpzOjIwMjoxMAorICAgIDMgICBnbG9i
YWwgY29kZSBhdCBzdGFjay10cmFjZS5qczoyMDg6NgorCistLT4gU3RhY2sgVHJhY2U6CisgICAg
MCAgIHdpbGxUaHJvdyBhdCBzdGFjay10cmFjZS5qczoyNDY6MjEKKyAgICAxICAgZGZnMSBhdCBz
dGFjay10cmFjZS5qczoyNTc6MTMKKyAgICAyICAgZGZnMiBhdCBzdGFjay10cmFjZS5qczoyNjE6
OQorICAgIDMgICBkZmczIGF0IHN0YWNrLXRyYWNlLmpzOjI2NTo5CisgICAgNCAgIGRmZ1Rlc3Qg
YXQgc3RhY2stdHJhY2UuanM6MjMxOjE0CisgICAgNSAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRy
YWNlLmpzOjMwNDo4CisKKy0tPiBTdGFjayBUcmFjZToKKyAgICAwICAgd2lsbFRocm93RnVuYyBh
dCBzdGFjay10cmFjZS5qczoyNTE6NjIKKyAgICAxICAgZGZnNCBhdCBzdGFjay10cmFjZS5qczoy
Njk6MjcKKyAgICAyICAgZGZnNSBhdCBzdGFjay10cmFjZS5qczoyNzM6OQorICAgIDMgICBkZmc2
IGF0IHN0YWNrLXRyYWNlLmpzOjI3Nzo5CisgICAgNCAgIGRmZ1Rlc3QgYXQgc3RhY2stdHJhY2Uu
anM6MjMxOjE0CisgICAgNSAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjMwNTo4CisK
Ky0tPiBTdGFjayBUcmFjZToKKyAgICAwICAgaW5saW5lYWJsZVRocm93IGF0IHN0YWNrLXRyYWNl
LmpzOjI0MDozMworICAgIDEgICB3aWxsVGhyb3dFdmVudHVhbGx5IGF0IHN0YWNrLXRyYWNlLmpz
OjI0OToyNAorICAgIDIgICBkZmc3IGF0IHN0YWNrLXRyYWNlLmpzOjI4MToxMworICAgIDMgICBk
Zmc4IGF0IHN0YWNrLXRyYWNlLmpzOjI4NTo5CisgICAgNCAgIGRmZzkgYXQgc3RhY2stdHJhY2Uu
anM6Mjg5OjkKKyAgICA1ICAgZGZnVGVzdCBhdCBzdGFjay10cmFjZS5qczoyMzE6MTQKKyAgICA2
ICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6MzA2OjgKKworLS0+IFN0YWNrIFRyYWNl
OgorICAgIDAgICBpbmxpbmVhYmxlVGhyb3cgYXQgc3RhY2stdHJhY2UuanM6MjQwOjMzCisgICAg
MSAgIHdpbGxUaHJvd0V2ZW50dWFsbHlGdW5jIGF0IHN0YWNrLXRyYWNlLmpzOjI1Mjo1OQorICAg
IDIgICBkZmdhIGF0IHN0YWNrLXRyYWNlLmpzOjI5MzozNworICAgIDMgICBkZmdiIGF0IHN0YWNr
LXRyYWNlLmpzOjI5Nzo5CisgICAgNCAgIGRmZ2MgYXQgc3RhY2stdHJhY2UuanM6MzAxOjkKKyAg
ICA1ICAgZGZnVGVzdCBhdCBzdGFjay10cmFjZS5qczoyMzE6MTQKKyAgICA2ICAgZ2xvYmFsIGNv
ZGUgYXQgc3RhY2stdHJhY2UuanM6MzA3OjgKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pz
L3NjcmlwdC10ZXN0cy9saW5lLWNvbHVtbi1udW1iZXJzLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2xpbmUtY29sdW1uLW51bWJlcnMuanMJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9saW5lLWNvbHVtbi1u
dW1iZXJzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA0IEBACisvLyBDYXNlIDE6IFRo
cm93IGFuZCBwcmludCBzdGFjazoKK3Rlc3RJZCsrOworICAgIHRyeSB7IHRocm93IG5ldyBFcnJv
cigpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH0KKworLy8gQ2FzZSAyOiBT
YW1lIHByb2dyYW0gYXMgQ2FzZSAxIGJ1dCBpbmRlbnRlZC4KK3Rlc3RJZCsrOworICAgICAgICB0
cnkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuc3RhY2sp
OyB9CisKKy8vIENhc2UgMzogU2FtZSBwcm9ncmFtIGluZGVudGVkIG9uIHRoZSBzYW1lIGxpbmUu
Cit0ZXN0SWQrKzsKK3RyeSB7IHRocm93IG5ldyBFcnJvcigpOyB9IGNhdGNoIChlKSB7IHByaW50
U3RhY2soZS5zdGFjayk7IH0gICB0cnkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSBjYXRjaCAoZSkg
eyBwcmludFN0YWNrKGUuc3RhY2spOyB9CisKKy8vIENhc2UgNDogU3RhY2sgd2l0aCAyIGZ1bmN0
aW9uIGZyYW1lcy4KK3Rlc3RJZCsrOwordHJ5IHsKKyAgICBmdW5jdGlvbiBkb1Rocm93NGIoKSB7
IHRocm93IG5ldyBFcnJvcigpOyB9CisgICAgZG9UaHJvdzRiKCk7Cit9IGNhdGNoKGUpIHsKKyAg
ICBwcmludFN0YWNrKGUuc3RhY2spOworfQorCisvLyBDYXNlIDU6IEZ1bmN0aW9uIHdyYXBwaW5n
IGEgRnVuY3Rpb24uCit0ZXN0SWQrKzsKK2Z1bmN0aW9uIGRvVGhyb3c1YigpIHsgdHJ5IHsgZnVu
Y3Rpb24gaW5uZXJGdW5jKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSBpbm5lckZ1bmMoKTsgfSBj
YXRjaCAoZSkgeyBwcmludFN0YWNrKGUuc3RhY2spOyB9fTsgZG9UaHJvdzViKCk7CisKKy8vIENh
c2UgNjogU2FtZSBpbm5lciBmdW5jdGlvbiBib2R5IGFzIENhc2UgNS4KK3Rlc3RJZCsrOworZnVu
Y3Rpb24gZG9UaHJvdzZiKCkgeyB0cnkgeyBmdW5jdGlvbiBpbm5lckZ1bmMoKSB7IHRocm93IG5l
dyBFcnJvcigpOyB9IGlubmVyRnVuYygpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFj
ayk7IH19OyBkb1Rocm93NmIoKTsKKworLy8gQ2FzZSA3OiBDYXNlIDEgcmVkb25lIHdpdGggYSBG
dW5jdGlvbiBFeHByZXNzaW9uLgordGVzdElkKys7CisgICAgdHJ5IHsgKGZ1bmN0aW9uICgpIHsg
dGhyb3cgbmV3IEVycm9yKCk7IH0pKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLnN0YWNr
KTsgfQorCisvLyBDYXNlIDg6IENhc2UgMiByZWRvbmUgd2l0aCBhIEZ1bmN0aW9uIEV4cHJlc3Np
b24uCit0ZXN0SWQrKzsKKyAgICAgICAgdHJ5IHsgKGZ1bmN0aW9uICgpIHsgdGhyb3cgbmV3IEVy
cm9yKCk7IH0pKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLnN0YWNrKTsgfQorCisvLyBD
YXNlIDk6IENhc2UgMyByZWRvbmUgd2l0aCBhIEZ1bmN0aW9uIEV4cHJlc3Npb24uCit0ZXN0SWQr
KzsKK3RyeSB7IChmdW5jdGlvbiAoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9KSgpOyB9IGNhdGNo
IChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH0gICB0cnkgeyAoZnVuY3Rpb24gKCkgeyB0aHJv
dyBuZXcgRXJyb3IoKTsgfSkoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuc3RhY2spOyB9
CisKKy8vIENhc2UgMTA6IEZ1bmN0aW9uIEV4cHJlc3Npb24gYXMgbXVsdGlwbGUgbGluZXMuCit0
ZXN0SWQrKzsKK3RyeSB7CisgICAgKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCk7CisgICAgIH0pKCk7Cit9IGNhdGNoKGUpIHsKKyAgICBwcmludFN0YWNrKGUuc3RhY2sp
OworfQorCisvLyBDYXNlIDExOiBDYXNlIDQgcmVkb25lIHdpdGggYSBGdW5jdGlvbiB3cmFwcGlu
ZyBGdW5jdGlvbiBFeHByZXNzaW9uLgordGVzdElkKys7Cit0cnkgeworICAgIGZ1bmN0aW9uIGRv
VGhyb3cxMWIoKSB7CisgICAgICAgIChmdW5jdGlvbiAoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9
KSgpOworICAgIH0KKyAgICBkb1Rocm93MTFiKCk7Cit9IGNhdGNoKGUpIHsKKyAgICBwcmludFN0
YWNrKGUuc3RhY2spOworfQorCisvLyBDYXNlIDEyOiBBIEZ1bmN0aW9uIEV4cHJlc3Npb24gd3Jh
cHBpbmcgYSBGdW5jdGlvbiBFeHByZXNzaW9uLgordGVzdElkKys7Cit0cnkgeyAoZnVuY3Rpb24g
KCkgeyhmdW5jdGlvbiAoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9KSgpO30pKCk7IH0gY2F0Y2gg
KGUpIHsgcHJpbnRTdGFjayhlLnN0YWNrKTsgfQorCisvLyBDYXNlIDEzOiBTYW1lIGZ1bmN0aW9u
IGJvZHkgYXMgQ2FzZSAxMi4KK3Rlc3RJZCsrOwordHJ5IHsgKGZ1bmN0aW9uICgpIHsoZnVuY3Rp
b24gKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSkoKTt9KSgpOyB9IGNhdGNoIChlKSB7IHByaW50
U3RhY2soZS5zdGFjayk7IH0KKworLy8gQ2FzZSAxNDogRnVuY3Rpb24gRXhwcmVzc2lvbiBpbiBh
IEZ1bmN0aW9uIEV4cHJlc3Npb24gaW4gYSBGdW5jdGlvbi4KK3Rlc3RJZCsrOwordHJ5IHsgZnVu
Y3Rpb24gZG9UaHJvdzE0YigpIHsoZnVuY3Rpb24gKCkgeyAoZnVuY3Rpb24gKCkgeyB0aHJvdyBu
ZXcgRXJyb3IoKTsgfSkoKTt9KSgpO30gZG9UaHJvdzE0YigpOyB9IGNhdGNoIChlKSB7IHByaW50
U3RhY2soZS5zdGFjayk7IH0KKworLy8gQ2FzZSAxNTogVGhyb3cgaW4gYW4gRXZhbC4KK3Rlc3RJ
ZCsrOworZXZhbCgidHJ5IHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gY2F0Y2goZSkgeyBwcmludFN0
YWNrKGUuc3RhY2spOyB9Iik7CisKKy8vIENhc2UgMTY6IE11bHRpcGxlIGxpbmVzIGluIGFuIEV2
YWwuCit0ZXN0SWQrKzsKK2V2YWwoIlxuIiArCisidHJ5IHtcbiIgKworIiAgICBmdW5jdGlvbiBk
b1Rocm93MTViKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfVxuIiArCisiICAgIGRvVGhyb3cxNWIo
KTtcbiIgKworIn0gY2F0Y2goZSkge1xuIiArCisiICAgIHByaW50U3RhY2soZS5zdGFjayk7XG4i
ICsKKyJ9XG4iICsKKyIiKTsKKworLy8gQ2FzZSAxNzogRnVuY3Rpb24gRXhwcmVzc2lvbiBpbiBh
biBFdmFsLgordGVzdElkKys7CitldmFsKCJ0cnkgeyAoZnVuY3Rpb24gKCkgeyB0aHJvdyBuZXcg
RXJyb3IoKTsgfSkoKTsgfSBjYXRjaChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH0iKTsKKwor
Ly8gQ2FzZSAxODogTXVsdGlwbGUgbGluZXMgd2l0aCBhIEZ1bmN0aW9uIEV4cHJlc3Npb24gaW4g
YW4gRXZhbC4KK3Rlc3RJZCsrOworZXZhbCgiXG4iICsKKyJ0cnkge1xuIiArCisiICAgIChmdW5j
dGlvbiAoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9KSgpO1xuIiArCisifSBjYXRjaChlKSB7XG4i
ICsKKyIgICAgcHJpbnRTdGFjayhlLnN0YWNrKTtcbiIgKworIn1cbiIgKworIiIpOworCitzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNv
bGUvY29uc29sZS11cmwtbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbnNvbGUtdXJsLWxpbmUtY29sdW1uLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMTUxOTIwKQorKysgTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNv
bGUvY29uc29sZS11cmwtbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC04LDEyICs4LDEyIEBAIENPTlNPTEUgTUVTU0FHRTogbGluZSAxNTogd2FybgogQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDE2OiBhc3NlcnQKIFRlc3RzIHRoYXQgdXJsLCBsaW5lLCBhbmQgY29sdW1u
IHByb3BlcnRpZXMgYXJlIGRlZmluZWQgZm9yIGNvbnNvbGUgZnVuY3Rpb25zLgogCi1NZXNzYWdl
IGF0IGxvY2F0aW9uOiBjb25zb2xlLXVybC1saW5lLWNvbHVtbi5odG1sOjk6MTUKLU1lc3NhZ2Ug
YXQgbG9jYXRpb246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTA6MTUKLU1lc3NhZ2Ug
YXQgbG9jYXRpb246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTE6MTUKLU1lc3NhZ2Ug
YXQgbG9jYXRpb246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTQ6MTcKLU1lc3NhZ2Ug
YXQgbG9jYXRpb246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTQ6MzkKLU1lc3NhZ2Ug
YXQgbG9jYXRpb246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTU6MTYKLU1lc3NhZ2Ug
YXQgbG9jYXRpb246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTU6MzgKLU1lc3NhZ2Ug
YXQgbG9jYXRpb246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTY6MTgKK01lc3NhZ2Ug
YXQgbG9jYXRpb246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6OToxNgorTWVzc2FnZSBh
dCBsb2NhdGlvbjogY29uc29sZS11cmwtbGluZS1jb2x1bW4uaHRtbDoxMDoxNgorTWVzc2FnZSBh
dCBsb2NhdGlvbjogY29uc29sZS11cmwtbGluZS1jb2x1bW4uaHRtbDoxMToxNgorTWVzc2FnZSBh
dCBsb2NhdGlvbjogY29uc29sZS11cmwtbGluZS1jb2x1bW4uaHRtbDoxNDoxOAorTWVzc2FnZSBh
dCBsb2NhdGlvbjogY29uc29sZS11cmwtbGluZS1jb2x1bW4uaHRtbDoxNDo0MAorTWVzc2FnZSBh
dCBsb2NhdGlvbjogY29uc29sZS11cmwtbGluZS1jb2x1bW4uaHRtbDoxNToxNworTWVzc2FnZSBh
dCBsb2NhdGlvbjogY29uc29sZS11cmwtbGluZS1jb2x1bW4uaHRtbDoxNTozOQorTWVzc2FnZSBh
dCBsb2NhdGlvbjogY29uc29sZS11cmwtbGluZS1jb2x1bW4uaHRtbDoxNjoxOQogCg==
</data>
<flag name="commit-queue"
          id="227947"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206280</attachid>
            <date>2013-07-08 16:08:11 -0700</date>
            <delta_ts>2013-07-09 00:33:04 -0700</delta_ts>
            <desc>patch 3: Use MathExtras.h, not StdLibExtras.h</desc>
            <filename>bug-118481.patch</filename>
            <type>text/plain</type>
            <size>361940</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUyNDY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxMCBA
QAorMjAxMy0wNy0wOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
Rml4IDMwJSBKU0JlbmNoIHJlZ3Jlc3Npb24gKGNhdXNlZCBieSBhZGRpbmcgY29sdW1uIG51bWJl
cnMgdG8gc3RhY2sgdHJhY2VzKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExODQ4MS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBQcmV2aW91c2x5LCB3ZSBhbHJlYWR5IGNhcHR1cmUgRXhwcmVzc2lvblJh
bmdlSW5mbyB0aGF0IHByb3ZpZGVzIGEgZGl2b3QgZm9yCisgICAgICAgIGVhY2ggYnl0ZWNvZGUg
dGhhdCBjYW4gcG90ZW50aWFsbHkgdGhyb3cgYW4gZXhjZXB0aW9uIChhbmQgdGhlcmVmb3JlIGdl
bmVyYXRlCisgICAgICAgIGEgc3RhY2sgdHJhY2UpLiBPbiBmaXJzdCBhdHRlbXB0IHRvIGNvbXB1
dGUgY29sdW1uIG51bWJlcnMsIHdlIHRoZW4gZG8gYSB3YWxrCisgICAgICAgIG9mIHRoZSBzb3Vy
Y2Ugc3RyaW5nIHRvIHJlY29yZCBhbGwgbGluZSBzdGFydCBwb3NpdGlvbnMgaW4gYSB0YWJsZSBh
c3NvY2lhdGVkCisgICAgICAgIHdpdGggdGhlIFNvdXJjZVByb3ZpZGVyLiBUaGUgY29sdW1uIG51
bWJlciBjYW4gdGhlbiBiZSBjb21wdXRlZCBhcworICAgICAgICAgICAgZGl2b3QgLSBsaW5lU3Rh
cnRGb3IoYnl0ZWNvZGVPZmZzZXQpLgorCisgICAgICAgIFRoZSBjb21wdXRhdGlvbiBvZiB0aGlz
IGxpbmVTdGFydHMgdGFibGUgaXMgdGhlIHNvdXJjZSBvZiB0aGUgMzAlIEpTQmVuY2gKKyAgICAg
ICAgcGVyZm9ybWFuY2UgcmVncmVzc2lvbi4KKworICAgICAgICBUaGUgbmV3IGNvZGUgbm93IHJl
Y29yZHMgbGluZVN0YXJ0cyBhcyB0aGUgbGV4ZXIgYW5kIHBhcnNlciBzY2FucyB0aGUgc291cmNl
CisgICAgICAgIGNvZGUuIFRoZXNlIGxpbmVTdGFydHMgYXJlIHRoZW4gdXNlZCB0byBjb21wdXRl
IHRoZSBjb2x1bW4gbnVtYmVyIGZvciB0aGUKKyAgICAgICAgZ2l2ZW4gZGl2b3QsIGFuZCBzdG9y
ZWQgaW4gdGhlIEV4cHJlc3Npb25SYW5nZUluZm8uIFNpbWlsYXJseSwgd2UgYWxzbyBjYXB0dXJl
CisgICAgICAgIHRoZSBsaW5lIG51bWJlciBhdCB0aGUgZGl2b3QgcG9pbnQgYW5kIHN0b3JlIHRo
YXQgaW4gdGhlIEV4cHJlc3Npb25SYW5nZUluZm8uCisgICAgICAgIEhlbmNlLCB0byBsb29rIHVw
IGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzLCB3ZSBub3cgbG9va3VwIHRoZSBFeHByZXNzaW9uUmFu
Z2VJbmZvCisgICAgICAgIGZvciB0aGUgYnl0ZWNvZGVPZmZzZXQsIGFuZCB0aGVuIGNvbXB1dGUg
dGhlIGxpbmUgYW5kIGNvbHVtbiBmcm9tIHRoZSB2YWx1ZXMKKyAgICAgICAgc3RvcmVkIGluIHRo
ZSBleHByZXNzaW9uIGluZm8uCisKKyAgICAgICAgVGhlIHN0cmF0ZWd5OgorICAgICAgICAxLiBX
ZSBkbyBub3Qgd2FudCB0byBwZXJ0dXJiIHRoZSBsZXhlciBhbmQgcGFyc2VyIGFzIG1pbmltYWxs
eSBhcyBwb3NzaWJsZS4KKyAgICAgICAgICAgU3BlY2lmaWNhbGx5LCB0aGUgY2hhbmdlcyBhZGRl
ZCBzaG91bGQgbm90IGNoYW5nZSBob3cgaXQgc2NhbnMgY29kZSwgYW5kCisgICAgICAgICAgIGdl
bmVyYXRlIGJ5dGVjb2RlLgorICAgICAgICAyLiBXZSByZWdhcmQgdGhlIGRpdm90IGFzIHRoZSBz
b3VyY2UgY2hhcmFjdGVyIHBvc2l0aW9uIHdlJ3JlIGFyZSBpbnRlcmVzdGVkCisgICAgICAgICAg
IGluLiBBcyBzdWNoLCB3ZSdsbCBjYXB0dXJlIGxpbmUgYW5kIGxpbmVTdGFydCAoZm9yIGNvbHVt
bikgYXQgdGhlIHBvaW50CisgICAgICAgICAgIHdoZW4gd2UgY2FwdHVyZSB0aGUgZGl2b3QgaW5m
b3JtYXRpb24uIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSAzIHZhbHVlcyBhcmUKKyAgICAgICAgICAg
Y29uc2lzdGVudC4KKworICAgICAgICBIb3cgdGhlIGNoYW5nZSBpcyBkb25lOgorICAgICAgICAx
LiBDaGFuZ2UgdGhlIGxleGVyIHRvIHRyYWNrIGxpbmVTdGFydHMuCisgICAgICAgIDIuIENoYW5n
ZSB0aGUgcGFyc2VyIHRvIGNhcHR1cmUgbGluZSBhbmQgbGluZVN0YXJ0cyBhdCB0aGUgcG9pbnQg
b2YgY2FwdHVyaW5nCisgICAgICAgICAgIGRpdm90cy4KKyAgICAgICAgMy4gQ2hhbmdlIHRoZSBw
YXJzZXIgYW5kIGFzc29jaWF0ZWQgY29kZSB0byBwbHVtYiB0aGVzZSB2YWx1ZXMgYWxsIHRoZSB3
YXkgdG8KKyAgICAgICAgICAgdGhlIHBvaW50IHRoYXQgdGhlIGNvcnJlc3BvaW5kaW5nIEV4cHJl
c3Npb25SYW5nZUluZm8gaXMgZW1pdHRlZC4KKyAgICAgICAgNC4gUHJvcGFnYXRlIGFuZCByZWNv
cmQgU291cmNlQ29kZSBmaXJzdExpbmUgYW5kIGZpcnN0TGluZUNvbHVtbk9mZnNldCB0byB0aGUK
KyAgICAgICAgICAgdGhlIG5lY2Vzc2FyeSBwbGFjZXMgc28gdGhhdCB3ZSBjYW4gYWRkIHRoZW0g
YXMgbmVlZGVkIHdoZW4gcmVpZnlpbmcKKyAgICAgICAgICAgVW5saW5rZUNvZGVCbG9ja3MgaW50
byBDb2RlQmxvY2tzLgorICAgICAgICA1LiBDb21wcmVzcyB0aGUgbGluZSBhbmQgY29sdW1uIG51
bWJlciB2YWx1ZXMgaW4gdGhlIEV4cHJlc3Npb25SYW5nZUluZm8uIEluCisgICAgICAgICAgIHBy
YWN0aWNlLCB3ZSBzZWxkb20gaGF2ZSBib3RoIGxhcmdlIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJz
LiBIZW5jZSwgd2UgY2FuCisgICAgICAgICAgIGVuY29kZSBib3RoIGluIGFuIHVpbnQzMl90IG1v
c3Qgb2YgdGhlIHRpbWUuIEZvciB0aGUgdGltZXMgd2hlbiB3ZSBlbmNvdW50ZXIKKyAgICAgICAg
ICAgYm90aCBsYXJnZSBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycywgd2UgaGF2ZSBhIGZhbGxiYWNr
IHRvIHN0b3JlIHRoZSAiZmF0IgorICAgICAgICAgICBwb3NpdGlvbiBpbmZvLgorICAgICAgICA2
LiBFbWl0IGFuIEV4cHJlc3Npb25SYW5nZUluZm8gZm9yIFVuYXJ5T3Agbm9kZXMgdG8gZ2V0IG1v
cmUgbGluZSBhbmQgY29sdW1uCisgICAgICAgICAgIG51bWJlciBjb3ZlcmFnZS4KKyAgICAgICAg
Ny4gQ2hhbmdlIHRoZSBpbnRlcnByZXRlciB0byB1c2UgdGhlIG5ldyB3YXkgb2YgY29tcHV0aW5n
IGxpbmUgYW5kIGNvbHVtbi4KKyAgICAgICAgOC4gRGVsZXRlIG9sZCBsaW5lIGFuZCBjb2x1bW4g
Y29tcHV0YXRpb24gY29kZSB0aGF0IGlzIG5vdyB1bnVzZWQuCisKKyAgICAgICAgTWlzYyBkZXRh
aWxzOgorICAgICAgICAtIHRoZSBvbGQgbGV4ZXIgd2FzIHRyYWNraW5nIGJvdGggYSBzdGFydE9m
ZnNldCBhbmQgY2hhclBvc2l0aW9uIHdoZXJlCisgICAgICAgICAgY2hhclBvc2l0aW9uIGVxdWFs
cyBzdGFydE9mZnNldCAtIFNvdXJjZUNvZGUuc3RhcnRPZmZzZXQuIFdlIG5vdyB1c2UKKyAgICAg
ICAgICBzdGFydE9mZnNldCBleGNsdXNpdmVseSB0aHJvdWdob3V0IHRoZSBzeXN0ZW0gdG8gZm9y
IGNvbnNpc3RlbmN5LgorICAgICAgICAgIEFsbCBvZmZzZXQgdmFsdWVzIChpbmNsdWRpbmcgbGlu
ZVN0YXJ0KSBhcmUgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZQorICAgICAgICAgIFNvdXJj
ZVByb3ZpZGVyIHN0cmluZy4gVGhlc2UgdmFsdWVzIHdpbGwgYmUgY29udmVydGVkIHRvIGJlIHJl
bGF0aXZlIHRvCisgICAgICAgICAgdGhlIFNvdXJjZUNvZGUuc3RhcnRPZmZzZXQgYXQgdGhlIHZl
cnkgbGFzdCBtaW51dGUgaS5lLiB3aGVuIHRoZSBkaXZvdAorICAgICAgICAgIGlzIHN0b3JlZCBp
bnRvIHRoZSBFeHByZXNzaW9uUmFuZ2VJbmZvLgorCisgICAgICAgICAgVGhpcyBjaGFuZ2UgdG8g
dXNlIHRoZSBzYW1lIG9mZnNldCBzeXN0ZW0gZXZlcnl3aGVyZSByZWR1Y2VzIGNvbmZ1c2lvbgor
ICAgICAgICAgIGZyb20gaGF2aW5nIHRvIGNvbnZlcnQgYmFjayBhbmQgZm9ydGggYmV0d2VlbiB0
aGUgMiBzeXN0ZW1zLiBJdCBhbHNvCisgICAgICAgICAgZW5hYmxlcyBhIGxvdCBvZiBhc3NlcnRp
b25zIHRvIGJlIHVzZWQuCisKKyAgICAgICAgLSBBbHNvIGZpeGVkIHNvbWUgYnVncyBpbiB3aGF0
IGRpdm90IHBvc2l0aW9ucyB0byBiZSB1c2VkLiBGb3IgZXhhbXBsZSwKKyAgICAgICAgICBib3Ro
IEV2YWwgYW5kIEZ1bmN0aW9uIGV4cHJlc3Npb25zIHdpbGwgcHJldmlvdXNseSB1c2UgY29sdW1u
IG51bWJlcnMKKyAgICAgICAgICBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZXhwcmVzc2lvbiBidXQg
dXNlIHRoZSBsaW5lIG51bWJlciBhdCB0aGUgZW5kIG9mCisgICAgICAgICAgdGhlIGV4cHJlc3Np
b24uIFRoaXMgaXMgbm93IGZpeGVkIHRvIGJlIGNvbnNpc3RlbnRseSBlaXRoZXIgdXNpbmcgdGhl
CisgICAgICAgICAgc3RhcnQgb3IgZW5kIHBvc2l0aW9ucyBhcyBhcHByb3ByaWF0ZSwgYnV0IG5v
dCBhIG1peCBvZiBsaW5lIGFuZCBjb2x1bW5zCisgICAgICAgICAgZnJvbSBib3RoLgorCisgICAg
ICAgIC0gV2h5IHVzZSBpbnRzIGluc3RlYWQgb2YgdW5zaWduZWRzIGZvciBvZmZzZXRzIGFuZCBs
aW5lU3RhcnRzIGluc2lkZSB0aGUKKyAgICAgICAgICBsZXhlciBhbmQgcGFyc2VyPworICAgICAg
ICAgIFNvbWUgdGVzdHMgKGUuZy4gZmFzdC9qcy9jYWxsLWJhc2UtcmVzb2x1dGlvbi5odG1sIGFu
ZAorICAgICAgICAgIGZhc3QvanMvZXZhbC1jcm9zcy13aW5kb3cuaHRtbCkgaGFzIHNob3duIHRo
YXQgbGluZVN0YXJ0IG9mZnNldHMgY2FuIGJlCisgICAgICAgICAgcHJpb3IgdG8gdGhlIFNvdXJj
ZUNvZGUuc3RhcnRPZmZzZXQuIEtlZXBpbmcgdGhlIGxleGVyIG9mZnNldHMgYXMgaW50cworICAg
ICAgICAgIHNpbXBsaWZpZXMgY29tcHV0YXRpb25zIGFuZCBtYWtlcyBpdCBlYXNpZXIgdG8gbWFp
bnRhaW4gdGhlIGFzc2VydGlvbnMKKyAgICAgICAgICB0aGF0IChzdGFydE9mZnNldCA+PSBsaW5l
U3RhcnRPZmZzZXQpLgorCisgICAgICAgICAgSG93ZXZlciwgY29sdW1uIGFuZCBsaW5lIG51bWJl
cnMgYXJlIGFsd2F5cyB1bnNpZ25lZCB3aGVuIHdlIHB1Ymxpc2gKKyAgICAgICAgICB0aGVtIHRv
IHRoZSBFeHByZXNzaW9uUmFuZ2VJbmZvLiBUaGUgaW50cyBhcmUgb25seSB1c2VkIGluc2lkZSB0
aGUKKyAgICAgICAgICBsZXhlciBhbmQgcGFyc2VyIC4uLiB3ZWxsLCBhbmQgYnl0ZWNvZGUgZ2Vu
ZXJhdG9yLgorCisgICAgICAgIC0gRm9yIGFsbCBjYXNlcywgbGluZVN0YXJ0IGlzIGFsd2F5cyBj
YXB0dXJlZCB3aGVyZSB0aGUgZGl2b3QgaXMgY2FwdHVyZWQuCisgICAgICAgICAgSG93ZXZlciwg
c29tZSBzcHV0bmlrIGNvbmZvcm1hbmNlIHRlc3RzIGhhdmUgc2hvd24gdGhhdCB3ZSBjYW5ub3Qg
aG9ub3IKKyAgICAgICAgICBsaW5lIGJyZWFrcyBmb3IgYXNzaWdubWVudCBzdGF0ZW1lbnRzIGxp
a2UgdGhlIGZvbGxvd2luZzoKKworICAgICAgICAgICAgICBldmFsKCJ4XHUwMDBBKj1cdTAwMEEt
MTsiKTsKKworICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIGxpbmVTdGFydCBpcyBleHBlY3Rl
ZCB0byBiZSBjYXB0dXJlZCBhdCB0aGUgc3RhcnQgb2YKKyAgICAgICAgICB0aGUgYXNzaWdubWVu
dCBleHByZXNzaW9uIGluc3RlYWQgb2YgYXQgdGhlIGRpdm90IHBvaW50IGluIHRoZSBtaWRkbGUu
CisgICAgICAgICAgVGhlIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBpcyB0aGUgb25seSBzcGVjaWFs
IGNhc2UgZm9yIHRoaXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBoYXMgYmVlbiB0ZXN0ZWQgYWdh
aW5zdCB0aGUgZnVsbCBsYXlvdXQgdGVzdHMgYm90aCB3aXRoIHJlbGVhc2UKKyAgICAgICAgYW5k
IGRlYnVnIGJ1aWxkcyB3aXRoIG5vIHJlZ3Jlc3Npb24uCisKKyAgICAgICAgKiBBUEkvSlNDb250
ZXh0UmVmLmNwcDoKKyAgICAgICAgKEpTQ29udGV4dENyZWF0ZUJhY2t0cmFjZSk6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2Rl
QmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpbmVOdW1iZXJGb3JCeXRlY29kZU9m
ZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y29sdW1uTnVtYmVyRm9yQnl0ZWNvZGVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmV4cHJlc3Npb25SYW5nZUZvckJ5dGVj
b2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpmaXJzdExpbmVDb2x1bW5PZmZzZXQpOgorICAgICAgICAoSlNDOjpHbG9i
YWxDb2RlQmxvY2s6Okdsb2JhbENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OlByb2dyYW1Db2Rl
QmxvY2s6OlByb2dyYW1Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUJsb2NrOjpF
dmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OkZ1bmN0aW9u
Q29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9FeHByZXNzaW9uUmFuZ2VJbmZvLmg6Cisg
ICAgICAgIChKU0M6OkV4cHJlc3Npb25SYW5nZUluZm86OmVuY29kZU1vZGUwKToKKyAgICAgICAg
KEpTQzo6RXhwcmVzc2lvblJhbmdlSW5mbzo6ZW5jb2RlTW9kZTEpOgorICAgICAgICAoSlNDOjpF
eHByZXNzaW9uUmFuZ2VJbmZvOjpkZWNvZGVNb2RlMCk6CisgICAgICAgIChKU0M6OkV4cHJlc3Np
b25SYW5nZUluZm86OmRlY29kZU1vZGUxKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjpsaW5rKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Omxp
bmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJs
b2NrOjpleHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlVu
bGlua2VkQ29kZUJsb2NrOjphZGRFeHByZXNzaW9uSW5mbyk6CisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OmZ1bmN0aW9uU3RhcnRDb2x1bW4pOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVC
bG9jazo6c2hyaW5rVG9GaXQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbEV2YWwpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Tm9k
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Tm9kZUluQ29uZGl0aW9u
Q29udGV4dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXhwcmVzc2lv
bkluZm9XaXRoUG9zaXRpb25zKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRFeHByZXNzaW9uSW5mbyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHA6CisgICAgICAgIChKU0M6OlRocm93YWJsZUV4cHJlc3Npb25EYXRhOjplbWl0VGhyb3dSZWZl
cmVuY2VFcnJvcik6CisgICAgICAgIChKU0M6OlJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0KToKKyAgICAgICAgKEpTQzo6
QnJhY2tldEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RG90QWNj
ZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpOZXdFeHByTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RXZhbEZ1bmN0aW9uQ2FsbE5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdFJlc29sdmUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9k
ZTo6ZW1pdEJyYWNrZXQpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdERvdCk6Cisg
ICAgICAgIChKU0M6OkRlbGV0ZVJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpEZWxldGVCcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RGVs
ZXRlRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6ZW1p
dFJlc29sdmUpOgorICAgICAgICAoSlNDOjpQcmVmaXhOb2RlOjplbWl0QnJhY2tldCk6CisgICAg
ICAgIChKU0M6OlByZWZpeE5vZGU6OmVtaXREb3QpOgorICAgICAgICAoSlNDOjpVbmFyeU9wTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QmluYXJ5T3BOb2RlOjplbWl0U3RyY2F0
KToKKyAgICAgICAgKEpTQzo6VGhyb3dhYmxlQmluYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpJbnN0YW5jZU9mTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6ZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeVJl
c29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25SZXNvbHZlTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeURvdE5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OkFzc2lnbkJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpSZWFkTW9kaWZ5QnJhY2tldE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OkNvbnN0U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RW1wdHlT
dGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclN0YXRl
bWVudE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4cHJTdGF0ZW1lbnROb2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpWYXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpJZkVsc2VOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpEb1doaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6V2hpbGVO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGb3JOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OkNvbnRpbnVlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QnJlYWtOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpXaXRoTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6U3dp
dGNoTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6TGFiZWxOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpUaHJvd05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OlRyeU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFdmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmFwcGVuZFNvdXJj
ZVRvRXJyb3IpOgorICAgICAgICAoSlNDOjpTdGFja0ZyYW1lOjpjb21wdXRlTGluZUFuZENvbHVt
bik6CisgICAgICAgIChKU0M6OlN0YWNrRnJhbWU6OmV4cHJlc3Npb25JbmZvKToKKyAgICAgICAg
KEpTQzo6U3RhY2tGcmFtZTo6dG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
Z2V0U3RhY2tUcmFjZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAg
ICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpC
aW5hcnlPcEluZm86OkJpbmFyeU9wSW5mbyk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OkFz
c2lnbm1lbnRJbmZvOjpBc3NpZ25tZW50SW5mbyk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZVJlc29sdmUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCcmFja2V0
QWNjZXNzKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRG90QWNjZXNzKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUmVnRXhwKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlTmV3RXhwcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZUFzc2lnblJlc29sdmUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlv
bkV4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlvbkJvZHkpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCbG9ja1N0YXRlbWVudCk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUV4cHJTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjpjcmVhdGVJZlN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNy
ZWF0ZUZvckxvb3ApOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGb3JJbkxvb3Ap
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVWYXJTdGF0ZW1lbnQpOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVSZXR1cm5TdGF0ZW1lbnQpOgorICAgICAgICAoSlND
OjpBU1RCdWlsZGVyOjpjcmVhdGVCcmVha1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6Y3JlYXRlVHJ5U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRl
U3dpdGNoU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlV2hpbGVT
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVEb1doaWxlU3RhdGVt
ZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlTGFiZWxTdGF0ZW1lbnQpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVXaXRoU3RhdGVtZW50KToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVGhyb3dTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpB
U1RCdWlsZGVyOjpjcmVhdGVEZWJ1Z2dlcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNy
ZWF0ZUNvbnN0U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6YXBwZW5kQmlu
YXJ5RXhwcmVzc2lvbkluZm8pOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjphcHBlbmRVbmFy
eVRva2VuKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6dW5hcnlUb2tlblN0YWNrTGFzdFN0
YXJ0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6dW5hcnlUb2tlblN0YWNrTGFzdExpbmVT
dGFydFBvc2l0aW9uKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6YXNzaWdubWVudFN0YWNr
QXBwZW5kKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQXNzaWdubWVudCk6Cisg
ICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OnNldEV4Y2VwdGlvbkxvY2F0aW9uKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6bWFrZURlbGV0ZU5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1h
a2VCaW5hcnlOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUFzc2lnbk5vZGUp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlUHJlZml4Tm9kZSk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6Om1ha2VQb3N0Zml4Tm9kZSk6CisgICAgICAgICogcGFyc2VyL0xleGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6OjpjdXJyZW50Q29kZVB0cik6CisgICAgICAgIChKU0M6Ojo6
c2V0Q29kZSk6CisgICAgICAgIChKU0M6Ojo6aW50ZXJuYWxTaGlmdCk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUlkZW50aWZpZXJTbG93
Q2FzZSk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VTdHJpbmcpOgorICAgICAgICAoSlNDOjo6OnBh
cnNlU3RyaW5nU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjo6OmxleCk6CisgICAgICAgIChKU0M6
Ojo6c291cmNlQ29kZSk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6
OkxleGVyOjpjdXJyZW50T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OmN1cnJlbnRMaW5l
U3RhcnRPZmZzZXQpOgorICAgICAgICAoSlNDOjpMZXhlcjo6c2V0T2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6TGV4ZXI6Om9mZnNldEZyb21Db2RlUHRyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OmNv
ZGVQdHJGcm9tT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OnNldE9mZnNldEZyb21Db2Rl
UHRyKToKKyAgICAgICAgKEpTQzo6OjpsZXhFeHBlY3RJZGVudGlmaWVyKToKKyAgICAgICAgKiBw
YXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlNDOjpOb2RlOjpOb2RlKToKKyAg
ICAgICAgKEpTQzo6UmVzb2x2ZU5vZGU6OlJlc29sdmVOb2RlKToKKyAgICAgICAgKEpTQzo6RXZh
bEZ1bmN0aW9uQ2FsbE5vZGU6OkV2YWxGdW5jdGlvbkNhbGxOb2RlKToKKyAgICAgICAgKEpTQzo6
RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGUpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUpOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZTo6RnVuY3Rpb25DYWxsQnJhY2tl
dE5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxE
b3ROb2RlKToKKyAgICAgICAgKEpTQzo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5j
dGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2Rl
OjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6
UG9zdGZpeE5vZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVSZXNvbHZlTm9kZTo6RGVsZXRlUmVz
b2x2ZU5vZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVCcmFja2V0Tm9kZTo6RGVsZXRlQnJhY2tl
dE5vZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVEb3ROb2RlOjpEZWxldGVEb3ROb2RlKToKKyAg
ICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6UHJlZml4Tm9kZSk6CisgICAgICAgIChKU0M6OlJlYWRN
b2RpZnlSZXNvbHZlTm9kZTo6UmVhZE1vZGlmeVJlc29sdmVOb2RlKToKKyAgICAgICAgKEpTQzo6
UmVhZE1vZGlmeUJyYWNrZXROb2RlOjpSZWFkTW9kaWZ5QnJhY2tldE5vZGUpOgorICAgICAgICAo
SlNDOjpBc3NpZ25CcmFja2V0Tm9kZTo6QXNzaWduQnJhY2tldE5vZGUpOgorICAgICAgICAoSlND
OjpBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlm
eURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRXJyb3JO
b2RlOjpBc3NpZ25FcnJvck5vZGUpOgorICAgICAgICAoSlNDOjpXaXRoTm9kZTo6V2l0aE5vZGUp
OgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OkZvckluTm9kZSk6CisgICAgICAgICogcGFyc2Vy
L05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhdGVtZW50Tm9kZTo6c2V0TG9jKToKKyAgICAg
ICAgKEpTQzo6U2NvcGVOb2RlOjpTY29wZU5vZGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9k
ZTo6UHJvZ3JhbU5vZGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6RXZhbE5vZGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQm9k
eU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2Rl
OjpjcmVhdGUpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpOb2Rl
OjpzdGFydE9mZnNldCk6CisgICAgICAgIChKU0M6Ok5vZGU6OmxpbmVTdGFydE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OlN0YXRlbWVudE5vZGU6OmZpcnN0TGluZSk6CisgICAgICAgIChKU0M6OlN0
YXRlbWVudE5vZGU6Omxhc3RMaW5lKToKKyAgICAgICAgKEpTQzo6VGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGE6OlRocm93YWJsZUV4cHJlc3Npb25EYXRhKToKKyAgICAgICAgKEpTQzo6VGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGE6OnNldEV4Y2VwdGlvblNvdXJjZUNvZGUpOgorICAgICAgICAoSlNDOjpU
aHJvd2FibGVFeHByZXNzaW9uRGF0YTo6ZGl2b3RTdGFydE9mZnNldCk6CisgICAgICAgIChKU0M6
OlRocm93YWJsZUV4cHJlc3Npb25EYXRhOjpkaXZvdEVuZE9mZnNldCk6CisgICAgICAgIChKU0M6
OlRocm93YWJsZUV4cHJlc3Npb25EYXRhOjpkaXZvdExpbmUpOgorICAgICAgICAoSlNDOjpUaHJv
d2FibGVFeHByZXNzaW9uRGF0YTo6ZGl2b3RMaW5lU3RhcnQpOgorICAgICAgICAoSlNDOjpUaHJv
d2FibGVTdWJFeHByZXNzaW9uRGF0YTo6VGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEpOgorICAg
ICAgICAoSlNDOjpUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YTo6c2V0U3ViZXhwcmVzc2lvbklu
Zm8pOgorICAgICAgICAoSlNDOjpUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YTo6c3ViZXhwcmVz
c2lvbkRpdm90KToKKyAgICAgICAgKEpTQzo6VGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGE6OnN1
YmV4cHJlc3Npb25TdGFydE9mZnNldCk6CisgICAgICAgIChKU0M6OlRocm93YWJsZVN1YkV4cHJl
c3Npb25EYXRhOjpzdWJleHByZXNzaW9uRW5kT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VGhyb3dh
YmxlU3ViRXhwcmVzc2lvbkRhdGE6OnN1YmV4cHJlc3Npb25MaW5lKToKKyAgICAgICAgKEpTQzo6
VGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGE6OnN1YmV4cHJlc3Npb25MaW5lU3RhcnQpOgorICAg
ICAgICAoSlNDOjpUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhOjpUaHJvd2FibGVQ
cmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhKToKKyAgICAgICAgKEpTQzo6VGhyb3dhYmxlUHJlZml4
ZWRTdWJFeHByZXNzaW9uRGF0YTo6c2V0U3ViZXhwcmVzc2lvbkluZm8pOgorICAgICAgICAoSlND
OjpUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhOjpzdWJleHByZXNzaW9uRGl2b3Qp
OgorICAgICAgICAoSlNDOjpUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhOjpzdWJl
eHByZXNzaW9uU3RhcnRPZmZzZXQpOgorICAgICAgICAoSlNDOjpUaHJvd2FibGVQcmVmaXhlZFN1
YkV4cHJlc3Npb25EYXRhOjpzdWJleHByZXNzaW9uRW5kT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
VGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNzaW9uRGF0YTo6c3ViZXhwcmVzc2lvbkxpbmUpOgor
ICAgICAgICAoSlNDOjpUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhOjpzdWJleHBy
ZXNzaW9uTGluZVN0YXJ0KToKKyAgICAgICAgKEpTQzo6U2NvcGVOb2RlOjpzdGFydFN0YXJ0T2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6U2NvcGVOb2RlOjpzdGFydExpbmVTdGFydE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpzdGFydENvbHVtbik6CisgICAgICAgIChKU0M6OkV2
YWxOb2RlOjpzdGFydENvbHVtbik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6OnN0
YXJ0Q29sdW1uKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
OjpQYXJzZXIpOgorICAgICAgICAoSlNDOjo6OnBhcnNlU291cmNlRWxlbWVudHMpOgorICAgICAg
ICAoSlNDOjo6OnBhcnNlVmFyRGVjbGFyYXRpb25MaXN0KToKKyAgICAgICAgKEpTQzo6OjpwYXJz
ZUNvbnN0RGVjbGFyYXRpb25MaXN0KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUZvclN0YXRlbWVu
dCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VCcmVha1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VDb250aW51ZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VSZXR1cm5T
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlVGhyb3dTdGF0ZW1lbnQpOgorICAgICAg
ICAoSlNDOjo6OnBhcnNlV2l0aFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VGdW5j
dGlvbkJvZHkpOgorICAgICAgICAoSlNDOjo6OnBhcnNlRnVuY3Rpb25JbmZvKToKKyAgICAgICAg
KEpTQzo6OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjpMYWJlbElu
Zm86OkxhYmVsSW5mbyk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VFeHByZXNzaW9uT3JMYWJlbFN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbik6Cisg
ICAgICAgIChKU0M6Ojo6cGFyc2VCaW5hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6Ojpw
YXJzZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZU9iamVjdExpdGVyYWwpOgorICAg
ICAgICAoSlNDOjo6OnBhcnNlUHJpbWFyeUV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjo6OnBh
cnNlTWVtYmVyRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VVbmFyeUV4cHJlc3Np
b24pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpu
ZXh0KToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpuZXh0RXhwZWN0SWRlbnRpZmllcik6CisgICAg
ICAgIChKU0M6OlBhcnNlcjo6dG9rZW5TdGFydCk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6dG9r
ZW5Db2x1bW4pOgorICAgICAgICAoSlNDOjpQYXJzZXI6OnRva2VuRW5kKToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyOjp0b2tlbkxpbmVTdGFydCk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6bGFzdFRv
a2VuTGluZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6bGFzdFRva2VuTGluZVN0YXJ0KToKKyAg
ICAgICAgKEpTQzo6OjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vucy5oOgor
ICAgICAgICAoSlNDOjpKU1Rva2VuTG9jYXRpb246OkpTVG9rZW5Mb2NhdGlvbik6CisgICAgICAg
IChKU0M6OkpTVG9rZW5Mb2NhdGlvbjo6bGluZVN0YXJ0UG9zaXRpb24pOgorICAgICAgICAoSlND
OjpKU1Rva2VuTG9jYXRpb246OnN0YXJ0UG9zaXRpb24pOgorICAgICAgICAoSlNDOjpKU1Rva2Vu
TG9jYXRpb246OmVuZFBvc2l0aW9uKToKKyAgICAgICAgKiBwYXJzZXIvU291cmNlQ29kZS5oOgor
ICAgICAgICAoSlNDOjpTb3VyY2VDb2RlOjpTb3VyY2VDb2RlKToKKyAgICAgICAgKEpTQzo6U291
cmNlQ29kZTo6c3RhcnRDb2x1bW4pOgorICAgICAgICAoSlNDOjptYWtlU291cmNlKToKKyAgICAg
ICAgKEpTQzo6U291cmNlQ29kZTo6c3ViRXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1Nv
dXJjZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXIuaDoKKyAg
ICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaDoKKyAgICAgICAgKEpTQzo6
U291cmNlUHJvdmlkZXJDYWNoZUl0ZW06OmNsb3NlQnJhY2VUb2tlbik6CisgICAgICAgIChKU0M6
OlNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtOjpTb3VyY2VQcm92aWRlckNhY2hlSXRlbSk6CisgICAg
ICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tl
cjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpt
YWtlQXNzaWduTm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VQcmVmaXhO
b2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZVBvc3RmaXhOb2RlKToKKyAg
ICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZURlbGV0ZU5vZGUpOgorICAgICAgICAoSlND
OjpTeW50YXhDaGVja2VyOjpjcmVhdGVSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y3JlYXRlQnJhY2tldEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6
OmNyZWF0ZURvdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVJl
Z0V4cCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZU5ld0V4cHIpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVBc3NpZ25SZXNvbHZlKToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25FeHByKToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhD
aGVja2VyOjpjcmVhdGVGb3JJbkxvb3ApOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpj
cmVhdGVSZXR1cm5TdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVh
dGVCcmVha1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUNv
bnRpbnVlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlV2l0
aFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUxhYmVsU3Rh
dGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlVGhyb3dTdGF0ZW1l
bnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVHZXR0ZXJPclNldHRlclBy
b3BlcnR5KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6YXBwZW5kQmluYXJ5RXhwcmVz
c2lvbkluZm8pOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpvcGVyYXRvclN0YWNrUG9w
KToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVD
YWNoZTo6Z2VuZXJhdGVCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0Q29k
ZUJsb2NrKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlND
OjpGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6
OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGU6OnByb2R1Y2VDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1
dGFibGUuaDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6c3RhcnRDb2x1bW4pOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpyZWNvcmRQYXJzZSk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKToKKwogMjAxMy0wNy0wOCAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4g
Rml4IG1ha2UgZGlzdGNoZWNrLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHRSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
b250ZXh0UmVmLmNwcAkocmV2aXNpb24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NvbnRleHRSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzcsNyArMjM3LDkgQEAg
SlNTdHJpbmdSZWYgSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKEpTQwogICAgICAgICAgICAgaWYg
KGkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgdW5zaWduZWQg
bGluZU51bWJlciA9IGZyYW1lLmxpbmUoKTsKKyAgICAgICAgdW5zaWduZWQgbGluZU51bWJlcjsK
KyAgICAgICAgdW5zaWduZWQgY29sdW1uOworICAgICAgICBmcmFtZS5jb21wdXRlTGluZUFuZENv
bHVtbihsaW5lTnVtYmVyLCBjb2x1bW4pOwogICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgp
KQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCcjJyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkocmV2aXNpb24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MDMsNiArMTYwMyw3IEBAIENv
ZGVCbG9jazo6Q29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1RhZywKICAgICAsIG1fbmVlZHNBY3Rp
dmF0aW9uKG90aGVyLm1fbmVlZHNBY3RpdmF0aW9uKQogICAgICwgbV9zb3VyY2Uob3RoZXIubV9z
b3VyY2UpCiAgICAgLCBtX3NvdXJjZU9mZnNldChvdGhlci5tX3NvdXJjZU9mZnNldCkKKyAgICAs
IG1fZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KG90aGVyLm1fZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQog
ICAgICwgbV9jb2RlVHlwZShvdGhlci5tX2NvZGVUeXBlKQogICAgICwgbV9pZGVudGlmaWVycyhv
dGhlci5tX2lkZW50aWZpZXJzKQogICAgICwgbV9jb25zdGFudFJlZ2lzdGVycyhvdGhlci5tX2Nv
bnN0YW50UmVnaXN0ZXJzKQpAQCAtMTYzMiw3ICsxNjMzLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxv
Y2soQ29weVBhcnNlZEJsb2NrVGFnLAogICAgIH0KIH0KIAotQ29kZUJsb2NrOjpDb2RlQmxvY2so
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5s
aW5rZWRDb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGJh
c2VTY29wZURlcHRoLCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlciwg
dW5zaWduZWQgc291cmNlT2Zmc2V0LCBQYXNzT3duUHRyPENvZGVCbG9jaz4gYWx0ZXJuYXRpdmUp
CitDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUs
IFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgdW5zaWduZWQgYmFzZVNjb3BlRGVwdGgsIFBhc3NSZWZQdHI8U291cmNlUHJv
dmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBzb3VyY2VPZmZzZXQsIHVuc2lnbmVkIGZp
cnN0TGluZUNvbHVtbk9mZnNldCwgUGFzc093blB0cjxDb2RlQmxvY2s+IGFsdGVybmF0aXZlKQog
ICAgIDogbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LT52bSgpLCBvd25lckV4ZWN1dGFibGUs
IGdsb2JhbE9iamVjdCkKICAgICAsIG1faGVhcCgmbV9nbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkK
ICAgICAsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxl
ZVJlZ2lzdGVycykKQEAgLTE2NDgsNiArMTY0OSw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNj
cmlwdEV4ZWN1dGFibGUqIG8KICAgICAsIG1fbmVlZHNBY3RpdmF0aW9uKHVubGlua2VkQ29kZUJs
b2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpCiAgICAgLCBtX3NvdXJjZShzb3VyY2VQcm92aWRl
cikKICAgICAsIG1fc291cmNlT2Zmc2V0KHNvdXJjZU9mZnNldCkKKyAgICAsIG1fZmlyc3RMaW5l
Q29sdW1uT2Zmc2V0KGZpcnN0TGluZUNvbHVtbk9mZnNldCkKICAgICAsIG1fY29kZVR5cGUodW5s
aW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkpCiAgICAgLCBtX2FsdGVybmF0aXZlKGFsdGVybmF0
aXZlKQogICAgICwgbV9vc3JFeGl0Q291bnRlcigwKQpAQCAtMTY3MSwxMCArMTY3MywxMiBAQCBD
b2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9j
ay0+ZnVuY3Rpb25EZWNsKGkpOwogICAgICAgICB1bnNpZ25lZCBsaW5lQ291bnQgPSB1bmxpbmtl
ZEV4ZWN1dGFibGUtPmxpbmVDb3VudCgpOwogICAgICAgICB1bnNpZ25lZCBmaXJzdExpbmUgPSBv
d25lckV4ZWN1dGFibGUtPmxpbmVObygpICsgdW5saW5rZWRFeGVjdXRhYmxlLT5maXJzdExpbmVP
ZmZzZXQoKTsKKyAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSB1bmxpbmtlZEV4ZWN1dGFi
bGUtPmZ1bmN0aW9uU3RhcnRDb2x1bW4oKTsKKyAgICAgICAgc3RhcnRDb2x1bW4gKz0gKCF1bmxp
bmtlZEV4ZWN1dGFibGUtPmZpcnN0TGluZU9mZnNldCgpKSA/IG93bmVyRXhlY3V0YWJsZS0+c3Rh
cnRDb2x1bW4oKSA6IDE7CiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gc291cmNlT2Zm
c2V0ICsgdW5saW5rZWRFeGVjdXRhYmxlLT5zdGFydE9mZnNldCgpOwogICAgICAgICB1bnNpZ25l
ZCBzb3VyY2VMZW5ndGggPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnNvdXJjZUxlbmd0aCgpOwotICAg
ICAgICBTb3VyY2VDb2RlIGNvZGUobV9zb3VyY2UsIHN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCAr
IHNvdXJjZUxlbmd0aCwgZmlyc3RMaW5lKTsKLSAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlID0gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoKm1fdm0sIGNvZGUsIHVubGlu
a2VkRXhlY3V0YWJsZSwgZmlyc3RMaW5lLCBmaXJzdExpbmUgKyBsaW5lQ291bnQpOworICAgICAg
ICBTb3VyY2VDb2RlIGNvZGUobV9zb3VyY2UsIHN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCArIHNv
dXJjZUxlbmd0aCwgZmlyc3RMaW5lLCBzdGFydENvbHVtbik7CisgICAgICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSA9IEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCptX3ZtLCBj
b2RlLCB1bmxpbmtlZEV4ZWN1dGFibGUsIGZpcnN0TGluZSwgZmlyc3RMaW5lICsgbGluZUNvdW50
LCBzdGFydENvbHVtbik7CiAgICAgICAgIG1fZnVuY3Rpb25EZWNsc1tpXS5zZXQoKm1fdm0sIG93
bmVyRXhlY3V0YWJsZSwgZXhlY3V0YWJsZSk7CiAgICAgfQogCkBAIC0xNjgzLDEwICsxNjg3LDEy
IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICAgICAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9IHVubGlua2VkQ29k
ZUJsb2NrLT5mdW5jdGlvbkV4cHIoaSk7CiAgICAgICAgIHVuc2lnbmVkIGxpbmVDb3VudCA9IHVu
bGlua2VkRXhlY3V0YWJsZS0+bGluZUNvdW50KCk7CiAgICAgICAgIHVuc2lnbmVkIGZpcnN0TGlu
ZSA9IG93bmVyRXhlY3V0YWJsZS0+bGluZU5vKCkgKyB1bmxpbmtlZEV4ZWN1dGFibGUtPmZpcnN0
TGluZU9mZnNldCgpOworICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IHVubGlua2VkRXhl
Y3V0YWJsZS0+ZnVuY3Rpb25TdGFydENvbHVtbigpOworICAgICAgICBzdGFydENvbHVtbiArPSAo
IXVubGlua2VkRXhlY3V0YWJsZS0+Zmlyc3RMaW5lT2Zmc2V0KCkpID8gb3duZXJFeGVjdXRhYmxl
LT5zdGFydENvbHVtbigpIDogMTsKICAgICAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBzb3Vy
Y2VPZmZzZXQgKyB1bmxpbmtlZEV4ZWN1dGFibGUtPnN0YXJ0T2Zmc2V0KCk7CiAgICAgICAgIHVu
c2lnbmVkIHNvdXJjZUxlbmd0aCA9IHVubGlua2VkRXhlY3V0YWJsZS0+c291cmNlTGVuZ3RoKCk7
Ci0gICAgICAgIFNvdXJjZUNvZGUgY29kZShtX3NvdXJjZSwgc3RhcnRPZmZzZXQsIHN0YXJ0T2Zm
c2V0ICsgc291cmNlTGVuZ3RoLCBmaXJzdExpbmUpOwotICAgICAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgqbV92bSwgY29kZSwg
dW5saW5rZWRFeGVjdXRhYmxlLCBmaXJzdExpbmUsIGZpcnN0TGluZSArIGxpbmVDb3VudCk7Cisg
ICAgICAgIFNvdXJjZUNvZGUgY29kZShtX3NvdXJjZSwgc3RhcnRPZmZzZXQsIHN0YXJ0T2Zmc2V0
ICsgc291cmNlTGVuZ3RoLCBmaXJzdExpbmUsIHN0YXJ0Q29sdW1uKTsKKyAgICAgICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoKm1f
dm0sIGNvZGUsIHVubGlua2VkRXhlY3V0YWJsZSwgZmlyc3RMaW5lLCBmaXJzdExpbmUgKyBsaW5l
Q291bnQsIHN0YXJ0Q29sdW1uKTsKICAgICAgICAgbV9mdW5jdGlvbkV4cHJzW2ldLnNldCgqbV92
bSwgb3duZXJFeGVjdXRhYmxlLCBleGVjdXRhYmxlKTsKICAgICB9CiAKQEAgLTE5NDMsMTAgKzE5
NDksNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgICAg
IH0KIAogICAgICAgICBjYXNlIG9wX2RlYnVnOiB7Ci0gICAgICAgICAgICBzaXplX3QgY2hhclBv
c2l0aW9uID0gcGNbaSArIDRdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIHNpemVfdCBhY3R1YWxD
aGFyUG9zaXRpb24gPSBjaGFyUG9zaXRpb24gKyBtX3NvdXJjZU9mZnNldDsKLSAgICAgICAgICAg
IHNpemVfdCBjb2x1bW4gPSBtX3NvdXJjZS0+Y2hhclBvc2l0aW9uVG9Db2x1bW5OdW1iZXIoYWN0
dWFsQ2hhclBvc2l0aW9uKTsKLSAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNF0gPSBjb2x1
bW47CisgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDRdID0gY29sdW1uTnVtYmVyRm9yQnl0
ZWNvZGVPZmZzZXQoaSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yNDYz
LDE2ICsyNDY2LDMyIEBAIEhhbmRsZXJJbmZvKiBDb2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRlY28K
ICAgICByZXR1cm4gMDsKIH0KIAotaW50IENvZGVCbG9jazo6bGluZU51bWJlckZvckJ5dGVjb2Rl
T2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQordW5zaWduZWQgQ29kZUJsb2NrOjpsaW5l
TnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQoYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwog
ICAgIHJldHVybiBtX293bmVyRXhlY3V0YWJsZS0+bGluZU5vKCkgKyBtX3VubGlua2VkQ29kZS0+
bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKIH0KIAotdm9pZCBD
b2RlQmxvY2s6OmV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCBpbnQmIGRpdm90LCBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCkK
K3Vuc2lnbmVkIENvZGVCbG9jazo6Y29sdW1uTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQpCiB7Ci0gICAgbV91bmxpbmtlZENvZGUtPmV4cHJlc3Npb25SYW5n
ZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldCk7CisgICAgLy8gV2UgY2FuJ3QgYXNzZXJ0IHRoaXMgaGVyZSBiZWNhdXNlIHRoaXMg
aXMgY2FsbGVkIGZyb20gdGhlIENvZGVCbG9jaworICAgIC8vIGNvbnN0cnVjdG9yIGJlZm9yZSBp
bnN0cnVjdGlvbnMoKSBpcyBpbml0aWFsaXplZC4KKyAgICAvLyBSRUxFQVNFX0FTU0VSVChieXRl
Y29kZU9mZnNldCA8IGluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgaW50IGRpdm90OworICAg
IGludCBzdGFydE9mZnNldDsKKyAgICBpbnQgZW5kT2Zmc2V0OworICAgIHVuc2lnbmVkIGxpbmU7
CisgICAgdW5zaWduZWQgY29sdW1uOworICAgIGV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zm
c2V0KGJ5dGVjb2RlT2Zmc2V0LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgbGluZSwg
Y29sdW1uKTsKKyAgICByZXR1cm4gY29sdW1uOworfQorCit2b2lkIENvZGVCbG9jazo6ZXhwcmVz
c2lvblJhbmdlRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGludCYg
ZGl2b3QsIGludCYgc3RhcnRPZmZzZXQsIGludCYgZW5kT2Zmc2V0LCB1bnNpZ25lZCYgbGluZSwg
dW5zaWduZWQmIGNvbHVtbikKK3sKKyAgICBtX3VubGlua2VkQ29kZS0+ZXhwcmVzc2lvblJhbmdl
Rm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5k
T2Zmc2V0LCBsaW5lLCBjb2x1bW4pOwogICAgIGRpdm90ICs9IG1fc291cmNlT2Zmc2V0OworICAg
IGNvbHVtbiArPSBsaW5lID8gMSA6IGZpcnN0TGluZUNvbHVtbk9mZnNldCgpOworICAgIGxpbmUg
Kz0gbV9vd25lckV4ZWN1dGFibGUtPmxpbmVObygpOwogfQogCiB2b2lkIENvZGVCbG9jazo6c2hy
aW5rVG9GaXQoU2hyaW5rTW9kZSBzaHJpbmtNb2RlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTUxOTIwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IENhbWVyb24gWndhcmljaCA8Y3d6d2FyaWNoQHV3
YXRlcmxvby5jYT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgog
cHJvdGVjdGVkOgogICAgIENvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jayYg
b3RoZXIpOwogICAgICAgICAKLSAgICBDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQg
YmFzZVNjb3BlRGVwdGgsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+LCB1bnNpZ25lZCBzb3Vy
Y2VPZmZzZXQsIFBhc3NPd25QdHI8Q29kZUJsb2NrPiBhbHRlcm5hdGl2ZSk7CisgICAgQ29kZUJs
b2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sq
LCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIGJhc2VTY29wZURlcHRoLCBQYXNzUmVmUHRyPFNv
dXJjZVByb3ZpZGVyPiwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExpbmVD
b2x1bW5PZmZzZXQsIFBhc3NPd25QdHI8Q29kZUJsb2NrPiBhbHRlcm5hdGl2ZSk7CiAKICAgICBX
cml0ZUJhcnJpZXI8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwogICAgIEhlYXAqIG1f
aGVhcDsKQEAgLTE3Niw4ICsxNzYsMTAgQEAgcHVibGljOgogICAgIH0KIAogICAgIEhhbmRsZXJJ
bmZvKiBoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwot
ICAgIGludCBsaW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQpOwotICAgIHZvaWQgZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQsIGludCYgZGl2b3QsIGludCYgc3RhcnRPZmZzZXQsIGludCYgZW5kT2Zm
c2V0KTsKKyAgICB1bnNpZ25lZCBsaW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQpOworICAgIHVuc2lnbmVkIGNvbHVtbk51bWJlckZvckJ5dGVjb2RlT2Zm
c2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICB2b2lkIGV4cHJlc3Npb25SYW5nZUZv
ckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBpbnQmIGRpdm90LAorICAg
ICAgICBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCwgdW5zaWduZWQmIGxpbmUsIHVu
c2lnbmVkJiBjb2x1bW4pOwogCiAjaWYgRU5BQkxFKEpJVCkKIApAQCAtNTY2LDYgKzU2OCw3IEBA
IHB1YmxpYzoKIAogICAgIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZS5nZXQoKTsgfQogICAgIHVuc2lnbmVkIHNvdXJjZU9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fc291cmNlT2Zmc2V0OyB9CisgICAgdW5zaWduZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdExpbmVDb2x1bW5PZmZzZXQ7IH0KIAogICAgIHNpemVf
dCBudW1iZXJPZkp1bXBUYXJnZXRzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPm51
bWJlck9mSnVtcFRhcmdldHMoKTsgfQogICAgIHVuc2lnbmVkIGp1bXBUYXJnZXQoaW50IGluZGV4
KSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+anVtcFRhcmdldChpbmRleCk7IH0KQEAg
LTExNzEsNiArMTE3NCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXI+
IG1fc291cmNlOwogICAgIHVuc2lnbmVkIG1fc291cmNlT2Zmc2V0OworICAgIHVuc2lnbmVkIG1f
Zmlyc3RMaW5lQ29sdW1uT2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fY29kZVR5cGU7CiAKICNpZiBF
TkFCTEUoTExJTlQpCkBAIC0xMzA5LDggKzEzMTMsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAg
IH0KICAgICAgICAgCi0gICAgR2xvYmFsQ29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVy
RXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBiYXNlU2NvcGVEZXB0aCwgUGFzc1JlZlB0
cjxTb3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIHNvdXJjZU9mZnNldCwg
UGFzc093blB0cjxDb2RlQmxvY2s+IGFsdGVybmF0aXZlKQotICAgICAgICA6IENvZGVCbG9jayhv
d25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGJhc2VTY29w
ZURlcHRoLCBzb3VyY2VQcm92aWRlciwgc291cmNlT2Zmc2V0LCBhbHRlcm5hdGl2ZSkKKyAgICBH
bG9iYWxDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtl
ZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIHVuc2lnbmVkIGJhc2VTY29wZURlcHRoLCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBz
b3VyY2VQcm92aWRlciwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExpbmVD
b2x1bW5PZmZzZXQsIFBhc3NPd25QdHI8Q29kZUJsb2NrPiBhbHRlcm5hdGl2ZSkKKyAgICAgICAg
OiBDb2RlQmxvY2sob3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgZ2xvYmFsT2Jq
ZWN0LCBiYXNlU2NvcGVEZXB0aCwgc291cmNlUHJvdmlkZXIsIHNvdXJjZU9mZnNldCwgZmlyc3RM
aW5lQ29sdW1uT2Zmc2V0LCBhbHRlcm5hdGl2ZSkKICAgICB7CiAgICAgfQogfTsKQEAgLTEzMjIs
OCArMTMyNiw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgUHJvZ3JhbUNvZGVCbG9j
ayhQcm9ncmFtRXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
YXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlciwgUGFzc093blB0cjxDb2Rl
QmxvY2s+IGFsdGVybmF0aXZlKQotICAgICAgICA6IEdsb2JhbENvZGVCbG9jayhvd25lckV4ZWN1
dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIDAsIHNvdXJjZVByb3ZpZGVy
LCAwLCBhbHRlcm5hdGl2ZSkKKyAgICBQcm9ncmFtQ29kZUJsb2NrKFByb2dyYW1FeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2Rl
QmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8U291cmNlUHJv
dmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQsIFBh
c3NPd25QdHI8Q29kZUJsb2NrPiBhbHRlcm5hdGl2ZSkKKyAgICAgICAgOiBHbG9iYWxDb2RlQmxv
Y2sob3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCAwLCBz
b3VyY2VQcm92aWRlciwgMCwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0LCBhbHRlcm5hdGl2ZSkKICAg
ICB7CiAgICAgfQogCkBAIC0xMzQ1LDcgKzEzNDksNyBAQCBwdWJsaWM6CiAgICAgfQogICAgICAg
ICAKICAgICBFdmFsQ29kZUJsb2NrKEV2YWxFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVu
bGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCBp
bnQgYmFzZVNjb3BlRGVwdGgsIFBhc3NPd25QdHI8Q29kZUJsb2NrPiBhbHRlcm5hdGl2ZSkKLSAg
ICAgICAgOiBHbG9iYWxDb2RlQmxvY2sob3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9j
aywgZ2xvYmFsT2JqZWN0LCBiYXNlU2NvcGVEZXB0aCwgc291cmNlUHJvdmlkZXIsIDAsIGFsdGVy
bmF0aXZlKQorICAgICAgICA6IEdsb2JhbENvZGVCbG9jayhvd25lckV4ZWN1dGFibGUsIHVubGlu
a2VkQ29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGJhc2VTY29wZURlcHRoLCBzb3VyY2VQcm92aWRl
ciwgMCwgMSwgYWx0ZXJuYXRpdmUpCiAgICAgewogICAgIH0KIApAQCAtMTM3Miw4ICsxMzc2LDgg
QEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBGdW5jdGlvbkNvZGVCbG9jayhGdW5jdGlv
bkV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayog
dW5saW5rZWRDb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQ
dHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBzb3VyY2VPZmZzZXQs
IFBhc3NPd25QdHI8Q29kZUJsb2NrPiBhbHRlcm5hdGl2ZSA9IG51bGxwdHIpCi0gICAgICAgIDog
Q29kZUJsb2NrKG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIGdsb2JhbE9iamVj
dCwgMCwgc291cmNlUHJvdmlkZXIsIHNvdXJjZU9mZnNldCwgYWx0ZXJuYXRpdmUpCisgICAgRnVu
Y3Rpb25Db2RlQmxvY2soRnVuY3Rpb25FeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlciwg
dW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQsIFBh
c3NPd25QdHI8Q29kZUJsb2NrPiBhbHRlcm5hdGl2ZSA9IG51bGxwdHIpCisgICAgICAgIDogQ29k
ZUJsb2NrKG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwg
MCwgc291cmNlUHJvdmlkZXIsIHNvdXJjZU9mZnNldCwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0LCBh
bHRlcm5hdGl2ZSkKICAgICB7CiAgICAgfQogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9FeHByZXNzaW9uUmFuZ2VJbmZvLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4cHJlc3Npb25SYW5nZUluZm8uaAkocmV2aXNp
b24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4cHJlc3Npb25S
YW5nZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsMTQgKzMxLDYxIEBACiBuYW1lc3BhY2UgSlND
IHsKIAogc3RydWN0IEV4cHJlc3Npb25SYW5nZUluZm8geworICAgIHN0cnVjdCBGYXRQb3NpdGlv
biB7CisgICAgICAgIHVpbnQzMl90IGxpbmU7CisgICAgICAgIHVpbnQzMl90IGNvbHVtbjsKKyAg
ICB9OworCisgICAgZW51bSB7CisgICAgICAgIE1vZGUwTGluZVNoaWZ0ID0gOCwKKyAgICAgICAg
TW9kZTBMaW5lTWFzayA9ICgxIDw8IDIyKSAtIDEsCisgICAgICAgIE1vZGUwQ29sdW1uTWFzayA9
ICgxIDw8IDgpIC0gMSwKKyAgICAgICAgTW9kZTFMaW5lU2hpZnQgPSAyMiwKKyAgICAgICAgTW9k
ZTFMaW5lTWFzayA9ICgxIDw8IDgpIC0gMSwKKyAgICAgICAgTW9kZTFDb2x1bW5NYXNrID0gKDEg
PDwgMjIpIC0gMQorICAgIH07CisKICAgICBlbnVtIHsKICAgICAgICAgTWF4T2Zmc2V0ID0gKDEg
PDwgNykgLSAxLCAKLSAgICAgICAgTWF4RGl2b3QgPSAoMSA8PCAyNSkgLSAxCisgICAgICAgIE1h
eERpdm90ID0gKDEgPDwgMjUpIC0gMSwKKyAgICAgICAgTWF4TW9kZTBMaW5lID0gKDEgPDwgMjIp
IC0gMSwKKyAgICAgICAgTWF4TW9kZTBDb2x1bW4gPSAoMSA8PCA4KSAtIDEsCisgICAgICAgIE1h
eE1vZGUxTGluZSA9ICgxIDw8IDgpIC0gMSwKKyAgICAgICAgTWF4TW9kZTFDb2x1bW4gPSAoMSA8
PCAyMikgLSAxCiAgICAgfTsKKworICAgIHZvaWQgZW5jb2RlTW9kZTAodW5zaWduZWQgbGluZSwg
dW5zaWduZWQgY29sdW1uKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGxpbmUgPD0gTWF4TW9kZTBM
aW5lKTsKKyAgICAgICAgQVNTRVJUKGNvbHVtbiA8PSBNYXhNb2RlMENvbHVtbik7CisgICAgICAg
IHBvc2l0aW9uID0gKChsaW5lICYgTW9kZTBMaW5lTWFzaykgPDwgTW9kZTBMaW5lU2hpZnQgfCAo
Y29sdW1uICYgTW9kZTBDb2x1bW5NYXNrKSk7CisgICAgfQorCisgICAgdm9pZCBlbmNvZGVNb2Rl
MSh1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBjb2x1bW4pCisgICAgeworICAgICAgICBBU1NFUlQo
bGluZSA8PSBNYXhNb2RlMUxpbmUpOworICAgICAgICBBU1NFUlQoY29sdW1uIDw9IE1heE1vZGUx
Q29sdW1uKTsKKyAgICAgICAgcG9zaXRpb24gPSAoKGxpbmUgJiBNb2RlMUxpbmVNYXNrKSA8PCBN
b2RlMUxpbmVTaGlmdCB8IChjb2x1bW4gJiBNb2RlMUNvbHVtbk1hc2spKTsKKyAgICB9CisKKyAg
ICB2b2lkIGRlY29kZU1vZGUwKHVuc2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYgY29sdW1uKQorICAg
IHsKKyAgICAgICAgbGluZSA9IChwb3NpdGlvbiA+PiBNb2RlMExpbmVTaGlmdCkgJiBNb2RlMExp
bmVNYXNrOworICAgICAgICBjb2x1bW4gPSBwb3NpdGlvbiAmIE1vZGUwQ29sdW1uTWFzazsKKyAg
ICB9CisKKyAgICB2b2lkIGRlY29kZU1vZGUxKHVuc2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYgY29s
dW1uKQorICAgIHsKKyAgICAgICAgbGluZSA9IChwb3NpdGlvbiA+PiBNb2RlMUxpbmVTaGlmdCkg
JiBNb2RlMUxpbmVNYXNrOworICAgICAgICBjb2x1bW4gPSBwb3NpdGlvbiAmIE1vZGUxQ29sdW1u
TWFzazsKKyAgICB9CisKICAgICB1aW50MzJfdCBpbnN0cnVjdGlvbk9mZnNldCA6IDI1OwotICAg
IHVpbnQzMl90IGRpdm90UG9pbnQgOiAyNTsKICAgICB1aW50MzJfdCBzdGFydE9mZnNldCA6IDc7
CisgICAgdWludDMyX3QgZGl2b3RQb2ludCA6IDI1OwogICAgIHVpbnQzMl90IGVuZE9mZnNldCA6
IDc7CisgICAgdWludDMyX3QgbW9kZSA6IDI7CisgICAgdWludDMyX3QgcG9zaXRpb24gOiAzMDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNTE5MjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIs
IDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC05Miw2ICs5Miw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OjpVbmxpbmtlZEZ1bmMKICAgICAsIG1fZmlyc3RMaW5lT2Zmc2V0KG5vZGUtPmZpcnN0TGluZSgp
IC0gc291cmNlLmZpcnN0TGluZSgpKQogICAgICwgbV9saW5lQ291bnQobm9kZS0+bGFzdExpbmUo
KSAtIG5vZGUtPmZpcnN0TGluZSgpKQogICAgICwgbV9mdW5jdGlvblN0YXJ0T2Zmc2V0KG5vZGUt
PmZ1bmN0aW9uU3RhcnQoKSAtIHNvdXJjZS5zdGFydE9mZnNldCgpKQorICAgICwgbV9mdW5jdGlv
blN0YXJ0Q29sdW1uKG5vZGUtPnN0YXJ0Q29sdW1uKCkpCiAgICAgLCBtX3N0YXJ0T2Zmc2V0KG5v
ZGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCkgLSBzb3VyY2Uuc3RhcnRPZmZzZXQoKSkKICAgICAs
IG1fc291cmNlTGVuZ3RoKG5vZGUtPnNvdXJjZSgpLmxlbmd0aCgpKQogICAgICwgbV9mZWF0dXJl
cyhub2RlLT5mZWF0dXJlcygpKQpAQCAtMTIyLDggKzEyMyw5IEBAIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogVW5saW5rZWRGdW5jdGlvbkV4ZWMKIHsKICAgICB1bnNpZ25lZCBmaXJzdExpbmUgPSBsaW5l
T2Zmc2V0ICsgbV9maXJzdExpbmVPZmZzZXQ7CiAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBz
b3VyY2VPZmZzZXQgKyBtX3N0YXJ0T2Zmc2V0OwotICAgIFNvdXJjZUNvZGUgY29kZShzb3VyY2Uu
cHJvdmlkZXIoKSwgc3RhcnRPZmZzZXQsIHN0YXJ0T2Zmc2V0ICsgbV9zb3VyY2VMZW5ndGgsIGZp
cnN0TGluZSk7Ci0gICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBjb2Rl
LCB0aGlzLCBmaXJzdExpbmUsIGZpcnN0TGluZSArIG1fbGluZUNvdW50KTsKKyAgICB1bnNpZ25l
ZCBzdGFydENvbHVtbiA9IG1fZnVuY3Rpb25TdGFydENvbHVtbiArIDE7IC8vIENvbnZlcnQgdG8g
YmFzZSAxLgorICAgIFNvdXJjZUNvZGUgY29kZShzb3VyY2UucHJvdmlkZXIoKSwgc3RhcnRPZmZz
ZXQsIHN0YXJ0T2Zmc2V0ICsgbV9zb3VyY2VMZW5ndGgsIGZpcnN0TGluZSwgc3RhcnRDb2x1bW4p
OworICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgY29kZSwgdGhpcywg
Zmlyc3RMaW5lLCBmaXJzdExpbmUgKyBtX2xpbmVDb3VudCwgc3RhcnRDb2x1bW4pOwogfQogCiBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZy
b21HbG9iYWxDb2RlKGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEV4ZWNTdGF0ZSogZXhlYywgRGVi
dWdnZXIqLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTT2JqZWN0KiogZXhjZXB0aW9uKQpA
QCAtMjM2LDI0ICsyMzgsMTcgQEAgdm9pZCBVbmxpbmtlZENvZGVCbG9jazo6dmlzaXRDaGlsZHJl
bihKUwogaW50IFVubGlua2VkQ29kZUJsb2NrOjpsaW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQo
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCiB7CiAgICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0IDwg
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSAgICBWZWN0b3I8TGluZUluZm8+JiBsaW5lSW5mbyA9
IG1fbGluZUluZm87Ci0gICAgCi0gICAgaW50IGxvdyA9IDA7Ci0gICAgaW50IGhpZ2ggPSBsaW5l
SW5mby5zaXplKCk7Ci0gICAgd2hpbGUgKGxvdyA8IGhpZ2gpIHsKLSAgICAgICAgaW50IG1pZCA9
IGxvdyArIChoaWdoIC0gbG93KSAvIDI7Ci0gICAgICAgIGlmIChsaW5lSW5mb1ttaWRdLmluc3Ry
dWN0aW9uT2Zmc2V0IDw9IGJ5dGVjb2RlT2Zmc2V0KQotICAgICAgICAgICAgbG93ID0gbWlkICsg
MTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaGlnaCA9IG1pZDsKLSAgICB9Ci0gICAgCi0g
ICAgaWYgKCFsb3cpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBsaW5lSW5mb1tsb3cg
LSAxXS5saW5lTnVtYmVyOworICAgIGludCBkaXZvdDsKKyAgICBpbnQgc3RhcnRPZmZzZXQ7Cisg
ICAgaW50IGVuZE9mZnNldDsKKyAgICB1bnNpZ25lZCBsaW5lOworICAgIHVuc2lnbmVkIGNvbHVt
bjsKKyAgICBleHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCwg
ZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGxpbmUsIGNvbHVtbik7CisgICAgcmV0dXJu
IGxpbmU7CiB9CiAKLXZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OmV4cHJlc3Npb25SYW5nZUZvckJ5
dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBpbnQmIGRpdm90LCBpbnQmIHN0
YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCkKK3ZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OmV4cHJl
c3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LAorICAg
IGludCYgZGl2b3QsIGludCYgc3RhcnRPZmZzZXQsIGludCYgZW5kT2Zmc2V0LCB1bnNpZ25lZCYg
bGluZSwgdW5zaWduZWQmIGNvbHVtbikKIHsKICAgICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgPCBp
bnN0cnVjdGlvbnMoKS5zaXplKCkpOwogCkBAIC0yNjEsNiArMjU2LDggQEAgdm9pZCBVbmxpbmtl
ZENvZGVCbG9jazo6ZXhwcmVzc2lvblJhbmdlRgogICAgICAgICBzdGFydE9mZnNldCA9IDA7CiAg
ICAgICAgIGVuZE9mZnNldCA9IDA7CiAgICAgICAgIGRpdm90ID0gMDsKKyAgICAgICAgbGluZSA9
IDA7CisgICAgICAgIGNvbHVtbiA9IDA7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI3
NywxNiArMjc0LDgxIEBAIHZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OmV4cHJlc3Npb25SYW5nZUYK
ICAgICB9CiAKICAgICBBU1NFUlQobG93KTsKLSAgICBpZiAoIWxvdykgeworICAgIGlmICghbG93
KQorICAgICAgICBsb3cgPSAxOyAvLyBVc2UgbmVhcmVzdCBuZWlnaGJvciBpLmUuIDFzdCBlbnRy
eS4KKworICAgIEV4cHJlc3Npb25SYW5nZUluZm8mIGluZm8gPSBleHByZXNzaW9uSW5mb1tsb3cg
LSAxXTsKKyAgICBzdGFydE9mZnNldCA9IGluZm8uc3RhcnRPZmZzZXQ7CisgICAgZW5kT2Zmc2V0
ID0gaW5mby5lbmRPZmZzZXQ7CisgICAgZGl2b3QgPSBpbmZvLmRpdm90UG9pbnQ7CisKKyAgICBz
d2l0Y2ggKGluZm8ubW9kZSkgeworICAgIGNhc2UgMDoKKyAgICAgICAgaW5mby5kZWNvZGVNb2Rl
MChsaW5lLCBjb2x1bW4pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDE6CisgICAgICAgIGlu
Zm8uZGVjb2RlTW9kZTEobGluZSwgY29sdW1uKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAy
OiB7CisgICAgICAgIHVuc2lnbmVkIGZhdEluZGV4ID0gaW5mby5wb3NpdGlvbjsKKyAgICAgICAg
RXhwcmVzc2lvblJhbmdlSW5mbzo6RmF0UG9zaXRpb24mIGZhdFBvcyA9IG1fcmFyZURhdGEtPm1f
ZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnNbZmF0SW5kZXhdOworICAgICAgICBsaW5lID0gZmF0
UG9zLmxpbmU7CisgICAgICAgIGNvbHVtbiA9IGZhdFBvcy5jb2x1bW47CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICB9IC8vIHN3aXRjaAorfQorCit2b2lkIFVubGlua2VkQ29kZUJsb2NrOjph
ZGRFeHByZXNzaW9uSW5mbyh1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCwKKyAgICBpbnQgZGl2
b3QsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCwgdW5zaWduZWQgbGluZSwgdW5zaWdu
ZWQgY29sdW1uKQoreworICAgIGlmIChkaXZvdCA+IEV4cHJlc3Npb25SYW5nZUluZm86Ok1heERp
dm90KSB7CisgICAgICAgIC8vIE92ZXJmbG93IGhhcyBvY2N1cnJlZCwgd2UgY2FuIG9ubHkgZ2l2
ZSBsaW5lIG51bWJlciBpbmZvIGZvciBlcnJvcnMgZm9yIHRoaXMgcmVnaW9uCisgICAgICAgIGRp
dm90ID0gMDsKICAgICAgICAgc3RhcnRPZmZzZXQgPSAwOwogICAgICAgICBlbmRPZmZzZXQgPSAw
OwotICAgICAgICBkaXZvdCA9IDA7Ci0gICAgICAgIHJldHVybjsKKyAgICB9IGVsc2UgaWYgKHN0
YXJ0T2Zmc2V0ID4gRXhwcmVzc2lvblJhbmdlSW5mbzo6TWF4T2Zmc2V0KSB7CisgICAgICAgIC8v
IElmIHRoZSBzdGFydCBvZmZzZXQgaXMgb3V0IG9mIGJvdW5kcyB3ZSBjbGVhciBib3RoIG9mZnNl
dHMKKyAgICAgICAgLy8gc28gd2Ugb25seSBnZXQgdGhlIGRpdm90IG1hcmtlci4gRXJyb3IgbWVz
c2FnZSB3aWxsIGhhdmUgdG8gYmUgcmVkdWNlZAorICAgICAgICAvLyB0byBsaW5lIGFuZCBjaGFy
UG9zaXRpb24gbnVtYmVyLgorICAgICAgICBzdGFydE9mZnNldCA9IDA7CisgICAgICAgIGVuZE9m
ZnNldCA9IDA7CisgICAgfSBlbHNlIGlmIChlbmRPZmZzZXQgPiBFeHByZXNzaW9uUmFuZ2VJbmZv
OjpNYXhPZmZzZXQpIHsKKyAgICAgICAgLy8gVGhlIGVuZCBvZmZzZXQgaXMgb25seSB1c2VkIGZv
ciBhZGRpdGlvbmFsIGNvbnRleHQsIGFuZCBpcyBtdWNoIG1vcmUgbGlrZWx5CisgICAgICAgIC8v
IHRvIG92ZXJmbG93IChlZy4gZnVuY3Rpb24gY2FsbCBhcmd1bWVudHMpIHNvIHdlIGFyZSB3aWxs
aW5nIHRvIGRyb3AgaXQgd2l0aG91dAorICAgICAgICAvLyBkcm9wcGluZyB0aGUgcmVzdCBvZiB0
aGUgcmFuZ2UuCisgICAgICAgIGVuZE9mZnNldCA9IDA7CisgICAgfQorCisgICAgdW5zaWduZWQg
cG9zaXRpb25Nb2RlID0KKyAgICAgICAgKGxpbmUgPD0gRXhwcmVzc2lvblJhbmdlSW5mbzo6TWF4
TW9kZTBMaW5lICYmIGNvbHVtbiA8PSBFeHByZXNzaW9uUmFuZ2VJbmZvOjpNYXhNb2RlMENvbHVt
bikgPyAwCisgICAgICAgIDogKGxpbmUgPD0gRXhwcmVzc2lvblJhbmdlSW5mbzo6TWF4TW9kZTFM
aW5lICYmIGNvbHVtbiA8PSBFeHByZXNzaW9uUmFuZ2VJbmZvOjpNYXhNb2RlMUNvbHVtbikgPyAx
CisgICAgICAgIDogMjsKKworICAgIEV4cHJlc3Npb25SYW5nZUluZm8gaW5mbzsKKyAgICBpbmZv
Lmluc3RydWN0aW9uT2Zmc2V0ID0gaW5zdHJ1Y3Rpb25PZmZzZXQ7CisgICAgaW5mby5kaXZvdFBv
aW50ID0gZGl2b3Q7CisgICAgaW5mby5zdGFydE9mZnNldCA9IHN0YXJ0T2Zmc2V0OworICAgIGlu
Zm8uZW5kT2Zmc2V0ID0gZW5kT2Zmc2V0OworCisgICAgaW5mby5tb2RlID0gcG9zaXRpb25Nb2Rl
OworICAgIHN3aXRjaCAocG9zaXRpb25Nb2RlKSB7CisgICAgY2FzZSAwOgorICAgICAgICBpbmZv
LmVuY29kZU1vZGUwKGxpbmUsIGNvbHVtbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMToK
KyAgICAgICAgaW5mby5lbmNvZGVNb2RlMShsaW5lLCBjb2x1bW4pOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIDI6IHsKKyAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOworICAg
ICAgICB1bnNpZ25lZCBmYXRJbmRleCA9IG1fcmFyZURhdGEtPm1fZXhwcmVzc2lvbkluZm9GYXRQ
b3NpdGlvbnMuc2l6ZSgpOworICAgICAgICBFeHByZXNzaW9uUmFuZ2VJbmZvOjpGYXRQb3NpdGlv
biBmYXRQb3MgPSB7IGxpbmUsIGNvbHVtbiB9OworICAgICAgICBtX3JhcmVEYXRhLT5tX2V4cHJl
c3Npb25JbmZvRmF0UG9zaXRpb25zLmFwcGVuZChmYXRQb3MpOworICAgICAgICBpbmZvLnBvc2l0
aW9uID0gZmF0SW5kZXg7CiAgICAgfQorICAgIH07CiAKLSAgICBzdGFydE9mZnNldCA9IGV4cHJl
c3Npb25JbmZvW2xvdyAtIDFdLnN0YXJ0T2Zmc2V0OwotICAgIGVuZE9mZnNldCA9IGV4cHJlc3Np
b25JbmZvW2xvdyAtIDFdLmVuZE9mZnNldDsKLSAgICBkaXZvdCA9IGV4cHJlc3Npb25JbmZvW2xv
dyAtIDFdLmRpdm90UG9pbnQ7CisgICAgbV9leHByZXNzaW9uSW5mby5hcHBlbmQoaW5mbyk7CiB9
CiAKIHZvaWQgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkocmV2aXNpb24gMTUxOTIwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgZmly
c3RMaW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdExpbmVPZmZzZXQ7IH0KICAgICB1
bnNpZ25lZCBsaW5lQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2xpbmVDb3VudDsgfQogICAgIHVu
c2lnbmVkIGZ1bmN0aW9uU3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uU3Rh
cnRPZmZzZXQ7IH0KKyAgICB1bnNpZ25lZCBmdW5jdGlvblN0YXJ0Q29sdW1uKCkgY29uc3QgeyBy
ZXR1cm4gbV9mdW5jdGlvblN0YXJ0Q29sdW1uOyB9CiAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQo
KSBjb25zdCB7IHJldHVybiBtX3N0YXJ0T2Zmc2V0OyB9CiAgICAgdW5zaWduZWQgc291cmNlTGVu
Z3RoKCkgeyByZXR1cm4gbV9zb3VyY2VMZW5ndGg7IH0KIApAQCAtMTU5LDYgKzE2MCw3IEBAIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQgbV9maXJzdExpbmVPZmZzZXQ7CiAgICAgdW5zaWduZWQgbV9s
aW5lQ291bnQ7CiAgICAgdW5zaWduZWQgbV9mdW5jdGlvblN0YXJ0T2Zmc2V0OworICAgIHVuc2ln
bmVkIG1fZnVuY3Rpb25TdGFydENvbHVtbjsKICAgICB1bnNpZ25lZCBtX3N0YXJ0T2Zmc2V0Owog
ICAgIHVuc2lnbmVkIG1fc291cmNlTGVuZ3RoOwogCkBAIC0yNDUsMTkgKzI0Nyw4IEBAIHB1Ymxp
YzoKICAgICBib29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRz
RnVsbFNjb3BlQ2hhaW47IH0KICAgICB2b2lkIHNldE5lZWRzRnVsbFNjb3BlQ2hhaW4oYm9vbCBu
ZWVkc0Z1bGxTY29wZUNoYWluKSB7IG1fbmVlZHNGdWxsU2NvcGVDaGFpbiA9IG5lZWRzRnVsbFNj
b3BlQ2hhaW47IH0KIAotICAgIHZvaWQgYWRkRXhwcmVzc2lvbkluZm8oY29uc3QgRXhwcmVzc2lv
blJhbmdlSW5mbyYgZXhwcmVzc2lvbkluZm8pCi0gICAgewotICAgICAgICBtX2V4cHJlc3Npb25J
bmZvLmFwcGVuZChleHByZXNzaW9uSW5mbyk7Ci0gICAgfQotCi0gICAgdm9pZCBhZGRMaW5lSW5m
byh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgaW50IGxpbmVObykKLSAgICB7Ci0gICAgICAgIFZl
Y3RvcjxMaW5lSW5mbz4mIGxpbmVJbmZvID0gbV9saW5lSW5mbzsKLSAgICAgICAgaWYgKCFsaW5l
SW5mby5zaXplKCkgfHwgbGluZUluZm8ubGFzdCgpLmxpbmVOdW1iZXIgIT0gbGluZU5vKSB7Ci0g
ICAgICAgICAgICBMaW5lSW5mbyBpbmZvID0geyBieXRlY29kZU9mZnNldCwgbGluZU5vIH07Ci0g
ICAgICAgICAgICBsaW5lSW5mby5hcHBlbmQoaW5mbyk7Ci0gICAgICAgIH0KLSAgICB9CisgICAg
dm9pZCBhZGRFeHByZXNzaW9uSW5mbyh1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCwgaW50IGRp
dm90LAorICAgICAgICBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIHVuc2lnbmVkIGxp
bmUsIHVuc2lnbmVkIGNvbHVtbik7CiAKICAgICBib29sIGhhc0V4cHJlc3Npb25JbmZvKCkgeyBy
ZXR1cm4gbV9leHByZXNzaW9uSW5mby5zaXplKCk7IH0KIApAQCAtMzMxLDcgKzMyMiw2IEBAIHB1
YmxpYzoKICAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVycy5zaHJpbmtUb0ZpdCgpOwogICAgICAg
ICBtX2Z1bmN0aW9uRGVjbHMuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgbV9mdW5jdGlvbkV4cHJz
LnNocmlua1RvRml0KCk7Ci0gICAgICAgIG1fbGluZUluZm8uc2hyaW5rVG9GaXQoKTsKICAgICAg
ICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICBt
X2V4cHJlc3Npb25JbmZvLnNocmlua1RvRml0KCk7CiAKQEAgLTM0NSw2ICszMzUsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMu
c2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fY2hhcmFjdGVyU3dpdGNo
SnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJp
bmdTd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7CisgICAgICAgICAgICBtX3JhcmVEYXRh
LT5tX2V4cHJlc3Npb25JbmZvRmF0UG9zaXRpb25zLnNocmlua1RvRml0KCk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTQ1Niw3ICs0NDcsOCBAQCBwdWJsaWM6CiAKICAgICBpbnQgbGluZU51bWJl
ckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKIAotICAgIHZvaWQg
ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IGludCYgZGl2b3QsIGludCYgc3RhcnRPZmZzZXQsIGludCYgZW5kT2Zmc2V0KTsKKyAgICB2b2lk
IGV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBpbnQmIGRpdm90LAorICAgICAgICBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCwg
dW5zaWduZWQmIGxpbmUsIHVuc2lnbmVkJiBjb2x1bW4pOwogCiAgICAgdm9pZCByZWNvcmRQYXJz
ZShDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMsIHVuc2ln
bmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGluZUNvdW50KQogICAgIHsKQEAgLTUzNCw4ICs1MjYs
NiBAQCBwcml2YXRlOgogCiAgICAgV3JpdGVCYXJyaWVyPFNoYXJlZFN5bWJvbFRhYmxlPiBtX3N5
bWJvbFRhYmxlOwogCi0gICAgVmVjdG9yPExpbmVJbmZvPiBtX2xpbmVJbmZvOwotCiAgICAgVmVj
dG9yPHVuc2lnbmVkPiBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zOwogCiAjaWYgRU5BQkxF
KEJZVEVDT0RFX0NPTU1FTlRTKQpAQCAtNTY4LDYgKzU1OCw4IEBAIHB1YmxpYzoKICAgICAgICAg
VmVjdG9yPFVubGlua2VkU2ltcGxlSnVtcFRhYmxlPiBtX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJs
ZXM7CiAgICAgICAgIFZlY3RvcjxVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZT4gbV9zdHJpbmdTd2l0
Y2hKdW1wVGFibGVzOwogICAgICAgICBSZWZQdHI8Q29kZUNhY2hlPiBtX2V2YWxDb2RlQ2FjaGU7
CisKKyAgICAgICAgVmVjdG9yPEV4cHJlc3Npb25SYW5nZUluZm86OkZhdFBvc2l0aW9uPiBtX2V4
cHJlc3Npb25JbmZvRmF0UG9zaXRpb25zOwogICAgIH07CiAKIHByaXZhdGU6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAkocmV2aXNpb24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MDEs
OSArMTcwMSw5IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnUKICAg
ICByZXR1cm4gcjA7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2Fs
bChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24gZXhw
ZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50cywgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCitSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMm
IGNhbGxBcmd1bWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBsaW5lU3RhcnQpCiB7Ci0g
ICAgcmV0dXJuIGVtaXRDYWxsKG9wX2NhbGwsIGRzdCwgZnVuYywgZXhwZWN0ZWRGdW5jdGlvbiwg
Y2FsbEFyZ3VtZW50cywgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpOworICAgIHJldHVy
biBlbWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBsaW5lLCBsaW5lU3RhcnQpOwog
fQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpjcmVhdGVBcmd1bWVudHNJZk5lY2Vzc2FyeSgp
CkBAIC0xNzM0LDkgKzE3MzQsOSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpjcmVhdGVBY3Rp
dmF0aW9uCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fYWN0aXZhdGlvblJlZ2lzdGVyLT5p
bmRleCgpKTsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRXZh
bChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIENhbGxBcmd1bWVudHMmIGNhbGxB
cmd1bWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRXZhbChS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIENhbGxBcmd1bWVudHMmIGNhbGxBcmd1
bWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0LCB1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBsaW5lU3RhcnQpCiB7Ci0gICAgcmV0dXJu
IGVtaXRDYWxsKG9wX2NhbGxfZXZhbCwgZHN0LCBmdW5jLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNh
bGxBcmd1bWVudHMsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKKyAgICByZXR1cm4g
ZW1pdENhbGwob3BfY2FsbF9ldmFsLCBkc3QsIGZ1bmMsIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2Fs
bEFyZ3VtZW50cywgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGxpbmUsIGxpbmVTdGFy
dCk7CiB9CiAKIEV4cGVjdGVkRnVuY3Rpb24gQnl0ZWNvZGVHZW5lcmF0b3I6OmV4cGVjdGVkRnVu
Y3Rpb25Gb3JJZGVudGlmaWVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCkBAIC0xODE0
LDcgKzE4MTQsNyBAQCBFeHBlY3RlZEZ1bmN0aW9uIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0CiAg
ICAgcmV0dXJuIGV4cGVjdGVkRnVuY3Rpb247CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0Q2FsbChPcGNvZGVJRCBvcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1
bWVudHMmIGNhbGxBcmd1bWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRDYWxsKE9wY29kZUlEIG9wY29kZUlELCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1
bmMsIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2Fs
bEFyZ3VtZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGxpbmVTdGFydCkKIHsKICAgICBB
U1NFUlQob3Bjb2RlSUQgPT0gb3BfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF9jYWxsX2V2YWwpOwog
ICAgIEFTU0VSVChmdW5jLT5yZWZDb3VudCgpKTsKQEAgLTE4MzcsNyArMTgzNyw3IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCgKICAgICAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGNhbGxBcmd1bWVudHMucHJvZmlsZUhvb2tSZWdpc3RlcigpLT5pbmRleCgpKTsK
ICAgICB9CiAKLSAgICBlbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpOworICAgIGVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9m
ZnNldCwgbGluZSwgbGluZVN0YXJ0KTsKIAogICAgIFJlZlB0cjxMYWJlbD4gZG9uZSA9IG5ld0xh
YmVsKCk7CiAgICAgZXhwZWN0ZWRGdW5jdGlvbiA9IGVtaXRFeHBlY3RlZEZ1bmN0aW9uU25pcHBl
dChkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRvbmUuZ2V0KCkp
OwpAQCAtMTg3MSw3ICsxODcxLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRDYWxsKAogICAgIHJldHVybiBkc3Q7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q2FsbFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBS
ZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJ
RCogZmlyc3RGcmVlUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHByb2ZpbGVIb29rUmVnaXN0ZXIsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQor
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsVmFyYXJncyhSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0
ZXJJRCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgUmVnaXN0ZXJJ
RCogcHJvZmlsZUhvb2tSZWdpc3RlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGxpbmVTdGFy
dCkKIHsKICAgICBpZiAobV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzKSB7CiAgICAgICAgIGVtaXRN
b3ZlKHByb2ZpbGVIb29rUmVnaXN0ZXIsIGZ1bmMpOwpAQCAtMTg3OSw3ICsxODc5LDcgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsVgogICAgICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQocHJvZmlsZUhvb2tSZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgfQogICAgIAot
ICAgIGVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCk7Cisg
ICAgZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBsaW5l
LCBsaW5lU3RhcnQpOwogCiAgICAgLy8gRW1pdCBjYWxsLgogICAgIGVtaXRPcGNvZGUob3BfY2Fs
bF92YXJhcmdzKTsKQEAgLTE5MzEsNyArMTkzMSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0VW5hcnkKICAgICByZXR1cm4gc3JjOwogfQogCi1SZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0cnVjdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYg
Y2FsbEFyZ3VtZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0
cnVjdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24g
ZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50cywgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVk
IGxpbmUsIHVuc2lnbmVkIGxpbmVTdGFydCkKIHsKICAgICBBU1NFUlQoZnVuYy0+cmVmQ291bnQo
KSk7CiAKQEAgLTE5NTUsNyArMTk1NSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0Q29uc3QKICAgICBmb3IgKGludCBpID0gMDsgaSA8IEpTU3RhY2s6OkNhbGxGcmFtZUhl
YWRlclNpemU7ICsraSkKICAgICAgICAgY2FsbEZyYW1lLmFwcGVuZChuZXdUZW1wb3JhcnkoKSk7
CiAKLSAgICBlbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQp
OworICAgIGVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwg
bGluZSwgbGluZVN0YXJ0KTsKICAgICAKICAgICBSZWZQdHI8TGFiZWw+IGRvbmUgPSBuZXdMYWJl
bCgpOwogICAgIGV4cGVjdGVkRnVuY3Rpb24gPSBlbWl0RXhwZWN0ZWRGdW5jdGlvblNuaXBwZXQo
ZHN0LCBmdW5jLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkb25lLmdldCgpKTsK
QEAgLTIwMjUsNyArMjAyNSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQb3BTY29w
ZSgpCiAgICAgbV9keW5hbWljU2NvcGVEZXB0aC0tOwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0RGVidWdIb29rKERlYnVnSG9va0lEIGRlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5l
LCBpbnQgbGFzdExpbmUsIGludCBjaGFyUG9zaXRpb24pCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0RGVidWdIb29rKERlYnVnSG9va0lEIGRlYnVnSG9va0lELCB1bnNpZ25lZCBmaXJzdExp
bmUsIHVuc2lnbmVkIGxhc3RMaW5lLCB1bnNpZ25lZCBjaGFyT2Zmc2V0LCB1bnNpZ25lZCBsaW5l
U3RhcnQpCiB7CiAjaWYgRU5BQkxFKERFQlVHX1dJVEhfQlJFQUtQT0lOVCkKICAgICBpZiAoZGVi
dWdIb29rSUQgIT0gRGlkUmVhY2hCcmVha3BvaW50KQpAQCAtMjAzNCw3ICsyMDM0LDggQEAgdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayhEZQogICAgIGlmICghbV9zaG91bGRF
bWl0RGVidWdIb29rcykKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCi0gICAgZW1pdEV4cHJlc3Np
b25JbmZvKGNoYXJQb3NpdGlvbiwgMCwgMCk7CisgICAgZW1pdEV4cHJlc3Npb25JbmZvKGNoYXJP
ZmZzZXQsIDAsIDAsIGZpcnN0TGluZSwgbGluZVN0YXJ0KTsKKyAgICB1bnNpZ25lZCBjaGFyUG9z
aXRpb24gPSBjaGFyT2Zmc2V0IC0gbV9zY29wZU5vZGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCk7
CiAgICAgZW1pdE9wY29kZShvcF9kZWJ1Zyk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRl
YnVnSG9va0lEKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZmlyc3RMaW5lKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzM5LDcg
KzMzOSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICAvLyBOb2Rl
OjplbWl0Q29kZSBhc3N1bWVzIHRoYXQgZHN0LCBpZiBwcm92aWRlZCwgaXMgZWl0aGVyIGEgbG9j
YWwgb3IgYSByZWZlcmVuY2VkIHRlbXBvcmFyeS4KICAgICAgICAgICAgIEFTU0VSVCghZHN0IHx8
IGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkgfHwgIWRzdC0+aXNUZW1wb3JhcnkoKSB8fCBkc3QtPnJl
ZkNvdW50KCkpOwotICAgICAgICAgICAgYWRkTGluZUluZm8obi0+bGluZU5vKCkpOwogICAgICAg
ICAgICAgaWYgKCFtX3N0YWNrLmlzU2FmZVRvUmVjdXJzZSgpKSB7CiAgICAgICAgICAgICAgICAg
ZW1pdFRocm93RXhwcmVzc2lvblRvb0RlZXBFeGNlcHRpb24oKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0zNTYsNyArMzU1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAg
ICAgICAgICAgIC8vIE5vZGU6OmVtaXRDb2RlIGFzc3VtZXMgdGhhdCBkc3QsIGlmIHByb3ZpZGVk
LCBpcyBlaXRoZXIgYSBsb2NhbCBvciBhIHJlZmVyZW5jZWQgdGVtcG9yYXJ5LgogICAgICAgICAg
ICAgQVNTRVJUKCFkc3QgfHwgZHN0ID09IGlnbm9yZWRSZXN1bHQoKSB8fCAhZHN0LT5pc1RlbXBv
cmFyeSgpIHx8IGRzdC0+cmVmQ291bnQoKSk7Ci0gICAgICAgICAgICBhZGRMaW5lSW5mbyhuLT5s
aW5lTm8oKSk7CiAgICAgICAgICAgICBpZiAoIW1fc3RhY2suaXNTYWZlVG9SZWN1cnNlKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGVtaXRUaHJvd0V4cHJlc3Npb25Ub29EZWVwRXhjZXB0aW9u
KCk7CiAgICAgICAgICAgICByZXR1cm4gbi0+ZW1pdEJ5dGVjb2RlKCp0aGlzLCBkc3QpOwpAQCAt
MzY5LDcgKzM2Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgZW1pdE5vZGVJ
bkNvbmRpdGlvbkNvbnRleHQoRXhwcmVzc2lvbk5vZGUqIG4sIExhYmVsKiB0cnVlVGFyZ2V0LCBM
YWJlbCogZmFsc2VUYXJnZXQsIEZhbGxUaHJvdWdoTW9kZSBmYWxsVGhyb3VnaE1vZGUpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGFkZExpbmVJbmZvKG4tPmxpbmVObygpKTsKICAgICAgICAgICAg
IGlmICghbV9zdGFjay5pc1NhZmVUb1JlY3Vyc2UoKSkgewogICAgICAgICAgICAgICAgIGVtaXRU
aHJvd0V4cHJlc3Npb25Ub29EZWVwRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMzc4LDMzICszNzUsMzUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBuLT5l
bWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoKnRoaXMsIHRydWVUYXJnZXQsIGZhbHNlVGFy
Z2V0LCBmYWxsVGhyb3VnaE1vZGUpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBlbWl0RXhw
cmVzc2lvbkluZm8odW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpCisgICAgICAgIHZvaWQgZW1pdEV4cHJlc3Npb25JbmZvV2l0aFBvc2l0aW9u
cyhpbnQgZGl2b3RQb3MsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCwgdW5zaWduZWQg
bGluZSwgaW50IGxpbmVTdGFydFBvcykKICAgICAgICAgewotICAgICAgICAgICAgZGl2b3QgLT0g
bV9zY29wZU5vZGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCk7Ci0gICAgICAgICAgICBpZiAoZGl2
b3QgPiBFeHByZXNzaW9uUmFuZ2VJbmZvOjpNYXhEaXZvdCkgewotICAgICAgICAgICAgICAgIC8v
IE92ZXJmbG93IGhhcyBvY2N1cnJlZCwgd2UgY2FuIG9ubHkgZ2l2ZSBsaW5lIG51bWJlciBpbmZv
IGZvciBlcnJvcnMgZm9yIHRoaXMgcmVnaW9uCi0gICAgICAgICAgICAgICAgZGl2b3QgPSAwOwot
ICAgICAgICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gMDsKLSAgICAgICAgICAgICAgICBlbmRPZmZz
ZXQgPSAwOwotICAgICAgICAgICAgfSBlbHNlIGlmIChzdGFydE9mZnNldCA+IEV4cHJlc3Npb25S
YW5nZUluZm86Ok1heE9mZnNldCkgewotICAgICAgICAgICAgICAgIC8vIElmIHRoZSBzdGFydCBv
ZmZzZXQgaXMgb3V0IG9mIGJvdW5kcyB3ZSBjbGVhciBib3RoIG9mZnNldHMKLSAgICAgICAgICAg
ICAgICAvLyBzbyB3ZSBvbmx5IGdldCB0aGUgZGl2b3QgbWFya2VyLiAgRXJyb3IgbWVzc2FnZSB3
aWxsIGhhdmUgdG8gYmUgcmVkdWNlZAotICAgICAgICAgICAgICAgIC8vIHRvIGxpbmUgYW5kIGNo
YXJQb3NpdGlvbiBudW1iZXIuCi0gICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQgPSAwOwotICAg
ICAgICAgICAgICAgIGVuZE9mZnNldCA9IDA7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGVuZE9m
ZnNldCA+IEV4cHJlc3Npb25SYW5nZUluZm86Ok1heE9mZnNldCkgewotICAgICAgICAgICAgICAg
IC8vIFRoZSBlbmQgb2Zmc2V0IGlzIG9ubHkgdXNlZCBmb3IgYWRkaXRpb25hbCBjb250ZXh0LCBh
bmQgaXMgbXVjaCBtb3JlIGxpa2VseQotICAgICAgICAgICAgICAgIC8vIHRvIG92ZXJmbG93IChl
Zy4gZnVuY3Rpb24gY2FsbCBhcmd1bWVudHMpIHNvIHdlIGFyZSB3aWxsaW5nIHRvIGRyb3AgaXQg
d2l0aG91dAotICAgICAgICAgICAgICAgIC8vIGRyb3BwaW5nIHRoZSByZXN0IG9mIHRoZSByYW5n
ZS4KLSAgICAgICAgICAgICAgICBlbmRPZmZzZXQgPSAwOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgCi0gICAgICAgICAgICBFeHByZXNzaW9uUmFuZ2VJbmZvIGluZm87Ci0gICAgICAgICAg
ICBpbmZvLmluc3RydWN0aW9uT2Zmc2V0ID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAgICAg
ICAgICAgaW5mby5kaXZvdFBvaW50ID0gZGl2b3Q7Ci0gICAgICAgICAgICBpbmZvLnN0YXJ0T2Zm
c2V0ID0gc3RhcnRPZmZzZXQ7Ci0gICAgICAgICAgICBpbmZvLmVuZE9mZnNldCA9IGVuZE9mZnNl
dDsKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRFeHByZXNzaW9uSW5mbyhpbmZvKTsKKyAg
ICAgICAgICAgIGludCBzb3VyY2VPZmZzZXQgPSBtX3Njb3BlTm9kZS0+c291cmNlKCkuc3RhcnRP
ZmZzZXQoKTsKKyAgICAgICAgICAgIGludCBkaXZvdCA9IHNvdXJjZU9mZnNldCArIGRpdm90UG9z
OworICAgICAgICAgICAgaW50IGxpbmVTdGFydCA9IHNvdXJjZU9mZnNldCArIGxpbmVTdGFydFBv
czsKKyAgICAgICAgICAgIGVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCwgc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldCwgbGluZSwgbGluZVN0YXJ0KTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZW1p
dEV4cHJlc3Npb25JbmZvKGludCBkaXZvdCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0
LCB1bnNpZ25lZCBsaW5lLCBpbnQgbGluZVN0YXJ0KQorICAgICAgICB7CisgICAgICAgICAgICBp
bnQgc291cmNlT2Zmc2V0ID0gbV9zY29wZU5vZGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCk7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBmaXJzdExpbmUgPSBtX3Njb3BlTm9kZS0+c291cmNlKCkuZmly
c3RMaW5lKCk7CisKKyAgICAgICAgICAgIEFTU0VSVChkaXZvdCA+PSBsaW5lU3RhcnQpOworICAg
ICAgICAgICAgQVNTRVJUKGRpdm90ID49IHNvdXJjZU9mZnNldCk7CisgICAgICAgICAgICBkaXZv
dCAtPSBzb3VyY2VPZmZzZXQ7CisKKyAgICAgICAgICAgIGlmIChsaW5lU3RhcnQgPiBzb3VyY2VP
ZmZzZXQpCisgICAgICAgICAgICAgICAgbGluZVN0YXJ0IC09IHNvdXJjZU9mZnNldDsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsaW5lU3RhcnQgPSAwOworCisgICAgICAgICAg
ICBBU1NFUlQobGluZSA+PSBmaXJzdExpbmUpOworICAgICAgICAgICAgbGluZSAtPSBmaXJzdExp
bmU7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0ID0gaW5zdHJ1Y3Rp
b25zKCkuc2l6ZSgpOworICAgICAgICAgICAgQVNTRVJUKGRpdm90ID49IGxpbmVTdGFydCk7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBjb2x1bW4gPSBkaXZvdCAtIGxpbmVTdGFydDsKKyAgICAgICAg
ICAgIG1fY29kZUJsb2NrLT5hZGRFeHByZXNzaW9uSW5mbyhpbnN0cnVjdGlvbk9mZnNldCwgZGl2
b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGxpbmUsIGNvbHVtbik7CiAgICAgICAgIH0KIAog
ICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgbGVmdEhhbmRTaWRlTmVlZHNDb3B5KGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodElzUHVyZSkKQEAgLTQ4MCwxNSArNDc5LDE1IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRQdXRHZXR0ZXJTZXR0ZXIoUmVnaXN0
ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIGdldHRl
ciwgUmVnaXN0ZXJJRCogc2V0dGVyKTsKICAgICAgICAgCiAgICAgICAgIEV4cGVjdGVkRnVuY3Rp
b24gZXhwZWN0ZWRGdW5jdGlvbkZvcklkZW50aWZpZXIoY29uc3QgSWRlbnRpZmllciYpOwotICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1
bmMsIEV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMmLCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7Ci0gICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRDYWxsRXZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIENhbGxB
cmd1bWVudHMmLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsVmFyYXJncyhSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVn
aXN0ZXJJRCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgUmVnaXN0
ZXJJRCogcHJvZmlsZUhvb2tSZWdpc3RlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2Fs
bChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24sIENh
bGxBcmd1bWVudHMmLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCwgdW5zaWduZWQgbGluZSwgdW5zaWduZWQgbGluZVN0YXJ0KTsKKyAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdENhbGxFdmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
ZnVuYywgQ2FsbEFyZ3VtZW50cyYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBsaW5lU3RhcnQp
OworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFy
Z3VtZW50cywgUmVnaXN0ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHByb2Zp
bGVIb29rUmVnaXN0ZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBsaW5lU3RhcnQpOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0TG9hZFZhcmFyZ3MoUmVnaXN0ZXJJRCogYXJnQ291bnREc3Qs
IFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJncyk7CiAKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdFJldHVybihSZWdpc3RlcklEKiBzcmMpOwogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0RW5kKFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdFVuYXJ5Tm9Ec3RPcChv
cF9lbmQsIHNyYyk7IH0KIAotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q29uc3RydWN0KFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3Vt
ZW50cyYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENvbnN0cnVjdChSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMmLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwg
dW5zaWduZWQgbGluZSwgdW5zaWduZWQgbGluZVN0YXJ0KTsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdFN0cmNhdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgaW50IGNvdW50KTsK
ICAgICAgICAgdm9pZCBlbWl0VG9QcmltaXRpdmUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBzcmMpOwogCkBAIC01MjQsNyArNTIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRQdXNoV2l0aFNjb3BlKFJlZ2lzdGVySUQqIHNjb3BlKTsKICAgICAgICAg
dm9pZCBlbWl0UG9wU2NvcGUoKTsKIAotICAgICAgICB2b2lkIGVtaXREZWJ1Z0hvb2soRGVidWdI
b29rSUQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50IGNoYXJQb3NpdGlvbik7Cisg
ICAgICAgIHZvaWQgZW1pdERlYnVnSG9vayhEZWJ1Z0hvb2tJRCwgdW5zaWduZWQgZmlyc3RMaW5l
LCB1bnNpZ25lZCBsYXN0TGluZSwgdW5zaWduZWQgY2hhck9mZnNldCwgdW5zaWduZWQgbGluZVN0
YXJ0KTsKIAogICAgICAgICBpbnQgc2NvcGVEZXB0aCgpIHsgcmV0dXJuIG1fZHluYW1pY1Njb3Bl
RGVwdGggKyBtX2ZpbmFsbHlEZXB0aDsgfQogICAgICAgICBib29sIGhhc0ZpbmFsaXNlcigpIHsg
cmV0dXJuIG1fZmluYWxseURlcHRoICE9IDA7IH0KQEAgLTU5Miw3ICs1OTEsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgLy8gKGkuZS4gIk9iamVjdCgpIiBpcyBpZGVudGljYWwgdG8gIm5l
dyBPYmplY3QoKSIpLgogICAgICAgICBFeHBlY3RlZEZ1bmN0aW9uIGVtaXRFeHBlY3RlZEZ1bmN0
aW9uU25pcHBldChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVu
Y3Rpb24sIENhbGxBcmd1bWVudHMmLCBMYWJlbCogZG9uZSk7CiAgICAgICAgIAotICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0Q2FsbChPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiwgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBSZWdp
c3RlcklEKiBlbWl0Q2FsbChPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBm
dW5jLCBFeHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiwgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGxpbmUsIHVu
c2lnbmVkIGxpbmVTdGFydCk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogbmV3UmVnaXN0ZXIoKTsK
IApAQCAtNjQ2LDExICs2NDUsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVy
biBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5z
b3VyY2UoKSwgYm9keSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGFkZExpbmVJbmZvKHVu
c2lnbmVkIGxpbmVObykKLSAgICAgICAgewotICAgICAgICAgICAgbV9jb2RlQmxvY2stPmFkZExp
bmVJbmZvKGluc3RydWN0aW9ucygpLnNpemUoKSwgbGluZU5vIC0gbV9zY29wZU5vZGUtPmZpcnN0
TGluZSgpKTsKLSAgICAgICAgfQotCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbml0TGF6eVJl
Z2lzdGVyKFJlZ2lzdGVySUQqKTsKIAogICAgIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9u
IDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcsNyArODcsNyBAQCB2b2lkIEV4cHJlc3Npb25O
b2RlOjplbWl0Qnl0ZWNvZGVJbkNvbmRpCiAKIFJlZ2lzdGVySUQqIFRocm93YWJsZUV4cHJlc3Np
b25EYXRhOjplbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90
RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICBnZW5lcmF0
b3IuZW1pdFRocm93UmVmZXJlbmNlRXJyb3IobWVzc2FnZSk7CiAgICAgcmV0dXJuIGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKTsKIH0KQEAgLTE1Myw3ICsxNTMsOCBAQCBSZWdpc3RlcklEKiBSZXNv
bHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5CiAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRv
RGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGxvY2FsKTsKICAgICB9CiAgICAgCi0gICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhtX3N0YXJ0T2Zmc2V0ICsgbV9pZGVudC5sZW5ndGgoKSwg
bV9pZGVudC5sZW5ndGgoKSwgMCk7CisgICAgdW5zaWduZWQgZGl2b3QgPSBtX3N0YXJ0T2Zmc2V0
ICsgbV9pZGVudC5sZW5ndGgoKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90LCBtX2lkZW50Lmxlbmd0aCgpLCAwLCBtX2Rpdm90TGluZSwgbV9kaXZvdExpbmVTdGFydCk7
CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0UmVzb2x2ZShnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbihkc3QpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50KTsKIH0KIApAQCAtMjAxLDE1ICsyMDIs
MTYgQEAgYm9vbCBBcnJheU5vZGU6OmlzU2ltcGxlQXJyYXkoKSBjb25zdAogICAgIHJldHVybiB0
cnVlOwogfQogCi1Bcmd1bWVudExpc3ROb2RlKiBBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0KFZN
KiB2bSwgaW50IGxpbmVOdW1iZXIsIGludCBjaGFyUG9zaXRpb24pIGNvbnN0CitBcmd1bWVudExp
c3ROb2RlKiBBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0KFZNKiB2bSwgaW50IGxpbmVOdW1iZXIs
IGludCBzdGFydFBvc2l0aW9uLCB1bnNpZ25lZCBzb3VyY2VPZmZzZXQpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKCFtX2VsaXNpb24gJiYgIW1fb3B0aW9uYWwpOwogICAgIEVsZW1lbnROb2RlKiBwdHIg
PSBtX2VsZW1lbnQ7CiAgICAgaWYgKCFwdHIpCiAgICAgICAgIHJldHVybiAwOwotICAgIEpTVG9r
ZW5Mb2NhdGlvbiBsb2NhdGlvbjsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24oc291cmNl
T2Zmc2V0KTsKICAgICBsb2NhdGlvbi5saW5lID0gbGluZU51bWJlcjsKLSAgICBsb2NhdGlvbi5j
aGFyUG9zaXRpb24gPSBjaGFyUG9zaXRpb247CisgICAgbG9jYXRpb24uc3RhcnRPZmZzZXQgPSBz
dGFydFBvc2l0aW9uOworICAgIGxvY2F0aW9uLnNvdXJjZU9mZnNldCA9IHNvdXJjZU9mZnNldDsK
ICAgICBBcmd1bWVudExpc3ROb2RlKiBoZWFkID0gbmV3ICh2bSkgQXJndW1lbnRMaXN0Tm9kZShs
b2NhdGlvbiwgcHRyLT52YWx1ZSgpKTsKICAgICBBcmd1bWVudExpc3ROb2RlKiB0YWlsID0gaGVh
ZDsKICAgICBwdHIgPSBwdHItPm5leHQoKTsKQEAgLTMyNCwxMyArMzI2LDEzIEBAIFJlZ2lzdGVy
SUQqIEJyYWNrZXRBY2Nlc3Nvck5vZGU6OmVtaXRCeXQKICAgICAgICAgJiYgZ2VuZXJhdG9yLndp
bGxSZXNvbHZlVG9Bcmd1bWVudHMoc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihtX2Jhc2UpLT5p
ZGVudGlmaWVyKCkpCiAgICAgICAgICYmICFnZW5lcmF0b3Iuc3ltYm9sVGFibGUoKS5zbG93QXJn
dW1lbnRzKCkpIHsKICAgICAgICAgUmVnaXN0ZXJJRCogcHJvcGVydHkgPSBnZW5lcmF0b3IuZW1p
dE5vZGUobV9zdWJzY3JpcHQpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsgICAgCisgICAgICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNldCgpLCBkaXZv
dEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgICAgIHJl
dHVybiBnZW5lcmF0b3IuZW1pdEdldEFyZ3VtZW50QnlWYWwoZ2VuZXJhdG9yLmZpbmFsRGVzdGlu
YXRpb24oZHN0KSwgZ2VuZXJhdG9yLnVuY2hlY2tlZFJlZ2lzdGVyRm9yQXJndW1lbnRzKCksIHBy
b3BlcnR5KTsKICAgICB9CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRv
ci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2Jhc2UsIG1fc3Vic2NyaXB0SGFzQXNzaWdubWVu
dHMsIG1fc3Vic2NyaXB0LT5pc1B1cmUoZ2VuZXJhdG9yKSk7CiAgICAgUmVnaXN0ZXJJRCogcHJv
cGVydHkgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9zdWJzY3JpcHQpOwotICAgIGdlbmVyYXRvci5l
bWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOwor
ICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNl
dCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAg
ICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRp
b24oZHN0KSwgYmFzZS5nZXQoKSwgcHJvcGVydHkpOwogfQogCkBAIC0zNDQsMTMgKzM0NiwxMyBA
QCBSZWdpc3RlcklEKiBEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kCiAgICAgICAgIFJlc29s
dmVOb2RlKiByZXNvbHZlTm9kZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4obV9iYXNlKTsK
ICAgICAgICAgaWYgKCFnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhyZXNvbHZlTm9k
ZS0+aWRlbnRpZmllcigpKSkKICAgICAgICAgICAgIGdvdG8gbm9uQXJndW1lbnRzUGF0aDsKLSAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgp
LCBlbmRPZmZzZXQoKSk7ICAgIAorICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5l
KCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRB
cmd1bWVudHNMZW5ndGgoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgZ2VuZXJhdG9y
LnVuY2hlY2tlZFJlZ2lzdGVyRm9yQXJndW1lbnRzKCkpOwogICAgIH0KIAogbm9uQXJndW1lbnRz
UGF0aDoKICAgICBSZWdpc3RlcklEKiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7
Ci0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgp
LCBlbmRPZmZzZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgp
LCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZv
dExpbmVTdGFydCgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRv
ci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGJhc2UsIG1faWRlbnQpOwogfQogCkBAIC0zNzMsNyAr
Mzc1LDcgQEAgUmVnaXN0ZXJJRCogTmV3RXhwck5vZGU6OmVtaXRCeXRlY29kZShCeQogICAgICAg
ICBleHBlY3RlZEZ1bmN0aW9uID0gTm9FeHBlY3RlZEZ1bmN0aW9uOwogICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBmdW5jID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7CiAgICAgQ2FsbEFyZ3Vt
ZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICByZXR1cm4gZ2VuZXJh
dG9yLmVtaXRDb25zdHJ1Y3QoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQoZHN0
KSwgZnVuYy5nZXQoKSwgZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwg
c3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdENv
bnN0cnVjdChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZChkc3QpLCBmdW5jLmdl
dCgpLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0
T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgp
KTsKIH0KIAogaW5saW5lIENhbGxBcmd1bWVudHM6OkNhbGxBcmd1bWVudHMoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgQXJndW1lbnRzTm9kZSogYXJndW1lbnRzTm9kZSkKQEAgLTQwOCw5
ICs0MTAsOSBAQCBSZWdpc3RlcklEKiBFdmFsRnVuY3Rpb25DYWxsTm9kZTo6ZW1pdEJ5CiB7CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmMgPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRz
dCk7CiAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsK
LSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCkgLSBzdGFydE9mZnNldCgp
ICsgNCwgNCwgMCk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpIC0g
ZGl2b3RTdGFydE9mZnNldCgpICsgNCwgNCwgMCwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0
KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVdpdGhUaGlzKGNhbGxBcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCksIGZ1bmMuZ2V0KCksIGdlbmVyYXRvci5yZXNvbHZlKGdlbmVyYXRvci5wcm9w
ZXJ0eU5hbWVzKCkuZXZhbCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZXZhbCk7Ci0gICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbEV2YWwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24o
ZHN0LCBmdW5jLmdldCgpKSwgZnVuYy5nZXQoKSwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgc3Rh
cnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdENhbGxF
dmFsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuYy5nZXQoKSksIGZ1bmMuZ2V0
KCksIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRP
ZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogfQogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25DYWxsVmFsdWVOb2RlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQyMCw3ICs0MjIsNyBAQCBSZWdpc3RlcklEKiBG
dW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmMg
PSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1
bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJn
dW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKLSAgICByZXR1cm4gZ2VuZXJh
dG9yLmVtaXRDYWxsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVu
Yy5nZXQoKSksIGZ1bmMuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywg
ZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdENhbGwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQoZHN0LCBmdW5j
LmdldCgpKSwgZnVuYy5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBk
aXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgp
LCBkaXZvdExpbmVTdGFydCgpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KQEAgLTQzNiw3ICs0MzgsNyBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxSZXNvbHZl
Tm9kZTo6ZW1pCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNS
ZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgLy8gVGhpcyBwYXNzZXMgTm9FeHBl
Y3RlZEZ1bmN0aW9uIGJlY2F1c2Ugd2UgZXhwZWN0IHRoYXQgaWYgdGhlIGZ1bmN0aW9uIGlzIGlu
IGEKICAgICAgICAgLy8gbG9jYWwgdmFyaWFibGUsIHRoZW4gaXQncyBub3Qgb25lIG9mIG91ciBi
dWlsdC1pbiBjb25zdHJ1Y3RvcnMuCi0gICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdENhbGwo
Z2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQoZHN0LCBjYWxsQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpKSwgZnVuYy5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1l
bnRzLCBkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgICAgIHJldHVy
biBnZW5lcmF0b3IuZW1pdENhbGwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQo
ZHN0LCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpKSwgZnVuYy5nZXQoKSwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRp
dm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICB9CiAK
ICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpKSB7CkBAIC00NDQsMTYgKzQ0NiwxNiBA
QCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1pCiAgICAgICAgIENhbGxB
cmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgIGdlbmVy
YXRvci5lbWl0R2V0U3RhdGljVmFyKGZ1bmMuZ2V0KCksIHJlc29sdmVSZXN1bHQsIG1faWRlbnQp
OwogICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdENhbGwoZ2Vu
ZXJhdG9yLmZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQoZHN0LCBmdW5jLmdldCgpKSwgZnVuYy5n
ZXQoKSwgZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgc3RhcnRPZmZz
ZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsKGdl
bmVyYXRvci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVuYy5nZXQoKSksIGZ1bmMu
Z2V0KCksIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3Rh
cnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0
KCkpOwogICAgIH0KIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOwogICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3Is
IG1fYXJncyk7Ci0gICAgaW50IGlkZW50aWZpZXJTdGFydCA9IGRpdm90KCkgLSBzdGFydE9mZnNl
dCgpOworICAgIGludCBpZGVudGlmaWVyU3RhcnQgPSBkaXZvdCgpIC0gZGl2b3RTdGFydE9mZnNl
dCgpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhpZGVudGlmaWVyU3RhcnQg
KyBtX2lkZW50Lmxlbmd0aCgpLCBtX2lkZW50Lmxlbmd0aCgpLCAwKTsKKyAgICBnZW5lcmF0b3Iu
ZW1pdEV4cHJlc3Npb25JbmZvKGlkZW50aWZpZXJTdGFydCArIG1faWRlbnQubGVuZ3RoKCksIG1f
aWRlbnQubGVuZ3RoKCksIDAsIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICBn
ZW5lcmF0b3IuZW1pdFJlc29sdmVXaXRoVGhpcyhjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBmdW5jLmdldCgpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50KTsKLSAgICByZXR1cm4gZ2VuZXJh
dG9yLmVtaXRDYWxsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVu
Yy5nZXQoKSksIGZ1bmMuZ2V0KCksIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRp
dm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9y
LmVtaXRDYWxsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVuYy5n
ZXQoKSksIGZ1bmMuZ2V0KCksIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90
KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRp
dm90TGluZVN0YXJ0KCkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
RnVuY3Rpb25DYWxsQnJhY2tldE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpAQCAtNDYyLDExICs0NjQsMTEgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsQnJhY2tldE5v
ZGU6OmVtaQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXRO
b2RlKG1fYmFzZSk7CiAgICAgUmVnaXN0ZXJJRCogcHJvcGVydHkgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobV9zdWJzY3JpcHQpOwotICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3Qo
KSAtIG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0LCBzdGFydE9mZnNldCgpIC0gbV9zdWJleHBy
ZXNzaW9uRGl2b3RPZmZzZXQsIG1fc3ViZXhwcmVzc2lvbkVuZE9mZnNldCk7CisgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lv
blN0YXJ0T2Zmc2V0KCksIHN1YmV4cHJlc3Npb25FbmRPZmZzZXQoKSwgc3ViZXhwcmVzc2lvbkxp
bmUoKSwgc3ViZXhwcmVzc2lvbkxpbmVTdGFydCgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
ZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRvci50ZW1wRGVzdGluYXRp
b24oZHN0KSwgYmFzZS5nZXQoKSwgcHJvcGVydHkpOwogICAgIENhbGxBcmd1bWVudHMgY2FsbEFy
Z3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxB
cmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwotICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdENhbGwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQoZHN0LCBmdW5j
dGlvbi5nZXQoKSksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICByZXR1cm4g
Z2VuZXJhdG9yLmVtaXRDYWxsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRz
dCwgZnVuY3Rpb24uZ2V0KCkpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBj
YWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0
KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9uQ2FsbERvdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQpAQCAtNDc2LDkgKzQ3OCw5IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9u
Q2FsbERvdE5vZGU6OmVtaXRCeXQKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb24gPSBn
ZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJn
dW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFy
Z3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9iYXNlKTsKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGRpdm90KCkgLSBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNldCwgc3RhcnRPZmZz
ZXQoKSAtIG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0LCBtX3N1YmV4cHJlc3Npb25FbmRPZmZz
ZXQpOworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90
KCksIHN1YmV4cHJlc3Npb25TdGFydE9mZnNldCgpLCBzdWJleHByZXNzaW9uRW5kT2Zmc2V0KCks
IHN1YmV4cHJlc3Npb25MaW5lKCksIHN1YmV4cHJlc3Npb25MaW5lU3RhcnQoKSk7CiAgICAgZ2Vu
ZXJhdG9yLmVtaXRHZXRCeUlkKGZ1bmN0aW9uLmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdp
c3RlcigpLCBtX2lkZW50KTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsKGdlbmVyYXRv
ci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVuY3Rpb24uZ2V0KCkpLCBmdW5jdGlv
bi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBzdGFy
dE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbChn
ZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZChkc3QsIGZ1bmN0aW9uLmdldCgpKSwg
ZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3Qo
KSwgZGl2b3RTdGFydE9mZnNldCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2
b3RMaW5lU3RhcnQoKSk7CiB9CiAKIFJlZ2lzdGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3ROb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQpAQCAtNDg2LDcgKzQ4OCw3IEBAIFJlZ2lzdGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3RO
b2RlOjplbWkKICAgICBSZWZQdHI8TGFiZWw+IHJlYWxDYWxsID0gZ2VuZXJhdG9yLm5ld0xhYmVs
KCk7CiAgICAgUmVmUHRyPExhYmVsPiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwotICAg
IGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSAtIG1fc3ViZXhwcmVzc2lvbkRp
dm90T2Zmc2V0LCBzdGFydE9mZnNldCgpIC0gbV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQsIG1f
c3ViZXhwcmVzc2lvbkVuZE9mZnNldCk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5m
byhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0T2Zmc2V0KCksIHN1YmV4
cHJlc3Npb25FbmRPZmZzZXQoKSwgc3ViZXhwcmVzc2lvbkxpbmUoKSwgc3ViZXhwcmVzc2lvbkxp
bmVTdGFydCgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3Iu
ZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBt
X2lkZW50KTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZmluYWxEZXN0aW5hdGlvbk9ySWdub3Jl
ZCA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVuY3Rpb24uZ2V0
KCkpOwogICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKGZ1bmN0aW9uLmdl
dCgpLCByZWFsQ2FsbC5nZXQoKSk7CkBAIC00OTgsNyArNTAwLDcgQEAgUmVnaXN0ZXJJRCogQ2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaQogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0
aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJn
dW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKGZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQuZ2V0KCks
IHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBk
aXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdENhbGwoZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZC5nZXQoKSwgcmVhbEZ1bmN0aW9u
LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90
U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0
YXJ0KCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CiAKICAg
ICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7CkBAIC01MDYsNyArNTA4LDcg
QEAgUmVnaXN0ZXJJRCogQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaQogICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5l
cmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgQ2Fs
bEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVm
aW5lZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChmaW5hbERlc3RpbmF0aW9u
T3JJZ25vcmVkLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwg
Y2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKGZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQuZ2V0
KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRz
LCBkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGlu
ZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChl
bmQuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtNTE0LDcgKzUxNiw3IEBAIFJlZ2lzdGVy
SUQqIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWkKICAgICB7CiAgICAgICAgIENhbGxBcmd1
bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKLSAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKGZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQuZ2V0KCks
IGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90
KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRD
YWxsKGZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQo
KSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAg
IH0KICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgcmV0dXJuIGZpbmFs
RGVzdGluYXRpb25Pcklnbm9yZWQuZ2V0KCk7CkBAIC01MzYsNyArNTM4LDcgQEAgUmVnaXN0ZXJJ
RCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbQogICAgIFJlZlB0cjxMYWJlbD4gcmVhbENh
bGwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8TGFiZWw+IGVuZCA9IGdlbmVy
YXRvci5uZXdMYWJlbCgpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9y
LmVtaXROb2RlKG1fYmFzZSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZv
dCgpIC0gbV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQsIHN0YXJ0T2Zmc2V0KCkgLSBtX3N1YmV4
cHJlc3Npb25EaXZvdE9mZnNldCwgbV9zdWJleHByZXNzaW9uRW5kT2Zmc2V0KTsKKyAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNz
aW9uU3RhcnRPZmZzZXQoKSwgc3ViZXhwcmVzc2lvbkVuZE9mZnNldCgpLCBzdWJleHByZXNzaW9u
TGluZSgpLCBzdWJleHByZXNzaW9uTGluZVN0YXJ0KCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0
aW9uKGRzdCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBm
aW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb25Pckln
bm9yZWQoZHN0LCBmdW5jdGlvbi5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RG
dW5jdGlvbkFwcGx5KGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CkBAIC01NDcsMjQg
KzU0OSwyNCBAQCBSZWdpc3RlcklEKiBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtCiAgICAg
ICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7CiAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1Np
bXBsZUFycmF5KCkpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fYXJncy0+bV9saXN0
Tm9kZS0+bV9uZXh0LT5tX25leHQpOwotICAgICAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlz
dE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4
dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3QoZ2VuZXJhdG9yLnZtKCksIDAsIDApOworICAgICAg
ICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUq
PihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3QoZ2Vu
ZXJhdG9yLnZtKCksIDAsIDAsIDApOwogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVz
dGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIENhbGxBcmd1
bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRM
aXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwoZmlu
YWxEZXN0aW5hdGlvbk9ySWdub3JlZC5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVj
dGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9m
ZnNldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKGZpbmFsRGVz
dGluYXRpb25Pcklnbm9yZWQuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1
bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90
RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBt
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVt
cERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBDYWxs
QXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwg
b2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxs
KGZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBl
bmRPZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChmaW5h
bERlc3RpbmF0aW9uT3JJZ25vcmVkLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNldCgpLCBk
aXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5h
dGlvbihkc3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNh
bGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsK
LSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwoZmluYWxEZXN0aW5hdGlvbk9ySWdu
b3JlZC5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxB
cmd1bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwoZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZC5nZXQo
KSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMs
IGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5l
KCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5v
ZGUtPm1fbmV4dCk7CkBAIC01ODUsNyArNTg3LDcgQEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlv
bkNhbGxEb3ROb2RlOjplbQogICAgICAgICAgICAgd2hpbGUgKChhcmdzID0gYXJncy0+bV9uZXh0
KSkKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKIAot
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJncyhmaW5hbERlc3RpbmF0aW9uT3JJ
Z25vcmVkLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJn
c1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb2ZpbGVIb29rUmVn
aXN0ZXIuZ2V0KCksIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3MoZmluYWxEZXN0aW5hdGlvbk9ySWdub3Jl
ZC5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3NSZWdp
c3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9maWxlSG9va1JlZ2lzdGVy
LmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRp
dm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICAgICAgfQogICAgICAgICBnZW5lcmF0
b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKICAgICB9CkBAIC01OTMsNyArNTk1LDcgQEAgUmVnaXN0
ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbQogICAgIHsKICAgICAgICAgQ2FsbEFy
Z3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwot
ICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwoZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZC5nZXQo
KSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2
b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dENhbGwoZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZC5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5v
RXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNl
dCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAg
ICAgfQogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICByZXR1cm4gZmlu
YWxEZXN0aW5hdGlvbk9ySWdub3JlZC5nZXQoKTsKQEAgLTY0MSw3ICs2NDMsNyBAQCBSZWdpc3Rl
cklEKiBQb3N0Zml4Tm9kZTo6ZW1pdFJlc29sdmUoQnl0CiAgICAgICAgIHJldHVybiBvbGRWYWx1
ZS5nZXQoKTsKICAgICB9CiAKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90
KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwg
ZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2
YWx1ZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBOb25sb2NhbFJlc29sdmVJbmZv
IHJlc29sdmVJbmZvOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVt
aXRSZXNvbHZlV2l0aEJhc2VGb3JQdXQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5n
ZXQoKSwgcmVzb2x2ZVJlc3VsdCwgaWRlbnQsIHJlc29sdmVJbmZvKTsKQEAgLTY2MywxMCArNjY1
LDEwIEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0QnJhY2tldChCeXQKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShi
YXNlTm9kZSwgYnJhY2tldEFjY2Vzc29yLT5zdWJzY3JpcHRIYXNBc3NpZ25tZW50cygpLCBzdWJz
Y3JpcHQtPmlzUHVyZShnZW5lcmF0b3IpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVy
dHkgPSBnZW5lcmF0b3IuZW1pdE5vZGUoc3Vic2NyaXB0KTsKIAotICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oYnJhY2tldEFjY2Vzc29yLT5kaXZvdCgpLCBicmFja2V0QWNjZXNzb3It
PnN0YXJ0T2Zmc2V0KCksIGJyYWNrZXRBY2Nlc3Nvci0+ZW5kT2Zmc2V0KCkpOworICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oYnJhY2tldEFjY2Vzc29yLT5kaXZvdCgpLCBicmFja2V0
QWNjZXNzb3ItPmRpdm90U3RhcnRPZmZzZXQoKSwgYnJhY2tldEFjY2Vzc29yLT5kaXZvdEVuZE9m
ZnNldCgpLCBicmFja2V0QWNjZXNzb3ItPmRpdm90TGluZSgpLCBicmFja2V0QWNjZXNzb3ItPmRp
dm90TGluZVN0YXJ0KCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRv
ci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBwcm9w
ZXJ0eS5nZXQoKSk7CiAgICAgUmVnaXN0ZXJJRCogb2xkVmFsdWUgPSBlbWl0UG9zdEluY09yRGVj
KGdlbmVyYXRvciwgZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSwg
bV9vcGVyYXRvcik7Ci0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBz
dGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90
TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJh
c2UuZ2V0KCksIHByb3BlcnR5LmdldCgpLCB2YWx1ZS5nZXQoKSk7CiAgICAgcmV0dXJuIGdlbmVy
YXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgb2xkVmFsdWUpOwogfQpAQCAtNjgz
LDEwICs2ODUsMTAgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXREb3QoQnl0ZWNvZAog
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYmFzZU5v
ZGUpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2
b3QoKSwgZG90QWNjZXNzb3ItPnN0YXJ0T2Zmc2V0KCksIGRvdEFjY2Vzc29yLT5lbmRPZmZzZXQo
KSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3Qo
KSwgZG90QWNjZXNzb3ItPmRpdm90U3RhcnRPZmZzZXQoKSwgZG90QWNjZXNzb3ItPmRpdm90RW5k
T2Zmc2V0KCksIGRvdEFjY2Vzc29yLT5kaXZvdExpbmUoKSwgZG90QWNjZXNzb3ItPmRpdm90TGlu
ZVN0YXJ0KCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0
R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIGlkZW50KTsKICAg
ICBSZWdpc3RlcklEKiBvbGRWYWx1ZSA9IGVtaXRQb3N0SW5jT3JEZWMoZ2VuZXJhdG9yLCBnZW5l
cmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgpLCBtX29wZXJhdG9yKTsKLSAg
ICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVu
ZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRp
dm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGlu
ZVN0YXJ0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBpZGVudCwg
dmFsdWUuZ2V0KCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5l
ZWRlZChkc3QsIG9sZFZhbHVlKTsKIH0KQEAgLTcxNSw3ICs3MTcsNyBAQCBSZWdpc3RlcklEKiBE
ZWxldGVSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjCiAgICAgaWYgKHJlc29sdmVSZXN1bHQuaXNSZWdp
c3RlcigpKQogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCksIGZhbHNlKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lv
bkluZm8oZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNldCgpLCBkaXZvdEVu
ZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgUmVnaXN0ZXJJ
RCogYmFzZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZUJhc2UoZ2VuZXJhdG9yLnRlbXBEZXN0aW5h
dGlvbihkc3QpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50KTsKICAgICByZXR1cm4gZ2VuZXJhdG9y
LmVtaXREZWxldGVCeUlkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgYmFzZSksIGJh
c2UsIG1faWRlbnQpOwogfQpAQCAtNzI3LDcgKzcyOSw3IEBAIFJlZ2lzdGVySUQqIERlbGV0ZUJy
YWNrZXROb2RlOjplbWl0Qnl0ZWMKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcjAgPSBnZW5lcmF0
b3IuZW1pdE5vZGUobV9iYXNlKTsKICAgICBSZWdpc3RlcklEKiByMSA9IGdlbmVyYXRvci5lbWl0
Tm9kZShtX3N1YnNjcmlwdCk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQo
KSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdERlbGV0ZUJ5VmFsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHIwLmdldCgp
LCByMSk7CiB9CiAKQEAgLTczNyw3ICs3MzksNyBAQCBSZWdpc3RlcklEKiBEZWxldGVEb3ROb2Rl
OjplbWl0Qnl0ZWNvZGUoCiB7CiAgICAgUmVnaXN0ZXJJRCogcjAgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobV9iYXNlKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwg
c3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lv
bkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNldCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZv
dExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0RGVs
ZXRlQnlJZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCByMCwgbV9pZGVudCk7CiB9
CiAKQEAgLTgyMyw3ICs4MjUsNyBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0UmVzb2x2
ZShCeXRlCiAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRl
ZChkc3QsIHByb3BEc3QuZ2V0KCkpOwogICAgIH0KIAotICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8oZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNldCgpLCBkaXZv
dEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHByb3BEc3QgPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAg
ICAgTm9ubG9jYWxSZXNvbHZlSW5mbyByZXNvbHZlVmVyaWZpZXI7CiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVXaXRoQmFzZUZvclB1dChnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksIHByb3BEc3QuZ2V0KCksIHJlc29sdmVSZXN1bHQsIGlkZW50LCBy
ZXNvbHZlVmVyaWZpZXIpOwpAQCAtODQzLDEwICs4NDUsMTAgQEAgUmVnaXN0ZXJJRCogUHJlZml4
Tm9kZTo6ZW1pdEJyYWNrZXQoQnl0ZQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eSA9
IGdlbmVyYXRvci5lbWl0Tm9kZShzdWJzY3JpcHQpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBw
cm9wRHN0ID0gZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpOwogCi0gICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhicmFja2V0QWNjZXNzb3ItPmRpdm90KCksIGJyYWNrZXRBY2Nl
c3Nvci0+c3RhcnRPZmZzZXQoKSwgYnJhY2tldEFjY2Vzc29yLT5lbmRPZmZzZXQoKSk7CisgICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhicmFja2V0QWNjZXNzb3ItPmRpdm90KCksIGJy
YWNrZXRBY2Nlc3Nvci0+ZGl2b3RTdGFydE9mZnNldCgpLCBicmFja2V0QWNjZXNzb3ItPmRpdm90
RW5kT2Zmc2V0KCksIGJyYWNrZXRBY2Nlc3Nvci0+ZGl2b3RMaW5lKCksIGJyYWNrZXRBY2Nlc3Nv
ci0+ZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgUmVnaXN0ZXJJRCogdmFsdWUgPSBnZW5lcmF0b3Iu
ZW1pdEdldEJ5VmFsKHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpKTsK
ICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJhdG9yLCB2YWx1ZSwgbV9vcGVyYXRvcik7Ci0gICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZz
ZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0
YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFy
dCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIHByb3BlcnR5Lmdl
dCgpLCB2YWx1ZSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVl
ZGVkKGRzdCwgcHJvcERzdC5nZXQoKSk7CiB9CkBAIC04NjEsMTAgKzg2MywxMCBAQCBSZWdpc3Rl
cklEKiBQcmVmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYmFzZU5vZGUpOwogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBwcm9wRHN0ID0gZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpOwogCi0gICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNz
b3ItPnN0YXJ0T2Zmc2V0KCksIGRvdEFjY2Vzc29yLT5lbmRPZmZzZXQoKSk7CisgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNzb3It
PmRpdm90U3RhcnRPZmZzZXQoKSwgZG90QWNjZXNzb3ItPmRpdm90RW5kT2Zmc2V0KCksIGRvdEFj
Y2Vzc29yLT5kaXZvdExpbmUoKSwgZG90QWNjZXNzb3ItPmRpdm90TGluZVN0YXJ0KCkpOwogICAg
IFJlZ2lzdGVySUQqIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHByb3BEc3QuZ2V0KCks
IGJhc2UuZ2V0KCksIGlkZW50KTsKICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJhdG9yLCB2YWx1ZSwg
bV9vcGVyYXRvcik7Ci0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBz
dGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90
TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFz
ZS5nZXQoKSwgaWRlbnQsIHZhbHVlKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3Rp
bmF0aW9uSWZOZWVkZWQoZHN0LCBwcm9wRHN0LmdldCgpKTsKIH0KQEAgLTg5MCw2ICs4OTIsNyBA
QCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0CiBSZWdpc3RlcklEKiBV
bmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKIHsKICAgICBSZWdpc3RlcklEKiBzcmMgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobV9leHByKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN0YXJ0T2Zmc2V0
KCksIDAsIDAsIGxpbmVObygpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAgICAgcmV0dXJuIGdlbmVy
YXRvci5lbWl0VW5hcnlPcChvcGNvZGVJRCgpLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihk
c3QpLCBzcmMpOwogfQogCkBAIC0xMDIxLDcgKzEwMjQsNyBAQCBSZWdpc3RlcklEKiBCaW5hcnlP
cE5vZGU6OmVtaXRTdHJjYXQoQnl0CiAgICAgLy8gQ2VydGFpbiByZWFkLW1vZGlmeSBub2RlcyBy
ZXF1aXJlIGV4cHJlc3Npb24gaW5mbyB0byBiZSBlbWl0dGVkICphZnRlciogbV9yaWdodCBoYXMg
YmVlbiBnZW5lcmF0ZWQuCiAgICAgLy8gSWYgdGhpcyBpcyByZXF1aXJlZCB0aGUgbm9kZSBpcyBw
YXNzZWQgYXMgJ2VtaXRFeHByZXNzaW9uSW5mb0Zvck1lJzsgZG8gc28gbm93LgogICAgIGlmIChl
bWl0RXhwcmVzc2lvbkluZm9Gb3JNZSkKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhlbWl0RXhwcmVzc2lvbkluZm9Gb3JNZS0+ZGl2b3QoKSwgZW1pdEV4cHJlc3Npb25JbmZv
Rm9yTWUtPnN0YXJ0T2Zmc2V0KCksIGVtaXRFeHByZXNzaW9uSW5mb0Zvck1lLT5lbmRPZmZzZXQo
KSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZW1pdEV4cHJlc3Npb25J
bmZvRm9yTWUtPmRpdm90KCksIGVtaXRFeHByZXNzaW9uSW5mb0Zvck1lLT5kaXZvdFN0YXJ0T2Zm
c2V0KCksIGVtaXRFeHByZXNzaW9uSW5mb0Zvck1lLT5kaXZvdEVuZE9mZnNldCgpLCBlbWl0RXhw
cmVzc2lvbkluZm9Gb3JNZS0+ZGl2b3RMaW5lKCksIGVtaXRFeHByZXNzaW9uSW5mb0Zvck1lLT5k
aXZvdExpbmVTdGFydCgpKTsKIAogICAgIC8vIElmIHRoZXJlIGlzIGFuIGFzc2lnbm1lbnQgY29u
dmVydCB0aGUgbGhzIG5vdy4gIFRoaXMgd2lsbCBhbHNvIGNvcHkgbGhzIHRvCiAgICAgLy8gdGhl
IHRlbXBvcmFyeSByZWdpc3RlciB3ZSBhbGxvY2F0ZWQgZm9yIGl0LgpAQCAtMTE2MSw3ICsxMTY0
LDcgQEAgUmVnaXN0ZXJJRCogVGhyb3dhYmxlQmluYXJ5T3BOb2RlOjplbWl0QgogewogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBzcmMxID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRl
KG1fZXhwcjEsIG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9leHByMi0+aXNQdXJlKGdlbmVyYXRv
cikpOwogICAgIFJlZ2lzdGVySUQqIHNyYzIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByMik7
Ci0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgp
LCBlbmRPZmZzZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgp
LCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZv
dExpbmVTdGFydCgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRCaW5hcnlPcChvcGNvZGVJ
RCgpLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHNyYzEuZ2V0KCkpLCBzcmMxLmdl
dCgpLCBzcmMyLCBPcGVyYW5kVHlwZXMobV9leHByMS0+cmVzdWx0RGVzY3JpcHRvcigpLCBtX2V4
cHIyLT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKIH0KIApAQCAtMTE3MywxMyArMTE3NiwxMyBAQCBS
ZWdpc3RlcklEKiBJbnN0YW5jZU9mTm9kZTo6ZW1pdEJ5dGVjb2RlCiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGRzdFJlZyA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQo
KSk7CiAgICAgUmVmUHRyPExhYmVsPiB0YXJnZXQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIAot
ICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwg
ZW5kT2Zmc2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwg
ZGl2b3RTdGFydE9mZnNldCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RM
aW5lU3RhcnQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRDaGVja0hhc0luc3RhbmNlKGRzdFJlZy5n
ZXQoKSwgc3JjMS5nZXQoKSwgc3JjMi5nZXQoKSwgdGFyZ2V0LmdldCgpKTsKIAotICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0
KCkpOworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFy
dE9mZnNldCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQo
KSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHByb3RvdHlwZS5nZXQoKSwgc3JjMi5nZXQo
KSwgZ2VuZXJhdG9yLnZtKCktPnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7CiAKLSAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNl
dCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3Rh
cnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0
KCkpOwogICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0SW5zdGFuY2VPZihk
c3RSZWcuZ2V0KCksIHNyYzEuZ2V0KCksIHByb3RvdHlwZS5nZXQoKSk7CiAgICAgZ2VuZXJhdG9y
LmVtaXRMYWJlbCh0YXJnZXQuZ2V0KCkpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMjkwLDcg
KzEyOTMsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBSZWdpc3RlcklEKiBlbWl0UmVhCiAgICAg
Ly8gQ2VydGFpbiByZWFkLW1vZGlmeSBub2RlcyByZXF1aXJlIGV4cHJlc3Npb24gaW5mbyB0byBi
ZSBlbWl0dGVkICphZnRlciogbV9yaWdodCBoYXMgYmVlbiBnZW5lcmF0ZWQuCiAgICAgLy8gSWYg
dGhpcyBpcyByZXF1aXJlZCB0aGUgbm9kZSBpcyBwYXNzZWQgYXMgJ2VtaXRFeHByZXNzaW9uSW5m
b0Zvck1lJzsgZG8gc28gbm93LgogICAgIGlmIChlbWl0RXhwcmVzc2lvbkluZm9Gb3JNZSkKLSAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhlbWl0RXhwcmVzc2lvbkluZm9Gb3JN
ZS0+ZGl2b3QoKSwgZW1pdEV4cHJlc3Npb25JbmZvRm9yTWUtPnN0YXJ0T2Zmc2V0KCksIGVtaXRF
eHByZXNzaW9uSW5mb0Zvck1lLT5lbmRPZmZzZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oZW1pdEV4cHJlc3Npb25JbmZvRm9yTWUtPmRpdm90KCksIGVtaXRFeHBy
ZXNzaW9uSW5mb0Zvck1lLT5kaXZvdFN0YXJ0T2Zmc2V0KCksIGVtaXRFeHByZXNzaW9uSW5mb0Zv
ck1lLT5kaXZvdEVuZE9mZnNldCgpLCBlbWl0RXhwcmVzc2lvbkluZm9Gb3JNZS0+ZGl2b3RMaW5l
KCksIGVtaXRFeHByZXNzaW9uSW5mb0Zvck1lLT5kaXZvdExpbmVTdGFydCgpKTsKIAogICAgIHJl
dHVybiBnZW5lcmF0b3IuZW1pdEJpbmFyeU9wKG9wY29kZUlELCBkc3QsIHNyYzEsIHNyYzIsIHR5
cGVzKTsKIH0KQEAgLTEzMjUsNyArMTMyOCw3IEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlSZXNv
bHZlTm9kZTo6ZW1pdEIKICAgICB9CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdl
bmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KTsKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Np
b25JbmZvKGRpdm90KCkgLSBzdGFydE9mZnNldCgpICsgbV9pZGVudC5sZW5ndGgoKSwgbV9pZGVu
dC5sZW5ndGgoKSwgMCk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgp
IC0gZGl2b3RTdGFydE9mZnNldCgpICsgbV9pZGVudC5sZW5ndGgoKSwgbV9pZGVudC5sZW5ndGgo
KSwgMCwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgIE5vbmxvY2FsUmVzb2x2
ZUluZm8gcmVzb2x2ZVZlcmlmaWVyOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2Vu
ZXJhdG9yLmVtaXRSZXNvbHZlV2l0aEJhc2VGb3JQdXQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
LCBzcmMxLmdldCgpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50LCByZXNvbHZlVmVyaWZpZXIpOwog
ICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0
b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQoKSksIHNyYzEuZ2V0
KCksIG1fcmlnaHQsIG1fb3BlcmF0b3IsIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3du
VHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9yKCkpLCB0aGlzKTsKQEAgLTEzNjAsNyAr
MTM2Myw3IEBAIFJlZ2lzdGVySUQqIEFzc2lnblJlc29sdmVOb2RlOjplbWl0Qnl0ZWMKICAgICBp
ZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgIGRzdCA9IDA7CiAg
ICAgUmVnaXN0ZXJJRCogdmFsdWUgPSBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3JpZ2h0KTsK
LSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0KCks
IGVuZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCks
IGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90
TGluZVN0YXJ0KCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFB1dFRvQmFzZShiYXNlLmdl
dCgpLCBtX2lkZW50LCB2YWx1ZSwgcmVzb2x2ZVZlcmlmaWVyKTsKIH0KIApAQCAtMTM3MSw3ICsx
Mzc0LDcgQEAgUmVnaXN0ZXJJRCogQXNzaWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKAogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRl
KG1fYmFzZSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2VuZXJhdG9y
KSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmRlc3RpbmF0aW9u
Rm9yQXNzaWduUmVzdWx0KGRzdCk7CiAgICAgUmVnaXN0ZXJJRCogcmVzdWx0ID0gZ2VuZXJhdG9y
LmVtaXROb2RlKHZhbHVlLmdldCgpLCBtX3JpZ2h0KTsKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2
b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgIFJlZ2lz
dGVySUQqIGZvcndhcmRSZXN1bHQgPSAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkp
ID8gcmVzdWx0IDogZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZ2VuZXJhdG9y
LnRlbXBEZXN0aW5hdGlvbihyZXN1bHQpLCByZXN1bHQpOwogICAgIGdlbmVyYXRvci5lbWl0UHV0
QnlJZChiYXNlLmdldCgpLCBtX2lkZW50LCBmb3J3YXJkUmVzdWx0KTsKICAgICByZXR1cm4gZ2Vu
ZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBmb3J3YXJkUmVzdWx0KTsKQEAg
LTEzODMsMTEgKzEzODYsMTEgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeURvdE5vZGU6OmVtaXRC
eXRlYwogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2Rl
Rm9yTGVmdEhhbmRTaWRlKG1fYmFzZSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5p
c1B1cmUoZ2VuZXJhdG9yKSk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90KCkgLSBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNldCwgc3RhcnRPZmZzZXQoKSAtIG1fc3Vi
ZXhwcmVzc2lvbkRpdm90T2Zmc2V0LCBtX3N1YmV4cHJlc3Npb25FbmRPZmZzZXQpOworICAgIGdl
bmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJl
c3Npb25TdGFydE9mZnNldCgpLCBzdWJleHByZXNzaW9uRW5kT2Zmc2V0KCksIHN1YmV4cHJlc3Np
b25MaW5lKCksIHN1YmV4cHJlc3Npb25MaW5lU3RhcnQoKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRp
b24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CiAgICAgUmVnaXN0ZXJJRCogdXBkYXRlZFZh
bHVlID0gZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0LCB2YWx1ZS5nZXQoKSksIHZhbHVlLmdldCgpLCBtX3JpZ2h0LCBtX29w
ZXJhdG9yLCBPcGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+
cmVzdWx0RGVzY3JpcHRvcigpKSk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1p
dEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZz
ZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgdXBkYXRlZFZhbHVlKTsKIH0KIApA
QCAtMTQwNyw3ICsxNDEwLDcgQEAgUmVnaXN0ZXJJRCogQXNzaWduQnJhY2tldE5vZGU6OmVtaXRC
eXRlYwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5kZXN0aW5hdGlv
bkZvckFzc2lnblJlc3VsdChkc3QpOwogICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGdlbmVyYXRv
ci5lbWl0Tm9kZSh2YWx1ZS5nZXQoKSwgbV9yaWdodCk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICBn
ZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwg
ZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgIFJl
Z2lzdGVySUQqIGZvcndhcmRSZXN1bHQgPSAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0
KCkpID8gcmVzdWx0IDogZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZ2VuZXJh
dG9yLnRlbXBEZXN0aW5hdGlvbihyZXN1bHQpLCByZXN1bHQpOwogICAgIGdlbmVyYXRvci5lbWl0
UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIGZvcndhcmRSZXN1bHQpOwogICAg
IHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGZvcndhcmRS
ZXN1bHQpOwpAQCAtMTQyMCwxMSArMTQyMywxMSBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5QnJh
Y2tldE5vZGU6OmVtaXRCCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV9iYXNlLCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRz
IHx8IG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9zdWJzY3JpcHQtPmlzUHVyZShnZW5lcmF0b3Ip
ICYmIG1fcmlnaHQtPmlzUHVyZShnZW5lcmF0b3IpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cHJvcGVydHkgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV9zdWJzY3JpcHQs
IG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9yaWdodC0+aXNQdXJlKGdlbmVyYXRvcikpOwogCi0g
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpIC0gbV9zdWJleHByZXNzaW9u
RGl2b3RPZmZzZXQsIHN0YXJ0T2Zmc2V0KCkgLSBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNldCwg
bV9zdWJleHByZXNzaW9uRW5kT2Zmc2V0KTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnRPZmZzZXQoKSwgc3Vi
ZXhwcmVzc2lvbkVuZE9mZnNldCgpLCBzdWJleHByZXNzaW9uTGluZSgpLCBzdWJleHByZXNzaW9u
TGluZVN0YXJ0KCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5l
bWl0R2V0QnlWYWwoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBw
cm9wZXJ0eS5nZXQoKSk7CiAgICAgUmVnaXN0ZXJJRCogdXBkYXRlZFZhbHVlID0gZW1pdFJlYWRN
b2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0
LCB2YWx1ZS5nZXQoKSksIHZhbHVlLmdldCgpLCBtX3JpZ2h0LCBtX29wZXJhdG9yLCBPcGVyYW5k
VHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVzY3JpcHRv
cigpKSk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIHN0YXJ0
T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5l
KCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5n
ZXQoKSwgcHJvcGVydHkuZ2V0KCksIHVwZGF0ZWRWYWx1ZSk7CiAKICAgICByZXR1cm4gdXBkYXRl
ZFZhbHVlOwpAQCAtMTQ4MCw3ICsxNDgzLDcgQEAgUmVnaXN0ZXJJRCogQ29uc3REZWNsTm9kZTo6
ZW1pdEJ5dGVjb2RlKAogCiB2b2lkIENvbnN0U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewotICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExp
bmUoKSwgY2hhclBvc2l0aW9uKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxF
eGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwg
bGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0Tm9kZShtX25leHQpOwogfQog
CkBAIC0xNTIzLDE0ICsxNTI2LDE0IEBAIHZvaWQgQmxvY2tOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW4KIAogdm9pZCBFbXB0eVN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKLSAgICBnZW5lcmF0b3IuZW1p
dERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCks
IGNoYXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0
ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVT
dGFydE9mZnNldCgpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERl
YnVnZ2VyU3RhdGVtZW50Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogdm9pZCBE
ZWJ1Z2dlclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRS
ZWFjaEJyZWFrcG9pbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24oKSk7
CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkUmVhY2hCcmVha3BvaW50LCBmaXJzdExp
bmUoKSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogfQog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXhwclN0YXRlbWVudE5vZGUgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTUzOCw3ICsxNTQxLDcgQEAgdm9pZCBEZWJ1
Z2dlclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZQogdm9pZCBFeHByU3RhdGVtZW50Tm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKIHsKICAgICBBU1NFUlQobV9leHByKTsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhX
aWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3NpdGlv
bigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwg
Zmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgp
KTsKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2V4cHIpOwogfQogCkBAIC0xNTQ3LDcg
KzE1NTAsNyBAQCB2b2lkIEV4cHJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0CiB2b2lk
IFZhclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKikKIHsKICAgICBBU1NFUlQobV9leHByKTsKLSAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCksIGNoYXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhl
Y3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxp
bmVTdGFydE9mZnNldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKIH0KIApA
QCAtMTU5Miw3ICsxNTk1LDcgQEAgYm9vbCBJZkVsc2VOb2RlOjp0cnlGb2xkQnJlYWtBbmRDb250
aW51ZQogCiB2b2lkIElmRWxzZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9z
aXRpb24oKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1l
bnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZz
ZXQoKSk7CiAgICAgCiAgICAgUmVmUHRyPExhYmVsPiBiZWZvcmVUaGVuID0gZ2VuZXJhdG9yLm5l
d0xhYmVsKCk7CiAgICAgUmVmUHRyPExhYmVsPiBiZWZvcmVFbHNlID0gZ2VuZXJhdG9yLm5ld0xh
YmVsKCk7CkBAIC0xNjI5LDEyICsxNjMyLDEyIEBAIHZvaWQgRG9XaGlsZU5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUcKICAgICBSZWZQdHI8TGFiZWw+IHRvcE9mTG9vcCA9IGdlbmVyYXRvci5u
ZXdMYWJlbCgpOwogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwodG9wT2ZMb29wLmdldCgpKTsKICAg
ICBnZW5lcmF0b3IuZW1pdExvb3BIaW50KCk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2so
V2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGxhc3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3NpdGlv
bigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwg
bGFzdExpbmUoKSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkp
OwogCiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2Vu
ZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+Y29udGludWVUYXJnZXQoKSk7Ci0gICAgZ2VuZXJhdG9y
LmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGxhc3RMaW5lKCksIGxhc3RMaW5l
KCksIGNoYXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhl
Y3V0ZVN0YXRlbWVudCwgbGFzdExpbmUoKSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGlu
ZVN0YXJ0T2Zmc2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4
dChtX2V4cHIsIHRvcE9mTG9vcC5nZXQoKSwgc2NvcGUtPmJyZWFrVGFyZ2V0KCksIEZhbGxUaHJv
dWdoTWVhbnNGYWxzZSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5icmVha1Rh
cmdldCgpKTsKQEAgLTE2NDcsNyArMTY1MCw3IEBAIHZvaWQgV2hpbGVOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW4KICAgICBMYWJlbFNjb3BlUHRyIHNjb3BlID0gZ2VuZXJhdG9yLm5ld0xh
YmVsU2NvcGUoTGFiZWxTY29wZTo6TG9vcCk7CiAgICAgUmVmUHRyPExhYmVsPiB0b3BPZkxvb3Ag
PSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdp
bGxFeGVjdXRlU3RhdGVtZW50LCBtX2V4cHItPmxpbmVObygpLCBtX2V4cHItPmxpbmVObygpLCBt
X2V4cHItPmNoYXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxs
RXhlY3V0ZVN0YXRlbWVudCwgbV9leHByLT5saW5lTm8oKSwgbV9leHByLT5saW5lTm8oKSwgbV9l
eHByLT5zdGFydE9mZnNldCgpLCBtX2V4cHItPmxpbmVTdGFydE9mZnNldCgpKTsKICAgICBnZW5l
cmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByLCB0b3BPZkxvb3AuZ2V0KCks
IHNjb3BlLT5icmVha1RhcmdldCgpLCBGYWxsVGhyb3VnaE1lYW5zVHJ1ZSk7CiAKICAgICBnZW5l
cmF0b3IuZW1pdExhYmVsKHRvcE9mTG9vcC5nZXQoKSk7CkBAIC0xNjU2LDcgKzE2NTksNyBAQCB2
b2lkIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuCiAgICAgZ2VuZXJhdG9yLmVt
aXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29w
ZS0+Y29udGludWVUYXJnZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4
ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24oKSk7
CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0
TGluZSgpLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAK
ICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByLCB0b3BPZkxv
b3AuZ2V0KCksIHNjb3BlLT5icmVha1RhcmdldCgpLCBGYWxsVGhyb3VnaE1lYW5zRmFsc2UpOwog
CkBAIC0xNjY5LDcgKzE2NzIsNyBAQCB2b2lkIEZvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyCiB7CiAgICAgTGFiZWxTY29wZVB0ciBzY29wZSA9IGdlbmVyYXRvci5uZXdMYWJlbFNj
b3BlKExhYmVsU2NvcGU6Okxvb3ApOwogCi0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24o
KSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZp
cnN0TGluZSgpLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7
CiAKICAgICBpZiAobV9leHByMSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVyYXRv
ci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcjEpOwpAQCAtMTY4NCw3ICsxNjg3LDcgQEAgdm9pZCBG
b3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcgogICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZShkc3QsIG1fc3RhdGVtZW50KTsKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNv
bnRpbnVlVGFyZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRl
U3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY2hhclBvc2l0aW9uKCkpOworICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgIGlm
IChtX2V4cHIzKQogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZ2VuZXJhdG9yLmlnbm9yZWRS
ZXN1bHQoKSwgbV9leHByMyk7CiAKQEAgLTE3MDcsNyArMTcxMCw3IEBAIHZvaWQgRm9ySW5Ob2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSwgY2hhclBvc2l0aW9uKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgc3RhcnRP
ZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgaWYgKG1faW5pdCkKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1faW5pdCk7CkBA
IC0xNzM2LDcgKzE3MzksNyBAQCB2b2lkIEZvckluTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuCiAgICAgICAgICAgICBOb25sb2NhbFJlc29sdmVJbmZvIHJlc29sdmVWZXJpZmllcjsKICAg
ICAgICAgICAgIFJlZ2lzdGVySUQqIGJhc2UgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVCYXNlRm9y
UHV0KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcmVzb2x2ZVJlc3VsdCwgaWRlbnQsIHJlc29s
dmVWZXJpZmllcik7CiAKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8o
ZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90
RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0UHV0VG9CYXNlKGJhc2UsIGlkZW50LCBwcm9wZXJ0eU5hbWUsIHJlc29s
dmVWZXJpZmllcik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBleHBlY3RlZFN1YnNj
cmlwdCA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb3Bl
cnR5TmFtZSk7CkBAIC0xNzUwLDcgKzE3NTMsNyBAQCB2b2lkIEZvckluTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuCiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm90ZWN0ID0gcHJv
cGVydHlOYW1lOwogICAgICAgICBSZWdpc3RlcklEKiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2Rl
KGFzc2lnbk5vZGUtPmJhc2UoKSk7CiAKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhhc3NpZ25Ob2RlLT5kaXZvdCgpLCBhc3NpZ25Ob2RlLT5zdGFydE9mZnNldCgpLCBhc3Np
Z25Ob2RlLT5lbmRPZmZzZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oYXNzaWduTm9kZS0+ZGl2b3QoKSwgYXNzaWduTm9kZS0+ZGl2b3RTdGFydE9mZnNldCgpLCBh
c3NpZ25Ob2RlLT5kaXZvdEVuZE9mZnNldCgpLCBhc3NpZ25Ob2RlLT5kaXZvdExpbmUoKSwgYXNz
aWduTm9kZS0+ZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJ
ZChiYXNlLCBpZGVudCwgcHJvcGVydHlOYW1lKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NF
UlQobV9sZXhwci0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpOwpAQCAtMTc2MCw3ICsxNzYzLDcg
QEAgdm9pZCBGb3JJbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbgogICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShhc3NpZ25Ob2RlLT5iYXNl
KCkpOwogICAgICAgICBSZWdpc3RlcklEKiBzdWJzY3JpcHQgPSBnZW5lcmF0b3IuZW1pdE5vZGUo
YXNzaWduTm9kZS0+c3Vic2NyaXB0KCkpOwogICAgICAgICAKLSAgICAgICAgZ2VuZXJhdG9yLmVt
aXRFeHByZXNzaW9uSW5mbyhhc3NpZ25Ob2RlLT5kaXZvdCgpLCBhc3NpZ25Ob2RlLT5zdGFydE9m
ZnNldCgpLCBhc3NpZ25Ob2RlLT5lbmRPZmZzZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oYXNzaWduTm9kZS0+ZGl2b3QoKSwgYXNzaWduTm9kZS0+ZGl2b3RTdGFy
dE9mZnNldCgpLCBhc3NpZ25Ob2RlLT5kaXZvdEVuZE9mZnNldCgpLCBhc3NpZ25Ob2RlLT5kaXZv
dExpbmUoKSwgYXNzaWduTm9kZS0+ZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgc3Vic2NyaXB0LCBwcm9wZXJ0eU5hbWUpOwogICAg
IH0gICAKIApAQCAtMTc3MSw3ICsxNzc0LDcgQEAgdm9pZCBGb3JJbk5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbgogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+Y29udGludWVU
YXJnZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXROZXh0UHJvcGVydHlOYW1lKHByb3BlcnR5TmFt
ZSwgYmFzZS5nZXQoKSwgaS5nZXQoKSwgc2l6ZS5nZXQoKSwgaXRlci5nZXQoKSwgbG9vcFN0YXJ0
LmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVu
dCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RM
aW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKICAgICBnZW5lcmF0b3Iu
ZW1pdExhYmVsKHNjb3BlLT5icmVha1RhcmdldCgpKTsKIH0KIApAQCAtMTc5Myw3ICsxNzk2LDcg
QEAgTGFiZWwqIENvbnRpbnVlTm9kZTo6dHJpdmlhbFRhcmdldChCeXRlYwogCiB2b2lkIENvbnRp
bnVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqKQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY2hhclBvc2l0aW9uKCkpOworICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFz
dExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgIAogICAgIExh
YmVsU2NvcGUqIHNjb3BlID0gZ2VuZXJhdG9yLmNvbnRpbnVlVGFyZ2V0KG1faWRlbnQpOwogICAg
IEFTU0VSVChzY29wZSk7CkBAIC0xODIwLDcgKzE4MjMsNyBAQCBMYWJlbCogQnJlYWtOb2RlOjp0
cml2aWFsVGFyZ2V0KEJ5dGVjb2RlCiAKIHZvaWQgQnJlYWtOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7Ci0gICAgZ2VuZXJhdG9y
LmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGlu
ZSgpLCBjaGFyUG9zaXRpb24oKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4
ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBs
aW5lU3RhcnRPZmZzZXQoKSk7CiAgICAgCiAgICAgTGFiZWxTY29wZSogc2NvcGUgPSBnZW5lcmF0
b3IuYnJlYWtUYXJnZXQobV9pZGVudCk7CiAgICAgQVNTRVJUKHNjb3BlKTsKQEAgLTE4MzMsNyAr
MTgzNiw3IEBAIHZvaWQgQnJlYWtOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW4KIAogdm9p
ZCBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVj
dXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY2hhclBvc2l0aW9uKCkpOwor
ICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExp
bmUoKSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAg
IEFTU0VSVChnZW5lcmF0b3IuY29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpOwogCiAgICAgaWYg
KGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQpAQCAtMTg0NSw3ICsxODQ4LDcgQEAg
dm9pZCBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZQogICAgICAgICBnZW5lcmF0
b3IuZW1pdFBvcFNjb3BlcygwKTsKICAgICB9CiAKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9v
ayhXaWxsTGVhdmVDYWxsRnJhbWUsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRp
b24oKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBm
aXJzdExpbmUoKSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkp
OwogICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHJldHVyblJlZ2lzdGVyLmdldCgpKTsKIH0KIApA
QCAtMTg1MywxMCArMTg1NiwxMCBAQCB2b2lkIFJldHVybk5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlCiAKIHZvaWQgV2l0aE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9z
aXRpb24oKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1l
bnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZz
ZXQoKSk7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobV9leHByKTsKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG1fZGl2b3QsIG1f
ZXhwcmVzc2lvbkxlbmd0aCwgMCk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyht
X2Rpdm90LCBtX2V4cHJlc3Npb25MZW5ndGgsIDAsIG1fZGl2b3RMaW5lLCBtX2Rpdm90TGluZVN0
YXJ0KTsKICAgICBnZW5lcmF0b3IuZW1pdFB1c2hXaXRoU2NvcGUoc2NvcGUuZ2V0KCkpOwogICAg
IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKICAgICBnZW5lcmF0b3IuZW1p
dFBvcFNjb3BlKCk7CkBAIC0yMDI3LDcgKzIwMzAsNyBAQCB2b2lkIENhc2VCbG9ja05vZGU6OmVt
aXRCeXRlY29kZUZvckJsb2NrCiAKIHZvaWQgU3dpdGNoTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RM
aW5lKCksIGNoYXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxs
RXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCks
IGxpbmVTdGFydE9mZnNldCgpKTsKICAgICAKICAgICBMYWJlbFNjb3BlUHRyIHNjb3BlID0gZ2Vu
ZXJhdG9yLm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6U3dpdGNoKTsKIApAQCAtMjA0MSw3ICsy
MDQ0LDcgQEAgdm9pZCBTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZQogCiB2b2lk
IExhYmVsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0
ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3NpdGlvbigpKTsKKyAg
ICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5l
KCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKIAogICAg
IEFTU0VSVCghZ2VuZXJhdG9yLmJyZWFrVGFyZ2V0KG1fbmFtZSkpOwogCkBAIC0yMDU1LDEyICsy
MDU4LDEyIEBAIHZvaWQgTGFiZWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW4KIAogdm9p
ZCBUaHJvd05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1
dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24oKSk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGlu
ZSgpLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAKICAg
ICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgIGRzdCA9IDA7
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGV4cHIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHBy
KTsKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0
KCksIGVuZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90
KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRp
dm90TGluZVN0YXJ0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0VGhyb3coZXhwci5nZXQoKSk7CiB9
CiAKQEAgLTIwNzEsNyArMjA3NCw3IEBAIHZvaWQgVHJ5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXIKICAgICAvLyBOT1RFOiBUaGUgY2F0Y2ggYW5kIGZpbmFsbHkgYmxvY2tzIG11c3Qg
YmUgbGFiZWxlZCBleHBsaWNpdGx5LCBzbyB0aGUKICAgICAvLyBvcHRpbWl6ZXIga25vd3MgdGhl
eSBtYXkgYmUganVtcGVkIHRvIGZyb20gYW55d2hlcmUuCiAKLSAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNo
YXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0
YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFy
dE9mZnNldCgpKTsKIAogICAgIEFTU0VSVChtX2NhdGNoQmxvY2sgfHwgbV9maW5hbGx5QmxvY2sp
OwogCkBAIC0yMTM5LDEzICsyMTQyLDEzIEBAIGlubGluZSB2b2lkIFNjb3BlTm9kZTo6ZW1pdFN0
YXRlbWVudHNCeXQKIAogdm9pZCBQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewotICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlUHJvZ3JhbSwgc3RhcnRMaW5lKCksIHN0YXJ0TGluZSgpLCBzdGFy
dENoYXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0
ZVByb2dyYW0sIHN0YXJ0TGluZSgpLCBzdGFydExpbmUoKSwgc3RhcnRTdGFydE9mZnNldCgpLCBz
dGFydExpbmVTdGFydE9mZnNldCgpKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkc3RSZWdp
c3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBnZW5lcmF0b3IuZW1pdExvYWQo
ZHN0UmVnaXN0ZXIuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOwogICAgIGVtaXRTdGF0ZW1lbnRzQnl0
ZWNvZGUoZ2VuZXJhdG9yLCBkc3RSZWdpc3Rlci5nZXQoKSk7CiAKLSAgICBnZW5lcmF0b3IuZW1p
dERlYnVnSG9vayhEaWRFeGVjdXRlUHJvZ3JhbSwgbGFzdExpbmUoKSwgbGFzdExpbmUoKSwgY2hh
clBvc2l0aW9uKCkgLSAxKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRFeGVjdXRl
UHJvZ3JhbSwgbGFzdExpbmUoKSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0
T2Zmc2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0RW5kKGRzdFJlZ2lzdGVyLmdldCgpKTsKIH0K
IApAQCAtMjE1MywxMyArMjE1NiwxMyBAQCB2b2lkIFByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHCiAKIHZvaWQgRXZhbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9v
ayhXaWxsRXhlY3V0ZVByb2dyYW0sIHN0YXJ0TGluZSgpLCBzdGFydExpbmUoKSwgc3RhcnRDaGFy
UG9zaXRpb24oKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVQcm9n
cmFtLCBzdGFydExpbmUoKSwgc3RhcnRMaW5lKCksIHN0YXJ0U3RhcnRPZmZzZXQoKSwgc3RhcnRM
aW5lU3RhcnRPZmZzZXQoKSk7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZHN0UmVnaXN0ZXIg
PSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdFJl
Z2lzdGVyLmdldCgpLCBqc1VuZGVmaW5lZCgpKTsKICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2Rl
KGdlbmVyYXRvciwgZHN0UmVnaXN0ZXIuZ2V0KCkpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1
Z0hvb2soRGlkRXhlY3V0ZVByb2dyYW0sIGxhc3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3Np
dGlvbigpIC0gMSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkRXhlY3V0ZVByb2dy
YW0sIGxhc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNl
dCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdEVuZChkc3RSZWdpc3Rlci5nZXQoKSk7CiB9CiAKQEAg
LTIxNjcsNyArMjE3MCw3IEBAIHZvaWQgRXZhbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmUKIAogdm9pZCBGdW5jdGlvbkJvZHlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soRGlkRW50ZXJDYWxsRnJhbWUsIHN0YXJ0TGluZSgpLCBzdGFydExpbmUoKSwgc3RhcnRDaGFy
UG9zaXRpb24oKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkRW50ZXJDYWxsRnJh
bWUsIHN0YXJ0TGluZSgpLCBzdGFydExpbmUoKSwgc3RhcnRTdGFydE9mZnNldCgpLCBzdGFydExp
bmVTdGFydE9mZnNldCgpKTsKICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwg
Z2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CiAKICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVT
dGF0ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQoKTsKQEAgLTIxODMsOCArMjE4Niw4IEBA
IHZvaWQgRnVuY3Rpb25Cb2R5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGUKICAgICAvLyBJZiB0aGVy
ZSBpcyBubyByZXR1cm4gd2UgbXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBvbmUuCiAgICAgaWYg
KCFyZXR1cm5Ob2RlKSB7CiAgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29u
c3RydWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9h
ZCgwLCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgQVNTRVJUKChjaGFyUG9zaXRpb24oKSAtICAx
KSA+PSAwKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZy
YW1lLCBsYXN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24oKSAtIDEpOworICAgICAg
ICBBU1NFUlQoKHN0YXJ0T2Zmc2V0KCkgLSAgMSkgPj0gbGluZVN0YXJ0T2Zmc2V0KCkpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5l
KCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCkgLSAxLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHIwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAkocmV2aXNpb24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIyLDkgKzQyMiwxMSBA
QCBzdGF0aWMgdm9pZCBhcHBlbmRTb3VyY2VUb0Vycm9yKENhbGxGcmFtCiAgICAgaW50IHN0YXJ0
T2Zmc2V0ID0gMDsKICAgICBpbnQgZW5kT2Zmc2V0ID0gMDsKICAgICBpbnQgZGl2b3RQb2ludCA9
IDA7CisgICAgdW5zaWduZWQgbGluZSA9IDA7CisgICAgdW5zaWduZWQgY29sdW1uID0gMDsKIAog
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKLSAgICBj
b2RlQmxvY2stPmV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0
LCBkaXZvdFBvaW50LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKKyAgICBjb2RlQmxvY2stPmV4
cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBkaXZvdFBvaW50
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBsaW5lLCBjb2x1bW4pOwogCiAgICAgaW50IGV4cHJl
c3Npb25TdGFydCA9IGRpdm90UG9pbnQgLSBzdGFydE9mZnNldDsKICAgICBpbnQgZXhwcmVzc2lv
blN0b3AgPSBkaXZvdFBvaW50ICsgZW5kT2Zmc2V0OwpAQCAtNTcyLDI1ICs1NzQsMjggQEAgc3Rh
dGljIFN0YWNrRnJhbWVDb2RlVHlwZSBnZXRTdGFja0ZyYW1lQwogICAgIHJldHVybiBTdGFja0Zy
YW1lR2xvYmFsQ29kZTsKIH0KIAotdW5zaWduZWQgU3RhY2tGcmFtZTo6bGluZSgpCit2b2lkIFN0
YWNrRnJhbWU6OmNvbXB1dGVMaW5lQW5kQ29sdW1uKHVuc2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYg
Y29sdW1uKQogewotICAgIHJldHVybiBjb2RlQmxvY2sgPyBjb2RlQmxvY2stPmxpbmVOdW1iZXJG
b3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkgKyBsaW5lT2Zmc2V0IDogMDsKLX0KKyAg
ICBpZiAoIWNvZGVCbG9jaykgeworICAgICAgICBsaW5lID0gMDsKKyAgICAgICAgY29sdW1uID0g
MDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotdW5zaWduZWQgU3RhY2tGcmFtZTo6Y29sdW1u
KCkKLXsKLSAgICBpZiAoIWNvZGUpCi0gICAgICAgIHJldHVybiAwOwogICAgIGludCBkaXZvdCA9
IDA7CiAgICAgaW50IHVudXNlZFN0YXJ0T2Zmc2V0ID0gMDsKICAgICBpbnQgdW51c2VkRW5kT2Zm
c2V0ID0gMDsKLSAgICBleHByZXNzaW9uSW5mbyhkaXZvdCwgdW51c2VkU3RhcnRPZmZzZXQsIHVu
dXNlZEVuZE9mZnNldCk7Ci0gICAgcmV0dXJuIGNvZGUtPmNoYXJQb3NpdGlvblRvQ29sdW1uTnVt
YmVyKGRpdm90KTsKKyAgICB1bnNpZ25lZCBkaXZvdExpbmUgPSAwOworICAgIHVuc2lnbmVkIGRp
dm90Q29sdW1uID0gMDsKKyAgICBleHByZXNzaW9uSW5mbyhkaXZvdCwgdW51c2VkU3RhcnRPZmZz
ZXQsIHVudXNlZEVuZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdENvbHVtbik7CisKKyAgICBsaW5l
ID0gZGl2b3RMaW5lICsgbGluZU9mZnNldDsKKyAgICBjb2x1bW4gPSBkaXZvdENvbHVtbiArIChk
aXZvdExpbmUgPyAxIDogZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KTsKIH0KIAotdm9pZCBTdGFja0Zy
YW1lOjpleHByZXNzaW9uSW5mbyhpbnQmIGRpdm90LCBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVu
ZE9mZnNldCkKK3ZvaWQgU3RhY2tGcmFtZTo6ZXhwcmVzc2lvbkluZm8oaW50JiBkaXZvdCwgaW50
JiBzdGFydE9mZnNldCwgaW50JiBlbmRPZmZzZXQsIHVuc2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYg
Y29sdW1uKQogewotICAgIGNvZGVCbG9jay0+ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVPZmZz
ZXQoYnl0ZWNvZGVPZmZzZXQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKKyAgICBj
b2RlQmxvY2stPmV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0
LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgbGluZSwgY29sdW1uKTsKICAgICBkaXZv
dCArPSBjaGFyYWN0ZXJPZmZzZXQ7CiB9CiAKQEAgLTYwNSwxMCArNjEwLDE0IEBAIFN0cmluZyBT
dGFja0ZyYW1lOjp0b1N0cmluZyhDYWxsRnJhbWUqIGMKICAgICAgICAgICAgIHRyYWNlQnVpbGQu
YXBwZW5kKCdAJyk7CiAgICAgICAgIHRyYWNlQnVpbGQuYXBwZW5kKHNvdXJjZVVSTCk7CiAgICAg
ICAgIGlmIChjb2RlVHlwZSAhPSBTdGFja0ZyYW1lTmF0aXZlQ29kZSkgeworICAgICAgICAgICAg
dW5zaWduZWQgbGluZTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNvbHVtbjsKKyAgICAgICAgICAg
IGNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVtbik7CisKICAgICAgICAgICAgIHRyYWNl
QnVpbGQuYXBwZW5kKCc6Jyk7Ci0gICAgICAgICAgICB0cmFjZUJ1aWxkLmFwcGVuZE51bWJlcihs
aW5lKCkpOworICAgICAgICAgICAgdHJhY2VCdWlsZC5hcHBlbmROdW1iZXIobGluZSk7CiAgICAg
ICAgICAgICB0cmFjZUJ1aWxkLmFwcGVuZCgnOicpOwotICAgICAgICAgICAgdHJhY2VCdWlsZC5h
cHBlbmROdW1iZXIoY29sdW1uKCkpOworICAgICAgICAgICAgdHJhY2VCdWlsZC5hcHBlbmROdW1i
ZXIoY29sdW1uKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdHJhY2VCdWlsZC50b1N0
cmluZygpLmltcGwoKTsKQEAgLTYzNiwxMyArNjQ1LDE1IEBAIHZvaWQgSW50ZXJwcmV0ZXI6Omdl
dFN0YWNrVHJhY2UoVk0qIHZtLCAKICAgICAgICAgICAgICAgICBTdHJvbmc8VW5saW5rZWRDb2Rl
QmxvY2s+KCp2bSwgY2FsbGVyQ29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpKSwKICAgICAg
ICAgICAgICAgICBjYWxsZXJDb2RlQmxvY2stPnNvdXJjZSgpLAogICAgICAgICAgICAgICAgIGNh
bGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmxpbmVObygpLAorICAgICAgICAgICAg
ICAgIGNhbGxlckNvZGVCbG9jay0+Zmlyc3RMaW5lQ29sdW1uT2Zmc2V0KCksCiAgICAgICAgICAg
ICAgICAgY2FsbGVyQ29kZUJsb2NrLT5zb3VyY2VPZmZzZXQoKSwKICAgICAgICAgICAgICAgICBi
eXRlY29kZU9mZnNldCwKICAgICAgICAgICAgICAgICBzb3VyY2VVUkwKICAgICAgICAgICAgIH07
CisKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHMpOwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgU3RhY2tGcmFtZSBzID0geyBTdHJvbmc8SlNPYmplY3Q+KCp2bSwgY2FsbEZyYW1l
LT5jYWxsZWUoKSksIFN0YWNrRnJhbWVOYXRpdmVDb2RlLCBTdHJvbmc8RXhlY3V0YWJsZUJhc2U+
KCksIFN0cm9uZzxVbmxpbmtlZENvZGVCbG9jaz4oKSwgMCwgMCwgMCwgMCwgU3RyaW5nKCl9Owor
ICAgICAgICAgICAgU3RhY2tGcmFtZSBzID0geyBTdHJvbmc8SlNPYmplY3Q+KCp2bSwgY2FsbEZy
YW1lLT5jYWxsZWUoKSksIFN0YWNrRnJhbWVOYXRpdmVDb2RlLCBTdHJvbmc8RXhlY3V0YWJsZUJh
c2U+KCksIFN0cm9uZzxVbmxpbmtlZENvZGVCbG9jaz4oKSwgMCwgMCwgMCwgMCwgMCwgU3RyaW5n
KCl9OwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocyk7CiAgICAgICAgIH0KICAgICAgICAg
Y2FsbEZyYW1lID0gZ2V0Q2FsbGVySW5mbyh2bSwgY2FsbEZyYW1lLCBieXRlY29kZU9mZnNldCwg
Y2FsbGVyQ29kZUJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxNTE5MjApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODIs
NiArODIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3Ryb25nPFVubGlua2VkQ29kZUJs
b2NrPiBjb2RlQmxvY2s7CiAgICAgICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gY29kZTsKICAg
ICAgICAgaW50IGxpbmVPZmZzZXQ7CisgICAgICAgIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9m
ZnNldDsKICAgICAgICAgdW5zaWduZWQgY2hhcmFjdGVyT2Zmc2V0OwogICAgICAgICB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldDsKICAgICAgICAgU3RyaW5nIHNvdXJjZVVSTDsKQEAgLTEyNSw5ICsx
MjYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1
cm4gdHJhY2VMaW5lLmlzTnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IHRyYWNlTGluZTsKICAgICAg
ICAgfQotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBsaW5lKCk7Ci0gICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGNvbHVtbigpOwotICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGV4cHJlc3Npb25JbmZvKGludCYgZGl2b3QsIGludCYgc3RhcnRPZmZzZXQs
IGludCYgZW5kT2Zmc2V0KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjb21wdXRl
TGluZUFuZENvbHVtbih1bnNpZ25lZCYgbGluZSwgdW5zaWduZWQmIGNvbHVtbik7CisKKyAgICBw
cml2YXRlOgorICAgICAgICB2b2lkIGV4cHJlc3Npb25JbmZvKGludCYgZGl2b3QsIGludCYgc3Rh
cnRPZmZzZXQsIGludCYgZW5kT2Zmc2V0LCB1bnNpZ25lZCYgbGluZSwgdW5zaWduZWQmIGNvbHVt
bik7CiAgICAgfTsKIAogICAgIGNsYXNzIFRvcENhbGxGcmFtZVNldHRlciB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAkocmV2aXNpb24gMTUxOTIwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDEyICszMywyMCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEFTVEJ1aWxk
ZXIgeworICAgIHN0cnVjdCBQb3NpdGlvbkluZm8geworICAgICAgICB1bnNpZ25lZCBzdGFydFBv
czsKKyAgICAgICAgdW5zaWduZWQgbGluZTsKKyAgICAgICAgdW5zaWduZWQgbGluZVN0YXJ0UG9z
OworICAgIH07CisKICAgICBzdHJ1Y3QgQmluYXJ5T3BJbmZvIHsKICAgICAgICAgQmluYXJ5T3BJ
bmZvKCkge30KLSAgICAgICAgQmluYXJ5T3BJbmZvKGludCBzLCBpbnQgZCwgaW50IGUsIGJvb2wg
cikKKyAgICAgICAgQmluYXJ5T3BJbmZvKGludCBzLCBpbnQgZCwgaW50IGUsIHVuc2lnbmVkIGRM
aW5lLCB1bnNpZ25lZCBkTGluZVN0YXJ0LCBib29sIHIpCiAgICAgICAgICAgICA6IHN0YXJ0KHMp
CiAgICAgICAgICAgICAsIGRpdm90KGQpCiAgICAgICAgICAgICAsIGVuZChlKQorICAgICAgICAg
ICAgLCBkaXZvdExpbmUoZExpbmUpCisgICAgICAgICAgICAsIGRpdm90TGluZVN0YXJ0KGRMaW5l
U3RhcnQpCiAgICAgICAgICAgICAsIGhhc0Fzc2lnbm1lbnQocikKICAgICAgICAgewogICAgICAg
ICB9CkBAIC00NiwyOSArNTQsMzkgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAgICAgICA6
IHN0YXJ0KGxocy5zdGFydCkKICAgICAgICAgICAgICwgZGl2b3QocmhzLnN0YXJ0KQogICAgICAg
ICAgICAgLCBlbmQocmhzLmVuZCkKKyAgICAgICAgICAgICwgZGl2b3RMaW5lKHJocy5kaXZvdExp
bmUpCisgICAgICAgICAgICAsIGRpdm90TGluZVN0YXJ0KHJocy5kaXZvdExpbmVTdGFydCkKICAg
ICAgICAgICAgICwgaGFzQXNzaWdubWVudChsaHMuaGFzQXNzaWdubWVudCB8fCByaHMuaGFzQXNz
aWdubWVudCkKICAgICAgICAgewogICAgICAgICB9CiAgICAgICAgIGludCBzdGFydDsKICAgICAg
ICAgaW50IGRpdm90OwogICAgICAgICBpbnQgZW5kOworICAgICAgICB1bnNpZ25lZCBkaXZvdExp
bmU7CisgICAgICAgIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0OwogICAgICAgICBib29sIGhhc0Fz
c2lnbm1lbnQ7CiAgICAgfTsKICAgICAKICAgICAKICAgICBzdHJ1Y3QgQXNzaWdubWVudEluZm8g
ewogICAgICAgICBBc3NpZ25tZW50SW5mbygpIHt9Ci0gICAgICAgIEFzc2lnbm1lbnRJbmZvKEV4
cHJlc3Npb25Ob2RlKiBub2RlLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGluaXRBc3NpZ25t
ZW50cywgT3BlcmF0b3Igb3ApCisgICAgICAgIEFzc2lnbm1lbnRJbmZvKEV4cHJlc3Npb25Ob2Rl
KiBub2RlLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIGRpdm90TGlu
ZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQsIGludCBpbml0QXNzaWdubWVudHMsIE9wZXJhdG9y
IG9wKQogICAgICAgICAgICAgOiBtX25vZGUobm9kZSkKICAgICAgICAgICAgICwgbV9zdGFydChz
dGFydCkKICAgICAgICAgICAgICwgbV9kaXZvdChkaXZvdCkKKyAgICAgICAgICAgICwgbV9kaXZv
dExpbmUoZGl2b3RMaW5lKQorICAgICAgICAgICAgLCBtX2Rpdm90TGluZVN0YXJ0KGRpdm90TGlu
ZVN0YXJ0KQogICAgICAgICAgICAgLCBtX2luaXRBc3NpZ25tZW50cyhpbml0QXNzaWdubWVudHMp
CiAgICAgICAgICAgICAsIG1fb3Aob3ApCiAgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCht
X2Rpdm90ID49IG1fZGl2b3RMaW5lU3RhcnQpOworICAgICAgICAgICAgQVNTRVJUKG1fc3RhcnQg
Pj0gbV9kaXZvdExpbmVTdGFydCk7CiAgICAgICAgIH0KICAgICAgICAgRXhwcmVzc2lvbk5vZGUq
IG1fbm9kZTsKLSAgICAgICAgaW50IG1fc3RhcnQ7Ci0gICAgICAgIGludCBtX2Rpdm90OworICAg
ICAgICB1bnNpZ25lZCBtX3N0YXJ0OworICAgICAgICB1bnNpZ25lZCBtX2Rpdm90OworICAgICAg
ICB1bnNpZ25lZCBtX2Rpdm90TGluZTsKKyAgICAgICAgdW5zaWduZWQgbV9kaXZvdExpbmVTdGFy
dDsKICAgICAgICAgaW50IG1faW5pdEFzc2lnbm1lbnRzOwogICAgICAgICBPcGVyYXRvciBtX29w
OwogICAgIH07CkBAIC0xMTMsNyArMTMxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBp
bnQgIERvbnRCdWlsZFN0cmluZ3MgPSAwOwogCiAgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaW5h
cnlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCB0b2tlbiwgc3RkOjpwYWlyPEV4cHJl
c3Npb25Ob2RlKiwgQmluYXJ5T3BJbmZvPiwgc3RkOjpwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmlu
YXJ5T3BJbmZvPik7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VGdW5jdGlvbkNhbGxOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBmdW5jLCBBcmd1bWVudHNOb2Rl
KiBhcmdzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7CisgICAgRXhwcmVzc2lvbk5v
ZGUqIG1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBmdW5jLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBpbnQgc3RhcnQsIHVuc2lnbmVkIGRp
dm90LCBpbnQgZW5kLCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0
KTsKIAogICAgIEpTQzo6U291cmNlRWxlbWVudHMqIGNyZWF0ZVNvdXJjZUVsZW1lbnRzKCkgeyBy
ZXR1cm4gbmV3IChtX3ZtKSBKU0M6OlNvdXJjZUVsZW1lbnRzKCk7IH0KIApAQCAtMTI2LDExICsx
NDQsMTEgQEAgcHVibGljOgogCiAgICAgQ29tbWFOb2RlKiBjcmVhdGVDb21tYUV4cHIoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhwcmVzc2lv
bk5vZGUqIHJocykgeyByZXR1cm4gbmV3IChtX3ZtKSBDb21tYU5vZGUobG9jYXRpb24sIGxocywg
cmhzKTsgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VBc3NpZ25Ob2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBPcGVyYXRvciwgRXhwcmVzc2lvbk5v
ZGUqIHJpZ2h0LCBib29sIGxlZnRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7Ci0gICAgRXhwcmVzc2lvbk5vZGUq
IG1ha2VQcmVmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwg
T3BlcmF0b3IsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKLSAgICBFeHByZXNzaW9u
Tm9kZSogbWFrZVBvc3RmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKiwgT3BlcmF0b3IsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKKyAgICBFeHBy
ZXNzaW9uTm9kZSogbWFrZUFzc2lnbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqIGxlZnQsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgbGVm
dEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50
IGRpdm90LCBpbnQgZW5kLCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0
YXJ0KTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZVByZWZpeE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgaW50IHN0YXJ0LCBpbnQgZGl2b3Qs
IGludCBlbmQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpOwor
ICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlUG9zdGZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBl
bmQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpOwogICAgIEV4
cHJlc3Npb25Ob2RlKiBtYWtlVHlwZU9mTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSopOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRGVsZXRlTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIGludCBzdGFydCwgaW50IGRpdm90LCBp
bnQgZW5kKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZURlbGV0ZU5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVu
ZCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCk7IAogICAgIEV4
cHJlc3Npb25Ob2RlKiBtYWtlTmVnYXRlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSopOwogICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0d2lzZU5vdE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKICAgICBFeHByZXNzaW9uTm9k
ZSogbWFrZU11bHROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBs
ZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CkBA
IC0xNjMsMTEgKzE4MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHVzZXNUaGlzKCk7CiAgICAgICAg
IHJldHVybiBuZXcgKG1fdm0pIFRoaXNOb2RlKGxvY2F0aW9uKTsKICAgICB9Ci0gICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZVJlc29sdmUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
Y29uc3QgSWRlbnRpZmllciogaWRlbnQsIGludCBzdGFydCkKKyAgICBFeHByZXNzaW9uTm9kZSog
Y3JlYXRlUmVzb2x2ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVu
dGlmaWVyKiBpZGVudCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWdu
ZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAgewogICAgICAgICBpZiAobV92bS0+cHJvcGVydHlOYW1l
cy0+YXJndW1lbnRzID09ICppZGVudCkKICAgICAgICAgICAgIHVzZXNBcmd1bWVudHMoKTsKLSAg
ICAgICAgcmV0dXJuIG5ldyAobV92bSkgUmVzb2x2ZU5vZGUobG9jYXRpb24sICppZGVudCwgc3Rh
cnQpOworICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBSZXNvbHZlTm9kZShsb2NhdGlvbiwgKmlk
ZW50LCBzdGFydCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7CiAgICAgfQogICAgIEV4cHJl
c3Npb25Ob2RlKiBjcmVhdGVPYmplY3RMaXRlcmFsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24pIHsgcmV0dXJuIG5ldyAobV92bSkgT2JqZWN0TGl0ZXJhbE5vZGUobG9jYXRpb24pOyB9
CiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU9iamVjdExpdGVyYWwoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlMaXN0Tm9kZSogcHJvcGVydGllcykgeyByZXR1cm4g
bmV3IChtX3ZtKSBPYmplY3RMaXRlcmFsTm9kZShsb2NhdGlvbiwgcHJvcGVydGllcyk7IH0KQEAg
LTIxMCw0MSArMjI4LDQxIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5ldyAobV92bSkgTnVs
bE5vZGUobG9jYXRpb24pOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVCcmFj
a2V0QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBFeHByZXNzaW9uTm9kZSogcHJvcGVydHksIGJvb2wgcHJvcGVydHlIYXNBc3NpZ25t
ZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCisgICAgRXhwcmVzc2lvbk5vZGUq
IGNyZWF0ZUJyYWNrZXRBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eSwgYm9vbCBwcm9wZXJ0
eUhhc0Fzc2lnbm1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCwgdW5zaWduZWQg
ZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICB7CiAgICAgICAgIEJyYWNr
ZXRBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fdm0pIEJyYWNrZXRBY2Nlc3Nvck5vZGUobG9j
YXRpb24sIGJhc2UsIHByb3BlcnR5LCBwcm9wZXJ0eUhhc0Fzc2lnbm1lbnRzKTsKLSAgICAgICAg
c2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOworICAgICAgICBz
ZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCwgZGl2b3RMaW5lLCBk
aXZvdExpbmVTdGFydCk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJl
c3Npb25Ob2RlKiBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5LCBpbnQg
c3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRG90
QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eSwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGlu
dCBlbmQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAg
ewogICAgICAgICBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fdm0pIERvdEFjY2Vzc29y
Tm9kZShsb2NhdGlvbiwgYmFzZSwgKnByb3BlcnR5KTsKLSAgICAgICAgc2V0RXhjZXB0aW9uTG9j
YXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOworICAgICAgICBzZXRFeGNlcHRpb25Mb2Nh
dGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7
CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVh
dGVSZWdFeHAoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmll
ciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MsIGludCBzdGFydCkKKyAgICBFeHBy
ZXNzaW9uTm9kZSogY3JlYXRlUmVnRXhwKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzLCBpbnQg
c3RhcnQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAg
ewogICAgICAgICBpZiAoWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi5zdHJpbmcoKSkpCiAgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgUmVnRXhwTm9kZSogbm9kZSA9IG5ldyAobV92bSkg
UmVnRXhwTm9kZShsb2NhdGlvbiwgcGF0dGVybiwgZmxhZ3MpOwogICAgICAgICBpbnQgc2l6ZSA9
IHBhdHRlcm4ubGVuZ3RoKCkgKyAyOyAvLyArIDIgZm9yIHRoZSB0d28gLydzCi0gICAgICAgIHNl
dEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBzdGFydCArIHNpemUsIHN0YXJ0ICsgc2l6
ZSk7CisgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBzdGFydCArIHNp
emUsIHN0YXJ0ICsgc2l6ZSwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7CiAgICAgICAgIHJl
dHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOZXdFeHByKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1
bWVudHNOb2RlKiBhcmd1bWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQorICAg
IEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmd1bWVudHMsIGlu
dCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kLCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVk
IGRpdm90TGluZVN0YXJ0KQogICAgIHsKICAgICAgICAgTmV3RXhwck5vZGUqIG5vZGUgPSBuZXcg
KG1fdm0pIE5ld0V4cHJOb2RlKGxvY2F0aW9uLCBleHByLCBhcmd1bWVudHMpOwotICAgICAgICBz
ZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CisgICAgICAgIHNl
dEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kLCBkaXZvdExpbmUsIGRp
dm90TGluZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGVuZCkKKyAgICBFeHByZXNzaW9u
Tm9kZSogY3JlYXRlTmV3RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBkaXZvdExpbmUs
IHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogICAgIHsKICAgICAgICAgTmV3RXhwck5vZGUqIG5v
ZGUgPSBuZXcgKG1fdm0pIE5ld0V4cHJOb2RlKGxvY2F0aW9uLCBleHByKTsKLSAgICAgICAgc2V0
RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGVuZCwgZW5kKTsKKyAgICAgICAgc2V0RXhj
ZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGVuZCwgZW5kLCBkaXZvdExpbmUsIGRpdm90TGlu
ZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCkBAIC0yNTMsMjUgKzI3MSwy
NSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBuZXcgKG1fdm0pIENvbmRpdGlvbmFsTm9kZShs
b2NhdGlvbiwgY29uZGl0aW9uLCBsaHMsIHJocyk7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5v
ZGUqIGNyZWF0ZUFzc2lnblJlc29sdmUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaHMsIGludCBzdGFydCwg
aW50IGRpdm90LCBpbnQgZW5kKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBc3NpZ25SZXNv
bHZlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBFeHByZXNzaW9uTm9kZSogcmhzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCwg
dW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICB7CiAgICAg
ICAgIGlmIChyaHMtPmlzRnVuY0V4cHJOb2RlKCkpCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxG
dW5jRXhwck5vZGUqPihyaHMpLT5ib2R5KCktPnNldEluZmVycmVkTmFtZShpZGVudCk7CiAgICAg
ICAgIEFzc2lnblJlc29sdmVOb2RlKiBub2RlID0gbmV3IChtX3ZtKSBBc3NpZ25SZXNvbHZlTm9k
ZShsb2NhdGlvbiwgaWRlbnQsIHJocyk7Ci0gICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5v
ZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKKyAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9k
ZSwgc3RhcnQsIGRpdm90LCBlbmQsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogICAgICAg
ICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRnVuY3Rp
b25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIq
IG5hbWUsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcnMs
IGludCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwg
aW50IGJvZHlFbmRMaW5lKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVGdW5jdGlvbkV4cHIo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogbmFtZSwg
RnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVycywgdW5zaWdu
ZWQgb3BlbkJyYWNlT2Zmc2V0LCB1bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0LCBpbnQgYm9keVN0
YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbikKICAgICB7Ci0g
ICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBGdW5jRXhwck5vZGUobG9j
YXRpb24sICpuYW1lLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNl
UG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSwgcGFyYW1ldGVycyk7Ci0gICAgICAg
IGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSwgbG9jYXRpb24uY2hhclBv
c2l0aW9uKTsKKyAgICAgICAgRnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fdm0pIEZ1bmNF
eHByTm9kZShsb2NhdGlvbiwgKm5hbWUsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lv
bihvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZzZXQsIGJvZHlTdGFydExpbmUsIHN0YXJ0
Q29sdW1uKSwgcGFyYW1ldGVycyk7CisgICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5l
LCBib2R5RW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9m
ZnNldCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgRnVuY3Rpb25Cb2R5
Tm9kZSogY3JlYXRlRnVuY3Rpb25Cb2R5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2Nh
dGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgYm9vbCBpblN0cmljdENv
bnRleHQpCisgICAgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlRnVuY3Rpb25Cb2R5KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRM
b2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIGJvb2wgaW5TdHJpY3RDb250ZXh0KQogICAg
IHsKLSAgICAgICAgcmV0dXJuIEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShtX3ZtLCBzdGFydExv
Y2F0aW9uLCBlbmRMb2NhdGlvbiwgaW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIEZ1
bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShtX3ZtLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwg
c3RhcnRDb2x1bW4sIGluU3RyaWN0Q29udGV4dCk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRGdW5j
dGlvblN0YXJ0KEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGludCBmdW5jdGlvblN0YXJ0KQpAQCAt
Mjc5LDE4ICsyOTcsMTggQEAgcHVibGljOgogICAgICAgICBib2R5LT5zZXRGdW5jdGlvblN0YXJ0
KGZ1bmN0aW9uU3RhcnQpOwogICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVy
dHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBjb25zdCBJZGVudGlmaWVyKiBu
YW1lLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGludCBv
cGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJv
ZHlFbmRMaW5lKQorICAgIHRlbXBsYXRlIDxib29sPiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRl
ck9yU2V0dGVyUHJvcGVydHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVy
dHlOb2RlOjpUeXBlIHR5cGUsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIFBhcmFtZXRlck5vZGUq
IHBhcmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgdW5zaWduZWQgb3BlbkJyYWNlT2Zmc2V0
LCB1bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0LCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlF
bmRMaW5lLCB1bnNpZ25lZCBib2R5U3RhcnRDb2x1bW4pCiAgICAgewogICAgICAgICBBU1NFUlQo
bmFtZSk7Ci0gICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSwg
bG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExp
bmUsIGJvZHlFbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0
T2Zmc2V0KTsKICAgICAgICAgYm9keS0+c2V0SW5mZXJyZWROYW1lKCpuYW1lKTsKLSAgICAgICAg
cmV0dXJuIG5ldyAobV92bSkgUHJvcGVydHlOb2RlKG1fdm0sICpuYW1lLCBuZXcgKG1fdm0pIEZ1
bmNFeHByTm9kZShsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIs
IGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJh
Y2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJhbXMpLCB0eXBlKTsKKyAgICAgICAgcmV0dXJuIG5l
dyAobV92bSkgUHJvcGVydHlOb2RlKG1fdm0sICpuYW1lLCBuZXcgKG1fdm0pIEZ1bmNFeHByTm9k
ZShsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGJvZHksIG1f
c291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZz
ZXQsIGJvZHlTdGFydExpbmUsIGJvZHlTdGFydENvbHVtbiksIHBhcmFtcyksIHR5cGUpOwogICAg
IH0KICAgICAKLSAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJP
clNldHRlclByb3BlcnR5KFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJv
cGVydHlOb2RlOjpUeXBlIHR5cGUsIGRvdWJsZSBuYW1lLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMs
IEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGludCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNl
UG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lKQorICAgIHRlbXBsYXRlIDxi
b29sPiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoVk0qLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgZG91
YmxlIG5hbWUsIFBhcmFtZXRlck5vZGUqIHBhcmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwg
dW5zaWduZWQgb3BlbkJyYWNlT2Zmc2V0LCB1bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0LCBpbnQg
Ym9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lLCB1bnNpZ25lZCBib2R5U3RhcnRDb2x1bW4p
CiAgICAgewotICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUs
IGxvY2F0aW9uLmNoYXJQb3NpdGlvbik7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fdm0pIFByb3Bl
cnR5Tm9kZShtX3ZtLCBuYW1lLCBuZXcgKG1fdm0pIEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgbV92
bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGJvZHksIG1fc291cmNlQ29kZS0+c3Vi
RXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpLCBw
YXJhbXMpLCB0eXBlKTsKKyAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlF
bmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsK
KyAgICAgICAgcmV0dXJuIG5ldyAobV92bSkgUHJvcGVydHlOb2RlKG1fdm0sIG5hbWUsIG5ldyAo
bV92bSkgRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRl
bnRpZmllciwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZU9mZnNl
dCwgY2xvc2VCcmFjZU9mZnNldCwgYm9keVN0YXJ0TGluZSwgYm9keVN0YXJ0Q29sdW1uKSwgcGFy
YW1zKSwgdHlwZSk7CiAgICAgfQogCiAgICAgQXJndW1lbnRzTm9kZSogY3JlYXRlQXJndW1lbnRz
KCkgeyByZXR1cm4gbmV3IChtX3ZtKSBBcmd1bWVudHNOb2RlKCk7IH0KQEAgLTMyMCw1NyArMzM4
LDU3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VXNlc0FyZ3VtZW50cyhGdW5jdGlvbkJvZHlO
b2RlKiBub2RlKSB7IG5vZGUtPnNldFVzZXNBcmd1bWVudHMoKTsgfQogCi0gICAgU3RhdGVtZW50
Tm9kZSogY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgUGFy
YW1ldGVyTm9kZSogcGFyYW1ldGVycywgaW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3NlQnJhY2VQ
b3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9k
ZSogY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgUGFyYW1l
dGVyTm9kZSogcGFyYW1ldGVycywgdW5zaWduZWQgb3BlbkJyYWNlT2Zmc2V0LCB1bnNpZ25lZCBj
bG9zZUJyYWNlT2Zmc2V0LCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lLCB1bnNp
Z25lZCBib2R5U3RhcnRDb2x1bW4pCiAgICAgewotICAgICAgICBGdW5jRGVjbE5vZGUqIGRlY2wg
PSBuZXcgKG1fdm0pIEZ1bmNEZWNsTm9kZShsb2NhdGlvbiwgKm5hbWUsIGJvZHksIG1fc291cmNl
Q29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFy
dExpbmUpLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgRnVuY0RlY2xOb2RlKiBkZWNsID0gbmV3ICht
X3ZtKSBGdW5jRGVjbE5vZGUobG9jYXRpb24sICpuYW1lLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1
YkV4cHJlc3Npb24ob3BlbkJyYWNlT2Zmc2V0LCBjbG9zZUJyYWNlT2Zmc2V0LCBib2R5U3RhcnRM
aW5lLCBib2R5U3RhcnRDb2x1bW4pLCBwYXJhbWV0ZXJzKTsKICAgICAgICAgaWYgKCpuYW1lID09
IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cykKICAgICAgICAgICAgIHVzZXNBcmd1bWVu
dHMoKTsKICAgICAgICAgbV9zY29wZS5tX2Z1bmNEZWNsYXJhdGlvbnMtPmRhdGEuYXBwZW5kKGRl
Y2wtPmJvZHkoKSk7Ci0gICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5k
TGluZSwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlT
dGFydExpbmUsIGJvZHlFbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGlu
ZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIGRlY2w7CiAgICAgfQogCiAgICAgU3RhdGVt
ZW50Tm9kZSogY3JlYXRlQmxvY2tTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgSlNDOjpTb3VyY2VFbGVtZW50cyogZWxlbWVudHMsIGludCBzdGFydExpbmUsIGludCBl
bmRMaW5lKQogICAgIHsKICAgICAgICAgQmxvY2tOb2RlKiBibG9jayA9IG5ldyAobV92bSkgQmxv
Y2tOb2RlKGxvY2F0aW9uLCBlbGVtZW50cyk7Ci0gICAgICAgIGJsb2NrLT5zZXRMb2Moc3RhcnRM
aW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jaGFyUG9zaXRpb24pOworICAgICAgICBibG9jay0+c2V0
TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxp
bmVTdGFydE9mZnNldCk7CiAgICAgICAgIHJldHVybiBibG9jazsKICAgICB9CiAKICAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVFeHByU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBlbmQpCiAgICAgewog
ICAgICAgICBFeHByU3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBFeHByU3RhdGVt
ZW50Tm9kZShsb2NhdGlvbiwgZXhwcik7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBl
bmQsIGxvY2F0aW9uLmNoYXJQb3NpdGlvbik7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0
LCBlbmQsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0
ZUlmU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIHRydWVCbG9jaywgU3RhdGVtZW50Tm9kZSog
ZmFsc2VCbG9jaywgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKICAgICAgICAgSWZFbHNlTm9k
ZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBJZkVsc2VOb2RlKGxvY2F0aW9uLCBjb25kaXRpb24sIHRy
dWVCbG9jaywgZmFsc2VCbG9jayk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQs
IGxvY2F0aW9uLmNoYXJQb3NpdGlvbik7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBl
bmQsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZv
ckxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGlu
aXRpYWxpemVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBFeHByZXNzaW9uTm9kZSogaXRl
ciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsK
ICAgICAgICAgRm9yTm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBGb3JOb2RlKGxvY2F0aW9uLCBp
bml0aWFsaXplciwgY29uZGl0aW9uLCBpdGVyLCBzdGF0ZW1lbnRzKTsKLSAgICAgICAgcmVzdWx0
LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgcmVz
dWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxp
bmVTdGFydE9mZnNldCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3Rh
dGVtZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIs
IEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBpbnQgc3Rh
cnQsIGludCBkaXZvdCwgaW50IGVuZCwgaW50IGluaXRTdGFydCwgaW50IGluaXRFbmQsIGludCBz
dGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9v
cChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCwgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVyLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3Rh
dGVtZW50Tm9kZSogc3RhdGVtZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQsIGlu
dCBpbml0U3RhcnQsIGludCBpbml0RW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSwgdW5z
aWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICB7Ci0gICAgICAg
IEZvckluTm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBGb3JJbk5vZGUobV92bSwgbG9jYXRpb24s
ICppZGVudCwgaW5pdGlhbGl6ZXIsIGl0ZXIsIHN0YXRlbWVudHMsIGluaXRTdGFydCwgaW5pdFN0
YXJ0IC0gc3RhcnQsIGluaXRFbmQgLSBpbml0U3RhcnQpOwotICAgICAgICByZXN1bHQtPnNldExv
YyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNoYXJQb3NpdGlvbik7Ci0gICAgICAgIHNl
dEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgc3RhcnQsIGRpdm90ICsgMSwgZW5kKTsKKyAgICAg
ICAgRm9ySW5Ob2RlKiByZXN1bHQgPSBuZXcgKG1fdm0pIEZvckluTm9kZShtX3ZtLCBsb2NhdGlv
biwgKmlkZW50LCBpbml0aWFsaXplciwgaXRlciwgc3RhdGVtZW50cywgaW5pdFN0YXJ0LCBpbml0
U3RhcnQgLSBzdGFydCwgaW5pdEVuZCAtIGluaXRTdGFydCwgZGl2b3RMaW5lLCBkaXZvdExpbmVT
dGFydCk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRp
b24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CisgICAgICAgIHNldEV4
Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgc3RhcnQsIGRpdm90ICsgMSwgZW5kLCBkaXZvdExpbmUs
IGRpdm90TGluZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBT
dGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JJbkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVu
dE5vZGUqIHN0YXRlbWVudHMsIGludCBlU3RhcnQsIGludCBlRGl2b3QsIGludCBlRW5kLCBpbnQg
c3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29wKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Np
b25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBpbnQgZVN0YXJ0LCBpbnQg
ZURpdm90LCBpbnQgZUVuZCwgaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBkaXZvdExpbmUs
IHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogICAgIHsKICAgICAgICAgRm9ySW5Ob2RlKiByZXN1
bHQgPSBuZXcgKG1fdm0pIEZvckluTm9kZShsb2NhdGlvbiwgbGhzLCBpdGVyLCBzdGF0ZW1lbnRz
KTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uY2hhclBvc2l0
aW9uKTsKLSAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVEaXZv
dCwgZUVuZCk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQsIGxvY2F0aW9uLnN0
YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOworICAgICAgICBzZXRFeGNlcHRp
b25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZURpdm90LCBlRW5kLCBkaXZvdExpbmUsIGRpdm90
TGluZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTM4Myw0NyAr
NDAxLDQ3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyAobV92bSkgRW1wdHlT
dGF0ZW1lbnROb2RlKGxvY2F0aW9uKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0
ID0gbmV3IChtX3ZtKSBWYXJTdGF0ZW1lbnROb2RlKGxvY2F0aW9uLCBleHByKTsKLSAgICAgICAg
cmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAg
ICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0
aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0g
ICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlUmV0dXJuU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByZXNzaW9uLCBpbnQgZVN0YXJ0LCBp
bnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSog
Y3JlYXRlUmV0dXJuU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4
cHJlc3Npb25Ob2RlKiBleHByZXNzaW9uLCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0
TGluZSwgaW50IGVuZExpbmUsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5l
U3RhcnQpCiAgICAgewogICAgICAgICBSZXR1cm5Ob2RlKiByZXN1bHQgPSBuZXcgKG1fdm0pIFJl
dHVybk5vZGUobG9jYXRpb24sIGV4cHJlc3Npb24pOwotICAgICAgICBzZXRFeGNlcHRpb25Mb2Nh
dGlvbihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9j
KHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgc2V0
RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVFbmQsIGVFbmQsIGRpdm90TGluZSwg
ZGl2b3RMaW5lU3RhcnQpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExp
bmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUJy
ZWFrU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGludCBlU3RhcnQs
IGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2Rl
KiBjcmVhdGVCcmVha1N0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBp
bnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUsIHVuc2lnbmVk
IGVuZExpbmVTdGFydCkKICAgICB7CiAgICAgICAgIEJyZWFrTm9kZSogcmVzdWx0ID0gbmV3ICht
X3ZtKSBCcmVha05vZGUobV92bSwgbG9jYXRpb24pOwotICAgICAgICBzZXRFeGNlcHRpb25Mb2Nh
dGlvbihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9j
KHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgc2V0
RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVFbmQsIGVFbmQsIGVuZExpbmUsIGVu
ZExpbmVTdGFydCk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwg
bG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQnJlYWtT
dGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmll
ciogaWRlbnQsIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGlu
ZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVCcmVha1N0YXRlbWVudChjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgaW50IGVTdGFydCwg
aW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lLCB1bnNpZ25lZCBlbmRMaW5lU3Rh
cnQpCiAgICAgewogICAgICAgICBCcmVha05vZGUqIHJlc3VsdCA9IG5ldyAobV92bSkgQnJlYWtO
b2RlKGxvY2F0aW9uLCAqaWRlbnQpOwotICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1
bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGlu
ZSwgZW5kTGluZSwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgc2V0RXhjZXB0aW9u
TG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVFbmQsIGVFbmQsIGVuZExpbmUsIGVuZExpbmVTdGFy
dCk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24u
c3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQ29udGludWVTdGF0ZW1l
bnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50IGVTdGFydCwgaW50IGVFbmQs
IGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUNv
bnRpbnVlU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGludCBlU3Rh
cnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSwgdW5zaWduZWQgZW5kTGlu
ZVN0YXJ0KQogICAgIHsKICAgICAgICAgQ29udGludWVOb2RlKiByZXN1bHQgPSBuZXcgKG1fdm0p
IENvbnRpbnVlTm9kZShtX3ZtLCBsb2NhdGlvbik7Ci0gICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0
aW9uKHJlc3VsdCwgZVN0YXJ0LCBlRW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Mo
c3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jaGFyUG9zaXRpb24pOworICAgICAgICBzZXRF
eGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCwgZW5kTGluZSwgZW5k
TGluZVN0YXJ0KTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBs
b2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVDb250aW51
ZVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlm
aWVyKiBpZGVudCwgaW50IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRM
aW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBpbnQgZVN0
YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUsIHVuc2lnbmVkIGVuZExp
bmVTdGFydCkKICAgICB7CiAgICAgICAgIENvbnRpbnVlTm9kZSogcmVzdWx0ID0gbmV3IChtX3Zt
KSBDb250aW51ZU5vZGUobG9jYXRpb24sICppZGVudCk7Ci0gICAgICAgIHNldEV4Y2VwdGlvbkxv
Y2F0aW9uKHJlc3VsdCwgZVN0YXJ0LCBlRW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0LT5zZXRM
b2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jaGFyUG9zaXRpb24pOworICAgICAgICBz
ZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCwgZW5kTGluZSwg
ZW5kTGluZVN0YXJ0KTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5l
LCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTQzMiw3ICs0NTAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFRyeU5vZGUqIHJlc3VsdCA9IG5ldyAobV92bSkgVHJ5Tm9kZShsb2NhdGlvbiwgdHJ5
QmxvY2ssICppZGVudCwgY2F0Y2hCbG9jaywgZmluYWxseUJsb2NrKTsKICAgICAgICAgaWYgKGNh
dGNoQmxvY2spCiAgICAgICAgICAgICB1c2VzQ2F0Y2goKTsKLSAgICAgICAgcmVzdWx0LT5zZXRM
b2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jaGFyUG9zaXRpb24pOworICAgICAgICBy
ZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBs
b2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IApAQCAtNDQwLDU4ICs0NTgsNTggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQ2FzZUJsb2Nr
Tm9kZSogY2FzZXMgPSBuZXcgKG1fdm0pIENhc2VCbG9ja05vZGUoZmlyc3RDbGF1c2VzLCBkZWZh
dWx0Q2xhdXNlLCBzZWNvbmRDbGF1c2VzKTsKICAgICAgICAgU3dpdGNoTm9kZSogcmVzdWx0ID0g
bmV3IChtX3ZtKSBTd2l0Y2hOb2RlKGxvY2F0aW9uLCBleHByLCBjYXNlcyk7Ci0gICAgICAgIHJl
c3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsK
KyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5zdGFy
dE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAKICAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVXaGlsZVN0YXRlbWVudChjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVt
ZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7CiAg
ICAgICAgIFdoaWxlTm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBXaGlsZU5vZGUobG9jYXRpb24s
IGV4cHIsIHN0YXRlbWVudCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5k
TGluZSwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3Rh
cnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0
T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBTdGF0ZW1lbnRO
b2RlKiBjcmVhdGVEb1doaWxlU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBz
dGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKICAgICAgICAgRG9XaGlsZU5vZGUqIHJlc3Vs
dCA9IG5ldyAobV92bSkgRG9XaGlsZU5vZGUobG9jYXRpb24sIHN0YXRlbWVudCwgZXhwcik7Ci0g
ICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY2hhclBv
c2l0aW9uKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2Nh
dGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVMYWJlbFN0YXRl
bWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBp
ZGVudCwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAg
U3RhdGVtZW50Tm9kZSogY3JlYXRlTGFiZWxTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIFN0YXRlbWVudE5vZGUqIHN0YXRl
bWVudCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1
bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICB7CiAgICAgICAgIExhYmVsTm9kZSogcmVzdWx0
ID0gbmV3IChtX3ZtKSBMYWJlbE5vZGUobG9jYXRpb24sICppZGVudCwgc3RhdGVtZW50KTsKLSAg
ICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBzdGFydCwgZW5kLCBlbmQpOworICAg
ICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIHN0YXJ0LCBlbmQsIGVuZCwgZGl2b3RM
aW5lLCBkaXZvdExpbmVTdGFydCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0g
ICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlV2l0aFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVt
ZW50LCBpbnQgc3RhcnQsIGludCBlbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAg
IFN0YXRlbWVudE5vZGUqIGNyZWF0ZVdpdGhTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVu
dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwgdW5zaWduZWQgc3RhcnRMaW5lLCB1bnNp
Z25lZCBlbmRMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0
KQogICAgIHsKICAgICAgICAgdXNlc1dpdGgoKTsKLSAgICAgICAgV2l0aE5vZGUqIHJlc3VsdCA9
IG5ldyAobV92bSkgV2l0aE5vZGUobG9jYXRpb24sIGV4cHIsIHN0YXRlbWVudCwgZW5kLCBlbmQg
LSBzdGFydCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9j
YXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgV2l0aE5vZGUqIHJlc3VsdCA9IG5ldyAobV92
bSkgV2l0aE5vZGUobG9jYXRpb24sIGV4cHIsIHN0YXRlbWVudCwgZW5kLCBkaXZvdExpbmUsIGRp
dm90TGluZVN0YXJ0LCBlbmQgLSBzdGFydCk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0
TGluZSwgZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9m
ZnNldCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfSAgICAKICAgICAKLSAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVUaHJvd1N0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgc3Rh
cnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVUaHJvd1N0YXRl
bWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhw
ciwgaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSwgdW5zaWdu
ZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICB7CiAgICAgICAgIFRo
cm93Tm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBUaHJvd05vZGUobG9jYXRpb24sIGV4cHIpOwot
ICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNoYXJQ
b3NpdGlvbik7Ci0gICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgc3RhcnQsIGVu
ZCwgZW5kKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2Nh
dGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgc2V0
RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBzdGFydCwgZW5kLCBlbmQsIGRpdm90TGluZSwgZGl2
b3RMaW5lU3RhcnQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKICAgICBT
dGF0ZW1lbnROb2RlKiBjcmVhdGVEZWJ1Z2dlcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7CiAgICAgICAgIERlYnVnZ2Vy
U3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBEZWJ1Z2dlclN0YXRlbWVudE5vZGUo
bG9jYXRpb24pOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxv
Y2F0aW9uLmNoYXJQb3NpdGlvbik7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwg
ZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAogICAgIFN0YXRlbWVudE5vZGUq
IGNyZWF0ZUNvbnN0U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIENv
bnN0RGVjbE5vZGUqIGRlY2xzLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7CiAg
ICAgICAgIENvbnN0U3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBDb25zdFN0YXRl
bWVudE5vZGUobG9jYXRpb24sIGRlY2xzKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRM
aW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jaGFyUG9zaXRpb24pOworICAgICAgICByZXN1bHQtPnNl
dExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5s
aW5lU3RhcnRPZmZzZXQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtNTI4
LDEwICs1NDYsMTAgQEAgcHVibGljOgogCiAgICAgaW50IGV2YWxDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fZXZhbENvdW50OyB9CiAKLSAgICB2b2lkIGFwcGVuZEJpbmFyeUV4cHJlc3Npb25JbmZv
KGludCYgb3BlcmFuZFN0YWNrRGVwdGgsIEV4cHJlc3Npb25Ob2RlKiBjdXJyZW50LCBpbnQgZXhw
clN0YXJ0LCBpbnQgbGhzLCBpbnQgcmhzLCBib29sIGhhc0Fzc2lnbm1lbnRzKQorICAgIHZvaWQg
YXBwZW5kQmluYXJ5RXhwcmVzc2lvbkluZm8oaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgRXhwcmVz
c2lvbk5vZGUqIGN1cnJlbnQsIGludCBleHByU3RhcnQsIGludCBsaHMsIGludCByaHMsIHVuc2ln
bmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQsIGJvb2wgaGFzQXNzaWdubWVu
dHMpCiAgICAgewogICAgICAgICBvcGVyYW5kU3RhY2tEZXB0aCsrOwotICAgICAgICBtX2JpbmFy
eU9wZXJhbmRTdGFjay5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY3VycmVudCwgQmluYXJ5T3BJbmZv
KGV4cHJTdGFydCwgbGhzLCByaHMsIGhhc0Fzc2lnbm1lbnRzKSkpOworICAgICAgICBtX2JpbmFy
eU9wZXJhbmRTdGFjay5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY3VycmVudCwgQmluYXJ5T3BJbmZv
KGV4cHJTdGFydCwgbGhzLCByaHMsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQsIGhhc0Fzc2ln
bm1lbnRzKSkpOwogICAgIH0KIAogICAgIC8vIExvZ2ljIHRvIGhhbmRsZSBkYXRhc3RydWN0dXJl
cyB1c2VkIGR1cmluZyBwYXJzaW5nIG9mIGJpbmFyeSBleHByZXNzaW9ucwpAQCAtNTY4LDEwICs1
ODYsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAg
ICB2b2lkIGFwcGVuZFVuYXJ5VG9rZW4oaW50JiB0b2tlblN0YWNrRGVwdGgsIGludCB0eXBlLCBp
bnQgc3RhcnQpCisgICAgdm9pZCBhcHBlbmRVbmFyeVRva2VuKGludCYgdG9rZW5TdGFja0RlcHRo
LCBpbnQgdHlwZSwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQg
ZGl2b3RMaW5lU3RhcnQpCiAgICAgewogICAgICAgICB0b2tlblN0YWNrRGVwdGgrKzsKLSAgICAg
ICAgbV91bmFyeVRva2VuU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHR5cGUsIHN0YXJ0KSk7
CisgICAgICAgIFBvc2l0aW9uSW5mbyBwb3NpdGlvbiA9IHsgc3RhcnQsIGRpdm90TGluZSwgZGl2
b3RMaW5lU3RhcnQgfTsKKyAgICAgICAgbV91bmFyeVRva2VuU3RhY2suYXBwZW5kKHN0ZDo6bWFr
ZV9wYWlyKHR5cGUsIHBvc2l0aW9uKSk7CiAgICAgfQogCiAgICAgaW50IHVuYXJ5VG9rZW5TdGFj
a0xhc3RUeXBlKGludCYpCkBAIC01NzksMjYgKzU5OCwzNCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBtX3VuYXJ5VG9rZW5TdGFjay5sYXN0KCkuZmlyc3Q7CiAgICAgfQogICAgIAotICAgIGlu
dCB1bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQoaW50JikKKyAgICB1bnNpZ25lZCB1bmFyeVRva2Vu
U3RhY2tMYXN0U3RhcnQoaW50JikKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3VuYXJ5VG9rZW5T
dGFjay5sYXN0KCkuc2Vjb25kOworICAgICAgICByZXR1cm4gbV91bmFyeVRva2VuU3RhY2subGFz
dCgpLnNlY29uZC5zdGFydFBvczsKICAgICB9CiAgICAgCisgICAgdW5zaWduZWQgdW5hcnlUb2tl
blN0YWNrTGFzdExpbmVTdGFydFBvc2l0aW9uKGludCYpCisgICAgeworICAgICAgICByZXR1cm4g
bV91bmFyeVRva2VuU3RhY2subGFzdCgpLnNlY29uZC5saW5lU3RhcnRQb3M7CisgICAgfQorCiAg
ICAgdm9pZCB1bmFyeVRva2VuU3RhY2tSZW1vdmVMYXN0KGludCYgdG9rZW5TdGFja0RlcHRoKQog
ICAgIHsKICAgICAgICAgdG9rZW5TdGFja0RlcHRoLS07CiAgICAgICAgIG1fdW5hcnlUb2tlblN0
YWNrLnJlbW92ZUxhc3QoKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBhc3NpZ25tZW50U3RhY2tB
cHBlbmQoaW50JiBhc3NpZ25tZW50U3RhY2tEZXB0aCwgRXhwcmVzc2lvbk5vZGUqIG5vZGUsIGlu
dCBzdGFydCwgaW50IGRpdm90LCBpbnQgYXNzaWdubWVudENvdW50LCBPcGVyYXRvciBvcCkKKyAg
ICB2b2lkIGFzc2lnbm1lbnRTdGFja0FwcGVuZChpbnQmIGFzc2lnbm1lbnRTdGFja0RlcHRoLCBF
eHByZXNzaW9uTm9kZSogbm9kZSwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0LCBpbnQgYXNzaWdubWVudENv
dW50LCBPcGVyYXRvciBvcCkKICAgICB7CiAgICAgICAgIGFzc2lnbm1lbnRTdGFja0RlcHRoKys7
Ci0gICAgICAgIG1fYXNzaWdubWVudEluZm9TdGFjay5hcHBlbmQoQXNzaWdubWVudEluZm8obm9k
ZSwgc3RhcnQsIGRpdm90LCBhc3NpZ25tZW50Q291bnQsIG9wKSk7CisgICAgICAgIEFTU0VSVChz
dGFydCA+PSBkaXZvdExpbmVTdGFydCk7CisgICAgICAgIEFTU0VSVChkaXZvdCA+PSBkaXZvdExp
bmVTdGFydCk7CisgICAgICAgIG1fYXNzaWdubWVudEluZm9TdGFjay5hcHBlbmQoQXNzaWdubWVu
dEluZm8obm9kZSwgc3RhcnQsIGRpdm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0LCBhc3Np
Z25tZW50Q291bnQsIG9wKSk7CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFz
c2lnbm1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50JiBhc3NpZ25tZW50
U3RhY2tEZXB0aCwgRXhwcmVzc2lvbk5vZGUqIHJocywgaW50IGluaXRpYWxBc3NpZ25tZW50Q291
bnQsIGludCBjdXJyZW50QXNzaWdubWVudENvdW50LCBpbnQgbGFzdFRva2VuRW5kKQogICAgIHsK
LSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIHJlc3VsdCA9IG1ha2VBc3NpZ25Ob2RlKGxvY2F0aW9u
LCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1fbm9kZSwgbV9hc3NpZ25tZW50SW5mb1N0
YWNrLmxhc3QoKS5tX29wLCByaHMsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9pbml0
QXNzaWdubWVudHMgIT0gaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25tZW50SW5mb1N0
YWNrLmxhc3QoKS5tX2luaXRBc3NpZ25tZW50cyAhPSBjdXJyZW50QXNzaWdubWVudENvdW50LCBt
X2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1fc3RhcnQsIG1fYXNzaWdubWVudEluZm9TdGFj
ay5sYXN0KCkubV9kaXZvdCArIDEsIGxhc3RUb2tlbkVuZCk7CisgICAgICAgIEFzc2lnbm1lbnRJ
bmZvJiBpbmZvID0gbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKTsKKyAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIHJlc3VsdCA9IG1ha2VBc3NpZ25Ob2RlKGxvY2F0aW9uLCBpbmZvLm1fbm9kZSwg
aW5mby5tX29wLCByaHMsIGluZm8ubV9pbml0QXNzaWdubWVudHMgIT0gaW5pdGlhbEFzc2lnbm1l
bnRDb3VudCwgaW5mby5tX2luaXRBc3NpZ25tZW50cyAhPSBjdXJyZW50QXNzaWdubWVudENvdW50
LCBpbmZvLm1fc3RhcnQsIGluZm8ubV9kaXZvdCArIDEsIGxhc3RUb2tlbkVuZCwgaW5mby5tX2Rp
dm90TGluZSwgaW5mby5tX2Rpdm90TGluZVN0YXJ0KTsKICAgICAgICAgbV9hc3NpZ25tZW50SW5m
b1N0YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAgYXNzaWdubWVudFN0YWNrRGVwdGgtLTsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTYyNCw5ICs2NTEsMTAgQEAgcHJpdmF0ZToKICAgICAg
ICAgaW50IG1fbnVtQ29uc3RhbnRzOwogICAgIH07CiAKLSAgICBzdGF0aWMgdm9pZCBzZXRFeGNl
cHRpb25Mb2NhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgdW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBlbmQpCisgICAgc3RhdGljIHZvaWQgc2V0RXhj
ZXB0aW9uTG9jYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIHVuc2lnbmVkIHN0
YXJ0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgZW5kLCB1bnNpZ25lZCBkaXZvdExpbmUsIHVu
c2lnbmVkIGRpdm90TGluZVN0YXJ0KQogICAgIHsKLSAgICAgICAgbm9kZS0+c2V0RXhjZXB0aW9u
U291cmNlQ29kZShkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICBB
U1NFUlQoZGl2b3QgPj0gZGl2b3RMaW5lU3RhcnQpOworICAgICAgICBub2RlLT5zZXRFeGNlcHRp
b25Tb3VyY2VDb2RlKGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCwgZGl2b3RMaW5l
LCBkaXZvdExpbmVTdGFydCk7CiAgICAgfQogCiAgICAgdm9pZCBpbmNDb25zdGFudHMoKSB7IG1f
c2NvcGUubV9udW1Db25zdGFudHMrKzsgfQpAQCAtNjUwLDcgKzY3OCw3IEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPEJpbmFyeU9wZXJhbmQsIDEwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9iaW5h
cnlPcGVyYW5kU3RhY2s7CiAgICAgVmVjdG9yPEFzc2lnbm1lbnRJbmZvLCAxMCwgVW5zYWZlVmVj
dG9yT3ZlcmZsb3c+IG1fYXNzaWdubWVudEluZm9TdGFjazsKICAgICBWZWN0b3I8cGFpcjxpbnQs
IGludD4sIDEwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9iaW5hcnlPcGVyYXRvclN0YWNrOwot
ICAgIFZlY3RvcjxwYWlyPGludCwgaW50PiwgMTAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX3Vu
YXJ5VG9rZW5TdGFjazsKKyAgICBWZWN0b3I8cGFpcjxpbnQsIFBvc2l0aW9uSW5mbz4sIDEwLCBV
bnNhZmVWZWN0b3JPdmVyZmxvdz4gbV91bmFyeVRva2VuU3RhY2s7CiAgICAgaW50IG1fZXZhbENv
dW50OwogfTsKIApAQCAtNjYzLDIxICs2OTEsMjEgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxk
ZXI6Om1ha2VUeXBlT2ZObwogICAgIHJldHVybiBuZXcgKG1fdm0pIFR5cGVPZlZhbHVlTm9kZShs
b2NhdGlvbiwgZXhwcik7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRGVs
ZXRlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
ZXhwciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCitFeHByZXNzaW9uTm9kZSogQVNU
QnVpbGRlcjo6bWFrZURlbGV0ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kLCB1bnNp
Z25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogewogICAgIGlmICghZXhw
ci0+aXNMb2NhdGlvbigpKQogICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBEZWxldGVWYWx1ZU5v
ZGUobG9jYXRpb24sIGV4cHIpOwogICAgIGlmIChleHByLT5pc1Jlc29sdmVOb2RlKCkpIHsKICAg
ICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGV4
cHIpOwotICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBEZWxldGVSZXNvbHZlTm9kZShsb2NhdGlv
biwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2
b3QpOworICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBEZWxldGVSZXNvbHZlTm9kZShsb2NhdGlv
biwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2
b3QsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogICAgIH0KICAgICBpZiAoZXhwci0+aXNC
cmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogYnJh
Y2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICAgICAg
cmV0dXJuIG5ldyAobV92bSkgRGVsZXRlQnJhY2tldE5vZGUobG9jYXRpb24sIGJyYWNrZXQtPmJh
c2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBk
aXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fdm0pIERlbGV0ZUJyYWNrZXROb2RlKGxvY2F0
aW9uLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBkaXZvdCwgZGl2b3Qg
LSBzdGFydCwgZW5kIC0gZGl2b3QsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogICAgIH0K
ICAgICBBU1NFUlQoZXhwci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgRG90QWNjZXNzb3JO
b2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICByZXR1
cm4gbmV3IChtX3ZtKSBEZWxldGVEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5p
ZGVudGlmaWVyKCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgcmV0
dXJuIG5ldyAobV92bSkgRGVsZXRlRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+
aWRlbnRpZmllcigpLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QsIGRpdm90TGlu
ZSwgZGl2b3RMaW5lU3RhcnQpOwogfQogCiBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFr
ZU5lZ2F0ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIG4pCkBAIC03OTQsMzUgKzgyMiwzNiBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6
bWFrZUJpdFhPck5vCiAgICAgcmV0dXJuIG5ldyAobV92bSkgQml0WE9yTm9kZShsb2NhdGlvbiwg
ZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUq
IEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBmdW5jLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBpbnQg
c3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjpt
YWtlRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogZnVuYywgQXJndW1lbnRzTm9kZSogYXJncywgaW50IHN0YXJ0LCB1bnNpZ25l
ZCBkaXZvdCwgaW50IGVuZCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVT
dGFydCkKIHsKKyAgICBBU1NFUlQoZGl2b3QgPj0gZGl2b3RMaW5lU3RhcnQpOwogICAgIGlmICgh
ZnVuYy0+aXNMb2NhdGlvbigpKQotICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBGdW5jdGlvbkNh
bGxWYWx1ZU5vZGUobG9jYXRpb24sIGZ1bmMsIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBl
bmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fdm0pIEZ1bmN0aW9uQ2FsbFZhbHVl
Tm9kZShsb2NhdGlvbiwgZnVuYywgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRp
dm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KTsKICAgICBpZiAoZnVuYy0+aXNSZXNvbHZl
Tm9kZSgpKSB7CiAgICAgICAgIFJlc29sdmVOb2RlKiByZXNvbHZlID0gc3RhdGljX2Nhc3Q8UmVz
b2x2ZU5vZGUqPihmdW5jKTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciA9
IHJlc29sdmUtPmlkZW50aWZpZXIoKTsKICAgICAgICAgaWYgKGlkZW50aWZpZXIgPT0gbV92bS0+
cHJvcGVydHlOYW1lcy0+ZXZhbCkgewogICAgICAgICAgICAgdXNlc0V2YWwoKTsKLSAgICAgICAg
ICAgIHJldHVybiBuZXcgKG1fdm0pIEV2YWxGdW5jdGlvbkNhbGxOb2RlKGxvY2F0aW9uLCBhcmdz
LCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICAgICAgcmV0dXJu
IG5ldyAobV92bSkgRXZhbEZ1bmN0aW9uQ2FsbE5vZGUobG9jYXRpb24sIGFyZ3MsIGRpdm90LCBk
aXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7CiAg
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5ldyAobV92bSkgRnVuY3Rpb25DYWxsUmVzb2x2ZU5v
ZGUobG9jYXRpb24sIGlkZW50aWZpZXIsIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQg
LSBkaXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fdm0pIEZ1bmN0aW9uQ2FsbFJlc29sdmVO
b2RlKGxvY2F0aW9uLCBpZGVudGlmaWVyLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5k
IC0gZGl2b3QsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogICAgIH0KICAgICBpZiAoZnVu
Yy0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9k
ZSogYnJhY2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihmdW5jKTsKLSAg
ICAgICAgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUqIG5vZGUgPSBuZXcgKG1fdm0pIEZ1bmN0aW9u
Q2FsbEJyYWNrZXROb2RlKGxvY2F0aW9uLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNj
cmlwdCgpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwotICAgICAg
ICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhicmFja2V0LT5kaXZvdCgpLCBicmFja2V0LT5l
bmRPZmZzZXQoKSk7CisgICAgICAgIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKiBub2RlID0gbmV3
IChtX3ZtKSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShsb2NhdGlvbiwgYnJhY2tldC0+YmFzZSgp
LCBicmFja2V0LT5zdWJzY3JpcHQoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAt
IGRpdm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KTsKKyAgICAgICAgbm9kZS0+c2V0U3Vi
ZXhwcmVzc2lvbkluZm8oYnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+ZGl2b3RFbmRPZmZzZXQo
KSwgYnJhY2tldC0+ZGl2b3RMaW5lKCksIGJyYWNrZXQtPmRpdm90TGluZVN0YXJ0KCkpOwogICAg
ICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAgICAgQVNTRVJUKGZ1bmMtPmlzRG90QWNjZXNzb3JO
b2RlKCkpOwogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNz
b3JOb2RlKj4oZnVuYyk7CiAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZSogbm9kZTsKICAgICBpZiAo
ZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbCkKLSAgICAgICAg
bm9kZSA9IG5ldyAobV92bSkgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+
YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVu
ZCAtIGRpdm90KTsKKyAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgQ2FsbEZ1bmN0aW9uQ2FsbERv
dE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2
b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0
KTsKICAgICBlbHNlIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5hcHBseSkKLSAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgQXBwbHlGdW5jdGlvbkNhbGxEb3RO
b2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90
LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fdm0p
IEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRl
bnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QsIGRpdm90
TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogICAgIGVsc2UKLSAgICAgICAgbm9kZSA9IG5ldyAobV92
bSkgRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRp
ZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwotICAgIG5v
ZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5lbmRPZmZzZXQoKSk7
CisgICAgICAgIG5vZGUgPSBuZXcgKG1fdm0pIEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24s
IGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3Rh
cnQsIGVuZCAtIGRpdm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KTsKKyAgICBub2RlLT5z
ZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCksIGRvdC0+ZGl2b3RFbmRPZmZzZXQoKSwg
ZG90LT5kaXZvdExpbmUoKSwgZG90LT5kaXZvdExpbmVTdGFydCgpKTsKICAgICByZXR1cm4gbm9k
ZTsKIH0KIApAQCAtODcwLDEzICs4OTksMTMgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6
Om1ha2VCaW5hcnlObwogCiAgICAgY2FzZSBJTlNUQU5DRU9GOiB7CiAgICAgICAgIEluc3RhbmNl
T2ZOb2RlKiBub2RlID0gbmV3IChtX3ZtKSBJbnN0YW5jZU9mTm9kZShsb2NhdGlvbiwgbGhzLmZp
cnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7Ci0gICAgICAgIHNldEV4
Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIGxocy5zZWNvbmQuc3RhcnQsIHJocy5zZWNvbmQuc3RhcnQs
IHJocy5zZWNvbmQuZW5kKTsKKyAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgbGhz
LnNlY29uZC5zdGFydCwgcmhzLnNlY29uZC5zdGFydCwgcmhzLnNlY29uZC5lbmQsIHJocy5zZWNv
bmQuZGl2b3RMaW5lLCByaHMuc2Vjb25kLmRpdm90TGluZVN0YXJ0KTsKICAgICAgICAgcmV0dXJu
IG5vZGU7CiAgICAgfQogCiAgICAgY2FzZSBJTlRPS0VOOiB7CiAgICAgICAgIEluTm9kZSogbm9k
ZSA9IG5ldyAobV92bSkgSW5Ob2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhz
LnNlY29uZC5oYXNBc3NpZ25tZW50KTsKLSAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9k
ZSwgbGhzLnNlY29uZC5zdGFydCwgcmhzLnNlY29uZC5zdGFydCwgcmhzLnNlY29uZC5lbmQpOwor
ICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBsaHMuc2Vjb25kLnN0YXJ0LCByaHMu
c2Vjb25kLnN0YXJ0LCByaHMuc2Vjb25kLmVuZCwgcmhzLnNlY29uZC5kaXZvdExpbmUsIHJocy5z
ZWNvbmQuZGl2b3RMaW5lU3RhcnQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKQEAg
LTkwOCwxMCArOTM3LDEwIEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQmluYXJ5
Tm8KICAgICByZXR1cm4gMDsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VB
c3NpZ25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBsb2MsIE9wZXJhdG9yIG9wLCBFeHByZXNzaW9uTm9kZSogZXhwciwgYm9vbCBsb2NIYXNBc3Np
Z25tZW50cywgYm9vbCBleHBySGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBp
bnQgZW5kKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25Ob2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsb2MsIE9wZXJhdG9y
IG9wLCBFeHByZXNzaW9uTm9kZSogZXhwciwgYm9vbCBsb2NIYXNBc3NpZ25tZW50cywgYm9vbCBl
eHBySGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kLCB1bnNpZ25l
ZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogewogICAgIGlmICghbG9jLT5p
c0xvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiBuZXcgKG1fdm0pIEFzc2lnbkVycm9yTm9kZShs
b2NhdGlvbiwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0
dXJuIG5ldyAobV92bSkgQXNzaWduRXJyb3JOb2RlKGxvY2F0aW9uLCBkaXZvdCwgZGl2b3QgLSBz
dGFydCwgZW5kIC0gZGl2b3QsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogCiAgICAgaWYg
KGxvYy0+aXNSZXNvbHZlTm9kZSgpKSB7CiAgICAgICAgIFJlc29sdmVOb2RlKiByZXNvbHZlID0g
c3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihsb2MpOwpAQCAtOTE5LDE3ICs5NDgsMTcgQEAgRXhw
cmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25ObwogICAgICAgICAgICAgaWYgKGV4
cHItPmlzRnVuY0V4cHJOb2RlKCkpCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RnVuY0V4
cHJOb2RlKj4oZXhwciktPmJvZHkoKS0+c2V0SW5mZXJyZWROYW1lKHJlc29sdmUtPmlkZW50aWZp
ZXIoKSk7CiAgICAgICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZSogbm9kZSA9IG5ldyAobV92bSkg
QXNzaWduUmVzb2x2ZU5vZGUobG9jYXRpb24sIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgZXhwcik7
Ci0gICAgICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVu
ZCk7CisgICAgICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3Qs
IGVuZCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7CiAgICAgICAgICAgICByZXR1cm4gbm9k
ZTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBSZWFkTW9kaWZ5UmVzb2x2
ZU5vZGUobG9jYXRpb24sIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNB
c3NpZ25tZW50cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAg
cmV0dXJuIG5ldyAobV92bSkgUmVhZE1vZGlmeVJlc29sdmVOb2RlKGxvY2F0aW9uLCByZXNvbHZl
LT5pZGVudGlmaWVyKCksIG9wLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBkaXZv
dCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7CiAgICAg
fQogICAgIGlmIChsb2MtPmlzQnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7CiAgICAgICAgIEJyYWNr
ZXRBY2Nlc3Nvck5vZGUqIGJyYWNrZXQgPSBzdGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2Rl
Kj4obG9jKTsKICAgICAgICAgaWYgKG9wID09IE9wRXF1YWwpCi0gICAgICAgICAgICByZXR1cm4g
bmV3IChtX3ZtKSBBc3NpZ25CcmFja2V0Tm9kZShsb2NhdGlvbiwgYnJhY2tldC0+YmFzZSgpLCBi
cmFja2V0LT5zdWJzY3JpcHQoKSwgZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4cHJIYXNBc3Np
Z25tZW50cywgYnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+ZGl2b3QoKSAtIHN0YXJ0LCBlbmQg
LSBicmFja2V0LT5kaXZvdCgpKTsKLSAgICAgICAgUmVhZE1vZGlmeUJyYWNrZXROb2RlKiBub2Rl
ID0gbmV3IChtX3ZtKSBSZWFkTW9kaWZ5QnJhY2tldE5vZGUobG9jYXRpb24sIGJyYWNrZXQtPmJh
c2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIG9wLCBleHByLCBsb2NIYXNBc3NpZ25tZW50cywg
ZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwot
ICAgICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhicmFja2V0LT5kaXZvdCgpLCBicmFj
a2V0LT5lbmRPZmZzZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBBc3NpZ25C
cmFja2V0Tm9kZShsb2NhdGlvbiwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQo
KSwgZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4cHJIYXNBc3NpZ25tZW50cywgYnJhY2tldC0+
ZGl2b3QoKSwgYnJhY2tldC0+ZGl2b3QoKSAtIHN0YXJ0LCBlbmQgLSBicmFja2V0LT5kaXZvdCgp
LCBicmFja2V0LT5kaXZvdExpbmUoKSwgYnJhY2tldC0+ZGl2b3RMaW5lU3RhcnQoKSk7CisgICAg
ICAgIFJlYWRNb2RpZnlCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyAobV92bSkgUmVhZE1vZGlmeUJy
YWNrZXROb2RlKGxvY2F0aW9uLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgp
LCBvcCwgZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3Qs
IGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KTsK
KyAgICAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oYnJhY2tldC0+ZGl2b3QoKSwgYnJh
Y2tldC0+ZGl2b3RFbmRPZmZzZXQoKSwgYnJhY2tldC0+ZGl2b3RMaW5lKCksIGJyYWNrZXQtPmRp
dm90TGluZVN0YXJ0KCkpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAgICAgQVNTRVJU
KGxvYy0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CkBAIC05MzcsMjIgKzk2NiwyMiBAQCBFeHByZXNz
aW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUFzc2lnbk5vCiAgICAgaWYgKG9wID09IE9wRXF1YWwp
IHsKICAgICAgICAgaWYgKGV4cHItPmlzRnVuY0V4cHJOb2RlKCkpCiAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxGdW5jRXhwck5vZGUqPihleHByKS0+Ym9keSgpLT5zZXRJbmZlcnJlZE5hbWUoZG90
LT5pZGVudGlmaWVyKCkpOwotICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBBc3NpZ25Eb3ROb2Rl
KGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGV4cHIsIGV4cHJIYXNB
c3NpZ25tZW50cywgZG90LT5kaXZvdCgpLCBkb3QtPmRpdm90KCkgLSBzdGFydCwgZW5kIC0gZG90
LT5kaXZvdCgpKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV92bSkgQXNzaWduRG90Tm9kZShsb2Nh
dGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBleHByLCBleHBySGFzQXNzaWdu
bWVudHMsIGRvdC0+ZGl2b3QoKSwgZG90LT5kaXZvdCgpIC0gc3RhcnQsIGVuZCAtIGRvdC0+ZGl2
b3QoKSwgZG90LT5kaXZvdExpbmUoKSwgZG90LT5kaXZvdExpbmVTdGFydCgpKTsKICAgICB9CiAK
LSAgICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9kZSA9IG5ldyAobV92bSkgUmVhZE1vZGlmeURvdE5v
ZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4
cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKLSAg
ICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCksIGRvdC0+ZW5kT2Zmc2V0
KCkpOworICAgIFJlYWRNb2RpZnlEb3ROb2RlKiBub2RlID0gbmV3IChtX3ZtKSBSZWFkTW9kaWZ5
RG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZXhw
ciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3Qs
IGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOworICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25J
bmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5kaXZvdEVuZE9mZnNldCgpLCBkb3QtPmRpdm90TGluZSgp
LCBkb3QtPmRpdm90TGluZVN0YXJ0KCkpOwogICAgIHJldHVybiBub2RlOwogfQogCi1FeHByZXNz
aW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVByZWZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wLCBpbnQgc3RhcnQs
IGludCBkaXZvdCwgaW50IGVuZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlUHJl
Zml4Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
ZXhwciwgT3BlcmF0b3Igb3AsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kLCB1bnNpZ25l
ZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogewotICAgIHJldHVybiBuZXcg
KG1fdm0pIFByZWZpeE5vZGUobG9jYXRpb24sIGV4cHIsIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFy
dCwgZW5kIC0gZGl2b3QpOworICAgIHJldHVybiBuZXcgKG1fdm0pIFByZWZpeE5vZGUobG9jYXRp
b24sIGV4cHIsIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QsIGRpdm90TGlu
ZSwgZGl2b3RMaW5lU3RhcnQpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFr
ZVBvc3RmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBleHByLCBPcGVyYXRvciBvcCwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCitF
eHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVBvc3RmaXhOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvciBvcCwgaW50
IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQg
ZGl2b3RMaW5lU3RhcnQpCiB7Ci0gICAgcmV0dXJuIG5ldyAobV92bSkgUG9zdGZpeE5vZGUobG9j
YXRpb24sIGV4cHIsIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAg
IHJldHVybiBuZXcgKG1fdm0pIFBvc3RmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBvcCwgZGl2b3Qs
IGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KTsK
IH0KIAogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAJKHJldmlz
aW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MjQsNyArNTI0LDcgQEAgU3RyaW5nIExleGVyPFQ+OjppbnZhbGlk
Q2hhcmFjdGVyTWVzc2FnZQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJ
TkUgY29uc3QgVCogTGV4ZXI8VD46OmN1cnJlbnRDaGFyYWN0ZXIoKSBjb25zdAorQUxXQVlTX0lO
TElORSBjb25zdCBUKiBMZXhlcjxUPjo6Y3VycmVudENvZGVQdHIoKSBjb25zdAogewogICAgIEFT
U0VSVChtX2NvZGUgPD0gbV9jb2RlRW5kKTsKICAgICByZXR1cm4gbV9jb2RlOwpAQCAtNTQ2LDEx
ICs1NDYsMTMgQEAgdm9pZCBMZXhlcjxUPjo6c2V0Q29kZShjb25zdCBTb3VyY2VDb2RlJgogICAg
ICAgICBtX2NvZGVTdGFydCA9IDA7CiAKICAgICBtX3NvdXJjZSA9ICZzb3VyY2U7CisgICAgbV9z
b3VyY2VPZmZzZXQgPSBzb3VyY2Uuc3RhcnRPZmZzZXQoKTsKICAgICBtX2NvZGVTdGFydFBsdXNP
ZmZzZXQgPSBtX2NvZGVTdGFydCArIHNvdXJjZS5zdGFydE9mZnNldCgpOwogICAgIG1fY29kZSA9
IG1fY29kZVN0YXJ0UGx1c09mZnNldDsKICAgICBtX2NvZGVFbmQgPSBtX2NvZGVTdGFydCArIHNv
dXJjZS5lbmRPZmZzZXQoKTsKICAgICBtX2Vycm9yID0gZmFsc2U7CiAgICAgbV9hdExpbmVTdGFy
dCA9IHRydWU7CisgICAgbV9saW5lU3RhcnQgPSBtX2NvZGU7CiAgICAgbV9sZXhFcnJvck1lc3Nh
Z2UgPSBTdHJpbmcoKTsKICAgICAKICAgICBtX2J1ZmZlcjgucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShpbml0aWFsUmVhZEJ1ZmZlckNhcGFjaXR5KTsKQEAgLTU2Nyw2ICs1NjksNyBAQCB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KIHRlbXBsYXRlIDxpbnQgc2hpZnRBbW91bnQ+IEFMV0FZU19JTkxJTkUg
dm9pZCBMZXhlcjxUPjo6aW50ZXJuYWxTaGlmdCgpCiB7CiAgICAgbV9jb2RlICs9IHNoaWZ0QW1v
dW50OworICAgIEFTU0VSVChjdXJyZW50T2Zmc2V0KCkgPj0gY3VycmVudExpbmVTdGFydE9mZnNl
dCgpKTsKICAgICBtX2N1cnJlbnQgPSAqbV9jb2RlOwogfQogCkBAIC03NjYsMjAgKzc2OSwyMSBA
QCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBjb25zdCBMQ2hhciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudENoYXJhY3Rl
cigpOworICAgIGNvbnN0IExDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50Q29kZVB0cigp
OworICAgIHVuc2lnbmVkIGlkZW50aWZpZXJMaW5lU3RhcnQgPSBjdXJyZW50TGluZVN0YXJ0T2Zm
c2V0KCk7CiAgICAgCiAgICAgd2hpbGUgKGlzSWRlbnRQYXJ0KG1fY3VycmVudCkpCiAgICAgICAg
IHNoaWZ0KCk7CiAgICAgCiAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCA9PSAnXFwnKSkgewot
ICAgICAgICBzZXRPZmZzZXRGcm9tQ2hhck9mZnNldChpZGVudGlmaWVyU3RhcnQpOworICAgICAg
ICBzZXRPZmZzZXRGcm9tQ29kZVB0cihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMaW5lU3Rh
cnQpOwogICAgICAgICByZXR1cm4gcGFyc2VJZGVudGlmaWVyU2xvd0Nhc2U8c2hvdWxkQ3JlYXRl
SWRlbnRpZmllcj4odG9rZW5EYXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsKICAgICB9CiAK
ICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IDA7CiAgICAgCiAgICAgaWYgKHNob3VsZENy
ZWF0ZUlkZW50aWZpZXIpIHsKLSAgICAgICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJyZW50
Q2hhcmFjdGVyKCkgLSBpZGVudGlmaWVyU3RhcnQ7CisgICAgICAgIGludCBpZGVudGlmaWVyTGVu
Z3RoID0gY3VycmVudENvZGVQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsKICAgICAgICAgaWRlbnQg
PSBtYWtlSWRlbnRpZmllcihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwogCiAg
ICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBpZGVudDsKQEAgLTgxNCw3ICs4MTgsOCBAQCB0ZW1w
bGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBjb25zdCBVQ2hhciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudENoYXJhY3RlcigpOwor
ICAgIGNvbnN0IFVDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50Q29kZVB0cigpOworICAg
IGludCBpZGVudGlmaWVyTGluZVN0YXJ0ID0gY3VycmVudExpbmVTdGFydE9mZnNldCgpOwogCiAg
ICAgVUNoYXIgb3JBbGxDaGFycyA9IDA7CiAgICAgCkBAIC04MjQsNyArODI5LDcgQEAgdGVtcGxh
dGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQQogICAgIH0KICAgICAKICAgICBpZiAo
VU5MSUtFTFkobV9jdXJyZW50ID09ICdcXCcpKSB7Ci0gICAgICAgIHNldE9mZnNldEZyb21DaGFy
T2Zmc2V0KGlkZW50aWZpZXJTdGFydCk7CisgICAgICAgIHNldE9mZnNldEZyb21Db2RlUHRyKGlk
ZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxpbmVTdGFydCk7CiAgICAgICAgIHJldHVybiBwYXJz
ZUlkZW50aWZpZXJTbG93Q2FzZTxzaG91bGRDcmVhdGVJZGVudGlmaWVyPih0b2tlbkRhdGEsIGxl
eGVyRmxhZ3MsIHN0cmljdE1vZGUpOwogICAgIH0KIApAQCAtODM2LDcgKzg0MSw3IEBAIHRlbXBs
YXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEEKICAgICBjb25zdCBJZGVudGlmaWVy
KiBpZGVudCA9IDA7CiAgICAgCiAgICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpIHsKLSAg
ICAgICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJyZW50Q2hhcmFjdGVyKCkgLSBpZGVudGlm
aWVyU3RhcnQ7CisgICAgICAgIGludCBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudENvZGVQdHIo
KSAtIGlkZW50aWZpZXJTdGFydDsKICAgICAgICAgaWYgKGlzQWxsOEJpdCkKICAgICAgICAgICAg
IGlkZW50ID0gbWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcihpZGVudGlmaWVyU3RhcnQsIGlk
ZW50aWZpZXJMZW5ndGgpOwogICAgICAgICBlbHNlCkBAIC04NjYsNyArODcxLDcgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBK
U1Rva2VuVHlwZSBMZXhlcjxUPjo6cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2UoSlNUb2tlbkRhdGEq
IHRva2VuRGF0YSwgdW5zaWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RNb2RlKQogewogICAg
IGNvbnN0IHB0cmRpZmZfdCByZW1haW5pbmcgPSBtX2NvZGVFbmQgLSBtX2NvZGU7Ci0gICAgY29u
c3QgVCogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudENoYXJhY3RlcigpOworICAgIGNvbnN0IFQq
IGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRDb2RlUHRyKCk7CiAgICAgYm9vbCBidWZmZXJSZXF1
aXJlZCA9IGZhbHNlOwogCiAgICAgd2hpbGUgKHRydWUpIHsKQEAgLTg3OSw4ICs4ODQsOCBAQCB0
ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBKCiAKICAgICAgICAgLy8gXHVY
WFhYIHVuaWNvZGUgY2hhcmFjdGVycy4KICAgICAgICAgYnVmZmVyUmVxdWlyZWQgPSB0cnVlOwot
ICAgICAgICBpZiAoaWRlbnRpZmllclN0YXJ0ICE9IGN1cnJlbnRDaGFyYWN0ZXIoKSkKLSAgICAg
ICAgICAgIG1fYnVmZmVyMTYuYXBwZW5kKGlkZW50aWZpZXJTdGFydCwgY3VycmVudENoYXJhY3Rl
cigpIC0gaWRlbnRpZmllclN0YXJ0KTsKKyAgICAgICAgaWYgKGlkZW50aWZpZXJTdGFydCAhPSBj
dXJyZW50Q29kZVB0cigpKQorICAgICAgICAgICAgbV9idWZmZXIxNi5hcHBlbmQoaWRlbnRpZmll
clN0YXJ0LCBjdXJyZW50Q29kZVB0cigpIC0gaWRlbnRpZmllclN0YXJ0KTsKICAgICAgICAgc2hp
ZnQoKTsKICAgICAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCAhPSAndScpKQogICAgICAgICAg
ICAgcmV0dXJuIGF0RW5kKCkgPyBVTlRFUk1JTkFURURfSURFTlRJRklFUl9FU0NBUEVfRVJST1JU
T0sgOiBJTlZBTElEX0lERU5USUZJRVJfRVNDQVBFX0VSUk9SVE9LOwpAQCAtODkzLDE4ICs4OTgs
MTggQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gSgogICAgICAgICAg
ICAgcmV0dXJuIElOVkFMSURfSURFTlRJRklFUl9VTklDT0RFX0VTQ0FQRV9FUlJPUlRPSzsKICAg
ICAgICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpCiAgICAgICAgICAgICByZWNvcmQxNih1
Y2hhcmFjdGVyKTsKLSAgICAgICAgaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudENoYXJhY3Rlcigp
OworICAgICAgICBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50Q29kZVB0cigpOwogICAgIH0KIAog
ICAgIGludCBpZGVudGlmaWVyTGVuZ3RoOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0g
MDsKICAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikgewogICAgICAgICBpZiAoIWJ1ZmZl
clJlcXVpcmVkKSB7Ci0gICAgICAgICAgICBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudENoYXJh
Y3RlcigpIC0gaWRlbnRpZmllclN0YXJ0OworICAgICAgICAgICAgaWRlbnRpZmllckxlbmd0aCA9
IGN1cnJlbnRDb2RlUHRyKCkgLSBpZGVudGlmaWVyU3RhcnQ7CiAgICAgICAgICAgICBpZGVudCA9
IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoaWRlbnRpZmllclN0YXJ0ICE9IGN1cnJlbnRD
aGFyYWN0ZXIoKSkKLSAgICAgICAgICAgICAgICBtX2J1ZmZlcjE2LmFwcGVuZChpZGVudGlmaWVy
U3RhcnQsIGN1cnJlbnRDaGFyYWN0ZXIoKSAtIGlkZW50aWZpZXJTdGFydCk7CisgICAgICAgICAg
ICBpZiAoaWRlbnRpZmllclN0YXJ0ICE9IGN1cnJlbnRDb2RlUHRyKCkpCisgICAgICAgICAgICAg
ICAgbV9idWZmZXIxNi5hcHBlbmQoaWRlbnRpZmllclN0YXJ0LCBjdXJyZW50Q29kZVB0cigpIC0g
aWRlbnRpZmllclN0YXJ0KTsKICAgICAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXIobV9i
dWZmZXIxNi5kYXRhKCksIG1fYnVmZmVyMTYuc2l6ZSgpKTsKICAgICAgICAgfQogCkBAIC05NDQs
MTYgKzk0OSwxNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHRlbXBsYXRlIDxib29sIHNob3Vs
ZEJ1aWxkU3RyaW5ncz4gQUxXQVlTX0lOTElORSB0eXBlbmFtZSBMZXhlcjxUPjo6U3RyaW5nUGFy
c2VSZXN1bHQgTGV4ZXI8VD46OnBhcnNlU3RyaW5nKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsIGJv
b2wgc3RyaWN0TW9kZSkKIHsKICAgICBpbnQgc3RhcnRpbmdPZmZzZXQgPSBjdXJyZW50T2Zmc2V0
KCk7CisgICAgaW50IHN0YXJ0aW5nTGluZVN0YXJ0T2Zmc2V0ID0gY3VycmVudExpbmVTdGFydE9m
ZnNldCgpOwogICAgIGludCBzdGFydGluZ0xpbmVOdW1iZXIgPSBsaW5lTnVtYmVyKCk7CiAgICAg
VCBzdHJpbmdRdW90ZUNoYXJhY3RlciA9IG1fY3VycmVudDsKICAgICBzaGlmdCgpOwogCi0gICAg
Y29uc3QgVCogc3RyaW5nU3RhcnQgPSBjdXJyZW50Q2hhcmFjdGVyKCk7CisgICAgY29uc3QgVCog
c3RyaW5nU3RhcnQgPSBjdXJyZW50Q29kZVB0cigpOwogCiAgICAgd2hpbGUgKG1fY3VycmVudCAh
PSBzdHJpbmdRdW90ZUNoYXJhY3RlcikgewogICAgICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50
ID09ICdcXCcpKSB7Ci0gICAgICAgICAgICBpZiAoc3RyaW5nU3RhcnQgIT0gY3VycmVudENoYXJh
Y3RlcigpICYmIHNob3VsZEJ1aWxkU3RyaW5ncykKLSAgICAgICAgICAgICAgICBhcHBlbmQ4KHN0
cmluZ1N0YXJ0LCBjdXJyZW50Q2hhcmFjdGVyKCkgLSBzdHJpbmdTdGFydCk7CisgICAgICAgICAg
ICBpZiAoc3RyaW5nU3RhcnQgIT0gY3VycmVudENvZGVQdHIoKSAmJiBzaG91bGRCdWlsZFN0cmlu
Z3MpCisgICAgICAgICAgICAgICAgYXBwZW5kOChzdHJpbmdTdGFydCwgY3VycmVudENvZGVQdHIo
KSAtIHN0cmluZ1N0YXJ0KTsKICAgICAgICAgICAgIHNoaWZ0KCk7CiAKICAgICAgICAgICAgIExD
aGFyIGVzY2FwZSA9IHNpbmdsZUVzY2FwZShtX2N1cnJlbnQpOwpAQCAtOTc3LDE3ICs5ODMsMTcg
QEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdzPiBBTFdBWQogICAgICAgICAgICAg
ICAgICAgICByZWNvcmQ4KGNvbnZlcnRIZXgocHJldiwgbV9jdXJyZW50KSk7CiAgICAgICAgICAg
ICAgICAgc2hpZnQoKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgc2V0
T2Zmc2V0KHN0YXJ0aW5nT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBzZXRPZmZzZXQoc3RhcnRp
bmdPZmZzZXQsIHN0YXJ0aW5nTGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgICAgICAgICBzZXRM
aW5lTnVtYmVyKHN0YXJ0aW5nTGluZU51bWJlcik7CiAgICAgICAgICAgICAgICAgbV9idWZmZXI4
LnJlc2l6ZSgwKTsKICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VTdHJpbmdTbG93Q2FzZTxz
aG91bGRCdWlsZFN0cmluZ3M+KHRva2VuRGF0YSwgc3RyaWN0TW9kZSk7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBzdHJpbmdTdGFydCA9IGN1cnJlbnRDaGFyYWN0ZXIoKTsKKyAgICAgICAg
ICAgIHN0cmluZ1N0YXJ0ID0gY3VycmVudENvZGVQdHIoKTsKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFVOTElLRUxZKGNoYXJhY3RlclJlcXVpcmVzUGFy
c2VTdHJpbmdTbG93Q2FzZShtX2N1cnJlbnQpKSkgewotICAgICAgICAgICAgc2V0T2Zmc2V0KHN0
YXJ0aW5nT2Zmc2V0KTsKKyAgICAgICAgICAgIHNldE9mZnNldChzdGFydGluZ09mZnNldCwgc3Rh
cnRpbmdMaW5lU3RhcnRPZmZzZXQpOwogICAgICAgICAgICAgc2V0TGluZU51bWJlcihzdGFydGlu
Z0xpbmVOdW1iZXIpOwogICAgICAgICAgICAgbV9idWZmZXI4LnJlc2l6ZSgwKTsKICAgICAgICAg
ICAgIHJldHVybiBwYXJzZVN0cmluZ1Nsb3dDYXNlPHNob3VsZEJ1aWxkU3RyaW5ncz4odG9rZW5E
YXRhLCBzdHJpY3RNb2RlKTsKQEAgLTk5Niw4ICsxMDAyLDggQEAgdGVtcGxhdGUgPGJvb2wgc2hv
dWxkQnVpbGRTdHJpbmdzPiBBTFdBWQogICAgICAgICBzaGlmdCgpOwogICAgIH0KIAotICAgIGlm
IChjdXJyZW50Q2hhcmFjdGVyKCkgIT0gc3RyaW5nU3RhcnQgJiYgc2hvdWxkQnVpbGRTdHJpbmdz
KQotICAgICAgICBhcHBlbmQ4KHN0cmluZ1N0YXJ0LCBjdXJyZW50Q2hhcmFjdGVyKCkgLSBzdHJp
bmdTdGFydCk7CisgICAgaWYgKGN1cnJlbnRDb2RlUHRyKCkgIT0gc3RyaW5nU3RhcnQgJiYgc2hv
dWxkQnVpbGRTdHJpbmdzKQorICAgICAgICBhcHBlbmQ4KHN0cmluZ1N0YXJ0LCBjdXJyZW50Q29k
ZVB0cigpIC0gc3RyaW5nU3RhcnQpOwogICAgIGlmIChzaG91bGRCdWlsZFN0cmluZ3MpIHsKICAg
ICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG1ha2VJZGVudGlmaWVyKG1fYnVmZmVyOC5kYXRhKCks
IG1fYnVmZmVyOC5zaXplKCkpOwogICAgICAgICBtX2J1ZmZlcjgucmVzaXplKDApOwpAQCAtMTAx
MywxMiArMTAxOSwxMiBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IHR5cGVu
CiAgICAgVCBzdHJpbmdRdW90ZUNoYXJhY3RlciA9IG1fY3VycmVudDsKICAgICBzaGlmdCgpOwog
Ci0gICAgY29uc3QgVCogc3RyaW5nU3RhcnQgPSBjdXJyZW50Q2hhcmFjdGVyKCk7CisgICAgY29u
c3QgVCogc3RyaW5nU3RhcnQgPSBjdXJyZW50Q29kZVB0cigpOwogCiAgICAgd2hpbGUgKG1fY3Vy
cmVudCAhPSBzdHJpbmdRdW90ZUNoYXJhY3RlcikgewogICAgICAgICBpZiAoVU5MSUtFTFkobV9j
dXJyZW50ID09ICdcXCcpKSB7Ci0gICAgICAgICAgICBpZiAoc3RyaW5nU3RhcnQgIT0gY3VycmVu
dENoYXJhY3RlcigpICYmIHNob3VsZEJ1aWxkU3RyaW5ncykKLSAgICAgICAgICAgICAgICBhcHBl
bmQxNihzdHJpbmdTdGFydCwgY3VycmVudENoYXJhY3RlcigpIC0gc3RyaW5nU3RhcnQpOworICAg
ICAgICAgICAgaWYgKHN0cmluZ1N0YXJ0ICE9IGN1cnJlbnRDb2RlUHRyKCkgJiYgc2hvdWxkQnVp
bGRTdHJpbmdzKQorICAgICAgICAgICAgICAgIGFwcGVuZDE2KHN0cmluZ1N0YXJ0LCBjdXJyZW50
Q29kZVB0cigpIC0gc3RyaW5nU3RhcnQpOwogICAgICAgICAgICAgc2hpZnQoKTsKIAogICAgICAg
ICAgICAgTENoYXIgZXNjYXBlID0gc2luZ2xlRXNjYXBlKG1fY3VycmVudCk7CkBAIC0xMDkzLDcg
KzEwOTksNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IHR5cGVuCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIFN0cmluZ1VudGVybWluYXRlZDsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgc3RyaW5nU3RhcnQgPSBjdXJyZW50Q2hhcmFjdGVyKCk7CisgICAgICAgICAg
ICBzdHJpbmdTdGFydCA9IGN1cnJlbnRDb2RlUHRyKCk7CiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQogICAgICAgICAvLyBGYXN0IGNoZWNrIGZvciBjaGFyYWN0ZXJzIHRoYXQgcmVx
dWlyZSBzcGVjaWFsIGhhbmRsaW5nLgpAQCAtMTExMCw4ICsxMTE2LDggQEAgdGVtcGxhdGUgPGJv
b2wgc2hvdWxkQnVpbGRTdHJpbmdzPiB0eXBlbgogICAgICAgICBzaGlmdCgpOwogICAgIH0KIAot
ICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyKCkgIT0gc3RyaW5nU3RhcnQgJiYgc2hvdWxkQnVpbGRT
dHJpbmdzKQotICAgICAgICBhcHBlbmQxNihzdHJpbmdTdGFydCwgY3VycmVudENoYXJhY3Rlcigp
IC0gc3RyaW5nU3RhcnQpOworICAgIGlmIChjdXJyZW50Q29kZVB0cigpICE9IHN0cmluZ1N0YXJ0
ICYmIHNob3VsZEJ1aWxkU3RyaW5ncykKKyAgICAgICAgYXBwZW5kMTYoc3RyaW5nU3RhcnQsIGN1
cnJlbnRDb2RlUHRyKCkgLSBzdHJpbmdTdGFydCk7CiAgICAgaWYgKHNob3VsZEJ1aWxkU3RyaW5n
cykKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG1ha2VJZGVudGlmaWVyKG1fYnVmZmVyMTYu
ZGF0YSgpLCBtX2J1ZmZlcjE2LnNpemUoKSk7CiAgICAgZWxzZQpAQCAtMTMxNyw3ICsxMzIzLDgg
QEAgc3RhcnQ6CiAgICAgICAgIHJldHVybiBFT0ZUT0s7CiAgICAgCiAgICAgdG9rZW5Mb2NhdGlv
bi0+c3RhcnRPZmZzZXQgPSBjdXJyZW50T2Zmc2V0KCk7Ci0gICAgdG9rZW5Mb2NhdGlvbi0+Y2hh
clBvc2l0aW9uID0gY3VycmVudENoYXJQb3NpdGlvbigpOworICAgIHRva2VuTG9jYXRpb24tPnNv
dXJjZU9mZnNldCA9IG1fc291cmNlT2Zmc2V0OworICAgIEFTU0VSVChjdXJyZW50T2Zmc2V0KCkg
Pj0gY3VycmVudExpbmVTdGFydE9mZnNldCgpKTsKIAogICAgIENoYXJhY3RlclR5cGUgdHlwZTsK
ICAgICBpZiAoTElLRUxZKGlzTGF0aW4xKG1fY3VycmVudCkpKQpAQCAtMTU1NSwxMiArMTU2Miwx
OCBAQCBzdGFydDoKICAgICAgICAgdG9rZW4gPSBTRU1JQ09MT047CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQ2hhcmFjdGVyT3BlbkJyYWNlOgotICAgICAgICB0b2tlbkRhdGEtPmludFZhbHVl
ID0gY3VycmVudE9mZnNldCgpOworICAgICAgICB0b2tlbkRhdGEtPmxpbmUgPSBsaW5lTnVtYmVy
KCk7CisgICAgICAgIHRva2VuRGF0YS0+b2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOworICAgICAg
ICB0b2tlbkRhdGEtPmxpbmVTdGFydE9mZnNldCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsK
KyAgICAgICAgQVNTRVJUKHRva2VuRGF0YS0+b2Zmc2V0ID49IHRva2VuRGF0YS0+bGluZVN0YXJ0
T2Zmc2V0KTsKICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgdG9rZW4gPSBPUEVOQlJBQ0U7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ2hhcmFjdGVyQ2xvc2VCcmFjZToKLSAgICAgICAgdG9r
ZW5EYXRhLT5pbnRWYWx1ZSA9IGN1cnJlbnRPZmZzZXQoKTsKKyAgICAgICAgdG9rZW5EYXRhLT5s
aW5lID0gbGluZU51bWJlcigpOworICAgICAgICB0b2tlbkRhdGEtPm9mZnNldCA9IGN1cnJlbnRP
ZmZzZXQoKTsKKyAgICAgICAgdG9rZW5EYXRhLT5saW5lU3RhcnRPZmZzZXQgPSBjdXJyZW50TGlu
ZVN0YXJ0T2Zmc2V0KCk7CisgICAgICAgIEFTU0VSVCh0b2tlbkRhdGEtPm9mZnNldCA+PSB0b2tl
bkRhdGEtPmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIHRva2Vu
ID0gQ0xPU0VCUkFDRTsKICAgICAgICAgYnJlYWs7CkBAIC0xNjUwLDYgKzE2NjMsNyBAQCBpbk51
bWJlckFmdGVyRGVjaW1hbFBvaW50OgogICAgICAgICBzaGlmdExpbmVUZXJtaW5hdG9yKCk7CiAg
ICAgICAgIG1fYXRMaW5lU3RhcnQgPSB0cnVlOwogICAgICAgICBtX3Rlcm1pbmF0b3IgPSB0cnVl
OworICAgICAgICBtX2xpbmVTdGFydCA9IG1fY29kZTsKICAgICAgICAgZ290byBzdGFydDsKICAg
ICBjYXNlIENoYXJhY3RlckludmFsaWQ6CiAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gaW52
YWxpZENoYXJhY3Rlck1lc3NhZ2UoKTsKQEAgLTE2NzQsNiArMTY4OCw3IEBAIGluU2luZ2xlTGlu
ZUNvbW1lbnQ6CiAgICAgc2hpZnRMaW5lVGVybWluYXRvcigpOwogICAgIG1fYXRMaW5lU3RhcnQg
PSB0cnVlOwogICAgIG1fdGVybWluYXRvciA9IHRydWU7CisgICAgbV9saW5lU3RhcnQgPSBtX2Nv
ZGU7CiAgICAgaWYgKCFsYXN0VG9rZW5XYXNSZXN0cktleXdvcmQoKSkKICAgICAgICAgZ290byBz
dGFydDsKIApAQCAtMTY4Myw2ICsxNjk4LDggQEAgaW5TaW5nbGVMaW5lQ29tbWVudDoKIHJldHVy
blRva2VuOgogICAgIHRva2VuTG9jYXRpb24tPmxpbmUgPSBtX2xpbmVOdW1iZXI7CiAgICAgdG9r
ZW5Mb2NhdGlvbi0+ZW5kT2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOworICAgIHRva2VuTG9jYXRp
b24tPmxpbmVTdGFydE9mZnNldCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKKyAgICBBU1NF
UlQodG9rZW5Mb2NhdGlvbi0+ZW5kT2Zmc2V0ID49IHRva2VuTG9jYXRpb24tPmxpbmVTdGFydE9m
ZnNldCk7CiAgICAgbV9sYXN0VG9rZW4gPSB0b2tlbjsKICAgICByZXR1cm4gdG9rZW47CiAKQEAg
LTE2OTAsNiArMTcwNyw4IEBAIHJldHVybkVycm9yOgogICAgIG1fZXJyb3IgPSB0cnVlOwogICAg
IHRva2VuTG9jYXRpb24tPmxpbmUgPSBtX2xpbmVOdW1iZXI7CiAgICAgdG9rZW5Mb2NhdGlvbi0+
ZW5kT2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOworICAgIHRva2VuTG9jYXRpb24tPmxpbmVTdGFy
dE9mZnNldCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKKyAgICBBU1NFUlQodG9rZW5Mb2Nh
dGlvbi0+ZW5kT2Zmc2V0ID49IHRva2VuTG9jYXRpb24tPmxpbmVTdGFydE9mZnNldCk7CiAgICAg
UkVMRUFTRV9BU1NFUlQodG9rZW4gJiBFcnJvclRva2VuRmxhZyk7CiAgICAgcmV0dXJuIHRva2Vu
OwogfQpAQCAtMTgyOSwxMSArMTg0OCwxMSBAQCB2b2lkIExleGVyPFQ+OjpjbGVhcigpCiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotU291cmNlQ29kZSBMZXhlcjxUPjo6c291cmNlQ29kZShp
bnQgb3BlbkJyYWNlLCBpbnQgY2xvc2VCcmFjZSwgaW50IGZpcnN0TGluZSkKK1NvdXJjZUNvZGUg
TGV4ZXI8VD46OnNvdXJjZUNvZGUoaW50IG9wZW5CcmFjZSwgaW50IGNsb3NlQnJhY2UsIGludCBm
aXJzdExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uKQogewogICAgIEFTU0VSVChtX3NvdXJjZS0+
cHJvdmlkZXIoKS0+c291cmNlKClbb3BlbkJyYWNlXSA9PSAneycpOwogICAgIEFTU0VSVChtX3Nv
dXJjZS0+cHJvdmlkZXIoKS0+c291cmNlKClbY2xvc2VCcmFjZV0gPT0gJ30nKTsKLSAgICByZXR1
cm4gU291cmNlQ29kZShtX3NvdXJjZS0+cHJvdmlkZXIoKSwgb3BlbkJyYWNlLCBjbG9zZUJyYWNl
ICsgMSwgZmlyc3RMaW5lKTsKKyAgICByZXR1cm4gU291cmNlQ29kZShtX3NvdXJjZS0+cHJvdmlk
ZXIoKSwgb3BlbkJyYWNlLCBjbG9zZUJyYWNlICsgMSwgZmlyc3RMaW5lLCBzdGFydENvbHVtbik7
CiB9CiAKIC8vIEluc3RhbnRpYXRlIHRoZSB0d28gZmxhdm9ycyBvZiBMZXhlciB3ZSBuZWVkIGlu
c3RlYWQgb2YgcHV0dGluZyBtb3N0IG9mIHRoaXMgZmlsZSBpbiBMZXhlci5oCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCShyZXZpc2lvbiAxNTE5MjApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDExICs4
OSwxMiBAQCBwdWJsaWM6CiAgICAgSlNUb2tlblR5cGUgbGV4KEpTVG9rZW5EYXRhKiwgSlNUb2tl
bkxvY2F0aW9uKiwgdW5zaWduZWQsIGJvb2wgc3RyaWN0TW9kZSk7CiAgICAgYm9vbCBuZXh0VG9r
ZW5Jc0NvbG9uKCk7CiAgICAgaW50IGxpbmVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2xpbmVO
dW1iZXI7IH0KLSAgICBpbnQgY3VycmVudENoYXJQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29kZSAtIG1fY29kZVN0YXJ0UGx1c09mZnNldDsgfQorICAgIEFMV0FZU19JTkxJTkUgaW50IGN1
cnJlbnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBvZmZzZXRGcm9tQ29kZVB0cihtX2NvZGUpOyB9
CisgICAgQUxXQVlTX0lOTElORSBpbnQgY3VycmVudExpbmVTdGFydE9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG9mZnNldEZyb21Db2RlUHRyKG1fbGluZVN0YXJ0KTsgfQogICAgIHZvaWQgc2V0TGFz
dExpbmVOdW1iZXIoaW50IGxhc3RMaW5lTnVtYmVyKSB7IG1fbGFzdExpbmVOdW1iZXIgPSBsYXN0
TGluZU51bWJlcjsgfQogICAgIGludCBsYXN0TGluZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1f
bGFzdExpbmVOdW1iZXI7IH0KICAgICBib29sIHByZXZUZXJtaW5hdG9yKCkgY29uc3QgeyByZXR1
cm4gbV90ZXJtaW5hdG9yOyB9Ci0gICAgU291cmNlQ29kZSBzb3VyY2VDb2RlKGludCBvcGVuQnJh
Y2UsIGludCBjbG9zZUJyYWNlLCBpbnQgZmlyc3RMaW5lKTsKKyAgICBTb3VyY2VDb2RlIHNvdXJj
ZUNvZGUoaW50IG9wZW5CcmFjZSwgaW50IGNsb3NlQnJhY2UsIGludCBmaXJzdExpbmUsIHVuc2ln
bmVkIHN0YXJ0Q29sdW1uKTsKICAgICBib29sIHNjYW5SZWdFeHAoY29uc3QgSWRlbnRpZmllciom
IHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXIqJiBmbGFncywgVUNoYXIgcGF0dGVyblByZWZpeCA9
IDApOwogICAgIGJvb2wgc2tpcFJlZ0V4cCgpOwogCkBAIC0xMDEsMTEgKzEwMiwxNSBAQCBwdWJs
aWM6CiAgICAgYm9vbCBzYXdFcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0KICAgICBT
dHJpbmcgZ2V0RXJyb3JNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9sZXhFcnJvck1lc3NhZ2U7
IH0KICAgICB2b2lkIGNsZWFyKCk7Ci0gICAgdm9pZCBzZXRPZmZzZXQoaW50IG9mZnNldCkKKyAg
ICB2b2lkIHNldE9mZnNldChpbnQgb2Zmc2V0LCBpbnQgbGluZVN0YXJ0T2Zmc2V0KQogICAgIHsK
ICAgICAgICAgbV9lcnJvciA9IDA7CiAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gU3RyaW5n
KCk7Ci0gICAgICAgIG1fY29kZSA9IG1fY29kZVN0YXJ0ICsgb2Zmc2V0OworCisgICAgICAgIG1f
Y29kZSA9IGNvZGVQdHJGcm9tT2Zmc2V0KG9mZnNldCk7CisgICAgICAgIG1fbGluZVN0YXJ0ID0g
Y29kZVB0ckZyb21PZmZzZXQobGluZVN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKGN1cnJl
bnRPZmZzZXQoKSA+PSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCkpOworCiAgICAgICAgIG1fYnVm
ZmVyOC5yZXNpemUoMCk7CiAgICAgICAgIG1fYnVmZmVyMTYucmVzaXplKDApOwogICAgICAgICBp
ZiAoTElLRUxZKG1fY29kZSA8IG1fY29kZUVuZCkpCkBAIC0xNjUsMTAgKzE3MCwxMiBAQCBwcml2
YXRlOgogICAgIFVuaWNvZGVIZXhWYWx1ZSBwYXJzZUZvdXJEaWdpdFVuaWNvZGVIZXgoKTsKICAg
ICB2b2lkIHNoaWZ0TGluZVRlcm1pbmF0b3IoKTsKIAorICAgIEFMV0FZU19JTkxJTkUgaW50IG9m
ZnNldEZyb21Db2RlUHRyKGNvbnN0IFQqIHB0cikgY29uc3QgeyByZXR1cm4gcHRyIC0gbV9jb2Rl
U3RhcnQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IFQqIGNvZGVQdHJGcm9tT2Zmc2V0KGlu
dCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVN0YXJ0ICsgb2Zmc2V0OyB9CisKICAgICBT
dHJpbmcgaW52YWxpZENoYXJhY3Rlck1lc3NhZ2UoKSBjb25zdDsKLSAgICBBTFdBWVNfSU5MSU5F
IGNvbnN0IFQqIGN1cnJlbnRDaGFyYWN0ZXIoKSBjb25zdDsKLSAgICBBTFdBWVNfSU5MSU5FIGlu
dCBjdXJyZW50T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlIC0gbV9jb2RlU3RhcnQ7IH0K
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0T2Zmc2V0RnJvbUNoYXJPZmZzZXQoY29uc3QgVCog
Y2hhck9mZnNldCkgeyBzZXRPZmZzZXQoY2hhck9mZnNldCAtIG1fY29kZVN0YXJ0KTsgfQorICAg
IEFMV0FZU19JTkxJTkUgY29uc3QgVCogY3VycmVudENvZGVQdHIoKSBjb25zdDsKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0T2Zmc2V0RnJvbUNvZGVQdHIoY29uc3QgVCogY29kZVB0ciwgdW5z
aWduZWQgbGluZVN0YXJ0T2Zmc2V0KSB7IHNldE9mZnNldChvZmZzZXRGcm9tQ29kZVB0cihjb2Rl
UHRyKSwgbGluZVN0YXJ0T2Zmc2V0KTsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldENv
ZGVTdGFydChjb25zdCBTdHJpbmdJbXBsKik7CiAKQEAgLTIxMCwxMCArMjE3LDEyIEBAIHByaXZh
dGU6CiAgICAgaW50IG1fbGFzdFRva2VuOwogCiAgICAgY29uc3QgU291cmNlQ29kZSogbV9zb3Vy
Y2U7CisgICAgdW5zaWduZWQgbV9zb3VyY2VPZmZzZXQ7CiAgICAgY29uc3QgVCogbV9jb2RlOwog
ICAgIGNvbnN0IFQqIG1fY29kZVN0YXJ0OwogICAgIGNvbnN0IFQqIG1fY29kZUVuZDsKICAgICBj
b25zdCBUKiBtX2NvZGVTdGFydFBsdXNPZmZzZXQ7CisgICAgY29uc3QgVCogbV9saW5lU3RhcnQ7
CiAgICAgYm9vbCBtX2lzUmVwYXJzaW5nOwogICAgIGJvb2wgbV9hdExpbmVTdGFydDsKICAgICBi
b29sIG1fZXJyb3I7CkBAIC0zNTAsNiArMzU5LDcgQEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlw
ZSBMZXhlcjxUPjo6bGV4RQogICAgICAgICBtX2N1cnJlbnQgPSAwOwogCiAgICAgbV9jb2RlID0g
cHRyOworICAgIEFTU0VSVChjdXJyZW50T2Zmc2V0KCkgPj0gY3VycmVudExpbmVTdGFydE9mZnNl
dCgpKTsKIAogICAgIC8vIENyZWF0ZSB0aGUgaWRlbnRpZmllciBpZiBuZWVkZWQKICAgICBpZiAo
bGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcykKQEAgLTM1Nyw5ICszNjcs
MTEgQEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RQogICAgIGVsc2UK
ICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG1ha2VMQ2hhcklkZW50aWZpZXIoc3RhcnQsIHB0
ciAtIHN0YXJ0KTsKICAgICB0b2tlbkxvY2F0aW9uLT5saW5lID0gbV9saW5lTnVtYmVyOwotICAg
IHRva2VuTG9jYXRpb24tPnN0YXJ0T2Zmc2V0ID0gc3RhcnQgLSBtX2NvZGVTdGFydDsKKyAgICB0
b2tlbkxvY2F0aW9uLT5saW5lU3RhcnRPZmZzZXQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7
CisgICAgdG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQgPSBvZmZzZXRGcm9tQ29kZVB0cihzdGFy
dCk7CiAgICAgdG9rZW5Mb2NhdGlvbi0+ZW5kT2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOwotICAg
IHRva2VuTG9jYXRpb24tPmNoYXJQb3NpdGlvbiA9IGN1cnJlbnRDaGFyUG9zaXRpb24oKTsKKyAg
ICB0b2tlbkxvY2F0aW9uLT5zb3VyY2VPZmZzZXQgPSBtX3NvdXJjZU9mZnNldDsKKyAgICBBU1NF
UlQodG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQgPj0gdG9rZW5Mb2NhdGlvbi0+bGluZVN0YXJ0
T2Zmc2V0KTsKICAgICBtX2xhc3RUb2tlbiA9IElERU5UOwogICAgIHJldHVybiBJREVOVDsKICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVj
dG9ycy5oCShyZXZpc2lvbiAxNTE5MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVDb25zdHJ1Y3RvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsOCArNDQsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBpbmxpbmUgTm9kZTo6Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uKQogICAgICAgICA6IG1fbGluZU51bWJlcihsb2NhdGlvbi5saW5lKQotICAg
ICAgICAsIG1fY2hhclBvc2l0aW9uKGxvY2F0aW9uLmNoYXJQb3NpdGlvbikKKyAgICAgICAgLCBt
X3N0YXJ0T2Zmc2V0KGxvY2F0aW9uLnN0YXJ0T2Zmc2V0KQorICAgICAgICAsIG1fbGluZVN0YXJ0
T2Zmc2V0KGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCkKICAgICB7CisgICAgICAgIEFTU0VSVChs
b2NhdGlvbi5zdGFydE9mZnNldCA+PSBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgIH0K
IAogICAgIGlubGluZSBFeHByZXNzaW9uTm9kZTo6RXhwcmVzc2lvbk5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgUmVzdWx0VHlwZSByZXN1bHRUeXBlKQpAQCAtMTAwLDExICsx
MDIsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBSZXNv
bHZlTm9kZTo6UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIGludCBzdGFydE9mZnNldCkKK2lubGluZSBSZXNvbHZlTm9k
ZTo6UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBkaXZvdExpbmUs
IHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0
aW9uKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9zdGFydE9mZnNldChz
dGFydE9mZnNldCkKKyAgICAgICAgLCBtX2Rpdm90TGluZShkaXZvdExpbmUpCisgICAgICAgICwg
bV9kaXZvdExpbmVTdGFydChkaXZvdExpbmVTdGFydCkKICAgICB7CisgICAgICAgIEFTU0VSVCht
X3N0YXJ0T2Zmc2V0ID49IG1fZGl2b3RMaW5lU3RhcnQpOwogICAgIH0KIAogICAgIGlubGluZSBF
bGVtZW50Tm9kZTo6RWxlbWVudE5vZGUoaW50IGVsaXNpb24sIEV4cHJlc3Npb25Ob2RlKiBub2Rl
KQpAQCAtMjQxLDgwICsyNDYsODEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBFdmFsRnVuY3Rpb25DYWxsTm9kZTo6RXZhbEZ1bmN0aW9uQ2FsbE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAg
aW5saW5lIEV2YWxGdW5jdGlvbkNhbGxOb2RlOjpFdmFsRnVuY3Rpb25DYWxsTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQg
ZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsb2NhdGlvbikKLSAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwg
c3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFy
dCkKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICB7CisgICAgICAgIEFTU0VSVChkaXZvdCA+
PSBkaXZvdExpbmVTdGFydCk7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmN0aW9uQ2FsbFZhbHVl
Tm9kZTo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICBpbmxp
bmUgRnVuY3Rpb25DYWxsVmFsdWVOb2RlOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50c05v
ZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQog
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQotICAgICAgICAsIFRocm93YWJsZUV4
cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgICAgICAsIFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBkaXZv
dExpbmUsIGRpdm90TGluZVN0YXJ0KQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgICAgICAs
IG1fYXJncyhhcmdzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRnVuY3Rpb25DYWxsUmVz
b2x2ZU5vZGU6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkK
KyAgICBpbmxpbmUgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OkZ1bmN0aW9uQ2FsbFJlc29sdmVO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBk
aXZvdExpbmVTdGFydCkKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKLSAgICAg
ICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dCkKKyAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQs
IGVuZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgLCBtX2lkZW50
KGlkZW50KQogICAgICAgICAsIG1fYXJncyhhcmdzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxp
bmUgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNz
aW9uTm9kZSogc3Vic2NyaXB0LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICBpbmxpbmUgRnVu
Y3Rpb25DYWxsQnJhY2tldE5vZGU6OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9k
ZSogc3Vic2NyaXB0LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1
bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlv
bikKLSAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZz
ZXQsIGVuZE9mZnNldCkKKyAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZv
dCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCkKICAg
ICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQpCiAg
ICAgICAgICwgbV9hcmdzKGFyZ3MpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGdW5jdGlv
bkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
QXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgaW5saW5lIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkZ1
bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBh
cmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKLSAgICAgICAgLCBUaHJvd2FibGVTdWJFeHBy
ZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICAgICAgLCBUaHJv
d2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZGl2
b3RMaW5lLCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAg
LCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1fYXJncyhhcmdzKQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3RO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAg
IDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRpdm90
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgIGlubGluZSBDYWxsRnVuY3Rpb25DYWxsRG90
Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1
bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVT
dGFydCkKKyAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVu
dCwgYXJncywgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGRpdm90TGluZSwgZGl2b3RM
aW5lU3RhcnQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBcHBseUZ1bmN0aW9uQ2FsbERv
dE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFy
Z3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRp
b24sIGJhc2UsIGlkZW50LCBhcmdzLCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAg
ICBpbmxpbmUgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQg
ZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKKyAgICAgICAgOiBGdW5jdGlvbkNh
bGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIHN0YXJ0T2Zmc2V0
LCBlbmRPZmZzZXQsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpCiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBQb3N0Zml4Tm9kZTo6UG9zdGZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAg
ICA6IFByZWZpeE5vZGUobG9jYXRpb24sIGV4cHIsIG9wZXIsIGRpdm90LCBzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0KQorICAgIGlubGluZSBQb3N0Zml4Tm9kZTo6UG9zdGZpeE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9w
ZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQorICAgICAg
ICA6IFByZWZpeE5vZGUobG9jYXRpb24sIGV4cHIsIG9wZXIsIGRpdm90LCBzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgRGVsZXRlUmVzb2x2ZU5vZGU6OkRlbGV0ZVJlc29sdmVOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICBpbmxp
bmUgRGVsZXRlUmVzb2x2ZU5vZGU6OkRlbGV0ZVJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RM
aW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
b2NhdGlvbikKLSAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRP
ZmZzZXQsIGVuZE9mZnNldCkKKyAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZv
dCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCkKICAg
ICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRGVsZXRl
QnJhY2tldE5vZGU6OkRlbGV0ZUJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkK
KyAgICBpbmxpbmUgRGVsZXRlQnJhY2tldE5vZGU6OkRlbGV0ZUJyYWNrZXROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9u
Tm9kZSogc3Vic2NyaXB0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVT
dGFydCkKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKLSAgICAgICAgLCBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICAg
ICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAg
ICAgICAgLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQpCiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBEZWxldGVEb3ROb2RlOjpEZWxldGVEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisg
ICAgaW5saW5lIERlbGV0ZURvdE5vZGU6OkRlbGV0ZURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKLSAgICAgICAgLCBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICAgICAgLCBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZGl2b3RMaW5l
LCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lk
ZW50KGlkZW50KQogICAgIHsKQEAgLTM0NCw5ICszNTAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIFByZWZpeE5vZGU6OlByZWZpeE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9w
ZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KQorICAgIGlubGluZSBQcmVmaXhOb2RlOjpQcmVmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvciBvcGVyLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5z
aWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsb2NhdGlvbikKLSAgICAgICAgLCBUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJl
c3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgICAgICAsIFRocm93
YWJsZVByZWZpeGVkU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZz
ZXQsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAg
ICAgICAgICwgbV9vcGVyYXRvcihvcGVyKQogICAgIHsKQEAgLTUzMCwxNCArNTM2LDE2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVhZE1vZGlmeVJlc29s
dmVOb2RlOjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25O
b2RlKiAgcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgaW5saW5lIFJlYWRN
b2RpZnlSZXNvbHZlTm9kZTo6UmVhZE1vZGlmeVJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBF
eHByZXNzaW9uTm9kZSogIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCB1bnNpZ25l
ZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogICAgICAgICA6IEV4cHJlc3Np
b25Ob2RlKGxvY2F0aW9uKQotICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBkaXZvdExpbmUsIGRpdm90TGluZVN0
YXJ0KQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9yaWdodChyaWdodCkK
ICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCiAgICAgICAgICwgbV9yaWdodEhhc0Fzc2lnbm1l
bnRzKHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgeworICAgICAgICBBU1NFUlQoZGl2b3QgPj0g
ZGl2b3RMaW5lU3RhcnQpOworICAgICAgICBBU1NFUlQoZGl2b3QgLSBzdGFydE9mZnNldCA+PSBk
aXZvdExpbmVTdGFydCk7CiAgICAgfQogCiAgICAgaW5saW5lIEFzc2lnblJlc29sdmVOb2RlOjpB
c3NpZ25SZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0KQpAQCAtNTQ3LDkgKzU1NSw5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVhZE1vZGlm
eUJyYWNrZXROb2RlOjpSZWFkTW9kaWZ5QnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3Jp
cHQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRI
YXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICBpbmxpbmUgUmVh
ZE1vZGlmeUJyYWNrZXROb2RlOjpSZWFkTW9kaWZ5QnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBz
dWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJz
Y3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQg
ZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsb2NhdGlvbikKLSAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZv
dCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNz
aW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdExp
bmVTdGFydCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChz
dWJzY3JpcHQpCiAgICAgICAgICwgbV9yaWdodChyaWdodCkKQEAgLTU1OSw5ICs1NjcsOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFzc2lnbkJyYWNrZXRO
b2RlOjpBc3NpZ25CcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgRXhwcmVzc2lv
bk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KQorICAgIGlubGluZSBBc3NpZ25CcmFja2V0Tm9kZTo6QXNzaWduQnJhY2tl
dE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9v
bCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5z
aWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsb2NhdGlvbikKLSAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShk
aXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICAgICAgLCBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdExp
bmVTdGFydCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChz
dWJzY3JpcHQpCiAgICAgICAgICwgbV9yaWdodChyaWdodCkKQEAgLTU3MCw5ICs1NzgsOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFzc2lnbkRvdE5vZGU6
OkFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmln
aHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgaW5saW5lIEFzc2lnbkRvdE5vZGU6
OkFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmln
aHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWdu
ZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCi0g
ICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpCisgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zm
c2V0LCBlbmRPZmZzZXQsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgICwgbV9i
YXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX3JpZ2h0KHJp
Z2h0KQpAQCAtNTgwLDkgKzU4OCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgUmVhZE1vZGlmeURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgIGlubGluZSBSZWFkTW9kaWZ5RG90Tm9kZTo6UmVh
ZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBFeHBy
ZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRp
dm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobG9jYXRpb24pCi0gICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3Qs
IHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCisgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lv
bkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGRpdm90TGluZSwgZGl2b3RMaW5l
U3RhcnQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkK
ICAgICAgICAgLCBtX3JpZ2h0KHJpZ2h0KQpAQCAtNTkxLDkgKzU5OSw5IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXNzaWduRXJyb3JOb2RlOjpBc3NpZ25F
cnJvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgaW5saW5lIEFz
c2lnbkVycm9yTm9kZTo6QXNzaWduRXJyb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQotICAgICAgICAsIFRocm93YWJsZUV4cHJl
c3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgICAgICAsIFRocm93
YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBkaXZvdExp
bmUsIGRpdm90TGluZVN0YXJ0KQogICAgIHsKICAgICB9CiAKQEAgLTY5OCwxMSArNzA2LDEzIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgV2l0aE5vZGU6Oldp
dGhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBl
eHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIHVpbnQzMl90IGRpdm90LCB1aW50MzJfdCBl
eHByZXNzaW9uTGVuZ3RoKQorICAgIGlubGluZSBXaXRoTm9kZTo6V2l0aE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5v
ZGUqIHN0YXRlbWVudCwgdWludDMyX3QgZGl2b3QsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWdu
ZWQgZGl2b3RMaW5lU3RhcnQsIHVpbnQzMl90IGV4cHJlc3Npb25MZW5ndGgpCiAgICAgICAgIDog
U3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAg
LCBtX3N0YXRlbWVudChzdGF0ZW1lbnQpCiAgICAgICAgICwgbV9kaXZvdChkaXZvdCkKKyAgICAg
ICAgLCBtX2Rpdm90TGluZShkaXZvdExpbmUpCisgICAgICAgICwgbV9kaXZvdExpbmVTdGFydChk
aXZvdExpbmVTdGFydCkKICAgICAgICAgLCBtX2V4cHJlc3Npb25MZW5ndGgoZXhwcmVzc2lvbkxl
bmd0aCkKICAgICB7CiAgICAgfQpAQCAtODEyLDE2ICs4MjIsMTcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGb3JJbk5vZGU6OkZvckluTm9kZShWTSogdm0s
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBFeHByZXNzaW9uTm9kZSogaW4sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2Rl
KiBzdGF0ZW1lbnQsIGludCBkaXZvdCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KQor
ICAgIGlubGluZSBGb3JJbk5vZGU6OkZvckluTm9kZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSog
aW4sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIHVuc2ln
bmVkIGRpdm90LCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90
TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgIDogU3RhdGVtZW50Tm9kZShs
b2NhdGlvbikKICAgICAgICAgLCBtX2luaXQoMCkKLSAgICAgICAgLCBtX2xleHByKG5ldyAodm0p
IFJlc29sdmVOb2RlKGxvY2F0aW9uLCBpZGVudCwgZGl2b3QgLSBzdGFydE9mZnNldCkpCisgICAg
ICAgICwgbV9sZXhwcihuZXcgKHZtKSBSZXNvbHZlTm9kZShsb2NhdGlvbiwgaWRlbnQsIGRpdm90
IC0gc3RhcnRPZmZzZXQsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpKQogICAgICAgICAsIG1f
ZXhwcihleHByKQogICAgICAgICAsIG1fc3RhdGVtZW50KHN0YXRlbWVudCkKICAgICB7CiAgICAg
ICAgIGlmIChpbikgewogICAgICAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcg
KHZtKSBBc3NpZ25SZXNvbHZlTm9kZShsb2NhdGlvbiwgaWRlbnQsIGluKTsKLSAgICAgICAgICAg
IG5vZGUtPnNldEV4Y2VwdGlvblNvdXJjZUNvZGUoZGl2b3QsIGRpdm90IC0gc3RhcnRPZmZzZXQs
IGVuZE9mZnNldCAtIGRpdm90KTsKKyAgICAgICAgICAgIEFTU0VSVChkaXZvdCA+PSBkaXZvdExp
bmVTdGFydCk7CisgICAgICAgICAgICBub2RlLT5zZXRFeGNlcHRpb25Tb3VyY2VDb2RlKGRpdm90
LCBkaXZvdCAtIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQgLSBkaXZvdCwgZGl2b3RMaW5lLCBkaXZv
dExpbmVTdGFydCk7CiAgICAgICAgICAgICBtX2luaXQgPSBub2RlOwogICAgICAgICB9CiAgICAg
ICAgIC8vIGZvciggdmFyIGZvbyA9IGJhciBpbiBiYXogKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5jcHAJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxMSArNTIsMTMg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBT
dGF0ZW1lbnROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgU3Rh
dGVtZW50Tm9kZTo6c2V0TG9jKGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50IGNoYXJQ
b3NpdGlvbikKK3ZvaWQgU3RhdGVtZW50Tm9kZTo6c2V0TG9jKHVuc2lnbmVkIGZpcnN0TGluZSwg
dW5zaWduZWQgbGFzdExpbmUsIGludCBzdGFydE9mZnNldCwgaW50IGxpbmVTdGFydE9mZnNldCkK
IHsKICAgICBtX2xpbmVOdW1iZXIgPSBmaXJzdExpbmU7CiAgICAgbV9sYXN0TGluZSA9IGxhc3RM
aW5lOwotICAgIG1fY2hhclBvc2l0aW9uID0gY2hhclBvc2l0aW9uOworICAgIG1fc3RhcnRPZmZz
ZXQgPSBzdGFydE9mZnNldDsKKyAgICBtX2xpbmVTdGFydE9mZnNldCA9IGxpbmVTdGFydE9mZnNl
dDsKKyAgICBBU1NFUlQobV9zdGFydE9mZnNldCA+PSBtX2xpbmVTdGFydE9mZnNldCk7CiB9CiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTb3VyY2VFbGVtZW50cyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtODAsNyArODIsOCBAQCBTY29wZU5vZGU6OlNj
b3BlTm9kZShWTSogdm0sIGNvbnN0IEpTVG9rCiAgICAgOiBTdGF0ZW1lbnROb2RlKGVuZExvY2F0
aW9uKQogICAgICwgUGFyc2VyQXJlbmFSZWZDb3VudGVkKHZtKQogICAgICwgbV9zdGFydExpbmVO
dW1iZXIoc3RhcnRMb2NhdGlvbi5saW5lKQotICAgICwgbV9zdGFydENoYXJQb3NpdGlvbihzdGFy
dExvY2F0aW9uLmNoYXJQb3NpdGlvbikKKyAgICAsIG1fc3RhcnRTdGFydE9mZnNldChzdGFydExv
Y2F0aW9uLnN0YXJ0T2Zmc2V0KQorICAgICwgbV9zdGFydExpbmVTdGFydE9mZnNldChzdGFydExv
Y2F0aW9uLmxpbmVTdGFydE9mZnNldCkKICAgICAsIG1fZmVhdHVyZXMoaW5TdHJpY3RDb250ZXh0
ID8gU3RyaWN0TW9kZUZlYXR1cmUgOiBOb0ZlYXR1cmVzKQogICAgICwgbV9udW1Db25zdGFudHMo
MCkKICAgICAsIG1fc3RhdGVtZW50cygwKQpAQCAtOTEsNyArOTQsOCBAQCBTY29wZU5vZGU6OlNj
b3BlTm9kZShWTSogdm0sIGNvbnN0IEpTVG9rCiAgICAgOiBTdGF0ZW1lbnROb2RlKGVuZExvY2F0
aW9uKQogICAgICwgUGFyc2VyQXJlbmFSZWZDb3VudGVkKHZtKQogICAgICwgbV9zdGFydExpbmVO
dW1iZXIoc3RhcnRMb2NhdGlvbi5saW5lKQotICAgICwgbV9zdGFydENoYXJQb3NpdGlvbihzdGFy
dExvY2F0aW9uLmNoYXJQb3NpdGlvbikKKyAgICAsIG1fc3RhcnRTdGFydE9mZnNldChzdGFydExv
Y2F0aW9uLnN0YXJ0T2Zmc2V0KQorICAgICwgbV9zdGFydExpbmVTdGFydE9mZnNldChzdGFydExv
Y2F0aW9uLmxpbmVTdGFydE9mZnNldCkKICAgICAsIG1fZmVhdHVyZXMoZmVhdHVyZXMpCiAgICAg
LCBtX3NvdXJjZShzb3VyY2UpCiAgICAgLCBtX251bUNvbnN0YW50cyhudW1Db25zdGFudHMpCkBA
IC0xMTIsMTQgKzExNiwxNSBAQCBTdGF0ZW1lbnROb2RlKiBTY29wZU5vZGU6OnNpbmdsZVN0YXRl
bWVuCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm9ncmFtTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgUHJvZ3JhbU5vZGU6OlByb2dyYW1O
b2RlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZh
clN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0
JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVy
ZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCitpbmxpbmUgUHJvZ3JhbU5vZGU6OlByb2dy
YW1Ob2RlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgU291
cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sq
IGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQog
ICAgIDogU2NvcGVOb2RlKHZtLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc291cmNlLCBj
aGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVz
LCBudW1Db25zdGFudHMpCisgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogewogfQog
Ci1QYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBQcm9ncmFtTm9kZTo6Y3JlYXRlKFZNKiB2bSwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGVuZExvY2F0aW9uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFj
aywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlh
YmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGlu
dCBudW1Db25zdGFudHMpCitQYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBQcm9ncmFtTm9kZTo6Y3Jl
YXRlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgU291cmNl
RWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1
bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQogewot
ICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gbm9kZSA9IG5ldyBQcm9ncmFtTm9kZSh2bSwgc3RhcnRM
b2NhdGlvbiwgZW5kTG9jYXRpb24sIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCAgY2Fw
dHVyZWRWYXJpYWJsZXMsIHNvdXJjZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CisgICAgUmVm
UHRyPFByb2dyYW1Ob2RlPiBub2RlID0gbmV3IFByb2dyYW1Ob2RlKHZtLCBzdGFydExvY2F0aW9u
LCBlbmRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNr
LCAgY2FwdHVyZWRWYXJpYWJsZXMsIHNvdXJjZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CiAK
ICAgICBBU1NFUlQobm9kZS0+bV9hcmVuYS5sYXN0KCkgPT0gbm9kZSk7CiAgICAgbm9kZS0+bV9h
cmVuYS5yZW1vdmVMYXN0KCk7CkBAIC0xMzUsNyArMTQwLDcgQEAgaW5saW5lIEV2YWxOb2RlOjpF
dmFsTm9kZShWTSogdm0sIGNvbnN0IAogewogfQogCi1QYXNzUmVmUHRyPEV2YWxOb2RlPiBFdmFs
Tm9kZTo6Y3JlYXRlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9u
LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCBTb3VyY2VFbGVtZW50cyogY2hp
bGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVu
dGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBD
b2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCitQYXNzUmVmUHRyPEV2YWxO
b2RlPiBFdmFsTm9kZTo6Y3JlYXRlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFy
dExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCwg
U291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3Rh
Y2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRz
KQogewogICAgIFJlZlB0cjxFdmFsTm9kZT4gbm9kZSA9IG5ldyBFdmFsTm9kZSh2bSwgc3RhcnRM
b2NhdGlvbiwgZW5kTG9jYXRpb24sIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0
dXJlZFZhcmlhYmxlcywgc291cmNlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKIApAQCAtMTcz
LDEzICsxNzgsMTUgQEAgRnVuY3Rpb25QYXJhbWV0ZXJzOjp+RnVuY3Rpb25QYXJhbWV0ZXJzKAog
ICAgICAgICBpZGVudGlmaWVycygpW2ldLn5JZGVudGlmaWVyKCk7CiB9CiAKLWlubGluZSBGdW5j
dGlvbkJvZHlOb2RlOjpGdW5jdGlvbkJvZHlOb2RlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCBi
b29sIGluU3RyaWN0Q29udGV4dCkKK2lubGluZSBGdW5jdGlvbkJvZHlOb2RlOjpGdW5jdGlvbkJv
ZHlOb2RlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgYm9v
bCBpblN0cmljdENvbnRleHQpCiAgICAgOiBTY29wZU5vZGUodm0sIHN0YXJ0TG9jYXRpb24sIGVu
ZExvY2F0aW9uLCBpblN0cmljdENvbnRleHQpCisgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29s
dW1uKQogewogfQogCi1pbmxpbmUgRnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZShW
TSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFj
ayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2Fw
dHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJl
cyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKK2lubGluZSBGdW5jdGlvbkJvZHlOb2RlOjpG
dW5jdGlvbkJvZHlOb2RlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0
aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENv
bHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0
aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51
bUNvbnN0YW50cykKICAgICA6IFNjb3BlTm9kZSh2bSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRp
b24sIHNvdXJjZUNvZGUsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZh
cmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykKKyAgICAsIG1fc3RhcnRDb2x1bW4oc3Rh
cnRDb2x1bW4pCiB7CiB9CiAKQEAgLTE5NywxNCArMjA0LDE0IEBAIHZvaWQgRnVuY3Rpb25Cb2R5
Tm9kZTo6ZmluaXNoUGFyc2luZyhQYXMKICAgICBtX2Z1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2ds
ZSA9IGZ1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZTsKIH0KIAotRnVuY3Rpb25Cb2R5Tm9kZSog
RnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBz
dGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCBib29sIGlu
U3RyaWN0Q29udGV4dCkKK0Z1bmN0aW9uQm9keU5vZGUqIEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0
ZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIGJvb2wgaW5T
dHJpY3RDb250ZXh0KQogewotICAgIHJldHVybiBuZXcgRnVuY3Rpb25Cb2R5Tm9kZSh2bSwgc3Rh
cnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIGluU3RyaWN0Q29udGV4dCk7CisgICAgcmV0dXJuIG5l
dyBGdW5jdGlvbkJvZHlOb2RlKHZtLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc3RhcnRD
b2x1bW4sIGluU3RyaWN0Q29udGV4dCk7CiB9CiAKLVBhc3NSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9k
ZT4gRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCBTb3Vy
Y2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayog
ZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNl
Q29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRz
KQorUGFzc1JlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUo
Vk0qIHZtLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCBTb3VyY2VFbGVt
ZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0
YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQogewot
ICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBub2RlID0gbmV3IEZ1bmN0aW9uQm9keU5vZGUo
dm0sIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNT
dGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIHNvdXJjZUNvZGUsIGZlYXR1cmVzLCBudW1Db25zdGFu
dHMpOworICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBub2RlID0gbmV3IEZ1bmN0aW9uQm9k
eU5vZGUodm0sIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzdGFydENvbHVtbiwgY2hpbGRy
ZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBzb3VyY2VDb2RlLCBm
ZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKIAogICAgIEFTU0VSVChub2RlLT5tX2FyZW5hLmxhc3Qo
KSA9PSBub2RlKTsKICAgICBub2RlLT5tX2FyZW5hLnJlbW92ZUxhc3QoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDEyICsx
MzAsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgfk5vZGUoKSB7IH0KIAog
ICAgICAgICBpbnQgbGluZU5vKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9Ci0KLSAg
ICAgICAgaW50IGNoYXJQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hhclBvc2l0aW9uOyB9
CisgICAgICAgIGludCBzdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRPZmZzZXQ7
IH0KKyAgICAgICAgaW50IGxpbmVTdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZVN0
YXJ0T2Zmc2V0OyB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGludCBtX2xpbmVOdW1iZXI7
Ci0gICAgICAgIGludCBtX2NoYXJQb3NpdGlvbjsKKyAgICAgICAgaW50IG1fc3RhcnRPZmZzZXQ7
CisgICAgICAgIGludCBtX2xpbmVTdGFydE9mZnNldDsKICAgICB9OwogCiAgICAgY2xhc3MgRXhw
cmVzc2lvbk5vZGUgOiBwdWJsaWMgTm9kZSB7CkBAIC0xNzgsOSArMTc5LDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24gPSAwKSA9IDA7CiAKLSAg
ICAgICAgdm9pZCBzZXRMb2MoaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lLCBpbnQgY2hhclBv
c2l0aW9uKTsKLSAgICAgICAgaW50IGZpcnN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIGxpbmVObygp
OyB9Ci0gICAgICAgIGludCBsYXN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdExpbmU7IH0K
KyAgICAgICAgdm9pZCBzZXRMb2ModW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBsYXN0TGlu
ZSwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgbGluZVN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgdW5zaWdu
ZWQgZmlyc3RMaW5lKCkgY29uc3QgeyByZXR1cm4gbGluZU5vKCk7IH0KKyAgICAgICAgdW5zaWdu
ZWQgbGFzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RMaW5lOyB9CiAKICAgICAgICAgdmly
dHVhbCBib29sIGlzRW1wdHlTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNSZXR1cm5Ob2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
QEAgLTI1NCwzNiArMjU1LDQ4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAg
ICAgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoKQogICAgICAgICAgICAgOiBtX2Rpdm90KHN0YXRp
Y19jYXN0PHVpbnQzMl90PigtMSkpCi0gICAgICAgICAgICAsIG1fc3RhcnRPZmZzZXQoc3RhdGlj
X2Nhc3Q8dWludDE2X3Q+KC0xKSkKLSAgICAgICAgICAgICwgbV9lbmRPZmZzZXQoc3RhdGljX2Nh
c3Q8dWludDE2X3Q+KC0xKSkKKyAgICAgICAgICAgICwgbV9kaXZvdFN0YXJ0T2Zmc2V0KHN0YXRp
Y19jYXN0PHVpbnQxNl90PigtMSkpCisgICAgICAgICAgICAsIG1fZGl2b3RFbmRPZmZzZXQoc3Rh
dGljX2Nhc3Q8dWludDE2X3Q+KC0xKSkKKyAgICAgICAgICAgICwgbV9kaXZvdExpbmUoc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KC0xKSkKKyAgICAgICAgICAgICwgbV9kaXZvdExpbmVTdGFydChzdGF0
aWNfY2FzdDx1aW50MzJfdD4oLTEpKQogICAgICAgICB7CiAgICAgICAgIH0KICAgICAgICAgCi0g
ICAgICAgIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSh1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAg
ICAgICAgICAgIDogbV9kaXZvdChkaXZvdCkKLSAgICAgICAgICAgICwgbV9zdGFydE9mZnNldChz
dGFydE9mZnNldCkKLSAgICAgICAgICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zmc2V0KQorICAgICAg
ICAgICAgLCBtX2Rpdm90U3RhcnRPZmZzZXQoc3RhcnRPZmZzZXQpCisgICAgICAgICAgICAsIG1f
ZGl2b3RFbmRPZmZzZXQoZW5kT2Zmc2V0KQorICAgICAgICAgICAgLCBtX2Rpdm90TGluZShkaXZv
dExpbmUpCisgICAgICAgICAgICAsIG1fZGl2b3RMaW5lU3RhcnQoZGl2b3RMaW5lU3RhcnQpCiAg
ICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2Rpdm90ID49IG1fZGl2b3RMaW5lU3RhcnQp
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2b2lkIHNldEV4Y2VwdGlvblNvdXJjZUNv
ZGUodW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCisgICAgICAgIHZvaWQgc2V0RXhjZXB0aW9uU291cmNlQ29kZSh1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RM
aW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgeworICAgICAgICAgICAgQVNT
RVJUKGRpdm90ID49IGRpdm90TGluZVN0YXJ0KTsKICAgICAgICAgICAgIG1fZGl2b3QgPSBkaXZv
dDsKLSAgICAgICAgICAgIG1fc3RhcnRPZmZzZXQgPSBzdGFydE9mZnNldDsKLSAgICAgICAgICAg
IG1fZW5kT2Zmc2V0ID0gZW5kT2Zmc2V0OworICAgICAgICAgICAgbV9kaXZvdFN0YXJ0T2Zmc2V0
ID0gc3RhcnRPZmZzZXQ7CisgICAgICAgICAgICBtX2Rpdm90RW5kT2Zmc2V0ID0gZW5kT2Zmc2V0
OworICAgICAgICAgICAgbV9kaXZvdExpbmUgPSBkaXZvdExpbmU7CisgICAgICAgICAgICBtX2Rp
dm90TGluZVN0YXJ0ID0gZGl2b3RMaW5lU3RhcnQ7CiAgICAgICAgIH0KIAogICAgICAgICB1aW50
MzJfdCBkaXZvdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGl2b3Q7IH0KLSAgICAgICAgdWludDE2X3Qg
c3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0T2Zmc2V0OyB9Ci0gICAgICAgIHVp
bnQxNl90IGVuZE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kT2Zmc2V0OyB9CisgICAgICAg
IHVpbnQxNl90IGRpdm90U3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Rpdm90U3RhcnRP
ZmZzZXQ7IH0KKyAgICAgICAgdWludDE2X3QgZGl2b3RFbmRPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX2Rpdm90RW5kT2Zmc2V0OyB9CisgICAgICAgIHVpbnQzMl90IGRpdm90TGluZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGl2b3RMaW5lOyB9CisgICAgICAgIHVpbnQzMl90IGRpdm90TGluZVN0YXJ0
KCkgY29uc3QgeyByZXR1cm4gbV9kaXZvdExpbmVTdGFydDsgfQogCiAgICAgcHJvdGVjdGVkOgog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihCeXRlY29kZUdlbmVy
YXRvciYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB1
aW50MzJfdCBtX2Rpdm90OwotICAgICAgICB1aW50MTZfdCBtX3N0YXJ0T2Zmc2V0OwotICAgICAg
ICB1aW50MTZfdCBtX2VuZE9mZnNldDsKKyAgICAgICAgdWludDE2X3QgbV9kaXZvdFN0YXJ0T2Zm
c2V0OworICAgICAgICB1aW50MTZfdCBtX2Rpdm90RW5kT2Zmc2V0OworICAgICAgICB1aW50MzJf
dCBtX2Rpdm90TGluZTsKKyAgICAgICAgdWludDMyX3QgbV9kaXZvdExpbmVTdGFydDsKICAgICB9
OwogCiAgICAgY2xhc3MgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgOiBwdWJsaWMgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEgewpAQCAtMjkxLDI4ICszMDQsNDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKCkKICAgICAgICAgICAgIDogbV9z
dWJleHByZXNzaW9uRGl2b3RPZmZzZXQoMCkKICAgICAgICAgICAgICwgbV9zdWJleHByZXNzaW9u
RW5kT2Zmc2V0KDApCisgICAgICAgICAgICAsIG1fc3ViZXhwcmVzc2lvbkxpbmVPZmZzZXQoMCkK
KyAgICAgICAgICAgICwgbV9zdWJleHByZXNzaW9uTGluZVN0YXJ0T2Zmc2V0KDApCiAgICAgICAg
IHsKICAgICAgICAgfQogCi0gICAgICAgIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAg
ICAgICAgICAgOiBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldCkKKyAgICAgICAgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEodW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRp
dm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpCisgICAgICAgICAgICA6IFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBkaXZvdExpbmUs
IGRpdm90TGluZVN0YXJ0KQogICAgICAgICAgICAgLCBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNl
dCgwKQogICAgICAgICAgICAgLCBtX3N1YmV4cHJlc3Npb25FbmRPZmZzZXQoMCkKKyAgICAgICAg
ICAgICwgbV9zdWJleHByZXNzaW9uTGluZU9mZnNldCgwKQorICAgICAgICAgICAgLCBtX3N1YmV4
cHJlc3Npb25MaW5lU3RhcnRPZmZzZXQoMCkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgdm9pZCBzZXRTdWJleHByZXNzaW9uSW5mbyh1aW50MzJfdCBzdWJleHByZXNzaW9uRGl2b3Qs
IHVpbnQxNl90IHN1YmV4cHJlc3Npb25PZmZzZXQpCisgICAgICAgIHZvaWQgc2V0U3ViZXhwcmVz
c2lvbkluZm8odWludDMyX3Qgc3ViZXhwcmVzc2lvbkRpdm90LCB1aW50MTZfdCBzdWJleHByZXNz
aW9uT2Zmc2V0LCB1aW50MzJfdCBzdWJleHByZXNzaW9uTGluZSwgdWludDMyX3Qgc3ViZXhwcmVz
c2lvbkxpbmVTdGFydCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHN1YmV4cHJlc3Np
b25EaXZvdCA8PSBkaXZvdCgpKTsKLSAgICAgICAgICAgIGlmICgoZGl2b3QoKSAtIHN1YmV4cHJl
c3Npb25EaXZvdCkgJiB+MHhGRkZGKSAvLyBPdmVyZmxvdyBtZWFucyB3ZSBjYW4ndCBkbyB0aGlz
IHNhZmVseSwgc28ganVzdCBwb2ludCBhdCB0aGUgcHJpbWFyeSBkaXZvdAorICAgICAgICAgICAg
Ly8gT3ZlcmZsb3cgbWVhbnMgd2UgY2FuJ3QgZG8gdGhpcyBzYWZlbHksIHNvIGp1c3QgcG9pbnQg
YXQgdGhlIHByaW1hcnkgZGl2b3QsCisgICAgICAgICAgICAvLyBkaXZvdExpbmUsIG9yIGRpdm90
TGluZVN0YXJ0LgorICAgICAgICAgICAgaWYgKChkaXZvdCgpIC0gc3ViZXhwcmVzc2lvbkRpdm90
KSAmIH4weEZGRkYpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKChk
aXZvdExpbmUoKSAtIHN1YmV4cHJlc3Npb25MaW5lKSAmIH4weEZGRkYpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKChkaXZvdExpbmVTdGFydCgpIC0gc3ViZXhwcmVz
c2lvbkxpbmVTdGFydCkgJiB+MHhGRkZGKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0ID0gZGl2b3QoKSAtIHN1YmV4cHJlc3Np
b25EaXZvdDsKICAgICAgICAgICAgIG1fc3ViZXhwcmVzc2lvbkVuZE9mZnNldCA9IHN1YmV4cHJl
c3Npb25PZmZzZXQ7CisgICAgICAgICAgICBtX3N1YmV4cHJlc3Npb25MaW5lT2Zmc2V0ID0gZGl2
b3RMaW5lKCkgLSBzdWJleHByZXNzaW9uTGluZTsKKyAgICAgICAgICAgIG1fc3ViZXhwcmVzc2lv
bkxpbmVTdGFydE9mZnNldCA9IGRpdm90TGluZVN0YXJ0KCkgLSBzdWJleHByZXNzaW9uTGluZVN0
YXJ0OwogICAgICAgICB9CiAKKyAgICAgICAgdW5zaWduZWQgc3ViZXhwcmVzc2lvbkRpdm90KCkg
eyByZXR1cm4gZGl2b3QoKSAtIG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0OyB9CisgICAgICAg
IHVuc2lnbmVkIHN1YmV4cHJlc3Npb25TdGFydE9mZnNldCgpIHsgcmV0dXJuIGRpdm90U3RhcnRP
ZmZzZXQoKSAtIG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0OyB9CisgICAgICAgIHVuc2lnbmVk
IHN1YmV4cHJlc3Npb25FbmRPZmZzZXQoKSB7IHJldHVybiBtX3N1YmV4cHJlc3Npb25FbmRPZmZz
ZXQ7IH0KKyAgICAgICAgdW5zaWduZWQgc3ViZXhwcmVzc2lvbkxpbmUoKSB7IHJldHVybiBkaXZv
dExpbmUoKSAtIG1fc3ViZXhwcmVzc2lvbkxpbmVPZmZzZXQ7IH0KKyAgICAgICAgdW5zaWduZWQg
c3ViZXhwcmVzc2lvbkxpbmVTdGFydCgpIHsgcmV0dXJuIGRpdm90TGluZVN0YXJ0KCkgLSBtX3N1
YmV4cHJlc3Npb25MaW5lU3RhcnRPZmZzZXQ7IH0KKwogICAgIHByb3RlY3RlZDoKICAgICAgICAg
dWludDE2X3QgbV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQ7CiAgICAgICAgIHVpbnQxNl90IG1f
c3ViZXhwcmVzc2lvbkVuZE9mZnNldDsKKyAgICAgICAgdWludDE2X3QgbV9zdWJleHByZXNzaW9u
TGluZU9mZnNldDsKKyAgICAgICAgdWludDE2X3QgbV9zdWJleHByZXNzaW9uTGluZVN0YXJ0T2Zm
c2V0OwogICAgIH07CiAgICAgCiAgICAgY2xhc3MgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNz
aW9uRGF0YSA6IHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CkBAIC0zMjAsMjggKzM1
Myw0OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHBy
ZXNzaW9uRGF0YSgpCiAgICAgICAgICAgICA6IG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0KDAp
CiAgICAgICAgICAgICAsIG1fc3ViZXhwcmVzc2lvblN0YXJ0T2Zmc2V0KDApCisgICAgICAgICAg
ICAsIG1fc3ViZXhwcmVzc2lvbkxpbmVPZmZzZXQoMCkKKyAgICAgICAgICAgICwgbV9zdWJleHBy
ZXNzaW9uTGluZVN0YXJ0T2Zmc2V0KDApCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAg
IFRocm93YWJsZVByZWZpeGVkU3ViRXhwcmVzc2lvbkRhdGEodW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgICAgICA6IFRocm93
YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgICAg
ICBUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhKHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBkaXZvdExpbmUs
IHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQorICAgICAgICAgICAgOiBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdExp
bmVTdGFydCkKICAgICAgICAgICAgICwgbV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQoMCkKICAg
ICAgICAgICAgICwgbV9zdWJleHByZXNzaW9uU3RhcnRPZmZzZXQoMCkKKyAgICAgICAgICAgICwg
bV9zdWJleHByZXNzaW9uTGluZU9mZnNldCgwKQorICAgICAgICAgICAgLCBtX3N1YmV4cHJlc3Np
b25MaW5lU3RhcnRPZmZzZXQoMCkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdm9p
ZCBzZXRTdWJleHByZXNzaW9uSW5mbyh1aW50MzJfdCBzdWJleHByZXNzaW9uRGl2b3QsIHVpbnQx
Nl90IHN1YmV4cHJlc3Npb25PZmZzZXQpCisgICAgICAgIHZvaWQgc2V0U3ViZXhwcmVzc2lvbklu
Zm8odWludDMyX3Qgc3ViZXhwcmVzc2lvbkRpdm90LCB1aW50MTZfdCBzdWJleHByZXNzaW9uT2Zm
c2V0LCB1aW50MzJfdCBzdWJleHByZXNzaW9uTGluZSwgdWludDMyX3Qgc3ViZXhwcmVzc2lvbkxp
bmVTdGFydCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHN1YmV4cHJlc3Npb25EaXZv
dCA+PSBkaXZvdCgpKTsKLSAgICAgICAgICAgIGlmICgoc3ViZXhwcmVzc2lvbkRpdm90IC0gZGl2
b3QoKSkgJiB+MHhGRkZGKSAvLyBPdmVyZmxvdyBtZWFucyB3ZSBjYW4ndCBkbyB0aGlzIHNhZmVs
eSwgc28ganVzdCBwb2ludCBhdCB0aGUgcHJpbWFyeSBkaXZvdAorICAgICAgICAgICAgLy8gT3Zl
cmZsb3cgbWVhbnMgd2UgY2FuJ3QgZG8gdGhpcyBzYWZlbHksIHNvIGp1c3QgcG9pbnQgYXQgdGhl
IHByaW1hcnkgZGl2b3QsCisgICAgICAgICAgICAvLyBkaXZvdExpbmUsIG9yIGRpdm90TGluZVN0
YXJ0LgorICAgICAgICAgICAgaWYgKChzdWJleHByZXNzaW9uRGl2b3QgLSBkaXZvdCgpKSAmIH4w
eEZGRkYpIAorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmICgoc3ViZXhw
cmVzc2lvbkxpbmUgLSBkaXZvdExpbmUoKSkgJiB+MHhGRkZGKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIGlmICgoc3ViZXhwcmVzc2lvbkxpbmVTdGFydCAtIGRpdm90TGlu
ZVN0YXJ0KCkpICYgfjB4RkZGRikKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNldCA9IHN1YmV4cHJlc3Npb25EaXZvdCAtIGRpdm90
KCk7CiAgICAgICAgICAgICBtX3N1YmV4cHJlc3Npb25TdGFydE9mZnNldCA9IHN1YmV4cHJlc3Np
b25PZmZzZXQ7CisgICAgICAgICAgICBtX3N1YmV4cHJlc3Npb25MaW5lT2Zmc2V0ID0gc3ViZXhw
cmVzc2lvbkxpbmUgLSBkaXZvdExpbmUoKTsKKyAgICAgICAgICAgIG1fc3ViZXhwcmVzc2lvbkxp
bmVTdGFydE9mZnNldCA9IHN1YmV4cHJlc3Npb25MaW5lU3RhcnQgLSBkaXZvdExpbmVTdGFydCgp
OwogICAgICAgICB9CiAKKyAgICAgICAgdW5zaWduZWQgc3ViZXhwcmVzc2lvbkRpdm90KCkgeyBy
ZXR1cm4gZGl2b3QoKSArIG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0OyB9CisgICAgICAgIHVu
c2lnbmVkIHN1YmV4cHJlc3Npb25TdGFydE9mZnNldCgpIHsgcmV0dXJuIG1fc3ViZXhwcmVzc2lv
blN0YXJ0T2Zmc2V0OyB9CisgICAgICAgIHVuc2lnbmVkIHN1YmV4cHJlc3Npb25FbmRPZmZzZXQo
KSB7IHJldHVybiBkaXZvdEVuZE9mZnNldCgpICsgbV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQ7
IH0KKyAgICAgICAgdW5zaWduZWQgc3ViZXhwcmVzc2lvbkxpbmUoKSB7IHJldHVybiBkaXZvdExp
bmUoKSArIG1fc3ViZXhwcmVzc2lvbkxpbmVPZmZzZXQ7IH0KKyAgICAgICAgdW5zaWduZWQgc3Vi
ZXhwcmVzc2lvbkxpbmVTdGFydCgpIHsgcmV0dXJuIGRpdm90TGluZVN0YXJ0KCkgKyBtX3N1YmV4
cHJlc3Npb25MaW5lU3RhcnRPZmZzZXQ7IH0KKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgdWlu
dDE2X3QgbV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQ7CiAgICAgICAgIHVpbnQxNl90IG1fc3Vi
ZXhwcmVzc2lvblN0YXJ0T2Zmc2V0OworICAgICAgICB1aW50MTZfdCBtX3N1YmV4cHJlc3Npb25M
aW5lT2Zmc2V0OworICAgICAgICB1aW50MTZfdCBtX3N1YmV4cHJlc3Npb25MaW5lU3RhcnRPZmZz
ZXQ7CiAgICAgfTsKIAogICAgIGNsYXNzIFJlZ0V4cE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5v
ZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CkBAIC0zNjUsNyArNDE4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZXNvbHZlTm9kZSA6IHB1YmxpYyBFeHByZXNz
aW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBSZXNvbHZlTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgaW50IHN0YXJ0T2Zmc2V0KTsKKyAgICAgICAg
UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGlu
ZVN0YXJ0KTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudDsgfQogCkBAIC0zNzcsNyArNDMwLDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Jlc29sdmVOb2RlKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7Ci0gICAgICAgIGludDMy
X3QgbV9zdGFydE9mZnNldDsKKyAgICAgICAgdWludDMyX3QgbV9zdGFydE9mZnNldDsKKyAgICAg
ICAgdWludDMyX3QgbV9kaXZvdExpbmU7CisgICAgICAgIHVpbnQzMl90IG1fZGl2b3RMaW5lU3Rh
cnQ7CiAgICAgfTsKIAogICAgIGNsYXNzIEVsZW1lbnROb2RlIDogcHVibGljIFBhcnNlckFyZW5h
RnJlZWFibGUgewpAQCAtNDAxLDcgKzQ1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBB
cnJheU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRWxlbWVudE5vZGUqKTsKICAgICAgICAg
QXJyYXlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCBlbGlzaW9uLCBFbGVtZW50Tm9k
ZSopOwogCi0gICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIHRvQXJndW1lbnRMaXN0KFZNKiwgaW50
LCBpbnQpIGNvbnN0OworICAgICAgICBBcmd1bWVudExpc3ROb2RlKiB0b0FyZ3VtZW50TGlzdChW
TSosIGludCwgaW50LCB1bnNpZ25lZCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCk7CkBAIC01MjQsNyArNTc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBFdmFsRnVuY3Rpb25DYWxsTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGlj
IFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEV2YWxGdW5j
dGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEFyZ3VtZW50c05vZGUqLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7Cisg
ICAgICAgIEV2YWxGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEFyZ3Vt
ZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCk7
CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01MzQsNyArNTg5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAg
ICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBGdW5j
dGlvbkNhbGxWYWx1ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
LCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5l
U3RhcnQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTQ1LDcg
KzYwMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25DYWxsUmVzb2x2
ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsK
KyAgICAgICAgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Y29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1
bnNpZ25lZCBkaXZvdExpbmVTdGFydCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCk7CkBAIC01NTYsNyArNjExLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xh
c3MgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1Ymxp
YyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5j
dGlvbkNhbGxCcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgQXJndW1lbnRzTm9kZSosIHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAg
ICAgICAgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEFyZ3VtZW50c05v
ZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCk7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01NjgsNyArNjIzLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkNhbGxEb3ROb2RlIDogcHVibGljIEV4
cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1
YmxpYzoKLSAgICAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUq
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCk7CisgICAgICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQs
IHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTgxLDcgKzYzNiw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMgRnVu
Y3Rpb25DYWxsRG90Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBDYWxsRnVuY3Rpb25DYWxs
RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIENhbGxGdW5jdGlvbkNh
bGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVu
c2lnbmVkIGRpdm90TGluZVN0YXJ0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKQEAgLTU4OSw3ICs2NDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFz
cyBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMgRnVuY3Rpb25DYWxsRG90Tm9kZSB7
CiAgICAgcHVibGljOgotICAgICAgICBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBB
cmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpOworICAgICAgICBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
LCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5l
U3RhcnQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTk3LDcg
KzY1Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRGVsZXRlUmVzb2x2ZU5vZGUg
OiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7
CiAgICAgcHVibGljOgotICAgICAgICBEZWxldGVSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBEZWxldGVSZXNvbHZlTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90
TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApOwpAQCAtNjA3LDcgKzY2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgRGVsZXRlQnJhY2tldE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBEZWxldGVCcmFj
a2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhw
cmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBEZWxldGVCcmFja2V0Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUq
IHN1YnNjcmlwdCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQp
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNjE4LDcgKzY3Myw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRGVsZXRlRG90Tm9kZSA6IHB1YmxpYyBF
eHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIERlbGV0ZURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIERlbGV0ZURvdE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCk7
CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02NzEsNyArNzI2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcmVmaXhOb2RlIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNzaW9uRGF0YSB7CiAg
ICAgcHVibGljOgotICAgICAgICBQcmVmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUHJlZml4Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RM
aW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCk7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKTsKQEAgLTY4NSw3ICs3NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIFBvc3RmaXhOb2RlIDogcHVibGljIFByZWZpeE5vZGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgUG9zdGZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
LCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpOworICAgICAgICBQb3N0Zml4Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSosIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25l
ZCBkaXZvdExpbmVTdGFydCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7
CkBAIC05MjgsNyArOTgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWFkTW9k
aWZ5UmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBSZWFkTW9kaWZ5UmVzb2x2ZU5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCBF
eHByZXNzaW9uTm9kZSogIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAg
ICAgUmVhZE1vZGlmeVJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElk
ZW50aWZpZXImLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqICByaWdodCwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCwgdW5zaWduZWQgbGluZSwgdW5zaWduZWQgbGluZVN0YXJ0KTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTk1Miw3ICsxMDA3LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWFkTW9kaWZ5QnJhY2tldE5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAg
cHVibGljOgotICAgICAgICBSZWFkTW9kaWZ5QnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9w
ZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVu
dHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBSZWFkTW9kaWZ5QnJhY2tl
dE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJl
c3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJv
b2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVu
c2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtOTY3LDcgKzEwMjIsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIEFzc2lnbkJyYWNrZXROb2RlIDogcHVibGljIEV4cHJlc3Npb25O
b2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgQXNzaWduQnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEV4cHJlc3Npb25Ob2RlKiByaWdo
dCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCk7CisgICAgICAgIEFzc2lnbkJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBFeHByZXNzaW9u
Tm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQp
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtOTgxLDcgKzEwMzYs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFzc2lnbkRvdE5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVi
bGljOgotICAgICAgICBBc3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgQXNzaWduRG90Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5z
aWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCk7CiAKICAgICBwcml2YXRl
OgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC05OTQsNyArMTA0OSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgUmVhZE1vZGlmeURvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5v
ZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAg
ICAgICBSZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSog
cmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBSZWFkTW9kaWZ5RG90
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3Rh
cnQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTAwOCw3ICsx
MDYzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBc3NpZ25FcnJvck5vZGUgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAg
ICAgcHVibGljOgotICAgICAgICBBc3NpZ25FcnJvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpOworICAgICAgICBBc3NpZ25FcnJvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVu
c2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTE4NCw3ICsxMjM5LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgY2xhc3MgRm9ySW5Ob2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1Ymxp
YyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgogICAgICAgICBGb3JJbk5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBFeHByZXNzaW9uTm9k
ZSosIFN0YXRlbWVudE5vZGUqKTsKLSAgICAgICAgRm9ySW5Ob2RlKFZNKiwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgRXhwcmVzc2lv
bk5vZGUqLCBTdGF0ZW1lbnROb2RlKiwgaW50IGRpdm90LCBpbnQgc3RhcnRPZmZzZXQsIGludCBl
bmRPZmZzZXQpOworICAgICAgICBGb3JJbk5vZGUoVk0qLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBFeHByZXNzaW9uTm9kZSosIFN0
YXRlbWVudE5vZGUqLCB1bnNpZ25lZCBkaXZvdCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zm
c2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTIzNyw3ICsxMjkyLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBXaXRoTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIFdpdGhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSosIHVpbnQzMl90IGRpdm90LCB1aW50MzJfdCBleHBy
ZXNzaW9uTGVuZ3RoKTsKKyAgICAgICAgV2l0aE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKiwgdWludDMyX3QgZGl2b3QsIHVuc2lnbmVk
IGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQsIHVpbnQzMl90IGV4cHJlc3Npb25M
ZW5ndGgpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMjQ1LDYgKzEzMDAs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAg
ICAgICAgU3RhdGVtZW50Tm9kZSogbV9zdGF0ZW1lbnQ7CiAgICAgICAgIHVpbnQzMl90IG1fZGl2
b3Q7CisgICAgICAgIHVpbnQzMl90IG1fZGl2b3RMaW5lOworICAgICAgICB1aW50MzJfdCBtX2Rp
dm90TGluZVN0YXJ0OwogICAgICAgICB1aW50MzJfdCBtX2V4cHJlc3Npb25MZW5ndGg7CiAgICAg
fTsKIApAQCAtMTMxOSw3ICsxMzc2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGludHB0
cl90IHNvdXJjZUlEKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UucHJvdmlkZXJJRCgpOyB9CiAK
ICAgICAgICAgaW50IHN0YXJ0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRMaW5lTnVtYmVy
OyB9Ci0gICAgICAgIGludCBzdGFydENoYXJQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
cnRDaGFyUG9zaXRpb247fQorICAgICAgICBpbnQgc3RhcnRTdGFydE9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhcnRTdGFydE9mZnNldDsgfQorICAgICAgICBpbnQgc3RhcnRMaW5lU3RhcnRP
ZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0TGluZVN0YXJ0T2Zmc2V0OyB9CiAKICAgICAg
ICAgdm9pZCBzZXRGZWF0dXJlcyhDb2RlRmVhdHVyZXMgZmVhdHVyZXMpIHsgbV9mZWF0dXJlcyA9
IGZlYXR1cmVzOyB9CiAgICAgICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcygpIHsgcmV0dXJuIG1f
ZmVhdHVyZXM7IH0KQEAgLTEzNTQsNyArMTQxMiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBQYXJzZXJBcmVuYSBtX2FyZW5hOwogCiAgICAgICAgIGludCBtX3N0YXJ0TGluZU51bWJlcjsK
LSAgICAgICAgaW50IG1fc3RhcnRDaGFyUG9zaXRpb247CisgICAgICAgIHVuc2lnbmVkIG1fc3Rh
cnRTdGFydE9mZnNldDsKKyAgICAgICAgdW5zaWduZWQgbV9zdGFydExpbmVTdGFydE9mZnNldDsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1cmVzOwpAQCAtMTM2
OSwyMCArMTQyOCwyNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBQcm9ncmFtTm9kZSA6
IHB1YmxpYyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNGdW5jdGlvbk5vZGUgPSBmYWxzZTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJv
Z3JhbU5vZGU+IGNyZWF0ZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rp
b25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJvZ3JhbU5v
ZGU+IGNyZWF0ZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBW
YXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29k
ZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisKKyAgICAgICAgdW5zaWduZWQg
c3RhcnRDb2x1bW4oKSB7IHJldHVybiBtX3N0YXJ0Q29sdW1uOyB9CiAKICAgICAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gZmFsc2U7CiAKICAgICBwcml2YXRlOgotICAg
ICAgICBQcm9ncmFtTm9kZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rp
b25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgUHJvZ3JhbU5vZGUoVk0qLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQg
c3RhcnRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwg
SWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1D
b25zdGFudHMpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOworCisgICAgICAgIHVuc2lnbmVkIG1fc3RhcnRD
b2x1bW47CiAgICAgfTsKIAogICAgIGNsYXNzIEV2YWxOb2RlIDogcHVibGljIFNjb3BlTm9kZSB7
CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc0Z1bmN0aW9uTm9kZSA9
IGZhbHNlOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxFdmFsTm9kZT4gY3JlYXRlKFZNKiwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQs
IFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNl
dCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwor
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxFdmFsTm9kZT4gY3JlYXRlKFZNKiwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVk
IHN0YXJ0Q29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayos
IElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVt
Q29uc3RhbnRzKTsKKworICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbigpIHsgcmV0dXJuIDE7
IH0KIAogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzY29wZUlzRnVuY3Rpb24gPSBmYWxzZTsK
IApAQCAtMTQxNCw4ICsxNDc5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rp
b25Cb2R5Tm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNGdW5jdGlvbk5vZGUgPSB0cnVlOwotICAgICAgICBzdGF0aWMgRnVu
Y3Rpb25Cb2R5Tm9kZSogY3JlYXRlKFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIGJvb2wgaXNTdHJpY3RNb2RlKTsKLSAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gY3JlYXRlKFZNKiwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIFNvdXJjZUVs
ZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0
IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAgICBz
dGF0aWMgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlKFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1u
LCBib29sIGlzU3RyaWN0TW9kZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZ1bmN0aW9u
Qm9keU5vZGU+IGNyZWF0ZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgU291cmNlRWxlbWVu
dHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291
cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgRnVu
Y3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJz
LmdldCgpOyB9CiAgICAgICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFyYW1ldGVycy0+c2l6ZSgpOyB9CkBAIC0xNDM0LDE4ICsxNDk5LDIwIEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIHZvaWQgc2V0RnVuY3Rpb25TdGFydChpbnQgZnVuY3Rpb25TdGFy
dCkgeyBtX2Z1bmN0aW9uU3RhcnQgPSBmdW5jdGlvblN0YXJ0OyB9CiAgICAgICAgIGludCBmdW5j
dGlvblN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblN0YXJ0OyB9CisgICAgICAgIHVu
c2lnbmVkIHN0YXJ0Q29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydENvbHVtbjsgfQogCiAg
ICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNjb3BlSXNGdW5jdGlvbiA9IHRydWU7CiAKICAgICBw
cml2YXRlOgotICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIGJvb2wgaW5TdHJpY3RDb250
ZXh0KTsKLSAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCBTb3VyY2VFbGVtZW50cyosIFZh
clN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2Rl
JiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgRnVuY3Rpb25Cb2R5
Tm9kZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgYm9vbCBpblN0cmljdENvbnRleHQpOwor
ICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFy
dCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCBTb3Vy
Y2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBj
b25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAg
ICAgICBJZGVudGlmaWVyIG1faWRlbnQ7CiAgICAgICAgIElkZW50aWZpZXIgbV9pbmZlcnJlZE5h
bWU7CiAgICAgICAgIEZ1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZSBtX2Z1bmN0aW9uTmFtZUlz
SW5TY29wZVRvZ2dsZTsKICAgICAgICAgUmVmUHRyPEZ1bmN0aW9uUGFyYW1ldGVycz4gbV9wYXJh
bWV0ZXJzOwogICAgICAgICBpbnQgbV9mdW5jdGlvblN0YXJ0OworICAgICAgICB1bnNpZ25lZCBt
X3N0YXJ0Q29sdW1uOwogICAgIH07CiAKICAgICBjbGFzcyBGdW5jRXhwck5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcAkocmV2aXNpb24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw5IEBAIFBhcnNlcjxMZXhlclR5
cGU+OjpQYXJzZXIoVk0qIHZtLCBjb25zdCAKICAgICBtX2xleGVyID0gYWRvcHRQdHIobmV3IExl
eGVyVHlwZSh2bSkpOwogICAgIG1fYXJlbmEgPSBtX3ZtLT5wYXJzZXJBcmVuYS5nZXQoKTsKICAg
ICBtX2xleGVyLT5zZXRDb2RlKHNvdXJjZSwgbV9hcmVuYSk7CisgICAgbV90b2tlbi5tX2xvY2F0
aW9uLnNvdXJjZU9mZnNldCA9IHNvdXJjZS5zdGFydE9mZnNldCgpOworICAgIG1fdG9rZW4ubV9s
b2NhdGlvbi5lbmRPZmZzZXQgPSBzb3VyY2Uuc3RhcnRPZmZzZXQoKTsKKyAgICBtX3Rva2VuLm1f
bG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0ID0gc291cmNlLnN0YXJ0T2Zmc2V0KCk7CiAKICAgICBt
X2Z1bmN0aW9uQ2FjaGUgPSB2bS0+YWRkU291cmNlUHJvdmlkZXJDYWNoZShzb3VyY2UucHJvdmlk
ZXIoKSk7CiAgICAgU2NvcGVSZWYgc2NvcGUgPSBwdXNoU2NvcGUoKTsKQEAgLTE2Miw2ICsxNjUs
NyBAQCB0ZW1wbGF0ZSA8U291cmNlRWxlbWVudHNNb2RlIG1vZGUsIGNsYXNzCiAgICAgY29uc3Qg
SWRlbnRpZmllciogZGlyZWN0aXZlID0gMDsKICAgICB1bnNpZ25lZCBkaXJlY3RpdmVMaXRlcmFs
TGVuZ3RoID0gMDsKICAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IG1fdG9rZW4ubV9sb2NhdGlv
bi5zdGFydE9mZnNldDsKKyAgICB1bnNpZ25lZCBzdGFydExpbmVTdGFydE9mZnNldCA9IG1fdG9r
ZW4ubV9sb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7CiAgICAgdW5zaWduZWQgb2xkTGFzdExpbmVO
dW1iZXIgPSBtX2xleGVyLT5sYXN0TGluZU51bWJlcigpOwogICAgIHVuc2lnbmVkIG9sZExpbmVO
dW1iZXIgPSBtX2xleGVyLT5saW5lTnVtYmVyKCk7CiAgICAgYm9vbCBoYXNTZXRTdHJpY3QgPSBm
YWxzZTsKQEAgLTE3Myw3ICsxNzcsNyBAQCB0ZW1wbGF0ZSA8U291cmNlRWxlbWVudHNNb2RlIG1v
ZGUsIGNsYXNzCiAgICAgICAgICAgICAgICAgICAgIHNldFN0cmljdE1vZGUoKTsKICAgICAgICAg
ICAgICAgICAgICAgaGFzU2V0U3RyaWN0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgZmFp
bElmRmFsc2UoaXNWYWxpZFN0cmljdE1vZGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1fbGV4
ZXItPnNldE9mZnNldChzdGFydE9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIG1fbGV4ZXIt
PnNldE9mZnNldChzdGFydE9mZnNldCwgc3RhcnRMaW5lU3RhcnRPZmZzZXQpOwogICAgICAgICAg
ICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgIG1fbGV4ZXItPnNldExhc3RM
aW5lTnVtYmVyKG9sZExhc3RMaW5lTnVtYmVyKTsKICAgICAgICAgICAgICAgICAgICAgbV9sZXhl
ci0+c2V0TGluZU51bWJlcihvbGRMaW5lTnVtYmVyKTsKQEAgLTI4NSw2ICsyODksOCBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAgICAgICAgIGNvbnRleHQuYWRk
VmFyKG5hbWUsIChoYXNJbml0aWFsaXplciB8fCAoIW1fYWxsb3dzSW4gJiYgbWF0Y2goSU5UT0tF
TikpKSA/IERlY2xhcmF0aW9uU3RhY2tzOjpIYXNJbml0aWFsaXplciA6IDApOwogICAgICAgICBp
ZiAoaGFzSW5pdGlhbGl6ZXIpIHsKICAgICAgICAgICAgIGludCB2YXJEaXZvdCA9IHRva2VuU3Rh
cnQoKSArIDE7CisgICAgICAgICAgICB1bnNpZ25lZCB2YXJMaW5lID0gdG9rZW5MaW5lKCk7IAor
ICAgICAgICAgICAgdW5zaWduZWQgdmFyTGluZVN0YXJ0ID0gdG9rZW5MaW5lU3RhcnQoKTsKICAg
ICAgICAgICAgIGluaXRTdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICAgICAgICAgIG5leHQoVHJl
ZUJ1aWxkZXI6OkRvbnRCdWlsZFN0cmluZ3MpOyAvLyBjb25zdW1lICc9JwogICAgICAgICAgICAg
VHJlZUV4cHJlc3Npb24gaW5pdGlhbGl6ZXIgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNv
bnRleHQpOwpAQCAtMjkyLDcgKzI5OCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3MKICAgICAgICAgICAgIGxhc3RJbml0aWFsaXplciA9IGluaXRpYWxpemVyOwog
ICAgICAgICAgICAgZmFpbElmRmFsc2UoaW5pdGlhbGl6ZXIpOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gY29udGV4dC5jcmVhdGVBc3NpZ25SZXNvbHZl
KGxvY2F0aW9uLCAqbmFtZSwgaW5pdGlhbGl6ZXIsIHZhclN0YXJ0LCB2YXJEaXZvdCwgbGFzdFRv
a2VuRW5kKCkpOworICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gbm9kZSA9IGNvbnRleHQuY3Jl
YXRlQXNzaWduUmVzb2x2ZShsb2NhdGlvbiwgKm5hbWUsIGluaXRpYWxpemVyLCB2YXJTdGFydCwg
dmFyRGl2b3QsIGxhc3RUb2tlbkVuZCgpLCB2YXJMaW5lLCB2YXJMaW5lU3RhcnQpOwogICAgICAg
ICAgICAgaWYgKCF2YXJEZWNscykKICAgICAgICAgICAgICAgICB2YXJEZWNscyA9IG5vZGU7CiAg
ICAgICAgICAgICBlbHNlCkBAIC0zMTcsNiArMzIzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlQ29uc3REZQogICAgICAgICBib29sIGhhc0luaXRpYWxpemVyID0gbWF0Y2go
RVFVQUwpOwogICAgICAgICBkZWNsYXJlVmFyaWFibGUobmFtZSk7CiAgICAgICAgIGNvbnRleHQu
YWRkVmFyKG5hbWUsIERlY2xhcmF0aW9uU3RhY2tzOjpJc0NvbnN0YW50IHwgKGhhc0luaXRpYWxp
emVyID8gRGVjbGFyYXRpb25TdGFja3M6Okhhc0luaXRpYWxpemVyIDogMCkpOworCiAgICAgICAg
IFRyZWVFeHByZXNzaW9uIGluaXRpYWxpemVyID0gMDsKICAgICAgICAgaWYgKGhhc0luaXRpYWxp
emVyKSB7CiAgICAgICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsg
Ly8gY29uc3VtZSAnPScKQEAgLTM0MSw2ICszNDgsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTdGF0ZW1lCiAgICAgaW50IGRlY2xhcmF0aW9ucyA9IDA7CiAgICAgaW50IGRl
Y2xzU3RhcnQgPSAwOwogICAgIGludCBkZWNsc0VuZCA9IDA7CisgICAgdW5zaWduZWQgZGVjbHNM
aW5lID0gMDsKKyAgICB1bnNpZ25lZCBkZWNsc0xpbmVTdGFydCA9IDA7CiAgICAgVHJlZUV4cHJl
c3Npb24gZGVjbHMgPSAwOwogICAgIGlmIChtYXRjaChWQVIpKSB7CiAgICAgICAgIC8qCkBAIC0z
NjUsNiArMzc0LDggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZQog
ICAgICAgICAKICAgICAgICAgLy8gSGFuZGxlIGZvci1pbiB3aXRoIHZhciBkZWNsYXJhdGlvbgog
ICAgICAgICBpbnQgaW5Mb2NhdGlvbiA9IHRva2VuU3RhcnQoKTsKKyAgICAgICAgdW5zaWduZWQg
aW5MaW5lID0gdG9rZW5MaW5lKCk7CisgICAgICAgIHVuc2lnbmVkIGluTGluZVN0YXJ0ID0gdG9r
ZW5MaW5lU3RhcnQoKTsKICAgICAgICAgY29uc3VtZU9yRmFpbChJTlRPS0VOKTsKICAgICAgICAg
CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7
CkBAIC0zODAsNyArMzkxLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZQogICAgICAgICBlbmRMb29wKCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7
CiAgICAgICAgIAotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGb3JJbkxvb3AobG9jYXRp
b24sIGZvckluVGFyZ2V0LCBmb3JJbkluaXRpYWxpemVyLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xz
U3RhcnQsIGluTG9jYXRpb24sIGV4cHJFbmQsIGluaXRTdGFydCwgaW5pdEVuZCwgc3RhcnRMaW5l
LCBlbmRMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9ySW5Mb29wKGxvY2F0
aW9uLCBmb3JJblRhcmdldCwgZm9ySW5Jbml0aWFsaXplciwgZXhwciwgc3RhdGVtZW50LCBkZWNs
c1N0YXJ0LCBpbkxvY2F0aW9uLCBleHByRW5kLCBpbml0U3RhcnQsIGluaXRFbmQsIHN0YXJ0TGlu
ZSwgZW5kTGluZSwgaW5MaW5lLCBpbkxpbmVTdGFydCk7CiAgICAgfQogICAgIAogICAgIGlmICgh
bWF0Y2goU0VNSUNPTE9OKSkgewpAQCAtMzg4LDYgKzM5OSw4IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWUKICAgICAgICAgZGVjbHNTdGFydCA9IHRva2VuU3RhcnQo
KTsKICAgICAgICAgZGVjbHMgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgIGRl
Y2xzRW5kID0gbGFzdFRva2VuRW5kKCk7CisgICAgICAgIGRlY2xzTGluZSA9IGxhc3RUb2tlbkxp
bmUoKTsKKyAgICAgICAgZGVjbHNMaW5lU3RhcnQgPSBsYXN0VG9rZW5MaW5lU3RhcnQoKTsKICAg
ICAgICAgbV9hbGxvd3NJbiA9IHRydWU7CiAgICAgICAgIGZhaWxJZkZhbHNlKGRlY2xzKTsKICAg
ICB9CkBAIC00MzMsNyArNDQ2LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U3RhdGVtZQogICAgIGVuZExvb3AoKTsKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogICAg
IAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckluTG9vcChsb2NhdGlvbiwgZGVjbHMsIGV4
cHIsIHN0YXRlbWVudCwgZGVjbHNTdGFydCwgZGVjbHNFbmQsIGV4cHJFbmQsIHN0YXJ0TGluZSwg
ZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9ySW5Mb29wKGxvY2F0aW9uLCBk
ZWNscywgZXhwciwgc3RhdGVtZW50LCBkZWNsc1N0YXJ0LCBkZWNsc0VuZCwgZXhwckVuZCwgc3Rh
cnRMaW5lLCBlbmRMaW5lLCBkZWNsc0xpbmUsIGRlY2xzTGluZVN0YXJ0KTsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTQ0NSwyMCArNDU4LDIyIEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWUKICAgICBpbnQgZW5kQ29sID0gdG9rZW5FbmQo
KTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgaW50IGVuZExpbmUgPSB0
b2tlbkxpbmUoKTsKKyAgICB1bnNpZ25lZCBlbmRMaW5lU3RhcnQgPSB0b2tlbkxpbmVTdGFydCgp
OwogICAgIG5leHQoKTsKICAgICAKICAgICBpZiAoYXV0b1NlbWlDb2xvbigpKSB7CiAgICAgICAg
IGZhaWxJZkZhbHNlV2l0aE1lc3NhZ2UoYnJlYWtJc1ZhbGlkKCksICInYnJlYWsnIGlzIG9ubHkg
dmFsaWQgaW5zaWRlIGEgc3dpdGNoIG9yIGxvb3Agc3RhdGVtZW50Iik7Ci0gICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUJyZWFrU3RhdGVtZW50KGxvY2F0aW9uLCBzdGFydENvbCwgZW5kQ29s
LCBzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCcmVh
a1N0YXRlbWVudChsb2NhdGlvbiwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5l
LCBlbmRMaW5lU3RhcnQpOwogICAgIH0KICAgICBtYXRjaE9yRmFpbChJREVOVCk7CiAgICAgY29u
c3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICBmYWlsSWZG
YWxzZVdpdGhOYW1lQW5kTWVzc2FnZShnZXRMYWJlbChpZGVudCksICJMYWJlbCIsIGlkZW50LT5p
bXBsKCksICJpcyBub3QgZGVmaW5lZCIpOwogICAgIGVuZENvbCA9IHRva2VuRW5kKCk7CiAgICAg
ZW5kTGluZSA9IHRva2VuTGluZSgpOworICAgIGVuZExpbmVTdGFydCA9IHRva2VuTGluZVN0YXJ0
KCk7CiAgICAgbmV4dCgpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlQnJlYWtTdGF0ZW1lbnQobG9jYXRpb24sIGlkZW50LCBzdGFy
dENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZUJyZWFrU3RhdGVtZW50KGxvY2F0aW9uLCBpZGVudCwgc3RhcnRDb2wsIGVuZENvbCwgc3Rh
cnRMaW5lLCBlbmRMaW5lLCBlbmRMaW5lU3RhcnQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
TGV4ZXJUeXBlPgpAQCAtNDcwLDExICs0ODUsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU3RhdGVtZQogICAgIGludCBlbmRDb2wgPSB0b2tlbkVuZCgpOwogICAgIGludCBz
dGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBpbnQgZW5kTGluZSA9IHRva2VuTGluZSgpOwor
ICAgIHVuc2lnbmVkIGVuZExpbmVTdGFydCA9IHRva2VuTGluZVN0YXJ0KCk7CiAgICAgbmV4dCgp
OwogICAgIAogICAgIGlmIChhdXRvU2VtaUNvbG9uKCkpIHsKICAgICAgICAgZmFpbElmRmFsc2VX
aXRoTWVzc2FnZShjb250aW51ZUlzVmFsaWQoKSwgIidjb250aW51ZScgaXMgb25seSB2YWxpZCBp
bnNpZGUgYSBsb29wIHN0YXRlbWVudCIpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVD
b250aW51ZVN0YXRlbWVudChsb2NhdGlvbiwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBl
bmRMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ29udGludWVTdGF0ZW1lbnQo
bG9jYXRpb24sIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSwgZW5kTGluZVN0
YXJ0KTsKICAgICB9CiAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwogICAgIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CkBAIC00ODMsOSArNDk5LDEwIEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWUKICAgICBmYWlsSWZGYWxzZVdp
dGhNZXNzYWdlKGxhYmVsLT5tX2lzTG9vcCwgIidjb250aW51ZScgaXMgb25seSB2YWxpZCBpbnNp
ZGUgYSBsb29wIHN0YXRlbWVudCIpOwogICAgIGVuZENvbCA9IHRva2VuRW5kKCk7CiAgICAgZW5k
TGluZSA9IHRva2VuTGluZSgpOworICAgIGVuZExpbmVTdGFydCA9IHRva2VuTGluZVN0YXJ0KCk7
CiAgICAgbmV4dCgpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlQ29udGludWVTdGF0ZW1lbnQobG9jYXRpb24sIGlkZW50LCBzdGFy
dENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGxvY2F0aW9uLCBpZGVudCwgc3RhcnRDb2wsIGVuZENvbCwg
c3RhcnRMaW5lLCBlbmRMaW5lLCBlbmRMaW5lU3RhcnQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGV4ZXJUeXBlPgpAQCAtNDk4LDYgKzUxNSw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVN0YXRlbWUKICAgICBpbnQgZW5kTGluZSA9IHN0YXJ0TGluZTsKICAgICBpbnQg
c3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgaW50IGVuZCA9IHRva2VuRW5kKCk7CisgICAgdW5z
aWduZWQgZGl2b3RMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgdW5zaWduZWQgZGl2b3RMaW5lU3Rh
cnQgPSB0b2tlbkxpbmVTdGFydCgpOwogICAgIG5leHQoKTsKICAgICAvLyBXZSBkbyB0aGUgYXV0
byBzZW1pY29sb24gY2hlY2sgYmVmb3JlIGF0dGVtcHRpbmcgdG8gcGFyc2UgYW4gZXhwcmVzc2lv
bgogICAgIC8vIGFzIHdlIG5lZWQgdG8gZW5zdXJlIHRoZSBhIGxpbmUgYnJlYWsgYWZ0ZXIgdGhl
IHJldHVybiBjb3JyZWN0bHkgdGVybWluYXRlcwpAQCAtNTA1LDE0ICs1MjQsMTYgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZQogICAgIGlmIChtYXRjaChTRU1JQ09M
T04pKQogICAgICAgICBlbmRMaW5lICA9IHRva2VuTGluZSgpOwogICAgIGlmIChhdXRvU2VtaUNv
bG9uKCkpCi0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVJldHVyblN0YXRlbWVudChsb2Nh
dGlvbiwgMCwgc3RhcnQsIGVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50KGxvY2F0aW9uLCAwLCBzdGFydCwgZW5kLCBz
dGFydExpbmUsIGVuZExpbmUsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogICAgIFRyZWVF
eHByZXNzaW9uIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFs
c2UoZXhwcik7CiAgICAgZW5kID0gbGFzdFRva2VuRW5kKCk7CisgICAgZGl2b3RMaW5lID0gbGFz
dFRva2VuTGluZSgpOworICAgIGRpdm90TGluZVN0YXJ0ID0gbGFzdFRva2VuTGluZVN0YXJ0KCk7
CiAgICAgaWYgKG1hdGNoKFNFTUlDT0xPTikpCiAgICAgICAgIGVuZExpbmUgID0gdG9rZW5MaW5l
KCk7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKLSAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQobG9jYXRpb24sIGV4cHIsIHN0YXJ0LCBlbmQsIHN0YXJ0
TGluZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50
KGxvY2F0aW9uLCBleHByLCBzdGFydCwgZW5kLCBzdGFydExpbmUsIGVuZExpbmUsIGRpdm90TGlu
ZSwgZGl2b3RMaW5lU3RhcnQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpA
QCAtNTI5LDEwICs1NTAsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZQogICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7
CiAgICAgZmFpbElmRmFsc2UoZXhwcik7CiAgICAgaW50IGVFbmQgPSBsYXN0VG9rZW5FbmQoKTsK
KyAgICB1bnNpZ25lZCBkaXZvdExpbmUgPSBsYXN0VG9rZW5MaW5lKCk7CisgICAgdW5zaWduZWQg
ZGl2b3RMaW5lU3RhcnQgPSBsYXN0VG9rZW5MaW5lU3RhcnQoKTsKICAgICBpbnQgZW5kTGluZSA9
IHRva2VuTGluZSgpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7CiAgICAgCi0g
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlVGhyb3dTdGF0ZW1lbnQobG9jYXRpb24sIGV4cHIsIGVT
dGFydCwgZUVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVUaHJvd1N0YXRlbWVudChsb2NhdGlvbiwgZXhwciwgZVN0YXJ0LCBlRW5kLCBzdGFydExpbmUs
IGVuZExpbmUsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGV4ZXJUeXBlPgpAQCAtNTQ5LDE0ICs1NzIsMTUgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZQogICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJzZUV4
cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UoZXhwcik7CiAgICAgaW50IGVuZCA9
IGxhc3RUb2tlbkVuZCgpOwotICAgIAorICAgIHVuc2lnbmVkIGRpdm90TGluZSA9IGxhc3RUb2tl
bkxpbmUoKTsKKyAgICB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCA9IGxhc3RUb2tlbkxpbmVTdGFy
dCgpOwogICAgIGludCBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgY29uc3VtZU9yRmFpbChD
TE9TRVBBUkVOKTsKICAgICBjb25zdCBJZGVudGlmaWVyKiB1bnVzZWQgPSAwOwogICAgIFRyZWVT
dGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKICAg
ICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogICAgIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZVdpdGhTdGF0ZW1lbnQobG9jYXRpb24sIGV4cHIsIHN0YXRlbWVudCwgc3RhcnQsIGVuZCwgc3Rh
cnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVXaXRoU3RhdGVtZW50
KGxvY2F0aW9uLCBleHByLCBzdGF0ZW1lbnQsIHN0YXJ0LCBlbmQsIHN0YXJ0TGluZSwgZW5kTGlu
ZSwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+CkBAIC03OTUsMTkgKzgxOSwyMCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJU
eXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keShUcmVlQnVpbGRlciYgY29udGV4dCkKIHsK
ICAgICBKU1Rva2VuTG9jYXRpb24gc3RhcnRMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAg
IHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICBuZXh0KCk7CiAKICAg
ICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpCi0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1
bmN0aW9uQm9keShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0cmljdE1vZGUoKSk7
CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShzdGFydExvY2F0aW9u
LCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBzdHJpY3RNb2RlKCkpOwogICAgIERlcHRo
TWFuYWdlciBzdGF0ZW1lbnREZXB0aCgmbV9zdGF0ZW1lbnREZXB0aCk7CiAgICAgbV9zdGF0ZW1l
bnREZXB0aCA9IDA7CiAgICAgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZ1bmN0aW9uQm9keUJ1aWxk
ZXIgYm9keUJ1aWxkZXIoY29uc3RfY2FzdDxWTSo+KG1fdm0pLCBtX2xleGVyLmdldCgpKTsKICAg
ICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzPENoZWNrRm9yU3RyaWN0TW9kZT4oYm9k
eUJ1aWxkZXIpKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkoc3RhcnRM
b2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdHJpY3RNb2RlKCkpOworICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0
YXJ0Q29sdW1uLCBzdHJpY3RNb2RlKCkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJU
eXBlPgotdGVtcGxhdGUgPEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgYm9vbCBu
YW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgY2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJ
ZGVudGlmaWVyKiYgbmFtZSwgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QmIHBhcmFtZXRlcnMsIFRy
ZWVGdW5jdGlvbkJvZHkmIGJvZHksIGludCYgb3BlbkJyYWNlUG9zLCBpbnQmIGNsb3NlQnJhY2VQ
b3MsIGludCYgYm9keVN0YXJ0TGluZSkKK3RlbXBsYXRlIDxGdW5jdGlvblJlcXVpcmVtZW50cyBy
ZXF1aXJlbWVudHMsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIGNsYXNzIFRyZWVCdWls
ZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRl
ciYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciomIG5hbWUsIFRyZWVGb3JtYWxQYXJhbWV0ZXJM
aXN0JiBwYXJhbWV0ZXJzLCBUcmVlRnVuY3Rpb25Cb2R5JiBib2R5LCB1bnNpZ25lZCYgb3BlbkJy
YWNlT2Zmc2V0LCB1bnNpZ25lZCYgY2xvc2VCcmFjZU9mZnNldCwgaW50JiBib2R5U3RhcnRMaW5l
LCB1bnNpZ25lZCYgYm9keVN0YXJ0Q29sdW1uKQogewogICAgIEF1dG9Qb3BTY29wZVJlZiBmdW5j
dGlvblNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKICAgICBmdW5jdGlvblNjb3BlLT5zZXRJc0Z1
bmN0aW9uKCk7CkBAIC04MjcsMjYgKzg1MiwzMyBAQCB0ZW1wbGF0ZSA8RnVuY3Rpb25SZXF1aXJl
bWVudHMgcmVxdWlyZW1lCiAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOKTsKICAgICBtYXRj
aE9yRmFpbChPUEVOQlJBQ0UpOwogICAgIAotICAgIG9wZW5CcmFjZVBvcyA9IG1fdG9rZW4ubV9k
YXRhLmludFZhbHVlOworICAgIG9wZW5CcmFjZU9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNl
dDsKICAgICBib2R5U3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgYm9keVN0YXJ0Q29sdW1u
ID0gbV90b2tlbi5tX2RhdGEub2Zmc2V0IC0gbV90b2tlbi5tX2RhdGEubGluZVN0YXJ0T2Zmc2V0
OwogICAgIEpTVG9rZW5Mb2NhdGlvbiBzdGFydExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAg
ICAgCiAgICAgLy8gSWYgd2Uga25vdyBhYm91dCB0aGlzIGZ1bmN0aW9uIGFscmVhZHksIHdlIGNh
biB1c2UgdGhlIGNhY2hlZCBpbmZvIGFuZCBza2lwIHRoZSBwYXJzZXIgdG8gdGhlIGVuZCBvZiB0
aGUgZnVuY3Rpb24uCi0gICAgaWYgKGNvbnN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKiBjYWNo
ZWRJbmZvID0gVHJlZUJ1aWxkZXI6OkNhblVzZUZ1bmN0aW9uQ2FjaGUgPyBmaW5kQ2FjaGVkRnVu
Y3Rpb25JbmZvKG9wZW5CcmFjZVBvcykgOiAwKSB7CisgICAgaWYgKGNvbnN0IFNvdXJjZVByb3Zp
ZGVyQ2FjaGVJdGVtKiBjYWNoZWRJbmZvID0gVHJlZUJ1aWxkZXI6OkNhblVzZUZ1bmN0aW9uQ2Fj
aGUgPyBmaW5kQ2FjaGVkRnVuY3Rpb25JbmZvKG9wZW5CcmFjZU9mZnNldCkgOiAwKSB7CiAgICAg
ICAgIC8vIElmIHdlJ3JlIGluIGEgc3RyaWN0IGNvbnRleHQsIHRoZSBjYWNoZWQgZnVuY3Rpb24g
aW5mbyBtdXN0IHNheSBpdCB3YXMgc3RyaWN0IHRvby4KICAgICAgICAgQVNTRVJUKCFzdHJpY3RN
b2RlKCkgfHwgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSk7Ci0gICAgICAgIEpTVG9rZW5Mb2NhdGlv
biBlbmRMb2NhdGlvbjsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGVuZExvY2F0aW9uKG1fc291
cmNlLT5zdGFydE9mZnNldCgpKTsKKwogICAgICAgICBlbmRMb2NhdGlvbi5saW5lID0gY2FjaGVk
SW5mby0+Y2xvc2VCcmFjZUxpbmU7Ci0gICAgICAgIGVuZExvY2F0aW9uLmNoYXJQb3NpdGlvbiA9
IGNhY2hlZEluZm8tPmNsb3NlQnJhY2VQb3M7Ci0gICAgICAgIGJvZHkgPSBjb250ZXh0LmNyZWF0
ZUZ1bmN0aW9uQm9keShzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgY2FjaGVkSW5mby0+c3Ry
aWN0TW9kZSk7CisgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0ID0gY2FjaGVkSW5mby0+
Y2xvc2VCcmFjZU9mZnNldDsKKyAgICAgICAgZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0ID0g
Y2FjaGVkSW5mby0+Y2xvc2VCcmFjZUxpbmVTdGFydE9mZnNldDsKKyAgICAgICAgQVNTRVJUKGVu
ZExvY2F0aW9uLnN0YXJ0T2Zmc2V0ID49IGVuZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CisK
KyAgICAgICAgYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KHN0YXJ0TG9jYXRpb24s
IGVuZExvY2F0aW9uLCBib2R5U3RhcnRDb2x1bW4sIGNhY2hlZEluZm8tPnN0cmljdE1vZGUpOwog
ICAgICAgICAKICAgICAgICAgZnVuY3Rpb25TY29wZS0+cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRl
ckNhY2hlKGNhY2hlZEluZm8pOwogICAgICAgICBmYWlsSWZGYWxzZShwb3BTY29wZShmdW5jdGlv
blNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKSk7CiAgICAgICAgIAot
ICAgICAgICBjbG9zZUJyYWNlUG9zID0gY2FjaGVkSW5mby0+Y2xvc2VCcmFjZVBvczsKKyAgICAg
ICAgY2xvc2VCcmFjZU9mZnNldCA9IGNhY2hlZEluZm8tPmNsb3NlQnJhY2VPZmZzZXQ7CisKICAg
ICAgICAgY29udGV4dC5zZXRGdW5jdGlvblN0YXJ0KGJvZHksIGZ1bmN0aW9uU3RhcnQpOwogICAg
ICAgICBtX3Rva2VuID0gY2FjaGVkSW5mby0+Y2xvc2VCcmFjZVRva2VuKCk7Ci0gICAgICAgIG1f
bGV4ZXItPnNldE9mZnNldChtX3Rva2VuLm1fbG9jYXRpb24uZW5kT2Zmc2V0KTsKKworICAgICAg
ICBtX2xleGVyLT5zZXRPZmZzZXQobV90b2tlbi5tX2xvY2F0aW9uLmVuZE9mZnNldCwgbV90b2tl
bi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIG1fbGV4ZXItPnNldExpbmVO
dW1iZXIobV90b2tlbi5tX2xvY2F0aW9uLmxpbmUpOwogICAgICAgICAKICAgICAgICAgbmV4dCgp
OwpAQCAtODU5LDIwICs4OTEsMjQgQEAgdGVtcGxhdGUgPEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJl
cXVpcmVtZQogICAgICAgICBmYWlsSWZUcnVlV2l0aE5hbWVBbmRNZXNzYWdlKG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqbmFtZSwgIkZ1bmN0aW9uIG5hbWUiLCBuYW1lLT5pbXBs
KCksICJpcyBub3QgdmFsaWQgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgZmFpbElmVHJ1ZVdp
dGhOYW1lQW5kTWVzc2FnZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09ICpuYW1lLCAiRnVu
Y3Rpb24gbmFtZSIsIG5hbWUtPmltcGwoKSwgImlzIG5vdCB2YWxpZCBpbiBzdHJpY3QgbW9kZSIp
OwogICAgIH0KLSAgICBjbG9zZUJyYWNlUG9zID0gbV90b2tlbi5tX2RhdGEuaW50VmFsdWU7Cisg
ICAgY2xvc2VCcmFjZU9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsKKyAgICB1bnNpZ25l
ZCBjbG9zZUJyYWNlTGluZSA9IG1fdG9rZW4ubV9kYXRhLmxpbmU7CisgICAgdW5zaWduZWQgY2xv
c2VCcmFjZUxpbmVTdGFydE9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLmxpbmVTdGFydE9mZnNldDsK
ICAgICAKICAgICAvLyBDYWNoZSB0aGUgdG9rZW5pemVyIHN0YXRlIGFuZCB0aGUgZnVuY3Rpb24g
c2NvcGUgdGhlIGZpcnN0IHRpbWUgdGhlIGZ1bmN0aW9uIGlzIHBhcnNlZC4KICAgICAvLyBBbnkg
ZnV0dXJlIHJlcGFyc2luZyBjYW4gdGhlbiBza2lwIHRoZSBmdW5jdGlvbi4KICAgICBzdGF0aWMg
Y29uc3QgaW50IG1pbmltdW1GdW5jdGlvbkxlbmd0aFRvQ2FjaGUgPSAxNjsKICAgICBPd25QdHI8
U291cmNlUHJvdmlkZXJDYWNoZUl0ZW0+IG5ld0luZm87Ci0gICAgaW50IGZ1bmN0aW9uTGVuZ3Ro
ID0gY2xvc2VCcmFjZVBvcyAtIG9wZW5CcmFjZVBvczsKKyAgICBpbnQgZnVuY3Rpb25MZW5ndGgg
PSBjbG9zZUJyYWNlT2Zmc2V0IC0gb3BlbkJyYWNlT2Zmc2V0OwogICAgIGlmIChUcmVlQnVpbGRl
cjo6Q2FuVXNlRnVuY3Rpb25DYWNoZSAmJiBtX2Z1bmN0aW9uQ2FjaGUgJiYgZnVuY3Rpb25MZW5n
dGggPiBtaW5pbXVtRnVuY3Rpb25MZW5ndGhUb0NhY2hlKSB7CiAgICAgICAgIFNvdXJjZVByb3Zp
ZGVyQ2FjaGVJdGVtQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgICAgIHBhcmFt
ZXRlcnMuZnVuY3Rpb25TdGFydCA9IGZ1bmN0aW9uU3RhcnQ7Ci0gICAgICAgIHBhcmFtZXRlcnMu
Y2xvc2VCcmFjZUxpbmUgPSBtX3Rva2VuLm1fbG9jYXRpb24ubGluZTsKLSAgICAgICAgcGFyYW1l
dGVycy5jbG9zZUJyYWNlUG9zID0gY2xvc2VCcmFjZVBvczsKKyAgICAgICAgcGFyYW1ldGVycy5j
bG9zZUJyYWNlTGluZSA9IGNsb3NlQnJhY2VMaW5lOworICAgICAgICBwYXJhbWV0ZXJzLmNsb3Nl
QnJhY2VPZmZzZXQgPSBjbG9zZUJyYWNlT2Zmc2V0OworICAgICAgICBwYXJhbWV0ZXJzLmNsb3Nl
QnJhY2VMaW5lU3RhcnRPZmZzZXQgPSBjbG9zZUJyYWNlTGluZVN0YXJ0T2Zmc2V0OwogICAgICAg
ICBmdW5jdGlvblNjb3BlLT5maWxsUGFyYW1ldGVyc0ZvclNvdXJjZVByb3ZpZGVyQ2FjaGUocGFy
YW1ldGVycyk7CiAgICAgICAgIG5ld0luZm8gPSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbTo6Y3Jl
YXRlKHBhcmFtZXRlcnMpOworCiAgICAgfQogICAgIGNvbnRleHQuc2V0RnVuY3Rpb25TdGFydChi
b2R5LCBmdW5jdGlvblN0YXJ0KTsKICAgICAKQEAgLTg4MCw3ICs5MTYsNyBAQCB0ZW1wbGF0ZSA8
RnVuY3Rpb25SZXF1aXJlbWVudHMgcmVxdWlyZW1lCiAgICAgbWF0Y2hPckZhaWwoQ0xPU0VCUkFD
RSk7CiAgICAgCiAgICAgaWYgKG5ld0luZm8pCi0gICAgICAgIG1fZnVuY3Rpb25DYWNoZS0+YWRk
KG9wZW5CcmFjZVBvcywgbmV3SW5mby5yZWxlYXNlKCkpOworICAgICAgICBtX2Z1bmN0aW9uQ2Fj
aGUtPmFkZChvcGVuQnJhY2VPZmZzZXQsIG5ld0luZm8ucmVsZWFzZSgpKTsKICAgICAKICAgICBu
ZXh0KCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC04OTUsMjYgKzkzMSwzMSBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiAgICAgY29uc3QgSWRlbnRpZmllciogbmFt
ZSA9IDA7CiAgICAgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgcGFyYW1ldGVycyA9IDA7CiAgICAg
VHJlZUZ1bmN0aW9uQm9keSBib2R5ID0gMDsKLSAgICBpbnQgb3BlbkJyYWNlUG9zID0gMDsKLSAg
ICBpbnQgY2xvc2VCcmFjZVBvcyA9IDA7CisgICAgdW5zaWduZWQgb3BlbkJyYWNlT2Zmc2V0ID0g
MDsKKyAgICB1bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0ID0gMDsKICAgICBpbnQgYm9keVN0YXJ0
TGluZSA9IDA7Ci0gICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvPEZ1bmN0aW9uTmVl
ZHNOYW1lLCB0cnVlPihjb250ZXh0LCBuYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQ
b3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpKSk7CisgICAgdW5zaWduZWQgYm9keVN0
YXJ0Q29sdW1uID0gMDsKKyAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm88RnVuY3Rp
b25OZWVkc05hbWUsIHRydWU+KGNvbnRleHQsIG5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5C
cmFjZU9mZnNldCwgY2xvc2VCcmFjZU9mZnNldCwgYm9keVN0YXJ0TGluZSwgYm9keVN0YXJ0Q29s
dW1uKSkpOwogICAgIGZhaWxJZkZhbHNlKG5hbWUpOwogICAgIGZhaWxJZkZhbHNlSWZTdHJpY3Qo
ZGVjbGFyZVZhcmlhYmxlKG5hbWUpKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jRGVj
bFN0YXRlbWVudChsb2NhdGlvbiwgbmFtZSwgYm9keSwgcGFyYW1ldGVycywgb3BlbkJyYWNlUG9z
LCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKKyAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVGdW5jRGVjbFN0YXRlbWVudChsb2NhdGlvbiwgbmFtZSwgYm9keSwgcGFy
YW1ldGVycywgb3BlbkJyYWNlT2Zmc2V0LCBjbG9zZUJyYWNlT2Zmc2V0LCBib2R5U3RhcnRMaW5l
LCBtX2xhc3RMaW5lLCBib2R5U3RhcnRDb2x1bW4pOwogfQogCiBzdHJ1Y3QgTGFiZWxJbmZvIHsK
LSAgICBMYWJlbEluZm8oY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGludCBzdGFydCwgaW50IGVu
ZCkKKyAgICBMYWJlbEluZm8oY29uc3QgSWRlbnRpZmllciogaWRlbnQsIHVuc2lnbmVkIHN0YXJ0
LCB1bnNpZ25lZCBlbmQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3Rh
cnQpCiAgICAgOiBtX2lkZW50KGlkZW50KQogICAgICwgbV9zdGFydChzdGFydCkKICAgICAsIG1f
ZW5kKGVuZCkKKyAgICAsIG1fZGl2b3RMaW5lKGRpdm90TGluZSkKKyAgICAsIG1fZGl2b3RMaW5l
U3RhcnQoZGl2b3RMaW5lU3RhcnQpCiAgICAgewogICAgIH0KICAgICAKICAgICBjb25zdCBJZGVu
dGlmaWVyKiBtX2lkZW50OwotICAgIGludCBtX3N0YXJ0OwotICAgIGludCBtX2VuZDsKKyAgICB1
bnNpZ25lZCBtX3N0YXJ0OworICAgIHVuc2lnbmVkIG1fZW5kOworICAgIHVuc2lnbmVkIG1fZGl2
b3RMaW5lOworICAgIHVuc2lnbmVkIG1fZGl2b3RMaW5lU3RhcnQ7CiB9OwogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtOTI1LDEwICs5NjYsMTAgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZQogICAgICAqIHNwZWNpYWwgY2FzZSB0aGF0IGxvb2tz
IGZvciBhIGNvbG9uIGFzIHRoZSBuZXh0IGNoYXJhY3RlciBpbiB0aGUgaW5wdXQuCiAgICAgICov
CiAgICAgVmVjdG9yPExhYmVsSW5mbz4gbGFiZWxzOwotICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbjsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24obV9zb3VyY2UtPnN0YXJ0T2Zmc2V0
KCkpOwogICAgIGRvIHsKICAgICAgICAgaW50IHN0YXJ0ID0gdG9rZW5TdGFydCgpOwotICAgICAg
ICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgICAgIGludCBzdGFydGluZ0xpbmUg
PSB0b2tlbkxpbmUoKTsKICAgICAgICAgbG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAg
ICAgIGlmICghbmV4dFRva2VuSXNDb2xvbigpKSB7CiAgICAgICAgICAgICAvLyBJZiB3ZSBoaXQg
dGhpcyBwYXRoIHdlJ3JlIG1ha2luZyBhIGV4cHJlc3Npb24gc3RhdGVtZW50LCB3aGljaApAQCAt
OTM3LDEwICs5NzgsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVt
ZQogICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gZXhwcmVzc2lvbiA9IHBhcnNlRXhwcmVzc2lv
bihjb250ZXh0KTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGV4cHJlc3Npb24pOwogICAgICAg
ICAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKLSAgICAgICAgICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZUV4cHJTdGF0ZW1lbnQobG9jYXRpb24sIGV4cHJlc3Npb24sIHN0YXJ0TGlu
ZSwgbV9sYXN0TGluZSk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFeHByU3Rh
dGVtZW50KGxvY2F0aW9uLCBleHByZXNzaW9uLCBzdGFydGluZ0xpbmUsIG1fbGFzdExpbmUpOwog
ICAgICAgICB9CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2Rh
dGEuaWRlbnQ7CiAgICAgICAgIGludCBlbmQgPSB0b2tlbkVuZCgpOworICAgICAgICB1bnNpZ25l
ZCBkaXZvdExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICAgICAgdW5zaWduZWQgZGl2b3RMaW5lU3Rh
cnQgPSB0b2tlbkxpbmVTdGFydCgpOwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGNvbnN1bWVP
ckZhaWwoQ09MT04pOwogICAgICAgICBpZiAoIW1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZCkgewpA
QCAtOTQ5LDcgKzk5Miw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRl
bWUKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGFiZWxzLnNpemUoKTsgaSsr
KQogICAgICAgICAgICAgICAgIGZhaWxJZlRydWUoaWRlbnQtPmltcGwoKSA9PSBsYWJlbHNbaV0u
bV9pZGVudC0+aW1wbCgpKTsKICAgICAgICAgICAgIGZhaWxJZlRydWUoZ2V0TGFiZWwoaWRlbnQp
KTsKLSAgICAgICAgICAgIGxhYmVscy5hcHBlbmQoTGFiZWxJbmZvKGlkZW50LCBzdGFydCwgZW5k
KSk7CisgICAgICAgICAgICBsYWJlbHMuYXBwZW5kKExhYmVsSW5mbyhpZGVudCwgc3RhcnQsIGVu
ZCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCkpOwogICAgICAgICB9CiAgICAgfSB3aGlsZSAo
bWF0Y2goSURFTlQpKTsKICAgICBib29sIGlzTG9vcCA9IGZhbHNlOwpAQCAtOTc2LDcgKzEwMTks
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiAgICAgZmFpbElm
RmFsc2Uoc3RhdGVtZW50KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxhYmVscy5zaXpl
KCk7IGkrKykgewogICAgICAgICBjb25zdCBMYWJlbEluZm8mIGluZm8gPSBsYWJlbHNbbGFiZWxz
LnNpemUoKSAtIGkgLSAxXTsKLSAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5jcmVhdGVMYWJl
bFN0YXRlbWVudChsb2NhdGlvbiwgaW5mby5tX2lkZW50LCBzdGF0ZW1lbnQsIGluZm8ubV9zdGFy
dCwgaW5mby5tX2VuZCk7CisgICAgICAgIHN0YXRlbWVudCA9IGNvbnRleHQuY3JlYXRlTGFiZWxT
dGF0ZW1lbnQobG9jYXRpb24sIGluZm8ubV9pZGVudCwgc3RhdGVtZW50LCBpbmZvLm1fc3RhcnQs
IGluZm8ubV9lbmQsIGluZm8ubV9kaXZvdExpbmUsIGluZm8ubV9kaXZvdExpbmVTdGFydCk7CiAg
ICAgfQogICAgIHJldHVybiBzdGF0ZW1lbnQ7CiB9CkBAIC0xMTA2LDYgKzExNDksOCBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVHJlZUJ1aWxkZXI+IFRyZWVFeHByCiB7CiAgICAgZmFpbElmU3RhY2tP
dmVyZmxvdygpOwogICAgIGludCBzdGFydCA9IHRva2VuU3RhcnQoKTsKKyAgICB1bnNpZ25lZCBs
aW5lID0gdG9rZW5MaW5lKCk7CisgICAgdW5zaWduZWQgbGluZVN0YXJ0ID0gdG9rZW5MaW5lU3Rh
cnQoKTsKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAg
ICBpbnQgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCA9IG1fYXNzaWdubWVudENvdW50OwogICAgIGlu
dCBpbml0aWFsTm9uTEhTQ291bnQgPSBtX25vbkxIU0NvdW50OwpAQCAtMTEzNiw4ICsxMTgxLDEw
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUcmVlQnVpbGRlcj4gVHJlZUV4cHIKICAgICAgICAgfQog
ICAgICAgICBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAgICAgICAgaGFkQXNzaWdu
bWVudCA9IHRydWU7Ci0gICAgICAgIGNvbnRleHQuYXNzaWdubWVudFN0YWNrQXBwZW5kKGFzc2ln
bm1lbnRTdGFjaywgbGhzLCBzdGFydCwgdG9rZW5TdGFydCgpLCBtX2Fzc2lnbm1lbnRDb3VudCwg
b3ApOworICAgICAgICBjb250ZXh0LmFzc2lnbm1lbnRTdGFja0FwcGVuZChhc3NpZ25tZW50U3Rh
Y2ssIGxocywgc3RhcnQsIHRva2VuU3RhcnQoKSwgbGluZSwgbGluZVN0YXJ0LCBtX2Fzc2lnbm1l
bnRDb3VudCwgb3ApOwogICAgICAgICBzdGFydCA9IHRva2VuU3RhcnQoKTsKKyAgICAgICAgbGlu
ZSA9IHRva2VuTGluZSgpOworICAgICAgICBsaW5lU3RhcnQgPSB0b2tlbkxpbmVTdGFydCgpOwog
ICAgICAgICBtX2Fzc2lnbm1lbnRDb3VudCsrOwogICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpE
b250QnVpbGRTdHJpbmdzKTsKICAgICAgICAgaWYgKHN0cmljdE1vZGUoKSAmJiBtX2xhc3RJZGVu
dGlmaWVyICYmIGNvbnRleHQuaXNSZXNvbHZlKGxocykpIHsKQEAgLTEyMTAsNyArMTI1Nyw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3MKICAgICAgICAgVHJlZUV4
cHJlc3Npb24gY3VycmVudCA9IHBhcnNlVW5hcnlFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAg
ICBmYWlsSWZGYWxzZShjdXJyZW50KTsKICAgICAgICAgCi0gICAgICAgIGNvbnRleHQuYXBwZW5k
QmluYXJ5RXhwcmVzc2lvbkluZm8ob3BlcmFuZFN0YWNrRGVwdGgsIGN1cnJlbnQsIGV4cHJTdGFy
dCwgbGFzdFRva2VuRW5kKCksIGxhc3RUb2tlbkVuZCgpLCBpbml0aWFsQXNzaWdubWVudHMgIT0g
bV9hc3NpZ25tZW50Q291bnQpOworICAgICAgICBjb250ZXh0LmFwcGVuZEJpbmFyeUV4cHJlc3Np
b25JbmZvKG9wZXJhbmRTdGFja0RlcHRoLCBjdXJyZW50LCBleHByU3RhcnQsIGxhc3RUb2tlbkVu
ZCgpLCBsYXN0VG9rZW5FbmQoKSwgbGFzdFRva2VuTGluZSgpLCBsYXN0VG9rZW5MaW5lU3RhcnQo
KSwgaW5pdGlhbEFzc2lnbm1lbnRzICE9IG1fYXNzaWdubWVudENvdW50KTsKICAgICAgICAgaW50
IHByZWNlZGVuY2UgPSBpc0JpbmFyeU9wZXJhdG9yKG1fdG9rZW4ubV90eXBlKTsKICAgICAgICAg
aWYgKCFwcmVjZWRlbmNlKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjY3LDkgKzEzMTQsMTAg
QEAgdGVtcGxhdGUgPGJvb2wgY29tcGxldGUsIGNsYXNzIFRyZWVCdWlsZAogICAgICAgICBjb25z
dCBJZGVudGlmaWVyKiBhY2Nlc3Nvck5hbWUgPSAwOwogICAgICAgICBUcmVlRm9ybWFsUGFyYW1l
dGVyTGlzdCBwYXJhbWV0ZXJzID0gMDsKICAgICAgICAgVHJlZUZ1bmN0aW9uQm9keSBib2R5ID0g
MDsKLSAgICAgICAgaW50IG9wZW5CcmFjZVBvcyA9IDA7Ci0gICAgICAgIGludCBjbG9zZUJyYWNl
UG9zID0gMDsKKyAgICAgICAgdW5zaWduZWQgb3BlbkJyYWNlT2Zmc2V0ID0gMDsKKyAgICAgICAg
dW5zaWduZWQgY2xvc2VCcmFjZU9mZnNldCA9IDA7CiAgICAgICAgIGludCBib2R5U3RhcnRMaW5l
ID0gMDsKKyAgICAgICAgdW5zaWduZWQgYm9keVN0YXJ0Q29sdW1uID0gMDsKICAgICAgICAgUHJv
cGVydHlOb2RlOjpUeXBlIHR5cGU7CiAgICAgICAgIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVy
dHlOYW1lcy0+Z2V0KQogICAgICAgICAgICAgdHlwZSA9IFByb3BlcnR5Tm9kZTo6R2V0dGVyOwpA
QCAtMTI4NywxMCArMTMzNSwxMCBAQCB0ZW1wbGF0ZSA8Ym9vbCBjb21wbGV0ZSwgY2xhc3MgVHJl
ZUJ1aWxkCiAgICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIGZhaWxJZkZh
bHNlKChwYXJzZUZ1bmN0aW9uSW5mbzxGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBmYWxzZT4oY29u
dGV4dCwgYWNjZXNzb3JOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3Nl
QnJhY2VQb3MsIGJvZHlTdGFydExpbmUpKSk7CisgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1
bmN0aW9uSW5mbzxGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBmYWxzZT4oY29udGV4dCwgYWNjZXNz
b3JOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZz
ZXQsIGJvZHlTdGFydExpbmUsIGJvZHlTdGFydENvbHVtbikpKTsKICAgICAgICAgaWYgKHN0cmlu
Z1Byb3BlcnR5TmFtZSkKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0LnRlbXBsYXRlIGNyZWF0
ZUdldHRlck9yU2V0dGVyUHJvcGVydHk8Y29tcGxldGU+KGxvY2F0aW9uLCB0eXBlLCBzdHJpbmdQ
cm9wZXJ0eU5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBv
cywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LnRl
bXBsYXRlIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHk8Y29tcGxldGU+KGNvbnN0X2Nhc3Q8
Vk0qPihtX3ZtKSwgbG9jYXRpb24sIHR5cGUsIG51bWVyaWNQcm9wZXJ0eU5hbWUsIHBhcmFtZXRl
cnMsIGJvZHksIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9s
YXN0TGluZSk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBjcmVhdGVHZXR0
ZXJPclNldHRlclByb3BlcnR5PGNvbXBsZXRlPihsb2NhdGlvbiwgdHlwZSwgc3RyaW5nUHJvcGVy
dHlOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZz
ZXQsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUsIGJvZHlTdGFydENvbHVtbik7CisgICAgICAg
IHJldHVybiBjb250ZXh0LnRlbXBsYXRlIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHk8Y29t
cGxldGU+KGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbG9jYXRpb24sIHR5cGUsIG51bWVyaWNQcm9w
ZXJ0eU5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZU9mZnNldCwgY2xvc2VCcmFjZU9m
ZnNldCwgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSwgYm9keVN0YXJ0Q29sdW1uKTsKICAgICB9
CiAgICAgY2FzZSBOVU1CRVI6IHsKICAgICAgICAgZG91YmxlIHByb3BlcnR5TmFtZSA9IG1fdG9r
ZW4ubV9kYXRhLmRvdWJsZVZhbHVlOwpAQCAtMTMwOSw3ICsxMzU3LDggQEAgdGVtcGxhdGUgPGJv
b2wgY29tcGxldGUsIGNsYXNzIFRyZWVCdWlsZAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlw
ZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlT2JqZWN0TGl0ZXJhbChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKLSAg
ICBpbnQgc3RhcnRPZmZzZXQgPSBtX3Rva2VuLm1fZGF0YS5pbnRWYWx1ZTsKKyAgICBpbnQgc3Rh
cnRPZmZzZXQgPSBtX3Rva2VuLm1fZGF0YS5vZmZzZXQ7CisgICAgdW5zaWduZWQgb2xkTGluZVN0
YXJ0T2Zmc2V0ID0gbV9sZXhlci0+Y3VycmVudExpbmVTdGFydE9mZnNldCgpOwogICAgIHVuc2ln
bmVkIG9sZExhc3RMaW5lTnVtYmVyID0gbV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKTsKICAgICB1
bnNpZ25lZCBvbGRMaW5lTnVtYmVyID0gbV9sZXhlci0+bGluZU51bWJlcigpOwogICAgIGNvbnN1
bWVPckZhaWxXaXRoRmxhZ3MoT1BFTkJSQUNFLCBUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5n
cyk7CkBAIC0xMzI1LDcgKzEzNzQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzCiAgICAgVHJlZVByb3BlcnR5IHByb3BlcnR5ID0gcGFyc2VQcm9wZXJ0eTxmYWxz
ZT4oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UocHJvcGVydHkpOwogICAgIGlmICghbV9zeW50
YXhBbHJlYWR5VmFsaWRhdGVkICYmIGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSkgIT0gUHJvcGVy
dHlOb2RlOjpDb25zdGFudCkgewotICAgICAgICBtX2xleGVyLT5zZXRPZmZzZXQoc3RhcnRPZmZz
ZXQpOworICAgICAgICBtX2xleGVyLT5zZXRPZmZzZXQoc3RhcnRPZmZzZXQsIG9sZExpbmVTdGFy
dE9mZnNldCk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgbV9sZXhlci0+c2V0TGFzdExpbmVO
dW1iZXIob2xkTGFzdExpbmVOdW1iZXIpOwogICAgICAgICBtX2xleGVyLT5zZXRMaW5lTnVtYmVy
KG9sZExpbmVOdW1iZXIpOwpAQCAtMTM0Miw3ICsxMzkxLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlRXhwcmVzcwogICAgICAgICBwcm9wZXJ0eSA9IHBhcnNlUHJvcGVydHk8
ZmFsc2U+KGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShwcm9wZXJ0eSk7CiAgICAgICAg
IGlmICghbV9zeW50YXhBbHJlYWR5VmFsaWRhdGVkICYmIGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0
eSkgIT0gUHJvcGVydHlOb2RlOjpDb25zdGFudCkgewotICAgICAgICAgICAgbV9sZXhlci0+c2V0
T2Zmc2V0KHN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgICAgIG1fbGV4ZXItPnNldE9mZnNldChzdGFy
dE9mZnNldCwgb2xkTGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAg
ICAgICAgIG1fbGV4ZXItPnNldExhc3RMaW5lTnVtYmVyKG9sZExhc3RMaW5lTnVtYmVyKTsKICAg
ICAgICAgICAgIG1fbGV4ZXItPnNldExpbmVOdW1iZXIob2xkTGluZU51bWJlcik7CkBAIC0xNDg4
LDEyICsxNTM3LDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3MK
ICAgICB9CiAgICAgY2FzZSBJREVOVDogewogICAgICAgICBpbnQgc3RhcnQgPSB0b2tlblN0YXJ0
KCk7CisgICAgICAgIGludCBsaW5lID0gdG9rZW5MaW5lKCk7CisgICAgICAgIGludCBsaW5lU3Rh
cnQgPSB0b2tlbkxpbmVTdGFydCgpOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9
IG1fdG9rZW4ubV9kYXRhLmlkZW50OwogICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24o
dG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBjdXJyZW50U2NvcGUo
KS0+dXNlVmFyaWFibGUoaWRlbnQsIG1fdm0tPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gKmlkZW50
KTsKICAgICAgICAgbV9sYXN0SWRlbnRpZmllciA9IGlkZW50OwotICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVSZXNvbHZlKGxvY2F0aW9uLCBpZGVudCwgc3RhcnQpOworICAgICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVSZXNvbHZlKGxvY2F0aW9uLCBpZGVudCwgc3RhcnQsIGxpbmUsIGxp
bmVTdGFydCk7CiAgICAgfQogICAgIGNhc2UgU1RSSU5HOiB7CiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CkBAIC0xNTMzLDkgKzE1ODQsMTEg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzcwogICAgICAgICAgICAg
ZmFpbElmRmFsc2UobV9sZXhlci0+c2NhblJlZ0V4cChwYXR0ZXJuLCBmbGFncykpOwogICAgICAg
ICAKICAgICAgICAgaW50IHN0YXJ0ID0gdG9rZW5TdGFydCgpOworICAgICAgICBpbnQgbGluZSA9
IHRva2VuTGluZSgpOworICAgICAgICBpbnQgbGluZVN0YXJ0ID0gdG9rZW5MaW5lU3RhcnQoKTsK
ICAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAg
ICAgIG5leHQoKTsKLSAgICAgICAgVHJlZUV4cHJlc3Npb24gcmUgPSBjb250ZXh0LmNyZWF0ZVJl
Z0V4cChsb2NhdGlvbiwgKnBhdHRlcm4sICpmbGFncywgc3RhcnQpOworICAgICAgICBUcmVlRXhw
cmVzc2lvbiByZSA9IGNvbnRleHQuY3JlYXRlUmVnRXhwKGxvY2F0aW9uLCAqcGF0dGVybiwgKmZs
YWdzLCBzdGFydCwgbGluZSwgbGluZVN0YXJ0KTsKICAgICAgICAgaWYgKCFyZSkgewogICAgICAg
ICAgICAgY29uc3QgY2hhciogeWFyckVycm9yTXNnID0gWWFycjo6Y2hlY2tTeW50YXgocGF0dGVy
bi0+c3RyaW5nKCkpOwogICAgICAgICAgICAgZmFpbFdpdGhNZXNzYWdlKHlhcnJFcnJvck1zZyk7
CkBAIC0xNTc4LDggKzE2MzEsMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RXhwcmVzcwogICAgIFRyZWVFeHByZXNzaW9uIGJhc2UgPSAwOwogICAgIGludCBzdGFydCA9IHRv
a2VuU3RhcnQoKTsKICAgICBpbnQgZXhwcmVzc2lvblN0YXJ0ID0gc3RhcnQ7CisgICAgaW50IGV4
cHJlc3Npb25MaW5lID0gdG9rZW5MaW5lKCk7CisgICAgaW50IGV4cHJlc3Npb25MaW5lU3RhcnQg
PSB0b2tlbkxpbmVTdGFydCgpOwogICAgIGludCBuZXdDb3VudCA9IDA7Ci0gICAgSlNUb2tlbkxv
Y2F0aW9uIGxvY2F0aW9uOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbihtX3NvdXJjZS0+
c3RhcnRPZmZzZXQoKSk7CiAgICAgd2hpbGUgKG1hdGNoKE5FVykpIHsKICAgICAgICAgbmV4dCgp
OwogICAgICAgICBuZXdDb3VudCsrOwpAQCAtMTU4OSwxMyArMTY0NCwxNCBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIq
IG5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7CiAgICAgICAgIFRy
ZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IHBhcmFtZXRlcnMgPSAwOwogICAgICAgICBUcmVlRnVuY3Rp
b25Cb2R5IGJvZHkgPSAwOwotICAgICAgICBpbnQgb3BlbkJyYWNlUG9zID0gMDsKLSAgICAgICAg
aW50IGNsb3NlQnJhY2VQb3MgPSAwOworICAgICAgICB1bnNpZ25lZCBvcGVuQnJhY2VPZmZzZXQg
PSAwOworICAgICAgICB1bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0ID0gMDsKICAgICAgICAgaW50
IGJvZHlTdGFydExpbmUgPSAwOworICAgICAgICB1bnNpZ25lZCBib2R5U3RhcnRDb2x1bW4gPSAw
OwogICAgICAgICBsb2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsKICAgICAgICAgbmV4dCgpOwot
ICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm88RnVuY3Rpb25Ob1JlcXVpcmVt
ZW50cywgZmFsc2U+KGNvbnRleHQsIG5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZVBv
cywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSkpKTsKLSAgICAgICAgYmFzZSA9IGNvbnRl
eHQuY3JlYXRlRnVuY3Rpb25FeHByKGxvY2F0aW9uLCBuYW1lLCBib2R5LCBwYXJhbWV0ZXJzLCBv
cGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOwor
ICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm88RnVuY3Rpb25Ob1JlcXVpcmVt
ZW50cywgZmFsc2U+KGNvbnRleHQsIG5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZU9m
ZnNldCwgY2xvc2VCcmFjZU9mZnNldCwgYm9keVN0YXJ0TGluZSwgYm9keVN0YXJ0Q29sdW1uKSkp
OworICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobG9jYXRpb24sIG5h
bWUsIGJvZHksIHBhcmFtZXRlcnMsIG9wZW5CcmFjZU9mZnNldCwgY2xvc2VCcmFjZU9mZnNldCwg
Ym9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSwgYm9keVN0YXJ0Q29sdW1uKTsKICAgICB9IGVsc2UK
ICAgICAgICAgYmFzZSA9IHBhcnNlUHJpbWFyeUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgCkBA
IC0xNjA2LDEyICsxNjYyLDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4
cHJlc3MKICAgICAgICAgY2FzZSBPUEVOQlJBQ0tFVDogewogICAgICAgICAgICAgbV9ub25Ucml2
aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAgICAgICBpbnQgZXhwcmVzc2lvbkVuZCA9IGxh
c3RUb2tlbkVuZCgpOworICAgICAgICAgICAgaW50IGV4cHJlc3Npb25MaW5lID0gbGFzdFRva2Vu
TGluZSgpOworICAgICAgICAgICAgaW50IGV4cHJlc3Npb25MaW5lU3RhcnQgPSBsYXN0VG9rZW5M
aW5lU3RhcnQoKTsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGludCBub25MSFND
b3VudCA9IG1fbm9uTEhTQ291bnQ7CiAgICAgICAgICAgICBpbnQgaW5pdGlhbEFzc2lnbm1lbnRz
ID0gbV9hc3NpZ25tZW50Q291bnQ7CiAgICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBwcm9wZXJ0
eSA9IHBhcnNlRXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHBy
b3BlcnR5KTsKLSAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZUJyYWNrZXRBY2Nlc3Mo
bG9jYXRpb24sIGJhc2UsIHByb3BlcnR5LCBpbml0aWFsQXNzaWdubWVudHMgIT0gbV9hc3NpZ25t
ZW50Q291bnQsIGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwgdG9rZW5FbmQoKSk7Cisg
ICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVCcmFja2V0QWNjZXNzKGxvY2F0aW9uLCBi
YXNlLCBwcm9wZXJ0eSwgaW5pdGlhbEFzc2lnbm1lbnRzICE9IG1fYXNzaWdubWVudENvdW50LCBl
eHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25FbmQsIHRva2VuRW5kKCksIGV4cHJlc3Npb25MaW5l
LCBleHByZXNzaW9uTGluZVN0YXJ0KTsKICAgICAgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VC
UkFDS0VUKTsKICAgICAgICAgICAgIG1fbm9uTEhTQ291bnQgPSBub25MSFNDb3VudDsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTYyMiwxNCArMTY4MCwxOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAgICAgICAgICAgICBpZiAobmV3Q291bnQpIHsKICAgICAg
ICAgICAgICAgICBuZXdDb3VudC0tOwogICAgICAgICAgICAgICAgIGludCBleHByRW5kID0gbGFz
dFRva2VuRW5kKCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgZXhwcmVzc2lvbkxpbmUgPSBs
YXN0VG9rZW5MaW5lKCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgZXhwcmVzc2lvbkxpbmVT
dGFydCA9IGxhc3RUb2tlbkxpbmVTdGFydCgpOwogICAgICAgICAgICAgICAgIFRyZWVBcmd1bWVu
dHMgYXJndW1lbnRzID0gcGFyc2VBcmd1bWVudHMoY29udGV4dCk7CiAgICAgICAgICAgICAgICAg
ZmFpbElmRmFsc2UoYXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4dC5j
cmVhdGVOZXdFeHByKGxvY2F0aW9uLCBiYXNlLCBhcmd1bWVudHMsIHN0YXJ0LCBleHByRW5kLCBs
YXN0VG9rZW5FbmQoKSk7CisgICAgICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlTmV3
RXhwcihsb2NhdGlvbiwgYmFzZSwgYXJndW1lbnRzLCBzdGFydCwgZXhwckVuZCwgbGFzdFRva2Vu
RW5kKCksIGV4cHJlc3Npb25MaW5lLCBleHByZXNzaW9uTGluZVN0YXJ0KTsKICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaW50IGV4cHJlc3Npb25FbmQgPSBsYXN0VG9rZW5F
bmQoKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBleHByZXNzaW9uTGluZSA9IGxhc3RUb2tl
bkxpbmUoKTsKKyAgICAgICAgICAgICAgICBpbnQgZXhwcmVzc2lvbkxpbmVTdGFydCA9IGxhc3RU
b2tlbkxpbmVTdGFydCgpOwogICAgICAgICAgICAgICAgIFRyZWVBcmd1bWVudHMgYXJndW1lbnRz
ID0gcGFyc2VBcmd1bWVudHMoY29udGV4dCk7CiAgICAgICAgICAgICAgICAgZmFpbElmRmFsc2Uo
YXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4dC5tYWtlRnVuY3Rpb25D
YWxsTm9kZShsb2NhdGlvbiwgYmFzZSwgYXJndW1lbnRzLCBleHByZXNzaW9uU3RhcnQsIGV4cHJl
c3Npb25FbmQsIGxhc3RUb2tlbkVuZCgpKTsKKyAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4
dC5tYWtlRnVuY3Rpb25DYWxsTm9kZShsb2NhdGlvbiwgYmFzZSwgYXJndW1lbnRzLCBleHByZXNz
aW9uU3RhcnQsIGV4cHJlc3Npb25FbmQsIGxhc3RUb2tlbkVuZCgpLCBleHByZXNzaW9uTGluZSwg
ZXhwcmVzc2lvbkxpbmVTdGFydCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX25vbkxI
U0NvdW50ID0gbm9uTEhTQ291bnQ7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE2MzcsOSArMTY5
OSwxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAgICAgICAg
IGNhc2UgRE9UOiB7CiAgICAgICAgICAgICBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsK
ICAgICAgICAgICAgIGludCBleHByZXNzaW9uRW5kID0gbGFzdFRva2VuRW5kKCk7CisgICAgICAg
ICAgICBleHByZXNzaW9uTGluZVN0YXJ0ID0gbGFzdFRva2VuTGluZVN0YXJ0KCk7CiAgICAgICAg
ICAgICBuZXh0RXhwZWN0SWRlbnRpZmllcihMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcyB8
IFRyZWVCdWlsZGVyOjpEb250QnVpbGRLZXl3b3Jkcyk7CiAgICAgICAgICAgICBtYXRjaE9yRmFp
bChJREVOVCk7Ci0gICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVEb3RBY2Nlc3MobG9j
YXRpb24sIGJhc2UsIG1fdG9rZW4ubV9kYXRhLmlkZW50LCBleHByZXNzaW9uU3RhcnQsIGV4cHJl
c3Npb25FbmQsIHRva2VuRW5kKCkpOworICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRl
RG90QWNjZXNzKGxvY2F0aW9uLCBiYXNlLCBtX3Rva2VuLm1fZGF0YS5pZGVudCwgZXhwcmVzc2lv
blN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZCgpLCBleHByZXNzaW9uTGluZSwgZXhwcmVz
c2lvbkxpbmVTdGFydCk7CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQpAQCAtMTY0OSw3ICsxNzEyLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlRXhwcmVzcwogICAgIH0KIGVuZE1lbWJlckV4cHJlc3Npb246CiAgICAgd2hpbGUg
KG5ld0NvdW50LS0pCi0gICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZU5ld0V4cHIobG9jYXRp
b24sIGJhc2UsIHN0YXJ0LCBsYXN0VG9rZW5FbmQoKSk7CisgICAgICAgIGJhc2UgPSBjb250ZXh0
LmNyZWF0ZU5ld0V4cHIobG9jYXRpb24sIGJhc2UsIHN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgZXhw
cmVzc2lvbkxpbmUsIGV4cHJlc3Npb25MaW5lU3RhcnQpOwogICAgIHJldHVybiBiYXNlOwogfQog
CkBAIC0xNjgyLDExICsxNzQ1LDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHJlc3MKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBtX25vbkxIU0NvdW50
Kys7Ci0gICAgICAgIGNvbnRleHQuYXBwZW5kVW5hcnlUb2tlbih0b2tlblN0YWNrRGVwdGgsIG1f
dG9rZW4ubV90eXBlLCB0b2tlblN0YXJ0KCkpOworICAgICAgICBjb250ZXh0LmFwcGVuZFVuYXJ5
VG9rZW4odG9rZW5TdGFja0RlcHRoLCBtX3Rva2VuLm1fdHlwZSwgdG9rZW5TdGFydCgpLCB0b2tl
bkxpbmUoKSwgdG9rZW5MaW5lU3RhcnQoKSk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgbV9u
b25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgfQogICAgIGludCBzdWJFeHByU3RhcnQg
PSB0b2tlblN0YXJ0KCk7CisgICAgaW50IHN1YkV4cHJMaW5lID0gdG9rZW5MaW5lKCk7CisgICAg
aW50IHN1YkV4cHJMaW5lU3RhcnRQb3NpdGlvbiA9IHRva2VuTGluZVN0YXJ0KCk7CisgICAgQVNT
RVJUKHN1YkV4cHJTdGFydCA+PSBzdWJFeHByTGluZVN0YXJ0UG9zaXRpb24pOwogICAgIEpTVG9r
ZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIFRyZWVFeHByZXNzaW9u
IGV4cHIgPSBwYXJzZU1lbWJlckV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2Uo
ZXhwcik7CkBAIC0xNzAwLDcgKzE3NjYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVFeHByZXNzCiAgICAgY2FzZSBQTFVTUExVUzoKICAgICAgICAgbV9ub25Ucml2aWFsRXhw
cmVzc2lvbkNvdW50Kys7CiAgICAgICAgIG1fbm9uTEhTQ291bnQrKzsKLSAgICAgICAgZXhwciA9
IGNvbnRleHQubWFrZVBvc3RmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcFBsdXNQbHVzLCBzdWJF
eHByU3RhcnQsIGxhc3RUb2tlbkVuZCgpLCB0b2tlbkVuZCgpKTsKKyAgICAgICAgZXhwciA9IGNv
bnRleHQubWFrZVBvc3RmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcFBsdXNQbHVzLCBzdWJFeHBy
U3RhcnQsIGxhc3RUb2tlbkVuZCgpLCB0b2tlbkVuZCgpLCB0b2tlbkxpbmUoKSwgdG9rZW5MaW5l
U3RhcnQoKSk7CiAgICAgICAgIG1fYXNzaWdubWVudENvdW50Kys7CiAgICAgICAgIGZhaWxJZlRy
dWVJZlN0cmljdFdpdGhOYW1lQW5kTWVzc2FnZShpc0V2YWxPckFyZ3VtZW50cywgIiciLCBtX2xh
c3RJZGVudGlmaWVyLT5pbXBsKCksICInIGNhbm5vdCBiZSBtb2RpZmllZCBpbiBzdHJpY3QgbW9k
ZSIpOwogICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3QocmVxdWlyZXNMRXhwcik7CkBAIC0xNzA5
LDcgKzE3NzUsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAg
ICAgY2FzZSBNSU5VU01JTlVTOgogICAgICAgICBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQr
KzsKICAgICAgICAgbV9ub25MSFNDb3VudCsrOwotICAgICAgICBleHByID0gY29udGV4dC5tYWtl
UG9zdGZpeE5vZGUobG9jYXRpb24sIGV4cHIsIE9wTWludXNNaW51cywgc3ViRXhwclN0YXJ0LCBs
YXN0VG9rZW5FbmQoKSwgdG9rZW5FbmQoKSk7CisgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQ
b3N0Zml4Tm9kZShsb2NhdGlvbiwgZXhwciwgT3BNaW51c01pbnVzLCBzdWJFeHByU3RhcnQsIGxh
c3RUb2tlbkVuZCgpLCB0b2tlbkVuZCgpLCB0b2tlbkxpbmUoKSwgdG9rZW5MaW5lU3RhcnQoKSk7
CiAgICAgICAgIG1fYXNzaWdubWVudENvdW50Kys7CiAgICAgICAgIGZhaWxJZlRydWVJZlN0cmlj
dFdpdGhOYW1lQW5kTWVzc2FnZShpc0V2YWxPckFyZ3VtZW50cywgIiciLCBtX2xhc3RJZGVudGlm
aWVyLT5pbXBsKCksICInIGNhbm5vdCBiZSBtb2RpZmllZCBpbiBzdHJpY3QgbW9kZSIpOwogICAg
ICAgICBmYWlsSWZUcnVlSWZTdHJpY3QocmVxdWlyZXNMRXhwcik7CkBAIC0xNzIwLDcgKzE3ODYs
OSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAgICAgfQogICAg
IAogICAgIGludCBlbmQgPSBsYXN0VG9rZW5FbmQoKTsKLSAgICAKKyAgICBpbnQgZW5kTGluZSA9
IGxhc3RUb2tlbkxpbmUoKTsKKyAgICBpbnQgZW5kTGluZVN0YXJ0UG9zaXRpb24gPSBsYXN0VG9r
ZW5MaW5lU3RhcnQoKTsKKwogICAgIGlmICghVHJlZUJ1aWxkZXI6OkNyZWF0ZXNBU1QgJiYgKG1f
c3ludGF4QWxyZWFkeVZhbGlkYXRlZCB8fCAhc3RyaWN0TW9kZSgpKSkKICAgICAgICAgcmV0dXJu
IGV4cHI7CiAKQEAgLTE3NDIsMTIgKzE4MTAsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlRXhwcmVzcwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUExVU1BM
VVM6CiAgICAgICAgIGNhc2UgQVVUT1BMVVNQTFVTOgotICAgICAgICAgICAgZXhwciA9IGNvbnRl
eHQubWFrZVByZWZpeE5vZGUobG9jYXRpb24sIGV4cHIsIE9wUGx1c1BsdXMsIGNvbnRleHQudW5h
cnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCksIHN1YkV4cHJTdGFydCArIDEs
IGVuZCk7CisgICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlUHJlZml4Tm9kZShsb2NhdGlv
biwgZXhwciwgT3BQbHVzUGx1cywgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQodG9r
ZW5TdGFja0RlcHRoKSwgc3ViRXhwclN0YXJ0ICsgMSwgZW5kLCBzdWJFeHByTGluZSwgc3ViRXhw
ckxpbmVTdGFydFBvc2l0aW9uKTsKICAgICAgICAgICAgIG1fYXNzaWdubWVudENvdW50Kys7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBNSU5VU01JTlVTOgogICAgICAgICBjYXNl
IEFVVE9NSU5VU01JTlVTOgotICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVByZWZpeE5v
ZGUobG9jYXRpb24sIGV4cHIsIE9wTWludXNNaW51cywgY29udGV4dC51bmFyeVRva2VuU3RhY2tM
YXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwgc3ViRXhwclN0YXJ0ICsgMSwgZW5kKTsKKyAgICAg
ICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQcmVmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcE1p
bnVzTWludXMsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0
aCksIHN1YkV4cHJTdGFydCArIDEsIGVuZCwgc3ViRXhwckxpbmUsIHN1YkV4cHJMaW5lU3RhcnRQ
b3NpdGlvbik7CiAgICAgICAgICAgICBtX2Fzc2lnbm1lbnRDb3VudCsrOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVFlQRU9GOgpAQCAtMTc1OCwxMyArMTgyNiwxNCBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBERUxFVEVUT0tFTjoKICAgICAgICAgICAgIGZhaWxJZlRydWVJZlN0cmlj
dFdpdGhOYW1lQW5kTWVzc2FnZShjb250ZXh0LmlzUmVzb2x2ZShleHByKSwgIkNhbm5vdCBkZWxl
dGUgdW5xdWFsaWZpZWQgcHJvcGVydHkiLCBtX2xhc3RJZGVudGlmaWVyLT5pbXBsKCksICJpbiBz
dHJpY3QgbW9kZSIpOwotICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZURlbGV0ZU5vZGUo
bG9jYXRpb24sIGV4cHIsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3Rh
Y2tEZXB0aCksIGVuZCwgZW5kKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VEZWxl
dGVOb2RlKGxvY2F0aW9uLCBleHByLCBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0
b2tlblN0YWNrRGVwdGgpLCBlbmQsIGVuZCwgZW5kTGluZSwgZW5kTGluZVN0YXJ0UG9zaXRpb24p
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAvLyBJ
ZiB3ZSBnZXQgaGVyZSBzb21ldGhpbmcgaGFzIGdvbmUgaG9ycmlibHkgaG9ycmlibHkgd3JvbmcK
ICAgICAgICAgICAgIENSQVNIKCk7CiAgICAgICAgIH0KICAgICAgICAgc3ViRXhwclN0YXJ0ID0g
Y29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKTsKKyAgICAg
ICAgc3ViRXhwckxpbmVTdGFydFBvc2l0aW9uID0gY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0
TGluZVN0YXJ0UG9zaXRpb24odG9rZW5TdGFja0RlcHRoKTsKICAgICAgICAgY29udGV4dC51bmFy
eVRva2VuU3RhY2tSZW1vdmVMYXN0KHRva2VuU3RhY2tEZXB0aCk7CiAgICAgfQogICAgIHJldHVy
biBleHByOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCShyZXZpc2lv
biAxNTE5MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00ODIsMTEgKzQ4MiwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNGdW5j
dGlvbkJvZHlOb2RlKFNjb3BlTm9kZSopIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0Z1
bmN0aW9uQm9keU5vZGUoRnVuY3Rpb25Cb2R5Tm9kZSopIHsgcmV0dXJuIHRydWU7IH0KIAotCiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIG5leHQodW5zaWduZWQgbGV4ZXJGbGFncyA9IDApCiAgICAg
ewogICAgICAgICBtX2xhc3RMaW5lID0gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmU7CiAgICAgICAg
IG1fbGFzdFRva2VuRW5kID0gbV90b2tlbi5tX2xvY2F0aW9uLmVuZE9mZnNldDsKKyAgICAgICAg
bV9sYXN0VG9rZW5MaW5lU3RhcnQgPSBtX3Rva2VuLm1fbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0
OwogICAgICAgICBtX2xleGVyLT5zZXRMYXN0TGluZU51bWJlcihtX2xhc3RMaW5lKTsKICAgICAg
ICAgbV90b2tlbi5tX3R5cGUgPSBtX2xleGVyLT5sZXgoJm1fdG9rZW4ubV9kYXRhLCAmbV90b2tl
bi5tX2xvY2F0aW9uLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKCkpOwogICAgIH0KQEAgLTQ5NSw2
ICs0OTUsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgbV9sYXN0TGluZSA9IG1fdG9rZW4u
bV9sb2NhdGlvbi5saW5lOwogICAgICAgICBtX2xhc3RUb2tlbkVuZCA9IG1fdG9rZW4ubV9sb2Nh
dGlvbi5lbmRPZmZzZXQ7CisgICAgICAgIG1fbGFzdFRva2VuTGluZVN0YXJ0ID0gbV90b2tlbi5t
X2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKICAgICAgICAgbV9sZXhlci0+c2V0TGFzdExpbmVO
dW1iZXIobV9sYXN0TGluZSk7CiAgICAgICAgIG1fdG9rZW4ubV90eXBlID0gbV9sZXhlci0+bGV4
RXhwZWN0SWRlbnRpZmllcigmbV90b2tlbi5tX2RhdGEsICZtX3Rva2VuLm1fbG9jYXRpb24sIGxl
eGVyRmxhZ3MsIHN0cmljdE1vZGUoKSk7CiAgICAgfQpAQCAtNTIyLDcgKzUyMyw3IEBAIHByaXZh
dGU6CiAgICAgICAgIHJldHVybiBtX3Rva2VuLm1fdHlwZSA9PSBleHBlY3RlZDsKICAgICB9CiAg
ICAgCi0gICAgQUxXQVlTX0lOTElORSBpbnQgdG9rZW5TdGFydCgpCisgICAgQUxXQVlTX0lOTElO
RSB1bnNpZ25lZCB0b2tlblN0YXJ0KCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX3Rva2VuLm1f
bG9jYXRpb24uc3RhcnRPZmZzZXQ7CiAgICAgfQpAQCAtNTMyLDExICs1MzMsMjEgQEAgcHJpdmF0
ZToKICAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lOwogICAgIH0KICAgICAK
LSAgICBBTFdBWVNfSU5MSU5FIGludCB0b2tlbkVuZCgpCisgICAgQUxXQVlTX0lOTElORSBpbnQg
dG9rZW5Db2x1bW4oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRva2VuU3RhcnQoKSAtIHRva2Vu
TGluZVN0YXJ0KCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCB0b2tlbkVu
ZCgpCiAgICAgewogICAgICAgICByZXR1cm4gbV90b2tlbi5tX2xvY2F0aW9uLmVuZE9mZnNldDsK
ICAgICB9CiAgICAgCisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCB0b2tlbkxpbmVTdGFydCgp
CisgICAgeworICAgICAgICByZXR1cm4gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNl
dDsKKyAgICB9CisgICAgCiAgICAgQUxXQVlTX0lOTElORSBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IHRva2VuTG9jYXRpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV9sb2NhdGlv
bjsKQEAgLTkwNiw3ICs5MTcsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCBwYXJzZUZvcm1h
bFBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IEFMV0FZU19JTkxJTkUgVHJlZUV4cHJlc3Npb24gcGFyc2VWYXJEZWNsYXJhdGlvbkxpc3Qo
VHJlZUJ1aWxkZXImLCBpbnQmIGRlY2xhcmF0aW9ucywgY29uc3QgSWRlbnRpZmllciomIGxhc3RJ
ZGVudCwgVHJlZUV4cHJlc3Npb24mIGxhc3RJbml0aWFsaXplciwgaW50JiBpZGVudFN0YXJ0LCBp
bnQmIGluaXRTdGFydCwgaW50JiBpbml0RW5kKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUNvbnN0RGVjbExpc3QgcGFyc2VDb25zdERlY2xhcmF0
aW9uTGlzdChUcmVlQnVpbGRlciYgY29udGV4dCk7Ci0gICAgdGVtcGxhdGUgPEZ1bmN0aW9uUmVx
dWlyZW1lbnRzLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBjbGFzcyBUcmVlQnVpbGRl
cj4gYm9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIq
JiwgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QmLCBUcmVlRnVuY3Rpb25Cb2R5JiwgaW50JiBvcGVu
QnJhY2UsIGludCYgY2xvc2VCcmFjZSwgaW50JiBib2R5U3RhcnRMaW5lKTsKKyAgICB0ZW1wbGF0
ZSA8RnVuY3Rpb25SZXF1aXJlbWVudHMsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIGNs
YXNzIFRyZWVCdWlsZGVyPiBib29sIHBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiwgY29u
c3QgSWRlbnRpZmllciomLCBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCYsIFRyZWVGdW5jdGlvbkJv
ZHkmLCB1bnNpZ25lZCYgb3BlbkJyYWNlT2Zmc2V0LCB1bnNpZ25lZCYgY2xvc2VCcmFjZU9mZnNl
dCwgaW50JiBib2R5U3RhcnRMaW5lLCB1bnNpZ25lZCYgYm9keVN0YXJ0Q29sdW1uKTsKICAgICBB
TFdBWVNfSU5MSU5FIGludCBpc0JpbmFyeU9wZXJhdG9yKEpTVG9rZW5UeXBlKTsKICAgICBib29s
IGFsbG93QXV0b21hdGljU2VtaWNvbG9uKCk7CiAgICAgCkBAIC05MjksNiArOTQwLDE2IEBAIHBy
aXZhdGU6CiAgICAgICAgIHJldHVybiBtX2xhc3RUb2tlbkVuZDsKICAgICB9CiAKKyAgICB1bnNp
Z25lZCBsYXN0VG9rZW5MaW5lKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xhc3RM
aW5lOworICAgIH0KKworICAgIHVuc2lnbmVkIGxhc3RUb2tlbkxpbmVTdGFydCgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9sYXN0VG9rZW5MaW5lU3RhcnQ7CisgICAgfQorCiAgICAg
Ym9vbCBoYXNFcnJvcigpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gIW1fZXJyb3JNZXNz
YWdlLmlzTnVsbCgpOwpAQCAtOTQ0LDggKzk2NSwxMCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBt
X2Vycm9yTWVzc2FnZTsKICAgICBKU1Rva2VuIG1fdG9rZW47CiAgICAgYm9vbCBtX2FsbG93c0lu
OwotICAgIGludCBtX2xhc3RMaW5lOworICAgIHVuc2lnbmVkIG1fbGFzdExpbmU7CiAgICAgaW50
IG1fbGFzdFRva2VuRW5kOworICAgIHVuc2lnbmVkIG1fbGFzdFRva2VuTGluZTsKKyAgICB1bnNp
Z25lZCBtX2xhc3RUb2tlbkxpbmVTdGFydDsKICAgICBpbnQgbV9hc3NpZ25tZW50Q291bnQ7CiAg
ICAgaW50IG1fbm9uTEhTQ291bnQ7CiAgICAgYm9vbCBtX3N5bnRheEFscmVhZHlWYWxpZGF0ZWQ7
CkBAIC05OTUsNiArMTAxOCw3IEBAIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVy
VHlwZT4KICAgICBlcnJNc2cgPSBTdHJpbmcoKTsKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBzdGFy
dExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSBt
X3NvdXJjZS0+c3RhcnRDb2x1bW4oKTsKIAogICAgIFN0cmluZyBwYXJzZUVycm9yID0gcGFyc2VJ
bm5lcigpOwogCkBAIC0xMDEyLDEyICsxMDM2LDE0IEBAIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4g
UGFyc2VyPExleGVyVHlwZT4KIAogICAgIFJlZlB0cjxQYXJzZWROb2RlPiByZXN1bHQ7CiAgICAg
aWYgKG1fc291cmNlRWxlbWVudHMpIHsKLSAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGVuZExvY2F0
aW9uOworICAgICAgICBKU1Rva2VuTG9jYXRpb24gZW5kTG9jYXRpb24obV9zb3VyY2UtPnN0YXJ0
T2Zmc2V0KCkpOwogICAgICAgICBlbmRMb2NhdGlvbi5saW5lID0gbV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKTsKLSAgICAgICAgZW5kTG9jYXRpb24uY2hhclBvc2l0aW9uID0gbV9sZXhlci0+Y3Vy
cmVudENoYXJQb3NpdGlvbigpOworICAgICAgICBlbmRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQg
PSBtX2xleGVyLT5jdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CisgICAgICAgIGVuZExvY2F0aW9u
LnN0YXJ0T2Zmc2V0ID0gbV9sZXhlci0+Y3VycmVudE9mZnNldCgpOwogICAgICAgICByZXN1bHQg
PSBQYXJzZWROb2RlOjpjcmVhdGUobV92bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXJ0TG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbmRMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0
Q29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zb3VyY2VFbGVt
ZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFyRGVjbGFyYXRp
b25zID8gJm1fdmFyRGVjbGFyYXRpb25zLT5kYXRhIDogMCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZnVuY0RlY2xhcmF0aW9ucyA/ICZtX2Z1bmNEZWNsYXJhdGlvbnMt
PmRhdGEgOiAwLApAQCAtMTAyNSw3ICsxMDUxLDcgQEAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBQ
YXJzZXI8TGV4ZXJUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm1f
c291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mZWF0dXJlcywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbnVtQ29uc3RhbnRzKTsKLSAg
ICAgICAgcmVzdWx0LT5zZXRMb2MobV9zb3VyY2UtPmZpcnN0TGluZSgpLCBtX2xhc3RMaW5lLCBt
X2xleGVyLT5jdXJyZW50Q2hhclBvc2l0aW9uKCkpOworICAgICAgICByZXN1bHQtPnNldExvYyht
X3NvdXJjZS0+Zmlyc3RMaW5lKCksIG1fbGFzdExpbmUsIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQo
KSwgbV9sZXhlci0+Y3VycmVudExpbmVTdGFydE9mZnNldCgpKTsKICAgICB9IGVsc2UgewogICAg
ICAgICAvLyBXZSBjYW4gbmV2ZXIgc2VlIGEgc3ludGF4IGVycm9yIHdoZW4gcmVwYXJzaW5nIGEg
ZnVuY3Rpb24sIHNpbmNlIHdlIHNob3VsZCBoYXZlCiAgICAgICAgIC8vIHJlcG9ydGVkIHRoZSBl
cnJvciB3aGVuIHBhcnNpbmcgdGhlIGNvbnRhaW5pbmcgcHJvZ3JhbSBvciBldmFsIGNvZGUuIFNv
IGlmIHdlJ3JlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vu
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9r
ZW5zLmgJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyVG9rZW5zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUg
UGFyc2VyVG9rZW5zX2gKIAogI2luY2x1ZGUgIlBhcnNlck1vZGVzLmgiCisjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTE0OSwyNCArMTUwLDM2IEBA
IGVudW0gSlNUb2tlblR5cGUgewogfTsKIAogdW5pb24gSlNUb2tlbkRhdGEgewotICAgIGludCBp
bnRWYWx1ZTsKKyAgICBzdHJ1Y3QgeworICAgICAgICB1aW50MzJfdCBsaW5lOworICAgICAgICB1
aW50MzJfdCBvZmZzZXQ7CisgICAgICAgIHVpbnQzMl90IGxpbmVTdGFydE9mZnNldDsKKyAgICB9
OwogICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudDsK
IH07CiAKIHN0cnVjdCBKU1Rva2VuTG9jYXRpb24gewotICAgIEpTVG9rZW5Mb2NhdGlvbigpIDog
bGluZSgwKSwgY2hhclBvc2l0aW9uKDApIHsgfQorICAgIEpTVG9rZW5Mb2NhdGlvbih1bnNpZ25l
ZCBfc291cmNlT2Zmc2V0ID0gVUlOVF9NQVgpIDogbGluZSgwKSwgbGluZVN0YXJ0T2Zmc2V0KDAp
LCBzdGFydE9mZnNldCgwKSwgc291cmNlT2Zmc2V0KF9zb3VyY2VPZmZzZXQpIHsgfQogICAgIEpT
VG9rZW5Mb2NhdGlvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKQogICAgIHsKICAg
ICAgICAgbGluZSA9IGxvY2F0aW9uLmxpbmU7CisgICAgICAgIGxpbmVTdGFydE9mZnNldCA9IGxv
Y2F0aW9uLmxpbmVTdGFydE9mZnNldDsKICAgICAgICAgc3RhcnRPZmZzZXQgPSBsb2NhdGlvbi5z
dGFydE9mZnNldDsKICAgICAgICAgZW5kT2Zmc2V0ID0gbG9jYXRpb24uZW5kT2Zmc2V0OwotICAg
ICAgICBjaGFyUG9zaXRpb24gPSBsb2NhdGlvbi5jaGFyUG9zaXRpb247CisgICAgICAgIHNvdXJj
ZU9mZnNldCA9IGxvY2F0aW9uLnNvdXJjZU9mZnNldDsKKyAgICAgICAgQVNTRVJUKHNvdXJjZU9m
ZnNldCAhPSBVSU5UX01BWCk7CiAgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBs
aW5lU3RhcnRQb3NpdGlvbigpIGNvbnN0IHsgQVNTRVJUKHNvdXJjZU9mZnNldCAhPSBVSU5UX01B
WCk7IHJldHVybiBsaW5lU3RhcnRPZmZzZXQgLSBzb3VyY2VPZmZzZXQ7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24oKSBjb25zdCB7IEFTU0VSVChzb3VyY2VPZmZz
ZXQgIT0gVUlOVF9NQVgpOyByZXR1cm4gc3RhcnRPZmZzZXQgLSBzb3VyY2VPZmZzZXQ7IH0KKyAg
ICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIGVuZFBvc2l0aW9uKCkgY29uc3QgeyBBU1NFUlQoc291
cmNlT2Zmc2V0ICE9IFVJTlRfTUFYKTsgcmV0dXJuIGVuZE9mZnNldCAtIHNvdXJjZU9mZnNldDsg
fQorCiAgICAgaW50IGxpbmU7Ci0gICAgaW50IHN0YXJ0T2Zmc2V0OwotICAgIGludCBlbmRPZmZz
ZXQ7Ci0gICAgaW50IGNoYXJQb3NpdGlvbjsKKyAgICB1bnNpZ25lZCBsaW5lU3RhcnRPZmZzZXQ7
CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQ7CisgICAgdW5zaWduZWQgZW5kT2Zmc2V0OworICAg
IHVuc2lnbmVkIHNvdXJjZU9mZnNldDsKIH07CiAKIHN0cnVjdCBKU1Rva2VuIHsKQEAgLTE3NSw3
ICsxODgsNiBAQCBzdHJ1Y3QgSlNUb2tlbiB7CiAgICAgSlNUb2tlbkxvY2F0aW9uIG1fbG9jYXRp
b247CiB9OwogCi19Ci0KK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gUGFyc2VyVG9r
ZW5zX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oCShy
ZXZpc2lvbiAxNTE5MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNv
ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgICwgbV9zdGFydENoYXIoMCkKICAgICAgICAgICAgICwgbV9lbmRDaGFyKDApCiAg
ICAgICAgICAgICAsIG1fZmlyc3RMaW5lKDApCisgICAgICAgICAgICAsIG1fc3RhcnRDb2x1bW4o
MCkKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTQ5LDE5ICs1MCwzMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgU291cmNlQ29kZShQYXNzUmVm
UHRyPFNvdXJjZVByb3ZpZGVyPiBwcm92aWRlciwgaW50IGZpcnN0TGluZSA9IDEpCisgICAgICAg
IFNvdXJjZUNvZGUoUGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gcHJvdmlkZXIpCisgICAgICAg
ICAgICA6IG1fcHJvdmlkZXIocHJvdmlkZXIpCisgICAgICAgICAgICAsIG1fc3RhcnRDaGFyKDAp
CisgICAgICAgICAgICAsIG1fZW5kQ2hhcihtX3Byb3ZpZGVyLT5zb3VyY2UoKS5sZW5ndGgoKSkK
KyAgICAgICAgICAgICwgbV9maXJzdExpbmUoMSkKKyAgICAgICAgICAgICwgbV9zdGFydENvbHVt
bigxKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBTb3VyY2VDb2RlKFBhc3NSZWZQ
dHI8U291cmNlUHJvdmlkZXI+IHByb3ZpZGVyLCBpbnQgZmlyc3RMaW5lLCBpbnQgc3RhcnRDb2x1
bW4pCiAgICAgICAgICAgICA6IG1fcHJvdmlkZXIocHJvdmlkZXIpCiAgICAgICAgICAgICAsIG1f
c3RhcnRDaGFyKDApCiAgICAgICAgICAgICAsIG1fZW5kQ2hhcihtX3Byb3ZpZGVyLT5zb3VyY2Uo
KS5sZW5ndGgoKSkKICAgICAgICAgICAgICwgbV9maXJzdExpbmUoc3RkOjptYXgoZmlyc3RMaW5l
LCAxKSkKKyAgICAgICAgICAgICwgbV9zdGFydENvbHVtbihzdGQ6Om1heChzdGFydENvbHVtbiwg
MSkpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFNvdXJjZUNvZGUoUGFzc1JlZlB0
cjxTb3VyY2VQcm92aWRlcj4gcHJvdmlkZXIsIGludCBzdGFydCwgaW50IGVuZCwgaW50IGZpcnN0
TGluZSkKKyAgICAgICAgU291cmNlQ29kZShQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBwcm92
aWRlciwgaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgZmlyc3RMaW5lLCBpbnQgc3RhcnRDb2x1bW4p
CiAgICAgICAgICAgICA6IG1fcHJvdmlkZXIocHJvdmlkZXIpCiAgICAgICAgICAgICAsIG1fc3Rh
cnRDaGFyKHN0YXJ0KQogICAgICAgICAgICAgLCBtX2VuZENoYXIoZW5kKQogICAgICAgICAgICAg
LCBtX2ZpcnN0TGluZShzdGQ6Om1heChmaXJzdExpbmUsIDEpKQorICAgICAgICAgICAgLCBtX3N0
YXJ0Q29sdW1uKHN0ZDo6bWF4KHN0YXJ0Q29sdW1uLCAxKSkKICAgICAgICAgewogICAgICAgICB9
CiAKQEAgLTg0LDI5ICs5NiwzMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc051
bGwoKSBjb25zdCB7IHJldHVybiAhbV9wcm92aWRlcjsgfQogICAgICAgICBTb3VyY2VQcm92aWRl
ciogcHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb3ZpZGVyLmdldCgpOyB9CiAgICAgICAg
IGludCBmaXJzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0TGluZTsgfQorICAgICAgICBp
bnQgc3RhcnRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0Q29sdW1uOyB9CiAgICAgICAg
IGludCBzdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRDaGFyOyB9CiAgICAgICAg
IGludCBlbmRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2VuZENoYXI7IH0KICAgICAgICAgaW50
IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kQ2hhciAtIG1fc3RhcnRDaGFyOyB9CiAgICAg
ICAgIAotICAgICAgICBTb3VyY2VDb2RlIHN1YkV4cHJlc3Npb24odW5zaWduZWQgb3BlbkJyYWNl
LCB1bnNpZ25lZCBjbG9zZUJyYWNlLCBpbnQgZmlyc3RMaW5lKTsKKyAgICAgICAgU291cmNlQ29k
ZSBzdWJFeHByZXNzaW9uKHVuc2lnbmVkIG9wZW5CcmFjZSwgdW5zaWduZWQgY2xvc2VCcmFjZSwg
aW50IGZpcnN0TGluZSwgaW50IHN0YXJ0Q29sdW1uKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gbV9wcm92aWRlcjsKICAgICAgICAgaW50IG1fc3RhcnRD
aGFyOwogICAgICAgICBpbnQgbV9lbmRDaGFyOwogICAgICAgICBpbnQgbV9maXJzdExpbmU7Cisg
ICAgICAgIGludCBtX3N0YXJ0Q29sdW1uOwogICAgIH07CiAKICAgICBpbmxpbmUgU291cmNlQ29k
ZSBtYWtlU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCA9IFN0
cmluZygpLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9zaXRpb246
Om1pbmltdW1Qb3NpdGlvbigpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFNvdXJjZUNvZGUoU3Ry
aW5nU291cmNlUHJvdmlkZXI6OmNyZWF0ZShzb3VyY2UsIHVybCwgc3RhcnRQb3NpdGlvbiksIHN0
YXJ0UG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCkpOworICAgICAgICByZXR1cm4gU291cmNl
Q29kZShTdHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKHNvdXJjZSwgdXJsLCBzdGFydFBvc2l0
aW9uKSwgc3RhcnRQb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJbnQoKSwgc3RhcnRQb3NpdGlvbi5t
X2NvbHVtbi5vbmVCYXNlZEludCgpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgU291cmNlQ29kZSBT
b3VyY2VDb2RlOjpzdWJFeHByZXNzaW9uKHVuc2lnbmVkIG9wZW5CcmFjZSwgdW5zaWduZWQgY2xv
c2VCcmFjZSwgaW50IGZpcnN0TGluZSkKKyAgICBpbmxpbmUgU291cmNlQ29kZSBTb3VyY2VDb2Rl
OjpzdWJFeHByZXNzaW9uKHVuc2lnbmVkIG9wZW5CcmFjZSwgdW5zaWduZWQgY2xvc2VCcmFjZSwg
aW50IGZpcnN0TGluZSwgaW50IHN0YXJ0Q29sdW1uKQogICAgIHsKICAgICAgICAgQVNTRVJUKHBy
b3ZpZGVyKCktPnNvdXJjZSgpW29wZW5CcmFjZV0gPT0gJ3snKTsKICAgICAgICAgQVNTRVJUKHBy
b3ZpZGVyKCktPnNvdXJjZSgpW2Nsb3NlQnJhY2VdID09ICd9Jyk7Ci0gICAgICAgIHJldHVybiBT
b3VyY2VDb2RlKHByb3ZpZGVyKCksIG9wZW5CcmFjZSwgY2xvc2VCcmFjZSArIDEsIGZpcnN0TGlu
ZSk7CisgICAgICAgIHN0YXJ0Q29sdW1uICs9IDE7IC8vIENvbnZlcnQgdG8gYmFzZSAxLgorICAg
ICAgICByZXR1cm4gU291cmNlQ29kZShwcm92aWRlcigpLCBvcGVuQnJhY2UsIGNsb3NlQnJhY2Ug
KyAxLCBmaXJzdExpbmUsIHN0YXJ0Q29sdW1uKTsKICAgICB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRl
ci5jcHAJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U291cmNlUHJvdmlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw1MCArNDIsMTEgQEAgU291
cmNlUHJvdmlkZXI6On5Tb3VyY2VQcm92aWRlcigpCiB7CiB9CiAKLVZlY3RvcjxzaXplX3Q+JiBT
b3VyY2VQcm92aWRlcjo6bGluZVN0YXJ0cygpCi17Ci0gICAgaWYgKCFtX2xpbmVTdGFydHMpIHsK
LSAgICAgICAgbV9saW5lU3RhcnRzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxzaXplX3Q+KCkpOwot
ICAgICAgICBTdHJpbmcgc291cmNlID0gdGhpcy0+c291cmNlKCk7Ci0gICAgICAgIHNpemVfdCBp
bmRleCA9IDA7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIG1fbGluZVN0YXJ0cy0+YXBwZW5k
KGluZGV4KTsKLSAgICAgICAgICAgIGluZGV4ID0gc291cmNlLmZpbmROZXh0TGluZVN0YXJ0KGlu
ZGV4KTsKLSAgICAgICAgfSB3aGlsZSAoaW5kZXggIT0gbm90Rm91bmQpOwotICAgICAgICBtX2xp
bmVTdGFydHMtPnNocmlua1RvRml0KCk7Ci0gICAgfQotICAgIHJldHVybiAqbV9saW5lU3RhcnRz
OwotfQotCi0KIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGNoYXJQb3NpdGlvbkV4dHJhY3Rvcihjb25z
dCBzaXplX3QqIHZhbHVlKQogewogICAgIHJldHVybiAqdmFsdWU7CiB9CiAKLXNpemVfdCBTb3Vy
Y2VQcm92aWRlcjo6Y2hhclBvc2l0aW9uVG9Db2x1bW5OdW1iZXIoc2l6ZV90IGNoYXJQb3NpdGlv
bikKLXsKLSAgICBWZWN0b3I8c2l6ZV90PiYgbGluZVN0YXJ0cyA9IHRoaXMtPmxpbmVTdGFydHMo
KTsKLSAgICBzaXplX3QqIGRhdGEgPSBsaW5lU3RhcnRzLmRhdGEoKTsKLSAgICBzaXplX3QgZGF0
YVNpemUgPSBsaW5lU3RhcnRzLnNpemUoKTsKLQotICAgIC8vIEdldCB0aGUgbmVhcmVzdCBsaW5l
IHN0YXJ0IGVudHJ5ICh3aGljaCBjb3VsZCBiZSB0byB0aGUgbGVmdCBvciB0byB0aGUKLSAgICAv
LyByaWdodCBvZiB0aGUgcmVxdWVzdGVkIGNoYXJQb3NpdGlvbi4KLSAgICBjb25zdCBzaXplX3Qq
IGxpbmUgPSBhcHByb3hpbWF0ZUJpbmFyeVNlYXJjaDxzaXplX3QsIHNpemVfdD4oZGF0YSwgZGF0
YVNpemUsIGNoYXJQb3NpdGlvbiwgY2hhclBvc2l0aW9uRXh0cmFjdG9yKTsKLSAgICBzaXplX3Qg
bGluZVN0YXJ0UG9zaXRpb24gPSAqbGluZTsKLQotICAgIGlmIChsaW5lU3RhcnRQb3NpdGlvbiA+
IGNoYXJQb3NpdGlvbikgewotICAgICAgICBpZiAoZGF0YSA8IGxpbmUpIHsKLSAgICAgICAgICAg
IGxpbmUtLTsKLSAgICAgICAgICAgIGxpbmVTdGFydFBvc2l0aW9uID0gKmxpbmU7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBBU1NFUlQoZGF0YSA8PSBsaW5lKTsKLSAgICBBU1NFUlQobGluZVN0
YXJ0UG9zaXRpb24gPD0gY2hhclBvc2l0aW9uKTsKLSAgICByZXR1cm4gY2hhclBvc2l0aW9uIC0g
bGluZVN0YXJ0UG9zaXRpb247Ci19Ci0KIHN0YXRpYyBUQ01hbGxvY19TcGluTG9jayBwcm92aWRl
cklkTG9jayA9IFNQSU5MT0NLX0lOSVRJQUxJWkVSOwogCiB2b2lkIFNvdXJjZVByb3ZpZGVyOjpn
ZXRJRCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92
aWRlci5oCShyZXZpc2lvbiAxNTE5MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1NvdXJjZVByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDggKzY1LDYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsaWRh
dGVkOyB9CiAgICAgICAgIHZvaWQgc2V0VmFsaWQoKSB7IG1fdmFsaWRhdGVkID0gdHJ1ZTsgfQog
Ci0gICAgICAgIHNpemVfdCBjaGFyUG9zaXRpb25Ub0NvbHVtbk51bWJlcihzaXplX3QgY2hhclBv
c2l0aW9uKTsKLQogICAgIHByaXZhdGU6CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBnZXRJRCgpOwpAQCAtNzYsOCArNzQsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVGV4
dFBvc2l0aW9uIG1fc3RhcnRQb3NpdGlvbjsKICAgICAgICAgYm9vbCBtX3ZhbGlkYXRlZCA6IDE7
CiAgICAgICAgIHVpbnRwdHJfdCBtX2lkIDogc2l6ZW9mKHVpbnRwdHJfdCkgKiA4IC0gMTsKLQot
ICAgICAgICBPd25QdHI8VmVjdG9yPHNpemVfdD4gPiBtX2xpbmVTdGFydHM7CiAgICAgfTsKIAog
ICAgIGNsYXNzIFN0cmluZ1NvdXJjZVByb3ZpZGVyIDogcHVibGljIFNvdXJjZVByb3ZpZGVyIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZUl0
ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVBy
b3ZpZGVyQ2FjaGVJdGVtLmgJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNyArMzYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIHN0cnVjdCBTb3VyY2VQcm92aWRlckNhY2hl
SXRlbUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgdW5zaWduZWQgZnVuY3Rpb25TdGFydDsKICAg
ICB1bnNpZ25lZCBjbG9zZUJyYWNlTGluZTsKLSAgICB1bnNpZ25lZCBjbG9zZUJyYWNlUG9zOwor
ICAgIHVuc2lnbmVkIGNsb3NlQnJhY2VPZmZzZXQ7CisgICAgdW5zaWduZWQgY2xvc2VCcmFjZUxp
bmVTdGFydE9mZnNldDsKICAgICBib29sIG5lZWRzRnVsbEFjdGl2YXRpb247CiAgICAgYm9vbCB1
c2VzRXZhbDsKICAgICBib29sIHN0cmljdE1vZGU7CkBAIC01OSwxMCArNjAsMTMgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgSlNUb2tlbiB0b2tlbjsKICAgICAgICAgdG9rZW4ubV90eXBlID0g
Q0xPU0VCUkFDRTsKLSAgICAgICAgdG9rZW4ubV9kYXRhLmludFZhbHVlID0gY2xvc2VCcmFjZVBv
czsKLSAgICAgICAgdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldCA9IGNsb3NlQnJhY2VQb3M7
Ci0gICAgICAgIHRva2VuLm1fbG9jYXRpb24uZW5kT2Zmc2V0ID0gY2xvc2VCcmFjZVBvcyArIDE7
CisgICAgICAgIHRva2VuLm1fZGF0YS5vZmZzZXQgPSBjbG9zZUJyYWNlT2Zmc2V0OworICAgICAg
ICB0b2tlbi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0ID0gY2xvc2VCcmFjZU9mZnNldDsKKyAgICAg
ICAgdG9rZW4ubV9sb2NhdGlvbi5lbmRPZmZzZXQgPSBjbG9zZUJyYWNlT2Zmc2V0ICsgMTsKICAg
ICAgICAgdG9rZW4ubV9sb2NhdGlvbi5saW5lID0gY2xvc2VCcmFjZUxpbmU7CisgICAgICAgIHRv
a2VuLm1fbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0ID0gY2xvc2VCcmFjZUxpbmVTdGFydE9mZnNl
dDsKKyAgICAgICAgLy8gdG9rZW4ubV9sb2NhdGlvbi5zb3VyY2VPZmZzZXQgaXMgaW5pdGlhbGl6
ZWQgb25jZSBieSB0aGUgY2xpZW50LiBTbywKKyAgICAgICAgLy8gd2UgZG8gbm90IG5lZWQgdG8g
c2V0IGl0IGhlcmUuCiAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICB9CiAKQEAgLTcyLDkgKzc2
LDEwIEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBjbG9zZUJyYWNlTGluZSA6IDMxOwogICAgIGJv
b2wgdXNlc0V2YWwgOiAxOwogCi0gICAgdW5zaWduZWQgY2xvc2VCcmFjZVBvcyA6IDMxOworICAg
IHVuc2lnbmVkIGNsb3NlQnJhY2VPZmZzZXQgOiAzMTsKICAgICBib29sIHN0cmljdE1vZGUgOiAx
OwogCisgICAgdW5zaWduZWQgY2xvc2VCcmFjZUxpbmVTdGFydE9mZnNldDsKICAgICB1bnNpZ25l
ZCB1c2VkVmFyaWFibGVzQ291bnQ7CiAgICAgdW5zaWduZWQgd3JpdHRlblZhcmlhYmxlc0NvdW50
OwogCkBAIC0xMDYsOCArMTExLDkgQEAgaW5saW5lIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtOjpT
b3VyY2VQcgogICAgICwgbmVlZHNGdWxsQWN0aXZhdGlvbihwYXJhbWV0ZXJzLm5lZWRzRnVsbEFj
dGl2YXRpb24pCiAgICAgLCBjbG9zZUJyYWNlTGluZShwYXJhbWV0ZXJzLmNsb3NlQnJhY2VMaW5l
KQogICAgICwgdXNlc0V2YWwocGFyYW1ldGVycy51c2VzRXZhbCkKLSAgICAsIGNsb3NlQnJhY2VQ
b3MocGFyYW1ldGVycy5jbG9zZUJyYWNlUG9zKQorICAgICwgY2xvc2VCcmFjZU9mZnNldChwYXJh
bWV0ZXJzLmNsb3NlQnJhY2VPZmZzZXQpCiAgICAgLCBzdHJpY3RNb2RlKHBhcmFtZXRlcnMuc3Ry
aWN0TW9kZSkKKyAgICAsIGNsb3NlQnJhY2VMaW5lU3RhcnRPZmZzZXQocGFyYW1ldGVycy5jbG9z
ZUJyYWNlTGluZVN0YXJ0T2Zmc2V0KQogICAgICwgdXNlZFZhcmlhYmxlc0NvdW50KHBhcmFtZXRl
cnMudXNlZFZhcmlhYmxlcy5zaXplKCkpCiAgICAgLCB3cml0dGVuVmFyaWFibGVzQ291bnQocGFy
YW1ldGVycy53cml0dGVuVmFyaWFibGVzLnNpemUoKSkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCShyZXZpc2lvbiAxNTE5MjApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMTE5LDIxICsxMTksMjEgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBEb250QnVpbGRTdHJpbmdzID0gTGV4ZXJGbGFnc0RvbnRCdWlsZFN0cmluZ3M7CiAKICAgICBp
bnQgY3JlYXRlU291cmNlRWxlbWVudHMoKSB7IHJldHVybiAxOyB9Ci0gICAgRXhwcmVzc2lvblR5
cGUgbWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQpIHsgcmV0dXJuIENhbGxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUg
bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBDYWxsRXhwcjsgfQogICAgIHZvaWQgYXBw
ZW5kVG9Db21tYShFeHByZXNzaW9uVHlwZSYgYmFzZSwgRXhwcmVzc2lvblR5cGUgcmlnaHQpIHsg
YmFzZSA9IHJpZ2h0OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQ29tbWFFeHByKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSByaWdodCkg
eyByZXR1cm4gcmlnaHQ7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlQXNzaWduTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIEV4cHJlc3Npb25U
eXBlLCBib29sLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsg
fQotICAgIEV4cHJlc3Npb25UeXBlIG1ha2VQcmVmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25UeXBlLCBPcGVyYXRvciwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gUHJl
RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIG1ha2VQb3N0Zml4Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIFBvc3RFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZUFzc2lnbk5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIE9wZXJhdG9yLCBFeHByZXNzaW9uVHlw
ZSwgYm9vbCwgYm9vbCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFzc2lnbm1l
bnRFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZVByZWZpeE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIE9wZXJhdG9yLCBpbnQsIGludCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gUHJlRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VQb3N0Zml4
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBQb3N0RXhwcjsgfQogICAgIEV4cHJlc3Np
b25UeXBlIG1ha2VUeXBlT2ZOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25U
eXBlKSB7IHJldHVybiBUeXBlb2ZFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZURlbGV0
ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIERlbGV0ZUV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtlRGVsZXRl
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQpIHsgcmV0dXJuIERlbGV0ZUV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBt
YWtlTmVnYXRlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSkgeyBy
ZXR1cm4gVW5hcnlFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgbWFrZUJpdHdpc2VOb3ROb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4
cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVMb2dpY2FsTm90KGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KICAgICBFeHBy
ZXNzaW9uVHlwZSBjcmVhdGVVbmFyeVBsdXMoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZVZvaWQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVu
YXJ5RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIHRoaXNFeHByKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYpIHsgcmV0dXJuIFRoaXNFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVz
b2x2ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50KSB7IHJl
dHVybiBSZXNvbHZlRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlc29sdmUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQpIHsg
cmV0dXJuIFJlc29sdmVFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlT2JqZWN0TGl0
ZXJhbChjb25zdCBKU1Rva2VuTG9jYXRpb24mKSB7IHJldHVybiBPYmplY3RMaXRlcmFsRXhwcjsg
fQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU9iamVjdExpdGVyYWwoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgaW50KSB7IHJldHVybiBPYmplY3RMaXRlcmFsRXhwcjsgfQogICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZUFycmF5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCkgeyByZXR1cm4g
QXJyYXlMaXRlcmFsRXhwcjsgfQpAQCAtMTQyLDE1ICsxNDIsMTUgQEAgcHVibGljOgogICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZVN0cmluZyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJ
ZGVudGlmaWVyKikgeyByZXR1cm4gU3RyaW5nRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZUJvb2xlYW4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgYm9vbCkgeyByZXR1cm4gQm9vbEV4
cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYpIHsgcmV0dXJuIE51bGxFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQnJhY2tl
dEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lv
blR5cGUsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEJyYWNrZXRFeHByOyB9Ci0gICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
RG90RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlZ0V4cChjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiwg
aW50KSB7IHJldHVybiBZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnN0cmluZygpKSA/IDAgOiBS
ZWdFeHBFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQnJhY2tldEFjY2Vzcyhjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIGJvb2ws
IGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBCcmFja2V0RXhwcjsgfQorICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7
IHJldHVybiBEb3RFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVnRXhwKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50
aWZpZXImLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJu
LnN0cmluZygpKSA/IDAgOiBSZWdFeHBFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
TmV3RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQogICAgIEV4cHJlc3Npb25U
eXBlIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUs
IGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQotICAgIEV4cHJlc3Npb25U
eXBlIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUs
IGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
Q29uZGl0aW9uYWxFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBF
eHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIENvbmRpdGlvbmFsRXhwcjsg
fQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFzc2lnblJlc29sdmUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50
KSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1
bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9Ci0gICAg
aW50IGNyZWF0ZUZ1bmN0aW9uQm9keShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBib29sKSB7IHJldHVybiAxOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlQXNzaWduUmVzb2x2ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVy
JiwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBBc3Np
Z25tZW50RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0aW9uRXhwcihjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KKyAgICBpbnQgY3JlYXRl
RnVuY3Rpb25Cb2R5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGludCwgYm9vbCkgeyByZXR1cm4gMTsgfQogICAgIHZvaWQgc2V0RnVuY3Rpb25TdGFydChp
bnQsIGludCkgeyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIDE7IH0KICAg
ICBpbnQgY3JlYXRlQXJndW1lbnRzKGludCkgeyByZXR1cm4gMTsgfQpAQCAtMTc5LDM5ICsxNzks
MzkgQEAgcHVibGljOgogICAgIGludCBjcmVhdGVDbGF1c2VMaXN0KGludCkgeyByZXR1cm4gMTsg
fQogICAgIGludCBjcmVhdGVDbGF1c2VMaXN0KGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAg
dm9pZCBzZXRVc2VzQXJndW1lbnRzKGludCkgeyB9Ci0gICAgaW50IGNyZWF0ZUZ1bmNEZWNsU3Rh
dGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUZ1bmNE
ZWNsU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQg
Y3JlYXRlQmxvY2tTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVFeHByU3RhdGVtZW50KGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRl
SWZTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50KSB7
IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUlmU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNy
ZWF0ZUZvckxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVGb3JJbkxvb3AoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVG
b3JJbkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlRm9ySW5Mb29wKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9
CisgICAgaW50IGNyZWF0ZUZvckluTG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0K
ICAgICBpbnQgY3JlYXRlRW1wdHlTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyBy
ZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVWYXJTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVSZXR1cm5T
dGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQp
IHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQnJlYWtTdGF0ZW1lbnQoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNy
ZWF0ZUJyZWFrU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZp
ZXIqLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQ29u
dGludWVTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50
KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQpIHsg
cmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlUmV0dXJuU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsg
fQorICAgIGludCBjcmVhdGVCcmVha1N0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBp
bnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVCcmVh
a1N0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQ29udGlu
dWVTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwg
aW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZVRyeVN0YXRlbWVudChjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQp
IHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlU3dpdGNoU3RhdGVtZW50KGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0K
ICAgICBpbnQgY3JlYXRlV2hpbGVTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVdpdGhTdGF0ZW1l
bnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVXaXRoU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVy
biAxOyB9CiAgICAgaW50IGNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUxh
YmVsU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBp
bnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVRocm93U3RhdGVtZW50
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVy
biAxOyB9CisgICAgaW50IGNyZWF0ZUxhYmVsU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
MTsgfQorICAgIGludCBjcmVhdGVUaHJvd1N0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBp
bnQgY3JlYXRlRGVidWdnZXIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQpIHsgcmV0
dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlQ29uc3RTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAgIGludCBhcHBlbmRDb25zdERl
Y2woY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50KSB7
IHJldHVybiAxOyB9Ci0gICAgdGVtcGxhdGUgPGJvb2wgc3RyaWN0PiBQcm9wZXJ0eSBjcmVhdGVH
ZXR0ZXJPclNldHRlclByb3BlcnR5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5Tm9k
ZTo6VHlwZSB0eXBlLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBpbnQsIGludCwgaW50LCBpbnQs
IGludCwgaW50KQorICAgIHRlbXBsYXRlIDxib29sIHN0cmljdD4gUHJvcGVydHkgY3JlYXRlR2V0
dGVyT3JTZXR0ZXJQcm9wZXJ0eShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eU5vZGU6
OlR5cGUgdHlwZSwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50KQogICAgIHsKICAgICAgICAgQVNTRVJUKG5hbWUpOwogICAgICAgICBpZiAo
IXN0cmljdCkKICAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eSh0eXBlKTsKICAgICAgICAgcmV0
dXJuIFByb3BlcnR5KG5hbWUsIHR5cGUpOwogICAgIH0KLSAgICB0ZW1wbGF0ZSA8Ym9vbCBzdHJp
Y3Q+IFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoVk0qIHZtLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgZG91YmxlIG5hbWUsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpCisgICAgdGVtcGxhdGUgPGJvb2wgc3RyaWN0PiBQ
cm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KFZNKiB2bSwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGRvdWJsZSBuYW1lLCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpCiAgICAgewogICAgICAgICBpZiAoIXN0cmljdCkK
ICAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eSh0eXBlKTsKQEAgLTIyMiw3ICsyMjIsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBhZGRWYXIoY29uc3QgSWRlbnRpZmllciosIGJvb2wpIHsgfQogICAg
IGludCBjb21iaW5lQ29tbWFOb2Rlcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCkg
eyByZXR1cm4gMTsgfQogICAgIGludCBldmFsQ291bnQoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0g
ICAgdm9pZCBhcHBlbmRCaW5hcnlFeHByZXNzaW9uSW5mbyhpbnQmIG9wZXJhbmRTdGFja0RlcHRo
LCBpbnQgZXhwciwgaW50LCBpbnQsIGludCwgYm9vbCkKKyAgICB2b2lkIGFwcGVuZEJpbmFyeUV4
cHJlc3Npb25JbmZvKGludCYgb3BlcmFuZFN0YWNrRGVwdGgsIGludCBleHByLCBpbnQsIGludCwg
aW50LCBpbnQsIGludCwgYm9vbCkKICAgICB7CiAgICAgICAgIGlmICghbV90b3BCaW5hcnlFeHBy
KQogICAgICAgICAgICAgbV90b3BCaW5hcnlFeHByID0gZXhwcjsKQEAgLTI0MCwxMiArMjQwLDEz
IEBAIHB1YmxpYzoKICAgICB2b2lkIG9wZXJhdG9yU3RhY2tBcHBlbmQoaW50JiBvcGVyYXRvclN0
YWNrRGVwdGgsIGludCwgaW50KSB7IG9wZXJhdG9yU3RhY2tEZXB0aCsrOyB9CiAgICAgaW50IHBv
cE9wZXJhbmRTdGFjayhpbnQmKSB7IGludCByZXMgPSBtX3RvcEJpbmFyeUV4cHI7IG1fdG9wQmlu
YXJ5RXhwciA9IDA7IHJldHVybiByZXM7IH0KICAgICAKLSAgICB2b2lkIGFwcGVuZFVuYXJ5VG9r
ZW4oaW50JiBzdGFja0RlcHRoLCBpbnQgdG9rLCBpbnQpIHsgc3RhY2tEZXB0aCA9IDE7IG1fdG9w
VW5hcnlUb2tlbiA9IHRvazsgfQorICAgIHZvaWQgYXBwZW5kVW5hcnlUb2tlbihpbnQmIHN0YWNr
RGVwdGgsIGludCB0b2ssIGludCwgaW50LCBpbnQpIHsgc3RhY2tEZXB0aCA9IDE7IG1fdG9wVW5h
cnlUb2tlbiA9IHRvazsgfQogICAgIGludCB1bmFyeVRva2VuU3RhY2tMYXN0VHlwZShpbnQmKSB7
IHJldHVybiBtX3RvcFVuYXJ5VG9rZW47IH0KLSAgICBpbnQgdW5hcnlUb2tlblN0YWNrTGFzdFN0
YXJ0KGludCYpIHsgcmV0dXJuIDA7IH0KKyAgICB1bnNpZ25lZCB1bmFyeVRva2VuU3RhY2tMYXN0
U3RhcnQoaW50JikgeyByZXR1cm4gMDsgfQorICAgIHVuc2lnbmVkIHVuYXJ5VG9rZW5TdGFja0xh
c3RMaW5lU3RhcnRQb3NpdGlvbihpbnQmKSB7IHJldHVybiAwOyB9CiAgICAgdm9pZCB1bmFyeVRv
a2VuU3RhY2tSZW1vdmVMYXN0KGludCYgc3RhY2tEZXB0aCkgeyBzdGFja0RlcHRoID0gMDsgfQog
ICAgIAotICAgIHZvaWQgYXNzaWdubWVudFN0YWNrQXBwZW5kKGludCwgaW50LCBpbnQsIGludCwg
aW50LCBPcGVyYXRvcikgeyB9CisgICAgdm9pZCBhc3NpZ25tZW50U3RhY2tBcHBlbmQoaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBPcGVyYXRvcikgeyB9CiAgICAgaW50IGNyZWF0
ZUFzc2lnbm1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDE7IH0KICAgICBjb25z
dCBJZGVudGlmaWVyJiBnZXROYW1lKGNvbnN0IFByb3BlcnR5JiBwcm9wZXJ0eSkgY29uc3QgeyBB
U1NFUlQocHJvcGVydHkubmFtZSk7IHJldHVybiAqcHJvcGVydHkubmFtZTsgfQogICAgIFByb3Bl
cnR5Tm9kZTo6VHlwZSBnZXRUeXBlKGNvbnN0IFByb3BlcnR5JiBwcm9wZXJ0eSkgY29uc3QgeyBy
ZXR1cm4gcHJvcGVydHkudHlwZTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29kZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db2RlQ2FjaGUuY3BwCShyZXZpc2lvbiAxNTE5MjApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3
IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogQ29kZUNhY2hlOjpnZW5lcmEKICAgICBSZWZQdHI8
Um9vdE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5vZGU+KCZ2bSwgc291cmNlLCAwLCBJZGVu
dGlmaWVyKCksIHN0cmljdG5lc3MsIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IpOwogICAgIGlm
ICghcm9vdE5vZGUpCiAgICAgICAgIHJldHVybiAwOwotICAgIGV4ZWN1dGFibGUtPnJlY29yZFBh
cnNlKHJvb3ROb2RlLT5mZWF0dXJlcygpLCByb290Tm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMo
KSwgcm9vdE5vZGUtPmxpbmVObygpLCByb290Tm9kZS0+bGFzdExpbmUoKSk7CisgICAgZXhlY3V0
YWJsZS0+cmVjb3JkUGFyc2Uocm9vdE5vZGUtPmZlYXR1cmVzKCksIHJvb3ROb2RlLT5oYXNDYXB0
dXJlZFZhcmlhYmxlcygpLCByb290Tm9kZS0+bGluZU5vKCksIHJvb3ROb2RlLT5sYXN0TGluZSgp
LCByb290Tm9kZS0+c3RhcnRDb2x1bW4oKSk7CiAKICAgICBVbmxpbmtlZENvZGVCbG9ja1R5cGUq
IHVubGlua2VkQ29kZSA9IFVubGlua2VkQ29kZUJsb2NrVHlwZTo6Y3JlYXRlKCZ2bSwgZXhlY3V0
YWJsZS0+ZXhlY3V0YWJsZUluZm8oKSk7CiAgICAgdW5saW5rZWRDb2RlLT5yZWNvcmRQYXJzZShy
b290Tm9kZS0+ZmVhdHVyZXMoKSwgcm9vdE5vZGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIHJv
b3ROb2RlLT5saW5lTm8oKSAtIHNvdXJjZS5maXJzdExpbmUoKSwgcm9vdE5vZGUtPmxhc3RMaW5l
KCkgLSByb290Tm9kZS0+bGluZU5vKCkpOwpAQCAtMTE2LDcgKzExNiw4IEBAIFVubGlua2VkQ29k
ZUJsb2NrVHlwZSogQ29kZUNhY2hlOjpnZXRDb2QKICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0Vu
dHJ5ICYmIGNhbkNhY2hlKSB7CiAgICAgICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSogdW5saW5r
ZWRDb2RlID0ganNDYXN0PFVubGlua2VkQ29kZUJsb2NrVHlwZSo+KGFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUuY2VsbC5nZXQoKSk7CiAgICAgICAgIHVuc2lnbmVkIGZpcnN0TGluZSA9IHNvdXJj
ZS5maXJzdExpbmUoKSArIHVubGlua2VkQ29kZS0+Zmlyc3RMaW5lKCk7Ci0gICAgICAgIGV4ZWN1
dGFibGUtPnJlY29yZFBhcnNlKHVubGlua2VkQ29kZS0+Y29kZUZlYXR1cmVzKCksIHVubGlua2Vk
Q29kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgZmlyc3RMaW5lLCBmaXJzdExpbmUgKyB1bmxp
bmtlZENvZGUtPmxpbmVDb3VudCgpKTsKKyAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSBz
b3VyY2UuZmlyc3RMaW5lKCkgPyBzb3VyY2Uuc3RhcnRDb2x1bW4oKSA6IDA7CisgICAgICAgIGV4
ZWN1dGFibGUtPnJlY29yZFBhcnNlKHVubGlua2VkQ29kZS0+Y29kZUZlYXR1cmVzKCksIHVubGlu
a2VkQ29kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgZmlyc3RMaW5lLCBmaXJzdExpbmUgKyB1
bmxpbmtlZENvZGUtPmxpbmVDb3VudCgpLCBzdGFydENvbHVtbik7CiAgICAgICAgIHJldHVybiB1
bmxpbmtlZENvZGU7CiAgICAgfQogICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSogdW5saW5rZWRD
b2RlID0gZ2VuZXJhdGVCeXRlY29kZTxVbmxpbmtlZENvZGVCbG9ja1R5cGUsIEV4ZWN1dGFibGVU
eXBlPih2bSwgc2NvcGUsIGV4ZWN1dGFibGUsIHNvdXJjZSwgc3RyaWN0bmVzcywgZGVidWdnZXJN
b2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAxNTE5MjApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQx
LDcgKzE0MSw3IEBAIHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiAKIAog
Y29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uRXhlY3V0YWJsZTo6c19pbmZvID0geyAiRnVuY3Rpb25F
eGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShGdW5jdGlvbkV4ZWN1dGFibGUpIH07CiAKLUZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVu
Y3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlLCB1bnNpZ25lZCBmaXJzdExp
bmUsIHVuc2lnbmVkIGxhc3RMaW5lKQorRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1
dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWdu
ZWQgbGFzdExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uKQogICAgIDogU2NyaXB0RXhlY3V0YWJs
ZSh2bS5mdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHZtLCBzb3VyY2UsIHVubGlu
a2VkRXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSkKICAgICAsIG1fdW5saW5rZWRFeGVj
dXRhYmxlKHZtLCB0aGlzLCB1bmxpbmtlZEV4ZWN1dGFibGUpCiB7CkBAIC0xNDksNiArMTQ5LDcg
QEAgRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUoVgogICAgIEFTU0VSVChz
b3VyY2UubGVuZ3RoKCkpOwogICAgIG1fZmlyc3RMaW5lID0gZmlyc3RMaW5lOwogICAgIG1fbGFz
dExpbmUgPSBsYXN0TGluZTsKKyAgICBtX3N0YXJ0Q29sdW1uID0gc3RhcnRDb2x1bW47CiB9CiAK
IHZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKQEAgLTMyMCw3
ICszMjEsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlCiAgICAg
ICAgIG1fcHJvZ3JhbUNvZGVCbG9jayA9IG5ld0NvZGVCbG9jay5yZWxlYXNlKCk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHNjb3BlLT5nbG9i
YWxPYmplY3QoKTsKLSAgICAgICAgbV9wcm9ncmFtQ29kZUJsb2NrID0gYWRvcHRQdHIobmV3IFBy
b2dyYW1Db2RlQmxvY2sodGhpcywgbV91bmxpbmtlZFByb2dyYW1Db2RlQmxvY2suZ2V0KCksIGds
b2JhbE9iamVjdCwgc291cmNlKCkucHJvdmlkZXIoKSwgbV9wcm9ncmFtQ29kZUJsb2NrLnJlbGVh
c2UoKSkpOworICAgICAgICBtX3Byb2dyYW1Db2RlQmxvY2sgPSBhZG9wdFB0cihuZXcgUHJvZ3Jh
bUNvZGVCbG9jayh0aGlzLCBtX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9jay5nZXQoKSwgZ2xvYmFs
T2JqZWN0LCBzb3VyY2UoKS5wcm92aWRlcigpLCBzb3VyY2UoKS5zdGFydENvbHVtbigpLCBtX3By
b2dyYW1Db2RlQmxvY2sucmVsZWFzZSgpKSk7CiAgICAgICAgIG1fcHJvZ3JhbUNvZGVCbG9jay0+
Y29weVBvc3RQYXJzZURhdGFGcm9tQWx0ZXJuYXRpdmUoKTsKICAgICB9CiAKQEAgLTUwMCwxNCAr
NTAxLDE4IEBAIFBhc3NPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+IEZ1bmN0aW9uRXgKICAgICBE
ZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlID0gZ2xvYmFsT2JqZWN0LT5oYXNEZWJ1Z2dlcigpID8g
RGVidWdnZXJPbiA6IERlYnVnZ2VyT2ZmOwogICAgIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUg
PSBnbG9iYWxPYmplY3QtPmhhc1Byb2ZpbGVyKCkgPyBQcm9maWxlck9uIDogUHJvZmlsZXJPZmY7
CiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBtX3Vu
bGlua2VkRXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yKCp2bSwgc2NvcGUsIG1fc291cmNlLCBzcGVj
aWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7Ci0gICAg
cmVjb3JkUGFyc2UobV91bmxpbmtlZEV4ZWN1dGFibGUtPmZlYXR1cmVzKCksIG1fdW5saW5rZWRF
eGVjdXRhYmxlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBsaW5lTm8oKSwgbGFzdExpbmUoKSk7
CisgICAgcmVjb3JkUGFyc2UobV91bmxpbmtlZEV4ZWN1dGFibGUtPmZlYXR1cmVzKCksIG1fdW5s
aW5rZWRFeGVjdXRhYmxlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBsaW5lTm8oKSwgbGFzdExp
bmUoKSwgc3RhcnRDb2x1bW4oKSk7CiAKICAgICBpZiAoIXVubGlua2VkQ29kZUJsb2NrKSB7CiAg
ICAgICAgIGV4Y2VwdGlvbiA9IGVycm9yLnRvRXJyb3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBtX3Nv
dXJjZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIE93blB0cjxGdW5j
dGlvbkNvZGVCbG9jaz4gcmVzdWx0ID0gYWRvcHRQdHIobmV3IEZ1bmN0aW9uQ29kZUJsb2NrKHRo
aXMsIHVubGlua2VkQ29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIHNvdXJjZSgpLnByb3ZpZGVyKCks
IHNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCkpKTsKKyAgICBTb3VyY2VQcm92aWRlciogcHJvdmlkZXIg
PSBzb3VyY2UoKS5wcm92aWRlcigpOworICAgIHVuc2lnbmVkIHNvdXJjZU9mZnNldCA9IHNvdXJj
ZSgpLnN0YXJ0T2Zmc2V0KCk7CisgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSBzb3VyY2UoKS5z
dGFydENvbHVtbigpOworCisgICAgT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiByZXN1bHQgPSBh
ZG9wdFB0cihuZXcgRnVuY3Rpb25Db2RlQmxvY2sodGhpcywgdW5saW5rZWRDb2RlQmxvY2ssIGds
b2JhbE9iamVjdCwgcHJvdmlkZXIsIHNvdXJjZU9mZnNldCwgc3RhcnRDb2x1bW4pKTsKICAgICBy
ZXN1bHQtPmNvcHlQb3N0UGFyc2VEYXRhRnJvbShjb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25L
aW5kKS5nZXQoKSk7CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CkBAIC02NTcsOSAr
NjYyLDEwIEBAIEZ1bmN0aW9uRXhlY3V0YWJsZSogRnVuY3Rpb25FeGVjdXRhYmxlOjoKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgdW5zaWduZWQgZmlyc3RMaW5lID0gc291cmNlLmZpcnN0TGluZSgp
ICsgdW5saW5rZWRGdW5jdGlvbi0+Zmlyc3RMaW5lT2Zmc2V0KCk7CiAgICAgdW5zaWduZWQgc3Rh
cnRPZmZzZXQgPSBzb3VyY2Uuc3RhcnRPZmZzZXQoKSArIHVubGlua2VkRnVuY3Rpb24tPnN0YXJ0
T2Zmc2V0KCk7CisgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSBzb3VyY2Uuc3RhcnRDb2x1bW4o
KTsKICAgICB1bnNpZ25lZCBzb3VyY2VMZW5ndGggPSB1bmxpbmtlZEZ1bmN0aW9uLT5zb3VyY2VM
ZW5ndGgoKTsKLSAgICBTb3VyY2VDb2RlIGZ1bmN0aW9uU291cmNlKHNvdXJjZS5wcm92aWRlcigp
LCBzdGFydE9mZnNldCwgc3RhcnRPZmZzZXQgKyBzb3VyY2VMZW5ndGgsIGZpcnN0TGluZSk7Ci0g
ICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMtPnZtKCksIGZ1bmN0aW9u
U291cmNlLCB1bmxpbmtlZEZ1bmN0aW9uLCBmaXJzdExpbmUsIHVubGlua2VkRnVuY3Rpb24tPmxp
bmVDb3VudCgpKTsKKyAgICBTb3VyY2VDb2RlIGZ1bmN0aW9uU291cmNlKHNvdXJjZS5wcm92aWRl
cigpLCBzdGFydE9mZnNldCwgc3RhcnRPZmZzZXQgKyBzb3VyY2VMZW5ndGgsIGZpcnN0TGluZSwg
c3RhcnRDb2x1bW4pOworICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShleGVj
LT52bSgpLCBmdW5jdGlvblNvdXJjZSwgdW5saW5rZWRGdW5jdGlvbiwgZmlyc3RMaW5lLCB1bmxp
bmtlZEZ1bmN0aW9uLT5saW5lQ291bnQoKSwgc3RhcnRDb2x1bW4pOwogfQogCiBTdHJpbmcgRnVu
Y3Rpb25FeGVjdXRhYmxlOjpwYXJhbVN0cmluZygpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxNTE5MjApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4Miw2ICszODIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5wcm92aWRlcigpLT51cmwoKTsgfQog
ICAgICAgICBpbnQgbGluZU5vKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdExpbmU7IH0KICAgICAg
ICAgaW50IGxhc3RMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TGluZTsgfQorICAgICAgICB1
bnNpZ25lZCBzdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRDb2x1bW47IH0KIAog
ICAgICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIEV2YWxG
ZWF0dXJlOyB9CiAgICAgICAgIGJvb2wgdXNlc0FyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1f
ZmVhdHVyZXMgJiBBcmd1bWVudHNGZWF0dXJlOyB9CkBAIC0zOTQsMTIgKzM5NSwxMyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19p
bmZvOwogCi0gICAgICAgIHZvaWQgcmVjb3JkUGFyc2UoQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBi
b29sIGhhc0NhcHR1cmVkVmFyaWFibGVzLCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCisg
ICAgICAgIHZvaWQgcmVjb3JkUGFyc2UoQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBib29sIGhhc0Nh
cHR1cmVkVmFyaWFibGVzLCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUsIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2ZlYXR1cmVzID0gZmVhdHVyZXM7
CiAgICAgICAgICAgICBtX2hhc0NhcHR1cmVkVmFyaWFibGVzID0gaGFzQ2FwdHVyZWRWYXJpYWJs
ZXM7CiAgICAgICAgICAgICBtX2ZpcnN0TGluZSA9IGZpcnN0TGluZTsKICAgICAgICAgICAgIG1f
bGFzdExpbmUgPSBsYXN0TGluZTsKKyAgICAgICAgICAgIG1fc3RhcnRDb2x1bW4gPSBzdGFydENv
bHVtbjsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgpAQCAtNDE5LDYgKzQyMSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXM7CiAgICAg
ICAgIGludCBtX2ZpcnN0TGluZTsKICAgICAgICAgaW50IG1fbGFzdExpbmU7CisgICAgICAgIHVu
c2lnbmVkIG1fc3RhcnRDb2x1bW47CiAgICAgfTsKIAogICAgIGNsYXNzIEV2YWxFeGVjdXRhYmxl
IDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewpAQCAtNTczLDkgKzU3Niw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJh
c2U7CiAKLSAgICAgICAgc3RhdGljIEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5s
aW5rZWRFeGVjdXRhYmxlLCB1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lKQor
ICAgICAgICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4
ZWN1dGFibGUsIHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIHVuc2lnbmVk
IHN0YXJ0Q29sdW1uKQogICAgICAgICB7Ci0gICAgICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkV4ZWN1dGFi
bGU+KHZtLmhlYXApKSBGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHNvdXJjZSwgdW5saW5rZWRFeGVj
dXRhYmxlLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZ1bmN0aW9uRXhl
Y3V0YWJsZT4odm0uaGVhcCkpIEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgc291cmNlLCB1bmxpbmtl
ZEV4ZWN1dGFibGUsIGZpcnN0TGluZSwgbGFzdExpbmUsIHN0YXJ0Q29sdW1uKTsKICAgICAgICAg
ICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgICAgIHJldHVybiBl
eGVjdXRhYmxlOwogICAgICAgICB9CkBAIC03NDYsNyArNzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBGdW5j
dGlvbkV4ZWN1dGFibGUoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqLCB1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lKTsKKyAgICAg
ICAgRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiwgdW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBsYXN0TGluZSwg
dW5zaWduZWQgc3RhcnRDb2x1bW4pOwogCiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlRm9yQ2Fs
bEludGVybmFsKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKSVRDb2RlOjpKSVRUeXBlLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4ID0gVUlOVF9NQVgpOwogICAgICAgICBKU09iamVjdCogY29tcGlsZUZv
ckNvbnN0cnVjdEludGVybmFsKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKSVRDb2RlOjpKSVRUeXBl
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gVUlOVF9NQVgpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gMTUyNDY2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjQgQEAKKzIwMTMtMDctMDggIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUu
Y29tPgorCisgICAgICAgIEZpeCAzMCUgSlNCZW5jaCByZWdyZXNzaW9uIChjYXVzZWQgYnkgYWRk
aW5nIGNvbHVtbiBudW1iZXJzIHRvIHN0YWNrIHRyYWNlcykuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg0ODEuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9qcy9saW5lLWNvbHVtbi1u
dW1iZXJzLmh0bWwKKworICAgICAgICBVcGRhdGVkIHRoZSBiaW5kaW5ncyB0byB1c2UgU3RhY2tG
cmFtZTo6Y29tcHV0ZUxpbmVBbmRDb2x1bW4oKS4gVGhlIG9sZAorICAgICAgICBTdGFja0ZyYW1l
OjpsaW5lKCkgYW5kIFN0YWNrRnJhbWU6OmNvbHVtbigpIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSBu
ZXcKKyAgICAgICAgYWxnb3JpdGhtIGFsd2F5cyBjb21wdXRlcyB0aGUgMiB2YWx1ZXMgdG9nZXRo
ZXIgYW55d2F5LiBIZW5jZSBpdCBpcyBtb3JlCisgICAgICAgIGVmZmljaWVudCB0byByZXR1cm4g
dGhlbSBhcyBhIHBhaXIgaW5zdGVhZCBvZiBkb2luZyB0aGUgc2FtZSBjb21wdXRhdGlvbgorICAg
ICAgICB0d2ljZSBmb3IgZWFjaCBoYWxmIG9mIHRoZSByZXN1bHQuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZVNjcmlwdENhbGxTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTY3JpcHRDYWxs
U3RhY2tGcm9tRXhjZXB0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VD
b2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlOjpTY3JpcHRTb3VyY2VD
b2RlKToKKwogMjAxMy0wNy0wOCAgUmFkdSBTdGF2aWxhICA8c3RhdmlsYUBhZG9iZS5jb20+CiAK
ICAgICAgICAgTmFtZWRGbG93Q29sbGVjdGlvbiBnZXR0ZXJzIHNob3VsZCByZXR1cm4gdW5kZWZp
bmVkIHdoZW4gdGhlcmUncyBubyBOYW1lZEZsb3cKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCShyZXZpc2lvbiAx
NTE5MjApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksOCArNTksMTIgQEAgUGFzc1JlZlB0cjxTY3Jp
cHRDYWxsU3RhY2s+IGNyZWF0ZVNjcmlwdAogICAgIGlmIChKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9
IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCkpIHsKICAgICAgICAgVmVjdG9y
PFN0YWNrRnJhbWU+IHN0YWNrVHJhY2U7CiAgICAgICAgIEludGVycHJldGVyOjpnZXRTdGFja1Ry
YWNlKCZleGVjLT52bSgpLCBzdGFja1RyYWNlLCBtYXhTdGFja1NpemUpOwotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHN0YWNrVHJhY2Uuc2l6ZSgpOyBpKyspCi0gICAgICAgICAgICBm
cmFtZXMuYXBwZW5kKFNjcmlwdENhbGxGcmFtZShzdGFja1RyYWNlW2ldLmZyaWVuZGx5RnVuY3Rp
b25OYW1lKGV4ZWMpLCBzdGFja1RyYWNlW2ldLmZyaWVuZGx5U291cmNlVVJMKCksIHN0YWNrVHJh
Y2VbaV0ubGluZSgpLCBzdGFja1RyYWNlW2ldLmNvbHVtbigpKSk7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc3RhY2tUcmFjZS5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgdW5z
aWduZWQgbGluZTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNvbHVtbjsKKyAgICAgICAgICAgIHN0
YWNrVHJhY2VbaV0uY29tcHV0ZUxpbmVBbmRDb2x1bW4obGluZSwgY29sdW1uKTsKKyAgICAgICAg
ICAgIGZyYW1lcy5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1lKHN0YWNrVHJhY2VbaV0uZnJpZW5kbHlG
dW5jdGlvbk5hbWUoZXhlYyksIHN0YWNrVHJhY2VbaV0uZnJpZW5kbHlTb3VyY2VVUkwoKSwgbGlu
ZSwgY29sdW1uKSk7CisgICAgICAgIH0KICAgICB9CiAgICAgaWYgKGZyYW1lcy5pc0VtcHR5KCkg
JiYgIWVtcHR5SXNBbGxvd2VkKSB7CiAgICAgICAgIC8vIE5vIGZyYW1lcyBmb3VuZC4gSXQgbWF5
IGhhcHBlbiBpbiB0aGUgY2FzZSB3aGVyZQpAQCAtODQsNyArODgsMTAgQEAgUGFzc1JlZlB0cjxT
Y3JpcHRDYWxsU3RhY2s+IGNyZWF0ZVNjcmlwdAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgU3RyaW5nIGZ1bmN0aW9uTmFtZSA9IHN0YWNrVHJhY2VbaV0uZnJpZW5kbHlGdW5jdGlvbk5h
bWUoZXhlYyk7Ci0gICAgICAgIGZyYW1lcy5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1lKGZ1bmN0aW9u
TmFtZSwgc3RhY2tUcmFjZVtpXS5zb3VyY2VVUkwsIHN0YWNrVHJhY2VbaV0ubGluZSgpLCBzdGFj
a1RyYWNlW2ldLmNvbHVtbigpKSk7CisgICAgICAgIHVuc2lnbmVkIGxpbmU7CisgICAgICAgIHVu
c2lnbmVkIGNvbHVtbjsKKyAgICAgICAgc3RhY2tUcmFjZVtpXS5jb21wdXRlTGluZUFuZENvbHVt
bihsaW5lLCBjb2x1bW4pOworICAgICAgICBmcmFtZXMuYXBwZW5kKFNjcmlwdENhbGxGcmFtZShm
dW5jdGlvbk5hbWUsIHN0YWNrVHJhY2VbaV0uc291cmNlVVJMLCBsaW5lLCBjb2x1bW4pKTsKICAg
ICB9CiAKICAgICByZXR1cm4gU2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGUoZnJhbWVzKTsKQEAgLTk5
LDcgKzEwNiwxMCBAQCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0CiAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICBTdHJpbmcgZnVuY3Rpb25OYW1lID0gc3RhY2tU
cmFjZVtpXS5mcmllbmRseUZ1bmN0aW9uTmFtZShleGVjKTsKLSAgICAgICAgZnJhbWVzLmFwcGVu
ZChTY3JpcHRDYWxsRnJhbWUoZnVuY3Rpb25OYW1lLCBzdGFja1RyYWNlW2ldLnNvdXJjZVVSTCwg
c3RhY2tUcmFjZVtpXS5saW5lKCksIHN0YWNrVHJhY2VbaV0uY29sdW1uKCkpKTsKKyAgICAgICAg
dW5zaWduZWQgbGluZTsKKyAgICAgICAgdW5zaWduZWQgY29sdW1uOworICAgICAgICBzdGFja1Ry
YWNlW2ldLmNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVtbik7CisgICAgICAgIGZyYW1l
cy5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1lKGZ1bmN0aW9uTmFtZSwgc3RhY2tUcmFjZVtpXS5zb3Vy
Y2VVUkwsIGxpbmUsIGNvbHVtbikpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiA8aHR0cDovL3dl
YmtpdC5vcmcvYi8xMTUwODc+IFdlYiBJbnNwZWN0b3I6IFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlv
biBzaG91bGQgbm90IGV2YWx1YXRlIEphdmFTY3JpcHQgaGFuZGxpbmcgZXhjZXB0aW9ucwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaAkocmV2
aXNpb24gMTUxOTIwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNl
Q29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFNjcmlwdFNvdXJj
ZUNvZGUgewogcHVibGljOgogICAgIFNjcmlwdFNvdXJjZUNvZGUoY29uc3QgU3RyaW5nJiBzb3Vy
Y2UsIGNvbnN0IEtVUkwmIHVybCA9IEtVUkwoKSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBv
c2l0aW9uID0gVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSkKICAgICAgICAgOiBtX3By
b3ZpZGVyKEpTQzo6U3RyaW5nU291cmNlUHJvdmlkZXI6OmNyZWF0ZShzb3VyY2UsIHVybC5pc051
bGwoKSA/IFN0cmluZygpIDogdXJsLnN0cmluZygpLCBzdGFydFBvc2l0aW9uKSkKLSAgICAgICAg
LCBtX2NvZGUobV9wcm92aWRlciwgc3RhcnRQb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJbnQoKSkK
KyAgICAgICAgLCBtX2NvZGUobV9wcm92aWRlciwgc3RhcnRQb3NpdGlvbi5tX2xpbmUub25lQmFz
ZWRJbnQoKSwgc3RhcnRQb3NpdGlvbi5tX2NvbHVtbi5vbmVCYXNlZEludCgpKQogICAgICAgICAs
IG1fdXJsKHVybCkKICAgICB7CiAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTUyNDY2KQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIw
MTMtMDctMDggIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCAz
MCUgSlNCZW5jaCByZWdyZXNzaW9uIChjYXVzZWQgYnkgYWRkaW5nIGNvbHVtbiBudW1iZXJzIHRv
IHN0YWNrIHRyYWNlcykuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTg0ODEuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhlIGZpeCBub3cgY29tcHV0ZXMgbGluZSBhbmQgY29sdW1uIG51bWJlcnMgbW9y
ZSBhY2N1cmF0ZWx5LiBBcyBhIHJlc3VsdCwKKyAgICAgICAgc29tZSBvZiB0aGUgdGVzdCByZXN1
bHRzIG5lZWQgdG8gYmUgcmUtYmFzZWxpbmVkLiBBbW9uZyBvdGhlciBmaXhlcywgb25lCisgICAg
ICAgIG1ham9yIHNvdXJjZSBvZiBkaWZmZXJlbmNlIGlzIHRoYXQgdGhlIG9sZCBjb2RlIHdhcyBp
bmNvcnJlY3RseSBjb21wdXRpbmcKKyAgICAgICAgMC1iYXNlZCBjb2x1bW4gbnVtYmVycy4gVGhp
cyBoYXMgbm93IGJlZW4gZml4ZWQgdG8gYmUgMS1iYXNlZC4KKyAgICAgICAgTm90ZTogbGluZSBu
dW1iZXJzIHdlcmUgYWx3YXlzIDEtYmFzZWQuCisKKyAgICAgICAgQWxzbyBhZGRlZCBhIG5ldyB0
ZXN0OiBmYXN0L2pzL2xpbmUtY29sdW1uLW51bWJlcnMuaHRtbCwgd2hpY2ggdGVzdHMgbGluZQor
ICAgICAgICBhbmQgY29sdW1uIG51bWJlcnMgZm9yIHNvdXJjZSBjb2RlIGluIHZhcmlvdXMgY29u
ZmlndXJhdGlvbnMuCisKKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL291dGRlbnQtYmxv
Y2txdW90ZS10ZXN0MS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFu
ZC9vdXRkZW50LWJsb2NrcXVvdGUtdGVzdDItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRp
bmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1ibG9ja3F1b3RlLXRlc3QzLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL291dGRlbnQtYmxvY2txdW90ZS10ZXN0NC1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktcGFzdGUtZmxvYXQt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1ibG9ja3F1
b3RlLWJlZm9yZS1ibG9ja3F1b3RlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL3Bh
c3RlYm9hcmQvcGFzdGUtZG91YmxlLW5lc3RlZC1ibG9ja3F1b3RlLWJlZm9yZS1ibG9ja3F1b3Rl
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXJlc2l6ZS1j
b250ZW50cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9ldmVudHMvcmVtb3ZlLXRhcmdl
dC13aXRoLXNoYWRvdy1pbi1kcmFnLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2pzL2xp
bmUtY29sdW1uLW51bWJlcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pz
L2xpbmUtY29sdW1uLW51bWJlcnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9zY3Jp
cHQtdGVzdHMvbGluZS1jb2x1bW4tbnVtYmVycy5qczogQWRkZWQuCisgICAgICAgICh0cnkuZG9U
aHJvdzRiKToKKyAgICAgICAgKGRvVGhyb3c1Yi50cnkuaW5uZXJGdW5jKToKKyAgICAgICAgKGRv
VGhyb3c1Yik6CisgICAgICAgIChkb1Rocm93NmIudHJ5LmlubmVyRnVuYyk6CisgICAgICAgIChk
b1Rocm93NmIpOgorICAgICAgICAoY2F0Y2gpOgorICAgICAgICAodHJ5LmRvVGhyb3cxMWIpOgor
ICAgICAgICAodHJ5LmRvVGhyb3cxNGIpOgorICAgICAgICAqIGZhc3QvanMvc3RhY2stdHJhY2Ut
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlL2NvbnNvbGUtdXJsLWxp
bmUtY29sdW1uLWV4cGVjdGVkLnR4dDoKKwogMjAxMy0wNy0wOCAgUmFkdSBTdGF2aWxhICA8c3Rh
dmlsYUBhZG9iZS5jb20+CiAKICAgICAgICAgTmFtZWRGbG93Q29sbGVjdGlvbiBnZXR0ZXJzIHNo
b3VsZCByZXR1cm4gdW5kZWZpbmVkIHdoZW4gdGhlcmUncyBubyBOYW1lZEZsb3cKSW5kZXg6IExh
eW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1ibG9ja3F1b3RlLXRlc3QxLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5k
L291dGRlbnQtYmxvY2txdW90ZS10ZXN0MS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1MTkyMCkK
KysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1ibG9ja3F1b3RlLXRl
c3QxLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLUNPTlNPTEUg
TUVTU0FHRTogbGluZSAxNDogU1VDQ0VTUzogTm9kZXMgc3RheWVkIGluIG9yZGVyIGFmdGVyIG91
dGRlbnQuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTI6IFNVQ0NFU1M6IE5vZGVzIHN0YXllZCBp
biBvcmRlciBhZnRlciBvdXRkZW50LgogVGhpcyB0ZXN0IHVzZXMgdGhlIGV4ZWNDb21tYW5kIHRv
IE91dGRlbnQgdGhlIHRleHQgYmVsb3cuIFRoaXMgdGVzdCB0aGF0IG5vZGVzLCB3aXRoIGRpZmZl
cmVudCByZWxhdGlvbnNoaXBzIHdpdGggYmxvY2txdW90ZXMsIHN0YXkgaW4gdGhlIGNvcnJlY3Qg
b3JkZXIgYWZ0ZXIgYW4gb3V0ZGVudC4KIAogQQpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9l
eGVjQ29tbWFuZC9vdXRkZW50LWJsb2NrcXVvdGUtdGVzdDItZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1ibG9ja3F1b3Rl
LXRlc3QyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTUxOTIwKQorKysgTGF5b3V0VGVzdHMvZWRp
dGluZy9leGVjQ29tbWFuZC9vdXRkZW50LWJsb2NrcXVvdGUtdGVzdDItZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE0OiBT
VUNDRVNTOiBOb2RlcyBzdGF5ZWQgaW4gb3JkZXIgYWZ0ZXIgb3V0ZGVudC4KK0NPTlNPTEUgTUVT
U0FHRTogbGluZSAxMjogU1VDQ0VTUzogTm9kZXMgc3RheWVkIGluIG9yZGVyIGFmdGVyIG91dGRl
bnQuCiBUaGlzIHRlc3QgdXNlcyB0aGUgZXhlY0NvbW1hbmQgdG8gT3V0ZGVudCB0aGUgdGV4dCBi
ZWxvdy4gVGhpcyB0ZXN0IHRoYXQgbm9kZXMsIHdpdGggZGlmZmVyZW50IHJlbGF0aW9uc2hpcHMg
d2l0aCBibG9ja3F1b3Rlcywgc3RheSBpbiB0aGUgY29ycmVjdCBvcmRlciBhZnRlciBhbiBvdXRk
ZW50LgogCiBBCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL291dGRlbnQt
YmxvY2txdW90ZS10ZXN0My1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LWJsb2NrcXVvdGUtdGVzdDMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAxNTE5MjApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL291
dGRlbnQtYmxvY2txdW90ZS10ZXN0My1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEs
NCArMSw0IEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTQ6IFNVQ0NFU1M6IE5vZGVzIHN0YXll
ZCBpbiBvcmRlciBhZnRlciBvdXRkZW50LgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEyOiBTVUND
RVNTOiBOb2RlcyBzdGF5ZWQgaW4gb3JkZXIgYWZ0ZXIgb3V0ZGVudC4KIFRoaXMgdGVzdCB1c2Vz
IHRoZSBleGVjQ29tbWFuZCB0byBPdXRkZW50IHRoZSB0ZXh0IGJlbG93LiBUaGlzIHRlc3QgdGhh
dCBub2Rlcywgd2l0aCBkaWZmZXJlbnQgcmVsYXRpb25zaGlwcyB3aXRoIGJsb2NrcXVvdGVzLCBz
dGF5IGluIHRoZSBjb3JyZWN0IG9yZGVyIGFmdGVyIGFuIG91dGRlbnQuCiAKIEEKSW5kZXg6IExh
eW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1ibG9ja3F1b3RlLXRlc3Q0LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5k
L291dGRlbnQtYmxvY2txdW90ZS10ZXN0NC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1MTkyMCkK
KysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1ibG9ja3F1b3RlLXRl
c3Q0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLUNPTlNPTEUg
TUVTU0FHRTogbGluZSAxNDogU1VDQ0VTUzogTm9kZXMgc3RheWVkIGluIG9yZGVyIGFmdGVyIG91
dGRlbnQuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTI6IFNVQ0NFU1M6IE5vZGVzIHN0YXllZCBp
biBvcmRlciBhZnRlciBvdXRkZW50LgogVGhpcyB0ZXN0IHVzZXMgdGhlIGV4ZWNDb21tYW5kIHRv
IE91dGRlbnQgdGhlIHRleHQgYmVsb3cuIFRoaXMgdGVzdCB0aGF0IG5vZGVzLCB3aXRoIGRpZmZl
cmVudCByZWxhdGlvbnNoaXBzIHdpdGggYmxvY2txdW90ZXMsIHN0YXkgaW4gdGhlIGNvcnJlY3Qg
b3JkZXIgYWZ0ZXIgYW4gb3V0ZGVudC4KIAogCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvY29weS1wYXN0ZS1mbG9hdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktcGFzdGUtZmxvYXQtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAxNTE5MjApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY29w
eS1wYXN0ZS1mbG9hdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBA
Ci1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMjA6IFNVQ0NFU1M6IHBhc3RlIERJRCBOT1Qga2VlcCBm
bG9hdDpsZWZ0IHN0eWxlLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE4OiBTVUNDRVNTOiBwYXN0
ZSBESUQgTk9UIGtlZXAgZmxvYXQ6bGVmdCBzdHlsZS4KIFRoaXMgdGVzdCBpcyB0byBzZWUgaWYg
dGV4dCB3aXRoaW4gYSBmbG9hdGluZyBibG9jayBpcyBwdXQgb250byB0aGUgcGFzdGUgYm9hcmQg
d2lodG91dCB0aGUgZmxvYXQgc3R5bGUuCiAKIEZpcnN0IExJCkluZGV4OiBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtYmxvY2txdW90ZS1iZWZvcmUtYmxvY2txdW90ZS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bh
c3RlLWJsb2NrcXVvdGUtYmVmb3JlLWJsb2NrcXVvdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAx
NTE5MjApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtYmxvY2txdW90
ZS1iZWZvcmUtYmxvY2txdW90ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCAr
MSw0IEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMjA6IFNVQ0NFU1M6IHBhc3Rpbmcgc2luZ2xl
TmVzdGVkTm9kZVRvQ29weSBESUQgTk9UIGtlZXAgdGhlIG5ld2xpbmUgd2l0aGluIHRoZSBibG9j
a3F1b3RlLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE4OiBTVUNDRVNTOiBwYXN0aW5nIHNpbmds
ZU5lc3RlZE5vZGVUb0NvcHkgRElEIE5PVCBrZWVwIHRoZSBuZXdsaW5lIHdpdGhpbiB0aGUgYmxv
Y2txdW90ZS4KIFRoaXMgdGVzdHMgcGFzdGluZyBhIHNpbmdseSBuZXN0ZWQgYmxvY2txdW90ZSBi
ZWZvcmUsIGFuZCBvdXRzaWRlIG9mLCBhbm90aGVyIGJsb2NrcXVvdGUuIFRoaXMgdGVzdCBkb2Vz
IG5vdCB3b3JrIG91dHNpZGUgb2YgRFJULgogCiBsaW5lIDIKSW5kZXg6IExheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1kb3VibGUtbmVzdGVkLWJsb2NrcXVvdGUtYmVmb3JlLWJs
b2NrcXVvdGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC9wYXN0ZS1kb3VibGUtbmVzdGVkLWJsb2NrcXVvdGUtYmVmb3JlLWJsb2NrcXVv
dGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTE5MjApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtZG91YmxlLW5lc3RlZC1ibG9ja3F1b3RlLWJlZm9yZS1ibG9ja3F1
b3RlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLUNPTlNPTEUg
TUVTU0FHRTogbGluZSAyMDogU1VDQ0VTUzogcGFzdGluZyBkb3VibGVOZXN0ZWROb2RlVG9Db3B5
IERJRCBOT1Qga2VlcCB0aGUgbmV3bGluZSB3aXRoaW4gdGhlIGJsb2NrcXVvdGUuCitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgMTg6IFNVQ0NFU1M6IHBhc3RpbmcgZG91YmxlTmVzdGVkTm9kZVRvQ29w
eSBESUQgTk9UIGtlZXAgdGhlIG5ld2xpbmUgd2l0aGluIHRoZSBibG9ja3F1b3RlLgogVGhpcyB0
ZXN0cyBwYXN0aW5nIGEgZG91Ymx5IG5lc3RlZCBibG9ja3F1b3RlIGJlZm9yZSwgYW5kIG91dHNp
ZGUgb2YsIGFub3RoZXIgYmxvY2txdW90ZS4gVGhpcyB0ZXN0IGRvZXMgbm90IHdvcmsgb3V0c2lk
ZSBvZiBEUlQuCiAKIGxpbmUgNApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dp
bmRvdy1yZXNpemUtY29udGVudHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcmVzaXplLWNvbnRlbnRzLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMTUxOTIwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1y
ZXNpemUtY29udGVudHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBA
QAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE5OiBJbml0aWFsIHJlZmVyZW5jZSBub2RlIGRpbWVu
c2lvbnMgODAwIHggNjAwCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTg6IEluaXRpYWwgcmVmZXJl
bmNlIG5vZGUgZGltZW5zaW9ucyA4MDAgeCA2MDAKIENPTlNPTEUgTUVTU0FHRTogbGluZSAyMDog
SW5jcmVhc2luZyB3aW5kb3cgc2l6ZSBieSAxMCB4IDEwCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUg
MjM6IFBvc3QtcmVzaXplIHJlZmVyZW5jZSBub2RlIGRpbWVuc2lvbnMgODAwIHggNjAwCitDT05T
T0xFIE1FU1NBR0U6IGxpbmUgMjI6IFBvc3QtcmVzaXplIHJlZmVyZW5jZSBub2RlIGRpbWVuc2lv
bnMgODAwIHggNjAwCiBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhlIHllbGxvdyByZWZlcmVuY2Ug
RE9NIG5vZGUgKHdoaWNoIHNob3VsZCBiZSBhcyBiaWcgYXMgdGhlIHdpbmRvdykgZ2V0cyByZXNp
emVkIHdoZW4gdGhlIHdpbmRvdyBpcyByZXNpemVkLgogCiBUbyBhdm9pZCByZWxheW91dHMgYW5k
IHJlcGFpbnRzIGNhdXNlZCBieSBET00tYmFzZWQgbG9nZ2luZywgaXQgZG9lc24ndCBvdXRwdXQg
YW55dGhpbmcuIFBsZWFzZSBjaGVjayB0aGUgY29uc29sZSBmb3IgY29uZmlybWF0aW9uIHRoYXQg
dGhlIG5vZGUgZGltZW5zaW9ucyBpbmNyZWFzZSBieSAxMHgxMC4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3JlbW92ZS10YXJnZXQtd2l0aC1zaGFkb3ctaW4tZHJhZy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVtb3ZlLXRhcmdldC13
aXRoLXNoYWRvdy1pbi1kcmFnLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTUxOTIwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVtb3ZlLXRhcmdldC13aXRoLXNoYWRvdy1pbi1kcmFnLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMgQEAKLUNPTlNPTEUgTUVTU0FH
RTogbGluZSAzNTogTm90Rm91bmRFcnJvcjogRE9NIEV4Y2VwdGlvbiA4OiBBbiBhdHRlbXB0IHdh
cyBtYWRlIHRvIHJlZmVyZW5jZSBhIE5vZGUgaW4gYSBjb250ZXh0IHdoZXJlIGl0IGRvZXMgbm90
IGV4aXN0LgotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDM1OiBOb3RGb3VuZEVycm9yOiBET00gRXhj
ZXB0aW9uIDg6IEFuIGF0dGVtcHQgd2FzIG1hZGUgdG8gcmVmZXJlbmNlIGEgTm9kZSBpbiBhIGNv
bnRleHQgd2hlcmUgaXQgZG9lcyBub3QgZXhpc3QuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMzQ6
IE5vdEZvdW5kRXJyb3I6IERPTSBFeGNlcHRpb24gODogQW4gYXR0ZW1wdCB3YXMgbWFkZSB0byBy
ZWZlcmVuY2UgYSBOb2RlIGluIGEgY29udGV4dCB3aGVyZSBpdCBkb2VzIG5vdCBleGlzdC4KK0NP
TlNPTEUgTUVTU0FHRTogbGluZSAzNDogTm90Rm91bmRFcnJvcjogRE9NIEV4Y2VwdGlvbiA4OiBB
biBhdHRlbXB0IHdhcyBtYWRlIHRvIHJlZmVyZW5jZSBhIE5vZGUgaW4gYSBjb250ZXh0IHdoZXJl
IGl0IGRvZXMgbm90IGV4aXN0LgogUEFTUy4gRFJUIGRpZG4ndCBjcmFzaC4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvanMvbGluZS1jb2x1bW4tbnVtYmVycy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9saW5lLWNvbHVtbi1udW1iZXJzLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvbGluZS1jb2x1bW4tbnVtYmVy
cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODkgQEAKK1RoaXMgdGVz
dCBjaGVja3MgbGluZSBhbmQgY29sdW1uIG51bWJlcnMgaW4gc3RhY2sgdHJhY2VzIGZvciBjb3Jy
ZWN0bmVzcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKy0tPiBDYXNlIDEgU3Rh
Y2sgVHJhY2U6CisgICAgMCAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRt
bDo0MDozNgorCistLT4gQ2FzZSAyIFN0YWNrIFRyYWNlOgorICAgIDAgICBnbG9iYWwgY29kZSBh
dCBsaW5lLWNvbHVtbi1udW1iZXJzLmh0bWw6NDQ6NDAKKworLS0+IENhc2UgMyBTdGFjayBUcmFj
ZToKKyAgICAwICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjQ4OjMy
CisKKy0tPiBDYXNlIDMgU3RhY2sgVHJhY2U6CisgICAgMCAgIGdsb2JhbCBjb2RlIGF0IGxpbmUt
Y29sdW1uLW51bWJlcnMuaHRtbDo0ODoxMTMKKworLS0+IENhc2UgNCBTdGFjayBUcmFjZToKKyAg
ICAwICAgZG9UaHJvdzQgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjU0OjQ0CisgICAgMSAg
IGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDo1NToxMworCistLT4gQ2Fz
ZSA1IFN0YWNrIFRyYWNlOgorICAgIDAgICBpbm5lckZ1bmMgYXQgbGluZS1jb2x1bW4tbnVtYmVy
cy5odG1sOjY0OjY5CisgICAgMSAgIGRvVGhyb3c1IGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRt
bDo2NDo4MgorICAgIDIgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmh0bWw6
NjQ6MTMzCisKKy0tPiBDYXNlIDYgU3RhY2sgVHJhY2U6CisgICAgMCAgIGlubmVyRnVuYyBhdCBs
aW5lLWNvbHVtbi1udW1iZXJzLmh0bWw6NzA6NjkKKyAgICAxICAgZG9UaHJvdzYgYXQgbGluZS1j
b2x1bW4tbnVtYmVycy5odG1sOjcwOjgyCisgICAgMiAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29s
dW1uLW51bWJlcnMuaHRtbDo3MDoxMzMKKworLS0+IENhc2UgNyBTdGFjayBUcmFjZToKKyAgICAw
ICAgIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDo3NTo1MQorICAgIDEgICBnbG9iYWwgY29k
ZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmh0bWw6NzU6NTUKKworLS0+IENhc2UgOCBTdGFjayBU
cmFjZToKKyAgICAwICAgIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDo3ODo1OQorICAgIDEg
ICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmh0bWw6Nzg6NjMKKworLS0+IENh
c2UgOSBTdGFjayBUcmFjZToKKyAgICAwICAgIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDo4
Mjo1NQorICAgIDEgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmh0bWw6ODI6
NTkKKworLS0+IENhc2UgOSBTdGFjayBUcmFjZToKKyAgICAwICAgIGF0IGxpbmUtY29sdW1uLW51
bWJlcnMuaHRtbDo4MjoxNTcKKyAgICAxICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVt
YmVycy5odG1sOjgyOjE2MQorCistLT4gQ2FzZSAxMCBTdGFjayBUcmFjZToKKyAgICAwICAgIGF0
IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDo4OToyNgorICAgIDEgICBnbG9iYWwgY29kZSBhdCBs
aW5lLWNvbHVtbi1udW1iZXJzLmh0bWw6OTA6OAorCistLT4gQ2FzZSAxMSBTdGFjayBUcmFjZToK
KyAgICAwICAgIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDoxMDE6NDEKKyAgICAxICAgZG9U
aHJvdzExIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDoxMDE6NDUKKyAgICAyICAgZ2xvYmFs
IGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjEwMzoxNAorCistLT4gQ2FzZSAxMiBT
dGFjayBUcmFjZToKKyAgICAwICAgIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDoxMTI6NTMK
KyAgICAxICAgIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDoxMTI6NTcKKyAgICAyICAgZ2xv
YmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjExMjo2MgorCistLT4gQ2FzZSAx
MyBTdGFjayBUcmFjZToKKyAgICAwICAgIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDoxMTg6
NTMKKyAgICAxICAgIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDoxMTg6NTcKKyAgICAyICAg
Z2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjExODo2MgorCistLT4gQ2Fz
ZSAxNCBTdGFjayBUcmFjZToKKyAgICAwICAgIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDox
MjQ6NzYKKyAgICAxICAgIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDoxMjQ6ODAKKyAgICAy
ICAgZG9UaHJvdzE0IGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDoxMjQ6ODUKKyAgICAzICAg
Z2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjEyNDo5OQorCistLT4gQ2Fz
ZSAxNSBTdGFjayBUcmFjZToKKyAgICAwICAgIGF0IGV2YWwgY29kZQorICAgIDEgICBldmFsIGF0
IFtuYXRpdmUgY29kZV0KKyAgICAyICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVy
cy5odG1sOjEzMDo1CisKKy0tPiBDYXNlIDE2IFN0YWNrIFRyYWNlOgorICAgIDAgICAgYXQgZG9U
aHJvdzE2CisgICAgMSAgICBhdCBldmFsIGNvZGUKKyAgICAyICAgZXZhbCBhdCBbbmF0aXZlIGNv
ZGVdCisgICAgMyAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDoxMzY6
NQorCistLT4gQ2FzZSAxNyBTdGFjayBUcmFjZToKKyAgICAwICAgIGF0IAorICAgIDEgICAgYXQg
ZXZhbCBjb2RlCisgICAgMiAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQorICAgIDMgICBnbG9iYWwg
Y29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmh0bWw6MTQ5OjUKKworLS0+IENhc2UgMTggU3Rh
Y2sgVHJhY2U6CisgICAgMCAgICBhdCAKKyAgICAxICAgIGF0IGV2YWwgY29kZQorICAgIDIgICBl
dmFsIGF0IFtuYXRpdmUgY29kZV0KKyAgICAzICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4t
bnVtYmVycy5odG1sOjE1NTo1CisKKy0tPiBDYXNlIDEgU3RhY2sgVHJhY2U6CisgICAgMCAgIGds
b2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuanM6MzoyOAorCistLT4gQ2FzZSAyIFN0
YWNrIFRyYWNlOgorICAgIDAgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmpz
Ojc6MzIKKworLS0+IENhc2UgMyBTdGFjayBUcmFjZToKKyAgICAwICAgZ2xvYmFsIGNvZGUgYXQg
bGluZS1jb2x1bW4tbnVtYmVycy5qczoxMToyNAorCistLT4gQ2FzZSAzIFN0YWNrIFRyYWNlOgor
ICAgIDAgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmpzOjExOjg4CisKKy0t
PiBDYXNlIDQgU3RhY2sgVHJhY2U6CisgICAgMCAgIGRvVGhyb3c0YiBhdCBsaW5lLWNvbHVtbi1u
dW1iZXJzLmpzOjE2OjQ1CisgICAgMSAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJl
cnMuanM6MTc6MTQKKworLS0+IENhc2UgNSBTdGFjayBUcmFjZToKKyAgICAwICAgaW5uZXJGdW5j
IGF0IGxpbmUtY29sdW1uLW51bWJlcnMuanM6MjQ6NzAKKyAgICAxICAgZG9UaHJvdzViIGF0IGxp
bmUtY29sdW1uLW51bWJlcnMuanM6MjQ6ODMKKyAgICAyICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1j
b2x1bW4tbnVtYmVycy5qczoyNDoxMzUKKworLS0+IENhc2UgNiBTdGFjayBUcmFjZToKKyAgICAw
ICAgaW5uZXJGdW5jIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuanM6Mjg6NzAKKyAgICAxICAgZG9U
aHJvdzZiIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuanM6Mjg6ODMKKyAgICAyICAgZ2xvYmFsIGNv
ZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5qczoyODoxMzUKKworLS0+IENhc2UgNyBTdGFjayBU
cmFjZToKKyAgICAwICAgIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuanM6MzI6NDMKKyAgICAxICAg
Z2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5qczozMjo0NworCistLT4gQ2FzZSA4
IFN0YWNrIFRyYWNlOgorICAgIDAgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5qczozNjo0Nwor
ICAgIDEgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmpzOjM2OjUxCisKKy0t
PiBDYXNlIDkgU3RhY2sgVHJhY2U6CisgICAgMCAgICBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmpz
OjQwOjM5CisgICAgMSAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuanM6NDA6
NDMKKworLS0+IENhc2UgOSBTdGFjayBUcmFjZToKKyAgICAwICAgIGF0IGxpbmUtY29sdW1uLW51
bWJlcnMuanM6NDA6MTI0CisgICAgMSAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJl
cnMuanM6NDA6MTI4CisKKy0tPiBDYXNlIDEwIFN0YWNrIFRyYWNlOgorICAgIDAgICAgYXQgbGlu
ZS1jb2x1bW4tbnVtYmVycy5qczo0NjoyNgorICAgIDEgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNv
bHVtbi1udW1iZXJzLmpzOjQ3OjgKKworLS0+IENhc2UgMTEgU3RhY2sgVHJhY2U6CisgICAgMCAg
ICBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmpzOjU2OjQxCisgICAgMSAgIGRvVGhyb3cxMWIgYXQg
bGluZS1jb2x1bW4tbnVtYmVycy5qczo1Njo0NQorICAgIDIgICBnbG9iYWwgY29kZSBhdCBsaW5l
LWNvbHVtbi1udW1iZXJzLmpzOjU4OjE1CisKKy0tPiBDYXNlIDEyIFN0YWNrIFRyYWNlOgorICAg
IDAgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5qczo2NTo1MworICAgIDEgICAgYXQgbGluZS1j
b2x1bW4tbnVtYmVycy5qczo2NTo1NworICAgIDIgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVt
bi1udW1iZXJzLmpzOjY1OjYyCisKKy0tPiBDYXNlIDEzIFN0YWNrIFRyYWNlOgorICAgIDAgICAg
YXQgbGluZS1jb2x1bW4tbnVtYmVycy5qczo2OTo1MworICAgIDEgICAgYXQgbGluZS1jb2x1bW4t
bnVtYmVycy5qczo2OTo1NworICAgIDIgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1i
ZXJzLmpzOjY5OjYyCisKKy0tPiBDYXNlIDE0IFN0YWNrIFRyYWNlOgorICAgIDAgICAgYXQgbGlu
ZS1jb2x1bW4tbnVtYmVycy5qczo3Mzo3NworICAgIDEgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVy
cy5qczo3Mzo4MQorICAgIDIgICBkb1Rocm93MTRiIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuanM6
NzM6ODYKKyAgICAzICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5qczo3Mzox
MDEKKworLS0+IENhc2UgMTUgU3RhY2sgVHJhY2U6CisgICAgMCAgICBhdCBldmFsIGNvZGUKKyAg
ICAxICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCisgICAgMiAgIGdsb2JhbCBjb2RlIGF0IGxpbmUt
Y29sdW1uLW51bWJlcnMuanM6Nzc6NQorCistLT4gQ2FzZSAxNiBTdGFjayBUcmFjZToKKyAgICAw
ICAgIGF0IGRvVGhyb3cxNWIKKyAgICAxICAgIGF0IGV2YWwgY29kZQorICAgIDIgICBldmFsIGF0
IFtuYXRpdmUgY29kZV0KKyAgICAzICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVy
cy5qczo4MTo1CisKKy0tPiBDYXNlIDE3IFN0YWNrIFRyYWNlOgorICAgIDAgICAgYXQgCisgICAg
MSAgICBhdCBldmFsIGNvZGUKKyAgICAyICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCisgICAgMyAg
IGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuanM6OTI6NQorCistLT4gQ2FzZSAx
OCBTdGFjayBUcmFjZToKKyAgICAwICAgIGF0IAorICAgIDEgICAgYXQgZXZhbCBjb2RlCisgICAg
MiAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQorICAgIDMgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNv
bHVtbi1udW1iZXJzLmpzOjk2OjUKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvbGluZS1jb2x1bW4t
bnVtYmVycy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvbGluZS1jb2x1
bW4tbnVtYmVycy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9saW5l
LWNvbHVtbi1udW1iZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNzAgQEAKKzxo
dG1sPgorPGhlYWQ+CisJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorCTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisJPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisJ
PHAgaWQ9ImNvbnNvbGUiPjwvcD4KKworPHNjcmlwdD4KK2lmICghdGhpcy5hbGVydCkgeworICAg
IGRlYnVnID0gcHJpbnQ7CisgICAgZGVzY3JpcHRpb24gPSBwcmludDsKK30KKworZGVzY3JpcHRp
b24oCisnVGhpcyB0ZXN0IGNoZWNrcyBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycyBpbiBzdGFjayB0
cmFjZXMgZm9yIGNvcnJlY3RuZXNzLicKKyk7CisKK3Rlc3RJZCA9IDA7CitmdW5jdGlvbiBwcmlu
dFN0YWNrKHN0YWNrVHJhY2UpIHsKKyAgICBkZWJ1ZygiLS0+IENhc2UgIiArIHRlc3RJZCArICIg
U3RhY2sgVHJhY2U6IikKKyAgICBzdGFja1RyYWNlID0gc3RhY2tUcmFjZS5zcGxpdCgiXG4iKTsK
KyAgICB2YXIgbGVuZ3RoID0gTWF0aC5taW4oc3RhY2tUcmFjZS5sZW5ndGgsIDEwMCk7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICB2YXIgaW5kZXhPZkF0
ID0gc3RhY2tUcmFjZVtpXS5pbmRleE9mKCdAJykKKyAgICAgICAgdmFyIGluZGV4T2ZMYXN0U2xh
c2ggPSBzdGFja1RyYWNlW2ldLmxhc3RJbmRleE9mKCcvJyk7CisgICAgICAgIGlmIChpbmRleE9m
TGFzdFNsYXNoID09IC0xKQorICAgICAgICAgICAgaW5kZXhPZkxhc3RTbGFzaCA9IGluZGV4T2ZB
dAorICAgICAgICB2YXIgZnVuY3Rpb25OYW1lID0gc3RhY2tUcmFjZVtpXS5zdWJzdHJpbmcoMCwg
aW5kZXhPZkF0KTsKKyAgICAgICAgdmFyIGZpbGVOYW1lID0gc3RhY2tUcmFjZVtpXS5zdWJzdHJp
bmcoaW5kZXhPZkxhc3RTbGFzaCArIDEpOworICAgICAgICBkZWJ1ZygiICAgICIgKyBpICsgIiAg
ICIgKyBmdW5jdGlvbk5hbWUgKyAiIGF0ICIgKyBmaWxlTmFtZSk7CisgICAgfQorICAgIGRlYnVn
KCcnKTsKK30KKzwvc2NyaXB0PgorCis8IS0tIENhc2UgMTogVGhyb3cgYW5kIHByaW50IHN0YWNr
OiAtLT4KKzxzY3JpcHQ+dGVzdElkKys7PC9zY3JpcHQ+CisgICAgPHNjcmlwdD50cnkgeyB0aHJv
dyBuZXcgRXJyb3IoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuc3RhY2spOyB9PC9zY3Jp
cHQ+CisKKzwhLS0gQ2FzZSAyOiBTYW1lIHByb2dyYW0gYXMgQ2FzZSAxIGJ1dCBpbmRlbnRlZC4g
LS0+Cis8c2NyaXB0PnRlc3RJZCsrOzwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PnRyeSB7IHRo
cm93IG5ldyBFcnJvcigpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH08L3Nj
cmlwdD4KKworPCEtLSBDYXNlIDM6IFNhbWUgcHJvZ3JhbSBpbmRlbnRlZCBvbiB0aGUgc2FtZSBs
aW5lLiAtLT4KKzxzY3JpcHQ+dGVzdElkKys7PC9zY3JpcHQ+Cis8c2NyaXB0PnRyeSB7IHRocm93
IG5ldyBFcnJvcigpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH08L3Njcmlw
dD4gICA8c2NyaXB0PnRyeSB7IHRocm93IG5ldyBFcnJvcigpOyB9IGNhdGNoIChlKSB7IHByaW50
U3RhY2soZS5zdGFjayk7IH08L3NjcmlwdD4KKworPCEtLSBDYXNlIDQ6IFRocm93IGluc2lkZSBh
IEZ1bmN0aW9uLiAtLT4KKzxzY3JpcHQ+dGVzdElkKys7PC9zY3JpcHQ+Cis8c2NyaXB0PgordHJ5
IHsKKyAgICBmdW5jdGlvbiBkb1Rocm93NCgpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0KKyAgICBk
b1Rocm93NCgpOworfSBjYXRjaChlKSB7CisgICAgcHJpbnRTdGFjayhlLnN0YWNrKTsKK30KKzwv
c2NyaXB0PgorCis8IS0tIENhc2UgNTogRnVuY3Rpb24gd3JhcHBpbmcgYSBGdW5jdGlvbi4gLS0+
Cis8c2NyaXB0PnRlc3RJZCsrOzwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGRvVGhyb3c1
KCkgeyB0cnkgeyBmdW5jdGlvbiBpbm5lckZ1bmMoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9IGlu
bmVyRnVuYygpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH19OyBkb1Rocm93
NSgpOworPC9zY3JpcHQ+CisKKzwhLS0gQ2FzZSA2OiBTYW1lIGlubmVyIGZ1bmN0aW9uIGJvZHkg
YXMgQ2FzZSA1LiAtLT4KKzxzY3JpcHQ+dGVzdElkKys7PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVu
Y3Rpb24gZG9UaHJvdzYoKSB7IHRyeSB7IGZ1bmN0aW9uIGlubmVyRnVuYygpIHsgdGhyb3cgbmV3
IEVycm9yKCk7IH0gaW5uZXJGdW5jKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLnN0YWNr
KTsgfX07IGRvVGhyb3c2KCk7Cis8L3NjcmlwdD4KKworPCEtLSBDYXNlIDc6IENhc2UgMSByZWRv
bmUgd2l0aCBhIEZ1bmN0aW9uIEV4cHJlc3Npb24uIC0tPgorPHNjcmlwdD50ZXN0SWQrKzs8L3Nj
cmlwdD4KKyAgICA8c2NyaXB0PnRyeSB7IChmdW5jdGlvbiAoKSB7IHRocm93IG5ldyBFcnJvcigp
OyB9KSgpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH08L3NjcmlwdD4KKzwh
LS0gQ2FzZSA4OiBDYXNlIDIgcmVkb25lIHdpdGggYSBGdW5jdGlvbiBFeHByZXNzaW9uLiAtLT4K
KzxzY3JpcHQ+dGVzdElkKys7PC9zY3JpcHQ+CisgICAgICAgICAgICA8c2NyaXB0PnRyeSB7IChm
dW5jdGlvbiAoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9KSgpOyB9IGNhdGNoIChlKSB7IHByaW50
U3RhY2soZS5zdGFjayk7IH08L3NjcmlwdD4KKworPCEtLSBDYXNlIDk6IENhc2UgMyByZWRvbmUg
d2l0aCBhIEZ1bmN0aW9uIEV4cHJlc3Npb24uIC0tPgorPHNjcmlwdD50ZXN0SWQrKzs8L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdD50cnkgeyAoZnVuY3Rpb24gKCkgeyB0aHJvdyBuZXcgRXJyb3Io
KTsgfSkoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuc3RhY2spOyB9PC9zY3JpcHQ+ICAg
PHNjcmlwdD50cnkgeyAoZnVuY3Rpb24gKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSkoKTsgfSBj
YXRjaCAoZSkgeyBwcmludFN0YWNrKGUuc3RhY2spOyB9PC9zY3JpcHQ+CisKKzwhLS0gQ2FzZSAx
MDogRnVuY3Rpb24gRXhwcmVzc2lvbiBhcyBtdWx0aXBsZSBsaW5lcy4gLS0+Cis8c2NyaXB0PnRl
c3RJZCsrOzwvc2NyaXB0PgorPHNjcmlwdD4KK3RyeSB7CisgICAgKGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCk7CisgICAgIH0pKCk7Cit9IGNhdGNoKGUpIHsKKyAgICBw
cmludFN0YWNrKGUuc3RhY2spOworfQorPC9zY3JpcHQ+CisKKzwhLS0gQ2FzZSAxMTogQ2FzZSA0
IHJlZG9uZSB3aXRoIGEgRnVuY3Rpb24gd3JhcHBpbmcgRnVuY3Rpb24gRXhwcmVzc2lvbi4gLS0+
Cis8c2NyaXB0PnRlc3RJZCsrOzwvc2NyaXB0PgorPHNjcmlwdD4KK3RyeSB7CisgICAgZnVuY3Rp
b24gZG9UaHJvdzExKCkgeworICAgICAgICAoZnVuY3Rpb24gKCkgeyB0aHJvdyBuZXcgRXJyb3Io
KTsgfSkoKTsKKyAgICB9CisgICAgZG9UaHJvdzExKCk7Cit9IGNhdGNoKGUpIHsKKyAgICBwcmlu
dFN0YWNrKGUuc3RhY2spOworfQorPC9zY3JpcHQ+CisKKzwhLS0gQ2FzZSAxMjogQSBGdW5jdGlv
biBFeHByZXNzaW9uIHdyYXBwaW5nIGEgRnVuY3Rpb24gRXhwcmVzc2lvbi4gLS0+Cis8c2NyaXB0
PnRlc3RJZCsrOzwvc2NyaXB0PgorPHNjcmlwdD4KK3RyeSB7IChmdW5jdGlvbiAoKSB7KGZ1bmN0
aW9uICgpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0pKCk7fSkoKTsgfSBjYXRjaCAoZSkgeyBwcmlu
dFN0YWNrKGUuc3RhY2spOyB9Cis8L3NjcmlwdD4KKworPCEtLSBDYXNlIDEzOiBTYW1lIGZ1bmN0
aW9uIGJvZHkgYXMgQ2FzZSAxMi4gLS0+Cis8c2NyaXB0PnRlc3RJZCsrOzwvc2NyaXB0PgorPHNj
cmlwdD4KK3RyeSB7IChmdW5jdGlvbiAoKSB7KGZ1bmN0aW9uICgpIHsgdGhyb3cgbmV3IEVycm9y
KCk7IH0pKCk7fSkoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuc3RhY2spOyB9Cis8L3Nj
cmlwdD4KKworPCEtLSBDYXNlIDE0OiBGdW5jdGlvbiBFeHByZXNzaW9uIGluIGEgRnVuY3Rpb24g
RXhwcmVzc2lvbiBpbiBhIEZ1bmN0aW9uLiAtLT4KKzxzY3JpcHQ+dGVzdElkKys7PC9zY3JpcHQ+
Cis8c2NyaXB0PgordHJ5IHsgZnVuY3Rpb24gZG9UaHJvdzE0KCkgeyhmdW5jdGlvbiAoKSB7IChm
dW5jdGlvbiAoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9KSgpO30pKCk7fSBkb1Rocm93MTQoKTsg
fSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuc3RhY2spOyB9Cis8L3NjcmlwdD4KKworPCEtLSBD
YXNlIDE1OiBUaHJvdyBpbiBhbiBFdmFsLiAtLT4KKzxzY3JpcHQ+dGVzdElkKys7PC9zY3JpcHQ+
Cis8c2NyaXB0PgorZXZhbCgidHJ5IHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gY2F0Y2goZSkgeyBw
cmludFN0YWNrKGUuc3RhY2spOyB9Iik7Cis8L3NjcmlwdD4KKworPCEtLSBDYXNlIDE2OiBNdWx0
aXBsZSBsaW5lcyBpbiBhbiBFdmFsLiAtLT4KKzxzY3JpcHQ+dGVzdElkKys7PC9zY3JpcHQ+Cis8
c2NyaXB0PgorZXZhbCgiXG4iICsKKyJ0cnkge1xuIiArCisiICAgIGZ1bmN0aW9uIGRvVGhyb3cx
NigpIHt0aHJvdyBuZXcgRXJyb3IoKTt9XG4iICsKKyIgICAgZG9UaHJvdzE2KCk7XG4iICsKKyJ9
IGNhdGNoKGUpIHtcbiIgKworIiAgICBwcmludFN0YWNrKGUuc3RhY2spO1xuIiArCisifVxuIiAr
CisiIik7Cis8L3NjcmlwdD4KKworPCEtLSBDYXNlIDE3OiBGdW5jdGlvbiBFeHByZXNzaW9uIGlu
IGFuIEV2YWwuIC0tPgorPHNjcmlwdD50ZXN0SWQrKzs8L3NjcmlwdD4KKzxzY3JpcHQ+CitldmFs
KCJ0cnkgeyAoZnVuY3Rpb24gKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTt9KSgpOyB9IGNhdGNoKGUp
IHsgcHJpbnRTdGFjayhlLnN0YWNrKTsgfSIpOworPC9zY3JpcHQ+CisKKzwhLS0gQ2FzZSAxODog
TXVsdGlwbGUgbGluZXMgd2l0aCBhIEZ1bmN0aW9uIEV4cHJlc3Npb24gaW4gYW4gRXZhbC4gLS0+
Cis8c2NyaXB0PnRlc3RJZCsrOzwvc2NyaXB0PgorPHNjcmlwdD4KK2V2YWwoIlxuIiArCisidHJ5
IHtcbiIgKworIiAgICAoZnVuY3Rpb24gKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTt9KSgpO1xuIiAr
CisifSBjYXRjaChlKSB7XG4iICsKKyIgICAgcHJpbnRTdGFjayhlLnN0YWNrKTtcbiIgKworIn1c
biIgKworIiIpOworPC9zY3JpcHQ+CisKKzwhLS0gTm93IGRvIGl0IGFsbCBvdmVyIHdpdGggYSBs
b2FkZWQgc2NyaXB0IGZpbGUuIC0tPgorPHNjcmlwdD50ZXN0SWQgPSAwOzwvc2NyaXB0PgorCTxz
Y3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvbGluZS1jb2x1bW4tbnVtYmVycy5qcyI+PC9zY3JpcHQ+
CisKKwk8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3N0YWNrLXRyYWNlLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3N0YWNrLXRyYWNl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTUxOTIwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9z
dGFjay10cmFjZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNDYxICs0LDQ2MSBA
QCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBCiAKIAogLS0+IFN0YWNr
IFRyYWNlOgotICAgIDAgICBub3JtYWxJbm5lciBhdCBzdGFjay10cmFjZS5qczozMTo0NgotICAg
IDEgICBub3JtYWxPdXRlciBhdCBzdGFjay10cmFjZS5qczozMDozNgotICAgIDIgICBnbG9iYWwg
Y29kZSBhdCBzdGFjay10cmFjZS5qczozNjoxNworICAgIDAgICBub3JtYWxJbm5lciBhdCBzdGFj
ay10cmFjZS5qczozMTo0NworICAgIDEgICBub3JtYWxPdXRlciBhdCBzdGFjay10cmFjZS5qczoz
MDozNworICAgIDIgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczozNjoxOAogCiAtLT4g
U3RhY2sgVHJhY2U6Ci0gICAgMCAgIGlubmVyIGF0IHN0YWNrLXRyYWNlLmpzOjI4OjY4CisgICAg
MCAgIGlubmVyIGF0IHN0YWNrLXRyYWNlLmpzOjI4OjY5CiAgICAgMSAgICBhdCBldmFsIGNvZGUK
ICAgICAyICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgMyAgIGV2YWxlciBhdCBzdGFjay10
cmFjZS5qczoyOToyOAotICAgIDQgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczozOTox
MgorICAgIDMgICBldmFsZXIgYXQgc3RhY2stdHJhY2UuanM6Mjk6MjkKKyAgICA0ICAgZ2xvYmFs
IGNvZGUgYXQgc3RhY2stdHJhY2UuanM6Mzk6MTMKIAogLS0+IFN0YWNrIFRyYWNlOgotICAgIDAg
ICBpbm5lciBhdCBzdGFjay10cmFjZS5qczoyODo2OAotICAgIDEgICBvdXRlciBhdCBzdGFjay10
cmFjZS5qczoyNzozMworICAgIDAgICBpbm5lciBhdCBzdGFjay10cmFjZS5qczoyODo2OQorICAg
IDEgICBvdXRlciBhdCBzdGFjay10cmFjZS5qczoyNzozNAogICAgIDIgICAgYXQgZXZhbCBjb2Rl
CiAgICAgMyAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDQgICBldmFsZXIgYXQgc3RhY2st
dHJhY2UuanM6Mjk6MjgKLSAgICA1ICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6NDA6
MTIKKyAgICA0ICAgZXZhbGVyIGF0IHN0YWNrLXRyYWNlLmpzOjI5OjI5CisgICAgNSAgIGdsb2Jh
bCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjQwOjEzCiAKIC0tPiBTdGFjayBUcmFjZToKLSAgICAw
ICAgaW5uZXIgYXQgc3RhY2stdHJhY2UuanM6Mjg6NjgKLSAgICAxICAgZ2xvYmFsIGNvZGUgYXQg
c3RhY2stdHJhY2UuanM6NDM6MjIKKyAgICAwICAgaW5uZXIgYXQgc3RhY2stdHJhY2UuanM6Mjg6
NjkKKyAgICAxICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6NDM6MjMKIAogLS0+IFN0
YWNrIFRyYWNlOgotICAgIDAgICBpbm5lciBhdCBzdGFjay10cmFjZS5qczoyODo2OAotICAgIDEg
ICBvdXRlciBhdCBzdGFjay10cmFjZS5qczoyNzozMwotICAgIDIgICBnbG9iYWwgY29kZSBhdCBz
dGFjay10cmFjZS5qczo0NDoyMgorICAgIDAgICBpbm5lciBhdCBzdGFjay10cmFjZS5qczoyODo2
OQorICAgIDEgICBvdXRlciBhdCBzdGFjay10cmFjZS5qczoyNzozNAorICAgIDIgICBnbG9iYWwg
Y29kZSBhdCBzdGFjay10cmFjZS5qczo0NDoyMwogCiAtLT4gU3RhY2sgVHJhY2U6CiAgICAgMCAg
IGFwcGVuZENoaWxkIGF0IFtuYXRpdmUgY29kZV0KLSAgICAxICAgaG9zdFRocm93ZXIgYXQgc3Rh
Y2stdHJhY2UuanM6MjU6NTkKLSAgICAyICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6
NDc6MTcKKyAgICAxICAgaG9zdFRocm93ZXIgYXQgc3RhY2stdHJhY2UuanM6MjU6NjAKKyAgICAy
ICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6NDc6MTgKIAogLS0+IFN0YWNrIFRyYWNl
OgotICAgIDAgICBodG1sSW5uZXIgYXQgc3RhY2stdHJhY2UuaHRtbDoxMDo1NQotICAgIDEgICBz
Y3JpcHRlcklubmVyIGF0IHN0YWNrLXRyYWNlLmpzOjMyOjM2Ci0gICAgMiAgIGdsb2JhbCBjb2Rl
IGF0IHN0YWNrLXRyYWNlLmpzOjQ5OjE5Ci0KLS0tPiBTdGFjayBUcmFjZToKLSAgICAwICAgaHRt
bElubmVyIGF0IHN0YWNrLXRyYWNlLmh0bWw6MTA6NTUKLSAgICAxICAgaHRtbE91dGVyIGF0IHN0
YWNrLXRyYWNlLmh0bWw6MTE6MzIKLSAgICAyICAgc2NyaXB0ZXJPdXRlciBhdCBzdGFjay10cmFj
ZS5qczozMzozNgotICAgIDMgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczo1MDoxOQot
Ci0tLT4gU3RhY2sgVHJhY2U6Ci0gICAgMCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNl
LmpzOjUyOjQyCi0gICAgMSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQy
Ci0gICAgMiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgMyAg
IHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNCAgIHNlbGZSZWN1
cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNSAgIHNlbGZSZWN1cnNpdmUxIGF0
IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRy
YWNlLmpzOjUyOjQyCi0gICAgNyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUy
OjQyCi0gICAgOCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAg
OSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgMTAgICBzZWxm
UmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDExICAgc2VsZlJlY3Vyc2l2
ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICAxMiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0
YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgMTMgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFj
ZS5qczo1Mjo0MgotICAgIDE0ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6
NDIKLSAgICAxNSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAg
MTYgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDE3ICAgc2Vs
ZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICAxOCAgIHNlbGZSZWN1cnNp
dmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgMTkgICBzZWxmUmVjdXJzaXZlMSBhdCBz
dGFjay10cmFjZS5qczo1Mjo0MgotICAgIDIwICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJh
Y2UuanM6NTI6NDIKLSAgICAyMSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUy
OjQyCi0gICAgMjIgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAg
IDIzICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICAyNCAgIHNl
bGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgMjUgICBzZWxmUmVjdXJz
aXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDI2ICAgc2VsZlJlY3Vyc2l2ZTEgYXQg
c3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICAyNyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRy
YWNlLmpzOjUyOjQyCi0gICAgMjggICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1
Mjo0MgotICAgIDI5ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAg
ICAzMCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgMzEgICBz
ZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDMyICAgc2VsZlJlY3Vy
c2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICAzMyAgIHNlbGZSZWN1cnNpdmUxIGF0
IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgMzQgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10
cmFjZS5qczo1Mjo0MgotICAgIDM1ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6
NTI6NDIKLSAgICAzNiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0g
ICAgMzcgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDM4ICAg
c2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICAzOSAgIHNlbGZSZWN1
cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNDAgICBzZWxmUmVjdXJzaXZlMSBh
dCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDQxICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2st
dHJhY2UuanM6NTI6NDIKLSAgICA0MiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpz
OjUyOjQyCi0gICAgNDMgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0Mgot
ICAgIDQ0ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA0NSAg
IHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNDYgICBzZWxmUmVj
dXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDQ3ICAgc2VsZlJlY3Vyc2l2ZTEg
YXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA0OCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNr
LXRyYWNlLmpzOjUyOjQyCi0gICAgNDkgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5q
czo1Mjo0MgotICAgIDUwICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIK
LSAgICA1MSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNTIg
ICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDUzICAgc2VsZlJl
Y3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA1NCAgIHNlbGZSZWN1cnNpdmUx
IGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNTUgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFj
ay10cmFjZS5qczo1Mjo0MgotICAgIDU2ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2Uu
anM6NTI6NDIKLSAgICA1NyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQy
Ci0gICAgNTggICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDU5
ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA2MCAgIHNlbGZS
ZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNjEgICBzZWxmUmVjdXJzaXZl
MSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDYyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3Rh
Y2stdHJhY2UuanM6NTI6NDIKLSAgICA2MyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNl
LmpzOjUyOjQyCi0gICAgNjQgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0
MgotICAgIDY1ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA2
NiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNjcgICBzZWxm
UmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDY4ICAgc2VsZlJlY3Vyc2l2
ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA2OSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0
YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNzAgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFj
ZS5qczo1Mjo0MgotICAgIDcxICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6
NDIKLSAgICA3MiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAg
NzMgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDc0ICAgc2Vs
ZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA3NSAgIHNlbGZSZWN1cnNp
dmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNzYgICBzZWxmUmVjdXJzaXZlMSBhdCBz
dGFjay10cmFjZS5qczo1Mjo0MgotICAgIDc3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJh
Y2UuanM6NTI6NDIKLSAgICA3OCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUy
OjQyCi0gICAgNzkgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAg
IDgwICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA4MSAgIHNl
bGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgODIgICBzZWxmUmVjdXJz
aXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDgzICAgc2VsZlJlY3Vyc2l2ZTEgYXQg
c3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA4NCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRy
YWNlLmpzOjUyOjQyCi0gICAgODUgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1
Mjo0MgotICAgIDg2ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAg
ICA4NyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgODggICBz
ZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDg5ICAgc2VsZlJlY3Vy
c2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA5MCAgIHNlbGZSZWN1cnNpdmUxIGF0
IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgOTEgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10
cmFjZS5qczo1Mjo0MgotICAgIDkyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6
NTI6NDIKLSAgICA5MyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0g
ICAgOTQgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDk1ICAg
c2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA5NiAgIHNlbGZSZWN1
cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgOTcgICBzZWxmUmVjdXJzaXZlMSBh
dCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDk4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2st
dHJhY2UuanM6NTI6NDIKLSAgICA5OSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpz
OjUyOjQyCi0KLS0tPiBTdGFjayBUcmFjZToKLSAgICAwICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3Rh
Y2stdHJhY2UuanM6NjI6MjYKLSAgICAxICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2Uu
anM6NjI6MjYKLSAgICAyICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYK
LSAgICAzICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA0ICAg
c2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA1ICAgc2VsZlJlY3Vy
c2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA2ICAgc2VsZlJlY3Vyc2l2ZTIgYXQg
c3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJh
Y2UuanM6NjI6MjYKLSAgICA4ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6
MjYKLSAgICA5ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICAx
MCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgMTEgICBzZWxm
UmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDEyICAgc2VsZlJlY3Vyc2l2
ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICAxMyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0
YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgMTQgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFj
ZS5qczo2MjoyNgotICAgIDE1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6
MjYKLSAgICAxNiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAg
MTcgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDE4ICAgc2Vs
ZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICAxOSAgIHNlbGZSZWN1cnNp
dmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgMjAgICBzZWxmUmVjdXJzaXZlMiBhdCBz
dGFjay10cmFjZS5qczo2MjoyNgotICAgIDIxICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJh
Y2UuanM6NjI6MjYKLSAgICAyMiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYy
OjI2Ci0gICAgMjMgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAg
IDI0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICAyNSAgIHNl
bGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgMjYgICBzZWxmUmVjdXJz
aXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDI3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQg
c3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICAyOCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRy
YWNlLmpzOjYyOjI2Ci0gICAgMjkgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2
MjoyNgotICAgIDMwICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAg
ICAzMSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgMzIgICBz
ZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDMzICAgc2VsZlJlY3Vy
c2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICAzNCAgIHNlbGZSZWN1cnNpdmUyIGF0
IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgMzUgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10
cmFjZS5qczo2MjoyNgotICAgIDM2ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6
NjI6MjYKLSAgICAzNyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0g
ICAgMzggICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDM5ICAg
c2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA0MCAgIHNlbGZSZWN1
cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNDEgICBzZWxmUmVjdXJzaXZlMiBh
dCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDQyICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2st
dHJhY2UuanM6NjI6MjYKLSAgICA0MyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpz
OjYyOjI2Ci0gICAgNDQgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgot
ICAgIDQ1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA0NiAg
IHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNDcgICBzZWxmUmVj
dXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDQ4ICAgc2VsZlJlY3Vyc2l2ZTIg
YXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA0OSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNr
LXRyYWNlLmpzOjYyOjI2Ci0gICAgNTAgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5q
czo2MjoyNgotICAgIDUxICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYK
LSAgICA1MiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNTMg
ICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDU0ICAgc2VsZlJl
Y3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA1NSAgIHNlbGZSZWN1cnNpdmUy
IGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNTYgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFj
ay10cmFjZS5qczo2MjoyNgotICAgIDU3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2Uu
anM6NjI6MjYKLSAgICA1OCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2
Ci0gICAgNTkgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDYw
ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA2MSAgIHNlbGZS
ZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNjIgICBzZWxmUmVjdXJzaXZl
MiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDYzICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3Rh
Y2stdHJhY2UuanM6NjI6MjYKLSAgICA2NCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNl
LmpzOjYyOjI2Ci0gICAgNjUgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2Mjoy
NgotICAgIDY2ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA2
NyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNjggICBzZWxm
UmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDY5ICAgc2VsZlJlY3Vyc2l2
ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA3MCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0
YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNzEgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFj
ZS5qczo2MjoyNgotICAgIDcyICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6
MjYKLSAgICA3MyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAg
NzQgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDc1ICAgc2Vs
ZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA3NiAgIHNlbGZSZWN1cnNp
dmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNzcgICBzZWxmUmVjdXJzaXZlMiBhdCBz
dGFjay10cmFjZS5qczo2MjoyNgotICAgIDc4ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJh
Y2UuanM6NjI6MjYKLSAgICA3OSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYy
OjI2Ci0gICAgODAgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAg
IDgxICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA4MiAgIHNl
bGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgODMgICBzZWxmUmVjdXJz
aXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDg0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQg
c3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA4NSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRy
YWNlLmpzOjYyOjI2Ci0gICAgODYgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2
MjoyNgotICAgIDg3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAg
ICA4OCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgODkgICBz
ZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDkwICAgc2VsZlJlY3Vy
c2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA5MSAgIHNlbGZSZWN1cnNpdmUyIGF0
IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgOTIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10
cmFjZS5qczo2MjoyNgotICAgIDkzICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6
NjI6MjYKLSAgICA5NCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0g
ICAgOTUgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDk2ICAg
c2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA5NyAgIHNlbGZSZWN1
cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgOTggICBzZWxmUmVjdXJzaXZlMiBh
dCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDk5ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2st
dHJhY2UuanM6NjI6MjYKKyAgICAwICAgaHRtbElubmVyIGF0IHN0YWNrLXRyYWNlLmh0bWw6MTA6
NTYKKyAgICAxICAgc2NyaXB0ZXJJbm5lciBhdCBzdGFjay10cmFjZS5qczozMjozNworICAgIDIg
ICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczo0OToyMAorCistLT4gU3RhY2sgVHJhY2U6
CisgICAgMCAgIGh0bWxJbm5lciBhdCBzdGFjay10cmFjZS5odG1sOjEwOjU2CisgICAgMSAgIGh0
bWxPdXRlciBhdCBzdGFjay10cmFjZS5odG1sOjExOjMzCisgICAgMiAgIHNjcmlwdGVyT3V0ZXIg
YXQgc3RhY2stdHJhY2UuanM6MzM6MzcKKyAgICAzICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJh
Y2UuanM6NTA6MjAKKworLS0+IFN0YWNrIFRyYWNlOgorICAgIDAgICBzZWxmUmVjdXJzaXZlMSBh
dCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDEgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10
cmFjZS5qczo1Mjo0MworICAgIDIgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1
Mjo0MworICAgIDMgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAg
IDQgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDUgICBzZWxm
UmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDYgICBzZWxmUmVjdXJzaXZl
MSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDcgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFj
ay10cmFjZS5qczo1Mjo0MworICAgIDggICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5q
czo1Mjo0MworICAgIDkgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0Mwor
ICAgIDEwICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICAxMSAg
IHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgMTIgICBzZWxmUmVj
dXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDEzICAgc2VsZlJlY3Vyc2l2ZTEg
YXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICAxNCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNr
LXRyYWNlLmpzOjUyOjQzCisgICAgMTUgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5q
czo1Mjo0MworICAgIDE2ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMK
KyAgICAxNyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgMTgg
ICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDE5ICAgc2VsZlJl
Y3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICAyMCAgIHNlbGZSZWN1cnNpdmUx
IGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgMjEgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFj
ay10cmFjZS5qczo1Mjo0MworICAgIDIyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2Uu
anM6NTI6NDMKKyAgICAyMyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQz
CisgICAgMjQgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDI1
ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICAyNiAgIHNlbGZS
ZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgMjcgICBzZWxmUmVjdXJzaXZl
MSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDI4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3Rh
Y2stdHJhY2UuanM6NTI6NDMKKyAgICAyOSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNl
LmpzOjUyOjQzCisgICAgMzAgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0
MworICAgIDMxICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICAz
MiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgMzMgICBzZWxm
UmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDM0ICAgc2VsZlJlY3Vyc2l2
ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICAzNSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0
YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgMzYgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFj
ZS5qczo1Mjo0MworICAgIDM3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6
NDMKKyAgICAzOCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAg
MzkgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDQwICAgc2Vs
ZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA0MSAgIHNlbGZSZWN1cnNp
dmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNDIgICBzZWxmUmVjdXJzaXZlMSBhdCBz
dGFjay10cmFjZS5qczo1Mjo0MworICAgIDQzICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJh
Y2UuanM6NTI6NDMKKyAgICA0NCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUy
OjQzCisgICAgNDUgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAg
IDQ2ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA0NyAgIHNl
bGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNDggICBzZWxmUmVjdXJz
aXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDQ5ICAgc2VsZlJlY3Vyc2l2ZTEgYXQg
c3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA1MCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRy
YWNlLmpzOjUyOjQzCisgICAgNTEgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1
Mjo0MworICAgIDUyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAg
ICA1MyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNTQgICBz
ZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDU1ICAgc2VsZlJlY3Vy
c2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA1NiAgIHNlbGZSZWN1cnNpdmUxIGF0
IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNTcgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10
cmFjZS5qczo1Mjo0MworICAgIDU4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6
NTI6NDMKKyAgICA1OSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisg
ICAgNjAgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDYxICAg
c2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA2MiAgIHNlbGZSZWN1
cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNjMgICBzZWxmUmVjdXJzaXZlMSBh
dCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDY0ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2st
dHJhY2UuanM6NTI6NDMKKyAgICA2NSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpz
OjUyOjQzCisgICAgNjYgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0Mwor
ICAgIDY3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA2OCAg
IHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNjkgICBzZWxmUmVj
dXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDcwICAgc2VsZlJlY3Vyc2l2ZTEg
YXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA3MSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNr
LXRyYWNlLmpzOjUyOjQzCisgICAgNzIgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5q
czo1Mjo0MworICAgIDczICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMK
KyAgICA3NCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNzUg
ICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDc2ICAgc2VsZlJl
Y3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA3NyAgIHNlbGZSZWN1cnNpdmUx
IGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNzggICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFj
ay10cmFjZS5qczo1Mjo0MworICAgIDc5ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2Uu
anM6NTI6NDMKKyAgICA4MCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQz
CisgICAgODEgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDgy
ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA4MyAgIHNlbGZS
ZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgODQgICBzZWxmUmVjdXJzaXZl
MSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDg1ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3Rh
Y2stdHJhY2UuanM6NTI6NDMKKyAgICA4NiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNl
LmpzOjUyOjQzCisgICAgODcgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0
MworICAgIDg4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA4
OSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgOTAgICBzZWxm
UmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDkxICAgc2VsZlJlY3Vyc2l2
ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA5MiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0
YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgOTMgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFj
ZS5qczo1Mjo0MworICAgIDk0ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6
NDMKKyAgICA5NSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAg
OTYgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDk3ICAgc2Vs
ZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA5OCAgIHNlbGZSZWN1cnNp
dmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgOTkgICBzZWxmUmVjdXJzaXZlMSBhdCBz
dGFjay10cmFjZS5qczo1Mjo0MworCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIHNlbGZSZWN1
cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgMSAgIHNlbGZSZWN1cnNpdmUyIGF0
IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgMiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRy
YWNlLmpzOjYyOjI3CisgICAgMyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYy
OjI3CisgICAgNCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAg
NSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNiAgIHNlbGZS
ZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNyAgIHNlbGZSZWN1cnNpdmUy
IGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgOCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNr
LXRyYWNlLmpzOjYyOjI3CisgICAgOSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpz
OjYyOjI3CisgICAgMTAgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNwor
ICAgIDExICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICAxMiAg
IHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgMTMgICBzZWxmUmVj
dXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDE0ICAgc2VsZlJlY3Vyc2l2ZTIg
YXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICAxNSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNr
LXRyYWNlLmpzOjYyOjI3CisgICAgMTYgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5q
czo2MjoyNworICAgIDE3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcK
KyAgICAxOCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgMTkg
ICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDIwICAgc2VsZlJl
Y3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICAyMSAgIHNlbGZSZWN1cnNpdmUy
IGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgMjIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFj
ay10cmFjZS5qczo2MjoyNworICAgIDIzICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2Uu
anM6NjI6MjcKKyAgICAyNCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3
CisgICAgMjUgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDI2
ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICAyNyAgIHNlbGZS
ZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgMjggICBzZWxmUmVjdXJzaXZl
MiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDI5ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3Rh
Y2stdHJhY2UuanM6NjI6MjcKKyAgICAzMCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNl
LmpzOjYyOjI3CisgICAgMzEgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2Mjoy
NworICAgIDMyICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICAz
MyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgMzQgICBzZWxm
UmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDM1ICAgc2VsZlJlY3Vyc2l2
ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICAzNiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0
YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgMzcgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFj
ZS5qczo2MjoyNworICAgIDM4ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6
MjcKKyAgICAzOSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAg
NDAgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDQxICAgc2Vs
ZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA0MiAgIHNlbGZSZWN1cnNp
dmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNDMgICBzZWxmUmVjdXJzaXZlMiBhdCBz
dGFjay10cmFjZS5qczo2MjoyNworICAgIDQ0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJh
Y2UuanM6NjI6MjcKKyAgICA0NSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYy
OjI3CisgICAgNDYgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAg
IDQ3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA0OCAgIHNl
bGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNDkgICBzZWxmUmVjdXJz
aXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDUwICAgc2VsZlJlY3Vyc2l2ZTIgYXQg
c3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA1MSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRy
YWNlLmpzOjYyOjI3CisgICAgNTIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2
MjoyNworICAgIDUzICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAg
ICA1NCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNTUgICBz
ZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDU2ICAgc2VsZlJlY3Vy
c2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA1NyAgIHNlbGZSZWN1cnNpdmUyIGF0
IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNTggICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10
cmFjZS5qczo2MjoyNworICAgIDU5ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6
NjI6MjcKKyAgICA2MCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3Cisg
ICAgNjEgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDYyICAg
c2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA2MyAgIHNlbGZSZWN1
cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNjQgICBzZWxmUmVjdXJzaXZlMiBh
dCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDY1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2st
dHJhY2UuanM6NjI6MjcKKyAgICA2NiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpz
OjYyOjI3CisgICAgNjcgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNwor
ICAgIDY4ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA2OSAg
IHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNzAgICBzZWxmUmVj
dXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDcxICAgc2VsZlJlY3Vyc2l2ZTIg
YXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA3MiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNr
LXRyYWNlLmpzOjYyOjI3CisgICAgNzMgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5q
czo2MjoyNworICAgIDc0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcK
KyAgICA3NSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNzYg
ICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDc3ICAgc2VsZlJl
Y3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA3OCAgIHNlbGZSZWN1cnNpdmUy
IGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNzkgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFj
ay10cmFjZS5qczo2MjoyNworICAgIDgwICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2Uu
anM6NjI6MjcKKyAgICA4MSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3
CisgICAgODIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDgz
ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA4NCAgIHNlbGZS
ZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgODUgICBzZWxmUmVjdXJzaXZl
MiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDg2ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3Rh
Y2stdHJhY2UuanM6NjI6MjcKKyAgICA4NyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNl
LmpzOjYyOjI3CisgICAgODggICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2Mjoy
NworICAgIDg5ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA5
MCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgOTEgICBzZWxm
UmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDkyICAgc2VsZlJlY3Vyc2l2
ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA5MyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0
YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgOTQgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFj
ZS5qczo2MjoyNworICAgIDk1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6
MjcKKyAgICA5NiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAg
OTcgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDk4ICAgc2Vs
ZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA5OSAgIHNlbGZSZWN1cnNp
dmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CiAKIC0tPiBTdGFjayBUcmFjZToKICAgICAwICAg
ZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgMSAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRy
YWNlLmpzOjY5OjgKKyAgICAxICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6
OQogICAgIDIgICAgYXQgZXZhbCBjb2RlCiAgICAgMyAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQot
ICAgIDQgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo4CisgICAgNCAgIHNl
bGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA1ICAgIGF0IGV2YWwgY29k
ZQogICAgIDYgICBldmFsIGF0IFtuYXRpdmUgY29kZV0KLSAgICA3ICAgc2VsZlJlY3Vyc2l2ZTMg
YXQgc3RhY2stdHJhY2UuanM6Njk6OAorICAgIDcgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10
cmFjZS5qczo2OTo5CiAgICAgOCAgICBhdCBldmFsIGNvZGUKICAgICA5ICAgZXZhbCBhdCBbbmF0
aXZlIGNvZGVdCi0gICAgMTAgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo4
CisgICAgMTAgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo5CiAgICAgMTEg
ICAgYXQgZXZhbCBjb2RlCiAgICAgMTIgICBldmFsIGF0IFtuYXRpdmUgY29kZV0KLSAgICAxMyAg
IHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAgICAxMyAgIHNlbGZSZWN1
cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICAxNCAgICBhdCBldmFsIGNvZGUKICAg
ICAxNSAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDE2ICAgc2VsZlJlY3Vyc2l2ZTMgYXQg
c3RhY2stdHJhY2UuanM6Njk6OAorICAgIDE2ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJh
Y2UuanM6Njk6OQogICAgIDE3ICAgIGF0IGV2YWwgY29kZQogICAgIDE4ICAgZXZhbCBhdCBbbmF0
aXZlIGNvZGVdCi0gICAgMTkgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo4
CisgICAgMTkgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo5CiAgICAgMjAg
ICAgYXQgZXZhbCBjb2RlCiAgICAgMjEgICBldmFsIGF0IFtuYXRpdmUgY29kZV0KLSAgICAyMiAg
IHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAgICAyMiAgIHNlbGZSZWN1
cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICAyMyAgICBhdCBldmFsIGNvZGUKICAg
ICAyNCAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDI1ICAgc2VsZlJlY3Vyc2l2ZTMgYXQg
c3RhY2stdHJhY2UuanM6Njk6OAorICAgIDI1ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJh
Y2UuanM6Njk6OQogICAgIDI2ICAgIGF0IGV2YWwgY29kZQogICAgIDI3ICAgZXZhbCBhdCBbbmF0
aXZlIGNvZGVdCi0gICAgMjggICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo4
CisgICAgMjggICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo5CiAgICAgMjkg
ICAgYXQgZXZhbCBjb2RlCiAgICAgMzAgICBldmFsIGF0IFtuYXRpdmUgY29kZV0KLSAgICAzMSAg
IHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAgICAzMSAgIHNlbGZSZWN1
cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICAzMiAgICBhdCBldmFsIGNvZGUKICAg
ICAzMyAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDM0ICAgc2VsZlJlY3Vyc2l2ZTMgYXQg
c3RhY2stdHJhY2UuanM6Njk6OAorICAgIDM0ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJh
Y2UuanM6Njk6OQogICAgIDM1ICAgIGF0IGV2YWwgY29kZQogICAgIDM2ICAgZXZhbCBhdCBbbmF0
aXZlIGNvZGVdCi0gICAgMzcgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo4
CisgICAgMzcgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo5CiAgICAgMzgg
ICAgYXQgZXZhbCBjb2RlCiAgICAgMzkgICBldmFsIGF0IFtuYXRpdmUgY29kZV0KLSAgICA0MCAg
IHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAgICA0MCAgIHNlbGZSZWN1
cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA0MSAgICBhdCBldmFsIGNvZGUKICAg
ICA0MiAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDQzICAgc2VsZlJlY3Vyc2l2ZTMgYXQg
c3RhY2stdHJhY2UuanM6Njk6OAorICAgIDQzICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJh
Y2UuanM6Njk6OQogICAgIDQ0ICAgIGF0IGV2YWwgY29kZQogICAgIDQ1ICAgZXZhbCBhdCBbbmF0
aXZlIGNvZGVdCi0gICAgNDYgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo4
CisgICAgNDYgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo5CiAgICAgNDcg
ICAgYXQgZXZhbCBjb2RlCiAgICAgNDggICBldmFsIGF0IFtuYXRpdmUgY29kZV0KLSAgICA0OSAg
IHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAgICA0OSAgIHNlbGZSZWN1
cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA1MCAgICBhdCBldmFsIGNvZGUKICAg
ICA1MSAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDUyICAgc2VsZlJlY3Vyc2l2ZTMgYXQg
c3RhY2stdHJhY2UuanM6Njk6OAorICAgIDUyICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJh
Y2UuanM6Njk6OQogICAgIDUzICAgIGF0IGV2YWwgY29kZQogICAgIDU0ICAgZXZhbCBhdCBbbmF0
aXZlIGNvZGVdCi0gICAgNTUgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo4
CisgICAgNTUgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo5CiAgICAgNTYg
ICAgYXQgZXZhbCBjb2RlCiAgICAgNTcgICBldmFsIGF0IFtuYXRpdmUgY29kZV0KLSAgICA1OCAg
IHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAgICA1OCAgIHNlbGZSZWN1
cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA1OSAgICBhdCBldmFsIGNvZGUKICAg
ICA2MCAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDYxICAgc2VsZlJlY3Vyc2l2ZTMgYXQg
c3RhY2stdHJhY2UuanM6Njk6OAorICAgIDYxICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJh
Y2UuanM6Njk6OQogICAgIDYyICAgIGF0IGV2YWwgY29kZQogICAgIDYzICAgZXZhbCBhdCBbbmF0
aXZlIGNvZGVdCi0gICAgNjQgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo4
CisgICAgNjQgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo5CiAgICAgNjUg
ICAgYXQgZXZhbCBjb2RlCiAgICAgNjYgICBldmFsIGF0IFtuYXRpdmUgY29kZV0KLSAgICA2NyAg
IHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAgICA2NyAgIHNlbGZSZWN1
cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA2OCAgICBhdCBldmFsIGNvZGUKICAg
ICA2OSAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDcwICAgc2VsZlJlY3Vyc2l2ZTMgYXQg
c3RhY2stdHJhY2UuanM6Njk6OAorICAgIDcwICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJh
Y2UuanM6Njk6OQogICAgIDcxICAgIGF0IGV2YWwgY29kZQogICAgIDcyICAgZXZhbCBhdCBbbmF0
aXZlIGNvZGVdCi0gICAgNzMgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo4
CisgICAgNzMgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo5CiAgICAgNzQg
ICAgYXQgZXZhbCBjb2RlCiAgICAgNzUgICBldmFsIGF0IFtuYXRpdmUgY29kZV0KLSAgICA3NiAg
IHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAgICA3NiAgIHNlbGZSZWN1
cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA3NyAgICBhdCBldmFsIGNvZGUKICAg
ICA3OCAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDc5ICAgc2VsZlJlY3Vyc2l2ZTMgYXQg
c3RhY2stdHJhY2UuanM6Njk6OAorICAgIDc5ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJh
Y2UuanM6Njk6OQogICAgIDgwICAgIGF0IGV2YWwgY29kZQogICAgIDgxICAgZXZhbCBhdCBbbmF0
aXZlIGNvZGVdCi0gICAgODIgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo4
CisgICAgODIgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo5CiAgICAgODMg
ICAgYXQgZXZhbCBjb2RlCiAgICAgODQgICBldmFsIGF0IFtuYXRpdmUgY29kZV0KLSAgICA4NSAg
IHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAgICA4NSAgIHNlbGZSZWN1
cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA4NiAgICBhdCBldmFsIGNvZGUKICAg
ICA4NyAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDg4ICAgc2VsZlJlY3Vyc2l2ZTMgYXQg
c3RhY2stdHJhY2UuanM6Njk6OAorICAgIDg4ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJh
Y2UuanM6Njk6OQogICAgIDg5ICAgIGF0IGV2YWwgY29kZQogICAgIDkwICAgZXZhbCBhdCBbbmF0
aXZlIGNvZGVdCi0gICAgOTEgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo4
CisgICAgOTEgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo5CiAgICAgOTIg
ICAgYXQgZXZhbCBjb2RlCiAgICAgOTMgICBldmFsIGF0IFtuYXRpdmUgY29kZV0KLSAgICA5NCAg
IHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAgICA5NCAgIHNlbGZSZWN1
cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA5NSAgICBhdCBldmFsIGNvZGUKICAg
ICA5NiAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDk3ICAgc2VsZlJlY3Vyc2l2ZTMgYXQg
c3RhY2stdHJhY2UuanM6Njk6OAorICAgIDk3ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJh
Y2UuanM6Njk6OQogICAgIDk4ICAgIGF0IGV2YWwgY29kZQogICAgIDk5ICAgZXZhbCBhdCBbbmF0
aXZlIGNvZGVdCiAKIC0tPiBTdGFjayBUcmFjZToKLSAgICAwICAgdGhyb3dFcnJvciBhdCBzdGFj
ay10cmFjZS5qczo3NzoxMgotICAgIDEgICB2YWx1ZU9mIGF0IHN0YWNrLXRyYWNlLmpzOjg0OjI2
Ci0gICAgMiAgIGdldHRlcjEgYXQgc3RhY2stdHJhY2UuanM6ODc6MTgKLSAgICAzICAgbm9uSW5s
aW5lYWJsZSBhdCBzdGFjay10cmFjZS5qczoxMTM6MTYKLSAgICA0ICAgaW5saW5lYWJsZSBhdCBz
dGFjay10cmFjZS5qczoxMjE6MjYKLSAgICA1ICAgeWV0QW5vdGhlcklubGluZWRDYWxsIGF0IHN0
YWNrLXRyYWNlLmpzOjEyNjoxNgotICAgIDYgICBtYWtlSW5saW5hYmxlQ2FsbCBhdCBzdGFjay10
cmFjZS5qczoxMzE6MzMKLSAgICA3ICAgZyBhdCBzdGFjay10cmFjZS5qczoxNDA6MzMKKyAgICAw
ICAgdGhyb3dFcnJvciBhdCBzdGFjay10cmFjZS5qczo3NzoxMworICAgIDEgICB2YWx1ZU9mIGF0
IHN0YWNrLXRyYWNlLmpzOjg0OjI3CisgICAgMiAgIGdldHRlcjEgYXQgc3RhY2stdHJhY2UuanM6
ODc6MTEKKyAgICAzICAgbm9uSW5saW5lYWJsZSBhdCBzdGFjay10cmFjZS5qczoxMTM6MTcKKyAg
ICA0ICAgaW5saW5lYWJsZSBhdCBzdGFjay10cmFjZS5qczoxMjE6MjcKKyAgICA1ICAgeWV0QW5v
dGhlcklubGluZWRDYWxsIGF0IHN0YWNrLXRyYWNlLmpzOjEyNjoxNworICAgIDYgICBtYWtlSW5s
aW5hYmxlQ2FsbCBhdCBzdGFjay10cmFjZS5qczoxMzE6MzQKKyAgICA3ICAgZyBhdCBzdGFjay10
cmFjZS5qczoxNDA6MzQKICAgICA4ICAgbWFwIGF0IFtuYXRpdmUgY29kZV0KLSAgICA5ICAgZ2xv
YmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6MTQzOjE1CisgICAgOSAgIGdsb2JhbCBjb2RlIGF0
IHN0YWNrLXRyYWNlLmpzOjE0MzoxNgogCiAtLT4gU3RhY2sgVHJhY2U6Ci0gICAgMCAgIHRocm93
RXJyb3IgYXQgc3RhY2stdHJhY2UuanM6Nzc6MTIKLSAgICAxICAgZ2V0dGVyMiBhdCBzdGFjay10
cmFjZS5qczo5MzozMQotICAgIDIgICBub25JbmxpbmVhYmxlIGF0IHN0YWNrLXRyYWNlLmpzOjEx
NToxNgotICAgIDMgICBpbmxpbmVhYmxlIGF0IHN0YWNrLXRyYWNlLmpzOjEyMToyNgotICAgIDQg
ICB5ZXRBbm90aGVySW5saW5lZENhbGwgYXQgc3RhY2stdHJhY2UuanM6MTI2OjE2Ci0gICAgNSAg
IG1ha2VJbmxpbmFibGVDYWxsIGF0IHN0YWNrLXRyYWNlLmpzOjEzMTozMwotICAgIDYgICBnIGF0
IHN0YWNrLXRyYWNlLmpzOjE0MDozMworICAgIDAgICB0aHJvd0Vycm9yIGF0IHN0YWNrLXRyYWNl
LmpzOjc3OjEzCisgICAgMSAgIGdldHRlcjIgYXQgc3RhY2stdHJhY2UuanM6OTM6MTEKKyAgICAy
ICAgbm9uSW5saW5lYWJsZSBhdCBzdGFjay10cmFjZS5qczoxMTU6MTcKKyAgICAzICAgaW5saW5l
YWJsZSBhdCBzdGFjay10cmFjZS5qczoxMjE6MjcKKyAgICA0ICAgeWV0QW5vdGhlcklubGluZWRD
YWxsIGF0IHN0YWNrLXRyYWNlLmpzOjEyNjoxNworICAgIDUgICBtYWtlSW5saW5hYmxlQ2FsbCBh
dCBzdGFjay10cmFjZS5qczoxMzE6MzQKKyAgICA2ICAgZyBhdCBzdGFjay10cmFjZS5qczoxNDA6
MzQKICAgICA3ICAgbWFwIGF0IFtuYXRpdmUgY29kZV0KLSAgICA4ICAgZ2xvYmFsIGNvZGUgYXQg
c3RhY2stdHJhY2UuanM6MTQzOjE1CisgICAgOCAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNl
LmpzOjE0MzoxNgogCiAtLT4gU3RhY2sgVHJhY2U6Ci0gICAgMCAgIHRocm93RXJyb3IgYXQgc3Rh
Y2stdHJhY2UuanM6Nzc6MTIKLSAgICAxICAgZ2V0dGVyMyBhdCBzdGFjay10cmFjZS5qczoxMDU6
MjEKLSAgICAyICAgbm9uSW5saW5lYWJsZSBhdCBzdGFjay10cmFjZS5qczoxMTc6MTYKLSAgICAz
ICAgaW5saW5lYWJsZSBhdCBzdGFjay10cmFjZS5qczoxMjE6MjYKLSAgICA0ICAgeWV0QW5vdGhl
cklubGluZWRDYWxsIGF0IHN0YWNrLXRyYWNlLmpzOjEyNjoxNgotICAgIDUgICBtYWtlSW5saW5h
YmxlQ2FsbCBhdCBzdGFjay10cmFjZS5qczoxMzE6MzMKLSAgICA2ICAgZyBhdCBzdGFjay10cmFj
ZS5qczoxNDA6MzMKKyAgICAwICAgdGhyb3dFcnJvciBhdCBzdGFjay10cmFjZS5qczo3NzoxMwor
ICAgIDEgICBnZXR0ZXIzIGF0IHN0YWNrLXRyYWNlLmpzOjEwNToxNgorICAgIDIgICBub25Jbmxp
bmVhYmxlIGF0IHN0YWNrLXRyYWNlLmpzOjExNzoxNworICAgIDMgICBpbmxpbmVhYmxlIGF0IHN0
YWNrLXRyYWNlLmpzOjEyMToyNworICAgIDQgICB5ZXRBbm90aGVySW5saW5lZENhbGwgYXQgc3Rh
Y2stdHJhY2UuanM6MTI2OjE3CisgICAgNSAgIG1ha2VJbmxpbmFibGVDYWxsIGF0IHN0YWNrLXRy
YWNlLmpzOjEzMTozNAorICAgIDYgICBnIGF0IHN0YWNrLXRyYWNlLmpzOjE0MDozNAogICAgIDcg
ICBtYXAgYXQgW25hdGl2ZSBjb2RlXQotICAgIDggICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFj
ZS5qczoxNDM6MTUKKyAgICA4ICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6MTQzOjE2
CiAKIC0tPiBTdGFjayBUcmFjZToKLSAgICAwICAgdGhyb3dFcnJvciBhdCBzdGFjay10cmFjZS5q
czo3NzoxMgotICAgIDEgICB2YWx1ZU9mIGF0IHN0YWNrLXRyYWNlLmpzOjEwMToyNgotICAgIDIg
ICBnZXR0ZXIzIGF0IHN0YWNrLXRyYWNlLmpzOjEwNzoyMQotICAgIDMgICBub25JbmxpbmVhYmxl
IGF0IHN0YWNrLXRyYWNlLmpzOjExNzoxNgotICAgIDQgICBpbmxpbmVhYmxlIGF0IHN0YWNrLXRy
YWNlLmpzOjEyMToyNgotICAgIDUgICB5ZXRBbm90aGVySW5saW5lZENhbGwgYXQgc3RhY2stdHJh
Y2UuanM6MTI2OjE2Ci0gICAgNiAgIG1ha2VJbmxpbmFibGVDYWxsIGF0IHN0YWNrLXRyYWNlLmpz
OjEzMTozMwotICAgIDcgICBnIGF0IHN0YWNrLXRyYWNlLmpzOjE0MDozMworICAgIDAgICB0aHJv
d0Vycm9yIGF0IHN0YWNrLXRyYWNlLmpzOjc3OjEzCisgICAgMSAgIHZhbHVlT2YgYXQgc3RhY2st
dHJhY2UuanM6MTAxOjI3CisgICAgMiAgIGdldHRlcjMgYXQgc3RhY2stdHJhY2UuanM6MTA3OjE2
CisgICAgMyAgIG5vbklubGluZWFibGUgYXQgc3RhY2stdHJhY2UuanM6MTE3OjE3CisgICAgNCAg
IGlubGluZWFibGUgYXQgc3RhY2stdHJhY2UuanM6MTIxOjI3CisgICAgNSAgIHlldEFub3RoZXJJ
bmxpbmVkQ2FsbCBhdCBzdGFjay10cmFjZS5qczoxMjY6MTcKKyAgICA2ICAgbWFrZUlubGluYWJs
ZUNhbGwgYXQgc3RhY2stdHJhY2UuanM6MTMxOjM0CisgICAgNyAgIGcgYXQgc3RhY2stdHJhY2Uu
anM6MTQwOjM0CiAgICAgOCAgIG1hcCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgOSAgIGdsb2JhbCBj
b2RlIGF0IHN0YWNrLXRyYWNlLmpzOjE0MzoxNQorICAgIDkgICBnbG9iYWwgY29kZSBhdCBzdGFj
ay10cmFjZS5qczoxNDM6MTYKIAogLS0+IFN0YWNrIFRyYWNlOgotICAgIDAgICBoIGF0IHN0YWNr
LXRyYWNlLmpzOjE1MToxNgorICAgIDAgICBoIGF0IHN0YWNrLXRyYWNlLmpzOjE1MToxNwogICAg
IDEgICBtYXAgYXQgW25hdGl2ZSBjb2RlXQotICAgIDIgICBtYXBUZXN0IGF0IHN0YWNrLXRyYWNl
LmpzOjE1ODo5Ci0gICAgMyAgIG1hcFRlc3REcml2ZXIgYXQgc3RhY2stdHJhY2UuanM6MTY0OjE1
Ci0gICAgNCAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjE2OToxNworICAgIDIgICBt
YXBUZXN0IGF0IHN0YWNrLXRyYWNlLmpzOjE1ODoxMAorICAgIDMgICBtYXBUZXN0RHJpdmVyIGF0
IHN0YWNrLXRyYWNlLmpzOjE2NDoxNgorICAgIDQgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFj
ZS5qczoxNjk6MTgKIAogLS0+IFN0YWNrIFRyYWNlOgogICAgIDAgICBtYXAgYXQgW25hdGl2ZSBj
b2RlXQotICAgIDEgICBoIGF0IHN0YWNrLXRyYWNlLmpzOjE1MzoyMAorICAgIDEgICBoIGF0IHN0
YWNrLXRyYWNlLmpzOjE1MzoyMQogICAgIDIgICBtYXAgYXQgW25hdGl2ZSBjb2RlXQotICAgIDMg
ICBtYXBUZXN0IGF0IHN0YWNrLXRyYWNlLmpzOjE1ODo5Ci0gICAgNCAgIG1hcFRlc3REcml2ZXIg
YXQgc3RhY2stdHJhY2UuanM6MTY0OjE1Ci0gICAgNSAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRy
YWNlLmpzOjE3NToxNworICAgIDMgICBtYXBUZXN0IGF0IHN0YWNrLXRyYWNlLmpzOjE1ODoxMAor
ICAgIDQgICBtYXBUZXN0RHJpdmVyIGF0IHN0YWNrLXRyYWNlLmpzOjE2NDoxNgorICAgIDUgICBn
bG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczoxNzU6MTgKIAogLS0+IFN0YWNrIFRyYWNlOgot
ICAgIDAgICB0aHJvd0Vycm9yIGF0IHN0YWNrLXRyYWNlLmpzOjc3OjEyCi0gICAgMSAgIGRmZ0Z1
bmN0aW9uIGF0IHN0YWNrLXRyYWNlLmpzOjE4NDoxOAorICAgIDAgICB0aHJvd0Vycm9yIGF0IHN0
YWNrLXRyYWNlLmpzOjc3OjEzCisgICAgMSAgIGRmZ0Z1bmN0aW9uIGF0IHN0YWNrLXRyYWNlLmpz
OjE4NDoxOQogICAgIDIgICBtYXAgYXQgW25hdGl2ZSBjb2RlXQotICAgIDMgICBnbG9iYWwgY29k
ZSBhdCBzdGFjay10cmFjZS5qczoxOTM6MTcKKyAgICAzICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2st
dHJhY2UuanM6MTkzOjE4CiAKIC0tPiBTdGFjayBUcmFjZToKLSAgICAwICAgdGhyb3dFcnJvciBh
dCBzdGFjay10cmFjZS5qczo3NzoxMgotICAgIDEgICBkZmdGdW5jdGlvbiBhdCBzdGFjay10cmFj
ZS5qczoxODQ6MTgKLSAgICAyICAgZiBhdCBzdGFjay10cmFjZS5qczoyMDI6OQotICAgIDMgICBn
bG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczoyMDg6NQotCi0tLT4gU3RhY2sgVHJhY2U6Ci0g
ICAgMCAgIHdpbGxUaHJvdyBhdCBzdGFjay10cmFjZS5qczoyNDY6MjAKLSAgICAxICAgZGZnMSBh
dCBzdGFjay10cmFjZS5qczoyNTc6MTIKLSAgICAyICAgZGZnMiBhdCBzdGFjay10cmFjZS5qczoy
NjE6OAotICAgIDMgICBkZmczIGF0IHN0YWNrLXRyYWNlLmpzOjI2NTo4Ci0gICAgNCAgIGRmZ1Rl
c3QgYXQgc3RhY2stdHJhY2UuanM6MjMxOjEzCi0gICAgNSAgIGdsb2JhbCBjb2RlIGF0IHN0YWNr
LXRyYWNlLmpzOjMwNDo3Ci0KLS0tPiBTdGFjayBUcmFjZToKLSAgICAwICAgd2lsbFRocm93RnVu
YyBhdCBzdGFjay10cmFjZS5qczoyNTE6NjEKLSAgICAxICAgZGZnNCBhdCBzdGFjay10cmFjZS5q
czoyNjk6MjYKLSAgICAyICAgZGZnNSBhdCBzdGFjay10cmFjZS5qczoyNzM6OAotICAgIDMgICBk
Zmc2IGF0IHN0YWNrLXRyYWNlLmpzOjI3Nzo4Ci0gICAgNCAgIGRmZ1Rlc3QgYXQgc3RhY2stdHJh
Y2UuanM6MjMxOjEzCi0gICAgNSAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjMwNTo3
Ci0KLS0tPiBTdGFjayBUcmFjZToKLSAgICAwICAgaW5saW5lYWJsZVRocm93IGF0IHN0YWNrLXRy
YWNlLmpzOjI0MDozMgotICAgIDEgICB3aWxsVGhyb3dFdmVudHVhbGx5IGF0IHN0YWNrLXRyYWNl
LmpzOjI0OToyMwotICAgIDIgICBkZmc3IGF0IHN0YWNrLXRyYWNlLmpzOjI4MToxMgotICAgIDMg
ICBkZmc4IGF0IHN0YWNrLXRyYWNlLmpzOjI4NTo4Ci0gICAgNCAgIGRmZzkgYXQgc3RhY2stdHJh
Y2UuanM6Mjg5OjgKLSAgICA1ICAgZGZnVGVzdCBhdCBzdGFjay10cmFjZS5qczoyMzE6MTMKLSAg
ICA2ICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6MzA2OjcKLQotLS0+IFN0YWNrIFRy
YWNlOgotICAgIDAgICBpbmxpbmVhYmxlVGhyb3cgYXQgc3RhY2stdHJhY2UuanM6MjQwOjMyCi0g
ICAgMSAgIHdpbGxUaHJvd0V2ZW50dWFsbHlGdW5jIGF0IHN0YWNrLXRyYWNlLmpzOjI1Mjo1OAot
ICAgIDIgICBkZmdhIGF0IHN0YWNrLXRyYWNlLmpzOjI5MzozNgotICAgIDMgICBkZmdiIGF0IHN0
YWNrLXRyYWNlLmpzOjI5Nzo4Ci0gICAgNCAgIGRmZ2MgYXQgc3RhY2stdHJhY2UuanM6MzAxOjgK
LSAgICA1ICAgZGZnVGVzdCBhdCBzdGFjay10cmFjZS5qczoyMzE6MTMKLSAgICA2ICAgZ2xvYmFs
IGNvZGUgYXQgc3RhY2stdHJhY2UuanM6MzA3OjcKKyAgICAwICAgdGhyb3dFcnJvciBhdCBzdGFj
ay10cmFjZS5qczo3NzoxMworICAgIDEgICBkZmdGdW5jdGlvbiBhdCBzdGFjay10cmFjZS5qczox
ODQ6MTkKKyAgICAyICAgZiBhdCBzdGFjay10cmFjZS5qczoyMDI6MTAKKyAgICAzICAgZ2xvYmFs
IGNvZGUgYXQgc3RhY2stdHJhY2UuanM6MjA4OjYKKworLS0+IFN0YWNrIFRyYWNlOgorICAgIDAg
ICB3aWxsVGhyb3cgYXQgc3RhY2stdHJhY2UuanM6MjQ2OjIxCisgICAgMSAgIGRmZzEgYXQgc3Rh
Y2stdHJhY2UuanM6MjU3OjEzCisgICAgMiAgIGRmZzIgYXQgc3RhY2stdHJhY2UuanM6MjYxOjkK
KyAgICAzICAgZGZnMyBhdCBzdGFjay10cmFjZS5qczoyNjU6OQorICAgIDQgICBkZmdUZXN0IGF0
IHN0YWNrLXRyYWNlLmpzOjIzMToxNAorICAgIDUgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFj
ZS5qczozMDQ6OAorCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIHdpbGxUaHJvd0Z1bmMgYXQg
c3RhY2stdHJhY2UuanM6MjUxOjYyCisgICAgMSAgIGRmZzQgYXQgc3RhY2stdHJhY2UuanM6MjY5
OjI3CisgICAgMiAgIGRmZzUgYXQgc3RhY2stdHJhY2UuanM6MjczOjkKKyAgICAzICAgZGZnNiBh
dCBzdGFjay10cmFjZS5qczoyNzc6OQorICAgIDQgICBkZmdUZXN0IGF0IHN0YWNrLXRyYWNlLmpz
OjIzMToxNAorICAgIDUgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczozMDU6OAorCist
LT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIGlubGluZWFibGVUaHJvdyBhdCBzdGFjay10cmFjZS5q
czoyNDA6MzMKKyAgICAxICAgd2lsbFRocm93RXZlbnR1YWxseSBhdCBzdGFjay10cmFjZS5qczoy
NDk6MjQKKyAgICAyICAgZGZnNyBhdCBzdGFjay10cmFjZS5qczoyODE6MTMKKyAgICAzICAgZGZn
OCBhdCBzdGFjay10cmFjZS5qczoyODU6OQorICAgIDQgICBkZmc5IGF0IHN0YWNrLXRyYWNlLmpz
OjI4OTo5CisgICAgNSAgIGRmZ1Rlc3QgYXQgc3RhY2stdHJhY2UuanM6MjMxOjE0CisgICAgNiAg
IGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjMwNjo4CisKKy0tPiBTdGFjayBUcmFjZToK
KyAgICAwICAgaW5saW5lYWJsZVRocm93IGF0IHN0YWNrLXRyYWNlLmpzOjI0MDozMworICAgIDEg
ICB3aWxsVGhyb3dFdmVudHVhbGx5RnVuYyBhdCBzdGFjay10cmFjZS5qczoyNTI6NTkKKyAgICAy
ICAgZGZnYSBhdCBzdGFjay10cmFjZS5qczoyOTM6MzcKKyAgICAzICAgZGZnYiBhdCBzdGFjay10
cmFjZS5qczoyOTc6OQorICAgIDQgICBkZmdjIGF0IHN0YWNrLXRyYWNlLmpzOjMwMTo5CisgICAg
NSAgIGRmZ1Rlc3QgYXQgc3RhY2stdHJhY2UuanM6MjMxOjE0CisgICAgNiAgIGdsb2JhbCBjb2Rl
IGF0IHN0YWNrLXRyYWNlLmpzOjMwNzo4CiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9z
Y3JpcHQtdGVzdHMvbGluZS1jb2x1bW4tbnVtYmVycy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9saW5lLWNvbHVtbi1udW1iZXJzLmpzCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvbGluZS1jb2x1bW4tbnVt
YmVycy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNCBAQAorLy8gQ2FzZSAxOiBUaHJv
dyBhbmQgcHJpbnQgc3RhY2s6Cit0ZXN0SWQrKzsKKyAgICB0cnkgeyB0aHJvdyBuZXcgRXJyb3Io
KTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuc3RhY2spOyB9CisKKy8vIENhc2UgMjogU2Ft
ZSBwcm9ncmFtIGFzIENhc2UgMSBidXQgaW5kZW50ZWQuCit0ZXN0SWQrKzsKKyAgICAgICAgdHJ5
IHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLnN0YWNrKTsg
fQorCisvLyBDYXNlIDM6IFNhbWUgcHJvZ3JhbSBpbmRlbnRlZCBvbiB0aGUgc2FtZSBsaW5lLgor
dGVzdElkKys7Cit0cnkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0
YWNrKGUuc3RhY2spOyB9ICAgdHJ5IHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gY2F0Y2ggKGUpIHsg
cHJpbnRTdGFjayhlLnN0YWNrKTsgfQorCisvLyBDYXNlIDQ6IFN0YWNrIHdpdGggMiBmdW5jdGlv
biBmcmFtZXMuCit0ZXN0SWQrKzsKK3RyeSB7CisgICAgZnVuY3Rpb24gZG9UaHJvdzRiKCkgeyB0
aHJvdyBuZXcgRXJyb3IoKTsgfQorICAgIGRvVGhyb3c0YigpOworfSBjYXRjaChlKSB7CisgICAg
cHJpbnRTdGFjayhlLnN0YWNrKTsKK30KKworLy8gQ2FzZSA1OiBGdW5jdGlvbiB3cmFwcGluZyBh
IEZ1bmN0aW9uLgordGVzdElkKys7CitmdW5jdGlvbiBkb1Rocm93NWIoKSB7IHRyeSB7IGZ1bmN0
aW9uIGlubmVyRnVuYygpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gaW5uZXJGdW5jKCk7IH0gY2F0
Y2ggKGUpIHsgcHJpbnRTdGFjayhlLnN0YWNrKTsgfX07IGRvVGhyb3c1YigpOworCisvLyBDYXNl
IDY6IFNhbWUgaW5uZXIgZnVuY3Rpb24gYm9keSBhcyBDYXNlIDUuCit0ZXN0SWQrKzsKK2Z1bmN0
aW9uIGRvVGhyb3c2YigpIHsgdHJ5IHsgZnVuY3Rpb24gaW5uZXJGdW5jKCkgeyB0aHJvdyBuZXcg
RXJyb3IoKTsgfSBpbm5lckZ1bmMoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuc3RhY2sp
OyB9fTsgZG9UaHJvdzZiKCk7CisKKy8vIENhc2UgNzogQ2FzZSAxIHJlZG9uZSB3aXRoIGEgRnVu
Y3Rpb24gRXhwcmVzc2lvbi4KK3Rlc3RJZCsrOworICAgIHRyeSB7IChmdW5jdGlvbiAoKSB7IHRo
cm93IG5ldyBFcnJvcigpOyB9KSgpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7
IH0KKworLy8gQ2FzZSA4OiBDYXNlIDIgcmVkb25lIHdpdGggYSBGdW5jdGlvbiBFeHByZXNzaW9u
LgordGVzdElkKys7CisgICAgICAgIHRyeSB7IChmdW5jdGlvbiAoKSB7IHRocm93IG5ldyBFcnJv
cigpOyB9KSgpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH0KKworLy8gQ2Fz
ZSA5OiBDYXNlIDMgcmVkb25lIHdpdGggYSBGdW5jdGlvbiBFeHByZXNzaW9uLgordGVzdElkKys7
Cit0cnkgeyAoZnVuY3Rpb24gKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSkoKTsgfSBjYXRjaCAo
ZSkgeyBwcmludFN0YWNrKGUuc3RhY2spOyB9ICAgdHJ5IHsgKGZ1bmN0aW9uICgpIHsgdGhyb3cg
bmV3IEVycm9yKCk7IH0pKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLnN0YWNrKTsgfQor
CisvLyBDYXNlIDEwOiBGdW5jdGlvbiBFeHByZXNzaW9uIGFzIG11bHRpcGxlIGxpbmVzLgordGVz
dElkKys7Cit0cnkgeworICAgIChmdW5jdGlvbiAoKSB7CisgICAgICAgIHRocm93IG5ldyBFcnJv
cigpOworICAgICB9KSgpOworfSBjYXRjaChlKSB7CisgICAgcHJpbnRTdGFjayhlLnN0YWNrKTsK
K30KKworLy8gQ2FzZSAxMTogQ2FzZSA0IHJlZG9uZSB3aXRoIGEgRnVuY3Rpb24gd3JhcHBpbmcg
RnVuY3Rpb24gRXhwcmVzc2lvbi4KK3Rlc3RJZCsrOwordHJ5IHsKKyAgICBmdW5jdGlvbiBkb1Ro
cm93MTFiKCkgeworICAgICAgICAoZnVuY3Rpb24gKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSko
KTsKKyAgICB9CisgICAgZG9UaHJvdzExYigpOworfSBjYXRjaChlKSB7CisgICAgcHJpbnRTdGFj
ayhlLnN0YWNrKTsKK30KKworLy8gQ2FzZSAxMjogQSBGdW5jdGlvbiBFeHByZXNzaW9uIHdyYXBw
aW5nIGEgRnVuY3Rpb24gRXhwcmVzc2lvbi4KK3Rlc3RJZCsrOwordHJ5IHsgKGZ1bmN0aW9uICgp
IHsoZnVuY3Rpb24gKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSkoKTt9KSgpOyB9IGNhdGNoIChl
KSB7IHByaW50U3RhY2soZS5zdGFjayk7IH0KKworLy8gQ2FzZSAxMzogU2FtZSBmdW5jdGlvbiBi
b2R5IGFzIENhc2UgMTIuCit0ZXN0SWQrKzsKK3RyeSB7IChmdW5jdGlvbiAoKSB7KGZ1bmN0aW9u
ICgpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0pKCk7fSkoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0
YWNrKGUuc3RhY2spOyB9CisKKy8vIENhc2UgMTQ6IEZ1bmN0aW9uIEV4cHJlc3Npb24gaW4gYSBG
dW5jdGlvbiBFeHByZXNzaW9uIGluIGEgRnVuY3Rpb24uCit0ZXN0SWQrKzsKK3RyeSB7IGZ1bmN0
aW9uIGRvVGhyb3cxNGIoKSB7KGZ1bmN0aW9uICgpIHsgKGZ1bmN0aW9uICgpIHsgdGhyb3cgbmV3
IEVycm9yKCk7IH0pKCk7fSkoKTt9IGRvVGhyb3cxNGIoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0
YWNrKGUuc3RhY2spOyB9CisKKy8vIENhc2UgMTU6IFRocm93IGluIGFuIEV2YWwuCit0ZXN0SWQr
KzsKK2V2YWwoInRyeSB7IHRocm93IG5ldyBFcnJvcigpOyB9IGNhdGNoKGUpIHsgcHJpbnRTdGFj
ayhlLnN0YWNrKTsgfSIpOworCisvLyBDYXNlIDE2OiBNdWx0aXBsZSBsaW5lcyBpbiBhbiBFdmFs
LgordGVzdElkKys7CitldmFsKCJcbiIgKworInRyeSB7XG4iICsKKyIgICAgZnVuY3Rpb24gZG9U
aHJvdzE1YigpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH1cbiIgKworIiAgICBkb1Rocm93MTViKCk7
XG4iICsKKyJ9IGNhdGNoKGUpIHtcbiIgKworIiAgICBwcmludFN0YWNrKGUuc3RhY2spO1xuIiAr
CisifVxuIiArCisiIik7CisKKy8vIENhc2UgMTc6IEZ1bmN0aW9uIEV4cHJlc3Npb24gaW4gYW4g
RXZhbC4KK3Rlc3RJZCsrOworZXZhbCgidHJ5IHsgKGZ1bmN0aW9uICgpIHsgdGhyb3cgbmV3IEVy
cm9yKCk7IH0pKCk7IH0gY2F0Y2goZSkgeyBwcmludFN0YWNrKGUuc3RhY2spOyB9Iik7CisKKy8v
IENhc2UgMTg6IE11bHRpcGxlIGxpbmVzIHdpdGggYSBGdW5jdGlvbiBFeHByZXNzaW9uIGluIGFu
IEV2YWwuCit0ZXN0SWQrKzsKK2V2YWwoIlxuIiArCisidHJ5IHtcbiIgKworIiAgICAoZnVuY3Rp
b24gKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSkoKTtcbiIgKworIn0gY2F0Y2goZSkge1xuIiAr
CisiICAgIHByaW50U3RhY2soZS5zdGFjayk7XG4iICsKKyJ9XG4iICsKKyIiKTsKKworc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xl
L2NvbnNvbGUtdXJsLWxpbmUtY29sdW1uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jb25zb2xlLXVybC1saW5lLWNvbHVtbi1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDE1MTkyMCkKKysrIExheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xl
L2NvbnNvbGUtdXJsLWxpbmUtY29sdW1uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
OCwxMiArOCwxMiBAQCBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTU6IHdhcm4KIENPTlNPTEUgTUVT
U0FHRTogbGluZSAxNjogYXNzZXJ0CiBUZXN0cyB0aGF0IHVybCwgbGluZSwgYW5kIGNvbHVtbiBw
cm9wZXJ0aWVzIGFyZSBkZWZpbmVkIGZvciBjb25zb2xlIGZ1bmN0aW9ucy4KIAotTWVzc2FnZSBh
dCBsb2NhdGlvbjogY29uc29sZS11cmwtbGluZS1jb2x1bW4uaHRtbDo5OjE1Ci1NZXNzYWdlIGF0
IGxvY2F0aW9uOiBjb25zb2xlLXVybC1saW5lLWNvbHVtbi5odG1sOjEwOjE1Ci1NZXNzYWdlIGF0
IGxvY2F0aW9uOiBjb25zb2xlLXVybC1saW5lLWNvbHVtbi5odG1sOjExOjE1Ci1NZXNzYWdlIGF0
IGxvY2F0aW9uOiBjb25zb2xlLXVybC1saW5lLWNvbHVtbi5odG1sOjE0OjE3Ci1NZXNzYWdlIGF0
IGxvY2F0aW9uOiBjb25zb2xlLXVybC1saW5lLWNvbHVtbi5odG1sOjE0OjM5Ci1NZXNzYWdlIGF0
IGxvY2F0aW9uOiBjb25zb2xlLXVybC1saW5lLWNvbHVtbi5odG1sOjE1OjE2Ci1NZXNzYWdlIGF0
IGxvY2F0aW9uOiBjb25zb2xlLXVybC1saW5lLWNvbHVtbi5odG1sOjE1OjM4Ci1NZXNzYWdlIGF0
IGxvY2F0aW9uOiBjb25zb2xlLXVybC1saW5lLWNvbHVtbi5odG1sOjE2OjE4CitNZXNzYWdlIGF0
IGxvY2F0aW9uOiBjb25zb2xlLXVybC1saW5lLWNvbHVtbi5odG1sOjk6MTYKK01lc3NhZ2UgYXQg
bG9jYXRpb246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTA6MTYKK01lc3NhZ2UgYXQg
bG9jYXRpb246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTE6MTYKK01lc3NhZ2UgYXQg
bG9jYXRpb246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTQ6MTgKK01lc3NhZ2UgYXQg
bG9jYXRpb246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTQ6NDAKK01lc3NhZ2UgYXQg
bG9jYXRpb246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTU6MTcKK01lc3NhZ2UgYXQg
bG9jYXRpb246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTU6MzkKK01lc3NhZ2UgYXQg
bG9jYXRpb246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTY6MTkKIAo=
</data>
<flag name="review"
          id="227949"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
    <flag name="commit-queue"
          id="227950"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206297</attachid>
            <date>2013-07-09 00:33:04 -0700</date>
            <delta_ts>2013-07-09 08:51:29 -0700</delta_ts>
            <desc>patch 4: addressed feedback comments and attempt to appease EWS bots again.</desc>
            <filename>bug-118481b.patch</filename>
            <type>text/plain</type>
            <size>367351</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUyNDgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4MiBA
QAorMjAxMy0wNy0wOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
Rml4IDMwJSBKU0JlbmNoIHJlZ3Jlc3Npb24gKGNhdXNlZCBieSBhZGRpbmcgY29sdW1uIG51bWJl
cnMgdG8gc3RhY2sgdHJhY2VzKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExODQ4MS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBQcmV2aW91c2x5LCB3ZSBhbHJlYWR5IGNhcHR1cmUgRXhwcmVzc2lvblJh
bmdlSW5mbyB0aGF0IHByb3ZpZGVzIGEgZGl2b3QgZm9yCisgICAgICAgIGVhY2ggYnl0ZWNvZGUg
dGhhdCBjYW4gcG90ZW50aWFsbHkgdGhyb3cgYW4gZXhjZXB0aW9uIChhbmQgdGhlcmVmb3JlIGdl
bmVyYXRlCisgICAgICAgIGEgc3RhY2sgdHJhY2UpLiBPbiBmaXJzdCBhdHRlbXB0IHRvIGNvbXB1
dGUgY29sdW1uIG51bWJlcnMsIHdlIHRoZW4gZG8gYSB3YWxrCisgICAgICAgIG9mIHRoZSBzb3Vy
Y2Ugc3RyaW5nIHRvIHJlY29yZCBhbGwgbGluZSBzdGFydCBwb3NpdGlvbnMgaW4gYSB0YWJsZSBh
c3NvY2lhdGVkCisgICAgICAgIHdpdGggdGhlIFNvdXJjZVByb3ZpZGVyLiBUaGUgY29sdW1uIG51
bWJlciBjYW4gdGhlbiBiZSBjb21wdXRlZCBhcworICAgICAgICAgICAgZGl2b3QgLSBsaW5lU3Rh
cnRGb3IoYnl0ZWNvZGVPZmZzZXQpLgorCisgICAgICAgIFRoZSBjb21wdXRhdGlvbiBvZiB0aGlz
IGxpbmVTdGFydHMgdGFibGUgaXMgdGhlIHNvdXJjZSBvZiB0aGUgMzAlIEpTQmVuY2gKKyAgICAg
ICAgcGVyZm9ybWFuY2UgcmVncmVzc2lvbi4KKworICAgICAgICBUaGUgbmV3IGNvZGUgbm93IHJl
Y29yZHMgbGluZVN0YXJ0cyBhcyB0aGUgbGV4ZXIgYW5kIHBhcnNlciBzY2FucyB0aGUgc291cmNl
CisgICAgICAgIGNvZGUuIFRoZXNlIGxpbmVTdGFydHMgYXJlIHRoZW4gdXNlZCB0byBjb21wdXRl
IHRoZSBjb2x1bW4gbnVtYmVyIGZvciB0aGUKKyAgICAgICAgZ2l2ZW4gZGl2b3QsIGFuZCBzdG9y
ZWQgaW4gdGhlIEV4cHJlc3Npb25SYW5nZUluZm8uIFNpbWlsYXJseSwgd2UgYWxzbyBjYXB0dXJl
CisgICAgICAgIHRoZSBsaW5lIG51bWJlciBhdCB0aGUgZGl2b3QgcG9pbnQgYW5kIHN0b3JlIHRo
YXQgaW4gdGhlIEV4cHJlc3Npb25SYW5nZUluZm8uCisgICAgICAgIEhlbmNlLCB0byBsb29rIHVw
IGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzLCB3ZSBub3cgbG9va3VwIHRoZSBFeHByZXNzaW9uUmFu
Z2VJbmZvCisgICAgICAgIGZvciB0aGUgYnl0ZWNvZGVPZmZzZXQsIGFuZCB0aGVuIGNvbXB1dGUg
dGhlIGxpbmUgYW5kIGNvbHVtbiBmcm9tIHRoZSB2YWx1ZXMKKyAgICAgICAgc3RvcmVkIGluIHRo
ZSBleHByZXNzaW9uIGluZm8uCisKKyAgICAgICAgVGhlIHN0cmF0ZWd5OgorICAgICAgICAxLiBX
ZSB3YW50IHRvIG1pbmltaXplIHBlcnR1cmJhdGlvbnMgdG8gdGhlIGxleGVyIGFuZCBwYXJzZXIu
IFNwZWNpZmljYWxseSwKKyAgICAgICAgICAgdGhlIGNoYW5nZXMgYWRkZWQgc2hvdWxkIG5vdCBj
aGFuZ2UgaG93IGl0IHNjYW5zIGNvZGUsIGFuZCBnZW5lcmF0ZSBieXRlY29kZS4KKyAgICAgICAg
Mi4gV2UgcmVnYXJkIHRoZSBkaXZvdCBhcyB0aGUgc291cmNlIGNoYXJhY3RlciBwb3NpdGlvbiB3
ZSBhcmUgaW50ZXJlc3RlZAorICAgICAgICAgICBpbi4gQXMgc3VjaCwgd2UnbGwgY2FwdHVyZSBs
aW5lIGFuZCBsaW5lU3RhcnQgKGZvciBjb2x1bW4pIGF0IHRoZSBwb2ludAorICAgICAgICAgICB3
aGVuIHdlIGNhcHR1cmUgdGhlIGRpdm90IGluZm9ybWF0aW9uLiBUaGlzIGVuc3VyZXMgdGhhdCB0
aGUgMyB2YWx1ZXMgYXJlCisgICAgICAgICAgIGNvbnNpc3RlbnQuCisKKyAgICAgICAgSG93IHRo
ZSBjaGFuZ2UgaXMgZG9uZToKKyAgICAgICAgMS4gQ2hhbmdlIHRoZSBsZXhlciB0byB0cmFjayBs
aW5lU3RhcnRzLgorICAgICAgICAyLiBDaGFuZ2UgdGhlIHBhcnNlciB0byBjYXB0dXJlIGxpbmUg
YW5kIGxpbmVTdGFydHMgYXQgdGhlIHBvaW50IG9mIGNhcHR1cmluZworICAgICAgICAgICBkaXZv
dHMuCisgICAgICAgIDMuIENoYW5nZSB0aGUgcGFyc2VyIGFuZCBhc3NvY2lhdGVkIGNvZGUgdG8g
cGx1bWIgdGhlc2UgdmFsdWVzIGFsbCB0aGUgd2F5IHRvCisgICAgICAgICAgIHRoZSBwb2ludCB0
aGF0IHRoZSBjb3JyZXNwb2luZGluZyBFeHByZXNzaW9uUmFuZ2VJbmZvIGlzIGVtaXR0ZWQuCisg
ICAgICAgIDQuIFByb3BhZ2F0ZSBhbmQgcmVjb3JkIFNvdXJjZUNvZGUgZmlyc3RMaW5lIGFuZCBm
aXJzdExpbmVDb2x1bW5PZmZzZXQgdG8gdGhlCisgICAgICAgICAgIHRoZSBuZWNlc3NhcnkgcGxh
Y2VzIHNvIHRoYXQgd2UgY2FuIGFkZCB0aGVtIGFzIG5lZWRlZCB3aGVuIHJlaWZ5aW5nCisgICAg
ICAgICAgIFVubGlua2VkQ29kZUJsb2NrcyBpbnRvIENvZGVCbG9ja3MuCisgICAgICAgIDUuIENv
bXByZXNzIHRoZSBsaW5lIGFuZCBjb2x1bW4gbnVtYmVyIHZhbHVlcyBpbiB0aGUgRXhwcmVzc2lv
blJhbmdlSW5mby4gSW4KKyAgICAgICAgICAgcHJhY3RpY2UsIHdlIHNlbGRvbSBoYXZlIGJvdGgg
bGFyZ2UgbGluZSBhbmQgY29sdW1uIG51bWJlcnMuIEhlbmNlLCB3ZSBjYW4KKyAgICAgICAgICAg
ZW5jb2RlIGJvdGggaW4gYW4gdWludDMyX3QgbW9zdCBvZiB0aGUgdGltZS4gRm9yIHRoZSB0aW1l
cyB3aGVuIHdlIGVuY291bnRlcgorICAgICAgICAgICBib3RoIGxhcmdlIGxpbmUgYW5kIGNvbHVt
biBudW1iZXJzLCB3ZSBoYXZlIGEgZmFsbGJhY2sgdG8gc3RvcmUgdGhlICJmYXQiCisgICAgICAg
ICAgIHBvc2l0aW9uIGluZm8uCisgICAgICAgIDYuIEVtaXQgYW4gRXhwcmVzc2lvblJhbmdlSW5m
byBmb3IgVW5hcnlPcCBub2RlcyB0byBnZXQgbW9yZSBsaW5lIGFuZCBjb2x1bW4KKyAgICAgICAg
ICAgbnVtYmVyIGNvdmVyYWdlLgorICAgICAgICA3LiBDaGFuZ2UgdGhlIGludGVycHJldGVyIHRv
IHVzZSB0aGUgbmV3IHdheSBvZiBjb21wdXRpbmcgbGluZSBhbmQgY29sdW1uLgorICAgICAgICA4
LiBEZWxldGUgb2xkIGxpbmUgYW5kIGNvbHVtbiBjb21wdXRhdGlvbiBjb2RlIHRoYXQgaXMgbm93
IHVudXNlZC4KKworICAgICAgICBNaXNjIGRldGFpbHM6CisgICAgICAgIC0gdGhlIG9sZCBsZXhl
ciB3YXMgdHJhY2tpbmcgYm90aCBhIHN0YXJ0T2Zmc2V0IGFuZCBjaGFyUG9zaXRpb24gd2hlcmUK
KyAgICAgICAgICBjaGFyUG9zaXRpb24gZXF1YWxzIHN0YXJ0T2Zmc2V0IC0gU291cmNlQ29kZS5z
dGFydE9mZnNldC4gV2Ugbm93IHVzZQorICAgICAgICAgIHN0YXJ0T2Zmc2V0IGV4Y2x1c2l2ZWx5
IHRocm91Z2hvdXQgdGhlIHN5c3RlbSBmb3IgY29uc2lzdGVuY3kuCisgICAgICAgICAgQWxsIG9m
ZnNldCB2YWx1ZXMgKGluY2x1ZGluZyBsaW5lU3RhcnQpIGFyZSByZWxhdGl2ZSB0byB0aGUgc3Rh
cnQgb2YgdGhlCisgICAgICAgICAgU291cmNlUHJvdmlkZXIgc3RyaW5nLiBUaGVzZSB2YWx1ZXMg
d2lsbCBvbmx5IGJlIGNvbnZlcnRlZCB0byBiZSByZWxhdGl2ZQorICAgICAgICAgIHRvIHRoZSBT
b3VyY2VDb2RlLnN0YXJ0T2Zmc2V0IGF0IHRoZSB2ZXJ5IGxhc3QgbWludXRlIGkuZS4gd2hlbiB0
aGUgZGl2b3QKKyAgICAgICAgICBpcyBzdG9yZWQgaW50byB0aGUgRXhwcmVzc2lvblJhbmdlSW5m
by4KKworICAgICAgICAgIFRoaXMgY2hhbmdlIHRvIHVzZSB0aGUgc2FtZSBvZmZzZXQgc3lzdGVt
IGV2ZXJ5d2hlcmUgcmVkdWNlcyBjb25mdXNpb24KKyAgICAgICAgICBmcm9tIGhhdmluZyB0byBj
b252ZXJ0IGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gdGhlIDIgc3lzdGVtcy4gSXQgYWxzbworICAg
ICAgICAgIGVuYWJsZXMgYSBsb3Qgb2YgYXNzZXJ0aW9ucyB0byBiZSB1c2VkLgorCisgICAgICAg
IC0gQWxzbyBmaXhlZCBzb21lIGJ1Z3MgaW4gdGhlIGNob2ljZSBvZiBkaXZvdCBwb3NpdGlvbnMg
dG8gdXNlLiBGb3IgZXhhbXBsZSwKKyAgICAgICAgICBib3RoIEV2YWwgYW5kIEZ1bmN0aW9uIGV4
cHJlc3Npb25zIHByZXZpb3VzbHkgdXNlIGNvbHVtbiBudW1iZXJzIGZyb20KKyAgICAgICAgICB0
aGUgc3RhcnQgb2YgdGhlIGV4cHJlc3Npb24gYnV0IHVzZSB0aGUgbGluZSBudW1iZXIgYXQgdGhl
IGVuZCBvZiB0aGUKKyAgICAgICAgICBleHByZXNzaW9uLiBUaGlzIGlzIG5vdyBmaXhlZCB0byBi
ZSBjb25zaXN0ZW50bHkgZWl0aGVyIHVzaW5nIHRoZSBzdGFydAorICAgICAgICAgIG9yIGVuZCBw
b3NpdGlvbnMgYXMgYXBwcm9wcmlhdGUsIGJ1dCBub3QgYSBtaXggb2YgbGluZSBhbmQgY29sdW1u
cyBmcm9tCisgICAgICAgICAgYm90aC4KKworICAgICAgICAtIFdoeSB1c2UgaW50cyBpbnN0ZWFk
IG9mIHVuc2lnbmVkcyBmb3Igb2Zmc2V0cyBhbmQgbGluZVN0YXJ0cyBpbnNpZGUgdGhlCisgICAg
ICAgICAgbGV4ZXIgYW5kIHBhcnNlcj8KKyAgICAgICAgICBTb21lIHRlc3RzIChlLmcuIGZhc3Qv
anMvY2FsbC1iYXNlLXJlc29sdXRpb24uaHRtbCBhbmQKKyAgICAgICAgICBmYXN0L2pzL2V2YWwt
Y3Jvc3Mtd2luZG93Lmh0bWwpIGhhcyBzaG93biB0aGF0IGxpbmVTdGFydCBvZmZzZXRzIGNhbiBi
ZQorICAgICAgICAgIHByaW9yIHRvIHRoZSBTb3VyY2VDb2RlLnN0YXJ0T2Zmc2V0LiBLZWVwaW5n
IHRoZSBsZXhlciBvZmZzZXRzIGFzIGludHMKKyAgICAgICAgICBzaW1wbGlmaWVzIGNvbXB1dGF0
aW9ucyBhbmQgbWFrZXMgaXQgZWFzaWVyIHRvIG1haW50YWluIHRoZSBhc3NlcnRpb25zCisgICAg
ICAgICAgdGhhdCAoc3RhcnRPZmZzZXQgPj0gbGluZVN0YXJ0T2Zmc2V0KS4KKworICAgICAgICAg
IEhvd2V2ZXIsIGNvbHVtbiBhbmQgbGluZSBudW1iZXJzIGFyZSBhbHdheXMgdW5zaWduZWQgd2hl
biB3ZSBwdWJsaXNoCisgICAgICAgICAgdGhlbSB0byB0aGUgRXhwcmVzc2lvblJhbmdlSW5mby4g
VGhlIGludHMgYXJlIG9ubHkgdXNlZCBpbnNpZGUgdGhlCisgICAgICAgICAgbGV4ZXIgYW5kIHBh
cnNlciAuLi4gd2VsbCwgYW5kIGJ5dGVjb2RlIGdlbmVyYXRvci4KKworICAgICAgICAtIEZvciBh
bGwgY2FzZXMsIGxpbmVTdGFydCBpcyBhbHdheXMgY2FwdHVyZWQgd2hlcmUgdGhlIGRpdm90IGlz
IGNhcHR1cmVkLgorICAgICAgICAgIEhvd2V2ZXIsIHNvbWUgc3B1dG5payBjb25mb3JtYW5jZSB0
ZXN0cyBoYXZlIHNob3duIHRoYXQgd2UgY2Fubm90IGhvbm9yCisgICAgICAgICAgbGluZSBicmVh
a3MgZm9yIGFzc2lnbm1lbnQgc3RhdGVtZW50cyBsaWtlIHRoZSBmb2xsb3dpbmc6CisKKyAgICAg
ICAgICAgICAgZXZhbCgieFx1MDAwQSo9XHUwMDBBLTE7Iik7CisKKyAgICAgICAgICBJbiB0aGlz
IGNhc2UsIHRoZSBsaW5lU3RhcnQgaXMgZXhwZWN0ZWQgdG8gYmUgY2FwdHVyZWQgYXQgdGhlIHN0
YXJ0IG9mCisgICAgICAgICAgdGhlIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBpbnN0ZWFkIG9mIGF0
IHRoZSBkaXZvdCBwb2ludCBpbiB0aGUgbWlkZGxlLgorICAgICAgICAgIFRoZSBhc3NpZ25tZW50
IGV4cHJlc3Npb24gaXMgdGhlIG9ubHkgc3BlY2lhbCBjYXNlIGZvciB0aGlzLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggaGFzIGJlZW4gdGVzdGVkIGFnYWluc3QgdGhlIGZ1bGwgbGF5b3V0IHRlc3Rz
IGJvdGggd2l0aCByZWxlYXNlCisgICAgICAgIGFuZCBkZWJ1ZyBidWlsZHMgd2l0aCBubyByZWdy
ZXNzaW9uLgorCisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZi5jcHA6CisgICAgICAgIChKU0Nv
bnRleHRDcmVhdGVCYWNrdHJhY2UpOgorICAgICAgICAgIC0gVXBkYXRlZCB0byB1c2UgdGhlIG5l
dyBTdGFja0ZyYW1lOjpjb21wdXRlTGluZUFuZENvbHVtbigpLgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToKKyAg
ICAgICAgICAtIEFkZGVkIG1fZmlyc3RMaW5lQ29sdW1uT2Zmc2V0IGluaXRpYWxpemF0aW9uLgor
ICAgICAgICAgIC0gUGx1bWJlZCB0aGUgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0IGludG8gdGhlIFNv
dXJjZUNvZGUuCisgICAgICAgICAgLSBJbml0aWFsaXplZCBjb2x1bW4gZm9yIG9wX2RlYnVnIHVz
aW5nIHRoZSBuZXcgd2F5LgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpbmVOdW1iZXJGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICAgLSBDaGFuZ2VkIHRvIGNvbXB1dGUgbGluZSBudW1i
ZXIgdXNpbmcgdGhlIEV4cHJlc3Npb25SYW5nZUluZm8uCisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6Y29sdW1uTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQpOiBBZGRlZAorICAgICAgICAgIC0gQ2hh
bmdlZCB0byBjb21wdXRlIGNvbHVtbiBudW1iZXIgdXNpbmcgdGhlIEV4cHJlc3Npb25SYW5nZUlu
Zm8uCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVP
ZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmZpcnN0TGluZUNvbHVtbk9mZnNldCk6CisgICAgICAgIChKU0M6Okdsb2JhbENv
ZGVCbG9jazo6R2xvYmFsQ29kZUJsb2NrKToKKyAgICAgICAgICAtIFBsdW1iZWQgZmlyc3RMaW5l
Q29sdW1uT2Zmc2V0IHRocm91Z2ggdG8gdGhlIHN1cGVyIGNsYXNzLgorICAgICAgICAoSlNDOjpQ
cm9ncmFtQ29kZUJsb2NrOjpQcm9ncmFtQ29kZUJsb2NrKToKKyAgICAgICAgICAtIFBsdW1iZWQg
Zmlyc3RMaW5lQ29sdW1uT2Zmc2V0IHRocm91Z2ggdG8gdGhlIHN1cGVyIGNsYXNzLgorICAgICAg
ICAoSlNDOjpFdmFsQ29kZUJsb2NrOjpFdmFsQ29kZUJsb2NrKToKKyAgICAgICAgICAtIFBsdW1i
ZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0IHRocm91Z2ggdG8gdGhlIHN1cGVyIGNsYXNzLgorICAg
ICAgICAgICAgQnV0IGZvciBFdmFsQ29kZUJsb2NrcywgdGhlIGZpcnN0TGluZUNvbHVtbk9mZnNl
dCBpcyBhbHdheXMgMQorICAgICAgICAgICAgYmVjYXVzZSB3ZSdyZSBzdGFydGluZyB3aXRoIGEg
bmV3IHNvdXJjZSBzdHJpbmcgd2l0aCBubyBzdGFydAorICAgICAgICAgICAgb2Zmc2V0LgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6RnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAg
ICAgIC0gUGx1bWJlZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQgdGhyb3VnaCB0byB0aGUgc3VwZXIg
Y2xhc3MuCisKKyAgICAgICAgKiBieXRlY29kZS9FeHByZXNzaW9uUmFuZ2VJbmZvLmg6CisgICAg
ICAgICAgLSBBZGRlZCBtb2RlcyBmb3IgZW5jb2RpbmcgbGluZSBhbmQgY29sdW1uIGludG8gYSBz
aW5nbGUgMzAtYml0CisgICAgICAgICAgICB1bnNpZ25lZC4gVGhlIGVuY29kaW5nIGlzIGluIDEg
b2YgMyBtb2RlczoKKyAgICAgICAgICAgIDEuIEZhdExpbmVNb2RlOiAyMi1iaXQgbGluZSwgOC1i
aXQgY29sdW1uCisgICAgICAgICAgICAyLiBGYXRDb2x1bW5Nb2RlOiA4LWJpdCBsaW5lLCAyMi1i
aXQgY29sdW1uCisgICAgICAgICAgICAzLiBGYXRMaW5lQW5kQ29sdW1uTW9kZTogMzItYml0IGxp
bmUsIDMyLWJpdCBjb2x1bW4KKyAgICAgICAgKEpTQzo6RXhwcmVzc2lvblJhbmdlSW5mbzo6ZW5j
b2RlRmF0TGluZU1vZGUpOiBBZGRlZC4KKyAgICAgICAgICAtIEVuY29kZXMgbGluZSBhbmQgY29s
dW1uIGludG8gdGhlIDMwLWJpdCBwb3NpdGlvbiB1c2luZyBGYXRMaW5lIG1vZGUuCisgICAgICAg
IChKU0M6OkV4cHJlc3Npb25SYW5nZUluZm86OmVuY29kZUZhdENvbHVtbk1vZGUpOiBBZGRlZC4K
KyAgICAgICAgICAtIEVuY29kZXMgbGluZSBhbmQgY29sdW1uIGludG8gdGhlIDMwLWJpdCBwb3Np
dGlvbiB1c2luZyBGYXRDb2x1bW4gbW9kZS4KKyAgICAgICAgKEpTQzo6RXhwcmVzc2lvblJhbmdl
SW5mbzo6ZGVjb2RlRmF0TGluZU1vZGUpOiBBZGRlZC4KKyAgICAgICAgICAtIERlY29kZXMgdGhl
IEZhdExpbmUgbW9kZSAzMC1iaXQgcG9zaXRpb24gaW50byBsaW5lIGFuZCBjb2x1bW4uCisgICAg
ICAgIChKU0M6OkV4cHJlc3Npb25SYW5nZUluZm86OmRlY29kZUZhdENvbHVtbk1vZGUpOiBBZGRl
ZC4KKyAgICAgICAgICAtIERlY29kZXMgdGhlIEZhdENvbHVtbiBtb2RlIDMwLWJpdCBwb3NpdGlv
biBpbnRvIGxpbmUgYW5kIGNvbHVtbi4KKworICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgICAtIFBsdW1iZWQgc3RhcnRDb2x1
bW4gdGhyb3VnaC4KKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6Omxp
bmspOgorICAgICAgICAgIC0gUGx1bWJlZCBzdGFydENvbHVtbiB0aHJvdWdoLgorICAgICAgICAo
SlNDOjpVbmxpbmtlZENvZGVCbG9jazo6bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KToKKyAg
ICAgICAgICAtIENvbXB1dGVzIGEgbGluZSBudW1iZXIgdXNpbmcgdGhlIG5ldyB3YXkuCisgICAg
ICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpleHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9m
ZnNldCk6CisgICAgICAgICAgLSBBZGRlZCBkZWNvZGluZyBvZiBsaW5lIGFuZCBjb2x1bW4uCisg
ICAgICAgICAgLSBBZGRlZCBoYW5kbGluZyBvZiB0aGUgY2FzZSB3aGVuIHdlIGRvIG5vdCBmaW5k
IGEgZml0dGluZyBleHByZXNzaW9uCisgICAgICAgICAgICByYW5nZSBpbmZvIGZvciBhIHNwZWNp
ZmllZCBieXRlY29kZU9mZnNldC4gVGhpcyBvbmx5IGhhcHBlbnMgaWYgdGhlCisgICAgICAgICAg
ICBieXRlY29kZU9mZnNldCBpcyBiZWxvdyB0aGUgZmlyc3QgZXhwcmVzc2lvbiByYW5nZSBpbmZv
LiBJbiB0aGF0CisgICAgICAgICAgICBjYXNlLCB3ZSdsbCB1c2UgdGhlIGZpcnN0IGV4cHJlc3Np
b24gcmFuZ2UgaW5mbyBlbnRyeS4KKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmFk
ZEV4cHJlc3Npb25JbmZvKToKKyAgICAgICAgICAtIEFkZGVkIGVuY29kaW5nIG9mIGxpbmUgYW5k
IGNvbHVtbi4KKworICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAg
ICAgICAgLSBBZGRlZCBtX2V4cHJlc3Npb25JbmZvRmF0UG9zaXRpb25zIGluIFJhcmVEYXRhLgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnVuY3Rpb25TdGFydENv
bHVtbik6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpzaHJpbmtUb0ZpdCk6Cisg
ICAgICAgICAgLSBSZW1vdmVkIG9ic29sZXRlZCBtX2xpbmVJbmZvLgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0Q2FsbCk6IFBsdW1iZWQgbGluZSBhbmQgbGluZVN0YXJ0IHRocm91Z2guCisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbEV2YWwpOiBQbHVtYmVkIGxp
bmUgYW5kIGxpbmVTdGFydCB0aHJvdWdoLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdENhbGxWYXJhcmdzKTogUGx1bWJlZCBsaW5lIGFuZCBsaW5lU3RhcnQgdGhyb3VnaC4K
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb25zdHJ1Y3QpOiBQbHVtYmVk
IGxpbmUgYW5kIGxpbmVTdGFydCB0aHJvdWdoLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdERlYnVnSG9vayk6IFBsdW1iZWQgbGluZVN0YXJ0IHRocm91Z2guCisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0Tm9kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dCk6CisgICAgICAgICAgLSBSZW1vdmVkIG9ic29s
ZXRlZCBtX2xpbmVJbmZvLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEV4
cHJlc3Npb25JbmZvKToKKyAgICAgICAgICAtIFBsdW1iZWQgbGluZSBhbmQgbGluZVN0YXJ0IHRo
cm91Z2guCisgICAgICAgICAgLSBDb21wdXRlIHRoZSBsaW5lIGFuZCBjb2x1bW4gdG8gYmUgYWRk
ZWQgdG8gdGhlIGV4cHJlc3Npb24gcmFuZ2UgaW5mby4KKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGE6
OmVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZU5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFycmF5Tm9kZTo6dG9Bcmd1bWVudExpc3QpOgor
ICAgICAgICAoSlNDOjpCcmFja2V0QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Ok5l
d0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFdmFsRnVuY3Rpb25DYWxs
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsVmFsdWVOb2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6
ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OlBvc3RmaXhOb2RlOjplbWl0UmVzb2x2ZSk6CisgICAgICAgIChK
U0M6OlBvc3RmaXhOb2RlOjplbWl0QnJhY2tldCk6CisgICAgICAgIChKU0M6OlBvc3RmaXhOb2Rl
OjplbWl0RG90KToKKyAgICAgICAgKEpTQzo6RGVsZXRlUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAoSlNDOjpEZWxldGVEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQ
cmVmaXhOb2RlOjplbWl0UmVzb2x2ZSk6CisgICAgICAgIChKU0M6OlByZWZpeE5vZGU6OmVtaXRC
cmFja2V0KToKKyAgICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgICAg
LSBQbHVtYmVkIGxpbmUgYW5kIGxpbmVTdGFydCB0aHJvdWdoIHRoZSBhYm92ZSBhcyBuZWVkZWQu
CisKKyAgICAgICAgKEpTQzo6VW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICAg
LSBBZGRlZCBlbWlzc2lvbiBvZiBhbiBFeHByZXNzaW9uUmFuZ2VJbmZvIGZvciB0aGUgVW5hcnlP
cCBub2RlLgorCisgICAgICAgIChKU0M6OkJpbmFyeU9wTm9kZTo6ZW1pdFN0cmNhdCk6CisgICAg
ICAgIChKU0M6OlRocm93YWJsZUJpbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KEpTQzo6SW5zdGFuY2VPZk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OmVtaXRS
ZWFkTW9kaWZ5QXNzaWdubWVudCk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlSZXNvbHZlTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkFzc2lnbkRvdE5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OlJlYWRNb2RpZnlEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpBc3NpZ25CcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmVh
ZE1vZGlmeUJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAgIC0gUGx1bWJlZCBs
aW5lIGFuZCBsaW5lU3RhcnQgdGhyb3VnaCB0aGUgYWJvdmUgYXMgbmVlZGVkLgorCisgICAgICAg
IChKU0M6OkNvbnN0U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
RW1wdHlTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dl
clN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4cHJTdGF0ZW1l
bnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpWYXJTdGF0ZW1lbnROb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpJZkVsc2VOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpEb1doaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
V2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGb3JOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OkNvbnRpbnVlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QnJlYWtO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpXaXRoTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6U3dpdGNoTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6TGFiZWxOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpUaHJvd05vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OlRyeU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlByb2dy
YW1Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFdmFsTm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgICAtIFBsdW1iZWQgbGluZSBhbmQgbGluZVN0YXJ0IHRocm91Z2ggdGhlIGFib3ZlIGFz
IG5lZWRlZC4KKworICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6YXBwZW5kU291cmNlVG9FcnJvcik6CisgICAgICAgICAgLSBBZGRlZCBsaW5lIGFu
ZCBjb2x1bW4gYXJndW1lbnRzIGZvciBleHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNldCgp
LgorICAgICAgICAoSlNDOjpTdGFja0ZyYW1lOjpjb21wdXRlTGluZUFuZENvbHVtbik6CisgICAg
ICAgICAgLSBSZXBsYWNlcyBTdGFja0ZyYW1lOjpsaW5lKCkgYW5kIFN0YWNrRnJhbWU6OmNvbHVt
bigpLgorICAgICAgICAoSlNDOjpTdGFja0ZyYW1lOjpleHByZXNzaW9uSW5mbyk6CisgICAgICAg
ICAgLSBBZGRlZCBsaW5lIGFuZCBjb2x1bW4gYXJndW1lbnRzLgorICAgICAgICAoSlNDOjpTdGFj
a0ZyYW1lOjp0b1N0cmluZyk6CisgICAgICAgICAgLSBDaGFuZ2VkIHRvIHVzZSB0aGUgbmV3IFN0
YWNrRnJhbWU6OmNvbXB1dGVMaW5lQW5kQ29sdW1uKCkuCisgICAgICAgIChKU0M6OkludGVycHJl
dGVyOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgICAtIEFkZGVkIHRoZSBuZWVkZWQgZmlyc3RM
aW5lQ29sdW1uT2Zmc2V0IGFyZyBmb3IgdGhlIFN0YWNrRnJhbWUuCisKKyAgICAgICAgKiBpbnRl
cnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6Cisg
ICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OkJpbmFyeU9wSW5mbzo6QmluYXJ5T3BJbmZvKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6QXNzaWdubWVudEluZm86OkFzc2lnbm1lbnRJbmZvKToK
KyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUmVzb2x2ZSk6CisgICAgICAgIChKU0M6
OkFTVEJ1aWxkZXI6OmNyZWF0ZUJyYWNrZXRBY2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjpjcmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVS
ZWdFeHApOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVOZXdFeHByKToKKyAgICAg
ICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQXNzaWduUmVzb2x2ZSk6CisgICAgICAgIChKU0M6
OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZUdldHRlck9yU2V0dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVh
dGVGdW5jRGVjbFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUJs
b2NrU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRXhwclN0YXRl
bWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUlmU3RhdGVtZW50KToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRm9yTG9vcCk6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZUZvckluTG9vcCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNy
ZWF0ZVZhclN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVJldHVy
blN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUJyZWFrU3RhdGVt
ZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ29udGludWVTdGF0ZW1lbnQp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVUcnlTdGF0ZW1lbnQpOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVTd2l0Y2hTdGF0ZW1lbnQpOgorICAgICAgICAoSlND
OjpBU1RCdWlsZGVyOjpjcmVhdGVXaGlsZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpjcmVhdGVMYWJlbFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZVdpdGhTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVUaHJvd1N0
YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZURlYnVnZ2VyKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ29uc3RTdGF0ZW1lbnQpOgorICAgICAgICAo
SlNDOjpBU1RCdWlsZGVyOjphcHBlbmRCaW5hcnlFeHByZXNzaW9uSW5mbyk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmFwcGVuZFVuYXJ5VG9rZW4pOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjp1bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
Ojp1bmFyeVRva2VuU3RhY2tMYXN0TGluZVN0YXJ0UG9zaXRpb24pOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6YXNzaWdubWVudFN0YWNrQXBwZW5kKToKKyAgICAgICAgKEpTQzo6
QVNUQnVpbGRlcjo6Y3JlYXRlQXNzaWdubWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OnNldEV4Y2VwdGlvbkxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZURl
bGV0ZU5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9k
ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VCaW5hcnlOb2RlKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6bWFrZUFzc2lnbk5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjptYWtlUHJlZml4Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VQb3N0
Zml4Tm9kZSk6LgorICAgICAgICAgIC0gUGx1bWJlZCBsaW5lLCBsaW5lU3RhcnQsIGFuZCBzdGFy
dENvbHVtbiB0aHJvdWdoIHRoZSBhYm92ZSBhcyBuZWVkZWQuCisKKyAgICAgICAgKiBwYXJzZXIv
TGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjo6OmN1cnJlbnRTb3VyY2VQdHIpOgorICAgICAgICAo
SlNDOjo6OnNldENvZGUpOgorICAgICAgICAgIC0gQWRkZWQgdHJhY2tpbmcgZm9yIHNvdXJjZW9m
ZnNldCBhbmQgbGluZVN0YXJ0LgorICAgICAgICAoSlNDOjo6OmludGVybmFsU2hpZnQpOgorICAg
ICAgICAoSlNDOjo6OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgICAgLSBBZGRlZCB0cmFja2lu
ZyBmb3IgbGluZVN0YXJ0LgorICAgICAgICAoSlNDOjo6OnBhcnNlSWRlbnRpZmllclNsb3dDYXNl
KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVN0cmluZyk6CisgICAgICAgICAgLSBBZGRlZCB0cmFj
a2luZyBmb3IgbGluZVN0YXJ0LgorICAgICAgICAoSlNDOjo6OnBhcnNlU3RyaW5nU2xvd0Nhc2Up
OgorICAgICAgICAoSlNDOjo6OmxleCk6CisgICAgICAgICAgLSBBZGRlZCB0cmFja2luZyBmb3Ig
c291cmNlb2Zmc2V0LgorICAgICAgICAoSlNDOjo6OnNvdXJjZUNvZGUpOgorICAgICAgICAqIHBh
cnNlci9MZXhlci5oOgorICAgICAgICAoSlNDOjpMZXhlcjo6Y3VycmVudE9mZnNldCk6CisgICAg
ICAgIChKU0M6OkxleGVyOjpjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
TGV4ZXI6OnNldE9mZnNldCk6CisgICAgICAgICAgLSBBZGRlZCB0cmFja2luZyBmb3IgbGluZVN0
YXJ0LgorICAgICAgICAoSlNDOjpMZXhlcjo6b2Zmc2V0RnJvbVNvdXJjZVB0cik6IEFkZGVkLiBj
b252ZXJzaW9uIGZ1bmN0aW9uLgorICAgICAgICAoSlNDOjpMZXhlcjo6c291cmNlUHRyRnJvbU9m
ZnNldCk6IEFkZGVkLiBjb252ZXJzaW9uIGZ1bmN0aW9uLgorICAgICAgICAoSlNDOjpMZXhlcjo6
c2V0T2Zmc2V0RnJvbVNvdXJjZVB0cik6CisgICAgICAgIChKU0M6Ojo6bGV4RXhwZWN0SWRlbnRp
Zmllcik6CisgICAgICAgICAgLSBBZGRlZCB0cmFja2luZyBmb3Igc291cmNlb2Zmc2V0IGFuZCBs
aW5lU3RhcnQuCisKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAg
ICAoSlNDOjpOb2RlOjpOb2RlKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZU5vZGU6OlJlc29sdmVO
b2RlKToKKyAgICAgICAgKEpTQzo6RXZhbEZ1bmN0aW9uQ2FsbE5vZGU6OkV2YWxGdW5jdGlvbkNh
bGxOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjpGdW5jdGlvbkNh
bGxWYWx1ZU5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6RnVu
Y3Rpb25DYWxsUmVzb2x2ZU5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxCcmFja2V0
Tm9kZTo6RnVuY3Rpb25DYWxsQnJhY2tldE5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNh
bGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6Q2FsbEZ1bmN0
aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6
QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAg
ICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6UG9zdGZpeE5vZGUpOgorICAgICAgICAoSlNDOjpEZWxl
dGVSZXNvbHZlTm9kZTo6RGVsZXRlUmVzb2x2ZU5vZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVC
cmFja2V0Tm9kZTo6RGVsZXRlQnJhY2tldE5vZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVEb3RO
b2RlOjpEZWxldGVEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6UHJlZml4Tm9k
ZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6UmVhZE1vZGlmeVJlc29s
dmVOb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeUJyYWNrZXROb2RlOjpSZWFkTW9kaWZ5
QnJhY2tldE5vZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25CcmFja2V0Tm9kZTo6QXNzaWduQnJh
Y2tldE5vZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKToK
KyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKToKKyAg
ICAgICAgKEpTQzo6QXNzaWduRXJyb3JOb2RlOjpBc3NpZ25FcnJvck5vZGUpOgorICAgICAgICAo
SlNDOjpXaXRoTm9kZTo6V2l0aE5vZGUpOgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OkZvcklu
Tm9kZSk6CisgICAgICAgICAgLSBQbHVtYmVkIGxpbmUgYW5kIGxpbmVTdGFydCB0aHJvdWdoIHRo
ZSBhYm92ZSBhcyBuZWVkZWQuCisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAg
KEpTQzo6U3RhdGVtZW50Tm9kZTo6c2V0TG9jKTogUGx1bWJlZCBsaW5lU3RhcnQuCisgICAgICAg
IChKU0M6OlNjb3BlTm9kZTo6U2NvcGVOb2RlKTogUGx1bWJlZCBsaW5lU3RhcnQuCisgICAgICAg
IChKU0M6OlByb2dyYW1Ob2RlOjpQcm9ncmFtTm9kZSk6IFBsdW1iZWQgc3RhcnRDb2x1bW4uCisg
ICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjcmVhdGUpOiBQbHVtYmVkIHN0YXJ0Q29sdW1uLgor
ICAgICAgICAoSlNDOjpFdmFsTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25C
b2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZSk6IFBsdW1iZWQgc3RhcnRDb2x1bW4uCisgICAgICAg
IChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZSk6IFBsdW1iZWQgc3RhcnRDb2x1bW4uCisg
ICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6Ok5vZGU6OnN0YXJ0T2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6Tm9kZTo6bGluZVN0YXJ0T2Zmc2V0KTogQWRkZWQuCisgICAgICAg
IChKU0M6OlN0YXRlbWVudE5vZGU6OmZpcnN0TGluZSk6CisgICAgICAgIChKU0M6OlN0YXRlbWVu
dE5vZGU6Omxhc3RMaW5lKToKKyAgICAgICAgKEpTQzo6VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGE6
OlRocm93YWJsZUV4cHJlc3Npb25EYXRhKToKKyAgICAgICAgKEpTQzo6VGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGE6OnNldEV4Y2VwdGlvblNvdXJjZUNvZGUpOgorICAgICAgICAoSlNDOjpUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YTo6ZGl2b3RTdGFydE9mZnNldCk6CisgICAgICAgIChKU0M6OlRocm93
YWJsZUV4cHJlc3Npb25EYXRhOjpkaXZvdEVuZE9mZnNldCk6CisgICAgICAgIChKU0M6OlRocm93
YWJsZUV4cHJlc3Npb25EYXRhOjpkaXZvdExpbmUpOgorICAgICAgICAoSlNDOjpUaHJvd2FibGVF
eHByZXNzaW9uRGF0YTo6ZGl2b3RMaW5lU3RhcnQpOgorICAgICAgICAoSlNDOjpUaHJvd2FibGVT
dWJFeHByZXNzaW9uRGF0YTo6VGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEpOgorICAgICAgICAo
SlNDOjpUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YTo6c2V0U3ViZXhwcmVzc2lvbkluZm8pOgor
ICAgICAgICAoSlNDOjpUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YTo6c3ViZXhwcmVzc2lvbkRp
dm90KToKKyAgICAgICAgKEpTQzo6VGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGE6OnN1YmV4cHJl
c3Npb25TdGFydE9mZnNldCk6CisgICAgICAgIChKU0M6OlRocm93YWJsZVN1YkV4cHJlc3Npb25E
YXRhOjpzdWJleHByZXNzaW9uRW5kT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VGhyb3dhYmxlU3Vi
RXhwcmVzc2lvbkRhdGE6OnN1YmV4cHJlc3Npb25MaW5lKToKKyAgICAgICAgKEpTQzo6VGhyb3dh
YmxlU3ViRXhwcmVzc2lvbkRhdGE6OnN1YmV4cHJlc3Npb25MaW5lU3RhcnQpOgorICAgICAgICAo
SlNDOjpUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhOjpUaHJvd2FibGVQcmVmaXhl
ZFN1YkV4cHJlc3Npb25EYXRhKToKKyAgICAgICAgKEpTQzo6VGhyb3dhYmxlUHJlZml4ZWRTdWJF
eHByZXNzaW9uRGF0YTo6c2V0U3ViZXhwcmVzc2lvbkluZm8pOgorICAgICAgICAoSlNDOjpUaHJv
d2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhOjpzdWJleHByZXNzaW9uRGl2b3QpOgorICAg
ICAgICAoSlNDOjpUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhOjpzdWJleHByZXNz
aW9uU3RhcnRPZmZzZXQpOgorICAgICAgICAoSlNDOjpUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJl
c3Npb25EYXRhOjpzdWJleHByZXNzaW9uRW5kT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VGhyb3dh
YmxlUHJlZml4ZWRTdWJFeHByZXNzaW9uRGF0YTo6c3ViZXhwcmVzc2lvbkxpbmUpOgorICAgICAg
ICAoSlNDOjpUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhOjpzdWJleHByZXNzaW9u
TGluZVN0YXJ0KToKKyAgICAgICAgKEpTQzo6U2NvcGVOb2RlOjpzdGFydFN0YXJ0T2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6U2NvcGVOb2RlOjpzdGFydExpbmVTdGFydE9mZnNldCk6CisgICAgICAg
IChKU0M6OlByb2dyYW1Ob2RlOjpzdGFydENvbHVtbik6CisgICAgICAgIChKU0M6OkV2YWxOb2Rl
OjpzdGFydENvbHVtbik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6OnN0YXJ0Q29s
dW1uKToKKyAgICAgICAgICAtIFBsdW1iZWQgbGluZSBhbmQgbGluZVN0YXJ0IHRocm91Z2ggdGhl
IGFib3ZlIGFzIG5lZWRlZC4KKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6OjpQYXJzZXIpOgorICAgICAgICAoSlNDOjo6OnBhcnNlU291cmNlRWxlbWVudHMpOgor
ICAgICAgICAoSlNDOjo6OnBhcnNlVmFyRGVjbGFyYXRpb25MaXN0KToKKyAgICAgICAgKEpTQzo6
OjpwYXJzZUNvbnN0RGVjbGFyYXRpb25MaXN0KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUZvclN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VCcmVha1N0YXRlbWVudCk6CisgICAgICAg
IChKU0M6Ojo6cGFyc2VDb250aW51ZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VS
ZXR1cm5TdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlVGhyb3dTdGF0ZW1lbnQpOgor
ICAgICAgICAoSlNDOjo6OnBhcnNlV2l0aFN0YXRlbWVudCk6CisgICAgICAgICAgLSBQbHVtYmVk
IGxpbmUgYW5kIGxpbmVTdGFydCB0aHJvdWdoIHRoZSBhYm92ZSBhcyBuZWVkZWQuCisgICAgICAg
IChKU0M6Ojo6cGFyc2VGdW5jdGlvbkJvZHkpOgorICAgICAgICAgIC0gUGx1bWJlZCBzdGFydENv
bHVtbi4KKyAgICAgICAgKEpTQzo6OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6TGFiZWxJbmZvOjpM
YWJlbEluZm8pOgorICAgICAgICAoSlNDOjo6OnBhcnNlRXhwcmVzc2lvbk9yTGFiZWxTdGF0ZW1l
bnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24pOgorICAgICAg
ICAoSlNDOjo6OnBhcnNlQmluYXJ5RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VQ
cm9wZXJ0eSk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VPYmplY3RMaXRlcmFsKToKKyAgICAgICAg
KEpTQzo6OjpwYXJzZVByaW1hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZU1l
bWJlckV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjo6OnBhcnNlVW5hcnlFeHByZXNzaW9uKToK
KyAgICAgICAgICAtIFBsdW1iZWQgbGluZSwgbGluZVN0YXJ0LCBzdGFydENvbHVtbiB0aHJvdWdo
IHRoZSBhYm92ZSBhcyBuZWVkZWQuCisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAg
ICAoSlNDOjpQYXJzZXI6Om5leHQpOgorICAgICAgICAoSlNDOjpQYXJzZXI6Om5leHRFeHBlY3RJ
ZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjp0b2tlblN0YXJ0KToKKyAgICAgICAg
KEpTQzo6UGFyc2VyOjp0b2tlbkNvbHVtbik6CisgICAgICAgIChKU0M6OlBhcnNlcjo6dG9rZW5F
bmQpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OnRva2VuTGluZVN0YXJ0KToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyOjpsYXN0VG9rZW5MaW5lKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpsYXN0VG9r
ZW5MaW5lU3RhcnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIv
UGFyc2VyVG9rZW5zLmg6CisgICAgICAgIChKU0M6OkpTVG9rZW5Mb2NhdGlvbjo6SlNUb2tlbkxv
Y2F0aW9uKToKKyAgICAgICAgICAtIFBsdW1iZWQgbGluZVN0YXJ0LgorICAgICAgICAoSlNDOjpK
U1Rva2VuTG9jYXRpb246OmxpbmVTdGFydFBvc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SlNUb2tl
bkxvY2F0aW9uOjpzdGFydFBvc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SlNUb2tlbkxvY2F0aW9u
OjplbmRQb3NpdGlvbik6CisgICAgICAgICogcGFyc2VyL1NvdXJjZUNvZGUuaDoKKyAgICAgICAg
KEpTQzo6U291cmNlQ29kZTo6U291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGU6
OnN0YXJ0Q29sdW1uKToKKyAgICAgICAgKEpTQzo6bWFrZVNvdXJjZSk6CisgICAgICAgIChKU0M6
OlNvdXJjZUNvZGU6OnN1YkV4cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNlci9Tb3VyY2VQcm92
aWRlci5jcHA6IGRlbGV0ZSBvbGQgY29kZS4KKyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlk
ZXIuaDogZGVsZXRlIG9sZCBjb2RlLgorICAgICAgICAqIHBhcnNlci9Tb3VyY2VQcm92aWRlckNh
Y2hlSXRlbS5oOgorICAgICAgICAoSlNDOjpTb3VyY2VQcm92aWRlckNhY2hlSXRlbTo6Y2xvc2VC
cmFjZVRva2VuKToKKyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXJDYWNoZUl0ZW06OlNvdXJj
ZVByb3ZpZGVyQ2FjaGVJdGVtKToKKyAgICAgICAgICAtIFBsdW1iZWQgbGluZVN0YXJ0LgorICAg
ICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
bWFrZUFzc2lnbk5vZGUpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjptYWtlUHJlZml4
Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VQb3N0Zml4Tm9kZSk6Cisg
ICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VEZWxldGVOb2RlKToKKyAgICAgICAgKEpT
Qzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlUmVzb2x2ZSk6CisgICAgICAgIChKU0M6OlN5bnRheENo
ZWNrZXI6OmNyZWF0ZUJyYWNrZXRBY2Nlc3MpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2Vy
OjpjcmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVS
ZWdFeHApOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVOZXdFeHByKToKKyAg
ICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQXNzaWduUmVzb2x2ZSk6CisgICAgICAg
IChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZ1bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6
OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlRm9ySW5Mb29wKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
Y3JlYXRlUmV0dXJuU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlQnJlYWtTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVD
b250aW51ZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVdp
dGhTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVMYWJlbFN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVRocm93U3RhdGVt
ZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlR2V0dGVyT3JTZXR0ZXJQ
cm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmFwcGVuZEJpbmFyeUV4cHJl
c3Npb25JbmZvKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6b3BlcmF0b3JTdGFja1Bv
cCk6CisgICAgICAgICAgLSBNYWRlIFN5bnRheENoZWNrZXIgcHJvdG90eXBlIGNoYW5nZXMgdG8g
bWF0Y2ggQVNUQnVpbGRlciBkdWUgdG8gbmV3CisgICAgICAgICAgICBhcmdzIGFkZGVkIGZvciBw
bHVtYmluZyBsaW5lLCBsaW5lU3RhcnQsIGFuZCBzdGFydENvbHVtbi4KKyAgICAgICAgKiBydW50
aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2VuZXJhdGVCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0Q29kZUJsb2NrKToKKyAgICAgICAg
ICAtIFBsdW1iZWQgc3RhcnRDb2x1bW4uCisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNw
cDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUp
OgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpwcm9kdWNlQ29kZUJsb2NrRm9yKToKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZSk6CisgICAgICAg
ICAgLSBQbHVtYmVkIHN0YXJ0Q29sdW1uLgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5o
OgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpzdGFydENvbHVtbik6CisgICAgICAg
IChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OnJlY29yZFBhcnNlKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAgIC0gUGx1bWJlZCBzdGFydENvbHVt
bi4KKwogMjAxMy0wNy0wOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IG1ha2UgZGlzdGNoZWNrLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAkocmV2aXNpb24gMTUxOTIw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMzcsNyArMjM3LDkgQEAgSlNTdHJpbmdSZWYgSlNDb250ZXh0Q3JlYXRlQmFj
a3RyYWNlKEpTQwogICAgICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KLSAgICAgICAgdW5zaWduZWQgbGluZU51bWJlciA9IGZyYW1lLmxpbmUoKTsKKyAg
ICAgICAgdW5zaWduZWQgbGluZU51bWJlcjsKKyAgICAgICAgdW5zaWduZWQgY29sdW1uOworICAg
ICAgICBmcmFtZS5jb21wdXRlTGluZUFuZENvbHVtbihsaW5lTnVtYmVyLCBjb2x1bW4pOwogICAg
ICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
J1xuJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcjJyk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTUxOTIwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE2MDMsNiArMTYwMyw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKENvcHlQYXJzZWRC
bG9ja1RhZywKICAgICAsIG1fbmVlZHNBY3RpdmF0aW9uKG90aGVyLm1fbmVlZHNBY3RpdmF0aW9u
KQogICAgICwgbV9zb3VyY2Uob3RoZXIubV9zb3VyY2UpCiAgICAgLCBtX3NvdXJjZU9mZnNldChv
dGhlci5tX3NvdXJjZU9mZnNldCkKKyAgICAsIG1fZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KG90aGVy
Lm1fZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQogICAgICwgbV9jb2RlVHlwZShvdGhlci5tX2NvZGVU
eXBlKQogICAgICwgbV9pZGVudGlmaWVycyhvdGhlci5tX2lkZW50aWZpZXJzKQogICAgICwgbV9j
b25zdGFudFJlZ2lzdGVycyhvdGhlci5tX2NvbnN0YW50UmVnaXN0ZXJzKQpAQCAtMTYzMiw3ICsx
NjMzLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrVGFnLAogICAgIH0K
IH0KIAotQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRh
YmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGJhc2VTY29wZURlcHRoLCBQYXNzUmVmUHRyPFNvdXJj
ZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlciwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCBQYXNzT3du
UHRyPENvZGVCbG9jaz4gYWx0ZXJuYXRpdmUpCitDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRF
eGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENv
ZGVCbG9jaywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgYmFzZVNjb3Bl
RGVwdGgsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25l
ZCBzb3VyY2VPZmZzZXQsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCwgUGFzc093blB0
cjxDb2RlQmxvY2s+IGFsdGVybmF0aXZlKQogICAgIDogbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2Jq
ZWN0LT52bSgpLCBvd25lckV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCkKICAgICAsIG1faGVhcCgm
bV9nbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkKICAgICAsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKHVu
bGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykKQEAgLTE2NDgsNiArMTY0OSw3
IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICAsIG1fbmVl
ZHNBY3RpdmF0aW9uKHVubGlua2VkQ29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpCiAg
ICAgLCBtX3NvdXJjZShzb3VyY2VQcm92aWRlcikKICAgICAsIG1fc291cmNlT2Zmc2V0KHNvdXJj
ZU9mZnNldCkKKyAgICAsIG1fZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KGZpcnN0TGluZUNvbHVtbk9m
ZnNldCkKICAgICAsIG1fY29kZVR5cGUodW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkpCiAg
ICAgLCBtX2FsdGVybmF0aXZlKGFsdGVybmF0aXZlKQogICAgICwgbV9vc3JFeGl0Q291bnRlcigw
KQpAQCAtMTY3MSwxMCArMTY3MywxMiBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVj
dXRhYmxlKiBvCiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4
ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOwogICAgICAgICB1
bnNpZ25lZCBsaW5lQ291bnQgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPmxpbmVDb3VudCgpOwogICAg
ICAgICB1bnNpZ25lZCBmaXJzdExpbmUgPSBvd25lckV4ZWN1dGFibGUtPmxpbmVObygpICsgdW5s
aW5rZWRFeGVjdXRhYmxlLT5maXJzdExpbmVPZmZzZXQoKTsKKyAgICAgICAgdW5zaWduZWQgc3Rh
cnRDb2x1bW4gPSB1bmxpbmtlZEV4ZWN1dGFibGUtPmZ1bmN0aW9uU3RhcnRDb2x1bW4oKTsKKyAg
ICAgICAgc3RhcnRDb2x1bW4gKz0gKHVubGlua2VkRXhlY3V0YWJsZS0+Zmlyc3RMaW5lT2Zmc2V0
KCkgPyAxIDogb3duZXJFeGVjdXRhYmxlLT5zdGFydENvbHVtbigpKTsKICAgICAgICAgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQgPSBzb3VyY2VPZmZzZXQgKyB1bmxpbmtlZEV4ZWN1dGFibGUtPnN0YXJ0
T2Zmc2V0KCk7CiAgICAgICAgIHVuc2lnbmVkIHNvdXJjZUxlbmd0aCA9IHVubGlua2VkRXhlY3V0
YWJsZS0+c291cmNlTGVuZ3RoKCk7Ci0gICAgICAgIFNvdXJjZUNvZGUgY29kZShtX3NvdXJjZSwg
c3RhcnRPZmZzZXQsIHN0YXJ0T2Zmc2V0ICsgc291cmNlTGVuZ3RoLCBmaXJzdExpbmUpOwotICAg
ICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBGdW5jdGlvbkV4ZWN1dGFibGU6
OmNyZWF0ZSgqbV92bSwgY29kZSwgdW5saW5rZWRFeGVjdXRhYmxlLCBmaXJzdExpbmUsIGZpcnN0
TGluZSArIGxpbmVDb3VudCk7CisgICAgICAgIFNvdXJjZUNvZGUgY29kZShtX3NvdXJjZSwgc3Rh
cnRPZmZzZXQsIHN0YXJ0T2Zmc2V0ICsgc291cmNlTGVuZ3RoLCBmaXJzdExpbmUsIHN0YXJ0Q29s
dW1uKTsKKyAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gRnVuY3Rpb25F
eGVjdXRhYmxlOjpjcmVhdGUoKm1fdm0sIGNvZGUsIHVubGlua2VkRXhlY3V0YWJsZSwgZmlyc3RM
aW5lLCBmaXJzdExpbmUgKyBsaW5lQ291bnQsIHN0YXJ0Q29sdW1uKTsKICAgICAgICAgbV9mdW5j
dGlvbkRlY2xzW2ldLnNldCgqbV92bSwgb3duZXJFeGVjdXRhYmxlLCBleGVjdXRhYmxlKTsKICAg
ICB9CiAKQEAgLTE2ODMsMTAgKzE2ODcsMTIgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0
RXhlY3V0YWJsZSogbwogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5r
ZWRFeGVjdXRhYmxlID0gdW5saW5rZWRDb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihpKTsKICAgICAg
ICAgdW5zaWduZWQgbGluZUNvdW50ID0gdW5saW5rZWRFeGVjdXRhYmxlLT5saW5lQ291bnQoKTsK
ICAgICAgICAgdW5zaWduZWQgZmlyc3RMaW5lID0gb3duZXJFeGVjdXRhYmxlLT5saW5lTm8oKSAr
IHVubGlua2VkRXhlY3V0YWJsZS0+Zmlyc3RMaW5lT2Zmc2V0KCk7CisgICAgICAgIHVuc2lnbmVk
IHN0YXJ0Q29sdW1uID0gdW5saW5rZWRFeGVjdXRhYmxlLT5mdW5jdGlvblN0YXJ0Q29sdW1uKCk7
CisgICAgICAgIHN0YXJ0Q29sdW1uICs9ICh1bmxpbmtlZEV4ZWN1dGFibGUtPmZpcnN0TGluZU9m
ZnNldCgpID8gMSA6IG93bmVyRXhlY3V0YWJsZS0+c3RhcnRDb2x1bW4oKSk7CiAgICAgICAgIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0ID0gc291cmNlT2Zmc2V0ICsgdW5saW5rZWRFeGVjdXRhYmxlLT5z
dGFydE9mZnNldCgpOwogICAgICAgICB1bnNpZ25lZCBzb3VyY2VMZW5ndGggPSB1bmxpbmtlZEV4
ZWN1dGFibGUtPnNvdXJjZUxlbmd0aCgpOwotICAgICAgICBTb3VyY2VDb2RlIGNvZGUobV9zb3Vy
Y2UsIHN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCArIHNvdXJjZUxlbmd0aCwgZmlyc3RMaW5lKTsK
LSAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gRnVuY3Rpb25FeGVjdXRh
YmxlOjpjcmVhdGUoKm1fdm0sIGNvZGUsIHVubGlua2VkRXhlY3V0YWJsZSwgZmlyc3RMaW5lLCBm
aXJzdExpbmUgKyBsaW5lQ291bnQpOworICAgICAgICBTb3VyY2VDb2RlIGNvZGUobV9zb3VyY2Us
IHN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCArIHNvdXJjZUxlbmd0aCwgZmlyc3RMaW5lLCBzdGFy
dENvbHVtbik7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IEZ1bmN0
aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCptX3ZtLCBjb2RlLCB1bmxpbmtlZEV4ZWN1dGFibGUsIGZp
cnN0TGluZSwgZmlyc3RMaW5lICsgbGluZUNvdW50LCBzdGFydENvbHVtbik7CiAgICAgICAgIG1f
ZnVuY3Rpb25FeHByc1tpXS5zZXQoKm1fdm0sIG93bmVyRXhlY3V0YWJsZSwgZXhlY3V0YWJsZSk7
CiAgICAgfQogCkBAIC0xOTQzLDEwICsxOTQ5LDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2Ny
aXB0RXhlY3V0YWJsZSogbwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9kZWJ1Zzogewot
ICAgICAgICAgICAgc2l6ZV90IGNoYXJQb3NpdGlvbiA9IHBjW2kgKyA0XS51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBzaXplX3QgYWN0dWFsQ2hhclBvc2l0aW9uID0gY2hhclBvc2l0aW9uICsgbV9z
b3VyY2VPZmZzZXQ7Ci0gICAgICAgICAgICBzaXplX3QgY29sdW1uID0gbV9zb3VyY2UtPmNoYXJQ
b3NpdGlvblRvQ29sdW1uTnVtYmVyKGFjdHVhbENoYXJQb3NpdGlvbik7Ci0gICAgICAgICAgICBp
bnN0cnVjdGlvbnNbaSArIDRdID0gY29sdW1uOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kg
KyA0XSA9IGNvbHVtbk51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIApAQCAtMjQ2MywxNiArMjQ2NiwyOSBAQCBIYW5kbGVySW5mbyogQ29k
ZUJsb2NrOjpoYW5kbGVyRm9yQnl0ZWNvCiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBDb2RlQmxv
Y2s6OmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkK
K3Vuc2lnbmVkIENvZGVCbG9jazo6bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0IDwg
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gbV9vd25lckV4ZWN1dGFibGUtPmxp
bmVObygpICsgbV91bmxpbmtlZENvZGUtPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRl
Y29kZU9mZnNldCk7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpleHByZXNzaW9uUmFuZ2VGb3JCeXRl
Y29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgaW50JiBkaXZvdCwgaW50JiBzdGFy
dE9mZnNldCwgaW50JiBlbmRPZmZzZXQpCit1bnNpZ25lZCBDb2RlQmxvY2s6OmNvbHVtbk51bWJl
ckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQogewotICAgIG1fdW5s
aW5rZWRDb2RlLT5leHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNl
dCwgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpOworICAgIGludCBkaXZvdDsKKyAgICBp
bnQgc3RhcnRPZmZzZXQ7CisgICAgaW50IGVuZE9mZnNldDsKKyAgICB1bnNpZ25lZCBsaW5lOwor
ICAgIHVuc2lnbmVkIGNvbHVtbjsKKyAgICBleHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNl
dChieXRlY29kZU9mZnNldCwgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGxpbmUsIGNv
bHVtbik7CisgICAgcmV0dXJuIGNvbHVtbjsKK30KKwordm9pZCBDb2RlQmxvY2s6OmV4cHJlc3Np
b25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBpbnQmIGRp
dm90LCBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCwgdW5zaWduZWQmIGxpbmUsIHVu
c2lnbmVkJiBjb2x1bW4pCit7CisgICAgbV91bmxpbmtlZENvZGUtPmV4cHJlc3Npb25SYW5nZUZv
ckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9m
ZnNldCwgbGluZSwgY29sdW1uKTsKICAgICBkaXZvdCArPSBtX3NvdXJjZU9mZnNldDsKKyAgICBj
b2x1bW4gKz0gbGluZSA/IDEgOiBmaXJzdExpbmVDb2x1bW5PZmZzZXQoKTsKKyAgICBsaW5lICs9
IG1fb3duZXJFeGVjdXRhYmxlLT5saW5lTm8oKTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OnNocmlu
a1RvRml0KFNocmlua01vZGUgc2hyaW5rTW9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAy
MDA5LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBDYW1lcm9uIFp3YXJpY2ggPGN3endhcmljaEB1d2F0
ZXJsb28uY2E+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKIHBy
b3RlY3RlZDoKICAgICBDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90
aGVyKTsKICAgICAgICAgCi0gICAgQ29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhl
Y3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIGJh
c2VTY29wZURlcHRoLCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiwgdW5zaWduZWQgc291cmNl
T2Zmc2V0LCBQYXNzT3duUHRyPENvZGVCbG9jaz4gYWx0ZXJuYXRpdmUpOworICAgIENvZGVCbG9j
ayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiwg
SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBiYXNlU2NvcGVEZXB0aCwgUGFzc1JlZlB0cjxTb3Vy
Y2VQcm92aWRlcj4sIHVuc2lnbmVkIHNvdXJjZU9mZnNldCwgdW5zaWduZWQgZmlyc3RMaW5lQ29s
dW1uT2Zmc2V0LCBQYXNzT3duUHRyPENvZGVCbG9jaz4gYWx0ZXJuYXRpdmUpOwogCiAgICAgV3Jp
dGVCYXJyaWVyPEpTR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKICAgICBIZWFwKiBtX2hl
YXA7CkBAIC0xNzYsOCArMTc2LDEwIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBIYW5kbGVySW5m
byogaGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKLSAg
ICBpbnQgbGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
KTsKLSAgICB2b2lkIGV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0LCBpbnQmIGRpdm90LCBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNl
dCk7CisgICAgdW5zaWduZWQgbGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0KTsKKyAgICB1bnNpZ25lZCBjb2x1bW5OdW1iZXJGb3JCeXRlY29kZU9mZnNl
dCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CisgICAgdm9pZCBleHByZXNzaW9uUmFuZ2VGb3JC
eXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgaW50JiBkaXZvdCwKKyAgICAg
ICAgaW50JiBzdGFydE9mZnNldCwgaW50JiBlbmRPZmZzZXQsIHVuc2lnbmVkJiBsaW5lLCB1bnNp
Z25lZCYgY29sdW1uKTsKIAogI2lmIEVOQUJMRShKSVQpCiAKQEAgLTU2Niw2ICs1NjgsNyBAQCBw
dWJsaWM6CiAKICAgICBTb3VyY2VQcm92aWRlciogc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2UuZ2V0KCk7IH0KICAgICB1bnNpZ25lZCBzb3VyY2VPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX3NvdXJjZU9mZnNldDsgfQorICAgIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RMaW5lQ29sdW1uT2Zmc2V0OyB9CiAKICAgICBzaXplX3Qg
bnVtYmVyT2ZKdW1wVGFyZ2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5udW1i
ZXJPZkp1bXBUYXJnZXRzKCk7IH0KICAgICB1bnNpZ25lZCBqdW1wVGFyZ2V0KGludCBpbmRleCkg
Y29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmp1bXBUYXJnZXQoaW5kZXgpOyB9CkBAIC0x
MTcxLDYgKzExNzQsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBt
X3NvdXJjZTsKICAgICB1bnNpZ25lZCBtX3NvdXJjZU9mZnNldDsKKyAgICB1bnNpZ25lZCBtX2Zp
cnN0TGluZUNvbHVtbk9mZnNldDsKICAgICB1bnNpZ25lZCBtX2NvZGVUeXBlOwogCiAjaWYgRU5B
QkxFKExMSU5UKQpAQCAtMTMwOSw4ICsxMzEzLDggQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICB9
CiAgICAgICAgIAotICAgIEdsb2JhbENvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4
ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgYmFzZVNjb3BlRGVwdGgsIFBhc3NSZWZQdHI8
U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBzb3VyY2VPZmZzZXQsIFBh
c3NPd25QdHI8Q29kZUJsb2NrPiBhbHRlcm5hdGl2ZSkKLSAgICAgICAgOiBDb2RlQmxvY2sob3du
ZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBiYXNlU2NvcGVE
ZXB0aCwgc291cmNlUHJvdmlkZXIsIHNvdXJjZU9mZnNldCwgYWx0ZXJuYXRpdmUpCisgICAgR2xv
YmFsQ29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRD
b2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCB1bnNpZ25lZCBiYXNlU2NvcGVEZXB0aCwgUGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291
cmNlUHJvdmlkZXIsIHVuc2lnbmVkIHNvdXJjZU9mZnNldCwgdW5zaWduZWQgZmlyc3RMaW5lQ29s
dW1uT2Zmc2V0LCBQYXNzT3duUHRyPENvZGVCbG9jaz4gYWx0ZXJuYXRpdmUpCisgICAgICAgIDog
Q29kZUJsb2NrKG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIGdsb2JhbE9iamVj
dCwgYmFzZVNjb3BlRGVwdGgsIHNvdXJjZVByb3ZpZGVyLCBzb3VyY2VPZmZzZXQsIGZpcnN0TGlu
ZUNvbHVtbk9mZnNldCwgYWx0ZXJuYXRpdmUpCiAgICAgewogICAgIH0KIH07CkBAIC0xMzIyLDgg
KzEzMjYsOCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFByb2dyYW1Db2RlQmxvY2so
UHJvZ3JhbUV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJs
b2NrKiB1bmxpbmtlZENvZGVCbG9jaywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFz
c1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXIsIFBhc3NPd25QdHI8Q29kZUJs
b2NrPiBhbHRlcm5hdGl2ZSkKLSAgICAgICAgOiBHbG9iYWxDb2RlQmxvY2sob3duZXJFeGVjdXRh
YmxlLCB1bmxpbmtlZENvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCAwLCBzb3VyY2VQcm92aWRlciwg
MCwgYWx0ZXJuYXRpdmUpCisgICAgUHJvZ3JhbUNvZGVCbG9jayhQcm9ncmFtRXhlY3V0YWJsZSog
b3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJs
b2NrLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFNvdXJjZVByb3Zp
ZGVyPiBzb3VyY2VQcm92aWRlciwgdW5zaWduZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0LCBQYXNz
T3duUHRyPENvZGVCbG9jaz4gYWx0ZXJuYXRpdmUpCisgICAgICAgIDogR2xvYmFsQ29kZUJsb2Nr
KG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgMCwgc291
cmNlUHJvdmlkZXIsIDAsIGZpcnN0TGluZUNvbHVtbk9mZnNldCwgYWx0ZXJuYXRpdmUpCiAgICAg
ewogICAgIH0KIApAQCAtMTM0NSw3ICsxMzQ5LDcgQEAgcHVibGljOgogICAgIH0KICAgICAgICAg
CiAgICAgRXZhbENvZGVCbG9jayhFdmFsRXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxp
bmtlZEV2YWxDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlciwgaW50
IGJhc2VTY29wZURlcHRoLCBQYXNzT3duUHRyPENvZGVCbG9jaz4gYWx0ZXJuYXRpdmUpCi0gICAg
ICAgIDogR2xvYmFsQ29kZUJsb2NrKG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ss
IGdsb2JhbE9iamVjdCwgYmFzZVNjb3BlRGVwdGgsIHNvdXJjZVByb3ZpZGVyLCAwLCBhbHRlcm5h
dGl2ZSkKKyAgICAgICAgOiBHbG9iYWxDb2RlQmxvY2sob3duZXJFeGVjdXRhYmxlLCB1bmxpbmtl
ZENvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBiYXNlU2NvcGVEZXB0aCwgc291cmNlUHJvdmlkZXIs
IDAsIDEsIGFsdGVybmF0aXZlKQogICAgIHsKICAgICB9CiAKQEAgLTEzNzIsOCArMTM3Niw4IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgRnVuY3Rpb25Db2RlQmxvY2soRnVuY3Rpb25F
eGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVu
bGlua2VkQ29kZUJsb2NrLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRy
PFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlciwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCBQ
YXNzT3duUHRyPENvZGVCbG9jaz4gYWx0ZXJuYXRpdmUgPSBudWxscHRyKQotICAgICAgICA6IENv
ZGVCbG9jayhvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBnbG9iYWxPYmplY3Qs
IDAsIHNvdXJjZVByb3ZpZGVyLCBzb3VyY2VPZmZzZXQsIGFsdGVybmF0aXZlKQorICAgIEZ1bmN0
aW9uQ29kZUJsb2NrKEZ1bmN0aW9uRXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXIsIHVu
c2lnbmVkIHNvdXJjZU9mZnNldCwgdW5zaWduZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0LCBQYXNz
T3duUHRyPENvZGVCbG9jaz4gYWx0ZXJuYXRpdmUgPSBudWxscHRyKQorICAgICAgICA6IENvZGVC
bG9jayhvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIDAs
IHNvdXJjZVByb3ZpZGVyLCBzb3VyY2VPZmZzZXQsIGZpcnN0TGluZUNvbHVtbk9mZnNldCwgYWx0
ZXJuYXRpdmUpCiAgICAgewogICAgIH0KICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRXhwcmVzc2lvblJhbmdlSW5mby5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeHByZXNzaW9uUmFuZ2VJbmZvLmgJKHJldmlzaW9u
IDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeHByZXNzaW9uUmFu
Z2VJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDE0ICszMSw3OSBAQAogbmFtZXNwYWNlIEpTQyB7
CiAKIHN0cnVjdCBFeHByZXNzaW9uUmFuZ2VJbmZvIHsKKyAgICAvLyBMaW5lIGFuZCBjb2x1bW4g
dmFsdWVzIGFyZSBlbmNvZGVkIGluIDEgb2YgMyBtb2RlcyBkZXBlbmRpbmcgb24gdGhlIHNpemUK
KyAgICAvLyBvZiB0aGVpciB2YWx1ZXMuIFRoZXNlIG1vZGVzIGFyZToKKyAgICAvLworICAgIC8v
ICAgMS4gRmF0TGluZTogICAgICAgICAgMjItYml0IGxpbmUsICA4LWJpdCBjb2x1bW4uCisgICAg
Ly8gICAyLiBGYXRDb2x1bW46ICAgICAgICAgOC1iaXQgbGluZSwgMjItYml0IGNvbHVtbi4KKyAg
ICAvLyAgIDMuIEZhdExpbmVBbmRDb2x1bW46IDMyLWJpdCBsaW5lLCAzMi1iaXQgY29sdW1uLgor
ICAgIC8vCisgICAgLy8gRm9yIHRoZSBmaXJzdCAyIG1vZGVzLCB0aGUgbGluZSBhbmQgY29sdW1u
IHdpbGwgYmUgZW5jb2RlZCBpbiB0aGUgMzAtYml0CisgICAgLy8gcG9zaXRpb24gZmllbGQgaW4g
dGhlIEV4cHJlc3Npb25SYW5nZUluZm8uIEZvciB0aGUgRmF0TGluZUFuZENvbHVtbiBtb2RlLAor
ICAgIC8vIHRoZSBwb3NpdGlvbiBmaWVsZCB3aWxsIGhvbGQgYW4gaW5kZXggaW50byBhIEZhdFBv
c2l0aW9uIHZlY3RvciB3aGljaAorICAgIC8vIGhvbGRzIHRoZSBGYXRQb3NpdGlvbiByZWNvcmRz
IHdpdGggdGhlIGZ1bGwgMzItYml0IGxpbmUgYW5kIGNvbHVtbiB2YWx1ZXMuCisKKyAgICBlbnVt
IHsKKyAgICAgICAgRmF0TGluZU1vZGUsCisgICAgICAgIEZhdENvbHVtbk1vZGUsCisgICAgICAg
IEZhdExpbmVBbmRDb2x1bW5Nb2RlCisgICAgfTsKKworICAgIHN0cnVjdCBGYXRQb3NpdGlvbiB7
CisgICAgICAgIHVpbnQzMl90IGxpbmU7CisgICAgICAgIHVpbnQzMl90IGNvbHVtbjsKKyAgICB9
OworCisgICAgZW51bSB7CisgICAgICAgIEZhdExpbmVNb2RlTGluZVNoaWZ0ID0gOCwKKyAgICAg
ICAgRmF0TGluZU1vZGVMaW5lTWFzayA9ICgxIDw8IDIyKSAtIDEsCisgICAgICAgIEZhdExpbmVN
b2RlQ29sdW1uTWFzayA9ICgxIDw8IDgpIC0gMSwKKyAgICAgICAgRmF0Q29sdW1uTW9kZUxpbmVT
aGlmdCA9IDIyLAorICAgICAgICBGYXRDb2x1bW5Nb2RlTGluZU1hc2sgPSAoMSA8PCA4KSAtIDEs
CisgICAgICAgIEZhdENvbHVtbk1vZGVDb2x1bW5NYXNrID0gKDEgPDwgMjIpIC0gMQorICAgIH07
CisKICAgICBlbnVtIHsKICAgICAgICAgTWF4T2Zmc2V0ID0gKDEgPDwgNykgLSAxLCAKLSAgICAg
ICAgTWF4RGl2b3QgPSAoMSA8PCAyNSkgLSAxCisgICAgICAgIE1heERpdm90ID0gKDEgPDwgMjUp
IC0gMSwKKyAgICAgICAgTWF4RmF0TGluZU1vZGVMaW5lID0gKDEgPDwgMjIpIC0gMSwKKyAgICAg
ICAgTWF4RmF0TGluZU1vZGVDb2x1bW4gPSAoMSA8PCA4KSAtIDEsCisgICAgICAgIE1heEZhdENv
bHVtbk1vZGVMaW5lID0gKDEgPDwgOCkgLSAxLAorICAgICAgICBNYXhGYXRDb2x1bW5Nb2RlQ29s
dW1uID0gKDEgPDwgMjIpIC0gMQogICAgIH07CisKKyAgICB2b2lkIGVuY29kZUZhdExpbmVNb2Rl
KHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGNvbHVtbikKKyAgICB7CisgICAgICAgIEFTU0VSVChs
aW5lIDw9IE1heEZhdExpbmVNb2RlTGluZSk7CisgICAgICAgIEFTU0VSVChjb2x1bW4gPD0gTWF4
RmF0TGluZU1vZGVDb2x1bW4pOworICAgICAgICBwb3NpdGlvbiA9ICgobGluZSAmIEZhdExpbmVN
b2RlTGluZU1hc2spIDw8IEZhdExpbmVNb2RlTGluZVNoaWZ0IHwgKGNvbHVtbiAmIEZhdExpbmVN
b2RlQ29sdW1uTWFzaykpOworICAgIH0KKworICAgIHZvaWQgZW5jb2RlRmF0Q29sdW1uTW9kZSh1
bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBjb2x1bW4pCisgICAgeworICAgICAgICBBU1NFUlQobGlu
ZSA8PSBNYXhGYXRDb2x1bW5Nb2RlTGluZSk7CisgICAgICAgIEFTU0VSVChjb2x1bW4gPD0gTWF4
RmF0Q29sdW1uTW9kZUNvbHVtbik7CisgICAgICAgIHBvc2l0aW9uID0gKChsaW5lICYgRmF0Q29s
dW1uTW9kZUxpbmVNYXNrKSA8PCBGYXRDb2x1bW5Nb2RlTGluZVNoaWZ0IHwgKGNvbHVtbiAmIEZh
dENvbHVtbk1vZGVDb2x1bW5NYXNrKSk7CisgICAgfQorCisgICAgdm9pZCBkZWNvZGVGYXRMaW5l
TW9kZSh1bnNpZ25lZCYgbGluZSwgdW5zaWduZWQmIGNvbHVtbikKKyAgICB7CisgICAgICAgIGxp
bmUgPSAocG9zaXRpb24gPj4gRmF0TGluZU1vZGVMaW5lU2hpZnQpICYgRmF0TGluZU1vZGVMaW5l
TWFzazsKKyAgICAgICAgY29sdW1uID0gcG9zaXRpb24gJiBGYXRMaW5lTW9kZUNvbHVtbk1hc2s7
CisgICAgfQorCisgICAgdm9pZCBkZWNvZGVGYXRDb2x1bW5Nb2RlKHVuc2lnbmVkJiBsaW5lLCB1
bnNpZ25lZCYgY29sdW1uKQorICAgIHsKKyAgICAgICAgbGluZSA9IChwb3NpdGlvbiA+PiBGYXRD
b2x1bW5Nb2RlTGluZVNoaWZ0KSAmIEZhdENvbHVtbk1vZGVMaW5lTWFzazsKKyAgICAgICAgY29s
dW1uID0gcG9zaXRpb24gJiBGYXRDb2x1bW5Nb2RlQ29sdW1uTWFzazsKKyAgICB9CisKICAgICB1
aW50MzJfdCBpbnN0cnVjdGlvbk9mZnNldCA6IDI1OwotICAgIHVpbnQzMl90IGRpdm90UG9pbnQg
OiAyNTsKICAgICB1aW50MzJfdCBzdGFydE9mZnNldCA6IDc7CisgICAgdWludDMyX3QgZGl2b3RQ
b2ludCA6IDI1OwogICAgIHVpbnQzMl90IGVuZE9mZnNldCA6IDc7CisgICAgdWludDMyX3QgbW9k
ZSA6IDI7CisgICAgdWludDMyX3QgcG9zaXRpb24gOiAzMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNTE5MjApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05Miw2
ICs5Miw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmMKICAgICAs
IG1fZmlyc3RMaW5lT2Zmc2V0KG5vZGUtPmZpcnN0TGluZSgpIC0gc291cmNlLmZpcnN0TGluZSgp
KQogICAgICwgbV9saW5lQ291bnQobm9kZS0+bGFzdExpbmUoKSAtIG5vZGUtPmZpcnN0TGluZSgp
KQogICAgICwgbV9mdW5jdGlvblN0YXJ0T2Zmc2V0KG5vZGUtPmZ1bmN0aW9uU3RhcnQoKSAtIHNv
dXJjZS5zdGFydE9mZnNldCgpKQorICAgICwgbV9mdW5jdGlvblN0YXJ0Q29sdW1uKG5vZGUtPnN0
YXJ0Q29sdW1uKCkpCiAgICAgLCBtX3N0YXJ0T2Zmc2V0KG5vZGUtPnNvdXJjZSgpLnN0YXJ0T2Zm
c2V0KCkgLSBzb3VyY2Uuc3RhcnRPZmZzZXQoKSkKICAgICAsIG1fc291cmNlTGVuZ3RoKG5vZGUt
PnNvdXJjZSgpLmxlbmd0aCgpKQogICAgICwgbV9mZWF0dXJlcyhub2RlLT5mZWF0dXJlcygpKQpA
QCAtMTIyLDggKzEyMyw5IEBAIEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4
ZWMKIHsKICAgICB1bnNpZ25lZCBmaXJzdExpbmUgPSBsaW5lT2Zmc2V0ICsgbV9maXJzdExpbmVP
ZmZzZXQ7CiAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBzb3VyY2VPZmZzZXQgKyBtX3N0YXJ0
T2Zmc2V0OwotICAgIFNvdXJjZUNvZGUgY29kZShzb3VyY2UucHJvdmlkZXIoKSwgc3RhcnRPZmZz
ZXQsIHN0YXJ0T2Zmc2V0ICsgbV9zb3VyY2VMZW5ndGgsIGZpcnN0TGluZSk7Ci0gICAgcmV0dXJu
IEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBjb2RlLCB0aGlzLCBmaXJzdExpbmUsIGZp
cnN0TGluZSArIG1fbGluZUNvdW50KTsKKyAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IG1fZnVu
Y3Rpb25TdGFydENvbHVtbiArIDE7IC8vIHN0YXJ0Q29sdW1uIHNob3VsZCBzdGFydCBmcm9tIDEs
IG5vdCAwLgorICAgIFNvdXJjZUNvZGUgY29kZShzb3VyY2UucHJvdmlkZXIoKSwgc3RhcnRPZmZz
ZXQsIHN0YXJ0T2Zmc2V0ICsgbV9zb3VyY2VMZW5ndGgsIGZpcnN0TGluZSwgc3RhcnRDb2x1bW4p
OworICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgY29kZSwgdGhpcywg
Zmlyc3RMaW5lLCBmaXJzdExpbmUgKyBtX2xpbmVDb3VudCwgc3RhcnRDb2x1bW4pOwogfQogCiBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZy
b21HbG9iYWxDb2RlKGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEV4ZWNTdGF0ZSogZXhlYywgRGVi
dWdnZXIqLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTT2JqZWN0KiogZXhjZXB0aW9uKQpA
QCAtMjM2LDI0ICsyMzgsMTcgQEAgdm9pZCBVbmxpbmtlZENvZGVCbG9jazo6dmlzaXRDaGlsZHJl
bihKUwogaW50IFVubGlua2VkQ29kZUJsb2NrOjpsaW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQo
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCiB7CiAgICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0IDwg
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSAgICBWZWN0b3I8TGluZUluZm8+JiBsaW5lSW5mbyA9
IG1fbGluZUluZm87Ci0gICAgCi0gICAgaW50IGxvdyA9IDA7Ci0gICAgaW50IGhpZ2ggPSBsaW5l
SW5mby5zaXplKCk7Ci0gICAgd2hpbGUgKGxvdyA8IGhpZ2gpIHsKLSAgICAgICAgaW50IG1pZCA9
IGxvdyArIChoaWdoIC0gbG93KSAvIDI7Ci0gICAgICAgIGlmIChsaW5lSW5mb1ttaWRdLmluc3Ry
dWN0aW9uT2Zmc2V0IDw9IGJ5dGVjb2RlT2Zmc2V0KQotICAgICAgICAgICAgbG93ID0gbWlkICsg
MTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaGlnaCA9IG1pZDsKLSAgICB9Ci0gICAgCi0g
ICAgaWYgKCFsb3cpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBsaW5lSW5mb1tsb3cg
LSAxXS5saW5lTnVtYmVyOworICAgIGludCBkaXZvdDsKKyAgICBpbnQgc3RhcnRPZmZzZXQ7Cisg
ICAgaW50IGVuZE9mZnNldDsKKyAgICB1bnNpZ25lZCBsaW5lOworICAgIHVuc2lnbmVkIGNvbHVt
bjsKKyAgICBleHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCwg
ZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGxpbmUsIGNvbHVtbik7CisgICAgcmV0dXJu
IGxpbmU7CiB9CiAKLXZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OmV4cHJlc3Npb25SYW5nZUZvckJ5
dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBpbnQmIGRpdm90LCBpbnQmIHN0
YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCkKK3ZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OmV4cHJl
c3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LAorICAg
IGludCYgZGl2b3QsIGludCYgc3RhcnRPZmZzZXQsIGludCYgZW5kT2Zmc2V0LCB1bnNpZ25lZCYg
bGluZSwgdW5zaWduZWQmIGNvbHVtbikKIHsKICAgICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgPCBp
bnN0cnVjdGlvbnMoKS5zaXplKCkpOwogCkBAIC0yNjEsNiArMjU2LDggQEAgdm9pZCBVbmxpbmtl
ZENvZGVCbG9jazo6ZXhwcmVzc2lvblJhbmdlRgogICAgICAgICBzdGFydE9mZnNldCA9IDA7CiAg
ICAgICAgIGVuZE9mZnNldCA9IDA7CiAgICAgICAgIGRpdm90ID0gMDsKKyAgICAgICAgbGluZSA9
IDA7CisgICAgICAgIGNvbHVtbiA9IDA7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI3
NiwxNyArMjczLDgzIEBAIHZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OmV4cHJlc3Npb25SYW5nZUYK
ICAgICAgICAgICAgIGhpZ2ggPSBtaWQ7CiAgICAgfQogCi0gICAgQVNTRVJUKGxvdyk7Ci0gICAg
aWYgKCFsb3cpIHsKKyAgICBpZiAoIWxvdykKKyAgICAgICAgbG93ID0gMTsKKworICAgIEV4cHJl
c3Npb25SYW5nZUluZm8mIGluZm8gPSBleHByZXNzaW9uSW5mb1tsb3cgLSAxXTsKKyAgICBzdGFy
dE9mZnNldCA9IGluZm8uc3RhcnRPZmZzZXQ7CisgICAgZW5kT2Zmc2V0ID0gaW5mby5lbmRPZmZz
ZXQ7CisgICAgZGl2b3QgPSBpbmZvLmRpdm90UG9pbnQ7CisKKyAgICBzd2l0Y2ggKGluZm8ubW9k
ZSkgeworICAgIGNhc2UgRXhwcmVzc2lvblJhbmdlSW5mbzo6RmF0TGluZU1vZGU6CisgICAgICAg
IGluZm8uZGVjb2RlRmF0TGluZU1vZGUobGluZSwgY29sdW1uKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBFeHByZXNzaW9uUmFuZ2VJbmZvOjpGYXRDb2x1bW5Nb2RlOgorICAgICAgICBpbmZv
LmRlY29kZUZhdENvbHVtbk1vZGUobGluZSwgY29sdW1uKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBFeHByZXNzaW9uUmFuZ2VJbmZvOjpGYXRMaW5lQW5kQ29sdW1uTW9kZTogeworICAgICAg
ICB1bnNpZ25lZCBmYXRJbmRleCA9IGluZm8ucG9zaXRpb247CisgICAgICAgIEV4cHJlc3Npb25S
YW5nZUluZm86OkZhdFBvc2l0aW9uJiBmYXRQb3MgPSBtX3JhcmVEYXRhLT5tX2V4cHJlc3Npb25J
bmZvRmF0UG9zaXRpb25zW2ZhdEluZGV4XTsKKyAgICAgICAgbGluZSA9IGZhdFBvcy5saW5lOwor
ICAgICAgICBjb2x1bW4gPSBmYXRQb3MuY29sdW1uOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgfSAvLyBzd2l0Y2gKK30KKwordm9pZCBVbmxpbmtlZENvZGVCbG9jazo6YWRkRXhwcmVzc2lv
bkluZm8odW5zaWduZWQgaW5zdHJ1Y3Rpb25PZmZzZXQsCisgICAgaW50IGRpdm90LCBpbnQgc3Rh
cnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGNvbHVtbikK
K3sKKyAgICBpZiAoZGl2b3QgPiBFeHByZXNzaW9uUmFuZ2VJbmZvOjpNYXhEaXZvdCkgeworICAg
ICAgICAvLyBPdmVyZmxvdyBoYXMgb2NjdXJyZWQsIHdlIGNhbiBvbmx5IGdpdmUgbGluZSBudW1i
ZXIgaW5mbyBmb3IgZXJyb3JzIGZvciB0aGlzIHJlZ2lvbgorICAgICAgICBkaXZvdCA9IDA7CiAg
ICAgICAgIHN0YXJ0T2Zmc2V0ID0gMDsKICAgICAgICAgZW5kT2Zmc2V0ID0gMDsKLSAgICAgICAg
ZGl2b3QgPSAwOwotICAgICAgICByZXR1cm47CisgICAgfSBlbHNlIGlmIChzdGFydE9mZnNldCA+
IEV4cHJlc3Npb25SYW5nZUluZm86Ok1heE9mZnNldCkgeworICAgICAgICAvLyBJZiB0aGUgc3Rh
cnQgb2Zmc2V0IGlzIG91dCBvZiBib3VuZHMgd2UgY2xlYXIgYm90aCBvZmZzZXRzCisgICAgICAg
IC8vIHNvIHdlIG9ubHkgZ2V0IHRoZSBkaXZvdCBtYXJrZXIuIEVycm9yIG1lc3NhZ2Ugd2lsbCBo
YXZlIHRvIGJlIHJlZHVjZWQKKyAgICAgICAgLy8gdG8gbGluZSBhbmQgY2hhclBvc2l0aW9uIG51
bWJlci4KKyAgICAgICAgc3RhcnRPZmZzZXQgPSAwOworICAgICAgICBlbmRPZmZzZXQgPSAwOwor
ICAgIH0gZWxzZSBpZiAoZW5kT2Zmc2V0ID4gRXhwcmVzc2lvblJhbmdlSW5mbzo6TWF4T2Zmc2V0
KSB7CisgICAgICAgIC8vIFRoZSBlbmQgb2Zmc2V0IGlzIG9ubHkgdXNlZCBmb3IgYWRkaXRpb25h
bCBjb250ZXh0LCBhbmQgaXMgbXVjaCBtb3JlIGxpa2VseQorICAgICAgICAvLyB0byBvdmVyZmxv
dyAoZWcuIGZ1bmN0aW9uIGNhbGwgYXJndW1lbnRzKSBzbyB3ZSBhcmUgd2lsbGluZyB0byBkcm9w
IGl0IHdpdGhvdXQKKyAgICAgICAgLy8gZHJvcHBpbmcgdGhlIHJlc3Qgb2YgdGhlIHJhbmdlLgor
ICAgICAgICBlbmRPZmZzZXQgPSAwOworICAgIH0KKworICAgIHVuc2lnbmVkIHBvc2l0aW9uTW9k
ZSA9CisgICAgICAgIChsaW5lIDw9IEV4cHJlc3Npb25SYW5nZUluZm86Ok1heEZhdExpbmVNb2Rl
TGluZSAmJiBjb2x1bW4gPD0gRXhwcmVzc2lvblJhbmdlSW5mbzo6TWF4RmF0TGluZU1vZGVDb2x1
bW4pIAorICAgICAgICA/IEV4cHJlc3Npb25SYW5nZUluZm86OkZhdExpbmVNb2RlCisgICAgICAg
IDogKGxpbmUgPD0gRXhwcmVzc2lvblJhbmdlSW5mbzo6TWF4RmF0Q29sdW1uTW9kZUxpbmUgJiYg
Y29sdW1uIDw9IEV4cHJlc3Npb25SYW5nZUluZm86Ok1heEZhdENvbHVtbk1vZGVDb2x1bW4pCisg
ICAgICAgID8gRXhwcmVzc2lvblJhbmdlSW5mbzo6RmF0Q29sdW1uTW9kZQorICAgICAgICA6IEV4
cHJlc3Npb25SYW5nZUluZm86OkZhdExpbmVBbmRDb2x1bW5Nb2RlOworCisgICAgRXhwcmVzc2lv
blJhbmdlSW5mbyBpbmZvOworICAgIGluZm8uaW5zdHJ1Y3Rpb25PZmZzZXQgPSBpbnN0cnVjdGlv
bk9mZnNldDsKKyAgICBpbmZvLmRpdm90UG9pbnQgPSBkaXZvdDsKKyAgICBpbmZvLnN0YXJ0T2Zm
c2V0ID0gc3RhcnRPZmZzZXQ7CisgICAgaW5mby5lbmRPZmZzZXQgPSBlbmRPZmZzZXQ7CisKKyAg
ICBpbmZvLm1vZGUgPSBwb3NpdGlvbk1vZGU7CisgICAgc3dpdGNoIChwb3NpdGlvbk1vZGUpIHsK
KyAgICBjYXNlIEV4cHJlc3Npb25SYW5nZUluZm86OkZhdExpbmVNb2RlOgorICAgICAgICBpbmZv
LmVuY29kZUZhdExpbmVNb2RlKGxpbmUsIGNvbHVtbik7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgRXhwcmVzc2lvblJhbmdlSW5mbzo6RmF0Q29sdW1uTW9kZToKKyAgICAgICAgaW5mby5lbmNv
ZGVGYXRDb2x1bW5Nb2RlKGxpbmUsIGNvbHVtbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
RXhwcmVzc2lvblJhbmdlSW5mbzo6RmF0TGluZUFuZENvbHVtbk1vZGU6IHsKKyAgICAgICAgY3Jl
YXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOworICAgICAgICB1bnNpZ25lZCBmYXRJbmRleCA9IG1f
cmFyZURhdGEtPm1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnMuc2l6ZSgpOworICAgICAgICBF
eHByZXNzaW9uUmFuZ2VJbmZvOjpGYXRQb3NpdGlvbiBmYXRQb3MgPSB7IGxpbmUsIGNvbHVtbiB9
OworICAgICAgICBtX3JhcmVEYXRhLT5tX2V4cHJlc3Npb25JbmZvRmF0UG9zaXRpb25zLmFwcGVu
ZChmYXRQb3MpOworICAgICAgICBpbmZvLnBvc2l0aW9uID0gZmF0SW5kZXg7CiAgICAgfQorICAg
IH0gLy8gc3dpdGNoCiAKLSAgICBzdGFydE9mZnNldCA9IGV4cHJlc3Npb25JbmZvW2xvdyAtIDFd
LnN0YXJ0T2Zmc2V0OwotICAgIGVuZE9mZnNldCA9IGV4cHJlc3Npb25JbmZvW2xvdyAtIDFdLmVu
ZE9mZnNldDsKLSAgICBkaXZvdCA9IGV4cHJlc3Npb25JbmZvW2xvdyAtIDFdLmRpdm90UG9pbnQ7
CisgICAgbV9leHByZXNzaW9uSW5mby5hcHBlbmQoaW5mbyk7CiB9CiAKIHZvaWQgVW5saW5rZWRQ
cm9ncmFtQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaAkocmV2aXNpb24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
Myw2ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgZmlyc3RMaW5lT2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gbV9maXJzdExpbmVPZmZzZXQ7IH0KICAgICB1bnNpZ25lZCBsaW5lQ291bnQo
KSBjb25zdCB7IHJldHVybiBtX2xpbmVDb3VudDsgfQogICAgIHVuc2lnbmVkIGZ1bmN0aW9uU3Rh
cnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uU3RhcnRPZmZzZXQ7IH0KKyAgICB1
bnNpZ25lZCBmdW5jdGlvblN0YXJ0Q29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblN0
YXJ0Q29sdW1uOyB9CiAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBt
X3N0YXJ0T2Zmc2V0OyB9CiAgICAgdW5zaWduZWQgc291cmNlTGVuZ3RoKCkgeyByZXR1cm4gbV9z
b3VyY2VMZW5ndGg7IH0KIApAQCAtMTU5LDYgKzE2MCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWdu
ZWQgbV9maXJzdExpbmVPZmZzZXQ7CiAgICAgdW5zaWduZWQgbV9saW5lQ291bnQ7CiAgICAgdW5z
aWduZWQgbV9mdW5jdGlvblN0YXJ0T2Zmc2V0OworICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25TdGFy
dENvbHVtbjsKICAgICB1bnNpZ25lZCBtX3N0YXJ0T2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fc291
cmNlTGVuZ3RoOwogCkBAIC0yNDUsMTkgKzI0Nyw4IEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRz
RnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3BlQ2hhaW47IH0K
ICAgICB2b2lkIHNldE5lZWRzRnVsbFNjb3BlQ2hhaW4oYm9vbCBuZWVkc0Z1bGxTY29wZUNoYWlu
KSB7IG1fbmVlZHNGdWxsU2NvcGVDaGFpbiA9IG5lZWRzRnVsbFNjb3BlQ2hhaW47IH0KIAotICAg
IHZvaWQgYWRkRXhwcmVzc2lvbkluZm8oY29uc3QgRXhwcmVzc2lvblJhbmdlSW5mbyYgZXhwcmVz
c2lvbkluZm8pCi0gICAgewotICAgICAgICBtX2V4cHJlc3Npb25JbmZvLmFwcGVuZChleHByZXNz
aW9uSW5mbyk7Ci0gICAgfQotCi0gICAgdm9pZCBhZGRMaW5lSW5mbyh1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCwgaW50IGxpbmVObykKLSAgICB7Ci0gICAgICAgIFZlY3RvcjxMaW5lSW5mbz4mIGxp
bmVJbmZvID0gbV9saW5lSW5mbzsKLSAgICAgICAgaWYgKCFsaW5lSW5mby5zaXplKCkgfHwgbGlu
ZUluZm8ubGFzdCgpLmxpbmVOdW1iZXIgIT0gbGluZU5vKSB7Ci0gICAgICAgICAgICBMaW5lSW5m
byBpbmZvID0geyBieXRlY29kZU9mZnNldCwgbGluZU5vIH07Ci0gICAgICAgICAgICBsaW5lSW5m
by5hcHBlbmQoaW5mbyk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgdm9pZCBhZGRFeHByZXNzaW9u
SW5mbyh1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCwgaW50IGRpdm90LAorICAgICAgICBpbnQg
c3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGNvbHVt
bik7CiAKICAgICBib29sIGhhc0V4cHJlc3Npb25JbmZvKCkgeyByZXR1cm4gbV9leHByZXNzaW9u
SW5mby5zaXplKCk7IH0KIApAQCAtMzMxLDcgKzMyMiw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9j
b25zdGFudFJlZ2lzdGVycy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICBtX2Z1bmN0aW9uRGVjbHMu
c2hyaW5rVG9GaXQoKTsKICAgICAgICAgbV9mdW5jdGlvbkV4cHJzLnNocmlua1RvRml0KCk7Ci0g
ICAgICAgIG1fbGluZUluZm8uc2hyaW5rVG9GaXQoKTsKICAgICAgICAgbV9wcm9wZXJ0eUFjY2Vz
c0luc3RydWN0aW9ucy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICBtX2V4cHJlc3Npb25JbmZvLnNo
cmlua1RvRml0KCk7CiAKQEAgLTM0NSw2ICszMzUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBt
X3JhcmVEYXRhLT5tX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKICAg
ICAgICAgICAgIG1fcmFyZURhdGEtPm1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtU
b0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVz
LnNocmlua1RvRml0KCk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2V4cHJlc3Npb25JbmZv
RmF0UG9zaXRpb25zLnNocmlua1RvRml0KCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQ1Niw3
ICs0NDcsOCBAQCBwdWJsaWM6CiAKICAgICBpbnQgbGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0
KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKIAotICAgIHZvaWQgZXhwcmVzc2lvblJhbmdlRm9y
Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGludCYgZGl2b3QsIGludCYg
c3RhcnRPZmZzZXQsIGludCYgZW5kT2Zmc2V0KTsKKyAgICB2b2lkIGV4cHJlc3Npb25SYW5nZUZv
ckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBpbnQmIGRpdm90LAorICAg
ICAgICBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCwgdW5zaWduZWQmIGxpbmUsIHVu
c2lnbmVkJiBjb2x1bW4pOwogCiAgICAgdm9pZCByZWNvcmRQYXJzZShDb2RlRmVhdHVyZXMgZmVh
dHVyZXMsIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMsIHVuc2lnbmVkIGZpcnN0TGluZSwgdW5z
aWduZWQgbGluZUNvdW50KQogICAgIHsKQEAgLTUzNCw4ICs1MjYsNiBAQCBwcml2YXRlOgogCiAg
ICAgV3JpdGVCYXJyaWVyPFNoYXJlZFN5bWJvbFRhYmxlPiBtX3N5bWJvbFRhYmxlOwogCi0gICAg
VmVjdG9yPExpbmVJbmZvPiBtX2xpbmVJbmZvOwotCiAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX3By
b3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zOwogCiAjaWYgRU5BQkxFKEJZVEVDT0RFX0NPTU1FTlRT
KQpAQCAtNTY4LDYgKzU1OCw4IEBAIHB1YmxpYzoKICAgICAgICAgVmVjdG9yPFVubGlua2VkU2lt
cGxlSnVtcFRhYmxlPiBtX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIFZlY3Rv
cjxVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogICAg
ICAgICBSZWZQdHI8Q29kZUNhY2hlPiBtX2V2YWxDb2RlQ2FjaGU7CisKKyAgICAgICAgVmVjdG9y
PEV4cHJlc3Npb25SYW5nZUluZm86OkZhdFBvc2l0aW9uPiBtX2V4cHJlc3Npb25JbmZvRmF0UG9z
aXRpb25zOwogICAgIH07CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNp
b24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MDEsOSArMTcwMSw5IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnUKICAgICByZXR1cm4gcjA7CiB9CiAK
LVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbChSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2Fs
bEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1
bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMmIGNhbGxBcmd1bWVudHMsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCB1
bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBsaW5lU3RhcnQpCiB7Ci0gICAgcmV0dXJuIGVtaXRDYWxs
KG9wX2NhbGwsIGRzdCwgZnVuYywgZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2
b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpOworICAgIHJldHVybiBlbWl0Q2FsbChvcF9jYWxs
LCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90LCBzdGFy
dE9mZnNldCwgZW5kT2Zmc2V0LCBsaW5lLCBsaW5lU3RhcnQpOwogfQogCiB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpjcmVhdGVBcmd1bWVudHNJZk5lY2Vzc2FyeSgpCkBAIC0xNzM0LDkgKzE3MzQs
OSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpjcmVhdGVBY3RpdmF0aW9uCiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKG1fYWN0aXZhdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsKIH0KIAotUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRXZhbChSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIGZ1bmMsIENhbGxBcmd1bWVudHMmIGNhbGxBcmd1bWVudHMsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRXZhbChSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGZ1bmMsIENhbGxBcmd1bWVudHMmIGNhbGxBcmd1bWVudHMsIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBs
aW5lLCB1bnNpZ25lZCBsaW5lU3RhcnQpCiB7Ci0gICAgcmV0dXJuIGVtaXRDYWxsKG9wX2NhbGxf
ZXZhbCwgZHN0LCBmdW5jLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKKyAgICByZXR1cm4gZW1pdENhbGwob3BfY2FsbF9l
dmFsLCBkc3QsIGZ1bmMsIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3Qs
IHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGxpbmUsIGxpbmVTdGFydCk7CiB9CiAKIEV4cGVjdGVk
RnVuY3Rpb24gQnl0ZWNvZGVHZW5lcmF0b3I6OmV4cGVjdGVkRnVuY3Rpb25Gb3JJZGVudGlmaWVy
KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCkBAIC0xODE0LDcgKzE4MTQsNyBAQCBFeHBl
Y3RlZEZ1bmN0aW9uIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0CiAgICAgcmV0dXJuIGV4cGVjdGVk
RnVuY3Rpb247CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbChP
cGNvZGVJRCBvcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBl
Y3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMmIGNhbGxBcmd1bWVu
dHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKE9wY29kZUlEIG9w
Y29kZUlELCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rp
b24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50cywgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2ln
bmVkIGxpbmUsIHVuc2lnbmVkIGxpbmVTdGFydCkKIHsKICAgICBBU1NFUlQob3Bjb2RlSUQgPT0g
b3BfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF9jYWxsX2V2YWwpOwogICAgIEFTU0VSVChmdW5jLT5y
ZWZDb3VudCgpKTsKQEAgLTE4MzcsNyArMTgzNyw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0Q2FsbCgKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1
bWVudHMucHJvZmlsZUhvb2tSZWdpc3RlcigpLT5pbmRleCgpKTsKICAgICB9CiAKLSAgICBlbWl0
RXhwcmVzc2lvbkluZm8oZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpOworICAgIGVtaXRF
eHByZXNzaW9uSW5mbyhkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgbGluZSwgbGluZVN0
YXJ0KTsKIAogICAgIFJlZlB0cjxMYWJlbD4gZG9uZSA9IG5ld0xhYmVsKCk7CiAgICAgZXhwZWN0
ZWRGdW5jdGlvbiA9IGVtaXRFeHBlY3RlZEZ1bmN0aW9uU25pcHBldChkc3QsIGZ1bmMsIGV4cGVj
dGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRvbmUuZ2V0KCkpOwpAQCAtMTg3MSw3ICsxODcx
LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKAogICAgIHJldHVy
biBkc3Q7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbFZhcmFy
Z3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0aGlzUmVn
aXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJRCogZmlyc3RGcmVlUmVnaXN0
ZXIsIFJlZ2lzdGVySUQqIHByb2ZpbGVIb29rUmVnaXN0ZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRDYWxsVmFyYXJncyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJndW1lbnRzLCBS
ZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgUmVnaXN0ZXJJRCogcHJvZmlsZUhvb2tSZWdp
c3RlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQsIHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGxpbmVTdGFydCkKIHsKICAgICBpZiAobV9z
aG91bGRFbWl0UHJvZmlsZUhvb2tzKSB7CiAgICAgICAgIGVtaXRNb3ZlKHByb2ZpbGVIb29rUmVn
aXN0ZXIsIGZ1bmMpOwpAQCAtMTg3OSw3ICsxODc5LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRDYWxsVgogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvZmls
ZUhvb2tSZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgfQogICAgIAotICAgIGVtaXRFeHByZXNzaW9u
SW5mbyhkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCk7CisgICAgZW1pdEV4cHJlc3Npb25J
bmZvKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBsaW5lLCBsaW5lU3RhcnQpOwogCiAg
ICAgLy8gRW1pdCBjYWxsLgogICAgIGVtaXRPcGNvZGUob3BfY2FsbF92YXJhcmdzKTsKQEAgLTE5
MzEsNyArMTkzMSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VW5hcnkK
ICAgICByZXR1cm4gc3JjOwogfQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENvbnN0cnVjdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVu
Y3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50cywgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCitS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0cnVjdChSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwg
Q2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGxp
bmVTdGFydCkKIHsKICAgICBBU1NFUlQoZnVuYy0+cmVmQ291bnQoKSk7CiAKQEAgLTE5NTUsNyAr
MTk1NSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3QKICAgICBm
b3IgKGludCBpID0gMDsgaSA8IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7ICsraSkKICAg
ICAgICAgY2FsbEZyYW1lLmFwcGVuZChuZXdUZW1wb3JhcnkoKSk7CiAKLSAgICBlbWl0RXhwcmVz
c2lvbkluZm8oZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpOworICAgIGVtaXRFeHByZXNz
aW9uSW5mbyhkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgbGluZSwgbGluZVN0YXJ0KTsK
ICAgICAKICAgICBSZWZQdHI8TGFiZWw+IGRvbmUgPSBuZXdMYWJlbCgpOwogICAgIGV4cGVjdGVk
RnVuY3Rpb24gPSBlbWl0RXhwZWN0ZWRGdW5jdGlvblNuaXBwZXQoZHN0LCBmdW5jLCBleHBlY3Rl
ZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkb25lLmdldCgpKTsKQEAgLTIwMjUsNyArMjAyNSw3
IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQb3BTY29wZSgpCiAgICAgbV9keW5hbWlj
U2NvcGVEZXB0aC0tOwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVidWdIb29r
KERlYnVnSG9va0lEIGRlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUsIGlu
dCBjaGFyUG9zaXRpb24pCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVidWdIb29rKERl
YnVnSG9va0lEIGRlYnVnSG9va0lELCB1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RM
aW5lLCB1bnNpZ25lZCBjaGFyT2Zmc2V0LCB1bnNpZ25lZCBsaW5lU3RhcnQpCiB7CiAjaWYgRU5B
QkxFKERFQlVHX1dJVEhfQlJFQUtQT0lOVCkKICAgICBpZiAoZGVidWdIb29rSUQgIT0gRGlkUmVh
Y2hCcmVha3BvaW50KQpAQCAtMjAzNCw3ICsyMDM0LDggQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdERlYnVnSG9vayhEZQogICAgIGlmICghbV9zaG91bGRFbWl0RGVidWdIb29rcykKICAg
ICAgICAgcmV0dXJuOwogI2VuZGlmCi0gICAgZW1pdEV4cHJlc3Npb25JbmZvKGNoYXJQb3NpdGlv
biwgMCwgMCk7CisgICAgZW1pdEV4cHJlc3Npb25JbmZvKGNoYXJPZmZzZXQsIDAsIDAsIGZpcnN0
TGluZSwgbGluZVN0YXJ0KTsKKyAgICB1bnNpZ25lZCBjaGFyUG9zaXRpb24gPSBjaGFyT2Zmc2V0
IC0gbV9zY29wZU5vZGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCk7CiAgICAgZW1pdE9wY29kZShv
cF9kZWJ1Zyk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRlYnVnSG9va0lEKTsKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoZmlyc3RMaW5lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlz
aW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzM5LDcgKzMzOSw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICAvLyBOb2RlOjplbWl0Q29kZSBhc3N1bWVz
IHRoYXQgZHN0LCBpZiBwcm92aWRlZCwgaXMgZWl0aGVyIGEgbG9jYWwgb3IgYSByZWZlcmVuY2Vk
IHRlbXBvcmFyeS4KICAgICAgICAgICAgIEFTU0VSVCghZHN0IHx8IGRzdCA9PSBpZ25vcmVkUmVz
dWx0KCkgfHwgIWRzdC0+aXNUZW1wb3JhcnkoKSB8fCBkc3QtPnJlZkNvdW50KCkpOwotICAgICAg
ICAgICAgYWRkTGluZUluZm8obi0+bGluZU5vKCkpOwogICAgICAgICAgICAgaWYgKCFtX3N0YWNr
LmlzU2FmZVRvUmVjdXJzZSgpKSB7CiAgICAgICAgICAgICAgICAgZW1pdFRocm93RXhwcmVzc2lv
blRvb0RlZXBFeGNlcHRpb24oKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0zNTYsNyAr
MzU1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIE5vZGU6
OmVtaXRDb2RlIGFzc3VtZXMgdGhhdCBkc3QsIGlmIHByb3ZpZGVkLCBpcyBlaXRoZXIgYSBsb2Nh
bCBvciBhIHJlZmVyZW5jZWQgdGVtcG9yYXJ5LgogICAgICAgICAgICAgQVNTRVJUKCFkc3QgfHwg
ZHN0ID09IGlnbm9yZWRSZXN1bHQoKSB8fCAhZHN0LT5pc1RlbXBvcmFyeSgpIHx8IGRzdC0+cmVm
Q291bnQoKSk7Ci0gICAgICAgICAgICBhZGRMaW5lSW5mbyhuLT5saW5lTm8oKSk7CiAgICAgICAg
ICAgICBpZiAoIW1fc3RhY2suaXNTYWZlVG9SZWN1cnNlKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGVtaXRUaHJvd0V4cHJlc3Npb25Ub29EZWVwRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBy
ZXR1cm4gbi0+ZW1pdEJ5dGVjb2RlKCp0aGlzLCBkc3QpOwpAQCAtMzY5LDcgKzM2Nyw2IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQo
RXhwcmVzc2lvbk5vZGUqIG4sIExhYmVsKiB0cnVlVGFyZ2V0LCBMYWJlbCogZmFsc2VUYXJnZXQs
IEZhbGxUaHJvdWdoTW9kZSBmYWxsVGhyb3VnaE1vZGUpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGFkZExpbmVJbmZvKG4tPmxpbmVObygpKTsKICAgICAgICAgICAgIGlmICghbV9zdGFjay5pc1Nh
ZmVUb1JlY3Vyc2UoKSkgewogICAgICAgICAgICAgICAgIGVtaXRUaHJvd0V4cHJlc3Npb25Ub29E
ZWVwRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzc4LDMzICszNzUs
MjcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBuLT5lbWl0Qnl0ZWNvZGVJbkNvbmRp
dGlvbkNvbnRleHQoKnRoaXMsIHRydWVUYXJnZXQsIGZhbHNlVGFyZ2V0LCBmYWxsVGhyb3VnaE1v
ZGUpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBlbWl0RXhwcmVzc2lvbkluZm8odW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAg
ICAgIHZvaWQgZW1pdEV4cHJlc3Npb25JbmZvKGludCBkaXZvdCwgaW50IHN0YXJ0T2Zmc2V0LCBp
bnQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBsaW5lLCBpbnQgbGluZVN0YXJ0KQogICAgICAgICB7Ci0g
ICAgICAgICAgICBkaXZvdCAtPSBtX3Njb3BlTm9kZS0+c291cmNlKCkuc3RhcnRPZmZzZXQoKTsK
LSAgICAgICAgICAgIGlmIChkaXZvdCA+IEV4cHJlc3Npb25SYW5nZUluZm86Ok1heERpdm90KSB7
Ci0gICAgICAgICAgICAgICAgLy8gT3ZlcmZsb3cgaGFzIG9jY3VycmVkLCB3ZSBjYW4gb25seSBn
aXZlIGxpbmUgbnVtYmVyIGluZm8gZm9yIGVycm9ycyBmb3IgdGhpcyByZWdpb24KLSAgICAgICAg
ICAgICAgICBkaXZvdCA9IDA7Ci0gICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQgPSAwOwotICAg
ICAgICAgICAgICAgIGVuZE9mZnNldCA9IDA7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0
T2Zmc2V0ID4gRXhwcmVzc2lvblJhbmdlSW5mbzo6TWF4T2Zmc2V0KSB7Ci0gICAgICAgICAgICAg
ICAgLy8gSWYgdGhlIHN0YXJ0IG9mZnNldCBpcyBvdXQgb2YgYm91bmRzIHdlIGNsZWFyIGJvdGgg
b2Zmc2V0cwotICAgICAgICAgICAgICAgIC8vIHNvIHdlIG9ubHkgZ2V0IHRoZSBkaXZvdCBtYXJr
ZXIuICBFcnJvciBtZXNzYWdlIHdpbGwgaGF2ZSB0byBiZSByZWR1Y2VkCi0gICAgICAgICAgICAg
ICAgLy8gdG8gbGluZSBhbmQgY2hhclBvc2l0aW9uIG51bWJlci4KLSAgICAgICAgICAgICAgICBz
dGFydE9mZnNldCA9IDA7Ci0gICAgICAgICAgICAgICAgZW5kT2Zmc2V0ID0gMDsKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAoZW5kT2Zmc2V0ID4gRXhwcmVzc2lvblJhbmdlSW5mbzo6TWF4T2Zmc2V0
KSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIGVuZCBvZmZzZXQgaXMgb25seSB1c2VkIGZvciBh
ZGRpdGlvbmFsIGNvbnRleHQsIGFuZCBpcyBtdWNoIG1vcmUgbGlrZWx5Ci0gICAgICAgICAgICAg
ICAgLy8gdG8gb3ZlcmZsb3cgKGVnLiBmdW5jdGlvbiBjYWxsIGFyZ3VtZW50cykgc28gd2UgYXJl
IHdpbGxpbmcgdG8gZHJvcCBpdCB3aXRob3V0Ci0gICAgICAgICAgICAgICAgLy8gZHJvcHBpbmcg
dGhlIHJlc3Qgb2YgdGhlIHJhbmdlLgotICAgICAgICAgICAgICAgIGVuZE9mZnNldCA9IDA7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEV4cHJlc3Npb25SYW5nZUlu
Zm8gaW5mbzsKLSAgICAgICAgICAgIGluZm8uaW5zdHJ1Y3Rpb25PZmZzZXQgPSBpbnN0cnVjdGlv
bnMoKS5zaXplKCk7Ci0gICAgICAgICAgICBpbmZvLmRpdm90UG9pbnQgPSBkaXZvdDsKLSAgICAg
ICAgICAgIGluZm8uc3RhcnRPZmZzZXQgPSBzdGFydE9mZnNldDsKLSAgICAgICAgICAgIGluZm8u
ZW5kT2Zmc2V0ID0gZW5kT2Zmc2V0OwotICAgICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEV4cHJl
c3Npb25JbmZvKGluZm8pOworICAgICAgICAgICAgaW50IHNvdXJjZU9mZnNldCA9IG1fc2NvcGVO
b2RlLT5zb3VyY2UoKS5zdGFydE9mZnNldCgpOworICAgICAgICAgICAgdW5zaWduZWQgZmlyc3RM
aW5lID0gbV9zY29wZU5vZGUtPnNvdXJjZSgpLmZpcnN0TGluZSgpOworCisgICAgICAgICAgICBB
U1NFUlQoZGl2b3QgPj0gbGluZVN0YXJ0KTsKKyAgICAgICAgICAgIEFTU0VSVChkaXZvdCA+PSBz
b3VyY2VPZmZzZXQpOworICAgICAgICAgICAgZGl2b3QgLT0gc291cmNlT2Zmc2V0OworCisgICAg
ICAgICAgICBpZiAobGluZVN0YXJ0ID4gc291cmNlT2Zmc2V0KQorICAgICAgICAgICAgICAgIGxp
bmVTdGFydCAtPSBzb3VyY2VPZmZzZXQ7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgbGluZVN0YXJ0ID0gMDsKKworICAgICAgICAgICAgQVNTRVJUKGxpbmUgPj0gZmlyc3RMaW5l
KTsKKyAgICAgICAgICAgIGxpbmUgLT0gZmlyc3RMaW5lOworCisgICAgICAgICAgICB1bnNpZ25l
ZCBpbnN0cnVjdGlvbk9mZnNldCA9IGluc3RydWN0aW9ucygpLnNpemUoKTsKKyAgICAgICAgICAg
IEFTU0VSVChkaXZvdCA+PSBsaW5lU3RhcnQpOworICAgICAgICAgICAgdW5zaWduZWQgY29sdW1u
ID0gZGl2b3QgLSBsaW5lU3RhcnQ7CisgICAgICAgICAgICBtX2NvZGVCbG9jay0+YWRkRXhwcmVz
c2lvbkluZm8oaW5zdHJ1Y3Rpb25PZmZzZXQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0
LCBsaW5lLCBjb2x1bW4pOwogICAgICAgICB9CiAKICAgICAgICAgQUxXQVlTX0lOTElORSBib29s
IGxlZnRIYW5kU2lkZU5lZWRzQ29weShib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGJvb2wgcmln
aHRJc1B1cmUpCkBAIC00ODAsMTUgKzQ3MSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBlbWl0UHV0R2V0dGVyU2V0dGVyKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiBnZXR0ZXIsIFJlZ2lzdGVySUQqIHNldHRlcik7CiAg
ICAgICAgIAogICAgICAgICBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb25Gb3JJZGVu
dGlmaWVyKGNvbnN0IElkZW50aWZpZXImKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGwo
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uLCBDYWxs
QXJndW1lbnRzJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbEV2YWwoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBDYWxsQXJndW1lbnRzJiwgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwotICAgICAgICBSZWdp
c3RlcklEKiBlbWl0Q2FsbFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5j
LCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0
ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHByb2ZpbGVIb29rUmVnaXN0ZXIs
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiwgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGxp
bmUsIHVuc2lnbmVkIGxpbmVTdGFydCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsRXZh
bChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIENhbGxBcmd1bWVudHMmLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5z
aWduZWQgbGluZSwgdW5zaWduZWQgbGluZVN0YXJ0KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dENhbGxWYXJhcmdzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJ
RCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0
RnJlZVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBwcm9maWxlSG9va1JlZ2lzdGVyLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQg
bGluZSwgdW5zaWduZWQgbGluZVN0YXJ0KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWRW
YXJhcmdzKFJlZ2lzdGVySUQqIGFyZ0NvdW50RHN0LCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIs
IFJlZ2lzdGVySUQqIGFyZ3MpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXR1cm4oUmVn
aXN0ZXJJRCogc3JjKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEVuZChSZWdpc3RlcklEKiBz
cmMpIHsgcmV0dXJuIGVtaXRVbmFyeU5vRHN0T3Aob3BfZW5kLCBzcmMpOyB9CiAKLSAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdENvbnN0cnVjdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1
bmMsIEV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMmLCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRDb25zdHJ1Y3QoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBl
Y3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGxp
bmVTdGFydCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRTdHJjYXQoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBzcmMsIGludCBjb3VudCk7CiAgICAgICAgIHZvaWQgZW1pdFRvUHJpbWl0
aXZlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKTsKIApAQCAtNTI0LDcgKzUxNSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHVzaFdpdGhTY29w
ZShSZWdpc3RlcklEKiBzY29wZSk7CiAgICAgICAgIHZvaWQgZW1pdFBvcFNjb3BlKCk7CiAKLSAg
ICAgICAgdm9pZCBlbWl0RGVidWdIb29rKERlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQg
bGFzdExpbmUsIGludCBjaGFyUG9zaXRpb24pOworICAgICAgICB2b2lkIGVtaXREZWJ1Z0hvb2so
RGVidWdIb29rSUQsIHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIHVuc2ln
bmVkIGNoYXJPZmZzZXQsIHVuc2lnbmVkIGxpbmVTdGFydCk7CiAKICAgICAgICAgaW50IHNjb3Bl
RGVwdGgoKSB7IHJldHVybiBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9maW5hbGx5RGVwdGg7IH0K
ICAgICAgICAgYm9vbCBoYXNGaW5hbGlzZXIoKSB7IHJldHVybiBtX2ZpbmFsbHlEZXB0aCAhPSAw
OyB9CkBAIC01OTIsNyArNTgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIChpLmUu
ICJPYmplY3QoKSIgaXMgaWRlbnRpY2FsIHRvICJuZXcgT2JqZWN0KCkiKS4KICAgICAgICAgRXhw
ZWN0ZWRGdW5jdGlvbiBlbWl0RXhwZWN0ZWRGdW5jdGlvblNuaXBwZXQoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiwgTGFi
ZWwqIGRvbmUpOwogICAgICAgICAKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGwoT3Bjb2Rl
SUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRGdW5jdGlvbiwg
Q2FsbEFyZ3VtZW50cyYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGwoT3Bjb2RlSUQs
IFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRGdW5jdGlvbiwgQ2Fs
bEFyZ3VtZW50cyYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBsaW5lU3RhcnQpOwogCiAgICAg
ICAgIFJlZ2lzdGVySUQqIG5ld1JlZ2lzdGVyKCk7CiAKQEAgLTY0NiwxMSArNjM3LDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIGJvZHkpOwogICAgICAgICB9
CiAKLSAgICAgICAgdm9pZCBhZGRMaW5lSW5mbyh1bnNpZ25lZCBsaW5lTm8pCi0gICAgICAgIHsK
LSAgICAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRMaW5lSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXpl
KCksIGxpbmVObyAtIG1fc2NvcGVOb2RlLT5maXJzdExpbmUoKSk7Ci0gICAgICAgIH0KLQogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0SW5pdExhenlSZWdpc3RlcihSZWdpc3RlcklEKik7CiAKICAg
ICBwdWJsaWM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAxNTE5MjApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg3LDcgKzg3LDcgQEAgdm9pZCBFeHByZXNzaW9uTm9kZTo6ZW1pdEJ5dGVjb2RlSW5Db25kaQog
CiBSZWdpc3RlcklEKiBUaHJvd2FibGVFeHByZXNzaW9uRGF0YTo6ZW1pdFRocm93UmVmZXJlbmNl
RXJyb3IoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQogewotICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgc3RhcnRPZmZz
ZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2
b3QoKSwgZGl2b3RTdGFydE9mZnNldCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwg
ZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1JlZmVyZW5jZUVycm9y
KG1lc3NhZ2UpOwogICAgIHJldHVybiBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiB9CkBAIC0x
NTMsNyArMTUzLDggQEAgUmVnaXN0ZXJJRCogUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeQog
ICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBs
b2NhbCk7CiAgICAgfQogICAgIAotICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8obV9z
dGFydE9mZnNldCArIG1faWRlbnQubGVuZ3RoKCksIG1faWRlbnQubGVuZ3RoKCksIDApOworICAg
IHVuc2lnbmVkIGRpdm90ID0gbV9zdGFydE9mZnNldCArIG1faWRlbnQubGVuZ3RoKCk7CisgICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCwgbV9pZGVudC5sZW5ndGgoKSwgMCwg
bV9kaXZvdExpbmUsIG1fZGl2b3RMaW5lU3RhcnQpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1p
dFJlc29sdmUoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgcmVzb2x2ZVJlc3VsdCwg
bV9pZGVudCk7CiB9CiAKQEAgLTIwMSwxNSArMjAyLDE2IEBAIGJvb2wgQXJyYXlOb2RlOjppc1Np
bXBsZUFycmF5KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQXJndW1lbnRMaXN0Tm9k
ZSogQXJyYXlOb2RlOjp0b0FyZ3VtZW50TGlzdChWTSogdm0sIGludCBsaW5lTnVtYmVyLCBpbnQg
Y2hhclBvc2l0aW9uKSBjb25zdAorQXJndW1lbnRMaXN0Tm9kZSogQXJyYXlOb2RlOjp0b0FyZ3Vt
ZW50TGlzdChWTSogdm0sIGludCBsaW5lTnVtYmVyLCBpbnQgc3RhcnRQb3NpdGlvbiwgdW5zaWdu
ZWQgc291cmNlT2Zmc2V0KSBjb25zdAogewogICAgIEFTU0VSVCghbV9lbGlzaW9uICYmICFtX29w
dGlvbmFsKTsKICAgICBFbGVtZW50Tm9kZSogcHRyID0gbV9lbGVtZW50OwogICAgIGlmICghcHRy
KQogICAgICAgICByZXR1cm4gMDsKLSAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb247CisgICAg
SlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHNvdXJjZU9mZnNldCk7CiAgICAgbG9jYXRpb24ubGlu
ZSA9IGxpbmVOdW1iZXI7Ci0gICAgbG9jYXRpb24uY2hhclBvc2l0aW9uID0gY2hhclBvc2l0aW9u
OworICAgIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0ID0gc3RhcnRQb3NpdGlvbjsKKyAgICBsb2NhdGlv
bi5zb3VyY2VPZmZzZXQgPSBzb3VyY2VPZmZzZXQ7CiAgICAgQXJndW1lbnRMaXN0Tm9kZSogaGVh
ZCA9IG5ldyAodm0pIEFyZ3VtZW50TGlzdE5vZGUobG9jYXRpb24sIHB0ci0+dmFsdWUoKSk7CiAg
ICAgQXJndW1lbnRMaXN0Tm9kZSogdGFpbCA9IGhlYWQ7CiAgICAgcHRyID0gcHRyLT5uZXh0KCk7
CkBAIC0zMjQsMTMgKzMyNiwxMyBAQCBSZWdpc3RlcklEKiBCcmFja2V0QWNjZXNzb3JOb2RlOjpl
bWl0Qnl0CiAgICAgICAgICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRp
Y19jYXN0PFJlc29sdmVOb2RlKj4obV9iYXNlKS0+aWRlbnRpZmllcigpKQogICAgICAgICAmJiAh
Z2VuZXJhdG9yLnN5bWJvbFRhYmxlKCkuc2xvd0FyZ3VtZW50cygpKSB7CiAgICAgICAgIFJlZ2lz
dGVySUQqIHByb3BlcnR5ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fc3Vic2NyaXB0KTsKLSAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBl
bmRPZmZzZXQoKSk7ICAgIAorICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCks
IGRpdm90TGluZVN0YXJ0KCkpOwogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRBcmd1
bWVudEJ5VmFsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGdlbmVyYXRvci51bmNo
ZWNrZWRSZWdpc3RlckZvckFyZ3VtZW50cygpLCBwcm9wZXJ0eSk7CiAgICAgfQogCiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUo
bV9iYXNlLCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBtX3N1YnNjcmlwdC0+aXNQdXJlKGdl
bmVyYXRvcikpOwogICAgIFJlZ2lzdGVySUQqIHByb3BlcnR5ID0gZ2VuZXJhdG9yLmVtaXROb2Rl
KG1fc3Vic2NyaXB0KTsKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCks
IHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Np
b25JbmZvKGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2
b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdl
dEJ5VmFsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHByb3Bl
cnR5KTsKIH0KIApAQCAtMzQ0LDEzICszNDYsMTMgQEAgUmVnaXN0ZXJJRCogRG90QWNjZXNzb3JO
b2RlOjplbWl0Qnl0ZWNvZAogICAgICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZU5vZGUgPSBzdGF0
aWNfY2FzdDxSZXNvbHZlTm9kZSo+KG1fYmFzZSk7CiAgICAgICAgIGlmICghZ2VuZXJhdG9yLndp
bGxSZXNvbHZlVG9Bcmd1bWVudHMocmVzb2x2ZU5vZGUtPmlkZW50aWZpZXIoKSkpCiAgICAgICAg
ICAgICBnb3RvIG5vbkFyZ3VtZW50c1BhdGg7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8oZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOyAgICAKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0
KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAg
ICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QXJndW1lbnRzTGVuZ3RoKGdlbmVyYXRvci5m
aW5hbERlc3RpbmF0aW9uKGRzdCksIGdlbmVyYXRvci51bmNoZWNrZWRSZWdpc3RlckZvckFyZ3Vt
ZW50cygpKTsKICAgICB9CiAKIG5vbkFyZ3VtZW50c1BhdGg6CiAgICAgUmVnaXN0ZXJJRCogYmFz
ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwotICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8oZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNldCgpLCBkaXZv
dEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgcmV0dXJu
IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBi
YXNlLCBtX2lkZW50KTsKIH0KIApAQCAtMzczLDcgKzM3NSw3IEBAIFJlZ2lzdGVySUQqIE5ld0V4
cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnkKICAgICAgICAgZXhwZWN0ZWRGdW5jdGlvbiA9IE5vRXhw
ZWN0ZWRGdW5jdGlvbjsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuYyA9IGdlbmVyYXRvci5l
bWl0Tm9kZShtX2V4cHIpOwogICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0
b3IsIG1fYXJncyk7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Q29uc3RydWN0KGdlbmVyYXRv
ci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCksIGZ1bmMuZ2V0KCksIGV4cGVjdGVkRnVu
Y3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgp
KTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDb25zdHJ1Y3QoZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb25Pcklnbm9yZWQoZHN0KSwgZnVuYy5nZXQoKSwgZXhwZWN0ZWRGdW5jdGlvbiwgY2Fs
bEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNldCgpLCBkaXZvdEVuZE9mZnNldCgp
LCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiB9CiAKIGlubGluZSBDYWxsQXJndW1l
bnRzOjpDYWxsQXJndW1lbnRzKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIEFyZ3VtZW50
c05vZGUqIGFyZ3VtZW50c05vZGUpCkBAIC00MDgsOSArNDEwLDkgQEAgUmVnaXN0ZXJJRCogRXZh
bEZ1bmN0aW9uQ2FsbE5vZGU6OmVtaXRCeQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5j
ID0gZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpOwogICAgIENhbGxBcmd1bWVudHMgY2Fs
bEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhkaXZvdCgpIC0gc3RhcnRPZmZzZXQoKSArIDQsIDQsIDApOworICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSAtIGRpdm90U3RhcnRPZmZzZXQoKSArIDQsIDQs
IDAsIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFJl
c29sdmVXaXRoVGhpcyhjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBmdW5jLmdldCgpLCBn
ZW5lcmF0b3IucmVzb2x2ZShnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmV2YWwpLCBnZW5lcmF0
b3IucHJvcGVydHlOYW1lcygpLmV2YWwpOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdENhbGxF
dmFsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuYy5nZXQoKSksIGZ1bmMuZ2V0
KCksIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsK
KyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsRXZhbChnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbihkc3QsIGZ1bmMuZ2V0KCkpLCBmdW5jLmdldCgpLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgp
LCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZv
dExpbmVTdGFydCgpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1
bmN0aW9uQ2FsbFZhbHVlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBA
IC00MjAsNyArNDIyLDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0
QgogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhw
cik7CiAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsK
ICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNV
bmRlZmluZWQoKSk7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbChnZW5lcmF0b3IuZmlu
YWxEZXN0aW5hdGlvbk9ySWdub3JlZChkc3QsIGZ1bmMuZ2V0KCkpLCBmdW5jLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVu
ZE9mZnNldCgpKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsKGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVuYy5nZXQoKSksIGZ1bmMuZ2V0KCksIE5vRXhw
ZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNldCgp
LCBkaXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiB9CiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbkNhbGxSZXNvbHZlTm9k
ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00MzYsNyArNDM4LDcgQEAg
UmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaQogICAgICAgICBnZW5lcmF0
b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7
CiAgICAgICAgIC8vIFRoaXMgcGFzc2VzIE5vRXhwZWN0ZWRGdW5jdGlvbiBiZWNhdXNlIHdlIGV4
cGVjdCB0aGF0IGlmIHRoZSBmdW5jdGlvbiBpcyBpbiBhCiAgICAgICAgIC8vIGxvY2FsIHZhcmlh
YmxlLCB0aGVuIGl0J3Mgbm90IG9uZSBvZiBvdXIgYnVpbHQtaW4gY29uc3RydWN0b3JzLgotICAg
ICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9u
T3JJZ25vcmVkKGRzdCwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSksIGZ1bmMuZ2V0KCks
IE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgc3RhcnRPZmZzZXQo
KSwgZW5kT2Zmc2V0KCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsKGdlbmVy
YXRvci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgY2FsbEFyZ3VtZW50cy50aGlzUmVn
aXN0ZXIoKSksIGZ1bmMuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywg
ZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNldCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUo
KSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgfQogCiAgICAgaWYgKHJlc29sdmVSZXN1bHQuaXNT
dGF0aWMoKSkgewpAQCAtNDQ0LDE2ICs0NDYsMTYgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxs
UmVzb2x2ZU5vZGU6OmVtaQogICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2Vu
ZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEdldFN0YXRpY1ZhcihmdW5j
LmdldCgpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRM
b2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwotICAgICAg
ICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uT3JJ
Z25vcmVkKGRzdCwgZnVuYy5nZXQoKSksIGZ1bmMuZ2V0KCksIGV4cGVjdGVkRnVuY3Rpb24sIGNh
bGxBcmd1bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICAg
ICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbk9y
SWdub3JlZChkc3QsIGZ1bmMuZ2V0KCkpLCBmdW5jLmdldCgpLCBleHBlY3RlZEZ1bmN0aW9uLCBj
YWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0
KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICB9CiAKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gZnVuYyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBDYWxsQXJn
dW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgIGludCBpZGVudGlm
aWVyU3RhcnQgPSBkaXZvdCgpIC0gc3RhcnRPZmZzZXQoKTsKKyAgICBpbnQgaWRlbnRpZmllclN0
YXJ0ID0gZGl2b3QoKSAtIGRpdm90U3RhcnRPZmZzZXQoKTsKIAotICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oaWRlbnRpZmllclN0YXJ0ICsgbV9pZGVudC5sZW5ndGgoKSwgbV9pZGVu
dC5sZW5ndGgoKSwgMCk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhpZGVudGlm
aWVyU3RhcnQgKyBtX2lkZW50Lmxlbmd0aCgpLCBtX2lkZW50Lmxlbmd0aCgpLCAwLCBkaXZvdExp
bmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRSZXNvbHZlV2l0aFRo
aXMoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgZnVuYy5nZXQoKSwgcmVzb2x2ZVJlc3Vs
dCwgbV9pZGVudCk7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbChnZW5lcmF0b3IuZmlu
YWxEZXN0aW5hdGlvbk9ySWdub3JlZChkc3QsIGZ1bmMuZ2V0KCkpLCBmdW5jLmdldCgpLCBleHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRP
ZmZzZXQoKSk7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbChnZW5lcmF0b3IuZmluYWxE
ZXN0aW5hdGlvbk9ySWdub3JlZChkc3QsIGZ1bmMuZ2V0KCkpLCBmdW5jLmdldCgpLCBleHBlY3Rl
ZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRp
dm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKIH0KIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ2MiwxMSArNDY0LDExIEBAIFJl
Z2lzdGVySUQqIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjplbWkKIHsKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIFJlZ2lzdGVy
SUQqIHByb3BlcnR5ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fc3Vic2NyaXB0KTsKLSAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCkgLSBtX3N1YmV4cHJlc3Npb25EaXZvdE9m
ZnNldCwgc3RhcnRPZmZzZXQoKSAtIG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0LCBtX3N1YmV4
cHJlc3Npb25FbmRPZmZzZXQpOworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3Vi
ZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFydE9mZnNldCgpLCBzdWJleHByZXNz
aW9uRW5kT2Zmc2V0KCksIHN1YmV4cHJlc3Npb25MaW5lKCksIHN1YmV4cHJlc3Npb25MaW5lU3Rh
cnQoKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRH
ZXRCeVZhbChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHByb3Bl
cnR5KTsKICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3Mp
OwogICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBi
YXNlLmdldCgpKTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsKGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVuY3Rpb24uZ2V0KCkpLCBmdW5jdGlvbi5nZXQo
KSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBzdGFydE9mZnNl
dCgpLCBlbmRPZmZzZXQoKSk7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbChnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZChkc3QsIGZ1bmN0aW9uLmdldCgpKSwgZnVuY3Rp
b24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2
b3RTdGFydE9mZnNldCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5l
U3RhcnQoKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlv
bkNhbGxEb3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ3Niw5
ICs0NzgsOSBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0CiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uID0gZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihk
c3QpOwogICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7
CiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG1f
YmFzZSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpIC0gbV9zdWJl
eHByZXNzaW9uRGl2b3RPZmZzZXQsIHN0YXJ0T2Zmc2V0KCkgLSBtX3N1YmV4cHJlc3Npb25EaXZv
dE9mZnNldCwgbV9zdWJleHByZXNzaW9uRW5kT2Zmc2V0KTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnRPZmZz
ZXQoKSwgc3ViZXhwcmVzc2lvbkVuZE9mZnNldCgpLCBzdWJleHByZXNzaW9uTGluZSgpLCBzdWJl
eHByZXNzaW9uTGluZVN0YXJ0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChmdW5jdGlv
bi5nZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9pZGVudCk7Ci0gICAgcmV0
dXJuIGdlbmVyYXRvci5lbWl0Q2FsbChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbk9ySWdub3Jl
ZChkc3QsIGZ1bmN0aW9uLmdldCgpKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlv
biwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOwor
ICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdENhbGwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb25P
cklnbm9yZWQoZHN0LCBmdW5jdGlvbi5nZXQoKSksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVk
RnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2
b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogfQogCiBSZWdp
c3RlcklEKiBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKQEAgLTQ4Niw3ICs0ODgsNyBAQCBS
ZWdpc3RlcklEKiBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pCiAgICAgUmVmUHRyPExhYmVs
PiByZWFsQ2FsbCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIFJlZlB0cjxMYWJlbD4gZW5k
ID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBn
ZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKGRpdm90KCkgLSBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNldCwgc3RhcnRPZmZzZXQoKSAt
IG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0LCBtX3N1YmV4cHJlc3Npb25FbmRPZmZzZXQpOwor
ICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1
YmV4cHJlc3Npb25TdGFydE9mZnNldCgpLCBzdWJleHByZXNzaW9uRW5kT2Zmc2V0KCksIHN1YmV4
cHJlc3Npb25MaW5lKCksIHN1YmV4cHJlc3Npb25MaW5lU3RhcnQoKSk7CiAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1w
RGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbk9ySWdub3JlZChkc3QsIGZ1bmN0aW9uLmdldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdEp1
bXBJZk5vdEZ1bmN0aW9uQ2FsbChmdW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOwpAQCAt
NDk4LDcgKzUwMCw3IEBAIFJlZ2lzdGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWkK
ICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3Iu
ZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKICAg
ICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7
CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChm
aW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhw
ZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5k
T2Zmc2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKGZpbmFsRGVzdGluYXRp
b25Pcklnbm9yZWQuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zm
c2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOwogCiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5v
ZGUgPSBvbGRMaXN0OwpAQCAtNTA2LDcgKzUwOCw3IEBAIFJlZ2lzdGVySUQqIENhbGxGdW5jdGlv
bkNhbGxEb3ROb2RlOjplbWkKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVu
Y3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3Qp
LCBiYXNlLmdldCgpKTsKICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhn
ZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFy
Z3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdENhbGwoZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZC5nZXQoKSwgcmVhbEZ1bmN0
aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIHN0
YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bChmaW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5v
RXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNl
dCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKICAgICAgICAgfQogICAg
IH0KQEAgLTUxNCw3ICs1MTYsNyBAQCBSZWdpc3RlcklEKiBDYWxsRnVuY3Rpb25DYWxsRG90Tm9k
ZTo6ZW1pCiAgICAgewogICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJh
dG9yLCBtX2FyZ3MpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy50
aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChm
aW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZz
ZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChmaW5hbERlc3RpbmF0aW9uT3JJZ25v
cmVkLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1l
bnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90
TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICB9CiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJl
bChlbmQuZ2V0KCkpOwogICAgIHJldHVybiBmaW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkLmdldCgp
OwpAQCAtNTM2LDcgKzUzOCw3IEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9k
ZTo6ZW0KICAgICBSZWZQdHI8TGFiZWw+IHJlYWxDYWxsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7
CiAgICAgUmVmUHRyPExhYmVsPiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwotICAgIGdl
bmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSAtIG1fc3ViZXhwcmVzc2lvbkRpdm90
T2Zmc2V0LCBzdGFydE9mZnNldCgpIC0gbV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQsIG1fc3Vi
ZXhwcmVzc2lvbkVuZE9mZnNldCk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhz
dWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0T2Zmc2V0KCksIHN1YmV4cHJl
c3Npb25FbmRPZmZzZXQoKSwgc3ViZXhwcmVzc2lvbkxpbmUoKSwgc3ViZXhwcmVzc2lvbkxpbmVT
dGFydCgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1p
dEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBtX2lk
ZW50KTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZCA9
IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVuY3Rpb24uZ2V0KCkp
OwogICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShmdW5jdGlvbi5nZXQo
KSwgcmVhbENhbGwuZ2V0KCkpOwpAQCAtNTQ3LDI0ICs1NDksMjQgQEAgUmVnaXN0ZXJJRCogQXBw
bHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbQogICAgICAgICAgICAgICAgIGlmIChtX2FyZ3MtPm1f
bGlzdE5vZGUtPm1fbmV4dCkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9hcmdzLT5t
X2xpc3ROb2RlLT5tX25leHQtPm1fZXhwci0+aXNTaW1wbGVBcnJheSgpKTsKICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9uZXh0KTsKLSAg
ICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gc3RhdGljX2Nhc3Q8QXJyYXlO
b2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwciktPnRvQXJndW1lbnRMaXN0
KGdlbmVyYXRvci52bSgpLCAwLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xp
c3ROb2RlID0gc3RhdGljX2Nhc3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25l
eHQtPm1fZXhwciktPnRvQXJndW1lbnRMaXN0KGdlbmVyYXRvci52bSgpLCAwLCAwLCAwKTsKICAg
ICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVy
YXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkp
OwogICAgICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJh
dG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2Fs
bEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKGZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQuZ2V0
KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRz
LCBkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0Q2FsbChmaW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkLmdldCgpLCBy
ZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2
b3QoKSwgZGl2b3RTdGFydE9mZnNldCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwg
ZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7
CiAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBn
ZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdl
dCgpKTsKICAgICAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdl
bmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2Rl
KGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7Ci0gICAgICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChmaW5hbERlc3RpbmF0aW9uT3JJZ25vcmVk
LmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3Vt
ZW50cywgZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwoZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZC5nZXQo
KSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMs
IGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5l
KCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0OwogICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9y
LmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAg
ICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9h
cmdzKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50
aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRDYWxsKGZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQuZ2V0KCksIHJlYWxGdW5jdGlvbi5n
ZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBzdGFydE9m
ZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxs
KGZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0
KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3Mt
Pm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOwpAQCAtNTg1LDcgKzU4
Nyw3IEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW0KICAgICAgICAg
ICAgIHdoaWxlICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkpCiAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7CiAKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
Q2FsbFZhcmFyZ3MoZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZC5nZXQoKSwgcmVhbEZ1bmN0aW9u
LmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3NSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpLCBwcm9maWxlSG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgpLCBzdGFy
dE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxW
YXJhcmdzKGZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQo
KSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFy
dE9mZnNldCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQo
KSk7CiAgICAgICAgIH0KICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CiAg
ICAgfQpAQCAtNTkzLDcgKzU5NSw3IEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90
Tm9kZTo6ZW0KICAgICB7CiAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5l
cmF0b3IsIG1fYXJncyk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRz
LnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxs
KGZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVj
dGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9m
ZnNldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKGZpbmFsRGVzdGluYXRpb25Pckln
bm9yZWQuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2
b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgIH0KICAgICBnZW5lcmF0b3IuZW1pdExh
YmVsKGVuZC5nZXQoKSk7CiAgICAgcmV0dXJuIGZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQuZ2V0
KCk7CkBAIC02NDEsNyArNjQzLDcgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXRSZXNv
bHZlKEJ5dAogICAgICAgICByZXR1cm4gb2xkVmFsdWUuZ2V0KCk7CiAgICAgfQogCi0gICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZz
ZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0
YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFy
dCgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCk7CiAgICAgTm9ubG9jYWxSZXNvbHZlSW5mbyByZXNvbHZlSW5mbzsKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVdpdGhCYXNlRm9yUHV0KGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCksIHJlc29sdmVSZXN1bHQsIGlkZW50
LCByZXNvbHZlSW5mbyk7CkBAIC02NjMsMTAgKzY2NSwxMCBAQCBSZWdpc3RlcklEKiBQb3N0Zml4
Tm9kZTo6ZW1pdEJyYWNrZXQoQnl0CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5l
cmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUoYmFzZU5vZGUsIGJyYWNrZXRBY2Nlc3Nvci0+
c3Vic2NyaXB0SGFzQXNzaWdubWVudHMoKSwgc3Vic2NyaXB0LT5pc1B1cmUoZ2VuZXJhdG9yKSk7
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5ID0gZ2VuZXJhdG9yLmVtaXROb2RlKHN1
YnNjcmlwdCk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGJyYWNrZXRBY2Nl
c3Nvci0+ZGl2b3QoKSwgYnJhY2tldEFjY2Vzc29yLT5zdGFydE9mZnNldCgpLCBicmFja2V0QWNj
ZXNzb3ItPmVuZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGJy
YWNrZXRBY2Nlc3Nvci0+ZGl2b3QoKSwgYnJhY2tldEFjY2Vzc29yLT5kaXZvdFN0YXJ0T2Zmc2V0
KCksIGJyYWNrZXRBY2Nlc3Nvci0+ZGl2b3RFbmRPZmZzZXQoKSwgYnJhY2tldEFjY2Vzc29yLT5k
aXZvdExpbmUoKSwgYnJhY2tldEFjY2Vzc29yLT5kaXZvdExpbmVTdGFydCgpKTsKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCkpOwogICAgIFJlZ2lzdGVy
SUQqIG9sZFZhbHVlID0gZW1pdFBvc3RJbmNPckRlYyhnZW5lcmF0b3IsIGdlbmVyYXRvci50ZW1w
RGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0b3IpOwotICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkp
OworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydE9m
ZnNldCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7
CiAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZhbChiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSwg
dmFsdWUuZ2V0KCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5l
ZWRlZChkc3QsIG9sZFZhbHVlKTsKIH0KQEAgLTY4MywxMCArNjg1LDEwIEBAIFJlZ2lzdGVySUQq
IFBvc3RmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2QKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBi
YXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKGJhc2VOb2RlKTsKIAotICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oZG90QWNjZXNzb3ItPmRpdm90KCksIGRvdEFjY2Vzc29yLT5zdGFydE9m
ZnNldCgpLCBkb3RBY2Nlc3Nvci0+ZW5kT2Zmc2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0RXhw
cmVzc2lvbkluZm8oZG90QWNjZXNzb3ItPmRpdm90KCksIGRvdEFjY2Vzc29yLT5kaXZvdFN0YXJ0
T2Zmc2V0KCksIGRvdEFjY2Vzc29yLT5kaXZvdEVuZE9mZnNldCgpLCBkb3RBY2Nlc3Nvci0+ZGl2
b3RMaW5lKCksIGRvdEFjY2Vzc29yLT5kaXZvdExpbmVTdGFydCgpKTsKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpLCBiYXNlLmdldCgpLCBpZGVudCk7CiAgICAgUmVnaXN0ZXJJRCogb2xkVmFsdWUgPSBl
bWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3Qp
LCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRvcik7Ci0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5k
T2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICBnZW5lcmF0b3Iu
ZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgaWRlbnQsIHZhbHVlLmdldCgpKTsKICAgICByZXR1cm4g
Z2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBvbGRWYWx1ZSk7CiB9CkBA
IC03MTUsNyArNzE3LDcgQEAgUmVnaXN0ZXJJRCogRGVsZXRlUmVzb2x2ZU5vZGU6OmVtaXRCeXRl
YwogICAgIGlmIChyZXNvbHZlUmVzdWx0LmlzUmVnaXN0ZXIoKSkKICAgICAgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBmYWxzZSk7
CiAKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0
KCksIGVuZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90
KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRp
dm90TGluZVN0YXJ0KCkpOwogICAgIFJlZ2lzdGVySUQqIGJhc2UgPSBnZW5lcmF0b3IuZW1pdFJl
c29sdmVCYXNlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgcmVzb2x2ZVJlc3VsdCwg
bV9pZGVudCk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0RGVsZXRlQnlJZChnZW5lcmF0b3Iu
ZmluYWxEZXN0aW5hdGlvbihkc3QsIGJhc2UpLCBiYXNlLCBtX2lkZW50KTsKIH0KQEAgLTcyNyw3
ICs3MjksNyBAQCBSZWdpc3RlcklEKiBEZWxldGVCcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjCiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHIwID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7CiAgICAg
UmVnaXN0ZXJJRCogcjEgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9zdWJzY3JpcHQpOwogCi0gICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRP
ZmZzZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZv
dFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVT
dGFydCgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXREZWxldGVCeVZhbChnZW5lcmF0b3Iu
ZmluYWxEZXN0aW5hdGlvbihkc3QpLCByMC5nZXQoKSwgcjEpOwogfQogCkBAIC03MzcsNyArNzM5
LDcgQEAgUmVnaXN0ZXJJRCogRGVsZXRlRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKAogewogICAgIFJl
Z2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7CiAKLSAgICBnZW5lcmF0
b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgp
KTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnRP
ZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkp
OwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdERlbGV0ZUJ5SWQoZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgcjAsIG1faWRlbnQpOwogfQogCkBAIC04MjMsNyArODI1LDcgQEAgUmVn
aXN0ZXJJRCogUHJlZml4Tm9kZTo6ZW1pdFJlc29sdmUoQnl0ZQogICAgICAgICByZXR1cm4gZ2Vu
ZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBwcm9wRHN0LmdldCgpKTsKICAg
ICB9CiAKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIHN0YXJ0T2Zm
c2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQoKSwgZGl2b3RMaW5lKCks
IGRpdm90TGluZVN0YXJ0KCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wRHN0ID0gZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpOwogICAgIE5vbmxvY2FsUmVzb2x2ZUluZm8gcmVz
b2x2ZVZlcmlmaWVyOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVt
aXRSZXNvbHZlV2l0aEJhc2VGb3JQdXQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9wRHN0
LmdldCgpLCByZXNvbHZlUmVzdWx0LCBpZGVudCwgcmVzb2x2ZVZlcmlmaWVyKTsKQEAgLTg0Mywx
MCArODQ1LDEwIEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXRCcmFja2V0KEJ5dGUKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHkgPSBnZW5lcmF0b3IuZW1pdE5vZGUoc3Vic2Ny
aXB0KTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcERzdCA9IGdlbmVyYXRvci50ZW1wRGVz
dGluYXRpb24oZHN0KTsKIAotICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oYnJhY2tl
dEFjY2Vzc29yLT5kaXZvdCgpLCBicmFja2V0QWNjZXNzb3ItPnN0YXJ0T2Zmc2V0KCksIGJyYWNr
ZXRBY2Nlc3Nvci0+ZW5kT2Zmc2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oYnJhY2tldEFjY2Vzc29yLT5kaXZvdCgpLCBicmFja2V0QWNjZXNzb3ItPmRpdm90U3RhcnRP
ZmZzZXQoKSwgYnJhY2tldEFjY2Vzc29yLT5kaXZvdEVuZE9mZnNldCgpLCBicmFja2V0QWNjZXNz
b3ItPmRpdm90TGluZSgpLCBicmFja2V0QWNjZXNzb3ItPmRpdm90TGluZVN0YXJ0KCkpOwogICAg
IFJlZ2lzdGVySUQqIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChwcm9wRHN0LmdldCgp
LCBiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSk7CiAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRv
ciwgdmFsdWUsIG1fb3BlcmF0b3IpOwotICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8o
ZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNldCgpLCBkaXZvdEVuZE9mZnNl
dCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQ
dXRCeVZhbChiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSwgdmFsdWUpOwogICAgIHJldHVybiBn
ZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIHByb3BEc3QuZ2V0KCkpOwog
fQpAQCAtODYxLDEwICs4NjMsMTAgQEAgUmVnaXN0ZXJJRCogUHJlZml4Tm9kZTo6ZW1pdERvdChC
eXRlY29kZQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2Rl
KGJhc2VOb2RlKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcERzdCA9IGdlbmVyYXRvci50
ZW1wRGVzdGluYXRpb24oZHN0KTsKIAotICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8o
ZG90QWNjZXNzb3ItPmRpdm90KCksIGRvdEFjY2Vzc29yLT5zdGFydE9mZnNldCgpLCBkb3RBY2Nl
c3Nvci0+ZW5kT2Zmc2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZG90
QWNjZXNzb3ItPmRpdm90KCksIGRvdEFjY2Vzc29yLT5kaXZvdFN0YXJ0T2Zmc2V0KCksIGRvdEFj
Y2Vzc29yLT5kaXZvdEVuZE9mZnNldCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RMaW5lKCksIGRvdEFj
Y2Vzc29yLT5kaXZvdExpbmVTdGFydCgpKTsKICAgICBSZWdpc3RlcklEKiB2YWx1ZSA9IGdlbmVy
YXRvci5lbWl0R2V0QnlJZChwcm9wRHN0LmdldCgpLCBiYXNlLmdldCgpLCBpZGVudCk7CiAgICAg
ZW1pdEluY09yRGVjKGdlbmVyYXRvciwgdmFsdWUsIG1fb3BlcmF0b3IpOwotICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkp
OworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydE9m
ZnNldCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7
CiAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGlkZW50LCB2YWx1ZSk7CiAg
ICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcHJvcERz
dC5nZXQoKSk7CiB9CkBAIC04OTAsNiArODkyLDcgQEAgUmVnaXN0ZXJJRCogUHJlZml4Tm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dAogUmVnaXN0ZXJJRCogVW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgUmVn
aXN0ZXJJRCogc3JjID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7CisgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhzdGFydE9mZnNldCgpLCAwLCAwLCBsaW5lTm8oKSwgbGluZVN0
YXJ0T2Zmc2V0KCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFVuYXJ5T3Aob3Bjb2RlSUQo
KSwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgc3JjKTsKIH0KIApAQCAtMTAyMSw3
ICsxMDI0LDcgQEAgUmVnaXN0ZXJJRCogQmluYXJ5T3BOb2RlOjplbWl0U3RyY2F0KEJ5dAogICAg
IC8vIENlcnRhaW4gcmVhZC1tb2RpZnkgbm9kZXMgcmVxdWlyZSBleHByZXNzaW9uIGluZm8gdG8g
YmUgZW1pdHRlZCAqYWZ0ZXIqIG1fcmlnaHQgaGFzIGJlZW4gZ2VuZXJhdGVkLgogICAgIC8vIElm
IHRoaXMgaXMgcmVxdWlyZWQgdGhlIG5vZGUgaXMgcGFzc2VkIGFzICdlbWl0RXhwcmVzc2lvbklu
Zm9Gb3JNZSc7IGRvIHNvIG5vdy4KICAgICBpZiAoZW1pdEV4cHJlc3Npb25JbmZvRm9yTWUpCi0g
ICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZW1pdEV4cHJlc3Npb25JbmZvRm9y
TWUtPmRpdm90KCksIGVtaXRFeHByZXNzaW9uSW5mb0Zvck1lLT5zdGFydE9mZnNldCgpLCBlbWl0
RXhwcmVzc2lvbkluZm9Gb3JNZS0+ZW5kT2Zmc2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dEV4cHJlc3Npb25JbmZvKGVtaXRFeHByZXNzaW9uSW5mb0Zvck1lLT5kaXZvdCgpLCBlbWl0RXhw
cmVzc2lvbkluZm9Gb3JNZS0+ZGl2b3RTdGFydE9mZnNldCgpLCBlbWl0RXhwcmVzc2lvbkluZm9G
b3JNZS0+ZGl2b3RFbmRPZmZzZXQoKSwgZW1pdEV4cHJlc3Npb25JbmZvRm9yTWUtPmRpdm90TGlu
ZSgpLCBlbWl0RXhwcmVzc2lvbkluZm9Gb3JNZS0+ZGl2b3RMaW5lU3RhcnQoKSk7CiAKICAgICAv
LyBJZiB0aGVyZSBpcyBhbiBhc3NpZ25tZW50IGNvbnZlcnQgdGhlIGxocyBub3cuICBUaGlzIHdp
bGwgYWxzbyBjb3B5IGxocyB0bwogICAgIC8vIHRoZSB0ZW1wb3JhcnkgcmVnaXN0ZXIgd2UgYWxs
b2NhdGVkIGZvciBpdC4KQEAgLTExNjEsNyArMTE2NCw3IEBAIFJlZ2lzdGVySUQqIFRocm93YWJs
ZUJpbmFyeU9wTm9kZTo6ZW1pdEIKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdl
bmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2V4cHIxLCBtX3JpZ2h0SGFzQXNzaWdu
bWVudHMsIG1fZXhwcjItPmlzUHVyZShnZW5lcmF0b3IpKTsKICAgICBSZWdpc3RlcklEKiBzcmMy
ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcjIpOwotICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8oZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydE9mZnNldCgpLCBkaXZv
dEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwgZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgcmV0dXJu
IGdlbmVyYXRvci5lbWl0QmluYXJ5T3Aob3Bjb2RlSUQoKSwgZ2VuZXJhdG9yLmZpbmFsRGVzdGlu
YXRpb24oZHN0LCBzcmMxLmdldCgpKSwgc3JjMS5nZXQoKSwgc3JjMiwgT3BlcmFuZFR5cGVzKG1f
ZXhwcjEtPnJlc3VsdERlc2NyaXB0b3IoKSwgbV9leHByMi0+cmVzdWx0RGVzY3JpcHRvcigpKSk7
CiB9CiAKQEAgLTExNzMsMTMgKzExNzYsMTMgQEAgUmVnaXN0ZXJJRCogSW5zdGFuY2VPZk5vZGU6
OmVtaXRCeXRlY29kZQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkc3RSZWcgPSBnZW5lcmF0b3Iu
ZmluYWxEZXN0aW5hdGlvbihkc3QsIHNyYzEuZ2V0KCkpOwogICAgIFJlZlB0cjxMYWJlbD4gdGFy
Z2V0ID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Np
b25JbmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0
b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RF
bmRPZmZzZXQoKSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgIGdlbmVyYXRv
ci5lbWl0Q2hlY2tIYXNJbnN0YW5jZShkc3RSZWcuZ2V0KCksIHNyYzEuZ2V0KCksIHNyYzIuZ2V0
KCksIHRhcmdldC5nZXQoKSk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnRPZmZzZXQoKSwgZGl2b3RFbmRPZmZzZXQo
KSwgZGl2b3RMaW5lKCksIGRpdm90TGluZVN0YXJ0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0R2V0
QnlJZChwcm90b3R5cGUuZ2V0KCksIHNyYzIuZ2V0KCksIGdlbmVyYXRvci52bSgpLT5wcm9wZXJ0
eU5hbWVzLT5wcm90b3R5cGUpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhk
aXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRF
eHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0
KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICBSZWdpc3RlcklEKiByZXN1
bHQgPSBnZW5lcmF0b3IuZW1pdEluc3RhbmNlT2YoZHN0UmVnLmdldCgpLCBzcmMxLmdldCgpLCBw
cm90b3R5cGUuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwodGFyZ2V0LmdldCgpKTsK
ICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTI5MCw3ICsxMjkzLDcgQEAgc3RhdGljIEFMV0FZU19J
TkxJTkUgUmVnaXN0ZXJJRCogZW1pdFJlYQogICAgIC8vIENlcnRhaW4gcmVhZC1tb2RpZnkgbm9k
ZXMgcmVxdWlyZSBleHByZXNzaW9uIGluZm8gdG8gYmUgZW1pdHRlZCAqYWZ0ZXIqIG1fcmlnaHQg
aGFzIGJlZW4gZ2VuZXJhdGVkLgogICAgIC8vIElmIHRoaXMgaXMgcmVxdWlyZWQgdGhlIG5vZGUg
aXMgcGFzc2VkIGFzICdlbWl0RXhwcmVzc2lvbkluZm9Gb3JNZSc7IGRvIHNvIG5vdy4KICAgICBp
ZiAoZW1pdEV4cHJlc3Npb25JbmZvRm9yTWUpCi0gICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8oZW1pdEV4cHJlc3Npb25JbmZvRm9yTWUtPmRpdm90KCksIGVtaXRFeHByZXNzaW9u
SW5mb0Zvck1lLT5zdGFydE9mZnNldCgpLCBlbWl0RXhwcmVzc2lvbkluZm9Gb3JNZS0+ZW5kT2Zm
c2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGVtaXRFeHByZXNz
aW9uSW5mb0Zvck1lLT5kaXZvdCgpLCBlbWl0RXhwcmVzc2lvbkluZm9Gb3JNZS0+ZGl2b3RTdGFy
dE9mZnNldCgpLCBlbWl0RXhwcmVzc2lvbkluZm9Gb3JNZS0+ZGl2b3RFbmRPZmZzZXQoKSwgZW1p
dEV4cHJlc3Npb25JbmZvRm9yTWUtPmRpdm90TGluZSgpLCBlbWl0RXhwcmVzc2lvbkluZm9Gb3JN
ZS0+ZGl2b3RMaW5lU3RhcnQoKSk7CiAKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRCaW5hcnlP
cChvcGNvZGVJRCwgZHN0LCBzcmMxLCBzcmMyLCB0eXBlcyk7CiB9CkBAIC0xMzI1LDcgKzEzMjgs
NyBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRCCiAgICAgfQogCiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzEgPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRz
dCk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpIC0gc3RhcnRPZmZz
ZXQoKSArIG1faWRlbnQubGVuZ3RoKCksIG1faWRlbnQubGVuZ3RoKCksIDApOworICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSAtIGRpdm90U3RhcnRPZmZzZXQoKSArIG1f
aWRlbnQubGVuZ3RoKCksIG1faWRlbnQubGVuZ3RoKCksIDAsIGRpdm90TGluZSgpLCBkaXZvdExp
bmVTdGFydCgpKTsKICAgICBOb25sb2NhbFJlc29sdmVJbmZvIHJlc29sdmVWZXJpZmllcjsKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVdpdGhCYXNl
Rm9yUHV0KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc3JjMS5nZXQoKSwgcmVzb2x2ZVJlc3Vs
dCwgbV9pZGVudCwgcmVzb2x2ZVZlcmlmaWVyKTsKICAgICBSZWdpc3RlcklEKiByZXN1bHQgPSBl
bWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbihkc3QsIHNyYzEuZ2V0KCkpLCBzcmMxLmdldCgpLCBtX3JpZ2h0LCBtX29wZXJhdG9yLCBP
cGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVz
Y3JpcHRvcigpKSwgdGhpcyk7CkBAIC0xMzYwLDcgKzEzNjMsNyBAQCBSZWdpc3RlcklEKiBBc3Np
Z25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjCiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3Jl
ZFJlc3VsdCgpKQogICAgICAgICBkc3QgPSAwOwogICAgIFJlZ2lzdGVySUQqIHZhbHVlID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9yaWdodCk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90
RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICByZXR1cm4g
Z2VuZXJhdG9yLmVtaXRQdXRUb0Jhc2UoYmFzZS5nZXQoKSwgbV9pZGVudCwgdmFsdWUsIHJlc29s
dmVWZXJpZmllcik7CiB9CiAKQEAgLTEzNzEsNyArMTM3NCw3IEBAIFJlZ2lzdGVySUQqIEFzc2ln
bkRvdE5vZGU6OmVtaXRCeXRlY29kZSgKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdl
bmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2Jhc2UsIG1fcmlnaHRIYXNBc3NpZ25t
ZW50cywgbV9yaWdodC0+aXNQdXJlKGdlbmVyYXRvcikpOwogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiB2YWx1ZSA9IGdlbmVyYXRvci5kZXN0aW5hdGlvbkZvckFzc2lnblJlc3VsdChkc3QpOwogICAg
IFJlZ2lzdGVySUQqIHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0Tm9kZSh2YWx1ZS5nZXQoKSwgbV9y
aWdodCk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9m
ZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhk
aXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgp
LCBkaXZvdExpbmVTdGFydCgpKTsKICAgICBSZWdpc3RlcklEKiBmb3J3YXJkUmVzdWx0ID0gKGRz
dCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKSA/IHJlc3VsdCA6IGdlbmVyYXRvci5tb3Zl
VG9EZXN0aW5hdGlvbklmTmVlZGVkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24ocmVzdWx0KSwg
cmVzdWx0KTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwg
Zm9yd2FyZFJlc3VsdCk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklm
TmVlZGVkKGRzdCwgZm9yd2FyZFJlc3VsdCk7CkBAIC0xMzgzLDExICsxMzg2LDExIEBAIFJlZ2lz
dGVySUQqIFJlYWRNb2RpZnlEb3ROb2RlOjplbWl0Qnl0ZWMKIHsKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2Jhc2UsIG1f
cmlnaHRIYXNBc3NpZ25tZW50cywgbV9yaWdodC0+aXNQdXJlKGdlbmVyYXRvcikpOwogCi0gICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpIC0gbV9zdWJleHByZXNzaW9uRGl2
b3RPZmZzZXQsIHN0YXJ0T2Zmc2V0KCkgLSBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNldCwgbV9z
dWJleHByZXNzaW9uRW5kT2Zmc2V0KTsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnRPZmZzZXQoKSwgc3ViZXhw
cmVzc2lvbkVuZE9mZnNldCgpLCBzdWJleHByZXNzaW9uTGluZSgpLCBzdWJleHByZXNzaW9uTGlu
ZVN0YXJ0KCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0
R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIG1faWRl
bnQpOwogICAgIFJlZ2lzdGVySUQqIHVwZGF0ZWRWYWx1ZSA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdu
bWVudChnZW5lcmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgdmFsdWUuZ2V0
KCkpLCB2YWx1ZS5nZXQoKSwgbV9yaWdodCwgbV9vcGVyYXRvciwgT3BlcmFuZFR5cGVzKFJlc3Vs
dFR5cGU6OnVua25vd25UeXBlKCksIG1fcmlnaHQtPnJlc3VsdERlc2NyaXB0b3IoKSkpOwogCi0g
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBl
bmRPZmZzZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBk
aXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExp
bmVTdGFydCgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCks
IG1faWRlbnQsIHVwZGF0ZWRWYWx1ZSk7CiB9CiAKQEAgLTE0MDcsNyArMTQxMCw3IEBAIFJlZ2lz
dGVySUQqIEFzc2lnbkJyYWNrZXROb2RlOjplbWl0Qnl0ZWMKICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gdmFsdWUgPSBnZW5lcmF0b3IuZGVzdGluYXRpb25Gb3JBc3NpZ25SZXN1bHQoZHN0KTsKICAg
ICBSZWdpc3RlcklEKiByZXN1bHQgPSBnZW5lcmF0b3IuZW1pdE5vZGUodmFsdWUuZ2V0KCksIG1f
cmlnaHQpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFy
dE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5m
byhkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGlu
ZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICBSZWdpc3RlcklEKiBmb3J3YXJkUmVzdWx0ID0g
KGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKSA/IHJlc3VsdCA6IGdlbmVyYXRvci5t
b3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24ocmVzdWx0
KSwgcmVzdWx0KTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIHByb3Bl
cnR5LmdldCgpLCBmb3J3YXJkUmVzdWx0KTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rl
c3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBmb3J3YXJkUmVzdWx0KTsKQEAgLTE0MjAsMTEgKzE0MjMs
MTEgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeUJyYWNrZXROb2RlOjplbWl0QgogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1f
YmFzZSwgbV9zdWJzY3JpcHRIYXNBc3NpZ25tZW50cyB8fCBtX3JpZ2h0SGFzQXNzaWdubWVudHMs
IG1fc3Vic2NyaXB0LT5pc1B1cmUoZ2VuZXJhdG9yKSAmJiBtX3JpZ2h0LT5pc1B1cmUoZ2VuZXJh
dG9yKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5ID0gZ2VuZXJhdG9yLmVtaXRO
b2RlRm9yTGVmdEhhbmRTaWRlKG1fc3Vic2NyaXB0LCBtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1f
cmlnaHQtPmlzUHVyZShnZW5lcmF0b3IpKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lv
bkluZm8oZGl2b3QoKSAtIG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0LCBzdGFydE9mZnNldCgp
IC0gbV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQsIG1fc3ViZXhwcmVzc2lvbkVuZE9mZnNldCk7
CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwg
c3ViZXhwcmVzc2lvblN0YXJ0T2Zmc2V0KCksIHN1YmV4cHJlc3Npb25FbmRPZmZzZXQoKSwgc3Vi
ZXhwcmVzc2lvbkxpbmUoKSwgc3ViZXhwcmVzc2lvbkxpbmVTdGFydCgpKTsKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRvci50ZW1w
RGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCkpOwogICAgIFJlZ2lz
dGVySUQqIHVwZGF0ZWRWYWx1ZSA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3Is
IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgdmFsdWUuZ2V0KCkpLCB2YWx1ZS5nZXQo
KSwgbV9yaWdodCwgbV9vcGVyYXRvciwgT3BlcmFuZFR5cGVzKFJlc3VsdFR5cGU6OnVua25vd25U
eXBlKCksIG1fcmlnaHQtPnJlc3VsdERlc2NyaXB0b3IoKSkpOwogCi0gICAgZ2VuZXJhdG9yLmVt
aXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0
KCksIGRpdm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAg
ICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpLCB1cGRh
dGVkVmFsdWUpOwogCiAgICAgcmV0dXJuIHVwZGF0ZWRWYWx1ZTsKQEAgLTE0ODAsNyArMTQ4Myw3
IEBAIFJlZ2lzdGVySUQqIENvbnN0RGVjbE5vZGU6OmVtaXRCeXRlY29kZSgKIAogdm9pZCBDb25z
dFN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKikKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0
ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3NpdGlvbigpKTsKKyAg
ICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5l
KCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKICAgICBn
ZW5lcmF0b3IuZW1pdE5vZGUobV9uZXh0KTsKIH0KIApAQCAtMTUyMywxNCArMTUyNiwxNCBAQCB2
b2lkIEJsb2NrTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuCiAKIHZvaWQgRW1wdHlTdGF0
ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCopCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0
ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24oKSk7CisgICAgZ2Vu
ZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBs
YXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiB9CiAKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWJ1Z2dlclN0YXRlbWVudE5vZGUgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHZvaWQgRGVidWdnZXJTdGF0ZW1lbnROb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7Ci0g
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkUmVhY2hCcmVha3BvaW50LCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSwgY2hhclBvc2l0aW9uKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKERpZFJlYWNoQnJlYWtwb2ludCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zm
c2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIEV4cHJTdGF0ZW1lbnROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
QEAgLTE1MzgsNyArMTU0MSw3IEBAIHZvaWQgRGVidWdnZXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0
ZWNvZGUKIHZvaWQgRXhwclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgQVNTRVJUKG1fZXhwcik7
Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0
TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24oKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBz
dGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXROb2Rl
KGRzdCwgbV9leHByKTsKIH0KIApAQCAtMTU0Nyw3ICsxNTUwLDcgQEAgdm9pZCBFeHByU3RhdGVt
ZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dAogdm9pZCBWYXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7CiAgICAg
QVNTRVJUKG1fZXhwcik7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVT
dGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24oKSk7CisgICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgp
LCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAgICAgZ2Vu
ZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7CiB9CiAKQEAgLTE1OTIsNyArMTU5NSw3IEBAIGJvb2wg
SWZFbHNlTm9kZTo6dHJ5Rm9sZEJyZWFrQW5kQ29udGludWUKIAogdm9pZCBJZkVsc2VOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBm
aXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY2hhclBvc2l0aW9uKCkpOworICAgIGdlbmVyYXRvci5l
bWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUo
KSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgIAogICAgIFJlZlB0cjxM
YWJlbD4gYmVmb3JlVGhlbiA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIFJlZlB0cjxMYWJl
bD4gYmVmb3JlRWxzZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwpAQCAtMTYyOSwxMiArMTYzMiwx
MiBAQCB2b2lkIERvV2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHCiAgICAgUmVmUHRy
PExhYmVsPiB0b3BPZkxvb3AgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBnZW5lcmF0b3Iu
ZW1pdExhYmVsKHRvcE9mTG9vcC5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb29wSGludCgp
OwotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBsYXN0
TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24oKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGxhc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0
YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZShkc3QsIG1fc3RhdGVtZW50KTsKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNv
bnRpbnVlVGFyZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRl
U3RhdGVtZW50LCBsYXN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24oKSk7CisgICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGxhc3RMaW5lKCks
IGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKICAgICBnZW5l
cmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByLCB0b3BPZkxvb3AuZ2V0KCks
IHNjb3BlLT5icmVha1RhcmdldCgpLCBGYWxsVGhyb3VnaE1lYW5zRmFsc2UpOwogCiAgICAgZ2Vu
ZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+YnJlYWtUYXJnZXQoKSk7CkBAIC0xNjQ3LDcgKzE2NTAs
NyBAQCB2b2lkIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuCiAgICAgTGFiZWxT
Y29wZVB0ciBzY29wZSA9IGdlbmVyYXRvci5uZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6Okxvb3Ap
OwogICAgIFJlZlB0cjxMYWJlbD4gdG9wT2ZMb29wID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAK
LSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgbV9leHBy
LT5saW5lTm8oKSwgbV9leHByLT5saW5lTm8oKSwgbV9leHByLT5jaGFyUG9zaXRpb24oKSk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIG1fZXhwci0+
bGluZU5vKCksIG1fZXhwci0+bGluZU5vKCksIG1fZXhwci0+c3RhcnRPZmZzZXQoKSwgbV9leHBy
LT5saW5lU3RhcnRPZmZzZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5Db25kaXRpb25D
b250ZXh0KG1fZXhwciwgdG9wT2ZMb29wLmdldCgpLCBzY29wZS0+YnJlYWtUYXJnZXQoKSwgRmFs
bFRocm91Z2hNZWFuc1RydWUpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbCh0b3BPZkxvb3Au
Z2V0KCkpOwpAQCAtMTY1Niw3ICsxNjU5LDcgQEAgdm9pZCBXaGlsZU5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbgogICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsK
IAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwotICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSwgY2hhclBvc2l0aW9uKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgc3RhcnRP
ZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5D
b25kaXRpb25Db250ZXh0KG1fZXhwciwgdG9wT2ZMb29wLmdldCgpLCBzY29wZS0+YnJlYWtUYXJn
ZXQoKSwgRmFsbFRocm91Z2hNZWFuc0ZhbHNlKTsKIApAQCAtMTY2OSw3ICsxNjcyLDcgQEAgdm9p
ZCBGb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcgogewogICAgIExhYmVsU2NvcGVQ
dHIgc2NvcGUgPSBnZW5lcmF0b3IubmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpMb29wKTsKIAot
ICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExp
bmUoKSwgbGFzdExpbmUoKSwgY2hhclBvc2l0aW9uKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgc3Rh
cnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgaWYgKG1fZXhwcjEpCiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpLCBtX2V4cHIx
KTsKQEAgLTE2ODQsNyArMTY4Nyw3IEBAIHZvaWQgRm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXIKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3N0YXRlbWVudCk7CiAKICAg
ICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5jb250aW51ZVRhcmdldCgpKTsKLSAgICBnZW5l
cmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxh
c3RMaW5lKCksIGNoYXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhX
aWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0
KCksIGxpbmVTdGFydE9mZnNldCgpKTsKICAgICBpZiAobV9leHByMykKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcjMpOwogCkBAIC0x
NzA3LDcgKzE3MTAsNyBAQCB2b2lkIEZvckluTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhX
aWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3NpdGlv
bigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwg
Zmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgp
KTsKIAogICAgIGlmIChtX2luaXQpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0
b3IuaWdub3JlZFJlc3VsdCgpLCBtX2luaXQpOwpAQCAtMTczNiw3ICsxNzM5LDcgQEAgdm9pZCBG
b3JJbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbgogICAgICAgICAgICAgTm9ubG9jYWxS
ZXNvbHZlSW5mbyByZXNvbHZlVmVyaWZpZXI7CiAgICAgICAgICAgICBSZWdpc3RlcklEKiBiYXNl
ID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlQmFzZUZvclB1dChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCksIHJlc29sdmVSZXN1bHQsIGlkZW50LCByZXNvbHZlVmVyaWZpZXIpOwogCi0gICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVu
ZE9mZnNldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2
b3QoKSwgZGl2b3RTdGFydE9mZnNldCgpLCBkaXZvdEVuZE9mZnNldCgpLCBkaXZvdExpbmUoKSwg
ZGl2b3RMaW5lU3RhcnQoKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvQmFzZShi
YXNlLCBpZGVudCwgcHJvcGVydHlOYW1lLCByZXNvbHZlVmVyaWZpZXIpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgZXhwZWN0ZWRTdWJzY3JpcHQgPSBnZW5lcmF0b3IuZW1pdE1vdmUo
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9wZXJ0eU5hbWUpOwpAQCAtMTc1MCw3ICsxNzUz
LDcgQEAgdm9pZCBGb3JJbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbgogICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdGVjdCA9IHByb3BlcnR5TmFtZTsKICAgICAgICAgUmVnaXN0
ZXJJRCogYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShhc3NpZ25Ob2RlLT5iYXNlKCkpOwogCi0g
ICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oYXNzaWduTm9kZS0+ZGl2b3QoKSwg
YXNzaWduTm9kZS0+c3RhcnRPZmZzZXQoKSwgYXNzaWduTm9kZS0+ZW5kT2Zmc2V0KCkpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGFzc2lnbk5vZGUtPmRpdm90KCksIGFz
c2lnbk5vZGUtPmRpdm90U3RhcnRPZmZzZXQoKSwgYXNzaWduTm9kZS0+ZGl2b3RFbmRPZmZzZXQo
KSwgYXNzaWduTm9kZS0+ZGl2b3RMaW5lKCksIGFzc2lnbk5vZGUtPmRpdm90TGluZVN0YXJ0KCkp
OwogICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnQsIHByb3BlcnR5TmFt
ZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKG1fbGV4cHItPmlzQnJhY2tldEFjY2Vz
c29yTm9kZSgpKTsKQEAgLTE3NjAsNyArMTc2Myw3IEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW4KICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5l
cmF0b3IuZW1pdE5vZGUoYXNzaWduTm9kZS0+YmFzZSgpKTsKICAgICAgICAgUmVnaXN0ZXJJRCog
c3Vic2NyaXB0ID0gZ2VuZXJhdG9yLmVtaXROb2RlKGFzc2lnbk5vZGUtPnN1YnNjcmlwdCgpKTsK
ICAgICAgICAgCi0gICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oYXNzaWduTm9k
ZS0+ZGl2b3QoKSwgYXNzaWduTm9kZS0+c3RhcnRPZmZzZXQoKSwgYXNzaWduTm9kZS0+ZW5kT2Zm
c2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGFzc2lnbk5vZGUt
PmRpdm90KCksIGFzc2lnbk5vZGUtPmRpdm90U3RhcnRPZmZzZXQoKSwgYXNzaWduTm9kZS0+ZGl2
b3RFbmRPZmZzZXQoKSwgYXNzaWduTm9kZS0+ZGl2b3RMaW5lKCksIGFzc2lnbk5vZGUtPmRpdm90
TGluZVN0YXJ0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCks
IHN1YnNjcmlwdCwgcHJvcGVydHlOYW1lKTsKICAgICB9ICAgCiAKQEAgLTE3NzEsNyArMTc3NCw3
IEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW4KIAogICAgIGdlbmVy
YXRvci5lbWl0TGFiZWwoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwogICAgIGdlbmVyYXRvci5l
bWl0TmV4dFByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUsIGJhc2UuZ2V0KCksIGkuZ2V0KCksIHNp
emUuZ2V0KCksIGl0ZXIuZ2V0KCksIGxvb3BTdGFydC5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVt
aXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgp
LCBjaGFyUG9zaXRpb24oKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1
dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5l
U3RhcnRPZmZzZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+YnJlYWtUYXJn
ZXQoKSk7CiB9CiAKQEAgLTE3OTMsNyArMTc5Niw3IEBAIExhYmVsKiBDb250aW51ZU5vZGU6OnRy
aXZpYWxUYXJnZXQoQnl0ZWMKIAogdm9pZCBDb250aW51ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKLSAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCksIGNoYXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhl
Y3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxp
bmVTdGFydE9mZnNldCgpKTsKICAgICAKICAgICBMYWJlbFNjb3BlKiBzY29wZSA9IGdlbmVyYXRv
ci5jb250aW51ZVRhcmdldChtX2lkZW50KTsKICAgICBBU1NFUlQoc2NvcGUpOwpAQCAtMTgyMCw3
ICsxODIzLDcgQEAgTGFiZWwqIEJyZWFrTm9kZTo6dHJpdmlhbFRhcmdldChCeXRlY29kZQogCiB2
b2lkIEJyZWFrTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqKQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRl
U3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY2hhclBvc2l0aW9uKCkpOworICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgIAog
ICAgIExhYmVsU2NvcGUqIHNjb3BlID0gZ2VuZXJhdG9yLmJyZWFrVGFyZ2V0KG1faWRlbnQpOwog
ICAgIEFTU0VSVChzY29wZSk7CkBAIC0xODMzLDcgKzE4MzYsNyBAQCB2b2lkIEJyZWFrTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuCiAKIHZvaWQgUmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCks
IGxhc3RMaW5lKCksIGNoYXJQb3NpdGlvbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9v
ayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0YXJ0T2Zm
c2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKICAgICBBU1NFUlQoZ2VuZXJhdG9yLmNvZGVUeXBl
KCkgPT0gRnVuY3Rpb25Db2RlKTsKIAogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRS
ZXN1bHQoKSkKQEAgLTE4NDUsNyArMTg0OCw3IEBAIHZvaWQgUmV0dXJuTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2UKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQb3BTY29wZXMoMCk7CiAgICAg
fQogCi0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBmaXJz
dExpbmUoKSwgbGFzdExpbmUoKSwgY2hhclBvc2l0aW9uKCkpOworICAgIGdlbmVyYXRvci5lbWl0
RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0
YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFJldHVy
bihyZXR1cm5SZWdpc3Rlci5nZXQoKSk7CiB9CiAKQEAgLTE4NTMsMTAgKzE4NTYsMTAgQEAgdm9p
ZCBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZQogCiB2b2lkIFdpdGhOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBm
aXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY2hhclBvc2l0aW9uKCkpOworICAgIGdlbmVyYXRvci5l
bWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUo
KSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7Ci0gICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhtX2Rpdm90LCBtX2V4cHJlc3Npb25MZW5ndGgsIDApOworICAg
IGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8obV9kaXZvdCwgbV9leHByZXNzaW9uTGVuZ3Ro
LCAwLCBtX2Rpdm90TGluZSwgbV9kaXZvdExpbmVTdGFydCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQ
dXNoV2l0aFNjb3BlKHNjb3BlLmdldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBt
X3N0YXRlbWVudCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQb3BTY29wZSgpOwpAQCAtMjAyNyw3ICsy
MDMwLDcgQEAgdm9pZCBDYXNlQmxvY2tOb2RlOjplbWl0Qnl0ZWNvZGVGb3JCbG9jawogCiB2b2lk
IFN3aXRjaE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1
dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24oKSk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGlu
ZSgpLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAgICAg
CiAgICAgTGFiZWxTY29wZVB0ciBzY29wZSA9IGdlbmVyYXRvci5uZXdMYWJlbFNjb3BlKExhYmVs
U2NvcGU6OlN3aXRjaCk7CiAKQEAgLTIwNDEsNyArMjA0NCw3IEBAIHZvaWQgU3dpdGNoTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2UKIAogdm9pZCBMYWJlbE5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2Vu
ZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBs
YXN0TGluZSgpLCBjaGFyUG9zaXRpb24oKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2so
V2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBzdGFydE9mZnNl
dCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAKICAgICBBU1NFUlQoIWdlbmVyYXRvci5icmVha1Rh
cmdldChtX25hbWUpKTsKIApAQCAtMjA1NSwxMiArMjA1OCwxMiBAQCB2b2lkIExhYmVsTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuCiAKIHZvaWQgVGhyb3dOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdl
bmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwg
bGFzdExpbmUoKSwgY2hhclBvc2l0aW9uKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29r
KFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgc3RhcnRPZmZz
ZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdu
b3JlZFJlc3VsdCgpKQogICAgICAgICBkc3QgPSAwOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBl
eHByID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7Ci0gICAgZ2VuZXJhdG9yLmVtaXRFeHBy
ZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CisgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0T2Zmc2V0KCksIGRp
dm90RW5kT2Zmc2V0KCksIGRpdm90TGluZSgpLCBkaXZvdExpbmVTdGFydCgpKTsKICAgICBnZW5l
cmF0b3IuZW1pdFRocm93KGV4cHIuZ2V0KCkpOwogfQogCkBAIC0yMDcxLDcgKzIwNzQsNyBAQCB2
b2lkIFRyeU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyCiAgICAgLy8gTk9URTogVGhl
IGNhdGNoIGFuZCBmaW5hbGx5IGJsb2NrcyBtdXN0IGJlIGxhYmVsZWQgZXhwbGljaXRseSwgc28g
dGhlCiAgICAgLy8gb3B0aW1pemVyIGtub3dzIHRoZXkgbWF5IGJlIGp1bXBlZCB0byBmcm9tIGFu
eXdoZXJlLgogCi0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1l
bnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24oKSk7CisgICAgZ2VuZXJh
dG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0
TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAKICAgICBBU1NFUlQo
bV9jYXRjaEJsb2NrIHx8IG1fZmluYWxseUJsb2NrKTsKIApAQCAtMjEzOSwxMyArMjE0MiwxMyBA
QCBpbmxpbmUgdm9pZCBTY29wZU5vZGU6OmVtaXRTdGF0ZW1lbnRzQnl0CiAKIHZvaWQgUHJvZ3Jh
bU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKikKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVByb2dyYW0s
IHN0YXJ0TGluZSgpLCBzdGFydExpbmUoKSwgc3RhcnRDaGFyUG9zaXRpb24oKSk7CisgICAgZ2Vu
ZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVQcm9ncmFtLCBzdGFydExpbmUoKSwgc3Rh
cnRMaW5lKCksIHN0YXJ0U3RhcnRPZmZzZXQoKSwgc3RhcnRMaW5lU3RhcnRPZmZzZXQoKSk7CiAK
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZHN0UmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdFJlZ2lzdGVyLmdldCgpLCBqc1VuZGVm
aW5lZCgpKTsKICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwgZHN0UmVnaXN0
ZXIuZ2V0KCkpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkRXhlY3V0ZVByb2dy
YW0sIGxhc3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3NpdGlvbigpIC0gMSk7CisgICAgZ2Vu
ZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkRXhlY3V0ZVByb2dyYW0sIGxhc3RMaW5lKCksIGxhc3RM
aW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKICAgICBnZW5lcmF0b3Iu
ZW1pdEVuZChkc3RSZWdpc3Rlci5nZXQoKSk7CiB9CiAKQEAgLTIxNTMsMTMgKzIxNTYsMTMgQEAg
dm9pZCBQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlRwogCiB2b2lkIEV2YWxOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCop
CiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVQcm9ncmFtLCBzdGFy
dExpbmUoKSwgc3RhcnRMaW5lKCksIHN0YXJ0Q2hhclBvc2l0aW9uKCkpOworICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlUHJvZ3JhbSwgc3RhcnRMaW5lKCksIHN0YXJ0TGlu
ZSgpLCBzdGFydFN0YXJ0T2Zmc2V0KCksIHN0YXJ0TGluZVN0YXJ0T2Zmc2V0KCkpOwogCiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGRzdFJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
OwogICAgIGdlbmVyYXRvci5lbWl0TG9hZChkc3RSZWdpc3Rlci5nZXQoKSwganNVbmRlZmluZWQo
KSk7CiAgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGRzdFJlZ2lzdGVyLmdl
dCgpKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEV4ZWN1dGVQcm9ncmFtLCBs
YXN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24oKSAtIDEpOworICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKERpZEV4ZWN1dGVQcm9ncmFtLCBsYXN0TGluZSgpLCBsYXN0TGluZSgp
LCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRF
bmQoZHN0UmVnaXN0ZXIuZ2V0KCkpOwogfQogCkBAIC0yMTY3LDcgKzIxNzAsNyBAQCB2b2lkIEV2
YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lCiAKIHZvaWQgRnVuY3Rpb25Cb2R5Tm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEVudGVyQ2FsbEZyYW1lLCBzdGFy
dExpbmUoKSwgc3RhcnRMaW5lKCksIHN0YXJ0Q2hhclBvc2l0aW9uKCkpOworICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKERpZEVudGVyQ2FsbEZyYW1lLCBzdGFydExpbmUoKSwgc3RhcnRMaW5l
KCksIHN0YXJ0U3RhcnRPZmZzZXQoKSwgc3RhcnRMaW5lU3RhcnRPZmZzZXQoKSk7CiAgICAgZW1p
dFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkp
OwogCiAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3Rh
dGVtZW50KCk7CkBAIC0yMTgzLDggKzIxODYsOCBAQCB2b2lkIEZ1bmN0aW9uQm9keU5vZGU6OmVt
aXRCeXRlY29kZShCeXRlCiAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdlIG11c3QgYXV0
b21hdGljYWxseSBpbnNlcnQgb25lLgogICAgIGlmICghcmV0dXJuTm9kZSkgewogICAgICAgICBS
ZWdpc3RlcklEKiByMCA9IGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgPyBnZW5lcmF0b3IudGhp
c1JlZ2lzdGVyKCkgOiBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNVbmRlZmluZWQoKSk7Ci0gICAg
ICAgIEFTU0VSVCgoY2hhclBvc2l0aW9uKCkgLSAgMSkgPj0gMCk7Ci0gICAgICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgbGFzdExpbmUo
KSwgY2hhclBvc2l0aW9uKCkgLSAxKTsKKyAgICAgICAgQVNTRVJUKChzdGFydE9mZnNldCgpIC0g
IDEpID49IGxpbmVTdGFydE9mZnNldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbExlYXZlQ2FsbEZyYW1lLCBsYXN0TGluZSgpLCBsYXN0TGluZSgpLCBzdGFydE9mZnNl
dCgpIC0gMSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVy
bihyMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDE1MTkyMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQyMiw5ICs0MjIsMTEgQEAgc3RhdGljIHZvaWQgYXBwZW5kU291cmNl
VG9FcnJvcihDYWxsRnJhbQogICAgIGludCBzdGFydE9mZnNldCA9IDA7CiAgICAgaW50IGVuZE9m
ZnNldCA9IDA7CiAgICAgaW50IGRpdm90UG9pbnQgPSAwOworICAgIHVuc2lnbmVkIGxpbmUgPSAw
OworICAgIHVuc2lnbmVkIGNvbHVtbiA9IDA7CiAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7Ci0gICAgY29kZUJsb2NrLT5leHByZXNzaW9uUmFuZ2VG
b3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCwgZGl2b3RQb2ludCwgc3RhcnRPZmZzZXQs
IGVuZE9mZnNldCk7CisgICAgY29kZUJsb2NrLT5leHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9m
ZnNldChieXRlY29kZU9mZnNldCwgZGl2b3RQb2ludCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwg
bGluZSwgY29sdW1uKTsKIAogICAgIGludCBleHByZXNzaW9uU3RhcnQgPSBkaXZvdFBvaW50IC0g
c3RhcnRPZmZzZXQ7CiAgICAgaW50IGV4cHJlc3Npb25TdG9wID0gZGl2b3RQb2ludCArIGVuZE9m
ZnNldDsKQEAgLTU3MiwyNSArNTc0LDI4IEBAIHN0YXRpYyBTdGFja0ZyYW1lQ29kZVR5cGUgZ2V0
U3RhY2tGcmFtZUMKICAgICByZXR1cm4gU3RhY2tGcmFtZUdsb2JhbENvZGU7CiB9CiAKLXVuc2ln
bmVkIFN0YWNrRnJhbWU6OmxpbmUoKQordm9pZCBTdGFja0ZyYW1lOjpjb21wdXRlTGluZUFuZENv
bHVtbih1bnNpZ25lZCYgbGluZSwgdW5zaWduZWQmIGNvbHVtbikKIHsKLSAgICByZXR1cm4gY29k
ZUJsb2NrID8gY29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVP
ZmZzZXQpICsgbGluZU9mZnNldCA6IDA7Ci19CisgICAgaWYgKCFjb2RlQmxvY2spIHsKKyAgICAg
ICAgbGluZSA9IDA7CisgICAgICAgIGNvbHVtbiA9IDA7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiAKLXVuc2lnbmVkIFN0YWNrRnJhbWU6OmNvbHVtbigpCi17Ci0gICAgaWYgKCFjb2RlKQotICAg
ICAgICByZXR1cm4gMDsKICAgICBpbnQgZGl2b3QgPSAwOwogICAgIGludCB1bnVzZWRTdGFydE9m
ZnNldCA9IDA7CiAgICAgaW50IHVudXNlZEVuZE9mZnNldCA9IDA7Ci0gICAgZXhwcmVzc2lvbklu
Zm8oZGl2b3QsIHVudXNlZFN0YXJ0T2Zmc2V0LCB1bnVzZWRFbmRPZmZzZXQpOwotICAgIHJldHVy
biBjb2RlLT5jaGFyUG9zaXRpb25Ub0NvbHVtbk51bWJlcihkaXZvdCk7CisgICAgdW5zaWduZWQg
ZGl2b3RMaW5lID0gMDsKKyAgICB1bnNpZ25lZCBkaXZvdENvbHVtbiA9IDA7CisgICAgZXhwcmVz
c2lvbkluZm8oZGl2b3QsIHVudXNlZFN0YXJ0T2Zmc2V0LCB1bnVzZWRFbmRPZmZzZXQsIGRpdm90
TGluZSwgZGl2b3RDb2x1bW4pOworCisgICAgbGluZSA9IGRpdm90TGluZSArIGxpbmVPZmZzZXQ7
CisgICAgY29sdW1uID0gZGl2b3RDb2x1bW4gKyAoZGl2b3RMaW5lID8gMSA6IGZpcnN0TGluZUNv
bHVtbk9mZnNldCk7CiB9CiAKLXZvaWQgU3RhY2tGcmFtZTo6ZXhwcmVzc2lvbkluZm8oaW50JiBk
aXZvdCwgaW50JiBzdGFydE9mZnNldCwgaW50JiBlbmRPZmZzZXQpCit2b2lkIFN0YWNrRnJhbWU6
OmV4cHJlc3Npb25JbmZvKGludCYgZGl2b3QsIGludCYgc3RhcnRPZmZzZXQsIGludCYgZW5kT2Zm
c2V0LCB1bnNpZ25lZCYgbGluZSwgdW5zaWduZWQmIGNvbHVtbikKIHsKLSAgICBjb2RlQmxvY2st
PmV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBkaXZvdCwg
c3RhcnRPZmZzZXQsIGVuZE9mZnNldCk7CisgICAgY29kZUJsb2NrLT5leHByZXNzaW9uUmFuZ2VG
b3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCwgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQsIGxpbmUsIGNvbHVtbik7CiAgICAgZGl2b3QgKz0gY2hhcmFjdGVyT2Zmc2V0OwogfQog
CkBAIC02MDUsMTAgKzYxMCwxNCBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6dG9TdHJpbmcoQ2FsbEZy
YW1lKiBjCiAgICAgICAgICAgICB0cmFjZUJ1aWxkLmFwcGVuZCgnQCcpOwogICAgICAgICB0cmFj
ZUJ1aWxkLmFwcGVuZChzb3VyY2VVUkwpOwogICAgICAgICBpZiAoY29kZVR5cGUgIT0gU3RhY2tG
cmFtZU5hdGl2ZUNvZGUpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxpbmU7CisgICAgICAgICAg
ICB1bnNpZ25lZCBjb2x1bW47CisgICAgICAgICAgICBjb21wdXRlTGluZUFuZENvbHVtbihsaW5l
LCBjb2x1bW4pOworCiAgICAgICAgICAgICB0cmFjZUJ1aWxkLmFwcGVuZCgnOicpOwotICAgICAg
ICAgICAgdHJhY2VCdWlsZC5hcHBlbmROdW1iZXIobGluZSgpKTsKKyAgICAgICAgICAgIHRyYWNl
QnVpbGQuYXBwZW5kTnVtYmVyKGxpbmUpOwogICAgICAgICAgICAgdHJhY2VCdWlsZC5hcHBlbmQo
JzonKTsKLSAgICAgICAgICAgIHRyYWNlQnVpbGQuYXBwZW5kTnVtYmVyKGNvbHVtbigpKTsKKyAg
ICAgICAgICAgIHRyYWNlQnVpbGQuYXBwZW5kTnVtYmVyKGNvbHVtbik7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgcmV0dXJuIHRyYWNlQnVpbGQudG9TdHJpbmcoKS5pbXBsKCk7CkBAIC02MzYsMTMg
KzY0NSwxNSBAQCB2b2lkIEludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKFZNKiB2bSwgCiAgICAg
ICAgICAgICAgICAgU3Ryb25nPFVubGlua2VkQ29kZUJsb2NrPigqdm0sIGNhbGxlckNvZGVCbG9j
ay0+dW5saW5rZWRDb2RlQmxvY2soKSksCiAgICAgICAgICAgICAgICAgY2FsbGVyQ29kZUJsb2Nr
LT5zb3VyY2UoKSwKICAgICAgICAgICAgICAgICBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0
YWJsZSgpLT5saW5lTm8oKSwKKyAgICAgICAgICAgICAgICBjYWxsZXJDb2RlQmxvY2stPmZpcnN0
TGluZUNvbHVtbk9mZnNldCgpLAogICAgICAgICAgICAgICAgIGNhbGxlckNvZGVCbG9jay0+c291
cmNlT2Zmc2V0KCksCiAgICAgICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQsCiAgICAgICAgICAg
ICAgICAgc291cmNlVVJMCiAgICAgICAgICAgICB9OworCiAgICAgICAgICAgICByZXN1bHRzLmFw
cGVuZChzKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFN0YWNrRnJhbWUgcyA9IHsg
U3Ryb25nPEpTT2JqZWN0Pigqdm0sIGNhbGxGcmFtZS0+Y2FsbGVlKCkpLCBTdGFja0ZyYW1lTmF0
aXZlQ29kZSwgU3Ryb25nPEV4ZWN1dGFibGVCYXNlPigpLCBTdHJvbmc8VW5saW5rZWRDb2RlQmxv
Y2s+KCksIDAsIDAsIDAsIDAsIFN0cmluZygpfTsKKyAgICAgICAgICAgIFN0YWNrRnJhbWUgcyA9
IHsgU3Ryb25nPEpTT2JqZWN0Pigqdm0sIGNhbGxGcmFtZS0+Y2FsbGVlKCkpLCBTdGFja0ZyYW1l
TmF0aXZlQ29kZSwgU3Ryb25nPEV4ZWN1dGFibGVCYXNlPigpLCBTdHJvbmc8VW5saW5rZWRDb2Rl
QmxvY2s+KCksIDAsIDAsIDAsIDAsIDAsIFN0cmluZygpfTsKICAgICAgICAgICAgIHJlc3VsdHMu
YXBwZW5kKHMpOwogICAgICAgICB9CiAgICAgICAgIGNhbGxGcmFtZSA9IGdldENhbGxlckluZm8o
dm0sIGNhbGxGcmFtZSwgYnl0ZWNvZGVPZmZzZXQsIGNhbGxlckNvZGVCbG9jayk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2
aXNpb24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFN0cm9uZzxVbmxpbmtlZENvZGVCbG9jaz4gY29kZUJsb2NrOwogICAgICAgICBS
ZWZQdHI8U291cmNlUHJvdmlkZXI+IGNvZGU7CiAgICAgICAgIGludCBsaW5lT2Zmc2V0OworICAg
ICAgICB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQ7CiAgICAgICAgIHVuc2lnbmVkIGNo
YXJhY3Rlck9mZnNldDsKICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQ7CiAgICAgICAg
IFN0cmluZyBzb3VyY2VVUkw7CkBAIC0xMjUsOSArMTI2LDEwIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRyYWNlTGluZS5pc051bGwoKSA/IGVt
cHR5U3RyaW5nKCkgOiB0cmFjZUxpbmU7CiAgICAgICAgIH0KLSAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdW5zaWduZWQgbGluZSgpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB1bnNpZ25l
ZCBjb2x1bW4oKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBleHByZXNzaW9uSW5m
byhpbnQmIGRpdm90LCBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29tcHV0ZUxpbmVBbmRDb2x1bW4odW5zaWduZWQmIGxp
bmUsIHVuc2lnbmVkJiBjb2x1bW4pOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgdm9pZCBleHBy
ZXNzaW9uSW5mbyhpbnQmIGRpdm90LCBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCwg
dW5zaWduZWQmIGxpbmUsIHVuc2lnbmVkJiBjb2x1bW4pOwogICAgIH07CiAKICAgICBjbGFzcyBU
b3BDYWxsRnJhbWVTZXR0ZXIgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmgJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvQVNUQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw0MiArMzMsNjAgQEAKIG5h
bWVzcGFjZSBKU0MgewogCiBjbGFzcyBBU1RCdWlsZGVyIHsKKyAgICBzdHJ1Y3QgUG9zaXRpb25J
bmZvIHsKKyAgICAgICAgdW5zaWduZWQgc3RhcnRQb3M7CisgICAgICAgIHVuc2lnbmVkIGxpbmU7
CisgICAgICAgIHVuc2lnbmVkIGxpbmVTdGFydFBvczsKKyAgICB9OworCiAgICAgc3RydWN0IEJp
bmFyeU9wSW5mbyB7CiAgICAgICAgIEJpbmFyeU9wSW5mbygpIHt9Ci0gICAgICAgIEJpbmFyeU9w
SW5mbyhpbnQgcywgaW50IGQsIGludCBlLCBib29sIHIpCi0gICAgICAgICAgICA6IHN0YXJ0KHMp
Ci0gICAgICAgICAgICAsIGRpdm90KGQpCi0gICAgICAgICAgICAsIGVuZChlKQotICAgICAgICAg
ICAgLCBoYXNBc3NpZ25tZW50KHIpCisgICAgICAgIEJpbmFyeU9wSW5mbyhpbnQgb3RoZXJTdGFy
dCwgaW50IG90aGVyRGl2b3QsIGludCBvdGhlckVuZCwgdW5zaWduZWQgb3RoZXJEaXZvdExpbmUs
IHVuc2lnbmVkIG90aGVyRGl2b3RMaW5lU3RhcnQsIGJvb2wgcmhzSGFzQXNzaWdubWVudCkKKyAg
ICAgICAgICAgIDogc3RhcnQob3RoZXJTdGFydCkKKyAgICAgICAgICAgICwgZGl2b3Qob3RoZXJE
aXZvdCkKKyAgICAgICAgICAgICwgZW5kKG90aGVyRW5kKQorICAgICAgICAgICAgLCBkaXZvdExp
bmUob3RoZXJEaXZvdExpbmUpCisgICAgICAgICAgICAsIGRpdm90TGluZVN0YXJ0KG90aGVyRGl2
b3RMaW5lU3RhcnQpCisgICAgICAgICAgICAsIGhhc0Fzc2lnbm1lbnQocmhzSGFzQXNzaWdubWVu
dCkKICAgICAgICAgewogICAgICAgICB9CiAgICAgICAgIEJpbmFyeU9wSW5mbyhjb25zdCBCaW5h
cnlPcEluZm8mIGxocywgY29uc3QgQmluYXJ5T3BJbmZvJiByaHMpCiAgICAgICAgICAgICA6IHN0
YXJ0KGxocy5zdGFydCkKICAgICAgICAgICAgICwgZGl2b3QocmhzLnN0YXJ0KQogICAgICAgICAg
ICAgLCBlbmQocmhzLmVuZCkKKyAgICAgICAgICAgICwgZGl2b3RMaW5lKHJocy5kaXZvdExpbmUp
CisgICAgICAgICAgICAsIGRpdm90TGluZVN0YXJ0KHJocy5kaXZvdExpbmVTdGFydCkKICAgICAg
ICAgICAgICwgaGFzQXNzaWdubWVudChsaHMuaGFzQXNzaWdubWVudCB8fCByaHMuaGFzQXNzaWdu
bWVudCkKICAgICAgICAgewogICAgICAgICB9CiAgICAgICAgIGludCBzdGFydDsKICAgICAgICAg
aW50IGRpdm90OwogICAgICAgICBpbnQgZW5kOworICAgICAgICB1bnNpZ25lZCBkaXZvdExpbmU7
CisgICAgICAgIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0OwogICAgICAgICBib29sIGhhc0Fzc2ln
bm1lbnQ7CiAgICAgfTsKICAgICAKICAgICAKICAgICBzdHJ1Y3QgQXNzaWdubWVudEluZm8gewog
ICAgICAgICBBc3NpZ25tZW50SW5mbygpIHt9Ci0gICAgICAgIEFzc2lnbm1lbnRJbmZvKEV4cHJl
c3Npb25Ob2RlKiBub2RlLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGluaXRBc3NpZ25tZW50
cywgT3BlcmF0b3Igb3ApCisgICAgICAgIEFzc2lnbm1lbnRJbmZvKEV4cHJlc3Npb25Ob2RlKiBu
b2RlLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIGRpdm90TGluZSwg
dW5zaWduZWQgZGl2b3RMaW5lU3RhcnQsIGludCBpbml0QXNzaWdubWVudHMsIE9wZXJhdG9yIG9w
KQogICAgICAgICAgICAgOiBtX25vZGUobm9kZSkKICAgICAgICAgICAgICwgbV9zdGFydChzdGFy
dCkKICAgICAgICAgICAgICwgbV9kaXZvdChkaXZvdCkKKyAgICAgICAgICAgICwgbV9kaXZvdExp
bmUoZGl2b3RMaW5lKQorICAgICAgICAgICAgLCBtX2Rpdm90TGluZVN0YXJ0KGRpdm90TGluZVN0
YXJ0KQogICAgICAgICAgICAgLCBtX2luaXRBc3NpZ25tZW50cyhpbml0QXNzaWdubWVudHMpCiAg
ICAgICAgICAgICAsIG1fb3Aob3ApCiAgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2Rp
dm90ID49IG1fZGl2b3RMaW5lU3RhcnQpOworICAgICAgICAgICAgQVNTRVJUKG1fc3RhcnQgPj0g
bV9kaXZvdExpbmVTdGFydCk7CiAgICAgICAgIH0KICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1f
bm9kZTsKLSAgICAgICAgaW50IG1fc3RhcnQ7Ci0gICAgICAgIGludCBtX2Rpdm90OworICAgICAg
ICB1bnNpZ25lZCBtX3N0YXJ0OworICAgICAgICB1bnNpZ25lZCBtX2Rpdm90OworICAgICAgICB1
bnNpZ25lZCBtX2Rpdm90TGluZTsKKyAgICAgICAgdW5zaWduZWQgbV9kaXZvdExpbmVTdGFydDsK
ICAgICAgICAgaW50IG1faW5pdEFzc2lnbm1lbnRzOwogICAgICAgICBPcGVyYXRvciBtX29wOwog
ICAgIH07CkBAIC0xMTMsNyArMTMxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBpbnQg
IERvbnRCdWlsZFN0cmluZ3MgPSAwOwogCiAgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaW5hcnlO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCB0b2tlbiwgc3RkOjpwYWlyPEV4cHJlc3Np
b25Ob2RlKiwgQmluYXJ5T3BJbmZvPiwgc3RkOjpwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5
T3BJbmZvPik7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBmdW5jLCBBcmd1bWVudHNOb2RlKiBh
cmdzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7CisgICAgRXhwcmVzc2lvbk5vZGUq
IG1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKiBmdW5jLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBpbnQgc3RhcnQsIHVuc2lnbmVkIGRpdm90
LCBpbnQgZW5kLCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KTsK
IAogICAgIEpTQzo6U291cmNlRWxlbWVudHMqIGNyZWF0ZVNvdXJjZUVsZW1lbnRzKCkgeyByZXR1
cm4gbmV3IChtX3ZtKSBKU0M6OlNvdXJjZUVsZW1lbnRzKCk7IH0KIApAQCAtMTI2LDExICsxNDQs
MTEgQEAgcHVibGljOgogCiAgICAgQ29tbWFOb2RlKiBjcmVhdGVDb21tYUV4cHIoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhwcmVzc2lvbk5v
ZGUqIHJocykgeyByZXR1cm4gbmV3IChtX3ZtKSBDb21tYU5vZGUobG9jYXRpb24sIGxocywgcmhz
KTsgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VBc3NpZ25Ob2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUq
IHJpZ2h0LCBib29sIGxlZnRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
LCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1h
a2VQcmVmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgT3Bl
cmF0b3IsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKLSAgICBFeHByZXNzaW9uTm9k
ZSogbWFrZVBvc3RmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2Rl
KiwgT3BlcmF0b3IsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKKyAgICBFeHByZXNz
aW9uTm9kZSogbWFrZUFzc2lnbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
bk5vZGUqIGxlZnQsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgbGVmdEhh
c0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50IGRp
dm90LCBpbnQgZW5kLCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0
KTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZVByZWZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGlu
dCBlbmQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpOworICAg
IEV4cHJlc3Npb25Ob2RlKiBtYWtlUG9zdGZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQs
IHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpOwogICAgIEV4cHJl
c3Npb25Ob2RlKiBtYWtlVHlwZU9mTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uTm9kZSopOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRGVsZXRlTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQg
ZW5kKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZURlbGV0ZU5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCwg
dW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCk7IAogICAgIEV4cHJl
c3Npb25Ob2RlKiBtYWtlTmVnYXRlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uTm9kZSopOwogICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0d2lzZU5vdE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKICAgICBFeHByZXNzaW9uTm9kZSog
bWFrZU11bHROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0
LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CkBAIC0x
NjMsMTEgKzE4MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHVzZXNUaGlzKCk7CiAgICAgICAgIHJl
dHVybiBuZXcgKG1fdm0pIFRoaXNOb2RlKGxvY2F0aW9uKTsKICAgICB9Ci0gICAgRXhwcmVzc2lv
bk5vZGUqIGNyZWF0ZVJlc29sdmUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29u
c3QgSWRlbnRpZmllciogaWRlbnQsIGludCBzdGFydCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlUmVzb2x2ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlm
aWVyKiBpZGVudCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQg
ZGl2b3RMaW5lU3RhcnQpCiAgICAgewogICAgICAgICBpZiAobV92bS0+cHJvcGVydHlOYW1lcy0+
YXJndW1lbnRzID09ICppZGVudCkKICAgICAgICAgICAgIHVzZXNBcmd1bWVudHMoKTsKLSAgICAg
ICAgcmV0dXJuIG5ldyAobV92bSkgUmVzb2x2ZU5vZGUobG9jYXRpb24sICppZGVudCwgc3RhcnQp
OworICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBSZXNvbHZlTm9kZShsb2NhdGlvbiwgKmlkZW50
LCBzdGFydCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7CiAgICAgfQogICAgIEV4cHJlc3Np
b25Ob2RlKiBjcmVhdGVPYmplY3RMaXRlcmFsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24pIHsgcmV0dXJuIG5ldyAobV92bSkgT2JqZWN0TGl0ZXJhbE5vZGUobG9jYXRpb24pOyB9CiAg
ICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU9iamVjdExpdGVyYWwoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlMaXN0Tm9kZSogcHJvcGVydGllcykgeyByZXR1cm4gbmV3
IChtX3ZtKSBPYmplY3RMaXRlcmFsTm9kZShsb2NhdGlvbiwgcHJvcGVydGllcyk7IH0KQEAgLTIx
MCw0MSArMjI4LDQxIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5ldyAobV92bSkgTnVsbE5v
ZGUobG9jYXRpb24pOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVCcmFja2V0
QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBFeHByZXNzaW9uTm9kZSogcHJvcGVydHksIGJvb2wgcHJvcGVydHlIYXNBc3NpZ25tZW50
cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNy
ZWF0ZUJyYWNrZXRBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eSwgYm9vbCBwcm9wZXJ0eUhh
c0Fzc2lnbm1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCwgdW5zaWduZWQgZGl2
b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICB7CiAgICAgICAgIEJyYWNrZXRB
Y2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fdm0pIEJyYWNrZXRBY2Nlc3Nvck5vZGUobG9jYXRp
b24sIGJhc2UsIHByb3BlcnR5LCBwcm9wZXJ0eUhhc0Fzc2lnbm1lbnRzKTsKLSAgICAgICAgc2V0
RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOworICAgICAgICBzZXRF
eGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCwgZGl2b3RMaW5lLCBkaXZv
dExpbmVTdGFydCk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Np
b25Ob2RlKiBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5LCBpbnQgc3Rh
cnQsIGludCBkaXZvdCwgaW50IGVuZCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRG90QWNj
ZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eSwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBl
bmQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAgewog
ICAgICAgICBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fdm0pIERvdEFjY2Vzc29yTm9k
ZShsb2NhdGlvbiwgYmFzZSwgKnByb3BlcnR5KTsKLSAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRp
b24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOworICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlv
bihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7CiAg
ICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVS
ZWdFeHAoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYg
cGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MsIGludCBzdGFydCkKKyAgICBFeHByZXNz
aW9uTm9kZSogY3JlYXRlUmVnRXhwKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNv
bnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzLCBpbnQgc3Rh
cnQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAgewog
ICAgICAgICBpZiAoWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi5zdHJpbmcoKSkpCiAgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICAgICAgUmVnRXhwTm9kZSogbm9kZSA9IG5ldyAobV92bSkgUmVn
RXhwTm9kZShsb2NhdGlvbiwgcGF0dGVybiwgZmxhZ3MpOwogICAgICAgICBpbnQgc2l6ZSA9IHBh
dHRlcm4ubGVuZ3RoKCkgKyAyOyAvLyArIDIgZm9yIHRoZSB0d28gLydzCi0gICAgICAgIHNldEV4
Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBzdGFydCArIHNpemUsIHN0YXJ0ICsgc2l6ZSk7
CisgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBzdGFydCArIHNpemUs
IHN0YXJ0ICsgc2l6ZSwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7CiAgICAgICAgIHJldHVy
biBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOZXdFeHByKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVu
dHNOb2RlKiBhcmd1bWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQorICAgIEV4
cHJlc3Npb25Ob2RlKiBjcmVhdGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmd1bWVudHMsIGludCBz
dGFydCwgaW50IGRpdm90LCBpbnQgZW5kLCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRp
dm90TGluZVN0YXJ0KQogICAgIHsKICAgICAgICAgTmV3RXhwck5vZGUqIG5vZGUgPSBuZXcgKG1f
dm0pIE5ld0V4cHJOb2RlKGxvY2F0aW9uLCBleHByLCBhcmd1bWVudHMpOwotICAgICAgICBzZXRF
eGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CisgICAgICAgIHNldEV4
Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kLCBkaXZvdExpbmUsIGRpdm90
TGluZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lv
bk5vZGUqIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGVuZCkKKyAgICBFeHByZXNzaW9uTm9k
ZSogY3JlYXRlTmV3RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNz
aW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBkaXZvdExpbmUsIHVu
c2lnbmVkIGRpdm90TGluZVN0YXJ0KQogICAgIHsKICAgICAgICAgTmV3RXhwck5vZGUqIG5vZGUg
PSBuZXcgKG1fdm0pIE5ld0V4cHJOb2RlKGxvY2F0aW9uLCBleHByKTsKLSAgICAgICAgc2V0RXhj
ZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGVuZCwgZW5kKTsKKyAgICAgICAgc2V0RXhjZXB0
aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGVuZCwgZW5kLCBkaXZvdExpbmUsIGRpdm90TGluZVN0
YXJ0KTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCkBAIC0yNTMsMjUgKzI3MSwyNSBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBuZXcgKG1fdm0pIENvbmRpdGlvbmFsTm9kZShsb2Nh
dGlvbiwgY29uZGl0aW9uLCBsaHMsIHJocyk7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUq
IGNyZWF0ZUFzc2lnblJlc29sdmUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaHMsIGludCBzdGFydCwgaW50
IGRpdm90LCBpbnQgZW5kKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBc3NpZ25SZXNvbHZl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBFeHByZXNzaW9uTm9kZSogcmhzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCwgdW5z
aWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICB7CiAgICAgICAg
IGlmIChyaHMtPmlzRnVuY0V4cHJOb2RlKCkpCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxGdW5j
RXhwck5vZGUqPihyaHMpLT5ib2R5KCktPnNldEluZmVycmVkTmFtZShpZGVudCk7CiAgICAgICAg
IEFzc2lnblJlc29sdmVOb2RlKiBub2RlID0gbmV3IChtX3ZtKSBBc3NpZ25SZXNvbHZlTm9kZShs
b2NhdGlvbiwgaWRlbnQsIHJocyk7Ci0gICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUs
IHN0YXJ0LCBkaXZvdCwgZW5kKTsKKyAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwg
c3RhcnQsIGRpdm90LCBlbmQsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogICAgICAgICBy
ZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRnVuY3Rpb25F
eHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIqIG5h
bWUsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcnMsIGlu
dCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50
IGJvZHlFbmRMaW5lKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVGdW5jdGlvbkV4cHIoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgRnVu
Y3Rpb25Cb2R5Tm9kZSogYm9keSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVycywgdW5zaWduZWQg
b3BlbkJyYWNlT2Zmc2V0LCB1bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0LCBpbnQgYm9keVN0YXJ0
TGluZSwgaW50IGJvZHlFbmRMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbikKICAgICB7Ci0gICAg
ICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBGdW5jRXhwck5vZGUobG9jYXRp
b24sICpuYW1lLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNlUG9z
LCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSwgcGFyYW1ldGVycyk7Ci0gICAgICAgIGJv
ZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSwgbG9jYXRpb24uY2hhclBvc2l0
aW9uKTsKKyAgICAgICAgRnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fdm0pIEZ1bmNFeHBy
Tm9kZShsb2NhdGlvbiwgKm5hbWUsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihv
cGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZzZXQsIGJvZHlTdGFydExpbmUsIHN0YXJ0Q29s
dW1uKSwgcGFyYW1ldGVycyk7CisgICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBi
b2R5RW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNl
dCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgRnVuY3Rpb25Cb2R5Tm9k
ZSogY3JlYXRlRnVuY3Rpb25Cb2R5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlv
biwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgYm9vbCBpblN0cmljdENvbnRl
eHQpCisgICAgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlRnVuY3Rpb25Cb2R5KGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2Nh
dGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIGJvb2wgaW5TdHJpY3RDb250ZXh0KQogICAgIHsK
LSAgICAgICAgcmV0dXJuIEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShtX3ZtLCBzdGFydExvY2F0
aW9uLCBlbmRMb2NhdGlvbiwgaW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIEZ1bmN0
aW9uQm9keU5vZGU6OmNyZWF0ZShtX3ZtLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc3Rh
cnRDb2x1bW4sIGluU3RyaWN0Q29udGV4dCk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRGdW5jdGlv
blN0YXJ0KEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGludCBmdW5jdGlvblN0YXJ0KQpAQCAtMjc5
LDE4ICsyOTcsMTggQEAgcHVibGljOgogICAgICAgICBib2R5LT5zZXRGdW5jdGlvblN0YXJ0KGZ1
bmN0aW9uU3RhcnQpOwogICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVydHlO
b2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBjb25zdCBJZGVudGlmaWVyKiBuYW1l
LCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGludCBvcGVu
QnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlF
bmRMaW5lKQorICAgIHRlbXBsYXRlIDxib29sPiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9y
U2V0dGVyUHJvcGVydHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlO
b2RlOjpUeXBlIHR5cGUsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIFBhcmFtZXRlck5vZGUqIHBh
cmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgdW5zaWduZWQgb3BlbkJyYWNlT2Zmc2V0LCB1
bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0LCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRM
aW5lLCB1bnNpZ25lZCBib2R5U3RhcnRDb2x1bW4pCiAgICAgewogICAgICAgICBBU1NFUlQobmFt
ZSk7Ci0gICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSwgbG9j
YXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUs
IGJvZHlFbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zm
c2V0KTsKICAgICAgICAgYm9keS0+c2V0SW5mZXJyZWROYW1lKCpuYW1lKTsKLSAgICAgICAgcmV0
dXJuIG5ldyAobV92bSkgUHJvcGVydHlOb2RlKG1fdm0sICpuYW1lLCBuZXcgKG1fdm0pIEZ1bmNF
eHByTm9kZShsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGJv
ZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQ
b3MsIGJvZHlTdGFydExpbmUpLCBwYXJhbXMpLCB0eXBlKTsKKyAgICAgICAgcmV0dXJuIG5ldyAo
bV92bSkgUHJvcGVydHlOb2RlKG1fdm0sICpuYW1lLCBuZXcgKG1fdm0pIEZ1bmNFeHByTm9kZShs
b2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGJvZHksIG1fc291
cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZzZXQs
IGJvZHlTdGFydExpbmUsIGJvZHlTdGFydENvbHVtbiksIHBhcmFtcyksIHR5cGUpOwogICAgIH0K
ICAgICAKLSAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNl
dHRlclByb3BlcnR5KFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVy
dHlOb2RlOjpUeXBlIHR5cGUsIGRvdWJsZSBuYW1lLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMsIEZ1
bmN0aW9uQm9keU5vZGUqIGJvZHksIGludCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9z
LCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lKQorICAgIHRlbXBsYXRlIDxib29s
PiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoVk0qLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgZG91Ymxl
IG5hbWUsIFBhcmFtZXRlck5vZGUqIHBhcmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgdW5z
aWduZWQgb3BlbkJyYWNlT2Zmc2V0LCB1bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0LCBpbnQgYm9k
eVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lLCB1bnNpZ25lZCBib2R5U3RhcnRDb2x1bW4pCiAg
ICAgewotICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUsIGxv
Y2F0aW9uLmNoYXJQb3NpdGlvbik7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fdm0pIFByb3BlcnR5
Tm9kZShtX3ZtLCBuYW1lLCBuZXcgKG1fdm0pIEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgbV92bS0+
cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhw
cmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJh
bXMpLCB0eXBlKTsKKyAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlFbmRM
aW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKKyAg
ICAgICAgcmV0dXJuIG5ldyAobV92bSkgUHJvcGVydHlOb2RlKG1fdm0sIG5hbWUsIG5ldyAobV92
bSkgRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRp
ZmllciwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZU9mZnNldCwg
Y2xvc2VCcmFjZU9mZnNldCwgYm9keVN0YXJ0TGluZSwgYm9keVN0YXJ0Q29sdW1uKSwgcGFyYW1z
KSwgdHlwZSk7CiAgICAgfQogCiAgICAgQXJndW1lbnRzTm9kZSogY3JlYXRlQXJndW1lbnRzKCkg
eyByZXR1cm4gbmV3IChtX3ZtKSBBcmd1bWVudHNOb2RlKCk7IH0KQEAgLTMyMCw1NyArMzM4LDU3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VXNlc0FyZ3VtZW50cyhGdW5jdGlvbkJvZHlOb2Rl
KiBub2RlKSB7IG5vZGUtPnNldFVzZXNBcmd1bWVudHMoKTsgfQogCi0gICAgU3RhdGVtZW50Tm9k
ZSogY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgUGFyYW1l
dGVyTm9kZSogcGFyYW1ldGVycywgaW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3NlQnJhY2VQb3Ms
IGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSog
Y3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
Y29uc3QgSWRlbnRpZmllciogbmFtZSwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgUGFyYW1ldGVy
Tm9kZSogcGFyYW1ldGVycywgdW5zaWduZWQgb3BlbkJyYWNlT2Zmc2V0LCB1bnNpZ25lZCBjbG9z
ZUJyYWNlT2Zmc2V0LCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lLCB1bnNpZ25l
ZCBib2R5U3RhcnRDb2x1bW4pCiAgICAgewotICAgICAgICBGdW5jRGVjbE5vZGUqIGRlY2wgPSBu
ZXcgKG1fdm0pIEZ1bmNEZWNsTm9kZShsb2NhdGlvbiwgKm5hbWUsIGJvZHksIG1fc291cmNlQ29k
ZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExp
bmUpLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgRnVuY0RlY2xOb2RlKiBkZWNsID0gbmV3IChtX3Zt
KSBGdW5jRGVjbE5vZGUobG9jYXRpb24sICpuYW1lLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4
cHJlc3Npb24ob3BlbkJyYWNlT2Zmc2V0LCBjbG9zZUJyYWNlT2Zmc2V0LCBib2R5U3RhcnRMaW5l
LCBib2R5U3RhcnRDb2x1bW4pLCBwYXJhbWV0ZXJzKTsKICAgICAgICAgaWYgKCpuYW1lID09IG1f
dm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cykKICAgICAgICAgICAgIHVzZXNBcmd1bWVudHMo
KTsKICAgICAgICAgbV9zY29wZS5tX2Z1bmNEZWNsYXJhdGlvbnMtPmRhdGEuYXBwZW5kKGRlY2wt
PmJvZHkoKSk7Ci0gICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5kTGlu
ZSwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFy
dExpbmUsIGJvZHlFbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0
YXJ0T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIGRlY2w7CiAgICAgfQogCiAgICAgU3RhdGVtZW50
Tm9kZSogY3JlYXRlQmxvY2tTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgSlNDOjpTb3VyY2VFbGVtZW50cyogZWxlbWVudHMsIGludCBzdGFydExpbmUsIGludCBlbmRM
aW5lKQogICAgIHsKICAgICAgICAgQmxvY2tOb2RlKiBibG9jayA9IG5ldyAobV92bSkgQmxvY2tO
b2RlKGxvY2F0aW9uLCBlbGVtZW50cyk7Ci0gICAgICAgIGJsb2NrLT5zZXRMb2Moc3RhcnRMaW5l
LCBlbmRMaW5lLCBsb2NhdGlvbi5jaGFyUG9zaXRpb24pOworICAgICAgICBibG9jay0+c2V0TG9j
KHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVT
dGFydE9mZnNldCk7CiAgICAgICAgIHJldHVybiBibG9jazsKICAgICB9CiAKICAgICBTdGF0ZW1l
bnROb2RlKiBjcmVhdGVFeHByU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBlbmQpCiAgICAgewogICAg
ICAgICBFeHByU3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBFeHByU3RhdGVtZW50
Tm9kZShsb2NhdGlvbiwgZXhwcik7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQs
IGxvY2F0aW9uLmNoYXJQb3NpdGlvbik7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBl
bmQsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUlm
U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIHRydWVCbG9jaywgU3RhdGVtZW50Tm9kZSogZmFs
c2VCbG9jaywgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKICAgICAgICAgSWZFbHNlTm9kZSog
cmVzdWx0ID0gbmV3IChtX3ZtKSBJZkVsc2VOb2RlKGxvY2F0aW9uLCBjb25kaXRpb24sIHRydWVC
bG9jaywgZmFsc2VCbG9jayk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQsIGxv
Y2F0aW9uLmNoYXJQb3NpdGlvbik7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQs
IGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckxv
b3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGluaXRp
YWxpemVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBFeHByZXNzaW9uTm9kZSogaXRlciwg
U3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKICAg
ICAgICAgRm9yTm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBGb3JOb2RlKGxvY2F0aW9uLCBpbml0
aWFsaXplciwgY29uZGl0aW9uLCBpdGVyLCBzdGF0ZW1lbnRzKTsKLSAgICAgICAgcmVzdWx0LT5z
ZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgcmVzdWx0
LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVT
dGFydE9mZnNldCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVt
ZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIsIEV4
cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBpbnQgc3RhcnQs
IGludCBkaXZvdCwgaW50IGVuZCwgaW50IGluaXRTdGFydCwgaW50IGluaXRFbmQsIGludCBzdGFy
dExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9vcChj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwg
RXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVyLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVt
ZW50Tm9kZSogc3RhdGVtZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQsIGludCBp
bml0U3RhcnQsIGludCBpbml0RW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSwgdW5zaWdu
ZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICB7Ci0gICAgICAgIEZv
ckluTm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBGb3JJbk5vZGUobV92bSwgbG9jYXRpb24sICpp
ZGVudCwgaW5pdGlhbGl6ZXIsIGl0ZXIsIHN0YXRlbWVudHMsIGluaXRTdGFydCwgaW5pdFN0YXJ0
IC0gc3RhcnQsIGluaXRFbmQgLSBpbml0U3RhcnQpOwotICAgICAgICByZXN1bHQtPnNldExvYyhz
dGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNoYXJQb3NpdGlvbik7Ci0gICAgICAgIHNldEV4
Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgc3RhcnQsIGRpdm90ICsgMSwgZW5kKTsKKyAgICAgICAg
Rm9ySW5Ob2RlKiByZXN1bHQgPSBuZXcgKG1fdm0pIEZvckluTm9kZShtX3ZtLCBsb2NhdGlvbiwg
KmlkZW50LCBpbml0aWFsaXplciwgaXRlciwgc3RhdGVtZW50cywgaW5pdFN0YXJ0LCBpbml0U3Rh
cnQgLSBzdGFydCwgaW5pdEVuZCAtIGluaXRTdGFydCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFy
dCk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24u
c3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CisgICAgICAgIHNldEV4Y2Vw
dGlvbkxvY2F0aW9uKHJlc3VsdCwgc3RhcnQsIGRpdm90ICsgMSwgZW5kLCBkaXZvdExpbmUsIGRp
dm90TGluZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVGb3JJbkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5v
ZGUqIHN0YXRlbWVudHMsIGludCBlU3RhcnQsIGludCBlRGl2b3QsIGludCBlRW5kLCBpbnQgc3Rh
cnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29wKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Npb25O
b2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBpbnQgZVN0YXJ0LCBpbnQgZURp
dm90LCBpbnQgZUVuZCwgaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBkaXZvdExpbmUsIHVu
c2lnbmVkIGRpdm90TGluZVN0YXJ0KQogICAgIHsKICAgICAgICAgRm9ySW5Ob2RlKiByZXN1bHQg
PSBuZXcgKG1fdm0pIEZvckluTm9kZShsb2NhdGlvbiwgbGhzLCBpdGVyLCBzdGF0ZW1lbnRzKTsK
LSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uY2hhclBvc2l0aW9u
KTsKLSAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVEaXZvdCwg
ZUVuZCk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQsIGxvY2F0aW9uLnN0YXJ0
T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOworICAgICAgICBzZXRFeGNlcHRpb25M
b2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZURpdm90LCBlRW5kLCBkaXZvdExpbmUsIGRpdm90TGlu
ZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTM4Myw0NyArNDAx
LDQ3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyAobV92bSkgRW1wdHlTdGF0
ZW1lbnROb2RlKGxvY2F0aW9uKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0g
bmV3IChtX3ZtKSBWYXJTdGF0ZW1lbnROb2RlKGxvY2F0aW9uLCBleHByKTsKLSAgICAgICAgcmVz
dWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAg
cmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9u
LmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAg
U3RhdGVtZW50Tm9kZSogY3JlYXRlUmV0dXJuU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByZXNzaW9uLCBpbnQgZVN0YXJ0LCBpbnQg
ZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3Jl
YXRlUmV0dXJuU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBleHByZXNzaW9uLCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGlu
ZSwgaW50IGVuZExpbmUsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3Rh
cnQpCiAgICAgewogICAgICAgICBSZXR1cm5Ob2RlKiByZXN1bHQgPSBuZXcgKG1fdm0pIFJldHVy
bk5vZGUobG9jYXRpb24sIGV4cHJlc3Npb24pOwotICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlv
bihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0
YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgc2V0RXhj
ZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVFbmQsIGVFbmQsIGRpdm90TGluZSwgZGl2
b3RMaW5lU3RhcnQpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUs
IGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUJyZWFr
U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGludCBlU3RhcnQsIGlu
dCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBj
cmVhdGVCcmVha1N0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBpbnQg
ZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUsIHVuc2lnbmVkIGVu
ZExpbmVTdGFydCkKICAgICB7CiAgICAgICAgIEJyZWFrTm9kZSogcmVzdWx0ID0gbmV3IChtX3Zt
KSBCcmVha05vZGUobV92bSwgbG9jYXRpb24pOwotICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlv
bihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0
YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgc2V0RXhj
ZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVFbmQsIGVFbmQsIGVuZExpbmUsIGVuZExp
bmVTdGFydCk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9j
YXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQnJlYWtTdGF0
ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciog
aWRlbnQsIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkK
KyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVCcmVha1N0YXRlbWVudChjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgaW50IGVTdGFydCwgaW50
IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lLCB1bnNpZ25lZCBlbmRMaW5lU3RhcnQp
CiAgICAgewogICAgICAgICBCcmVha05vZGUqIHJlc3VsdCA9IG5ldyAobV92bSkgQnJlYWtOb2Rl
KGxvY2F0aW9uLCAqaWRlbnQpOwotICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQs
IGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwg
ZW5kTGluZSwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgc2V0RXhjZXB0aW9uTG9j
YXRpb24ocmVzdWx0LCBlU3RhcnQsIGVFbmQsIGVFbmQsIGVuZExpbmUsIGVuZExpbmVTdGFydCk7
CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uc3Rh
cnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQ29udGludWVTdGF0ZW1lbnQo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50IGVTdGFydCwgaW50IGVFbmQsIGlu
dCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUNvbnRp
bnVlU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGludCBlU3RhcnQs
IGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSwgdW5zaWduZWQgZW5kTGluZVN0
YXJ0KQogICAgIHsKICAgICAgICAgQ29udGludWVOb2RlKiByZXN1bHQgPSBuZXcgKG1fdm0pIENv
bnRpbnVlTm9kZShtX3ZtLCBsb2NhdGlvbik7Ci0gICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9u
KHJlc3VsdCwgZVN0YXJ0LCBlRW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3Rh
cnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jaGFyUG9zaXRpb24pOworICAgICAgICBzZXRFeGNl
cHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCwgZW5kTGluZSwgZW5kTGlu
ZVN0YXJ0KTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2Nh
dGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVDb250aW51ZVN0
YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVy
KiBpZGVudCwgaW50IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5l
KQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBpbnQgZVN0YXJ0
LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUsIHVuc2lnbmVkIGVuZExpbmVT
dGFydCkKICAgICB7CiAgICAgICAgIENvbnRpbnVlTm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBD
b250aW51ZU5vZGUobG9jYXRpb24sICppZGVudCk7Ci0gICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0
aW9uKHJlc3VsdCwgZVN0YXJ0LCBlRW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Mo
c3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jaGFyUG9zaXRpb24pOworICAgICAgICBzZXRF
eGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCwgZW5kTGluZSwgZW5k
TGluZVN0YXJ0KTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBs
b2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTQzMiw3ICs0NTAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFRyeU5vZGUqIHJlc3VsdCA9IG5ldyAobV92bSkgVHJ5Tm9kZShsb2NhdGlvbiwgdHJ5Qmxv
Y2ssICppZGVudCwgY2F0Y2hCbG9jaywgZmluYWxseUJsb2NrKTsKICAgICAgICAgaWYgKGNhdGNo
QmxvY2spCiAgICAgICAgICAgICB1c2VzQ2F0Y2goKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Mo
c3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jaGFyUG9zaXRpb24pOworICAgICAgICByZXN1
bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2Nh
dGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApA
QCAtNDQwLDU4ICs0NTgsNTggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQ2FzZUJsb2NrTm9k
ZSogY2FzZXMgPSBuZXcgKG1fdm0pIENhc2VCbG9ja05vZGUoZmlyc3RDbGF1c2VzLCBkZWZhdWx0
Q2xhdXNlLCBzZWNvbmRDbGF1c2VzKTsKICAgICAgICAgU3dpdGNoTm9kZSogcmVzdWx0ID0gbmV3
IChtX3ZtKSBTd2l0Y2hOb2RlKGxvY2F0aW9uLCBleHByLCBjYXNlcyk7Ci0gICAgICAgIHJlc3Vs
dC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAg
ICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9m
ZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKICAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVXaGlsZVN0YXRlbWVudChjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50
Tm9kZSogc3RhdGVtZW50LCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7CiAgICAg
ICAgIFdoaWxlTm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBXaGlsZU5vZGUobG9jYXRpb24sIGV4
cHIsIHN0YXRlbWVudCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGlu
ZSwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRM
aW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zm
c2V0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBTdGF0ZW1lbnROb2Rl
KiBjcmVhdGVEb1doaWxlU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFy
dExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKICAgICAgICAgRG9XaGlsZU5vZGUqIHJlc3VsdCA9
IG5ldyAobV92bSkgRG9XaGlsZU5vZGUobG9jYXRpb24sIHN0YXRlbWVudCwgZXhwcik7Ci0gICAg
ICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY2hhclBvc2l0
aW9uKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlv
bi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVMYWJlbFN0YXRlbWVu
dChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3Rh
dGVtZW50Tm9kZSogY3JlYXRlTGFiZWxTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVu
dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNp
Z25lZCBkaXZvdExpbmVTdGFydCkKICAgICB7CiAgICAgICAgIExhYmVsTm9kZSogcmVzdWx0ID0g
bmV3IChtX3ZtKSBMYWJlbE5vZGUobG9jYXRpb24sICppZGVudCwgc3RhdGVtZW50KTsKLSAgICAg
ICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBzdGFydCwgZW5kLCBlbmQpOworICAgICAg
ICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIHN0YXJ0LCBlbmQsIGVuZCwgZGl2b3RMaW5l
LCBkaXZvdExpbmVTdGFydCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAg
U3RhdGVtZW50Tm9kZSogY3JlYXRlV2l0aFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50
LCBpbnQgc3RhcnQsIGludCBlbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0
YXRlbWVudE5vZGUqIGNyZWF0ZVdpdGhTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwg
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwgdW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25l
ZCBlbmRMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQog
ICAgIHsKICAgICAgICAgdXNlc1dpdGgoKTsKLSAgICAgICAgV2l0aE5vZGUqIHJlc3VsdCA9IG5l
dyAobV92bSkgV2l0aE5vZGUobG9jYXRpb24sIGV4cHIsIHN0YXRlbWVudCwgZW5kLCBlbmQgLSBz
dGFydCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRp
b24uY2hhclBvc2l0aW9uKTsKKyAgICAgICAgV2l0aE5vZGUqIHJlc3VsdCA9IG5ldyAobV92bSkg
V2l0aE5vZGUobG9jYXRpb24sIGV4cHIsIHN0YXRlbWVudCwgZW5kLCBkaXZvdExpbmUsIGRpdm90
TGluZVN0YXJ0LCBlbmQgLSBzdGFydCk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGlu
ZSwgZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNl
dCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfSAgICAKICAgICAKLSAgICBTdGF0ZW1l
bnROb2RlKiBjcmVhdGVUaHJvd1N0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgc3RhcnRM
aW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVUaHJvd1N0YXRlbWVu
dChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwg
aW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSwgdW5zaWduZWQg
ZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICB7CiAgICAgICAgIFRocm93
Tm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBUaHJvd05vZGUobG9jYXRpb24sIGV4cHIpOwotICAg
ICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNoYXJQb3Np
dGlvbik7Ci0gICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgc3RhcnQsIGVuZCwg
ZW5kKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlv
bi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgc2V0RXhj
ZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBzdGFydCwgZW5kLCBlbmQsIGRpdm90TGluZSwgZGl2b3RM
aW5lU3RhcnQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKICAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVEZWJ1Z2dlcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7CiAgICAgICAgIERlYnVnZ2VyU3Rh
dGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBEZWJ1Z2dlclN0YXRlbWVudE5vZGUobG9j
YXRpb24pOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0
aW9uLmNoYXJQb3NpdGlvbik7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5k
TGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAogICAgIFN0YXRlbWVudE5vZGUqIGNy
ZWF0ZUNvbnN0U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIENvbnN0
RGVjbE5vZGUqIGRlY2xzLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7CiAgICAg
ICAgIENvbnN0U3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBDb25zdFN0YXRlbWVu
dE5vZGUobG9jYXRpb24sIGRlY2xzKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5l
LCBlbmRMaW5lLCBsb2NhdGlvbi5jaGFyUG9zaXRpb24pOworICAgICAgICByZXN1bHQtPnNldExv
YyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5l
U3RhcnRPZmZzZXQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtNTI4LDEw
ICs1NDYsMTAgQEAgcHVibGljOgogCiAgICAgaW50IGV2YWxDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fZXZhbENvdW50OyB9CiAKLSAgICB2b2lkIGFwcGVuZEJpbmFyeUV4cHJlc3Npb25JbmZvKGlu
dCYgb3BlcmFuZFN0YWNrRGVwdGgsIEV4cHJlc3Npb25Ob2RlKiBjdXJyZW50LCBpbnQgZXhwclN0
YXJ0LCBpbnQgbGhzLCBpbnQgcmhzLCBib29sIGhhc0Fzc2lnbm1lbnRzKQorICAgIHZvaWQgYXBw
ZW5kQmluYXJ5RXhwcmVzc2lvbkluZm8oaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgRXhwcmVzc2lv
bk5vZGUqIGN1cnJlbnQsIGludCBleHByU3RhcnQsIGludCBsaHMsIGludCByaHMsIHVuc2lnbmVk
IGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQsIGJvb2wgaGFzQXNzaWdubWVudHMp
CiAgICAgewogICAgICAgICBvcGVyYW5kU3RhY2tEZXB0aCsrOwotICAgICAgICBtX2JpbmFyeU9w
ZXJhbmRTdGFjay5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY3VycmVudCwgQmluYXJ5T3BJbmZvKGV4
cHJTdGFydCwgbGhzLCByaHMsIGhhc0Fzc2lnbm1lbnRzKSkpOworICAgICAgICBtX2JpbmFyeU9w
ZXJhbmRTdGFjay5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY3VycmVudCwgQmluYXJ5T3BJbmZvKGV4
cHJTdGFydCwgbGhzLCByaHMsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQsIGhhc0Fzc2lnbm1l
bnRzKSkpOwogICAgIH0KIAogICAgIC8vIExvZ2ljIHRvIGhhbmRsZSBkYXRhc3RydWN0dXJlcyB1
c2VkIGR1cmluZyBwYXJzaW5nIG9mIGJpbmFyeSBleHByZXNzaW9ucwpAQCAtNTY4LDEwICs1ODYs
MTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAgICB2
b2lkIGFwcGVuZFVuYXJ5VG9rZW4oaW50JiB0b2tlblN0YWNrRGVwdGgsIGludCB0eXBlLCBpbnQg
c3RhcnQpCisgICAgdm9pZCBhcHBlbmRVbmFyeVRva2VuKGludCYgdG9rZW5TdGFja0RlcHRoLCBp
bnQgdHlwZSwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2
b3RMaW5lU3RhcnQpCiAgICAgewogICAgICAgICB0b2tlblN0YWNrRGVwdGgrKzsKLSAgICAgICAg
bV91bmFyeVRva2VuU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHR5cGUsIHN0YXJ0KSk7Cisg
ICAgICAgIFBvc2l0aW9uSW5mbyBwb3NpdGlvbiA9IHsgc3RhcnQsIGRpdm90TGluZSwgZGl2b3RM
aW5lU3RhcnQgfTsKKyAgICAgICAgbV91bmFyeVRva2VuU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKHR5cGUsIHBvc2l0aW9uKSk7CiAgICAgfQogCiAgICAgaW50IHVuYXJ5VG9rZW5TdGFja0xh
c3RUeXBlKGludCYpCkBAIC01NzksMjYgKzU5OCwzNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBtX3VuYXJ5VG9rZW5TdGFjay5sYXN0KCkuZmlyc3Q7CiAgICAgfQogICAgIAotICAgIGludCB1
bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQoaW50JikKKyAgICB1bnNpZ25lZCB1bmFyeVRva2VuU3Rh
Y2tMYXN0U3RhcnQoaW50JikKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3VuYXJ5VG9rZW5TdGFj
ay5sYXN0KCkuc2Vjb25kOworICAgICAgICByZXR1cm4gbV91bmFyeVRva2VuU3RhY2subGFzdCgp
LnNlY29uZC5zdGFydFBvczsKICAgICB9CiAgICAgCisgICAgdW5zaWduZWQgdW5hcnlUb2tlblN0
YWNrTGFzdExpbmVTdGFydFBvc2l0aW9uKGludCYpCisgICAgeworICAgICAgICByZXR1cm4gbV91
bmFyeVRva2VuU3RhY2subGFzdCgpLnNlY29uZC5saW5lU3RhcnRQb3M7CisgICAgfQorCiAgICAg
dm9pZCB1bmFyeVRva2VuU3RhY2tSZW1vdmVMYXN0KGludCYgdG9rZW5TdGFja0RlcHRoKQogICAg
IHsKICAgICAgICAgdG9rZW5TdGFja0RlcHRoLS07CiAgICAgICAgIG1fdW5hcnlUb2tlblN0YWNr
LnJlbW92ZUxhc3QoKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBhc3NpZ25tZW50U3RhY2tBcHBl
bmQoaW50JiBhc3NpZ25tZW50U3RhY2tEZXB0aCwgRXhwcmVzc2lvbk5vZGUqIG5vZGUsIGludCBz
dGFydCwgaW50IGRpdm90LCBpbnQgYXNzaWdubWVudENvdW50LCBPcGVyYXRvciBvcCkKKyAgICB2
b2lkIGFzc2lnbm1lbnRTdGFja0FwcGVuZChpbnQmIGFzc2lnbm1lbnRTdGFja0RlcHRoLCBFeHBy
ZXNzaW9uTm9kZSogbm9kZSwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0LCBpbnQgYXNzaWdubWVudENvdW50
LCBPcGVyYXRvciBvcCkKICAgICB7CiAgICAgICAgIGFzc2lnbm1lbnRTdGFja0RlcHRoKys7Ci0g
ICAgICAgIG1fYXNzaWdubWVudEluZm9TdGFjay5hcHBlbmQoQXNzaWdubWVudEluZm8obm9kZSwg
c3RhcnQsIGRpdm90LCBhc3NpZ25tZW50Q291bnQsIG9wKSk7CisgICAgICAgIEFTU0VSVChzdGFy
dCA+PSBkaXZvdExpbmVTdGFydCk7CisgICAgICAgIEFTU0VSVChkaXZvdCA+PSBkaXZvdExpbmVT
dGFydCk7CisgICAgICAgIG1fYXNzaWdubWVudEluZm9TdGFjay5hcHBlbmQoQXNzaWdubWVudElu
Zm8obm9kZSwgc3RhcnQsIGRpdm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0LCBhc3NpZ25t
ZW50Q291bnQsIG9wKSk7CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFzc2ln
bm1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50JiBhc3NpZ25tZW50U3Rh
Y2tEZXB0aCwgRXhwcmVzc2lvbk5vZGUqIHJocywgaW50IGluaXRpYWxBc3NpZ25tZW50Q291bnQs
IGludCBjdXJyZW50QXNzaWdubWVudENvdW50LCBpbnQgbGFzdFRva2VuRW5kKQogICAgIHsKLSAg
ICAgICAgRXhwcmVzc2lvbk5vZGUqIHJlc3VsdCA9IG1ha2VBc3NpZ25Ob2RlKGxvY2F0aW9uLCBt
X2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1fbm9kZSwgbV9hc3NpZ25tZW50SW5mb1N0YWNr
Lmxhc3QoKS5tX29wLCByaHMsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9pbml0QXNz
aWdubWVudHMgIT0gaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25tZW50SW5mb1N0YWNr
Lmxhc3QoKS5tX2luaXRBc3NpZ25tZW50cyAhPSBjdXJyZW50QXNzaWdubWVudENvdW50LCBtX2Fz
c2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1fc3RhcnQsIG1fYXNzaWdubWVudEluZm9TdGFjay5s
YXN0KCkubV9kaXZvdCArIDEsIGxhc3RUb2tlbkVuZCk7CisgICAgICAgIEFzc2lnbm1lbnRJbmZv
JiBpbmZvID0gbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKTsKKyAgICAgICAgRXhwcmVzc2lv
bk5vZGUqIHJlc3VsdCA9IG1ha2VBc3NpZ25Ob2RlKGxvY2F0aW9uLCBpbmZvLm1fbm9kZSwgaW5m
by5tX29wLCByaHMsIGluZm8ubV9pbml0QXNzaWdubWVudHMgIT0gaW5pdGlhbEFzc2lnbm1lbnRD
b3VudCwgaW5mby5tX2luaXRBc3NpZ25tZW50cyAhPSBjdXJyZW50QXNzaWdubWVudENvdW50LCBp
bmZvLm1fc3RhcnQsIGluZm8ubV9kaXZvdCArIDEsIGxhc3RUb2tlbkVuZCwgaW5mby5tX2Rpdm90
TGluZSwgaW5mby5tX2Rpdm90TGluZVN0YXJ0KTsKICAgICAgICAgbV9hc3NpZ25tZW50SW5mb1N0
YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAgYXNzaWdubWVudFN0YWNrRGVwdGgtLTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKQEAgLTYyNCw5ICs2NTEsMTAgQEAgcHJpdmF0ZToKICAgICAgICAg
aW50IG1fbnVtQ29uc3RhbnRzOwogICAgIH07CiAKLSAgICBzdGF0aWMgdm9pZCBzZXRFeGNlcHRp
b25Mb2NhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgdW5zaWduZWQgc3RhcnQs
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBlbmQpCisgICAgc3RhdGljIHZvaWQgc2V0RXhjZXB0
aW9uTG9jYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIHVuc2lnbmVkIHN0YXJ0
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgZW5kLCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2ln
bmVkIGRpdm90TGluZVN0YXJ0KQogICAgIHsKLSAgICAgICAgbm9kZS0+c2V0RXhjZXB0aW9uU291
cmNlQ29kZShkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICBBU1NF
UlQoZGl2b3QgPj0gZGl2b3RMaW5lU3RhcnQpOworICAgICAgICBub2RlLT5zZXRFeGNlcHRpb25T
b3VyY2VDb2RlKGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCwgZGl2b3RMaW5lLCBk
aXZvdExpbmVTdGFydCk7CiAgICAgfQogCiAgICAgdm9pZCBpbmNDb25zdGFudHMoKSB7IG1fc2Nv
cGUubV9udW1Db25zdGFudHMrKzsgfQpAQCAtNjUwLDcgKzY3OCw3IEBAIHByaXZhdGU6CiAgICAg
VmVjdG9yPEJpbmFyeU9wZXJhbmQsIDEwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9iaW5hcnlP
cGVyYW5kU3RhY2s7CiAgICAgVmVjdG9yPEFzc2lnbm1lbnRJbmZvLCAxMCwgVW5zYWZlVmVjdG9y
T3ZlcmZsb3c+IG1fYXNzaWdubWVudEluZm9TdGFjazsKICAgICBWZWN0b3I8cGFpcjxpbnQsIGlu
dD4sIDEwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9iaW5hcnlPcGVyYXRvclN0YWNrOwotICAg
IFZlY3RvcjxwYWlyPGludCwgaW50PiwgMTAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX3VuYXJ5
VG9rZW5TdGFjazsKKyAgICBWZWN0b3I8cGFpcjxpbnQsIFBvc2l0aW9uSW5mbz4sIDEwLCBVbnNh
ZmVWZWN0b3JPdmVyZmxvdz4gbV91bmFyeVRva2VuU3RhY2s7CiAgICAgaW50IG1fZXZhbENvdW50
OwogfTsKIApAQCAtNjYzLDIxICs2OTEsMjEgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6
Om1ha2VUeXBlT2ZObwogICAgIHJldHVybiBuZXcgKG1fdm0pIFR5cGVPZlZhbHVlTm9kZShsb2Nh
dGlvbiwgZXhwcik7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRGVsZXRl
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhw
ciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCitFeHByZXNzaW9uTm9kZSogQVNUQnVp
bGRlcjo6bWFrZURlbGV0ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kLCB1bnNpZ25l
ZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogewogICAgIGlmICghZXhwci0+
aXNMb2NhdGlvbigpKQogICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBEZWxldGVWYWx1ZU5vZGUo
bG9jYXRpb24sIGV4cHIpOwogICAgIGlmIChleHByLT5pc1Jlc29sdmVOb2RlKCkpIHsKICAgICAg
ICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGV4cHIp
OwotICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBEZWxldGVSZXNvbHZlTm9kZShsb2NhdGlvbiwg
cmVzb2x2ZS0+aWRlbnRpZmllcigpLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3Qp
OworICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBEZWxldGVSZXNvbHZlTm9kZShsb2NhdGlvbiwg
cmVzb2x2ZS0+aWRlbnRpZmllcigpLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3Qs
IGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogICAgIH0KICAgICBpZiAoZXhwci0+aXNCcmFj
a2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogYnJhY2tl
dCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICAgICAgcmV0
dXJuIG5ldyAobV92bSkgRGVsZXRlQnJhY2tldE5vZGUobG9jYXRpb24sIGJyYWNrZXQtPmJhc2Uo
KSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZv
dCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fdm0pIERlbGV0ZUJyYWNrZXROb2RlKGxvY2F0aW9u
LCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBkaXZvdCwgZGl2b3QgLSBz
dGFydCwgZW5kIC0gZGl2b3QsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogICAgIH0KICAg
ICBBU1NFUlQoZXhwci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgRG90QWNjZXNzb3JOb2Rl
KiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICByZXR1cm4g
bmV3IChtX3ZtKSBEZWxldGVEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVu
dGlmaWVyKCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgcmV0dXJu
IG5ldyAobV92bSkgRGVsZXRlRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRl
bnRpZmllcigpLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QsIGRpdm90TGluZSwg
ZGl2b3RMaW5lU3RhcnQpOwogfQogCiBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZU5l
Z2F0ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IG4pCkBAIC03OTQsMzUgKzgyMiwzNiBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFr
ZUJpdFhPck5vCiAgICAgcmV0dXJuIG5ldyAobV92bSkgQml0WE9yTm9kZShsb2NhdGlvbiwgZXhw
cjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFT
VEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBmdW5jLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBpbnQgc3Rh
cnQsIGludCBkaXZvdCwgaW50IGVuZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtl
RnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNz
aW9uTm9kZSogZnVuYywgQXJndW1lbnRzTm9kZSogYXJncywgaW50IHN0YXJ0LCB1bnNpZ25lZCBk
aXZvdCwgaW50IGVuZCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFy
dCkKIHsKKyAgICBBU1NFUlQoZGl2b3QgPj0gZGl2b3RMaW5lU3RhcnQpOwogICAgIGlmICghZnVu
Yy0+aXNMb2NhdGlvbigpKQotICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBGdW5jdGlvbkNhbGxW
YWx1ZU5vZGUobG9jYXRpb24sIGZ1bmMsIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQg
LSBkaXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fdm0pIEZ1bmN0aW9uQ2FsbFZhbHVlTm9k
ZShsb2NhdGlvbiwgZnVuYywgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90
LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KTsKICAgICBpZiAoZnVuYy0+aXNSZXNvbHZlTm9k
ZSgpKSB7CiAgICAgICAgIFJlc29sdmVOb2RlKiByZXNvbHZlID0gc3RhdGljX2Nhc3Q8UmVzb2x2
ZU5vZGUqPihmdW5jKTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciA9IHJl
c29sdmUtPmlkZW50aWZpZXIoKTsKICAgICAgICAgaWYgKGlkZW50aWZpZXIgPT0gbV92bS0+cHJv
cGVydHlOYW1lcy0+ZXZhbCkgewogICAgICAgICAgICAgdXNlc0V2YWwoKTsKLSAgICAgICAgICAg
IHJldHVybiBuZXcgKG1fdm0pIEV2YWxGdW5jdGlvbkNhbGxOb2RlKGxvY2F0aW9uLCBhcmdzLCBk
aXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICAgICAgcmV0dXJuIG5l
dyAobV92bSkgRXZhbEZ1bmN0aW9uQ2FsbE5vZGUobG9jYXRpb24sIGFyZ3MsIGRpdm90LCBkaXZv
dCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7CiAgICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIG5ldyAobV92bSkgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUo
bG9jYXRpb24sIGlkZW50aWZpZXIsIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBk
aXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fdm0pIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2Rl
KGxvY2F0aW9uLCBpZGVudGlmaWVyLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0g
ZGl2b3QsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogICAgIH0KICAgICBpZiAoZnVuYy0+
aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSog
YnJhY2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihmdW5jKTsKLSAgICAg
ICAgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUqIG5vZGUgPSBuZXcgKG1fdm0pIEZ1bmN0aW9uQ2Fs
bEJyYWNrZXROb2RlKGxvY2F0aW9uLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlw
dCgpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwotICAgICAgICBu
b2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhicmFja2V0LT5kaXZvdCgpLCBicmFja2V0LT5lbmRP
ZmZzZXQoKSk7CisgICAgICAgIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKiBub2RlID0gbmV3ICht
X3ZtKSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShsb2NhdGlvbiwgYnJhY2tldC0+YmFzZSgpLCBi
cmFja2V0LT5zdWJzY3JpcHQoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRp
dm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KTsKKyAgICAgICAgbm9kZS0+c2V0U3ViZXhw
cmVzc2lvbkluZm8oYnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+ZGl2b3RFbmRPZmZzZXQoKSwg
YnJhY2tldC0+ZGl2b3RMaW5lKCksIGJyYWNrZXQtPmRpdm90TGluZVN0YXJ0KCkpOwogICAgICAg
ICByZXR1cm4gbm9kZTsKICAgICB9CiAgICAgQVNTRVJUKGZ1bmMtPmlzRG90QWNjZXNzb3JOb2Rl
KCkpOwogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JO
b2RlKj4oZnVuYyk7CiAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZSogbm9kZTsKICAgICBpZiAoZG90
LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbCkKLSAgICAgICAgbm9k
ZSA9IG5ldyAobV92bSkgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFz
ZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAt
IGRpdm90KTsKKyAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5v
ZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3Qs
IGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KTsK
ICAgICBlbHNlIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5h
cHBseSkKLSAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2Rl
KGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBk
aXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fdm0pIEFw
cGx5RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRp
ZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QsIGRpdm90TGlu
ZSwgZGl2b3RMaW5lU3RhcnQpOwogICAgIGVsc2UKLSAgICAgICAgbm9kZSA9IG5ldyAobV92bSkg
RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmll
cigpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwotICAgIG5vZGUt
PnNldFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5lbmRPZmZzZXQoKSk7Cisg
ICAgICAgIG5vZGUgPSBuZXcgKG1fdm0pIEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRv
dC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQs
IGVuZCAtIGRpdm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KTsKKyAgICBub2RlLT5zZXRT
dWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCksIGRvdC0+ZGl2b3RFbmRPZmZzZXQoKSwgZG90
LT5kaXZvdExpbmUoKSwgZG90LT5kaXZvdExpbmVTdGFydCgpKTsKICAgICByZXR1cm4gbm9kZTsK
IH0KIApAQCAtODcwLDEzICs4OTksMTMgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1h
a2VCaW5hcnlObwogCiAgICAgY2FzZSBJTlNUQU5DRU9GOiB7CiAgICAgICAgIEluc3RhbmNlT2ZO
b2RlKiBub2RlID0gbmV3IChtX3ZtKSBJbnN0YW5jZU9mTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0
LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7Ci0gICAgICAgIHNldEV4Y2Vw
dGlvbkxvY2F0aW9uKG5vZGUsIGxocy5zZWNvbmQuc3RhcnQsIHJocy5zZWNvbmQuc3RhcnQsIHJo
cy5zZWNvbmQuZW5kKTsKKyAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgbGhzLnNl
Y29uZC5zdGFydCwgcmhzLnNlY29uZC5zdGFydCwgcmhzLnNlY29uZC5lbmQsIHJocy5zZWNvbmQu
ZGl2b3RMaW5lLCByaHMuc2Vjb25kLmRpdm90TGluZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIG5v
ZGU7CiAgICAgfQogCiAgICAgY2FzZSBJTlRPS0VOOiB7CiAgICAgICAgIEluTm9kZSogbm9kZSA9
IG5ldyAobV92bSkgSW5Ob2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNl
Y29uZC5oYXNBc3NpZ25tZW50KTsKLSAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwg
bGhzLnNlY29uZC5zdGFydCwgcmhzLnNlY29uZC5zdGFydCwgcmhzLnNlY29uZC5lbmQpOworICAg
ICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBsaHMuc2Vjb25kLnN0YXJ0LCByaHMuc2Vj
b25kLnN0YXJ0LCByaHMuc2Vjb25kLmVuZCwgcmhzLnNlY29uZC5kaXZvdExpbmUsIHJocy5zZWNv
bmQuZGl2b3RMaW5lU3RhcnQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKQEAgLTkw
OCwxMCArOTM3LDEwIEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQmluYXJ5Tm8K
ICAgICByZXR1cm4gMDsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3Np
Z25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBs
b2MsIE9wZXJhdG9yIG9wLCBFeHByZXNzaW9uTm9kZSogZXhwciwgYm9vbCBsb2NIYXNBc3NpZ25t
ZW50cywgYm9vbCBleHBySGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQg
ZW5kKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25Ob2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsb2MsIE9wZXJhdG9yIG9w
LCBFeHByZXNzaW9uTm9kZSogZXhwciwgYm9vbCBsb2NIYXNBc3NpZ25tZW50cywgYm9vbCBleHBy
SGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kLCB1bnNpZ25lZCBk
aXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogewogICAgIGlmICghbG9jLT5pc0xv
Y2F0aW9uKCkpCi0gICAgICAgIHJldHVybiBuZXcgKG1fdm0pIEFzc2lnbkVycm9yTm9kZShsb2Nh
dGlvbiwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJu
IG5ldyAobV92bSkgQXNzaWduRXJyb3JOb2RlKGxvY2F0aW9uLCBkaXZvdCwgZGl2b3QgLSBzdGFy
dCwgZW5kIC0gZGl2b3QsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogCiAgICAgaWYgKGxv
Yy0+aXNSZXNvbHZlTm9kZSgpKSB7CiAgICAgICAgIFJlc29sdmVOb2RlKiByZXNvbHZlID0gc3Rh
dGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihsb2MpOwpAQCAtOTE5LDE3ICs5NDgsMTcgQEAgRXhwcmVz
c2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25ObwogICAgICAgICAgICAgaWYgKGV4cHIt
PmlzRnVuY0V4cHJOb2RlKCkpCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RnVuY0V4cHJO
b2RlKj4oZXhwciktPmJvZHkoKS0+c2V0SW5mZXJyZWROYW1lKHJlc29sdmUtPmlkZW50aWZpZXIo
KSk7CiAgICAgICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZSogbm9kZSA9IG5ldyAobV92bSkgQXNz
aWduUmVzb2x2ZU5vZGUobG9jYXRpb24sIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgZXhwcik7Ci0g
ICAgICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7
CisgICAgICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVu
ZCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7CiAgICAgICAgICAgICByZXR1cm4gbm9kZTsK
ICAgICAgICAgfQotICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBSZWFkTW9kaWZ5UmVzb2x2ZU5v
ZGUobG9jYXRpb24sIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3Np
Z25tZW50cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0
dXJuIG5ldyAobV92bSkgUmVhZE1vZGlmeVJlc29sdmVOb2RlKGxvY2F0aW9uLCByZXNvbHZlLT5p
ZGVudGlmaWVyKCksIG9wLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBkaXZvdCAt
IHN0YXJ0LCBlbmQgLSBkaXZvdCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCk7CiAgICAgfQog
ICAgIGlmIChsb2MtPmlzQnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7CiAgICAgICAgIEJyYWNrZXRB
Y2Nlc3Nvck5vZGUqIGJyYWNrZXQgPSBzdGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2RlKj4o
bG9jKTsKICAgICAgICAgaWYgKG9wID09IE9wRXF1YWwpCi0gICAgICAgICAgICByZXR1cm4gbmV3
IChtX3ZtKSBBc3NpZ25CcmFja2V0Tm9kZShsb2NhdGlvbiwgYnJhY2tldC0+YmFzZSgpLCBicmFj
a2V0LT5zdWJzY3JpcHQoKSwgZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4cHJIYXNBc3NpZ25t
ZW50cywgYnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+ZGl2b3QoKSAtIHN0YXJ0LCBlbmQgLSBi
cmFja2V0LT5kaXZvdCgpKTsKLSAgICAgICAgUmVhZE1vZGlmeUJyYWNrZXROb2RlKiBub2RlID0g
bmV3IChtX3ZtKSBSZWFkTW9kaWZ5QnJhY2tldE5vZGUobG9jYXRpb24sIGJyYWNrZXQtPmJhc2Uo
KSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIG9wLCBleHByLCBsb2NIYXNBc3NpZ25tZW50cywgZXhw
ckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwotICAg
ICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhicmFja2V0LT5kaXZvdCgpLCBicmFja2V0
LT5lbmRPZmZzZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBBc3NpZ25CcmFj
a2V0Tm9kZShsb2NhdGlvbiwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwg
ZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4cHJIYXNBc3NpZ25tZW50cywgYnJhY2tldC0+ZGl2
b3QoKSwgYnJhY2tldC0+ZGl2b3QoKSAtIHN0YXJ0LCBlbmQgLSBicmFja2V0LT5kaXZvdCgpLCBi
cmFja2V0LT5kaXZvdExpbmUoKSwgYnJhY2tldC0+ZGl2b3RMaW5lU3RhcnQoKSk7CisgICAgICAg
IFJlYWRNb2RpZnlCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyAobV92bSkgUmVhZE1vZGlmeUJyYWNr
ZXROb2RlKGxvY2F0aW9uLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBv
cCwgZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIGRp
dm90IC0gc3RhcnQsIGVuZCAtIGRpdm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KTsKKyAg
ICAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oYnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tl
dC0+ZGl2b3RFbmRPZmZzZXQoKSwgYnJhY2tldC0+ZGl2b3RMaW5lKCksIGJyYWNrZXQtPmRpdm90
TGluZVN0YXJ0KCkpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAgICAgQVNTRVJUKGxv
Yy0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CkBAIC05MzcsMjIgKzk2NiwyMiBAQCBFeHByZXNzaW9u
Tm9kZSogQVNUQnVpbGRlcjo6bWFrZUFzc2lnbk5vCiAgICAgaWYgKG9wID09IE9wRXF1YWwpIHsK
ICAgICAgICAgaWYgKGV4cHItPmlzRnVuY0V4cHJOb2RlKCkpCiAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxGdW5jRXhwck5vZGUqPihleHByKS0+Ym9keSgpLT5zZXRJbmZlcnJlZE5hbWUoZG90LT5p
ZGVudGlmaWVyKCkpOwotICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBBc3NpZ25Eb3ROb2RlKGxv
Y2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGV4cHIsIGV4cHJIYXNBc3Np
Z25tZW50cywgZG90LT5kaXZvdCgpLCBkb3QtPmRpdm90KCkgLSBzdGFydCwgZW5kIC0gZG90LT5k
aXZvdCgpKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV92bSkgQXNzaWduRG90Tm9kZShsb2NhdGlv
biwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBleHByLCBleHBySGFzQXNzaWdubWVu
dHMsIGRvdC0+ZGl2b3QoKSwgZG90LT5kaXZvdCgpIC0gc3RhcnQsIGVuZCAtIGRvdC0+ZGl2b3Qo
KSwgZG90LT5kaXZvdExpbmUoKSwgZG90LT5kaXZvdExpbmVTdGFydCgpKTsKICAgICB9CiAKLSAg
ICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9kZSA9IG5ldyAobV92bSkgUmVhZE1vZGlmeURvdE5vZGUo
bG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJI
YXNBc3NpZ25tZW50cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKLSAgICBu
b2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCksIGRvdC0+ZW5kT2Zmc2V0KCkp
OworICAgIFJlYWRNb2RpZnlEb3ROb2RlKiBub2RlID0gbmV3IChtX3ZtKSBSZWFkTW9kaWZ5RG90
Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZXhwciwg
ZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QsIGRp
dm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOworICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZv
KGRvdC0+ZGl2b3QoKSwgZG90LT5kaXZvdEVuZE9mZnNldCgpLCBkb3QtPmRpdm90TGluZSgpLCBk
b3QtPmRpdm90TGluZVN0YXJ0KCkpOwogICAgIHJldHVybiBub2RlOwogfQogCi1FeHByZXNzaW9u
Tm9kZSogQVNUQnVpbGRlcjo6bWFrZVByZWZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wLCBpbnQgc3RhcnQsIGlu
dCBkaXZvdCwgaW50IGVuZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlUHJlZml4
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhw
ciwgT3BlcmF0b3Igb3AsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kLCB1bnNpZ25lZCBk
aXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogewotICAgIHJldHVybiBuZXcgKG1f
dm0pIFByZWZpeE5vZGUobG9jYXRpb24sIGV4cHIsIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwg
ZW5kIC0gZGl2b3QpOworICAgIHJldHVybiBuZXcgKG1fdm0pIFByZWZpeE5vZGUobG9jYXRpb24s
IGV4cHIsIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QsIGRpdm90TGluZSwg
ZGl2b3RMaW5lU3RhcnQpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVBv
c3RmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBleHByLCBPcGVyYXRvciBvcCwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCitFeHBy
ZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVBvc3RmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvciBvcCwgaW50IHN0
YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2
b3RMaW5lU3RhcnQpCiB7Ci0gICAgcmV0dXJuIG5ldyAobV92bSkgUG9zdGZpeE5vZGUobG9jYXRp
b24sIGV4cHIsIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgIHJl
dHVybiBuZXcgKG1fdm0pIFBvc3RmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBvcCwgZGl2b3QsIGRp
dm90IC0gc3RhcnQsIGVuZCAtIGRpdm90LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KTsKIH0K
IAogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAJKHJldmlzaW9u
IDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MjQsNyArNTI0LDcgQEAgU3RyaW5nIExleGVyPFQ+OjppbnZhbGlkQ2hh
cmFjdGVyTWVzc2FnZQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUg
Y29uc3QgVCogTGV4ZXI8VD46OmN1cnJlbnRDaGFyYWN0ZXIoKSBjb25zdAorQUxXQVlTX0lOTElO
RSBjb25zdCBUKiBMZXhlcjxUPjo6Y3VycmVudFNvdXJjZVB0cigpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKG1fY29kZSA8PSBtX2NvZGVFbmQpOwogICAgIHJldHVybiBtX2NvZGU7CkBAIC01NDYsMTEg
KzU0NiwxMyBAQCB2b2lkIExleGVyPFQ+OjpzZXRDb2RlKGNvbnN0IFNvdXJjZUNvZGUmCiAgICAg
ICAgIG1fY29kZVN0YXJ0ID0gMDsKIAogICAgIG1fc291cmNlID0gJnNvdXJjZTsKKyAgICBtX3Nv
dXJjZU9mZnNldCA9IHNvdXJjZS5zdGFydE9mZnNldCgpOwogICAgIG1fY29kZVN0YXJ0UGx1c09m
ZnNldCA9IG1fY29kZVN0YXJ0ICsgc291cmNlLnN0YXJ0T2Zmc2V0KCk7CiAgICAgbV9jb2RlID0g
bV9jb2RlU3RhcnRQbHVzT2Zmc2V0OwogICAgIG1fY29kZUVuZCA9IG1fY29kZVN0YXJ0ICsgc291
cmNlLmVuZE9mZnNldCgpOwogICAgIG1fZXJyb3IgPSBmYWxzZTsKICAgICBtX2F0TGluZVN0YXJ0
ID0gdHJ1ZTsKKyAgICBtX2xpbmVTdGFydCA9IG1fY29kZTsKICAgICBtX2xleEVycm9yTWVzc2Fn
ZSA9IFN0cmluZygpOwogICAgIAogICAgIG1fYnVmZmVyOC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGluaXRpYWxSZWFkQnVmZmVyQ2FwYWNpdHkpOwpAQCAtNTY3LDYgKzU2OSw3IEBAIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogdGVtcGxhdGUgPGludCBzaGlmdEFtb3VudD4gQUxXQVlTX0lOTElORSB2
b2lkIExleGVyPFQ+OjppbnRlcm5hbFNoaWZ0KCkKIHsKICAgICBtX2NvZGUgKz0gc2hpZnRBbW91
bnQ7CisgICAgQVNTRVJUKGN1cnJlbnRPZmZzZXQoKSA+PSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0
KCkpOwogICAgIG1fY3VycmVudCA9ICptX2NvZGU7CiB9CiAKQEAgLTc2NiwyMCArNzY5LDIxIEBA
IHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEEKICAgICAgICAgfQogICAg
IH0KIAotICAgIGNvbnN0IExDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50Q2hhcmFjdGVy
KCk7CisgICAgY29uc3QgTENoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIo
KTsKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVyTGluZVN0YXJ0ID0gY3VycmVudExpbmVTdGFydE9m
ZnNldCgpOwogICAgIAogICAgIHdoaWxlIChpc0lkZW50UGFydChtX2N1cnJlbnQpKQogICAgICAg
ICBzaGlmdCgpOwogICAgIAogICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnQgPT0gJ1xcJykpIHsK
LSAgICAgICAgc2V0T2Zmc2V0RnJvbUNoYXJPZmZzZXQoaWRlbnRpZmllclN0YXJ0KTsKKyAgICAg
ICAgc2V0T2Zmc2V0RnJvbVNvdXJjZVB0cihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMaW5l
U3RhcnQpOwogICAgICAgICByZXR1cm4gcGFyc2VJZGVudGlmaWVyU2xvd0Nhc2U8c2hvdWxkQ3Jl
YXRlSWRlbnRpZmllcj4odG9rZW5EYXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsKICAgICB9
CiAKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IDA7CiAgICAgCiAgICAgaWYgKHNob3Vs
ZENyZWF0ZUlkZW50aWZpZXIpIHsKLSAgICAgICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJy
ZW50Q2hhcmFjdGVyKCkgLSBpZGVudGlmaWVyU3RhcnQ7CisgICAgICAgIGludCBpZGVudGlmaWVy
TGVuZ3RoID0gY3VycmVudFNvdXJjZVB0cigpIC0gaWRlbnRpZmllclN0YXJ0OwogICAgICAgICBp
ZGVudCA9IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7
CiAKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IGlkZW50OwpAQCAtODE0LDcgKzgxOCw4IEBA
IHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEEKICAgICAgICAgfQogICAg
IH0KIAotICAgIGNvbnN0IFVDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50Q2hhcmFjdGVy
KCk7CisgICAgY29uc3QgVUNoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIo
KTsKKyAgICBpbnQgaWRlbnRpZmllckxpbmVTdGFydCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQo
KTsKIAogICAgIFVDaGFyIG9yQWxsQ2hhcnMgPSAwOwogICAgIApAQCAtODI0LDcgKzgyOSw3IEBA
IHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEEKICAgICB9CiAgICAgCiAg
ICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCA9PSAnXFwnKSkgewotICAgICAgICBzZXRPZmZzZXRG
cm9tQ2hhck9mZnNldChpZGVudGlmaWVyU3RhcnQpOworICAgICAgICBzZXRPZmZzZXRGcm9tU291
cmNlUHRyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxpbmVTdGFydCk7CiAgICAgICAgIHJl
dHVybiBwYXJzZUlkZW50aWZpZXJTbG93Q2FzZTxzaG91bGRDcmVhdGVJZGVudGlmaWVyPih0b2tl
bkRhdGEsIGxleGVyRmxhZ3MsIHN0cmljdE1vZGUpOwogICAgIH0KIApAQCAtODM2LDcgKzg0MSw3
IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEEKICAgICBjb25zdCBJ
ZGVudGlmaWVyKiBpZGVudCA9IDA7CiAgICAgCiAgICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZp
ZXIpIHsKLSAgICAgICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJyZW50Q2hhcmFjdGVyKCkg
LSBpZGVudGlmaWVyU3RhcnQ7CisgICAgICAgIGludCBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVu
dFNvdXJjZVB0cigpIC0gaWRlbnRpZmllclN0YXJ0OwogICAgICAgICBpZiAoaXNBbGw4Qml0KQog
ICAgICAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyKGlkZW50aWZp
ZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7CiAgICAgICAgIGVsc2UKQEAgLTg2Niw3ICs4NzEs
NyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlk
ZW50aWZpZXI+IEpTVG9rZW5UeXBlIExleGVyPFQ+OjpwYXJzZUlkZW50aWZpZXJTbG93Q2FzZShK
U1Rva2VuRGF0YSogdG9rZW5EYXRhLCB1bnNpZ25lZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1v
ZGUpCiB7CiAgICAgY29uc3QgcHRyZGlmZl90IHJlbWFpbmluZyA9IG1fY29kZUVuZCAtIG1fY29k
ZTsKLSAgICBjb25zdCBUKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50Q2hhcmFjdGVyKCk7Cisg
ICAgY29uc3QgVCogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOwogICAgIGJv
b2wgYnVmZmVyUmVxdWlyZWQgPSBmYWxzZTsKIAogICAgIHdoaWxlICh0cnVlKSB7CkBAIC04Nzks
OCArODg0LDggQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gSgogCiAg
ICAgICAgIC8vIFx1WFhYWCB1bmljb2RlIGNoYXJhY3RlcnMuCiAgICAgICAgIGJ1ZmZlclJlcXVp
cmVkID0gdHJ1ZTsKLSAgICAgICAgaWYgKGlkZW50aWZpZXJTdGFydCAhPSBjdXJyZW50Q2hhcmFj
dGVyKCkpCi0gICAgICAgICAgICBtX2J1ZmZlcjE2LmFwcGVuZChpZGVudGlmaWVyU3RhcnQsIGN1
cnJlbnRDaGFyYWN0ZXIoKSAtIGlkZW50aWZpZXJTdGFydCk7CisgICAgICAgIGlmIChpZGVudGlm
aWVyU3RhcnQgIT0gY3VycmVudFNvdXJjZVB0cigpKQorICAgICAgICAgICAgbV9idWZmZXIxNi5h
cHBlbmQoaWRlbnRpZmllclN0YXJ0LCBjdXJyZW50U291cmNlUHRyKCkgLSBpZGVudGlmaWVyU3Rh
cnQpOwogICAgICAgICBzaGlmdCgpOwogICAgICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50ICE9
ICd1JykpCiAgICAgICAgICAgICByZXR1cm4gYXRFbmQoKSA/IFVOVEVSTUlOQVRFRF9JREVOVElG
SUVSX0VTQ0FQRV9FUlJPUlRPSyA6IElOVkFMSURfSURFTlRJRklFUl9FU0NBUEVfRVJST1JUT0s7
CkBAIC04OTMsMTggKzg5OCwxOCBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlm
aWVyPiBKCiAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9JREVOVElGSUVSX1VOSUNPREVfRVND
QVBFX0VSUk9SVE9LOwogICAgICAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikKICAgICAg
ICAgICAgIHJlY29yZDE2KHVjaGFyYWN0ZXIpOwotICAgICAgICBpZGVudGlmaWVyU3RhcnQgPSBj
dXJyZW50Q2hhcmFjdGVyKCk7CisgICAgICAgIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3Vy
Y2VQdHIoKTsKICAgICB9CiAKICAgICBpbnQgaWRlbnRpZmllckxlbmd0aDsKICAgICBjb25zdCBJ
ZGVudGlmaWVyKiBpZGVudCA9IDA7CiAgICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpIHsK
ICAgICAgICAgaWYgKCFidWZmZXJSZXF1aXJlZCkgewotICAgICAgICAgICAgaWRlbnRpZmllckxl
bmd0aCA9IGN1cnJlbnRDaGFyYWN0ZXIoKSAtIGlkZW50aWZpZXJTdGFydDsKKyAgICAgICAgICAg
IGlkZW50aWZpZXJMZW5ndGggPSBjdXJyZW50U291cmNlUHRyKCkgLSBpZGVudGlmaWVyU3RhcnQ7
CiAgICAgICAgICAgICBpZGVudCA9IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFydCwgaWRl
bnRpZmllckxlbmd0aCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoaWRlbnRp
ZmllclN0YXJ0ICE9IGN1cnJlbnRDaGFyYWN0ZXIoKSkKLSAgICAgICAgICAgICAgICBtX2J1ZmZl
cjE2LmFwcGVuZChpZGVudGlmaWVyU3RhcnQsIGN1cnJlbnRDaGFyYWN0ZXIoKSAtIGlkZW50aWZp
ZXJTdGFydCk7CisgICAgICAgICAgICBpZiAoaWRlbnRpZmllclN0YXJ0ICE9IGN1cnJlbnRTb3Vy
Y2VQdHIoKSkKKyAgICAgICAgICAgICAgICBtX2J1ZmZlcjE2LmFwcGVuZChpZGVudGlmaWVyU3Rh
cnQsIGN1cnJlbnRTb3VyY2VQdHIoKSAtIGlkZW50aWZpZXJTdGFydCk7CiAgICAgICAgICAgICBp
ZGVudCA9IG1ha2VJZGVudGlmaWVyKG1fYnVmZmVyMTYuZGF0YSgpLCBtX2J1ZmZlcjE2LnNpemUo
KSk7CiAgICAgICAgIH0KIApAQCAtOTQ0LDE2ICs5NDksMTcgQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CiB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IEFMV0FZU19JTkxJTkUgdHlw
ZW5hbWUgTGV4ZXI8VD46OlN0cmluZ1BhcnNlUmVzdWx0IExleGVyPFQ+OjpwYXJzZVN0cmluZyhK
U1Rva2VuRGF0YSogdG9rZW5EYXRhLCBib29sIHN0cmljdE1vZGUpCiB7CiAgICAgaW50IHN0YXJ0
aW5nT2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOworICAgIGludCBzdGFydGluZ0xpbmVTdGFydE9m
ZnNldCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKICAgICBpbnQgc3RhcnRpbmdMaW5lTnVt
YmVyID0gbGluZU51bWJlcigpOwogICAgIFQgc3RyaW5nUXVvdGVDaGFyYWN0ZXIgPSBtX2N1cnJl
bnQ7CiAgICAgc2hpZnQoKTsKIAotICAgIGNvbnN0IFQqIHN0cmluZ1N0YXJ0ID0gY3VycmVudENo
YXJhY3RlcigpOworICAgIGNvbnN0IFQqIHN0cmluZ1N0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigp
OwogCiAgICAgd2hpbGUgKG1fY3VycmVudCAhPSBzdHJpbmdRdW90ZUNoYXJhY3RlcikgewogICAg
ICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50ID09ICdcXCcpKSB7Ci0gICAgICAgICAgICBpZiAo
c3RyaW5nU3RhcnQgIT0gY3VycmVudENoYXJhY3RlcigpICYmIHNob3VsZEJ1aWxkU3RyaW5ncykK
LSAgICAgICAgICAgICAgICBhcHBlbmQ4KHN0cmluZ1N0YXJ0LCBjdXJyZW50Q2hhcmFjdGVyKCkg
LSBzdHJpbmdTdGFydCk7CisgICAgICAgICAgICBpZiAoc3RyaW5nU3RhcnQgIT0gY3VycmVudFNv
dXJjZVB0cigpICYmIHNob3VsZEJ1aWxkU3RyaW5ncykKKyAgICAgICAgICAgICAgICBhcHBlbmQ4
KHN0cmluZ1N0YXJ0LCBjdXJyZW50U291cmNlUHRyKCkgLSBzdHJpbmdTdGFydCk7CiAgICAgICAg
ICAgICBzaGlmdCgpOwogCiAgICAgICAgICAgICBMQ2hhciBlc2NhcGUgPSBzaW5nbGVFc2NhcGUo
bV9jdXJyZW50KTsKQEAgLTk3NywxNyArOTgzLDE3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1
aWxkU3RyaW5ncz4gQUxXQVkKICAgICAgICAgICAgICAgICAgICAgcmVjb3JkOChjb252ZXJ0SGV4
KHByZXYsIG1fY3VycmVudCkpOwogICAgICAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHNldE9mZnNldChzdGFydGluZ09mZnNldCk7Cisg
ICAgICAgICAgICAgICAgc2V0T2Zmc2V0KHN0YXJ0aW5nT2Zmc2V0LCBzdGFydGluZ0xpbmVTdGFy
dE9mZnNldCk7CiAgICAgICAgICAgICAgICAgc2V0TGluZU51bWJlcihzdGFydGluZ0xpbmVOdW1i
ZXIpOwogICAgICAgICAgICAgICAgIG1fYnVmZmVyOC5yZXNpemUoMCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHBhcnNlU3RyaW5nU2xvd0Nhc2U8c2hvdWxkQnVpbGRTdHJpbmdzPih0b2tlbkRh
dGEsIHN0cmljdE1vZGUpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RyaW5nU3RhcnQg
PSBjdXJyZW50Q2hhcmFjdGVyKCk7CisgICAgICAgICAgICBzdHJpbmdTdGFydCA9IGN1cnJlbnRT
b3VyY2VQdHIoKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKFVOTElLRUxZKGNoYXJhY3RlclJlcXVpcmVzUGFyc2VTdHJpbmdTbG93Q2FzZShtX2N1cnJl
bnQpKSkgewotICAgICAgICAgICAgc2V0T2Zmc2V0KHN0YXJ0aW5nT2Zmc2V0KTsKKyAgICAgICAg
ICAgIHNldE9mZnNldChzdGFydGluZ09mZnNldCwgc3RhcnRpbmdMaW5lU3RhcnRPZmZzZXQpOwog
ICAgICAgICAgICAgc2V0TGluZU51bWJlcihzdGFydGluZ0xpbmVOdW1iZXIpOwogICAgICAgICAg
ICAgbV9idWZmZXI4LnJlc2l6ZSgwKTsKICAgICAgICAgICAgIHJldHVybiBwYXJzZVN0cmluZ1Ns
b3dDYXNlPHNob3VsZEJ1aWxkU3RyaW5ncz4odG9rZW5EYXRhLCBzdHJpY3RNb2RlKTsKQEAgLTk5
Niw4ICsxMDAyLDggQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdzPiBBTFdBWQog
ICAgICAgICBzaGlmdCgpOwogICAgIH0KIAotICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyKCkgIT0g
c3RyaW5nU3RhcnQgJiYgc2hvdWxkQnVpbGRTdHJpbmdzKQotICAgICAgICBhcHBlbmQ4KHN0cmlu
Z1N0YXJ0LCBjdXJyZW50Q2hhcmFjdGVyKCkgLSBzdHJpbmdTdGFydCk7CisgICAgaWYgKGN1cnJl
bnRTb3VyY2VQdHIoKSAhPSBzdHJpbmdTdGFydCAmJiBzaG91bGRCdWlsZFN0cmluZ3MpCisgICAg
ICAgIGFwcGVuZDgoc3RyaW5nU3RhcnQsIGN1cnJlbnRTb3VyY2VQdHIoKSAtIHN0cmluZ1N0YXJ0
KTsKICAgICBpZiAoc2hvdWxkQnVpbGRTdHJpbmdzKSB7CiAgICAgICAgIHRva2VuRGF0YS0+aWRl
bnQgPSBtYWtlSWRlbnRpZmllcihtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpKTsK
ICAgICAgICAgbV9idWZmZXI4LnJlc2l6ZSgwKTsKQEAgLTEwMTMsMTIgKzEwMTksMTIgQEAgdGVt
cGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdzPiB0eXBlbgogICAgIFQgc3RyaW5nUXVvdGVD
aGFyYWN0ZXIgPSBtX2N1cnJlbnQ7CiAgICAgc2hpZnQoKTsKIAotICAgIGNvbnN0IFQqIHN0cmlu
Z1N0YXJ0ID0gY3VycmVudENoYXJhY3RlcigpOworICAgIGNvbnN0IFQqIHN0cmluZ1N0YXJ0ID0g
Y3VycmVudFNvdXJjZVB0cigpOwogCiAgICAgd2hpbGUgKG1fY3VycmVudCAhPSBzdHJpbmdRdW90
ZUNoYXJhY3RlcikgewogICAgICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50ID09ICdcXCcpKSB7
Ci0gICAgICAgICAgICBpZiAoc3RyaW5nU3RhcnQgIT0gY3VycmVudENoYXJhY3RlcigpICYmIHNo
b3VsZEJ1aWxkU3RyaW5ncykKLSAgICAgICAgICAgICAgICBhcHBlbmQxNihzdHJpbmdTdGFydCwg
Y3VycmVudENoYXJhY3RlcigpIC0gc3RyaW5nU3RhcnQpOworICAgICAgICAgICAgaWYgKHN0cmlu
Z1N0YXJ0ICE9IGN1cnJlbnRTb3VyY2VQdHIoKSAmJiBzaG91bGRCdWlsZFN0cmluZ3MpCisgICAg
ICAgICAgICAgICAgYXBwZW5kMTYoc3RyaW5nU3RhcnQsIGN1cnJlbnRTb3VyY2VQdHIoKSAtIHN0
cmluZ1N0YXJ0KTsKICAgICAgICAgICAgIHNoaWZ0KCk7CiAKICAgICAgICAgICAgIExDaGFyIGVz
Y2FwZSA9IHNpbmdsZUVzY2FwZShtX2N1cnJlbnQpOwpAQCAtMTA5Myw3ICsxMDk5LDcgQEAgdGVt
cGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdzPiB0eXBlbgogICAgICAgICAgICAgICAgIHJl
dHVybiBTdHJpbmdVbnRlcm1pbmF0ZWQ7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHN0
cmluZ1N0YXJ0ID0gY3VycmVudENoYXJhY3RlcigpOworICAgICAgICAgICAgc3RyaW5nU3RhcnQg
PSBjdXJyZW50U291cmNlUHRyKCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQog
ICAgICAgICAvLyBGYXN0IGNoZWNrIGZvciBjaGFyYWN0ZXJzIHRoYXQgcmVxdWlyZSBzcGVjaWFs
IGhhbmRsaW5nLgpAQCAtMTExMCw4ICsxMTE2LDggQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVp
bGRTdHJpbmdzPiB0eXBlbgogICAgICAgICBzaGlmdCgpOwogICAgIH0KIAotICAgIGlmIChjdXJy
ZW50Q2hhcmFjdGVyKCkgIT0gc3RyaW5nU3RhcnQgJiYgc2hvdWxkQnVpbGRTdHJpbmdzKQotICAg
ICAgICBhcHBlbmQxNihzdHJpbmdTdGFydCwgY3VycmVudENoYXJhY3RlcigpIC0gc3RyaW5nU3Rh
cnQpOworICAgIGlmIChjdXJyZW50U291cmNlUHRyKCkgIT0gc3RyaW5nU3RhcnQgJiYgc2hvdWxk
QnVpbGRTdHJpbmdzKQorICAgICAgICBhcHBlbmQxNihzdHJpbmdTdGFydCwgY3VycmVudFNvdXJj
ZVB0cigpIC0gc3RyaW5nU3RhcnQpOwogICAgIGlmIChzaG91bGRCdWlsZFN0cmluZ3MpCiAgICAg
ICAgIHRva2VuRGF0YS0+aWRlbnQgPSBtYWtlSWRlbnRpZmllcihtX2J1ZmZlcjE2LmRhdGEoKSwg
bV9idWZmZXIxNi5zaXplKCkpOwogICAgIGVsc2UKQEAgLTEzMTcsNyArMTMyMyw4IEBAIHN0YXJ0
OgogICAgICAgICByZXR1cm4gRU9GVE9LOwogICAgIAogICAgIHRva2VuTG9jYXRpb24tPnN0YXJ0
T2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOwotICAgIHRva2VuTG9jYXRpb24tPmNoYXJQb3NpdGlv
biA9IGN1cnJlbnRDaGFyUG9zaXRpb24oKTsKKyAgICB0b2tlbkxvY2F0aW9uLT5zb3VyY2VPZmZz
ZXQgPSBtX3NvdXJjZU9mZnNldDsKKyAgICBBU1NFUlQoY3VycmVudE9mZnNldCgpID49IGN1cnJl
bnRMaW5lU3RhcnRPZmZzZXQoKSk7CiAKICAgICBDaGFyYWN0ZXJUeXBlIHR5cGU7CiAgICAgaWYg
KExJS0VMWShpc0xhdGluMShtX2N1cnJlbnQpKSkKQEAgLTE1NTUsMTIgKzE1NjIsMTggQEAgc3Rh
cnQ6CiAgICAgICAgIHRva2VuID0gU0VNSUNPTE9OOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IENoYXJhY3Rlck9wZW5CcmFjZToKLSAgICAgICAgdG9rZW5EYXRhLT5pbnRWYWx1ZSA9IGN1cnJl
bnRPZmZzZXQoKTsKKyAgICAgICAgdG9rZW5EYXRhLT5saW5lID0gbGluZU51bWJlcigpOworICAg
ICAgICB0b2tlbkRhdGEtPm9mZnNldCA9IGN1cnJlbnRPZmZzZXQoKTsKKyAgICAgICAgdG9rZW5E
YXRhLT5saW5lU3RhcnRPZmZzZXQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CisgICAgICAg
IEFTU0VSVCh0b2tlbkRhdGEtPm9mZnNldCA+PSB0b2tlbkRhdGEtPmxpbmVTdGFydE9mZnNldCk7
CiAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIHRva2VuID0gT1BFTkJSQUNFOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIENoYXJhY3RlckNsb3NlQnJhY2U6Ci0gICAgICAgIHRva2VuRGF0YS0+
aW50VmFsdWUgPSBjdXJyZW50T2Zmc2V0KCk7CisgICAgICAgIHRva2VuRGF0YS0+bGluZSA9IGxp
bmVOdW1iZXIoKTsKKyAgICAgICAgdG9rZW5EYXRhLT5vZmZzZXQgPSBjdXJyZW50T2Zmc2V0KCk7
CisgICAgICAgIHRva2VuRGF0YS0+bGluZVN0YXJ0T2Zmc2V0ID0gY3VycmVudExpbmVTdGFydE9m
ZnNldCgpOworICAgICAgICBBU1NFUlQodG9rZW5EYXRhLT5vZmZzZXQgPj0gdG9rZW5EYXRhLT5s
aW5lU3RhcnRPZmZzZXQpOwogICAgICAgICBzaGlmdCgpOwogICAgICAgICB0b2tlbiA9IENMT1NF
QlJBQ0U7CiAgICAgICAgIGJyZWFrOwpAQCAtMTY1MCw2ICsxNjYzLDcgQEAgaW5OdW1iZXJBZnRl
ckRlY2ltYWxQb2ludDoKICAgICAgICAgc2hpZnRMaW5lVGVybWluYXRvcigpOwogICAgICAgICBt
X2F0TGluZVN0YXJ0ID0gdHJ1ZTsKICAgICAgICAgbV90ZXJtaW5hdG9yID0gdHJ1ZTsKKyAgICAg
ICAgbV9saW5lU3RhcnQgPSBtX2NvZGU7CiAgICAgICAgIGdvdG8gc3RhcnQ7CiAgICAgY2FzZSBD
aGFyYWN0ZXJJbnZhbGlkOgogICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IGludmFsaWRDaGFy
YWN0ZXJNZXNzYWdlKCk7CkBAIC0xNjc0LDYgKzE2ODgsNyBAQCBpblNpbmdsZUxpbmVDb21tZW50
OgogICAgIHNoaWZ0TGluZVRlcm1pbmF0b3IoKTsKICAgICBtX2F0TGluZVN0YXJ0ID0gdHJ1ZTsK
ICAgICBtX3Rlcm1pbmF0b3IgPSB0cnVlOworICAgIG1fbGluZVN0YXJ0ID0gbV9jb2RlOwogICAg
IGlmICghbGFzdFRva2VuV2FzUmVzdHJLZXl3b3JkKCkpCiAgICAgICAgIGdvdG8gc3RhcnQ7CiAK
QEAgLTE2ODMsNiArMTY5OCw4IEBAIGluU2luZ2xlTGluZUNvbW1lbnQ6CiByZXR1cm5Ub2tlbjoK
ICAgICB0b2tlbkxvY2F0aW9uLT5saW5lID0gbV9saW5lTnVtYmVyOwogICAgIHRva2VuTG9jYXRp
b24tPmVuZE9mZnNldCA9IGN1cnJlbnRPZmZzZXQoKTsKKyAgICB0b2tlbkxvY2F0aW9uLT5saW5l
U3RhcnRPZmZzZXQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CisgICAgQVNTRVJUKHRva2Vu
TG9jYXRpb24tPmVuZE9mZnNldCA+PSB0b2tlbkxvY2F0aW9uLT5saW5lU3RhcnRPZmZzZXQpOwog
ICAgIG1fbGFzdFRva2VuID0gdG9rZW47CiAgICAgcmV0dXJuIHRva2VuOwogCkBAIC0xNjkwLDYg
KzE3MDcsOCBAQCByZXR1cm5FcnJvcjoKICAgICBtX2Vycm9yID0gdHJ1ZTsKICAgICB0b2tlbkxv
Y2F0aW9uLT5saW5lID0gbV9saW5lTnVtYmVyOwogICAgIHRva2VuTG9jYXRpb24tPmVuZE9mZnNl
dCA9IGN1cnJlbnRPZmZzZXQoKTsKKyAgICB0b2tlbkxvY2F0aW9uLT5saW5lU3RhcnRPZmZzZXQg
PSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CisgICAgQVNTRVJUKHRva2VuTG9jYXRpb24tPmVu
ZE9mZnNldCA+PSB0b2tlbkxvY2F0aW9uLT5saW5lU3RhcnRPZmZzZXQpOwogICAgIFJFTEVBU0Vf
QVNTRVJUKHRva2VuICYgRXJyb3JUb2tlbkZsYWcpOwogICAgIHJldHVybiB0b2tlbjsKIH0KQEAg
LTE4MjksMTEgKzE4NDgsMTEgQEAgdm9pZCBMZXhlcjxUPjo6Y2xlYXIoKQogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLVNvdXJjZUNvZGUgTGV4ZXI8VD46OnNvdXJjZUNvZGUoaW50IG9wZW5C
cmFjZSwgaW50IGNsb3NlQnJhY2UsIGludCBmaXJzdExpbmUpCitTb3VyY2VDb2RlIExleGVyPFQ+
Ojpzb3VyY2VDb2RlKGludCBvcGVuQnJhY2UsIGludCBjbG9zZUJyYWNlLCBpbnQgZmlyc3RMaW5l
LCB1bnNpZ25lZCBzdGFydENvbHVtbikKIHsKICAgICBBU1NFUlQobV9zb3VyY2UtPnByb3ZpZGVy
KCktPnNvdXJjZSgpW29wZW5CcmFjZV0gPT0gJ3snKTsKICAgICBBU1NFUlQobV9zb3VyY2UtPnBy
b3ZpZGVyKCktPnNvdXJjZSgpW2Nsb3NlQnJhY2VdID09ICd9Jyk7Ci0gICAgcmV0dXJuIFNvdXJj
ZUNvZGUobV9zb3VyY2UtPnByb3ZpZGVyKCksIG9wZW5CcmFjZSwgY2xvc2VCcmFjZSArIDEsIGZp
cnN0TGluZSk7CisgICAgcmV0dXJuIFNvdXJjZUNvZGUobV9zb3VyY2UtPnByb3ZpZGVyKCksIG9w
ZW5CcmFjZSwgY2xvc2VCcmFjZSArIDEsIGZpcnN0TGluZSwgc3RhcnRDb2x1bW4pOwogfQogCiAv
LyBJbnN0YW50aWF0ZSB0aGUgdHdvIGZsYXZvcnMgb2YgTGV4ZXIgd2UgbmVlZCBpbnN0ZWFkIG9m
IHB1dHRpbmcgbW9zdCBvZiB0aGlzIGZpbGUgaW4gTGV4ZXIuaApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTGV4ZXIuaAkocmV2aXNpb24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSwxMSArODksMTIgQEAg
cHVibGljOgogICAgIEpTVG9rZW5UeXBlIGxleChKU1Rva2VuRGF0YSosIEpTVG9rZW5Mb2NhdGlv
biosIHVuc2lnbmVkLCBib29sIHN0cmljdE1vZGUpOwogICAgIGJvb2wgbmV4dFRva2VuSXNDb2xv
bigpOwogICAgIGludCBsaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9
Ci0gICAgaW50IGN1cnJlbnRDaGFyUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvZGUgLSBt
X2NvZGVTdGFydFBsdXNPZmZzZXQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGludCBjdXJyZW50T2Zm
c2V0KCkgY29uc3QgeyByZXR1cm4gb2Zmc2V0RnJvbVNvdXJjZVB0cihtX2NvZGUpOyB9CisgICAg
QUxXQVlTX0lOTElORSBpbnQgY3VycmVudExpbmVTdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJu
IG9mZnNldEZyb21Tb3VyY2VQdHIobV9saW5lU3RhcnQpOyB9CiAgICAgdm9pZCBzZXRMYXN0TGlu
ZU51bWJlcihpbnQgbGFzdExpbmVOdW1iZXIpIHsgbV9sYXN0TGluZU51bWJlciA9IGxhc3RMaW5l
TnVtYmVyOyB9CiAgICAgaW50IGxhc3RMaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0
TGluZU51bWJlcjsgfQogICAgIGJvb2wgcHJldlRlcm1pbmF0b3IoKSBjb25zdCB7IHJldHVybiBt
X3Rlcm1pbmF0b3I7IH0KLSAgICBTb3VyY2VDb2RlIHNvdXJjZUNvZGUoaW50IG9wZW5CcmFjZSwg
aW50IGNsb3NlQnJhY2UsIGludCBmaXJzdExpbmUpOworICAgIFNvdXJjZUNvZGUgc291cmNlQ29k
ZShpbnQgb3BlbkJyYWNlLCBpbnQgY2xvc2VCcmFjZSwgaW50IGZpcnN0TGluZSwgdW5zaWduZWQg
c3RhcnRDb2x1bW4pOwogICAgIGJvb2wgc2NhblJlZ0V4cChjb25zdCBJZGVudGlmaWVyKiYgcGF0
dGVybiwgY29uc3QgSWRlbnRpZmllciomIGZsYWdzLCBVQ2hhciBwYXR0ZXJuUHJlZml4ID0gMCk7
CiAgICAgYm9vbCBza2lwUmVnRXhwKCk7CiAKQEAgLTEwMSwxMSArMTAyLDE1IEBAIHB1YmxpYzoK
ICAgICBib29sIHNhd0Vycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQogICAgIFN0cmlu
ZyBnZXRFcnJvck1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xleEVycm9yTWVzc2FnZTsgfQog
ICAgIHZvaWQgY2xlYXIoKTsKLSAgICB2b2lkIHNldE9mZnNldChpbnQgb2Zmc2V0KQorICAgIHZv
aWQgc2V0T2Zmc2V0KGludCBvZmZzZXQsIGludCBsaW5lU3RhcnRPZmZzZXQpCiAgICAgewogICAg
ICAgICBtX2Vycm9yID0gMDsKICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBTdHJpbmcoKTsK
LSAgICAgICAgbV9jb2RlID0gbV9jb2RlU3RhcnQgKyBvZmZzZXQ7CisKKyAgICAgICAgbV9jb2Rl
ID0gc291cmNlUHRyRnJvbU9mZnNldChvZmZzZXQpOworICAgICAgICBtX2xpbmVTdGFydCA9IHNv
dXJjZVB0ckZyb21PZmZzZXQobGluZVN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKGN1cnJl
bnRPZmZzZXQoKSA+PSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCkpOworCiAgICAgICAgIG1fYnVm
ZmVyOC5yZXNpemUoMCk7CiAgICAgICAgIG1fYnVmZmVyMTYucmVzaXplKDApOwogICAgICAgICBp
ZiAoTElLRUxZKG1fY29kZSA8IG1fY29kZUVuZCkpCkBAIC0xNjUsMTAgKzE3MCwxMiBAQCBwcml2
YXRlOgogICAgIFVuaWNvZGVIZXhWYWx1ZSBwYXJzZUZvdXJEaWdpdFVuaWNvZGVIZXgoKTsKICAg
ICB2b2lkIHNoaWZ0TGluZVRlcm1pbmF0b3IoKTsKIAorICAgIEFMV0FZU19JTkxJTkUgaW50IG9m
ZnNldEZyb21Tb3VyY2VQdHIoY29uc3QgVCogcHRyKSBjb25zdCB7IHJldHVybiBwdHIgLSBtX2Nv
ZGVTdGFydDsgfQorICAgIEFMV0FZU19JTkxJTkUgY29uc3QgVCogc291cmNlUHRyRnJvbU9mZnNl
dChpbnQgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2NvZGVTdGFydCArIG9mZnNldDsgfQorCiAg
ICAgU3RyaW5nIGludmFsaWRDaGFyYWN0ZXJNZXNzYWdlKCkgY29uc3Q7Ci0gICAgQUxXQVlTX0lO
TElORSBjb25zdCBUKiBjdXJyZW50Q2hhcmFjdGVyKCkgY29uc3Q7Ci0gICAgQUxXQVlTX0lOTElO
RSBpbnQgY3VycmVudE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZSAtIG1fY29kZVN0YXJ0
OyB9Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldE9mZnNldEZyb21DaGFyT2Zmc2V0KGNvbnN0
IFQqIGNoYXJPZmZzZXQpIHsgc2V0T2Zmc2V0KGNoYXJPZmZzZXQgLSBtX2NvZGVTdGFydCk7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IFQqIGN1cnJlbnRTb3VyY2VQdHIoKSBjb25zdDsKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0T2Zmc2V0RnJvbVNvdXJjZVB0cihjb25zdCBUKiBzb3Vy
Y2VQdHIsIHVuc2lnbmVkIGxpbmVTdGFydE9mZnNldCkgeyBzZXRPZmZzZXQob2Zmc2V0RnJvbVNv
dXJjZVB0cihzb3VyY2VQdHIpLCBsaW5lU3RhcnRPZmZzZXQpOyB9CiAKICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0Q29kZVN0YXJ0KGNvbnN0IFN0cmluZ0ltcGwqKTsKIApAQCAtMjEwLDEwICsy
MTcsMTIgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9sYXN0VG9rZW47CiAKICAgICBjb25zdCBTb3Vy
Y2VDb2RlKiBtX3NvdXJjZTsKKyAgICB1bnNpZ25lZCBtX3NvdXJjZU9mZnNldDsKICAgICBjb25z
dCBUKiBtX2NvZGU7CiAgICAgY29uc3QgVCogbV9jb2RlU3RhcnQ7CiAgICAgY29uc3QgVCogbV9j
b2RlRW5kOwogICAgIGNvbnN0IFQqIG1fY29kZVN0YXJ0UGx1c09mZnNldDsKKyAgICBjb25zdCBU
KiBtX2xpbmVTdGFydDsKICAgICBib29sIG1faXNSZXBhcnNpbmc7CiAgICAgYm9vbCBtX2F0TGlu
ZVN0YXJ0OwogICAgIGJvb2wgbV9lcnJvcjsKQEAgLTM1MCw2ICszNTksNyBAQCBBTFdBWVNfSU5M
SU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFCiAgICAgICAgIG1fY3VycmVudCA9IDA7CiAK
ICAgICBtX2NvZGUgPSBwdHI7CisgICAgQVNTRVJUKGN1cnJlbnRPZmZzZXQoKSA+PSBjdXJyZW50
TGluZVN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgLy8gQ3JlYXRlIHRoZSBpZGVudGlmaWVyIGlmIG5l
ZWRlZAogICAgIGlmIChsZXhlckZsYWdzICYgTGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzKQpA
QCAtMzU3LDkgKzM2NywxMSBAQCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+Ojps
ZXhFCiAgICAgZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gbWFrZUxDaGFySWRlbnRp
ZmllcihzdGFydCwgcHRyIC0gc3RhcnQpOwogICAgIHRva2VuTG9jYXRpb24tPmxpbmUgPSBtX2xp
bmVOdW1iZXI7Ci0gICAgdG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQgPSBzdGFydCAtIG1fY29k
ZVN0YXJ0OworICAgIHRva2VuTG9jYXRpb24tPmxpbmVTdGFydE9mZnNldCA9IGN1cnJlbnRMaW5l
U3RhcnRPZmZzZXQoKTsKKyAgICB0b2tlbkxvY2F0aW9uLT5zdGFydE9mZnNldCA9IG9mZnNldEZy
b21Tb3VyY2VQdHIoc3RhcnQpOwogICAgIHRva2VuTG9jYXRpb24tPmVuZE9mZnNldCA9IGN1cnJl
bnRPZmZzZXQoKTsKLSAgICB0b2tlbkxvY2F0aW9uLT5jaGFyUG9zaXRpb24gPSBjdXJyZW50Q2hh
clBvc2l0aW9uKCk7CisgICAgdG9rZW5Mb2NhdGlvbi0+c291cmNlT2Zmc2V0ID0gbV9zb3VyY2VP
ZmZzZXQ7CisgICAgQVNTRVJUKHRva2VuTG9jYXRpb24tPnN0YXJ0T2Zmc2V0ID49IHRva2VuTG9j
YXRpb24tPmxpbmVTdGFydE9mZnNldCk7CiAgICAgbV9sYXN0VG9rZW4gPSBJREVOVDsKICAgICBy
ZXR1cm4gSURFTlQ7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVDb25zdHJ1Y3RvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVDb25zdHJ1Y3RvcnMuaAkocmV2aXNpb24gMTUxOTIwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDggKzQ0LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgaW5saW5lIE5vZGU6Ok5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikKICAgICAgICAgOiBtX2xpbmVOdW1iZXIobG9j
YXRpb24ubGluZSkKLSAgICAgICAgLCBtX2NoYXJQb3NpdGlvbihsb2NhdGlvbi5jaGFyUG9zaXRp
b24pCisgICAgICAgICwgbV9zdGFydE9mZnNldChsb2NhdGlvbi5zdGFydE9mZnNldCkKKyAgICAg
ICAgLCBtX2xpbmVTdGFydE9mZnNldChsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpCiAgICAgewor
ICAgICAgICBBU1NFUlQobG9jYXRpb24uc3RhcnRPZmZzZXQgPj0gbG9jYXRpb24ubGluZVN0YXJ0
T2Zmc2V0KTsKICAgICB9CiAKICAgICBpbmxpbmUgRXhwcmVzc2lvbk5vZGU6OkV4cHJlc3Npb25O
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0VHlw
ZSkKQEAgLTEwMCwxMSArMTAyLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgUmVzb2x2ZU5vZGU6OlJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBpbnQgc3RhcnRPZmZzZXQpCitp
bmxpbmUgUmVzb2x2ZU5vZGU6OlJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAs
IG1fc3RhcnRPZmZzZXQoc3RhcnRPZmZzZXQpCisgICAgICAgICwgbV9kaXZvdExpbmUoZGl2b3RM
aW5lKQorICAgICAgICAsIG1fZGl2b3RMaW5lU3RhcnQoZGl2b3RMaW5lU3RhcnQpCiAgICAgewor
ICAgICAgICBBU1NFUlQobV9zdGFydE9mZnNldCA+PSBtX2Rpdm90TGluZVN0YXJ0KTsKICAgICB9
CiAKICAgICBpbmxpbmUgRWxlbWVudE5vZGU6OkVsZW1lbnROb2RlKGludCBlbGlzaW9uLCBFeHBy
ZXNzaW9uTm9kZSogbm9kZSkKQEAgLTI0MSw4MCArMjQ2LDgxIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRXZhbEZ1bmN0aW9uQ2FsbE5vZGU6OkV2YWxGdW5j
dGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEFyZ3VtZW50c05v
ZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KQorICAgIGlubGluZSBFdmFsRnVuY3Rpb25DYWxsTm9kZTo6RXZhbEZ1bmN0aW9u
Q2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQXJndW1lbnRzTm9kZSog
YXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCi0gICAgICAgICwgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCisgICAgICAgICwgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGRpdm90TGlu
ZSwgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgICwgbV9hcmdzKGFyZ3MpCiAgICAgeworICAgICAg
ICBBU1NFUlQoZGl2b3QgPj0gZGl2b3RMaW5lU3RhcnQpOwogICAgIH0KIAotICAgIGlubGluZSBG
dW5jdGlvbkNhbGxWYWx1ZU5vZGU6OkZ1bmN0aW9uQ2FsbFZhbHVlTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgQXJndW1lbnRzTm9kZSog
YXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpCisgICAgaW5saW5lIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6RnVuY3Rpb25DYWxsVmFs
dWVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBl
eHByLCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBk
aXZvdExpbmVTdGFydCkKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKLSAgICAg
ICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dCkKKyAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQs
IGVuZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgLCBtX2V4cHIo
ZXhwcikKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1l
bnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpCisgICAgaW5saW5lIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjpGdW5j
dGlvbkNhbGxSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90
TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUo
bG9jYXRpb24pCi0gICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0
T2Zmc2V0LCBlbmRPZmZzZXQpCisgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2
b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpCiAg
ICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICB7CiAg
ICAgfQogCi0gICAgaW5saW5lIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjpGdW5jdGlvbkNhbGxC
cmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9k
ZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgQXJndW1lbnRzTm9kZSogYXJncywg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
CisgICAgaW5saW5lIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjpGdW5jdGlvbkNhbGxCcmFja2V0
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2ln
bmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobG9jYXRpb24pCi0gICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEo
ZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCisgICAgICAgICwgVGhyb3dhYmxlU3ViRXhw
cmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGRpdm90TGluZSwgZGl2
b3RMaW5lU3RhcnQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9zdWJzY3Jp
cHQoc3Vic2NyaXB0KQogICAgICAgICAsIG1fYXJncyhhcmdzKQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgRnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgIGlubGluZSBGdW5jdGlv
bkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
QXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RM
aW5lU3RhcnQpCiAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCi0gICAgICAgICwg
VGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQp
CisgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0
LCBlbmRPZmZzZXQsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgICwgbV9iYXNl
KGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX2FyZ3MoYXJncykK
ICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxs
RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUq
IGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KQotICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlk
ZW50LCBhcmdzLCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICBpbmxpbmUgQ2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5z
aWduZWQgZGl2b3RMaW5lU3RhcnQpCisgICAgICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2Nh
dGlvbiwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBk
aXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXBw
bHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBGdW5jdGlvbkNh
bGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIHN0YXJ0T2Zmc2V0
LCBlbmRPZmZzZXQpCisgICAgaW5saW5lIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6QXBwbHlG
dW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSog
YXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpCisgICAg
ICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRp
dm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KQog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUG9zdGZpeE5vZGU6OlBvc3RmaXhOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRv
ciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCkKLSAgICAgICAgOiBQcmVmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBvcGVyLCBkaXZv
dCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICBpbmxpbmUgUG9zdGZpeE5vZGU6OlBvc3Rm
aXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBl
eHByLCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExp
bmVTdGFydCkKKyAgICAgICAgOiBQcmVmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBvcGVyLCBkaXZv
dCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCkKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIERlbGV0ZVJlc29sdmVOb2RlOjpEZWxldGVSZXNvbHZl
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpCisgICAgaW5saW5lIERlbGV0ZVJlc29sdmVOb2RlOjpEZWxldGVSZXNvbHZlTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQs
IHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCi0gICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCisgICAgICAgICwgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGRpdm90TGluZSwgZGl2
b3RMaW5lU3RhcnQpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIERlbGV0ZUJyYWNrZXROb2RlOjpEZWxldGVCcmFja2V0Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5v
ZGUqIHN1YnNjcmlwdCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpCisgICAgaW5saW5lIERlbGV0ZUJyYWNrZXROb2RlOjpEZWxldGVCcmFj
a2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5z
aWduZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24p
Ci0gICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBl
bmRPZmZzZXQpCisgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0
T2Zmc2V0LCBlbmRPZmZzZXQsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgICwg
bV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KQogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgRGVsZXRlRG90Tm9kZTo6RGVsZXRlRG90Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KQorICAgIGlubGluZSBEZWxldGVEb3ROb2RlOjpEZWxldGVEb3ROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RM
aW5lU3RhcnQpCiAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCi0gICAgICAgICwg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCisg
ICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgICwgbV9iYXNlKGJhc2Up
CiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICB7CkBAIC0zNDQsOSArMzUwLDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQcmVmaXhOb2RlOjpQcmVm
aXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBl
eHByLCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICBpbmxpbmUgUHJlZml4Tm9kZTo6UHJlZml4Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgT3Bl
cmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQp
CiAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCi0gICAgICAgICwgVGhyb3dhYmxl
UHJlZml4ZWRTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkK
KyAgICAgICAgLCBUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFy
dE9mZnNldCwgZW5kT2Zmc2V0LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KQogICAgICAgICAs
IG1fZXhwcihleHByKQogICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikKICAgICB7CkBAIC01MzAs
MTQgKzUzNiwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6UmVhZE1vZGlmeVJlc29sdmVOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBv
cGVyLCBFeHByZXNzaW9uTm9kZSogIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQor
ICAgIGlubGluZSBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OlJlYWRNb2RpZnlSZXNvbHZlTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
T3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqICByaWdodCwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKICAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKLSAgICAgICAgLCBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICAgICAgLCBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZGl2b3RM
aW5lLCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAs
IG1fcmlnaHQocmlnaHQpCiAgICAgICAgICwgbV9vcGVyYXRvcihvcGVyKQogICAgICAgICAsIG1f
cmlnaHRIYXNBc3NpZ25tZW50cyhyaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKKyAgICAgICAg
QVNTRVJUKGRpdm90ID49IGRpdm90TGluZVN0YXJ0KTsKKyAgICAgICAgQVNTRVJUKGRpdm90IC0g
c3RhcnRPZmZzZXQgPj0gZGl2b3RMaW5lU3RhcnQpOwogICAgIH0KIAogICAgIGlubGluZSBBc3Np
Z25SZXNvbHZlTm9kZTo6QXNzaWduUmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCkK
QEAgLTU0Nyw5ICs1NTUsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIFJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6UmVhZE1vZGlmeUJyYWNrZXROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNz
aW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmlnaHQs
IGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
CisgICAgaW5saW5lIFJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6UmVhZE1vZGlmeUJyYWNrZXROb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBF
eHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSog
cmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCi0gICAgICAgICwgVGhyb3dhYmxlU3ViRXhw
cmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCisgICAgICAgICwgVGhy
b3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGRp
dm90TGluZSwgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAg
ICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KQogICAgICAgICAsIG1fcmlnaHQocmlnaHQpCkBAIC01
NTksOSArNTY3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBBc3NpZ25CcmFja2V0Tm9kZTo6QXNzaWduQnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJz
Y3JpcHQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50
cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICBpbmxpbmUgQXNzaWduQnJhY2tldE5v
ZGU6OkFzc2lnbkJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBFeHByZXNzaW9u
Tm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQp
CiAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCi0gICAgICAgICwgVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCisgICAgICAgICwg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGRp
dm90TGluZSwgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAg
ICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KQogICAgICAgICAsIG1fcmlnaHQocmlnaHQpCkBAIC01
NzAsOSArNTc4LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhw
cmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgIGlubGlu
ZSBBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhw
cmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBk
aXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxvY2F0aW9uKQotICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBz
dGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRh
KGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0
KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAg
ICAgICwgbV9yaWdodChyaWdodCkKQEAgLTU4MCw5ICs1ODgsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5
RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25O
b2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICBpbmxpbmUgUmVhZE1v
ZGlmeURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3Bl
cmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQotICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJl
c3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgICAgICAsIFRocm93
YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBkaXZv
dExpbmUsIGRpdm90TGluZVN0YXJ0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAs
IG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9yaWdodChyaWdodCkKQEAgLTU5MSw5ICs1OTks
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFzc2lnbkVy
cm9yTm9kZTo6QXNzaWduRXJyb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KQorICAgIGlubGluZSBBc3NpZ25FcnJvck5vZGU6OkFzc2lnbkVycm9yTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZv
dExpbmVTdGFydCkKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKLSAgICAgICAg
LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkK
KyAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCkKICAgICB7CiAgICAgfQogCkBAIC02
OTgsMTEgKzcwNiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIFdpdGhOb2RlOjpXaXRoTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCB1aW50MzJfdCBk
aXZvdCwgdWludDMyX3QgZXhwcmVzc2lvbkxlbmd0aCkKKyAgICBpbmxpbmUgV2l0aE5vZGU6Oldp
dGhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBl
eHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIHVpbnQzMl90IGRpdm90LCB1bnNpZ25lZCBk
aXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0LCB1aW50MzJfdCBleHByZXNzaW9uTGVu
Z3RoKQogICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9leHBy
KGV4cHIpCiAgICAgICAgICwgbV9zdGF0ZW1lbnQoc3RhdGVtZW50KQogICAgICAgICAsIG1fZGl2
b3QoZGl2b3QpCisgICAgICAgICwgbV9kaXZvdExpbmUoZGl2b3RMaW5lKQorICAgICAgICAsIG1f
ZGl2b3RMaW5lU3RhcnQoZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgICwgbV9leHByZXNzaW9uTGVu
Z3RoKGV4cHJlc3Npb25MZW5ndGgpCiAgICAgewogICAgIH0KQEAgLTgxMiwxNiArODIyLDE3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRm9ySW5Ob2RlOjpG
b3JJbk5vZGUoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIGluLCBFeHByZXNzaW9uTm9kZSogZXhw
ciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgZGl2b3QsIGludCBzdGFydE9mZnNldCwg
aW50IGVuZE9mZnNldCkKKyAgICBpbmxpbmUgRm9ySW5Ob2RlOjpGb3JJbk5vZGUoVk0qIHZtLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
RXhwcmVzc2lvbk5vZGUqIGluLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSog
c3RhdGVtZW50LCB1bnNpZ25lZCBkaXZvdCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0
LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQogICAgICAgICA6
IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9pbml0KDApCi0gICAgICAgICwg
bV9sZXhwcihuZXcgKHZtKSBSZXNvbHZlTm9kZShsb2NhdGlvbiwgaWRlbnQsIGRpdm90IC0gc3Rh
cnRPZmZzZXQpKQorICAgICAgICAsIG1fbGV4cHIobmV3ICh2bSkgUmVzb2x2ZU5vZGUobG9jYXRp
b24sIGlkZW50LCBkaXZvdCAtIHN0YXJ0T2Zmc2V0LCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0
KSkKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX3N0YXRlbWVudChzdGF0ZW1l
bnQpCiAgICAgewogICAgICAgICBpZiAoaW4pIHsKICAgICAgICAgICAgIEFzc2lnblJlc29sdmVO
b2RlKiBub2RlID0gbmV3ICh2bSkgQXNzaWduUmVzb2x2ZU5vZGUobG9jYXRpb24sIGlkZW50LCBp
bik7Ci0gICAgICAgICAgICBub2RlLT5zZXRFeGNlcHRpb25Tb3VyY2VDb2RlKGRpdm90LCBkaXZv
dCAtIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQgLSBkaXZvdCk7CisgICAgICAgICAgICBBU1NFUlQo
ZGl2b3QgPj0gZGl2b3RMaW5lU3RhcnQpOworICAgICAgICAgICAgbm9kZS0+c2V0RXhjZXB0aW9u
U291cmNlQ29kZShkaXZvdCwgZGl2b3QgLSBzdGFydE9mZnNldCwgZW5kT2Zmc2V0IC0gZGl2b3Qs
IGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogICAgICAgICAgICAgbV9pbml0ID0gbm9kZTsK
ICAgICAgICAgfQogICAgICAgICAvLyBmb3IoIHZhciBmb28gPSBiYXIgaW4gYmF6ICkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCShyZXZpc2lvbiAxNTE5MjApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTIsMTEgKzUyLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gU3RhdGVtZW50Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi12b2lkIFN0YXRlbWVudE5vZGU6OnNldExvYyhpbnQgZmlyc3RMaW5lLCBpbnQgbGFz
dExpbmUsIGludCBjaGFyUG9zaXRpb24pCit2b2lkIFN0YXRlbWVudE5vZGU6OnNldExvYyh1bnNp
Z25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCBpbnQgc3RhcnRPZmZzZXQsIGludCBs
aW5lU3RhcnRPZmZzZXQpCiB7CiAgICAgbV9saW5lTnVtYmVyID0gZmlyc3RMaW5lOwogICAgIG1f
bGFzdExpbmUgPSBsYXN0TGluZTsKLSAgICBtX2NoYXJQb3NpdGlvbiA9IGNoYXJQb3NpdGlvbjsK
KyAgICBtX3N0YXJ0T2Zmc2V0ID0gc3RhcnRPZmZzZXQ7CisgICAgbV9saW5lU3RhcnRPZmZzZXQg
PSBsaW5lU3RhcnRPZmZzZXQ7CisgICAgQVNTRVJUKG1fc3RhcnRPZmZzZXQgPj0gbV9saW5lU3Rh
cnRPZmZzZXQpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU291cmNl
RWxlbWVudHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTgwLDcgKzgyLDgg
QEAgU2NvcGVOb2RlOjpTY29wZU5vZGUoVk0qIHZtLCBjb25zdCBKU1RvawogICAgIDogU3RhdGVt
ZW50Tm9kZShlbmRMb2NhdGlvbikKICAgICAsIFBhcnNlckFyZW5hUmVmQ291bnRlZCh2bSkKICAg
ICAsIG1fc3RhcnRMaW5lTnVtYmVyKHN0YXJ0TG9jYXRpb24ubGluZSkKLSAgICAsIG1fc3RhcnRD
aGFyUG9zaXRpb24oc3RhcnRMb2NhdGlvbi5jaGFyUG9zaXRpb24pCisgICAgLCBtX3N0YXJ0U3Rh
cnRPZmZzZXQoc3RhcnRMb2NhdGlvbi5zdGFydE9mZnNldCkKKyAgICAsIG1fc3RhcnRMaW5lU3Rh
cnRPZmZzZXQoc3RhcnRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpCiAgICAgLCBtX2ZlYXR1cmVz
KGluU3RyaWN0Q29udGV4dCA/IFN0cmljdE1vZGVGZWF0dXJlIDogTm9GZWF0dXJlcykKICAgICAs
IG1fbnVtQ29uc3RhbnRzKDApCiAgICAgLCBtX3N0YXRlbWVudHMoMCkKQEAgLTkxLDcgKzk0LDgg
QEAgU2NvcGVOb2RlOjpTY29wZU5vZGUoVk0qIHZtLCBjb25zdCBKU1RvawogICAgIDogU3RhdGVt
ZW50Tm9kZShlbmRMb2NhdGlvbikKICAgICAsIFBhcnNlckFyZW5hUmVmQ291bnRlZCh2bSkKICAg
ICAsIG1fc3RhcnRMaW5lTnVtYmVyKHN0YXJ0TG9jYXRpb24ubGluZSkKLSAgICAsIG1fc3RhcnRD
aGFyUG9zaXRpb24oc3RhcnRMb2NhdGlvbi5jaGFyUG9zaXRpb24pCisgICAgLCBtX3N0YXJ0U3Rh
cnRPZmZzZXQoc3RhcnRMb2NhdGlvbi5zdGFydE9mZnNldCkKKyAgICAsIG1fc3RhcnRMaW5lU3Rh
cnRPZmZzZXQoc3RhcnRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpCiAgICAgLCBtX2ZlYXR1cmVz
KGZlYXR1cmVzKQogICAgICwgbV9zb3VyY2Uoc291cmNlKQogICAgICwgbV9udW1Db25zdGFudHMo
bnVtQ29uc3RhbnRzKQpAQCAtMTEyLDE0ICsxMTYsMTUgQEAgU3RhdGVtZW50Tm9kZSogU2NvcGVO
b2RlOjpzaW5nbGVTdGF0ZW1lbgogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
UHJvZ3JhbU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIFByb2dy
YW1Ob2RlOjpQcm9ncmFtTm9kZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRM
b2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgU291cmNlRWxlbWVu
dHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFj
aywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQoraW5saW5lIFBy
b2dyYW1Ob2RlOjpQcm9ncmFtTm9kZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3Rh
cnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQg
c3RhcnRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNr
LCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFi
bGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50
IG51bUNvbnN0YW50cykKICAgICA6IFNjb3BlTm9kZSh2bSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9j
YXRpb24sIHNvdXJjZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFy
aWFibGVzLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQorICAgICwgbV9zdGFydENvbHVtbihzdGFy
dENvbHVtbikKIHsKIH0KIAotUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gUHJvZ3JhbU5vZGU6OmNy
ZWF0ZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBW
YXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNl
dCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1
cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4g
UHJvZ3JhbU5vZGU6OmNyZWF0ZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRM
b2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3Rh
cnRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBG
dW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVz
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51
bUNvbnN0YW50cykKIHsKLSAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IG5vZGUgPSBuZXcgUHJvZ3Jh
bU5vZGUodm0sIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBjaGlsZHJlbiwgdmFyU3RhY2ss
IGZ1bmNTdGFjaywgIGNhcHR1cmVkVmFyaWFibGVzLCBzb3VyY2UsIGZlYXR1cmVzLCBudW1Db25z
dGFudHMpOworICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gbm9kZSA9IG5ldyBQcm9ncmFtTm9kZSh2
bSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBjaGlsZHJlbiwgdmFy
U3RhY2ssIGZ1bmNTdGFjaywgIGNhcHR1cmVkVmFyaWFibGVzLCBzb3VyY2UsIGZlYXR1cmVzLCBu
dW1Db25zdGFudHMpOwogCiAgICAgQVNTRVJUKG5vZGUtPm1fYXJlbmEubGFzdCgpID09IG5vZGUp
OwogICAgIG5vZGUtPm1fYXJlbmEucmVtb3ZlTGFzdCgpOwpAQCAtMTM1LDcgKzE0MCw3IEBAIGlu
bGluZSBFdmFsTm9kZTo6RXZhbE5vZGUoVk0qIHZtLCBjb25zdCAKIHsKIH0KIAotUGFzc1JlZlB0
cjxFdmFsTm9kZT4gRXZhbE5vZGU6OmNyZWF0ZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgU291
cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sq
IGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQor
UGFzc1JlZlB0cjxFdmFsTm9kZT4gRXZhbE5vZGU6OmNyZWF0ZShWTSogdm0sIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2Nh
dGlvbiwgdW5zaWduZWQsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0
YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFy
aWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywg
aW50IG51bUNvbnN0YW50cykKIHsKICAgICBSZWZQdHI8RXZhbE5vZGU+IG5vZGUgPSBuZXcgRXZh
bE5vZGUodm0sIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBjaGlsZHJlbiwgdmFyU3RhY2ss
IGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIHNvdXJjZSwgZmVhdHVyZXMsIG51bUNvbnN0
YW50cyk7CiAKQEAgLTE3MywxMyArMTc4LDE1IEBAIEZ1bmN0aW9uUGFyYW1ldGVyczo6fkZ1bmN0
aW9uUGFyYW1ldGVycygKICAgICAgICAgaWRlbnRpZmllcnMoKVtpXS5+SWRlbnRpZmllcigpOwog
fQogCi1pbmxpbmUgRnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZShWTSogdm0sIGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBlbmRMb2NhdGlvbiwgYm9vbCBpblN0cmljdENvbnRleHQpCitpbmxpbmUgRnVuY3Rpb25Cb2R5
Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3Rh
cnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQg
c3RhcnRDb2x1bW4sIGJvb2wgaW5TdHJpY3RDb250ZXh0KQogICAgIDogU2NvcGVOb2RlKHZtLCBz
dGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgaW5TdHJpY3RDb250ZXh0KQorICAgICwgbV9zdGFy
dENvbHVtbihzdGFydENvbHVtbikKIHsKIH0KIAotaW5saW5lIEZ1bmN0aW9uQm9keU5vZGU6OkZ1
bmN0aW9uQm9keU5vZGUoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRp
b24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIFNvdXJjZUVsZW1lbnRzKiBj
aGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElk
ZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VD
b2RlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCitpbmxpbmUgRnVu
Y3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwg
dW5zaWduZWQgc3RhcnRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sq
IHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1
cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVhdHVyZXMg
ZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCiAgICAgOiBTY29wZU5vZGUodm0sIHN0YXJ0TG9j
YXRpb24sIGVuZExvY2F0aW9uLCBzb3VyY2VDb2RlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNT
dGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCisgICAgLCBt
X3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogewogfQogCkBAIC0xOTcsMTQgKzIwNCwxNCBAQCB2
b2lkIEZ1bmN0aW9uQm9keU5vZGU6OmZpbmlzaFBhcnNpbmcoUGFzCiAgICAgbV9mdW5jdGlvbk5h
bWVJc0luU2NvcGVUb2dnbGUgPSBmdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGU7CiB9CiAKLUZ1
bmN0aW9uQm9keU5vZGUqIEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShWTSogdm0sIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRM
b2NhdGlvbiwgYm9vbCBpblN0cmljdENvbnRleHQpCitGdW5jdGlvbkJvZHlOb2RlKiBGdW5jdGlv
bkJvZHlOb2RlOjpjcmVhdGUoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9j
YXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0
Q29sdW1uLCBib29sIGluU3RyaWN0Q29udGV4dCkKIHsKLSAgICByZXR1cm4gbmV3IEZ1bmN0aW9u
Qm9keU5vZGUodm0sIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBpblN0cmljdENvbnRleHQp
OworICAgIHJldHVybiBuZXcgRnVuY3Rpb25Cb2R5Tm9kZSh2bSwgc3RhcnRMb2NhdGlvbiwgZW5k
TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBpblN0cmljdENvbnRleHQpOwogfQogCi1QYXNzUmVmUHRy
PEZ1bmN0aW9uQm9keU5vZGU+IEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShWTSogdm0sIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBl
bmRMb2NhdGlvbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ss
IEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJs
ZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywg
aW50IG51bUNvbnN0YW50cykKK1Bhc3NSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gRnVuY3Rpb25C
b2R5Tm9kZTo6Y3JlYXRlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0
aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENv
bHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0
aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51
bUNvbnN0YW50cykKIHsKLSAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gbm9kZSA9IG5ldyBG
dW5jdGlvbkJvZHlOb2RlKHZtLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgY2hpbGRyZW4s
IHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBzb3VyY2VDb2RlLCBmZWF0
dXJlcywgbnVtQ29uc3RhbnRzKTsKKyAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gbm9kZSA9
IG5ldyBGdW5jdGlvbkJvZHlOb2RlKHZtLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc3Rh
cnRDb2x1bW4sIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxl
cywgc291cmNlQ29kZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CiAKICAgICBBU1NFUlQobm9k
ZS0+bV9hcmVuYS5sYXN0KCkgPT0gbm9kZSk7CiAgICAgbm9kZS0+bV9hcmVuYS5yZW1vdmVMYXN0
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCShyZXZpc2lvbiAxNTE5
MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEzMCwxMiArMTMwLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFs
IH5Ob2RlKCkgeyB9CiAKICAgICAgICAgaW50IGxpbmVObygpIGNvbnN0IHsgcmV0dXJuIG1fbGlu
ZU51bWJlcjsgfQotCi0gICAgICAgIGludCBjaGFyUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2NoYXJQb3NpdGlvbjsgfQorICAgICAgICBpbnQgc3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX3N0YXJ0T2Zmc2V0OyB9CisgICAgICAgIGludCBsaW5lU3RhcnRPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX2xpbmVTdGFydE9mZnNldDsgfQogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBp
bnQgbV9saW5lTnVtYmVyOwotICAgICAgICBpbnQgbV9jaGFyUG9zaXRpb247CisgICAgICAgIGlu
dCBtX3N0YXJ0T2Zmc2V0OworICAgICAgICBpbnQgbV9saW5lU3RhcnRPZmZzZXQ7CiAgICAgfTsK
IAogICAgIGNsYXNzIEV4cHJlc3Npb25Ob2RlIDogcHVibGljIE5vZGUgewpAQCAtMTc4LDkgKzE3
OSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lk
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9u
ID0gMCkgPSAwOwogCi0gICAgICAgIHZvaWQgc2V0TG9jKGludCBmaXJzdExpbmUsIGludCBsYXN0
TGluZSwgaW50IGNoYXJQb3NpdGlvbik7Ci0gICAgICAgIGludCBmaXJzdExpbmUoKSBjb25zdCB7
IHJldHVybiBsaW5lTm8oKTsgfQotICAgICAgICBpbnQgbGFzdExpbmUoKSBjb25zdCB7IHJldHVy
biBtX2xhc3RMaW5lOyB9CisgICAgICAgIHZvaWQgc2V0TG9jKHVuc2lnbmVkIGZpcnN0TGluZSwg
dW5zaWduZWQgbGFzdExpbmUsIGludCBzdGFydE9mZnNldCwgaW50IGxpbmVTdGFydE9mZnNldCk7
CisgICAgICAgIHVuc2lnbmVkIGZpcnN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIGxpbmVObygpOyB9
CisgICAgICAgIHVuc2lnbmVkIGxhc3RMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TGluZTsg
fQogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5U3RhdGVtZW50KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzUmV0dXJuTm9kZSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CkBAIC0yNTQsMzYgKzI1NSw0OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKCkKICAgICAgICAgICAg
IDogbV9kaXZvdChzdGF0aWNfY2FzdDx1aW50MzJfdD4oLTEpKQotICAgICAgICAgICAgLCBtX3N0
YXJ0T2Zmc2V0KHN0YXRpY19jYXN0PHVpbnQxNl90PigtMSkpCi0gICAgICAgICAgICAsIG1fZW5k
T2Zmc2V0KHN0YXRpY19jYXN0PHVpbnQxNl90PigtMSkpCisgICAgICAgICAgICAsIG1fZGl2b3RT
dGFydE9mZnNldChzdGF0aWNfY2FzdDx1aW50MTZfdD4oLTEpKQorICAgICAgICAgICAgLCBtX2Rp
dm90RW5kT2Zmc2V0KHN0YXRpY19jYXN0PHVpbnQxNl90PigtMSkpCisgICAgICAgICAgICAsIG1f
ZGl2b3RMaW5lKHN0YXRpY19jYXN0PHVpbnQzMl90PigtMSkpCisgICAgICAgICAgICAsIG1fZGl2
b3RMaW5lU3RhcnQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KC0xKSkKICAgICAgICAgewogICAgICAg
ICB9CiAgICAgICAgIAotICAgICAgICBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSh1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEodW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2
b3RMaW5lU3RhcnQpCiAgICAgICAgICAgICA6IG1fZGl2b3QoZGl2b3QpCi0gICAgICAgICAgICAs
IG1fc3RhcnRPZmZzZXQoc3RhcnRPZmZzZXQpCi0gICAgICAgICAgICAsIG1fZW5kT2Zmc2V0KGVu
ZE9mZnNldCkKKyAgICAgICAgICAgICwgbV9kaXZvdFN0YXJ0T2Zmc2V0KHN0YXJ0T2Zmc2V0KQor
ICAgICAgICAgICAgLCBtX2Rpdm90RW5kT2Zmc2V0KGVuZE9mZnNldCkKKyAgICAgICAgICAgICwg
bV9kaXZvdExpbmUoZGl2b3RMaW5lKQorICAgICAgICAgICAgLCBtX2Rpdm90TGluZVN0YXJ0KGRp
dm90TGluZVN0YXJ0KQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV9kaXZvdCA+PSBt
X2Rpdm90TGluZVN0YXJ0KTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdm9pZCBzZXRF
eGNlcHRpb25Tb3VyY2VDb2RlKHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICB2b2lkIHNldEV4Y2VwdGlvblNvdXJjZUNvZGUo
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQs
IHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgIHsK
KyAgICAgICAgICAgIEFTU0VSVChkaXZvdCA+PSBkaXZvdExpbmVTdGFydCk7CiAgICAgICAgICAg
ICBtX2Rpdm90ID0gZGl2b3Q7Ci0gICAgICAgICAgICBtX3N0YXJ0T2Zmc2V0ID0gc3RhcnRPZmZz
ZXQ7Ci0gICAgICAgICAgICBtX2VuZE9mZnNldCA9IGVuZE9mZnNldDsKKyAgICAgICAgICAgIG1f
ZGl2b3RTdGFydE9mZnNldCA9IHN0YXJ0T2Zmc2V0OworICAgICAgICAgICAgbV9kaXZvdEVuZE9m
ZnNldCA9IGVuZE9mZnNldDsKKyAgICAgICAgICAgIG1fZGl2b3RMaW5lID0gZGl2b3RMaW5lOwor
ICAgICAgICAgICAgbV9kaXZvdExpbmVTdGFydCA9IGRpdm90TGluZVN0YXJ0OwogICAgICAgICB9
CiAKICAgICAgICAgdWludDMyX3QgZGl2b3QoKSBjb25zdCB7IHJldHVybiBtX2Rpdm90OyB9Ci0g
ICAgICAgIHVpbnQxNl90IHN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydE9mZnNl
dDsgfQotICAgICAgICB1aW50MTZfdCBlbmRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2VuZE9m
ZnNldDsgfQorICAgICAgICB1aW50MTZfdCBkaXZvdFN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gbV9kaXZvdFN0YXJ0T2Zmc2V0OyB9CisgICAgICAgIHVpbnQxNl90IGRpdm90RW5kT2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9kaXZvdEVuZE9mZnNldDsgfQorICAgICAgICB1aW50MzJfdCBk
aXZvdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2Rpdm90TGluZTsgfQorICAgICAgICB1aW50MzJf
dCBkaXZvdExpbmVTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fZGl2b3RMaW5lU3RhcnQ7IH0KIAog
ICAgIHByb3RlY3RlZDoKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFRocm93UmVmZXJlbmNlRXJy
b3IoQnl0ZWNvZGVHZW5lcmF0b3ImLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdWludDMyX3QgbV9kaXZvdDsKLSAgICAgICAgdWludDE2X3QgbV9zdGFy
dE9mZnNldDsKLSAgICAgICAgdWludDE2X3QgbV9lbmRPZmZzZXQ7CisgICAgICAgIHVpbnQxNl90
IG1fZGl2b3RTdGFydE9mZnNldDsKKyAgICAgICAgdWludDE2X3QgbV9kaXZvdEVuZE9mZnNldDsK
KyAgICAgICAgdWludDMyX3QgbV9kaXZvdExpbmU7CisgICAgICAgIHVpbnQzMl90IG1fZGl2b3RM
aW5lU3RhcnQ7CiAgICAgfTsKIAogICAgIGNsYXNzIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRh
IDogcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKQEAgLTI5MSwyOCArMzA0LDQ4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSgpCiAg
ICAgICAgICAgICA6IG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0KDApCiAgICAgICAgICAgICAs
IG1fc3ViZXhwcmVzc2lvbkVuZE9mZnNldCgwKQorICAgICAgICAgICAgLCBtX3N1YmV4cHJlc3Np
b25MaW5lT2Zmc2V0KDApCisgICAgICAgICAgICAsIG1fc3ViZXhwcmVzc2lvbkxpbmVTdGFydE9m
ZnNldCgwKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBUaHJvd2FibGVTdWJFeHBy
ZXNzaW9uRGF0YSh1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCkKLSAgICAgICAgICAgIDogVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3Qs
IHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCisgICAgICAgIFRocm93YWJsZVN1YkV4cHJlc3Npb25E
YXRhKHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KQorICAgICAg
ICAgICAgOiBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9m
ZnNldCwgZGl2b3RMaW5lLCBkaXZvdExpbmVTdGFydCkKICAgICAgICAgICAgICwgbV9zdWJleHBy
ZXNzaW9uRGl2b3RPZmZzZXQoMCkKICAgICAgICAgICAgICwgbV9zdWJleHByZXNzaW9uRW5kT2Zm
c2V0KDApCisgICAgICAgICAgICAsIG1fc3ViZXhwcmVzc2lvbkxpbmVPZmZzZXQoMCkKKyAgICAg
ICAgICAgICwgbV9zdWJleHByZXNzaW9uTGluZVN0YXJ0T2Zmc2V0KDApCiAgICAgICAgIHsKICAg
ICAgICAgfQogCi0gICAgICAgIHZvaWQgc2V0U3ViZXhwcmVzc2lvbkluZm8odWludDMyX3Qgc3Vi
ZXhwcmVzc2lvbkRpdm90LCB1aW50MTZfdCBzdWJleHByZXNzaW9uT2Zmc2V0KQorICAgICAgICB2
b2lkIHNldFN1YmV4cHJlc3Npb25JbmZvKHVpbnQzMl90IHN1YmV4cHJlc3Npb25EaXZvdCwgdWlu
dDE2X3Qgc3ViZXhwcmVzc2lvbk9mZnNldCwgdWludDMyX3Qgc3ViZXhwcmVzc2lvbkxpbmUsIHVp
bnQzMl90IHN1YmV4cHJlc3Npb25MaW5lU3RhcnQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFT
U0VSVChzdWJleHByZXNzaW9uRGl2b3QgPD0gZGl2b3QoKSk7Ci0gICAgICAgICAgICBpZiAoKGRp
dm90KCkgLSBzdWJleHByZXNzaW9uRGl2b3QpICYgfjB4RkZGRikgLy8gT3ZlcmZsb3cgbWVhbnMg
d2UgY2FuJ3QgZG8gdGhpcyBzYWZlbHksIHNvIGp1c3QgcG9pbnQgYXQgdGhlIHByaW1hcnkgZGl2
b3QKKyAgICAgICAgICAgIC8vIE92ZXJmbG93IG1lYW5zIHdlIGNhbid0IGRvIHRoaXMgc2FmZWx5
LCBzbyBqdXN0IHBvaW50IGF0IHRoZSBwcmltYXJ5IGRpdm90LAorICAgICAgICAgICAgLy8gZGl2
b3RMaW5lLCBvciBkaXZvdExpbmVTdGFydC4KKyAgICAgICAgICAgIGlmICgoZGl2b3QoKSAtIHN1
YmV4cHJlc3Npb25EaXZvdCkgJiB+MHhGRkZGKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIGlmICgoZGl2b3RMaW5lKCkgLSBzdWJleHByZXNzaW9uTGluZSkgJiB+MHhGRkZG
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmICgoZGl2b3RMaW5lU3Rh
cnQoKSAtIHN1YmV4cHJlc3Npb25MaW5lU3RhcnQpICYgfjB4RkZGRikKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNldCA9IGRpdm90
KCkgLSBzdWJleHByZXNzaW9uRGl2b3Q7CiAgICAgICAgICAgICBtX3N1YmV4cHJlc3Npb25FbmRP
ZmZzZXQgPSBzdWJleHByZXNzaW9uT2Zmc2V0OworICAgICAgICAgICAgbV9zdWJleHByZXNzaW9u
TGluZU9mZnNldCA9IGRpdm90TGluZSgpIC0gc3ViZXhwcmVzc2lvbkxpbmU7CisgICAgICAgICAg
ICBtX3N1YmV4cHJlc3Npb25MaW5lU3RhcnRPZmZzZXQgPSBkaXZvdExpbmVTdGFydCgpIC0gc3Vi
ZXhwcmVzc2lvbkxpbmVTdGFydDsKICAgICAgICAgfQogCisgICAgICAgIHVuc2lnbmVkIHN1YmV4
cHJlc3Npb25EaXZvdCgpIHsgcmV0dXJuIGRpdm90KCkgLSBtX3N1YmV4cHJlc3Npb25EaXZvdE9m
ZnNldDsgfQorICAgICAgICB1bnNpZ25lZCBzdWJleHByZXNzaW9uU3RhcnRPZmZzZXQoKSB7IHJl
dHVybiBkaXZvdFN0YXJ0T2Zmc2V0KCkgLSBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNldDsgfQor
ICAgICAgICB1bnNpZ25lZCBzdWJleHByZXNzaW9uRW5kT2Zmc2V0KCkgeyByZXR1cm4gbV9zdWJl
eHByZXNzaW9uRW5kT2Zmc2V0OyB9CisgICAgICAgIHVuc2lnbmVkIHN1YmV4cHJlc3Npb25MaW5l
KCkgeyByZXR1cm4gZGl2b3RMaW5lKCkgLSBtX3N1YmV4cHJlc3Npb25MaW5lT2Zmc2V0OyB9Cisg
ICAgICAgIHVuc2lnbmVkIHN1YmV4cHJlc3Npb25MaW5lU3RhcnQoKSB7IHJldHVybiBkaXZvdExp
bmVTdGFydCgpIC0gbV9zdWJleHByZXNzaW9uTGluZVN0YXJ0T2Zmc2V0OyB9CisKICAgICBwcm90
ZWN0ZWQ6CiAgICAgICAgIHVpbnQxNl90IG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0OwogICAg
ICAgICB1aW50MTZfdCBtX3N1YmV4cHJlc3Npb25FbmRPZmZzZXQ7CisgICAgICAgIHVpbnQxNl90
IG1fc3ViZXhwcmVzc2lvbkxpbmVPZmZzZXQ7CisgICAgICAgIHVpbnQxNl90IG1fc3ViZXhwcmVz
c2lvbkxpbmVTdGFydE9mZnNldDsKICAgICB9OwogICAgIAogICAgIGNsYXNzIFRocm93YWJsZVBy
ZWZpeGVkU3ViRXhwcmVzc2lvbkRhdGEgOiBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEg
ewpAQCAtMzIwLDI4ICszNTMsNDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFRocm93YWJs
ZVByZWZpeGVkU3ViRXhwcmVzc2lvbkRhdGEoKQogICAgICAgICAgICAgOiBtX3N1YmV4cHJlc3Np
b25EaXZvdE9mZnNldCgwKQogICAgICAgICAgICAgLCBtX3N1YmV4cHJlc3Npb25TdGFydE9mZnNl
dCgwKQorICAgICAgICAgICAgLCBtX3N1YmV4cHJlc3Npb25MaW5lT2Zmc2V0KDApCisgICAgICAg
ICAgICAsIG1fc3ViZXhwcmVzc2lvbkxpbmVTdGFydE9mZnNldCgwKQogICAgICAgICB7CiAgICAg
ICAgIH0KIAotICAgICAgICBUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhKHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAg
ICAgICAgICAgOiBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldCkKKyAgICAgICAgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNzaW9uRGF0YSh1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5z
aWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCkKKyAgICAgICAgICAgIDog
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGRp
dm90TGluZSwgZGl2b3RMaW5lU3RhcnQpCiAgICAgICAgICAgICAsIG1fc3ViZXhwcmVzc2lvbkRp
dm90T2Zmc2V0KDApCiAgICAgICAgICAgICAsIG1fc3ViZXhwcmVzc2lvblN0YXJ0T2Zmc2V0KDAp
CisgICAgICAgICAgICAsIG1fc3ViZXhwcmVzc2lvbkxpbmVPZmZzZXQoMCkKKyAgICAgICAgICAg
ICwgbV9zdWJleHByZXNzaW9uTGluZVN0YXJ0T2Zmc2V0KDApCiAgICAgICAgIHsKICAgICAgICAg
fQogCi0gICAgICAgIHZvaWQgc2V0U3ViZXhwcmVzc2lvbkluZm8odWludDMyX3Qgc3ViZXhwcmVz
c2lvbkRpdm90LCB1aW50MTZfdCBzdWJleHByZXNzaW9uT2Zmc2V0KQorICAgICAgICB2b2lkIHNl
dFN1YmV4cHJlc3Npb25JbmZvKHVpbnQzMl90IHN1YmV4cHJlc3Npb25EaXZvdCwgdWludDE2X3Qg
c3ViZXhwcmVzc2lvbk9mZnNldCwgdWludDMyX3Qgc3ViZXhwcmVzc2lvbkxpbmUsIHVpbnQzMl90
IHN1YmV4cHJlc3Npb25MaW5lU3RhcnQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChz
dWJleHByZXNzaW9uRGl2b3QgPj0gZGl2b3QoKSk7Ci0gICAgICAgICAgICBpZiAoKHN1YmV4cHJl
c3Npb25EaXZvdCAtIGRpdm90KCkpICYgfjB4RkZGRikgLy8gT3ZlcmZsb3cgbWVhbnMgd2UgY2Fu
J3QgZG8gdGhpcyBzYWZlbHksIHNvIGp1c3QgcG9pbnQgYXQgdGhlIHByaW1hcnkgZGl2b3QKKyAg
ICAgICAgICAgIC8vIE92ZXJmbG93IG1lYW5zIHdlIGNhbid0IGRvIHRoaXMgc2FmZWx5LCBzbyBq
dXN0IHBvaW50IGF0IHRoZSBwcmltYXJ5IGRpdm90LAorICAgICAgICAgICAgLy8gZGl2b3RMaW5l
LCBvciBkaXZvdExpbmVTdGFydC4KKyAgICAgICAgICAgIGlmICgoc3ViZXhwcmVzc2lvbkRpdm90
IC0gZGl2b3QoKSkgJiB+MHhGRkZGKSAKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICBpZiAoKHN1YmV4cHJlc3Npb25MaW5lIC0gZGl2b3RMaW5lKCkpICYgfjB4RkZGRikKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAoKHN1YmV4cHJlc3Npb25MaW5l
U3RhcnQgLSBkaXZvdExpbmVTdGFydCgpKSAmIH4weEZGRkYpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgbV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQgPSBzdWJleHByZXNz
aW9uRGl2b3QgLSBkaXZvdCgpOwogICAgICAgICAgICAgbV9zdWJleHByZXNzaW9uU3RhcnRPZmZz
ZXQgPSBzdWJleHByZXNzaW9uT2Zmc2V0OworICAgICAgICAgICAgbV9zdWJleHByZXNzaW9uTGlu
ZU9mZnNldCA9IHN1YmV4cHJlc3Npb25MaW5lIC0gZGl2b3RMaW5lKCk7CisgICAgICAgICAgICBt
X3N1YmV4cHJlc3Npb25MaW5lU3RhcnRPZmZzZXQgPSBzdWJleHByZXNzaW9uTGluZVN0YXJ0IC0g
ZGl2b3RMaW5lU3RhcnQoKTsKICAgICAgICAgfQogCisgICAgICAgIHVuc2lnbmVkIHN1YmV4cHJl
c3Npb25EaXZvdCgpIHsgcmV0dXJuIGRpdm90KCkgKyBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNl
dDsgfQorICAgICAgICB1bnNpZ25lZCBzdWJleHByZXNzaW9uU3RhcnRPZmZzZXQoKSB7IHJldHVy
biBtX3N1YmV4cHJlc3Npb25TdGFydE9mZnNldDsgfQorICAgICAgICB1bnNpZ25lZCBzdWJleHBy
ZXNzaW9uRW5kT2Zmc2V0KCkgeyByZXR1cm4gZGl2b3RFbmRPZmZzZXQoKSArIG1fc3ViZXhwcmVz
c2lvbkRpdm90T2Zmc2V0OyB9CisgICAgICAgIHVuc2lnbmVkIHN1YmV4cHJlc3Npb25MaW5lKCkg
eyByZXR1cm4gZGl2b3RMaW5lKCkgKyBtX3N1YmV4cHJlc3Npb25MaW5lT2Zmc2V0OyB9CisgICAg
ICAgIHVuc2lnbmVkIHN1YmV4cHJlc3Npb25MaW5lU3RhcnQoKSB7IHJldHVybiBkaXZvdExpbmVT
dGFydCgpICsgbV9zdWJleHByZXNzaW9uTGluZVN0YXJ0T2Zmc2V0OyB9CisKICAgICBwcm90ZWN0
ZWQ6CiAgICAgICAgIHVpbnQxNl90IG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0OwogICAgICAg
ICB1aW50MTZfdCBtX3N1YmV4cHJlc3Npb25TdGFydE9mZnNldDsKKyAgICAgICAgdWludDE2X3Qg
bV9zdWJleHByZXNzaW9uTGluZU9mZnNldDsKKyAgICAgICAgdWludDE2X3QgbV9zdWJleHByZXNz
aW9uTGluZVN0YXJ0T2Zmc2V0OwogICAgIH07CiAKICAgICBjbGFzcyBSZWdFeHBOb2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewpAQCAt
MzY1LDcgKzQxOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmVzb2x2ZU5vZGUg
OiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmVzb2x2ZU5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIGludCBzdGFydE9m
ZnNldCk7CisgICAgICAgIFJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0
IElkZW50aWZpZXImLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1
bnNpZ25lZCBkaXZvdExpbmVTdGFydCk7CiAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KIApAQCAtMzc3LDcgKzQzMCw5IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNSZXNvbHZlTm9kZSgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50
OwotICAgICAgICBpbnQzMl90IG1fc3RhcnRPZmZzZXQ7CisgICAgICAgIHVpbnQzMl90IG1fc3Rh
cnRPZmZzZXQ7CisgICAgICAgIHVpbnQzMl90IG1fZGl2b3RMaW5lOworICAgICAgICB1aW50MzJf
dCBtX2Rpdm90TGluZVN0YXJ0OwogICAgIH07CiAKICAgICBjbGFzcyBFbGVtZW50Tm9kZSA6IHB1
YmxpYyBQYXJzZXJBcmVuYUZyZWVhYmxlIHsKQEAgLTQwMSw3ICs0NTYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgQXJyYXlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEVsZW1lbnRO
b2RlKik7CiAgICAgICAgIEFycmF5Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQgZWxp
c2lvbiwgRWxlbWVudE5vZGUqKTsKIAotICAgICAgICBBcmd1bWVudExpc3ROb2RlKiB0b0FyZ3Vt
ZW50TGlzdChWTSosIGludCwgaW50KSBjb25zdDsKKyAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSog
dG9Bcmd1bWVudExpc3QoVk0qLCBpbnQsIGludCwgdW5zaWduZWQpIGNvbnN0OwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTI0LDcgKzU3OSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgRXZhbEZ1bmN0aW9uQ2FsbE5vZGUgOiBwdWJsaWMgRXhwcmVz
c2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgot
ICAgICAgICBFdmFsRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBBcmd1
bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpOworICAgICAgICBFdmFsRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQg
ZGl2b3RMaW5lU3RhcnQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpA
QCAtNTM0LDcgKzU4OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25D
YWxsVmFsdWVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25DYWxsVmFsdWVOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgQXJndW1lbnRzTm9kZSos
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KTsKKyAgICAgICAgRnVuY3Rpb25DYWxsVmFsdWVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25Ob2RlKiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVu
c2lnbmVkIGRpdm90TGluZVN0YXJ0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKQEAgLTU0NSw3ICs2MDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1
bmN0aW9uQ2FsbFJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25DYWxs
UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEFy
Z3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCk7CisgICAgICAgIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2ln
bmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTU2LDcgKzYxMSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIAogICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEFyZ3Vt
ZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCk7CisgICAgICAgIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2Ny
aXB0LCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RM
aW5lU3RhcnQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTY4
LDcgKzYyMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25DYWxsRG90
Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Np
b25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
LCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwg
QXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0
YXJ0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTU4MSw3ICs2
MzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENhbGxGdW5jdGlvbkNhbGxEb3RO
b2RlIDogcHVibGljIEZ1bmN0aW9uQ2FsbERvdE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAg
Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAg
ICBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWdu
ZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExpbmVTdGFydCk7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01ODksNyArNjQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgCiAgICAgY2xhc3MgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlIDogcHVibGljIEZ1bmN0
aW9uQ2FsbERvdE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXBwbHlGdW5jdGlvbkNhbGxE
b3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgQXBwbHlGdW5jdGlvbkNh
bGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVu
c2lnbmVkIGRpdm90TGluZVN0YXJ0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKQEAgLTU5Nyw3ICs2NTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERl
bGV0ZVJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRGVsZXRlUmVzb2x2ZU5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIHVuc2lnbmVkIGRpdm90
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRGVs
ZXRlUmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYs
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0KTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTYwNyw3ICs2NjIsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIERlbGV0ZUJyYWNrZXROb2RlIDogcHVibGljIEV4cHJlc3Np
b25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgRGVsZXRlQnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIHVuc2lnbmVkIGRpdm90LCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRGVsZXRl
QnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVk
IGRpdm90TGluZVN0YXJ0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsK
QEAgLTYxOCw3ICs2NzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERlbGV0ZURv
dE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBEZWxldGVEb3ROb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAg
ICAgICBEZWxldGVEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQg
ZGl2b3RMaW5lU3RhcnQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpA
QCAtNjcxLDcgKzcyNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJlZml4Tm9k
ZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVByZWZpeGVkU3ViRXhw
cmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUHJlZml4Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFByZWZp
eE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQs
IHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpOwogCiAgICAgcHJv
dGVjdGVkOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02ODUsNyArNzQwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBQb3N0Zml4Tm9kZSA6IHB1YmxpYyBQcmVmaXhOb2RlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIFBvc3RmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25Ob2RlKiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUG9zdGZpeE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRp
dm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQpOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApOwpAQCAtOTI4LDcgKzk4Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgUmVhZE1vZGlmeVJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBw
dWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmVh
ZE1vZGlmeVJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZp
ZXImLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqICByaWdodCwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCk7CisgICAgICAgIFJlYWRNb2RpZnlSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiAgcmln
aHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGxp
bmVTdGFydCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC05NTIs
NyArMTAwNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmVhZE1vZGlmeUJyYWNr
ZXROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVz
c2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmVhZE1vZGlmeUJyYWNrZXROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9k
ZSogc3Vic2NyaXB0LCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNj
cmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAg
UmVhZE1vZGlmeUJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciwgRXhwcmVzc2lv
bk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTk2Nyw3ICsxMDIy
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBc3NpZ25CcmFja2V0Tm9kZSA6IHB1
YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIEFzc2lnbkJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBFeHBy
ZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBBc3NpZ25CcmFja2V0Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNj
cmlwdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRz
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVk
IGRpdm90TGluZVN0YXJ0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsK
QEAgLTk4MSw3ICsxMDM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBc3NpZ25E
b3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXNzaWduRG90Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJl
c3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZv
dCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIEFz
c2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQsIHVuc2lnbmVkIGRpdm90TGluZSwgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQp
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtOTk0LDcgKzEwNDks
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlYWRNb2RpZnlEb3ROb2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgUmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwg
RXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAg
ICAgUmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJp
Z2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2ln
bmVkIGRpdm90TGluZVN0YXJ0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KTsKQEAgLTEwMDgsNyArMTA2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXNz
aWduRXJyb3JOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXNzaWduRXJyb3JOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgQXNzaWduRXJyb3JOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTExODQsNyArMTIz
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZvckluTm9kZSA6IHB1YmxpYyBTdGF0
ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoK
ICAgICAgICAgRm9ySW5Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2Rl
KiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKik7Ci0gICAgICAgIEZvckluTm9kZShW
TSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9u
Tm9kZSosIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSosIGludCBkaXZvdCwgaW50IHN0
YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRm9ySW5Ob2RlKFZNKiwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgRXhw
cmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKiwgdW5zaWduZWQgZGl2b3QsIGludCBzdGFydE9m
ZnNldCwgaW50IGVuZE9mZnNldCwgdW5zaWduZWQgZGl2b3RMaW5lLCB1bnNpZ25lZCBkaXZvdExp
bmVTdGFydCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEyMzcsNyArMTI5
Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgV2l0aE5vZGUgOiBwdWJsaWMgU3Rh
dGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBXaXRoTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqLCB1aW50MzJfdCBkaXZv
dCwgdWludDMyX3QgZXhwcmVzc2lvbkxlbmd0aCk7CisgICAgICAgIFdpdGhOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSosIHVpbnQzMl90
IGRpdm90LCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGluZVN0YXJ0LCB1aW50
MzJfdCBleHByZXNzaW9uTGVuZ3RoKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpA
QCAtMTI0NSw2ICsxMzAwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4cHJlc3Npb25O
b2RlKiBtX2V4cHI7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIG1fc3RhdGVtZW50OwogICAgICAg
ICB1aW50MzJfdCBtX2Rpdm90OworICAgICAgICB1aW50MzJfdCBtX2Rpdm90TGluZTsKKyAgICAg
ICAgdWludDMyX3QgbV9kaXZvdExpbmVTdGFydDsKICAgICAgICAgdWludDMyX3QgbV9leHByZXNz
aW9uTGVuZ3RoOwogICAgIH07CiAKQEAgLTEzMTksNyArMTM3Niw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBpbnRwdHJfdCBzb3VyY2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLnBy
b3ZpZGVySUQoKTsgfQogCiAgICAgICAgIGludCBzdGFydExpbmUoKSBjb25zdCB7IHJldHVybiBt
X3N0YXJ0TGluZU51bWJlcjsgfQotICAgICAgICBpbnQgc3RhcnRDaGFyUG9zaXRpb24oKSBjb25z
dCB7IHJldHVybiBtX3N0YXJ0Q2hhclBvc2l0aW9uO30KKyAgICAgICAgaW50IHN0YXJ0U3RhcnRP
ZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0U3RhcnRPZmZzZXQ7IH0KKyAgICAgICAgaW50
IHN0YXJ0TGluZVN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydExpbmVTdGFydE9m
ZnNldDsgfQogCiAgICAgICAgIHZvaWQgc2V0RmVhdHVyZXMoQ29kZUZlYXR1cmVzIGZlYXR1cmVz
KSB7IG1fZmVhdHVyZXMgPSBmZWF0dXJlczsgfQogICAgICAgICBDb2RlRmVhdHVyZXMgZmVhdHVy
ZXMoKSB7IHJldHVybiBtX2ZlYXR1cmVzOyB9CkBAIC0xMzU0LDcgKzE0MTIsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgUGFyc2VyQXJlbmEgbV9hcmVuYTsKIAogICAgICAgICBpbnQgbV9z
dGFydExpbmVOdW1iZXI7Ci0gICAgICAgIGludCBtX3N0YXJ0Q2hhclBvc2l0aW9uOworICAgICAg
ICB1bnNpZ25lZCBtX3N0YXJ0U3RhcnRPZmZzZXQ7CisgICAgICAgIHVuc2lnbmVkIG1fc3RhcnRM
aW5lU3RhcnRPZmZzZXQ7CiAKICAgICBwcml2YXRlOgogICAgICAgICBDb2RlRmVhdHVyZXMgbV9m
ZWF0dXJlczsKQEAgLTEzNjksMjAgKzE0MjgsMjYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xh
c3MgUHJvZ3JhbU5vZGUgOiBwdWJsaWMgU2NvcGVOb2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IHN0YXRpYyBjb25zdCBib29sIGlzRnVuY3Rpb25Ob2RlID0gZmFsc2U7Ci0gICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBjcmVhdGUoVk0qLCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgU291cmNlRWxlbWVudHMqLCBW
YXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29k
ZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFByb2dyYW1Ob2RlPiBjcmVhdGUoVk0qLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0
YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIFNv
dXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYs
IGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOworCisg
ICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uKCkgeyByZXR1cm4gbV9zdGFydENvbHVtbjsgfQog
CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNjb3BlSXNGdW5jdGlvbiA9IGZhbHNlOwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgUHJvZ3JhbU5vZGUoVk0qLCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgU291cmNlRWxlbWVudHMqLCBW
YXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29k
ZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIFByb2dyYW1Ob2Rl
KFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwg
RnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKworICAgICAgICB1
bnNpZ25lZCBtX3N0YXJ0Q29sdW1uOwogICAgIH07CiAKICAgICBjbGFzcyBFdmFsTm9kZSA6IHB1
YmxpYyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNGdW5jdGlvbk5vZGUgPSBmYWxzZTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RXZhbE5v
ZGU+IGNyZWF0ZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgZW5kLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFj
ayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQg
bnVtQ29uc3RhbnRzKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RXZhbE5vZGU+IGNyZWF0
ZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgZW5kLCB1bnNpZ25lZCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3Rh
Y2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50
IG51bUNvbnN0YW50cyk7CisKKyAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4oKSB7IHJldHVy
biAxOyB9CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gZmFs
c2U7CiAKQEAgLTE0MTQsOCArMTQ3OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1
bmN0aW9uQm9keU5vZGUgOiBwdWJsaWMgU2NvcGVOb2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IHN0YXRpYyBjb25zdCBib29sIGlzRnVuY3Rpb25Ob2RlID0gdHJ1ZTsKLSAgICAgICAgc3RhdGlj
IEZ1bmN0aW9uQm9keU5vZGUqIGNyZWF0ZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3Rh
cnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCBib29sIGlzU3RyaWN0TW9kZSk7Ci0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGNyZWF0ZShWTSosIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCBTb3Vy
Y2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBj
b25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAg
ICAgc3RhdGljIEZ1bmN0aW9uQm9keU5vZGUqIGNyZWF0ZShWTSosIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENv
bHVtbiwgYm9vbCBpc1N0cmljdE1vZGUpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGdW5j
dGlvbkJvZHlOb2RlPiBjcmVhdGUoVk0qLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIFNvdXJjZUVs
ZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0
IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAg
IEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1l
dGVycy5nZXQoKTsgfQogICAgICAgICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdCB7IHJl
dHVybiBtX3BhcmFtZXRlcnMtPnNpemUoKTsgfQpAQCAtMTQzNCwxOCArMTQ5OSwyMCBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIHNldEZ1bmN0aW9uU3RhcnQoaW50IGZ1bmN0aW9u
U3RhcnQpIHsgbV9mdW5jdGlvblN0YXJ0ID0gZnVuY3Rpb25TdGFydDsgfQogICAgICAgICBpbnQg
ZnVuY3Rpb25TdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25TdGFydDsgfQorICAgICAg
ICB1bnNpZ25lZCBzdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRDb2x1bW47IH0K
IAogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzY29wZUlzRnVuY3Rpb24gPSB0cnVlOwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShWTSosIGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCBib29sIGluU3RyaWN0
Q29udGV4dCk7Ci0gICAgICAgIEZ1bmN0aW9uQm9keU5vZGUoVk0qLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgU291cmNlRWxlbWVudHMq
LCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNl
Q29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIEZ1bmN0aW9u
Qm9keU5vZGUoVk0qLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIGJvb2wgaW5TdHJpY3RDb250ZXh0
KTsKKyAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
c3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwg
U291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0
JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAK
ICAgICAgICAgSWRlbnRpZmllciBtX2lkZW50OwogICAgICAgICBJZGVudGlmaWVyIG1faW5mZXJy
ZWROYW1lOwogICAgICAgICBGdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGUgbV9mdW5jdGlvbk5h
bWVJc0luU2NvcGVUb2dnbGU7CiAgICAgICAgIFJlZlB0cjxGdW5jdGlvblBhcmFtZXRlcnM+IG1f
cGFyYW1ldGVyczsKICAgICAgICAgaW50IG1fZnVuY3Rpb25TdGFydDsKKyAgICAgICAgdW5zaWdu
ZWQgbV9zdGFydENvbHVtbjsKICAgICB9OwogCiAgICAgY2xhc3MgRnVuY0V4cHJOb2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsOSBAQCBQYXJzZXI8TGV4
ZXJUeXBlPjo6UGFyc2VyKFZNKiB2bSwgY29uc3QgCiAgICAgbV9sZXhlciA9IGFkb3B0UHRyKG5l
dyBMZXhlclR5cGUodm0pKTsKICAgICBtX2FyZW5hID0gbV92bS0+cGFyc2VyQXJlbmEuZ2V0KCk7
CiAgICAgbV9sZXhlci0+c2V0Q29kZShzb3VyY2UsIG1fYXJlbmEpOworICAgIG1fdG9rZW4ubV9s
b2NhdGlvbi5zb3VyY2VPZmZzZXQgPSBzb3VyY2Uuc3RhcnRPZmZzZXQoKTsKKyAgICBtX3Rva2Vu
Lm1fbG9jYXRpb24uZW5kT2Zmc2V0ID0gc291cmNlLnN0YXJ0T2Zmc2V0KCk7CisgICAgbV90b2tl
bi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldCA9IHNvdXJjZS5zdGFydE9mZnNldCgpOwogCiAg
ICAgbV9mdW5jdGlvbkNhY2hlID0gdm0tPmFkZFNvdXJjZVByb3ZpZGVyQ2FjaGUoc291cmNlLnBy
b3ZpZGVyKCkpOwogICAgIFNjb3BlUmVmIHNjb3BlID0gcHVzaFNjb3BlKCk7CkBAIC0xNjIsNiAr
MTY1LDcgQEAgdGVtcGxhdGUgPFNvdXJjZUVsZW1lbnRzTW9kZSBtb2RlLCBjbGFzcwogICAgIGNv
bnN0IElkZW50aWZpZXIqIGRpcmVjdGl2ZSA9IDA7CiAgICAgdW5zaWduZWQgZGlyZWN0aXZlTGl0
ZXJhbExlbmd0aCA9IDA7CiAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBtX3Rva2VuLm1fbG9j
YXRpb24uc3RhcnRPZmZzZXQ7CisgICAgdW5zaWduZWQgc3RhcnRMaW5lU3RhcnRPZmZzZXQgPSBt
X3Rva2VuLm1fbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogICAgIHVuc2lnbmVkIG9sZExhc3RM
aW5lTnVtYmVyID0gbV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKTsKICAgICB1bnNpZ25lZCBvbGRM
aW5lTnVtYmVyID0gbV9sZXhlci0+bGluZU51bWJlcigpOwogICAgIGJvb2wgaGFzU2V0U3RyaWN0
ID0gZmFsc2U7CkBAIC0xNzMsNyArMTc3LDcgQEAgdGVtcGxhdGUgPFNvdXJjZUVsZW1lbnRzTW9k
ZSBtb2RlLCBjbGFzcwogICAgICAgICAgICAgICAgICAgICBzZXRTdHJpY3RNb2RlKCk7CiAgICAg
ICAgICAgICAgICAgICAgIGhhc1NldFN0cmljdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAg
IGZhaWxJZkZhbHNlKGlzVmFsaWRTdHJpY3RNb2RlKCkpOwotICAgICAgICAgICAgICAgICAgICBt
X2xleGVyLT5zZXRPZmZzZXQoc3RhcnRPZmZzZXQpOworICAgICAgICAgICAgICAgICAgICBtX2xl
eGVyLT5zZXRPZmZzZXQoc3RhcnRPZmZzZXQsIHN0YXJ0TGluZVN0YXJ0T2Zmc2V0KTsKICAgICAg
ICAgICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgICAgICAgICBtX2xleGVyLT5zZXRM
YXN0TGluZU51bWJlcihvbGRMYXN0TGluZU51bWJlcik7CiAgICAgICAgICAgICAgICAgICAgIG1f
bGV4ZXItPnNldExpbmVOdW1iZXIob2xkTGluZU51bWJlcik7CkBAIC0yODUsNiArMjg5LDggQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzcwogICAgICAgICBjb250ZXh0
LmFkZFZhcihuYW1lLCAoaGFzSW5pdGlhbGl6ZXIgfHwgKCFtX2FsbG93c0luICYmIG1hdGNoKElO
VE9LRU4pKSkgPyBEZWNsYXJhdGlvblN0YWNrczo6SGFzSW5pdGlhbGl6ZXIgOiAwKTsKICAgICAg
ICAgaWYgKGhhc0luaXRpYWxpemVyKSB7CiAgICAgICAgICAgICBpbnQgdmFyRGl2b3QgPSB0b2tl
blN0YXJ0KCkgKyAxOworICAgICAgICAgICAgdW5zaWduZWQgdmFyTGluZSA9IHRva2VuTGluZSgp
OyAKKyAgICAgICAgICAgIHVuc2lnbmVkIHZhckxpbmVTdGFydCA9IHRva2VuTGluZVN0YXJ0KCk7
CiAgICAgICAgICAgICBpbml0U3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgICAgICAgICBuZXh0
KFRyZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsgLy8gY29uc3VtZSAnPScKICAgICAgICAg
ICAgIFRyZWVFeHByZXNzaW9uIGluaXRpYWxpemVyID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lv
bihjb250ZXh0KTsKQEAgLTI5Miw3ICsyOTgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVFeHByZXNzCiAgICAgICAgICAgICBsYXN0SW5pdGlhbGl6ZXIgPSBpbml0aWFsaXpl
cjsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGluaXRpYWxpemVyKTsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gbm9kZSA9IGNvbnRleHQuY3JlYXRlQXNzaWduUmVz
b2x2ZShsb2NhdGlvbiwgKm5hbWUsIGluaXRpYWxpemVyLCB2YXJTdGFydCwgdmFyRGl2b3QsIGxh
c3RUb2tlbkVuZCgpKTsKKyAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBjb250ZXh0
LmNyZWF0ZUFzc2lnblJlc29sdmUobG9jYXRpb24sICpuYW1lLCBpbml0aWFsaXplciwgdmFyU3Rh
cnQsIHZhckRpdm90LCBsYXN0VG9rZW5FbmQoKSwgdmFyTGluZSwgdmFyTGluZVN0YXJ0KTsKICAg
ICAgICAgICAgIGlmICghdmFyRGVjbHMpCiAgICAgICAgICAgICAgICAgdmFyRGVjbHMgPSBub2Rl
OwogICAgICAgICAgICAgZWxzZQpAQCAtMzE3LDYgKzMyMyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUNvbnN0RGUKICAgICAgICAgYm9vbCBoYXNJbml0aWFsaXplciA9IG1h
dGNoKEVRVUFMKTsKICAgICAgICAgZGVjbGFyZVZhcmlhYmxlKG5hbWUpOwogICAgICAgICBjb250
ZXh0LmFkZFZhcihuYW1lLCBEZWNsYXJhdGlvblN0YWNrczo6SXNDb25zdGFudCB8IChoYXNJbml0
aWFsaXplciA/IERlY2xhcmF0aW9uU3RhY2tzOjpIYXNJbml0aWFsaXplciA6IDApKTsKKwogICAg
ICAgICBUcmVlRXhwcmVzc2lvbiBpbml0aWFsaXplciA9IDA7CiAgICAgICAgIGlmIChoYXNJbml0
aWFsaXplcikgewogICAgICAgICAgICAgbmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5n
cyk7IC8vIGNvbnN1bWUgJz0nCkBAIC0zNDEsNiArMzQ4LDggQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZQogICAgIGludCBkZWNsYXJhdGlvbnMgPSAwOwogICAgIGlu
dCBkZWNsc1N0YXJ0ID0gMDsKICAgICBpbnQgZGVjbHNFbmQgPSAwOworICAgIHVuc2lnbmVkIGRl
Y2xzTGluZSA9IDA7CisgICAgdW5zaWduZWQgZGVjbHNMaW5lU3RhcnQgPSAwOwogICAgIFRyZWVF
eHByZXNzaW9uIGRlY2xzID0gMDsKICAgICBpZiAobWF0Y2goVkFSKSkgewogICAgICAgICAvKgpA
QCAtMzY1LDYgKzM3NCw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRl
bWUKICAgICAgICAgCiAgICAgICAgIC8vIEhhbmRsZSBmb3ItaW4gd2l0aCB2YXIgZGVjbGFyYXRp
b24KICAgICAgICAgaW50IGluTG9jYXRpb24gPSB0b2tlblN0YXJ0KCk7CisgICAgICAgIHVuc2ln
bmVkIGluTGluZSA9IHRva2VuTGluZSgpOworICAgICAgICB1bnNpZ25lZCBpbkxpbmVTdGFydCA9
IHRva2VuTGluZVN0YXJ0KCk7CiAgICAgICAgIGNvbnN1bWVPckZhaWwoSU5UT0tFTik7CiAgICAg
ICAgIAogICAgICAgICBUcmVlRXhwcmVzc2lvbiBleHByID0gcGFyc2VFeHByZXNzaW9uKGNvbnRl
eHQpOwpAQCAtMzgwLDcgKzM5MSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWUKICAgICAgICAgZW5kTG9vcCgpOwogICAgICAgICBmYWlsSWZGYWxzZShzdGF0ZW1l
bnQpOwogICAgICAgICAKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9ySW5Mb29wKGxv
Y2F0aW9uLCBmb3JJblRhcmdldCwgZm9ySW5Jbml0aWFsaXplciwgZXhwciwgc3RhdGVtZW50LCBk
ZWNsc1N0YXJ0LCBpbkxvY2F0aW9uLCBleHByRW5kLCBpbml0U3RhcnQsIGluaXRFbmQsIHN0YXJ0
TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckluTG9vcChs
b2NhdGlvbiwgZm9ySW5UYXJnZXQsIGZvckluSW5pdGlhbGl6ZXIsIGV4cHIsIHN0YXRlbWVudCwg
ZGVjbHNTdGFydCwgaW5Mb2NhdGlvbiwgZXhwckVuZCwgaW5pdFN0YXJ0LCBpbml0RW5kLCBzdGFy
dExpbmUsIGVuZExpbmUsIGluTGluZSwgaW5MaW5lU3RhcnQpOwogICAgIH0KICAgICAKICAgICBp
ZiAoIW1hdGNoKFNFTUlDT0xPTikpIHsKQEAgLTM4OCw2ICszOTksOCBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiAgICAgICAgIGRlY2xzU3RhcnQgPSB0b2tlblN0
YXJ0KCk7CiAgICAgICAgIGRlY2xzID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAg
ICBkZWNsc0VuZCA9IGxhc3RUb2tlbkVuZCgpOworICAgICAgICBkZWNsc0xpbmUgPSBsYXN0VG9r
ZW5MaW5lKCk7CisgICAgICAgIGRlY2xzTGluZVN0YXJ0ID0gbGFzdFRva2VuTGluZVN0YXJ0KCk7
CiAgICAgICAgIG1fYWxsb3dzSW4gPSB0cnVlOwogICAgICAgICBmYWlsSWZGYWxzZShkZWNscyk7
CiAgICAgfQpAQCAtNDMzLDcgKzQ0Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVN0YXRlbWUKICAgICBlbmRMb29wKCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsK
ICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGb3JJbkxvb3AobG9jYXRpb24sIGRlY2xz
LCBleHByLCBzdGF0ZW1lbnQsIGRlY2xzU3RhcnQsIGRlY2xzRW5kLCBleHByRW5kLCBzdGFydExp
bmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckluTG9vcChsb2NhdGlv
biwgZGVjbHMsIGV4cHIsIHN0YXRlbWVudCwgZGVjbHNTdGFydCwgZGVjbHNFbmQsIGV4cHJFbmQs
IHN0YXJ0TGluZSwgZW5kTGluZSwgZGVjbHNMaW5lLCBkZWNsc0xpbmVTdGFydCk7CiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC00NDUsMjAgKzQ1OCwyMiBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiAgICAgaW50IGVuZENvbCA9IHRva2Vu
RW5kKCk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwogICAgIGludCBlbmRMaW5l
ID0gdG9rZW5MaW5lKCk7CisgICAgdW5zaWduZWQgZW5kTGluZVN0YXJ0ID0gdG9rZW5MaW5lU3Rh
cnQoKTsKICAgICBuZXh0KCk7CiAgICAgCiAgICAgaWYgKGF1dG9TZW1pQ29sb24oKSkgewogICAg
ICAgICBmYWlsSWZGYWxzZVdpdGhNZXNzYWdlKGJyZWFrSXNWYWxpZCgpLCAiJ2JyZWFrJyBpcyBv
bmx5IHZhbGlkIGluc2lkZSBhIHN3aXRjaCBvciBsb29wIHN0YXRlbWVudCIpOwotICAgICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVCcmVha1N0YXRlbWVudChsb2NhdGlvbiwgc3RhcnRDb2wsIGVu
ZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
QnJlYWtTdGF0ZW1lbnQobG9jYXRpb24sIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5k
TGluZSwgZW5kTGluZVN0YXJ0KTsKICAgICB9CiAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwogICAg
IGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgZmFp
bElmRmFsc2VXaXRoTmFtZUFuZE1lc3NhZ2UoZ2V0TGFiZWwoaWRlbnQpLCAiTGFiZWwiLCBpZGVu
dC0+aW1wbCgpLCAiaXMgbm90IGRlZmluZWQiKTsKICAgICBlbmRDb2wgPSB0b2tlbkVuZCgpOwog
ICAgIGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBlbmRMaW5lU3RhcnQgPSB0b2tlbkxpbmVT
dGFydCgpOwogICAgIG5leHQoKTsKICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCkpOwot
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJyZWFrU3RhdGVtZW50KGxvY2F0aW9uLCBpZGVudCwg
c3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVCcmVha1N0YXRlbWVudChsb2NhdGlvbiwgaWRlbnQsIHN0YXJ0Q29sLCBlbmRDb2ws
IHN0YXJ0TGluZSwgZW5kTGluZSwgZW5kTGluZVN0YXJ0KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIExleGVyVHlwZT4KQEAgLTQ3MCwxMSArNDg1LDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVN0YXRlbWUKICAgICBpbnQgZW5kQ29sID0gdG9rZW5FbmQoKTsKICAgICBp
bnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgaW50IGVuZExpbmUgPSB0b2tlbkxpbmUo
KTsKKyAgICB1bnNpZ25lZCBlbmRMaW5lU3RhcnQgPSB0b2tlbkxpbmVTdGFydCgpOwogICAgIG5l
eHQoKTsKICAgICAKICAgICBpZiAoYXV0b1NlbWlDb2xvbigpKSB7CiAgICAgICAgIGZhaWxJZkZh
bHNlV2l0aE1lc3NhZ2UoY29udGludWVJc1ZhbGlkKCksICInY29udGludWUnIGlzIG9ubHkgdmFs
aWQgaW5zaWRlIGEgbG9vcCBzdGF0ZW1lbnQiKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlQ29udGludWVTdGF0ZW1lbnQobG9jYXRpb24sIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGlu
ZSwgZW5kTGluZSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbnRpbnVlU3RhdGVt
ZW50KGxvY2F0aW9uLCBzdGFydENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUsIGVuZExp
bmVTdGFydCk7CiAgICAgfQogICAgIG1hdGNoT3JGYWlsKElERU5UKTsKICAgICBjb25zdCBJZGVu
dGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwpAQCAtNDgzLDkgKzQ5OSwxMCBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiAgICAgZmFpbElmRmFs
c2VXaXRoTWVzc2FnZShsYWJlbC0+bV9pc0xvb3AsICInY29udGludWUnIGlzIG9ubHkgdmFsaWQg
aW5zaWRlIGEgbG9vcCBzdGF0ZW1lbnQiKTsKICAgICBlbmRDb2wgPSB0b2tlbkVuZCgpOwogICAg
IGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBlbmRMaW5lU3RhcnQgPSB0b2tlbkxpbmVTdGFy
dCgpOwogICAgIG5leHQoKTsKICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCkpOwotICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGxvY2F0aW9uLCBpZGVudCwg
c3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVDb250aW51ZVN0YXRlbWVudChsb2NhdGlvbiwgaWRlbnQsIHN0YXJ0Q29sLCBlbmRD
b2wsIHN0YXJ0TGluZSwgZW5kTGluZSwgZW5kTGluZVN0YXJ0KTsKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIExleGVyVHlwZT4KQEAgLTQ5OCw2ICs1MTUsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiAgICAgaW50IGVuZExpbmUgPSBzdGFydExpbmU7CiAgICAg
aW50IHN0YXJ0ID0gdG9rZW5TdGFydCgpOwogICAgIGludCBlbmQgPSB0b2tlbkVuZCgpOworICAg
IHVuc2lnbmVkIGRpdm90TGluZSA9IHRva2VuTGluZSgpOworICAgIHVuc2lnbmVkIGRpdm90TGlu
ZVN0YXJ0ID0gdG9rZW5MaW5lU3RhcnQoKTsKICAgICBuZXh0KCk7CiAgICAgLy8gV2UgZG8gdGhl
IGF1dG8gc2VtaWNvbG9uIGNoZWNrIGJlZm9yZSBhdHRlbXB0aW5nIHRvIHBhcnNlIGFuIGV4cHJl
c3Npb24KICAgICAvLyBhcyB3ZSBuZWVkIHRvIGVuc3VyZSB0aGUgYSBsaW5lIGJyZWFrIGFmdGVy
IHRoZSByZXR1cm4gY29ycmVjdGx5IHRlcm1pbmF0ZXMKQEAgLTUwNSwxNCArNTI0LDE2IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWUKICAgICBpZiAobWF0Y2goU0VN
SUNPTE9OKSkKICAgICAgICAgZW5kTGluZSAgPSB0b2tlbkxpbmUoKTsKICAgICBpZiAoYXV0b1Nl
bWlDb2xvbigpKQotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQo
bG9jYXRpb24sIDAsIHN0YXJ0LCBlbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZVJldHVyblN0YXRlbWVudChsb2NhdGlvbiwgMCwgc3RhcnQsIGVu
ZCwgc3RhcnRMaW5lLCBlbmRMaW5lLCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KTsKICAgICBU
cmVlRXhwcmVzc2lvbiBleHByID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJ
ZkZhbHNlKGV4cHIpOwogICAgIGVuZCA9IGxhc3RUb2tlbkVuZCgpOworICAgIGRpdm90TGluZSA9
IGxhc3RUb2tlbkxpbmUoKTsKKyAgICBkaXZvdExpbmVTdGFydCA9IGxhc3RUb2tlbkxpbmVTdGFy
dCgpOwogICAgIGlmIChtYXRjaChTRU1JQ09MT04pKQogICAgICAgICBlbmRMaW5lICA9IHRva2Vu
TGluZSgpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50KGxvY2F0aW9uLCBleHByLCBzdGFydCwgZW5kLCBz
dGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVJldHVyblN0YXRl
bWVudChsb2NhdGlvbiwgZXhwciwgc3RhcnQsIGVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lLCBkaXZv
dExpbmUsIGRpdm90TGluZVN0YXJ0KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlw
ZT4KQEAgLTUyOSwxMCArNTUwLDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWUKICAgICBUcmVlRXhwcmVzc2lvbiBleHByID0gcGFyc2VFeHByZXNzaW9uKGNvbnRl
eHQpOwogICAgIGZhaWxJZkZhbHNlKGV4cHIpOwogICAgIGludCBlRW5kID0gbGFzdFRva2VuRW5k
KCk7CisgICAgdW5zaWduZWQgZGl2b3RMaW5lID0gbGFzdFRva2VuTGluZSgpOworICAgIHVuc2ln
bmVkIGRpdm90TGluZVN0YXJ0ID0gbGFzdFRva2VuTGluZVN0YXJ0KCk7CiAgICAgaW50IGVuZExp
bmUgPSB0b2tlbkxpbmUoKTsKICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCkpOwogICAg
IAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVRocm93U3RhdGVtZW50KGxvY2F0aW9uLCBleHBy
LCBlU3RhcnQsIGVFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlVGhyb3dTdGF0ZW1lbnQobG9jYXRpb24sIGV4cHIsIGVTdGFydCwgZUVuZCwgc3RhcnRM
aW5lLCBlbmRMaW5lLCBkaXZvdExpbmUsIGRpdm90TGluZVN0YXJ0KTsKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTU0OSwxNCArNTcyLDE1IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWUKICAgICBUcmVlRXhwcmVzc2lvbiBleHByID0gcGFy
c2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKGV4cHIpOwogICAgIGludCBl
bmQgPSBsYXN0VG9rZW5FbmQoKTsKLSAgICAKKyAgICB1bnNpZ25lZCBkaXZvdExpbmUgPSBsYXN0
VG9rZW5MaW5lKCk7CisgICAgdW5zaWduZWQgZGl2b3RMaW5lU3RhcnQgPSBsYXN0VG9rZW5MaW5l
U3RhcnQoKTsKICAgICBpbnQgZW5kTGluZSA9IHRva2VuTGluZSgpOwogICAgIGNvbnN1bWVPckZh
aWwoQ0xPU0VQQVJFTik7CiAgICAgY29uc3QgSWRlbnRpZmllciogdW51c2VkID0gMDsKICAgICBU
cmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVudXNlZCk7
CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKICAgICAKLSAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVXaXRoU3RhdGVtZW50KGxvY2F0aW9uLCBleHByLCBzdGF0ZW1lbnQsIHN0YXJ0LCBlbmQs
IHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlV2l0aFN0YXRl
bWVudChsb2NhdGlvbiwgZXhwciwgc3RhdGVtZW50LCBzdGFydCwgZW5kLCBzdGFydExpbmUsIGVu
ZExpbmUsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGV4ZXJUeXBlPgpAQCAtNzk1LDE5ICs4MTksMjAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExl
eGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImIGNvbnRleHQp
CiB7CiAgICAgSlNUb2tlbkxvY2F0aW9uIHN0YXJ0TG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsK
KyAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgbmV4dCgpOwog
CiAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKQotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVGdW5jdGlvbkJvZHkoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdHJpY3RNb2Rl
KCkpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkoc3RhcnRMb2Nh
dGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgc3RyaWN0TW9kZSgpKTsKICAgICBE
ZXB0aE1hbmFnZXIgc3RhdGVtZW50RGVwdGgoJm1fc3RhdGVtZW50RGVwdGgpOwogICAgIG1fc3Rh
dGVtZW50RGVwdGggPSAwOwogICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGdW5jdGlvbkJvZHlC
dWlsZGVyIGJvZHlCdWlsZGVyKGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7
CiAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50czxDaGVja0ZvclN0cmljdE1vZGU+
KGJvZHlCdWlsZGVyKSk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KHN0
YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RyaWN0TW9kZSgpKTsKKyAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigp
LCBzdGFydENvbHVtbiwgc3RyaWN0TW9kZSgpKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExl
eGVyVHlwZT4KLXRlbXBsYXRlIDxGdW5jdGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIGJv
b2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYgY29udGV4dCwgY29u
c3QgSWRlbnRpZmllciomIG5hbWUsIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0JiBwYXJhbWV0ZXJz
LCBUcmVlRnVuY3Rpb25Cb2R5JiBib2R5LCBpbnQmIG9wZW5CcmFjZVBvcywgaW50JiBjbG9zZUJy
YWNlUG9zLCBpbnQmIGJvZHlTdGFydExpbmUpCit0ZW1wbGF0ZSA8RnVuY3Rpb25SZXF1aXJlbWVu
dHMgcmVxdWlyZW1lbnRzLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBjbGFzcyBUcmVl
QnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1
aWxkZXImIGNvbnRleHQsIGNvbnN0IElkZW50aWZpZXIqJiBuYW1lLCBUcmVlRm9ybWFsUGFyYW1l
dGVyTGlzdCYgcGFyYW1ldGVycywgVHJlZUZ1bmN0aW9uQm9keSYgYm9keSwgdW5zaWduZWQmIG9w
ZW5CcmFjZU9mZnNldCwgdW5zaWduZWQmIGNsb3NlQnJhY2VPZmZzZXQsIGludCYgYm9keVN0YXJ0
TGluZSwgdW5zaWduZWQmIGJvZHlTdGFydENvbHVtbikKIHsKICAgICBBdXRvUG9wU2NvcGVSZWYg
ZnVuY3Rpb25TY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CiAgICAgZnVuY3Rpb25TY29wZS0+c2V0
SXNGdW5jdGlvbigpOwpAQCAtODI3LDI2ICs4NTIsMzMgQEAgdGVtcGxhdGUgPEZ1bmN0aW9uUmVx
dWlyZW1lbnRzIHJlcXVpcmVtZQogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7CiAgICAg
bWF0Y2hPckZhaWwoT1BFTkJSQUNFKTsKICAgICAKLSAgICBvcGVuQnJhY2VQb3MgPSBtX3Rva2Vu
Lm1fZGF0YS5pbnRWYWx1ZTsKKyAgICBvcGVuQnJhY2VPZmZzZXQgPSBtX3Rva2VuLm1fZGF0YS5v
ZmZzZXQ7CiAgICAgYm9keVN0YXJ0TGluZSA9IHRva2VuTGluZSgpOworICAgIGJvZHlTdGFydENv
bHVtbiA9IG1fdG9rZW4ubV9kYXRhLm9mZnNldCAtIG1fdG9rZW4ubV9kYXRhLmxpbmVTdGFydE9m
ZnNldDsKICAgICBKU1Rva2VuTG9jYXRpb24gc3RhcnRMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkp
OwogICAgIAogICAgIC8vIElmIHdlIGtub3cgYWJvdXQgdGhpcyBmdW5jdGlvbiBhbHJlYWR5LCB3
ZSBjYW4gdXNlIHRoZSBjYWNoZWQgaW5mbyBhbmQgc2tpcCB0aGUgcGFyc2VyIHRvIHRoZSBlbmQg
b2YgdGhlIGZ1bmN0aW9uLgotICAgIGlmIChjb25zdCBTb3VyY2VQcm92aWRlckNhY2hlSXRlbSog
Y2FjaGVkSW5mbyA9IFRyZWVCdWlsZGVyOjpDYW5Vc2VGdW5jdGlvbkNhY2hlID8gZmluZENhY2hl
ZEZ1bmN0aW9uSW5mbyhvcGVuQnJhY2VQb3MpIDogMCkgeworICAgIGlmIChjb25zdCBTb3VyY2VQ
cm92aWRlckNhY2hlSXRlbSogY2FjaGVkSW5mbyA9IFRyZWVCdWlsZGVyOjpDYW5Vc2VGdW5jdGlv
bkNhY2hlID8gZmluZENhY2hlZEZ1bmN0aW9uSW5mbyhvcGVuQnJhY2VPZmZzZXQpIDogMCkgewog
ICAgICAgICAvLyBJZiB3ZSdyZSBpbiBhIHN0cmljdCBjb250ZXh0LCB0aGUgY2FjaGVkIGZ1bmN0
aW9uIGluZm8gbXVzdCBzYXkgaXQgd2FzIHN0cmljdCB0b28uCiAgICAgICAgIEFTU0VSVCghc3Ry
aWN0TW9kZSgpIHx8IGNhY2hlZEluZm8tPnN0cmljdE1vZGUpOwotICAgICAgICBKU1Rva2VuTG9j
YXRpb24gZW5kTG9jYXRpb247CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBlbmRMb2NhdGlvbiht
X3NvdXJjZS0+c3RhcnRPZmZzZXQoKSk7CisKICAgICAgICAgZW5kTG9jYXRpb24ubGluZSA9IGNh
Y2hlZEluZm8tPmNsb3NlQnJhY2VMaW5lOwotICAgICAgICBlbmRMb2NhdGlvbi5jaGFyUG9zaXRp
b24gPSBjYWNoZWRJbmZvLT5jbG9zZUJyYWNlUG9zOwotICAgICAgICBib2R5ID0gY29udGV4dC5j
cmVhdGVGdW5jdGlvbkJvZHkoc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIGNhY2hlZEluZm8t
PnN0cmljdE1vZGUpOworICAgICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCA9IGNhY2hlZElu
Zm8tPmNsb3NlQnJhY2VPZmZzZXQ7CisgICAgICAgIGVuZExvY2F0aW9uLmxpbmVTdGFydE9mZnNl
dCA9IGNhY2hlZEluZm8tPmNsb3NlQnJhY2VMaW5lU3RhcnRPZmZzZXQ7CisgICAgICAgIEFTU0VS
VChlbmRMb2NhdGlvbi5zdGFydE9mZnNldCA+PSBlbmRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQp
OworCisgICAgICAgIGJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShzdGFydExvY2F0
aW9uLCBlbmRMb2NhdGlvbiwgYm9keVN0YXJ0Q29sdW1uLCBjYWNoZWRJbmZvLT5zdHJpY3RNb2Rl
KTsKICAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uU2NvcGUtPnJlc3RvcmVGcm9tU291cmNlUHJv
dmlkZXJDYWNoZShjYWNoZWRJbmZvKTsKICAgICAgICAgZmFpbElmRmFsc2UocG9wU2NvcGUoZnVu
Y3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbykpOwogICAgICAg
ICAKLSAgICAgICAgY2xvc2VCcmFjZVBvcyA9IGNhY2hlZEluZm8tPmNsb3NlQnJhY2VQb3M7Cisg
ICAgICAgIGNsb3NlQnJhY2VPZmZzZXQgPSBjYWNoZWRJbmZvLT5jbG9zZUJyYWNlT2Zmc2V0Owor
CiAgICAgICAgIGNvbnRleHQuc2V0RnVuY3Rpb25TdGFydChib2R5LCBmdW5jdGlvblN0YXJ0KTsK
ICAgICAgICAgbV90b2tlbiA9IGNhY2hlZEluZm8tPmNsb3NlQnJhY2VUb2tlbigpOwotICAgICAg
ICBtX2xleGVyLT5zZXRPZmZzZXQobV90b2tlbi5tX2xvY2F0aW9uLmVuZE9mZnNldCk7CisKKyAg
ICAgICAgbV9sZXhlci0+c2V0T2Zmc2V0KG1fdG9rZW4ubV9sb2NhdGlvbi5lbmRPZmZzZXQsIG1f
dG9rZW4ubV9sb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAgICBtX2xleGVyLT5zZXRM
aW5lTnVtYmVyKG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lKTsKICAgICAgICAgCiAgICAgICAgIG5l
eHQoKTsKQEAgLTg1OSwyMCArODkxLDI0IEBAIHRlbXBsYXRlIDxGdW5jdGlvblJlcXVpcmVtZW50
cyByZXF1aXJlbWUKICAgICAgICAgZmFpbElmVHJ1ZVdpdGhOYW1lQW5kTWVzc2FnZShtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgPT0gKm5hbWUsICJGdW5jdGlvbiBuYW1lIiwgbmFtZS0+
aW1wbCgpLCAiaXMgbm90IHZhbGlkIGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgIGZhaWxJZlRy
dWVXaXRoTmFtZUFuZE1lc3NhZ2UobV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqbmFtZSwg
IkZ1bmN0aW9uIG5hbWUiLCBuYW1lLT5pbXBsKCksICJpcyBub3QgdmFsaWQgaW4gc3RyaWN0IG1v
ZGUiKTsKICAgICB9Ci0gICAgY2xvc2VCcmFjZVBvcyA9IG1fdG9rZW4ubV9kYXRhLmludFZhbHVl
OworICAgIGNsb3NlQnJhY2VPZmZzZXQgPSBtX3Rva2VuLm1fZGF0YS5vZmZzZXQ7CisgICAgdW5z
aWduZWQgY2xvc2VCcmFjZUxpbmUgPSBtX3Rva2VuLm1fZGF0YS5saW5lOworICAgIHVuc2lnbmVk
IGNsb3NlQnJhY2VMaW5lU3RhcnRPZmZzZXQgPSBtX3Rva2VuLm1fZGF0YS5saW5lU3RhcnRPZmZz
ZXQ7CiAgICAgCiAgICAgLy8gQ2FjaGUgdGhlIHRva2VuaXplciBzdGF0ZSBhbmQgdGhlIGZ1bmN0
aW9uIHNjb3BlIHRoZSBmaXJzdCB0aW1lIHRoZSBmdW5jdGlvbiBpcyBwYXJzZWQuCiAgICAgLy8g
QW55IGZ1dHVyZSByZXBhcnNpbmcgY2FuIHRoZW4gc2tpcCB0aGUgZnVuY3Rpb24uCiAgICAgc3Rh
dGljIGNvbnN0IGludCBtaW5pbXVtRnVuY3Rpb25MZW5ndGhUb0NhY2hlID0gMTY7CiAgICAgT3du
UHRyPFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtPiBuZXdJbmZvOwotICAgIGludCBmdW5jdGlvbkxl
bmd0aCA9IGNsb3NlQnJhY2VQb3MgLSBvcGVuQnJhY2VQb3M7CisgICAgaW50IGZ1bmN0aW9uTGVu
Z3RoID0gY2xvc2VCcmFjZU9mZnNldCAtIG9wZW5CcmFjZU9mZnNldDsKICAgICBpZiAoVHJlZUJ1
aWxkZXI6OkNhblVzZUZ1bmN0aW9uQ2FjaGUgJiYgbV9mdW5jdGlvbkNhY2hlICYmIGZ1bmN0aW9u
TGVuZ3RoID4gbWluaW11bUZ1bmN0aW9uTGVuZ3RoVG9DYWNoZSkgewogICAgICAgICBTb3VyY2VQ
cm92aWRlckNhY2hlSXRlbUNyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgICAgICBw
YXJhbWV0ZXJzLmZ1bmN0aW9uU3RhcnQgPSBmdW5jdGlvblN0YXJ0OwotICAgICAgICBwYXJhbWV0
ZXJzLmNsb3NlQnJhY2VMaW5lID0gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmU7Ci0gICAgICAgIHBh
cmFtZXRlcnMuY2xvc2VCcmFjZVBvcyA9IGNsb3NlQnJhY2VQb3M7CisgICAgICAgIHBhcmFtZXRl
cnMuY2xvc2VCcmFjZUxpbmUgPSBjbG9zZUJyYWNlTGluZTsKKyAgICAgICAgcGFyYW1ldGVycy5j
bG9zZUJyYWNlT2Zmc2V0ID0gY2xvc2VCcmFjZU9mZnNldDsKKyAgICAgICAgcGFyYW1ldGVycy5j
bG9zZUJyYWNlTGluZVN0YXJ0T2Zmc2V0ID0gY2xvc2VCcmFjZUxpbmVTdGFydE9mZnNldDsKICAg
ICAgICAgZnVuY3Rpb25TY29wZS0+ZmlsbFBhcmFtZXRlcnNGb3JTb3VyY2VQcm92aWRlckNhY2hl
KHBhcmFtZXRlcnMpOwogICAgICAgICBuZXdJbmZvID0gU291cmNlUHJvdmlkZXJDYWNoZUl0ZW06
OmNyZWF0ZShwYXJhbWV0ZXJzKTsKKwogICAgIH0KICAgICBjb250ZXh0LnNldEZ1bmN0aW9uU3Rh
cnQoYm9keSwgZnVuY3Rpb25TdGFydCk7CiAgICAgCkBAIC04ODAsNyArOTE2LDcgQEAgdGVtcGxh
dGUgPEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZQogICAgIG1hdGNoT3JGYWlsKENMT1NF
QlJBQ0UpOwogICAgIAogICAgIGlmIChuZXdJbmZvKQotICAgICAgICBtX2Z1bmN0aW9uQ2FjaGUt
PmFkZChvcGVuQnJhY2VQb3MsIG5ld0luZm8ucmVsZWFzZSgpKTsKKyAgICAgICAgbV9mdW5jdGlv
bkNhY2hlLT5hZGQob3BlbkJyYWNlT2Zmc2V0LCBuZXdJbmZvLnJlbGVhc2UoKSk7CiAgICAgCiAg
ICAgbmV4dCgpOwogICAgIHJldHVybiB0cnVlOwpAQCAtODk1LDI2ICs5MzEsMzEgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZQogICAgIGNvbnN0IElkZW50aWZpZXIq
IG5hbWUgPSAwOwogICAgIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IHBhcmFtZXRlcnMgPSAwOwog
ICAgIFRyZWVGdW5jdGlvbkJvZHkgYm9keSA9IDA7Ci0gICAgaW50IG9wZW5CcmFjZVBvcyA9IDA7
Ci0gICAgaW50IGNsb3NlQnJhY2VQb3MgPSAwOworICAgIHVuc2lnbmVkIG9wZW5CcmFjZU9mZnNl
dCA9IDA7CisgICAgdW5zaWduZWQgY2xvc2VCcmFjZU9mZnNldCA9IDA7CiAgICAgaW50IGJvZHlT
dGFydExpbmUgPSAwOwotICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbzxGdW5jdGlv
bk5lZWRzTmFtZSwgdHJ1ZT4oY29udGV4dCwgbmFtZSwgcGFyYW1ldGVycywgYm9keSwgb3BlbkJy
YWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSkpOworICAgIHVuc2lnbmVkIGJv
ZHlTdGFydENvbHVtbiA9IDA7CisgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvPEZ1
bmN0aW9uTmVlZHNOYW1lLCB0cnVlPihjb250ZXh0LCBuYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBv
cGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZzZXQsIGJvZHlTdGFydExpbmUsIGJvZHlTdGFy
dENvbHVtbikpKTsKICAgICBmYWlsSWZGYWxzZShuYW1lKTsKICAgICBmYWlsSWZGYWxzZUlmU3Ry
aWN0KGRlY2xhcmVWYXJpYWJsZShuYW1lKSk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVu
Y0RlY2xTdGF0ZW1lbnQobG9jYXRpb24sIG5hbWUsIGJvZHksIHBhcmFtZXRlcnMsIG9wZW5CcmFj
ZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CisgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQobG9jYXRpb24sIG5hbWUsIGJvZHks
IHBhcmFtZXRlcnMsIG9wZW5CcmFjZU9mZnNldCwgY2xvc2VCcmFjZU9mZnNldCwgYm9keVN0YXJ0
TGluZSwgbV9sYXN0TGluZSwgYm9keVN0YXJ0Q29sdW1uKTsKIH0KIAogc3RydWN0IExhYmVsSW5m
byB7Ci0gICAgTGFiZWxJbmZvKGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBpbnQgc3RhcnQsIGlu
dCBlbmQpCisgICAgTGFiZWxJbmZvKGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCB1bnNpZ25lZCBz
dGFydCwgdW5zaWduZWQgZW5kLCB1bnNpZ25lZCBkaXZvdExpbmUsIHVuc2lnbmVkIGRpdm90TGlu
ZVN0YXJ0KQogICAgIDogbV9pZGVudChpZGVudCkKICAgICAsIG1fc3RhcnQoc3RhcnQpCiAgICAg
LCBtX2VuZChlbmQpCisgICAgLCBtX2Rpdm90TGluZShkaXZvdExpbmUpCisgICAgLCBtX2Rpdm90
TGluZVN0YXJ0KGRpdm90TGluZVN0YXJ0KQogICAgIHsKICAgICB9CiAgICAgCiAgICAgY29uc3Qg
SWRlbnRpZmllciogbV9pZGVudDsKLSAgICBpbnQgbV9zdGFydDsKLSAgICBpbnQgbV9lbmQ7Cisg
ICAgdW5zaWduZWQgbV9zdGFydDsKKyAgICB1bnNpZ25lZCBtX2VuZDsKKyAgICB1bnNpZ25lZCBt
X2Rpdm90TGluZTsKKyAgICB1bnNpZ25lZCBtX2Rpdm90TGluZVN0YXJ0OwogfTsKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTkyNSwxMCArOTY2LDEwIEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWUKICAgICAgKiBzcGVjaWFsIGNhc2UgdGhhdCBs
b29rcyBmb3IgYSBjb2xvbiBhcyB0aGUgbmV4dCBjaGFyYWN0ZXIgaW4gdGhlIGlucHV0LgogICAg
ICAqLwogICAgIFZlY3RvcjxMYWJlbEluZm8+IGxhYmVsczsKLSAgICBKU1Rva2VuTG9jYXRpb24g
bG9jYXRpb247CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKG1fc291cmNlLT5zdGFydE9m
ZnNldCgpKTsKICAgICBkbyB7CiAgICAgICAgIGludCBzdGFydCA9IHRva2VuU3RhcnQoKTsKLSAg
ICAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOworICAgICAgICBpbnQgc3RhcnRpbmdM
aW5lID0gdG9rZW5MaW5lKCk7CiAgICAgICAgIGxvY2F0aW9uID0gdG9rZW5Mb2NhdGlvbigpOwog
ICAgICAgICBpZiAoIW5leHRUb2tlbklzQ29sb24oKSkgewogICAgICAgICAgICAgLy8gSWYgd2Ug
aGl0IHRoaXMgcGF0aCB3ZSdyZSBtYWtpbmcgYSBleHByZXNzaW9uIHN0YXRlbWVudCwgd2hpY2gK
QEAgLTkzNywxMCArOTc4LDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWUKICAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIGV4cHJlc3Npb24gPSBwYXJzZUV4cHJl
c3Npb24oY29udGV4dCk7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShleHByZXNzaW9uKTsKICAg
ICAgICAgICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAgICAgICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVFeHByU3RhdGVtZW50KGxvY2F0aW9uLCBleHByZXNzaW9uLCBzdGFy
dExpbmUsIG1fbGFzdExpbmUpOworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhw
clN0YXRlbWVudChsb2NhdGlvbiwgZXhwcmVzc2lvbiwgc3RhcnRpbmdMaW5lLCBtX2xhc3RMaW5l
KTsKICAgICAgICAgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4u
bV9kYXRhLmlkZW50OwogICAgICAgICBpbnQgZW5kID0gdG9rZW5FbmQoKTsKKyAgICAgICAgdW5z
aWduZWQgZGl2b3RMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgICAgIHVuc2lnbmVkIGRpdm90TGlu
ZVN0YXJ0ID0gdG9rZW5MaW5lU3RhcnQoKTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBjb25z
dW1lT3JGYWlsKENPTE9OKTsKICAgICAgICAgaWYgKCFtX3N5bnRheEFscmVhZHlWYWxpZGF0ZWQp
IHsKQEAgLTk0OSw3ICs5OTIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxhYmVscy5zaXplKCk7
IGkrKykKICAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKGlkZW50LT5pbXBsKCkgPT0gbGFiZWxz
W2ldLm1faWRlbnQtPmltcGwoKSk7CiAgICAgICAgICAgICBmYWlsSWZUcnVlKGdldExhYmVsKGlk
ZW50KSk7Ci0gICAgICAgICAgICBsYWJlbHMuYXBwZW5kKExhYmVsSW5mbyhpZGVudCwgc3RhcnQs
IGVuZCkpOworICAgICAgICAgICAgbGFiZWxzLmFwcGVuZChMYWJlbEluZm8oaWRlbnQsIHN0YXJ0
LCBlbmQsIGRpdm90TGluZSwgZGl2b3RMaW5lU3RhcnQpKTsKICAgICAgICAgfQogICAgIH0gd2hp
bGUgKG1hdGNoKElERU5UKSk7CiAgICAgYm9vbCBpc0xvb3AgPSBmYWxzZTsKQEAgLTk3Niw3ICsx
MDE5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZQogICAgIGZh
aWxJZkZhbHNlKHN0YXRlbWVudCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsYWJlbHMu
c2l6ZSgpOyBpKyspIHsKICAgICAgICAgY29uc3QgTGFiZWxJbmZvJiBpbmZvID0gbGFiZWxzW2xh
YmVscy5zaXplKCkgLSBpIC0gMV07Ci0gICAgICAgIHN0YXRlbWVudCA9IGNvbnRleHQuY3JlYXRl
TGFiZWxTdGF0ZW1lbnQobG9jYXRpb24sIGluZm8ubV9pZGVudCwgc3RhdGVtZW50LCBpbmZvLm1f
c3RhcnQsIGluZm8ubV9lbmQpOworICAgICAgICBzdGF0ZW1lbnQgPSBjb250ZXh0LmNyZWF0ZUxh
YmVsU3RhdGVtZW50KGxvY2F0aW9uLCBpbmZvLm1faWRlbnQsIHN0YXRlbWVudCwgaW5mby5tX3N0
YXJ0LCBpbmZvLm1fZW5kLCBpbmZvLm1fZGl2b3RMaW5lLCBpbmZvLm1fZGl2b3RMaW5lU3RhcnQp
OwogICAgIH0KICAgICByZXR1cm4gc3RhdGVtZW50OwogfQpAQCAtMTEwNiw2ICsxMTQ5LDggQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIFRyZWVCdWlsZGVyPiBUcmVlRXhwcgogewogICAgIGZhaWxJZlN0
YWNrT3ZlcmZsb3coKTsKICAgICBpbnQgc3RhcnQgPSB0b2tlblN0YXJ0KCk7CisgICAgdW5zaWdu
ZWQgbGluZSA9IHRva2VuTGluZSgpOworICAgIHVuc2lnbmVkIGxpbmVTdGFydCA9IHRva2VuTGlu
ZVN0YXJ0KCk7CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7
CiAgICAgaW50IGluaXRpYWxBc3NpZ25tZW50Q291bnQgPSBtX2Fzc2lnbm1lbnRDb3VudDsKICAg
ICBpbnQgaW5pdGlhbE5vbkxIU0NvdW50ID0gbV9ub25MSFNDb3VudDsKQEAgLTExMzYsOCArMTE4
MSwxMCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJlZUJ1aWxkZXI+IFRyZWVFeHByCiAgICAgICAg
IH0KICAgICAgICAgbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAgIGhhZEFz
c2lnbm1lbnQgPSB0cnVlOwotICAgICAgICBjb250ZXh0LmFzc2lnbm1lbnRTdGFja0FwcGVuZChh
c3NpZ25tZW50U3RhY2ssIGxocywgc3RhcnQsIHRva2VuU3RhcnQoKSwgbV9hc3NpZ25tZW50Q291
bnQsIG9wKTsKKyAgICAgICAgY29udGV4dC5hc3NpZ25tZW50U3RhY2tBcHBlbmQoYXNzaWdubWVu
dFN0YWNrLCBsaHMsIHN0YXJ0LCB0b2tlblN0YXJ0KCksIGxpbmUsIGxpbmVTdGFydCwgbV9hc3Np
Z25tZW50Q291bnQsIG9wKTsKICAgICAgICAgc3RhcnQgPSB0b2tlblN0YXJ0KCk7CisgICAgICAg
IGxpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICAgICAgbGluZVN0YXJ0ID0gdG9rZW5MaW5lU3RhcnQo
KTsKICAgICAgICAgbV9hc3NpZ25tZW50Q291bnQrKzsKICAgICAgICAgbmV4dChUcmVlQnVpbGRl
cjo6RG9udEJ1aWxkU3RyaW5ncyk7CiAgICAgICAgIGlmIChzdHJpY3RNb2RlKCkgJiYgbV9sYXN0
SWRlbnRpZmllciAmJiBjb250ZXh0LmlzUmVzb2x2ZShsaHMpKSB7CkBAIC0xMjEwLDcgKzEyNTcs
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAgICAgICAgIFRy
ZWVFeHByZXNzaW9uIGN1cnJlbnQgPSBwYXJzZVVuYXJ5RXhwcmVzc2lvbihjb250ZXh0KTsKICAg
ICAgICAgZmFpbElmRmFsc2UoY3VycmVudCk7CiAgICAgICAgIAotICAgICAgICBjb250ZXh0LmFw
cGVuZEJpbmFyeUV4cHJlc3Npb25JbmZvKG9wZXJhbmRTdGFja0RlcHRoLCBjdXJyZW50LCBleHBy
U3RhcnQsIGxhc3RUb2tlbkVuZCgpLCBsYXN0VG9rZW5FbmQoKSwgaW5pdGlhbEFzc2lnbm1lbnRz
ICE9IG1fYXNzaWdubWVudENvdW50KTsKKyAgICAgICAgY29udGV4dC5hcHBlbmRCaW5hcnlFeHBy
ZXNzaW9uSW5mbyhvcGVyYW5kU3RhY2tEZXB0aCwgY3VycmVudCwgZXhwclN0YXJ0LCBsYXN0VG9r
ZW5FbmQoKSwgbGFzdFRva2VuRW5kKCksIGxhc3RUb2tlbkxpbmUoKSwgbGFzdFRva2VuTGluZVN0
YXJ0KCksIGluaXRpYWxBc3NpZ25tZW50cyAhPSBtX2Fzc2lnbm1lbnRDb3VudCk7CiAgICAgICAg
IGludCBwcmVjZWRlbmNlID0gaXNCaW5hcnlPcGVyYXRvcihtX3Rva2VuLm1fdHlwZSk7CiAgICAg
ICAgIGlmICghcHJlY2VkZW5jZSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTI2Nyw5ICsxMzE0
LDEwIEBAIHRlbXBsYXRlIDxib29sIGNvbXBsZXRlLCBjbGFzcyBUcmVlQnVpbGQKICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciogYWNjZXNzb3JOYW1lID0gMDsKICAgICAgICAgVHJlZUZvcm1hbFBh
cmFtZXRlckxpc3QgcGFyYW1ldGVycyA9IDA7CiAgICAgICAgIFRyZWVGdW5jdGlvbkJvZHkgYm9k
eSA9IDA7Ci0gICAgICAgIGludCBvcGVuQnJhY2VQb3MgPSAwOwotICAgICAgICBpbnQgY2xvc2VC
cmFjZVBvcyA9IDA7CisgICAgICAgIHVuc2lnbmVkIG9wZW5CcmFjZU9mZnNldCA9IDA7CisgICAg
ICAgIHVuc2lnbmVkIGNsb3NlQnJhY2VPZmZzZXQgPSAwOwogICAgICAgICBpbnQgYm9keVN0YXJ0
TGluZSA9IDA7CisgICAgICAgIHVuc2lnbmVkIGJvZHlTdGFydENvbHVtbiA9IDA7CiAgICAgICAg
IFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlOwogICAgICAgICBpZiAoKmlkZW50ID09IG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmdldCkKICAgICAgICAgICAgIHR5cGUgPSBQcm9wZXJ0eU5vZGU6OkdldHRl
cjsKQEAgLTEyODcsMTAgKzEzMzUsMTAgQEAgdGVtcGxhdGUgPGJvb2wgY29tcGxldGUsIGNsYXNz
IFRyZWVCdWlsZAogICAgICAgICAgICAgZmFpbCgpOwogICAgICAgICBKU1Rva2VuTG9jYXRpb24g
bG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgpOwotICAgICAgICBmYWls
SWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm88RnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgZmFsc2U+
KGNvbnRleHQsIGFjY2Vzc29yTmFtZSwgcGFyYW1ldGVycywgYm9keSwgb3BlbkJyYWNlUG9zLCBj
bG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSkpOworICAgICAgICBmYWlsSWZGYWxzZSgocGFy
c2VGdW5jdGlvbkluZm88RnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgZmFsc2U+KGNvbnRleHQsIGFj
Y2Vzc29yTmFtZSwgcGFyYW1ldGVycywgYm9keSwgb3BlbkJyYWNlT2Zmc2V0LCBjbG9zZUJyYWNl
T2Zmc2V0LCBib2R5U3RhcnRMaW5lLCBib2R5U3RhcnRDb2x1bW4pKSk7CiAgICAgICAgIGlmIChz
dHJpbmdQcm9wZXJ0eU5hbWUpCi0gICAgICAgICAgICByZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBj
cmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5PGNvbXBsZXRlPihsb2NhdGlvbiwgdHlwZSwgc3Ry
aW5nUHJvcGVydHlOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJh
Y2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOwotICAgICAgICByZXR1cm4gY29udGV4
dC50ZW1wbGF0ZSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5PGNvbXBsZXRlPihjb25zdF9j
YXN0PFZNKj4obV92bSksIGxvY2F0aW9uLCB0eXBlLCBudW1lcmljUHJvcGVydHlOYW1lLCBwYXJh
bWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUs
IG1fbGFzdExpbmUpOworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQudGVtcGxhdGUgY3JlYXRl
R2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eTxjb21wbGV0ZT4obG9jYXRpb24sIHR5cGUsIHN0cmluZ1By
b3BlcnR5TmFtZSwgcGFyYW1ldGVycywgYm9keSwgb3BlbkJyYWNlT2Zmc2V0LCBjbG9zZUJyYWNl
T2Zmc2V0LCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5lLCBib2R5U3RhcnRDb2x1bW4pOworICAg
ICAgICByZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5
PGNvbXBsZXRlPihjb25zdF9jYXN0PFZNKj4obV92bSksIGxvY2F0aW9uLCB0eXBlLCBudW1lcmlj
UHJvcGVydHlOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJh
Y2VPZmZzZXQsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUsIGJvZHlTdGFydENvbHVtbik7CiAg
ICAgfQogICAgIGNhc2UgTlVNQkVSOiB7CiAgICAgICAgIGRvdWJsZSBwcm9wZXJ0eU5hbWUgPSBt
X3Rva2VuLm1fZGF0YS5kb3VibGVWYWx1ZTsKQEAgLTEzMDksNyArMTM1Nyw4IEBAIHRlbXBsYXRl
IDxib29sIGNvbXBsZXRlLCBjbGFzcyBUcmVlQnVpbGQKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhl
clR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZU9iamVjdExpdGVyYWwoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7
Ci0gICAgaW50IHN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5tX2RhdGEuaW50VmFsdWU7CisgICAgaW50
IHN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5tX2RhdGEub2Zmc2V0OworICAgIHVuc2lnbmVkIG9sZExp
bmVTdGFydE9mZnNldCA9IG1fbGV4ZXItPmN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKICAgICB1
bnNpZ25lZCBvbGRMYXN0TGluZU51bWJlciA9IG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCk7CiAg
ICAgdW5zaWduZWQgb2xkTGluZU51bWJlciA9IG1fbGV4ZXItPmxpbmVOdW1iZXIoKTsKICAgICBj
b25zdW1lT3JGYWlsV2l0aEZsYWdzKE9QRU5CUkFDRSwgVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZFN0
cmluZ3MpOwpAQCAtMTMyNSw3ICsxMzc0LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlRXhwcmVzcwogICAgIFRyZWVQcm9wZXJ0eSBwcm9wZXJ0eSA9IHBhcnNlUHJvcGVydHk8
ZmFsc2U+KGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKHByb3BlcnR5KTsKICAgICBpZiAoIW1f
c3ludGF4QWxyZWFkeVZhbGlkYXRlZCAmJiBjb250ZXh0LmdldFR5cGUocHJvcGVydHkpICE9IFBy
b3BlcnR5Tm9kZTo6Q29uc3RhbnQpIHsKLSAgICAgICAgbV9sZXhlci0+c2V0T2Zmc2V0KHN0YXJ0
T2Zmc2V0KTsKKyAgICAgICAgbV9sZXhlci0+c2V0T2Zmc2V0KHN0YXJ0T2Zmc2V0LCBvbGRMaW5l
U3RhcnRPZmZzZXQpOwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIG1fbGV4ZXItPnNldExhc3RM
aW5lTnVtYmVyKG9sZExhc3RMaW5lTnVtYmVyKTsKICAgICAgICAgbV9sZXhlci0+c2V0TGluZU51
bWJlcihvbGRMaW5lTnVtYmVyKTsKQEAgLTEzNDIsNyArMTM5MSw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3MKICAgICAgICAgcHJvcGVydHkgPSBwYXJzZVByb3Bl
cnR5PGZhbHNlPihjb250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UocHJvcGVydHkpOwogICAg
ICAgICBpZiAoIW1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZCAmJiBjb250ZXh0LmdldFR5cGUocHJv
cGVydHkpICE9IFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpIHsKLSAgICAgICAgICAgIG1fbGV4ZXIt
PnNldE9mZnNldChzdGFydE9mZnNldCk7CisgICAgICAgICAgICBtX2xleGVyLT5zZXRPZmZzZXQo
c3RhcnRPZmZzZXQsIG9sZExpbmVTdGFydE9mZnNldCk7CiAgICAgICAgICAgICBuZXh0KCk7CiAg
ICAgICAgICAgICBtX2xleGVyLT5zZXRMYXN0TGluZU51bWJlcihvbGRMYXN0TGluZU51bWJlcik7
CiAgICAgICAgICAgICBtX2xleGVyLT5zZXRMaW5lTnVtYmVyKG9sZExpbmVOdW1iZXIpOwpAQCAt
MTQ4OCwxMiArMTUzNywxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHBy
ZXNzCiAgICAgfQogICAgIGNhc2UgSURFTlQ6IHsKICAgICAgICAgaW50IHN0YXJ0ID0gdG9rZW5T
dGFydCgpOworICAgICAgICBpbnQgbGluZSA9IHRva2VuTGluZSgpOworICAgICAgICBpbnQgbGlu
ZVN0YXJ0ID0gdG9rZW5MaW5lU3RhcnQoKTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRl
bnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0
aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgY3VycmVudFNj
b3BlKCktPnVzZVZhcmlhYmxlKGlkZW50LCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09ICpp
ZGVudCk7CiAgICAgICAgIG1fbGFzdElkZW50aWZpZXIgPSBpZGVudDsKLSAgICAgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlUmVzb2x2ZShsb2NhdGlvbiwgaWRlbnQsIHN0YXJ0KTsKKyAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlUmVzb2x2ZShsb2NhdGlvbiwgaWRlbnQsIHN0YXJ0LCBsaW5l
LCBsaW5lU3RhcnQpOwogICAgIH0KICAgICBjYXNlIFNUUklORzogewogICAgICAgICBjb25zdCBJ
ZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwpAQCAtMTUzMyw5ICsxNTg0
LDExIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3MKICAgICAgICAg
ICAgIGZhaWxJZkZhbHNlKG1fbGV4ZXItPnNjYW5SZWdFeHAocGF0dGVybiwgZmxhZ3MpKTsKICAg
ICAgICAgCiAgICAgICAgIGludCBzdGFydCA9IHRva2VuU3RhcnQoKTsKKyAgICAgICAgaW50IGxp
bmUgPSB0b2tlbkxpbmUoKTsKKyAgICAgICAgaW50IGxpbmVTdGFydCA9IHRva2VuTGluZVN0YXJ0
KCk7CiAgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwog
ICAgICAgICBuZXh0KCk7Ci0gICAgICAgIFRyZWVFeHByZXNzaW9uIHJlID0gY29udGV4dC5jcmVh
dGVSZWdFeHAobG9jYXRpb24sICpwYXR0ZXJuLCAqZmxhZ3MsIHN0YXJ0KTsKKyAgICAgICAgVHJl
ZUV4cHJlc3Npb24gcmUgPSBjb250ZXh0LmNyZWF0ZVJlZ0V4cChsb2NhdGlvbiwgKnBhdHRlcm4s
ICpmbGFncywgc3RhcnQsIGxpbmUsIGxpbmVTdGFydCk7CiAgICAgICAgIGlmICghcmUpIHsKICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHlhcnJFcnJvck1zZyA9IFlhcnI6OmNoZWNrU3ludGF4KHBh
dHRlcm4tPnN0cmluZygpKTsKICAgICAgICAgICAgIGZhaWxXaXRoTWVzc2FnZSh5YXJyRXJyb3JN
c2cpOwpAQCAtMTU3OCw4ICsxNjMxLDEwIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3MKICAgICBUcmVlRXhwcmVzc2lvbiBiYXNlID0gMDsKICAgICBpbnQgc3RhcnQg
PSB0b2tlblN0YXJ0KCk7CiAgICAgaW50IGV4cHJlc3Npb25TdGFydCA9IHN0YXJ0OworICAgIGlu
dCBleHByZXNzaW9uTGluZSA9IHRva2VuTGluZSgpOworICAgIGludCBleHByZXNzaW9uTGluZVN0
YXJ0ID0gdG9rZW5MaW5lU3RhcnQoKTsKICAgICBpbnQgbmV3Q291bnQgPSAwOwotICAgIEpTVG9r
ZW5Mb2NhdGlvbiBsb2NhdGlvbjsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24obV9zb3Vy
Y2UtPnN0YXJ0T2Zmc2V0KCkpOwogICAgIHdoaWxlIChtYXRjaChORVcpKSB7CiAgICAgICAgIG5l
eHQoKTsKICAgICAgICAgbmV3Q291bnQrKzsKQEAgLTE1ODksMTMgKzE2NDQsMTQgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzcwogICAgICAgICBjb25zdCBJZGVudGlm
aWVyKiBuYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwogICAgICAg
ICBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCBwYXJhbWV0ZXJzID0gMDsKICAgICAgICAgVHJlZUZ1
bmN0aW9uQm9keSBib2R5ID0gMDsKLSAgICAgICAgaW50IG9wZW5CcmFjZVBvcyA9IDA7Ci0gICAg
ICAgIGludCBjbG9zZUJyYWNlUG9zID0gMDsKKyAgICAgICAgdW5zaWduZWQgb3BlbkJyYWNlT2Zm
c2V0ID0gMDsKKyAgICAgICAgdW5zaWduZWQgY2xvc2VCcmFjZU9mZnNldCA9IDA7CiAgICAgICAg
IGludCBib2R5U3RhcnRMaW5lID0gMDsKKyAgICAgICAgdW5zaWduZWQgYm9keVN0YXJ0Q29sdW1u
ID0gMDsKICAgICAgICAgbG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAgICAgIG5leHQo
KTsKLSAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvPEZ1bmN0aW9uTm9SZXF1
aXJlbWVudHMsIGZhbHNlPihjb250ZXh0LCBuYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJh
Y2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpKSk7Ci0gICAgICAgIGJhc2UgPSBj
b250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihsb2NhdGlvbiwgbmFtZSwgYm9keSwgcGFyYW1ldGVy
cywgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5l
KTsKKyAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvPEZ1bmN0aW9uTm9SZXF1
aXJlbWVudHMsIGZhbHNlPihjb250ZXh0LCBuYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJh
Y2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZzZXQsIGJvZHlTdGFydExpbmUsIGJvZHlTdGFydENvbHVt
bikpKTsKKyAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25FeHByKGxvY2F0aW9u
LCBuYW1lLCBib2R5LCBwYXJhbWV0ZXJzLCBvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZz
ZXQsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUsIGJvZHlTdGFydENvbHVtbik7CiAgICAgfSBl
bHNlCiAgICAgICAgIGJhc2UgPSBwYXJzZVByaW1hcnlFeHByZXNzaW9uKGNvbnRleHQpOwogICAg
IApAQCAtMTYwNiwxMiArMTY2MiwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzCiAgICAgICAgIGNhc2UgT1BFTkJSQUNLRVQ6IHsKICAgICAgICAgICAgIG1fbm9u
VHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwogICAgICAgICAgICAgaW50IGV4cHJlc3Npb25FbmQg
PSBsYXN0VG9rZW5FbmQoKTsKKyAgICAgICAgICAgIGludCBleHByZXNzaW9uTGluZSA9IGxhc3RU
b2tlbkxpbmUoKTsKKyAgICAgICAgICAgIGludCBleHByZXNzaW9uTGluZVN0YXJ0ID0gbGFzdFRv
a2VuTGluZVN0YXJ0KCk7CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICBpbnQgbm9u
TEhTQ291bnQgPSBtX25vbkxIU0NvdW50OwogICAgICAgICAgICAgaW50IGluaXRpYWxBc3NpZ25t
ZW50cyA9IG1fYXNzaWdubWVudENvdW50OwogICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gcHJv
cGVydHkgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgICAgICBmYWlsSWZGYWxz
ZShwcm9wZXJ0eSk7Ci0gICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVCcmFja2V0QWNj
ZXNzKGxvY2F0aW9uLCBiYXNlLCBwcm9wZXJ0eSwgaW5pdGlhbEFzc2lnbm1lbnRzICE9IG1fYXNz
aWdubWVudENvdW50LCBleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25FbmQsIHRva2VuRW5kKCkp
OworICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlQnJhY2tldEFjY2Vzcyhsb2NhdGlv
biwgYmFzZSwgcHJvcGVydHksIGluaXRpYWxBc3NpZ25tZW50cyAhPSBtX2Fzc2lnbm1lbnRDb3Vu
dCwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZCgpLCBleHByZXNzaW9u
TGluZSwgZXhwcmVzc2lvbkxpbmVTdGFydCk7CiAgICAgICAgICAgICBjb25zdW1lT3JGYWlsKENM
T1NFQlJBQ0tFVCk7CiAgICAgICAgICAgICBtX25vbkxIU0NvdW50ID0gbm9uTEhTQ291bnQ7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTE2MjIsMTQgKzE2ODAsMTggQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzcwogICAgICAgICAgICAgaWYgKG5ld0NvdW50KSB7CiAg
ICAgICAgICAgICAgICAgbmV3Q291bnQtLTsKICAgICAgICAgICAgICAgICBpbnQgZXhwckVuZCA9
IGxhc3RUb2tlbkVuZCgpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGV4cHJlc3Npb25MaW5l
ID0gbGFzdFRva2VuTGluZSgpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGV4cHJlc3Npb25M
aW5lU3RhcnQgPSBsYXN0VG9rZW5MaW5lU3RhcnQoKTsKICAgICAgICAgICAgICAgICBUcmVlQXJn
dW1lbnRzIGFyZ3VtZW50cyA9IHBhcnNlQXJndW1lbnRzKGNvbnRleHQpOwogICAgICAgICAgICAg
ICAgIGZhaWxJZkZhbHNlKGFyZ3VtZW50cyk7Ci0gICAgICAgICAgICAgICAgYmFzZSA9IGNvbnRl
eHQuY3JlYXRlTmV3RXhwcihsb2NhdGlvbiwgYmFzZSwgYXJndW1lbnRzLCBzdGFydCwgZXhwckVu
ZCwgbGFzdFRva2VuRW5kKCkpOworICAgICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0
ZU5ld0V4cHIobG9jYXRpb24sIGJhc2UsIGFyZ3VtZW50cywgc3RhcnQsIGV4cHJFbmQsIGxhc3RU
b2tlbkVuZCgpLCBleHByZXNzaW9uTGluZSwgZXhwcmVzc2lvbkxpbmVTdGFydCk7CiAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGludCBleHByZXNzaW9uRW5kID0gbGFzdFRv
a2VuRW5kKCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgZXhwcmVzc2lvbkxpbmUgPSBsYXN0
VG9rZW5MaW5lKCk7CisgICAgICAgICAgICAgICAgaW50IGV4cHJlc3Npb25MaW5lU3RhcnQgPSBs
YXN0VG9rZW5MaW5lU3RhcnQoKTsKICAgICAgICAgICAgICAgICBUcmVlQXJndW1lbnRzIGFyZ3Vt
ZW50cyA9IHBhcnNlQXJndW1lbnRzKGNvbnRleHQpOwogICAgICAgICAgICAgICAgIGZhaWxJZkZh
bHNlKGFyZ3VtZW50cyk7Ci0gICAgICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQubWFrZUZ1bmN0
aW9uQ2FsbE5vZGUobG9jYXRpb24sIGJhc2UsIGFyZ3VtZW50cywgZXhwcmVzc2lvblN0YXJ0LCBl
eHByZXNzaW9uRW5kLCBsYXN0VG9rZW5FbmQoKSk7CisgICAgICAgICAgICAgICAgYmFzZSA9IGNv
bnRleHQubWFrZUZ1bmN0aW9uQ2FsbE5vZGUobG9jYXRpb24sIGJhc2UsIGFyZ3VtZW50cywgZXhw
cmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCBsYXN0VG9rZW5FbmQoKSwgZXhwcmVzc2lvbkxp
bmUsIGV4cHJlc3Npb25MaW5lU3RhcnQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9u
b25MSFNDb3VudCA9IG5vbkxIU0NvdW50OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNjM3LDkg
KzE2OTksMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzcwogICAg
ICAgICBjYXNlIERPVDogewogICAgICAgICAgICAgbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50
Kys7CiAgICAgICAgICAgICBpbnQgZXhwcmVzc2lvbkVuZCA9IGxhc3RUb2tlbkVuZCgpOworICAg
ICAgICAgICAgZXhwcmVzc2lvbkxpbmVTdGFydCA9IGxhc3RUb2tlbkxpbmVTdGFydCgpOwogICAg
ICAgICAgICAgbmV4dEV4cGVjdElkZW50aWZpZXIoTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29y
ZHMgfCBUcmVlQnVpbGRlcjo6RG9udEJ1aWxkS2V5d29yZHMpOwogICAgICAgICAgICAgbWF0Y2hP
ckZhaWwoSURFTlQpOwotICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlRG90QWNjZXNz
KGxvY2F0aW9uLCBiYXNlLCBtX3Rva2VuLm1fZGF0YS5pZGVudCwgZXhwcmVzc2lvblN0YXJ0LCBl
eHByZXNzaW9uRW5kLCB0b2tlbkVuZCgpKTsKKyAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNy
ZWF0ZURvdEFjY2Vzcyhsb2NhdGlvbiwgYmFzZSwgbV90b2tlbi5tX2RhdGEuaWRlbnQsIGV4cHJl
c3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwgdG9rZW5FbmQoKSwgZXhwcmVzc2lvbkxpbmUsIGV4
cHJlc3Npb25MaW5lU3RhcnQpOwogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KQEAgLTE2NDksNyArMTcxMiw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUV4cHJlc3MKICAgICB9CiBlbmRNZW1iZXJFeHByZXNzaW9uOgogICAgIHdo
aWxlIChuZXdDb3VudC0tKQotICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVOZXdFeHByKGxv
Y2F0aW9uLCBiYXNlLCBzdGFydCwgbGFzdFRva2VuRW5kKCkpOworICAgICAgICBiYXNlID0gY29u
dGV4dC5jcmVhdGVOZXdFeHByKGxvY2F0aW9uLCBiYXNlLCBzdGFydCwgbGFzdFRva2VuRW5kKCks
IGV4cHJlc3Npb25MaW5lLCBleHByZXNzaW9uTGluZVN0YXJ0KTsKICAgICByZXR1cm4gYmFzZTsK
IH0KIApAQCAtMTY4MiwxMSArMTc0NSwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVFeHByZXNzCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgbV9ub25MSFND
b3VudCsrOwotICAgICAgICBjb250ZXh0LmFwcGVuZFVuYXJ5VG9rZW4odG9rZW5TdGFja0RlcHRo
LCBtX3Rva2VuLm1fdHlwZSwgdG9rZW5TdGFydCgpKTsKKyAgICAgICAgY29udGV4dC5hcHBlbmRV
bmFyeVRva2VuKHRva2VuU3RhY2tEZXB0aCwgbV90b2tlbi5tX3R5cGUsIHRva2VuU3RhcnQoKSwg
dG9rZW5MaW5lKCksIHRva2VuTGluZVN0YXJ0KCkpOwogICAgICAgICBuZXh0KCk7CiAgICAgICAg
IG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwogICAgIH0KICAgICBpbnQgc3ViRXhwclN0
YXJ0ID0gdG9rZW5TdGFydCgpOworICAgIGludCBzdWJFeHByTGluZSA9IHRva2VuTGluZSgpOwor
ICAgIGludCBzdWJFeHByTGluZVN0YXJ0UG9zaXRpb24gPSB0b2tlbkxpbmVTdGFydCgpOworICAg
IEFTU0VSVChzdWJFeHByU3RhcnQgPj0gc3ViRXhwckxpbmVTdGFydFBvc2l0aW9uKTsKICAgICBK
U1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBUcmVlRXhwcmVz
c2lvbiBleHByID0gcGFyc2VNZW1iZXJFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZh
bHNlKGV4cHIpOwpAQCAtMTcwMCw3ICsxNzY2LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlRXhwcmVzcwogICAgIGNhc2UgUExVU1BMVVM6CiAgICAgICAgIG1fbm9uVHJpdmlh
bEV4cHJlc3Npb25Db3VudCsrOwogICAgICAgICBtX25vbkxIU0NvdW50Kys7Ci0gICAgICAgIGV4
cHIgPSBjb250ZXh0Lm1ha2VQb3N0Zml4Tm9kZShsb2NhdGlvbiwgZXhwciwgT3BQbHVzUGx1cywg
c3ViRXhwclN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgdG9rZW5FbmQoKSk7CisgICAgICAgIGV4cHIg
PSBjb250ZXh0Lm1ha2VQb3N0Zml4Tm9kZShsb2NhdGlvbiwgZXhwciwgT3BQbHVzUGx1cywgc3Vi
RXhwclN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgdG9rZW5FbmQoKSwgdG9rZW5MaW5lKCksIHRva2Vu
TGluZVN0YXJ0KCkpOwogICAgICAgICBtX2Fzc2lnbm1lbnRDb3VudCsrOwogICAgICAgICBmYWls
SWZUcnVlSWZTdHJpY3RXaXRoTmFtZUFuZE1lc3NhZ2UoaXNFdmFsT3JBcmd1bWVudHMsICInIiwg
bV9sYXN0SWRlbnRpZmllci0+aW1wbCgpLCAiJyBjYW5ub3QgYmUgbW9kaWZpZWQgaW4gc3RyaWN0
IG1vZGUiKTsKICAgICAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0KHJlcXVpcmVzTEV4cHIpOwpAQCAt
MTcwOSw3ICsxNzc1LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVz
cwogICAgIGNhc2UgTUlOVVNNSU5VUzoKICAgICAgICAgbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNv
dW50Kys7CiAgICAgICAgIG1fbm9uTEhTQ291bnQrKzsKLSAgICAgICAgZXhwciA9IGNvbnRleHQu
bWFrZVBvc3RmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcE1pbnVzTWludXMsIHN1YkV4cHJTdGFy
dCwgbGFzdFRva2VuRW5kKCksIHRva2VuRW5kKCkpOworICAgICAgICBleHByID0gY29udGV4dC5t
YWtlUG9zdGZpeE5vZGUobG9jYXRpb24sIGV4cHIsIE9wTWludXNNaW51cywgc3ViRXhwclN0YXJ0
LCBsYXN0VG9rZW5FbmQoKSwgdG9rZW5FbmQoKSwgdG9rZW5MaW5lKCksIHRva2VuTGluZVN0YXJ0
KCkpOwogICAgICAgICBtX2Fzc2lnbm1lbnRDb3VudCsrOwogICAgICAgICBmYWlsSWZUcnVlSWZT
dHJpY3RXaXRoTmFtZUFuZE1lc3NhZ2UoaXNFdmFsT3JBcmd1bWVudHMsICInIiwgbV9sYXN0SWRl
bnRpZmllci0+aW1wbCgpLCAiJyBjYW5ub3QgYmUgbW9kaWZpZWQgaW4gc3RyaWN0IG1vZGUiKTsK
ICAgICAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0KHJlcXVpcmVzTEV4cHIpOwpAQCAtMTcyMCw3ICsx
Nzg2LDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzcwogICAgIH0K
ICAgICAKICAgICBpbnQgZW5kID0gbGFzdFRva2VuRW5kKCk7Ci0gICAgCisgICAgaW50IGVuZExp
bmUgPSBsYXN0VG9rZW5MaW5lKCk7CisgICAgaW50IGVuZExpbmVTdGFydFBvc2l0aW9uID0gbGFz
dFRva2VuTGluZVN0YXJ0KCk7CisKICAgICBpZiAoIVRyZWVCdWlsZGVyOjpDcmVhdGVzQVNUICYm
IChtX3N5bnRheEFscmVhZHlWYWxpZGF0ZWQgfHwgIXN0cmljdE1vZGUoKSkpCiAgICAgICAgIHJl
dHVybiBleHByOwogCkBAIC0xNzQyLDEyICsxODEwLDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUV4cHJlc3MKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBM
VVNQTFVTOgogICAgICAgICBjYXNlIEFVVE9QTFVTUExVUzoKLSAgICAgICAgICAgIGV4cHIgPSBj
b250ZXh0Lm1ha2VQcmVmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcFBsdXNQbHVzLCBjb250ZXh0
LnVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0b2tlblN0YWNrRGVwdGgpLCBzdWJFeHByU3RhcnQg
KyAxLCBlbmQpOworICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVByZWZpeE5vZGUobG9j
YXRpb24sIGV4cHIsIE9wUGx1c1BsdXMsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0
KHRva2VuU3RhY2tEZXB0aCksIHN1YkV4cHJTdGFydCArIDEsIGVuZCwgc3ViRXhwckxpbmUsIHN1
YkV4cHJMaW5lU3RhcnRQb3NpdGlvbik7CiAgICAgICAgICAgICBtX2Fzc2lnbm1lbnRDb3VudCsr
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTUlOVVNNSU5VUzoKICAgICAgICAg
Y2FzZSBBVVRPTUlOVVNNSU5VUzoKLSAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQcmVm
aXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcE1pbnVzTWludXMsIGNvbnRleHQudW5hcnlUb2tlblN0
YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCksIHN1YkV4cHJTdGFydCArIDEsIGVuZCk7Cisg
ICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlUHJlZml4Tm9kZShsb2NhdGlvbiwgZXhwciwg
T3BNaW51c01pbnVzLCBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0b2tlblN0YWNr
RGVwdGgpLCBzdWJFeHByU3RhcnQgKyAxLCBlbmQsIHN1YkV4cHJMaW5lLCBzdWJFeHByTGluZVN0
YXJ0UG9zaXRpb24pOwogICAgICAgICAgICAgbV9hc3NpZ25tZW50Q291bnQrKzsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRZUEVPRjoKQEAgLTE3NTgsMTMgKzE4MjYsMTQgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzcwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgREVMRVRFVE9LRU46CiAgICAgICAgICAgICBmYWlsSWZUcnVlSWZT
dHJpY3RXaXRoTmFtZUFuZE1lc3NhZ2UoY29udGV4dC5pc1Jlc29sdmUoZXhwciksICJDYW5ub3Qg
ZGVsZXRlIHVucXVhbGlmaWVkIHByb3BlcnR5IiwgbV9sYXN0SWRlbnRpZmllci0+aW1wbCgpLCAi
aW4gc3RyaWN0IG1vZGUiKTsKLSAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VEZWxldGVO
b2RlKGxvY2F0aW9uLCBleHByLCBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0b2tl
blN0YWNrRGVwdGgpLCBlbmQsIGVuZCk7CisgICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtl
RGVsZXRlTm9kZShsb2NhdGlvbiwgZXhwciwgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3Rh
cnQodG9rZW5TdGFja0RlcHRoKSwgZW5kLCBlbmQsIGVuZExpbmUsIGVuZExpbmVTdGFydFBvc2l0
aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
Ly8gSWYgd2UgZ2V0IGhlcmUgc29tZXRoaW5nIGhhcyBnb25lIGhvcnJpYmx5IGhvcnJpYmx5IHdy
b25nCiAgICAgICAgICAgICBDUkFTSCgpOwogICAgICAgICB9CiAgICAgICAgIHN1YkV4cHJTdGFy
dCA9IGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCk7Cisg
ICAgICAgIHN1YkV4cHJMaW5lU3RhcnRQb3NpdGlvbiA9IGNvbnRleHQudW5hcnlUb2tlblN0YWNr
TGFzdExpbmVTdGFydFBvc2l0aW9uKHRva2VuU3RhY2tEZXB0aCk7CiAgICAgICAgIGNvbnRleHQu
dW5hcnlUb2tlblN0YWNrUmVtb3ZlTGFzdCh0b2tlblN0YWNrRGVwdGgpOwogICAgIH0KICAgICBy
ZXR1cm4gZXhwcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAkocmV2
aXNpb24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNDgyLDExICs0ODIsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIGlz
RnVuY3Rpb25Cb2R5Tm9kZShTY29wZU5vZGUqKSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wg
aXNGdW5jdGlvbkJvZHlOb2RlKEZ1bmN0aW9uQm9keU5vZGUqKSB7IHJldHVybiB0cnVlOyB9CiAK
LQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBuZXh0KHVuc2lnbmVkIGxleGVyRmxhZ3MgPSAwKQog
ICAgIHsKICAgICAgICAgbV9sYXN0TGluZSA9IG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lOwogICAg
ICAgICBtX2xhc3RUb2tlbkVuZCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5lbmRPZmZzZXQ7CisgICAg
ICAgIG1fbGFzdFRva2VuTGluZVN0YXJ0ID0gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9m
ZnNldDsKICAgICAgICAgbV9sZXhlci0+c2V0TGFzdExpbmVOdW1iZXIobV9sYXN0TGluZSk7CiAg
ICAgICAgIG1fdG9rZW4ubV90eXBlID0gbV9sZXhlci0+bGV4KCZtX3Rva2VuLm1fZGF0YSwgJm1f
dG9rZW4ubV9sb2NhdGlvbiwgbGV4ZXJGbGFncywgc3RyaWN0TW9kZSgpKTsKICAgICB9CkBAIC00
OTUsNiArNDk1LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIG1fbGFzdExpbmUgPSBtX3Rv
a2VuLm1fbG9jYXRpb24ubGluZTsKICAgICAgICAgbV9sYXN0VG9rZW5FbmQgPSBtX3Rva2VuLm1f
bG9jYXRpb24uZW5kT2Zmc2V0OworICAgICAgICBtX2xhc3RUb2tlbkxpbmVTdGFydCA9IG1fdG9r
ZW4ubV9sb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7CiAgICAgICAgIG1fbGV4ZXItPnNldExhc3RM
aW5lTnVtYmVyKG1fbGFzdExpbmUpOwogICAgICAgICBtX3Rva2VuLm1fdHlwZSA9IG1fbGV4ZXIt
PmxleEV4cGVjdElkZW50aWZpZXIoJm1fdG9rZW4ubV9kYXRhLCAmbV90b2tlbi5tX2xvY2F0aW9u
LCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKCkpOwogICAgIH0KQEAgLTUyMiw3ICs1MjMsNyBAQCBw
cml2YXRlOgogICAgICAgICByZXR1cm4gbV90b2tlbi5tX3R5cGUgPT0gZXhwZWN0ZWQ7CiAgICAg
fQogICAgIAotICAgIEFMV0FZU19JTkxJTkUgaW50IHRva2VuU3RhcnQoKQorICAgIEFMV0FZU19J
TkxJTkUgdW5zaWduZWQgdG9rZW5TdGFydCgpCiAgICAgewogICAgICAgICByZXR1cm4gbV90b2tl
bi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0OwogICAgIH0KQEAgLTUzMiwxMSArNTMzLDIxIEBAIHBy
aXZhdGU6CiAgICAgICAgIHJldHVybiBtX3Rva2VuLm1fbG9jYXRpb24ubGluZTsKICAgICB9CiAg
ICAgCi0gICAgQUxXQVlTX0lOTElORSBpbnQgdG9rZW5FbmQoKQorICAgIEFMV0FZU19JTkxJTkUg
aW50IHRva2VuQ29sdW1uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0b2tlblN0YXJ0KCkgLSB0
b2tlbkxpbmVTdGFydCgpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgdG9r
ZW5FbmQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV9sb2NhdGlvbi5lbmRPZmZz
ZXQ7CiAgICAgfQogICAgIAorICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgdG9rZW5MaW5lU3Rh
cnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lU3RhcnRP
ZmZzZXQ7CisgICAgfQorICAgIAogICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiB0b2tlbkxvY2F0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX3Rva2VuLm1fbG9j
YXRpb247CkBAIC05MDYsNyArOTE3LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgcGFyc2VG
b3JtYWxQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVFeHByZXNzaW9uIHBhcnNlVmFyRGVjbGFyYXRpb25M
aXN0KFRyZWVCdWlsZGVyJiwgaW50JiBkZWNsYXJhdGlvbnMsIGNvbnN0IElkZW50aWZpZXIqJiBs
YXN0SWRlbnQsIFRyZWVFeHByZXNzaW9uJiBsYXN0SW5pdGlhbGl6ZXIsIGludCYgaWRlbnRTdGFy
dCwgaW50JiBpbml0U3RhcnQsIGludCYgaW5pdEVuZCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVDb25zdERlY2xMaXN0IHBhcnNlQ29uc3REZWNs
YXJhdGlvbkxpc3QoVHJlZUJ1aWxkZXImIGNvbnRleHQpOwotICAgIHRlbXBsYXRlIDxGdW5jdGlv
blJlcXVpcmVtZW50cywgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgY2xhc3MgVHJlZUJ1
aWxkZXI+IGJvb2wgcGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlm
aWVyKiYsIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0JiwgVHJlZUZ1bmN0aW9uQm9keSYsIGludCYg
b3BlbkJyYWNlLCBpbnQmIGNsb3NlQnJhY2UsIGludCYgYm9keVN0YXJ0TGluZSk7CisgICAgdGVt
cGxhdGUgPEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3Bl
LCBjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYs
IGNvbnN0IElkZW50aWZpZXIqJiwgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QmLCBUcmVlRnVuY3Rp
b25Cb2R5JiwgdW5zaWduZWQmIG9wZW5CcmFjZU9mZnNldCwgdW5zaWduZWQmIGNsb3NlQnJhY2VP
ZmZzZXQsIGludCYgYm9keVN0YXJ0TGluZSwgdW5zaWduZWQmIGJvZHlTdGFydENvbHVtbik7CiAg
ICAgQUxXQVlTX0lOTElORSBpbnQgaXNCaW5hcnlPcGVyYXRvcihKU1Rva2VuVHlwZSk7CiAgICAg
Ym9vbCBhbGxvd0F1dG9tYXRpY1NlbWljb2xvbigpOwogICAgIApAQCAtOTI5LDYgKzk0MCwxNiBA
QCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbV9sYXN0VG9rZW5FbmQ7CiAgICAgfQogCisgICAg
dW5zaWduZWQgbGFzdFRva2VuTGluZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9s
YXN0TGluZTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBsYXN0VG9rZW5MaW5lU3RhcnQoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbGFzdFRva2VuTGluZVN0YXJ0OworICAgIH0KKwog
ICAgIGJvb2wgaGFzRXJyb3IoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICFtX2Vycm9y
TWVzc2FnZS5pc051bGwoKTsKQEAgLTk0NCw4ICs5NjUsMTAgQEAgcHJpdmF0ZToKICAgICBTdHJp
bmcgbV9lcnJvck1lc3NhZ2U7CiAgICAgSlNUb2tlbiBtX3Rva2VuOwogICAgIGJvb2wgbV9hbGxv
d3NJbjsKLSAgICBpbnQgbV9sYXN0TGluZTsKKyAgICB1bnNpZ25lZCBtX2xhc3RMaW5lOwogICAg
IGludCBtX2xhc3RUb2tlbkVuZDsKKyAgICB1bnNpZ25lZCBtX2xhc3RUb2tlbkxpbmU7CisgICAg
dW5zaWduZWQgbV9sYXN0VG9rZW5MaW5lU3RhcnQ7CiAgICAgaW50IG1fYXNzaWdubWVudENvdW50
OwogICAgIGludCBtX25vbkxIU0NvdW50OwogICAgIGJvb2wgbV9zeW50YXhBbHJlYWR5VmFsaWRh
dGVkOwpAQCAtOTk1LDYgKzEwMTgsNyBAQCBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxM
ZXhlclR5cGU+CiAgICAgZXJyTXNnID0gU3RyaW5nKCk7CiAKICAgICBKU1Rva2VuTG9jYXRpb24g
c3RhcnRMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1u
ID0gbV9zb3VyY2UtPnN0YXJ0Q29sdW1uKCk7CiAKICAgICBTdHJpbmcgcGFyc2VFcnJvciA9IHBh
cnNlSW5uZXIoKTsKIApAQCAtMTAxMiwxMiArMTAzNiwxNCBAQCBQYXNzUmVmUHRyPFBhcnNlZE5v
ZGU+IFBhcnNlcjxMZXhlclR5cGU+CiAKICAgICBSZWZQdHI8UGFyc2VkTm9kZT4gcmVzdWx0Owog
ICAgIGlmIChtX3NvdXJjZUVsZW1lbnRzKSB7Ci0gICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBlbmRM
b2NhdGlvbjsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGVuZExvY2F0aW9uKG1fc291cmNlLT5z
dGFydE9mZnNldCgpKTsKICAgICAgICAgZW5kTG9jYXRpb24ubGluZSA9IG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCk7Ci0gICAgICAgIGVuZExvY2F0aW9uLmNoYXJQb3NpdGlvbiA9IG1fbGV4ZXIt
PmN1cnJlbnRDaGFyUG9zaXRpb24oKTsKKyAgICAgICAgZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zm
c2V0ID0gbV9sZXhlci0+Y3VycmVudExpbmVTdGFydE9mZnNldCgpOworICAgICAgICBlbmRMb2Nh
dGlvbi5zdGFydE9mZnNldCA9IG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKTsKICAgICAgICAgcmVz
dWx0ID0gUGFyc2VkTm9kZTo6Y3JlYXRlKG1fdm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGFydExvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZW5kTG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGFydENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc291cmNl
RWxlbWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3ZhckRlY2xh
cmF0aW9ucyA/ICZtX3ZhckRlY2xhcmF0aW9ucy0+ZGF0YSA6IDAsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2Z1bmNEZWNsYXJhdGlvbnMgPyAmbV9mdW5jRGVjbGFyYXRp
b25zLT5kYXRhIDogMCwKQEAgLTEwMjUsNyArMTA1MSw3IEBAIFBhc3NSZWZQdHI8UGFyc2VkTm9k
ZT4gUGFyc2VyPExleGVyVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICptX3NvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZmVhdHVy
ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX251bUNvbnN0YW50cyk7
Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKG1fc291cmNlLT5maXJzdExpbmUoKSwgbV9sYXN0TGlu
ZSwgbV9sZXhlci0+Y3VycmVudENoYXJQb3NpdGlvbigpKTsKKyAgICAgICAgcmVzdWx0LT5zZXRM
b2MobV9zb3VyY2UtPmZpcnN0TGluZSgpLCBtX2xhc3RMaW5lLCBtX2xleGVyLT5jdXJyZW50T2Zm
c2V0KCksIG1fbGV4ZXItPmN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKSk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgLy8gV2UgY2FuIG5ldmVyIHNlZSBhIHN5bnRheCBlcnJvciB3aGVuIHJlcGFyc2lu
ZyBhIGZ1bmN0aW9uLCBzaW5jZSB3ZSBzaG91bGQgaGF2ZQogICAgICAgICAvLyByZXBvcnRlZCB0
aGUgZXJyb3Igd2hlbiBwYXJzaW5nIHRoZSBjb250YWluaW5nIHByb2dyYW0gb3IgZXZhbCBjb2Rl
LiBTbyBpZiB3ZSdyZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJU
b2tlbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
clRva2Vucy5oCShyZXZpc2lvbiAxNTE5MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlclRva2Vucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVm
aW5lIFBhcnNlclRva2Vuc19oCiAKICNpbmNsdWRlICJQYXJzZXJNb2Rlcy5oIgorI2luY2x1ZGUg
PGxpbWl0cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTQ5LDI0ICsxNTAsMzYgQEAgZW51
bSBKU1Rva2VuVHlwZSB7CiB9OwogCiB1bmlvbiBKU1Rva2VuRGF0YSB7Ci0gICAgaW50IGludFZh
bHVlOworICAgIHN0cnVjdCB7CisgICAgICAgIHVpbnQzMl90IGxpbmU7CisgICAgICAgIHVpbnQz
Ml90IG9mZnNldDsKKyAgICAgICAgdWludDMyX3QgbGluZVN0YXJ0T2Zmc2V0OworICAgIH07CiAg
ICAgZG91YmxlIGRvdWJsZVZhbHVlOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50OwogfTsK
IAogc3RydWN0IEpTVG9rZW5Mb2NhdGlvbiB7Ci0gICAgSlNUb2tlbkxvY2F0aW9uKCkgOiBsaW5l
KDApLCBjaGFyUG9zaXRpb24oMCkgeyB9CisgICAgSlNUb2tlbkxvY2F0aW9uKHVuc2lnbmVkIF9z
b3VyY2VPZmZzZXQgPSBVSU5UX01BWCkgOiBsaW5lKDApLCBsaW5lU3RhcnRPZmZzZXQoMCksIHN0
YXJ0T2Zmc2V0KDApLCBzb3VyY2VPZmZzZXQoX3NvdXJjZU9mZnNldCkgeyB9CiAgICAgSlNUb2tl
bkxvY2F0aW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pCiAgICAgewogICAgICAg
ICBsaW5lID0gbG9jYXRpb24ubGluZTsKKyAgICAgICAgbGluZVN0YXJ0T2Zmc2V0ID0gbG9jYXRp
b24ubGluZVN0YXJ0T2Zmc2V0OwogICAgICAgICBzdGFydE9mZnNldCA9IGxvY2F0aW9uLnN0YXJ0
T2Zmc2V0OwogICAgICAgICBlbmRPZmZzZXQgPSBsb2NhdGlvbi5lbmRPZmZzZXQ7Ci0gICAgICAg
IGNoYXJQb3NpdGlvbiA9IGxvY2F0aW9uLmNoYXJQb3NpdGlvbjsKKyAgICAgICAgc291cmNlT2Zm
c2V0ID0gbG9jYXRpb24uc291cmNlT2Zmc2V0OworICAgICAgICBBU1NFUlQoc291cmNlT2Zmc2V0
ICE9IFVJTlRfTUFYKTsKICAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIGxpbmVT
dGFydFBvc2l0aW9uKCkgY29uc3QgeyBBU1NFUlQoc291cmNlT2Zmc2V0ICE9IFVJTlRfTUFYKTsg
cmV0dXJuIGxpbmVTdGFydE9mZnNldCAtIHNvdXJjZU9mZnNldDsgfQorICAgIEFMV0FZU19JTkxJ
TkUgdW5zaWduZWQgc3RhcnRQb3NpdGlvbigpIGNvbnN0IHsgQVNTRVJUKHNvdXJjZU9mZnNldCAh
PSBVSU5UX01BWCk7IHJldHVybiBzdGFydE9mZnNldCAtIHNvdXJjZU9mZnNldDsgfQorICAgIEFM
V0FZU19JTkxJTkUgdW5zaWduZWQgZW5kUG9zaXRpb24oKSBjb25zdCB7IEFTU0VSVChzb3VyY2VP
ZmZzZXQgIT0gVUlOVF9NQVgpOyByZXR1cm4gZW5kT2Zmc2V0IC0gc291cmNlT2Zmc2V0OyB9CisK
ICAgICBpbnQgbGluZTsKLSAgICBpbnQgc3RhcnRPZmZzZXQ7Ci0gICAgaW50IGVuZE9mZnNldDsK
LSAgICBpbnQgY2hhclBvc2l0aW9uOworICAgIHVuc2lnbmVkIGxpbmVTdGFydE9mZnNldDsKKyAg
ICB1bnNpZ25lZCBzdGFydE9mZnNldDsKKyAgICB1bnNpZ25lZCBlbmRPZmZzZXQ7CisgICAgdW5z
aWduZWQgc291cmNlT2Zmc2V0OwogfTsKIAogc3RydWN0IEpTVG9rZW4gewpAQCAtMTc1LDcgKzE4
OCw2IEBAIHN0cnVjdCBKU1Rva2VuIHsKICAgICBKU1Rva2VuTG9jYXRpb24gbV9sb2NhdGlvbjsK
IH07CiAKLX0KLQorfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBQYXJzZXJUb2tlbnNf
aApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmgJKHJldmlz
aW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgLCBtX3N0YXJ0Q2hhcigwKQogICAgICAgICAgICAgLCBtX2VuZENoYXIoMCkKICAgICAg
ICAgICAgICwgbV9maXJzdExpbmUoMCkKKyAgICAgICAgICAgICwgbV9zdGFydENvbHVtbigwKQog
ICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNDksMTkgKzUwLDMwIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBTb3VyY2VDb2RlKFBhc3NSZWZQdHI8
U291cmNlUHJvdmlkZXI+IHByb3ZpZGVyLCBpbnQgZmlyc3RMaW5lID0gMSkKKyAgICAgICAgU291
cmNlQ29kZShQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBwcm92aWRlcikKKyAgICAgICAgICAg
IDogbV9wcm92aWRlcihwcm92aWRlcikKKyAgICAgICAgICAgICwgbV9zdGFydENoYXIoMCkKKyAg
ICAgICAgICAgICwgbV9lbmRDaGFyKG1fcHJvdmlkZXItPnNvdXJjZSgpLmxlbmd0aCgpKQorICAg
ICAgICAgICAgLCBtX2ZpcnN0TGluZSgxKQorICAgICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKDEp
CisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIFNvdXJjZUNvZGUoUGFzc1JlZlB0cjxT
b3VyY2VQcm92aWRlcj4gcHJvdmlkZXIsIGludCBmaXJzdExpbmUsIGludCBzdGFydENvbHVtbikK
ICAgICAgICAgICAgIDogbV9wcm92aWRlcihwcm92aWRlcikKICAgICAgICAgICAgICwgbV9zdGFy
dENoYXIoMCkKICAgICAgICAgICAgICwgbV9lbmRDaGFyKG1fcHJvdmlkZXItPnNvdXJjZSgpLmxl
bmd0aCgpKQogICAgICAgICAgICAgLCBtX2ZpcnN0TGluZShzdGQ6Om1heChmaXJzdExpbmUsIDEp
KQorICAgICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0ZDo6bWF4KHN0YXJ0Q29sdW1uLCAxKSkK
ICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgU291cmNlQ29kZShQYXNzUmVmUHRyPFNv
dXJjZVByb3ZpZGVyPiBwcm92aWRlciwgaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgZmlyc3RMaW5l
KQorICAgICAgICBTb3VyY2VDb2RlKFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHByb3ZpZGVy
LCBpbnQgc3RhcnQsIGludCBlbmQsIGludCBmaXJzdExpbmUsIGludCBzdGFydENvbHVtbikKICAg
ICAgICAgICAgIDogbV9wcm92aWRlcihwcm92aWRlcikKICAgICAgICAgICAgICwgbV9zdGFydENo
YXIoc3RhcnQpCiAgICAgICAgICAgICAsIG1fZW5kQ2hhcihlbmQpCiAgICAgICAgICAgICAsIG1f
Zmlyc3RMaW5lKHN0ZDo6bWF4KGZpcnN0TGluZSwgMSkpCisgICAgICAgICAgICAsIG1fc3RhcnRD
b2x1bW4oc3RkOjptYXgoc3RhcnRDb2x1bW4sIDEpKQogICAgICAgICB7CiAgICAgICAgIH0KIApA
QCAtODQsMjkgKzk2LDMyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGlzTnVsbCgp
IGNvbnN0IHsgcmV0dXJuICFtX3Byb3ZpZGVyOyB9CiAgICAgICAgIFNvdXJjZVByb3ZpZGVyKiBw
cm92aWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlkZXIuZ2V0KCk7IH0KICAgICAgICAgaW50
IGZpcnN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RMaW5lOyB9CisgICAgICAgIGludCBz
dGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRDb2x1bW47IH0KICAgICAgICAgaW50
IHN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydENoYXI7IH0KICAgICAgICAgaW50
IGVuZE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kQ2hhcjsgfQogICAgICAgICBpbnQgbGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDaGFyIC0gbV9zdGFydENoYXI7IH0KICAgICAgICAg
Ci0gICAgICAgIFNvdXJjZUNvZGUgc3ViRXhwcmVzc2lvbih1bnNpZ25lZCBvcGVuQnJhY2UsIHVu
c2lnbmVkIGNsb3NlQnJhY2UsIGludCBmaXJzdExpbmUpOworICAgICAgICBTb3VyY2VDb2RlIHN1
YkV4cHJlc3Npb24odW5zaWduZWQgb3BlbkJyYWNlLCB1bnNpZ25lZCBjbG9zZUJyYWNlLCBpbnQg
Zmlyc3RMaW5lLCBpbnQgc3RhcnRDb2x1bW4pOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVm
UHRyPFNvdXJjZVByb3ZpZGVyPiBtX3Byb3ZpZGVyOwogICAgICAgICBpbnQgbV9zdGFydENoYXI7
CiAgICAgICAgIGludCBtX2VuZENoYXI7CiAgICAgICAgIGludCBtX2ZpcnN0TGluZTsKKyAgICAg
ICAgaW50IG1fc3RhcnRDb2x1bW47CiAgICAgfTsKIAogICAgIGlubGluZSBTb3VyY2VDb2RlIG1h
a2VTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsID0gU3RyaW5n
KCksIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiA9IFRleHRQb3NpdGlvbjo6bWlu
aW11bVBvc2l0aW9uKCkpCiAgICAgewotICAgICAgICByZXR1cm4gU291cmNlQ29kZShTdHJpbmdT
b3VyY2VQcm92aWRlcjo6Y3JlYXRlKHNvdXJjZSwgdXJsLCBzdGFydFBvc2l0aW9uKSwgc3RhcnRQ
b3NpdGlvbi5tX2xpbmUub25lQmFzZWRJbnQoKSk7CisgICAgICAgIHJldHVybiBTb3VyY2VDb2Rl
KFN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUoc291cmNlLCB1cmwsIHN0YXJ0UG9zaXRpb24p
LCBzdGFydFBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpLCBzdGFydFBvc2l0aW9uLm1fY29s
dW1uLm9uZUJhc2VkSW50KCkpOwogICAgIH0KIAotICAgIGlubGluZSBTb3VyY2VDb2RlIFNvdXJj
ZUNvZGU6OnN1YkV4cHJlc3Npb24odW5zaWduZWQgb3BlbkJyYWNlLCB1bnNpZ25lZCBjbG9zZUJy
YWNlLCBpbnQgZmlyc3RMaW5lKQorICAgIGlubGluZSBTb3VyY2VDb2RlIFNvdXJjZUNvZGU6OnN1
YkV4cHJlc3Npb24odW5zaWduZWQgb3BlbkJyYWNlLCB1bnNpZ25lZCBjbG9zZUJyYWNlLCBpbnQg
Zmlyc3RMaW5lLCBpbnQgc3RhcnRDb2x1bW4pCiAgICAgewogICAgICAgICBBU1NFUlQocHJvdmlk
ZXIoKS0+c291cmNlKClbb3BlbkJyYWNlXSA9PSAneycpOwogICAgICAgICBBU1NFUlQocHJvdmlk
ZXIoKS0+c291cmNlKClbY2xvc2VCcmFjZV0gPT0gJ30nKTsKLSAgICAgICAgcmV0dXJuIFNvdXJj
ZUNvZGUocHJvdmlkZXIoKSwgb3BlbkJyYWNlLCBjbG9zZUJyYWNlICsgMSwgZmlyc3RMaW5lKTsK
KyAgICAgICAgc3RhcnRDb2x1bW4gKz0gMTsgLy8gQ29udmVydCB0byBiYXNlIDEuCisgICAgICAg
IHJldHVybiBTb3VyY2VDb2RlKHByb3ZpZGVyKCksIG9wZW5CcmFjZSwgY2xvc2VCcmFjZSArIDEs
IGZpcnN0TGluZSwgc3RhcnRDb2x1bW4pOwogICAgIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmNw
cAkocmV2aXNpb24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3Vy
Y2VQcm92aWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDUwICs0MiwxMSBAQCBTb3VyY2VQ
cm92aWRlcjo6flNvdXJjZVByb3ZpZGVyKCkKIHsKIH0KIAotVmVjdG9yPHNpemVfdD4mIFNvdXJj
ZVByb3ZpZGVyOjpsaW5lU3RhcnRzKCkKLXsKLSAgICBpZiAoIW1fbGluZVN0YXJ0cykgewotICAg
ICAgICBtX2xpbmVTdGFydHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPHNpemVfdD4oKSk7Ci0gICAg
ICAgIFN0cmluZyBzb3VyY2UgPSB0aGlzLT5zb3VyY2UoKTsKLSAgICAgICAgc2l6ZV90IGluZGV4
ID0gMDsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgbV9saW5lU3RhcnRzLT5hcHBlbmQoaW5k
ZXgpOwotICAgICAgICAgICAgaW5kZXggPSBzb3VyY2UuZmluZE5leHRMaW5lU3RhcnQoaW5kZXgp
OwotICAgICAgICB9IHdoaWxlIChpbmRleCAhPSBub3RGb3VuZCk7Ci0gICAgICAgIG1fbGluZVN0
YXJ0cy0+c2hyaW5rVG9GaXQoKTsKLSAgICB9Ci0gICAgcmV0dXJuICptX2xpbmVTdGFydHM7Ci19
Ci0KLQogc3RhdGljIGlubGluZSBzaXplX3QgY2hhclBvc2l0aW9uRXh0cmFjdG9yKGNvbnN0IHNp
emVfdCogdmFsdWUpCiB7CiAgICAgcmV0dXJuICp2YWx1ZTsKIH0KIAotc2l6ZV90IFNvdXJjZVBy
b3ZpZGVyOjpjaGFyUG9zaXRpb25Ub0NvbHVtbk51bWJlcihzaXplX3QgY2hhclBvc2l0aW9uKQot
ewotICAgIFZlY3RvcjxzaXplX3Q+JiBsaW5lU3RhcnRzID0gdGhpcy0+bGluZVN0YXJ0cygpOwot
ICAgIHNpemVfdCogZGF0YSA9IGxpbmVTdGFydHMuZGF0YSgpOwotICAgIHNpemVfdCBkYXRhU2l6
ZSA9IGxpbmVTdGFydHMuc2l6ZSgpOwotCi0gICAgLy8gR2V0IHRoZSBuZWFyZXN0IGxpbmUgc3Rh
cnQgZW50cnkgKHdoaWNoIGNvdWxkIGJlIHRvIHRoZSBsZWZ0IG9yIHRvIHRoZQotICAgIC8vIHJp
Z2h0IG9mIHRoZSByZXF1ZXN0ZWQgY2hhclBvc2l0aW9uLgotICAgIGNvbnN0IHNpemVfdCogbGlu
ZSA9IGFwcHJveGltYXRlQmluYXJ5U2VhcmNoPHNpemVfdCwgc2l6ZV90PihkYXRhLCBkYXRhU2l6
ZSwgY2hhclBvc2l0aW9uLCBjaGFyUG9zaXRpb25FeHRyYWN0b3IpOwotICAgIHNpemVfdCBsaW5l
U3RhcnRQb3NpdGlvbiA9ICpsaW5lOwotCi0gICAgaWYgKGxpbmVTdGFydFBvc2l0aW9uID4gY2hh
clBvc2l0aW9uKSB7Ci0gICAgICAgIGlmIChkYXRhIDwgbGluZSkgewotICAgICAgICAgICAgbGlu
ZS0tOwotICAgICAgICAgICAgbGluZVN0YXJ0UG9zaXRpb24gPSAqbGluZTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIEFTU0VSVChkYXRhIDw9IGxpbmUpOwotICAgIEFTU0VSVChsaW5lU3RhcnRQ
b3NpdGlvbiA8PSBjaGFyUG9zaXRpb24pOwotICAgIHJldHVybiBjaGFyUG9zaXRpb24gLSBsaW5l
U3RhcnRQb3NpdGlvbjsKLX0KLQogc3RhdGljIFRDTWFsbG9jX1NwaW5Mb2NrIHByb3ZpZGVySWRM
b2NrID0gU1BJTkxPQ0tfSU5JVElBTElaRVI7CiAKIHZvaWQgU291cmNlUHJvdmlkZXI6OmdldElE
KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVy
LmgJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291
cmNlUHJvdmlkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsOCArNjUsNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV92YWxpZGF0ZWQ7
IH0KICAgICAgICAgdm9pZCBzZXRWYWxpZCgpIHsgbV92YWxpZGF0ZWQgPSB0cnVlOyB9CiAKLSAg
ICAgICAgc2l6ZV90IGNoYXJQb3NpdGlvblRvQ29sdW1uTnVtYmVyKHNpemVfdCBjaGFyUG9zaXRp
b24pOwotCiAgICAgcHJpdmF0ZToKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGdl
dElEKCk7CkBAIC03Niw4ICs3NCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBUZXh0UG9z
aXRpb24gbV9zdGFydFBvc2l0aW9uOwogICAgICAgICBib29sIG1fdmFsaWRhdGVkIDogMTsKICAg
ICAgICAgdWludHB0cl90IG1faWQgOiBzaXplb2YodWludHB0cl90KSAqIDggLSAxOwotCi0gICAg
ICAgIE93blB0cjxWZWN0b3I8c2l6ZV90PiA+IG1fbGluZVN0YXJ0czsKICAgICB9OwogCiAgICAg
Y2xhc3MgU3RyaW5nU291cmNlUHJvdmlkZXIgOiBwdWJsaWMgU291cmNlUHJvdmlkZXIgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlSXRlbS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlk
ZXJDYWNoZUl0ZW0uaAkocmV2aXNpb24gMTUxOTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3
ICszNiw4IEBAIG5hbWVzcGFjZSBKU0Mgewogc3RydWN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVt
Q3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICB1bnNpZ25lZCBmdW5jdGlvblN0YXJ0OwogICAgIHVu
c2lnbmVkIGNsb3NlQnJhY2VMaW5lOwotICAgIHVuc2lnbmVkIGNsb3NlQnJhY2VQb3M7CisgICAg
dW5zaWduZWQgY2xvc2VCcmFjZU9mZnNldDsKKyAgICB1bnNpZ25lZCBjbG9zZUJyYWNlTGluZVN0
YXJ0T2Zmc2V0OwogICAgIGJvb2wgbmVlZHNGdWxsQWN0aXZhdGlvbjsKICAgICBib29sIHVzZXNF
dmFsOwogICAgIGJvb2wgc3RyaWN0TW9kZTsKQEAgLTU5LDEwICs2MCwxMyBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICBKU1Rva2VuIHRva2VuOwogICAgICAgICB0b2tlbi5tX3R5cGUgPSBDTE9T
RUJSQUNFOwotICAgICAgICB0b2tlbi5tX2RhdGEuaW50VmFsdWUgPSBjbG9zZUJyYWNlUG9zOwot
ICAgICAgICB0b2tlbi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0ID0gY2xvc2VCcmFjZVBvczsKLSAg
ICAgICAgdG9rZW4ubV9sb2NhdGlvbi5lbmRPZmZzZXQgPSBjbG9zZUJyYWNlUG9zICsgMTsKKyAg
ICAgICAgdG9rZW4ubV9kYXRhLm9mZnNldCA9IGNsb3NlQnJhY2VPZmZzZXQ7CisgICAgICAgIHRv
a2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQgPSBjbG9zZUJyYWNlT2Zmc2V0OworICAgICAgICB0
b2tlbi5tX2xvY2F0aW9uLmVuZE9mZnNldCA9IGNsb3NlQnJhY2VPZmZzZXQgKyAxOwogICAgICAg
ICB0b2tlbi5tX2xvY2F0aW9uLmxpbmUgPSBjbG9zZUJyYWNlTGluZTsKKyAgICAgICAgdG9rZW4u
bV9sb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQgPSBjbG9zZUJyYWNlTGluZVN0YXJ0T2Zmc2V0Owor
ICAgICAgICAvLyB0b2tlbi5tX2xvY2F0aW9uLnNvdXJjZU9mZnNldCBpcyBpbml0aWFsaXplZCBv
bmNlIGJ5IHRoZSBjbGllbnQuIFNvLAorICAgICAgICAvLyB3ZSBkbyBub3QgbmVlZCB0byBzZXQg
aXQgaGVyZS4KICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgIH0KIApAQCAtNzIsOSArNzYsMTAg
QEAgcHVibGljOgogICAgIHVuc2lnbmVkIGNsb3NlQnJhY2VMaW5lIDogMzE7CiAgICAgYm9vbCB1
c2VzRXZhbCA6IDE7CiAKLSAgICB1bnNpZ25lZCBjbG9zZUJyYWNlUG9zIDogMzE7CisgICAgdW5z
aWduZWQgY2xvc2VCcmFjZU9mZnNldCA6IDMxOwogICAgIGJvb2wgc3RyaWN0TW9kZSA6IDE7CiAK
KyAgICB1bnNpZ25lZCBjbG9zZUJyYWNlTGluZVN0YXJ0T2Zmc2V0OwogICAgIHVuc2lnbmVkIHVz
ZWRWYXJpYWJsZXNDb3VudDsKICAgICB1bnNpZ25lZCB3cml0dGVuVmFyaWFibGVzQ291bnQ7CiAK
QEAgLTEwNiw4ICsxMTEsOSBAQCBpbmxpbmUgU291cmNlUHJvdmlkZXJDYWNoZUl0ZW06OlNvdXJj
ZVByCiAgICAgLCBuZWVkc0Z1bGxBY3RpdmF0aW9uKHBhcmFtZXRlcnMubmVlZHNGdWxsQWN0aXZh
dGlvbikKICAgICAsIGNsb3NlQnJhY2VMaW5lKHBhcmFtZXRlcnMuY2xvc2VCcmFjZUxpbmUpCiAg
ICAgLCB1c2VzRXZhbChwYXJhbWV0ZXJzLnVzZXNFdmFsKQotICAgICwgY2xvc2VCcmFjZVBvcyhw
YXJhbWV0ZXJzLmNsb3NlQnJhY2VQb3MpCisgICAgLCBjbG9zZUJyYWNlT2Zmc2V0KHBhcmFtZXRl
cnMuY2xvc2VCcmFjZU9mZnNldCkKICAgICAsIHN0cmljdE1vZGUocGFyYW1ldGVycy5zdHJpY3RN
b2RlKQorICAgICwgY2xvc2VCcmFjZUxpbmVTdGFydE9mZnNldChwYXJhbWV0ZXJzLmNsb3NlQnJh
Y2VMaW5lU3RhcnRPZmZzZXQpCiAgICAgLCB1c2VkVmFyaWFibGVzQ291bnQocGFyYW1ldGVycy51
c2VkVmFyaWFibGVzLnNpemUoKSkKICAgICAsIHdyaXR0ZW5WYXJpYWJsZXNDb3VudChwYXJhbWV0
ZXJzLndyaXR0ZW5WYXJpYWJsZXMuc2l6ZSgpKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTksMjEgKzExOSwyMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIERv
bnRCdWlsZFN0cmluZ3MgPSBMZXhlckZsYWdzRG9udEJ1aWxkU3RyaW5nczsKIAogICAgIGludCBj
cmVhdGVTb3VyY2VFbGVtZW50cygpIHsgcmV0dXJuIDE7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBt
YWtlRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50
LCBpbnQsIGludCkgeyByZXR1cm4gQ2FsbEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtl
RnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIENhbGxFeHByOyB9CiAgICAgdm9pZCBhcHBlbmRU
b0NvbW1hKEV4cHJlc3Npb25UeXBlJiBiYXNlLCBFeHByZXNzaW9uVHlwZSByaWdodCkgeyBiYXNl
ID0gcmlnaHQ7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVDb21tYUV4cHIoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlIHJpZ2h0KSB7IHJl
dHVybiByaWdodDsgfQotICAgIEV4cHJlc3Npb25UeXBlIG1ha2VBc3NpZ25Ob2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBPcGVyYXRvciwgRXhwcmVzc2lvblR5cGUs
IGJvb2wsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9Ci0g
ICAgRXhwcmVzc2lvblR5cGUgbWFrZVByZWZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvblR5cGUsIE9wZXJhdG9yLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBQcmVFeHBy
OyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZVBvc3RmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25UeXBlLCBPcGVyYXRvciwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
UG9zdEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtlQXNzaWduTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIEV4cHJlc3Npb25UeXBlLCBi
b29sLCBib29sLCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQXNzaWdubWVudEV4
cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtlUHJlZml4Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGludCwgaW50LCBpbnQsIGludCwgaW50
KSB7IHJldHVybiBQcmVFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZVBvc3RmaXhOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBPcGVyYXRvciwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFBvc3RFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5
cGUgbWFrZVR5cGVPZk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUp
IHsgcmV0dXJuIFR5cGVvZkV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlRGVsZXRlTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gRGVsZXRlRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VEZWxldGVOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50LCBp
bnQsIGludCkgeyByZXR1cm4gRGVsZXRlRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIG1ha2VO
ZWdhdGVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVy
biBVbmFyeUV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBtYWtlQml0d2lzZU5vdE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsg
fQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUxvZ2ljYWxOb3QoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQogICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZVVuYXJ5UGx1cyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9u
VHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlVm9p
ZChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlF
eHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgdGhpc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JikgeyByZXR1cm4gVGhpc0V4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVSZXNvbHZl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQpIHsgcmV0dXJu
IFJlc29sdmVFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVzb2x2ZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gUmVzb2x2ZUV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVPYmplY3RMaXRlcmFs
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIE9iamVjdExpdGVyYWxFeHByOyB9CiAg
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlT2JqZWN0TGl0ZXJhbChjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBpbnQpIHsgcmV0dXJuIE9iamVjdExpdGVyYWxFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5
cGUgY3JlYXRlQXJyYXkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50KSB7IHJldHVybiBBcnJh
eUxpdGVyYWxFeHByOyB9CkBAIC0xNDIsMTUgKzE0MiwxNSBAQCBwdWJsaWM6CiAgICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlU3RyaW5nKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50
aWZpZXIqKSB7IHJldHVybiBTdHJpbmdFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
Qm9vbGVhbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBib29sKSB7IHJldHVybiBCb29sRXhwcjsg
fQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU51bGwoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikg
eyByZXR1cm4gTnVsbEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCcmFja2V0QWNj
ZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlw
ZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQnJhY2tldEV4cHI7IH0KLSAgICBFeHBy
ZXNzaW9uVHlwZSBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvblR5cGUsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBEb3RF
eHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVnRXhwKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImLCBpbnQp
IHsgcmV0dXJuIFlhcnI6OmNoZWNrU3ludGF4KHBhdHRlcm4uc3RyaW5nKCkpID8gMCA6IFJlZ0V4
cEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCcmFja2V0QWNjZXNzKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEJyYWNrZXRFeHByOyB9CisgICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIERvdEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVSZWdFeHAoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmll
ciYsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFlhcnI6OmNoZWNrU3ludGF4KHBhdHRlcm4uc3Ry
aW5nKCkpID8gMCA6IFJlZ0V4cEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdF
eHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUg
Y3JlYXRlTmV3RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgaW50
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUg
Y3JlYXRlTmV3RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgaW50
LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVDb25k
aXRpb25hbEV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIEV4cHJl
c3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gQ29uZGl0aW9uYWxFeHByOyB9Ci0g
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXNzaWduUmVzb2x2ZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQpIHsg
cmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rp
b25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KLSAgICBpbnQg
Y3JlYXRlRnVuY3Rpb25Cb2R5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGJvb2wpIHsgcmV0dXJuIDE7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVB
c3NpZ25SZXNvbHZlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBF
eHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFzc2lnbm1l
bnRFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQorICAgIGludCBjcmVhdGVGdW5j
dGlvbkJvZHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
aW50LCBib29sKSB7IHJldHVybiAxOyB9CiAgICAgdm9pZCBzZXRGdW5jdGlvblN0YXJ0KGludCwg
aW50KSB7IH0KICAgICBpbnQgY3JlYXRlQXJndW1lbnRzKCkgeyByZXR1cm4gMTsgfQogICAgIGlu
dCBjcmVhdGVBcmd1bWVudHMoaW50KSB7IHJldHVybiAxOyB9CkBAIC0xNzksMzkgKzE3OSwzOSBA
QCBwdWJsaWM6CiAgICAgaW50IGNyZWF0ZUNsYXVzZUxpc3QoaW50KSB7IHJldHVybiAxOyB9CiAg
ICAgaW50IGNyZWF0ZUNsYXVzZUxpc3QoaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICB2b2lk
IHNldFVzZXNBcmd1bWVudHMoaW50KSB7IH0KLSAgICBpbnQgY3JlYXRlRnVuY0RlY2xTdGF0ZW1l
bnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlRnVuY0RlY2xT
dGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVh
dGVCbG9ja1N0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50KSB7
IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUV4cHJTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVJZlN0
YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlSWZTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRl
Rm9yTG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwg
aW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUZvckluTG9vcChjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUZvcklu
TG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVGb3JJbkxvb3AoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAg
ICBpbnQgY3JlYXRlRm9ySW5Mb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAg
IGludCBjcmVhdGVFbXB0eVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mKSB7IHJldHVy
biAxOyB9CiAgICAgaW50IGNyZWF0ZVZhclN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVJldHVyblN0YXRl
bWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyBy
ZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVCcmVha1N0YXRlbWVudChjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRl
QnJlYWtTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllcios
IGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVDb250aW51
ZVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQpIHsg
cmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gMTsgfQorICAgIGludCBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Cisg
ICAgaW50IGNyZWF0ZUJyZWFrU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwg
aW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUJyZWFrU3Rh
dGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVDb250aW51ZVN0
YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVDb250aW51ZVN0YXRlbWVudChjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQp
IHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlVHJ5U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCkgeyBy
ZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVTd2l0Y2hTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAg
IGludCBjcmVhdGVXaGlsZVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGlu
dCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlV2l0aFN0YXRlbWVudChj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJl
dHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVdpdGhTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7
IH0KICAgICBpbnQgY3JlYXRlRG9XaGlsZVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlTGFiZWxT
dGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlVGhyb3dTdGF0ZW1lbnQoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7
IH0KKyAgICBpbnQgY3JlYXRlTGFiZWxTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Y29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9
CisgICAgaW50IGNyZWF0ZVRocm93U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAgIGludCBj
cmVhdGVEZWJ1Z2dlcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCkgeyByZXR1cm4g
MTsgfQogICAgIGludCBjcmVhdGVDb25zdFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGFwcGVuZENvbnN0RGVjbChj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQpIHsgcmV0
dXJuIDE7IH0KLSAgICB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+IFByb3BlcnR5IGNyZWF0ZUdldHRl
ck9yU2V0dGVyUHJvcGVydHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUHJvcGVydHlOb2RlOjpU
eXBlIHR5cGUsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQpCisgICAgdGVtcGxhdGUgPGJvb2wgc3RyaWN0PiBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJP
clNldHRlclByb3BlcnR5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5Tm9kZTo6VHlw
ZSB0eXBlLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQpCiAgICAgewogICAgICAgICBBU1NFUlQobmFtZSk7CiAgICAgICAgIGlmICghc3Ry
aWN0KQogICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5cGUpOwogICAgICAgICByZXR1cm4g
UHJvcGVydHkobmFtZSwgdHlwZSk7CiAgICAgfQotICAgIHRlbXBsYXRlIDxib29sIHN0cmljdD4g
UHJvcGVydHkgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShWTSogdm0sIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBkb3VibGUgbmFtZSwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCkKKyAgICB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+IFByb3Bl
cnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgZG91YmxlIG5hbWUsIGludCwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCkKICAgICB7CiAgICAgICAgIGlmICghc3RyaWN0KQogICAg
ICAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5cGUpOwpAQCAtMjIyLDcgKzIyMiw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFkZFZhcihjb25zdCBJZGVudGlmaWVyKiwgYm9vbCkgeyB9CiAgICAgaW50
IGNvbWJpbmVDb21tYU5vZGVzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50KSB7IHJl
dHVybiAxOyB9CiAgICAgaW50IGV2YWxDb3VudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgICB2
b2lkIGFwcGVuZEJpbmFyeUV4cHJlc3Npb25JbmZvKGludCYgb3BlcmFuZFN0YWNrRGVwdGgsIGlu
dCBleHByLCBpbnQsIGludCwgaW50LCBib29sKQorICAgIHZvaWQgYXBwZW5kQmluYXJ5RXhwcmVz
c2lvbkluZm8oaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgaW50IGV4cHIsIGludCwgaW50LCBpbnQs
IGludCwgaW50LCBib29sKQogICAgIHsKICAgICAgICAgaWYgKCFtX3RvcEJpbmFyeUV4cHIpCiAg
ICAgICAgICAgICBtX3RvcEJpbmFyeUV4cHIgPSBleHByOwpAQCAtMjQwLDEyICsyNDAsMTMgQEAg
cHVibGljOgogICAgIHZvaWQgb3BlcmF0b3JTdGFja0FwcGVuZChpbnQmIG9wZXJhdG9yU3RhY2tE
ZXB0aCwgaW50LCBpbnQpIHsgb3BlcmF0b3JTdGFja0RlcHRoKys7IH0KICAgICBpbnQgcG9wT3Bl
cmFuZFN0YWNrKGludCYpIHsgaW50IHJlcyA9IG1fdG9wQmluYXJ5RXhwcjsgbV90b3BCaW5hcnlF
eHByID0gMDsgcmV0dXJuIHJlczsgfQogICAgIAotICAgIHZvaWQgYXBwZW5kVW5hcnlUb2tlbihp
bnQmIHN0YWNrRGVwdGgsIGludCB0b2ssIGludCkgeyBzdGFja0RlcHRoID0gMTsgbV90b3BVbmFy
eVRva2VuID0gdG9rOyB9CisgICAgdm9pZCBhcHBlbmRVbmFyeVRva2VuKGludCYgc3RhY2tEZXB0
aCwgaW50IHRvaywgaW50LCBpbnQsIGludCkgeyBzdGFja0RlcHRoID0gMTsgbV90b3BVbmFyeVRv
a2VuID0gdG9rOyB9CiAgICAgaW50IHVuYXJ5VG9rZW5TdGFja0xhc3RUeXBlKGludCYpIHsgcmV0
dXJuIG1fdG9wVW5hcnlUb2tlbjsgfQotICAgIGludCB1bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQo
aW50JikgeyByZXR1cm4gMDsgfQorICAgIHVuc2lnbmVkIHVuYXJ5VG9rZW5TdGFja0xhc3RTdGFy
dChpbnQmKSB7IHJldHVybiAwOyB9CisgICAgdW5zaWduZWQgdW5hcnlUb2tlblN0YWNrTGFzdExp
bmVTdGFydFBvc2l0aW9uKGludCYpIHsgcmV0dXJuIDA7IH0KICAgICB2b2lkIHVuYXJ5VG9rZW5T
dGFja1JlbW92ZUxhc3QoaW50JiBzdGFja0RlcHRoKSB7IHN0YWNrRGVwdGggPSAwOyB9CiAgICAg
Ci0gICAgdm9pZCBhc3NpZ25tZW50U3RhY2tBcHBlbmQoaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IE9wZXJhdG9yKSB7IH0KKyAgICB2b2lkIGFzc2lnbm1lbnRTdGFja0FwcGVuZChpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQsIE9wZXJhdG9yKSB7IH0KICAgICBpbnQgY3JlYXRlQXNz
aWdubWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQsIGludCkg
eyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMTsgfQogICAgIGNvbnN0IElk
ZW50aWZpZXImIGdldE5hbWUoY29uc3QgUHJvcGVydHkmIHByb3BlcnR5KSBjb25zdCB7IEFTU0VS
VChwcm9wZXJ0eS5uYW1lKTsgcmV0dXJuICpwcm9wZXJ0eS5uYW1lOyB9CiAgICAgUHJvcGVydHlO
b2RlOjpUeXBlIGdldFR5cGUoY29uc3QgUHJvcGVydHkmIHByb3BlcnR5KSBjb25zdCB7IHJldHVy
biBwcm9wZXJ0eS50eXBlOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2RlQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvZGVDYWNoZS5jcHAJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAg
VW5saW5rZWRDb2RlQmxvY2tUeXBlKiBDb2RlQ2FjaGU6OmdlbmVyYQogICAgIFJlZlB0cjxSb290
Tm9kZT4gcm9vdE5vZGUgPSBwYXJzZTxSb290Tm9kZT4oJnZtLCBzb3VyY2UsIDAsIElkZW50aWZp
ZXIoKSwgc3RyaWN0bmVzcywgSlNQYXJzZVByb2dyYW1Db2RlLCBlcnJvcik7CiAgICAgaWYgKCFy
b290Tm9kZSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2Uo
cm9vdE5vZGUtPmZlYXR1cmVzKCksIHJvb3ROb2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBy
b290Tm9kZS0+bGluZU5vKCksIHJvb3ROb2RlLT5sYXN0TGluZSgpKTsKKyAgICBleGVjdXRhYmxl
LT5yZWNvcmRQYXJzZShyb290Tm9kZS0+ZmVhdHVyZXMoKSwgcm9vdE5vZGUtPmhhc0NhcHR1cmVk
VmFyaWFibGVzKCksIHJvb3ROb2RlLT5saW5lTm8oKSwgcm9vdE5vZGUtPmxhc3RMaW5lKCksIHJv
b3ROb2RlLT5zdGFydENvbHVtbigpKTsKIAogICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSogdW5s
aW5rZWRDb2RlID0gVW5saW5rZWRDb2RlQmxvY2tUeXBlOjpjcmVhdGUoJnZtLCBleGVjdXRhYmxl
LT5leGVjdXRhYmxlSW5mbygpKTsKICAgICB1bmxpbmtlZENvZGUtPnJlY29yZFBhcnNlKHJvb3RO
b2RlLT5mZWF0dXJlcygpLCByb290Tm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgcm9vdE5v
ZGUtPmxpbmVObygpIC0gc291cmNlLmZpcnN0TGluZSgpLCByb290Tm9kZS0+bGFzdExpbmUoKSAt
IHJvb3ROb2RlLT5saW5lTm8oKSk7CkBAIC0xMTYsNyArMTE2LDggQEAgVW5saW5rZWRDb2RlQmxv
Y2tUeXBlKiBDb2RlQ2FjaGU6OmdldENvZAogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkg
JiYgY2FuQ2FjaGUpIHsKICAgICAgICAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiB1bmxpbmtlZENv
ZGUgPSBqc0Nhc3Q8VW5saW5rZWRDb2RlQmxvY2tUeXBlKj4oYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZS5jZWxsLmdldCgpKTsKICAgICAgICAgdW5zaWduZWQgZmlyc3RMaW5lID0gc291cmNlLmZp
cnN0TGluZSgpICsgdW5saW5rZWRDb2RlLT5maXJzdExpbmUoKTsKLSAgICAgICAgZXhlY3V0YWJs
ZS0+cmVjb3JkUGFyc2UodW5saW5rZWRDb2RlLT5jb2RlRmVhdHVyZXMoKSwgdW5saW5rZWRDb2Rl
LT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBmaXJzdExpbmUsIGZpcnN0TGluZSArIHVubGlua2Vk
Q29kZS0+bGluZUNvdW50KCkpOworICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IHNvdXJj
ZS5maXJzdExpbmUoKSA/IHNvdXJjZS5zdGFydENvbHVtbigpIDogMDsKKyAgICAgICAgZXhlY3V0
YWJsZS0+cmVjb3JkUGFyc2UodW5saW5rZWRDb2RlLT5jb2RlRmVhdHVyZXMoKSwgdW5saW5rZWRD
b2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBmaXJzdExpbmUsIGZpcnN0TGluZSArIHVubGlu
a2VkQ29kZS0+bGluZUNvdW50KCksIHN0YXJ0Q29sdW1uKTsKICAgICAgICAgcmV0dXJuIHVubGlu
a2VkQ29kZTsKICAgICB9CiAgICAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiB1bmxpbmtlZENvZGUg
PSBnZW5lcmF0ZUJ5dGVjb2RlPFVubGlua2VkQ29kZUJsb2NrVHlwZSwgRXhlY3V0YWJsZVR5cGU+
KHZtLCBzY29wZSwgZXhlY3V0YWJsZSwgc291cmNlLCBzdHJpY3RuZXNzLCBkZWJ1Z2dlck1vZGUs
IHByb2ZpbGVyTW9kZSwgZXJyb3IpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyAr
MTQxLDcgQEAgdm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIAogCiBjb25z
dCBDbGFzc0luZm8gRnVuY3Rpb25FeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJGdW5jdGlvbkV4ZWN1
dGFibGUiLCAmU2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEZ1bmN0aW9uRXhlY3V0YWJsZSkgfTsKIAotRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlv
bkV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIHVuc2lnbmVkIGZpcnN0TGluZSwg
dW5zaWduZWQgbGFzdExpbmUpCitGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJs
ZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSwgdW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBs
YXN0TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4pCiAgICAgOiBTY3JpcHRFeGVjdXRhYmxlKHZt
LmZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgdm0sIHNvdXJjZSwgdW5saW5rZWRF
eGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpKQogICAgICwgbV91bmxpbmtlZEV4ZWN1dGFi
bGUodm0sIHRoaXMsIHVubGlua2VkRXhlY3V0YWJsZSkKIHsKQEAgLTE0OSw2ICsxNDksNyBAQCBG
dW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShWCiAgICAgQVNTRVJUKHNvdXJj
ZS5sZW5ndGgoKSk7CiAgICAgbV9maXJzdExpbmUgPSBmaXJzdExpbmU7CiAgICAgbV9sYXN0TGlu
ZSA9IGxhc3RMaW5lOworICAgIG1fc3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsKIH0KIAogdm9p
ZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQpAQCAtMzIwLDcgKzMy
MSw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGUKICAgICAgICAg
bV9wcm9ncmFtQ29kZUJsb2NrID0gbmV3Q29kZUJsb2NrLnJlbGVhc2UoKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc2NvcGUtPmdsb2JhbE9i
amVjdCgpOwotICAgICAgICBtX3Byb2dyYW1Db2RlQmxvY2sgPSBhZG9wdFB0cihuZXcgUHJvZ3Jh
bUNvZGVCbG9jayh0aGlzLCBtX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9jay5nZXQoKSwgZ2xvYmFs
T2JqZWN0LCBzb3VyY2UoKS5wcm92aWRlcigpLCBtX3Byb2dyYW1Db2RlQmxvY2sucmVsZWFzZSgp
KSk7CisgICAgICAgIG1fcHJvZ3JhbUNvZGVCbG9jayA9IGFkb3B0UHRyKG5ldyBQcm9ncmFtQ29k
ZUJsb2NrKHRoaXMsIG1fdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrLmdldCgpLCBnbG9iYWxPYmpl
Y3QsIHNvdXJjZSgpLnByb3ZpZGVyKCksIHNvdXJjZSgpLnN0YXJ0Q29sdW1uKCksIG1fcHJvZ3Jh
bUNvZGVCbG9jay5yZWxlYXNlKCkpKTsKICAgICAgICAgbV9wcm9ncmFtQ29kZUJsb2NrLT5jb3B5
UG9zdFBhcnNlRGF0YUZyb21BbHRlcm5hdGl2ZSgpOwogICAgIH0KIApAQCAtNTAwLDE0ICs1MDEs
MTggQEAgUGFzc093blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4gRnVuY3Rpb25FeAogICAgIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUgPSBnbG9iYWxPYmplY3QtPmhhc0RlYnVnZ2VyKCkgPyBEZWJ1
Z2dlck9uIDogRGVidWdnZXJPZmY7CiAgICAgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSA9IGds
b2JhbE9iamVjdC0+aGFzUHJvZmlsZXIoKSA/IFByb2ZpbGVyT24gOiBQcm9maWxlck9mZjsKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IG1fdW5saW5r
ZWRFeGVjdXRhYmxlLT5jb2RlQmxvY2tGb3IoKnZtLCBzY29wZSwgbV9zb3VyY2UsIHNwZWNpYWxp
emF0aW9uS2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKLSAgICByZWNv
cmRQYXJzZShtX3VubGlua2VkRXhlY3V0YWJsZS0+ZmVhdHVyZXMoKSwgbV91bmxpbmtlZEV4ZWN1
dGFibGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGxpbmVObygpLCBsYXN0TGluZSgpKTsKKyAg
ICByZWNvcmRQYXJzZShtX3VubGlua2VkRXhlY3V0YWJsZS0+ZmVhdHVyZXMoKSwgbV91bmxpbmtl
ZEV4ZWN1dGFibGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGxpbmVObygpLCBsYXN0TGluZSgp
LCBzdGFydENvbHVtbigpKTsKIAogICAgIGlmICghdW5saW5rZWRDb2RlQmxvY2spIHsKICAgICAg
ICAgZXhjZXB0aW9uID0gZXJyb3IudG9FcnJvck9iamVjdChnbG9iYWxPYmplY3QsIG1fc291cmNl
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgT3duUHRyPEZ1bmN0aW9u
Q29kZUJsb2NrPiByZXN1bHQgPSBhZG9wdFB0cihuZXcgRnVuY3Rpb25Db2RlQmxvY2sodGhpcywg
dW5saW5rZWRDb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgc291cmNlKCkucHJvdmlkZXIoKSwgc291
cmNlKCkuc3RhcnRPZmZzZXQoKSkpOworICAgIFNvdXJjZVByb3ZpZGVyKiBwcm92aWRlciA9IHNv
dXJjZSgpLnByb3ZpZGVyKCk7CisgICAgdW5zaWduZWQgc291cmNlT2Zmc2V0ID0gc291cmNlKCku
c3RhcnRPZmZzZXQoKTsKKyAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IHNvdXJjZSgpLnN0YXJ0
Q29sdW1uKCk7CisKKyAgICBPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+IHJlc3VsdCA9IGFkb3B0
UHRyKG5ldyBGdW5jdGlvbkNvZGVCbG9jayh0aGlzLCB1bmxpbmtlZENvZGVCbG9jaywgZ2xvYmFs
T2JqZWN0LCBwcm92aWRlciwgc291cmNlT2Zmc2V0LCBzdGFydENvbHVtbikpOwogICAgIHJlc3Vs
dC0+Y29weVBvc3RQYXJzZURhdGFGcm9tKGNvZGVCbG9ja0ZvcihzcGVjaWFsaXphdGlvbktpbmQp
LmdldCgpKTsKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KQEAgLTY1Nyw5ICs2NjIs
MTAgQEAgRnVuY3Rpb25FeGVjdXRhYmxlKiBGdW5jdGlvbkV4ZWN1dGFibGU6OgogICAgICAgICBy
ZXR1cm4gMDsKICAgICB1bnNpZ25lZCBmaXJzdExpbmUgPSBzb3VyY2UuZmlyc3RMaW5lKCkgKyB1
bmxpbmtlZEZ1bmN0aW9uLT5maXJzdExpbmVPZmZzZXQoKTsKICAgICB1bnNpZ25lZCBzdGFydE9m
ZnNldCA9IHNvdXJjZS5zdGFydE9mZnNldCgpICsgdW5saW5rZWRGdW5jdGlvbi0+c3RhcnRPZmZz
ZXQoKTsKKyAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IHNvdXJjZS5zdGFydENvbHVtbigpOwog
ICAgIHVuc2lnbmVkIHNvdXJjZUxlbmd0aCA9IHVubGlua2VkRnVuY3Rpb24tPnNvdXJjZUxlbmd0
aCgpOwotICAgIFNvdXJjZUNvZGUgZnVuY3Rpb25Tb3VyY2Uoc291cmNlLnByb3ZpZGVyKCksIHN0
YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCArIHNvdXJjZUxlbmd0aCwgZmlyc3RMaW5lKTsKLSAgICBy
ZXR1cm4gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoZXhlYy0+dm0oKSwgZnVuY3Rpb25Tb3Vy
Y2UsIHVubGlua2VkRnVuY3Rpb24sIGZpcnN0TGluZSwgdW5saW5rZWRGdW5jdGlvbi0+bGluZUNv
dW50KCkpOworICAgIFNvdXJjZUNvZGUgZnVuY3Rpb25Tb3VyY2Uoc291cmNlLnByb3ZpZGVyKCks
IHN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCArIHNvdXJjZUxlbmd0aCwgZmlyc3RMaW5lLCBzdGFy
dENvbHVtbik7CisgICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMtPnZt
KCksIGZ1bmN0aW9uU291cmNlLCB1bmxpbmtlZEZ1bmN0aW9uLCBmaXJzdExpbmUsIHVubGlua2Vk
RnVuY3Rpb24tPmxpbmVDb3VudCgpLCBzdGFydENvbHVtbik7CiB9CiAKIFN0cmluZyBGdW5jdGlv
bkV4ZWN1dGFibGU6OnBhcmFtU3RyaW5nKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDE1MTkyMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgy
LDYgKzM4Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLnByb3ZpZGVyKCktPnVybCgpOyB9CiAgICAg
ICAgIGludCBsaW5lTm8oKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0TGluZTsgfQogICAgICAgICBp
bnQgbGFzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RMaW5lOyB9CisgICAgICAgIHVuc2ln
bmVkIHN0YXJ0Q29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydENvbHVtbjsgfQogCiAgICAg
ICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgRXZhbEZlYXR1
cmU7IH0KICAgICAgICAgYm9vbCB1c2VzQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0
dXJlcyAmIEFyZ3VtZW50c0ZlYXR1cmU7IH0KQEAgLTM5NCwxMiArMzk1LDEzIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87
CiAKLSAgICAgICAgdm9pZCByZWNvcmRQYXJzZShDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGJvb2wg
aGFzQ2FwdHVyZWRWYXJpYWJsZXMsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKKyAgICAg
ICAgdm9pZCByZWNvcmRQYXJzZShDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGJvb2wgaGFzQ2FwdHVy
ZWRWYXJpYWJsZXMsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgdW5zaWduZWQgc3RhcnRD
b2x1bW4pCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fZmVhdHVyZXMgPSBmZWF0dXJlczsKICAg
ICAgICAgICAgIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgPSBoYXNDYXB0dXJlZFZhcmlhYmxlczsK
ICAgICAgICAgICAgIG1fZmlyc3RMaW5lID0gZmlyc3RMaW5lOwogICAgICAgICAgICAgbV9sYXN0
TGluZSA9IGxhc3RMaW5lOworICAgICAgICAgICAgbV9zdGFydENvbHVtbiA9IHN0YXJ0Q29sdW1u
OwogICAgICAgICB9CiAKICAgICBwcm90ZWN0ZWQ6CkBAIC00MTksNiArNDIxLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9oYXNDYXB0dXJlZFZhcmlhYmxlczsKICAgICAgICAg
aW50IG1fZmlyc3RMaW5lOwogICAgICAgICBpbnQgbV9sYXN0TGluZTsKKyAgICAgICAgdW5zaWdu
ZWQgbV9zdGFydENvbHVtbjsKICAgICB9OwogCiAgICAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgOiBw
dWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CkBAIC01NzMsOSArNTc2LDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsK
IAotICAgICAgICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtl
ZEV4ZWN1dGFibGUsIHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUpCisgICAg
ICAgIHN0YXRpYyBGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSYgdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0
YWJsZSwgdW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBsYXN0TGluZSwgdW5zaWduZWQgc3Rh
cnRDb2x1bW4pCiAgICAgICAgIHsKLSAgICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZ1bmN0aW9uRXhlY3V0YWJsZT4o
dm0uaGVhcCkpIEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgc291cmNlLCB1bmxpbmtlZEV4ZWN1dGFi
bGUsIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxl
KiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RnVuY3Rpb25FeGVjdXRh
YmxlPih2bS5oZWFwKSkgRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCBzb3VyY2UsIHVubGlua2VkRXhl
Y3V0YWJsZSwgZmlyc3RMaW5lLCBsYXN0TGluZSwgc3RhcnRDb2x1bW4pOwogICAgICAgICAgICAg
ZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICAgICAgcmV0dXJuIGV4ZWN1
dGFibGU7CiAgICAgICAgIH0KQEAgLTc0Niw3ICs3NDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBjbGVhckNvZGUoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEZ1bmN0aW9u
RXhlY3V0YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSosIHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUpOworICAgICAgICBG
dW5jdGlvbkV4ZWN1dGFibGUoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqLCB1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCB1bnNp
Z25lZCBzdGFydENvbHVtbik7CiAKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVGb3JDYWxsSW50
ZXJuYWwoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpJVENvZGU6OkpJVFR5cGUsIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXggPSBVSU5UX01BWCk7CiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlRm9yQ29u
c3RydWN0SW50ZXJuYWwoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpJVENvZGU6OkpJVFR5cGUsIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXggPSBVSU5UX01BWCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAxNTI0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyNCBAQAorMjAxMy0wNy0wOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+
CisKKyAgICAgICAgRml4IDMwJSBKU0JlbmNoIHJlZ3Jlc3Npb24gKGNhdXNlZCBieSBhZGRpbmcg
Y29sdW1uIG51bWJlcnMgdG8gc3RhY2sgdHJhY2VzKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODQ4MS4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2pzL2xpbmUtY29sdW1uLW51bWJl
cnMuaHRtbAorCisgICAgICAgIFVwZGF0ZWQgdGhlIGJpbmRpbmdzIHRvIHVzZSBTdGFja0ZyYW1l
Ojpjb21wdXRlTGluZUFuZENvbHVtbigpLiBUaGUgb2xkCisgICAgICAgIFN0YWNrRnJhbWU6Omxp
bmUoKSBhbmQgU3RhY2tGcmFtZTo6Y29sdW1uKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVGhlIG5ldwor
ICAgICAgICBhbGdvcml0aG0gYWx3YXlzIGNvbXB1dGVzIHRoZSAyIHZhbHVlcyB0b2dldGhlciBh
bnl3YXkuIEhlbmNlIGl0IGlzIG1vcmUKKyAgICAgICAgZWZmaWNpZW50IHRvIHJldHVybiB0aGVt
IGFzIGEgcGFpciBpbnN0ZWFkIG9mIGRvaW5nIHRoZSBzYW1lIGNvbXB1dGF0aW9uCisgICAgICAg
IHR3aWNlIGZvciBlYWNoIGhhbGYgb2YgdGhlIHJlc3VsdC4KKworICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
U2NyaXB0Q2FsbFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNjcmlwdENhbGxTdGFj
a0Zyb21FeGNlcHRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFNvdXJjZUNvZGU6OlNjcmlwdFNvdXJjZUNvZGUp
OgorCiAyMDEzLTA3LTA4ICBSYWR1IFN0YXZpbGEgIDxzdGF2aWxhQGFkb2JlLmNvbT4KIAogICAg
ICAgICBOYW1lZEZsb3dDb2xsZWN0aW9uIGdldHRlcnMgc2hvdWxkIHJldHVybiB1bmRlZmluZWQg
d2hlbiB0aGVyZSdzIG5vIE5hbWVkRmxvdwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAJKHJldmlzaW9uIDE1MTky
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3Rvcnku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw4ICs1OSwxMiBAQCBQYXNzUmVmUHRyPFNjcmlwdENh
bGxTdGFjaz4gY3JlYXRlU2NyaXB0CiAgICAgaWYgKEpTQzo6RXhlY1N0YXRlKiBleGVjID0gSlNN
YWluVGhyZWFkRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSkgewogICAgICAgICBWZWN0b3I8U3Rh
Y2tGcmFtZT4gc3RhY2tUcmFjZTsKICAgICAgICAgSW50ZXJwcmV0ZXI6OmdldFN0YWNrVHJhY2Uo
JmV4ZWMtPnZtKCksIHN0YWNrVHJhY2UsIG1heFN0YWNrU2l6ZSk7Ci0gICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc3RhY2tUcmFjZS5zaXplKCk7IGkrKykKLSAgICAgICAgICAgIGZyYW1l
cy5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1lKHN0YWNrVHJhY2VbaV0uZnJpZW5kbHlGdW5jdGlvbk5h
bWUoZXhlYyksIHN0YWNrVHJhY2VbaV0uZnJpZW5kbHlTb3VyY2VVUkwoKSwgc3RhY2tUcmFjZVtp
XS5saW5lKCksIHN0YWNrVHJhY2VbaV0uY29sdW1uKCkpKTsKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzdGFja1RyYWNlLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICB1bnNpZ25l
ZCBsaW5lOworICAgICAgICAgICAgdW5zaWduZWQgY29sdW1uOworICAgICAgICAgICAgc3RhY2tU
cmFjZVtpXS5jb21wdXRlTGluZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOworICAgICAgICAgICAg
ZnJhbWVzLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUoc3RhY2tUcmFjZVtpXS5mcmllbmRseUZ1bmN0
aW9uTmFtZShleGVjKSwgc3RhY2tUcmFjZVtpXS5mcmllbmRseVNvdXJjZVVSTCgpLCBsaW5lLCBj
b2x1bW4pKTsKKyAgICAgICAgfQogICAgIH0KICAgICBpZiAoZnJhbWVzLmlzRW1wdHkoKSAmJiAh
ZW1wdHlJc0FsbG93ZWQpIHsKICAgICAgICAgLy8gTm8gZnJhbWVzIGZvdW5kLiBJdCBtYXkgaGFw
cGVuIGluIHRoZSBjYXNlIHdoZXJlCkBAIC04NCw3ICs4OCwxMCBAQCBQYXNzUmVmUHRyPFNjcmlw
dENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBT
dHJpbmcgZnVuY3Rpb25OYW1lID0gc3RhY2tUcmFjZVtpXS5mcmllbmRseUZ1bmN0aW9uTmFtZShl
eGVjKTsKLSAgICAgICAgZnJhbWVzLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUoZnVuY3Rpb25OYW1l
LCBzdGFja1RyYWNlW2ldLnNvdXJjZVVSTCwgc3RhY2tUcmFjZVtpXS5saW5lKCksIHN0YWNrVHJh
Y2VbaV0uY29sdW1uKCkpKTsKKyAgICAgICAgdW5zaWduZWQgbGluZTsKKyAgICAgICAgdW5zaWdu
ZWQgY29sdW1uOworICAgICAgICBzdGFja1RyYWNlW2ldLmNvbXB1dGVMaW5lQW5kQ29sdW1uKGxp
bmUsIGNvbHVtbik7CisgICAgICAgIGZyYW1lcy5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1lKGZ1bmN0
aW9uTmFtZSwgc3RhY2tUcmFjZVtpXS5zb3VyY2VVUkwsIGxpbmUsIGNvbHVtbikpOwogICAgIH0K
IAogICAgIHJldHVybiBTY3JpcHRDYWxsU3RhY2s6OmNyZWF0ZShmcmFtZXMpOwpAQCAtOTksNyAr
MTA2LDEwIEBAIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHQKICAgICAg
ICAgICAgIGJyZWFrOwogCiAgICAgICAgIFN0cmluZyBmdW5jdGlvbk5hbWUgPSBzdGFja1RyYWNl
W2ldLmZyaWVuZGx5RnVuY3Rpb25OYW1lKGV4ZWMpOwotICAgICAgICBmcmFtZXMuYXBwZW5kKFNj
cmlwdENhbGxGcmFtZShmdW5jdGlvbk5hbWUsIHN0YWNrVHJhY2VbaV0uc291cmNlVVJMLCBzdGFj
a1RyYWNlW2ldLmxpbmUoKSwgc3RhY2tUcmFjZVtpXS5jb2x1bW4oKSkpOworICAgICAgICB1bnNp
Z25lZCBsaW5lOworICAgICAgICB1bnNpZ25lZCBjb2x1bW47CisgICAgICAgIHN0YWNrVHJhY2Vb
aV0uY29tcHV0ZUxpbmVBbmRDb2x1bW4obGluZSwgY29sdW1uKTsKKyAgICAgICAgZnJhbWVzLmFw
cGVuZChTY3JpcHRDYWxsRnJhbWUoZnVuY3Rpb25OYW1lLCBzdGFja1RyYWNlW2ldLnNvdXJjZVVS
TCwgbGluZSwgY29sdW1uKSk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IDxodHRwOi8vd2Via2l0
Lm9yZy9iLzExNTA4Nz4gV2ViIEluc3BlY3RvcjogV2ViQ29yZTo6cmVwb3J0RXhjZXB0aW9uIHNo
b3VsZCBub3QgZXZhbHVhdGUgSmF2YVNjcmlwdCBoYW5kbGluZyBleGNlcHRpb25zCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oCShyZXZpc2lv
biAxNTE5MjApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgU2NyaXB0U291cmNlQ29k
ZSB7CiBwdWJsaWM6CiAgICAgU2NyaXB0U291cmNlQ29kZShjb25zdCBTdHJpbmcmIHNvdXJjZSwg
Y29uc3QgS1VSTCYgdXJsID0gS1VSTCgpLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRp
b24gPSBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpKQogICAgICAgICA6IG1fcHJvdmlk
ZXIoSlNDOjpTdHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKHNvdXJjZSwgdXJsLmlzTnVsbCgp
ID8gU3RyaW5nKCkgOiB1cmwuc3RyaW5nKCksIHN0YXJ0UG9zaXRpb24pKQotICAgICAgICAsIG1f
Y29kZShtX3Byb3ZpZGVyLCBzdGFydFBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpKQorICAg
ICAgICAsIG1fY29kZShtX3Byb3ZpZGVyLCBzdGFydFBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZElu
dCgpLCBzdGFydFBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCkpCiAgICAgICAgICwgbV91
cmwodXJsKQogICAgIHsKICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTI0NjYpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MiBAQAorMjAxMy0w
Ny0wOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IDMwJSBK
U0JlbmNoIHJlZ3Jlc3Npb24gKGNhdXNlZCBieSBhZGRpbmcgY29sdW1uIG51bWJlcnMgdG8gc3Rh
Y2sgdHJhY2VzKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExODQ4MS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgZml4IG5vdyBjb21wdXRlcyBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycyBtb3JlIGFj
Y3VyYXRlbHkuIEFzIGEgcmVzdWx0LAorICAgICAgICBzb21lIG9mIHRoZSB0ZXN0IHJlc3VsdHMg
bmVlZCB0byBiZSByZS1iYXNlbGluZWQuIEFtb25nIG90aGVyIGZpeGVzLCBvbmUKKyAgICAgICAg
bWFqb3Igc291cmNlIG9mIGRpZmZlcmVuY2UgaXMgdGhhdCB0aGUgb2xkIGNvZGUgd2FzIGluY29y
cmVjdGx5IGNvbXB1dGluZworICAgICAgICAwLWJhc2VkIGNvbHVtbiBudW1iZXJzLiBUaGlzIGhh
cyBub3cgYmVlbiBmaXhlZCB0byBiZSAxLWJhc2VkLgorICAgICAgICBOb3RlOiBsaW5lIG51bWJl
cnMgd2VyZSBhbHdheXMgMS1iYXNlZC4KKworICAgICAgICBBbHNvIGFkZGVkIGEgbmV3IHRlc3Q6
IGZhc3QvanMvbGluZS1jb2x1bW4tbnVtYmVycy5odG1sLCB3aGljaCB0ZXN0cyBsaW5lCisgICAg
ICAgIGFuZCBjb2x1bW4gbnVtYmVycyBmb3Igc291cmNlIGNvZGUgaW4gdmFyaW91cyBjb25maWd1
cmF0aW9ucy4KKworICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1ibG9ja3F1
b3RlLXRlc3QxLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL291
dGRlbnQtYmxvY2txdW90ZS10ZXN0Mi1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9l
eGVjQ29tbWFuZC9vdXRkZW50LWJsb2NrcXVvdGUtdGVzdDMtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1ibG9ja3F1b3RlLXRlc3Q0LWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1wYXN0ZS1mbG9hdC1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWJsb2NrcXVvdGUt
YmVmb3JlLWJsb2NrcXVvdGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVi
b2FyZC9wYXN0ZS1kb3VibGUtbmVzdGVkLWJsb2NrcXVvdGUtYmVmb3JlLWJsb2NrcXVvdGUtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcmVzaXplLWNvbnRl
bnRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9yZW1vdmUtdGFyZ2V0LXdp
dGgtc2hhZG93LWluLWRyYWctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvanMvbGluZS1j
b2x1bW4tbnVtYmVycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvbGlu
ZS1jb2x1bW4tbnVtYmVycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3NjcmlwdC10
ZXN0cy9saW5lLWNvbHVtbi1udW1iZXJzLmpzOiBBZGRlZC4KKyAgICAgICAgKHRyeS5kb1Rocm93
NGIpOgorICAgICAgICAoZG9UaHJvdzViLnRyeS5pbm5lckZ1bmMpOgorICAgICAgICAoZG9UaHJv
dzViKToKKyAgICAgICAgKGRvVGhyb3c2Yi50cnkuaW5uZXJGdW5jKToKKyAgICAgICAgKGRvVGhy
b3c2Yik6CisgICAgICAgIChjYXRjaCk6CisgICAgICAgICh0cnkuZG9UaHJvdzExYik6CisgICAg
ICAgICh0cnkuZG9UaHJvdzE0Yik6CisgICAgICAgICogZmFzdC9qcy9zdGFjay10cmFjZS1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2NvbnNvbGUvY29uc29sZS11cmwtbGluZS1j
b2x1bW4tZXhwZWN0ZWQudHh0OgorCiAyMDEzLTA3LTA4ICBSYWR1IFN0YXZpbGEgIDxzdGF2aWxh
QGFkb2JlLmNvbT4KIAogICAgICAgICBOYW1lZEZsb3dDb2xsZWN0aW9uIGdldHRlcnMgc2hvdWxk
IHJldHVybiB1bmRlZmluZWQgd2hlbiB0aGVyZSdzIG5vIE5hbWVkRmxvdwpJbmRleDogTGF5b3V0
VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LWJsb2NrcXVvdGUtdGVzdDEtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0
ZGVudC1ibG9ja3F1b3RlLXRlc3QxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTUxOTIwKQorKysg
TGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LWJsb2NrcXVvdGUtdGVzdDEt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDE0OiBTVUNDRVNTOiBOb2RlcyBzdGF5ZWQgaW4gb3JkZXIgYWZ0ZXIgb3V0ZGVu
dC4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxMjogU1VDQ0VTUzogTm9kZXMgc3RheWVkIGluIG9y
ZGVyIGFmdGVyIG91dGRlbnQuCiBUaGlzIHRlc3QgdXNlcyB0aGUgZXhlY0NvbW1hbmQgdG8gT3V0
ZGVudCB0aGUgdGV4dCBiZWxvdy4gVGhpcyB0ZXN0IHRoYXQgbm9kZXMsIHdpdGggZGlmZmVyZW50
IHJlbGF0aW9uc2hpcHMgd2l0aCBibG9ja3F1b3Rlcywgc3RheSBpbiB0aGUgY29ycmVjdCBvcmRl
ciBhZnRlciBhbiBvdXRkZW50LgogCiBBCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWND
b21tYW5kL291dGRlbnQtYmxvY2txdW90ZS10ZXN0Mi1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LWJsb2NrcXVvdGUtdGVz
dDItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTE5MjApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L2V4ZWNDb21tYW5kL291dGRlbnQtYmxvY2txdW90ZS10ZXN0Mi1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsNCArMSw0IEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTQ6IFNVQ0NF
U1M6IE5vZGVzIHN0YXllZCBpbiBvcmRlciBhZnRlciBvdXRkZW50LgorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDEyOiBTVUNDRVNTOiBOb2RlcyBzdGF5ZWQgaW4gb3JkZXIgYWZ0ZXIgb3V0ZGVudC4K
IFRoaXMgdGVzdCB1c2VzIHRoZSBleGVjQ29tbWFuZCB0byBPdXRkZW50IHRoZSB0ZXh0IGJlbG93
LiBUaGlzIHRlc3QgdGhhdCBub2Rlcywgd2l0aCBkaWZmZXJlbnQgcmVsYXRpb25zaGlwcyB3aXRo
IGJsb2NrcXVvdGVzLCBzdGF5IGluIHRoZSBjb3JyZWN0IG9yZGVyIGFmdGVyIGFuIG91dGRlbnQu
CiAKIEEKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1ibG9j
a3F1b3RlLXRlc3QzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0
aW5nL2V4ZWNDb21tYW5kL291dGRlbnQtYmxvY2txdW90ZS10ZXN0My1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDE1MTkyMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVu
dC1ibG9ja3F1b3RlLXRlc3QzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsx
LDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxNDogU1VDQ0VTUzogTm9kZXMgc3RheWVkIGlu
IG9yZGVyIGFmdGVyIG91dGRlbnQuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTI6IFNVQ0NFU1M6
IE5vZGVzIHN0YXllZCBpbiBvcmRlciBhZnRlciBvdXRkZW50LgogVGhpcyB0ZXN0IHVzZXMgdGhl
IGV4ZWNDb21tYW5kIHRvIE91dGRlbnQgdGhlIHRleHQgYmVsb3cuIFRoaXMgdGVzdCB0aGF0IG5v
ZGVzLCB3aXRoIGRpZmZlcmVudCByZWxhdGlvbnNoaXBzIHdpdGggYmxvY2txdW90ZXMsIHN0YXkg
aW4gdGhlIGNvcnJlY3Qgb3JkZXIgYWZ0ZXIgYW4gb3V0ZGVudC4KIAogQQpJbmRleDogTGF5b3V0
VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LWJsb2NrcXVvdGUtdGVzdDQtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0
ZGVudC1ibG9ja3F1b3RlLXRlc3Q0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTUxOTIwKQorKysg
TGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LWJsb2NrcXVvdGUtdGVzdDQt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDE0OiBTVUNDRVNTOiBOb2RlcyBzdGF5ZWQgaW4gb3JkZXIgYWZ0ZXIgb3V0ZGVu
dC4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxMjogU1VDQ0VTUzogTm9kZXMgc3RheWVkIGluIG9y
ZGVyIGFmdGVyIG91dGRlbnQuCiBUaGlzIHRlc3QgdXNlcyB0aGUgZXhlY0NvbW1hbmQgdG8gT3V0
ZGVudCB0aGUgdGV4dCBiZWxvdy4gVGhpcyB0ZXN0IHRoYXQgbm9kZXMsIHdpdGggZGlmZmVyZW50
IHJlbGF0aW9uc2hpcHMgd2l0aCBibG9ja3F1b3Rlcywgc3RheSBpbiB0aGUgY29ycmVjdCBvcmRl
ciBhZnRlciBhbiBvdXRkZW50LgogCiAKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVi
b2FyZC9jb3B5LXBhc3RlLWZsb2F0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1wYXN0ZS1mbG9hdC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDE1MTkyMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXBh
c3RlLWZsb2F0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLUNP
TlNPTEUgTUVTU0FHRTogbGluZSAyMDogU1VDQ0VTUzogcGFzdGUgRElEIE5PVCBrZWVwIGZsb2F0
OmxlZnQgc3R5bGUuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTg6IFNVQ0NFU1M6IHBhc3RlIERJ
RCBOT1Qga2VlcCBmbG9hdDpsZWZ0IHN0eWxlLgogVGhpcyB0ZXN0IGlzIHRvIHNlZSBpZiB0ZXh0
IHdpdGhpbiBhIGZsb2F0aW5nIGJsb2NrIGlzIHB1dCBvbnRvIHRoZSBwYXN0ZSBib2FyZCB3aWh0
b3V0IHRoZSBmbG9hdCBzdHlsZS4KIAogRmlyc3QgTEkKSW5kZXg6IExheW91dFRlc3RzL2VkaXRp
bmcvcGFzdGVib2FyZC9wYXN0ZS1ibG9ja3F1b3RlLWJlZm9yZS1ibG9ja3F1b3RlLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUt
YmxvY2txdW90ZS1iZWZvcmUtYmxvY2txdW90ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1MTky
MCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1ibG9ja3F1b3RlLWJl
Zm9yZS1ibG9ja3F1b3RlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQg
QEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAyMDogU1VDQ0VTUzogcGFzdGluZyBzaW5nbGVOZXN0
ZWROb2RlVG9Db3B5IERJRCBOT1Qga2VlcCB0aGUgbmV3bGluZSB3aXRoaW4gdGhlIGJsb2NrcXVv
dGUuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTg6IFNVQ0NFU1M6IHBhc3Rpbmcgc2luZ2xlTmVz
dGVkTm9kZVRvQ29weSBESUQgTk9UIGtlZXAgdGhlIG5ld2xpbmUgd2l0aGluIHRoZSBibG9ja3F1
b3RlLgogVGhpcyB0ZXN0cyBwYXN0aW5nIGEgc2luZ2x5IG5lc3RlZCBibG9ja3F1b3RlIGJlZm9y
ZSwgYW5kIG91dHNpZGUgb2YsIGFub3RoZXIgYmxvY2txdW90ZS4gVGhpcyB0ZXN0IGRvZXMgbm90
IHdvcmsgb3V0c2lkZSBvZiBEUlQuCiAKIGxpbmUgMgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLWRvdWJsZS1uZXN0ZWQtYmxvY2txdW90ZS1iZWZvcmUtYmxvY2tx
dW90ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL3Bhc3RlLWRvdWJsZS1uZXN0ZWQtYmxvY2txdW90ZS1iZWZvcmUtYmxvY2txdW90ZS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDE1MTkyMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9wYXN0ZS1kb3VibGUtbmVzdGVkLWJsb2NrcXVvdGUtYmVmb3JlLWJsb2NrcXVvdGUt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDIwOiBTVUNDRVNTOiBwYXN0aW5nIGRvdWJsZU5lc3RlZE5vZGVUb0NvcHkgRElE
IE5PVCBrZWVwIHRoZSBuZXdsaW5lIHdpdGhpbiB0aGUgYmxvY2txdW90ZS4KK0NPTlNPTEUgTUVT
U0FHRTogbGluZSAxODogU1VDQ0VTUzogcGFzdGluZyBkb3VibGVOZXN0ZWROb2RlVG9Db3B5IERJ
RCBOT1Qga2VlcCB0aGUgbmV3bGluZSB3aXRoaW4gdGhlIGJsb2NrcXVvdGUuCiBUaGlzIHRlc3Rz
IHBhc3RpbmcgYSBkb3VibHkgbmVzdGVkIGJsb2NrcXVvdGUgYmVmb3JlLCBhbmQgb3V0c2lkZSBv
ZiwgYW5vdGhlciBibG9ja3F1b3RlLiBUaGlzIHRlc3QgZG9lcyBub3Qgd29yayBvdXRzaWRlIG9m
IERSVC4KIAogbGluZSA0CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93
LXJlc2l6ZS1jb250ZW50cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vV2luZG93L3dpbmRvdy1yZXNpemUtY29udGVudHMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxNTE5MjApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXJlc2l6
ZS1jb250ZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACi1D
T05TT0xFIE1FU1NBR0U6IGxpbmUgMTk6IEluaXRpYWwgcmVmZXJlbmNlIG5vZGUgZGltZW5zaW9u
cyA4MDAgeCA2MDAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxODogSW5pdGlhbCByZWZlcmVuY2Ug
bm9kZSBkaW1lbnNpb25zIDgwMCB4IDYwMAogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIwOiBJbmNy
ZWFzaW5nIHdpbmRvdyBzaXplIGJ5IDEwIHggMTAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAyMzog
UG9zdC1yZXNpemUgcmVmZXJlbmNlIG5vZGUgZGltZW5zaW9ucyA4MDAgeCA2MDAKK0NPTlNPTEUg
TUVTU0FHRTogbGluZSAyMjogUG9zdC1yZXNpemUgcmVmZXJlbmNlIG5vZGUgZGltZW5zaW9ucyA4
MDAgeCA2MDAKIFRoaXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgeWVsbG93IHJlZmVyZW5jZSBET00g
bm9kZSAod2hpY2ggc2hvdWxkIGJlIGFzIGJpZyBhcyB0aGUgd2luZG93KSBnZXRzIHJlc2l6ZWQg
d2hlbiB0aGUgd2luZG93IGlzIHJlc2l6ZWQuCiAKIFRvIGF2b2lkIHJlbGF5b3V0cyBhbmQgcmVw
YWludHMgY2F1c2VkIGJ5IERPTS1iYXNlZCBsb2dnaW5nLCBpdCBkb2Vzbid0IG91dHB1dCBhbnl0
aGluZy4gUGxlYXNlIGNoZWNrIHRoZSBjb25zb2xlIGZvciBjb25maXJtYXRpb24gdGhhdCB0aGUg
bm9kZSBkaW1lbnNpb25zIGluY3JlYXNlIGJ5IDEweDEwLgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvcmVtb3ZlLXRhcmdldC13aXRoLXNoYWRvdy1pbi1kcmFnLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZW1vdmUtdGFyZ2V0LXdpdGgt
c2hhZG93LWluLWRyYWctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTE5MjApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9yZW1vdmUtdGFyZ2V0LXdpdGgtc2hhZG93LWluLWRyYWctZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMyBAQAotQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDM1OiBOb3RGb3VuZEVycm9yOiBET00gRXhjZXB0aW9uIDg6IEFuIGF0dGVtcHQgd2FzIG1h
ZGUgdG8gcmVmZXJlbmNlIGEgTm9kZSBpbiBhIGNvbnRleHQgd2hlcmUgaXQgZG9lcyBub3QgZXhp
c3QuCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMzU6IE5vdEZvdW5kRXJyb3I6IERPTSBFeGNlcHRp
b24gODogQW4gYXR0ZW1wdCB3YXMgbWFkZSB0byByZWZlcmVuY2UgYSBOb2RlIGluIGEgY29udGV4
dCB3aGVyZSBpdCBkb2VzIG5vdCBleGlzdC4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAzNDogTm90
Rm91bmRFcnJvcjogRE9NIEV4Y2VwdGlvbiA4OiBBbiBhdHRlbXB0IHdhcyBtYWRlIHRvIHJlZmVy
ZW5jZSBhIE5vZGUgaW4gYSBjb250ZXh0IHdoZXJlIGl0IGRvZXMgbm90IGV4aXN0LgorQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDM0OiBOb3RGb3VuZEVycm9yOiBET00gRXhjZXB0aW9uIDg6IEFuIGF0
dGVtcHQgd2FzIG1hZGUgdG8gcmVmZXJlbmNlIGEgTm9kZSBpbiBhIGNvbnRleHQgd2hlcmUgaXQg
ZG9lcyBub3QgZXhpc3QuCiBQQVNTLiBEUlQgZGlkbid0IGNyYXNoLgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9qcy9saW5lLWNvbHVtbi1udW1iZXJzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2pzL2xpbmUtY29sdW1uLW51bWJlcnMtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9saW5lLWNvbHVtbi1udW1iZXJzLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4OSBAQAorVGhpcyB0ZXN0IGNo
ZWNrcyBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycyBpbiBzdGFjayB0cmFjZXMgZm9yIGNvcnJlY3Ru
ZXNzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworLS0+IENhc2UgMSBTdGFjayBU
cmFjZToKKyAgICAwICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjQw
OjM2CisKKy0tPiBDYXNlIDIgU3RhY2sgVHJhY2U6CisgICAgMCAgIGdsb2JhbCBjb2RlIGF0IGxp
bmUtY29sdW1uLW51bWJlcnMuaHRtbDo0NDo0MAorCistLT4gQ2FzZSAzIFN0YWNrIFRyYWNlOgor
ICAgIDAgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmh0bWw6NDg6MzIKKwor
LS0+IENhc2UgMyBTdGFjayBUcmFjZToKKyAgICAwICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1
bW4tbnVtYmVycy5odG1sOjQ4OjExMworCistLT4gQ2FzZSA0IFN0YWNrIFRyYWNlOgorICAgIDAg
ICBkb1Rocm93NCBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmh0bWw6NTQ6NDQKKyAgICAxICAgZ2xv
YmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjU1OjEzCisKKy0tPiBDYXNlIDUg
U3RhY2sgVHJhY2U6CisgICAgMCAgIGlubmVyRnVuYyBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmh0
bWw6NjQ6NjkKKyAgICAxICAgZG9UaHJvdzUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjY0
OjgyCisgICAgMiAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDo2NDox
MzMKKworLS0+IENhc2UgNiBTdGFjayBUcmFjZToKKyAgICAwICAgaW5uZXJGdW5jIGF0IGxpbmUt
Y29sdW1uLW51bWJlcnMuaHRtbDo3MDo2OQorICAgIDEgICBkb1Rocm93NiBhdCBsaW5lLWNvbHVt
bi1udW1iZXJzLmh0bWw6NzA6ODIKKyAgICAyICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4t
bnVtYmVycy5odG1sOjcwOjEzMworCistLT4gQ2FzZSA3IFN0YWNrIFRyYWNlOgorICAgIDAgICAg
YXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjc1OjUxCisgICAgMSAgIGdsb2JhbCBjb2RlIGF0
IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDo3NTo1NQorCistLT4gQ2FzZSA4IFN0YWNrIFRyYWNl
OgorICAgIDAgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjc4OjU5CisgICAgMSAgIGds
b2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDo3ODo2MworCistLT4gQ2FzZSA5
IFN0YWNrIFRyYWNlOgorICAgIDAgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjgyOjU1
CisgICAgMSAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDo4Mjo1OQor
CistLT4gQ2FzZSA5IFN0YWNrIFRyYWNlOgorICAgIDAgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVy
cy5odG1sOjgyOjE1NworICAgIDEgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJz
Lmh0bWw6ODI6MTYxCisKKy0tPiBDYXNlIDEwIFN0YWNrIFRyYWNlOgorICAgIDAgICAgYXQgbGlu
ZS1jb2x1bW4tbnVtYmVycy5odG1sOjg5OjI2CisgICAgMSAgIGdsb2JhbCBjb2RlIGF0IGxpbmUt
Y29sdW1uLW51bWJlcnMuaHRtbDo5MDo4CisKKy0tPiBDYXNlIDExIFN0YWNrIFRyYWNlOgorICAg
IDAgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjEwMTo0MQorICAgIDEgICBkb1Rocm93
MTEgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjEwMTo0NQorICAgIDIgICBnbG9iYWwgY29k
ZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmh0bWw6MTAzOjE0CisKKy0tPiBDYXNlIDEyIFN0YWNr
IFRyYWNlOgorICAgIDAgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjExMjo1MworICAg
IDEgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjExMjo1NworICAgIDIgICBnbG9iYWwg
Y29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmh0bWw6MTEyOjYyCisKKy0tPiBDYXNlIDEzIFN0
YWNrIFRyYWNlOgorICAgIDAgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjExODo1Mwor
ICAgIDEgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjExODo1NworICAgIDIgICBnbG9i
YWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmh0bWw6MTE4OjYyCisKKy0tPiBDYXNlIDE0
IFN0YWNrIFRyYWNlOgorICAgIDAgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjEyNDo3
NgorICAgIDEgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjEyNDo4MAorICAgIDIgICBk
b1Rocm93MTQgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjEyNDo4NQorICAgIDMgICBnbG9i
YWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmh0bWw6MTI0Ojk5CisKKy0tPiBDYXNlIDE1
IFN0YWNrIFRyYWNlOgorICAgIDAgICAgYXQgZXZhbCBjb2RlCisgICAgMSAgIGV2YWwgYXQgW25h
dGl2ZSBjb2RlXQorICAgIDIgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmh0
bWw6MTMwOjUKKworLS0+IENhc2UgMTYgU3RhY2sgVHJhY2U6CisgICAgMCAgICBhdCBkb1Rocm93
MTYKKyAgICAxICAgIGF0IGV2YWwgY29kZQorICAgIDIgICBldmFsIGF0IFtuYXRpdmUgY29kZV0K
KyAgICAzICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5odG1sOjEzNjo1CisK
Ky0tPiBDYXNlIDE3IFN0YWNrIFRyYWNlOgorICAgIDAgICAgYXQgCisgICAgMSAgICBhdCBldmFs
IGNvZGUKKyAgICAyICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCisgICAgMyAgIGdsb2JhbCBjb2Rl
IGF0IGxpbmUtY29sdW1uLW51bWJlcnMuaHRtbDoxNDk6NQorCistLT4gQ2FzZSAxOCBTdGFjayBU
cmFjZToKKyAgICAwICAgIGF0IAorICAgIDEgICAgYXQgZXZhbCBjb2RlCisgICAgMiAgIGV2YWwg
YXQgW25hdGl2ZSBjb2RlXQorICAgIDMgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1i
ZXJzLmh0bWw6MTU1OjUKKworLS0+IENhc2UgMSBTdGFjayBUcmFjZToKKyAgICAwICAgZ2xvYmFs
IGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5qczozOjI4CisKKy0tPiBDYXNlIDIgU3RhY2sg
VHJhY2U6CisgICAgMCAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuanM6Nzoz
MgorCistLT4gQ2FzZSAzIFN0YWNrIFRyYWNlOgorICAgIDAgICBnbG9iYWwgY29kZSBhdCBsaW5l
LWNvbHVtbi1udW1iZXJzLmpzOjExOjI0CisKKy0tPiBDYXNlIDMgU3RhY2sgVHJhY2U6CisgICAg
MCAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuanM6MTE6ODgKKworLS0+IENh
c2UgNCBTdGFjayBUcmFjZToKKyAgICAwICAgZG9UaHJvdzRiIGF0IGxpbmUtY29sdW1uLW51bWJl
cnMuanM6MTY6NDUKKyAgICAxICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5q
czoxNzoxNAorCistLT4gQ2FzZSA1IFN0YWNrIFRyYWNlOgorICAgIDAgICBpbm5lckZ1bmMgYXQg
bGluZS1jb2x1bW4tbnVtYmVycy5qczoyNDo3MAorICAgIDEgICBkb1Rocm93NWIgYXQgbGluZS1j
b2x1bW4tbnVtYmVycy5qczoyNDo4MworICAgIDIgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVt
bi1udW1iZXJzLmpzOjI0OjEzNQorCistLT4gQ2FzZSA2IFN0YWNrIFRyYWNlOgorICAgIDAgICBp
bm5lckZ1bmMgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5qczoyODo3MAorICAgIDEgICBkb1Rocm93
NmIgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5qczoyODo4MworICAgIDIgICBnbG9iYWwgY29kZSBh
dCBsaW5lLWNvbHVtbi1udW1iZXJzLmpzOjI4OjEzNQorCistLT4gQ2FzZSA3IFN0YWNrIFRyYWNl
OgorICAgIDAgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5qczozMjo0MworICAgIDEgICBnbG9i
YWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmpzOjMyOjQ3CisKKy0tPiBDYXNlIDggU3Rh
Y2sgVHJhY2U6CisgICAgMCAgICBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmpzOjM2OjQ3CisgICAg
MSAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuanM6MzY6NTEKKworLS0+IENh
c2UgOSBTdGFjayBUcmFjZToKKyAgICAwICAgIGF0IGxpbmUtY29sdW1uLW51bWJlcnMuanM6NDA6
MzkKKyAgICAxICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5qczo0MDo0Mwor
CistLT4gQ2FzZSA5IFN0YWNrIFRyYWNlOgorICAgIDAgICAgYXQgbGluZS1jb2x1bW4tbnVtYmVy
cy5qczo0MDoxMjQKKyAgICAxICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5q
czo0MDoxMjgKKworLS0+IENhc2UgMTAgU3RhY2sgVHJhY2U6CisgICAgMCAgICBhdCBsaW5lLWNv
bHVtbi1udW1iZXJzLmpzOjQ2OjI2CisgICAgMSAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1u
LW51bWJlcnMuanM6NDc6OAorCistLT4gQ2FzZSAxMSBTdGFjayBUcmFjZToKKyAgICAwICAgIGF0
IGxpbmUtY29sdW1uLW51bWJlcnMuanM6NTY6NDEKKyAgICAxICAgZG9UaHJvdzExYiBhdCBsaW5l
LWNvbHVtbi1udW1iZXJzLmpzOjU2OjQ1CisgICAgMiAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29s
dW1uLW51bWJlcnMuanM6NTg6MTUKKworLS0+IENhc2UgMTIgU3RhY2sgVHJhY2U6CisgICAgMCAg
ICBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmpzOjY1OjUzCisgICAgMSAgICBhdCBsaW5lLWNvbHVt
bi1udW1iZXJzLmpzOjY1OjU3CisgICAgMiAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51
bWJlcnMuanM6NjU6NjIKKworLS0+IENhc2UgMTMgU3RhY2sgVHJhY2U6CisgICAgMCAgICBhdCBs
aW5lLWNvbHVtbi1udW1iZXJzLmpzOjY5OjUzCisgICAgMSAgICBhdCBsaW5lLWNvbHVtbi1udW1i
ZXJzLmpzOjY5OjU3CisgICAgMiAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1uLW51bWJlcnMu
anM6Njk6NjIKKworLS0+IENhc2UgMTQgU3RhY2sgVHJhY2U6CisgICAgMCAgICBhdCBsaW5lLWNv
bHVtbi1udW1iZXJzLmpzOjczOjc3CisgICAgMSAgICBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmpz
OjczOjgxCisgICAgMiAgIGRvVGhyb3cxNGIgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5qczo3Mzo4
NgorICAgIDMgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmpzOjczOjEwMQor
CistLT4gQ2FzZSAxNSBTdGFjayBUcmFjZToKKyAgICAwICAgIGF0IGV2YWwgY29kZQorICAgIDEg
ICBldmFsIGF0IFtuYXRpdmUgY29kZV0KKyAgICAyICAgZ2xvYmFsIGNvZGUgYXQgbGluZS1jb2x1
bW4tbnVtYmVycy5qczo3Nzo1CisKKy0tPiBDYXNlIDE2IFN0YWNrIFRyYWNlOgorICAgIDAgICAg
YXQgZG9UaHJvdzE1YgorICAgIDEgICAgYXQgZXZhbCBjb2RlCisgICAgMiAgIGV2YWwgYXQgW25h
dGl2ZSBjb2RlXQorICAgIDMgICBnbG9iYWwgY29kZSBhdCBsaW5lLWNvbHVtbi1udW1iZXJzLmpz
OjgxOjUKKworLS0+IENhc2UgMTcgU3RhY2sgVHJhY2U6CisgICAgMCAgICBhdCAKKyAgICAxICAg
IGF0IGV2YWwgY29kZQorICAgIDIgICBldmFsIGF0IFtuYXRpdmUgY29kZV0KKyAgICAzICAgZ2xv
YmFsIGNvZGUgYXQgbGluZS1jb2x1bW4tbnVtYmVycy5qczo5Mjo1CisKKy0tPiBDYXNlIDE4IFN0
YWNrIFRyYWNlOgorICAgIDAgICAgYXQgCisgICAgMSAgICBhdCBldmFsIGNvZGUKKyAgICAyICAg
ZXZhbCBhdCBbbmF0aXZlIGNvZGVdCisgICAgMyAgIGdsb2JhbCBjb2RlIGF0IGxpbmUtY29sdW1u
LW51bWJlcnMuanM6OTY6NQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9saW5lLWNvbHVtbi1udW1i
ZXJzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9saW5lLWNvbHVtbi1u
dW1iZXJzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2xpbmUtY29s
dW1uLW51bWJlcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3MCBAQAorPGh0bWw+
Cis8aGVhZD4KKwk8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyI+CisJPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKwk8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKwk8cCBp
ZD0iY29uc29sZSI+PC9wPgorCis8c2NyaXB0PgoraWYgKCF0aGlzLmFsZXJ0KSB7CisgICAgZGVi
dWcgPSBwcmludDsKKyAgICBkZXNjcmlwdGlvbiA9IHByaW50OworfQorCitkZXNjcmlwdGlvbigK
KydUaGlzIHRlc3QgY2hlY2tzIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzIGluIHN0YWNrIHRyYWNl
cyBmb3IgY29ycmVjdG5lc3MuJworKTsKKwordGVzdElkID0gMDsKK2Z1bmN0aW9uIHByaW50U3Rh
Y2soc3RhY2tUcmFjZSkgeworICAgIGRlYnVnKCItLT4gQ2FzZSAiICsgdGVzdElkICsgIiBTdGFj
ayBUcmFjZToiKQorICAgIHN0YWNrVHJhY2UgPSBzdGFja1RyYWNlLnNwbGl0KCJcbiIpOworICAg
IHZhciBsZW5ndGggPSBNYXRoLm1pbihzdGFja1RyYWNlLmxlbmd0aCwgMTAwKTsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIHZhciBpbmRleE9mQXQgPSBz
dGFja1RyYWNlW2ldLmluZGV4T2YoJ0AnKQorICAgICAgICB2YXIgaW5kZXhPZkxhc3RTbGFzaCA9
IHN0YWNrVHJhY2VbaV0ubGFzdEluZGV4T2YoJy8nKTsKKyAgICAgICAgaWYgKGluZGV4T2ZMYXN0
U2xhc2ggPT0gLTEpCisgICAgICAgICAgICBpbmRleE9mTGFzdFNsYXNoID0gaW5kZXhPZkF0Cisg
ICAgICAgIHZhciBmdW5jdGlvbk5hbWUgPSBzdGFja1RyYWNlW2ldLnN1YnN0cmluZygwLCBpbmRl
eE9mQXQpOworICAgICAgICB2YXIgZmlsZU5hbWUgPSBzdGFja1RyYWNlW2ldLnN1YnN0cmluZyhp
bmRleE9mTGFzdFNsYXNoICsgMSk7CisgICAgICAgIGRlYnVnKCIgICAgIiArIGkgKyAiICAgIiAr
IGZ1bmN0aW9uTmFtZSArICIgYXQgIiArIGZpbGVOYW1lKTsKKyAgICB9CisgICAgZGVidWcoJycp
OworfQorPC9zY3JpcHQ+CisKKzwhLS0gQ2FzZSAxOiBUaHJvdyBhbmQgcHJpbnQgc3RhY2s6IC0t
PgorPHNjcmlwdD50ZXN0SWQrKzs8L3NjcmlwdD4KKyAgICA8c2NyaXB0PnRyeSB7IHRocm93IG5l
dyBFcnJvcigpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH08L3NjcmlwdD4K
KworPCEtLSBDYXNlIDI6IFNhbWUgcHJvZ3JhbSBhcyBDYXNlIDEgYnV0IGluZGVudGVkLiAtLT4K
KzxzY3JpcHQ+dGVzdElkKys7PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+dHJ5IHsgdGhyb3cg
bmV3IEVycm9yKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLnN0YWNrKTsgfTwvc2NyaXB0
PgorCis8IS0tIENhc2UgMzogU2FtZSBwcm9ncmFtIGluZGVudGVkIG9uIHRoZSBzYW1lIGxpbmUu
IC0tPgorPHNjcmlwdD50ZXN0SWQrKzs8L3NjcmlwdD4KKzxzY3JpcHQ+dHJ5IHsgdGhyb3cgbmV3
IEVycm9yKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLnN0YWNrKTsgfTwvc2NyaXB0PiAg
IDxzY3JpcHQ+dHJ5IHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFj
ayhlLnN0YWNrKTsgfTwvc2NyaXB0PgorCis8IS0tIENhc2UgNDogVGhyb3cgaW5zaWRlIGEgRnVu
Y3Rpb24uIC0tPgorPHNjcmlwdD50ZXN0SWQrKzs8L3NjcmlwdD4KKzxzY3JpcHQ+Cit0cnkgewor
ICAgIGZ1bmN0aW9uIGRvVGhyb3c0KCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfQorICAgIGRvVGhy
b3c0KCk7Cit9IGNhdGNoKGUpIHsKKyAgICBwcmludFN0YWNrKGUuc3RhY2spOworfQorPC9zY3Jp
cHQ+CisKKzwhLS0gQ2FzZSA1OiBGdW5jdGlvbiB3cmFwcGluZyBhIEZ1bmN0aW9uLiAtLT4KKzxz
Y3JpcHQ+dGVzdElkKys7PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gZG9UaHJvdzUoKSB7
IHRyeSB7IGZ1bmN0aW9uIGlubmVyRnVuYygpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gaW5uZXJG
dW5jKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLnN0YWNrKTsgfX07IGRvVGhyb3c1KCk7
Cis8L3NjcmlwdD4KKworPCEtLSBDYXNlIDY6IFNhbWUgaW5uZXIgZnVuY3Rpb24gYm9keSBhcyBD
YXNlIDUuIC0tPgorPHNjcmlwdD50ZXN0SWQrKzs8L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlv
biBkb1Rocm93NigpIHsgdHJ5IHsgZnVuY3Rpb24gaW5uZXJGdW5jKCkgeyB0aHJvdyBuZXcgRXJy
b3IoKTsgfSBpbm5lckZ1bmMoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuc3RhY2spOyB9
fTsgZG9UaHJvdzYoKTsKKzwvc2NyaXB0PgorCis8IS0tIENhc2UgNzogQ2FzZSAxIHJlZG9uZSB3
aXRoIGEgRnVuY3Rpb24gRXhwcmVzc2lvbi4gLS0+Cis8c2NyaXB0PnRlc3RJZCsrOzwvc2NyaXB0
PgorICAgIDxzY3JpcHQ+dHJ5IHsgKGZ1bmN0aW9uICgpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0p
KCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLnN0YWNrKTsgfTwvc2NyaXB0PgorPCEtLSBD
YXNlIDg6IENhc2UgMiByZWRvbmUgd2l0aCBhIEZ1bmN0aW9uIEV4cHJlc3Npb24uIC0tPgorPHNj
cmlwdD50ZXN0SWQrKzs8L3NjcmlwdD4KKyAgICAgICAgICAgIDxzY3JpcHQ+dHJ5IHsgKGZ1bmN0
aW9uICgpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0pKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFj
ayhlLnN0YWNrKTsgfTwvc2NyaXB0PgorCis8IS0tIENhc2UgOTogQ2FzZSAzIHJlZG9uZSB3aXRo
IGEgRnVuY3Rpb24gRXhwcmVzc2lvbi4gLS0+Cis8c2NyaXB0PnRlc3RJZCsrOzwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PnRyeSB7IChmdW5jdGlvbiAoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9
KSgpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH08L3NjcmlwdD4gICA8c2Ny
aXB0PnRyeSB7IChmdW5jdGlvbiAoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9KSgpOyB9IGNhdGNo
IChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH08L3NjcmlwdD4KKworPCEtLSBDYXNlIDEwOiBG
dW5jdGlvbiBFeHByZXNzaW9uIGFzIG11bHRpcGxlIGxpbmVzLiAtLT4KKzxzY3JpcHQ+dGVzdElk
Kys7PC9zY3JpcHQ+Cis8c2NyaXB0PgordHJ5IHsKKyAgICAoZnVuY3Rpb24gKCkgeworICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoKTsKKyAgICAgfSkoKTsKK30gY2F0Y2goZSkgeworICAgIHByaW50
U3RhY2soZS5zdGFjayk7Cit9Cis8L3NjcmlwdD4KKworPCEtLSBDYXNlIDExOiBDYXNlIDQgcmVk
b25lIHdpdGggYSBGdW5jdGlvbiB3cmFwcGluZyBGdW5jdGlvbiBFeHByZXNzaW9uLiAtLT4KKzxz
Y3JpcHQ+dGVzdElkKys7PC9zY3JpcHQ+Cis8c2NyaXB0PgordHJ5IHsKKyAgICBmdW5jdGlvbiBk
b1Rocm93MTEoKSB7CisgICAgICAgIChmdW5jdGlvbiAoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9
KSgpOworICAgIH0KKyAgICBkb1Rocm93MTEoKTsKK30gY2F0Y2goZSkgeworICAgIHByaW50U3Rh
Y2soZS5zdGFjayk7Cit9Cis8L3NjcmlwdD4KKworPCEtLSBDYXNlIDEyOiBBIEZ1bmN0aW9uIEV4
cHJlc3Npb24gd3JhcHBpbmcgYSBGdW5jdGlvbiBFeHByZXNzaW9uLiAtLT4KKzxzY3JpcHQ+dGVz
dElkKys7PC9zY3JpcHQ+Cis8c2NyaXB0PgordHJ5IHsgKGZ1bmN0aW9uICgpIHsoZnVuY3Rpb24g
KCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSkoKTt9KSgpOyB9IGNhdGNoIChlKSB7IHByaW50U3Rh
Y2soZS5zdGFjayk7IH0KKzwvc2NyaXB0PgorCis8IS0tIENhc2UgMTM6IFNhbWUgZnVuY3Rpb24g
Ym9keSBhcyBDYXNlIDEyLiAtLT4KKzxzY3JpcHQ+dGVzdElkKys7PC9zY3JpcHQ+Cis8c2NyaXB0
PgordHJ5IHsgKGZ1bmN0aW9uICgpIHsoZnVuY3Rpb24gKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsg
fSkoKTt9KSgpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH0KKzwvc2NyaXB0
PgorCis8IS0tIENhc2UgMTQ6IEZ1bmN0aW9uIEV4cHJlc3Npb24gaW4gYSBGdW5jdGlvbiBFeHBy
ZXNzaW9uIGluIGEgRnVuY3Rpb24uIC0tPgorPHNjcmlwdD50ZXN0SWQrKzs8L3NjcmlwdD4KKzxz
Y3JpcHQ+Cit0cnkgeyBmdW5jdGlvbiBkb1Rocm93MTQoKSB7KGZ1bmN0aW9uICgpIHsgKGZ1bmN0
aW9uICgpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0pKCk7fSkoKTt9IGRvVGhyb3cxNCgpOyB9IGNh
dGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH0KKzwvc2NyaXB0PgorCis8IS0tIENhc2Ug
MTU6IFRocm93IGluIGFuIEV2YWwuIC0tPgorPHNjcmlwdD50ZXN0SWQrKzs8L3NjcmlwdD4KKzxz
Y3JpcHQ+CitldmFsKCJ0cnkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSBjYXRjaChlKSB7IHByaW50
U3RhY2soZS5zdGFjayk7IH0iKTsKKzwvc2NyaXB0PgorCis8IS0tIENhc2UgMTY6IE11bHRpcGxl
IGxpbmVzIGluIGFuIEV2YWwuIC0tPgorPHNjcmlwdD50ZXN0SWQrKzs8L3NjcmlwdD4KKzxzY3Jp
cHQ+CitldmFsKCJcbiIgKworInRyeSB7XG4iICsKKyIgICAgZnVuY3Rpb24gZG9UaHJvdzE2KCkg
e3Rocm93IG5ldyBFcnJvcigpO31cbiIgKworIiAgICBkb1Rocm93MTYoKTtcbiIgKworIn0gY2F0
Y2goZSkge1xuIiArCisiICAgIHByaW50U3RhY2soZS5zdGFjayk7XG4iICsKKyJ9XG4iICsKKyIi
KTsKKzwvc2NyaXB0PgorCis8IS0tIENhc2UgMTc6IEZ1bmN0aW9uIEV4cHJlc3Npb24gaW4gYW4g
RXZhbC4gLS0+Cis8c2NyaXB0PnRlc3RJZCsrOzwvc2NyaXB0PgorPHNjcmlwdD4KK2V2YWwoInRy
eSB7IChmdW5jdGlvbiAoKSB7IHRocm93IG5ldyBFcnJvcigpO30pKCk7IH0gY2F0Y2goZSkgeyBw
cmludFN0YWNrKGUuc3RhY2spOyB9Iik7Cis8L3NjcmlwdD4KKworPCEtLSBDYXNlIDE4OiBNdWx0
aXBsZSBsaW5lcyB3aXRoIGEgRnVuY3Rpb24gRXhwcmVzc2lvbiBpbiBhbiBFdmFsLiAtLT4KKzxz
Y3JpcHQ+dGVzdElkKys7PC9zY3JpcHQ+Cis8c2NyaXB0PgorZXZhbCgiXG4iICsKKyJ0cnkge1xu
IiArCisiICAgIChmdW5jdGlvbiAoKSB7IHRocm93IG5ldyBFcnJvcigpO30pKCk7XG4iICsKKyJ9
IGNhdGNoKGUpIHtcbiIgKworIiAgICBwcmludFN0YWNrKGUuc3RhY2spO1xuIiArCisifVxuIiAr
CisiIik7Cis8L3NjcmlwdD4KKworPCEtLSBOb3cgZG8gaXQgYWxsIG92ZXIgd2l0aCBhIGxvYWRl
ZCBzY3JpcHQgZmlsZS4gLS0+Cis8c2NyaXB0PnRlc3RJZCA9IDA7PC9zY3JpcHQ+CisJPHNjcmlw
dCBzcmM9InNjcmlwdC10ZXN0cy9saW5lLWNvbHVtbi1udW1iZXJzLmpzIj48L3NjcmlwdD4KKwor
CTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvc3RhY2stdHJhY2UtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvc3RhY2stdHJhY2UtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAxNTE5MjApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3N0YWNr
LXRyYWNlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw0NjEgKzQsNDYxIEBAIE9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEEKIAogCiAtLT4gU3RhY2sgVHJh
Y2U6Ci0gICAgMCAgIG5vcm1hbElubmVyIGF0IHN0YWNrLXRyYWNlLmpzOjMxOjQ2Ci0gICAgMSAg
IG5vcm1hbE91dGVyIGF0IHN0YWNrLXRyYWNlLmpzOjMwOjM2Ci0gICAgMiAgIGdsb2JhbCBjb2Rl
IGF0IHN0YWNrLXRyYWNlLmpzOjM2OjE3CisgICAgMCAgIG5vcm1hbElubmVyIGF0IHN0YWNrLXRy
YWNlLmpzOjMxOjQ3CisgICAgMSAgIG5vcm1hbE91dGVyIGF0IHN0YWNrLXRyYWNlLmpzOjMwOjM3
CisgICAgMiAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjM2OjE4CiAKIC0tPiBTdGFj
ayBUcmFjZToKLSAgICAwICAgaW5uZXIgYXQgc3RhY2stdHJhY2UuanM6Mjg6NjgKKyAgICAwICAg
aW5uZXIgYXQgc3RhY2stdHJhY2UuanM6Mjg6NjkKICAgICAxICAgIGF0IGV2YWwgY29kZQogICAg
IDIgICBldmFsIGF0IFtuYXRpdmUgY29kZV0KLSAgICAzICAgZXZhbGVyIGF0IHN0YWNrLXRyYWNl
LmpzOjI5OjI4Ci0gICAgNCAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjM5OjEyCisg
ICAgMyAgIGV2YWxlciBhdCBzdGFjay10cmFjZS5qczoyOToyOQorICAgIDQgICBnbG9iYWwgY29k
ZSBhdCBzdGFjay10cmFjZS5qczozOToxMwogCiAtLT4gU3RhY2sgVHJhY2U6Ci0gICAgMCAgIGlu
bmVyIGF0IHN0YWNrLXRyYWNlLmpzOjI4OjY4Ci0gICAgMSAgIG91dGVyIGF0IHN0YWNrLXRyYWNl
LmpzOjI3OjMzCisgICAgMCAgIGlubmVyIGF0IHN0YWNrLXRyYWNlLmpzOjI4OjY5CisgICAgMSAg
IG91dGVyIGF0IHN0YWNrLXRyYWNlLmpzOjI3OjM0CiAgICAgMiAgICBhdCBldmFsIGNvZGUKICAg
ICAzICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgNCAgIGV2YWxlciBhdCBzdGFjay10cmFj
ZS5qczoyOToyOAotICAgIDUgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczo0MDoxMgor
ICAgIDQgICBldmFsZXIgYXQgc3RhY2stdHJhY2UuanM6Mjk6MjkKKyAgICA1ICAgZ2xvYmFsIGNv
ZGUgYXQgc3RhY2stdHJhY2UuanM6NDA6MTMKIAogLS0+IFN0YWNrIFRyYWNlOgotICAgIDAgICBp
bm5lciBhdCBzdGFjay10cmFjZS5qczoyODo2OAotICAgIDEgICBnbG9iYWwgY29kZSBhdCBzdGFj
ay10cmFjZS5qczo0MzoyMgorICAgIDAgICBpbm5lciBhdCBzdGFjay10cmFjZS5qczoyODo2OQor
ICAgIDEgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczo0MzoyMwogCiAtLT4gU3RhY2sg
VHJhY2U6Ci0gICAgMCAgIGlubmVyIGF0IHN0YWNrLXRyYWNlLmpzOjI4OjY4Ci0gICAgMSAgIG91
dGVyIGF0IHN0YWNrLXRyYWNlLmpzOjI3OjMzCi0gICAgMiAgIGdsb2JhbCBjb2RlIGF0IHN0YWNr
LXRyYWNlLmpzOjQ0OjIyCisgICAgMCAgIGlubmVyIGF0IHN0YWNrLXRyYWNlLmpzOjI4OjY5Cisg
ICAgMSAgIG91dGVyIGF0IHN0YWNrLXRyYWNlLmpzOjI3OjM0CisgICAgMiAgIGdsb2JhbCBjb2Rl
IGF0IHN0YWNrLXRyYWNlLmpzOjQ0OjIzCiAKIC0tPiBTdGFjayBUcmFjZToKICAgICAwICAgYXBw
ZW5kQ2hpbGQgYXQgW25hdGl2ZSBjb2RlXQotICAgIDEgICBob3N0VGhyb3dlciBhdCBzdGFjay10
cmFjZS5qczoyNTo1OQotICAgIDIgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczo0Nzox
NworICAgIDEgICBob3N0VGhyb3dlciBhdCBzdGFjay10cmFjZS5qczoyNTo2MAorICAgIDIgICBn
bG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczo0NzoxOAogCiAtLT4gU3RhY2sgVHJhY2U6Ci0g
ICAgMCAgIGh0bWxJbm5lciBhdCBzdGFjay10cmFjZS5odG1sOjEwOjU1Ci0gICAgMSAgIHNjcmlw
dGVySW5uZXIgYXQgc3RhY2stdHJhY2UuanM6MzI6MzYKLSAgICAyICAgZ2xvYmFsIGNvZGUgYXQg
c3RhY2stdHJhY2UuanM6NDk6MTkKLQotLS0+IFN0YWNrIFRyYWNlOgotICAgIDAgICBodG1sSW5u
ZXIgYXQgc3RhY2stdHJhY2UuaHRtbDoxMDo1NQotICAgIDEgICBodG1sT3V0ZXIgYXQgc3RhY2st
dHJhY2UuaHRtbDoxMTozMgotICAgIDIgICBzY3JpcHRlck91dGVyIGF0IHN0YWNrLXRyYWNlLmpz
OjMzOjM2Ci0gICAgMyAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjUwOjE5Ci0KLS0t
PiBTdGFjayBUcmFjZToKLSAgICAwICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6
NTI6NDIKLSAgICAxICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAg
ICAyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICAzICAgc2Vs
ZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA0ICAgc2VsZlJlY3Vyc2l2
ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA1ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3Rh
Y2stdHJhY2UuanM6NTI6NDIKLSAgICA2ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2Uu
anM6NTI6NDIKLSAgICA3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIK
LSAgICA4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA5ICAg
c2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICAxMCAgIHNlbGZSZWN1
cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgMTEgICBzZWxmUmVjdXJzaXZlMSBh
dCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDEyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2st
dHJhY2UuanM6NTI6NDIKLSAgICAxMyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpz
OjUyOjQyCi0gICAgMTQgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0Mgot
ICAgIDE1ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICAxNiAg
IHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgMTcgICBzZWxmUmVj
dXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDE4ICAgc2VsZlJlY3Vyc2l2ZTEg
YXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICAxOSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNr
LXRyYWNlLmpzOjUyOjQyCi0gICAgMjAgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5q
czo1Mjo0MgotICAgIDIxICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIK
LSAgICAyMiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgMjMg
ICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDI0ICAgc2VsZlJl
Y3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICAyNSAgIHNlbGZSZWN1cnNpdmUx
IGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgMjYgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFj
ay10cmFjZS5qczo1Mjo0MgotICAgIDI3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2Uu
anM6NTI6NDIKLSAgICAyOCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQy
Ci0gICAgMjkgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDMw
ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICAzMSAgIHNlbGZS
ZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgMzIgICBzZWxmUmVjdXJzaXZl
MSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDMzICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3Rh
Y2stdHJhY2UuanM6NTI6NDIKLSAgICAzNCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNl
LmpzOjUyOjQyCi0gICAgMzUgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0
MgotICAgIDM2ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICAz
NyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgMzggICBzZWxm
UmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDM5ICAgc2VsZlJlY3Vyc2l2
ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA0MCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0
YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNDEgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFj
ZS5qczo1Mjo0MgotICAgIDQyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6
NDIKLSAgICA0MyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAg
NDQgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDQ1ICAgc2Vs
ZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA0NiAgIHNlbGZSZWN1cnNp
dmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNDcgICBzZWxmUmVjdXJzaXZlMSBhdCBz
dGFjay10cmFjZS5qczo1Mjo0MgotICAgIDQ4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJh
Y2UuanM6NTI6NDIKLSAgICA0OSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUy
OjQyCi0gICAgNTAgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAg
IDUxICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA1MiAgIHNl
bGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNTMgICBzZWxmUmVjdXJz
aXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDU0ICAgc2VsZlJlY3Vyc2l2ZTEgYXQg
c3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA1NSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRy
YWNlLmpzOjUyOjQyCi0gICAgNTYgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1
Mjo0MgotICAgIDU3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAg
ICA1OCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNTkgICBz
ZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDYwICAgc2VsZlJlY3Vy
c2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA2MSAgIHNlbGZSZWN1cnNpdmUxIGF0
IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNjIgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10
cmFjZS5qczo1Mjo0MgotICAgIDYzICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6
NTI6NDIKLSAgICA2NCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0g
ICAgNjUgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDY2ICAg
c2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA2NyAgIHNlbGZSZWN1
cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNjggICBzZWxmUmVjdXJzaXZlMSBh
dCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDY5ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2st
dHJhY2UuanM6NTI6NDIKLSAgICA3MCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpz
OjUyOjQyCi0gICAgNzEgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0Mgot
ICAgIDcyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA3MyAg
IHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgNzQgICBzZWxmUmVj
dXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDc1ICAgc2VsZlJlY3Vyc2l2ZTEg
YXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA3NiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNr
LXRyYWNlLmpzOjUyOjQyCi0gICAgNzcgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5q
czo1Mjo0MgotICAgIDc4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIK
LSAgICA3OSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgODAg
ICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDgxICAgc2VsZlJl
Y3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA4MiAgIHNlbGZSZWN1cnNpdmUx
IGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgODMgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFj
ay10cmFjZS5qczo1Mjo0MgotICAgIDg0ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2Uu
anM6NTI6NDIKLSAgICA4NSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQy
Ci0gICAgODYgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDg3
ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA4OCAgIHNlbGZS
ZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgODkgICBzZWxmUmVjdXJzaXZl
MSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDkwICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3Rh
Y2stdHJhY2UuanM6NTI6NDIKLSAgICA5MSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNl
LmpzOjUyOjQyCi0gICAgOTIgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0
MgotICAgIDkzICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA5
NCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgOTUgICBzZWxm
UmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MgotICAgIDk2ICAgc2VsZlJlY3Vyc2l2
ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDIKLSAgICA5NyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0
YWNrLXRyYWNlLmpzOjUyOjQyCi0gICAgOTggICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFj
ZS5qczo1Mjo0MgotICAgIDk5ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6
NDIKLQotLS0+IFN0YWNrIFRyYWNlOgotICAgIDAgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10
cmFjZS5qczo2MjoyNgotICAgIDEgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2
MjoyNgotICAgIDIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAg
IDMgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDQgICBzZWxm
UmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDUgICBzZWxmUmVjdXJzaXZl
MiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDYgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFj
ay10cmFjZS5qczo2MjoyNgotICAgIDcgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5q
czo2MjoyNgotICAgIDggICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgot
ICAgIDkgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDEwICAg
c2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICAxMSAgIHNlbGZSZWN1
cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgMTIgICBzZWxmUmVjdXJzaXZlMiBh
dCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDEzICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2st
dHJhY2UuanM6NjI6MjYKLSAgICAxNCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpz
OjYyOjI2Ci0gICAgMTUgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgot
ICAgIDE2ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICAxNyAg
IHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgMTggICBzZWxmUmVj
dXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDE5ICAgc2VsZlJlY3Vyc2l2ZTIg
YXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICAyMCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNr
LXRyYWNlLmpzOjYyOjI2Ci0gICAgMjEgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5q
czo2MjoyNgotICAgIDIyICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYK
LSAgICAyMyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgMjQg
ICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDI1ICAgc2VsZlJl
Y3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICAyNiAgIHNlbGZSZWN1cnNpdmUy
IGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgMjcgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFj
ay10cmFjZS5qczo2MjoyNgotICAgIDI4ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2Uu
anM6NjI6MjYKLSAgICAyOSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2
Ci0gICAgMzAgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDMx
ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICAzMiAgIHNlbGZS
ZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgMzMgICBzZWxmUmVjdXJzaXZl
MiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDM0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3Rh
Y2stdHJhY2UuanM6NjI6MjYKLSAgICAzNSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNl
LmpzOjYyOjI2Ci0gICAgMzYgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2Mjoy
NgotICAgIDM3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICAz
OCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgMzkgICBzZWxm
UmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDQwICAgc2VsZlJlY3Vyc2l2
ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA0MSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0
YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNDIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFj
ZS5qczo2MjoyNgotICAgIDQzICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6
MjYKLSAgICA0NCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAg
NDUgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDQ2ICAgc2Vs
ZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA0NyAgIHNlbGZSZWN1cnNp
dmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNDggICBzZWxmUmVjdXJzaXZlMiBhdCBz
dGFjay10cmFjZS5qczo2MjoyNgotICAgIDQ5ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJh
Y2UuanM6NjI6MjYKLSAgICA1MCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYy
OjI2Ci0gICAgNTEgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAg
IDUyICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA1MyAgIHNl
bGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNTQgICBzZWxmUmVjdXJz
aXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDU1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQg
c3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA1NiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRy
YWNlLmpzOjYyOjI2Ci0gICAgNTcgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2
MjoyNgotICAgIDU4ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAg
ICA1OSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNjAgICBz
ZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDYxICAgc2VsZlJlY3Vy
c2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA2MiAgIHNlbGZSZWN1cnNpdmUyIGF0
IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNjMgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10
cmFjZS5qczo2MjoyNgotICAgIDY0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6
NjI6MjYKLSAgICA2NSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0g
ICAgNjYgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDY3ICAg
c2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA2OCAgIHNlbGZSZWN1
cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNjkgICBzZWxmUmVjdXJzaXZlMiBh
dCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDcwICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2st
dHJhY2UuanM6NjI6MjYKLSAgICA3MSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpz
OjYyOjI2Ci0gICAgNzIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgot
ICAgIDczICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA3NCAg
IHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgNzUgICBzZWxmUmVj
dXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDc2ICAgc2VsZlJlY3Vyc2l2ZTIg
YXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA3NyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNr
LXRyYWNlLmpzOjYyOjI2Ci0gICAgNzggICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5q
czo2MjoyNgotICAgIDc5ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYK
LSAgICA4MCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgODEg
ICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDgyICAgc2VsZlJl
Y3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA4MyAgIHNlbGZSZWN1cnNpdmUy
IGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgODQgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFj
ay10cmFjZS5qczo2MjoyNgotICAgIDg1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2Uu
anM6NjI6MjYKLSAgICA4NiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2
Ci0gICAgODcgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDg4
ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA4OSAgIHNlbGZS
ZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgOTAgICBzZWxmUmVjdXJzaXZl
MiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDkxICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3Rh
Y2stdHJhY2UuanM6NjI6MjYKLSAgICA5MiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNl
LmpzOjYyOjI2Ci0gICAgOTMgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2Mjoy
NgotICAgIDk0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA5
NSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgOTYgICBzZWxm
UmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNgotICAgIDk3ICAgc2VsZlJlY3Vyc2l2
ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjYKLSAgICA5OCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0
YWNrLXRyYWNlLmpzOjYyOjI2Ci0gICAgOTkgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFj
ZS5qczo2MjoyNgorICAgIDAgICBodG1sSW5uZXIgYXQgc3RhY2stdHJhY2UuaHRtbDoxMDo1Ngor
ICAgIDEgICBzY3JpcHRlcklubmVyIGF0IHN0YWNrLXRyYWNlLmpzOjMyOjM3CisgICAgMiAgIGds
b2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjQ5OjIwCisKKy0tPiBTdGFjayBUcmFjZToKKyAg
ICAwICAgaHRtbElubmVyIGF0IHN0YWNrLXRyYWNlLmh0bWw6MTA6NTYKKyAgICAxICAgaHRtbE91
dGVyIGF0IHN0YWNrLXRyYWNlLmh0bWw6MTE6MzMKKyAgICAyICAgc2NyaXB0ZXJPdXRlciBhdCBz
dGFjay10cmFjZS5qczozMzozNworICAgIDMgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5q
czo1MDoyMAorCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0
YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgMSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNl
LmpzOjUyOjQzCisgICAgMiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQz
CisgICAgMyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNCAg
IHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNSAgIHNlbGZSZWN1
cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNiAgIHNlbGZSZWN1cnNpdmUxIGF0
IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRy
YWNlLmpzOjUyOjQzCisgICAgOCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUy
OjQzCisgICAgOSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAg
MTAgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDExICAgc2Vs
ZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICAxMiAgIHNlbGZSZWN1cnNp
dmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgMTMgICBzZWxmUmVjdXJzaXZlMSBhdCBz
dGFjay10cmFjZS5qczo1Mjo0MworICAgIDE0ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJh
Y2UuanM6NTI6NDMKKyAgICAxNSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUy
OjQzCisgICAgMTYgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAg
IDE3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICAxOCAgIHNl
bGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgMTkgICBzZWxmUmVjdXJz
aXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDIwICAgc2VsZlJlY3Vyc2l2ZTEgYXQg
c3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICAyMSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRy
YWNlLmpzOjUyOjQzCisgICAgMjIgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1
Mjo0MworICAgIDIzICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAg
ICAyNCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgMjUgICBz
ZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDI2ICAgc2VsZlJlY3Vy
c2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICAyNyAgIHNlbGZSZWN1cnNpdmUxIGF0
IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgMjggICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10
cmFjZS5qczo1Mjo0MworICAgIDI5ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6
NTI6NDMKKyAgICAzMCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisg
ICAgMzEgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDMyICAg
c2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICAzMyAgIHNlbGZSZWN1
cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgMzQgICBzZWxmUmVjdXJzaXZlMSBh
dCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDM1ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2st
dHJhY2UuanM6NTI6NDMKKyAgICAzNiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpz
OjUyOjQzCisgICAgMzcgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0Mwor
ICAgIDM4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICAzOSAg
IHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNDAgICBzZWxmUmVj
dXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDQxICAgc2VsZlJlY3Vyc2l2ZTEg
YXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA0MiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNr
LXRyYWNlLmpzOjUyOjQzCisgICAgNDMgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5q
czo1Mjo0MworICAgIDQ0ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMK
KyAgICA0NSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNDYg
ICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDQ3ICAgc2VsZlJl
Y3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA0OCAgIHNlbGZSZWN1cnNpdmUx
IGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNDkgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFj
ay10cmFjZS5qczo1Mjo0MworICAgIDUwICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2Uu
anM6NTI6NDMKKyAgICA1MSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQz
CisgICAgNTIgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDUz
ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA1NCAgIHNlbGZS
ZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNTUgICBzZWxmUmVjdXJzaXZl
MSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDU2ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3Rh
Y2stdHJhY2UuanM6NTI6NDMKKyAgICA1NyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNl
LmpzOjUyOjQzCisgICAgNTggICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0
MworICAgIDU5ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA2
MCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNjEgICBzZWxm
UmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDYyICAgc2VsZlJlY3Vyc2l2
ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA2MyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0
YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNjQgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFj
ZS5qczo1Mjo0MworICAgIDY1ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6
NDMKKyAgICA2NiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAg
NjcgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDY4ICAgc2Vs
ZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA2OSAgIHNlbGZSZWN1cnNp
dmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNzAgICBzZWxmUmVjdXJzaXZlMSBhdCBz
dGFjay10cmFjZS5qczo1Mjo0MworICAgIDcxICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJh
Y2UuanM6NTI6NDMKKyAgICA3MiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUy
OjQzCisgICAgNzMgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAg
IDc0ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA3NSAgIHNl
bGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgNzYgICBzZWxmUmVjdXJz
aXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDc3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQg
c3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA3OCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRy
YWNlLmpzOjUyOjQzCisgICAgNzkgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1
Mjo0MworICAgIDgwICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAg
ICA4MSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgODIgICBz
ZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDgzICAgc2VsZlJlY3Vy
c2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA4NCAgIHNlbGZSZWN1cnNpdmUxIGF0
IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgODUgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10
cmFjZS5qczo1Mjo0MworICAgIDg2ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6
NTI6NDMKKyAgICA4NyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisg
ICAgODggICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDg5ICAg
c2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA5MCAgIHNlbGZSZWN1
cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgOTEgICBzZWxmUmVjdXJzaXZlMSBh
dCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDkyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2st
dHJhY2UuanM6NTI6NDMKKyAgICA5MyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpz
OjUyOjQzCisgICAgOTQgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0Mwor
ICAgIDk1ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA5NiAg
IHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUyOjQzCisgICAgOTcgICBzZWxmUmVj
dXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mjo0MworICAgIDk4ICAgc2VsZlJlY3Vyc2l2ZTEg
YXQgc3RhY2stdHJhY2UuanM6NTI6NDMKKyAgICA5OSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNr
LXRyYWNlLmpzOjUyOjQzCisKKy0tPiBTdGFjayBUcmFjZToKKyAgICAwICAgc2VsZlJlY3Vyc2l2
ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICAxICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3Rh
Y2stdHJhY2UuanM6NjI6MjcKKyAgICAyICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2Uu
anM6NjI6MjcKKyAgICAzICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcK
KyAgICA0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA1ICAg
c2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA2ICAgc2VsZlJlY3Vy
c2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQg
c3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA4ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJh
Y2UuanM6NjI6MjcKKyAgICA5ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6
MjcKKyAgICAxMCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAg
MTEgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDEyICAgc2Vs
ZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICAxMyAgIHNlbGZSZWN1cnNp
dmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgMTQgICBzZWxmUmVjdXJzaXZlMiBhdCBz
dGFjay10cmFjZS5qczo2MjoyNworICAgIDE1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJh
Y2UuanM6NjI6MjcKKyAgICAxNiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYy
OjI3CisgICAgMTcgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAg
IDE4ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICAxOSAgIHNl
bGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgMjAgICBzZWxmUmVjdXJz
aXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDIxICAgc2VsZlJlY3Vyc2l2ZTIgYXQg
c3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICAyMiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRy
YWNlLmpzOjYyOjI3CisgICAgMjMgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2
MjoyNworICAgIDI0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAg
ICAyNSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgMjYgICBz
ZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDI3ICAgc2VsZlJlY3Vy
c2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICAyOCAgIHNlbGZSZWN1cnNpdmUyIGF0
IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgMjkgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10
cmFjZS5qczo2MjoyNworICAgIDMwICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6
NjI6MjcKKyAgICAzMSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3Cisg
ICAgMzIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDMzICAg
c2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICAzNCAgIHNlbGZSZWN1
cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgMzUgICBzZWxmUmVjdXJzaXZlMiBh
dCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDM2ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2st
dHJhY2UuanM6NjI6MjcKKyAgICAzNyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpz
OjYyOjI3CisgICAgMzggICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNwor
ICAgIDM5ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA0MCAg
IHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNDEgICBzZWxmUmVj
dXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDQyICAgc2VsZlJlY3Vyc2l2ZTIg
YXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA0MyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNr
LXRyYWNlLmpzOjYyOjI3CisgICAgNDQgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5q
czo2MjoyNworICAgIDQ1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcK
KyAgICA0NiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNDcg
ICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDQ4ICAgc2VsZlJl
Y3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA0OSAgIHNlbGZSZWN1cnNpdmUy
IGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNTAgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFj
ay10cmFjZS5qczo2MjoyNworICAgIDUxICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2Uu
anM6NjI6MjcKKyAgICA1MiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3
CisgICAgNTMgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDU0
ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA1NSAgIHNlbGZS
ZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNTYgICBzZWxmUmVjdXJzaXZl
MiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDU3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3Rh
Y2stdHJhY2UuanM6NjI6MjcKKyAgICA1OCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNl
LmpzOjYyOjI3CisgICAgNTkgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2Mjoy
NworICAgIDYwICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA2
MSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNjIgICBzZWxm
UmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDYzICAgc2VsZlJlY3Vyc2l2
ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA2NCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0
YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNjUgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFj
ZS5qczo2MjoyNworICAgIDY2ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6
MjcKKyAgICA2NyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAg
NjggICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDY5ICAgc2Vs
ZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA3MCAgIHNlbGZSZWN1cnNp
dmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNzEgICBzZWxmUmVjdXJzaXZlMiBhdCBz
dGFjay10cmFjZS5qczo2MjoyNworICAgIDcyICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJh
Y2UuanM6NjI6MjcKKyAgICA3MyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYy
OjI3CisgICAgNzQgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAg
IDc1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA3NiAgIHNl
bGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgNzcgICBzZWxmUmVjdXJz
aXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDc4ICAgc2VsZlJlY3Vyc2l2ZTIgYXQg
c3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA3OSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRy
YWNlLmpzOjYyOjI3CisgICAgODAgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2
MjoyNworICAgIDgxICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAg
ICA4MiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgODMgICBz
ZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDg0ICAgc2VsZlJlY3Vy
c2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA4NSAgIHNlbGZSZWN1cnNpdmUyIGF0
IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgODYgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10
cmFjZS5qczo2MjoyNworICAgIDg3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6
NjI6MjcKKyAgICA4OCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3Cisg
ICAgODkgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDkwICAg
c2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA5MSAgIHNlbGZSZWN1
cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgOTIgICBzZWxmUmVjdXJzaXZlMiBh
dCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDkzICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2st
dHJhY2UuanM6NjI6MjcKKyAgICA5NCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpz
OjYyOjI3CisgICAgOTUgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNwor
ICAgIDk2ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjI6MjcKKyAgICA5NyAg
IHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyOjI3CisgICAgOTggICBzZWxmUmVj
dXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MjoyNworICAgIDk5ICAgc2VsZlJlY3Vyc2l2ZTIg
YXQgc3RhY2stdHJhY2UuanM6NjI6MjcKIAogLS0+IFN0YWNrIFRyYWNlOgogICAgIDAgICBldmFs
IGF0IFtuYXRpdmUgY29kZV0KLSAgICAxICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2Uu
anM6Njk6OAorICAgIDEgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo2OTo5CiAg
ICAgMiAgICBhdCBldmFsIGNvZGUKICAgICAzICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0gICAg
NCAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAgICA0ICAgc2VsZlJl
Y3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OQogICAgIDUgICAgYXQgZXZhbCBjb2RlCiAg
ICAgNiAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDcgICBzZWxmUmVjdXJzaXZlMyBhdCBz
dGFjay10cmFjZS5qczo2OTo4CisgICAgNyAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNl
LmpzOjY5OjkKICAgICA4ICAgIGF0IGV2YWwgY29kZQogICAgIDkgICBldmFsIGF0IFtuYXRpdmUg
Y29kZV0KLSAgICAxMCAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAg
ICAxMCAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICAxMSAgICBh
dCBldmFsIGNvZGUKICAgICAxMiAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDEzICAgc2Vs
ZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OAorICAgIDEzICAgc2VsZlJlY3Vyc2l2
ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OQogICAgIDE0ICAgIGF0IGV2YWwgY29kZQogICAgIDE1
ICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgMTYgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFj
ay10cmFjZS5qczo2OTo4CisgICAgMTYgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5q
czo2OTo5CiAgICAgMTcgICAgYXQgZXZhbCBjb2RlCiAgICAgMTggICBldmFsIGF0IFtuYXRpdmUg
Y29kZV0KLSAgICAxOSAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAg
ICAxOSAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICAyMCAgICBh
dCBldmFsIGNvZGUKICAgICAyMSAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDIyICAgc2Vs
ZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OAorICAgIDIyICAgc2VsZlJlY3Vyc2l2
ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OQogICAgIDIzICAgIGF0IGV2YWwgY29kZQogICAgIDI0
ICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgMjUgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFj
ay10cmFjZS5qczo2OTo4CisgICAgMjUgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5q
czo2OTo5CiAgICAgMjYgICAgYXQgZXZhbCBjb2RlCiAgICAgMjcgICBldmFsIGF0IFtuYXRpdmUg
Y29kZV0KLSAgICAyOCAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAg
ICAyOCAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICAyOSAgICBh
dCBldmFsIGNvZGUKICAgICAzMCAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDMxICAgc2Vs
ZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OAorICAgIDMxICAgc2VsZlJlY3Vyc2l2
ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OQogICAgIDMyICAgIGF0IGV2YWwgY29kZQogICAgIDMz
ICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgMzQgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFj
ay10cmFjZS5qczo2OTo4CisgICAgMzQgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5q
czo2OTo5CiAgICAgMzUgICAgYXQgZXZhbCBjb2RlCiAgICAgMzYgICBldmFsIGF0IFtuYXRpdmUg
Y29kZV0KLSAgICAzNyAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAg
ICAzNyAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICAzOCAgICBh
dCBldmFsIGNvZGUKICAgICAzOSAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDQwICAgc2Vs
ZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OAorICAgIDQwICAgc2VsZlJlY3Vyc2l2
ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OQogICAgIDQxICAgIGF0IGV2YWwgY29kZQogICAgIDQy
ICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgNDMgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFj
ay10cmFjZS5qczo2OTo4CisgICAgNDMgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5q
czo2OTo5CiAgICAgNDQgICAgYXQgZXZhbCBjb2RlCiAgICAgNDUgICBldmFsIGF0IFtuYXRpdmUg
Y29kZV0KLSAgICA0NiAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAg
ICA0NiAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA0NyAgICBh
dCBldmFsIGNvZGUKICAgICA0OCAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDQ5ICAgc2Vs
ZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OAorICAgIDQ5ICAgc2VsZlJlY3Vyc2l2
ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OQogICAgIDUwICAgIGF0IGV2YWwgY29kZQogICAgIDUx
ICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgNTIgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFj
ay10cmFjZS5qczo2OTo4CisgICAgNTIgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5q
czo2OTo5CiAgICAgNTMgICAgYXQgZXZhbCBjb2RlCiAgICAgNTQgICBldmFsIGF0IFtuYXRpdmUg
Y29kZV0KLSAgICA1NSAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAg
ICA1NSAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA1NiAgICBh
dCBldmFsIGNvZGUKICAgICA1NyAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDU4ICAgc2Vs
ZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OAorICAgIDU4ICAgc2VsZlJlY3Vyc2l2
ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OQogICAgIDU5ICAgIGF0IGV2YWwgY29kZQogICAgIDYw
ICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgNjEgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFj
ay10cmFjZS5qczo2OTo4CisgICAgNjEgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5q
czo2OTo5CiAgICAgNjIgICAgYXQgZXZhbCBjb2RlCiAgICAgNjMgICBldmFsIGF0IFtuYXRpdmUg
Y29kZV0KLSAgICA2NCAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAg
ICA2NCAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA2NSAgICBh
dCBldmFsIGNvZGUKICAgICA2NiAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDY3ICAgc2Vs
ZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OAorICAgIDY3ICAgc2VsZlJlY3Vyc2l2
ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OQogICAgIDY4ICAgIGF0IGV2YWwgY29kZQogICAgIDY5
ICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgNzAgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFj
ay10cmFjZS5qczo2OTo4CisgICAgNzAgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5q
czo2OTo5CiAgICAgNzEgICAgYXQgZXZhbCBjb2RlCiAgICAgNzIgICBldmFsIGF0IFtuYXRpdmUg
Y29kZV0KLSAgICA3MyAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAg
ICA3MyAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA3NCAgICBh
dCBldmFsIGNvZGUKICAgICA3NSAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDc2ICAgc2Vs
ZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OAorICAgIDc2ICAgc2VsZlJlY3Vyc2l2
ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OQogICAgIDc3ICAgIGF0IGV2YWwgY29kZQogICAgIDc4
ICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgNzkgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFj
ay10cmFjZS5qczo2OTo4CisgICAgNzkgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5q
czo2OTo5CiAgICAgODAgICAgYXQgZXZhbCBjb2RlCiAgICAgODEgICBldmFsIGF0IFtuYXRpdmUg
Y29kZV0KLSAgICA4MiAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAg
ICA4MiAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA4MyAgICBh
dCBldmFsIGNvZGUKICAgICA4NCAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDg1ICAgc2Vs
ZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OAorICAgIDg1ICAgc2VsZlJlY3Vyc2l2
ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OQogICAgIDg2ICAgIGF0IGV2YWwgY29kZQogICAgIDg3
ICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgODggICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFj
ay10cmFjZS5qczo2OTo4CisgICAgODggICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5q
czo2OTo5CiAgICAgODkgICAgYXQgZXZhbCBjb2RlCiAgICAgOTAgICBldmFsIGF0IFtuYXRpdmUg
Y29kZV0KLSAgICA5MSAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjgKKyAg
ICA5MSAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjY5OjkKICAgICA5MiAgICBh
dCBldmFsIGNvZGUKICAgICA5MyAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQotICAgIDk0ICAgc2Vs
ZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OAorICAgIDk0ICAgc2VsZlJlY3Vyc2l2
ZTMgYXQgc3RhY2stdHJhY2UuanM6Njk6OQogICAgIDk1ICAgIGF0IGV2YWwgY29kZQogICAgIDk2
ICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgOTcgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFj
ay10cmFjZS5qczo2OTo4CisgICAgOTcgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5q
czo2OTo5CiAgICAgOTggICAgYXQgZXZhbCBjb2RlCiAgICAgOTkgICBldmFsIGF0IFtuYXRpdmUg
Y29kZV0KIAogLS0+IFN0YWNrIFRyYWNlOgotICAgIDAgICB0aHJvd0Vycm9yIGF0IHN0YWNrLXRy
YWNlLmpzOjc3OjEyCi0gICAgMSAgIHZhbHVlT2YgYXQgc3RhY2stdHJhY2UuanM6ODQ6MjYKLSAg
ICAyICAgZ2V0dGVyMSBhdCBzdGFjay10cmFjZS5qczo4NzoxOAotICAgIDMgICBub25JbmxpbmVh
YmxlIGF0IHN0YWNrLXRyYWNlLmpzOjExMzoxNgotICAgIDQgICBpbmxpbmVhYmxlIGF0IHN0YWNr
LXRyYWNlLmpzOjEyMToyNgotICAgIDUgICB5ZXRBbm90aGVySW5saW5lZENhbGwgYXQgc3RhY2st
dHJhY2UuanM6MTI2OjE2Ci0gICAgNiAgIG1ha2VJbmxpbmFibGVDYWxsIGF0IHN0YWNrLXRyYWNl
LmpzOjEzMTozMwotICAgIDcgICBnIGF0IHN0YWNrLXRyYWNlLmpzOjE0MDozMworICAgIDAgICB0
aHJvd0Vycm9yIGF0IHN0YWNrLXRyYWNlLmpzOjc3OjEzCisgICAgMSAgIHZhbHVlT2YgYXQgc3Rh
Y2stdHJhY2UuanM6ODQ6MjcKKyAgICAyICAgZ2V0dGVyMSBhdCBzdGFjay10cmFjZS5qczo4Nzox
MQorICAgIDMgICBub25JbmxpbmVhYmxlIGF0IHN0YWNrLXRyYWNlLmpzOjExMzoxNworICAgIDQg
ICBpbmxpbmVhYmxlIGF0IHN0YWNrLXRyYWNlLmpzOjEyMToyNworICAgIDUgICB5ZXRBbm90aGVy
SW5saW5lZENhbGwgYXQgc3RhY2stdHJhY2UuanM6MTI2OjE3CisgICAgNiAgIG1ha2VJbmxpbmFi
bGVDYWxsIGF0IHN0YWNrLXRyYWNlLmpzOjEzMTozNAorICAgIDcgICBnIGF0IHN0YWNrLXRyYWNl
LmpzOjE0MDozNAogICAgIDggICBtYXAgYXQgW25hdGl2ZSBjb2RlXQotICAgIDkgICBnbG9iYWwg
Y29kZSBhdCBzdGFjay10cmFjZS5qczoxNDM6MTUKKyAgICA5ICAgZ2xvYmFsIGNvZGUgYXQgc3Rh
Y2stdHJhY2UuanM6MTQzOjE2CiAKIC0tPiBTdGFjayBUcmFjZToKLSAgICAwICAgdGhyb3dFcnJv
ciBhdCBzdGFjay10cmFjZS5qczo3NzoxMgotICAgIDEgICBnZXR0ZXIyIGF0IHN0YWNrLXRyYWNl
LmpzOjkzOjMxCi0gICAgMiAgIG5vbklubGluZWFibGUgYXQgc3RhY2stdHJhY2UuanM6MTE1OjE2
Ci0gICAgMyAgIGlubGluZWFibGUgYXQgc3RhY2stdHJhY2UuanM6MTIxOjI2Ci0gICAgNCAgIHll
dEFub3RoZXJJbmxpbmVkQ2FsbCBhdCBzdGFjay10cmFjZS5qczoxMjY6MTYKLSAgICA1ICAgbWFr
ZUlubGluYWJsZUNhbGwgYXQgc3RhY2stdHJhY2UuanM6MTMxOjMzCi0gICAgNiAgIGcgYXQgc3Rh
Y2stdHJhY2UuanM6MTQwOjMzCisgICAgMCAgIHRocm93RXJyb3IgYXQgc3RhY2stdHJhY2UuanM6
Nzc6MTMKKyAgICAxICAgZ2V0dGVyMiBhdCBzdGFjay10cmFjZS5qczo5MzoxMQorICAgIDIgICBu
b25JbmxpbmVhYmxlIGF0IHN0YWNrLXRyYWNlLmpzOjExNToxNworICAgIDMgICBpbmxpbmVhYmxl
IGF0IHN0YWNrLXRyYWNlLmpzOjEyMToyNworICAgIDQgICB5ZXRBbm90aGVySW5saW5lZENhbGwg
YXQgc3RhY2stdHJhY2UuanM6MTI2OjE3CisgICAgNSAgIG1ha2VJbmxpbmFibGVDYWxsIGF0IHN0
YWNrLXRyYWNlLmpzOjEzMTozNAorICAgIDYgICBnIGF0IHN0YWNrLXRyYWNlLmpzOjE0MDozNAog
ICAgIDcgICBtYXAgYXQgW25hdGl2ZSBjb2RlXQotICAgIDggICBnbG9iYWwgY29kZSBhdCBzdGFj
ay10cmFjZS5qczoxNDM6MTUKKyAgICA4ICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6
MTQzOjE2CiAKIC0tPiBTdGFjayBUcmFjZToKLSAgICAwICAgdGhyb3dFcnJvciBhdCBzdGFjay10
cmFjZS5qczo3NzoxMgotICAgIDEgICBnZXR0ZXIzIGF0IHN0YWNrLXRyYWNlLmpzOjEwNToyMQot
ICAgIDIgICBub25JbmxpbmVhYmxlIGF0IHN0YWNrLXRyYWNlLmpzOjExNzoxNgotICAgIDMgICBp
bmxpbmVhYmxlIGF0IHN0YWNrLXRyYWNlLmpzOjEyMToyNgotICAgIDQgICB5ZXRBbm90aGVySW5s
aW5lZENhbGwgYXQgc3RhY2stdHJhY2UuanM6MTI2OjE2Ci0gICAgNSAgIG1ha2VJbmxpbmFibGVD
YWxsIGF0IHN0YWNrLXRyYWNlLmpzOjEzMTozMwotICAgIDYgICBnIGF0IHN0YWNrLXRyYWNlLmpz
OjE0MDozMworICAgIDAgICB0aHJvd0Vycm9yIGF0IHN0YWNrLXRyYWNlLmpzOjc3OjEzCisgICAg
MSAgIGdldHRlcjMgYXQgc3RhY2stdHJhY2UuanM6MTA1OjE2CisgICAgMiAgIG5vbklubGluZWFi
bGUgYXQgc3RhY2stdHJhY2UuanM6MTE3OjE3CisgICAgMyAgIGlubGluZWFibGUgYXQgc3RhY2st
dHJhY2UuanM6MTIxOjI3CisgICAgNCAgIHlldEFub3RoZXJJbmxpbmVkQ2FsbCBhdCBzdGFjay10
cmFjZS5qczoxMjY6MTcKKyAgICA1ICAgbWFrZUlubGluYWJsZUNhbGwgYXQgc3RhY2stdHJhY2Uu
anM6MTMxOjM0CisgICAgNiAgIGcgYXQgc3RhY2stdHJhY2UuanM6MTQwOjM0CiAgICAgNyAgIG1h
cCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgOCAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpz
OjE0MzoxNQorICAgIDggICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczoxNDM6MTYKIAog
LS0+IFN0YWNrIFRyYWNlOgotICAgIDAgICB0aHJvd0Vycm9yIGF0IHN0YWNrLXRyYWNlLmpzOjc3
OjEyCi0gICAgMSAgIHZhbHVlT2YgYXQgc3RhY2stdHJhY2UuanM6MTAxOjI2Ci0gICAgMiAgIGdl
dHRlcjMgYXQgc3RhY2stdHJhY2UuanM6MTA3OjIxCi0gICAgMyAgIG5vbklubGluZWFibGUgYXQg
c3RhY2stdHJhY2UuanM6MTE3OjE2Ci0gICAgNCAgIGlubGluZWFibGUgYXQgc3RhY2stdHJhY2Uu
anM6MTIxOjI2Ci0gICAgNSAgIHlldEFub3RoZXJJbmxpbmVkQ2FsbCBhdCBzdGFjay10cmFjZS5q
czoxMjY6MTYKLSAgICA2ICAgbWFrZUlubGluYWJsZUNhbGwgYXQgc3RhY2stdHJhY2UuanM6MTMx
OjMzCi0gICAgNyAgIGcgYXQgc3RhY2stdHJhY2UuanM6MTQwOjMzCisgICAgMCAgIHRocm93RXJy
b3IgYXQgc3RhY2stdHJhY2UuanM6Nzc6MTMKKyAgICAxICAgdmFsdWVPZiBhdCBzdGFjay10cmFj
ZS5qczoxMDE6MjcKKyAgICAyICAgZ2V0dGVyMyBhdCBzdGFjay10cmFjZS5qczoxMDc6MTYKKyAg
ICAzICAgbm9uSW5saW5lYWJsZSBhdCBzdGFjay10cmFjZS5qczoxMTc6MTcKKyAgICA0ICAgaW5s
aW5lYWJsZSBhdCBzdGFjay10cmFjZS5qczoxMjE6MjcKKyAgICA1ICAgeWV0QW5vdGhlcklubGlu
ZWRDYWxsIGF0IHN0YWNrLXRyYWNlLmpzOjEyNjoxNworICAgIDYgICBtYWtlSW5saW5hYmxlQ2Fs
bCBhdCBzdGFjay10cmFjZS5qczoxMzE6MzQKKyAgICA3ICAgZyBhdCBzdGFjay10cmFjZS5qczox
NDA6MzQKICAgICA4ICAgbWFwIGF0IFtuYXRpdmUgY29kZV0KLSAgICA5ICAgZ2xvYmFsIGNvZGUg
YXQgc3RhY2stdHJhY2UuanM6MTQzOjE1CisgICAgOSAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRy
YWNlLmpzOjE0MzoxNgogCiAtLT4gU3RhY2sgVHJhY2U6Ci0gICAgMCAgIGggYXQgc3RhY2stdHJh
Y2UuanM6MTUxOjE2CisgICAgMCAgIGggYXQgc3RhY2stdHJhY2UuanM6MTUxOjE3CiAgICAgMSAg
IG1hcCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgMiAgIG1hcFRlc3QgYXQgc3RhY2stdHJhY2UuanM6
MTU4OjkKLSAgICAzICAgbWFwVGVzdERyaXZlciBhdCBzdGFjay10cmFjZS5qczoxNjQ6MTUKLSAg
ICA0ICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6MTY5OjE3CisgICAgMiAgIG1hcFRl
c3QgYXQgc3RhY2stdHJhY2UuanM6MTU4OjEwCisgICAgMyAgIG1hcFRlc3REcml2ZXIgYXQgc3Rh
Y2stdHJhY2UuanM6MTY0OjE2CisgICAgNCAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpz
OjE2OToxOAogCiAtLT4gU3RhY2sgVHJhY2U6CiAgICAgMCAgIG1hcCBhdCBbbmF0aXZlIGNvZGVd
Ci0gICAgMSAgIGggYXQgc3RhY2stdHJhY2UuanM6MTUzOjIwCisgICAgMSAgIGggYXQgc3RhY2st
dHJhY2UuanM6MTUzOjIxCiAgICAgMiAgIG1hcCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgMyAgIG1h
cFRlc3QgYXQgc3RhY2stdHJhY2UuanM6MTU4OjkKLSAgICA0ICAgbWFwVGVzdERyaXZlciBhdCBz
dGFjay10cmFjZS5qczoxNjQ6MTUKLSAgICA1ICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2Uu
anM6MTc1OjE3CisgICAgMyAgIG1hcFRlc3QgYXQgc3RhY2stdHJhY2UuanM6MTU4OjEwCisgICAg
NCAgIG1hcFRlc3REcml2ZXIgYXQgc3RhY2stdHJhY2UuanM6MTY0OjE2CisgICAgNSAgIGdsb2Jh
bCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjE3NToxOAogCiAtLT4gU3RhY2sgVHJhY2U6Ci0gICAg
MCAgIHRocm93RXJyb3IgYXQgc3RhY2stdHJhY2UuanM6Nzc6MTIKLSAgICAxICAgZGZnRnVuY3Rp
b24gYXQgc3RhY2stdHJhY2UuanM6MTg0OjE4CisgICAgMCAgIHRocm93RXJyb3IgYXQgc3RhY2st
dHJhY2UuanM6Nzc6MTMKKyAgICAxICAgZGZnRnVuY3Rpb24gYXQgc3RhY2stdHJhY2UuanM6MTg0
OjE5CiAgICAgMiAgIG1hcCBhdCBbbmF0aXZlIGNvZGVdCi0gICAgMyAgIGdsb2JhbCBjb2RlIGF0
IHN0YWNrLXRyYWNlLmpzOjE5MzoxNworICAgIDMgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFj
ZS5qczoxOTM6MTgKIAogLS0+IFN0YWNrIFRyYWNlOgotICAgIDAgICB0aHJvd0Vycm9yIGF0IHN0
YWNrLXRyYWNlLmpzOjc3OjEyCi0gICAgMSAgIGRmZ0Z1bmN0aW9uIGF0IHN0YWNrLXRyYWNlLmpz
OjE4NDoxOAotICAgIDIgICBmIGF0IHN0YWNrLXRyYWNlLmpzOjIwMjo5Ci0gICAgMyAgIGdsb2Jh
bCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjIwODo1Ci0KLS0tPiBTdGFjayBUcmFjZToKLSAgICAw
ICAgd2lsbFRocm93IGF0IHN0YWNrLXRyYWNlLmpzOjI0NjoyMAotICAgIDEgICBkZmcxIGF0IHN0
YWNrLXRyYWNlLmpzOjI1NzoxMgotICAgIDIgICBkZmcyIGF0IHN0YWNrLXRyYWNlLmpzOjI2MTo4
Ci0gICAgMyAgIGRmZzMgYXQgc3RhY2stdHJhY2UuanM6MjY1OjgKLSAgICA0ICAgZGZnVGVzdCBh
dCBzdGFjay10cmFjZS5qczoyMzE6MTMKLSAgICA1ICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJh
Y2UuanM6MzA0OjcKLQotLS0+IFN0YWNrIFRyYWNlOgotICAgIDAgICB3aWxsVGhyb3dGdW5jIGF0
IHN0YWNrLXRyYWNlLmpzOjI1MTo2MQotICAgIDEgICBkZmc0IGF0IHN0YWNrLXRyYWNlLmpzOjI2
OToyNgotICAgIDIgICBkZmc1IGF0IHN0YWNrLXRyYWNlLmpzOjI3Mzo4Ci0gICAgMyAgIGRmZzYg
YXQgc3RhY2stdHJhY2UuanM6Mjc3OjgKLSAgICA0ICAgZGZnVGVzdCBhdCBzdGFjay10cmFjZS5q
czoyMzE6MTMKLSAgICA1ICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6MzA1OjcKLQot
LS0+IFN0YWNrIFRyYWNlOgotICAgIDAgICBpbmxpbmVhYmxlVGhyb3cgYXQgc3RhY2stdHJhY2Uu
anM6MjQwOjMyCi0gICAgMSAgIHdpbGxUaHJvd0V2ZW50dWFsbHkgYXQgc3RhY2stdHJhY2UuanM6
MjQ5OjIzCi0gICAgMiAgIGRmZzcgYXQgc3RhY2stdHJhY2UuanM6MjgxOjEyCi0gICAgMyAgIGRm
ZzggYXQgc3RhY2stdHJhY2UuanM6Mjg1OjgKLSAgICA0ICAgZGZnOSBhdCBzdGFjay10cmFjZS5q
czoyODk6OAotICAgIDUgICBkZmdUZXN0IGF0IHN0YWNrLXRyYWNlLmpzOjIzMToxMwotICAgIDYg
ICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczozMDY6NwotCi0tLT4gU3RhY2sgVHJhY2U6
Ci0gICAgMCAgIGlubGluZWFibGVUaHJvdyBhdCBzdGFjay10cmFjZS5qczoyNDA6MzIKLSAgICAx
ICAgd2lsbFRocm93RXZlbnR1YWxseUZ1bmMgYXQgc3RhY2stdHJhY2UuanM6MjUyOjU4Ci0gICAg
MiAgIGRmZ2EgYXQgc3RhY2stdHJhY2UuanM6MjkzOjM2Ci0gICAgMyAgIGRmZ2IgYXQgc3RhY2st
dHJhY2UuanM6Mjk3OjgKLSAgICA0ICAgZGZnYyBhdCBzdGFjay10cmFjZS5qczozMDE6OAotICAg
IDUgICBkZmdUZXN0IGF0IHN0YWNrLXRyYWNlLmpzOjIzMToxMwotICAgIDYgICBnbG9iYWwgY29k
ZSBhdCBzdGFjay10cmFjZS5qczozMDc6NworICAgIDAgICB0aHJvd0Vycm9yIGF0IHN0YWNrLXRy
YWNlLmpzOjc3OjEzCisgICAgMSAgIGRmZ0Z1bmN0aW9uIGF0IHN0YWNrLXRyYWNlLmpzOjE4NDox
OQorICAgIDIgICBmIGF0IHN0YWNrLXRyYWNlLmpzOjIwMjoxMAorICAgIDMgICBnbG9iYWwgY29k
ZSBhdCBzdGFjay10cmFjZS5qczoyMDg6NgorCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIHdp
bGxUaHJvdyBhdCBzdGFjay10cmFjZS5qczoyNDY6MjEKKyAgICAxICAgZGZnMSBhdCBzdGFjay10
cmFjZS5qczoyNTc6MTMKKyAgICAyICAgZGZnMiBhdCBzdGFjay10cmFjZS5qczoyNjE6OQorICAg
IDMgICBkZmczIGF0IHN0YWNrLXRyYWNlLmpzOjI2NTo5CisgICAgNCAgIGRmZ1Rlc3QgYXQgc3Rh
Y2stdHJhY2UuanM6MjMxOjE0CisgICAgNSAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpz
OjMwNDo4CisKKy0tPiBTdGFjayBUcmFjZToKKyAgICAwICAgd2lsbFRocm93RnVuYyBhdCBzdGFj
ay10cmFjZS5qczoyNTE6NjIKKyAgICAxICAgZGZnNCBhdCBzdGFjay10cmFjZS5qczoyNjk6MjcK
KyAgICAyICAgZGZnNSBhdCBzdGFjay10cmFjZS5qczoyNzM6OQorICAgIDMgICBkZmc2IGF0IHN0
YWNrLXRyYWNlLmpzOjI3Nzo5CisgICAgNCAgIGRmZ1Rlc3QgYXQgc3RhY2stdHJhY2UuanM6MjMx
OjE0CisgICAgNSAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjMwNTo4CisKKy0tPiBT
dGFjayBUcmFjZToKKyAgICAwICAgaW5saW5lYWJsZVRocm93IGF0IHN0YWNrLXRyYWNlLmpzOjI0
MDozMworICAgIDEgICB3aWxsVGhyb3dFdmVudHVhbGx5IGF0IHN0YWNrLXRyYWNlLmpzOjI0OToy
NAorICAgIDIgICBkZmc3IGF0IHN0YWNrLXRyYWNlLmpzOjI4MToxMworICAgIDMgICBkZmc4IGF0
IHN0YWNrLXRyYWNlLmpzOjI4NTo5CisgICAgNCAgIGRmZzkgYXQgc3RhY2stdHJhY2UuanM6Mjg5
OjkKKyAgICA1ICAgZGZnVGVzdCBhdCBzdGFjay10cmFjZS5qczoyMzE6MTQKKyAgICA2ICAgZ2xv
YmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6MzA2OjgKKworLS0+IFN0YWNrIFRyYWNlOgorICAg
IDAgICBpbmxpbmVhYmxlVGhyb3cgYXQgc3RhY2stdHJhY2UuanM6MjQwOjMzCisgICAgMSAgIHdp
bGxUaHJvd0V2ZW50dWFsbHlGdW5jIGF0IHN0YWNrLXRyYWNlLmpzOjI1Mjo1OQorICAgIDIgICBk
ZmdhIGF0IHN0YWNrLXRyYWNlLmpzOjI5MzozNworICAgIDMgICBkZmdiIGF0IHN0YWNrLXRyYWNl
LmpzOjI5Nzo5CisgICAgNCAgIGRmZ2MgYXQgc3RhY2stdHJhY2UuanM6MzAxOjkKKyAgICA1ICAg
ZGZnVGVzdCBhdCBzdGFjay10cmFjZS5qczoyMzE6MTQKKyAgICA2ICAgZ2xvYmFsIGNvZGUgYXQg
c3RhY2stdHJhY2UuanM6MzA3OjgKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Njcmlw
dC10ZXN0cy9saW5lLWNvbHVtbi1udW1iZXJzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvanMvc2NyaXB0LXRlc3RzL2xpbmUtY29sdW1uLW51bWJlcnMuanMJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9saW5lLWNvbHVtbi1udW1iZXJz
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA0IEBACisvLyBDYXNlIDE6IFRocm93IGFu
ZCBwcmludCBzdGFjazoKK3Rlc3RJZCsrOworICAgIHRyeSB7IHRocm93IG5ldyBFcnJvcigpOyB9
IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH0KKworLy8gQ2FzZSAyOiBTYW1lIHBy
b2dyYW0gYXMgQ2FzZSAxIGJ1dCBpbmRlbnRlZC4KK3Rlc3RJZCsrOworICAgICAgICB0cnkgeyB0
aHJvdyBuZXcgRXJyb3IoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuc3RhY2spOyB9CisK
Ky8vIENhc2UgMzogU2FtZSBwcm9ncmFtIGluZGVudGVkIG9uIHRoZSBzYW1lIGxpbmUuCit0ZXN0
SWQrKzsKK3RyeSB7IHRocm93IG5ldyBFcnJvcigpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2so
ZS5zdGFjayk7IH0gICB0cnkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSBjYXRjaCAoZSkgeyBwcmlu
dFN0YWNrKGUuc3RhY2spOyB9CisKKy8vIENhc2UgNDogU3RhY2sgd2l0aCAyIGZ1bmN0aW9uIGZy
YW1lcy4KK3Rlc3RJZCsrOwordHJ5IHsKKyAgICBmdW5jdGlvbiBkb1Rocm93NGIoKSB7IHRocm93
IG5ldyBFcnJvcigpOyB9CisgICAgZG9UaHJvdzRiKCk7Cit9IGNhdGNoKGUpIHsKKyAgICBwcmlu
dFN0YWNrKGUuc3RhY2spOworfQorCisvLyBDYXNlIDU6IEZ1bmN0aW9uIHdyYXBwaW5nIGEgRnVu
Y3Rpb24uCit0ZXN0SWQrKzsKK2Z1bmN0aW9uIGRvVGhyb3c1YigpIHsgdHJ5IHsgZnVuY3Rpb24g
aW5uZXJGdW5jKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSBpbm5lckZ1bmMoKTsgfSBjYXRjaCAo
ZSkgeyBwcmludFN0YWNrKGUuc3RhY2spOyB9fTsgZG9UaHJvdzViKCk7CisKKy8vIENhc2UgNjog
U2FtZSBpbm5lciBmdW5jdGlvbiBib2R5IGFzIENhc2UgNS4KK3Rlc3RJZCsrOworZnVuY3Rpb24g
ZG9UaHJvdzZiKCkgeyB0cnkgeyBmdW5jdGlvbiBpbm5lckZ1bmMoKSB7IHRocm93IG5ldyBFcnJv
cigpOyB9IGlubmVyRnVuYygpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH19
OyBkb1Rocm93NmIoKTsKKworLy8gQ2FzZSA3OiBDYXNlIDEgcmVkb25lIHdpdGggYSBGdW5jdGlv
biBFeHByZXNzaW9uLgordGVzdElkKys7CisgICAgdHJ5IHsgKGZ1bmN0aW9uICgpIHsgdGhyb3cg
bmV3IEVycm9yKCk7IH0pKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLnN0YWNrKTsgfQor
CisvLyBDYXNlIDg6IENhc2UgMiByZWRvbmUgd2l0aCBhIEZ1bmN0aW9uIEV4cHJlc3Npb24uCit0
ZXN0SWQrKzsKKyAgICAgICAgdHJ5IHsgKGZ1bmN0aW9uICgpIHsgdGhyb3cgbmV3IEVycm9yKCk7
IH0pKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLnN0YWNrKTsgfQorCisvLyBDYXNlIDk6
IENhc2UgMyByZWRvbmUgd2l0aCBhIEZ1bmN0aW9uIEV4cHJlc3Npb24uCit0ZXN0SWQrKzsKK3Ry
eSB7IChmdW5jdGlvbiAoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9KSgpOyB9IGNhdGNoIChlKSB7
IHByaW50U3RhY2soZS5zdGFjayk7IH0gICB0cnkgeyAoZnVuY3Rpb24gKCkgeyB0aHJvdyBuZXcg
RXJyb3IoKTsgfSkoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuc3RhY2spOyB9CisKKy8v
IENhc2UgMTA6IEZ1bmN0aW9uIEV4cHJlc3Npb24gYXMgbXVsdGlwbGUgbGluZXMuCit0ZXN0SWQr
KzsKK3RyeSB7CisgICAgKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7
CisgICAgIH0pKCk7Cit9IGNhdGNoKGUpIHsKKyAgICBwcmludFN0YWNrKGUuc3RhY2spOworfQor
CisvLyBDYXNlIDExOiBDYXNlIDQgcmVkb25lIHdpdGggYSBGdW5jdGlvbiB3cmFwcGluZyBGdW5j
dGlvbiBFeHByZXNzaW9uLgordGVzdElkKys7Cit0cnkgeworICAgIGZ1bmN0aW9uIGRvVGhyb3cx
MWIoKSB7CisgICAgICAgIChmdW5jdGlvbiAoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9KSgpOwor
ICAgIH0KKyAgICBkb1Rocm93MTFiKCk7Cit9IGNhdGNoKGUpIHsKKyAgICBwcmludFN0YWNrKGUu
c3RhY2spOworfQorCisvLyBDYXNlIDEyOiBBIEZ1bmN0aW9uIEV4cHJlc3Npb24gd3JhcHBpbmcg
YSBGdW5jdGlvbiBFeHByZXNzaW9uLgordGVzdElkKys7Cit0cnkgeyAoZnVuY3Rpb24gKCkgeyhm
dW5jdGlvbiAoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9KSgpO30pKCk7IH0gY2F0Y2ggKGUpIHsg
cHJpbnRTdGFjayhlLnN0YWNrKTsgfQorCisvLyBDYXNlIDEzOiBTYW1lIGZ1bmN0aW9uIGJvZHkg
YXMgQ2FzZSAxMi4KK3Rlc3RJZCsrOwordHJ5IHsgKGZ1bmN0aW9uICgpIHsoZnVuY3Rpb24gKCkg
eyB0aHJvdyBuZXcgRXJyb3IoKTsgfSkoKTt9KSgpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2so
ZS5zdGFjayk7IH0KKworLy8gQ2FzZSAxNDogRnVuY3Rpb24gRXhwcmVzc2lvbiBpbiBhIEZ1bmN0
aW9uIEV4cHJlc3Npb24gaW4gYSBGdW5jdGlvbi4KK3Rlc3RJZCsrOwordHJ5IHsgZnVuY3Rpb24g
ZG9UaHJvdzE0YigpIHsoZnVuY3Rpb24gKCkgeyAoZnVuY3Rpb24gKCkgeyB0aHJvdyBuZXcgRXJy
b3IoKTsgfSkoKTt9KSgpO30gZG9UaHJvdzE0YigpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2so
ZS5zdGFjayk7IH0KKworLy8gQ2FzZSAxNTogVGhyb3cgaW4gYW4gRXZhbC4KK3Rlc3RJZCsrOwor
ZXZhbCgidHJ5IHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gY2F0Y2goZSkgeyBwcmludFN0YWNrKGUu
c3RhY2spOyB9Iik7CisKKy8vIENhc2UgMTY6IE11bHRpcGxlIGxpbmVzIGluIGFuIEV2YWwuCit0
ZXN0SWQrKzsKK2V2YWwoIlxuIiArCisidHJ5IHtcbiIgKworIiAgICBmdW5jdGlvbiBkb1Rocm93
MTViKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfVxuIiArCisiICAgIGRvVGhyb3cxNWIoKTtcbiIg
KworIn0gY2F0Y2goZSkge1xuIiArCisiICAgIHByaW50U3RhY2soZS5zdGFjayk7XG4iICsKKyJ9
XG4iICsKKyIiKTsKKworLy8gQ2FzZSAxNzogRnVuY3Rpb24gRXhwcmVzc2lvbiBpbiBhbiBFdmFs
LgordGVzdElkKys7CitldmFsKCJ0cnkgeyAoZnVuY3Rpb24gKCkgeyB0aHJvdyBuZXcgRXJyb3Io
KTsgfSkoKTsgfSBjYXRjaChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH0iKTsKKworLy8gQ2Fz
ZSAxODogTXVsdGlwbGUgbGluZXMgd2l0aCBhIEZ1bmN0aW9uIEV4cHJlc3Npb24gaW4gYW4gRXZh
bC4KK3Rlc3RJZCsrOworZXZhbCgiXG4iICsKKyJ0cnkge1xuIiArCisiICAgIChmdW5jdGlvbiAo
KSB7IHRocm93IG5ldyBFcnJvcigpOyB9KSgpO1xuIiArCisifSBjYXRjaChlKSB7XG4iICsKKyIg
ICAgcHJpbnRTdGFjayhlLnN0YWNrKTtcbiIgKworIn1cbiIgKworIiIpOworCitzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY29u
c29sZS11cmwtbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbnNvbGUtdXJsLWxpbmUtY29sdW1uLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMTUxOTIwKQorKysgTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY29u
c29sZS11cmwtbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC04LDEy
ICs4LDEyIEBAIENPTlNPTEUgTUVTU0FHRTogbGluZSAxNTogd2FybgogQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDE2OiBhc3NlcnQKIFRlc3RzIHRoYXQgdXJsLCBsaW5lLCBhbmQgY29sdW1uIHByb3Bl
cnRpZXMgYXJlIGRlZmluZWQgZm9yIGNvbnNvbGUgZnVuY3Rpb25zLgogCi1NZXNzYWdlIGF0IGxv
Y2F0aW9uOiBjb25zb2xlLXVybC1saW5lLWNvbHVtbi5odG1sOjk6MTUKLU1lc3NhZ2UgYXQgbG9j
YXRpb246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTA6MTUKLU1lc3NhZ2UgYXQgbG9j
YXRpb246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTE6MTUKLU1lc3NhZ2UgYXQgbG9j
YXRpb246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTQ6MTcKLU1lc3NhZ2UgYXQgbG9j
YXRpb246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTQ6MzkKLU1lc3NhZ2UgYXQgbG9j
YXRpb246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTU6MTYKLU1lc3NhZ2UgYXQgbG9j
YXRpb246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTU6MzgKLU1lc3NhZ2UgYXQgbG9j
YXRpb246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6MTY6MTgKK01lc3NhZ2UgYXQgbG9j
YXRpb246IGNvbnNvbGUtdXJsLWxpbmUtY29sdW1uLmh0bWw6OToxNgorTWVzc2FnZSBhdCBsb2Nh
dGlvbjogY29uc29sZS11cmwtbGluZS1jb2x1bW4uaHRtbDoxMDoxNgorTWVzc2FnZSBhdCBsb2Nh
dGlvbjogY29uc29sZS11cmwtbGluZS1jb2x1bW4uaHRtbDoxMToxNgorTWVzc2FnZSBhdCBsb2Nh
dGlvbjogY29uc29sZS11cmwtbGluZS1jb2x1bW4uaHRtbDoxNDoxOAorTWVzc2FnZSBhdCBsb2Nh
dGlvbjogY29uc29sZS11cmwtbGluZS1jb2x1bW4uaHRtbDoxNDo0MAorTWVzc2FnZSBhdCBsb2Nh
dGlvbjogY29uc29sZS11cmwtbGluZS1jb2x1bW4uaHRtbDoxNToxNworTWVzc2FnZSBhdCBsb2Nh
dGlvbjogY29uc29sZS11cmwtbGluZS1jb2x1bW4uaHRtbDoxNTozOQorTWVzc2FnZSBhdCBsb2Nh
dGlvbjogY29uc29sZS11cmwtbGluZS1jb2x1bW4uaHRtbDoxNjoxOQogCg==
</data>
<flag name="review"
          id="227966"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>