<?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>100801</bug_id>
          
          <creation_ts>2012-10-30 17:38:08 -0700</creation_ts>
          <short_desc>Remove the V8 custom code for WebSockets constructor</short_desc>
          <delta_ts>2012-11-26 05:40:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>73064</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tommy Widenflycht">tommyw</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>tasak</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>754830</commentid>
    <comment_count>0</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-10-30 17:38:08 -0700</bug_when>
    <thetext>This requires the following:

Modifying the code generators to support overloaded constructors

Modify WebSocket.h/.cpp for the new constructors

Modify WebSocket.h/.cpp/.idl for nor having custom code for the send method.
There is a FIXME in the idl regarding this and the simple solution is to have the send(DOMString) declaration last since it acts as a catch-all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754840</commentid>
    <comment_count>1</comment_count>
      <attachid>171561</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-10-30 17:53:46 -0700</bug_when>
    <thetext>Created attachment 171561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754841</commentid>
    <comment_count>2</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-10-30 17:56:17 -0700</bug_when>
    <thetext>Reviewers, this is a patch in progress but I would be happy if you could take a look  so that I am not doing something wrong. This is by far the most perl code I have ever written ever.

Things that I do know is missing:
CodeGeneratorJS.pm needs the same changes as CodeGeneratorV8.pm
Bindings tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754842</commentid>
    <comment_count>3</comment_count>
      <attachid>171561</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-30 17:58:34 -0700</bug_when>
    <thetext>Comment on attachment 171561
Patch

Attachment 171561 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14663057</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754843</commentid>
    <comment_count>4</comment_count>
      <attachid>171561</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-30 17:59:55 -0700</bug_when>
    <thetext>Comment on attachment 171561
Patch

Attachment 171561 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14664068</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754848</commentid>
    <comment_count>5</comment_count>
      <attachid>171561</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-30 18:15:34 -0700</bug_when>
    <thetext>Comment on attachment 171561
Patch

Attachment 171561 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14673001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754852</commentid>
    <comment_count>6</comment_count>
      <attachid>171561</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-30 18:17:57 -0700</bug_when>
    <thetext>Comment on attachment 171561
Patch

Attachment 171561 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14660068</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754910</commentid>
    <comment_count>7</comment_count>
      <attachid>171561</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-10-30 19:56:16 -0700</bug_when>
    <thetext>Comment on attachment 171561
Patch

Attachment 171561 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14693007</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754914</commentid>
    <comment_count>8</comment_count>
      <attachid>171561</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-30 20:14:08 -0700</bug_when>
    <thetext>Comment on attachment 171561
Patch

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

New failing tests:
storage/indexeddb/index-basics.html
storage/indexeddb/index-basics-workers.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754929</commentid>
    <comment_count>9</comment_count>
      <attachid>171561</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-30 21:10:14 -0700</bug_when>
    <thetext>Comment on attachment 171561
Patch

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

New failing tests:
storage/indexeddb/index-basics.html
storage/indexeddb/index-basics-workers.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755415</commentid>
    <comment_count>10</comment_count>
      <attachid>171561</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-31 10:13:59 -0700</bug_when>
    <thetext>Comment on attachment 171561
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1924
&gt; +    my $name = &quot;onstructor&quot;;

onstructor?  :)

It looks like $name is only used twice.  Perhaps we should just create a $overloadIndexString variable that is either the empty string or the stringification of the overload index.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755416</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-31 10:14:36 -0700</bug_when>
    <thetext>Looks like you&apos;ve got some compile issues (and a couple test failures) to work through.  It would be good for haraken to review this patch once you&apos;ve gotten green EWS bubbles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755595</commentid>
    <comment_count>12</comment_count>
      <attachid>171712</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-10-31 13:41:39 -0700</bug_when>
    <thetext>Created attachment 171712
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755596</commentid>
    <comment_count>13</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-10-31 13:42:47 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 171561 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171561&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1924
&gt; &gt; +    my $name = &quot;onstructor&quot;;
&gt; 
&gt; onstructor?  :)
&gt; 
&gt; It looks like $name is only used twice.  Perhaps we should just create a $overloadIndexString variable that is either the empty string or the stringification of the overload index.

Yeah! :) Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755597</commentid>
    <comment_count>14</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-10-31 13:43:55 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Reviewers, this is a patch in progress but I would be happy if you could take a look  so that I am not doing something wrong. This is by far the most perl code I have ever written ever.
&gt; 
&gt; Things that I do know is missing:
&gt; CodeGeneratorJS.pm needs the same changes as CodeGeneratorV8.pm
&gt; Bindings tests

CodeGeneratorJS.pm will get the changes in an followup patch, for now I have made sure it works with the IDLParser changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755600</commentid>
    <comment_count>15</comment_count>
      <attachid>171712</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-31 13:50:43 -0700</bug_when>
    <thetext>Comment on attachment 171712
Patch

Attachment 171712 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14670242</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755601</commentid>
    <comment_count>16</comment_count>
      <attachid>171712</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-31 13:51:05 -0700</bug_when>
    <thetext>Comment on attachment 171712
Patch

Attachment 171712 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14685337</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755606</commentid>
    <comment_count>17</comment_count>
      <attachid>171712</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-10-31 14:03:11 -0700</bug_when>
    <thetext>Comment on attachment 171712
Patch

Attachment 171712 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14678258</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755609</commentid>
    <comment_count>18</comment_count>
      <attachid>171717</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-10-31 14:08:53 -0700</bug_when>
    <thetext>Created attachment 171717
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755668</commentid>
    <comment_count>19</comment_count>
      <attachid>171717</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-31 15:19:06 -0700</bug_when>
    <thetext>Comment on attachment 171717
Patch

Attachment 171717 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14693268

New failing tests:
fast/js/constructor-length.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755725</commentid>
    <comment_count>20</comment_count>
      <attachid>171741</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-10-31 16:49:18 -0700</bug_when>
    <thetext>Created attachment 171741
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755726</commentid>
    <comment_count>21</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-10-31 16:50:40 -0700</bug_when>
    <thetext>I have now added a bindings test and the generated output from than makes up the size difference between the previous patch and this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755727</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-31 16:52:23 -0700</bug_when>
    <thetext>Attachment 171741 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/bindings/scripts/test/V8/V8TestOverloadedConstructors.h:61:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/ObjC/DOMTestOverloadedConstructorsInternal.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h:58:  More than one command on the same line in if  [whitespace/parens] [4]
Total errors found: 3 in 22 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>755728</commentid>
    <comment_count>23</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-10-31 16:56:47 -0700</bug_when>
    <thetext>FYI all the style failures are in the generated bindings test code.

(In reply to comment #22)
&gt; Attachment 171741 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
&gt; Source/WebCore/bindings/scripts/test/V8/V8TestOverloadedConstructors.h:61:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
&gt; Source/WebCore/bindings/scripts/test/ObjC/DOMTestOverloadedConstructorsInternal.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
&gt; Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h:58:  More than one command on the same line in if  [whitespace/parens] [4]
&gt; Total errors found: 3 in 22 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755902</commentid>
    <comment_count>24</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-31 22:56:09 -0700</bug_when>
    <thetext>@haraken: Any interest in reviewing this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755924</commentid>
    <comment_count>25</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-31 23:27:38 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; @haraken: Any interest in reviewing this patch?

Sure. Will take a look in hours.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756036</commentid>
    <comment_count>26</comment_count>
      <attachid>171741</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-01 03:22:29 -0700</bug_when>
    <thetext>Comment on attachment 171741
Patch

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

Looks great to remove custom bindings!

&gt; Source/WebCore/ChangeLog:15
&gt; +        2) Modifies WebSocket.h/.cpp for the new constructors.
&gt; +
&gt; +        3) Modifies WebSocket.h/.cpp/.idl to not have custom code for the send method.

The patch is a bit too big to review. Can you split a patch for constructors from a patch for send()?

Below, I&apos;m commenting on the constructors part.

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:178
&gt; +    if (url.isNull()) {
&gt; +        ec = SYNTAX_ERR;
&gt; +        return 0;
&gt; +    }

This has been throwing throwError(SyntaxError, &quot;Empty URL&quot;) before this patch. SYNTAX_ERR is a DOM exception, which is different from a SyntaxError, which is a JavaScript error.

If there is no test for this behavior, please add a test.

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:194
&gt; +    if (!protocol.isNull())
&gt; +        protocols.append(protocol);

This check has not been done before this patch.

If there is no test for this behavior, please add a test.

&gt; Source/WebCore/Modules/websockets/WebSocket.idl:43
&gt; +    JSConstructorParameters=1,

Let&apos;s use [ConstructorParameters=1] as is, without introducing [JSConstructorParameters]. Having a [ConstructorParameters=X] IDL attribute is not a problem even for non-custom constructors (unless V8 and JSC want to implement constructors that have a different number of parameters).

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3724
&gt; +    # FIXME: Add support for overloaded constructors to jS as well.

Nit: jS =&gt; JS

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3733
&gt;      if (!defined $numberOfConstructorParameters) {
&gt; +        $numberOfConstructorParameters = $dataNode-&gt;extendedAttributes-&gt;{&quot;JSConstructorParameters&quot;};
&gt; +    }

As mentioned above, I don&apos;t want to introduce [JSConstructorParameters].

&gt; Source/WebCore/bindings/scripts/IDLAttributes.txt:64
&gt; +JSConstructorParameters=*

As mentioned above, we want to remove it.

&gt; Source/WebCore/bindings/scripts/IDLParser.pm:2409
&gt; +    if (defined $extendedAttributeList-&gt;{&quot;Constructors&quot;}) {
&gt; +        my @constructorParams = @{$extendedAttributeList-&gt;{&quot;Constructors&quot;}};
&gt; +        my $index = (@constructorParams == 1) ? 0 : 1;
&gt; +        foreach my $param (@constructorParams) {
&gt; +            my $constructor = new domFunction();
&gt; +            $constructor-&gt;signature(new domSignature());
&gt; +            $constructor-&gt;signature-&gt;name(&quot;Constructor&quot;);
&gt; +            $constructor-&gt;signature-&gt;extendedAttributes($extendedAttributeList);
&gt; +            $constructor-&gt;parameters($param);
&gt; +            $constructor-&gt;{overloadedIndex} = $index++;
&gt; +            push(@{$dataNode-&gt;constructors}, $constructor);
&gt; +        }
&gt; +        delete $extendedAttributeList-&gt;{&quot;Constructors&quot;};

Currently we are resolving overloaded functions in CodeGenerator.pm, in order not to introduce additional logic to IDLParser.pm (IDLParser.pm should do only parsing). Similarly, can you resolve overloaded constructors in CodeGenerator.pm? You can implement LinkOverloadedConstructors, just like LinkOverloadedFunctions.

&gt; Source/WebCore/bindings/scripts/test/TestSerializedScriptValueInterface.idl:-30
&gt; -    Constructor(in DOMString hello, in SerializedScriptValue value),

Why did you remove this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756514</commentid>
    <comment_count>27</comment_count>
      <attachid>171741</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-11-01 11:57:53 -0700</bug_when>
    <thetext>Comment on attachment 171741
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:15
&gt;&gt; +        3) Modifies WebSocket.h/.cpp/.idl to not have custom code for the send method.
&gt; 
&gt; The patch is a bit too big to review. Can you split a patch for constructors from a patch for send()?
&gt; 
&gt; Below, I&apos;m commenting on the constructors part.

All send related changes have been removed.

&gt;&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:178
&gt;&gt; +    }
&gt; 
&gt; This has been throwing throwError(SyntaxError, &quot;Empty URL&quot;) before this patch. SYNTAX_ERR is a DOM exception, which is different from a SyntaxError, which is a JavaScript error.
&gt; 
&gt; If there is no test for this behavior, please add a test.

Test added, and since all other url parsing checks throws a SYNTAX_ERR this is more consistent.

&gt;&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:194
&gt;&gt; +        protocols.append(protocol);
&gt; 
&gt; This check has not been done before this patch.
&gt; 
&gt; If there is no test for this behavior, please add a test.

Removed check.

&gt;&gt; Source/WebCore/Modules/websockets/WebSocket.idl:43
&gt;&gt; +    JSConstructorParameters=1,
&gt; 
&gt; Let&apos;s use [ConstructorParameters=1] as is, without introducing [JSConstructorParameters]. Having a [ConstructorParameters=X] IDL attribute is not a problem even for non-custom constructors (unless V8 and JSC want to implement constructors that have a different number of parameters).

done.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3724
&gt;&gt; +    # FIXME: Add support for overloaded constructors to jS as well.
&gt; 
&gt; Nit: jS =&gt; JS

fixed.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3733
&gt;&gt; +    }
&gt; 
&gt; As mentioned above, I don&apos;t want to introduce [JSConstructorParameters].

done.

&gt;&gt; Source/WebCore/bindings/scripts/IDLAttributes.txt:64
&gt;&gt; +JSConstructorParameters=*
&gt; 
&gt; As mentioned above, we want to remove it.

done.

&gt;&gt; Source/WebCore/bindings/scripts/IDLParser.pm:2409
&gt;&gt; +        delete $extendedAttributeList-&gt;{&quot;Constructors&quot;};
&gt; 
&gt; Currently we are resolving overloaded functions in CodeGenerator.pm, in order not to introduce additional logic to IDLParser.pm (IDLParser.pm should do only parsing). Similarly, can you resolve overloaded constructors in CodeGenerator.pm? You can implement LinkOverloadedConstructors, just like LinkOverloadedFunctions.

Can I do this in a follow-up patch, after JS support?

It would make this patch more complicated since attributes (which Constructors are) does not follow the same rules as functions and other members. And btw I don&apos;t do anything more than looping around the same code as before.

&gt;&gt; Source/WebCore/bindings/scripts/test/TestSerializedScriptValueInterface.idl:-30
&gt;&gt; -    Constructor(in DOMString hello, in SerializedScriptValue value),
&gt; 
&gt; Why did you remove this?

Because I think it is better if each file tests only one thing, in this case SerializedScriptValue, and because the the first constructor was ignored before and I wanted to let this file test exactly the same thing as before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756526</commentid>
    <comment_count>28</comment_count>
      <attachid>171906</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-11-01 12:05:54 -0700</bug_when>
    <thetext>Created attachment 171906
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756529</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-01 12:12:18 -0700</bug_when>
    <thetext>Attachment 171906 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/http...&quot; exit_code: 1
Source/WebCore/bindings/scripts/test/V8/V8TestOverloadedConstructors.h:61:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/ObjC/DOMTestOverloadedConstructorsInternal.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h:58:  More than one command on the same line in if  [whitespace/parens] [4]
Total errors found: 3 in 27 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>756539</commentid>
    <comment_count>30</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-01 12:38:56 -0700</bug_when>
    <thetext>Looks much better

(In reply to comment #27)
&gt; &gt;&gt; Source/WebCore/bindings/scripts/IDLParser.pm:2409
&gt; &gt;&gt; +        delete $extendedAttributeList-&gt;{&quot;Constructors&quot;};
&gt; &gt; 
&gt; &gt; Currently we are resolving overloaded functions in CodeGenerator.pm, in order not to introduce additional logic to IDLParser.pm (IDLParser.pm should do only parsing). Similarly, can you resolve overloaded constructors in CodeGenerator.pm? You can implement LinkOverloadedConstructors, just like LinkOverloadedFunctions.
&gt; 
&gt; Can I do this in a follow-up patch, after JS support?
&gt; 
&gt; It would make this patch more complicated since attributes (which Constructors are) does not follow the same rules as functions and other members. And btw I don&apos;t do anything more than looping around the same code as before.

Wouldn&apos;t it be possible to keep the change in CodeGeneratorV8.pm as is and just move what you&apos;re doing in IDLParser.pm to CodeGenerator.pm ? I just do not like the fact that $dataNode-&gt;constructors is built up not in CodeGenerator.pm but in IDLParser.pm, which is messing up the parser. Looking at LinkOverloadedFunctions in CodeGenerator.pm, I guess you can do a similar thing for constructors. Am I missing something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756561</commentid>
    <comment_count>31</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-11-01 13:13:33 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; Looks much better
&gt; 
&gt; (In reply to comment #27)
&gt; &gt; &gt;&gt; Source/WebCore/bindings/scripts/IDLParser.pm:2409
&gt; &gt; &gt;&gt; +        delete $extendedAttributeList-&gt;{&quot;Constructors&quot;};
&gt; &gt; &gt; 
&gt; &gt; &gt; Currently we are resolving overloaded functions in CodeGenerator.pm, in order not to introduce additional logic to IDLParser.pm (IDLParser.pm should do only parsing). Similarly, can you resolve overloaded constructors in CodeGenerator.pm? You can implement LinkOverloadedConstructors, just like LinkOverloadedFunctions.
&gt; &gt; 
&gt; &gt; Can I do this in a follow-up patch, after JS support?
&gt; &gt; 
&gt; &gt; It would make this patch more complicated since attributes (which Constructors are) does not follow the same rules as functions and other members. And btw I don&apos;t do anything more than looping around the same code as before.
&gt; 
&gt; Wouldn&apos;t it be possible to keep the change in CodeGeneratorV8.pm as is and just move what you&apos;re doing in IDLParser.pm to CodeGenerator.pm ? I just do not like the fact that $dataNode-&gt;constructors is built up not in CodeGenerator.pm but in IDLParser.pm, which is messing up the parser. Looking at LinkOverloadedFunctions in CodeGenerator.pm, I guess you can do a similar thing for constructors. Am I missing something?

The issue is that before the LinkOverloadedFunctions is called (in the boundary between IDLParser and CodeGenerator) the attributes are checked, and anything else than Constructor=string will cause an error. That&apos;s why in IDLParser the array of array of parameters have to be moved to the dataNode in one way or another before the transfer to CodeGenerator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756564</commentid>
    <comment_count>32</comment_count>
      <attachid>171906</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-01 13:19:42 -0700</bug_when>
    <thetext>Comment on attachment 171906
Patch

Attachment 171906 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14692594

New failing tests:
http/tests/websocket/tests/hybi/url-parsing.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757094</commentid>
    <comment_count>33</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-02 04:37:21 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; The issue is that before the LinkOverloadedFunctions is called (in the boundary between IDLParser and CodeGenerator) the attributes are checked, and anything else than Constructor=string will cause an error. That&apos;s why in IDLParser the array of array of parameters have to be moved to the dataNode in one way or another before the transfer to CodeGenerator.

It looks like that the problem is that anything other than Constructor=&quot;...&quot; causes an error, which is not an expected behavior in our situation. Is it difficult to fix? (I&apos;m happy to discuss the details with you offline.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758352</commentid>
    <comment_count>34</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-11-05 02:14:46 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; (In reply to comment #31)
&gt; &gt; The issue is that before the LinkOverloadedFunctions is called (in the boundary between IDLParser and CodeGenerator) the attributes are checked, and anything else than Constructor=string will cause an error. That&apos;s why in IDLParser the array of array of parameters have to be moved to the dataNode in one way or another before the transfer to CodeGenerator.
&gt; 
&gt; It looks like that the problem is that anything other than Constructor=&quot;...&quot; causes an error, which is not an expected behavior in our situation. Is it difficult to fix? (I&apos;m happy to discuss the details with you offline.)

I don&apos;t think cleaning this up would difficult to fix but since it&apos;s not directly related to overloaded constructors I definitely prefer to do it in another patch, this one is large enough as it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758358</commentid>
    <comment_count>35</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-05 02:21:01 -0800</bug_when>
    <thetext>(In reply to comment #34)
&gt; I don&apos;t think cleaning this up would difficult to fix but since it&apos;s not directly related to overloaded constructors I definitely prefer to do it in another patch, this one is large enough as it is.

So do you mean, in this patch you want to make the change to IDLParser.pm, and in a follow-up patch you want to move the change from IDLParser.pm to CodeGenerator.pm? (I don&apos;t much like the approach but would not object to it if you want to go that way.)

Either way, the goal should be (1) no change to the parser, and (2) both V8 and JSC support overloaded constructors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758414</commentid>
    <comment_count>36</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-05 04:11:43 -0800</bug_when>
    <thetext>We discussed offline. I understand we need to make a change to IDLParser.pm but we&apos;re not sure what is the best way to do it.

tasak: We are trying to support overloaded constructors. IDLParser.pm should build up $dataNode-&gt;constructors (instead of $dataNode-&gt;constructor). Do you have any idea to implement it? (c.f. Look at the IDLParser.pm of https://bugs.webkit.org/attachment.cgi?id=171906&amp;action=review It works as intended, but the solution is a bit dirty in that it introduces a temporal &quot;Constructors&quot; extended attribute to the parser.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760246</commentid>
    <comment_count>37</comment_count>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-11-06 17:41:10 -0800</bug_when>
    <thetext>
&gt; tasak: We are trying to support overloaded constructors. IDLParser.pm should build up $dataNode-&gt;constructors (instead of $dataNode-&gt;constructor). Do you have any idea to implement it? (c.f. Look at the IDLParser.pm of https://bugs.webkit.org/attachment.cgi?id=171906&amp;action=review It works as intended, but the solution is a bit dirty in that it introduces a temporal &quot;Constructors&quot; extended attribute to the parser.)

I looked at https://bugs.webkit.org/attachment.cgi?id=171906&amp;action=review.
If we don&apos;t need to support multiple values per one key except Constructor (I&apos;m not sure... we don&apos;t need to support overloaded NamedConstructor?), I think, it&apos;s ok.
If we need, I think, it might be better to use an array per each key (key=extended attribute key).

Best regards,
Takashi Sakamoto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761735</commentid>
    <comment_count>38</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-11-08 06:38:22 -0800</bug_when>
    <thetext>(In reply to comment #37)
&gt; &gt; tasak: We are trying to support overloaded constructors. IDLParser.pm should build up $dataNode-&gt;constructors (instead of $dataNode-&gt;constructor). Do you have any idea to implement it? (c.f. Look at the IDLParser.pm of https://bugs.webkit.org/attachment.cgi?id=171906&amp;action=review It works as intended, but the solution is a bit dirty in that it introduces a temporal &quot;Constructors&quot; extended attribute to the parser.)
&gt; 
&gt; I looked at https://bugs.webkit.org/attachment.cgi?id=171906&amp;action=review.
&gt; If we don&apos;t need to support multiple values per one key except Constructor (I&apos;m not sure... we don&apos;t need to support overloaded NamedConstructor?), I think, it&apos;s ok.
&gt; If we need, I think, it might be better to use an array per each key (key=extended attribute key).
&gt; 
&gt; Best regards,
&gt; Takashi Sakamoto

Thanks for your answer. I would be surprised if NamedConstructor needs to be overloaded, but if that ever happens I would be happy to do the work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761754</commentid>
    <comment_count>39</comment_count>
      <attachid>173039</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-11-08 07:11:59 -0800</bug_when>
    <thetext>Created attachment 173039
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761758</commentid>
    <comment_count>40</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-08 07:16:04 -0800</bug_when>
    <thetext>Attachment 173039 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/http...&quot; exit_code: 1
Source/WebCore/bindings/scripts/test/V8/V8TestOverloadedConstructors.h:61:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/ChangeLog:139:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/WebCore/bindings/scripts/test/ObjC/DOMTestOverloadedConstructorsInternal.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h:58:  More than one command on the same line in if  [whitespace/parens] [4]
Total errors found: 4 in 27 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>761776</commentid>
    <comment_count>41</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-08 07:34:28 -0800</bug_when>
    <thetext>I&apos;m leaving and let me take a look at the patch later.

(In reply to comment #38)
&gt; I would be surprised if NamedConstructor needs to be overloaded, but if that ever happens I would be happy to do the work.

Currently NamedConstructor is speced only in Audio, Image and Option. They are not overloaded. So practical speaking, overloaded NamedConstructor is not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761784</commentid>
    <comment_count>42</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-11-08 07:40:46 -0800</bug_when>
    <thetext>(In reply to comment #41) 
&gt; (In reply to comment #38)
&gt; &gt; I would be surprised if NamedConstructor needs to be overloaded, but if that ever happens I would be happy to do the work.
&gt; 
&gt; Currently NamedConstructor is speced only in Audio, Image and Option. They are not overloaded. So practical speaking, overloaded NamedConstructor is not needed.

Why do these classes need NamedConstructor? Just curious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761786</commentid>
    <comment_count>43</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-08 07:42:45 -0800</bug_when>
    <thetext>(In reply to comment #42)
&gt; (In reply to comment #41) 
&gt; &gt; (In reply to comment #38)
&gt; &gt; &gt; I would be surprised if NamedConstructor needs to be overloaded, but if that ever happens I would be happy to do the work.
&gt; &gt; 
&gt; &gt; Currently NamedConstructor is speced only in Audio, Image and Option. They are not overloaded. So practical speaking, overloaded NamedConstructor is not needed.
&gt; 
&gt; Why do these classes need NamedConstructor? Just curious.

Boring answer: Because they are speced.

Practical answer: Although the interface name is HTMLImageElement, we want to make it constructable by &quot;new Image()&quot; not by &quot;new HTMLImageElement()&quot;. NamedConstructor does the magic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761793</commentid>
    <comment_count>44</comment_count>
      <attachid>173043</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-11-08 07:44:42 -0800</bug_when>
    <thetext>Created attachment 173043
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761796</commentid>
    <comment_count>45</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-08 07:47:51 -0800</bug_when>
    <thetext>Attachment 173043 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/http...&quot; exit_code: 1
Source/WebCore/bindings/scripts/test/V8/V8TestOverloadedConstructors.h:61:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/ObjC/DOMTestOverloadedConstructorsInternal.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h:58:  More than one command on the same line in if  [whitespace/parens] [4]
Total errors found: 3 in 27 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>762691</commentid>
    <comment_count>46</comment_count>
      <attachid>173234</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-11-09 01:13:04 -0800</bug_when>
    <thetext>Created attachment 173234
Patch (merge changes only)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762692</commentid>
    <comment_count>47</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-09 01:20:04 -0800</bug_when>
    <thetext>Attachment 173234 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/http...&quot; exit_code: 1
Source/WebCore/bindings/scripts/test/V8/V8TestOverloadedConstructors.h:61:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/ObjC/DOMTestOverloadedConstructorsInternal.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h:58:  More than one command on the same line in if  [whitespace/parens] [4]
Total errors found: 3 in 27 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>762900</commentid>
    <comment_count>48</comment_count>
      <attachid>173234</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-09 05:45:42 -0800</bug_when>
    <thetext>Comment on attachment 173234
Patch (merge changes only)

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

Looks OK with some nits. Thanks for a great patch!

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:176
&gt; +        ec = SYNTAX_ERR;

This change is non-trivial but looks OK for the following reasons:

(1) This changes the current behavior. The current implementation throws SyntaxError (one of JavaScript errors) instead of SYNTAX_ERR (one of DOM exceptions).

(2) But the spec says it should be SYNTAX_ERR. (http://www.w3.org/TR/2009/WD-websockets-20091222/) So the new implementation is conformed to the spec.

(3) As no developers would care about the difference, this change won&apos;t break compatibility.

&gt; Source/WebCore/Modules/websockets/WebSocket.idl:43
&gt; +    ConstructorParameters=1,

Nit: Redundant &apos;,&apos;

&gt; Source/WebCore/bindings/scripts/IDLParser.pm:1326
&gt; +sub copyAttributes

copyAttributes =&gt; copyExtendedAttributes ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762939</commentid>
    <comment_count>49</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-11-09 06:13:28 -0800</bug_when>
    <thetext>Thanks for the review!

I will fix both comments and commit this patch on Monday morning.

(In reply to comment #48)
&gt; (From update of attachment 173234 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=173234&amp;action=review
&gt; 
&gt; Looks OK with some nits. Thanks for a great patch!
&gt; 
&gt; &gt; Source/WebCore/Modules/websockets/WebSocket.cpp:176
&gt; &gt; +        ec = SYNTAX_ERR;
&gt; 
&gt; This change is non-trivial but looks OK for the following reasons:
&gt; 
&gt; (1) This changes the current behavior. The current implementation throws SyntaxError (one of JavaScript errors) instead of SYNTAX_ERR (one of DOM exceptions).
&gt; 
&gt; (2) But the spec says it should be SYNTAX_ERR. (http://www.w3.org/TR/2009/WD-websockets-20091222/) So the new implementation is conformed to the spec.
&gt; 
&gt; (3) As no developers would care about the difference, this change won&apos;t break compatibility.
&gt; 
&gt; &gt; Source/WebCore/Modules/websockets/WebSocket.idl:43
&gt; &gt; +    ConstructorParameters=1,
&gt; 
&gt; Nit: Redundant &apos;,&apos;
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/IDLParser.pm:1326
&gt; &gt; +sub copyAttributes
&gt; 
&gt; copyAttributes =&gt; copyExtendedAttributes ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764212</commentid>
    <comment_count>50</comment_count>
      <attachid>173606</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-11-12 03:30:10 -0800</bug_when>
    <thetext>Created attachment 173606
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764215</commentid>
    <comment_count>51</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-12 03:35:17 -0800</bug_when>
    <thetext>Attachment 173606 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/http...&quot; exit_code: 1
Source/WebCore/bindings/scripts/test/V8/V8TestOverloadedConstructors.h:61:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/ObjC/DOMTestOverloadedConstructorsInternal.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h:58:  More than one command on the same line in if  [whitespace/parens] [4]
Total errors found: 3 in 27 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>764279</commentid>
    <comment_count>52</comment_count>
      <attachid>173606</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-12 04:56:19 -0800</bug_when>
    <thetext>Comment on attachment 173606
Patch for landing

Rejecting attachment 173606 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/chromium/TestExpectations
Failed to merge in the changes.
Patch failed at 0001 Add tests for month picker

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 154.

Full output: http://queues.webkit.org/results/14811395</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764295</commentid>
    <comment_count>53</comment_count>
      <attachid>173628</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-11-12 05:16:36 -0800</bug_when>
    <thetext>Created attachment 173628
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764341</commentid>
    <comment_count>54</comment_count>
      <attachid>173628</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-12 06:19:19 -0800</bug_when>
    <thetext>Comment on attachment 173628
Patch for landing

Clearing flags on attachment: 173628

Committed r134221: &lt;http://trac.webkit.org/changeset/134221&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764358</commentid>
    <comment_count>55</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-12 06:41:19 -0800</bug_when>
    <thetext>FYI, another IDL that has hoped overloaded constructors is Intent.idl. Though I&apos;m not sure if it&apos;s easy to kill the custom binding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764359</commentid>
    <comment_count>56</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-11-12 06:42:43 -0800</bug_when>
    <thetext>Will look at that one once I have fixed the JSC support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764360</commentid>
    <comment_count>57</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-12 06:43:46 -0800</bug_when>
    <thetext>Sounds great!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171561</attachid>
            <date>2012-10-30 17:53:46 -0700</date>
            <delta_ts>2012-10-31 13:41:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100801-20121031015210.patch</filename>
            <type>text/plain</type>
            <size>27320</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDdkZWRlOTdkNjg4Yjc1
YTM0MDdlMDIwYWZiOGNlZDYxNGI4YmMzMS4uM2ZmNjI3NzVjODcyNWQ2ZjhkNzY0YTliNGQ4NGJj
ZDk1NTQzNDkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTEwLTMwICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBhbGwg
Y3VzdG9tIGNvZGUgZm9yIFdlYlNvY2tldHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMDgwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyB0aGUgZm9sbG93aW5nOgorCisgICAg
ICAgIDEpIE1vZGlmaWVzIHRoZSBjb2RlIGdlbmVyYXRvcnMgdG8gc3VwcG9ydCBvdmVybG9hZGVk
IGNvbnN0cnVjdG9ycy4gVGhlIHNhbWUgbGltaXRhdGlvbgorICAgICAgICAgICB3aXRoIFtPcHRp
b25hbF0gYXJndW1lbnRzIHN0aWxsIGFwcGxpZXMuCisKKyAgICAgICAgMikgTW9kaWZpZXMgV2Vi
U29ja2V0LmgvLmNwcCBmb3IgdGhlIG5ldyBjb25zdHJ1Y3RvcnMuCisKKyAgICAgICAgMykgTW9k
aWZpZXMgV2ViU29ja2V0LmgvLmNwcC8uaWRsIHRvIG5vdCBoYXZlIGN1c3RvbSBjb2RlIGZvciB0
aGUgc2VuZCBtZXRob2QuCisgICAgICAgICAgIFRoZXJlIHdlcmUgYSBGSVhNRSBpbiB0aGUgaWRs
IHJlZ2FyZGluZyB0aGlzIGFuZCB0aGUgc2ltcGxlIHNvbHV0aW9uIGlzIHRvIGhhdmUgdGhlCisg
ICAgICAgICAgIHNlbmQoRE9NU3RyaW5nKSBkZWNsYXJhdGlvbiBsYXN0IHNpbmNlIGl0IGFjdHMg
YXMgYSBjYXRjaC1hbGwuCisKKyAgICAgICAgVGVzdGVkIGJ5IHJ1bm5pbmcgV2ViU29ja2V0cyBs
YXlvdXQgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaDoKKyAgICAgICAg
KFdlYlNvY2tldCk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGw6
CisgICAgICAgICogVXNlVjguY21ha2U6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgIChJc0RpY3Rpb25hcnlUeXBlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAg
KEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrRXhwcmVz
c2lvbik6CisgICAgICAgIChHZW5lcmF0ZU92ZXJsb2FkZWRDb25zdHJ1Y3RvckNhbGxiYWNrKToK
KyAgICAgICAgKEdlbmVyYXRlU2luZ2xlQ29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChH
ZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAg
IChjb3B5QXR0cmlidXRlcyk6CisgICAgICAgIChwYXJzZUV4dGVuZGVkQXR0cmlidXRlTGlzdCk6
CisgICAgICAgIChwYXJzZUV4dGVuZGVkQXR0cmlidXRlcyk6CisgICAgICAgIChhcHBseUV4dGVu
ZGVkQXR0cmlidXRlTGlzdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1
cmUucG06CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNw
cDogUmVtb3ZlZC4KKwogMjAxMi0xMC0yOSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFtRdF0gVGV4dCB3aXRoIHplcm8gZm9udCBzaXplIHJlbmRlcnMg
YXMgWCBweCBzb21ldGltZXMsIGNhdXNpbmcgZmFzdC90ZXh0L3plcm8tZm9udC1zaXplLTIuaHRt
bCB0byBmYWlsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwCmluZGV4IDQ2ZDYyZGU4OWY0NjY4ZmU3YTE1MWZlZWQ1MzExMzgyNDczMDI3ZGEuLjA4
ZGFjZjAzNTc4NzFkYzIxYjE2NzFlOTkyNTMyZjg1YzNkMWMwNTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0xNTcsMTMgKzE1Nywz
NyBAQCBXZWJTb2NrZXQ6On5XZWJTb2NrZXQoKQogICAgICAgICBtX2NoYW5uZWwtPmRpc2Nvbm5l
Y3QoKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCitQYXNzUmVmUHRyPFdlYlNvY2tldD4gV2ViU29j
a2V0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFZlY3RvcjxTdHJpbmc+IHByb3RvY29s
czsKKyAgICByZXR1cm4gV2ViU29ja2V0OjpjcmVhdGUoY29udGV4dCwgdXJsLCBwcm90b2NvbHMs
IGVjKTsKK30KKworUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcHJvdG9jb2xzLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAodXJs
LmlzTnVsbCgpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorCiAgICAgUmVmUHRyPFdlYlNvY2tldD4gd2ViU29ja2V0KGFkb3B0UmVmKG5ldyBX
ZWJTb2NrZXQoY29udGV4dCkpKTsKICAgICB3ZWJTb2NrZXQtPnN1c3BlbmRJZk5lZWRlZCgpOwor
CisgICAgd2ViU29ja2V0LT5jb25uZWN0KGNvbnRleHQtPmNvbXBsZXRlVVJMKHVybCksIHByb3Rv
Y29scywgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICByZXR1cm4g
d2ViU29ja2V0LnJlbGVhc2UoKTsKIH0KIAorUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IFdlYlNvY2tl
dDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBW
ZWN0b3I8U3RyaW5nPiBwcm90b2NvbHM7CisgICAgaWYgKCFwcm90b2NvbC5pc051bGwoKSkKKyAg
ICAgICAgcHJvdG9jb2xzLmFwcGVuZChwcm90b2NvbCk7CisgICAgcmV0dXJuIFdlYlNvY2tldDo6
Y3JlYXRlKGNvbnRleHQsIHVybCwgcHJvdG9jb2xzLCBlYyk7Cit9CisKIHZvaWQgV2ViU29ja2V0
Ojpjb25uZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBW
ZWN0b3I8U3RyaW5nPiBwcm90b2NvbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmgKaW5kZXggYTkzNTUyOGJhMjQ2MTIyMTkyN2Q1YjMzZTFiNWNmNjU5
NzRjNDRkMi4uOTRjM2Q1YzdlZWZkZjM3YmE3YjEwMjc5NDdlMTM0MjhhZDlmY2VmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApAQCAtNTUsNyAr
NTUsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0SXNBdmFpbGFibGUoYm9vbCk7CiAg
ICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3Vi
UHJvdG9jb2xTZXBlcmF0b3IoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2Vi
U29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdXJs
LCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29ja2V0PiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHByb3RvY29sLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2Vi
U29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvdG9jb2xzLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
dmlydHVhbCB+V2ViU29ja2V0KCk7CiAKICAgICBlbnVtIFN0YXRlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwKaW5kZXggNzJjZjVkNGU5Y2Mx
N2JjOTJmNzM4ZjA5YmU2OGFjYjIwMTFlZTk0Ny4uYWNlMDA4YWE1NTU4Y2I1ZTU4M2EyMmZiM2Ji
YWI1ODMxN2M1NzBiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldC5pZGwKQEAgLTMyLDEwICszMiwxNCBAQAogWwogICAgIENvbmRpdGlvbmFsPVdF
Ql9TT0NLRVRTLAogICAgIEFjdGl2ZURPTU9iamVjdCwKLSAgICBDdXN0b21Db25zdHJ1Y3RvciwK
LSAgICBDb25zdHJ1Y3RvclBhcmFtZXRlcnM9MSwKKyAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJp
bmcgdXJsKSwKKyAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgdXJsLCBpbiBzZXF1ZW5jZTxT
dHJpbmc+IHByb3RvY29scyksCisgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIHVybCwgaW4g
RE9NU3RyaW5nIHByb3RvY29sKSwKKyAgICBDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbiwKKyAg
ICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgIEV2ZW50VGFyZ2V0LAotICAg
IEpTTm9TdGF0aWNUYWJsZXMKKyAgICBKU05vU3RhdGljVGFibGVzLAorICAgIEpTQ3VzdG9tQ29u
c3RydWN0b3IsCiBdIGludGVyZmFjZSBXZWJTb2NrZXQgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgVVJMOyAvLyBMb3dlcmNhc2VkIC51cmwgaXMgdGhlIG9uZSBpbiB0aGUgc3Bl
YywgYnV0IGxlYXZpbmcgLlVSTCBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLgogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdXJsOwpAQCAtNjAsMTYgKzY0LDE0IEBACiAKICAgICBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGJpbmFyeVR5cGU7CiAKLSAgICAvLyBGSVhNRTogVXNlIG92ZXJs
b2FkaW5nIHByb3ZpZGVkIGJ5IG91ciBJREwgY29kZSBnZW5lcmF0b3IuCi0gICAgLy8gQWNjb3Jk
aW5nIHRvIFdlYiBJREwgc3BlY2lmaWNhdGlvbiwgb3ZlcmxvYWRlZCBmdW5jdGlvbiB3aXRoIERP
TVN0cmluZyBhcmd1bWVudAotICAgIC8vIHNob3VsZCBhY2NlcHQgYW55dGhpbmcgdGhhdCBjYW4g
YmUgY29udmVydGVkIHRvIGEgc3RyaW5nIChpbmNsdWRpbmcgbnVtYmVycywKLSAgICAvLyBib29s
ZWFucywgbnVsbCwgdW5kZWZpbmVkIGFuZCBvYmplY3RzIGV4Y2VwdCBBcnJheUJ1ZmZlciBhbmQg
QmxvYikuIEN1cnJlbnQgY29kZQotICAgIC8vIGdlbmVyYXRvciBkb2VzIG5vdCBoYW5kbGUgdGhp
cyBydWxlIGNvcnJlY3RseS4KLSAgICAvLyBib29sZWFuIHNlbmQoaW4gQXJyYXlCdWZmZXIgZGF0
YSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgLy8gYm9vbGVhbiBzZW5kKGluIEFycmF5QnVm
ZmVyVmlldyBkYXRhKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAvLyBib29sZWFuIHNlbmQo
aW4gQmxvYiBkYXRhKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAvLyBib29sZWFuIHNlbmQo
aW4gRE9NU3RyaW5nIGRhdGEpIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgIFtDdXN0b21dIGJv
b2xlYW4gc2VuZChpbiBET01TdHJpbmcgZGF0YSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAg
Ym9vbGVhbiBzZW5kKGluIEFycmF5QnVmZmVyIGRhdGEpCisgICAgICAgIHJhaXNlcyhET01FeGNl
cHRpb24pOworICAgIGJvb2xlYW4gc2VuZChpbiBBcnJheUJ1ZmZlclZpZXcgZGF0YSkKKyAgICAg
ICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgYm9vbGVhbiBzZW5kKGluIEJsb2IgZGF0YSkK
KyAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgYm9vbGVhbiBzZW5kKGluIERPTVN0
cmluZyBkYXRhKQorICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgIHZvaWQgY2xv
c2UoaW4gW0NsYW1wLCBPcHRpb25hbF0gdW5zaWduZWQgc2hvcnQgY29kZSwgaW4gW09wdGlvbmFs
XSBET01TdHJpbmcgcmVhc29uKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQpp
bmRleCA4MmIxZGE0ZmFmYmM3NmE0ODEzZDE5N2Q3YzBmYjc4YjM2YTEyMDU0Li5kNjUzMjg4MmU4
ZTFlZTNjYjg1NWRkOGExY2YxMmUxYWYzNDI2OWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Vc2VWOC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQpAQCAtMTUwLDcg
KzE1MCw2IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92OC9j
dXN0b20vVjhXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9t
L1Y4V2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5jcHAKLSAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJTb2NrZXRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4
dEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwCiAg
ICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQppbmRleCBhYWQwMmM5MWU3YzJiZTEwNWQzZjAwYTA0YWZjNjg4ZDU3NDBjYTgz
Li5mZjdmMDQzMmNjZTY4ZTg0NmI2ZjI2NDA2ZGI0ZGM1OTdmNGQwMWM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCkBAIC0yNDU3LDcgKzI0NTcsNiBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50Q29uc3RydWN0b3IuY3BwJywKLSAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5j
cHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20u
Y3BwCmluZGV4IDVhZTQxNTlkYzlmMTdmNDVjY2ZmZWY0OTg5ZDcxOTZiYzBkODAyOWEuLjU4ZmVh
ZTMyYjk3M2VhZTA4YTQ3MDlkMGQ0ZmM4Njc5ZDczNTQ0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHAKQEAgLTkxLDM0ICs5MSw2IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNXZWJTb2NrZXRDb25zdHJ1Y3Rvcjo6Y29u
c3RydWN0SlNXZWJTb2NrZXQoRXhlY1N0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShDUkVB
VEVfRE9NX1dSQVBQRVIoZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIFdlYlNv
Y2tldCwgd2ViU29ja2V0LmdldCgpKSk7CiB9CiAKLUpTVmFsdWUgSlNXZWJTb2NrZXQ6OnNlbmQo
RXhlY1N0YXRlKiBleGVjKQotewotICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQotICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihleGVjKSk7Ci0KLSAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBib29sIHJlc3VsdDsKLSAgICBpZiAobWVzc2Fn
ZS5pbmhlcml0cygmSlNBcnJheUJ1ZmZlcjo6c19pbmZvKSkKLSAgICAgICAgcmVzdWx0ID0gaW1w
bCgpLT5zZW5kKHRvQXJyYXlCdWZmZXIobWVzc2FnZSksIGVjKTsKLSAgICBlbHNlIGlmIChtZXNz
YWdlLmluaGVyaXRzKCZKU0FycmF5QnVmZmVyVmlldzo6c19pbmZvKSkKLSAgICAgICAgcmVzdWx0
ID0gaW1wbCgpLT5zZW5kKHRvQXJyYXlCdWZmZXJWaWV3KG1lc3NhZ2UpLCBlYyk7Ci0gICAgZWxz
ZSBpZiAobWVzc2FnZS5pbmhlcml0cygmSlNCbG9iOjpzX2luZm8pKQotICAgICAgICByZXN1bHQg
PSBpbXBsKCktPnNlbmQodG9CbG9iKG1lc3NhZ2UpLCBlYyk7Ci0gICAgZWxzZSB7Ci0gICAgICAg
IFN0cmluZyBzdHJpbmdNZXNzYWdlID0gbWVzc2FnZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7Ci0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwotICAgICAgICByZXN1bHQgPSBpbXBsKCktPnNlbmQoc3RyaW5nTWVz
c2FnZSwgZWMpOwotICAgIH0KLSAgICBpZiAoZWMpIHsKLSAgICAgICAgc2V0RE9NRXhjZXB0aW9u
KGV4ZWMsIGVjKTsKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIGpzQm9vbGVhbihyZXN1bHQpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yLnBtCmluZGV4IDFjMzU2M2E2MTg2YTY1MjExYjQ0ODA0Y2ZhMTEwYTA1YjBlNmViZmMuLjUw
YzVjYjI1M2Y0NGZjMWJlMTk2NGExMWZkZWIzZjVmNDljYTFmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KQEAgLTM2NCw2ICszNjQs
MTMgQEAgc3ViIElzQXJyYXlUeXBlCiAgICAgcmV0dXJuICR0eXBlID1+IG0vXFtcXSQvOwogfQog
CitzdWIgSXNEaWN0aW9uYXJ5VHlwZQoreworICAgIG15ICRvYmplY3QgPSBzaGlmdDsKKyAgICBt
eSAkdHlwZSA9IHNoaWZ0OworICAgIHJldHVybiAkdHlwZSBlcSAiRGljdGlvbmFyeSI7Cit9CisK
IHN1YiBJc0NvbnN0cnVjdG9yVGVtcGxhdGUKIHsKICAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JW
OC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
CmluZGV4IDM5N2QyYzM4ZTM2MjA0MjdlNmIzZjEwZTNhZDgyMTRiZGYwZGZlMjguLjRmMzdlZmQ0
MGY3ZmVjZWZjMGU5YjM5OWRjZmM2ZGFhZWFjM2NkZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC00OTUsNiArNDk1LDE3
IEBAIEVORAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKIHByaXZhdGU6CiAgICAg
c3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcFNsb3coJHt3cmFwU2xvd0FyZ3VtZW50
VHlwZX0sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0
ZSopOworRU5ECisKKyAgICBpZiAoSXNDb25zdHJ1Y3RhYmxlKCRkYXRhTm9kZSkgJiYgQHskZGF0
YU5vZGUtPmNvbnN0cnVjdG9yc30gPiAxKSB7CisgICAgICAgIGZvciAobXkgJGkgPSAxOyAkaSA8
PSBAeyRkYXRhTm9kZS0+Y29uc3RydWN0b3JzfTsgJGkrKykgeworICAgICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCA8PEVORCk7CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBj
b25zdHJ1Y3RvciR7aX1DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJik7CitFTkQKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKIH07CiAKIEVO
RApAQCAtMTQyNCw2ICsxNDM1LDEyIEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVja0V4cHJl
c3Npb24KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcHVzaChAYW5kRXhw
cmVzc2lvbiwgIigke3ZhbHVlfS0+SXNBcnJheSgpKSIpOwogICAgICAgICAgICAgfQorICAgICAg
ICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNEaWN0aW9uYXJ5VHlwZSgkdHlwZSkpIHsKKyAg
ICAgICAgICAgIGlmICgkcGFyYW1ldGVyLT5pc051bGxhYmxlKSB7CisgICAgICAgICAgICAgICAg
cHVzaChAYW5kRXhwcmVzc2lvbiwgIigke3ZhbHVlfS0+SXNOdWxsKCkgfHwgJHt2YWx1ZX0tPklz
T2JqZWN0KCkpIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHB1c2go
QGFuZEV4cHJlc3Npb24sICIoJHt2YWx1ZX0tPklzT2JqZWN0KCkpIik7CisgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzaWYgKElzV3JhcHBlclR5cGUoJHR5cGUpKSB7CiAgICAgICAgICAgICBp
ZiAoJHBhcmFtZXRlci0+aXNOdWxsYWJsZSkgewogICAgICAgICAgICAgICAgIHB1c2goQGFuZEV4
cHJlc3Npb24sICIoJHt2YWx1ZX0tPklzTnVsbCgpIHx8IFY4JHt0eXBlfTo6SGFzSW5zdGFuY2Uo
JHZhbHVlKSkiKTsKQEAgLTE4NjIsMTEgKzE4NzksNTIgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVy
c0NoZWNrCiAgICAgcmV0dXJuICgkcGFyYW1ldGVyQ2hlY2tTdHJpbmcsICRwYXJhbUluZGV4LCAl
cmVwbGFjZW1lbnRzKTsKIH0KIAotc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JDYWxsYmFjaworc3Vi
IEdlbmVyYXRlT3ZlcmxvYWRlZENvbnN0cnVjdG9yQ2FsbGJhY2sKIHsKLSAgICBteSAkZnVuY3Rp
b24gPSBzaGlmdDsKICAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKICAgICBteSAkaW1wbENsYXNz
TmFtZSA9IHNoaWZ0OworICAgIAorICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Cit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2ltcGxDbGFzc05hbWV9Ojpjb25zdHJ1Y3RvckNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uJHtpbXBs
Q2xhc3NOYW1lfS5Db25zdHJ1Y3RvciIpOworICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwo
KSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9y
IGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iKTsKKworICAgIGlmIChDb25zdHJ1Y3Rv
ck1vZGU6OmN1cnJlbnQoKSA9PSBDb25zdHJ1Y3Rvck1vZGU6OldyYXBFeGlzdGluZ09iamVjdCkK
KyAgICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CisKK0VORAorCisgICAgbXkgJGxlYXN0TnVt
TWFuZGF0b3J5UGFyYW1zID0gMjU1OworICAgIGZvcmVhY2ggbXkgJGNvbnN0cnVjdG9yIChAeyRk
YXRhTm9kZS0+Y29uc3RydWN0b3JzfSkgeworICAgICAgICBteSAkbmFtZSA9ICJjb25zdHJ1Y3Rv
ciIgLiAkY29uc3RydWN0b3ItPntvdmVybG9hZGVkSW5kZXh9IC4gIkNhbGxiYWNrIjsKKyAgICAg
ICAgbXkgKCRudW1NYW5kYXRvcnlQYXJhbXMsICRwYXJhbWV0ZXJzQ2hlY2spID0gR2VuZXJhdGVG
dW5jdGlvblBhcmFtZXRlcnNDaGVjaygkY29uc3RydWN0b3IpOworICAgICAgICAkbGVhc3ROdW1N
YW5kYXRvcnlQYXJhbXMgPSAkbnVtTWFuZGF0b3J5UGFyYW1zIGlmICgkbnVtTWFuZGF0b3J5UGFy
YW1zIDwgJGxlYXN0TnVtTWFuZGF0b3J5UGFyYW1zKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKCRwYXJhbWV0ZXJzQ2hlY2spXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHJldHVybiAkbmFtZShhcmdzKTtcbiIpOworICAgIH0KKyAgICBpZiAo
JGxlYXN0TnVtTWFuZGF0b3J5UGFyYW1zID49IDEpIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAkbGVhc3ROdW1NYW5kYXRvcnlQYXJhbXMpXG4i
KTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd05vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTtcbiIpOworICAgIH0KKyAgICBw
dXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOworICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigwLCBh
cmdzLkdldElzb2xhdGUoKSk7CitFTkQKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7
Cit9CisKKworc3ViIEdlbmVyYXRlU2luZ2xlQ29uc3RydWN0b3JDYWxsYmFjaworeworICAgIG15
ICRkYXRhTm9kZSA9IHNoaWZ0OworICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7CisgICAg
bXkgJGZ1bmN0aW9uID0gc2hpZnQ7CisKKyAgICBteSAkbmFtZSA9ICJvbnN0cnVjdG9yIjsKKyAg
ICBpZiAoJGZ1bmN0aW9uLT57b3ZlcmxvYWRlZEluZGV4fSA+IDApIHsKKyAgICAgICAgJG5hbWUg
PSAkbmFtZSAuICRmdW5jdGlvbi0+e292ZXJsb2FkZWRJbmRleH07CisgICAgfQogCiAgICAgbXkg
JHJhaXNlc0V4Y2VwdGlvbnMgPSBAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc307CiAgICAg
aWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yUmFpc2VzRXhj
ZXB0aW9uIn0pIHsKQEAgLTE4ODUsMTggKzE5NDMsMjIgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0
b3JDYWxsYmFjawogICAgIG15IEBiZWZvcmVBcmd1bWVudExpc3Q7CiAgICAgbXkgQGFmdGVyQXJn
dW1lbnRMaXN0OwogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci12ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjgke2ltcGxDbGFzc05hbWV9Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2ltcGxDbGFzc05h
bWV9OjpjJHtuYW1lfUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAg
SU5DX1NUQVRTKCJET00uJHtpbXBsQ2xhc3NOYW1lfS5Db25zdHJ1Y3RvciIpOworICAgIElOQ19T
VEFUUygiRE9NLiR7aW1wbENsYXNzTmFtZX0uQyR7bmFtZX0iKTsKICAgICAke21heWJlT2JzZXJ2
ZUZlYXR1cmV9CitFTkQKKworICAgIGlmICgkZnVuY3Rpb24tPntvdmVybG9hZGVkSW5kZXh9ID09
IDApIHsKKyAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogICAgIGlmICghYXJncy5J
c0NvbnN0cnVjdENhbGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCJET00gb2Jq
ZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iKTsKIAogICAg
IGlmIChDb25zdHJ1Y3Rvck1vZGU6OmN1cnJlbnQoKSA9PSBDb25zdHJ1Y3Rvck1vZGU6OldyYXBF
eGlzdGluZ09iamVjdCkKICAgICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CiBFTkQKLQotICAg
IHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soJGZ1bmN0aW9u
LCAkZGF0YU5vZGUpKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlQXJndW1l
bnRzQ291bnRDaGVjaygkZnVuY3Rpb24sICRkYXRhTm9kZSkpOworICAgIH0KIAogICAgIGlmICgk
cmFpc2VzRXhjZXB0aW9ucykgewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRXhjZXB0aW9u
Q29kZS5oIik7CkBAIC0xOTYwLDYgKzIwMjIsMjEgQEAgRU5ECiAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJcbiIpOwogfQogCitzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckNhbGxiYWNrCit7CisgICAg
bXkgJGRhdGFOb2RlID0gc2hpZnQ7CisgICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKKwor
ICAgIGlmIChAeyRkYXRhTm9kZS0+Y29uc3RydWN0b3JzfSA9PSAxKSB7CisgICAgICAgIEdlbmVy
YXRlU2luZ2xlQ29uc3RydWN0b3JDYWxsYmFjaygkZGF0YU5vZGUsICRpbXBsQ2xhc3NOYW1lLCBA
eyRkYXRhTm9kZS0+Y29uc3RydWN0b3JzfVswXSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9y
ZWFjaCBteSAkY29uc3RydWN0b3IgKEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3RvcnN9KSB7CisgICAg
ICAgICAgICBHZW5lcmF0ZVNpbmdsZUNvbnN0cnVjdG9yQ2FsbGJhY2soJGRhdGFOb2RlLCAkaW1w
bENsYXNzTmFtZSwgJGNvbnN0cnVjdG9yKTsKKyAgICAgICAgfQorICAgICAgICBHZW5lcmF0ZU92
ZXJsb2FkZWRDb25zdHJ1Y3RvckNhbGxiYWNrKCRkYXRhTm9kZSwgJGltcGxDbGFzc05hbWUpOwor
ICAgIH0KK30KKwogc3ViIEdlbmVyYXRlRXZlbnRDb25zdHJ1Y3RvckNhbGxiYWNrCiB7CiAgICAg
bXkgJGRhdGFOb2RlID0gc2hpZnQ7CkBAIC0yODM5LDkgKzI5MTYsOSBAQCBFTkQKICAgICBwdXNo
KEBpbXBsQ29udGVudERlY2xzLCAifSAvLyBuYW1lc3BhY2UgJHtpbnRlcmZhY2VOYW1lfVY4SW50
ZXJuYWxcblxuIik7CiAKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
TmFtZWRDb25zdHJ1Y3RvciJ9ICYmICEoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
VjhDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkN1c3RvbUNvbnN0cnVjdG9yIn0pKSB7Ci0gICAgICAgIEdlbmVyYXRlTmFtZWRDb25zdHJ1Y3Rv
ckNhbGxiYWNrKCRkYXRhTm9kZS0+Y29uc3RydWN0b3IsICRkYXRhTm9kZSwgJGludGVyZmFjZU5h
bWUpOworICAgICAgICBHZW5lcmF0ZU5hbWVkQ29uc3RydWN0b3JDYWxsYmFjayhAeyRkYXRhTm9k
ZS0+Y29uc3RydWN0b3JzfVswXSwgJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgfSBl
bHNpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3IifSAmJiAh
KCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tQ29uc3RydWN0b3IifSB8
fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9KSkg
ewotICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbGJhY2soJGRhdGFOb2RlLT5jb25zdHJ1
Y3RvciwgJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CisgICAgICAgIEdlbmVyYXRlQ29uc3Ry
dWN0b3JDYWxsYmFjaygkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lKTsKICAgICB9IGVsc2lmICgk
Y29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclRlbXBsYXRlKCRkYXRhTm9kZSwgIkV2ZW50Iikp
IHsKICAgICAgICAgR2VuZXJhdGVFdmVudENvbnN0cnVjdG9yQ2FsbGJhY2soJGRhdGFOb2RlLCAk
aW50ZXJmYWNlTmFtZSk7CiAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0
b3JUZW1wbGF0ZSgkZGF0YU5vZGUsICJUeXBlZEFycmF5IikpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KaW5kZXggMTlmYjY0OTVjMzFiMWZiNTZkN2U2
YTlmMTUwZGI5NTk4MmM3NDcxMi4uNDI1YzE5YmViN2Q4MWE5NzA1OTE4YTgwZTM0ODljYTAyNzUy
OTQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJz
ZXIucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0K
QEAgLTEzMjMsNiArMTMyMywyMCBAQCBzdWIgcGFyc2VFeHRlbmRlZEF0dHJpYnV0ZUxpc3RBbGxv
d0VtcHR5CiAgICAgcmV0dXJuIHt9OwogfQogCitzdWIgY29weUF0dHJpYnV0ZXMKK3sKKyAgICBt
eSAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0ID0gc2hpZnQ7CisgICAgbXkgJGF0dHIgPSBzaGlmdDsK
KworICAgIGZvciBteSAka2V5IChrZXlzICV7JGF0dHJ9KSB7CisgICAgICAgIGlmICgka2V5IGVx
ICJDb25zdHJ1Y3RvciIpIHsKKyAgICAgICAgICAgIHB1c2goQHskZXh0ZW5kZWRBdHRyaWJ1dGVM
aXN0LT57IkNvbnN0cnVjdG9ycyJ9fSwgJGF0dHItPnska2V5fSk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57JGtleX0gPSAkYXR0ci0+eyRr
ZXl9OworICAgICAgICB9CisgICAgfQorfQorCiBzdWIgcGFyc2VFeHRlbmRlZEF0dHJpYnV0ZUxp
c3QKIHsKICAgICBteSAkc2VsZiA9IHNoaWZ0OwpAQCAtMTMzMSwxMyArMTM0NSw5IEBAIHN1YiBw
YXJzZUV4dGVuZGVkQXR0cmlidXRlTGlzdAogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1
ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIlsiLCBfX0xJTkVfXyk7CiAgICAgICAgIG15ICRleHRlbmRl
ZEF0dHJpYnV0ZUxpc3QgPSB7fTsKICAgICAgICAgbXkgJGF0dHIgPSAkc2VsZi0+cGFyc2VFeHRl
bmRlZEF0dHJpYnV0ZSgpOwotICAgICAgICBmb3IgbXkgJGtleSAoa2V5cyAleyRhdHRyfSkgewot
ICAgICAgICAgICAgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyRrZXl9ID0gJGF0dHItPnska2V5
fTsKLSAgICAgICAgfQorICAgICAgICBjb3B5QXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVM
aXN0LCAkYXR0cik7CiAgICAgICAgICRhdHRyID0gJHNlbGYtPnBhcnNlRXh0ZW5kZWRBdHRyaWJ1
dGVzKCk7Ci0gICAgICAgIGZvciBteSAka2V5IChrZXlzICV7JGF0dHJ9KSB7Ci0gICAgICAgICAg
ICAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57JGtleX0gPSAkYXR0ci0+eyRrZXl9OwotICAgICAg
ICB9CisgICAgICAgIGNvcHlBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QsICRhdHRy
KTsKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJd
IiwgX19MSU5FX18pOwogICAgICAgICByZXR1cm4gJGV4dGVuZGVkQXR0cmlidXRlTGlzdDsKICAg
ICB9CkBAIC0xMzU0LDkgKzEzNjQsNyBAQCBzdWIgcGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMKICAg
ICAgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICIsIikgewogICAgICAgICAgICAgJHNlbGYtPmFz
c2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICIsIiwgX19MSU5FX18pOwogICAgICAg
ICAgICAgbXkgJGF0dHIgPSAkc2VsZi0+cGFyc2VFeHRlbmRlZEF0dHJpYnV0ZTIoKTsKLSAgICAg
ICAgICAgIGZvciBteSAka2V5IChrZXlzICV7JGF0dHJ9KSB7Ci0gICAgICAgICAgICAgICAgJGV4
dGVuZGVkQXR0cmlidXRlTGlzdC0+eyRrZXl9ID0gJGF0dHItPnska2V5fTsKLSAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGNvcHlBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QsICRh
dHRyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgIH0KQEAg
LTIzODEsMTQgKzIzODksMjAgQEAgc3ViIGFwcGx5RXh0ZW5kZWRBdHRyaWJ1dGVMaXN0CiAgICAg
bXkgJGRhdGFOb2RlID0gc2hpZnQ7CiAgICAgbXkgJGV4dGVuZGVkQXR0cmlidXRlTGlzdCA9IHNo
aWZ0OwogCi0gICAgaWYgKGRlZmluZWQgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJDb25zdHJ1
Y3RvciJ9KSB7Ci0gICAgICAgIG15ICRuZXdEYXRhTm9kZSA9IG5ldyBkb21GdW5jdGlvbigpOwot
ICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShuZXcgZG9tU2lnbmF0dXJlKCkpOwotICAg
ICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+bmFtZSgiQ29uc3RydWN0b3IiKTsKLSAgICAg
ICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRB
dHRyaWJ1dGVMaXN0KTsKLSAgICAgICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+cGFyYW1ldGVyc30s
IEB7JGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJDb25zdHJ1Y3RvciJ9fSk7CisgICAgaWYgKGRl
ZmluZWQgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJDb25zdHJ1Y3RvcnMifSkgeworICAgICAg
ICBteSBAY29uc3RydWN0b3JQYXJhbXMgPSBAeyRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiQ29u
c3RydWN0b3JzIn19OworICAgICAgICBteSAkaW5kZXggPSAoQGNvbnN0cnVjdG9yUGFyYW1zID09
IDEpID8gMCA6IDE7CisgICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtIChAY29uc3RydWN0b3JQYXJh
bXMpIHsKKyAgICAgICAgICAgIG15ICRjb25zdHJ1Y3RvciA9IG5ldyBkb21GdW5jdGlvbigpOwor
ICAgICAgICAgICAgJGNvbnN0cnVjdG9yLT5zaWduYXR1cmUobmV3IGRvbVNpZ25hdHVyZSgpKTsK
KyAgICAgICAgICAgICRjb25zdHJ1Y3Rvci0+c2lnbmF0dXJlLT5uYW1lKCJDb25zdHJ1Y3RvciIp
OworICAgICAgICAgICAgJGNvbnN0cnVjdG9yLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKKyAgICAgICAgICAgICRjb25zdHJ1Y3Rvci0+cGFy
YW1ldGVycygkcGFyYW0pOworICAgICAgICAgICAgJGNvbnN0cnVjdG9yLT57b3ZlcmxvYWRlZElu
ZGV4fSA9ICRpbmRleCsrOworICAgICAgICAgICAgcHVzaChAeyRkYXRhTm9kZS0+Y29uc3RydWN0
b3JzfSwgJGNvbnN0cnVjdG9yKTsKKyAgICAgICAgfQorICAgICAgICBkZWxldGUgJGV4dGVuZGVk
QXR0cmlidXRlTGlzdC0+eyJDb25zdHJ1Y3RvcnMifTsKICAgICAgICAgJGV4dGVuZGVkQXR0cmli
dXRlTGlzdC0+eyJDb25zdHJ1Y3RvciJ9ID0gIlZBTFVFX0lTX01JU1NJTkciOwotICAgICAgICAk
ZGF0YU5vZGUtPmNvbnN0cnVjdG9yKCRuZXdEYXRhTm9kZSk7CiAgICAgfSBlbHNpZiAoZGVmaW5l
ZCAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57Ik5hbWVkQ29uc3RydWN0b3IifSkgewogICAgICAg
ICBteSAkbmV3RGF0YU5vZGUgPSBuZXcgZG9tRnVuY3Rpb24oKTsKICAgICAgICAgJG5ld0RhdGFO
b2RlLT5zaWduYXR1cmUobmV3IGRvbVNpZ25hdHVyZSgpKTsKQEAgLTIzOTksNyArMjQxMyw3IEBA
IHN1YiBhcHBseUV4dGVuZGVkQXR0cmlidXRlTGlzdAogICAgICAgICBteSAkY29uc3RydWN0b3JO
YW1lID0gJGF0dHJpYnV0ZUtleXNbMF07CiAgICAgICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPnBh
cmFtZXRlcnN9LCBAeyRhdHRyaWJ1dGVzeyRjb25zdHJ1Y3Rvck5hbWV9fSk7CiAgICAgICAgICRl
eHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9ID0gJGNvbnN0cnVjdG9y
TmFtZTsKLSAgICAgICAgJGRhdGFOb2RlLT5jb25zdHJ1Y3RvcigkbmV3RGF0YU5vZGUpOworICAg
ICAgICBwdXNoKEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3RvcnN9LCAkbmV3RGF0YU5vZGUpOwogICAg
IH0KICAgICAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVM
aXN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURM
U3RydWN0dXJlLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1
cmUucG0KaW5kZXggZmY2Mjg3MjVlYjkwZjU0NjY3M2ZkMTY0MWVmMWRjNWFjMjZjZGZjYi4uZjQ0
MzI0MTczZWEyY2UwZDQ0M2M2ZjU0ZGVmZGI1NGQ1MDM5Y2U4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0KKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0KQEAgLTQwLDcgKzQwLDcgQEAg
c3RydWN0KCBkb21DbGFzcyA9PiB7CiAgICAgZnVuY3Rpb25zID0+ICdAJywgICAgIyBMaXN0IG9m
ICdkb21GdW5jdGlvbicKICAgICBhdHRyaWJ1dGVzID0+ICdAJywgICAgIyBMaXN0IG9mICdkb21B
dHRyaWJ1dGUnICAgIAogICAgIGV4dGVuZGVkQXR0cmlidXRlcyA9PiAnJCcsICMgRXh0ZW5kZWQg
YXR0cmlidXRlcwotICAgIGNvbnN0cnVjdG9yID0+ICckJywgIyBDb25zdHJ1Y3RvcgorICAgIGNv
bnN0cnVjdG9ycyA9PiAnQCcsICMgQ29uc3RydWN0b3IKICAgICBpc0V4Y2VwdGlvbiA9PiAnJCcs
ICMgVXNlZCBmb3IgZXhjZXB0aW9uIGludGVyZmFjZXMKIH0pOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTVkZTlhNDIzYWViNTFkNmE0YWE5NDIwNDI4NzFm
YjVlOGYyNzkyNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0j
aWYgRU5BQkxFKFdFQl9TT0NLRVRTKQotCi0jaW5jbHVkZSAiVjhXZWJTb2NrZXQuaCIKLQotI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCi0jaW5jbHVkZSAiVjhBcnJheUJ1ZmZlci5oIgotI2luY2x1ZGUgIlY4QXJyYXlC
dWZmZXJWaWV3LmgiCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhCbG9iLmgi
Ci0jaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJXZWJTb2NrZXQuaCIKLSNpbmNs
dWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCi0jaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgotI2lu
Y2x1ZGUgIldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgotI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYlNvY2tldDo6Y29uc3RydWN0b3JDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLldlYlNv
Y2tldC5Db25zdHJ1Y3RvciIpOwotCi0gICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fu
bm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLQotICAg
IGlmIChDb25zdHJ1Y3Rvck1vZGU6OmN1cnJlbnQoKSA9PSBDb25zdHJ1Y3Rvck1vZGU6OldyYXBF
eGlzdGluZ09iamVjdCkKLSAgICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7Ci0KLSAgICBpZiAo
YXJncy5MZW5ndGgoKSA9PSAwKQotICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7Ci0KLSAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7
Ci0gICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiB1cmxzdHJpbmcgPSBhcmdzWzBdLT5Ub1N0cmlu
ZygpOwotICAgIGlmICh0cnlDYXRjaC5IYXNDYXVnaHQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
RXJyb3IodHJ5Q2F0Y2guRXhjZXB0aW9uKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAgICBpZiAo
dXJsc3RyaW5nLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoU3ludGF4RXJy
b3IsICJFbXB0eSBVUkwiLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0KLSAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGNv
bnN0IEtVUkwmIHVybCA9IGNvbnRleHQtPmNvbXBsZXRlVVJMKHRvV2ViQ29yZVN0cmluZyh1cmxz
dHJpbmcpKTsKLQotICAgIFJlZlB0cjxXZWJTb2NrZXQ+IHdlYlNvY2tldCA9IFdlYlNvY2tldDo6
Y3JlYXRlKGNvbnRleHQpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotCi0gICAgaWYgKGFy
Z3MuTGVuZ3RoKCkgPCAyKQotICAgICAgICB3ZWJTb2NrZXQtPmNvbm5lY3QodXJsLCBlYyk7Ci0g
ICAgZWxzZSB7Ci0gICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHByb3RvY29sc1ZhbHVlID0g
YXJnc1sxXTsKLSAgICAgICAgaWYgKHByb3RvY29sc1ZhbHVlLT5Jc0FycmF5KCkpIHsKLSAgICAg
ICAgICAgIFZlY3RvcjxTdHJpbmc+IHByb3RvY29sczsKLSAgICAgICAgICAgIHY4OjpMb2NhbDx2
ODo6QXJyYXk+IHByb3RvY29sc0FycmF5ID0gdjg6OkxvY2FsPHY4OjpBcnJheT46OkNhc3QocHJv
dG9jb2xzVmFsdWUpOwotICAgICAgICAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IHByb3Rv
Y29sc0FycmF5LT5MZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdjg6OlRyeUNhdGNo
IHRyeUNhdGNoUHJvdG9jb2w7Ci0gICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5n
PiBwcm90b2NvbCA9IHByb3RvY29sc0FycmF5LT5HZXQodjg6OkludDMyOjpOZXcoaSkpLT5Ub1N0
cmluZygpOwotICAgICAgICAgICAgICAgIGlmICh0cnlDYXRjaFByb3RvY29sLkhhc0NhdWdodCgp
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih0cnlDYXRjaFByb3RvY29s
LkV4Y2VwdGlvbigpLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgICAgICAgICAgICAgcHJvdG9j
b2xzLmFwcGVuZCh0b1dlYkNvcmVTdHJpbmcocHJvdG9jb2wpKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHdlYlNvY2tldC0+Y29ubmVjdCh1cmwsIHByb3RvY29scywgZWMpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoUHJvdG9jb2w7Ci0g
ICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHByb3RvY29sID0gcHJvdG9jb2xzVmFs
dWUtPlRvU3RyaW5nKCk7Ci0gICAgICAgICAgICBpZiAodHJ5Q2F0Y2hQcm90b2NvbC5IYXNDYXVn
aHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih0cnlDYXRjaFByb3RvY29s
LkV4Y2VwdGlvbigpLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgICAgICAgICB3ZWJTb2NrZXQt
PmNvbm5lY3QodXJsLCB0b1dlYkNvcmVTdHJpbmcocHJvdG9jb2wpLCBlYyk7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBh
cmdzLkdldElzb2xhdGUoKSk7Ci0KLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIg
PSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcih3cmFwcGVy
LCAmaW5mbywgd2ViU29ja2V0LmdldCgpKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBl
ckZvckRPTU9iamVjdCh3ZWJTb2NrZXQucmVsZWFzZSgpLCB3cmFwcGVyKTsKLSAgICByZXR1cm4g
d3JhcHBlcjsKLX0KLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViU29ja2V0OjpzZW5kQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5X
ZWJTb2NrZXQuc2VuZCgpIik7Ci0KLSAgICBpZiAoIWFyZ3MuTGVuZ3RoKCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLQot
ICAgIFdlYlNvY2tldCogd2ViU29ja2V0ID0gVjhXZWJTb2NrZXQ6OnRvTmF0aXZlKGFyZ3MuSG9s
ZGVyKCkpOwotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXNzYWdlID0gYXJnc1swXTsKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBib29sIHJlc3VsdDsKLSAgICBpZiAoVjhBcnJh
eUJ1ZmZlcjo6SGFzSW5zdGFuY2UobWVzc2FnZSkpIHsKLSAgICAgICAgQXJyYXlCdWZmZXIqIGFy
cmF5QnVmZmVyID0gVjhBcnJheUJ1ZmZlcjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdChtZXNzYWdlKSk7Ci0gICAgICAgIEFTU0VSVChhcnJheUJ1ZmZlcik7Ci0gICAgICAg
IHJlc3VsdCA9IHdlYlNvY2tldC0+c2VuZChhcnJheUJ1ZmZlciwgZWMpOwotICAgIH0gZWxzZSBp
ZiAoVjhBcnJheUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKG1lc3NhZ2UpKSB7Ci0gICAgICAgIEFy
cmF5QnVmZmVyVmlldyogYXJyYXlCdWZmZXJWaWV3ID0gVjhBcnJheUJ1ZmZlclZpZXc6OnRvTmF0
aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QobWVzc2FnZSkpOwotICAgICAgICBBU1NF
UlQoYXJyYXlCdWZmZXJWaWV3KTsKLSAgICAgICAgcmVzdWx0ID0gd2ViU29ja2V0LT5zZW5kKGFy
cmF5QnVmZmVyVmlldywgZWMpOwotICAgIH0gZWxzZSBpZiAoVjhCbG9iOjpIYXNJbnN0YW5jZSht
ZXNzYWdlKSkgewotICAgICAgICBCbG9iKiBibG9iID0gVjhCbG9iOjp0b05hdGl2ZSh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+OjpDYXN0KG1lc3NhZ2UpKTsKLSAgICAgICAgQVNTRVJUKGJsb2IpOwot
ICAgICAgICByZXN1bHQgPSB3ZWJTb2NrZXQtPnNlbmQoYmxvYiwgZWMpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6
U3RyaW5nPiBzdHJpbmdNZXNzYWdlID0gbWVzc2FnZS0+VG9TdHJpbmcoKTsKLSAgICAgICAgaWYg
KHRyeUNhdGNoLkhhc0NhdWdodCgpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IodHJ5
Q2F0Y2guRXhjZXB0aW9uKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAgICAgICAgcmVzdWx0ID0g
d2ViU29ja2V0LT5zZW5kKHRvV2ViQ29yZVN0cmluZyhzdHJpbmdNZXNzYWdlKSwgZWMpOwotICAg
IH0KLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKLQotICAgIHJldHVybiB2OEJvb2xlYW4ocmVzdWx0LCBhcmdzLkdldElz
b2xhdGUoKSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAgLy8gRU5B
QkxFKFdFQl9TT0NLRVRTKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171712</attachid>
            <date>2012-10-31 13:41:39 -0700</date>
            <delta_ts>2012-10-31 14:08:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100801-20121031214002.patch</filename>
            <type>text/plain</type>
            <size>28381</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDdkZWRlOTdkNjg4Yjc1
YTM0MDdlMDIwYWZiOGNlZDYxNGI4YmMzMS4uMTAzMmM5ZjEzMTMyZDkyNWFhMTAwMTQxNjUyMmI1
NDNiZTQxNzAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTEwLTMxICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBtb3N0
IG9mIHRoZSBjdXN0b20gY29kZSBmb3IgV2ViU29ja2V0cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwODAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHRoZSBmb2xsb3dpbmc6
CisKKyAgICAgICAgMSkgTW9kaWZpZXMgdGhlIFY4IGNvZGUgZ2VuZXJhdG9yIHRvIHN1cHBvcnQg
b3ZlcmxvYWRlZCBjb25zdHJ1Y3RvcnMsCisgICAgICAgICAgIHRoZSBKUyBnZW5lcmF0b3IgaXMg
Zml4ZWQgdG8gd29yayBhcyBiZWZvcmUuIFByb3BlciBzdXBwb3J0IGZvciBKUyB3aWxsIGNvbWUg
bGF0ZXIuCisKKyAgICAgICAgMikgTW9kaWZpZXMgV2ViU29ja2V0LmgvLmNwcCBmb3IgdGhlIG5l
dyBjb25zdHJ1Y3RvcnMuCisKKyAgICAgICAgMykgTW9kaWZpZXMgV2ViU29ja2V0LmgvLmNwcC8u
aWRsIHRvIG5vdCBoYXZlIGN1c3RvbSBjb2RlIGZvciB0aGUgc2VuZCBtZXRob2QuCisKKyAgICAg
ICAgVGVzdGVkIGJ5IHJ1bm5pbmcgV2ViU29ja2V0cyBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAg
KiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldDo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
Lmg6CisgICAgICAgIChXZWJTb2NrZXQpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuaWRsOgorICAgICAgICAqIFVzZVY4LmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHA6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5l
cmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChH
ZW5lcmF0ZU92ZXJsb2FkZWRDb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKEdlbmVyYXRl
U2luZ2xlQ29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9y
Q2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgIChjb3B5QXR0cmlidXRlcyk6
CisgICAgICAgIChwYXJzZUV4dGVuZGVkQXR0cmlidXRlTGlzdCk6CisgICAgICAgIChwYXJzZUV4
dGVuZGVkQXR0cmlidXRlcyk6CisgICAgICAgIChhcHBseUV4dGVuZGVkQXR0cmlidXRlTGlzdCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG06CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcDogUmVtb3ZlZC4KKwogMjAx
Mi0xMC0yOSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFtRdF0gVGV4dCB3aXRoIHplcm8gZm9udCBzaXplIHJlbmRlcnMgYXMgWCBweCBzb21ldGltZXMs
IGNhdXNpbmcgZmFzdC90ZXh0L3plcm8tZm9udC1zaXplLTIuaHRtbCB0byBmYWlsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDQ2ZDYy
ZGU4OWY0NjY4ZmU3YTE1MWZlZWQ1MzExMzgyNDczMDI3ZGEuLmQ4YjBiMWI0OTA4ZTNlZjA3NTUx
Y2EwNmE2NjljMjVlOWIwOWJlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0xNTcsMjQgKzE1NywzNSBAQCBXZWJTb2NrZXQ6On5X
ZWJTb2NrZXQoKQogICAgICAgICBtX2NoYW5uZWwtPmRpc2Nvbm5lY3QoKTsKIH0KIAotUGFzc1Jl
ZlB0cjxXZWJTb2NrZXQ+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCitQYXNzUmVmUHRyPFdlYlNvY2tldD4gV2ViU29ja2V0OjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewotICAgIFJlZlB0cjxXZWJTb2NrZXQ+IHdlYlNvY2tldChhZG9wdFJlZihuZXcg
V2ViU29ja2V0KGNvbnRleHQpKSk7Ci0gICAgd2ViU29ja2V0LT5zdXNwZW5kSWZOZWVkZWQoKTsK
LSAgICByZXR1cm4gd2ViU29ja2V0LnJlbGVhc2UoKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBwcm90
b2NvbHM7CisgICAgcmV0dXJuIFdlYlNvY2tldDo6Y3JlYXRlKGNvbnRleHQsIHVybCwgcHJvdG9j
b2xzLCBlYyk7CiB9CiAKLXZvaWQgV2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IFN0cmluZyYgdXJs
LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8V2ViU29ja2V0PiBXZWJTb2NrZXQ6OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHByb3RvY29scywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0g
ICAgVmVjdG9yPFN0cmluZz4gcHJvdG9jb2xzOwotICAgIGNvbm5lY3QodXJsLCBwcm90b2NvbHMs
IGVjKTsKKyAgICBpZiAodXJsLmlzTnVsbCgpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgUmVmUHRyPFdlYlNvY2tldD4gd2ViU29j
a2V0KGFkb3B0UmVmKG5ldyBXZWJTb2NrZXQoY29udGV4dCkpKTsKKyAgICB3ZWJTb2NrZXQtPnN1
c3BlbmRJZk5lZWRlZCgpOworCisgICAgd2ViU29ja2V0LT5jb25uZWN0KGNvbnRleHQtPmNvbXBs
ZXRlVVJMKHVybCksIHByb3RvY29scywgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICByZXR1cm4gd2ViU29ja2V0LnJlbGVhc2UoKTsKIH0KIAotdm9pZCBXZWJTb2Nr
ZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEV4
Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IFdlYlNvY2tldDo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIHByb3RvY29sLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBWZWN0b3I8U3Ry
aW5nPiBwcm90b2NvbHM7Ci0gICAgcHJvdG9jb2xzLmFwcGVuZChwcm90b2NvbCk7Ci0gICAgY29u
bmVjdCh1cmwsIHByb3RvY29scywgZWMpOworICAgIGlmICghcHJvdG9jb2wuaXNOdWxsKCkpCisg
ICAgICAgIHByb3RvY29scy5hcHBlbmQocHJvdG9jb2wpOworICAgIHJldHVybiBXZWJTb2NrZXQ6
OmNyZWF0ZShjb250ZXh0LCB1cmwsIHByb3RvY29scywgZWMpOwogfQogCiB2b2lkIFdlYlNvY2tl
dDo6Y29ubmVjdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByb3Rv
Y29scywgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmgKaW5kZXggYTkzNTUyOGJhMjQ2MTIyMTkyN2Q1YjMzZTFiNWNmNjU5
NzRjNDRkMi4uMTQ2MGViNDFhZDQ1ZDcyY2RmN2RhMTZiY2E2YjFiNmFjZmNlMjcwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApAQCAtNTUsNyAr
NTUsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0SXNBdmFpbGFibGUoYm9vbCk7CiAg
ICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3Vi
UHJvdG9jb2xTZXBlcmF0b3IoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2Vi
U29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdXJs
LCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29ja2V0PiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHByb3RvY29sLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2Vi
U29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvdG9jb2xzLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
dmlydHVhbCB+V2ViU29ja2V0KCk7CiAKICAgICBlbnVtIFN0YXRlIHsKQEAgLTY1LDggKzY3LDYg
QEAgcHVibGljOgogICAgICAgICBDTE9TRUQgPSAzCiAgICAgfTsKIAotICAgIHZvaWQgY29ubmVj
dChjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgY29ubmVjdChj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRXhjZXB0aW9uQ29kZSYp
OwogICAgIHZvaWQgY29ubmVjdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHByb3RvY29scywgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgYm9vbCBzZW5kKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAppbmRleCA3MmNmNWQ0ZTljYzE3YmM5MmY3Mzhm
MDliZTY4YWNiMjAxMWVlOTQ3Li5hY2UwMDhhYTU1NThjYjVlNTgzYTIyZmIzYmJhYjU4MzE3YzU3
MGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
LmlkbApAQCAtMzIsMTAgKzMyLDE0IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCX1NPQ0tFVFMs
CiAgICAgQWN0aXZlRE9NT2JqZWN0LAotICAgIEN1c3RvbUNvbnN0cnVjdG9yLAotICAgIENvbnN0
cnVjdG9yUGFyYW1ldGVycz0xLAorICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyB1cmwpLAor
ICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyB1cmwsIGluIHNlcXVlbmNlPFN0cmluZz4gcHJv
dG9jb2xzKSwKKyAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgdXJsLCBpbiBET01TdHJpbmcg
cHJvdG9jb2wpLAorICAgIENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uLAorICAgIENhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgRXZlbnRUYXJnZXQsCi0gICAgSlNOb1N0YXRp
Y1RhYmxlcworICAgIEpTTm9TdGF0aWNUYWJsZXMsCisgICAgSlNDdXN0b21Db25zdHJ1Y3RvciwK
IF0gaW50ZXJmYWNlIFdlYlNvY2tldCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBVUkw7IC8vIExvd2VyY2FzZWQgLnVybCBpcyB0aGUgb25lIGluIHRoZSBzcGVjLCBidXQgbGVh
dmluZyAuVVJMIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMuCiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyB1cmw7CkBAIC02MCwxNiArNjQsMTQgQEAKIAogICAgIGF0dHJpYnV0ZSBE
T01TdHJpbmcgYmluYXJ5VHlwZTsKIAotICAgIC8vIEZJWE1FOiBVc2Ugb3ZlcmxvYWRpbmcgcHJv
dmlkZWQgYnkgb3VyIElETCBjb2RlIGdlbmVyYXRvci4KLSAgICAvLyBBY2NvcmRpbmcgdG8gV2Vi
IElETCBzcGVjaWZpY2F0aW9uLCBvdmVybG9hZGVkIGZ1bmN0aW9uIHdpdGggRE9NU3RyaW5nIGFy
Z3VtZW50Ci0gICAgLy8gc2hvdWxkIGFjY2VwdCBhbnl0aGluZyB0aGF0IGNhbiBiZSBjb252ZXJ0
ZWQgdG8gYSBzdHJpbmcgKGluY2x1ZGluZyBudW1iZXJzLAotICAgIC8vIGJvb2xlYW5zLCBudWxs
LCB1bmRlZmluZWQgYW5kIG9iamVjdHMgZXhjZXB0IEFycmF5QnVmZmVyIGFuZCBCbG9iKS4gQ3Vy
cmVudCBjb2RlCi0gICAgLy8gZ2VuZXJhdG9yIGRvZXMgbm90IGhhbmRsZSB0aGlzIHJ1bGUgY29y
cmVjdGx5LgotICAgIC8vIGJvb2xlYW4gc2VuZChpbiBBcnJheUJ1ZmZlciBkYXRhKSByYWlzZXMo
RE9NRXhjZXB0aW9uKTsKLSAgICAvLyBib29sZWFuIHNlbmQoaW4gQXJyYXlCdWZmZXJWaWV3IGRh
dGEpIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgIC8vIGJvb2xlYW4gc2VuZChpbiBCbG9iIGRh
dGEpIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgIC8vIGJvb2xlYW4gc2VuZChpbiBET01TdHJp
bmcgZGF0YSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgW0N1c3RvbV0gYm9vbGVhbiBzZW5k
KGluIERPTVN0cmluZyBkYXRhKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICBib29sZWFuIHNl
bmQoaW4gQXJyYXlCdWZmZXIgZGF0YSkKKyAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7Cisg
ICAgYm9vbGVhbiBzZW5kKGluIEFycmF5QnVmZmVyVmlldyBkYXRhKQorICAgICAgICByYWlzZXMo
RE9NRXhjZXB0aW9uKTsKKyAgICBib29sZWFuIHNlbmQoaW4gQmxvYiBkYXRhKQorICAgICAgICBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICBib29sZWFuIHNlbmQoaW4gRE9NU3RyaW5nIGRhdGEp
CisgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAgICAgdm9pZCBjbG9zZShpbiBbQ2xh
bXAsIE9wdGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBjb2RlLCBpbiBbT3B0aW9uYWxdIERPTVN0cmlu
ZyByZWFzb24pIHJhaXNlcyhET01FeGNlcHRpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Vc2VWOC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtlCmluZGV4IDgyYjFk
YTRmYWZiYzc2YTQ4MTNkMTk3ZDdjMGZiNzhiMzZhMTIwNTQuLmQ2NTMyODgyZThlMWVlM2NiODU1
ZGQ4YTFjZjEyZTFhZjM0MjY5ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1VzZVY4LmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtlCkBAIC0xNTAsNyArMTUwLDYgQEAg
TElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdl
YktpdEFuaW1hdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQ
b2ludENvbnN0cnVjdG9yLmNwcAotICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1
c3RvbS5jcHAKICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHAKICAgICBiaW5kaW5n
cy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CmluZGV4IGFhZDAyYzkxZTdjMmJlMTA1ZDNmMDBhMDRhZmM2ODhkNTc0MGNhODMuLmZmN2YwNDMy
Y2NlNjhlODQ2YjZmMjY0MDZkYjRkYzU5N2Y0ZDAxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI0
NTcsNyArMjQ1Nyw2IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4V2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5jcHAnLAotICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHAKaW5kZXgg
NWFlNDE1OWRjOWYxN2Y0NWNjZmZlZjQ5ODlkNzE5NmJjMGQ4MDI5YS4uNThmZWFlMzJiOTczZWFl
MDhhNDcwOWQwZDRmYzg2NzlkNzM1NDQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcApAQCAtOTEsMzQgKzkxLDYgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1dlYlNvY2tldENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1dl
YlNvY2tldChFeGVjU3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKENSRUFURV9ET01fV1JB
UFBFUihleGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgV2ViU29ja2V0LCB3ZWJT
b2NrZXQuZ2V0KCkpKTsKIH0KIAotSlNWYWx1ZSBKU1dlYlNvY2tldDo6c2VuZChFeGVjU3RhdGUq
IGV4ZWMpCi17Ci0gICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVy
biB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsK
LQotICAgIEpTVmFsdWUgbWVzc2FnZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIGJvb2wgcmVzdWx0OwotICAgIGlmIChtZXNzYWdlLmluaGVyaXRz
KCZKU0FycmF5QnVmZmVyOjpzX2luZm8pKQotICAgICAgICByZXN1bHQgPSBpbXBsKCktPnNlbmQo
dG9BcnJheUJ1ZmZlcihtZXNzYWdlKSwgZWMpOwotICAgIGVsc2UgaWYgKG1lc3NhZ2UuaW5oZXJp
dHMoJkpTQXJyYXlCdWZmZXJWaWV3OjpzX2luZm8pKQotICAgICAgICByZXN1bHQgPSBpbXBsKCkt
PnNlbmQodG9BcnJheUJ1ZmZlclZpZXcobWVzc2FnZSksIGVjKTsKLSAgICBlbHNlIGlmIChtZXNz
YWdlLmluaGVyaXRzKCZKU0Jsb2I6OnNfaW5mbykpCi0gICAgICAgIHJlc3VsdCA9IGltcGwoKS0+
c2VuZCh0b0Jsb2IobWVzc2FnZSksIGVjKTsKLSAgICBlbHNlIHsKLSAgICAgICAgU3RyaW5nIHN0
cmluZ01lc3NhZ2UgPSBtZXNzYWdlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKLSAgICAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7Ci0gICAgICAgIHJlc3VsdCA9IGltcGwoKS0+c2VuZChzdHJpbmdNZXNzYWdlLCBlYyk7
Ci0gICAgfQotICAgIGlmIChlYykgewotICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMp
OwotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4ganNC
b29sZWFuKHJlc3VsdCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CmluZGV4IDI4ZWE1ZGJiMjBkZWRhMGNkZWM3ZThiYTZlYjlhM2Y4NTdiYzMxODUuLjM0N2FlZjRj
ZTI1OGUyZDVhMzBiNWIwYzc0M2UwZWQ1NjQ5MTZjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0zNzEwLDEzICszNzEw
LDE3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgogICAgIG15ICRkYXRhTm9k
ZSA9IHNoaWZ0OwogICAgIG15ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciA9IHNoaWZ0Owog
CisgICAgIyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG92ZXJsb2FkZWQgY29uc3RydWN0b3JzIHRv
IGpTIGFzIHdlbGwuCisgICAgIyBGb3Igbm93IG1pbWljIHRoZSBvbGQgYmVoYXZpb3VyIGJ5IG9u
bHkgZ2VuZXJhdGluZyBjb2RlIGZvciB0aGUgbGFzdCAiQ29uc3RydWN0b3IiIGF0dHJpYnV0ZS4K
KyAgICBteSAkZnVuY3Rpb24gPSBAeyRkYXRhTm9kZS0+Y29uc3RydWN0b3JzfVstMV07CisKICAg
ICBteSAkY29uc3RydWN0b3JDbGFzc05hbWUgPSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3Ig
PyAiJHtjbGFzc05hbWV9TmFtZWRDb25zdHJ1Y3RvciIgOiAiJHtjbGFzc05hbWV9Q29uc3RydWN0
b3IiOwogICAgIG15ICRudW1iZXJPZkNvbnN0cnVjdG9yUGFyYW1ldGVycyA9ICRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yUGFyYW1ldGVycyJ9OwogICAgIGlmICgh
ZGVmaW5lZCAkbnVtYmVyT2ZDb25zdHJ1Y3RvclBhcmFtZXRlcnMpIHsKICAgICAgICAgaWYgKCRj
b2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVGVtcGxhdGUoJGRhdGFOb2RlLCAiRXZlbnQiKSkg
ewogICAgICAgICAgICAgJG51bWJlck9mQ29uc3RydWN0b3JQYXJhbWV0ZXJzID0gMjsKICAgICAg
ICAgfSBlbHNpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3Ii
fSkgewotICAgICAgICAgICAgJG51bWJlck9mQ29uc3RydWN0b3JQYXJhbWV0ZXJzID0gQHskZGF0
YU5vZGUtPmNvbnN0cnVjdG9yLT5wYXJhbWV0ZXJzfTsKKyAgICAgICAgICAgICRudW1iZXJPZkNv
bnN0cnVjdG9yUGFyYW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKICAgICAgICAg
fQogICAgIH0KIApAQCAtMzg2OSw3ICszODczLDYgQEAgRU5ECiAKICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSogY2FzdGVkVGhpcyA9
IGpzQ2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+KGV4ZWMtPmNhbGxlZSgpKTtcbiIpOwog
Ci0gICAgICAgICAgICBteSAkZnVuY3Rpb24gPSAkZGF0YU5vZGUtPmNvbnN0cnVjdG9yOwogICAg
ICAgICAgICAgbXkgQGNvbnN0cnVjdG9yQXJnTGlzdDsKIAogICAgICAgICAgICAgJGltcGxJbmNs
dWRlc3siPHJ1bnRpbWUvRXJyb3IuaD4ifSA9IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDM5N2QyYzM4ZTM2MjA0Mjdl
NmIzZjEwZTNhZDgyMTRiZGYwZGZlMjguLmU2MTUxMTJjZGU4Yjc5MmZmMzFkNzQxY2ZlMmFjYmYz
YmQ4MTZjMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtCkBAIC00OTUsNiArNDk1LDE3IEBAIEVORAogICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsIDw8RU5EKTsKIHByaXZhdGU6CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd3JhcFNsb3coJHt3cmFwU2xvd0FyZ3VtZW50VHlwZX0sIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOworRU5ECisKKyAgICBpZiAoSXND
b25zdHJ1Y3RhYmxlKCRkYXRhTm9kZSkgJiYgQHskZGF0YU5vZGUtPmNvbnN0cnVjdG9yc30gPiAx
KSB7CisgICAgICAgIGZvciAobXkgJGkgPSAxOyAkaSA8PSBAeyRkYXRhTm9kZS0+Y29uc3RydWN0
b3JzfTsgJGkrKykgeworICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7Cisg
ICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvciR7aX1DYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJik7CitFTkQKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKIH07CiAKIEVORApAQCAtMTg2MiwxMSArMTg3Myw1MSBA
QCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICByZXR1cm4gKCRwYXJhbWV0ZXJDaGVj
a1N0cmluZywgJHBhcmFtSW5kZXgsICVyZXBsYWNlbWVudHMpOwogfQogCi1zdWIgR2VuZXJhdGVD
b25zdHJ1Y3RvckNhbGxiYWNrCitzdWIgR2VuZXJhdGVPdmVybG9hZGVkQ29uc3RydWN0b3JDYWxs
YmFjawogewotICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OwogICAgIG15ICRkYXRhTm9kZSA9IHNo
aWZ0OwogICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7CisgICAgCisgICAgcHVzaChAaW1w
bENvbnRlbnQsIDw8RU5EKTsKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOCR7aW1wbENsYXNzTmFt
ZX06OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAg
ICBJTkNfU1RBVFMoIkRPTS4ke2ltcGxDbGFzc05hbWV9LkNvbnN0cnVjdG9yIik7CisgICAgaWYg
KCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
IkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIp
OworCisgICAgaWYgKENvbnN0cnVjdG9yTW9kZTo6Y3VycmVudCgpID09IENvbnN0cnVjdG9yTW9k
ZTo6V3JhcEV4aXN0aW5nT2JqZWN0KQorICAgICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKKwor
RU5ECisKKyAgICBteSAkbGVhc3ROdW1NYW5kYXRvcnlQYXJhbXMgPSAyNTU7CisgICAgZm9yZWFj
aCBteSAkY29uc3RydWN0b3IgKEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3RvcnN9KSB7CisgICAgICAg
IG15ICRuYW1lID0gImNvbnN0cnVjdG9yIiAuICRjb25zdHJ1Y3Rvci0+e292ZXJsb2FkZWRJbmRl
eH0gLiAiQ2FsbGJhY2siOworICAgICAgICBteSAoJG51bU1hbmRhdG9yeVBhcmFtcywgJHBhcmFt
ZXRlcnNDaGVjaykgPSBHZW5lcmF0ZUZ1bmN0aW9uUGFyYW1ldGVyc0NoZWNrKCRjb25zdHJ1Y3Rv
cik7CisgICAgICAgICRsZWFzdE51bU1hbmRhdG9yeVBhcmFtcyA9ICRudW1NYW5kYXRvcnlQYXJh
bXMgaWYgKCRudW1NYW5kYXRvcnlQYXJhbXMgPCAkbGVhc3ROdW1NYW5kYXRvcnlQYXJhbXMpOwor
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoJHBhcmFtZXRlcnNDaGVjaylcbiIp
OworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuICRuYW1lKGFyZ3Mp
O1xuIik7CisgICAgfQorICAgIGlmICgkbGVhc3ROdW1NYW5kYXRvcnlQYXJhbXMgPj0gMSkgewor
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoYXJncy5MZW5ndGgoKSA8ICRsZWFz
dE51bU1hbmRhdG9yeVBhcmFtcylcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRl
KCkpO1xuIik7CisgICAgfQorICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CisgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKDAsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKK0VORAorICAgIHB1c2go
QGltcGxDb250ZW50LCAifVxuXG4iKTsKK30KKworc3ViIEdlbmVyYXRlU2luZ2xlQ29uc3RydWN0
b3JDYWxsYmFjaworeworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworICAgIG15ICRpbXBsQ2xh
c3NOYW1lID0gc2hpZnQ7CisgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CisKKyAgICBteSAkb3Zl
cmxvYWRlZEluZGV4U3RyaW5nID0gIiI7CisgICAgaWYgKCRmdW5jdGlvbi0+e292ZXJsb2FkZWRJ
bmRleH0gPiAwKSB7CisgICAgICAgICRvdmVybG9hZGVkSW5kZXhTdHJpbmcgLj0gJGZ1bmN0aW9u
LT57b3ZlcmxvYWRlZEluZGV4fTsKKyAgICB9CiAKICAgICBteSAkcmFpc2VzRXhjZXB0aW9ucyA9
IEB7JGZ1bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25zfTsKICAgICBpZiAoJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24ifSkgewpAQCAtMTg4
NSwxOCArMTkzNiwyMiBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckNhbGxiYWNrCiAgICAgbXkg
QGJlZm9yZUFyZ3VtZW50TGlzdDsKICAgICBteSBAYWZ0ZXJBcmd1bWVudExpc3Q7CiAgICAgcHVz
aChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOCR7aW1wbENs
YXNzTmFtZX06OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
K3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOCR7aW1wbENsYXNzTmFtZX06OmNvbnN0cnVjdG9yJHtv
dmVybG9hZGVkSW5kZXhTdHJpbmd9Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS4ke2ltcGxDbGFzc05hbWV9LkNvbnN0cnVjdG9yIik7Cisg
ICAgSU5DX1NUQVRTKCJET00uJHtpbXBsQ2xhc3NOYW1lfS5Db25zdHJ1Y3RvciR7b3ZlcmxvYWRl
ZEluZGV4U3RyaW5nfSIpOwogICAgICR7bWF5YmVPYnNlcnZlRmVhdHVyZX0KK0VORAorCisgICAg
aWYgKCRmdW5jdGlvbi0+e292ZXJsb2FkZWRJbmRleH0gPT0gMCkgeworICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCA8PEVORCk7CiAgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90
IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIpOwogCiAgICAgaWYgKENvbnN0cnVjdG9yTW9kZTo6
Y3VycmVudCgpID09IENvbnN0cnVjdG9yTW9kZTo6V3JhcEV4aXN0aW5nT2JqZWN0KQogICAgICAg
ICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKIEVORAotCi0gICAgcHVzaChAaW1wbENvbnRlbnQsIEdl
bmVyYXRlQXJndW1lbnRzQ291bnRDaGVjaygkZnVuY3Rpb24sICRkYXRhTm9kZSkpOworICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKCRmdW5jdGlv
biwgJGRhdGFOb2RlKSk7CisgICAgfQogCiAgICAgaWYgKCRyYWlzZXNFeGNlcHRpb25zKSB7CiAg
ICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJFeGNlcHRpb25Db2RlLmgiKTsKQEAgLTE5NjAsNiAr
MjAxNSwyMSBAQCBFTkQKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7CiB9CiAKK3N1YiBH
ZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbGJhY2sKK3sKKyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsK
KyAgICBteSAkaW1wbENsYXNzTmFtZSA9IHNoaWZ0OworCisgICAgaWYgKEB7JGRhdGFOb2RlLT5j
b25zdHJ1Y3RvcnN9ID09IDEpIHsKKyAgICAgICAgR2VuZXJhdGVTaW5nbGVDb25zdHJ1Y3RvckNh
bGxiYWNrKCRkYXRhTm9kZSwgJGltcGxDbGFzc05hbWUsIEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3Rv
cnN9WzBdKTsKKyAgICB9IGVsc2UgeworICAgICAgICBmb3JlYWNoIG15ICRjb25zdHJ1Y3RvciAo
QHskZGF0YU5vZGUtPmNvbnN0cnVjdG9yc30pIHsKKyAgICAgICAgICAgIEdlbmVyYXRlU2luZ2xl
Q29uc3RydWN0b3JDYWxsYmFjaygkZGF0YU5vZGUsICRpbXBsQ2xhc3NOYW1lLCAkY29uc3RydWN0
b3IpOworICAgICAgICB9CisgICAgICAgIEdlbmVyYXRlT3ZlcmxvYWRlZENvbnN0cnVjdG9yQ2Fs
bGJhY2soJGRhdGFOb2RlLCAkaW1wbENsYXNzTmFtZSk7CisgICAgfQorfQorCiBzdWIgR2VuZXJh
dGVFdmVudENvbnN0cnVjdG9yQ2FsbGJhY2sKIHsKICAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsK
QEAgLTI4MzksOSArMjkwOSw5IEBAIEVORAogICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICJ9
IC8vIG5hbWVzcGFjZSAke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbFxuXG4iKTsKIAogICAgIGlm
ICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1lZENvbnN0cnVjdG9yIn0gJiYg
ISgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1c3RvbUNvbnN0cnVjdG9yIn0g
fHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3IifSkp
IHsKLSAgICAgICAgR2VuZXJhdGVOYW1lZENvbnN0cnVjdG9yQ2FsbGJhY2soJGRhdGFOb2RlLT5j
b25zdHJ1Y3RvciwgJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CisgICAgICAgIEdlbmVyYXRl
TmFtZWRDb25zdHJ1Y3RvckNhbGxiYWNrKEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3RvcnN9WzBdLCAk
ZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lKTsKICAgICB9IGVsc2lmICgkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvciJ9ICYmICEoJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiVjhDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0pKSB7Ci0gICAgICAgIEdlbmVyYXRlQ29u
c3RydWN0b3JDYWxsYmFjaygkZGF0YU5vZGUtPmNvbnN0cnVjdG9yLCAkZGF0YU5vZGUsICRpbnRl
cmZhY2VOYW1lKTsKKyAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckNhbGxiYWNrKCRkYXRhTm9k
ZSwgJGludGVyZmFjZU5hbWUpOwogICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0
cnVjdG9yVGVtcGxhdGUoJGRhdGFOb2RlLCAiRXZlbnQiKSkgewogICAgICAgICBHZW5lcmF0ZUV2
ZW50Q29uc3RydWN0b3JDYWxsYmFjaygkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lKTsKICAgICB9
IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclRlbXBsYXRlKCRkYXRhTm9kZSwg
IlR5cGVkQXJyYXkiKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9JRExQYXJzZXIucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBh
cnNlci5wbQppbmRleCAxOWZiNjQ5NWMzMWIxZmI1NmQ3ZTZhOWYxNTBkYjk1OTgyYzc0NzEyLi40
MjVjMTliZWI3ZDgxYTk3MDU5MThhODBlMzQ4OWNhMDI3NTI5NDJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQpAQCAtMTMyMyw2ICsxMzIzLDIwIEBA
IHN1YiBwYXJzZUV4dGVuZGVkQXR0cmlidXRlTGlzdEFsbG93RW1wdHkKICAgICByZXR1cm4ge307
CiB9CiAKK3N1YiBjb3B5QXR0cmlidXRlcworeworICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZUxp
c3QgPSBzaGlmdDsKKyAgICBteSAkYXR0ciA9IHNoaWZ0OworCisgICAgZm9yIG15ICRrZXkgKGtl
eXMgJXskYXR0cn0pIHsKKyAgICAgICAgaWYgKCRrZXkgZXEgIkNvbnN0cnVjdG9yIikgeworICAg
ICAgICAgICAgcHVzaChAeyRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiQ29uc3RydWN0b3JzIn19
LCAkYXR0ci0+eyRrZXl9KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRleHRlbmRl
ZEF0dHJpYnV0ZUxpc3QtPnska2V5fSA9ICRhdHRyLT57JGtleX07CisgICAgICAgIH0KKyAgICB9
Cit9CisKIHN1YiBwYXJzZUV4dGVuZGVkQXR0cmlidXRlTGlzdAogewogICAgIG15ICRzZWxmID0g
c2hpZnQ7CkBAIC0xMzMxLDEzICsxMzQ1LDkgQEAgc3ViIHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVM
aXN0CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAi
WyIsIF9fTElORV9fKTsKICAgICAgICAgbXkgJGV4dGVuZGVkQXR0cmlidXRlTGlzdCA9IHt9Owog
ICAgICAgICBteSAkYXR0ciA9ICRzZWxmLT5wYXJzZUV4dGVuZGVkQXR0cmlidXRlKCk7Ci0gICAg
ICAgIGZvciBteSAka2V5IChrZXlzICV7JGF0dHJ9KSB7Ci0gICAgICAgICAgICAkZXh0ZW5kZWRB
dHRyaWJ1dGVMaXN0LT57JGtleX0gPSAkYXR0ci0+eyRrZXl9OwotICAgICAgICB9CisgICAgICAg
IGNvcHlBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QsICRhdHRyKTsKICAgICAgICAg
JGF0dHIgPSAkc2VsZi0+cGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoKTsKLSAgICAgICAgZm9yIG15
ICRrZXkgKGtleXMgJXskYXR0cn0pIHsKLSAgICAgICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZUxp
c3QtPnska2V5fSA9ICRhdHRyLT57JGtleX07Ci0gICAgICAgIH0KKyAgICAgICAgY29weUF0dHJp
YnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCwgJGF0dHIpOwogICAgICAgICAkc2VsZi0+YXNz
ZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIl0iLCBfX0xJTkVfXyk7CiAgICAgICAg
IHJldHVybiAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0OwogICAgIH0KQEAgLTEzNTQsOSArMTM2NCw3
IEBAIHN1YiBwYXJzZUV4dGVuZGVkQXR0cmlidXRlcwogICAgICAgICBpZiAoJG5leHQtPnZhbHVl
KCkgZXEgIiwiKSB7CiAgICAgICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+
Z2V0VG9rZW4oKSwgIiwiLCBfX0xJTkVfXyk7CiAgICAgICAgICAgICBteSAkYXR0ciA9ICRzZWxm
LT5wYXJzZUV4dGVuZGVkQXR0cmlidXRlMigpOwotICAgICAgICAgICAgZm9yIG15ICRrZXkgKGtl
eXMgJXskYXR0cn0pIHsKLSAgICAgICAgICAgICAgICAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57
JGtleX0gPSAkYXR0ci0+eyRrZXl9OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgY29weUF0
dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCwgJGF0dHIpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgbGFzdDsKICAgICAgICAgfQpAQCAtMjM4MSwxNCArMjM4OSwyMCBAQCBz
dWIgYXBwbHlFeHRlbmRlZEF0dHJpYnV0ZUxpc3QKICAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsK
ICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0ID0gc2hpZnQ7CiAKLSAgICBpZiAoZGVmaW5l
ZCAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57IkNvbnN0cnVjdG9yIn0pIHsKLSAgICAgICAgbXkg
JG5ld0RhdGFOb2RlID0gbmV3IGRvbUZ1bmN0aW9uKCk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+
c2lnbmF0dXJlKG5ldyBkb21TaWduYXR1cmUoKSk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+c2ln
bmF0dXJlLT5uYW1lKCJDb25zdHJ1Y3RvciIpOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwotICAgICAg
ICBwdXNoKEB7JG5ld0RhdGFOb2RlLT5wYXJhbWV0ZXJzfSwgQHskZXh0ZW5kZWRBdHRyaWJ1dGVM
aXN0LT57IkNvbnN0cnVjdG9yIn19KTsKKyAgICBpZiAoZGVmaW5lZCAkZXh0ZW5kZWRBdHRyaWJ1
dGVMaXN0LT57IkNvbnN0cnVjdG9ycyJ9KSB7CisgICAgICAgIG15IEBjb25zdHJ1Y3RvclBhcmFt
cyA9IEB7JGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJDb25zdHJ1Y3RvcnMifX07CisgICAgICAg
IG15ICRpbmRleCA9IChAY29uc3RydWN0b3JQYXJhbXMgPT0gMSkgPyAwIDogMTsKKyAgICAgICAg
Zm9yZWFjaCBteSAkcGFyYW0gKEBjb25zdHJ1Y3RvclBhcmFtcykgeworICAgICAgICAgICAgbXkg
JGNvbnN0cnVjdG9yID0gbmV3IGRvbUZ1bmN0aW9uKCk7CisgICAgICAgICAgICAkY29uc3RydWN0
b3ItPnNpZ25hdHVyZShuZXcgZG9tU2lnbmF0dXJlKCkpOworICAgICAgICAgICAgJGNvbnN0cnVj
dG9yLT5zaWduYXR1cmUtPm5hbWUoIkNvbnN0cnVjdG9yIik7CisgICAgICAgICAgICAkY29uc3Ry
dWN0b3ItPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxp
c3QpOworICAgICAgICAgICAgJGNvbnN0cnVjdG9yLT5wYXJhbWV0ZXJzKCRwYXJhbSk7CisgICAg
ICAgICAgICAkY29uc3RydWN0b3ItPntvdmVybG9hZGVkSW5kZXh9ID0gJGluZGV4Kys7CisgICAg
ICAgICAgICBwdXNoKEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3RvcnN9LCAkY29uc3RydWN0b3IpOwor
ICAgICAgICB9CisgICAgICAgIGRlbGV0ZSAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57IkNvbnN0
cnVjdG9ycyJ9OwogICAgICAgICAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57IkNvbnN0cnVjdG9y
In0gPSAiVkFMVUVfSVNfTUlTU0lORyI7Ci0gICAgICAgICRkYXRhTm9kZS0+Y29uc3RydWN0b3Io
JG5ld0RhdGFOb2RlKTsKICAgICB9IGVsc2lmIChkZWZpbmVkICRleHRlbmRlZEF0dHJpYnV0ZUxp
c3QtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgIG15ICRuZXdEYXRhTm9kZSA9IG5l
dyBkb21GdW5jdGlvbigpOwogICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShuZXcgZG9t
U2lnbmF0dXJlKCkpOwpAQCAtMjM5OSw3ICsyNDEzLDcgQEAgc3ViIGFwcGx5RXh0ZW5kZWRBdHRy
aWJ1dGVMaXN0CiAgICAgICAgIG15ICRjb25zdHJ1Y3Rvck5hbWUgPSAkYXR0cmlidXRlS2V5c1sw
XTsKICAgICAgICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+cGFyYW1ldGVyc30sIEB7JGF0dHJpYnV0
ZXN7JGNvbnN0cnVjdG9yTmFtZX19KTsKICAgICAgICAgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+
eyJOYW1lZENvbnN0cnVjdG9yIn0gPSAkY29uc3RydWN0b3JOYW1lOwotICAgICAgICAkZGF0YU5v
ZGUtPmNvbnN0cnVjdG9yKCRuZXdEYXRhTm9kZSk7CisgICAgICAgIHB1c2goQHskZGF0YU5vZGUt
PmNvbnN0cnVjdG9yc30sICRuZXdEYXRhTm9kZSk7CiAgICAgfQogICAgICRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFN0cnVjdHVyZS5wbQppbmRleCBmZjYyODcyNWVi
OTBmNTQ2NjczZmQxNjQxZWYxZGM1YWMyNmNkZmNiLi5mNDQzMjQxNzNlYTJjZTBkNDQzYzZmNTRk
ZWZkYjU0ZDUwMzljZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0lETFN0cnVjdHVyZS5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0lETFN0cnVjdHVyZS5wbQpAQCAtNDAsNyArNDAsNyBAQCBzdHJ1Y3QoIGRvbUNsYXNzID0+IHsK
ICAgICBmdW5jdGlvbnMgPT4gJ0AnLCAgICAjIExpc3Qgb2YgJ2RvbUZ1bmN0aW9uJwogICAgIGF0
dHJpYnV0ZXMgPT4gJ0AnLCAgICAjIExpc3Qgb2YgJ2RvbUF0dHJpYnV0ZScgICAgCiAgICAgZXh0
ZW5kZWRBdHRyaWJ1dGVzID0+ICckJywgIyBFeHRlbmRlZCBhdHRyaWJ1dGVzCi0gICAgY29uc3Ry
dWN0b3IgPT4gJyQnLCAjIENvbnN0cnVjdG9yCisgICAgY29uc3RydWN0b3JzID0+ICdAJywgIyBD
b25zdHJ1Y3RvcgogICAgIGlzRXhjZXB0aW9uID0+ICckJywgIyBVc2VkIGZvciBleGNlcHRpb24g
aW50ZXJmYWNlcwogfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBhNWRlOWE0MjNhZWI1MWQ2YTRhYTk0MjA0Mjg3MWZiNWU4ZjI3OTI2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwx
NTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMp
Ci0KLSNpbmNsdWRlICJWOFdlYlNvY2tldC5oIgotCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJW
OEFycmF5QnVmZmVyLmgiCi0jaW5jbHVkZSAiVjhBcnJheUJ1ZmZlclZpZXcuaCIKLSNpbmNsdWRl
ICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOEJsb2IuaCIKLSNpbmNsdWRlICJWOFV0aWxpdGll
cy5oIgotI2luY2x1ZGUgIldlYlNvY2tldC5oIgotI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwu
aCIKLSNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCi0jaW5jbHVkZSAiV29ya2VyQ29udGV4dEV4
ZWN1dGlvblByb3h5LmgiCi0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLSNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4V2ViU29ja2V0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uV2ViU29ja2V0LkNvbnN0cnVjdG9yIik7Ci0K
LSAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVu
Y3Rpb24uIiwgYXJncy5HZXRJc29sYXRlKCkpOwotCi0gICAgaWYgKENvbnN0cnVjdG9yTW9kZTo6
Y3VycmVudCgpID09IENvbnN0cnVjdG9yTW9kZTo6V3JhcEV4aXN0aW5nT2JqZWN0KQotICAgICAg
ICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKLQotICAgIGlmIChhcmdzLkxlbmd0aCgpID09IDApCi0g
ICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKLQotICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKLSAgICB2ODo6SGFuZGxlPHY4OjpT
dHJpbmc+IHVybHN0cmluZyA9IGFyZ3NbMF0tPlRvU3RyaW5nKCk7Ci0gICAgaWYgKHRyeUNhdGNo
Lkhhc0NhdWdodCgpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih0cnlDYXRjaC5FeGNlcHRp
b24oKSwgYXJncy5HZXRJc29sYXRlKCkpOwotICAgIGlmICh1cmxzdHJpbmcuSXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihTeW50YXhFcnJvciwgIkVtcHR5IFVSTCIsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKLQotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBn
ZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgY29uc3QgS1VSTCYgdXJsID0gY29udGV4
dC0+Y29tcGxldGVVUkwodG9XZWJDb3JlU3RyaW5nKHVybHN0cmluZykpOwotCi0gICAgUmVmUHRy
PFdlYlNvY2tldD4gd2ViU29ja2V0ID0gV2ViU29ja2V0OjpjcmVhdGUoY29udGV4dCk7Ci0gICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0KLSAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCi0gICAg
ICAgIHdlYlNvY2tldC0+Y29ubmVjdCh1cmwsIGVjKTsKLSAgICBlbHNlIHsKLSAgICAgICAgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gcHJvdG9jb2xzVmFsdWUgPSBhcmdzWzFdOwotICAgICAgICBpZiAo
cHJvdG9jb2xzVmFsdWUtPklzQXJyYXkoKSkgewotICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4g
cHJvdG9jb2xzOwotICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gcHJvdG9jb2xzQXJy
YXkgPSB2ODo6TG9jYWw8djg6OkFycmF5Pjo6Q2FzdChwcm90b2NvbHNWYWx1ZSk7Ci0gICAgICAg
ICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgcHJvdG9jb2xzQXJyYXktPkxlbmd0aCgpOyAr
K2kpIHsKLSAgICAgICAgICAgICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2hQcm90b2NvbDsKLSAg
ICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHByb3RvY29sID0gcHJvdG9jb2xz
QXJyYXktPkdldCh2ODo6SW50MzI6Ok5ldyhpKSktPlRvU3RyaW5nKCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKHRyeUNhdGNoUHJvdG9jb2wuSGFzQ2F1Z2h0KCkpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKHRyeUNhdGNoUHJvdG9jb2wuRXhjZXB0aW9uKCksIGFyZ3MuR2V0
SXNvbGF0ZSgpKTsKLSAgICAgICAgICAgICAgICBwcm90b2NvbHMuYXBwZW5kKHRvV2ViQ29yZVN0
cmluZyhwcm90b2NvbCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgd2ViU29ja2V0LT5j
b25uZWN0KHVybCwgcHJvdG9jb2xzLCBlYyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2hQcm90b2NvbDsKLSAgICAgICAgICAgIHY4OjpIYW5kbGU8
djg6OlN0cmluZz4gcHJvdG9jb2wgPSBwcm90b2NvbHNWYWx1ZS0+VG9TdHJpbmcoKTsKLSAgICAg
ICAgICAgIGlmICh0cnlDYXRjaFByb3RvY29sLkhhc0NhdWdodCgpKQotICAgICAgICAgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKHRyeUNhdGNoUHJvdG9jb2wuRXhjZXB0aW9uKCksIGFyZ3MuR2V0
SXNvbGF0ZSgpKTsKLSAgICAgICAgICAgIHdlYlNvY2tldC0+Y29ubmVjdCh1cmwsIHRvV2ViQ29y
ZVN0cmluZyhwcm90b2NvbCksIGVjKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoZWMpCi0g
ICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLQot
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAg
VjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKHdyYXBwZXIsICZpbmZvLCB3ZWJTb2NrZXQuZ2V0
KCkpOwotICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KHdlYlNvY2tl
dC5yZWxlYXNlKCksIHdyYXBwZXIpOwotICAgIHJldHVybiB3cmFwcGVyOwotfQotCi12ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhXZWJTb2NrZXQ6OnNlbmRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLldlYlNvY2tldC5zZW5kKCkiKTsKLQot
ICAgIGlmICghYXJncy5MZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwotCi0gICAgV2ViU29ja2V0KiB3ZWJTb2Nr
ZXQgPSBWOFdlYlNvY2tldDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IG1lc3NhZ2UgPSBhcmdzWzBdOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIGJvb2wgcmVzdWx0OwotICAgIGlmIChWOEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZSht
ZXNzYWdlKSkgewotICAgICAgICBBcnJheUJ1ZmZlciogYXJyYXlCdWZmZXIgPSBWOEFycmF5QnVm
ZmVyOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KG1lc3NhZ2UpKTsKLSAg
ICAgICAgQVNTRVJUKGFycmF5QnVmZmVyKTsKLSAgICAgICAgcmVzdWx0ID0gd2ViU29ja2V0LT5z
ZW5kKGFycmF5QnVmZmVyLCBlYyk7Ci0gICAgfSBlbHNlIGlmIChWOEFycmF5QnVmZmVyVmlldzo6
SGFzSW5zdGFuY2UobWVzc2FnZSkpIHsKLSAgICAgICAgQXJyYXlCdWZmZXJWaWV3KiBhcnJheUJ1
ZmZlclZpZXcgPSBWOEFycmF5QnVmZmVyVmlldzo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Pjo6Q2FzdChtZXNzYWdlKSk7Ci0gICAgICAgIEFTU0VSVChhcnJheUJ1ZmZlclZpZXcpOwot
ICAgICAgICByZXN1bHQgPSB3ZWJTb2NrZXQtPnNlbmQoYXJyYXlCdWZmZXJWaWV3LCBlYyk7Ci0g
ICAgfSBlbHNlIGlmIChWOEJsb2I6Okhhc0luc3RhbmNlKG1lc3NhZ2UpKSB7Ci0gICAgICAgIEJs
b2IqIGJsb2IgPSBWOEJsb2I6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qo
bWVzc2FnZSkpOwotICAgICAgICBBU1NFUlQoYmxvYik7Ci0gICAgICAgIHJlc3VsdCA9IHdlYlNv
Y2tldC0+c2VuZChibG9iLCBlYyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdjg6OlRyeUNhdGNo
IHRyeUNhdGNoOwotICAgICAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHN0cmluZ01lc3NhZ2Ug
PSBtZXNzYWdlLT5Ub1N0cmluZygpOwotICAgICAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkp
Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih0cnlDYXRjaC5FeGNlcHRpb24oKSwgYXJn
cy5HZXRJc29sYXRlKCkpOwotICAgICAgICByZXN1bHQgPSB3ZWJTb2NrZXQtPnNlbmQodG9XZWJD
b3JlU3RyaW5nKHN0cmluZ01lc3NhZ2UpLCBlYyk7Ci0gICAgfQotICAgIGlmIChlYykKLSAgICAg
ICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwotCi0gICAg
cmV0dXJuIHY4Qm9vbGVhbihyZXN1bHQsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLX0KLQotfSAgLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171717</attachid>
            <date>2012-10-31 14:08:53 -0700</date>
            <delta_ts>2012-10-31 16:49:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100801-20121031220715.patch</filename>
            <type>text/plain</type>
            <size>27566</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDdkZWRlOTdkNjg4Yjc1
YTM0MDdlMDIwYWZiOGNlZDYxNGI4YmMzMS4uMTAzMmM5ZjEzMTMyZDkyNWFhMTAwMTQxNjUyMmI1
NDNiZTQxNzAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTEwLTMxICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBtb3N0
IG9mIHRoZSBjdXN0b20gY29kZSBmb3IgV2ViU29ja2V0cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwODAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHRoZSBmb2xsb3dpbmc6
CisKKyAgICAgICAgMSkgTW9kaWZpZXMgdGhlIFY4IGNvZGUgZ2VuZXJhdG9yIHRvIHN1cHBvcnQg
b3ZlcmxvYWRlZCBjb25zdHJ1Y3RvcnMsCisgICAgICAgICAgIHRoZSBKUyBnZW5lcmF0b3IgaXMg
Zml4ZWQgdG8gd29yayBhcyBiZWZvcmUuIFByb3BlciBzdXBwb3J0IGZvciBKUyB3aWxsIGNvbWUg
bGF0ZXIuCisKKyAgICAgICAgMikgTW9kaWZpZXMgV2ViU29ja2V0LmgvLmNwcCBmb3IgdGhlIG5l
dyBjb25zdHJ1Y3RvcnMuCisKKyAgICAgICAgMykgTW9kaWZpZXMgV2ViU29ja2V0LmgvLmNwcC8u
aWRsIHRvIG5vdCBoYXZlIGN1c3RvbSBjb2RlIGZvciB0aGUgc2VuZCBtZXRob2QuCisKKyAgICAg
ICAgVGVzdGVkIGJ5IHJ1bm5pbmcgV2ViU29ja2V0cyBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAg
KiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldDo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
Lmg6CisgICAgICAgIChXZWJTb2NrZXQpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuaWRsOgorICAgICAgICAqIFVzZVY4LmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHA6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5l
cmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChH
ZW5lcmF0ZU92ZXJsb2FkZWRDb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKEdlbmVyYXRl
U2luZ2xlQ29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9y
Q2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgIChjb3B5QXR0cmlidXRlcyk6
CisgICAgICAgIChwYXJzZUV4dGVuZGVkQXR0cmlidXRlTGlzdCk6CisgICAgICAgIChwYXJzZUV4
dGVuZGVkQXR0cmlidXRlcyk6CisgICAgICAgIChhcHBseUV4dGVuZGVkQXR0cmlidXRlTGlzdCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG06CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcDogUmVtb3ZlZC4KKwogMjAx
Mi0xMC0yOSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFtRdF0gVGV4dCB3aXRoIHplcm8gZm9udCBzaXplIHJlbmRlcnMgYXMgWCBweCBzb21ldGltZXMs
IGNhdXNpbmcgZmFzdC90ZXh0L3plcm8tZm9udC1zaXplLTIuaHRtbCB0byBmYWlsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDQ2ZDYy
ZGU4OWY0NjY4ZmU3YTE1MWZlZWQ1MzExMzgyNDczMDI3ZGEuLjljYWIxNjA3NjBmMmJkZjE2NmY5
ZWNiYzYyMDRiY2RjOWQ1NzQ5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0xNjQsNiArMTY0LDM3IEBAIFBhc3NSZWZQdHI8V2Vi
U29ja2V0PiBXZWJTb2NrZXQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQogICAgIHJldHVybiB3ZWJTb2NrZXQucmVsZWFzZSgpOwogfQogCitQYXNzUmVmUHRyPFdlYlNv
Y2tldD4gV2ViU29ja2V0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIFZlY3RvcjxTdHJp
bmc+IHByb3RvY29sczsKKyAgICByZXR1cm4gV2ViU29ja2V0OjpjcmVhdGUoY29udGV4dCwgdXJs
LCBwcm90b2NvbHMsIGVjKTsKK30KKworUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IFdlYlNvY2tldDo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvdG9jb2xzLCBFeGNlcHRpb25Db2RlJiBlYykKK3sK
KyAgICBpZiAodXJsLmlzTnVsbCgpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgUmVmUHRyPFdlYlNvY2tldD4gd2ViU29ja2V0KGFk
b3B0UmVmKG5ldyBXZWJTb2NrZXQoY29udGV4dCkpKTsKKyAgICB3ZWJTb2NrZXQtPnN1c3BlbmRJ
Zk5lZWRlZCgpOworCisgICAgd2ViU29ja2V0LT5jb25uZWN0KGNvbnRleHQtPmNvbXBsZXRlVVJM
KHVybCksIHByb3RvY29scywgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICByZXR1cm4gd2ViU29ja2V0LnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxXZWJTb2Nr
ZXQ+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBFeGNlcHRpb25Db2RlJiBl
YykKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBwcm90b2NvbHM7CisgICAgaWYgKCFwcm90b2NvbC5p
c051bGwoKSkKKyAgICAgICAgcHJvdG9jb2xzLmFwcGVuZChwcm90b2NvbCk7CisgICAgcmV0dXJu
IFdlYlNvY2tldDo6Y3JlYXRlKGNvbnRleHQsIHVybCwgcHJvdG9jb2xzLCBlYyk7Cit9CisKIHZv
aWQgV2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBwcm90b2NvbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKaW5kZXggYTkzNTUyOGJhMjQ2MTIyMTkyN2Q1
YjMzZTFiNWNmNjU5NzRjNDRkMi4uMmJhZTUzOWIxYjUxMjUzYTRiMzNjZWJiNWI4NDY5NjhlZWE0
OGM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQu
aApAQCAtNTYsNiArNTYsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUo
KTsKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3ViUHJvdG9jb2xTZXBlcmF0b3IoKTsKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJv
dG9jb2xzLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB+V2ViU29ja2V0KCk7CiAKICAg
ICBlbnVtIFN0YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldC5pZGwKaW5kZXggNzJjZjVkNGU5Y2MxN2JjOTJmNzM4ZjA5YmU2OGFjYjIwMTFlZTk0
Ny4uYWNlMDA4YWE1NTU4Y2I1ZTU4M2EyMmZiM2JiYWI1ODMxN2M1NzBiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwKQEAgLTMyLDEwICsz
MiwxNCBAQAogWwogICAgIENvbmRpdGlvbmFsPVdFQl9TT0NLRVRTLAogICAgIEFjdGl2ZURPTU9i
amVjdCwKLSAgICBDdXN0b21Db25zdHJ1Y3RvciwKLSAgICBDb25zdHJ1Y3RvclBhcmFtZXRlcnM9
MSwKKyAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgdXJsKSwKKyAgICBDb25zdHJ1Y3Rvcihp
biBET01TdHJpbmcgdXJsLCBpbiBzZXF1ZW5jZTxTdHJpbmc+IHByb3RvY29scyksCisgICAgQ29u
c3RydWN0b3IoaW4gRE9NU3RyaW5nIHVybCwgaW4gRE9NU3RyaW5nIHByb3RvY29sKSwKKyAgICBD
b25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbiwKKyAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25D
b250ZXh0LAogICAgIEV2ZW50VGFyZ2V0LAotICAgIEpTTm9TdGF0aWNUYWJsZXMKKyAgICBKU05v
U3RhdGljVGFibGVzLAorICAgIEpTQ3VzdG9tQ29uc3RydWN0b3IsCiBdIGludGVyZmFjZSBXZWJT
b2NrZXQgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgVVJMOyAvLyBMb3dlcmNh
c2VkIC51cmwgaXMgdGhlIG9uZSBpbiB0aGUgc3BlYywgYnV0IGxlYXZpbmcgLlVSTCBmb3IgY29t
cGF0aWJpbGl0eSByZWFzb25zLgogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdXJs
OwpAQCAtNjAsMTYgKzY0LDE0IEBACiAKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGJpbmFyeVR5
cGU7CiAKLSAgICAvLyBGSVhNRTogVXNlIG92ZXJsb2FkaW5nIHByb3ZpZGVkIGJ5IG91ciBJREwg
Y29kZSBnZW5lcmF0b3IuCi0gICAgLy8gQWNjb3JkaW5nIHRvIFdlYiBJREwgc3BlY2lmaWNhdGlv
biwgb3ZlcmxvYWRlZCBmdW5jdGlvbiB3aXRoIERPTVN0cmluZyBhcmd1bWVudAotICAgIC8vIHNo
b3VsZCBhY2NlcHQgYW55dGhpbmcgdGhhdCBjYW4gYmUgY29udmVydGVkIHRvIGEgc3RyaW5nIChp
bmNsdWRpbmcgbnVtYmVycywKLSAgICAvLyBib29sZWFucywgbnVsbCwgdW5kZWZpbmVkIGFuZCBv
YmplY3RzIGV4Y2VwdCBBcnJheUJ1ZmZlciBhbmQgQmxvYikuIEN1cnJlbnQgY29kZQotICAgIC8v
IGdlbmVyYXRvciBkb2VzIG5vdCBoYW5kbGUgdGhpcyBydWxlIGNvcnJlY3RseS4KLSAgICAvLyBi
b29sZWFuIHNlbmQoaW4gQXJyYXlCdWZmZXIgZGF0YSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0g
ICAgLy8gYm9vbGVhbiBzZW5kKGluIEFycmF5QnVmZmVyVmlldyBkYXRhKSByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKLSAgICAvLyBib29sZWFuIHNlbmQoaW4gQmxvYiBkYXRhKSByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKLSAgICAvLyBib29sZWFuIHNlbmQoaW4gRE9NU3RyaW5nIGRhdGEpIHJhaXNlcyhE
T01FeGNlcHRpb24pOwotICAgIFtDdXN0b21dIGJvb2xlYW4gc2VuZChpbiBET01TdHJpbmcgZGF0
YSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgYm9vbGVhbiBzZW5kKGluIEFycmF5QnVmZmVy
IGRhdGEpCisgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgIGJvb2xlYW4gc2VuZChp
biBBcnJheUJ1ZmZlclZpZXcgZGF0YSkKKyAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7Cisg
ICAgYm9vbGVhbiBzZW5kKGluIEJsb2IgZGF0YSkKKyAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CisgICAgYm9vbGVhbiBzZW5kKGluIERPTVN0cmluZyBkYXRhKQorICAgICAgICByYWlzZXMo
RE9NRXhjZXB0aW9uKTsKIAogICAgIHZvaWQgY2xvc2UoaW4gW0NsYW1wLCBPcHRpb25hbF0gdW5z
aWduZWQgc2hvcnQgY29kZSwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgcmVhc29uKSByYWlzZXMo
RE9NRXhjZXB0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQppbmRleCA4MmIxZGE0ZmFmYmM3NmE0ODEzZDE5
N2Q3YzBmYjc4YjM2YTEyMDU0Li5kNjUzMjg4MmU4ZTFlZTNjYjg1NWRkOGExY2YxMmUxYWYzNDI2
OWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Vc2VWOC5jbWFrZQpAQCAtMTUwLDcgKzE1MCw2IEBAIExJU1QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4
dEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRBbmltYXRpb25DdXN0
b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5j
cHAKLSAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwCiAgICAgYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92
OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1M
SHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBhYWQwMmM5MWU3
YzJiZTEwNWQzZjAwYTA0YWZjNjg4ZDU3NDBjYTgzLi5mZjdmMDQzMmNjZTY4ZTg0NmI2ZjI2NDA2
ZGI0ZGM1OTdmNGQwMWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNDU3LDcgKzI0NTcsNiBAQAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdEFuaW1h
dGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktp
dFBvaW50Q29uc3RydWN0b3IuY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20v
VjhXZWJTb2NrZXRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20v
VjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4V29ya2VyQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9t
L1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwCmluZGV4IDVhZTQxNTlkYzlmMTdmNDVj
Y2ZmZWY0OTg5ZDcxOTZiYzBkODAyOWEuLjU4ZmVhZTMyYjk3M2VhZTA4YTQ3MDlkMGQ0ZmM4Njc5
ZDczNTQ0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29j
a2V0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tl
dEN1c3RvbS5jcHAKQEAgLTkxLDM0ICs5MSw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSlNXZWJTb2NrZXRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNXZWJTb2NrZXQoRXhlY1N0CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywganNDb25z
dHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIFdlYlNvY2tldCwgd2ViU29ja2V0LmdldCgpKSk7CiB9
CiAKLUpTVmFsdWUgSlNXZWJTb2NrZXQ6OnNlbmQoRXhlY1N0YXRlKiBleGVjKQotewotICAgIGlm
ICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVj
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0KLSAgICBKU1ZhbHVlIG1l
c3NhZ2UgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBib29sIHJlc3VsdDsKLSAgICBpZiAobWVzc2FnZS5pbmhlcml0cygmSlNBcnJheUJ1ZmZlcjo6
c19pbmZvKSkKLSAgICAgICAgcmVzdWx0ID0gaW1wbCgpLT5zZW5kKHRvQXJyYXlCdWZmZXIobWVz
c2FnZSksIGVjKTsKLSAgICBlbHNlIGlmIChtZXNzYWdlLmluaGVyaXRzKCZKU0FycmF5QnVmZmVy
Vmlldzo6c19pbmZvKSkKLSAgICAgICAgcmVzdWx0ID0gaW1wbCgpLT5zZW5kKHRvQXJyYXlCdWZm
ZXJWaWV3KG1lc3NhZ2UpLCBlYyk7Ci0gICAgZWxzZSBpZiAobWVzc2FnZS5pbmhlcml0cygmSlNC
bG9iOjpzX2luZm8pKQotICAgICAgICByZXN1bHQgPSBpbXBsKCktPnNlbmQodG9CbG9iKG1lc3Nh
Z2UpLCBlYyk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFN0cmluZyBzdHJpbmdNZXNzYWdlID0gbWVz
c2FnZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Ci0gICAgICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgICAgICBy
ZXN1bHQgPSBpbXBsKCktPnNlbmQoc3RyaW5nTWVzc2FnZSwgZWMpOwotICAgIH0KLSAgICBpZiAo
ZWMpIHsKLSAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGpzQm9vbGVhbihyZXN1bHQpOwot
fQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAyOGVhNWRiYjIw
ZGVkYTBjZGVjN2U4YmE2ZWI5YTNmODU3YmMzMTg1Li4zNDdhZWY0Y2UyNThlMmQ1YTMwYjViMGM3
NDNlMGVkNTY0OTE2YzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzcxMCwxMyArMzcxMCwxNyBAQCBzdWIgR2VuZXJh
dGVDb25zdHJ1Y3RvckRlZmluaXRpb24KICAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKICAgICBt
eSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IgPSBzaGlmdDsKIAorICAgICMgRklYTUU6IEFk
ZCBzdXBwb3J0IGZvciBvdmVybG9hZGVkIGNvbnN0cnVjdG9ycyB0byBqUyBhcyB3ZWxsLgorICAg
ICMgRm9yIG5vdyBtaW1pYyB0aGUgb2xkIGJlaGF2aW91ciBieSBvbmx5IGdlbmVyYXRpbmcgY29k
ZSBmb3IgdGhlIGxhc3QgIkNvbnN0cnVjdG9yIiBhdHRyaWJ1dGUuCisgICAgbXkgJGZ1bmN0aW9u
ID0gQHskZGF0YU5vZGUtPmNvbnN0cnVjdG9yc31bLTFdOworCiAgICAgbXkgJGNvbnN0cnVjdG9y
Q2xhc3NOYW1lID0gJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yID8gIiR7Y2xhc3NOYW1lfU5h
bWVkQ29uc3RydWN0b3IiIDogIiR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yIjsKICAgICBteSAkbnVt
YmVyT2ZDb25zdHJ1Y3RvclBhcmFtZXRlcnMgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDb25zdHJ1Y3RvclBhcmFtZXRlcnMifTsKICAgICBpZiAoIWRlZmluZWQgJG51bWJlck9m
Q29uc3RydWN0b3JQYXJhbWV0ZXJzKSB7CiAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXND
b25zdHJ1Y3RvclRlbXBsYXRlKCRkYXRhTm9kZSwgIkV2ZW50IikpIHsKICAgICAgICAgICAgICRu
dW1iZXJPZkNvbnN0cnVjdG9yUGFyYW1ldGVycyA9IDI7CiAgICAgICAgIH0gZWxzaWYgKCRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0pIHsKLSAgICAgICAgICAg
ICRudW1iZXJPZkNvbnN0cnVjdG9yUGFyYW1ldGVycyA9IEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3Rv
ci0+cGFyYW1ldGVyc307CisgICAgICAgICAgICAkbnVtYmVyT2ZDb25zdHJ1Y3RvclBhcmFtZXRl
cnMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM4
NjksNyArMzg3Myw2IEBAIEVORAogCiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8JHtjb25zdHJ1
Y3RvckNsYXNzTmFtZX0qPihleGVjLT5jYWxsZWUoKSk7XG4iKTsKIAotICAgICAgICAgICAgbXkg
JGZ1bmN0aW9uID0gJGRhdGFOb2RlLT5jb25zdHJ1Y3RvcjsKICAgICAgICAgICAgIG15IEBjb25z
dHJ1Y3RvckFyZ0xpc3Q7CiAKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IjxydW50aW1lL0Vy
cm9yLmg+In0gPSAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbQppbmRleCAzOTdkMmMzOGUzNjIwNDI3ZTZiM2YxMGUzYWQ4MjE0YmRm
MGRmZTI4Li5lNjE1MTEyY2RlOGI3OTJmZjMxZDc0MWNmZTJhY2JmM2JkODE2YzJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpA
QCAtNDk1LDYgKzQ5NSwxNyBAQCBFTkQKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7
CiBwcml2YXRlOgogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBTbG93KCR7
d3JhcFNsb3dBcmd1bWVudFR5cGV9LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29u
dGV4dCwgdjg6Oklzb2xhdGUqKTsKK0VORAorCisgICAgaWYgKElzQ29uc3RydWN0YWJsZSgkZGF0
YU5vZGUpICYmIEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3RvcnN9ID4gMSkgeworICAgICAgICBmb3Ig
KG15ICRpID0gMTsgJGkgPD0gQHskZGF0YU5vZGUtPmNvbnN0cnVjdG9yc307ICRpKyspIHsKKyAg
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOworICAgIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3Ike2l9Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYpOworRU5ECisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8
PEVORCk7CiB9OwogCiBFTkQKQEAgLTE4NjIsMTEgKzE4NzMsNTEgQEAgc3ViIEdlbmVyYXRlUGFy
YW1ldGVyc0NoZWNrCiAgICAgcmV0dXJuICgkcGFyYW1ldGVyQ2hlY2tTdHJpbmcsICRwYXJhbUlu
ZGV4LCAlcmVwbGFjZW1lbnRzKTsKIH0KIAotc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JDYWxsYmFj
aworc3ViIEdlbmVyYXRlT3ZlcmxvYWRlZENvbnN0cnVjdG9yQ2FsbGJhY2sKIHsKLSAgICBteSAk
ZnVuY3Rpb24gPSBzaGlmdDsKICAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKICAgICBteSAkaW1w
bENsYXNzTmFtZSA9IHNoaWZ0OworICAgIAorICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2ltcGxDbGFzc05hbWV9Ojpjb25zdHJ1Y3RvckNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00u
JHtpbXBsQ2xhc3NOYW1lfS5Db25zdHJ1Y3RvciIpOworICAgIGlmICghYXJncy5Jc0NvbnN0cnVj
dENhbGwoKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCJET00gb2JqZWN0IGNvbnN0
cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iKTsKKworICAgIGlmIChDb25z
dHJ1Y3Rvck1vZGU6OmN1cnJlbnQoKSA9PSBDb25zdHJ1Y3Rvck1vZGU6OldyYXBFeGlzdGluZ09i
amVjdCkKKyAgICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CisKK0VORAorCisgICAgbXkgJGxl
YXN0TnVtTWFuZGF0b3J5UGFyYW1zID0gMjU1OworICAgIGZvcmVhY2ggbXkgJGNvbnN0cnVjdG9y
IChAeyRkYXRhTm9kZS0+Y29uc3RydWN0b3JzfSkgeworICAgICAgICBteSAkbmFtZSA9ICJjb25z
dHJ1Y3RvciIgLiAkY29uc3RydWN0b3ItPntvdmVybG9hZGVkSW5kZXh9IC4gIkNhbGxiYWNrIjsK
KyAgICAgICAgbXkgKCRudW1NYW5kYXRvcnlQYXJhbXMsICRwYXJhbWV0ZXJzQ2hlY2spID0gR2Vu
ZXJhdGVGdW5jdGlvblBhcmFtZXRlcnNDaGVjaygkY29uc3RydWN0b3IpOworICAgICAgICAkbGVh
c3ROdW1NYW5kYXRvcnlQYXJhbXMgPSAkbnVtTWFuZGF0b3J5UGFyYW1zIGlmICgkbnVtTWFuZGF0
b3J5UGFyYW1zIDwgJGxlYXN0TnVtTWFuZGF0b3J5UGFyYW1zKTsKKyAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKCRwYXJhbWV0ZXJzQ2hlY2spXG4iKTsKKyAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiAkbmFtZShhcmdzKTtcbiIpOworICAgIH0KKyAg
ICBpZiAoJGxlYXN0TnVtTWFuZGF0b3J5UGFyYW1zID49IDEpIHsKKyAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAkbGVhc3ROdW1NYW5kYXRvcnlQYXJh
bXMpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJv
d05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTtcbiIpOworICAgIH0K
KyAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOworICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cigwLCBhcmdzLkdldElzb2xhdGUoKSk7CitFTkQKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1c
blxuIik7Cit9CisKK3N1YiBHZW5lcmF0ZVNpbmdsZUNvbnN0cnVjdG9yQ2FsbGJhY2sKK3sKKyAg
ICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKKyAgICBteSAkaW1wbENsYXNzTmFtZSA9IHNoaWZ0Owor
ICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OworCisgICAgbXkgJG92ZXJsb2FkZWRJbmRleFN0cmlu
ZyA9ICIiOworICAgIGlmICgkZnVuY3Rpb24tPntvdmVybG9hZGVkSW5kZXh9ID4gMCkgeworICAg
ICAgICAkb3ZlcmxvYWRlZEluZGV4U3RyaW5nIC49ICRmdW5jdGlvbi0+e292ZXJsb2FkZWRJbmRl
eH07CisgICAgfQogCiAgICAgbXkgJHJhaXNlc0V4Y2VwdGlvbnMgPSBAeyRmdW5jdGlvbi0+cmFp
c2VzRXhjZXB0aW9uc307CiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkNvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uIn0pIHsKQEAgLTE4ODUsMTggKzE5MzYsMjIgQEAg
c3ViIEdlbmVyYXRlQ29uc3RydWN0b3JDYWxsYmFjawogICAgIG15IEBiZWZvcmVBcmd1bWVudExp
c3Q7CiAgICAgbXkgQGFmdGVyQXJndW1lbnRMaXN0OwogICAgIHB1c2goQGltcGxDb250ZW50LCA8
PEVORCk7Ci12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2ltcGxDbGFzc05hbWV9Ojpjb25zdHJ1
Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjgke2ltcGxDbGFzc05hbWV9Ojpjb25zdHJ1Y3RvciR7b3ZlcmxvYWRlZEluZGV4U3Ry
aW5nfUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRT
KCJET00uJHtpbXBsQ2xhc3NOYW1lfS5Db25zdHJ1Y3RvciIpOworICAgIElOQ19TVEFUUygiRE9N
LiR7aW1wbENsYXNzTmFtZX0uQ29uc3RydWN0b3Ike292ZXJsb2FkZWRJbmRleFN0cmluZ30iKTsK
ICAgICAke21heWJlT2JzZXJ2ZUZlYXR1cmV9CitFTkQKKworICAgIGlmICgkZnVuY3Rpb24tPntv
dmVybG9hZGVkSW5kZXh9ID09IDApIHsKKyAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQp
OwogICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBm
dW5jdGlvbi4iKTsKIAogICAgIGlmIChDb25zdHJ1Y3Rvck1vZGU6OmN1cnJlbnQoKSA9PSBDb25z
dHJ1Y3Rvck1vZGU6OldyYXBFeGlzdGluZ09iamVjdCkKICAgICAgICAgcmV0dXJuIGFyZ3MuSG9s
ZGVyKCk7CiBFTkQKLQotICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUFyZ3VtZW50c0Nv
dW50Q2hlY2soJGZ1bmN0aW9uLCAkZGF0YU5vZGUpKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjaygkZnVuY3Rpb24sICRkYXRhTm9kZSkpOwor
ICAgIH0KIAogICAgIGlmICgkcmFpc2VzRXhjZXB0aW9ucykgewogICAgICAgICBBZGRUb0ltcGxJ
bmNsdWRlcygiRXhjZXB0aW9uQ29kZS5oIik7CkBAIC0xOTYwLDYgKzIwMTUsMjEgQEAgRU5ECiAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOwogfQogCitzdWIgR2VuZXJhdGVDb25zdHJ1Y3Rv
ckNhbGxiYWNrCit7CisgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CisgICAgbXkgJGltcGxDbGFz
c05hbWUgPSBzaGlmdDsKKworICAgIGlmIChAeyRkYXRhTm9kZS0+Y29uc3RydWN0b3JzfSA9PSAx
KSB7CisgICAgICAgIEdlbmVyYXRlU2luZ2xlQ29uc3RydWN0b3JDYWxsYmFjaygkZGF0YU5vZGUs
ICRpbXBsQ2xhc3NOYW1lLCBAeyRkYXRhTm9kZS0+Y29uc3RydWN0b3JzfVswXSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgZm9yZWFjaCBteSAkY29uc3RydWN0b3IgKEB7JGRhdGFOb2RlLT5jb25z
dHJ1Y3RvcnN9KSB7CisgICAgICAgICAgICBHZW5lcmF0ZVNpbmdsZUNvbnN0cnVjdG9yQ2FsbGJh
Y2soJGRhdGFOb2RlLCAkaW1wbENsYXNzTmFtZSwgJGNvbnN0cnVjdG9yKTsKKyAgICAgICAgfQor
ICAgICAgICBHZW5lcmF0ZU92ZXJsb2FkZWRDb25zdHJ1Y3RvckNhbGxiYWNrKCRkYXRhTm9kZSwg
JGltcGxDbGFzc05hbWUpOworICAgIH0KK30KKwogc3ViIEdlbmVyYXRlRXZlbnRDb25zdHJ1Y3Rv
ckNhbGxiYWNrCiB7CiAgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CkBAIC0yODM5LDkgKzI5MDks
OSBAQCBFTkQKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAifSAvLyBuYW1lc3BhY2UgJHtp
bnRlcmZhY2VOYW1lfVY4SW50ZXJuYWxcblxuIik7CiAKICAgICBpZiAoJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9ICYmICEoJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiVjhDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0pKSB7Ci0gICAgICAgIEdlbmVy
YXRlTmFtZWRDb25zdHJ1Y3RvckNhbGxiYWNrKCRkYXRhTm9kZS0+Y29uc3RydWN0b3IsICRkYXRh
Tm9kZSwgJGludGVyZmFjZU5hbWUpOworICAgICAgICBHZW5lcmF0ZU5hbWVkQ29uc3RydWN0b3JD
YWxsYmFjayhAeyRkYXRhTm9kZS0+Y29uc3RydWN0b3JzfVswXSwgJGRhdGFOb2RlLCAkaW50ZXJm
YWNlTmFtZSk7CiAgICAgfSBlbHNpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q29uc3RydWN0b3IifSAmJiAhKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3Vz
dG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21Db25zdHJ1Y3RvciJ9KSkgewotICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbGJhY2so
JGRhdGFOb2RlLT5jb25zdHJ1Y3RvciwgJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CisgICAg
ICAgIEdlbmVyYXRlQ29uc3RydWN0b3JDYWxsYmFjaygkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1l
KTsKICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclRlbXBsYXRlKCRk
YXRhTm9kZSwgIkV2ZW50IikpIHsKICAgICAgICAgR2VuZXJhdGVFdmVudENvbnN0cnVjdG9yQ2Fs
bGJhY2soJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgfSBlbHNpZiAoJGNvZGVHZW5l
cmF0b3ItPklzQ29uc3RydWN0b3JUZW1wbGF0ZSgkZGF0YU5vZGUsICJUeXBlZEFycmF5IikpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBt
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KaW5kZXggMTlm
YjY0OTVjMzFiMWZiNTZkN2U2YTlmMTUwZGI5NTk4MmM3NDcxMi4uNDI1YzE5YmViN2Q4MWE5NzA1
OTE4YTgwZTM0ODljYTAyNzUyOTQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9JRExQYXJzZXIucG0KQEAgLTEzMjMsNiArMTMyMywyMCBAQCBzdWIgcGFyc2VFeHRlbmRl
ZEF0dHJpYnV0ZUxpc3RBbGxvd0VtcHR5CiAgICAgcmV0dXJuIHt9OwogfQogCitzdWIgY29weUF0
dHJpYnV0ZXMKK3sKKyAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0ID0gc2hpZnQ7CisgICAg
bXkgJGF0dHIgPSBzaGlmdDsKKworICAgIGZvciBteSAka2V5IChrZXlzICV7JGF0dHJ9KSB7Cisg
ICAgICAgIGlmICgka2V5IGVxICJDb25zdHJ1Y3RvciIpIHsKKyAgICAgICAgICAgIHB1c2goQHsk
ZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57IkNvbnN0cnVjdG9ycyJ9fSwgJGF0dHItPnska2V5fSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57
JGtleX0gPSAkYXR0ci0+eyRrZXl9OworICAgICAgICB9CisgICAgfQorfQorCiBzdWIgcGFyc2VF
eHRlbmRlZEF0dHJpYnV0ZUxpc3QKIHsKICAgICBteSAkc2VsZiA9IHNoaWZ0OwpAQCAtMTMzMSwx
MyArMTM0NSw5IEBAIHN1YiBwYXJzZUV4dGVuZGVkQXR0cmlidXRlTGlzdAogICAgICAgICAkc2Vs
Zi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIlsiLCBfX0xJTkVfXyk7CiAg
ICAgICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QgPSB7fTsKICAgICAgICAgbXkgJGF0dHIg
PSAkc2VsZi0+cGFyc2VFeHRlbmRlZEF0dHJpYnV0ZSgpOwotICAgICAgICBmb3IgbXkgJGtleSAo
a2V5cyAleyRhdHRyfSkgewotICAgICAgICAgICAgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyRr
ZXl9ID0gJGF0dHItPnska2V5fTsKLSAgICAgICAgfQorICAgICAgICBjb3B5QXR0cmlidXRlcygk
ZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LCAkYXR0cik7CiAgICAgICAgICRhdHRyID0gJHNlbGYtPnBh
cnNlRXh0ZW5kZWRBdHRyaWJ1dGVzKCk7Ci0gICAgICAgIGZvciBteSAka2V5IChrZXlzICV7JGF0
dHJ9KSB7Ci0gICAgICAgICAgICAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57JGtleX0gPSAkYXR0
ci0+eyRrZXl9OwotICAgICAgICB9CisgICAgICAgIGNvcHlBdHRyaWJ1dGVzKCRleHRlbmRlZEF0
dHJpYnV0ZUxpc3QsICRhdHRyKTsKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNl
bGYtPmdldFRva2VuKCksICJdIiwgX19MSU5FX18pOwogICAgICAgICByZXR1cm4gJGV4dGVuZGVk
QXR0cmlidXRlTGlzdDsKICAgICB9CkBAIC0xMzU0LDkgKzEzNjQsNyBAQCBzdWIgcGFyc2VFeHRl
bmRlZEF0dHJpYnV0ZXMKICAgICAgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICIsIikgewogICAg
ICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICIsIiwg
X19MSU5FX18pOwogICAgICAgICAgICAgbXkgJGF0dHIgPSAkc2VsZi0+cGFyc2VFeHRlbmRlZEF0
dHJpYnV0ZTIoKTsKLSAgICAgICAgICAgIGZvciBteSAka2V5IChrZXlzICV7JGF0dHJ9KSB7Ci0g
ICAgICAgICAgICAgICAgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyRrZXl9ID0gJGF0dHItPnsk
a2V5fTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvcHlBdHRyaWJ1dGVzKCRleHRlbmRl
ZEF0dHJpYnV0ZUxpc3QsICRhdHRyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGxh
c3Q7CiAgICAgICAgIH0KQEAgLTIzODEsMTQgKzIzODksMjAgQEAgc3ViIGFwcGx5RXh0ZW5kZWRB
dHRyaWJ1dGVMaXN0CiAgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CiAgICAgbXkgJGV4dGVuZGVk
QXR0cmlidXRlTGlzdCA9IHNoaWZ0OwogCi0gICAgaWYgKGRlZmluZWQgJGV4dGVuZGVkQXR0cmli
dXRlTGlzdC0+eyJDb25zdHJ1Y3RvciJ9KSB7Ci0gICAgICAgIG15ICRuZXdEYXRhTm9kZSA9IG5l
dyBkb21GdW5jdGlvbigpOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShuZXcgZG9t
U2lnbmF0dXJlKCkpOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+bmFtZSgiQ29u
c3RydWN0b3IiKTsKLSAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKLSAgICAgICAgcHVzaChAeyRuZXdEYXRh
Tm9kZS0+cGFyYW1ldGVyc30sIEB7JGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJDb25zdHJ1Y3Rv
ciJ9fSk7CisgICAgaWYgKGRlZmluZWQgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJDb25zdHJ1
Y3RvcnMifSkgeworICAgICAgICBteSBAY29uc3RydWN0b3JQYXJhbXMgPSBAeyRleHRlbmRlZEF0
dHJpYnV0ZUxpc3QtPnsiQ29uc3RydWN0b3JzIn19OworICAgICAgICBteSAkaW5kZXggPSAoQGNv
bnN0cnVjdG9yUGFyYW1zID09IDEpID8gMCA6IDE7CisgICAgICAgIGZvcmVhY2ggbXkgJHBhcmFt
IChAY29uc3RydWN0b3JQYXJhbXMpIHsKKyAgICAgICAgICAgIG15ICRjb25zdHJ1Y3RvciA9IG5l
dyBkb21GdW5jdGlvbigpOworICAgICAgICAgICAgJGNvbnN0cnVjdG9yLT5zaWduYXR1cmUobmV3
IGRvbVNpZ25hdHVyZSgpKTsKKyAgICAgICAgICAgICRjb25zdHJ1Y3Rvci0+c2lnbmF0dXJlLT5u
YW1lKCJDb25zdHJ1Y3RvciIpOworICAgICAgICAgICAgJGNvbnN0cnVjdG9yLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKKyAgICAgICAgICAg
ICRjb25zdHJ1Y3Rvci0+cGFyYW1ldGVycygkcGFyYW0pOworICAgICAgICAgICAgJGNvbnN0cnVj
dG9yLT57b3ZlcmxvYWRlZEluZGV4fSA9ICRpbmRleCsrOworICAgICAgICAgICAgcHVzaChAeyRk
YXRhTm9kZS0+Y29uc3RydWN0b3JzfSwgJGNvbnN0cnVjdG9yKTsKKyAgICAgICAgfQorICAgICAg
ICBkZWxldGUgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJDb25zdHJ1Y3RvcnMifTsKICAgICAg
ICAgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJDb25zdHJ1Y3RvciJ9ID0gIlZBTFVFX0lTX01J
U1NJTkciOwotICAgICAgICAkZGF0YU5vZGUtPmNvbnN0cnVjdG9yKCRuZXdEYXRhTm9kZSk7CiAg
ICAgfSBlbHNpZiAoZGVmaW5lZCAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57Ik5hbWVkQ29uc3Ry
dWN0b3IifSkgewogICAgICAgICBteSAkbmV3RGF0YU5vZGUgPSBuZXcgZG9tRnVuY3Rpb24oKTsK
ICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUobmV3IGRvbVNpZ25hdHVyZSgpKTsKQEAg
LTIzOTksNyArMjQxMyw3IEBAIHN1YiBhcHBseUV4dGVuZGVkQXR0cmlidXRlTGlzdAogICAgICAg
ICBteSAkY29uc3RydWN0b3JOYW1lID0gJGF0dHJpYnV0ZUtleXNbMF07CiAgICAgICAgIHB1c2go
QHskbmV3RGF0YU5vZGUtPnBhcmFtZXRlcnN9LCBAeyRhdHRyaWJ1dGVzeyRjb25zdHJ1Y3Rvck5h
bWV9fSk7CiAgICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiTmFtZWRDb25zdHJ1Y3Rv
ciJ9ID0gJGNvbnN0cnVjdG9yTmFtZTsKLSAgICAgICAgJGRhdGFOb2RlLT5jb25zdHJ1Y3Rvcigk
bmV3RGF0YU5vZGUpOworICAgICAgICBwdXNoKEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3RvcnN9LCAk
bmV3RGF0YU5vZGUpOwogICAgIH0KICAgICAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcygk
ZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJlLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0KaW5kZXggZmY2Mjg3MjVlYjkwZjU0NjY3M2ZkMTY0MWVm
MWRjNWFjMjZjZGZjYi4uZjQ0MzI0MTczZWEyY2UwZDQ0M2M2ZjU0ZGVmZGI1NGQ1MDM5Y2U4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUu
cG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0K
QEAgLTQwLDcgKzQwLDcgQEAgc3RydWN0KCBkb21DbGFzcyA9PiB7CiAgICAgZnVuY3Rpb25zID0+
ICdAJywgICAgIyBMaXN0IG9mICdkb21GdW5jdGlvbicKICAgICBhdHRyaWJ1dGVzID0+ICdAJywg
ICAgIyBMaXN0IG9mICdkb21BdHRyaWJ1dGUnICAgIAogICAgIGV4dGVuZGVkQXR0cmlidXRlcyA9
PiAnJCcsICMgRXh0ZW5kZWQgYXR0cmlidXRlcwotICAgIGNvbnN0cnVjdG9yID0+ICckJywgIyBD
b25zdHJ1Y3RvcgorICAgIGNvbnN0cnVjdG9ycyA9PiAnQCcsICMgQ29uc3RydWN0b3IKICAgICBp
c0V4Y2VwdGlvbiA9PiAnJCcsICMgVXNlZCBmb3IgZXhjZXB0aW9uIGludGVyZmFjZXMKIH0pOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2Nr
ZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29j
a2V0Q3VzdG9tLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTVkZTlhNDIzYWVi
NTFkNmE0YWE5NDIwNDI4NzFmYjVlOGYyNzkyNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJTb2NrZXRDdXN0b20uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQotCi0jaW5jbHVkZSAiVjhX
ZWJTb2NrZXQuaCIKLQotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJGcmFt
ZS5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSAiVjhBcnJheUJ1ZmZlci5oIgot
I2luY2x1ZGUgIlY4QXJyYXlCdWZmZXJWaWV3LmgiCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0j
aW5jbHVkZSAiVjhCbG9iLmgiCi0jaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJX
ZWJTb2NrZXQuaCIKLSNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCi0jaW5jbHVkZSAiV29y
a2VyQ29udGV4dC5oIgotI2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgot
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYlNvY2tldDo6
Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElO
Q19TVEFUUygiRE9NLldlYlNvY2tldC5Db25zdHJ1Y3RvciIpOwotCi0gICAgaWYgKCFhcmdzLklz
Q29uc3RydWN0Q2FsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoIkRPTSBvYmpl
Y3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIsIGFyZ3MuR2V0
SXNvbGF0ZSgpKTsKLQotICAgIGlmIChDb25zdHJ1Y3Rvck1vZGU6OmN1cnJlbnQoKSA9PSBDb25z
dHJ1Y3Rvck1vZGU6OldyYXBFeGlzdGluZ09iamVjdCkKLSAgICAgICAgcmV0dXJuIGFyZ3MuSG9s
ZGVyKCk7Ci0KLSAgICBpZiAoYXJncy5MZW5ndGgoKSA9PSAwKQotICAgICAgICByZXR1cm4gdGhy
b3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7Ci0KLSAgICB2ODo6
VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7Ci0gICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiB1cmxzdHJpbmcg
PSBhcmdzWzBdLT5Ub1N0cmluZygpOwotICAgIGlmICh0cnlDYXRjaC5IYXNDYXVnaHQoKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93RXJyb3IodHJ5Q2F0Y2guRXhjZXB0aW9uKCksIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKLSAgICBpZiAodXJsc3RyaW5nLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93RXJyb3IoU3ludGF4RXJyb3IsICJFbXB0eSBVUkwiLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0K
LSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwotICAgIGNvbnN0IEtVUkwmIHVybCA9IGNvbnRleHQtPmNvbXBsZXRlVVJMKHRv
V2ViQ29yZVN0cmluZyh1cmxzdHJpbmcpKTsKLQotICAgIFJlZlB0cjxXZWJTb2NrZXQ+IHdlYlNv
Y2tldCA9IFdlYlNvY2tldDo6Y3JlYXRlKGNvbnRleHQpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotCi0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQotICAgICAgICB3ZWJTb2NrZXQtPmNv
bm5lY3QodXJsLCBlYyk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHByb3RvY29sc1ZhbHVlID0gYXJnc1sxXTsKLSAgICAgICAgaWYgKHByb3RvY29sc1ZhbHVlLT5J
c0FycmF5KCkpIHsKLSAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHByb3RvY29sczsKLSAgICAg
ICAgICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IHByb3RvY29sc0FycmF5ID0gdjg6OkxvY2FsPHY4
OjpBcnJheT46OkNhc3QocHJvdG9jb2xzVmFsdWUpOwotICAgICAgICAgICAgZm9yICh1aW50MzJf
dCBpID0gMDsgaSA8IHByb3RvY29sc0FycmF5LT5MZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgICAg
ICAgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoUHJvdG9jb2w7Ci0gICAgICAgICAgICAgICAgdjg6
OkhhbmRsZTx2ODo6U3RyaW5nPiBwcm90b2NvbCA9IHByb3RvY29sc0FycmF5LT5HZXQodjg6Oklu
dDMyOjpOZXcoaSkpLT5Ub1N0cmluZygpOwotICAgICAgICAgICAgICAgIGlmICh0cnlDYXRjaFBy
b3RvY29sLkhhc0NhdWdodCgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJv
cih0cnlDYXRjaFByb3RvY29sLkV4Y2VwdGlvbigpLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAg
ICAgICAgICAgICAgcHJvdG9jb2xzLmFwcGVuZCh0b1dlYkNvcmVTdHJpbmcocHJvdG9jb2wpKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHdlYlNvY2tldC0+Y29ubmVjdCh1cmwsIHByb3Rv
Y29scywgZWMpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdjg6OlRyeUNhdGNoIHRy
eUNhdGNoUHJvdG9jb2w7Ci0gICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHByb3Rv
Y29sID0gcHJvdG9jb2xzVmFsdWUtPlRvU3RyaW5nKCk7Ci0gICAgICAgICAgICBpZiAodHJ5Q2F0
Y2hQcm90b2NvbC5IYXNDYXVnaHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJv
cih0cnlDYXRjaFByb3RvY29sLkV4Y2VwdGlvbigpLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAg
ICAgICAgICB3ZWJTb2NrZXQtPmNvbm5lY3QodXJsLCB0b1dlYkNvcmVTdHJpbmcocHJvdG9jb2wp
LCBlYyk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gc2V0
RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0KLSAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6c2V0
RE9NV3JhcHBlcih3cmFwcGVyLCAmaW5mbywgd2ViU29ja2V0LmdldCgpKTsKLSAgICBWOERPTVdy
YXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdCh3ZWJTb2NrZXQucmVsZWFzZSgpLCB3cmFw
cGVyKTsKLSAgICByZXR1cm4gd3JhcHBlcjsKLX0KLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
V2ViU29ja2V0OjpzZW5kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAg
ICBJTkNfU1RBVFMoIkRPTS5XZWJTb2NrZXQuc2VuZCgpIik7Ci0KLSAgICBpZiAoIWFyZ3MuTGVu
Z3RoKCkpCi0gICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKLQotICAgIFdlYlNvY2tldCogd2ViU29ja2V0ID0gVjhXZWJTb2NrZXQ6
OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXNz
YWdlID0gYXJnc1swXTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBib29sIHJlc3Vs
dDsKLSAgICBpZiAoVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UobWVzc2FnZSkpIHsKLSAgICAg
ICAgQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyID0gVjhBcnJheUJ1ZmZlcjo6dG9OYXRpdmUodjg6
OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChtZXNzYWdlKSk7Ci0gICAgICAgIEFTU0VSVChhcnJh
eUJ1ZmZlcik7Ci0gICAgICAgIHJlc3VsdCA9IHdlYlNvY2tldC0+c2VuZChhcnJheUJ1ZmZlciwg
ZWMpOwotICAgIH0gZWxzZSBpZiAoVjhBcnJheUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKG1lc3Nh
Z2UpKSB7Ci0gICAgICAgIEFycmF5QnVmZmVyVmlldyogYXJyYXlCdWZmZXJWaWV3ID0gVjhBcnJh
eUJ1ZmZlclZpZXc6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QobWVzc2Fn
ZSkpOwotICAgICAgICBBU1NFUlQoYXJyYXlCdWZmZXJWaWV3KTsKLSAgICAgICAgcmVzdWx0ID0g
d2ViU29ja2V0LT5zZW5kKGFycmF5QnVmZmVyVmlldywgZWMpOwotICAgIH0gZWxzZSBpZiAoVjhC
bG9iOjpIYXNJbnN0YW5jZShtZXNzYWdlKSkgewotICAgICAgICBCbG9iKiBibG9iID0gVjhCbG9i
Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KG1lc3NhZ2UpKTsKLSAgICAg
ICAgQVNTRVJUKGJsb2IpOwotICAgICAgICByZXN1bHQgPSB3ZWJTb2NrZXQtPnNlbmQoYmxvYiwg
ZWMpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKLSAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBzdHJpbmdNZXNzYWdlID0gbWVzc2FnZS0+VG9TdHJp
bmcoKTsKLSAgICAgICAgaWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpKQotICAgICAgICAgICAgcmV0
dXJuIHRocm93RXJyb3IodHJ5Q2F0Y2guRXhjZXB0aW9uKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsK
LSAgICAgICAgcmVzdWx0ID0gd2ViU29ja2V0LT5zZW5kKHRvV2ViQ29yZVN0cmluZyhzdHJpbmdN
ZXNzYWdlKSwgZWMpOwotICAgIH0KLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiBzZXRET01F
eGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLQotICAgIHJldHVybiB2OEJvb2xlYW4o
cmVzdWx0LCBhcmdzLkdldElzb2xhdGUoKSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171741</attachid>
            <date>2012-10-31 16:49:18 -0700</date>
            <delta_ts>2012-11-01 12:05:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100801-20121101004740.patch</filename>
            <type>text/plain</type>
            <size>92454</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2E5NDQ2NzkwZGFjZmZk
ZWY3MmNkMDJjNTM5ODIwNDBkNzBmYTQ0MS4uZjU3ZGYxYzU0NWJiMzIwMGRiYzE4YzhlNGJkZDA2
MTBlN2M4MjdjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0OSBAQAorMjAxMi0xMC0zMSAgVG9t
bXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZW1vdmUgbW9z
dCBvZiB0aGUgY3VzdG9tIGNvZGUgZm9yIFdlYlNvY2tldHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDgwMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyB0aGUgZm9sbG93aW5n
OgorCisgICAgICAgIDEpIE1vZGlmaWVzIHRoZSBWOCBjb2RlIGdlbmVyYXRvciB0byBzdXBwb3J0
IG92ZXJsb2FkZWQgY29uc3RydWN0b3JzLAorICAgICAgICAgICB0aGUgSlMgZ2VuZXJhdG9yIGlz
IGZpeGVkIHRvIHdvcmsgYXMgYmVmb3JlLiBQcm9wZXIgc3VwcG9ydCBmb3IgSlMgd2lsbCBjb21l
IGxhdGVyLgorCisgICAgICAgIDIpIE1vZGlmaWVzIFdlYlNvY2tldC5oLy5jcHAgZm9yIHRoZSBu
ZXcgY29uc3RydWN0b3JzLgorCisgICAgICAgIDMpIE1vZGlmaWVzIFdlYlNvY2tldC5oLy5jcHAv
LmlkbCB0byBub3QgaGF2ZSBjdXN0b20gY29kZSBmb3IgdGhlIHNlbmQgbWV0aG9kLgorCisgICAg
ICAgIFRlc3RlZCBieSBydW5uaW5nIFdlYlNvY2tldHMgbGF5b3V0IHRlc3RzLgorCisgICAgICAg
ICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Lmg6CisgICAgICAgIChXZWJTb2NrZXQpOgorICAgICAgICAq
IE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsOgorICAgICAgICAqIFVzZVY4LmNtYWtl
OgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYlNv
Y2tldEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG06CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbik6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0
ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZU92ZXJsb2FkZWRDb25zdHJ1Y3RvckNhbGxiYWNr
KToKKyAgICAgICAgKEdlbmVyYXRlU2luZ2xlQ29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAg
IChHZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbToKKyAgICAgICAgKGNvcHlB
dHRyaWJ1dGVzKToKKyAgICAgICAgKHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KToKKyAgICAg
ICAgKHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVzKToKKyAgICAgICAgKGFwcGx5RXh0ZW5kZWRBdHRy
aWJ1dGVMaXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETFN0cnVjdHVyZS5wbToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJET01UZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6V2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlOjpXZWJE
T01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGUpOgorICAgICAgICAoV2ViRE9NVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OldlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
UHJpdmF0ZSk6CisgICAgICAgIChXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6V2Vi
RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOgorICAgICAgICAoV2ViRE9NVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJET01UZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczo6aW1wbCk6CisgICAgICAgIChXZWJET01UZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6fldlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKToKKyAgICAgICAg
KHRvV2ViQ29yZSk6CisgICAgICAgICh0b1dlYktpdCk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERP
TVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViS2l0OjpraXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAgICAg
ICAgKFdlYktpdDo6d3JhcFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKToKKyAgICAgICAgKHdl
YmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19maW5hbGl6ZSk6CisgICAgICAg
ICh3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfc2V0X3Byb3BlcnR5KToK
KyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19nZXRfcHJv
cGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3Jz
X2NvbnN0cnVjdGVkKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0
cnVjdG9yc19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVk
X2NvbnN0cnVjdG9yc19pbml0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOiBBZGRlZC4KKyAgICAg
ICAgKF9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk6CisgICAgICAgIChfV2Vi
S2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDbGFzcyk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNQcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzQ29uc3RydWN0b3I6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZTo6c2VsZik6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6On5KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmdldE93blByb3Bl
cnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OmlzT2JzZXJ2YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNPd25lcjo6ZmluYWxpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChXZWJDb3JlOjp0b1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6cmVsZWFzZUltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6cmVsZWFzZUltcGxJ
Zk5vdE51bGwpOgorICAgICAgICAoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OndyYXBwZXJPd25lcik6CisgICAgICAgIChXZWJDb3JlOjp3cmFw
cGVyQ29udGV4dCk6CisgICAgICAgIChKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90
b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1Byb3RvdHlwZSk6CisgICAgICAgIChKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc0NvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
Lmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bRE9NVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMgZGVhbGxvY10pOgorICAgICAgICAoLVtET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyBmaW5hbGl6ZV0pOgorICAgICAgICAoY29yZSk6CisgICAgICAgIChraXQp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzSW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaWRs
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5pZGwuCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaWRsOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzVjhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1Y4SW50ZXJuYWw6OlY4X1VTRSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjFDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjJDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpj
b25zdHJ1Y3RvcjNDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpW
OFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUZW1wbGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpHZXRS
YXdUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzOjpIYXNJbnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzOjp3cmFwU2xvdyk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjpkZXJlZk9iamVjdCk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6dG9OYXRpdmUp
OgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6aW5zdGFs
bFBlckNvbnRleHRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp3cmFwKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdl
YlNvY2tldEN1c3RvbS5jcHA6IFJlbW92ZWQuCisKIDIwMTItMTAtMzEgIFJvZ2VyIEZvbmcgIDxy
b2dlcl9mb25nQGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFuZ2UgUG9wdXBNZW51IHBvc2l0aW9u
aW5nIG9uIFdpbmRvd3Mgc3VjaCB0aGF0IGJlaGF2aW91ciBvbiBtdWx0aXBsZSBtb25pdG9ycyBt
YXRjaGVzIFdpbmRvd3Mgc3RhbmRhcmRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCA0NmQ2MmRlODlmNDY2OGZlN2ExNTFmZWVkNTMx
MTM4MjQ3MzAyN2RhLi45Y2FiMTYwNzYwZjJiZGYxNjZmOWVjYmM2MjA0YmNkYzlkNTc0OWQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApA
QCAtMTY0LDYgKzE2NCwzNyBAQCBQYXNzUmVmUHRyPFdlYlNvY2tldD4gV2ViU29ja2V0OjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICByZXR1cm4gd2ViU29ja2V0
LnJlbGVhc2UoKTsKIH0KIAorUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IFdlYlNvY2tldDo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBFeGNl
cHRpb25Db2RlJiBlYykKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBwcm90b2NvbHM7CisgICAgcmV0
dXJuIFdlYlNvY2tldDo6Y3JlYXRlKGNvbnRleHQsIHVybCwgcHJvdG9jb2xzLCBlYyk7Cit9CisK
K1Bhc3NSZWZQdHI8V2ViU29ja2V0PiBXZWJTb2NrZXQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHByb3RvY29scywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKHVybC5pc051bGwoKSkg
eworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwor
ICAgIFJlZlB0cjxXZWJTb2NrZXQ+IHdlYlNvY2tldChhZG9wdFJlZihuZXcgV2ViU29ja2V0KGNv
bnRleHQpKSk7CisgICAgd2ViU29ja2V0LT5zdXNwZW5kSWZOZWVkZWQoKTsKKworICAgIHdlYlNv
Y2tldC0+Y29ubmVjdChjb250ZXh0LT5jb21wbGV0ZVVSTCh1cmwpLCBwcm90b2NvbHMsIGVjKTsK
KyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIHdlYlNvY2tldC5y
ZWxlYXNlKCk7Cit9CisKK1Bhc3NSZWZQdHI8V2ViU29ja2V0PiBXZWJTb2NrZXQ6OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiBwcm90b2NvbCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgVmVjdG9yPFN0cmlu
Zz4gcHJvdG9jb2xzOworICAgIGlmICghcHJvdG9jb2wuaXNOdWxsKCkpCisgICAgICAgIHByb3Rv
Y29scy5hcHBlbmQocHJvdG9jb2wpOworICAgIHJldHVybiBXZWJTb2NrZXQ6OmNyZWF0ZShjb250
ZXh0LCB1cmwsIHByb3RvY29scywgZWMpOworfQorCiB2b2lkIFdlYlNvY2tldDo6Y29ubmVjdChj
b25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gcHJvdG9jb2xzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5oCmluZGV4IGE5MzU1MjhiYTI0NjEyMjE5MjdkNWIzM2UxYjVjZjY1OTc0YzQ0ZDIuLjJi
YWU1MzliMWI1MTI1M2E0YjMzY2ViYjViODQ2OTY4ZWVhNDhjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKQEAgLTU2LDYgKzU2LDkgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CiAgICAgc3RhdGljIGNvbnN0IGNo
YXIqIHN1YlByb3RvY29sU2VwZXJhdG9yKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29j
a2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJp
bmcmIHVybCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNvY2tl
dD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiBwcm90b2NvbCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByb3RvY29scywgRXhjZXB0aW9uQ29kZSYp
OwogICAgIHZpcnR1YWwgfldlYlNvY2tldCgpOwogCiAgICAgZW51bSBTdGF0ZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCmluZGV4IDcyY2Y1
ZDRlOWNjMTdiYzkyZjczOGYwOWJlNjhhY2IyMDExZWU5NDcuLjQyNTM2NTExN2ZiYjIwYjgwMzRk
N2FiNDg2NzJjNTFmMjAzODZhZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuaWRsCkBAIC0zMiwxMCArMzIsMTUgQEAKIFsKICAgICBDb25kaXRp
b25hbD1XRUJfU09DS0VUUywKICAgICBBY3RpdmVET01PYmplY3QsCi0gICAgQ3VzdG9tQ29uc3Ry
dWN0b3IsCi0gICAgQ29uc3RydWN0b3JQYXJhbWV0ZXJzPTEsCisgICAgQ29uc3RydWN0b3IoaW4g
RE9NU3RyaW5nIHVybCksCisgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIHVybCwgaW4gc2Vx
dWVuY2U8U3RyaW5nPiBwcm90b2NvbHMpLAorICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyB1
cmwsIGluIERPTVN0cmluZyBwcm90b2NvbCksCisgICAgQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRp
b24sCisgICAgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKICAgICBFdmVudFRhcmdl
dCwKLSAgICBKU05vU3RhdGljVGFibGVzCisgICAgSlNOb1N0YXRpY1RhYmxlcywKKyAgICBKU0N1
c3RvbUNvbnN0cnVjdG9yLAorICAgIEpTQ29uc3RydWN0b3JQYXJhbWV0ZXJzPTEsCiBdIGludGVy
ZmFjZSBXZWJTb2NrZXQgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgVVJMOyAv
LyBMb3dlcmNhc2VkIC51cmwgaXMgdGhlIG9uZSBpbiB0aGUgc3BlYywgYnV0IGxlYXZpbmcgLlVS
TCBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLgogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmcgdXJsOwpAQCAtNjAsMTYgKzY1LDE0IEBACiAKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGJpbmFyeVR5cGU7CiAKLSAgICAvLyBGSVhNRTogVXNlIG92ZXJsb2FkaW5nIHByb3ZpZGVkIGJ5
IG91ciBJREwgY29kZSBnZW5lcmF0b3IuCi0gICAgLy8gQWNjb3JkaW5nIHRvIFdlYiBJREwgc3Bl
Y2lmaWNhdGlvbiwgb3ZlcmxvYWRlZCBmdW5jdGlvbiB3aXRoIERPTVN0cmluZyBhcmd1bWVudAot
ICAgIC8vIHNob3VsZCBhY2NlcHQgYW55dGhpbmcgdGhhdCBjYW4gYmUgY29udmVydGVkIHRvIGEg
c3RyaW5nIChpbmNsdWRpbmcgbnVtYmVycywKLSAgICAvLyBib29sZWFucywgbnVsbCwgdW5kZWZp
bmVkIGFuZCBvYmplY3RzIGV4Y2VwdCBBcnJheUJ1ZmZlciBhbmQgQmxvYikuIEN1cnJlbnQgY29k
ZQotICAgIC8vIGdlbmVyYXRvciBkb2VzIG5vdCBoYW5kbGUgdGhpcyBydWxlIGNvcnJlY3RseS4K
LSAgICAvLyBib29sZWFuIHNlbmQoaW4gQXJyYXlCdWZmZXIgZGF0YSkgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7Ci0gICAgLy8gYm9vbGVhbiBzZW5kKGluIEFycmF5QnVmZmVyVmlldyBkYXRhKSByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAvLyBib29sZWFuIHNlbmQoaW4gQmxvYiBkYXRhKSByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAvLyBib29sZWFuIHNlbmQoaW4gRE9NU3RyaW5nIGRhdGEp
IHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgIFtDdXN0b21dIGJvb2xlYW4gc2VuZChpbiBET01T
dHJpbmcgZGF0YSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgYm9vbGVhbiBzZW5kKGluIEFy
cmF5QnVmZmVyIGRhdGEpCisgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgIGJvb2xl
YW4gc2VuZChpbiBBcnJheUJ1ZmZlclZpZXcgZGF0YSkKKyAgICAgICAgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CisgICAgYm9vbGVhbiBzZW5kKGluIEJsb2IgZGF0YSkKKyAgICAgICAgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CisgICAgYm9vbGVhbiBzZW5kKGluIERPTVN0cmluZyBkYXRhKQorICAgICAg
ICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgIHZvaWQgY2xvc2UoaW4gW0NsYW1wLCBPcHRp
b25hbF0gdW5zaWduZWQgc2hvcnQgY29kZSwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgcmVhc29u
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVXNl
VjguY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQppbmRleCA4MmIxZGE0ZmFmYmM3
NmE0ODEzZDE5N2Q3YzBmYjc4YjM2YTEyMDU0Li5kNjUzMjg4MmU4ZTFlZTNjYjg1NWRkOGExY2Yx
MmUxYWYzNDI2OWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQpAQCAtMTUwLDcgKzE1MCw2IEBAIExJU1QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRBbmlt
YXRpb25DdXN0b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRDb25z
dHJ1Y3Rvci5jcHAKLSAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3Bw
CiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKICAgICBi
aW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA5
YjI4NTlmMzYzNWI3MDQyZmZmMDVlNzkyYWQ1NmE3NGY1MWExZWYyLi4yODdlMTU5NzdmZGRkNTZh
MzI0OWQ4MjhiODRhM2ViNjA2NDBhNzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNDU5LDcgKzI0
NTksNiBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5n
Q29udGV4dEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdl
YktpdEFuaW1hdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdlYktpdFBvaW50Q29uc3RydWN0b3IuY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwCmluZGV4IDVhZTQxNTlk
YzlmMTdmNDVjY2ZmZWY0OTg5ZDcxOTZiYzBkODAyOWEuLjU4ZmVhZTMyYjk3M2VhZTA4YTQ3MDlk
MGQ0ZmM4Njc5ZDczNTQ0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2ViU29ja2V0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dlYlNvY2tldEN1c3RvbS5jcHAKQEAgLTkxLDM0ICs5MSw2IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSlNXZWJTb2NrZXRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNXZWJTb2NrZXQo
RXhlY1N0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShDUkVBVEVfRE9NX1dSQVBQRVIoZXhl
YywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIFdlYlNvY2tldCwgd2ViU29ja2V0Lmdl
dCgpKSk7CiB9CiAKLUpTVmFsdWUgSlNXZWJTb2NrZXQ6OnNlbmQoRXhlY1N0YXRlKiBleGVjKQot
ewotICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQotICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0KLSAgICBK
U1ZhbHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBib29sIHJlc3VsdDsKLSAgICBpZiAobWVzc2FnZS5pbmhlcml0cygmSlNBcnJh
eUJ1ZmZlcjo6c19pbmZvKSkKLSAgICAgICAgcmVzdWx0ID0gaW1wbCgpLT5zZW5kKHRvQXJyYXlC
dWZmZXIobWVzc2FnZSksIGVjKTsKLSAgICBlbHNlIGlmIChtZXNzYWdlLmluaGVyaXRzKCZKU0Fy
cmF5QnVmZmVyVmlldzo6c19pbmZvKSkKLSAgICAgICAgcmVzdWx0ID0gaW1wbCgpLT5zZW5kKHRv
QXJyYXlCdWZmZXJWaWV3KG1lc3NhZ2UpLCBlYyk7Ci0gICAgZWxzZSBpZiAobWVzc2FnZS5pbmhl
cml0cygmSlNCbG9iOjpzX2luZm8pKQotICAgICAgICByZXN1bHQgPSBpbXBsKCktPnNlbmQodG9C
bG9iKG1lc3NhZ2UpLCBlYyk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFN0cmluZyBzdHJpbmdNZXNz
YWdlID0gbWVzc2FnZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Ci0gICAgICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwot
ICAgICAgICByZXN1bHQgPSBpbXBsKCktPnNlbmQoc3RyaW5nTWVzc2FnZSwgZWMpOwotICAgIH0K
LSAgICBpZiAoZWMpIHsKLSAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGpzQm9vbGVhbihy
ZXN1bHQpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBi
NTQ5NzlmYTJmMjA1NmM3M2ZhYmQyODdhNmI3Y2Y0OGJmY2EyMGM4Li40OTllM2IyMGM0ZmU2NjI2
OTI4YTdhMGFiNDdmM2VlN2ZlZDY4OGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzcyMSwxMyArMzcyMSwyMSBAQCBz
dWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KICAgICBteSAkZGF0YU5vZGUgPSBzaGlm
dDsKICAgICBteSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IgPSBzaGlmdDsKIAorICAgICMg
RklYTUU6IEFkZCBzdXBwb3J0IGZvciBvdmVybG9hZGVkIGNvbnN0cnVjdG9ycyB0byBqUyBhcyB3
ZWxsLgorICAgICMgRm9yIG5vdyBtaW1pYyB0aGUgb2xkIGJlaGF2aW91ciBieSBvbmx5IGdlbmVy
YXRpbmcgY29kZSBmb3IgdGhlIGxhc3QgIkNvbnN0cnVjdG9yIiBhdHRyaWJ1dGUuCisgICAgbXkg
JGZ1bmN0aW9uID0gQHskZGF0YU5vZGUtPmNvbnN0cnVjdG9yc31bLTFdOworCiAgICAgbXkgJGNv
bnN0cnVjdG9yQ2xhc3NOYW1lID0gJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yID8gIiR7Y2xh
c3NOYW1lfU5hbWVkQ29uc3RydWN0b3IiIDogIiR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yIjsKKwog
ICAgIG15ICRudW1iZXJPZkNvbnN0cnVjdG9yUGFyYW1ldGVycyA9ICRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yUGFyYW1ldGVycyJ9OwogICAgIGlmICghZGVmaW5l
ZCAkbnVtYmVyT2ZDb25zdHJ1Y3RvclBhcmFtZXRlcnMpIHsKKyAgICAgICAgJG51bWJlck9mQ29u
c3RydWN0b3JQYXJhbWV0ZXJzID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlND
b25zdHJ1Y3RvclBhcmFtZXRlcnMifTsKKyAgICB9CisgICAgaWYgKCFkZWZpbmVkICRudW1iZXJP
ZkNvbnN0cnVjdG9yUGFyYW1ldGVycykgewogICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklz
Q29uc3RydWN0b3JUZW1wbGF0ZSgkZGF0YU5vZGUsICJFdmVudCIpKSB7CiAgICAgICAgICAgICAk
bnVtYmVyT2ZDb25zdHJ1Y3RvclBhcmFtZXRlcnMgPSAyOwogICAgICAgICB9IGVsc2lmICgkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvciJ9KSB7Ci0gICAgICAgICAg
ICAkbnVtYmVyT2ZDb25zdHJ1Y3RvclBhcmFtZXRlcnMgPSBAeyRkYXRhTm9kZS0+Y29uc3RydWN0
b3ItPnBhcmFtZXRlcnN9OworICAgICAgICAgICAgJG51bWJlck9mQ29uc3RydWN0b3JQYXJhbWV0
ZXJzID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwogICAgICAgICB9CiAgICAgfQogCkBAIC0z
ODg5LDcgKzM4OTcsNiBAQCBFTkQKIAogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgICR7Y29uc3RydWN0b3JDbGFzc05hbWV9KiBjYXN0ZWRUaGlzID0ganNDYXN0PCR7Y29uc3Ry
dWN0b3JDbGFzc05hbWV9Kj4oZXhlYy0+Y2FsbGVlKCkpO1xuIik7CiAKLSAgICAgICAgICAgIG15
ICRmdW5jdGlvbiA9ICRkYXRhTm9kZS0+Y29uc3RydWN0b3I7CiAgICAgICAgICAgICBteSBAY29u
c3RydWN0b3JBcmdMaXN0OwogCiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyI8cnVudGltZS9F
cnJvci5oPiJ9ID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0KaW5kZXggMzk3ZDJjMzhlMzYyMDQyN2U2YjNmMTBlM2FkODIxNGJk
ZjBkZmUyOC4uZTYxNTExMmNkZThiNzkyZmYzMWQ3NDFjZmUyYWNiZjNiZDgxNmMyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
QEAgLTQ5NSw2ICs0OTUsMTcgQEAgRU5ECiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQp
OwogcHJpdmF0ZToKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwU2xvdygk
e3dyYXBTbG93QXJndW1lbnRUeXBlfSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNv
bnRleHQsIHY4OjpJc29sYXRlKik7CitFTkQKKworICAgIGlmIChJc0NvbnN0cnVjdGFibGUoJGRh
dGFOb2RlKSAmJiBAeyRkYXRhTm9kZS0+Y29uc3RydWN0b3JzfSA+IDEpIHsKKyAgICAgICAgZm9y
IChteSAkaSA9IDE7ICRpIDw9IEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3RvcnN9OyAkaSsrKSB7Cisg
ICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKKyAgICBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yJHtpfUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmKTsKK0VORAorICAgICAgICB9CisgICAgfQorCisgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
PDxFTkQpOwogfTsKIAogRU5ECkBAIC0xODYyLDExICsxODczLDUxIEBAIHN1YiBHZW5lcmF0ZVBh
cmFtZXRlcnNDaGVjawogICAgIHJldHVybiAoJHBhcmFtZXRlckNoZWNrU3RyaW5nLCAkcGFyYW1J
bmRleCwgJXJlcGxhY2VtZW50cyk7CiB9CiAKLXN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbGJh
Y2sKK3N1YiBHZW5lcmF0ZU92ZXJsb2FkZWRDb25zdHJ1Y3RvckNhbGxiYWNrCiB7Ci0gICAgbXkg
JGZ1bmN0aW9uID0gc2hpZnQ7CiAgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CiAgICAgbXkgJGlt
cGxDbGFzc05hbWUgPSBzaGlmdDsKKyAgICAKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQp
Owordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4JHtpbXBsQ2xhc3NOYW1lfTo6Y29uc3RydWN0b3JD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9N
LiR7aW1wbENsYXNzTmFtZX0uQ29uc3RydWN0b3IiKTsKKyAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1
Y3RDYWxsKCkpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigiRE9NIG9iamVjdCBjb25z
dHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIik7CisKKyAgICBpZiAoQ29u
c3RydWN0b3JNb2RlOjpjdXJyZW50KCkgPT0gQ29uc3RydWN0b3JNb2RlOjpXcmFwRXhpc3RpbmdP
YmplY3QpCisgICAgICAgIHJldHVybiBhcmdzLkhvbGRlcigpOworCitFTkQKKworICAgIG15ICRs
ZWFzdE51bU1hbmRhdG9yeVBhcmFtcyA9IDI1NTsKKyAgICBmb3JlYWNoIG15ICRjb25zdHJ1Y3Rv
ciAoQHskZGF0YU5vZGUtPmNvbnN0cnVjdG9yc30pIHsKKyAgICAgICAgbXkgJG5hbWUgPSAiY29u
c3RydWN0b3IiIC4gJGNvbnN0cnVjdG9yLT57b3ZlcmxvYWRlZEluZGV4fSAuICJDYWxsYmFjayI7
CisgICAgICAgIG15ICgkbnVtTWFuZGF0b3J5UGFyYW1zLCAkcGFyYW1ldGVyc0NoZWNrKSA9IEdl
bmVyYXRlRnVuY3Rpb25QYXJhbWV0ZXJzQ2hlY2soJGNvbnN0cnVjdG9yKTsKKyAgICAgICAgJGxl
YXN0TnVtTWFuZGF0b3J5UGFyYW1zID0gJG51bU1hbmRhdG9yeVBhcmFtcyBpZiAoJG51bU1hbmRh
dG9yeVBhcmFtcyA8ICRsZWFzdE51bU1hbmRhdG9yeVBhcmFtcyk7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGlmICgkcGFyYW1ldGVyc0NoZWNrKVxuIik7CisgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gJG5hbWUoYXJncyk7XG4iKTsKKyAgICB9Cisg
ICAgaWYgKCRsZWFzdE51bU1hbmRhdG9yeVBhcmFtcyA+PSAxKSB7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgJGxlYXN0TnVtTWFuZGF0b3J5UGFy
YW1zKVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhy
b3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7XG4iKTsKKyAgICB9
CisgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoMCwgYXJncy5HZXRJc29sYXRlKCkpOworRU5ECisgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9
XG5cbiIpOworfQorCitzdWIgR2VuZXJhdGVTaW5nbGVDb25zdHJ1Y3RvckNhbGxiYWNrCit7Cisg
ICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CisgICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsK
KyAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKKworICAgIG15ICRvdmVybG9hZGVkSW5kZXhTdHJp
bmcgPSAiIjsKKyAgICBpZiAoJGZ1bmN0aW9uLT57b3ZlcmxvYWRlZEluZGV4fSA+IDApIHsKKyAg
ICAgICAgJG92ZXJsb2FkZWRJbmRleFN0cmluZyAuPSAkZnVuY3Rpb24tPntvdmVybG9hZGVkSW5k
ZXh9OworICAgIH0KIAogICAgIG15ICRyYWlzZXNFeGNlcHRpb25zID0gQHskZnVuY3Rpb24tPnJh
aXNlc0V4Y2VwdGlvbnN9OwogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbiJ9KSB7CkBAIC0xODg1LDE4ICsxOTM2LDIyIEBA
IHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbGJhY2sKICAgICBteSBAYmVmb3JlQXJndW1lbnRM
aXN0OwogICAgIG15IEBhZnRlckFyZ3VtZW50TGlzdDsKICAgICBwdXNoKEBpbXBsQ29udGVudCwg
PDxFTkQpOwotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4JHtpbXBsQ2xhc3NOYW1lfTo6Y29uc3Ry
dWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4JHtpbXBsQ2xhc3NOYW1lfTo6Y29uc3RydWN0b3Ike292ZXJsb2FkZWRJbmRleFN0
cmluZ31DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFU
UygiRE9NLiR7aW1wbENsYXNzTmFtZX0uQ29uc3RydWN0b3IiKTsKKyAgICBJTkNfU1RBVFMoIkRP
TS4ke2ltcGxDbGFzc05hbWV9LkNvbnN0cnVjdG9yJHtvdmVybG9hZGVkSW5kZXhTdHJpbmd9Iik7
CiAgICAgJHttYXliZU9ic2VydmVGZWF0dXJlfQorRU5ECisKKyAgICBpZiAoJGZ1bmN0aW9uLT57
b3ZlcmxvYWRlZEluZGV4fSA9PSAwKSB7CisgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5E
KTsKICAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCiAgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEg
ZnVuY3Rpb24uIik7CiAKICAgICBpZiAoQ29uc3RydWN0b3JNb2RlOjpjdXJyZW50KCkgPT0gQ29u
c3RydWN0b3JNb2RlOjpXcmFwRXhpc3RpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBhcmdzLkhv
bGRlcigpOwogRU5ECi0KLSAgICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJhdGVBcmd1bWVudHND
b3VudENoZWNrKCRmdW5jdGlvbiwgJGRhdGFOb2RlKSk7CisgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soJGZ1bmN0aW9uLCAkZGF0YU5vZGUpKTsK
KyAgICB9CiAKICAgICBpZiAoJHJhaXNlc0V4Y2VwdGlvbnMpIHsKICAgICAgICAgQWRkVG9JbXBs
SW5jbHVkZXMoIkV4Y2VwdGlvbkNvZGUuaCIpOwpAQCAtMTk2MCw2ICsyMDE1LDIxIEBAIEVORAog
ICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKIH0KIAorc3ViIEdlbmVyYXRlQ29uc3RydWN0
b3JDYWxsYmFjaworeworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworICAgIG15ICRpbXBsQ2xh
c3NOYW1lID0gc2hpZnQ7CisKKyAgICBpZiAoQHskZGF0YU5vZGUtPmNvbnN0cnVjdG9yc30gPT0g
MSkgeworICAgICAgICBHZW5lcmF0ZVNpbmdsZUNvbnN0cnVjdG9yQ2FsbGJhY2soJGRhdGFOb2Rl
LCAkaW1wbENsYXNzTmFtZSwgQHskZGF0YU5vZGUtPmNvbnN0cnVjdG9yc31bMF0pOworICAgIH0g
ZWxzZSB7CisgICAgICAgIGZvcmVhY2ggbXkgJGNvbnN0cnVjdG9yIChAeyRkYXRhTm9kZS0+Y29u
c3RydWN0b3JzfSkgeworICAgICAgICAgICAgR2VuZXJhdGVTaW5nbGVDb25zdHJ1Y3RvckNhbGxi
YWNrKCRkYXRhTm9kZSwgJGltcGxDbGFzc05hbWUsICRjb25zdHJ1Y3Rvcik7CisgICAgICAgIH0K
KyAgICAgICAgR2VuZXJhdGVPdmVybG9hZGVkQ29uc3RydWN0b3JDYWxsYmFjaygkZGF0YU5vZGUs
ICRpbXBsQ2xhc3NOYW1lKTsKKyAgICB9Cit9CisKIHN1YiBHZW5lcmF0ZUV2ZW50Q29uc3RydWN0
b3JDYWxsYmFjawogewogICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OwpAQCAtMjgzOSw5ICsyOTA5
LDkgQEAgRU5ECiAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIn0gLy8gbmFtZXNwYWNlICR7
aW50ZXJmYWNlTmFtZX1WOEludGVybmFsXG5cbiIpOwogCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0b3IifSAmJiAhKCRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9KSkgewotICAgICAgICBHZW5l
cmF0ZU5hbWVkQ29uc3RydWN0b3JDYWxsYmFjaygkZGF0YU5vZGUtPmNvbnN0cnVjdG9yLCAkZGF0
YU5vZGUsICRpbnRlcmZhY2VOYW1lKTsKKyAgICAgICAgR2VuZXJhdGVOYW1lZENvbnN0cnVjdG9y
Q2FsbGJhY2soQHskZGF0YU5vZGUtPmNvbnN0cnVjdG9yc31bMF0sICRkYXRhTm9kZSwgJGludGVy
ZmFjZU5hbWUpOwogICAgIH0gZWxzaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkNvbnN0cnVjdG9yIn0gJiYgISgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1
c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3Vz
dG9tQ29uc3RydWN0b3IifSkpIHsKLSAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckNhbGxiYWNr
KCRkYXRhTm9kZS0+Y29uc3RydWN0b3IsICRkYXRhTm9kZSwgJGludGVyZmFjZU5hbWUpOworICAg
ICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbGJhY2soJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFt
ZSk7CiAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUZW1wbGF0ZSgk
ZGF0YU5vZGUsICJFdmVudCIpKSB7CiAgICAgICAgIEdlbmVyYXRlRXZlbnRDb25zdHJ1Y3RvckNh
bGxiYWNrKCRkYXRhTm9kZSwgJGludGVyZmFjZU5hbWUpOwogICAgIH0gZWxzaWYgKCRjb2RlR2Vu
ZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVGVtcGxhdGUoJGRhdGFOb2RlLCAiVHlwZWRBcnJheSIpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0
ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4
dAppbmRleCBkYjU4ODRjNWY0MjhjNzBkODVhZTEyNGUxZDY0ODYxOWJmZTdkZTQwLi5jOTAzMDc4
NDQzNWY4OWUxYmM4MGE1ZGEwZjk0M2VmMmJhYTFiN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQKQEAgLTYxLDYgKzYxLDcgQEAg
SW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3RydWN0b3IKIEludGVyZmFjZU5hbWU9KgogSXNJbmRleAog
SXNXb3JrZXJDb250ZXh0CitKU0NvbnN0cnVjdG9yUGFyYW1ldGVycz0qCiBKU0N1c3RvbQogSlND
dXN0b21Db25zdHJ1Y3RvcgogSlNDdXN0b21EZWZpbmVPd25Qcm9wZXJ0eQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQppbmRleCAxOWZiNjQ5NWMzMWIxZmI1
NmQ3ZTZhOWYxNTBkYjk1OTgyYzc0NzEyLi40OGY1YzNjM2ZlNTkwMzY4MjY0MGQ0OTViN2M1MDdi
MmFmZjJhZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lE
TFBhcnNlci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNl
ci5wbQpAQCAtMTMyMyw2ICsxMzIzLDI1IEBAIHN1YiBwYXJzZUV4dGVuZGVkQXR0cmlidXRlTGlz
dEFsbG93RW1wdHkKICAgICByZXR1cm4ge307CiB9CiAKK3N1YiBjb3B5QXR0cmlidXRlcworewor
ICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QgPSBzaGlmdDsKKyAgICBteSAkYXR0ciA9IHNo
aWZ0OworCisgICAgZm9yIG15ICRrZXkgKGtleXMgJXskYXR0cn0pIHsKKyAgICAgICAgaWYgKCRr
ZXkgZXEgIkNvbnN0cnVjdG9yIikgeworICAgICAgICAgICAgcHVzaChAeyRleHRlbmRlZEF0dHJp
YnV0ZUxpc3QtPnsiQ29uc3RydWN0b3JzIn19LCAkYXR0ci0+eyRrZXl9KTsKKyAgICAgICAgfSBl
bHNpZiAoJGtleSBlcSAiQ29uc3RydWN0b3JzIikgeworICAgICAgICAgICAgbXkgQGNvbnN0cnVj
dG9ycyA9IEB7JGF0dHItPnska2V5fX07CisgICAgICAgICAgICBmb3JlYWNoIG15ICRjb25zdHJ1
Y3RvciAoQGNvbnN0cnVjdG9ycykgeworICAgICAgICAgICAgICAgIHB1c2goQHskZXh0ZW5kZWRB
dHRyaWJ1dGVMaXN0LT57IkNvbnN0cnVjdG9ycyJ9fSwgJGNvbnN0cnVjdG9yKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZUxp
c3QtPnska2V5fSA9ICRhdHRyLT57JGtleX07CisgICAgICAgIH0KKyAgICB9Cit9CisKIHN1YiBw
YXJzZUV4dGVuZGVkQXR0cmlidXRlTGlzdAogewogICAgIG15ICRzZWxmID0gc2hpZnQ7CkBAIC0x
MzMxLDEzICsxMzUwLDkgQEAgc3ViIHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVMaXN0CiAgICAgICAg
ICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiWyIsIF9fTElORV9f
KTsKICAgICAgICAgbXkgJGV4dGVuZGVkQXR0cmlidXRlTGlzdCA9IHt9OwogICAgICAgICBteSAk
YXR0ciA9ICRzZWxmLT5wYXJzZUV4dGVuZGVkQXR0cmlidXRlKCk7Ci0gICAgICAgIGZvciBteSAk
a2V5IChrZXlzICV7JGF0dHJ9KSB7Ci0gICAgICAgICAgICAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0
LT57JGtleX0gPSAkYXR0ci0+eyRrZXl9OwotICAgICAgICB9CisgICAgICAgIGNvcHlBdHRyaWJ1
dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QsICRhdHRyKTsKICAgICAgICAgJGF0dHIgPSAkc2Vs
Zi0+cGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoKTsKLSAgICAgICAgZm9yIG15ICRrZXkgKGtleXMg
JXskYXR0cn0pIHsKLSAgICAgICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnska2V5fSA9
ICRhdHRyLT57JGtleX07Ci0gICAgICAgIH0KKyAgICAgICAgY29weUF0dHJpYnV0ZXMoJGV4dGVu
ZGVkQXR0cmlidXRlTGlzdCwgJGF0dHIpOwogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1
ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIl0iLCBfX0xJTkVfXyk7CiAgICAgICAgIHJldHVybiAkZXh0
ZW5kZWRBdHRyaWJ1dGVMaXN0OwogICAgIH0KQEAgLTEzNTQsOSArMTM2OSw3IEBAIHN1YiBwYXJz
ZUV4dGVuZGVkQXR0cmlidXRlcwogICAgICAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEgIiwiKSB7
CiAgICAgICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwg
IiwiLCBfX0xJTkVfXyk7CiAgICAgICAgICAgICBteSAkYXR0ciA9ICRzZWxmLT5wYXJzZUV4dGVu
ZGVkQXR0cmlidXRlMigpOwotICAgICAgICAgICAgZm9yIG15ICRrZXkgKGtleXMgJXskYXR0cn0p
IHsKLSAgICAgICAgICAgICAgICAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57JGtleX0gPSAkYXR0
ci0+eyRrZXl9OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgY29weUF0dHJpYnV0ZXMoJGV4
dGVuZGVkQXR0cmlidXRlTGlzdCwgJGF0dHIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgbGFzdDsKICAgICAgICAgfQpAQCAtMjM4MSwxNCArMjM5NCwyMCBAQCBzdWIgYXBwbHlFeHRl
bmRlZEF0dHJpYnV0ZUxpc3QKICAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKICAgICBteSAkZXh0
ZW5kZWRBdHRyaWJ1dGVMaXN0ID0gc2hpZnQ7CiAKLSAgICBpZiAoZGVmaW5lZCAkZXh0ZW5kZWRB
dHRyaWJ1dGVMaXN0LT57IkNvbnN0cnVjdG9yIn0pIHsKLSAgICAgICAgbXkgJG5ld0RhdGFOb2Rl
ID0gbmV3IGRvbUZ1bmN0aW9uKCk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlKG5l
dyBkb21TaWduYXR1cmUoKSk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5uYW1l
KCJDb25zdHJ1Y3RvciIpOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwotICAgICAgICBwdXNoKEB7JG5l
d0RhdGFOb2RlLT5wYXJhbWV0ZXJzfSwgQHskZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57IkNvbnN0
cnVjdG9yIn19KTsKKyAgICBpZiAoZGVmaW5lZCAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57IkNv
bnN0cnVjdG9ycyJ9KSB7CisgICAgICAgIG15IEBjb25zdHJ1Y3RvclBhcmFtcyA9IEB7JGV4dGVu
ZGVkQXR0cmlidXRlTGlzdC0+eyJDb25zdHJ1Y3RvcnMifX07CisgICAgICAgIG15ICRpbmRleCA9
IChAY29uc3RydWN0b3JQYXJhbXMgPT0gMSkgPyAwIDogMTsKKyAgICAgICAgZm9yZWFjaCBteSAk
cGFyYW0gKEBjb25zdHJ1Y3RvclBhcmFtcykgeworICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9y
ID0gbmV3IGRvbUZ1bmN0aW9uKCk7CisgICAgICAgICAgICAkY29uc3RydWN0b3ItPnNpZ25hdHVy
ZShuZXcgZG9tU2lnbmF0dXJlKCkpOworICAgICAgICAgICAgJGNvbnN0cnVjdG9yLT5zaWduYXR1
cmUtPm5hbWUoIkNvbnN0cnVjdG9yIik7CisgICAgICAgICAgICAkY29uc3RydWN0b3ItPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICAg
ICAgICAgJGNvbnN0cnVjdG9yLT5wYXJhbWV0ZXJzKCRwYXJhbSk7CisgICAgICAgICAgICAkY29u
c3RydWN0b3ItPntvdmVybG9hZGVkSW5kZXh9ID0gJGluZGV4Kys7CisgICAgICAgICAgICBwdXNo
KEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3RvcnN9LCAkY29uc3RydWN0b3IpOworICAgICAgICB9Cisg
ICAgICAgIGRlbGV0ZSAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57IkNvbnN0cnVjdG9ycyJ9Owog
ICAgICAgICAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57IkNvbnN0cnVjdG9yIn0gPSAiVkFMVUVf
SVNfTUlTU0lORyI7Ci0gICAgICAgICRkYXRhTm9kZS0+Y29uc3RydWN0b3IoJG5ld0RhdGFOb2Rl
KTsKICAgICB9IGVsc2lmIChkZWZpbmVkICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiTmFtZWRD
b25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgIG15ICRuZXdEYXRhTm9kZSA9IG5ldyBkb21GdW5jdGlv
bigpOwogICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShuZXcgZG9tU2lnbmF0dXJlKCkp
OwpAQCAtMjM5OSw3ICsyNDE4LDcgQEAgc3ViIGFwcGx5RXh0ZW5kZWRBdHRyaWJ1dGVMaXN0CiAg
ICAgICAgIG15ICRjb25zdHJ1Y3Rvck5hbWUgPSAkYXR0cmlidXRlS2V5c1swXTsKICAgICAgICAg
cHVzaChAeyRuZXdEYXRhTm9kZS0+cGFyYW1ldGVyc30sIEB7JGF0dHJpYnV0ZXN7JGNvbnN0cnVj
dG9yTmFtZX19KTsKICAgICAgICAgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJOYW1lZENvbnN0
cnVjdG9yIn0gPSAkY29uc3RydWN0b3JOYW1lOwotICAgICAgICAkZGF0YU5vZGUtPmNvbnN0cnVj
dG9yKCRuZXdEYXRhTm9kZSk7CisgICAgICAgIHB1c2goQHskZGF0YU5vZGUtPmNvbnN0cnVjdG9y
c30sICRuZXdEYXRhTm9kZSk7CiAgICAgfQogICAgICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0lETFN0cnVjdHVyZS5wbQppbmRleCBmZjYyODcyNWViOTBmNTQ2NjczZmQx
NjQxZWYxZGM1YWMyNmNkZmNiLi5mNDQzMjQxNzNlYTJjZTBkNDQzYzZmNTRkZWZkYjU0ZDUwMzlj
ZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFN0cnVj
dHVyZS5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFN0cnVjdHVy
ZS5wbQpAQCAtNDAsNyArNDAsNyBAQCBzdHJ1Y3QoIGRvbUNsYXNzID0+IHsKICAgICBmdW5jdGlv
bnMgPT4gJ0AnLCAgICAjIExpc3Qgb2YgJ2RvbUZ1bmN0aW9uJwogICAgIGF0dHJpYnV0ZXMgPT4g
J0AnLCAgICAjIExpc3Qgb2YgJ2RvbUF0dHJpYnV0ZScgICAgCiAgICAgZXh0ZW5kZWRBdHRyaWJ1
dGVzID0+ICckJywgIyBFeHRlbmRlZCBhdHRyaWJ1dGVzCi0gICAgY29uc3RydWN0b3IgPT4gJyQn
LCAjIENvbnN0cnVjdG9yCisgICAgY29uc3RydWN0b3JzID0+ICdAJywgIyBDb25zdHJ1Y3Rvcgog
ICAgIGlzRXhjZXB0aW9uID0+ICckJywgIyBVc2VkIGZvciBleGNlcHRpb24gaW50ZXJmYWNlcwog
fSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9D
UFAvV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTY2YTJlZGI0NmIzY2EwYjk4YWE5ODViMjJlNzQ2NWY4MTVjMDUw
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9DUFAvV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBAIC0wLDAgKzEsODIg
QEAKKy8qCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHBy
b2plY3QuCisgKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRp
bmdzLnBsLiBETyBOT1QgTU9ESUZZIQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vi
RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIKKworI2luY2x1ZGUgIlRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLmgiCisjaW5jbHVkZSAiV2ViRXhjZXB0aW9uSGFuZGxlci5oIgorI2lu
Y2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK3N0cnVjdCBX
ZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6V2ViRE9NVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNQcml2YXRlIHsKKyAgICBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1By
aXZhdGUoV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIG9iamVjdCA9IDApCisg
ICAgICAgIDogaW1wbChvYmplY3QpCisgICAgeworICAgIH0KKworICAgIFJlZlB0cjxXZWJDb3Jl
OjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbDsKK307CisKK1dlYkRPTVRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjpXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycygpCisg
ICAgOiBXZWJET01PYmplY3QoKQorICAgICwgbV9pbXBsKDApCit7Cit9CisKK1dlYkRPTVRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjpXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhX
ZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogaW1wbCkKKyAgICA6IFdlYkRPTU9i
amVjdCgpCisgICAgLCBtX2ltcGwobmV3IFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
UHJpdmF0ZShpbXBsKSkKK3sKK30KKworV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6
OldlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKGNvbnN0IFdlYkRPTVRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzJiBjb3B5KQorICAgIDogV2ViRE9NT2JqZWN0KCkKK3sKKyAgICBtX2lt
cGwgPSBjb3B5LmltcGwoKSA/IG5ldyBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1By
aXZhdGUoY29weS5pbXBsKCkpIDogMDsKK30KKworV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMmIFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpvcGVyYXRvcj0oY29uc3Qg
V2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMmIGNvcHkpCit7CisgICAgZGVsZXRlIG1f
aW1wbDsKKyAgICBtX2ltcGwgPSBjb3B5LmltcGwoKSA/IG5ldyBXZWJET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1ByaXZhdGUoY29weS5pbXBsKCkpIDogMDsKKyAgICByZXR1cm4gKnRoaXM7
Cit9CisKK1dlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBXZWJET01UZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczo6aW1wbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW1wbCA/
IFdURjo6Z2V0UHRyKG1faW1wbC0+aW1wbCkgOiAwOworfQorCitXZWJET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6fldlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKCkKK3sKKyAg
ICBkZWxldGUgbV9pbXBsOworICAgIG1faW1wbCA9IDA7Cit9CisKK1dlYkNvcmU6OlRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzKiB0b1dlYkNvcmUoY29uc3QgV2ViRE9NVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMmIHdyYXBwZXIpCit7CisgICAgcmV0dXJuIHdyYXBwZXIuaW1wbCgpOworfQor
CitXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyB0b1dlYktpdChXZWJDb3JlOjpUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdmFsdWUpCit7CisgICAgcmV0dXJuIFdlYkRPTVRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKHZhbHVlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9N
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YWI4MTJiYmI2ZmYwZWRh
NjhhYmU0OWY5M2ExYjIwNDEzYWMyNTI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIElu
IE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53
ZWluaWdAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGlt
aXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYkRPTVRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzX2gKKyNkZWZpbmUgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNfaAorCisjaW5jbHVkZSA8V2ViRE9NT2JqZWN0Lmg+CisjaW5jbHVkZSA8V2ViRE9NU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzOworfTsKKworCitjbGFzcyBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA6IHB1
YmxpYyBXZWJET01PYmplY3QgeworcHVibGljOgorICAgIFdlYkRPTVRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzKCk7CisgICAgZXhwbGljaXQgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMoV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqKTsKKyAgICBXZWJET01UZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhjb25zdCBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycyYpOworICAgIFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzJiBvcGVyYXRvcj0o
Y29uc3QgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMmKTsKKyAgICB2aXJ0dWFsIH5X
ZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycygpOworCisKKyAgICBXZWJDb3JlOjpUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogaW1wbCgpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAg
c3RydWN0IFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJpdmF0ZTsKKyAgICBXZWJE
T01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGUqIG1faW1wbDsKK307CisKK1dlYkNv
cmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB0b1dlYkNvcmUoY29uc3QgV2ViRE9NVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMmKTsKK1dlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzIHRvV2ViS2l0KFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKik7CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0NTJmYzZmNTVhMjc1MGRmMTZhYmRlYWQ3
MmM2MjdjZmJhYjk0ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5jcHAKQEAgLTAsMCArMSwxNDEgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5l
cmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmgiCisKKyNpbmNsdWRlICJET01PYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKKyNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbmNsdWRlICJU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIgorI2luY2x1ZGUgIldlYktpdERPTUJpbmRpbmcu
aCIKKyNpbmNsdWRlICJnb2JqZWN0L0NvbnZlcnRUb1VURjhTdHJpbmcuaCIKKyNpbmNsdWRlICJ3
ZWJraXQvV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlLmgiCisjaW5j
bHVkZSAid2Via2l0ZGVmaW5lcy5oIgorI2luY2x1ZGUgIndlYmtpdGdsb2JhbHNwcml2YXRlLmgi
CisjaW5jbHVkZSAid2Via2l0bWFyc2hhbC5oIgorI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Cisj
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBraXQo
V2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIG9iaikKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChvYmosIDApOworCisgICAgaWYgKGdwb2ludGVyIHJldCA9IERPTU9iamVj
dENhY2hlOjpnZXQob2JqKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdERPTVRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4ocmV0KTsKKworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KERPTU9iamVjdENhY2hlOjpw
dXQob2JqLCBXZWJLaXQ6OndyYXBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhvYmopKSk7Cit9
CisKK1dlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBjb3JlKFdlYktpdERPTVRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKHJlcXVlc3QsIDApOworCisgICAgV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMqIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycyo+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KTsKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAwKTsKKworICAgIHJldHVybiBjb3Jl
T2JqZWN0OworfQorCitXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogd3JhcFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzKiBjb3JlT2JqZWN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVPYmplY3Qs
IDApOworCisgICAgLy8gV2UgY2FsbCByZWYoKSByYXRoZXIgdGhhbiB1c2luZyBhIEMrKyBzbWFy
dCBwb2ludGVyIGJlY2F1c2Ugd2UgY2FuJ3Qgc3RvcmUgYSBDKysgb2JqZWN0CisgICAgLy8gaW4g
YSBDLWFsbG9jYXRlZCBHT2JqZWN0IHN0cnVjdHVyZS4gU2VlIHRoZSBmaW5hbGl6ZSgpIGNvZGUg
Zm9yIHRoZSBtYXRjaGluZyBkZXJlZigpLgorICAgIGNvcmVPYmplY3QtPnJlZigpOworCisgICAg
cmV0dXJuIFdFQktJVF9ET01fVEVTVF9PVkVSTE9BREVEX0NPTlNUUlVDVE9SUyhnX29iamVjdF9u
ZXcoV0VCS0lUX1RZUEVfRE9NX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlMsICJjb3JlLW9i
amVjdCIsIGNvcmVPYmplY3QsIE5VTEwpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
K0dfREVGSU5FX1RZUEUoV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMsIHdlYmtp
dF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9ycywgV0VCS0lUX1RZUEVfRE9NX09CSkVD
VCkKKworZW51bSB7CisgICAgUFJPUF8wLAorfTsKKworc3RhdGljIHZvaWQgd2Via2l0X2RvbV90
ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3JzX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sK
KworICAgIFdlYktpdERPTU9iamVjdCogZG9tT2JqZWN0ID0gV0VCS0lUX0RPTV9PQkpFQ1Qob2Jq
ZWN0KTsKKyAgICAKKyAgICBpZiAoZG9tT2JqZWN0LT5jb3JlT2JqZWN0KSB7CisgICAgICAgIFdl
YkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBjb3JlT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihkb21PYmplY3QtPmNvcmVP
YmplY3QpOworCisgICAgICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChjb3JlT2Jq
ZWN0KTsKKyAgICAgICAgY29yZU9iamVjdC0+ZGVyZWYoKTsKKworICAgICAgICBkb21PYmplY3Qt
PmNvcmVPYmplY3QgPSAwOworICAgIH0KKworCisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2Rv
bV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3JzX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9i
amVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0
cnVjdG9yc19zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBj
b25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9i
amVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKKwor
c3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3JzX2dldF9w
cm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUs
IEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBw
c3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworCitzdGF0aWMgdm9pZCB3ZWJraXRf
ZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfY29uc3RydWN0ZWQoR09iamVjdCogb2Jq
ZWN0KQoreworCisgICAgaWYgKEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVzdF9vdmVybG9h
ZGVkX2NvbnN0cnVjdG9yc19wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3RlZCkKKyAgICAgICAgR19P
QkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3JzX3BhcmVu
dF9jbGFzcyktPmNvbnN0cnVjdGVkKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9k
b21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19jbGFzc19pbml0KFdlYktpdERPTVRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzQ2xhc3MqIHJlcXVlc3RDbGFzcykKK3sKKyAgICBHT2JqZWN0
Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAg
Z29iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0
cnVjdG9yc19maW5hbGl6ZTsKKyAgICBnb2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtp
dF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19zZXRfcHJvcGVydHk7CisgICAgZ29i
amVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25z
dHJ1Y3RvcnNfZ2V0X3Byb3BlcnR5OworICAgIGdvYmplY3RDbGFzcy0+Y29uc3RydWN0ZWQgPSB3
ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfY29uc3RydWN0ZWQ7CisKKwor
Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9y
c19pbml0KFdlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiByZXF1ZXN0KQorewor
fQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjkzNmJjODkzODQ3YTYyZmI4YzNlNDAyYWNlNzky
MmI4NThmYTNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaApA
QCAtMCwwICsxLDUwIEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQg
b3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5
IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgV2ViS2l0
RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNfaAorI2RlZmluZSBXZWJLaXRET01UZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc19oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1
ZGUgPHdlYmtpdC9XZWJLaXRET01PYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZGVm
aW5lcy5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkb21kZWZpbmVzLmg+CisKK0dfQkVHSU5f
REVDTFMKKyNkZWZpbmUgV0VCS0lUX1RZUEVfRE9NX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RP
UlMgICAgICAgICAgICAod2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3JzX2dl
dF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9ET01fVEVTVF9PVkVSTE9BREVEX0NPTlNUUlVDVE9S
UyhvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJL
SVRfVFlQRV9ET01fVEVTVF9PVkVSTE9BREVEX0NPTlNUUlVDVE9SUywgV2ViS2l0RE9NVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpKQorI2RlZmluZSBXRUJLSVRfRE9NX1RFU1RfT1ZFUkxPQURF
RF9DT05TVFJVQ1RPUlNfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgo
a2xhc3MpLCAgV0VCS0lUX1RZUEVfRE9NX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlMsIFdl
YktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ2xhc3MpCisjZGVmaW5lIFdFQktJVF9E
T01fSVNfVEVTVF9PVkVSTE9BREVEX0NPTlNUUlVDVE9SUyhvYmopICAgICAgICAgKEdfVFlQRV9D
SEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9ET01fVEVTVF9PVkVSTE9BREVE
X0NPTlNUUlVDVE9SUykpCisjZGVmaW5lIFdFQktJVF9ET01fSVNfVEVTVF9PVkVSTE9BREVEX0NP
TlNUUlVDVE9SU19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyks
ICBXRUJLSVRfVFlQRV9ET01fVEVTVF9PVkVSTE9BREVEX0NPTlNUUlVDVE9SUykpCisjZGVmaW5l
IFdFQktJVF9ET01fVEVTVF9PVkVSTE9BREVEX0NPTlNUUlVDVE9SU19HRVRfQ0xBU1Mob2JqKSAg
KEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9ET01fVEVTVF9P
VkVSTE9BREVEX0NPTlNUUlVDVE9SUywgV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNDbGFzcykpCisKK3N0cnVjdCBfV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMg
eworICAgIFdlYktpdERPTU9iamVjdCBwYXJlbnRfaW5zdGFuY2U7Cit9OworCitzdHJ1Y3QgX1dl
YktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ2xhc3MgeworICAgIFdlYktpdERPTU9i
amVjdENsYXNzIHBhcmVudF9jbGFzczsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9k
b21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19nZXRfdHlwZSAodm9pZCk7CisKK0dfRU5E
X0RFQ0xTCisKKyNlbmRpZiAvKiBXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc19o
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5MmQ1ZmU1NTE5ZWQ1N2Y3
ODU3YmI0NTg0MzQyMjY2MGYyZmI4NmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1ByaXZhdGUuaApAQCAtMCwwICsxLDM0IEBACisvKgorICAgIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUg
aGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZ
IQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyovCisKKyNpZm5kZWYgV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRl
X2gKKyNkZWZpbmUgV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlX2gK
KworI2luY2x1ZGUgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgiCisjaW5jbHVkZSA8Z2xp
Yi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQvV2ViS2l0RE9NT2JqZWN0Lmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHdyYXBU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycyopOworV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGNvcmUoV2ViS2l0
RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHJlcXVlc3QpOworV2ViS2l0RE9NVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGtpdChXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycyogbm9kZSk7Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8qIFdlYktpdERP
TVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTJkMmVhODUwMGYwZDFm
YzQyYzA4MTk1NGQ2OGYyMDA4YWNiNDZlNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmNwcApAQCAtMCwwICsxLDE5OCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
V2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVy
YXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIgor
CisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgor
I2luY2x1ZGUgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgiCisjaW5jbHVkZSA8cnVudGlt
ZS9FcnJvci5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpT
QzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvKiBIYXNoIHRhYmxlIGZvciBjb25zdHJ1Y3Rv
ciAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1RhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNvbnN0cnVjdG9yIiwgRG9udEVudW0g
fCBSZWFkT25seSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
MCwgTm9JbnRyaW5zaWMgfSwKKyAgICB7IDAsIDAsIDAsIDAsIE5vSW50cmluc2ljIH0KK307CisK
K3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1RhYmxl
ID0geyAyLCAxLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVGFibGVWYWx1ZXMsIDAgfTsK
Ky8qIEhhc2ggdGFibGUgZm9yIGNvbnN0cnVjdG9yICovCisKK3N0YXRpYyBjb25zdCBIYXNoVGFi
bGVWYWx1ZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3JUYWJsZVZhbHVl
c1tdID0KK3sKKyAgICB7IDAsIDAsIDAsIDAsIE5vSW50cmluc2ljIH0KK307CisKK3N0YXRpYyBj
b25zdCBIYXNoVGFibGUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yVGFi
bGUgPSB7IDEsIDAsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvclRhYmxl
VmFsdWVzLCAwIH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0
cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25z
dHJ1Y3RvclRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNDb25zdHJ1Y3RvcikgfTsKKworSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0Nv
bnN0cnVjdG9yOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgOiBE
T01Db25zdHJ1Y3Rvck9iamVjdChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKK3sKK30KKwordm9p
ZCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCkpOworICAgIEFTU0VSVChp
bmhlcml0cygmc19pbmZvKSk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1Byb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpOworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51
bSk7Cit9CisKK2Jvb2wgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0
U3RhdGljVmFsdWVTbG90PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvciwg
SlNET01XcmFwcGVyPihleGVjLCAmSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVj
dG9yVGFibGUsIGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3Iq
PihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworYm9vbCBKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljVmFs
dWVEZXNjcmlwdG9yPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciwgSlNE
T01XcmFwcGVyPihleGVjLCAmSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9y
VGFibGUsIGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihv
YmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOworfQorCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29u
c3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKiBjYXN0ZWRUaGlzID0g
anNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNh
bGxlZSgpKTsKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVj
KSk7CisgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhl
YywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IE1BWUJFX01J
U1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUmVmUHRyPFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzPiBvYmplY3QgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
czo6Y3JlYXRlKHN0cmluZyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0
b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBvYmplY3QuZ2V0KCkpKSk7Cit9
CisKK0NvbnN0cnVjdFR5cGUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9y
OjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEp
Cit7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKK30K
KworLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBIYXNoVGFi
bGVWYWx1ZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlVGFibGVWYWx1ZXNb
XSA9Cit7CisgICAgeyAwLCAwLCAwLCAwLCBOb0ludHJpbnNpYyB9Cit9OworCitzdGF0aWMgY29u
c3QgSGFzaFRhYmxlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGVUYWJsZSA9
IHsgMSwgMCwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZVRhYmxlVmFsdWVz
LCAwIH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3Rv
dHlwZTo6c19pbmZvID0geyAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUiLCAm
QmFzZTo6c19pbmZvLCAmSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZVRhYmxl
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90
b3R5cGUpIH07CisKK0pTT2JqZWN0KiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90
eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
K3sKKyAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM+KGV4ZWMsIGdsb2JhbE9iamVjdCk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjpzX2luZm8gPSB7ICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cyIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVGFibGUsIDAg
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpIH07CisK
K0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFBhc3NSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGltcGwpCisgICAgOiBKU0RP
TVdyYXBwZXIoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCisgICAgLCBtX2ltcGwoaW1wbC5sZWFr
UmVmKCkpCit7Cit9CisKK3ZvaWQgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6ZmluaXNo
Q3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKGdsb2JhbERhdGEpOworICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Cit9CisK
K0pTT2JqZWN0KiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGVQcm90b3R5cGUo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJl
dHVybiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlOjpjcmVhdGUoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7Cit9CisKK3ZvaWQg
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkK
K3sKKyAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB0aGlzT2JqZWN0ID0gc3RhdGlj
X2Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KGNlbGwpOworICAgIHRoaXNPYmpl
Y3QtPkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6On5KU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzKCk7Cit9CisKK0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6On5KU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzKCkKK3sKKyAgICByZWxlYXNlSW1wbElmTm90TnVsbCgpOworfQor
Citib29sIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQoreworICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KGNlbGwp
OworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7Cisg
ICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LCBCYXNlPihleGVjLCAmSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1RhYmxlLCB0aGlzT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitib29sIEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKK3sKKyAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihvYmplY3QpOwor
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CisgICAg
cmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLCBCYXNlPihleGVjLCAmSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1RhYmxlLCB0aGlz
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOworfQorCitKU1ZhbHVlIGpzVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
c2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzKiBkb21PYmplY3QgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KGFz
T2JqZWN0KHNsb3RCYXNlKSk7CisgICAgcmV0dXJuIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM6OmdldENvbnN0cnVjdG9yKGV4ZWMsIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpOworfQor
CitKU1ZhbHVlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmdldENvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1
cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVj
dG9yPihleGVjLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKK30K
Kworc3RhdGljIGlubGluZSBib29sIGlzT2JzZXJ2YWJsZShKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzKiBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKQoreworICAgIGlmIChqc1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyoganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4oaGFuZGxlLmdldCgp
LmFzQ2VsbCgpKTsKKyAgICBpZiAoIWlzT2JzZXJ2YWJsZShqc1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9y
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9p
ZCogY29udGV4dCkKK3sKKyAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBqc1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOworICAgIERPTVdyYXBwZXJXb3JsZCogd29ybGQg
PSBzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKKyAgICB1bmNhY2hlV3Jh
cHBlcih3b3JsZCwganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy0+aW1wbCgpLCBqc1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKTsKKyAgICBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LT5yZWxlYXNlSW1wbCgpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMqIGltcGwpCit7CisgICAgcmV0dXJuIHdyYXA8SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycz4oZXhlYywgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKK30KKworVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMqIHRvVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoSlNDOjpKU1ZhbHVlIHZh
bHVlKQoreworICAgIHJldHVybiB2YWx1ZS5pbmhlcml0cygmSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yczo6c19pbmZvKSA/IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4o
YXNPYmplY3QodmFsdWUpKS0+aW1wbCgpIDogMDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzZiZTljODk2YmIzNzk4Yzc1YzRm
M2Q5MmM0NTJlYzVmYmUxYjYwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKQEAg
LTAsMCArMSwxNDMgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBv
cGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkg
Z2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzX2gKKyNkZWZpbmUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc19oCisKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycy5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaD4K
KyNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8cnVudGltZS9PYmplY3RQ
cm90b3R5cGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzIDogcHVibGljIEpTRE9NV3JhcHBlciB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsKKyAgICBzdGF0aWMgSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+
IGltcGwpCisgICAgeworICAgICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLmhlYXApKSBKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICAgICAgcHRy
LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSk7CisgICAgICAgIHJl
dHVybiBwdHI7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3Rv
dHlwZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CisgICAgfkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMoKTsKKyAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOworCisgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3Jl
YXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpT
Qzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U0dsb2JhbE9iamVjdCopOworICAgIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBpbXBsKCkg
Y29uc3QgeyByZXR1cm4gbV9pbXBsOyB9CisgICAgdm9pZCByZWxlYXNlSW1wbCgpIHsgbV9pbXBs
LT5kZXJlZigpOyBtX2ltcGwgPSAwOyB9CisKKyAgICB2b2lkIHJlbGVhc2VJbXBsSWZOb3ROdWxs
KCkgeyBpZiAobV9pbXBsKSB7IG1faW1wbC0+ZGVyZWYoKTsgbV9pbXBsID0gMDsgfSB9CisKK3By
aXZhdGU6CisgICAgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIG1faW1wbDsKK3Byb3RlY3Rl
ZDoKKyAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKEpTQzo6U3RydWN0dXJlKiwgSlNE
T01HbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPik7
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OkpTR2xvYmFsRGF0YSYpOworICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5X
aGVuTGVuZ3RoSXNOb3RaZXJvIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7Cit9OworCitjbGFzcyBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxl
T3duZXIgeworICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJik7
CisgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZv
aWQqIGNvbnRleHQpOworfTsKKworaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVy
T3duZXIoRE9NV3JhcHBlcldvcmxkKiwgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVy
LCBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzT3duZXIsICgpKTsKKyAgICByZXR1cm4gJmpz
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNPd25lcjsKK30KKworaW5saW5lIHZvaWQqIHdyYXBw
ZXJDb250ZXh0KERPTVdyYXBwZXJXb3JsZCogd29ybGQsIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzKikKK3sKKyAgICByZXR1cm4gd29ybGQ7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cyopOworVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHRvVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMoSlNDOjpKU1ZhbHVlKTsKKworY2xhc3MgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1Byb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAg
IHR5cGVkZWYgSlNDOjpKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIEpTQzo6SlNP
YmplY3QqIHNlbGYoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAg
c3RhdGljIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqIGNyZWF0ZShKU0M6
OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFs
bG9jYXRlQ2VsbDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlPihnbG9iYWxE
YXRhLmhlYXApKSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKGdsb2JhbERh
dGEsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlv
bihnbG9iYWxEYXRhKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBzdGF0aWMg
Y29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgewor
ICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgJnNfaW5mbyk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKSA6IEpTQzo6SlNO
b25GaW5hbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpIHsgfQorcHJvdGVjdGVkOgorICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzOworfTsKKworY2xhc3MgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9y
IDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKK3ByaXZhdGU6CisgICAgSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9i
YWxPYmplY3QqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNE
T01HbG9iYWxPYmplY3QqKTsKKworcHVibGljOgorICAgIHR5cGVkZWYgRE9NQ29uc3RydWN0b3JP
YmplY3QgQmFzZTsKKyAgICBzdGF0aWMgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0
cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgeworICAgICAgICBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVj
dG9yPigqZXhlYy0+aGVhcCgpKSkgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVj
dG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlv
bihleGVjLCBnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOworICAg
IHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CisgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEs
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKKyAgICB9Citwcm90ZWN0ZWQ6CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3QgfCBKU0M6OkltcGxlbWVudHNIYXNJbnN0YW5jZSB8IERPTUNvbnN0cnVjdG9yT2Jq
ZWN0OjpTdHJ1Y3R1cmVGbGFnczsKKyAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoSlNDOjpFeGVj
U3RhdGUqKTsKKyAgICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEo
SlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmKTsKK307CisKKy8vIEF0dHJpYnV0ZXMK
KworSlNDOjpKU1ZhbHVlIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzE1YjdiYzU3ZGE3YjE2ZGY3MzRmYmFh
Njc1ZGY2MmI3YzgxYmIxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKQEAg
LTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
NywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+CisKKyNpZiBXRUJLSVRfVkVSU0lPTl9NQVhf
QUxMT1dFRCA+PSBXRUJLSVRfVkVSU0lPTl9MQVRFU1QKKworQGludGVyZmFjZSBET01UZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycyA6IERPTU9iamVjdAorQGVuZAorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L09iakMvRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAy
OWJiMmJmN2VhODBhNjE0NTU5NDk0Y2Y2Yzc4YzFkNTgxZDJjNwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLm1tCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgKiBUaGlzIGZpbGUgaGFz
IGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkRPTUludGVybmFsLmgiCisKKyNp
bXBvcnQgIkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgiCisKKyNpbXBvcnQgIkRPTUJs
b2JJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NQ1NTUnVsZUludGVybmFsLmgiCisjaW1wb3J0ICJE
T01DU1NWYWx1ZUludGVybmFsLmgiCisjaW1wb3J0ICJET01FdmVudEludGVybmFsLmgiCisjaW1w
b3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTVN0eWxlU2hlZXRJbnRlcm5hbC5o
IgorI2ltcG9ydCAiRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNJbnRlcm5hbC5oIgorI2lt
cG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKKyNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0
ZS5oIgorI2ltcG9ydCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIKKyNpbXBvcnQgIlRo
cmVhZENoZWNrLmgiCisjaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgorI2ltcG9ydCAiV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgorI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorCisjZGVmaW5l
IElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cyo+KF9pbnRlcm5hbCkKKworQGltcGxlbWVudGF0aW9uIERPTVRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzCisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIGlmIChXZWJDb3JlT2JqQ1NjaGVkdWxl
RGVhbGxvY2F0ZU9uTWFpblRocmVhZChbRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgY2xh
c3NdLCBzZWxmKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKF9pbnRlcm5hbCkKKyAgICAg
ICAgSU1QTC0+ZGVyZWYoKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpZmlu
YWxpemUKK3sKKyAgICBpZiAoX2ludGVybmFsKQorICAgICAgICBJTVBMLT5kZXJlZigpOworICAg
IFtzdXBlciBmaW5hbGl6ZV07Cit9CisKK0BlbmQKKworV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMqIGNvcmUoRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgKndyYXBwZXIp
Cit7CisgICAgcmV0dXJuIHdyYXBwZXIgPyByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKj4od3JhcHBlci0+X2ludGVybmFsKSA6IDA7Cit9CisKK0RP
TVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzICpraXQoV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMqIHZhbHVlKQoreworICAgIHsgRE9NX0FTU0VSVF9NQUlOX1RIUkVBRCgpOyBX
ZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2tSb3VuZE9uZSgpOyB9OworICAgIGlmICghdmFsdWUp
CisgICAgICAgIHJldHVybiBuaWw7CisgICAgaWYgKERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkpCisgICAgICAgIHJldHVybiBbW3dy
YXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMgKndyYXBwZXIgPSBbW0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIGFsbG9jXSBf
aW5pdF07CisgICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmpl
Y3RJbnRlcm5hbCo+KHZhbHVlKTsKKyAgICB2YWx1ZS0+cmVmKCk7CisgICAgYWRkRE9NV3JhcHBl
cih3cmFwcGVyLCB2YWx1ZSk7CisgICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RP
TVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzSW50
ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44ZmVjYzgxYzM5NmJkMGE4MjVkYTdhYmIwMTFmMmM1NjcyYTZi
NGVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L09iakMvRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNJbnRlcm5hbC5oCkBAIC0wLDAg
KzEsMzggQEAKKy8qCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291
cmNlIHByb2plY3QuCisgKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRl
LWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxXZWJDb3JlL0RP
TVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmg+CisKKyNpZiBXRUJLSVRfVkVSU0lPTl9NQVhf
QUxMT1dFRCA+PSBXRUJLSVRfVkVSU0lPTl9MQVRFU1QKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
ICAgIGNsYXNzIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOworfQorCitXZWJDb3JlOjpUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogY29yZShET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cyAqKTsKK0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzICpraXQoV2ViQ29yZTo6VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaWRs
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTM4NmY1Yjk3YmRkMjI2YzE5MTExNTA5MWIwMGI5
MGQzOTI3ZGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmlkbApAQCAtMCwwICsxLDM0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtc3RyQXJnLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRXN0ckFyZywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCitbCisgICAgQ29uc3RydWN0b3IoaW4gQXJyYXlCdWZmZXIgYXJyYXlCdWZmZXIp
LAorICAgIENvbnN0cnVjdG9yKGluIEFycmF5QnVmZmVyVmlldyBhcnJheUJ1ZmZlclZpZXcpLAor
ICAgIENvbnN0cnVjdG9yKGluIEJsb2IgYmxvYiksCisgICAgQ29uc3RydWN0b3IoaW4gRE9NU3Ry
aW5nIHN0cmluZyksCitdIGludGVyZmFjZSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyB7Cit9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaWRsCmlu
ZGV4IGM2ZDQ5M2RlZmY0MGM5MjQ4MzlkYzQ1ZTllZTlmYjM1MjYwZWUxMzYuLjY4N2VhYzU0Nzcx
MzU2ZjYwMTJlZTc3Nzk4YzIyY2MwMDAzODc2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5pZGwKQEAgLTI3LDcgKzI3LDYgQEAKIC8vIGNoYW5n
ZXMgaW4gaXRzIG91cHV0LgogWwogICAgIENvbmRpdGlvbmFsPUNvbmRpdGlvbjF8Q29uZGl0aW9u
MiwKLSAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgaGVsbG8sIGluIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSB2YWx1ZSksCiAgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIGhlbGxvLCBpbiBb
VHJhbnNmZXJMaXN0PXRyYW5zZmVyTGlzdF0gU2VyaWFsaXplZFNjcmlwdFZhbHVlIGRhdGEsIGlu
IFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIEFycmF5IHRyYW5zZmVyTGlzdCksCiBdIGlu
dGVyZmFjZSBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIHsKICAgICBhdHRyaWJ1
dGUgU2VyaWFsaXplZFNjcmlwdFZhbHVlIHZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyNTQ3NmMxZDE0MTM4ODdlNGNjMjFi
YWNlZDc1YTQwNTk4ZDJhY2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAg
LTAsMCArMSwyMTIgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBv
cGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkg
Z2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisg
ICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIgorCisjaW5jbHVkZSAi
QmluZGluZ1N0YXRlLmgiCisjaW5jbHVkZSAiQ29udGV4dEZlYXR1cmVzLmgiCisjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlY4QXJyYXlCdWZmZXIuaCIKKyNpbmNsdWRlICJW
OEFycmF5QnVmZmVyVmlldy5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4
QmxvYi5oIgorI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgorI2luY2x1ZGUgPHd0Zi9BcnJheUJ1
ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlclZpZXcuaD4KKyNpbmNsdWRlIDx3dGYv
VW51c2VkUGFyYW0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXcmFwcGVyVHlwZUluZm8g
VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6aW5mbyA9IHsgVjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6R2V0VGVtcGxhdGUsIFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmRl
cmVmT2JqZWN0LCAwLCAwLCBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjppbnN0YWxsUGVy
Q29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBl
IH07CisKK25hbWVzcGFjZSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Y4SW50ZXJuYWwgewor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBWOF9VU0UoVCkgeyB9CisKK30gLy8gbmFtZXNw
YWNlIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVjhJbnRlcm5hbAorCit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3IxQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5Db25zdHJ1Y3RvcjEiKTsKKyAgICAKKyAgICBFWENFUFRJ
T05fQkxPQ0soQXJyYXlCdWZmZXIqLCBhcnJheUJ1ZmZlciwgVjhBcnJheUJ1ZmZlcjo6SGFzSW5z
dGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVk
KSkgPyBWOEFycmF5QnVmZmVyOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0
KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKSA6
IDApOworCisgICAgUmVmUHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiBpbXBsID0gVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZShhcnJheUJ1ZmZlcik7CisgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKKworICAgIFY4RE9NV3Jh
cHBlcjo6c2V0RE9NV3JhcHBlcih3cmFwcGVyLCAmaW5mbywgaW1wbC5nZXQoKSk7CisgICAgVjhE
T01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoaW1wbC5yZWxlYXNlKCksIHdyYXBw
ZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gd3JhcHBlcjsKK30KKwordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9y
MkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJE
T00uVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuQ29uc3RydWN0b3IyIik7CisgICAgCisgICAg
RVhDRVBUSU9OX0JMT0NLKEFycmF5QnVmZmVyVmlldyosIGFycmF5QnVmZmVyVmlldywgVjhBcnJh
eUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAs
IERlZmF1bHRJc1VuZGVmaW5lZCkpID8gVjhBcnJheUJ1ZmZlclZpZXc6OnRvTmF0aXZlKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD46OkNhc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwg
RGVmYXVsdElzVW5kZWZpbmVkKSkpIDogMCk7CisKKyAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM+IGltcGwgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKGFy
cmF5QnVmZmVyVmlldyk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJn
cy5Ib2xkZXIoKTsKKworICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcih3cmFwcGVyLCAm
aW5mbywgaW1wbC5nZXQoKSk7CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01P
YmplY3QoaW1wbC5yZWxlYXNlKCksIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBy
ZXR1cm4gd3JhcHBlcjsKK30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yM0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
Q29uc3RydWN0b3IzIik7CisgICAgCisgICAgRVhDRVBUSU9OX0JMT0NLKEJsb2IqLCBibG9iLCBW
OEJsb2I6Okhhc0luc3RhbmNlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1
bHRJc1VuZGVmaW5lZCkpID8gVjhCbG9iOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5l
ZCkpKSA6IDApOworCisgICAgUmVmUHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiBpbXBs
ID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZShibG9iKTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOworCisgICAgVjhET01XcmFw
cGVyOjpzZXRET01XcmFwcGVyKHdyYXBwZXIsICZpbmZvLCBpbXBsLmdldCgpKTsKKyAgICBWOERP
TVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChpbXBsLnJlbGVhc2UoKSwgd3JhcHBl
ciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB3cmFwcGVyOworfQorCit2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3I0
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRP
TS5UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5Db25zdHJ1Y3RvcjQiKTsKKyAgICAKKyAgICBT
VFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHN0cmlu
ZywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSk7
CisKKyAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGltcGwgPSBUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKHN0cmluZyk7CisgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKKworICAgIFY4RE9NV3JhcHBlcjo6c2V0
RE9NV3JhcHBlcih3cmFwcGVyLCAmaW5mbywgaW1wbC5nZXQoKSk7CisgICAgVjhET01XcmFwcGVy
OjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoaW1wbC5yZWxlYXNlKCksIHdyYXBwZXIsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gd3JhcHBlcjsKK30KKwordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5Db25zdHJ1Y3RvciIpOworICAgIGlmICghYXJncy5Jc0NvbnN0
cnVjdENhbGwoKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCJET00gb2JqZWN0IGNv
bnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iKTsKKworICAgIGlmIChD
b25zdHJ1Y3Rvck1vZGU6OmN1cnJlbnQoKSA9PSBDb25zdHJ1Y3Rvck1vZGU6OldyYXBFeGlzdGlu
Z09iamVjdCkKKyAgICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CisKKyAgICBpZiAoKGFyZ3Mu
TGVuZ3RoKCkgPT0gMSAmJiAoVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UoYXJnc1swXSkpKSkK
KyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yMUNhbGxiYWNrKGFyZ3MpOworICAgIGlmICgoYXJn
cy5MZW5ndGgoKSA9PSAxICYmIChWOEFycmF5QnVmZmVyVmlldzo6SGFzSW5zdGFuY2UoYXJnc1sw
XSkpKSkKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yMkNhbGxiYWNrKGFyZ3MpOworICAgIGlm
ICgoYXJncy5MZW5ndGgoKSA9PSAxICYmIChWOEJsb2I6Okhhc0luc3RhbmNlKGFyZ3NbMF0pKSkp
CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjNDYWxsYmFjayhhcmdzKTsKKyAgICBpZiAoYXJn
cy5MZW5ndGgoKSA9PSAxKQorICAgICAgICByZXR1cm4gY29uc3RydWN0b3I0Q2FsbGJhY2soYXJn
cyk7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKDAsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKK30KKworc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2Mp
Cit7CisgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKKworICAgIHY4OjpMb2NhbDx2ODo6
U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOworICAgIGRlZmF1bHRTaWduYXR1cmUgPSBWOERP
TUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycyIsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjppbnRlcm5hbEZpZWxkQ291bnQsCisgICAgICAgIDAs
IDAsCisgICAgICAgIDAsIDApOworICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsg
Ly8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KKyAgICBkZXNjLT5TZXRDYWxs
SGFuZGxlcihWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvckNhbGxiYWNr
KTsKKyAgICAKKworICAgIC8vIEN1c3RvbSB0b1N0cmluZyB0ZW1wbGF0ZQorICAgIGRlc2MtPlNl
dCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInRvU3RyaW5nIiksIFY4UGVySXNvbGF0ZURhdGE6OmN1
cnJlbnQoKS0+dG9TdHJpbmdUZW1wbGF0ZSgpKTsKKyAgICByZXR1cm4gZGVzYzsKK30KKwordjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM6OkdldFJhd1RlbXBsYXRlKCkKK3sKKyAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0g
VjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpOworICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBs
YXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmZpbmQoJmlu
Zm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CisKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxl
U2NvcGU7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0g
Y3JlYXRlUmF3VGVtcGxhdGUoKTsKKyAgICBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmFkZCgmaW5m
bywgdGVtcGwpOworICAgIHJldHVybiB0ZW1wbDsKK30KKwordjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OkdldFRlbXBsYXRl
KCkKK3sKKyAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6Y3Vy
cmVudCgpOworICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1
bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0g
ZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7
CisKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisgICAgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KKyAgICAgICAgQ29uZmlndXJlVjhUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc1RlbXBsYXRlKEdldFJhd1RlbXBsYXRlKCkpOworICAgIGRhdGEt
PnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgcmV0dXJuIHRlbXBsOworfQor
Citib29sIFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6Okhhc0luc3RhbmNlKHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gR2V0UmF3VGVtcGxhdGUoKS0+SGFz
SW5zdGFuY2UodmFsdWUpOworfQorCisKK3Y4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczo6d3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycz4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQs
IHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3Jh
cHBlcjsKKyAgICAvLyBQbGVhc2UgZG9uJ3QgYWRkIGFueSBtb3JlIHVzZXMgb2YgdGhpcyB2YXJp
YWJsZS4KKyAgICBEb2N1bWVudCogZGVwcmVjYXRlZERvY3VtZW50ID0gMDsKKyAgICBVTlVTRURf
UEFSQU0oZGVwcmVjYXRlZERvY3VtZW50KTsKKworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
IGNvbnRleHQ7CisgICAgaWYgKCFjcmVhdGlvbkNvbnRleHQuSXNFbXB0eSgpICYmIGNyZWF0aW9u
Q29udGV4dC0+Q3JlYXRpb25Db250ZXh0KCkgIT0gdjg6OkNvbnRleHQ6OkdldEN1cnJlbnQoKSkg
eworICAgICAgICAvLyBGb3IgcGVyZm9ybWFuY2UsIHdlIGVudGVyIHRoZSBjb250ZXh0IG9ubHkg
aWYgdGhlIGN1cnJlbnRseSBydW5uaW5nIGNvbnRleHQKKyAgICAgICAgLy8gaXMgZGlmZmVyZW50
IGZyb20gdGhlIGNvbnRleHQgdGhhdCB3ZSBhcmUgYWJvdXQgdG8gZW50ZXIuCisgICAgICAgIGNv
bnRleHQgPSB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcoY3JlYXRpb25Db250ZXh0LT5DcmVh
dGlvbkNvbnRleHQoKSk7CisgICAgICAgIEFTU0VSVCghY29udGV4dC5Jc0VtcHR5KCkpOworICAg
ICAgICBjb250ZXh0LT5FbnRlcigpOworICAgIH0KKworICAgIHdyYXBwZXIgPSBWOERPTVdyYXBw
ZXI6Omluc3RhbnRpYXRlVjhPYmplY3QoZGVwcmVjYXRlZERvY3VtZW50LCAmaW5mbywgaW1wbC5n
ZXQoKSk7CisKKyAgICBpZiAoIWNvbnRleHQuSXNFbXB0eSgpKQorICAgICAgICBjb250ZXh0LT5F
eGl0KCk7CisKKyAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQorICAgICAgICBy
ZXR1cm4gd3JhcHBlcjsKKworICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVy
LCBpbXBsLmdldCgpKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFu
ZGxlID0gVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoaW1wbCwgd3JhcHBl
ciwgaXNvbGF0ZSk7CisgICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKKyAgICAgICAgd3Jh
cHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKKyAgICByZXR1cm4gd3JhcHBlcjsKK30KKwor
dm9pZCBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpkZXJlZk9iamVjdCh2b2lkKiBvYmpl
Y3QpCit7CisgICAgc3RhdGljX2Nhc3Q8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihvYmpl
Y3QpLT5kZXJlZigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hM2VjMzAwOWE5MDdiM2M4
ZTk4Y2Y4MmE4OWU1YWUyZDJjNzFlMTE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
aApAQCAtMCwwICsxLDgwIEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJL
aXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVk
IGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMw
LAorICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorKi8KKworI2lmbmRlZiBWOFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzX2gKKyNkZWZpbmUgVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc19oCisKKyNpbmNsdWRlICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIgorI2luY2x1
ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIldy
YXBwZXJUeXBlSW5mby5oIgorI2luY2x1ZGUgPHY4Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyB7CitwdWJsaWM6CisgICAg
c3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKKyAgICBzdGF0
aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4pOworICAgIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUoKTsKKyAg
ICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRl
KCk7CisgICAgc3RhdGljIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB0b05hdGl2ZSh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4ob2JqZWN0LT5HZXRQb2ludGVy
RnJvbUludGVybmFsRmllbGQodjhET01XcmFwcGVyT2JqZWN0SW5kZXgpKTsKKyAgICB9CisgICAg
aW5saW5lIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqID0gMCk7CisgICAgc3RhdGljIHZv
aWQgZGVyZWZPYmplY3Qodm9pZCopOworICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8gaW5mbzsK
KyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYpOworICAgIHN0YXRpYyBjb25zdCBpbnQgaW50ZXJuYWxGaWVsZENv
dW50ID0gdjhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDA7CisgICAgc3RhdGlj
IHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4s
IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKikgeyB9CisgICAgc3RhdGljIHZvaWQgaW5zdGFs
bFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pIHsg
fQorcHJpdmF0ZToKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwU2xvdyhQ
YXNzUmVmUHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvcjFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJik7
CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvcjJDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJik7CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBj
b25zdHJ1Y3RvcjNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJik7CisgICAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvcjRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJik7Cit9OworCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM6OndyYXAoVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGltcGwsIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sK
KyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gZ2V0RE9NT2JqZWN0TWFw
KGlzb2xhdGUpLmdldChpbXBsKTsKKyAgICAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAg
ICAgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiBWOFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzOjp3cmFwU2xvdyhpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQor
CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCit7CisgICAg
aWYgKCFpbXBsKQorICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOworICAg
IHJldHVybiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp3cmFwKGltcGwsIGNyZWF0aW9u
Q29udGV4dCwgaXNvbGF0ZSk7Cit9CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgo
UGFzc1JlZlB0cjwgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPiBpbXBsLCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwg
djg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQoreworICAgIHJldHVybiB0b1Y4KGltcGwuZ2V0KCks
IGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKK30KKworI2VuZGlmIC8vIFY4VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGE1ZGU5YTQyM2FlYjUxZDZhNGFhOTQyMDQyODcxZmI1ZThmMjc5MjYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDE1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJfU09D
S0VUUykKLQotI2luY2x1ZGUgIlY4V2ViU29ja2V0LmgiCi0KLSNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1
ZGUgIlY4QXJyYXlCdWZmZXIuaCIKLSNpbmNsdWRlICJWOEFycmF5QnVmZmVyVmlldy5oIgotI2lu
Y2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4QmxvYi5oIgotI2luY2x1ZGUgIlY4VXRp
bGl0aWVzLmgiCi0jaW5jbHVkZSAiV2ViU29ja2V0LmgiCi0jaW5jbHVkZSAiV2ViU29ja2V0Q2hh
bm5lbC5oIgotI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKLSNpbmNsdWRlICJXb3JrZXJDb250
ZXh0RXhlY3V0aW9uUHJveHkuaCIKLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhXZWJTb2NrZXQ6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5XZWJTb2NrZXQuQ29uc3RydWN0b3Ii
KTsKLQotICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMg
YSBmdW5jdGlvbi4iLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0KLSAgICBpZiAoQ29uc3RydWN0b3JN
b2RlOjpjdXJyZW50KCkgPT0gQ29uc3RydWN0b3JNb2RlOjpXcmFwRXhpc3RpbmdPYmplY3QpCi0g
ICAgICAgIHJldHVybiBhcmdzLkhvbGRlcigpOwotCi0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPT0g
MCkKLSAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJ
c29sYXRlKCkpOwotCi0gICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoOwotICAgIHY4OjpIYW5kbGU8
djg6OlN0cmluZz4gdXJsc3RyaW5nID0gYXJnc1swXS0+VG9TdHJpbmcoKTsKLSAgICBpZiAodHJ5
Q2F0Y2guSGFzQ2F1Z2h0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHRyeUNhdGNoLkV4
Y2VwdGlvbigpLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgaWYgKHVybHN0cmluZy5Jc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFN5bnRheEVycm9yLCAiRW1wdHkgVVJMIiwg
YXJncy5HZXRJc29sYXRlKCkpOwotCi0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBjb25zdCBLVVJMJiB1cmwgPSBj
b250ZXh0LT5jb21wbGV0ZVVSTCh0b1dlYkNvcmVTdHJpbmcodXJsc3RyaW5nKSk7Ci0KLSAgICBS
ZWZQdHI8V2ViU29ja2V0PiB3ZWJTb2NrZXQgPSBXZWJTb2NrZXQ6OmNyZWF0ZShjb250ZXh0KTsK
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLQotICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikK
LSAgICAgICAgd2ViU29ja2V0LT5jb25uZWN0KHVybCwgZWMpOwotICAgIGVsc2UgewotICAgICAg
ICB2ODo6TG9jYWw8djg6OlZhbHVlPiBwcm90b2NvbHNWYWx1ZSA9IGFyZ3NbMV07Ci0gICAgICAg
IGlmIChwcm90b2NvbHNWYWx1ZS0+SXNBcnJheSgpKSB7Ci0gICAgICAgICAgICBWZWN0b3I8U3Ry
aW5nPiBwcm90b2NvbHM7Ci0gICAgICAgICAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBwcm90b2Nv
bHNBcnJheSA9IHY4OjpMb2NhbDx2ODo6QXJyYXk+OjpDYXN0KHByb3RvY29sc1ZhbHVlKTsKLSAg
ICAgICAgICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBwcm90b2NvbHNBcnJheS0+TGVuZ3Ro
KCk7ICsraSkgewotICAgICAgICAgICAgICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaFByb3RvY29s
OwotICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gcHJvdG9jb2wgPSBwcm90
b2NvbHNBcnJheS0+R2V0KHY4OjpJbnQzMjo6TmV3KGkpKS0+VG9TdHJpbmcoKTsKLSAgICAgICAg
ICAgICAgICBpZiAodHJ5Q2F0Y2hQcm90b2NvbC5IYXNDYXVnaHQoKSkKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRocm93RXJyb3IodHJ5Q2F0Y2hQcm90b2NvbC5FeGNlcHRpb24oKSwgYXJn
cy5HZXRJc29sYXRlKCkpOwotICAgICAgICAgICAgICAgIHByb3RvY29scy5hcHBlbmQodG9XZWJD
b3JlU3RyaW5nKHByb3RvY29sKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB3ZWJTb2Nr
ZXQtPmNvbm5lY3QodXJsLCBwcm90b2NvbHMsIGVjKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaFByb3RvY29sOwotICAgICAgICAgICAgdjg6Okhh
bmRsZTx2ODo6U3RyaW5nPiBwcm90b2NvbCA9IHByb3RvY29sc1ZhbHVlLT5Ub1N0cmluZygpOwot
ICAgICAgICAgICAgaWYgKHRyeUNhdGNoUHJvdG9jb2wuSGFzQ2F1Z2h0KCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHRocm93RXJyb3IodHJ5Q2F0Y2hQcm90b2NvbC5FeGNlcHRpb24oKSwgYXJn
cy5HZXRJc29sYXRlKCkpOwotICAgICAgICAgICAgd2ViU29ja2V0LT5jb25uZWN0KHVybCwgdG9X
ZWJDb3JlU3RyaW5nKHByb3RvY29sKSwgZWMpOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChl
YykKLSAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkp
OwotCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsK
LSAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIod3JhcHBlciwgJmluZm8sIHdlYlNvY2tl
dC5nZXQoKSk7Ci0gICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3Qod2Vi
U29ja2V0LnJlbGVhc2UoKSwgd3JhcHBlcik7Ci0gICAgcmV0dXJuIHdyYXBwZXI7Ci19Ci0KLXY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYlNvY2tldDo6c2VuZENhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uV2ViU29ja2V0LnNlbmQoKSIp
OwotCi0gICAgaWYgKCFhcmdzLkxlbmd0aCgpKQotICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7Ci0KLSAgICBXZWJTb2NrZXQqIHdl
YlNvY2tldCA9IFY4V2ViU29ja2V0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gbWVzc2FnZSA9IGFyZ3NbMF07Ci0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgYm9vbCByZXN1bHQ7Ci0gICAgaWYgKFY4QXJyYXlCdWZmZXI6Okhhc0luc3Rh
bmNlKG1lc3NhZ2UpKSB7Ci0gICAgICAgIEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlciA9IFY4QXJy
YXlCdWZmZXI6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QobWVzc2FnZSkp
OwotICAgICAgICBBU1NFUlQoYXJyYXlCdWZmZXIpOwotICAgICAgICByZXN1bHQgPSB3ZWJTb2Nr
ZXQtPnNlbmQoYXJyYXlCdWZmZXIsIGVjKTsKLSAgICB9IGVsc2UgaWYgKFY4QXJyYXlCdWZmZXJW
aWV3OjpIYXNJbnN0YW5jZShtZXNzYWdlKSkgewotICAgICAgICBBcnJheUJ1ZmZlclZpZXcqIGFy
cmF5QnVmZmVyVmlldyA9IFY4QXJyYXlCdWZmZXJWaWV3Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+OjpDYXN0KG1lc3NhZ2UpKTsKLSAgICAgICAgQVNTRVJUKGFycmF5QnVmZmVyVmll
dyk7Ci0gICAgICAgIHJlc3VsdCA9IHdlYlNvY2tldC0+c2VuZChhcnJheUJ1ZmZlclZpZXcsIGVj
KTsKLSAgICB9IGVsc2UgaWYgKFY4QmxvYjo6SGFzSW5zdGFuY2UobWVzc2FnZSkpIHsKLSAgICAg
ICAgQmxvYiogYmxvYiA9IFY4QmxvYjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6
Q2FzdChtZXNzYWdlKSk7Ci0gICAgICAgIEFTU0VSVChibG9iKTsKLSAgICAgICAgcmVzdWx0ID0g
d2ViU29ja2V0LT5zZW5kKGJsb2IsIGVjKTsKLSAgICB9IGVsc2UgewotICAgICAgICB2ODo6VHJ5
Q2F0Y2ggdHJ5Q2F0Y2g7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gc3RyaW5nTWVz
c2FnZSA9IG1lc3NhZ2UtPlRvU3RyaW5nKCk7Ci0gICAgICAgIGlmICh0cnlDYXRjaC5IYXNDYXVn
aHQoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHRyeUNhdGNoLkV4Y2VwdGlvbigp
LCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgICAgIHJlc3VsdCA9IHdlYlNvY2tldC0+c2VuZCh0
b1dlYkNvcmVTdHJpbmcoc3RyaW5nTWVzc2FnZSksIGVjKTsKLSAgICB9Ci0gICAgaWYgKGVjKQot
ICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0K
LSAgICByZXR1cm4gdjhCb29sZWFuKHJlc3VsdCwgYXJncy5HZXRJc29sYXRlKCkpOwotfQotCi19
ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171906</attachid>
            <date>2012-11-01 12:05:54 -0700</date>
            <delta_ts>2012-11-08 07:11:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100801-20121101200414.patch</filename>
            <type>text/plain</type>
            <size>90875</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2E5NDQ2NzkwZGFjZmZk
ZWY3MmNkMDJjNTM5ODIwNDBkNzBmYTQ0MS4uNmI0NjYyMzc4ZThhMjRkMWFmMWNlYzI0NGY1ZDI3
Njg1MzkzOTY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxMi0xMS0wMSAgVG9t
bXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhl
IFY4IGN1c3RvbSBjb2RlIGZvciBXZWJTb2NrZXRzIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA4MDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGRvZXMgdGhlIGZv
bGxvd2luZzoKKworICAgICAgICAxKSBNb2RpZmllcyB0aGUgVjggY29kZSBnZW5lcmF0b3IgdG8g
c3VwcG9ydCBvdmVybG9hZGVkIGNvbnN0cnVjdG9ycywKKyAgICAgICAgICAgdGhlIEpTIGdlbmVy
YXRvciBpcyBmaXhlZCB0byB3b3JrIGFzIGJlZm9yZS4gUHJvcGVyIHN1cHBvcnQgZm9yIEpTIHdp
bGwgY29tZSBsYXRlci4KKworICAgICAgICAyKSBNb2RpZmllcyBXZWJTb2NrZXQuaC8uY3BwIGZv
ciB0aGUgbmV3IGNvbnN0cnVjdG9ycy4KKworICAgICAgICBUZXN0ZWQgYnkgcnVubmluZyBXZWJT
b2NrZXRzIGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgor
ICAgICAgICAoV2ViU29ja2V0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToK
KyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVy
KToKKyAgICAgICAgKEdlbmVyYXRlT3ZlcmxvYWRlZENvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAg
ICAgICAoR2VuZXJhdGVTaW5nbGVDb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKEdlbmVy
YXRlQ29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9u
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbToKKyAgICAgICAgKGNv
cHlBdHRyaWJ1dGVzKToKKyAgICAgICAgKHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KToKKyAg
ICAgICAgKHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVzKToKKyAgICAgICAgKGFwcGx5RXh0ZW5kZWRB
dHRyaWJ1dGVMaXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETFN0cnVjdHVyZS5w
bToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6V2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlOjpX
ZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGUpOgorICAgICAgICAoV2ViRE9N
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OldlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzUHJpdmF0ZSk6CisgICAgICAgIChXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
V2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOgorICAgICAgICAoV2ViRE9NVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJET01UZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczo6aW1wbCk6CisgICAgICAgIChXZWJET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6fldlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKToKKyAgICAg
ICAgKHRvV2ViQ29yZSk6CisgICAgICAgICh0b1dlYktpdCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktp
dERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpraXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAg
ICAgICAgKFdlYktpdDo6d3JhcFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKToKKyAgICAgICAg
KHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19maW5hbGl6ZSk6CisgICAg
ICAgICh3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfc2V0X3Byb3BlcnR5
KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19nZXRf
cHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0
b3JzX2NvbnN0cnVjdGVkKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2Nv
bnN0cnVjdG9yc19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vdmVybG9h
ZGVkX2NvbnN0cnVjdG9yc19pbml0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOiBBZGRlZC4KKyAg
ICAgICAgKF9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk6CisgICAgICAgIChf
V2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDbGFzcyk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNQcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnND
b25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rv
cjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZTo6c2VsZik6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6On5KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmdldE93blBy
b3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OmlzT2JzZXJ2YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNPd25lcjo6ZmluYWxpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChXZWJDb3JlOjp0b1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6cmVsZWFzZUltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6cmVsZWFzZUlt
cGxJZk5vdE51bGwpOgorICAgICAgICAoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OndyYXBwZXJPd25lcik6CisgICAgICAgIChXZWJDb3JlOjp3
cmFwcGVyQ29udGV4dCk6CisgICAgICAgIChKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJv
dG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQ
cm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZTo6SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1Byb3RvdHlwZSk6CisgICAgICAgIChKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc0NvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bRE9NVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgZGVhbGxvY10pOgorICAgICAgICAoLVtET01UZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyBmaW5hbGl6ZV0pOgorICAgICAgICAoY29yZSk6CisgICAgICAgIChr
aXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzSW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
aWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5pZGwuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaWRsOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzVjhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1Y4SW50ZXJuYWw6OlY4X1VTRSk6CisgICAgICAgIChXZWJDb3JlOjpW
OFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjFDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjJD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
Ojpjb25zdHJ1Y3RvcjNDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUZW1w
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpH
ZXRSYXdUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzOjpIYXNJbnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjp3cmFwU2xvdyk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjpkZXJlZk9iamVjdCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMp
OgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6dG9OYXRp
dmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6aW5z
dGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6
CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp3cmFwKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OFdlYlNvY2tldEN1c3RvbS5jcHA6CisKIDIwMTItMTAtMzEgIFJvZ2VyIEZvbmcgIDxyb2dlcl9m
b25nQGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFuZ2UgUG9wdXBNZW51IHBvc2l0aW9uaW5nIG9u
IFdpbmRvd3Mgc3VjaCB0aGF0IGJlaGF2aW91ciBvbiBtdWx0aXBsZSBtb25pdG9ycyBtYXRjaGVz
IFdpbmRvd3Mgc3RhbmRhcmRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmNwcAppbmRleCA0NmQ2MmRlODlmNDY2OGZlN2ExNTFmZWVkNTMxMTM4MjQ3
MzAyN2RhLi5lNGE0NTYwZDQ4YTM5MDcyN2Y0YmNjZTFmZWQ2MzJjNWM4ODM5YzZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtMTY0
LDYgKzE2NCwzNiBAQCBQYXNzUmVmUHRyPFdlYlNvY2tldD4gV2ViU29ja2V0OjpjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICByZXR1cm4gd2ViU29ja2V0LnJlbGVh
c2UoKTsKIH0KIAorUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25D
b2RlJiBlYykKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBwcm90b2NvbHM7CisgICAgcmV0dXJuIFdl
YlNvY2tldDo6Y3JlYXRlKGNvbnRleHQsIHVybCwgcHJvdG9jb2xzLCBlYyk7Cit9CisKK1Bhc3NS
ZWZQdHI8V2ViU29ja2V0PiBXZWJTb2NrZXQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByb3Rv
Y29scywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKHVybC5pc051bGwoKSkgeworICAg
ICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIFJl
ZlB0cjxXZWJTb2NrZXQ+IHdlYlNvY2tldChhZG9wdFJlZihuZXcgV2ViU29ja2V0KGNvbnRleHQp
KSk7CisgICAgd2ViU29ja2V0LT5zdXNwZW5kSWZOZWVkZWQoKTsKKworICAgIHdlYlNvY2tldC0+
Y29ubmVjdChjb250ZXh0LT5jb21wbGV0ZVVSTCh1cmwpLCBwcm90b2NvbHMsIGVjKTsKKyAgICBp
ZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIHdlYlNvY2tldC5yZWxlYXNl
KCk7Cit9CisKK1Bhc3NSZWZQdHI8V2ViU29ja2V0PiBXZWJTb2NrZXQ6OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBwcm90b2NvbCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgVmVjdG9yPFN0cmluZz4gcHJv
dG9jb2xzOworICAgIHByb3RvY29scy5hcHBlbmQocHJvdG9jb2wpOworICAgIHJldHVybiBXZWJT
b2NrZXQ6OmNyZWF0ZShjb250ZXh0LCB1cmwsIHByb3RvY29scywgZWMpOworfQorCiB2b2lkIFdl
YlNvY2tldDo6Y29ubmVjdChjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgVmVjdG9yPFN0cmluZz4gcHJvdG9jb2xzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IGE5MzU1MjhiYTI0NjEyMjE5MjdkNWIzM2Ux
YjVjZjY1OTc0YzQ0ZDIuLjJiYWU1MzliMWI1MTI1M2E0YjMzY2ViYjViODQ2OTY4ZWVhNDhjNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKQEAg
LTU2LDYgKzU2LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CiAg
ICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1YlByb3RvY29sU2VwZXJhdG9yKCk7CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByb3RvY29s
cywgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgfldlYlNvY2tldCgpOwogCiAgICAgZW51
bSBTdGF0ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaWRsCmluZGV4IDcyY2Y1ZDRlOWNjMTdiYzkyZjczOGYwOWJlNjhhY2IyMDExZWU5NDcuLjIz
YWNjNWYxMTU4M2IwZjM3NThhZTc4ZTFhMWRmY2JjY2VkMDVhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCkBAIC0zMiwxMCArMzIsMTUg
QEAKIFsKICAgICBDb25kaXRpb25hbD1XRUJfU09DS0VUUywKICAgICBBY3RpdmVET01PYmplY3Qs
Ci0gICAgQ3VzdG9tQ29uc3RydWN0b3IsCi0gICAgQ29uc3RydWN0b3JQYXJhbWV0ZXJzPTEsCisg
ICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIHVybCksCisgICAgQ29uc3RydWN0b3IoaW4gRE9N
U3RyaW5nIHVybCwgaW4gc2VxdWVuY2U8U3RyaW5nPiBwcm90b2NvbHMpLAorICAgIENvbnN0cnVj
dG9yKGluIERPTVN0cmluZyB1cmwsIGluIERPTVN0cmluZyBwcm90b2NvbCksCisgICAgQ29uc3Ry
dWN0b3JSYWlzZXNFeGNlcHRpb24sCisgICAgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwKICAgICBFdmVudFRhcmdldCwKLSAgICBKU05vU3RhdGljVGFibGVzCisgICAgSlNOb1N0YXRp
Y1RhYmxlcywKKyAgICBKU0N1c3RvbUNvbnN0cnVjdG9yLAorICAgIENvbnN0cnVjdG9yUGFyYW1l
dGVycz0xLAogXSBpbnRlcmZhY2UgV2ViU29ja2V0IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIFVSTDsgLy8gTG93ZXJjYXNlZCAudXJsIGlzIHRoZSBvbmUgaW4gdGhlIHNwZWMs
IGJ1dCBsZWF2aW5nIC5VUkwgZm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucy4KICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggYjU0OTc5ZmEyZjIwNTZjNzNmYWJk
Mjg3YTZiN2NmNDhiZmNhMjBjOC4uY2Q5ZjQ3NTU4YmJkNGQyMTE2NmQ3ZjhkZmEzMGE1YWFhNTI4
YTQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KQEAgLTM3MjEsMTMgKzM3MjEsMTggQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0
b3JEZWZpbml0aW9uCiAgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CiAgICAgbXkgJGdlbmVyYXRp
bmdOYW1lZENvbnN0cnVjdG9yID0gc2hpZnQ7CiAKKyAgICAjIEZJWE1FOiBBZGQgc3VwcG9ydCBm
b3Igb3ZlcmxvYWRlZCBjb25zdHJ1Y3RvcnMgdG8gSlMgYXMgd2VsbC4KKyAgICAjIEZvciBub3cg
bWltaWMgdGhlIG9sZCBiZWhhdmlvdXIgYnkgb25seSBnZW5lcmF0aW5nIGNvZGUgZm9yIHRoZSBs
YXN0ICJDb25zdHJ1Y3RvciIgYXR0cmlidXRlLgorICAgIG15ICRmdW5jdGlvbiA9IEB7JGRhdGFO
b2RlLT5jb25zdHJ1Y3RvcnN9Wy0xXTsKKwogICAgIG15ICRjb25zdHJ1Y3RvckNsYXNzTmFtZSA9
ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciA/ICIke2NsYXNzTmFtZX1OYW1lZENvbnN0cnVj
dG9yIiA6ICIke2NsYXNzTmFtZX1Db25zdHJ1Y3RvciI7CisKICAgICBteSAkbnVtYmVyT2ZDb25z
dHJ1Y3RvclBhcmFtZXRlcnMgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25z
dHJ1Y3RvclBhcmFtZXRlcnMifTsKICAgICBpZiAoIWRlZmluZWQgJG51bWJlck9mQ29uc3RydWN0
b3JQYXJhbWV0ZXJzKSB7CiAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3Rv
clRlbXBsYXRlKCRkYXRhTm9kZSwgIkV2ZW50IikpIHsKICAgICAgICAgICAgICRudW1iZXJPZkNv
bnN0cnVjdG9yUGFyYW1ldGVycyA9IDI7CiAgICAgICAgIH0gZWxzaWYgKCRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0pIHsKLSAgICAgICAgICAgICRudW1iZXJP
ZkNvbnN0cnVjdG9yUGFyYW1ldGVycyA9IEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3Rvci0+cGFyYW1l
dGVyc307CisgICAgICAgICAgICAkbnVtYmVyT2ZDb25zdHJ1Y3RvclBhcmFtZXRlcnMgPSBAeyRm
dW5jdGlvbi0+cGFyYW1ldGVyc307CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM4ODksNyArMzg5
NCw2IEBAIEVORAogCiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJHtjb25z
dHJ1Y3RvckNsYXNzTmFtZX0qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNz
TmFtZX0qPihleGVjLT5jYWxsZWUoKSk7XG4iKTsKIAotICAgICAgICAgICAgbXkgJGZ1bmN0aW9u
ID0gJGRhdGFOb2RlLT5jb25zdHJ1Y3RvcjsKICAgICAgICAgICAgIG15IEBjb25zdHJ1Y3RvckFy
Z0xpc3Q7CiAKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IjxydW50aW1lL0Vycm9yLmg+In0g
PSAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQppbmRleCAzOTdkMmMzOGUzNjIwNDI3ZTZiM2YxMGUzYWQ4MjE0YmRmMGRmZTI4Li5l
NjE1MTEyY2RlOGI3OTJmZjMxZDc0MWNmZTJhY2JmM2JkODE2YzJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtNDk1LDYg
KzQ5NSwxNyBAQCBFTkQKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiBwcml2YXRl
OgogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBTbG93KCR7d3JhcFNsb3dB
cmd1bWVudFR5cGV9LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6
Oklzb2xhdGUqKTsKK0VORAorCisgICAgaWYgKElzQ29uc3RydWN0YWJsZSgkZGF0YU5vZGUpICYm
IEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3RvcnN9ID4gMSkgeworICAgICAgICBmb3IgKG15ICRpID0g
MTsgJGkgPD0gQHskZGF0YU5vZGUtPmNvbnN0cnVjdG9yc307ICRpKyspIHsKKyAgICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gY29uc3RydWN0b3Ike2l9Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOworRU5E
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiB9
OwogCiBFTkQKQEAgLTE4NjIsMTEgKzE4NzMsNTEgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0No
ZWNrCiAgICAgcmV0dXJuICgkcGFyYW1ldGVyQ2hlY2tTdHJpbmcsICRwYXJhbUluZGV4LCAlcmVw
bGFjZW1lbnRzKTsKIH0KIAotc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JDYWxsYmFjaworc3ViIEdl
bmVyYXRlT3ZlcmxvYWRlZENvbnN0cnVjdG9yQ2FsbGJhY2sKIHsKLSAgICBteSAkZnVuY3Rpb24g
PSBzaGlmdDsKICAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKICAgICBteSAkaW1wbENsYXNzTmFt
ZSA9IHNoaWZ0OworICAgIAorICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Cit2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjgke2ltcGxDbGFzc05hbWV9Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uJHtpbXBsQ2xh
c3NOYW1lfS5Db25zdHJ1Y3RvciIpOworICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkK
KyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNh
bm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iKTsKKworICAgIGlmIChDb25zdHJ1Y3Rvck1v
ZGU6OmN1cnJlbnQoKSA9PSBDb25zdHJ1Y3Rvck1vZGU6OldyYXBFeGlzdGluZ09iamVjdCkKKyAg
ICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CisKK0VORAorCisgICAgbXkgJGxlYXN0TnVtTWFu
ZGF0b3J5UGFyYW1zID0gMjU1OworICAgIGZvcmVhY2ggbXkgJGNvbnN0cnVjdG9yIChAeyRkYXRh
Tm9kZS0+Y29uc3RydWN0b3JzfSkgeworICAgICAgICBteSAkbmFtZSA9ICJjb25zdHJ1Y3RvciIg
LiAkY29uc3RydWN0b3ItPntvdmVybG9hZGVkSW5kZXh9IC4gIkNhbGxiYWNrIjsKKyAgICAgICAg
bXkgKCRudW1NYW5kYXRvcnlQYXJhbXMsICRwYXJhbWV0ZXJzQ2hlY2spID0gR2VuZXJhdGVGdW5j
dGlvblBhcmFtZXRlcnNDaGVjaygkY29uc3RydWN0b3IpOworICAgICAgICAkbGVhc3ROdW1NYW5k
YXRvcnlQYXJhbXMgPSAkbnVtTWFuZGF0b3J5UGFyYW1zIGlmICgkbnVtTWFuZGF0b3J5UGFyYW1z
IDwgJGxlYXN0TnVtTWFuZGF0b3J5UGFyYW1zKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgaWYgKCRwYXJhbWV0ZXJzQ2hlY2spXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiAkbmFtZShhcmdzKTtcbiIpOworICAgIH0KKyAgICBpZiAoJGxl
YXN0TnVtTWFuZGF0b3J5UGFyYW1zID49IDEpIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAkbGVhc3ROdW1NYW5kYXRvcnlQYXJhbXMpXG4iKTsK
KyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd05vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTtcbiIpOworICAgIH0KKyAgICBwdXNo
KEBpbXBsQ29udGVudCwgPDxFTkQpOworICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigwLCBhcmdz
LkdldElzb2xhdGUoKSk7CitFTkQKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Cit9
CisKK3N1YiBHZW5lcmF0ZVNpbmdsZUNvbnN0cnVjdG9yQ2FsbGJhY2sKK3sKKyAgICBteSAkZGF0
YU5vZGUgPSBzaGlmdDsKKyAgICBteSAkaW1wbENsYXNzTmFtZSA9IHNoaWZ0OworICAgIG15ICRm
dW5jdGlvbiA9IHNoaWZ0OworCisgICAgbXkgJG92ZXJsb2FkZWRJbmRleFN0cmluZyA9ICIiOwor
ICAgIGlmICgkZnVuY3Rpb24tPntvdmVybG9hZGVkSW5kZXh9ID4gMCkgeworICAgICAgICAkb3Zl
cmxvYWRlZEluZGV4U3RyaW5nIC49ICRmdW5jdGlvbi0+e292ZXJsb2FkZWRJbmRleH07CisgICAg
fQogCiAgICAgbXkgJHJhaXNlc0V4Y2VwdGlvbnMgPSBAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0
aW9uc307CiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVj
dG9yUmFpc2VzRXhjZXB0aW9uIn0pIHsKQEAgLTE4ODUsMTggKzE5MzYsMjIgQEAgc3ViIEdlbmVy
YXRlQ29uc3RydWN0b3JDYWxsYmFjawogICAgIG15IEBiZWZvcmVBcmd1bWVudExpc3Q7CiAgICAg
bXkgQGFmdGVyQXJndW1lbnRMaXN0OwogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci12
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2ltcGxDbGFzc05hbWV9Ojpjb25zdHJ1Y3RvckNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgk
e2ltcGxDbGFzc05hbWV9Ojpjb25zdHJ1Y3RvciR7b3ZlcmxvYWRlZEluZGV4U3RyaW5nfUNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uJHtp
bXBsQ2xhc3NOYW1lfS5Db25zdHJ1Y3RvciIpOworICAgIElOQ19TVEFUUygiRE9NLiR7aW1wbENs
YXNzTmFtZX0uQ29uc3RydWN0b3Ike292ZXJsb2FkZWRJbmRleFN0cmluZ30iKTsKICAgICAke21h
eWJlT2JzZXJ2ZUZlYXR1cmV9CitFTkQKKworICAgIGlmICgkZnVuY3Rpb24tPntvdmVybG9hZGVk
SW5kZXh9ID09IDApIHsKKyAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogICAgIGlm
ICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4i
KTsKIAogICAgIGlmIChDb25zdHJ1Y3Rvck1vZGU6OmN1cnJlbnQoKSA9PSBDb25zdHJ1Y3Rvck1v
ZGU6OldyYXBFeGlzdGluZ09iamVjdCkKICAgICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CiBF
TkQKLQotICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2so
JGZ1bmN0aW9uLCAkZGF0YU5vZGUpKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVy
YXRlQXJndW1lbnRzQ291bnRDaGVjaygkZnVuY3Rpb24sICRkYXRhTm9kZSkpOworICAgIH0KIAog
ICAgIGlmICgkcmFpc2VzRXhjZXB0aW9ucykgewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygi
RXhjZXB0aW9uQ29kZS5oIik7CkBAIC0xOTYwLDYgKzIwMTUsMjEgQEAgRU5ECiAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJcbiIpOwogfQogCitzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckNhbGxiYWNr
Cit7CisgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CisgICAgbXkgJGltcGxDbGFzc05hbWUgPSBz
aGlmdDsKKworICAgIGlmIChAeyRkYXRhTm9kZS0+Y29uc3RydWN0b3JzfSA9PSAxKSB7CisgICAg
ICAgIEdlbmVyYXRlU2luZ2xlQ29uc3RydWN0b3JDYWxsYmFjaygkZGF0YU5vZGUsICRpbXBsQ2xh
c3NOYW1lLCBAeyRkYXRhTm9kZS0+Y29uc3RydWN0b3JzfVswXSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgZm9yZWFjaCBteSAkY29uc3RydWN0b3IgKEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3RvcnN9
KSB7CisgICAgICAgICAgICBHZW5lcmF0ZVNpbmdsZUNvbnN0cnVjdG9yQ2FsbGJhY2soJGRhdGFO
b2RlLCAkaW1wbENsYXNzTmFtZSwgJGNvbnN0cnVjdG9yKTsKKyAgICAgICAgfQorICAgICAgICBH
ZW5lcmF0ZU92ZXJsb2FkZWRDb25zdHJ1Y3RvckNhbGxiYWNrKCRkYXRhTm9kZSwgJGltcGxDbGFz
c05hbWUpOworICAgIH0KK30KKwogc3ViIEdlbmVyYXRlRXZlbnRDb25zdHJ1Y3RvckNhbGxiYWNr
CiB7CiAgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CkBAIC0yODM5LDkgKzI5MDksOSBAQCBFTkQK
ICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAifSAvLyBuYW1lc3BhY2UgJHtpbnRlcmZhY2VO
YW1lfVY4SW50ZXJuYWxcblxuIik7CiAKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9ICYmICEoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiVjhDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0pKSB7Ci0gICAgICAgIEdlbmVyYXRlTmFtZWRD
b25zdHJ1Y3RvckNhbGxiYWNrKCRkYXRhTm9kZS0+Y29uc3RydWN0b3IsICRkYXRhTm9kZSwgJGlu
dGVyZmFjZU5hbWUpOworICAgICAgICBHZW5lcmF0ZU5hbWVkQ29uc3RydWN0b3JDYWxsYmFjayhA
eyRkYXRhTm9kZS0+Y29uc3RydWN0b3JzfVswXSwgJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7
CiAgICAgfSBlbHNpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0
b3IifSAmJiAhKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tQ29uc3Ry
dWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1
Y3RvciJ9KSkgewotICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbGJhY2soJGRhdGFOb2Rl
LT5jb25zdHJ1Y3RvciwgJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CisgICAgICAgIEdlbmVy
YXRlQ29uc3RydWN0b3JDYWxsYmFjaygkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lKTsKICAgICB9
IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclRlbXBsYXRlKCRkYXRhTm9kZSwg
IkV2ZW50IikpIHsKICAgICAgICAgR2VuZXJhdGVFdmVudENvbnN0cnVjdG9yQ2FsbGJhY2soJGRh
dGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklz
Q29uc3RydWN0b3JUZW1wbGF0ZSgkZGF0YU5vZGUsICJUeXBlZEFycmF5IikpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KaW5kZXggMTlmYjY0OTVjMzFi
MWZiNTZkN2U2YTlmMTUwZGI5NTk4MmM3NDcxMi4uNDhmNWMzYzNmZTU5MDM2ODI2NDBkNDk1Yjdj
NTA3YjJhZmYyYWZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExQYXJzZXIucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQ
YXJzZXIucG0KQEAgLTEzMjMsNiArMTMyMywyNSBAQCBzdWIgcGFyc2VFeHRlbmRlZEF0dHJpYnV0
ZUxpc3RBbGxvd0VtcHR5CiAgICAgcmV0dXJuIHt9OwogfQogCitzdWIgY29weUF0dHJpYnV0ZXMK
K3sKKyAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0ID0gc2hpZnQ7CisgICAgbXkgJGF0dHIg
PSBzaGlmdDsKKworICAgIGZvciBteSAka2V5IChrZXlzICV7JGF0dHJ9KSB7CisgICAgICAgIGlm
ICgka2V5IGVxICJDb25zdHJ1Y3RvciIpIHsKKyAgICAgICAgICAgIHB1c2goQHskZXh0ZW5kZWRB
dHRyaWJ1dGVMaXN0LT57IkNvbnN0cnVjdG9ycyJ9fSwgJGF0dHItPnska2V5fSk7CisgICAgICAg
IH0gZWxzaWYgKCRrZXkgZXEgIkNvbnN0cnVjdG9ycyIpIHsKKyAgICAgICAgICAgIG15IEBjb25z
dHJ1Y3RvcnMgPSBAeyRhdHRyLT57JGtleX19OworICAgICAgICAgICAgZm9yZWFjaCBteSAkY29u
c3RydWN0b3IgKEBjb25zdHJ1Y3RvcnMpIHsKKyAgICAgICAgICAgICAgICBwdXNoKEB7JGV4dGVu
ZGVkQXR0cmlidXRlTGlzdC0+eyJDb25zdHJ1Y3RvcnMifX0sICRjb25zdHJ1Y3Rvcik7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAkZXh0ZW5kZWRBdHRyaWJ1
dGVMaXN0LT57JGtleX0gPSAkYXR0ci0+eyRrZXl9OworICAgICAgICB9CisgICAgfQorfQorCiBz
dWIgcGFyc2VFeHRlbmRlZEF0dHJpYnV0ZUxpc3QKIHsKICAgICBteSAkc2VsZiA9IHNoaWZ0OwpA
QCAtMTMzMSwxMyArMTM1MCw5IEBAIHN1YiBwYXJzZUV4dGVuZGVkQXR0cmlidXRlTGlzdAogICAg
ICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIlsiLCBfX0xJ
TkVfXyk7CiAgICAgICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QgPSB7fTsKICAgICAgICAg
bXkgJGF0dHIgPSAkc2VsZi0+cGFyc2VFeHRlbmRlZEF0dHJpYnV0ZSgpOwotICAgICAgICBmb3Ig
bXkgJGtleSAoa2V5cyAleyRhdHRyfSkgewotICAgICAgICAgICAgJGV4dGVuZGVkQXR0cmlidXRl
TGlzdC0+eyRrZXl9ID0gJGF0dHItPnska2V5fTsKLSAgICAgICAgfQorICAgICAgICBjb3B5QXR0
cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LCAkYXR0cik7CiAgICAgICAgICRhdHRyID0g
JHNlbGYtPnBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVzKCk7Ci0gICAgICAgIGZvciBteSAka2V5IChr
ZXlzICV7JGF0dHJ9KSB7Ci0gICAgICAgICAgICAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57JGtl
eX0gPSAkYXR0ci0+eyRrZXl9OwotICAgICAgICB9CisgICAgICAgIGNvcHlBdHRyaWJ1dGVzKCRl
eHRlbmRlZEF0dHJpYnV0ZUxpc3QsICRhdHRyKTsKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2Vu
VmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJdIiwgX19MSU5FX18pOwogICAgICAgICByZXR1cm4g
JGV4dGVuZGVkQXR0cmlidXRlTGlzdDsKICAgICB9CkBAIC0xMzU0LDkgKzEzNjksNyBAQCBzdWIg
cGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMKICAgICAgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICIs
IikgewogICAgICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2Vu
KCksICIsIiwgX19MSU5FX18pOwogICAgICAgICAgICAgbXkgJGF0dHIgPSAkc2VsZi0+cGFyc2VF
eHRlbmRlZEF0dHJpYnV0ZTIoKTsKLSAgICAgICAgICAgIGZvciBteSAka2V5IChrZXlzICV7JGF0
dHJ9KSB7Ci0gICAgICAgICAgICAgICAgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyRrZXl9ID0g
JGF0dHItPnska2V5fTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvcHlBdHRyaWJ1dGVz
KCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QsICRhdHRyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIGxhc3Q7CiAgICAgICAgIH0KQEAgLTIzODEsMTQgKzIzOTQsMjAgQEAgc3ViIGFwcGx5
RXh0ZW5kZWRBdHRyaWJ1dGVMaXN0CiAgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CiAgICAgbXkg
JGV4dGVuZGVkQXR0cmlidXRlTGlzdCA9IHNoaWZ0OwogCi0gICAgaWYgKGRlZmluZWQgJGV4dGVu
ZGVkQXR0cmlidXRlTGlzdC0+eyJDb25zdHJ1Y3RvciJ9KSB7Ci0gICAgICAgIG15ICRuZXdEYXRh
Tm9kZSA9IG5ldyBkb21GdW5jdGlvbigpOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVy
ZShuZXcgZG9tU2lnbmF0dXJlKCkpOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+
bmFtZSgiQ29uc3RydWN0b3IiKTsKLSAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKLSAgICAgICAgcHVzaChA
eyRuZXdEYXRhTm9kZS0+cGFyYW1ldGVyc30sIEB7JGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJD
b25zdHJ1Y3RvciJ9fSk7CisgICAgaWYgKGRlZmluZWQgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+
eyJDb25zdHJ1Y3RvcnMifSkgeworICAgICAgICBteSBAY29uc3RydWN0b3JQYXJhbXMgPSBAeyRl
eHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiQ29uc3RydWN0b3JzIn19OworICAgICAgICBteSAkaW5k
ZXggPSAoQGNvbnN0cnVjdG9yUGFyYW1zID09IDEpID8gMCA6IDE7CisgICAgICAgIGZvcmVhY2gg
bXkgJHBhcmFtIChAY29uc3RydWN0b3JQYXJhbXMpIHsKKyAgICAgICAgICAgIG15ICRjb25zdHJ1
Y3RvciA9IG5ldyBkb21GdW5jdGlvbigpOworICAgICAgICAgICAgJGNvbnN0cnVjdG9yLT5zaWdu
YXR1cmUobmV3IGRvbVNpZ25hdHVyZSgpKTsKKyAgICAgICAgICAgICRjb25zdHJ1Y3Rvci0+c2ln
bmF0dXJlLT5uYW1lKCJDb25zdHJ1Y3RvciIpOworICAgICAgICAgICAgJGNvbnN0cnVjdG9yLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKKyAg
ICAgICAgICAgICRjb25zdHJ1Y3Rvci0+cGFyYW1ldGVycygkcGFyYW0pOworICAgICAgICAgICAg
JGNvbnN0cnVjdG9yLT57b3ZlcmxvYWRlZEluZGV4fSA9ICRpbmRleCsrOworICAgICAgICAgICAg
cHVzaChAeyRkYXRhTm9kZS0+Y29uc3RydWN0b3JzfSwgJGNvbnN0cnVjdG9yKTsKKyAgICAgICAg
fQorICAgICAgICBkZWxldGUgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJDb25zdHJ1Y3RvcnMi
fTsKICAgICAgICAgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJDb25zdHJ1Y3RvciJ9ID0gIlZB
TFVFX0lTX01JU1NJTkciOwotICAgICAgICAkZGF0YU5vZGUtPmNvbnN0cnVjdG9yKCRuZXdEYXRh
Tm9kZSk7CiAgICAgfSBlbHNpZiAoZGVmaW5lZCAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57Ik5h
bWVkQ29uc3RydWN0b3IifSkgewogICAgICAgICBteSAkbmV3RGF0YU5vZGUgPSBuZXcgZG9tRnVu
Y3Rpb24oKTsKICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUobmV3IGRvbVNpZ25hdHVy
ZSgpKTsKQEAgLTIzOTksNyArMjQxOCw3IEBAIHN1YiBhcHBseUV4dGVuZGVkQXR0cmlidXRlTGlz
dAogICAgICAgICBteSAkY29uc3RydWN0b3JOYW1lID0gJGF0dHJpYnV0ZUtleXNbMF07CiAgICAg
ICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPnBhcmFtZXRlcnN9LCBAeyRhdHRyaWJ1dGVzeyRjb25z
dHJ1Y3Rvck5hbWV9fSk7CiAgICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiTmFtZWRD
b25zdHJ1Y3RvciJ9ID0gJGNvbnN0cnVjdG9yTmFtZTsKLSAgICAgICAgJGRhdGFOb2RlLT5jb25z
dHJ1Y3RvcigkbmV3RGF0YU5vZGUpOworICAgICAgICBwdXNoKEB7JGRhdGFOb2RlLT5jb25zdHJ1
Y3RvcnN9LCAkbmV3RGF0YU5vZGUpOwogICAgIH0KICAgICAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJlLnBtIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0KaW5kZXggZmY2Mjg3MjVlYjkwZjU0NjY3
M2ZkMTY0MWVmMWRjNWFjMjZjZGZjYi4uZjQ0MzI0MTczZWEyY2UwZDQ0M2M2ZjU0ZGVmZGI1NGQ1
MDM5Y2U4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExT
dHJ1Y3R1cmUucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1
Y3R1cmUucG0KQEAgLTQwLDcgKzQwLDcgQEAgc3RydWN0KCBkb21DbGFzcyA9PiB7CiAgICAgZnVu
Y3Rpb25zID0+ICdAJywgICAgIyBMaXN0IG9mICdkb21GdW5jdGlvbicKICAgICBhdHRyaWJ1dGVz
ID0+ICdAJywgICAgIyBMaXN0IG9mICdkb21BdHRyaWJ1dGUnICAgIAogICAgIGV4dGVuZGVkQXR0
cmlidXRlcyA9PiAnJCcsICMgRXh0ZW5kZWQgYXR0cmlidXRlcwotICAgIGNvbnN0cnVjdG9yID0+
ICckJywgIyBDb25zdHJ1Y3RvcgorICAgIGNvbnN0cnVjdG9ycyA9PiAnQCcsICMgQ29uc3RydWN0
b3IKICAgICBpc0V4Y2VwdGlvbiA9PiAnJCcsICMgVXNlZCBmb3IgZXhjZXB0aW9uIGludGVyZmFj
ZXMKIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvQ1BQL1dlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2NmEyZWRiNDZiM2NhMGI5OGFhOTg1YjIyZTc0NjVmODE1
YzA1MDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtMCwwICsx
LDgyIEBACisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJj
ZSBwcm9qZWN0LgorICogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1i
aW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgiCisKKyNpbmNsdWRlICJUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5oIgorI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkhhbmRsZXIuaCIK
KyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCitzdHJ1
Y3QgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OldlYkRPTVRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzUHJpdmF0ZSB7CisgICAgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNQcml2YXRlKFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBvYmplY3QgPSAw
KQorICAgICAgICA6IGltcGwob2JqZWN0KQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGltcGw7Cit9OworCitXZWJET01UZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6V2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMo
KQorICAgIDogV2ViRE9NT2JqZWN0KCkKKyAgICAsIG1faW1wbCgwKQoreworfQorCitXZWJET01U
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6V2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMoV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGltcGwpCisgICAgOiBXZWJE
T01PYmplY3QoKQorICAgICwgbV9pbXBsKG5ldyBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc1ByaXZhdGUoaW1wbCkpCit7Cit9CisKK1dlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzOjpXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhjb25zdCBXZWJET01UZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycyYgY29weSkKKyAgICA6IFdlYkRPTU9iamVjdCgpCit7CisgICAg
bV9pbXBsID0gY29weS5pbXBsKCkgPyBuZXcgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNQcml2YXRlKGNvcHkuaW1wbCgpKSA6IDA7Cit9CisKK1dlYkRPTVRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzJiBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6b3BlcmF0b3I9KGNv
bnN0IFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzJiBjb3B5KQoreworICAgIGRlbGV0
ZSBtX2ltcGw7CisgICAgbV9pbXBsID0gY29weS5pbXBsKCkgPyBuZXcgV2ViRE9NVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlKGNvcHkuaW1wbCgpKSA6IDA7CisgICAgcmV0dXJuICp0
aGlzOworfQorCitXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogV2ViRE9NVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmltcGwoKSBjb25zdAoreworICAgIHJldHVybiBtX2lt
cGwgPyBXVEY6OmdldFB0cihtX2ltcGwtPmltcGwpIDogMDsKK30KKworV2ViRE9NVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM6On5XZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycygpCit7
CisgICAgZGVsZXRlIG1faW1wbDsKKyAgICBtX2ltcGwgPSAwOworfQorCitXZWJDb3JlOjpUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdG9XZWJDb3JlKGNvbnN0IFdlYkRPTVRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzJiB3cmFwcGVyKQoreworICAgIHJldHVybiB3cmFwcGVyLmltcGwoKTsK
K30KKworV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgdG9XZWJLaXQoV2ViQ29yZTo6
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHZhbHVlKQoreworICAgIHJldHVybiBXZWJET01U
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyh2YWx1ZSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dl
YkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFiODEyYmJiNmZm
MGVkYTY4YWJlNDlmOTNhMWIyMDQxM2FjMjUyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxz
YW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9u
IExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJET01UZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc19oCisjZGVmaW5lIFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzX2gKKworI2luY2x1ZGUgPFdlYkRPTU9iamVjdC5oPgorI2luY2x1ZGUgPFdlYkRPTVN0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yczsKK307CisKKworY2xhc3MgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMg
OiBwdWJsaWMgV2ViRE9NT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBXZWJET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycygpOworICAgIGV4cGxpY2l0IFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzKFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKik7CisgICAgV2ViRE9N
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoY29uc3QgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMmKTsKKyAgICBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyYgb3BlcmF0
b3I9KGNvbnN0IFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzJik7CisgICAgdmlydHVh
bCB+V2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoKTsKKworCisgICAgV2ViQ29yZTo6
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGltcGwoKSBjb25zdDsKKworcHJvdGVjdGVkOgor
ICAgIHN0cnVjdCBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGU7CisgICAg
V2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlKiBtX2ltcGw7Cit9OworCitX
ZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdG9XZWJDb3JlKGNvbnN0IFdlYkRP
TVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzJik7CitXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyB0b1dlYktpdChXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyopOwor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDUyZmM2ZjU1YTI3NTBkZjE2YWJk
ZWFkNzJjNjI3Y2ZiYWI5NGZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMuY3BwCkBAIC0wLDAgKzEsMTQxIEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4g
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycy5oIgorCisjaW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW5jbHVk
ZSAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIKKyNpbmNsdWRlICJXZWJLaXRET01CaW5k
aW5nLmgiCisjaW5jbHVkZSAiZ29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmgiCisjaW5jbHVk
ZSAid2Via2l0L1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJpdmF0ZS5oIgor
I2luY2x1ZGUgIndlYmtpdGRlZmluZXMuaCIKKyNpbmNsdWRlICJ3ZWJraXRnbG9iYWxzcHJpdmF0
ZS5oIgorI2luY2x1ZGUgIndlYmtpdG1hcnNoYWwuaCIKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5o
PgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyog
a2l0KFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBvYmopCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwob2JqLCAwKTsKKworICAgIGlmIChncG9pbnRlciByZXQgPSBET01P
YmplY3RDYWNoZTo6Z2V0KG9iaikpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXRE
T01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KHJldCk7CisKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8V2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihET01PYmplY3RDYWNo
ZTo6cHV0KG9iaiwgV2ViS2l0Ojp3cmFwVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMob2JqKSkp
OworfQorCitXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogY29yZShXZWJLaXRE
T01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogcmVxdWVzdCkKK3sKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChyZXF1ZXN0LCAwKTsKKworICAgIFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzKiBjb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMqPihXRUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0KS0+Y29yZU9iamVjdCk7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCwgMCk7CisKKyAgICByZXR1cm4g
Y29yZU9iamVjdDsKK30KKworV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHdy
YXBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyogY29yZU9iamVjdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2Jq
ZWN0LCAwKTsKKworICAgIC8vIFdlIGNhbGwgcmVmKCkgcmF0aGVyIHRoYW4gdXNpbmcgYSBDKysg
c21hcnQgcG9pbnRlciBiZWNhdXNlIHdlIGNhbid0IHN0b3JlIGEgQysrIG9iamVjdAorICAgIC8v
IGluIGEgQy1hbGxvY2F0ZWQgR09iamVjdCBzdHJ1Y3R1cmUuIFNlZSB0aGUgZmluYWxpemUoKSBj
b2RlIGZvciB0aGUgbWF0Y2hpbmcgZGVyZWYoKS4KKyAgICBjb3JlT2JqZWN0LT5yZWYoKTsKKwor
ICAgIHJldHVybiBXRUJLSVRfRE9NX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlMoZ19vYmpl
Y3RfbmV3KFdFQktJVF9UWVBFX0RPTV9URVNUX09WRVJMT0FERURfQ09OU1RSVUNUT1JTLCAiY29y
ZS1vYmplY3QiLCBjb3JlT2JqZWN0LCBOVUxMKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCitHX0RFRklORV9UWVBFKFdlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLCB3
ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnMsIFdFQktJVF9UWVBFX0RPTV9P
QkpFQ1QpCisKK2VudW0geworICAgIFBST1BfMCwKK307CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9k
b21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19maW5hbGl6ZShHT2JqZWN0KiBvYmplY3Qp
Cit7CisKKyAgICBXZWJLaXRET01PYmplY3QqIGRvbU9iamVjdCA9IFdFQktJVF9ET01fT0JKRUNU
KG9iamVjdCk7CisgICAgCisgICAgaWYgKGRvbU9iamVjdC0+Y29yZU9iamVjdCkgeworICAgICAg
ICBXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogY29yZU9iamVjdCA9IHN0YXRp
Y19jYXN0PFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4oZG9tT2JqZWN0LT5j
b3JlT2JqZWN0KTsKKworICAgICAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3JnZXQoY29y
ZU9iamVjdCk7CisgICAgICAgIGNvcmVPYmplY3QtPmRlcmVmKCk7CisKKyAgICAgICAgZG9tT2Jq
ZWN0LT5jb3JlT2JqZWN0ID0gMDsKKyAgICB9CisKKworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtp
dF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19wYXJlbnRfY2xhc3MpLT5maW5hbGl6
ZShvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9j
b25zdHJ1Y3RvcnNfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJ
ZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHN3aXRjaCAocHJvcGVydHlJZCkg
eworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9J
RChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQor
CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19n
ZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZh
bHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CisgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJ
ZCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKKworc3RhdGljIHZvaWQgd2Vi
a2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3JzX2NvbnN0cnVjdGVkKEdPYmplY3Qq
IG9iamVjdCkKK3sKKworICAgIGlmIChHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX3Rlc3Rfb3Zl
cmxvYWRlZF9jb25zdHJ1Y3RvcnNfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQpCisgICAgICAg
IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19w
YXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3RlZChvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJr
aXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfY2xhc3NfaW5pdChXZWJLaXRET01U
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NsYXNzKiByZXF1ZXN0Q2xhc3MpCit7CisgICAgR09i
amVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwor
ICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9j
b25zdHJ1Y3RvcnNfZmluYWxpemU7CisgICAgZ29iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3
ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfc2V0X3Byb3BlcnR5OworICAg
IGdvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRf
Y29uc3RydWN0b3JzX2dldF9wcm9wZXJ0eTsKKyAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVjdGVk
ID0gd2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3JzX2NvbnN0cnVjdGVkOwor
CisKKworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1
Y3RvcnNfaW5pdChXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogcmVxdWVzdCkK
K3sKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWY5MzZiYzg5Mzg0N2E2MmZiOGMzZTQwMmFj
ZTc5MjJiODU4ZmEzZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2Vi
S2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRl
ZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFdl
YktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzX2gKKyNkZWZpbmUgV2ViS2l0RE9NVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNfaAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNp
bmNsdWRlIDx3ZWJraXQvV2ViS2l0RE9NT2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtp
dGRlZmluZXMuaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZG9tZGVmaW5lcy5oPgorCitHX0JF
R0lOX0RFQ0xTCisjZGVmaW5lIFdFQktJVF9UWVBFX0RPTV9URVNUX09WRVJMT0FERURfQ09OU1RS
VUNUT1JTICAgICAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9y
c19nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfRE9NX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJV
Q1RPUlMob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwg
V0VCS0lUX1RZUEVfRE9NX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlMsIFdlYktpdERPTVRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKSkKKyNkZWZpbmUgV0VCS0lUX0RPTV9URVNUX09WRVJM
T0FERURfQ09OU1RSVUNUT1JTX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NB
U1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0RPTV9URVNUX09WRVJMT0FERURfQ09OU1RSVUNUT1JT
LCBXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NsYXNzKQorI2RlZmluZSBXRUJL
SVRfRE9NX0lTX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlMob2JqKSAgICAgICAgIChHX1RZ
UEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfRE9NX1RFU1RfT1ZFUkxP
QURFRF9DT05TVFJVQ1RPUlMpKQorI2RlZmluZSBXRUJLSVRfRE9NX0lTX1RFU1RfT1ZFUkxPQURF
RF9DT05TVFJVQ1RPUlNfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xh
c3MpLCAgV0VCS0lUX1RZUEVfRE9NX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlMpKQorI2Rl
ZmluZSBXRUJLSVRfRE9NX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlNfR0VUX0NMQVNTKG9i
aikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfRE9NX1RF
U1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlMsIFdlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzQ2xhc3MpKQorCitzdHJ1Y3QgX1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzIHsKKyAgICBXZWJLaXRET01PYmplY3QgcGFyZW50X2luc3RhbmNlOworfTsKKworc3RydWN0
IF9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NsYXNzIHsKKyAgICBXZWJLaXRE
T01PYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJr
aXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfZ2V0X3R5cGUgKHZvaWQpOworCitH
X0VORF9ERUNMUworCisjZW5kaWYgLyogV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTJkNWZlNTUxOWVk
NTdmNzg1N2JiNDU4NDM0MjI2NjBmMmZiODZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNQcml2YXRlLmgKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAgICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBm
aWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1P
RElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisqLworCisjaWZuZGVmIFdlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJp
dmF0ZV9oCisjZGVmaW5lIFdlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJpdmF0
ZV9oCisKKyNpbmNsdWRlICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIgorI2luY2x1ZGUg
PGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0L1dlYktpdERPTU9iamVjdC5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKK1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB3
cmFwVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMqKTsKK1dlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBjb3JlKFdl
YktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiByZXF1ZXN0KTsKK1dlYktpdERPTVRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBraXQoV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMqIG5vZGUpOworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvKiBXZWJL
aXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyZDJlYTg1MDBm
MGQxZmM0MmMwODE5NTRkNjhmMjAwOGFjYjQ2ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy5jcHAKQEAgLTAsMCArMSwxOTggQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBn
ZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
aCIKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcu
aCIKKyNpbmNsdWRlICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIgorI2luY2x1ZGUgPHJ1
bnRpbWUvRXJyb3IuaD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLyogSGFzaCB0YWJsZSBmb3IgY29uc3Ry
dWN0b3IgKi8KKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7ICJjb25zdHJ1Y3RvciIsIERvbnRF
bnVtIHwgUmVhZE9ubHksIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKSwgKGludHB0
cl90KTAsIE5vSW50cmluc2ljIH0sCisgICAgeyAwLCAwLCAwLCAwLCBOb0ludHJpbnNpYyB9Cit9
OworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNU
YWJsZSA9IHsgMiwgMSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1RhYmxlVmFsdWVzLCAw
IH07CisvKiBIYXNoIHRhYmxlIGZvciBjb25zdHJ1Y3RvciAqLworCitzdGF0aWMgY29uc3QgSGFz
aFRhYmxlVmFsdWUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yVGFibGVW
YWx1ZXNbXSA9Cit7CisgICAgeyAwLCAwLCAwLCAwLCBOb0ludHJpbnNpYyB9Cit9OworCitzdGF0
aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rv
clRhYmxlID0geyAxLCAwLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3JU
YWJsZVZhbHVlcywgMCB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnND
b25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
Q29uc3RydWN0b3JUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzQ29uc3RydWN0b3IpIH07CisKK0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNDb25zdHJ1Y3Rvcjo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAg
IDogRE9NQ29uc3RydWN0b3JPYmplY3Qoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCit7Cit9CisK
K3ZvaWQgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpmaW5pc2hDcmVh
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7
CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICBBU1NF
UlQoaW5oZXJpdHMoJnNfaW5mbykpOworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNQcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9u
dEVudW0pOworfQorCitib29sIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rv
cjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJu
IGdldFN0YXRpY1ZhbHVlU2xvdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0
b3IsIEpTRE9NV3JhcHBlcj4oZXhlYywgJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25z
dHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVj
dG9yKj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK2Jvb2wgSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIGdldFN0YXRp
Y1ZhbHVlRGVzY3JpcHRvcjxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3Is
IEpTRE9NV3JhcHBlcj4oZXhlYywgJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1
Y3RvclRhYmxlLCBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9y
Kj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKK30KKworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6
OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoRXhlY1N0YXRlKiBleGVjKQor
eworICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciogY2FzdGVkVGhp
cyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihleGVj
LT5jYWxsZWUoKSk7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
ZXhlYykpOworICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJlZlB0cjxU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gb2JqZWN0ID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM6OmNyZWF0ZShzdHJpbmcpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmpl
Y3QodG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0LmdldCgpKSkp
OworfQorCitDb25zdHJ1Y3RUeXBlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1
Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3RE
YXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7
Cit9CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFz
aFRhYmxlVmFsdWUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZVRhYmxlVmFs
dWVzW10gPQoreworICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQorfTsKKworc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlVGFi
bGUgPSB7IDEsIDAsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGVUYWJsZVZh
bHVlcywgMCB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQ
cm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBl
IiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGVU
YWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
UHJvdG90eXBlKSB9OworCitKU09iamVjdCogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1By
b3RvdHlwZTo6c2VsZihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCit7CisgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzPihleGVjLCBnbG9iYWxPYmplY3QpOworfQorCitjb25zdCBDbGFzc0luZm8gSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6c19pbmZvID0geyAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1RhYmxl
LCAwICwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKSB9
OworCitKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQYXNzUmVmUHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiBpbXBsKQorICAgIDog
SlNET01XcmFwcGVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQorICAgICwgbV9pbXBsKGltcGwu
bGVha1JlZigpKQoreworfQorCit2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmZp
bmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwor
fQorCitKU09iamVjdCogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlUHJvdG90
eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAg
ICByZXR1cm4gSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZTo6Y3JlYXRlKGV4
ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCks
IGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworfQorCit2
b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNl
bGwpCit7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdGhpc09iamVjdCA9IHN0
YXRpY19jYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihjZWxsKTsKKyAgICB0aGlz
T2JqZWN0LT5KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp+SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycygpOworfQorCitKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp+SlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycygpCit7CisgICAgcmVsZWFzZUltcGxJZk5vdE51bGwoKTsK
K30KKworYm9vbCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihj
ZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8p
OworICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycywgQmFzZT4oZXhlYywgJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUYWJsZSwgdGhp
c09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworYm9vbCBKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4ob2JqZWN0
KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwor
ICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycywgQmFzZT4oZXhlYywgJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUYWJsZSwg
dGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKK30KKworSlNWYWx1ZSBqc1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyogZG9tT2JqZWN0ID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMq
Pihhc09iamVjdChzbG90QmFzZSkpOworICAgIHJldHVybiBKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpnZXRDb25zdHJ1Y3RvcihleGVjLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKTsK
K30KKworSlNWYWx1ZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpnZXRDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAg
cmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25z
dHJ1Y3Rvcj4oZXhlYywganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7
Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc09ic2VydmFibGUoSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycyoganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycykKK3sKKyAgICBpZiAoanNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6Okhh
bmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGpzVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KGhhbmRsZS5n
ZXQoKS5hc0NlbGwoKSk7CisgICAgaWYgKCFpc09ic2VydmFibGUoanNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBVTlVTRURfUEFSQU0odmlz
aXRvcik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUs
IHZvaWQqIGNvbnRleHQpCit7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyoganNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBET01XcmFwcGVyV29ybGQqIHdv
cmxkID0gc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7CisgICAgdW5jYWNo
ZVdyYXBwZXIod29ybGQsIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMtPmltcGwoKSwganNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CisgICAganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy0+cmVsZWFzZUltcGwoKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzKiBpbXBsKQoreworICAgIHJldHVybiB3cmFwPEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM+KGV4ZWMsIGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisKK1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKiB0b1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKEpTQzo6SlNWYWx1
ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUuaW5oZXJpdHMoJkpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM6OnNfaW5mbykgPyBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cyo+KGFzT2JqZWN0KHZhbHVlKSktPmltcGwoKSA6IDA7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2YmU5Yzg5NmJiMzc5OGM3
NWM0ZjNkOTJjNDUyZWM1ZmJlMWI2MGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5o
CkBAIC0wLDAgKzEsMTQzIEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJL
aXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVk
IGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc19oCisjZGVmaW5lIEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNfaAorCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvT2Jq
ZWN0UHJvdG90eXBlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycyA6IHB1YmxpYyBKU0RPTVdyYXBwZXIgeworcHVibGljOgorICAg
IHR5cGVkZWYgSlNET01XcmFwcGVyIEJhc2U7CisgICAgc3RhdGljIEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzPiBpbXBsKQorICAgIHsKKyAgICAgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyog
cHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzPihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5oZWFwKSkgSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyhzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgaW1wbCk7CisgICAgICAg
IHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkpOworICAgICAg
ICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQ
cm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3Rh
dGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworICAgIH5KU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzKCk7CisgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKKwor
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6
OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5m
byhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CisgICAgfQorCisg
ICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogaW1w
bCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbDsgfQorICAgIHZvaWQgcmVsZWFzZUltcGwoKSB7IG1f
aW1wbC0+ZGVyZWYoKTsgbV9pbXBsID0gMDsgfQorCisgICAgdm9pZCByZWxlYXNlSW1wbElmTm90
TnVsbCgpIHsgaWYgKG1faW1wbCkgeyBtX2ltcGwtPmRlcmVmKCk7IG1faW1wbCA9IDA7IH0gfQor
Citwcml2YXRlOgorICAgIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBtX2ltcGw7Citwcm90
ZWN0ZWQ6CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhKU0M6OlN0cnVjdHVyZSos
IEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cz4pOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpKU0dsb2JhbERhdGEmKTsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhF
dmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworfTsKKworY2xh
c3MgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVyIDogcHVibGljIEpTQzo6V2Vha0hh
bmRsZU93bmVyIHsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRv
ciYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
LCB2b2lkKiBjb250ZXh0KTsKK307CisKK2lubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3Jh
cHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCosIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKikK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNP
d25lciwganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVyLCAoKSk7CisgICAgcmV0dXJu
ICZqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzT3duZXI7Cit9CisKK2lubGluZSB2b2lkKiB3
cmFwcGVyQ29udGV4dChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyopCit7CisgICAgcmV0dXJuIHdvcmxkOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMqKTsKK1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB0b1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzKEpTQzo6SlNWYWx1ZSk7CisKK2NsYXNzIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoK
KyAgICB0eXBlZGVmIEpTQzo6SlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBKU0M6
OkpTT2JqZWN0KiBzZWxmKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwor
ICAgIHN0YXRpYyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKiBjcmVhdGUo
SlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlND
OjphbGxvY2F0ZUNlbGw8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZT4oZ2xv
YmFsRGF0YS5oZWFwKSkgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZShnbG9i
YWxEYXRhLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3Jl
YXRpb24oZ2xvYmFsRGF0YSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgc3Rh
dGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksICZzX2luZm8pOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgOiBKU0M6
OkpTTm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKSB7IH0KK3Byb3RlY3RlZDoK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFnczsKK307CisKK2NsYXNzIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1
Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1Y3Rvck9iamVjdCB7Citwcml2YXRlOgorICAgIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9N
R2xvYmFsT2JqZWN0Kik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OkV4ZWNTdGF0ZSos
IEpTRE9NR2xvYmFsT2JqZWN0Kik7CisKK3B1YmxpYzoKKyAgICB0eXBlZGVmIERPTUNvbnN0cnVj
dG9yT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnND
b25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsKKyAgICAg
ICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKiBwdHIgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25z
dHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25z
dHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3Jl
YXRpb24oZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisK
KyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsK
KyAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOworICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxE
YXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CisgICAgfQorcHJvdGVjdGVkOgorICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90IHwgSlNDOjpJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBET01Db25zdHJ1Y3Rv
ck9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKEpTQzo6
RXhlY1N0YXRlKik7CisgICAgc3RhdGljIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3RE
YXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3REYXRhJik7Cit9OworCisvLyBBdHRyaWJ1
dGVzCisKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0
b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxNWI3YmM1N2RhN2IxNmRmNzM0
ZmJhYTY3NWRmNjJiN2M4MWJiMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5o
CkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgorCisjaWYgV0VCS0lUX1ZFUlNJT05f
TUFYX0FMTE9XRUQgPj0gV0VCS0lUX1ZFUlNJT05fTEFURVNUCisKK0BpbnRlcmZhY2UgRE9NVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgOiBET01PYmplY3QKK0BlbmQKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQwMjliYjJiZjdlYTgwYTYxNDU1OTQ5NGNmNmM3OGMxZDU4MWQyYzcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5tbQpAQCAtMCwwICsxLDg3IEBACisvKgorICogVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICogVGhpcyBmaWxl
IGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElG
WSEKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJET01JbnRlcm5hbC5oIgor
CisjaW1wb3J0ICJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIgorCisjaW1wb3J0ICJE
T01CbG9iSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTUNTU1J1bGVJbnRlcm5hbC5oIgorI2ltcG9y
dCAiRE9NQ1NTVmFsdWVJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NRXZlbnRJbnRlcm5hbC5oIgor
I2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCisjaW1wb3J0ICJET01TdHlsZVNoZWV0SW50ZXJu
YWwuaCIKKyNpbXBvcnQgIkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzSW50ZXJuYWwuaCIK
KyNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCisjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVj
U3RhdGUuaCIKKyNpbXBvcnQgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgiCisjaW1wb3J0
ICJUaHJlYWRDaGVjay5oIgorI2ltcG9ydCAiV2ViQ29yZU9iakNFeHRyYXMuaCIKKyNpbXBvcnQg
IldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKKyNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKworI2Rl
ZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMqPihfaW50ZXJuYWwpCisKK0BpbXBsZW1lbnRhdGlvbiBET01UZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycworCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBpZiAoV2ViQ29yZU9iakNTY2hl
ZHVsZURlYWxsb2NhdGVPbk1haW5UaHJlYWQoW0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
IGNsYXNzXSwgc2VsZikpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChfaW50ZXJuYWwpCisg
ICAgICAgIElNUEwtPmRlcmVmKCk7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lk
KWZpbmFsaXplCit7CisgICAgaWYgKF9pbnRlcm5hbCkKKyAgICAgICAgSU1QTC0+ZGVyZWYoKTsK
KyAgICBbc3VwZXIgZmluYWxpemVdOworfQorCitAZW5kCisKK1dlYkNvcmU6OlRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKiBjb3JlKERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzICp3cmFw
cGVyKQoreworICAgIHJldHVybiB3cmFwcGVyID8gcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KHdyYXBwZXItPl9pbnRlcm5hbCkgOiAwOworfQor
CitET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyAqa2l0KFdlYkNvcmU6OlRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKiB2YWx1ZSkKK3sKKyAgICB7IERPTV9BU1NFUlRfTUFJTl9USFJFQUQo
KTsgV2ViQ29yZVRocmVhZFZpb2xhdGlvbkNoZWNrUm91bmRPbmUoKTsgfTsKKyAgICBpZiAoIXZh
bHVlKQorICAgICAgICByZXR1cm4gbmlsOworICAgIGlmIChET01UZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQorICAgICAgICByZXR1cm4g
W1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIERPTVRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzICp3cmFwcGVyID0gW1tET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyBhbGxv
Y10gX2luaXRdOworICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9N
T2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CisgICAgdmFsdWUtPnJlZigpOworICAgIGFkZERPTVdy
YXBwZXIod3JhcHBlciwgdmFsdWUpOworICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0ludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c0ludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGZlY2M4MWMzOTZiZDBhODI1ZGE3YWJiMDExZjJjNTY3
MmE2YjRlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzSW50ZXJuYWwuaApAQCAt
MCwwICsxLDM4IEBACisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVu
IHNvdXJjZSBwcm9qZWN0LgorICogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5l
cmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8V2ViQ29y
ZS9ET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oPgorCisjaWYgV0VCS0lUX1ZFUlNJT05f
TUFYX0FMTE9XRUQgPj0gV0VCS0lUX1ZFUlNJT05fTEFURVNUCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKyAgICBjbGFzcyBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczsKK30KKworV2ViQ29yZTo6
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGNvcmUoRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMgKik7CitET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyAqa2l0KFdlYkNvcmU6OlRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKik7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmEzODZmNWI5N2JkZDIyNmMxOTExMTUwOTFi
MDBiOTBkMzkyN2RkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5pZGwKQEAgLTAsMCArMSwz
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXN0ckFyZywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVzdHJBcmcsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworWworICAgIENvbnN0cnVjdG9yKGluIEFycmF5QnVmZmVyIGFycmF5QnVm
ZmVyKSwKKyAgICBDb25zdHJ1Y3RvcihpbiBBcnJheUJ1ZmZlclZpZXcgYXJyYXlCdWZmZXJWaWV3
KSwKKyAgICBDb25zdHJ1Y3RvcihpbiBCbG9iIGJsb2IpLAorICAgIENvbnN0cnVjdG9yKGluIERP
TVN0cmluZyBzdHJpbmcpLAorXSBpbnRlcmZhY2UgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMg
eworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmlk
bAppbmRleCBjNmQ0OTNkZWZmNDBjOTI0ODM5ZGM0NWU5ZWU5ZmIzNTI2MGVlMTM2Li42ODdlYWM1
NDc3MTM1NmY2MDEyZWU3Nzc5OGMyMmNjMDAwMzg3NjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaWRsCkBAIC0yNyw3ICsyNyw2IEBACiAvLyBj
aGFuZ2VzIGluIGl0cyBvdXB1dC4KIFsKICAgICBDb25kaXRpb25hbD1Db25kaXRpb24xfENvbmRp
dGlvbjIsCi0gICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIGhlbGxvLCBpbiBTZXJpYWxpemVk
U2NyaXB0VmFsdWUgdmFsdWUpLAogICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyBoZWxsbywg
aW4gW1RyYW5zZmVyTGlzdD10cmFuc2Zlckxpc3RdIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBkYXRh
LCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBBcnJheSB0cmFuc2Zlckxpc3QpLAog
XSBpbnRlcmZhY2UgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSB7CiAgICAgYXR0
cmlidXRlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjU0NzZjMWQxNDEzODg3ZTRj
YzIxYmFjZWQ3NWE0MDU5OGQyYWNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3Bw
CkBAIC0wLDAgKzEsMjEyIEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJL
aXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVk
IGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMw
LAorICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIKKworI2luY2x1
ZGUgIkJpbmRpbmdTdGF0ZS5oIgorI2luY2x1ZGUgIkNvbnRleHRGZWF0dXJlcy5oIgorI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJWOEFycmF5QnVmZmVyLmgiCisjaW5jbHVk
ZSAiVjhBcnJheUJ1ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRl
ICJWOEJsb2IuaCIKKyNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKKyNpbmNsdWRlIDx3dGYvQXJy
YXlCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVkZSA8
d3RmL1VudXNlZFBhcmFtLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV3JhcHBlclR5cGVJ
bmZvIFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmluZm8gPSB7IFY4VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6OkdldFRlbXBsYXRlLCBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
OjpkZXJlZk9iamVjdCwgMCwgMCwgVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6aW5zdGFs
bFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3Rv
dHlwZSB9OworCituYW1lc3BhY2UgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNWOEludGVybmFs
IHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgVjhfVVNFKFQpIHsgfQorCit9IC8vIG5h
bWVzcGFjZSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Y4SW50ZXJuYWwKKwordjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yMUNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00u
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuQ29uc3RydWN0b3IxIik7CisgICAgCisgICAgRVhD
RVBUSU9OX0JMT0NLKEFycmF5QnVmZmVyKiwgYXJyYXlCdWZmZXIsIFY4QXJyYXlCdWZmZXI6Okhh
c0luc3RhbmNlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVm
aW5lZCkpID8gVjhBcnJheUJ1ZmZlcjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6
Q2FzdChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQp
KSkgOiAwKTsKKworICAgIFJlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbCA9
IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoYXJyYXlCdWZmZXIpOworICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CisKKyAgICBWOERP
TVdyYXBwZXI6OnNldERPTVdyYXBwZXIod3JhcHBlciwgJmluZm8sIGltcGwuZ2V0KCkpOworICAg
IFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltcGwucmVsZWFzZSgpLCB3
cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHdyYXBwZXI7Cit9CisKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1
Y3RvcjJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFU
UygiRE9NLlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLkNvbnN0cnVjdG9yMiIpOworICAgIAor
ICAgIEVYQ0VQVElPTl9CTE9DSyhBcnJheUJ1ZmZlclZpZXcqLCBhcnJheUJ1ZmZlclZpZXcsIFY4
QXJyYXlCdWZmZXJWaWV3OjpIYXNJbnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdz
LCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSA/IFY4QXJyYXlCdWZmZXJWaWV3Ojp0b05hdGl2ZSh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3Ms
IDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKSA6IDApOworCisgICAgUmVmUHRyPFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzPiBpbXBsID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0
ZShhcnJheUJ1ZmZlclZpZXcpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9
IGFyZ3MuSG9sZGVyKCk7CisKKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIod3JhcHBl
ciwgJmluZm8sIGltcGwuZ2V0KCkpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9y
RE9NT2JqZWN0KGltcGwucmVsZWFzZSgpLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7Cisg
ICAgcmV0dXJuIHdyYXBwZXI7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLkNvbnN0cnVjdG9yMyIpOworICAgIAorICAgIEVYQ0VQVElPTl9CTE9DSyhCbG9iKiwgYmxv
YiwgVjhCbG9iOjpIYXNJbnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBE
ZWZhdWx0SXNVbmRlZmluZWQpKSA/IFY4QmxvYjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Pjo6Q2FzdChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRl
ZmluZWQpKSkgOiAwKTsKKworICAgIFJlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4g
aW1wbCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoYmxvYik7CisgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKKworICAgIFY4RE9N
V3JhcHBlcjo6c2V0RE9NV3JhcHBlcih3cmFwcGVyLCAmaW5mbywgaW1wbC5nZXQoKSk7CisgICAg
VjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoaW1wbC5yZWxlYXNlKCksIHdy
YXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gd3JhcHBlcjsKK30KKwordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVj
dG9yNENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRT
KCJET00uVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuQ29uc3RydWN0b3I0Iik7CisgICAgCisg
ICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjw+LCBz
dHJpbmcsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5l
ZCkpOworCisgICAgUmVmUHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiBpbXBsID0gVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZShzdHJpbmcpOworICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CisKKyAgICBWOERPTVdyYXBwZXI6
OnNldERPTVdyYXBwZXIod3JhcHBlciwgJmluZm8sIGltcGwuZ2V0KCkpOworICAgIFY4RE9NV3Jh
cHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltcGwucmVsZWFzZSgpLCB3cmFwcGVyLCBh
cmdzLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHdyYXBwZXI7Cit9CisKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvckNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuQ29uc3RydWN0b3IiKTsKKyAgICBpZiAoIWFyZ3MuSXND
b25zdHJ1Y3RDYWxsKCkpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigiRE9NIG9iamVj
dCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIik7CisKKyAgICBp
ZiAoQ29uc3RydWN0b3JNb2RlOjpjdXJyZW50KCkgPT0gQ29uc3RydWN0b3JNb2RlOjpXcmFwRXhp
c3RpbmdPYmplY3QpCisgICAgICAgIHJldHVybiBhcmdzLkhvbGRlcigpOworCisgICAgaWYgKChh
cmdzLkxlbmd0aCgpID09IDEgJiYgKFY4QXJyYXlCdWZmZXI6Okhhc0luc3RhbmNlKGFyZ3NbMF0p
KSkpCisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjFDYWxsYmFjayhhcmdzKTsKKyAgICBpZiAo
KGFyZ3MuTGVuZ3RoKCkgPT0gMSAmJiAoVjhBcnJheUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKGFy
Z3NbMF0pKSkpCisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjJDYWxsYmFjayhhcmdzKTsKKyAg
ICBpZiAoKGFyZ3MuTGVuZ3RoKCkgPT0gMSAmJiAoVjhCbG9iOjpIYXNJbnN0YW5jZShhcmdzWzBd
KSkpKQorICAgICAgICByZXR1cm4gY29uc3RydWN0b3IzQ2FsbGJhY2soYXJncyk7CisgICAgaWYg
KGFyZ3MuTGVuZ3RoKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yNENhbGxiYWNr
KGFyZ3MpOworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1RlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBk
ZXNjKQoreworICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CisKKyAgICB2ODo6TG9jYWw8
djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsKKyAgICBkZWZhdWx0U2lnbmF0dXJlID0g
VjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMiLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwg
VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6aW50ZXJuYWxGaWVsZENvdW50LAorICAgICAg
ICAwLCAwLAorICAgICAgICAwLCAwKTsKKyAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVy
ZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCisgICAgZGVzYy0+U2V0
Q2FsbEhhbmRsZXIoVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3JDYWxs
YmFjayk7CisgICAgCisKKyAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKKyAgICBkZXNj
LT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ0b1N0cmluZyIpLCBWOFBlcklzb2xhdGVEYXRh
OjpjdXJyZW50KCktPnRvU3RyaW5nVGVtcGxhdGUoKSk7CisgICAgcmV0dXJuIGRlc2M7Cit9CisK
K3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzOjpHZXRSYXdUZW1wbGF0ZSgpCit7CisgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0
YSA9IFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpU
ZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5k
KCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkp
CisgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOworCisgICAgdjg6OkhhbmRsZVNjb3BlIGhh
bmRsZVNjb3BlOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1w
bCA9IGNyZWF0ZVJhd1RlbXBsYXRlKCk7CisgICAgZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5hZGQo
JmluZm8sIHRlbXBsKTsKKyAgICByZXR1cm4gdGVtcGw7Cit9CisKK3Y4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpHZXRUZW1w
bGF0ZSgpCit7CisgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6
OmN1cnJlbnQoKTsKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3Ig
cmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0
ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgICAgIHJldHVybiByZXN1bHQtPnZh
bHVlOworCisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9CisgICAgICAgIENvbmZpZ3VyZVY4VGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUZW1wbGF0ZShHZXRSYXdUZW1wbGF0ZSgpKTsKKyAgICBk
YXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgIHJldHVybiB0ZW1wbDsK
K30KKworYm9vbCBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpIYXNJbnN0YW5jZSh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCit7CisgICAgcmV0dXJuIEdldFJhd1RlbXBsYXRlKCkt
Pkhhc0luc3RhbmNlKHZhbHVlKTsKK30KKworCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OndyYXBTbG93KFBhc3NSZWZQdHI8VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM+IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHdyYXBwZXI7CisgICAgLy8gUGxlYXNlIGRvbid0IGFkZCBhbnkgbW9yZSB1c2VzIG9mIHRoaXMg
dmFyaWFibGUuCisgICAgRG9jdW1lbnQqIGRlcHJlY2F0ZWREb2N1bWVudCA9IDA7CisgICAgVU5V
U0VEX1BBUkFNKGRlcHJlY2F0ZWREb2N1bWVudCk7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250
ZXh0PiBjb250ZXh0OworICAgIGlmICghY3JlYXRpb25Db250ZXh0LklzRW1wdHkoKSAmJiBjcmVh
dGlvbkNvbnRleHQtPkNyZWF0aW9uQ29udGV4dCgpICE9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50
KCkpIHsKKyAgICAgICAgLy8gRm9yIHBlcmZvcm1hbmNlLCB3ZSBlbnRlciB0aGUgY29udGV4dCBv
bmx5IGlmIHRoZSBjdXJyZW50bHkgcnVubmluZyBjb250ZXh0CisgICAgICAgIC8vIGlzIGRpZmZl
cmVudCBmcm9tIHRoZSBjb250ZXh0IHRoYXQgd2UgYXJlIGFib3V0IHRvIGVudGVyLgorICAgICAg
ICBjb250ZXh0ID0gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KGNyZWF0aW9uQ29udGV4dC0+
Q3JlYXRpb25Db250ZXh0KCkpOworICAgICAgICBBU1NFUlQoIWNvbnRleHQuSXNFbXB0eSgpKTsK
KyAgICAgICAgY29udGV4dC0+RW50ZXIoKTsKKyAgICB9CisKKyAgICB3cmFwcGVyID0gVjhET01X
cmFwcGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0KGRlcHJlY2F0ZWREb2N1bWVudCwgJmluZm8sIGlt
cGwuZ2V0KCkpOworCisgICAgaWYgKCFjb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgY29udGV4
dC0+RXhpdCgpOworCisgICAgaWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKKyAgICAg
ICAgcmV0dXJuIHdyYXBwZXI7CisKKyAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3Jh
cHBlciwgaW1wbC5nZXQoKSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBl
ckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltcGwsIHdy
YXBwZXIsIGlzb2xhdGUpOworICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCisgICAgICAg
IHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CisgICAgcmV0dXJuIHdyYXBwZXI7Cit9
CisKK3ZvaWQgVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6ZGVyZWZPYmplY3Qodm9pZCog
b2JqZWN0KQoreworICAgIHN0YXRpY19jYXN0PFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4o
b2JqZWN0KS0+ZGVyZWYoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTNlYzMwMDlhOTA3
YjNjOGU5OGNmODJhODllNWFlMmQyYzcxZTExNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
V2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVy
YXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRl
IDMzMCwKKyAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyovCisKKyNpZm5kZWYgVjhU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc19oCisjZGVmaW5lIFY4VGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNfaAorCisjaW5jbHVkZSAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIKKyNp
bmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKKyNpbmNsdWRl
ICJXcmFwcGVyVHlwZUluZm8uaCIKKyNpbmNsdWRlIDx2OC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgeworcHVibGljOgor
ICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7CisgICAg
c3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+KTsKKyAgICBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKCk7
CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1w
bGF0ZSgpOworICAgIHN0YXRpYyBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdG9OYXRpdmUo
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KG9iamVjdC0+R2V0UG9p
bnRlckZyb21JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4KSk7CisgICAgfQor
ICAgIGlubGluZSBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQg
PSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiA9IDApOworICAgIHN0YXRp
YyB2b2lkIGRlcmVmT2JqZWN0KHZvaWQqKTsKKyAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIGlu
Zm87CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvckNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKKyAgICBzdGF0aWMgY29uc3QgaW50IGludGVybmFsRmll
bGRDb3VudCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOworICAgIHN0
YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+LCBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyopIHsgfQorICAgIHN0YXRpYyB2b2lkIGlu
c3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
KSB7IH0KK3ByaXZhdGU6CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcFNs
b3coUGFzc1JlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4sIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3IxQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYpOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3IyQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gY29uc3RydWN0b3IzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOworICAgIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3I0Q2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYpOworfTsKKwordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzOjp3cmFwKFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBpbXBsLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUp
Cit7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGdldERPTU9iamVj
dE1hcChpc29sYXRlKS5nZXQoaW1wbCk7CisgICAgICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkp
CisgICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gVjhUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6d3JhcFNsb3coaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsK
K30KKworaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQorewor
ICAgIGlmICghaW1wbCkKKyAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsK
KyAgICByZXR1cm4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6d3JhcChpbXBsLCBjcmVh
dGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4KFBhc3NSZWZQdHI8IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID4gaW1wbCwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKK3sKKyAgICByZXR1cm4gdG9WOChpbXBsLmdl
dCgpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCit9CisKKyNlbmRpZiAvLyBWOFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwCmluZGV4IGE1ZGU5YTQyM2Fl
YjUxZDZhNGFhOTQyMDQyODcxZmI1ZThmMjc5MjYuLjljNGZjN2ZhMTYyMTg2OWY2MWY4ZWM1YjBh
MDM4MjljOWVmOGFmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcApAQCAtNTEsNjQgKzUxLDYgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJTb2NrZXQ6OmNv
bnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNf
U1RBVFMoIkRPTS5XZWJTb2NrZXQuQ29uc3RydWN0b3IiKTsKLQotICAgIGlmICghYXJncy5Jc0Nv
bnN0cnVjdENhbGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCJET00gb2JqZWN0
IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iLCBhcmdzLkdldElz
b2xhdGUoKSk7Ci0KLSAgICBpZiAoQ29uc3RydWN0b3JNb2RlOjpjdXJyZW50KCkgPT0gQ29uc3Ry
dWN0b3JNb2RlOjpXcmFwRXhpc3RpbmdPYmplY3QpCi0gICAgICAgIHJldHVybiBhcmdzLkhvbGRl
cigpOwotCi0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPT0gMCkKLSAgICAgICAgcmV0dXJuIHRocm93
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwotCi0gICAgdjg6OlRy
eUNhdGNoIHRyeUNhdGNoOwotICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gdXJsc3RyaW5nID0g
YXJnc1swXS0+VG9TdHJpbmcoKTsKLSAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKHRyeUNhdGNoLkV4Y2VwdGlvbigpLCBhcmdzLkdldElzb2xh
dGUoKSk7Ci0gICAgaWYgKHVybHN0cmluZy5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKFN5bnRheEVycm9yLCAiRW1wdHkgVVJMIiwgYXJncy5HZXRJc29sYXRlKCkpOwotCi0g
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKLSAgICBjb25zdCBLVVJMJiB1cmwgPSBjb250ZXh0LT5jb21wbGV0ZVVSTCh0b1dl
YkNvcmVTdHJpbmcodXJsc3RyaW5nKSk7Ci0KLSAgICBSZWZQdHI8V2ViU29ja2V0PiB3ZWJTb2Nr
ZXQgPSBXZWJTb2NrZXQ6OmNyZWF0ZShjb250ZXh0KTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLQotICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKLSAgICAgICAgd2ViU29ja2V0LT5jb25u
ZWN0KHVybCwgZWMpOwotICAgIGVsc2UgewotICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBw
cm90b2NvbHNWYWx1ZSA9IGFyZ3NbMV07Ci0gICAgICAgIGlmIChwcm90b2NvbHNWYWx1ZS0+SXNB
cnJheSgpKSB7Ci0gICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBwcm90b2NvbHM7Ci0gICAgICAg
ICAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBwcm90b2NvbHNBcnJheSA9IHY4OjpMb2NhbDx2ODo6
QXJyYXk+OjpDYXN0KHByb3RvY29sc1ZhbHVlKTsKLSAgICAgICAgICAgIGZvciAodWludDMyX3Qg
aSA9IDA7IGkgPCBwcm90b2NvbHNBcnJheS0+TGVuZ3RoKCk7ICsraSkgewotICAgICAgICAgICAg
ICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaFByb3RvY29sOwotICAgICAgICAgICAgICAgIHY4OjpI
YW5kbGU8djg6OlN0cmluZz4gcHJvdG9jb2wgPSBwcm90b2NvbHNBcnJheS0+R2V0KHY4OjpJbnQz
Mjo6TmV3KGkpKS0+VG9TdHJpbmcoKTsKLSAgICAgICAgICAgICAgICBpZiAodHJ5Q2F0Y2hQcm90
b2NvbC5IYXNDYXVnaHQoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
dHJ5Q2F0Y2hQcm90b2NvbC5FeGNlcHRpb24oKSwgYXJncy5HZXRJc29sYXRlKCkpOwotICAgICAg
ICAgICAgICAgIHByb3RvY29scy5hcHBlbmQodG9XZWJDb3JlU3RyaW5nKHByb3RvY29sKSk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB3ZWJTb2NrZXQtPmNvbm5lY3QodXJsLCBwcm90b2Nv
bHMsIGVjKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHY4OjpUcnlDYXRjaCB0cnlD
YXRjaFByb3RvY29sOwotICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBwcm90b2Nv
bCA9IHByb3RvY29sc1ZhbHVlLT5Ub1N0cmluZygpOwotICAgICAgICAgICAgaWYgKHRyeUNhdGNo
UHJvdG9jb2wuSGFzQ2F1Z2h0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
dHJ5Q2F0Y2hQcm90b2NvbC5FeGNlcHRpb24oKSwgYXJncy5HZXRJc29sYXRlKCkpOwotICAgICAg
ICAgICAgd2ViU29ja2V0LT5jb25uZWN0KHVybCwgdG9XZWJDb3JlU3RyaW5nKHByb3RvY29sKSwg
ZWMpOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIHNldERP
TUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwotCi0gICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldERP
TVdyYXBwZXIod3JhcHBlciwgJmluZm8sIHdlYlNvY2tldC5nZXQoKSk7Ci0gICAgVjhET01XcmFw
cGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3Qod2ViU29ja2V0LnJlbGVhc2UoKSwgd3JhcHBl
cik7Ci0gICAgcmV0dXJuIHdyYXBwZXI7Ci19Ci0KIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdl
YlNvY2tldDo6c2VuZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAg
SU5DX1NUQVRTKCJET00uV2ViU29ja2V0LnNlbmQoKSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY5MmJkMDgyMTkwNDBl
NzUyZGQ1MGM5NWM1MGViZGU1MzIxYmE2Y2IuLmMyY2VhYzA0MDFjYjA5YzA5ZjQ4MGUzMjJiNGQy
NmVlYmE1ZTVhYWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0xMS0wMSAgVG9tbXkgV2lk
ZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFY4IGN1
c3RvbSBjb2RlIGZvciBXZWJTb2NrZXRzIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA4MDEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0ZXN0IGZvciBudWxsIGFyZ3VtZW50
IHRvIFdlYlNvY2tldCh1cmwpLgorCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS91cmwtcGFyc2luZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtcGFyc2luZy5odG1sOgorICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtLXdpbi93ZWJzb2NrZXQvdGVzdHMvdXJsLXBhcnNpbmctZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hp
eGllNzYvdXJsLXBhcnNpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXBhcnNpbmctZXhwZWN0ZWQu
dHh0OgorCiAyMDEyLTEwLTMxICBPdHRvIERlcmVrIENoZXVuZyAgPG90Y2hldW5nQHJpbS5jb20+
CiAKICAgICAgICAgW0JsYWNrQmVycnldIEFkZGluZyB3aW5kb3cuZXh0ZXJuYWwgdG8gb3VyIHBv
cnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvdXJsLXBhcnNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS91cmwtcGFyc2luZy1leHBlY3RlZC50eHQKaW5kZXggOWQwYzUxODli
MDRjMjVmYWU0NTBmZmUzZjA3MDkyYTU5NjFiYjRiMS4uZGNjNzQ4YzVjNDBlYmJmYmMxZDc1MGE2
YWQ1Y2NjZGI0NjdhYjMwZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS91cmwtcGFyc2luZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtcGFyc2luZy1leHBlY3RlZC50
eHQKQEAgLTEsMyArMSw0IEBACitDT05TT0xFIE1FU1NBR0U6IFdyb25nIHVybCBzY2hlbWUgZm9y
IFdlYlNvY2tldCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbnVs
bAogQ09OU09MRSBNRVNTQUdFOiBJbnZhbGlkIHVybCBmb3IgV2ViU29ja2V0IHdzOi8vamF2YXNj
cmlwdDphCiBDT05TT0xFIE1FU1NBR0U6IEludmFsaWQgdXJsIGZvciBXZWJTb2NrZXQgL2FwcGxl
dAogQ09OU09MRSBNRVNTQUdFOiBXcm9uZyB1cmwgc2NoZW1lIGZvciBXZWJTb2NrZXQgamF2YXNj
cmlwdDphCkBAIC05LDYgKzEwLDcgQEAgVGVzdCBXZWJTb2NrZXQgVVJMIHBhcnNpbmcuCiBPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIFBBU1MgbmV3IFdlYlNvY2tldCgpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgorUEFTUyBuZXcgV2ViU29ja2V0
KG51bGwpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAx
Mi4KIFBBU1MgbmV3IFdlYlNvY2tldCgid3M6Ly9qYXZhc2NyaXB0OmEiKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCiBQQVNTIG5ldyBXZWJTb2Nr
ZXQoIi9hcHBsZXQiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNl
cHRpb24gMTIuCiBQQVNTIG5ldyBXZWJTb2NrZXQoImphdmFzY3JpcHQ6YSIpIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXBhcnNpbmcuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXBhcnNp
bmcuaHRtbAppbmRleCA3M2QzNjhiZGM3MjhiNzUyODI5MzY5OTBhZDZkZjg1NWRjNTk1MjA5Li40
NDEzMmY3MjdlZDMyYTgzOGI0NTM3OGEzOGZhN2JkNjY5ZDY1NGI2IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC1wYXJzaW5nLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtcGFy
c2luZy5odG1sCkBAIC0xMiw2ICsxMiw5IEBAIGRlc2NyaXB0aW9uKCJUZXN0IFdlYlNvY2tldCBV
UkwgcGFyc2luZy4iKTsKIC8vIE5vdCBlbm91Z2ggYXJndW1lbnRzLgogc2hvdWxkVGhyb3coJ25l
dyBXZWJTb2NrZXQoKScpOwogCisvLyBOdWxsIFVSTAorc2hvdWxkVGhyb3coJ25ldyBXZWJTb2Nr
ZXQobnVsbCknKTsKKwogLy8gSW52YWxpZCB1cmwgd2lsbCBmYWlsIHRvIGJlIHBhcnNlZC4KIHNo
b3VsZFRocm93KCduZXcgV2ViU29ja2V0KCJ3czovL2phdmFzY3JpcHQ6YSIpJyk7CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi93ZWJzb2NrZXQvdGVzdHMv
dXJsLXBhcnNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0t
d2luL3dlYnNvY2tldC90ZXN0cy91cmwtcGFyc2luZy1leHBlY3RlZC50eHQKaW5kZXggODg3NWVk
YjM5OWU0MTRlMGRiN2I4NzkwOTE2YmRmOWUwYjIzMmVjZi4uMWU5NWU0NGUzYjg2NDAwMWNhYjQw
MTM4YmM4MmZhZTY4MjI1MDYzZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0td2luL3dlYnNvY2tldC90ZXN0cy91cmwtcGFyc2luZy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL3dlYnNvY2tldC90ZXN0cy91cmwtcGFy
c2luZy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw0IEBACitDT05TT0xFIE1FU1NBR0U6IFdyb25n
IHVybCBzY2hlbWUgZm9yIFdlYlNvY2tldCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvbnVsbAogQ09OU09MRSBNRVNTQUdFOiBJbnZhbGlkIHVybCBmb3IgV2ViU29j
a2V0IHdzOi8vamF2YXNjcmlwdDphLwogQ09OU09MRSBNRVNTQUdFOiBXcm9uZyB1cmwgc2NoZW1l
IGZvciBXZWJTb2NrZXQgaHR0cDovLzEyNy4wLjAuMTo4ODgwL2FwcGxldAogQ09OU09MRSBNRVNT
QUdFOiBXcm9uZyB1cmwgc2NoZW1lIGZvciBXZWJTb2NrZXQgamF2YXNjcmlwdDphCkBAIC04LDYg
KzksNyBAQCBUZXN0IFdlYlNvY2tldCBVUkwgcGFyc2luZy4KIAogT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgogCitQQVNTIG5ldyBXZWJTb2NrZXQobnVsbCkgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgogUEFTUyBuZXcgV2ViU29ja2V0KCJ3czov
L2phdmFzY3JpcHQ6YSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4
Y2VwdGlvbiAxMi4KIFBBU1MgbmV3IFdlYlNvY2tldCgiL2FwcGxldCIpIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KIFBBU1MgbmV3IFdlYlNvY2tl
dCgiamF2YXNjcmlwdDphIikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00g
RXhjZXB0aW9uIDEyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni91cmwtcGFyc2luZy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oaXhpZTc2L3VybC1wYXJzaW5nLWV4cGVjdGVkLnR4dAppbmRleCA5MTk1ZWFlMDNmMTAz
MzJlMjI3N2Y0MGYwZWQ4YjhiZDUyOGNlNGQ0Li5iNTBlMDRkZmQ4OTAzMWYxNWE5NTkzZmZjODQ5
NGQ0NjYyMzFkYmY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3VybC1wYXJzaW5nLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oaXhpZTc2L3VybC1wYXJzaW5nLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDQgQEAK
K0NPTlNPTEUgTUVTU0FHRTogV3JvbmcgdXJsIHNjaGVtZSBmb3IgV2ViU29ja2V0IGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC93ZWJzb2NrZXQvdGVzdHMvaHliaS9udWxsCiBDT05TT0xFIE1FU1NBR0U6
IEludmFsaWQgdXJsIGZvciBXZWJTb2NrZXQgd3M6Ly9qYXZhc2NyaXB0OmEvCiBDT05TT0xFIE1F
U1NBR0U6IFdyb25nIHVybCBzY2hlbWUgZm9yIFdlYlNvY2tldCBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvYXBwbGV0CiBDT05TT0xFIE1FU1NBR0U6IFdyb25nIHVybCBzY2hlbWUgZm9yIFdlYlNvY2tl
dCBqYXZhc2NyaXB0OmEKQEAgLTksNiArMTAsNyBAQCBUZXN0IFdlYlNvY2tldCBVUkwgcGFyc2lu
Zy4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogUEFTUyBuZXcgV2ViU29ja2V0KCkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCitQQVNTIG5ldyBX
ZWJTb2NrZXQobnVsbCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhj
ZXB0aW9uIDEyLgogUEFTUyBuZXcgV2ViU29ja2V0KCJ3czovL2phdmFzY3JpcHQ6YSIpIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KIFBBU1MgbmV3
IFdlYlNvY2tldCgiL2FwcGxldCIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjog
RE9NIEV4Y2VwdGlvbiAxMi4KIFBBU1MgbmV3IFdlYlNvY2tldCgiamF2YXNjcmlwdDphIikgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS91cmwtcGFyc2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC1wYXJzaW5nLWV4
cGVjdGVkLnR4dAppbmRleCBkYzI2ODMxZGJiMGQ0OGU2YWRmZGM2YzQyNWE0NjgyNzcxNDM2YmQ4
Li4zNTZlYjZlNGY4NTNlZTY4YzY5MjQ4ZGI0M2YxMmVjN2JiOGZjOTBlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3VybC1wYXJzaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC1wYXJzaW5nLWV4cGVj
dGVkLnR4dApAQCAtMSwzICsxLDQgQEAKK0NPTlNPTEUgTUVTU0FHRTogV3JvbmcgdXJsIHNjaGVt
ZSBmb3IgV2ViU29ja2V0IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC93ZWJzb2NrZXQvdGVzdHMvaHli
aS9udWxsCiBDT05TT0xFIE1FU1NBR0U6IEludmFsaWQgdXJsIGZvciBXZWJTb2NrZXQgd3M6Ly9q
YXZhc2NyaXB0OmEvCiBDT05TT0xFIE1FU1NBR0U6IFdyb25nIHVybCBzY2hlbWUgZm9yIFdlYlNv
Y2tldCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvYXBwbGV0CiBDT05TT0xFIE1FU1NBR0U6IFdyb25n
IHVybCBzY2hlbWUgZm9yIFdlYlNvY2tldCBqYXZhc2NyaXB0OmEKQEAgLTksNiArMTAsNyBAQCBU
ZXN0IFdlYlNvY2tldCBVUkwgcGFyc2luZy4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAog
UEFTUyBuZXcgV2ViU29ja2V0KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3Vn
aCBhcmd1bWVudHMuCitQQVNTIG5ldyBXZWJTb2NrZXQobnVsbCkgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgogUEFTUyBuZXcgV2ViU29ja2V0KCJ3
czovL2phdmFzY3JpcHQ6YSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9N
IEV4Y2VwdGlvbiAxMi4KIFBBU1MgbmV3IFdlYlNvY2tldCgiL2FwcGxldCIpIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KIFBBU1MgbmV3IFdlYlNv
Y2tldCgiamF2YXNjcmlwdDphIikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBE
T00gRXhjZXB0aW9uIDEyLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173039</attachid>
            <date>2012-11-08 07:11:59 -0800</date>
            <delta_ts>2012-11-08 07:44:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100801-20121108161007.patch</filename>
            <type>text/plain</type>
            <size>91365</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzODQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWE0YTQ1ODc5NjJjOTU3
NGQ3NDVhMWQyNTIyM2ZjZTQyMjJlMjgzYS4uNWMzNDg4MzExNzBlYmEzNWVhMDg0NTU3MWVlYTFi
M2VjMjEyN2JjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2MSBAQAorMjAxMi0xMS0wMSAgVG9t
bXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhl
IFY4IGN1c3RvbSBjb2RlIGZvciBXZWJTb2NrZXRzIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA4MDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGRvZXMgdGhlIGZv
bGxvd2luZzoKKworICAgICAgICAxKSBNb2RpZmllcyB0aGUgVjggY29kZSBnZW5lcmF0b3IgdG8g
c3VwcG9ydCBvdmVybG9hZGVkIGNvbnN0cnVjdG9ycywKKyAgICAgICAgICAgdGhlIEpTIGdlbmVy
YXRvciBpcyBmaXhlZCB0byB3b3JrIGFzIGJlZm9yZS4gUHJvcGVyIHN1cHBvcnQgZm9yIEpTIHdp
bGwgY29tZSBsYXRlci4KKworICAgICAgICAyKSBNb2RpZmllcyBXZWJTb2NrZXQuaC8uY3BwIGZv
ciB0aGUgbmV3IGNvbnN0cnVjdG9ycy4KKworICAgICAgICBUZXN0ZWQgYnkgcnVubmluZyBXZWJT
b2NrZXRzIGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgor
ICAgICAgICAoV2ViU29ja2V0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToK
KyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVy
KToKKyAgICAgICAgKEdlbmVyYXRlT3ZlcmxvYWRlZENvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAg
ICAgICAoR2VuZXJhdGVTaW5nbGVDb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKEdlbmVy
YXRlQ29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9u
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbToKKyAgICAgICAgKGNv
cHlBdHRyaWJ1dGVzKToKKyAgICAgICAgKHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KToKKyAg
ICAgICAgKHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVzKToKKyAgICAgICAgKGFwcGx5RXh0ZW5kZWRB
dHRyaWJ1dGVMaXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETFN0cnVjdHVyZS5w
bToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6V2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlOjpX
ZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGUpOgorICAgICAgICAoV2ViRE9N
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OldlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzUHJpdmF0ZSk6CisgICAgICAgIChXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
V2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOgorICAgICAgICAoV2ViRE9NVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJET01UZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczo6aW1wbCk6CisgICAgICAgIChXZWJET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6fldlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKToKKyAgICAg
ICAgKHRvV2ViQ29yZSk6CisgICAgICAgICh0b1dlYktpdCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktp
dERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpraXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAg
ICAgICAgKFdlYktpdDo6d3JhcFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKToKKyAgICAgICAg
KHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19maW5hbGl6ZSk6CisgICAg
ICAgICh3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfc2V0X3Byb3BlcnR5
KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19nZXRf
cHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0
b3JzX2NvbnN0cnVjdGVkKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2Nv
bnN0cnVjdG9yc19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vdmVybG9h
ZGVkX2NvbnN0cnVjdG9yc19pbml0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOiBBZGRlZC4KKyAg
ICAgICAgKF9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk6CisgICAgICAgIChf
V2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDbGFzcyk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNQcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnND
b25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rv
cjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZTo6c2VsZik6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6On5KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmdldE93blBy
b3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OmlzT2JzZXJ2YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNPd25lcjo6ZmluYWxpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChXZWJDb3JlOjp0b1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6cmVsZWFzZUltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6cmVsZWFzZUlt
cGxJZk5vdE51bGwpOgorICAgICAgICAoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OndyYXBwZXJPd25lcik6CisgICAgICAgIChXZWJDb3JlOjp3
cmFwcGVyQ29udGV4dCk6CisgICAgICAgIChKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJv
dG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQ
cm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZTo6SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1Byb3RvdHlwZSk6CisgICAgICAgIChKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc0NvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bRE9NVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgZGVhbGxvY10pOgorICAgICAgICAoLVtET01UZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyBmaW5hbGl6ZV0pOgorICAgICAgICAoY29yZSk6CisgICAgICAgIChr
aXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzSW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
aWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5pZGwuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaWRsOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzVjhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1Y4SW50ZXJuYWw6OlY4X1VTRSk6CisgICAgICAgIChXZWJDb3JlOjpW
OFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjFDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjJD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
Ojpjb25zdHJ1Y3RvcjNDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUZW1w
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpH
ZXRSYXdUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzOjpIYXNJbnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjp3cmFwU2xvdyk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjpkZXJlZk9iamVjdCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMp
OgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6dG9OYXRp
dmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6aW5z
dGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6
CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp3cmFwKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OFdlYlNvY2tldEN1c3RvbS5jcHA6MjAxMi0xMS0wNSAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlh
a0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1NoYWRvd10gU2hhZG93Um9vdCB0eXBlIGlzIG5v
dCBzZXQgY29ycmVjdGx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAxMTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSGFqaW1lIE1vcml0YS4KKwor
ICAgICAgICBTaGFkb3dSb290IHR5cGUgaXMgbm90IHNldCBjb3JyZWN0bHkgaW4gUmVsZWFzZSBi
dWlsZC4gV2UgaGF2ZSBoYWQgdG8gcmVtb3ZlICNpZm5kZWYgYmxvY2suCisKKyAgICAgICAgVGVz
dDogZmFzdC9kb20vc2hhZG93L3NoYWRvd3Jvb3QtdHlwZS5odG1sCisKKyAgICAgICAgKiBkb20v
U2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpjcmVhdGUpOgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6c2hhZG93Um9vdFR5cGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKEludGVybmFscyk6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsOgorCiAyMDEyLTExLTA3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZp
ZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTMz
ODQxLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNw
cAppbmRleCA0NmQ2MmRlODlmNDY2OGZlN2ExNTFmZWVkNTMxMTM4MjQ3MzAyN2RhLi5lNGE0NTYw
ZDQ4YTM5MDcyN2Y0YmNjZTFmZWQ2MzJjNWM4ODM5YzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtMTY0LDYgKzE2NCwzNiBAQCBQ
YXNzUmVmUHRyPFdlYlNvY2tldD4gV2ViU29ja2V0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCkKICAgICByZXR1cm4gd2ViU29ja2V0LnJlbGVhc2UoKTsKIH0KIAorUGFz
c1JlZlB0cjxXZWJTb2NrZXQ+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAg
ICBWZWN0b3I8U3RyaW5nPiBwcm90b2NvbHM7CisgICAgcmV0dXJuIFdlYlNvY2tldDo6Y3JlYXRl
KGNvbnRleHQsIHVybCwgcHJvdG9jb2xzLCBlYyk7Cit9CisKK1Bhc3NSZWZQdHI8V2ViU29ja2V0
PiBXZWJTb2NrZXQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByb3RvY29scywgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgaWYgKHVybC5pc051bGwoKSkgeworICAgICAgICBlYyA9IFNZTlRB
WF9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIFJlZlB0cjxXZWJTb2NrZXQ+
IHdlYlNvY2tldChhZG9wdFJlZihuZXcgV2ViU29ja2V0KGNvbnRleHQpKSk7CisgICAgd2ViU29j
a2V0LT5zdXNwZW5kSWZOZWVkZWQoKTsKKworICAgIHdlYlNvY2tldC0+Y29ubmVjdChjb250ZXh0
LT5jb21wbGV0ZVVSTCh1cmwpLCBwcm90b2NvbHMsIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAg
IHJldHVybiAwOworCisgICAgcmV0dXJuIHdlYlNvY2tldC5yZWxlYXNlKCk7Cit9CisKK1Bhc3NS
ZWZQdHI8V2ViU29ja2V0PiBXZWJTb2NrZXQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCit7CisgICAgVmVjdG9yPFN0cmluZz4gcHJvdG9jb2xzOworICAgIHBy
b3RvY29scy5hcHBlbmQocHJvdG9jb2wpOworICAgIHJldHVybiBXZWJTb2NrZXQ6OmNyZWF0ZShj
b250ZXh0LCB1cmwsIHByb3RvY29scywgZWMpOworfQorCiB2b2lkIFdlYlNvY2tldDo6Y29ubmVj
dChjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVmVjdG9yPFN0
cmluZz4gcHJvdG9jb2xzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldC5oCmluZGV4IGE5MzU1MjhiYTI0NjEyMjE5MjdkNWIzM2UxYjVjZjY1OTc0YzQ0ZDIu
LjJiYWU1MzliMWI1MTI1M2E0YjMzY2ViYjViODQ2OTY4ZWVhNDhjNDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKQEAgLTU2LDYgKzU2LDkgQEAg
cHVibGljOgogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CiAgICAgc3RhdGljIGNvbnN0
IGNoYXIqIHN1YlByb3RvY29sU2VwZXJhdG9yKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2Vi
U29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNv
Y2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByb3RvY29scywgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIHZpcnR1YWwgfldlYlNvY2tldCgpOwogCiAgICAgZW51bSBTdGF0ZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCmluZGV4IDcy
Y2Y1ZDRlOWNjMTdiYzkyZjczOGYwOWJlNjhhY2IyMDExZWU5NDcuLjIzYWNjNWYxMTU4M2IwZjM3
NThhZTc4ZTFhMWRmY2JjY2VkMDVhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCkBAIC0zMiwxMCArMzIsMTUgQEAKIFsKICAgICBDb25k
aXRpb25hbD1XRUJfU09DS0VUUywKICAgICBBY3RpdmVET01PYmplY3QsCi0gICAgQ3VzdG9tQ29u
c3RydWN0b3IsCi0gICAgQ29uc3RydWN0b3JQYXJhbWV0ZXJzPTEsCisgICAgQ29uc3RydWN0b3Io
aW4gRE9NU3RyaW5nIHVybCksCisgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIHVybCwgaW4g
c2VxdWVuY2U8U3RyaW5nPiBwcm90b2NvbHMpLAorICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmlu
ZyB1cmwsIGluIERPTVN0cmluZyBwcm90b2NvbCksCisgICAgQ29uc3RydWN0b3JSYWlzZXNFeGNl
cHRpb24sCisgICAgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKICAgICBFdmVudFRh
cmdldCwKLSAgICBKU05vU3RhdGljVGFibGVzCisgICAgSlNOb1N0YXRpY1RhYmxlcywKKyAgICBK
U0N1c3RvbUNvbnN0cnVjdG9yLAorICAgIENvbnN0cnVjdG9yUGFyYW1ldGVycz0xLAogXSBpbnRl
cmZhY2UgV2ViU29ja2V0IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIFVSTDsg
Ly8gTG93ZXJjYXNlZCAudXJsIGlzIHRoZSBvbmUgaW4gdGhlIHNwZWMsIGJ1dCBsZWF2aW5nIC5V
UkwgZm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucy4KICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KaW5kZXggYjU0OTc5ZmEyZjIwNTZjNzNmYWJkMjg3YTZiN2NmNDhiZmNh
MjBjOC4uNzMzZWE2ODcxODQzN2IyMWE0NjM3NGYwMGJkMGQwMTY1MWQzZGE0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAg
LTM3MjEsMTMgKzM3MjEsMTcgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCiAg
ICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CiAgICAgbXkgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVj
dG9yID0gc2hpZnQ7CiAKKyAgICAjIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igb3ZlcmxvYWRlZCBj
b25zdHJ1Y3RvcnMgdG8gSlMgYXMgd2VsbC4KKyAgICAjIEZvciBub3cgbWltaWMgdGhlIG9sZCBi
ZWhhdmlvdXIgYnkgb25seSBnZW5lcmF0aW5nIGNvZGUgZm9yIHRoZSBsYXN0ICJDb25zdHJ1Y3Rv
ciIgYXR0cmlidXRlLgorICAgIG15ICRmdW5jdGlvbiA9IEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3Rv
cnN9Wy0xXTsKKwogICAgIG15ICRjb25zdHJ1Y3RvckNsYXNzTmFtZSA9ICRnZW5lcmF0aW5nTmFt
ZWRDb25zdHJ1Y3RvciA/ICIke2NsYXNzTmFtZX1OYW1lZENvbnN0cnVjdG9yIiA6ICIke2NsYXNz
TmFtZX1Db25zdHJ1Y3RvciI7CiAgICAgbXkgJG51bWJlck9mQ29uc3RydWN0b3JQYXJhbWV0ZXJz
ID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JQYXJhbWV0ZXJz
In07CiAgICAgaWYgKCFkZWZpbmVkICRudW1iZXJPZkNvbnN0cnVjdG9yUGFyYW1ldGVycykgewog
ICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUZW1wbGF0ZSgkZGF0YU5v
ZGUsICJFdmVudCIpKSB7CiAgICAgICAgICAgICAkbnVtYmVyT2ZDb25zdHJ1Y3RvclBhcmFtZXRl
cnMgPSAyOwogICAgICAgICB9IGVsc2lmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDb25zdHJ1Y3RvciJ9KSB7Ci0gICAgICAgICAgICAkbnVtYmVyT2ZDb25zdHJ1Y3RvclBhcmFt
ZXRlcnMgPSBAeyRkYXRhTm9kZS0+Y29uc3RydWN0b3ItPnBhcmFtZXRlcnN9OworICAgICAgICAg
ICAgJG51bWJlck9mQ29uc3RydWN0b3JQYXJhbWV0ZXJzID0gQHskZnVuY3Rpb24tPnBhcmFtZXRl
cnN9OwogICAgICAgICB9CiAgICAgfQogCkBAIC0zODg5LDcgKzM4OTMsNiBAQCBFTkQKIAogICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICR7Y29uc3RydWN0b3JDbGFzc05hbWV9
KiBjYXN0ZWRUaGlzID0ganNDYXN0PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9Kj4oZXhlYy0+Y2Fs
bGVlKCkpO1xuIik7CiAKLSAgICAgICAgICAgIG15ICRmdW5jdGlvbiA9ICRkYXRhTm9kZS0+Y29u
c3RydWN0b3I7CiAgICAgICAgICAgICBteSBAY29uc3RydWN0b3JBcmdMaXN0OwogCiAgICAgICAg
ICAgICAkaW1wbEluY2x1ZGVzeyI8cnVudGltZS9FcnJvci5oPiJ9ID0gMTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggM2M2
NDZmOWZkZWE3NDc0MTViZjY5ZjgyZjk2NTFiMmFjYTkxYjBjNS4uMzcxMTAyZmQ5YTZmYzViNzc4
Yzk4ZjRjZWI4NTQyNDgwMWI2Y2JiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTQ5NCw2ICs0OTQsMTcgQEAgRU5ECiAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogcHJpdmF0ZToKICAgICBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwU2xvdygke3dyYXBTbG93QXJndW1lbnRUeXBlfSwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CitFTkQK
KworICAgIGlmIChJc0NvbnN0cnVjdGFibGUoJGRhdGFOb2RlKSAmJiBAeyRkYXRhTm9kZS0+Y29u
c3RydWN0b3JzfSA+IDEpIHsKKyAgICAgICAgZm9yIChteSAkaSA9IDE7ICRpIDw9IEB7JGRhdGFO
b2RlLT5jb25zdHJ1Y3RvcnN9OyAkaSsrKSB7CisgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsIDw8RU5EKTsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9y
JHtpfUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKK0VORAorICAgICAgICB9CisgICAg
fQorCisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogfTsKIAogRU5ECkBAIC0xODU5
LDExICsxODcwLDUxIEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgIHJldHVybiAo
JHBhcmFtZXRlckNoZWNrU3RyaW5nLCAkcGFyYW1JbmRleCwgJXJlcGxhY2VtZW50cyk7CiB9CiAK
LXN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbGJhY2sKK3N1YiBHZW5lcmF0ZU92ZXJsb2FkZWRD
b25zdHJ1Y3RvckNhbGxiYWNrCiB7Ci0gICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CiAgICAgbXkg
JGRhdGFOb2RlID0gc2hpZnQ7CiAgICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKKyAgICAK
KyAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
JHtpbXBsQ2xhc3NOYW1lfTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLiR7aW1wbENsYXNzTmFtZX0uQ29uc3RydWN0
b3IiKTsKKyAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCisgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFz
IGEgZnVuY3Rpb24uIik7CisKKyAgICBpZiAoQ29uc3RydWN0b3JNb2RlOjpjdXJyZW50KCkgPT0g
Q29uc3RydWN0b3JNb2RlOjpXcmFwRXhpc3RpbmdPYmplY3QpCisgICAgICAgIHJldHVybiBhcmdz
LkhvbGRlcigpOworCitFTkQKKworICAgIG15ICRsZWFzdE51bU1hbmRhdG9yeVBhcmFtcyA9IDI1
NTsKKyAgICBmb3JlYWNoIG15ICRjb25zdHJ1Y3RvciAoQHskZGF0YU5vZGUtPmNvbnN0cnVjdG9y
c30pIHsKKyAgICAgICAgbXkgJG5hbWUgPSAiY29uc3RydWN0b3IiIC4gJGNvbnN0cnVjdG9yLT57
b3ZlcmxvYWRlZEluZGV4fSAuICJDYWxsYmFjayI7CisgICAgICAgIG15ICgkbnVtTWFuZGF0b3J5
UGFyYW1zLCAkcGFyYW1ldGVyc0NoZWNrKSA9IEdlbmVyYXRlRnVuY3Rpb25QYXJhbWV0ZXJzQ2hl
Y2soJGNvbnN0cnVjdG9yKTsKKyAgICAgICAgJGxlYXN0TnVtTWFuZGF0b3J5UGFyYW1zID0gJG51
bU1hbmRhdG9yeVBhcmFtcyBpZiAoJG51bU1hbmRhdG9yeVBhcmFtcyA8ICRsZWFzdE51bU1hbmRh
dG9yeVBhcmFtcyk7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICgkcGFyYW1l
dGVyc0NoZWNrKVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1
cm4gJG5hbWUoYXJncyk7XG4iKTsKKyAgICB9CisgICAgaWYgKCRsZWFzdE51bU1hbmRhdG9yeVBh
cmFtcyA+PSAxKSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChhcmdzLkxl
bmd0aCgpIDwgJGxlYXN0TnVtTWFuZGF0b3J5UGFyYW1zKVxuIik7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihh
cmdzLkdldElzb2xhdGUoKSk7XG4iKTsKKyAgICB9CisgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8
RU5EKTsKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoMCwgYXJncy5HZXRJc29sYXRlKCkpOwor
RU5ECisgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOworfQorCitzdWIgR2VuZXJhdGVT
aW5nbGVDb25zdHJ1Y3RvckNhbGxiYWNrCit7CisgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7Cisg
ICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKKyAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsK
KworICAgIG15ICRvdmVybG9hZGVkSW5kZXhTdHJpbmcgPSAiIjsKKyAgICBpZiAoJGZ1bmN0aW9u
LT57b3ZlcmxvYWRlZEluZGV4fSA+IDApIHsKKyAgICAgICAgJG92ZXJsb2FkZWRJbmRleFN0cmlu
ZyAuPSAkZnVuY3Rpb24tPntvdmVybG9hZGVkSW5kZXh9OworICAgIH0KIAogICAgIG15ICRyYWlz
ZXNFeGNlcHRpb25zID0gQHskZnVuY3Rpb24tPnJhaXNlc0V4Y2VwdGlvbnN9OwogICAgIGlmICgk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlv
biJ9KSB7CkBAIC0xODgyLDE4ICsxOTMzLDIyIEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yQ2Fs
bGJhY2sKICAgICBteSBAYmVmb3JlQXJndW1lbnRMaXN0OwogICAgIG15IEBhZnRlckFyZ3VtZW50
TGlzdDsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4JHtpbXBsQ2xhc3NOYW1lfTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4JHtpbXBsQ2xhc3NOYW1lfTo6
Y29uc3RydWN0b3Ike292ZXJsb2FkZWRJbmRleFN0cmluZ31DYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLiR7aW1wbENsYXNzTmFtZX0uQ29u
c3RydWN0b3IiKTsKKyAgICBJTkNfU1RBVFMoIkRPTS4ke2ltcGxDbGFzc05hbWV9LkNvbnN0cnVj
dG9yJHtvdmVybG9hZGVkSW5kZXhTdHJpbmd9Iik7CiAgICAgJHttYXliZU9ic2VydmVGZWF0dXJl
fQorRU5ECisKKyAgICBpZiAoJGZ1bmN0aW9uLT57b3ZlcmxvYWRlZEluZGV4fSA9PSAwKSB7Cisg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKICAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1
Y3RDYWxsKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigiRE9NIG9iamVjdCBjb25z
dHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIik7CiAKICAgICBpZiAoQ29u
c3RydWN0b3JNb2RlOjpjdXJyZW50KCkgPT0gQ29uc3RydWN0b3JNb2RlOjpXcmFwRXhpc3RpbmdP
YmplY3QpCiAgICAgICAgIHJldHVybiBhcmdzLkhvbGRlcigpOwogRU5ECi0KLSAgICBwdXNoKEBp
bXBsQ29udGVudCwgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKCRmdW5jdGlvbiwgJGRhdGFO
b2RlKSk7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50
Q2hlY2soJGZ1bmN0aW9uLCAkZGF0YU5vZGUpKTsKKyAgICB9CiAKICAgICBpZiAoJHJhaXNlc0V4
Y2VwdGlvbnMpIHsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkV4Y2VwdGlvbkNvZGUuaCIp
OwpAQCAtMTk1Niw2ICsyMDExLDIxIEBAIEVORAogICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4i
KTsKIH0KIAorc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JDYWxsYmFjaworeworICAgIG15ICRkYXRh
Tm9kZSA9IHNoaWZ0OworICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7CisKKyAgICBpZiAo
QHskZGF0YU5vZGUtPmNvbnN0cnVjdG9yc30gPT0gMSkgeworICAgICAgICBHZW5lcmF0ZVNpbmds
ZUNvbnN0cnVjdG9yQ2FsbGJhY2soJGRhdGFOb2RlLCAkaW1wbENsYXNzTmFtZSwgQHskZGF0YU5v
ZGUtPmNvbnN0cnVjdG9yc31bMF0pOworICAgIH0gZWxzZSB7CisgICAgICAgIGZvcmVhY2ggbXkg
JGNvbnN0cnVjdG9yIChAeyRkYXRhTm9kZS0+Y29uc3RydWN0b3JzfSkgeworICAgICAgICAgICAg
R2VuZXJhdGVTaW5nbGVDb25zdHJ1Y3RvckNhbGxiYWNrKCRkYXRhTm9kZSwgJGltcGxDbGFzc05h
bWUsICRjb25zdHJ1Y3Rvcik7CisgICAgICAgIH0KKyAgICAgICAgR2VuZXJhdGVPdmVybG9hZGVk
Q29uc3RydWN0b3JDYWxsYmFjaygkZGF0YU5vZGUsICRpbXBsQ2xhc3NOYW1lKTsKKyAgICB9Cit9
CisKIHN1YiBHZW5lcmF0ZUV2ZW50Q29uc3RydWN0b3JDYWxsYmFjawogewogICAgIG15ICRkYXRh
Tm9kZSA9IHNoaWZ0OwpAQCAtMjgyOSw5ICsyODk5LDkgQEAgRU5ECiAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgIn0gLy8gbmFtZXNwYWNlICR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFsXG5c
biIpOwogCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkQ29u
c3RydWN0b3IifSAmJiAhKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9t
Q29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21D
b25zdHJ1Y3RvciJ9KSkgewotICAgICAgICBHZW5lcmF0ZU5hbWVkQ29uc3RydWN0b3JDYWxsYmFj
aygkZGF0YU5vZGUtPmNvbnN0cnVjdG9yLCAkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lKTsKKyAg
ICAgICAgR2VuZXJhdGVOYW1lZENvbnN0cnVjdG9yQ2FsbGJhY2soQHskZGF0YU5vZGUtPmNvbnN0
cnVjdG9yc31bMF0sICRkYXRhTm9kZSwgJGludGVyZmFjZU5hbWUpOwogICAgIH0gZWxzaWYgKCRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0gJiYgISgkZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3IifSkpIHsKLSAgICAg
ICAgR2VuZXJhdGVDb25zdHJ1Y3RvckNhbGxiYWNrKCRkYXRhTm9kZS0+Y29uc3RydWN0b3IsICRk
YXRhTm9kZSwgJGludGVyZmFjZU5hbWUpOworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yQ2Fs
bGJhY2soJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgfSBlbHNpZiAoJGNvZGVHZW5l
cmF0b3ItPklzQ29uc3RydWN0b3JUZW1wbGF0ZSgkZGF0YU5vZGUsICJFdmVudCIpKSB7CiAgICAg
ICAgIEdlbmVyYXRlRXZlbnRDb25zdHJ1Y3RvckNhbGxiYWNrKCRkYXRhTm9kZSwgJGludGVyZmFj
ZU5hbWUpOwogICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVGVtcGxh
dGUoJGRhdGFOb2RlLCAiVHlwZWRBcnJheSIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvSURMUGFyc2VyLnBtCmluZGV4IDE5ZmI2NDk1YzMxYjFmYjU2ZDdlNmE5ZjE1MGRi
OTU5ODJjNzQ3MTIuLjQ4ZjVjM2MzZmU1OTAzNjgyNjQwZDQ5NWI3YzUwN2IyYWZmMmFmYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCkBAIC0xMzIz
LDYgKzEzMjMsMjUgQEAgc3ViIHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVMaXN0QWxsb3dFbXB0eQog
ICAgIHJldHVybiB7fTsKIH0KIAorc3ViIGNvcHlBdHRyaWJ1dGVzCit7CisgICAgbXkgJGV4dGVu
ZGVkQXR0cmlidXRlTGlzdCA9IHNoaWZ0OworICAgIG15ICRhdHRyID0gc2hpZnQ7CisKKyAgICBm
b3IgbXkgJGtleSAoa2V5cyAleyRhdHRyfSkgeworICAgICAgICBpZiAoJGtleSBlcSAiQ29uc3Ry
dWN0b3IiKSB7CisgICAgICAgICAgICBwdXNoKEB7JGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJD
b25zdHJ1Y3RvcnMifX0sICRhdHRyLT57JGtleX0pOworICAgICAgICB9IGVsc2lmICgka2V5IGVx
ICJDb25zdHJ1Y3RvcnMiKSB7CisgICAgICAgICAgICBteSBAY29uc3RydWN0b3JzID0gQHskYXR0
ci0+eyRrZXl9fTsKKyAgICAgICAgICAgIGZvcmVhY2ggbXkgJGNvbnN0cnVjdG9yIChAY29uc3Ry
dWN0b3JzKSB7CisgICAgICAgICAgICAgICAgcHVzaChAeyRleHRlbmRlZEF0dHJpYnV0ZUxpc3Qt
PnsiQ29uc3RydWN0b3JzIn19LCAkY29uc3RydWN0b3IpOworICAgICAgICAgICAgfQorICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyRrZXl9ID0g
JGF0dHItPnska2V5fTsKKyAgICAgICAgfQorICAgIH0KK30KKwogc3ViIHBhcnNlRXh0ZW5kZWRB
dHRyaWJ1dGVMaXN0CiB7CiAgICAgbXkgJHNlbGYgPSBzaGlmdDsKQEAgLTEzMzEsMTMgKzEzNTAs
OSBAQCBzdWIgcGFyc2VFeHRlbmRlZEF0dHJpYnV0ZUxpc3QKICAgICAgICAgJHNlbGYtPmFzc2Vy
dFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJbIiwgX19MSU5FX18pOwogICAgICAgICBt
eSAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0ID0ge307CiAgICAgICAgIG15ICRhdHRyID0gJHNlbGYt
PnBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGUoKTsKLSAgICAgICAgZm9yIG15ICRrZXkgKGtleXMgJXsk
YXR0cn0pIHsKLSAgICAgICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnska2V5fSA9ICRh
dHRyLT57JGtleX07Ci0gICAgICAgIH0KKyAgICAgICAgY29weUF0dHJpYnV0ZXMoJGV4dGVuZGVk
QXR0cmlidXRlTGlzdCwgJGF0dHIpOwogICAgICAgICAkYXR0ciA9ICRzZWxmLT5wYXJzZUV4dGVu
ZGVkQXR0cmlidXRlcygpOwotICAgICAgICBmb3IgbXkgJGtleSAoa2V5cyAleyRhdHRyfSkgewot
ICAgICAgICAgICAgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyRrZXl9ID0gJGF0dHItPnska2V5
fTsKLSAgICAgICAgfQorICAgICAgICBjb3B5QXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVM
aXN0LCAkYXR0cik7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRU
b2tlbigpLCAiXSIsIF9fTElORV9fKTsKICAgICAgICAgcmV0dXJuICRleHRlbmRlZEF0dHJpYnV0
ZUxpc3Q7CiAgICAgfQpAQCAtMTM1NCw5ICsxMzY5LDcgQEAgc3ViIHBhcnNlRXh0ZW5kZWRBdHRy
aWJ1dGVzCiAgICAgICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAiLCIpIHsKICAgICAgICAgICAg
ICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiLCIsIF9fTElORV9f
KTsKICAgICAgICAgICAgIG15ICRhdHRyID0gJHNlbGYtPnBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGUy
KCk7Ci0gICAgICAgICAgICBmb3IgbXkgJGtleSAoa2V5cyAleyRhdHRyfSkgewotICAgICAgICAg
ICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnska2V5fSA9ICRhdHRyLT57JGtleX07Ci0g
ICAgICAgICAgICB9CisgICAgICAgICAgICBjb3B5QXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1
dGVMaXN0LCAkYXR0cik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBsYXN0OwogICAg
ICAgICB9CkBAIC0yMzgxLDE0ICsyMzk0LDIwIEBAIHN1YiBhcHBseUV4dGVuZGVkQXR0cmlidXRl
TGlzdAogICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OwogICAgIG15ICRleHRlbmRlZEF0dHJpYnV0
ZUxpc3QgPSBzaGlmdDsKIAotICAgIGlmIChkZWZpbmVkICRleHRlbmRlZEF0dHJpYnV0ZUxpc3Qt
PnsiQ29uc3RydWN0b3IifSkgewotICAgICAgICBteSAkbmV3RGF0YU5vZGUgPSBuZXcgZG9tRnVu
Y3Rpb24oKTsKLSAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUobmV3IGRvbVNpZ25hdHVy
ZSgpKTsKLSAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPm5hbWUoIkNvbnN0cnVjdG9y
Iik7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMo
JGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0gICAgICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPnBh
cmFtZXRlcnN9LCBAeyRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiQ29uc3RydWN0b3IifX0pOwor
ICAgIGlmIChkZWZpbmVkICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiQ29uc3RydWN0b3JzIn0p
IHsKKyAgICAgICAgbXkgQGNvbnN0cnVjdG9yUGFyYW1zID0gQHskZXh0ZW5kZWRBdHRyaWJ1dGVM
aXN0LT57IkNvbnN0cnVjdG9ycyJ9fTsKKyAgICAgICAgbXkgJGluZGV4ID0gKEBjb25zdHJ1Y3Rv
clBhcmFtcyA9PSAxKSA/IDAgOiAxOworICAgICAgICBmb3JlYWNoIG15ICRwYXJhbSAoQGNvbnN0
cnVjdG9yUGFyYW1zKSB7CisgICAgICAgICAgICBteSAkY29uc3RydWN0b3IgPSBuZXcgZG9tRnVu
Y3Rpb24oKTsKKyAgICAgICAgICAgICRjb25zdHJ1Y3Rvci0+c2lnbmF0dXJlKG5ldyBkb21TaWdu
YXR1cmUoKSk7CisgICAgICAgICAgICAkY29uc3RydWN0b3ItPnNpZ25hdHVyZS0+bmFtZSgiQ29u
c3RydWN0b3IiKTsKKyAgICAgICAgICAgICRjb25zdHJ1Y3Rvci0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CisgICAgICAgICAgICAkY29uc3Ry
dWN0b3ItPnBhcmFtZXRlcnMoJHBhcmFtKTsKKyAgICAgICAgICAgICRjb25zdHJ1Y3Rvci0+e292
ZXJsb2FkZWRJbmRleH0gPSAkaW5kZXgrKzsKKyAgICAgICAgICAgIHB1c2goQHskZGF0YU5vZGUt
PmNvbnN0cnVjdG9yc30sICRjb25zdHJ1Y3Rvcik7CisgICAgICAgIH0KKyAgICAgICAgZGVsZXRl
ICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiQ29uc3RydWN0b3JzIn07CiAgICAgICAgICRleHRl
bmRlZEF0dHJpYnV0ZUxpc3QtPnsiQ29uc3RydWN0b3IifSA9ICJWQUxVRV9JU19NSVNTSU5HIjsK
LSAgICAgICAgJGRhdGFOb2RlLT5jb25zdHJ1Y3RvcigkbmV3RGF0YU5vZGUpOwogICAgIH0gZWxz
aWYgKGRlZmluZWQgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJOYW1lZENvbnN0cnVjdG9yIn0p
IHsKICAgICAgICAgbXkgJG5ld0RhdGFOb2RlID0gbmV3IGRvbUZ1bmN0aW9uKCk7CiAgICAgICAg
ICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlKG5ldyBkb21TaWduYXR1cmUoKSk7CkBAIC0yMzk5LDcg
KzI0MTgsNyBAQCBzdWIgYXBwbHlFeHRlbmRlZEF0dHJpYnV0ZUxpc3QKICAgICAgICAgbXkgJGNv
bnN0cnVjdG9yTmFtZSA9ICRhdHRyaWJ1dGVLZXlzWzBdOwogICAgICAgICBwdXNoKEB7JG5ld0Rh
dGFOb2RlLT5wYXJhbWV0ZXJzfSwgQHskYXR0cmlidXRlc3skY29uc3RydWN0b3JOYW1lfX0pOwog
ICAgICAgICAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57Ik5hbWVkQ29uc3RydWN0b3IifSA9ICRj
b25zdHJ1Y3Rvck5hbWU7Ci0gICAgICAgICRkYXRhTm9kZS0+Y29uc3RydWN0b3IoJG5ld0RhdGFO
b2RlKTsKKyAgICAgICAgcHVzaChAeyRkYXRhTm9kZS0+Y29uc3RydWN0b3JzfSwgJG5ld0RhdGFO
b2RlKTsKICAgICB9CiAgICAgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVk
QXR0cmlidXRlTGlzdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0lETFN0cnVjdHVyZS5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
SURMU3RydWN0dXJlLnBtCmluZGV4IGZmNjI4NzI1ZWI5MGY1NDY2NzNmZDE2NDFlZjFkYzVhYzI2
Y2RmY2IuLmY0NDMyNDE3M2VhMmNlMGQ0NDNjNmY1NGRlZmRiNTRkNTAzOWNlODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJlLnBtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJlLnBtCkBAIC00MCw3
ICs0MCw3IEBAIHN0cnVjdCggZG9tQ2xhc3MgPT4gewogICAgIGZ1bmN0aW9ucyA9PiAnQCcsICAg
ICMgTGlzdCBvZiAnZG9tRnVuY3Rpb24nCiAgICAgYXR0cmlidXRlcyA9PiAnQCcsICAgICMgTGlz
dCBvZiAnZG9tQXR0cmlidXRlJyAgICAKICAgICBleHRlbmRlZEF0dHJpYnV0ZXMgPT4gJyQnLCAj
IEV4dGVuZGVkIGF0dHJpYnV0ZXMKLSAgICBjb25zdHJ1Y3RvciA9PiAnJCcsICMgQ29uc3RydWN0
b3IKKyAgICBjb25zdHJ1Y3RvcnMgPT4gJ0AnLCAjIENvbnN0cnVjdG9yCiAgICAgaXNFeGNlcHRp
b24gPT4gJyQnLCAjIFVzZWQgZm9yIGV4Y2VwdGlvbiBpbnRlcmZhY2VzCiB9KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xNjZhMmVkYjQ2YjNjYTBiOThhYTk4NWIyMmU3NDY1ZjgxNWMwNTA5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01U
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAqIFRo
aXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5P
VCBNT0RJRlkhCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJET01UZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycy5oIgorCisjaW5jbHVkZSAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMuaCIKKyNpbmNsdWRlICJXZWJFeGNlcHRpb25IYW5kbGVyLmgiCisjaW5jbHVkZSA8d3RmL0dl
dFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworc3RydWN0IFdlYkRPTVRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjpXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZh
dGUgeworICAgIFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJpdmF0ZShXZWJDb3Jl
OjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogb2JqZWN0ID0gMCkKKyAgICAgICAgOiBpbXBs
KG9iamVjdCkKKyAgICB7CisgICAgfQorCisgICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzPiBpbXBsOworfTsKKworV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM6OldlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKCkKKyAgICA6IFdlYkRPTU9i
amVjdCgpCisgICAgLCBtX2ltcGwoMCkKK3sKK30KKworV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM6OldlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKFdlYkNvcmU6OlRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKiBpbXBsKQorICAgIDogV2ViRE9NT2JqZWN0KCkKKyAgICAs
IG1faW1wbChuZXcgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlKGltcGwp
KQoreworfQorCitXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6V2ViRE9NVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoY29uc3QgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMmIGNvcHkpCisgICAgOiBXZWJET01PYmplY3QoKQoreworICAgIG1faW1wbCA9IGNvcHkuaW1w
bCgpID8gbmV3IFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJpdmF0ZShjb3B5Lmlt
cGwoKSkgOiAwOworfQorCitXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyYgV2ViRE9N
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6Om9wZXJhdG9yPShjb25zdCBXZWJET01UZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycyYgY29weSkKK3sKKyAgICBkZWxldGUgbV9pbXBsOworICAgIG1f
aW1wbCA9IGNvcHkuaW1wbCgpID8gbmV3IFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
UHJpdmF0ZShjb3B5LmltcGwoKSkgOiAwOworICAgIHJldHVybiAqdGhpczsKK30KKworV2ViQ29y
ZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjppbXBsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbXBsID8gV1RGOjpnZXRQdHIo
bV9pbXBsLT5pbXBsKSA6IDA7Cit9CisKK1dlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
Ojp+V2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoKQoreworICAgIGRlbGV0ZSBtX2lt
cGw7CisgICAgbV9pbXBsID0gMDsKK30KKworV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMqIHRvV2ViQ29yZShjb25zdCBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyYg
d3JhcHBlcikKK3sKKyAgICByZXR1cm4gd3JhcHBlci5pbXBsKCk7Cit9CisKK1dlYkRPTVRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzIHRvV2ViS2l0KFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzKiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnModmFsdWUpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhYjgxMmJiYjZmZjBlZGE2OGFiZTQ5ZjkzYTFi
MjA0MTNhYzI1MjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKQEAgLTAs
MCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0
ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5j
b20+CisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNfaAorI2RlZmluZSBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc19oCisKKyNpbmNs
dWRlIDxXZWJET01PYmplY3QuaD4KKyNpbmNsdWRlIDxXZWJET01TdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM7Cit9OworCisK
K2NsYXNzIFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIDogcHVibGljIFdlYkRPTU9i
amVjdCB7CitwdWJsaWM6CisgICAgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoKTsK
KyAgICBleHBsaWNpdCBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhXZWJDb3JlOjpU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyopOworICAgIFdlYkRPTVRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzKGNvbnN0IFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzJik7CisgICAg
V2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMmIG9wZXJhdG9yPShjb25zdCBXZWJET01U
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyYpOworICAgIHZpcnR1YWwgfldlYkRPTVRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzKCk7CisKKworICAgIFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzKiBpbXBsKCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBzdHJ1Y3QgV2ViRE9N
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlOworICAgIFdlYkRPTVRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzUHJpdmF0ZSogbV9pbXBsOworfTsKKworV2ViQ29yZTo6VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMqIHRvV2ViQ29yZShjb25zdCBXZWJET01UZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycyYpOworV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgdG9XZWJLaXQo
V2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqKTsKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDQ1MmZjNmY1NWEyNzUwZGYxNmFiZGVhZDcyYzYyN2NmYmFiOTRm
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtMCww
ICsxLDE0MSBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4g
c291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5l
cmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAg
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
ICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIKKworI2lu
Y2x1ZGUgIkRPTU9iamVjdENhY2hlLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2lu
Y2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2luY2x1ZGUgIlRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmgiCisjaW5jbHVkZSAiV2ViS2l0RE9NQmluZGluZy5oIgorI2luY2x1ZGUg
ImdvYmplY3QvQ29udmVydFRvVVRGOFN0cmluZy5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRE
T01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXRk
ZWZpbmVzLmgiCisjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKKyNpbmNsdWRlICJ3
ZWJraXRtYXJzaGFsLmgiCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3dGYv
R2V0UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGtpdChXZWJDb3JlOjpUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogb2JqKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KG9iaiwgMCk7CisKKyAgICBpZiAoZ3BvaW50ZXIgcmV0ID0gRE9NT2JqZWN0Q2FjaGU6OmdldChv
YmopKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMqPihyZXQpOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdERPTVRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4oRE9NT2JqZWN0Q2FjaGU6OnB1dChvYmosIFdlYktp
dDo6d3JhcFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKG9iaikpKTsKK30KKworV2ViQ29yZTo6
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGNvcmUoV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwocmVxdWVz
dCwgMCk7CisKKyAgICBXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogY29yZU9i
amVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4o
V0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNvcmVPYmplY3QpOworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKGNvcmVPYmplY3QsIDApOworCisgICAgcmV0dXJuIGNvcmVPYmplY3Q7Cit9CisK
K1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB3cmFwVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMoV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGNvcmVPYmpl
Y3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCwgMCk7CisKKyAgICAv
LyBXZSBjYWxsIHJlZigpIHJhdGhlciB0aGFuIHVzaW5nIGEgQysrIHNtYXJ0IHBvaW50ZXIgYmVj
YXVzZSB3ZSBjYW4ndCBzdG9yZSBhIEMrKyBvYmplY3QKKyAgICAvLyBpbiBhIEMtYWxsb2NhdGVk
IEdPYmplY3Qgc3RydWN0dXJlLiBTZWUgdGhlIGZpbmFsaXplKCkgY29kZSBmb3IgdGhlIG1hdGNo
aW5nIGRlcmVmKCkuCisgICAgY29yZU9iamVjdC0+cmVmKCk7CisKKyAgICByZXR1cm4gV0VCS0lU
X0RPTV9URVNUX09WRVJMT0FERURfQ09OU1RSVUNUT1JTKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9ET01fVEVTVF9PVkVSTE9BREVEX0NPTlNUUlVDVE9SUywgImNvcmUtb2JqZWN0IiwgY29yZU9i
amVjdCwgTlVMTCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworR19ERUZJTkVfVFlQ
RShXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycywgd2Via2l0X2RvbV90ZXN0X292
ZXJsb2FkZWRfY29uc3RydWN0b3JzLCBXRUJLSVRfVFlQRV9ET01fT0JKRUNUKQorCitlbnVtIHsK
KyAgICBQUk9QXzAsCit9OworCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRl
ZF9jb25zdHJ1Y3RvcnNfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQoreworCisgICAgV2ViS2l0
RE9NT2JqZWN0KiBkb21PYmplY3QgPSBXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpOworICAgIAor
ICAgIGlmIChkb21PYmplY3QtPmNvcmVPYmplY3QpIHsKKyAgICAgICAgV2ViQ29yZTo6VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KGRvbU9iamVjdC0+Y29yZU9iamVjdCk7CisKKyAg
ICAgICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KGNvcmVPYmplY3QpOworICAgICAg
ICBjb3JlT2JqZWN0LT5kZXJlZigpOworCisgICAgICAgIGRvbU9iamVjdC0+Y29yZU9iamVjdCA9
IDA7CisgICAgfQorCisKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX3Rlc3Rfb3Zlcmxv
YWRlZF9jb25zdHJ1Y3RvcnNfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30KKwor
c3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3JzX3NldF9w
cm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIGNvbnN0IEdWYWx1ZSog
dmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0
eUlkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworCitzdGF0aWMgdm9pZCB3
ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfZ2V0X3Byb3BlcnR5KEdPYmpl
Y3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyog
cHNwZWMpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IHN3aXRjaCAocHJvcGVydHlJZCkgeworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dB
Uk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorfQorCisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9vdmVy
bG9hZGVkX2NvbnN0cnVjdG9yc19jb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCit7CisKKyAg
ICBpZiAoR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0
b3JzX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdGVkKQorICAgICAgICBHX09CSkVDVF9DTEFTUyh3
ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfcGFyZW50X2NsYXNzKS0+Y29u
c3RydWN0ZWQob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X292ZXJs
b2FkZWRfY29uc3RydWN0b3JzX2NsYXNzX2luaXQoV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNDbGFzcyogcmVxdWVzdENsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogZ29iamVj
dENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKKyAgICBnb2JqZWN0Q2xhc3Mt
PmZpbmFsaXplID0gd2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3JzX2ZpbmFs
aXplOworICAgIGdvYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0X2RvbV90ZXN0X292
ZXJsb2FkZWRfY29uc3RydWN0b3JzX3NldF9wcm9wZXJ0eTsKKyAgICBnb2JqZWN0Q2xhc3MtPmdl
dF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19nZXRf
cHJvcGVydHk7CisgICAgZ29iamVjdENsYXNzLT5jb25zdHJ1Y3RlZCA9IHdlYmtpdF9kb21fdGVz
dF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19jb25zdHJ1Y3RlZDsKKworCisKK30KKworc3RhdGlj
IHZvaWQgd2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3JzX2luaXQoV2ViS2l0
RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHJlcXVlc3QpCit7Cit9CisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERP
TVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFmOTM2YmM4OTM4NDdhNjJmYjhjM2U0MDJhY2U3OTIyYjg1OGZhM2UKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCkBAIC0wLDAgKzEsNTAg
QEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBw
cm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmlu
ZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBXZWJLaXRET01UZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc19oCisjZGVmaW5lIFdlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzX2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0L1dl
YktpdERPTU9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+CisjaW5j
bHVkZSA8d2Via2l0L3dlYmtpdGRvbWRlZmluZXMuaD4KKworR19CRUdJTl9ERUNMUworI2RlZmlu
ZSBXRUJLSVRfVFlQRV9ET01fVEVTVF9PVkVSTE9BREVEX0NPTlNUUlVDVE9SUyAgICAgICAgICAg
ICh3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfZ2V0X3R5cGUoKSkKKyNk
ZWZpbmUgV0VCS0lUX0RPTV9URVNUX09WRVJMT0FERURfQ09OU1RSVUNUT1JTKG9iaikgICAgICAg
ICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX0RPTV9U
RVNUX09WRVJMT0FERURfQ09OU1RSVUNUT1JTLCBXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycykpCisjZGVmaW5lIFdFQktJVF9ET01fVEVTVF9PVkVSTE9BREVEX0NPTlNUUlVDVE9S
U19DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJL
SVRfVFlQRV9ET01fVEVTVF9PVkVSTE9BREVEX0NPTlNUUlVDVE9SUywgV2ViS2l0RE9NVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDbGFzcykKKyNkZWZpbmUgV0VCS0lUX0RPTV9JU19URVNUX09W
RVJMT0FERURfQ09OU1RSVUNUT1JTKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNF
X1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX0RPTV9URVNUX09WRVJMT0FERURfQ09OU1RSVUNUT1JT
KSkKKyNkZWZpbmUgV0VCS0lUX0RPTV9JU19URVNUX09WRVJMT0FERURfQ09OU1RSVUNUT1JTX0NM
QVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBF
X0RPTV9URVNUX09WRVJMT0FERURfQ09OU1RSVUNUT1JTKSkKKyNkZWZpbmUgV0VCS0lUX0RPTV9U
RVNUX09WRVJMT0FERURfQ09OU1RSVUNUT1JTX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RB
TkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX0RPTV9URVNUX09WRVJMT0FERURfQ09O
U1RSVUNUT1JTLCBXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NsYXNzKSkKKwor
c3RydWN0IF9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyB7CisgICAgV2ViS2l0
RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKK307CisKK3N0cnVjdCBfV2ViS2l0RE9NVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDbGFzcyB7CisgICAgV2ViS2l0RE9NT2JqZWN0Q2xhc3MgcGFy
ZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X2RvbV90ZXN0X292ZXJs
b2FkZWRfY29uc3RydWN0b3JzX2dldF90eXBlICh2b2lkKTsKKworR19FTkRfREVDTFMKKworI2Vu
ZGlmIC8qIFdlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERP
TVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTkyZDVmZTU1MTllZDU3Zjc4NTdiYjQ1ODQzNDIy
NjYwZjJmYjg2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJp
dmF0ZS5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5l
cmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRl
ZiBXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGVfaAorI2RlZmluZSBX
ZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGVfaAorCisjaW5jbHVkZSAi
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgor
I2luY2x1ZGUgPHdlYmtpdC9XZWJLaXRET01PYmplY3QuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CitXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogd3JhcFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzKFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKik7CitXZWJD
b3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogY29yZShXZWJLaXRET01UZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyogcmVxdWVzdCk7CitXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyoga2l0KFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBub2RlKTsK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLyogV2ViS2l0RE9NVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNQcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MmQyZWE4NTAwZjBkMWZjNDJjMDgxOTU0ZDY4
ZjIwMDhhY2I0NmU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBAIC0wLDAg
KzEsMTk4IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBz
b3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVy
YXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgiCisKKyNpbmNsdWRlICJF
eGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIKKyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Cisj
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKy8qIEhhc2ggdGFibGUgZm9yIGNvbnN0cnVjdG9yICovCisKK3N0YXRp
YyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVGFibGVW
YWx1ZXNbXSA9Cit7CisgICAgeyAiY29uc3RydWN0b3IiLCBEb250RW51bSB8IFJlYWRPbmx5LCAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNp
YyB9LAorICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQorfTsKKworc3RhdGljIGNvbnN0
IEhhc2hUYWJsZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVGFibGUgPSB7IDIsIDEsIEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUYWJsZVZhbHVlcywgMCB9OworLyogSGFzaCB0YWJs
ZSBmb3IgY29uc3RydWN0b3IgKi8KKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQoreworICAg
IHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQorfTsKKworc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3JUYWJsZSA9IHsgMSwgMCwg
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yVGFibGVWYWx1ZXMsIDAgfTsK
K2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IiLCAmQmFz
ZTo6c19pbmZvLCAmSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yVGFibGUs
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0
cnVjdG9yKSB9OworCitKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OkpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICA6IERPTUNvbnN0cnVjdG9y
T2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQoreworfQorCit2b2lkIEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBl
eGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgQVNTRVJUKGluaGVyaXRzKCZzX2lu
Zm8pKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkucHJvdG90eXBlLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlOjpz
ZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0
RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwg
anNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKK30KKworYm9v
bCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5
U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNs
b3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+
KGV4ZWMsICZKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3JUYWJsZSwganND
YXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOworfQorCitib29sIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnND
b25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4
ZWMsICZKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3JUYWJsZSwganNDYXN0
PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3Bl
cnR5TmFtZSwgZGVzY3JpcHRvcik7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOworICAg
IGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKyAgICBjb25z
dCBTdHJpbmcmIHN0cmluZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0
SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVU
RVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM+IG9iamVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoc3Ry
aW5nKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhlYywgY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKK30KKworQ29uc3RydWN0
VHlwZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmdldENvbnN0cnVj
dERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25z
dHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQorCisvKiBIYXNoIHRh
YmxlIGZvciBwcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7
IDAsIDAsIDAsIDAsIE5vSW50cmluc2ljIH0KK307CisKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUg
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZVRhYmxlID0geyAxLCAwLCBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlVGFibGVWYWx1ZXMsIDAgfTsKK2NvbnN0
IENsYXNzSW5mbyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlOjpzX2luZm8g
PSB7ICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSIsICZCYXNlOjpzX2luZm8s
ICZKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlVGFibGUsIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSkgfTsKKwor
SlNPYmplY3QqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGU6OnNlbGYoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVy
biBnZXRET01Qcm90b3R5cGU8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4oZXhlYywgZ2xv
YmFsT2JqZWN0KTsKK30KKworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM6OnNfaW5mbyA9IHsgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIiwgJkJhc2U6OnNf
aW5mbywgJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUYWJsZSwgMCAsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycykgfTsKKworSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbCkKKyAgICA6IEpTRE9NV3JhcHBlcihzdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdCkKKyAgICAsIG1faW1wbChpbXBsLmxlYWtSZWYoKSkKK3sKK30K
Kwordm9pZCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpmaW5pc2hDcmVhdGlvbihKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFs
RGF0YSk7CisgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKK30KKworSlNPYmplY3QqIEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZVByb3RvdHlwZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGU6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCks
IGdsb2JhbE9iamVjdCwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKK30KKwordm9pZCBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQoreworICAgIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczo6fkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoKTsKK30K
KworSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6fkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMoKQoreworICAgIHJlbGVhc2VJbXBsSWZOb3ROdWxsKCk7Cit9CisKK2Jvb2wgSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCit7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4oY2VsbCk7CisgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyAgICByZXR1cm4gZ2V0
U3RhdGljVmFsdWVTbG90PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMsIEJhc2U+KGV4ZWMs
ICZKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCk7Cit9CisKK2Jvb2wgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KQoreworICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KG9iamVjdCk7CisgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyAgICByZXR1cm4gZ2V0U3Rh
dGljVmFsdWVEZXNjcmlwdG9yPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMsIEJhc2U+KGV4
ZWMsICZKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVGFibGUsIHRoaXNPYmplY3QsIHByb3Bl
cnR5TmFtZSwgZGVzY3JpcHRvcik7Cit9CisKK0pTVmFsdWUganNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJv
cGVydHlOYW1lKQoreworICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGRvbU9iamVj
dCA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4oYXNPYmplY3Qoc2xvdEJh
c2UpKTsKKyAgICByZXR1cm4gSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Z2V0Q29uc3Ry
dWN0b3IoZXhlYywgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0pTVmFsdWUgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Z2V0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Db25z
dHJ1Y3RvcjxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I+KGV4ZWMsIGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworfQorCitzdGF0aWMgaW5s
aW5lIGJvb2wgaXNPYnNlcnZhYmxlKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGpzVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpCit7CisgICAgaWYgKGpzVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMtPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNP
d25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
PiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzKiBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID0ganNDYXN0
PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwor
ICAgIGlmICghaXNPYnNlcnZhYmxlKGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOworICAgIHJldHVy
biBmYWxzZTsKK30KKwordm9pZCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzT3duZXI6OmZp
bmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQor
eworICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGpzVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KGhhbmRsZS5n
ZXQoKS5hc0NlbGwoKSk7CisgICAgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCA9IHN0YXRpY19jYXN0
PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCBq
c1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLT5pbXBsKCksIGpzVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMpOworICAgIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMtPnJlbGVhc2VJbXBs
KCk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogaW1w
bCkKK3sKKyAgICByZXR1cm4gd3JhcDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPihleGVj
LCBnbG9iYWxPYmplY3QsIGltcGwpOworfQorCitUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyog
dG9UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAg
cmV0dXJuIHZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpzX2lu
Zm8pID8ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihhc09iamVjdCh2YWx1
ZSkpLT5pbXBsKCkgOiAwOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NmJlOWM4OTZiYjM3OThjNzVjNGYzZDkyYzQ1MmVjNWZi
ZTFiNjBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaApAQCAtMCwwICsxLDE0MyBA
QAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHBy
b2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5k
aW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNfaAorI2RlZmluZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzX2gKKworI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmgiCisjaW5jbHVkZSA8cnVudGltZS9KU0dsb2JhbE9iamVjdC5oPgorI2luY2x1ZGUgPHJ1
bnRpbWUvSlNPYmplY3QuaD4KKyNpbmNsdWRlIDxydW50aW1lL09iamVjdFByb3RvdHlwZS5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMgOiBwdWJsaWMgSlNET01XcmFwcGVyIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRE9NV3Jh
cHBlciBCYXNlOworICAgIHN0YXRpYyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBjcmVh
dGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUGFzc1JlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbCkKKyAgICB7
CisgICAgICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4oZ2xvYmFs
T2JqZWN0LT5nbG9iYWxEYXRhKCkuaGVhcCkpIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMo
c3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIGltcGwpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0
aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAg
ICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5h
bWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlO
YW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDOjpKU0NlbGwqKTsKKyAgICB+SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycygpOworICAg
IHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CisKKyAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0
YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0
Kik7CisgICAgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGltcGwoKSBjb25zdCB7IHJldHVy
biBtX2ltcGw7IH0KKyAgICB2b2lkIHJlbGVhc2VJbXBsKCkgeyBtX2ltcGwtPmRlcmVmKCk7IG1f
aW1wbCA9IDA7IH0KKworICAgIHZvaWQgcmVsZWFzZUltcGxJZk5vdE51bGwoKSB7IGlmIChtX2lt
cGwpIHsgbV9pbXBsLT5kZXJlZigpOyBtX2ltcGwgPSAwOyB9IH0KKworcHJpdmF0ZToKKyAgICBU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogbV9pbXBsOworcHJvdGVjdGVkOgorICAgIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVj
dCosIFBhc3NSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+KTsKKyAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTQzo6SlNHbG9iYWxEYXRhJik7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBK
U0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05v
dFplcm8gfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKK307CisKK2NsYXNzIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7CisgICAg
dmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7
Cit9OworCitpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFw
cGVyV29ybGQqLCBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyopCit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzT3duZXIsIGpzVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNPd25lciwgKCkpOworICAgIHJldHVybiAmanNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc093bmVyOworfQorCitpbmxpbmUgdm9pZCogd3JhcHBlckNvbnRleHQoRE9N
V3JhcHBlcldvcmxkKiB3b3JsZCwgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqKQoreworICAg
IHJldHVybiB3b3JsZDsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBK
U0RPTUdsb2JhbE9iamVjdCosIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKik7CitUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycyogdG9UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhKU0M6OkpT
VmFsdWUpOworCitjbGFzcyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlIDog
cHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0M6
OkpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogc2VsZihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSogY3JlYXRlKEpTQzo6SlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGU+KGdsb2JhbERhdGEuaGVhcCkpIEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEp
OworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBKU0M6OkNs
YXNzSW5mbyBzX2luZm87CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19p
bmZvKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1Byb3RvdHlwZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0
KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkgeyB9Citwcm90ZWN0ZWQ6CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7Cit9OworCitj
bGFzcyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9N
Q29uc3RydWN0b3JPYmplY3QgeworcHJpdmF0ZToKKyAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOwor
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVj
dCopOworCitwdWJsaWM6CisgICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlOwor
ICAgIHN0YXRpYyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqIGNyZWF0
ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICB7CisgICAgICAgIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I+KCpleGVjLT5o
ZWFwKCkpKSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3Ioc3RydWN0dXJl
LCBnbG9iYWxPYmplY3QpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGdsb2Jh
bE9iamVjdCk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQ
cm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIGNvbnN0
IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksICZzX2luZm8pOworICAgIH0KK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpT
Qzo6SW1wbGVtZW50c0hhc0luc3RhbmNlIHwgRE9NQ29uc3RydWN0b3JPYmplY3Q6OlN0cnVjdHVy
ZUZsYWdzOworICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhKU0M6OkV4ZWNTdGF0ZSopOworICAg
IHN0YXRpYyBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCos
IEpTQzo6Q29uc3RydWN0RGF0YSYpOworfTsKKworLy8gQXR0cmlidXRlcworCitKU0M6OkpTVmFs
dWUganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zMTViN2JjNTdkYTdiMTZkZjczNGZiYWE2NzVkZjYyYjdjODFi
YjFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L09iakMvRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaApAQCAtMCwwICsxLDM0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBT
YW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8V2Vi
Q29yZS9ET01PYmplY3QuaD4KKworI2lmIFdFQktJVF9WRVJTSU9OX01BWF9BTExPV0VEID49IFdF
QktJVF9WRVJTSU9OX0xBVEVTVAorCitAaW50ZXJmYWNlIERPTVRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzIDogRE9NT2JqZWN0CitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDI5YmIyYmY3ZWE4MGE2
MTQ1NTk0OTRjZjZjNzhjMWQ1ODFkMmM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMubW0KQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBX
ZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKKworI2ltcG9ydCAiRE9NVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIKKworI2ltcG9ydCAiRE9NQmxvYkludGVybmFsLmgi
CisjaW1wb3J0ICJET01DU1NSdWxlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTUNTU1ZhbHVlSW50
ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTUV2ZW50SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTU5vZGVJ
bnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NU3R5bGVTaGVldEludGVybmFsLmgiCisjaW1wb3J0ICJE
T01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0ludGVybmFsLmgiCisjaW1wb3J0ICJFeGNlcHRp
b25IYW5kbGVycy5oIgorI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW1wb3J0
ICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIgorI2ltcG9ydCAiVGhyZWFkQ2hlY2suaCIK
KyNpbXBvcnQgIldlYkNvcmVPYmpDRXh0cmFzLmgiCisjaW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQ
cml2YXRlLmgiCisjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisKKyNkZWZpbmUgSU1QTCByZWludGVy
cHJldF9jYXN0PFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4oX2ludGVybmFs
KQorCitAaW1wbGVtZW50YXRpb24gRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMKKworLSAo
dm9pZClkZWFsbG9jCit7CisgICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9jYXRlT25N
YWluVGhyZWFkKFtET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyBjbGFzc10sIHNlbGYpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoX2ludGVybmFsKQorICAgICAgICBJTVBMLT5kZXJl
ZigpOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZClmaW5hbGl6ZQoreworICAg
IGlmIChfaW50ZXJuYWwpCisgICAgICAgIElNUEwtPmRlcmVmKCk7CisgICAgW3N1cGVyIGZpbmFs
aXplXTsKK30KKworQGVuZAorCitXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyog
Y29yZShET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyAqd3JhcHBlcikKK3sKKyAgICByZXR1
cm4gd3JhcHBlciA/IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMqPih3cmFwcGVyLT5faW50ZXJuYWwpIDogMDsKK30KKworRE9NVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMgKmtpdChXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyog
dmFsdWUpCit7CisgICAgeyBET01fQVNTRVJUX01BSU5fVEhSRUFEKCk7IFdlYkNvcmVUaHJlYWRW
aW9sYXRpb25DaGVja1JvdW5kT25lKCk7IH07CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICBpZiAoRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgKndyYXBwZXIg
PSBnZXRET01XcmFwcGVyKHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5d
IGF1dG9yZWxlYXNlXTsKKyAgICBET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyAqd3JhcHBl
ciA9IFtbRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgYWxsb2NdIF9pbml0XTsKKyAgICB3
cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4o
dmFsdWUpOworICAgIHZhbHVlLT5yZWYoKTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZh
bHVlKTsKKyAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNJbnRlcm5hbC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjhmZWNjODFjMzk2YmQwYTgyNWRhN2FiYjAxMWYyYzU2NzJhNmI0ZWQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0ludGVybmFsLmgKQEAgLTAsMCArMSwzOCBAQAorLyoK
KyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4K
KyAqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwu
IERPIE5PVCBNT0RJRlkhCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuaD4KKworI2lmIFdFQktJVF9WRVJTSU9OX01BWF9BTExPV0VEID49IFdF
QktJVF9WRVJTSU9OX0xBVEVTVAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM7Cit9CisKK1dlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzKiBjb3JlKERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzICopOworRE9NVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgKmtpdChXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyopOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaWRs
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZhMzg2ZjViOTdiZGQyMjZjMTkxMTE1MDkxYjAwYjkwZDM5MjdkZDcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaWRsCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zdHJBcmcsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFc3RyQXJnLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KK1sK
KyAgICBDb25zdHJ1Y3RvcihpbiBBcnJheUJ1ZmZlciBhcnJheUJ1ZmZlciksCisgICAgQ29uc3Ry
dWN0b3IoaW4gQXJyYXlCdWZmZXJWaWV3IGFycmF5QnVmZmVyVmlldyksCisgICAgQ29uc3RydWN0
b3IoaW4gQmxvYiBibG9iKSwKKyAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgc3RyaW5nKSwK
K10gaW50ZXJmYWNlIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIHsKK307CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5pZGwKaW5kZXggYzZkNDkzZGVm
ZjQwYzkyNDgzOWRjNDVlOWVlOWZiMzUyNjBlZTEzNi4uNjg3ZWFjNTQ3NzEzNTZmNjAxMmVlNzc3
OThjMjJjYzAwMDM4NzYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlLmlkbApAQCAtMjcsNyArMjcsNiBAQAogLy8gY2hhbmdlcyBpbiBpdHMgb3Vw
dXQuCiBbCiAgICAgQ29uZGl0aW9uYWw9Q29uZGl0aW9uMXxDb25kaXRpb24yLAotICAgIENvbnN0
cnVjdG9yKGluIERPTVN0cmluZyBoZWxsbywgaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIHZhbHVl
KSwKICAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgaGVsbG8sIGluIFtUcmFuc2Zlckxpc3Q9
dHJhbnNmZXJMaXN0XSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgZGF0YSwgaW4gW09wdGlvbmFsPURl
ZmF1bHRJc1VuZGVmaW5lZF0gQXJyYXkgdHJhbnNmZXJMaXN0KSwKIF0gaW50ZXJmYWNlIFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgewogICAgIGF0dHJpYnV0ZSBTZXJpYWxpemVk
U2NyaXB0VmFsdWUgdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDI1NDc2YzFkMTQxMzg4N2U0Y2MyMWJhY2VkNzVhNDA1OThk
MmFjYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtMCwwICsxLDIxMiBA
QAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHBy
b2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5k
aW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAgICBCb3N0b24sIE1B
IDAyMTExLTEzMDcsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJW
OFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgiCisKKyNpbmNsdWRlICJCaW5kaW5nU3RhdGUu
aCIKKyNpbmNsdWRlICJDb250ZXh0RmVhdHVyZXMuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgiCisjaW5jbHVkZSAiVjhBcnJheUJ1ZmZlci5oIgorI2luY2x1ZGUgIlY4QXJyYXlCdWZmZXJW
aWV3LmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhCbG9iLmgiCisjaW5j
bHVkZSAiVjhET01XcmFwcGVyLmgiCisjaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+CisjaW5j
bHVkZSA8d3RmL0FycmF5QnVmZmVyVmlldy5oPgorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dyYXBwZXJUeXBlSW5mbyBWOFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzOjppbmZvID0geyBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpH
ZXRUZW1wbGF0ZSwgVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6ZGVyZWZPYmplY3QsIDAs
IDAsIFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90
eXBlUHJvcGVydGllcywgMCwgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUgfTsKKworbmFtZXNw
YWNlIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVjhJbnRlcm5hbCB7CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPiB2b2lkIFY4X1VTRShUKSB7IH0KKworfSAvLyBuYW1lc3BhY2UgVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNWOEludGVybmFsCisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjFDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLkNvbnN0cnVjdG9yMSIpOworICAgIAorICAgIEVYQ0VQVElPTl9CTE9DSyhBcnJh
eUJ1ZmZlciosIGFycmF5QnVmZmVyLCBWOEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZShNQVlCRV9N
SVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSA/IFY4QXJyYXlC
dWZmZXI6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoTUFZQkVfTUlTU0lO
R19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpIDogMCk7CisKKyAgICBS
ZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGltcGwgPSBUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6Y3JlYXRlKGFycmF5QnVmZmVyKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOworCisgICAgVjhET01XcmFwcGVyOjpzZXRET01X
cmFwcGVyKHdyYXBwZXIsICZpbmZvLCBpbXBsLmdldCgpKTsKKyAgICBWOERPTVdyYXBwZXI6OnNl
dEpTV3JhcHBlckZvckRPTU9iamVjdChpbXBsLnJlbGVhc2UoKSwgd3JhcHBlciwgYXJncy5HZXRJ
c29sYXRlKCkpOworICAgIHJldHVybiB3cmFwcGVyOworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3IyQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycy5Db25zdHJ1Y3RvcjIiKTsKKyAgICAKKyAgICBFWENFUFRJT05fQkxP
Q0soQXJyYXlCdWZmZXJWaWV3KiwgYXJyYXlCdWZmZXJWaWV3LCBWOEFycmF5QnVmZmVyVmlldzo6
SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKSkgPyBWOEFycmF5QnVmZmVyVmlldzo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Pjo6Q2FzdChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRl
ZmluZWQpKSkgOiAwKTsKKworICAgIFJlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4g
aW1wbCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoYXJyYXlCdWZmZXJWaWV3
KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwor
CisgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKHdyYXBwZXIsICZpbmZvLCBpbXBsLmdl
dCgpKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChpbXBsLnJl
bGVhc2UoKSwgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB3cmFwcGVy
OworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
czo6Y29uc3RydWN0b3IzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAg
ICBJTkNfU1RBVFMoIkRPTS5UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5Db25zdHJ1Y3RvcjMi
KTsKKyAgICAKKyAgICBFWENFUFRJT05fQkxPQ0soQmxvYiosIGJsb2IsIFY4QmxvYjo6SGFzSW5z
dGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVk
KSkgPyBWOEJsb2I6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoTUFZQkVf
TUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpIDogMCk7CisK
KyAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGltcGwgPSBUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKGJsb2IpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CisKKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdy
YXBwZXIod3JhcHBlciwgJmluZm8sIGltcGwuZ2V0KCkpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0
SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltcGwucmVsZWFzZSgpLCB3cmFwcGVyLCBhcmdzLkdldElz
b2xhdGUoKSk7CisgICAgcmV0dXJuIHdyYXBwZXI7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjRDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLkNvbnN0cnVjdG9yNCIpOworICAgIAorICAgIFNUUklOR19UT19WOFBB
UkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8Piwgc3RyaW5nLCBNQVlCRV9NSVNT
SU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKKworICAgIFJlZlB0
cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbCA9IFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpjcmVhdGUoc3RyaW5nKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBw
ZXIgPSBhcmdzLkhvbGRlcigpOworCisgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKHdy
YXBwZXIsICZpbmZvLCBpbXBsLmdldCgpKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBl
ckZvckRPTU9iamVjdChpbXBsLnJlbGVhc2UoKSwgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkp
OworICAgIHJldHVybiB3cmFwcGVyOworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLkNvbnN0cnVjdG9yIik7CisgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQor
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fu
bm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIpOworCisgICAgaWYgKENvbnN0cnVjdG9yTW9k
ZTo6Y3VycmVudCgpID09IENvbnN0cnVjdG9yTW9kZTo6V3JhcEV4aXN0aW5nT2JqZWN0KQorICAg
ICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKKworICAgIGlmICgoYXJncy5MZW5ndGgoKSA9PSAx
ICYmIChWOEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZShhcmdzWzBdKSkpKQorICAgICAgICByZXR1
cm4gY29uc3RydWN0b3IxQ2FsbGJhY2soYXJncyk7CisgICAgaWYgKChhcmdzLkxlbmd0aCgpID09
IDEgJiYgKFY4QXJyYXlCdWZmZXJWaWV3OjpIYXNJbnN0YW5jZShhcmdzWzBdKSkpKQorICAgICAg
ICByZXR1cm4gY29uc3RydWN0b3IyQ2FsbGJhY2soYXJncyk7CisgICAgaWYgKChhcmdzLkxlbmd0
aCgpID09IDEgJiYgKFY4QmxvYjo6SGFzSW5zdGFuY2UoYXJnc1swXSkpKSkKKyAgICAgICAgcmV0
dXJuIGNvbnN0cnVjdG9yM0NhbGxiYWNrKGFyZ3MpOworICAgIGlmIChhcmdzLkxlbmd0aCgpID09
IDEpCisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjRDYWxsYmFjayhhcmdzKTsKKyAgICBpZiAo
YXJncy5MZW5ndGgoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoMCwg
YXJncy5HZXRJc29sYXRlKCkpOworfQorCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUZW1wbGF0
ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYykKK3sKKyAgICBkZXNj
LT5SZWFkT25seVByb3RvdHlwZSgpOworCisgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRl
ZmF1bHRTaWduYXR1cmU7CisgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlv
bjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIiwg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM6OmludGVybmFsRmllbGRDb3VudCwKKyAgICAgICAgMCwgMCwKKyAgICAgICAg
MCwgMCk7CisgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNh
c2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgorICAgIGRlc2MtPlNldENhbGxIYW5kbGVyKFY4VGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOworICAgIAorCisg
ICAgLy8gQ3VzdG9tIHRvU3RyaW5nIHRlbXBsYXRlCisgICAgZGVzYy0+U2V0KHY4OjpTdHJpbmc6
Ok5ld1N5bWJvbCgidG9TdHJpbmciKSwgVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT50b1N0
cmluZ1RlbXBsYXRlKCkpOworICAgIHJldHVybiBkZXNjOworfQorCit2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6R2V0UmF3
VGVtcGxhdGUoKQoreworICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVE
YXRhOjpjdXJyZW50KCk7CisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJh
dG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CisgICAgaWYg
KHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgICAgICByZXR1cm4g
cmVzdWx0LT52YWx1ZTsKKworICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKyAgICB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPSBjcmVhdGVSYXdUZW1w
bGF0ZSgpOworICAgIGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7Cisg
ICAgcmV0dXJuIHRlbXBsOworfQorCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6R2V0VGVtcGxhdGUoKQoreworICAgIFY4
UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCk7CisgICAg
VjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRl
bXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0
ZU1hcCgpLmVuZCgpKQorICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKKworICAgIHY4OjpI
YW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gdGVtcGwgPQorICAgICAgICBDb25maWd1cmVWOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzVGVtcGxhdGUoR2V0UmF3VGVtcGxhdGUoKSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAo
KS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICByZXR1cm4gdGVtcGw7Cit9CisKK2Jvb2wgVjhUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHZhbHVlKQoreworICAgIHJldHVybiBHZXRSYXdUZW1wbGF0ZSgpLT5IYXNJbnN0YW5jZSh2YWx1
ZSk7Cit9CisKKwordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjp3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiBp
bXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUpCit7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyOworICAgIC8v
IFBsZWFzZSBkb24ndCBhZGQgYW55IG1vcmUgdXNlcyBvZiB0aGlzIHZhcmlhYmxlLgorICAgIERv
Y3VtZW50KiBkZXByZWNhdGVkRG9jdW1lbnQgPSAwOworICAgIFVOVVNFRF9QQVJBTShkZXByZWNh
dGVkRG9jdW1lbnQpOworCisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dDsKKyAg
ICBpZiAoIWNyZWF0aW9uQ29udGV4dC5Jc0VtcHR5KCkgJiYgY3JlYXRpb25Db250ZXh0LT5DcmVh
dGlvbkNvbnRleHQoKSAhPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpKSB7CisgICAgICAgIC8v
IEZvciBwZXJmb3JtYW5jZSwgd2UgZW50ZXIgdGhlIGNvbnRleHQgb25seSBpZiB0aGUgY3VycmVu
dGx5IHJ1bm5pbmcgY29udGV4dAorICAgICAgICAvLyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgY29u
dGV4dCB0aGF0IHdlIGFyZSBhYm91dCB0byBlbnRlci4KKyAgICAgICAgY29udGV4dCA9IHY4OjpM
b2NhbDx2ODo6Q29udGV4dD46Ok5ldyhjcmVhdGlvbkNvbnRleHQtPkNyZWF0aW9uQ29udGV4dCgp
KTsKKyAgICAgICAgQVNTRVJUKCFjb250ZXh0LklzRW1wdHkoKSk7CisgICAgICAgIGNvbnRleHQt
PkVudGVyKCk7CisgICAgfQorCisgICAgd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlh
dGVWOE9iamVjdChkZXByZWNhdGVkRG9jdW1lbnQsICZpbmZvLCBpbXBsLmdldCgpKTsKKworICAg
IGlmICghY29udGV4dC5Jc0VtcHR5KCkpCisgICAgICAgIGNvbnRleHQtPkV4aXQoKTsKKworICAg
IGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCisgICAgICAgIHJldHVybiB3cmFwcGVy
OworCisgICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCkp
OworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdy
YXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChpbXBsLCB3cmFwcGVyLCBpc29sYXRlKTsK
KyAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQorICAgICAgICB3cmFwcGVySGFuZGxlLk1h
cmtJbmRlcGVuZGVudCgpOworICAgIHJldHVybiB3cmFwcGVyOworfQorCit2b2lkIFY4VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmRlcmVmT2JqZWN0KHZvaWQqIG9iamVjdCkKK3sKKyAgICBz
dGF0aWNfY2FzdDxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KG9iamVjdCktPmRlcmVmKCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2NDUzMDRiODdlMmQwY2QzZWMzZjIzMjU2ZWQ2
NjkxMGYzY2I3NjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCkBAIC0wLDAgKzEs
ODAgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJj
ZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUt
YmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgICAgQm9zdG9u
LCBNQSAwMjExMS0xMzA3LCBVU0EuCisqLworCisjaWZuZGVmIFY4VGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNfaAorI2RlZmluZSBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzX2gKKworI2lu
Y2x1ZGUgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5n
LmgiCisjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCisjaW5jbHVkZSAiV3JhcHBlclR5cGVJbmZv
LmgiCisjaW5jbHVkZSA8djguaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBW
OFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IGZhbHNlOworICAgIHN0YXRpYyBib29sIEhhc0lu
c3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPik7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRSYXdUZW1wbGF0ZSgpOworICAgIHN0YXRpYyB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUoKTsKKyAgICBzdGF0
aWMgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gb2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihvYmplY3QtPkdldFBvaW50ZXJGcm9tSW50ZXJuYWxG
aWVsZCh2OERPTVdyYXBwZXJPYmplY3RJbmRleCkpOworICAgIH0KKyAgICBpbmxpbmUgc3RhdGlj
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyos
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogPSAwKTsKKyAgICBzdGF0aWMgdm9pZCBkZXJlZk9iamVj
dCh2b2lkKik7CisgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyBpbmZvOworICAgIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJik7CisgICAgc3RhdGljIGNvbnN0IGludCBpbnRlcm5hbEZpZWxkQ291bnQgPSB2OERlZmF1
bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxs
UGVyQ29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMqKSB7IH0KKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFBy
b3RvdHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PikgeyB9Citwcml2YXRlOgor
ICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBTbG93KFBhc3NSZWZQdHI8VGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9u
Q29udGV4dCwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGNvbnN0cnVjdG9yMUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKKyAgICBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yMkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmKTsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yM0Nh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGNvbnN0cnVjdG9yNENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKK307CisK
K3Y4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6d3Jh
cChUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0
ZSktPmdldChpbXBsKTsKKyAgICAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAg
ICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzOjp3cmFwU2xvdyhpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCitpbmxp
bmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMq
IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCit7CisgICAgaWYgKCFp
bXBsKQorICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOworICAgIHJldHVy
biBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4
dCwgaXNvbGF0ZSk7Cit9CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoUGFzc1Jl
ZlB0cjwgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUgPSAwKQoreworICAgIHJldHVybiB0b1Y4KGltcGwuZ2V0KCksIGNyZWF0
aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKK30KKworI2VuZGlmIC8vIFY4VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAKaW5kZXggYTVkZTlhNDIzYWViNTFkNmE0YWE5
NDIwNDI4NzFmYjVlOGYyNzkyNi4uOWM0ZmM3ZmExNjIxODY5ZjYxZjhlYzViMGEwMzgyOWM5ZWY4
YWYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2Vi
U29ja2V0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhXZWJTb2NrZXRDdXN0b20uY3BwCkBAIC01MSw2NCArNTEsNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYlNvY2tldDo6Y29uc3RydWN0b3JD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9N
LldlYlNvY2tldC5Db25zdHJ1Y3RvciIpOwotCi0gICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2Fs
bCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0
b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsK
LQotICAgIGlmIChDb25zdHJ1Y3Rvck1vZGU6OmN1cnJlbnQoKSA9PSBDb25zdHJ1Y3Rvck1vZGU6
OldyYXBFeGlzdGluZ09iamVjdCkKLSAgICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7Ci0KLSAg
ICBpZiAoYXJncy5MZW5ndGgoKSA9PSAwKQotICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7Ci0KLSAgICB2ODo6VHJ5Q2F0Y2ggdHJ5
Q2F0Y2g7Ci0gICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiB1cmxzdHJpbmcgPSBhcmdzWzBdLT5U
b1N0cmluZygpOwotICAgIGlmICh0cnlDYXRjaC5IYXNDYXVnaHQoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IodHJ5Q2F0Y2guRXhjZXB0aW9uKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAg
ICBpZiAodXJsc3RyaW5nLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoU3lu
dGF4RXJyb3IsICJFbXB0eSBVUkwiLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0KLSAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwot
ICAgIGNvbnN0IEtVUkwmIHVybCA9IGNvbnRleHQtPmNvbXBsZXRlVVJMKHRvV2ViQ29yZVN0cmlu
Zyh1cmxzdHJpbmcpKTsKLQotICAgIFJlZlB0cjxXZWJTb2NrZXQ+IHdlYlNvY2tldCA9IFdlYlNv
Y2tldDo6Y3JlYXRlKGNvbnRleHQpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotCi0gICAg
aWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQotICAgICAgICB3ZWJTb2NrZXQtPmNvbm5lY3QodXJsLCBl
Yyk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHByb3RvY29sc1Zh
bHVlID0gYXJnc1sxXTsKLSAgICAgICAgaWYgKHByb3RvY29sc1ZhbHVlLT5Jc0FycmF5KCkpIHsK
LSAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHByb3RvY29sczsKLSAgICAgICAgICAgIHY4OjpM
b2NhbDx2ODo6QXJyYXk+IHByb3RvY29sc0FycmF5ID0gdjg6OkxvY2FsPHY4OjpBcnJheT46OkNh
c3QocHJvdG9jb2xzVmFsdWUpOwotICAgICAgICAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8
IHByb3RvY29sc0FycmF5LT5MZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdjg6OlRy
eUNhdGNoIHRyeUNhdGNoUHJvdG9jb2w7Ci0gICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6
U3RyaW5nPiBwcm90b2NvbCA9IHByb3RvY29sc0FycmF5LT5HZXQodjg6OkludDMyOjpOZXcoaSkp
LT5Ub1N0cmluZygpOwotICAgICAgICAgICAgICAgIGlmICh0cnlDYXRjaFByb3RvY29sLkhhc0Nh
dWdodCgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih0cnlDYXRjaFBy
b3RvY29sLkV4Y2VwdGlvbigpLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgICAgICAgICAgICAg
cHJvdG9jb2xzLmFwcGVuZCh0b1dlYkNvcmVTdHJpbmcocHJvdG9jb2wpKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHdlYlNvY2tldC0+Y29ubmVjdCh1cmwsIHByb3RvY29scywgZWMpOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoUHJvdG9j
b2w7Ci0gICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHByb3RvY29sID0gcHJvdG9j
b2xzVmFsdWUtPlRvU3RyaW5nKCk7Ci0gICAgICAgICAgICBpZiAodHJ5Q2F0Y2hQcm90b2NvbC5I
YXNDYXVnaHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih0cnlDYXRjaFBy
b3RvY29sLkV4Y2VwdGlvbigpLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgICAgICAgICB3ZWJT
b2NrZXQtPmNvbm5lY3QodXJsLCB0b1dlYkNvcmVTdHJpbmcocHJvdG9jb2wpLCBlYyk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9u
KGVjLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0KLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcih3
cmFwcGVyLCAmaW5mbywgd2ViU29ja2V0LmdldCgpKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldEpT
V3JhcHBlckZvckRPTU9iamVjdCh3ZWJTb2NrZXQucmVsZWFzZSgpLCB3cmFwcGVyKTsKLSAgICBy
ZXR1cm4gd3JhcHBlcjsKLX0KLQogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViU29ja2V0Ojpz
ZW5kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMo
IkRPTS5XZWJTb2NrZXQuc2VuZCgpIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjNhNWNjZTdkMGFlYmE5NTdhODQxYzY5
M2Q2MmM0OWFiMWQ2N2ZhNS4uZTcwMzA2NjRhOThhMGM4M2UzOWUwMDJjYmE1NWVmZDIzODBkMWQw
ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTExLTAxICBUb21teSBXaWRlbmZseWNodCAg
PHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgVjggY3VzdG9tIGNvZGUg
Zm9yIFdlYlNvY2tldHMgY29uc3RydWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMDgwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIHRlc3QgZm9yIG51bGwgYXJndW1lbnQgdG8gV2ViU29j
a2V0KHVybCkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Vy
bC1wYXJzaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3VybC1wYXJzaW5nLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0t
d2luL3dlYnNvY2tldC90ZXN0cy91cmwtcGFyc2luZy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni91cmwt
cGFyc2luZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtcGFyc2luZy1leHBlY3RlZC50eHQ6CisKIDIw
MTItMTEtMDcgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIFdlYktpdCBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC1wYXJzaW5nLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXBhcnNpbmctZXhw
ZWN0ZWQudHh0CmluZGV4IDlkMGM1MTg5YjA0YzI1ZmFlNDUwZmZlM2YwNzA5MmE1OTYxYmI0YjEu
LmU4YTc0ZTIwOTM0ZmYyMDdjY2RlNjJmNzBmMzgwNTE0N2ZhMTFkZjggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXBhcnNpbmctZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvdXJsLXBhcnNpbmctZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsNCBAQAorQ09OU09MRSBNRVNT
QUdFOiBJbnZhbGlkIHVybCBmb3IgV2ViU29ja2V0IG51bGwKIENPTlNPTEUgTUVTU0FHRTogSW52
YWxpZCB1cmwgZm9yIFdlYlNvY2tldCB3czovL2phdmFzY3JpcHQ6YQogQ09OU09MRSBNRVNTQUdF
OiBJbnZhbGlkIHVybCBmb3IgV2ViU29ja2V0IC9hcHBsZXQKIENPTlNPTEUgTUVTU0FHRTogV3Jv
bmcgdXJsIHNjaGVtZSBmb3IgV2ViU29ja2V0IGphdmFzY3JpcHQ6YQpAQCAtOSw2ICsxMCw3IEBA
IFRlc3QgV2ViU29ja2V0IFVSTCBwYXJzaW5nLgogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgog
CiBQQVNTIG5ldyBXZWJTb2NrZXQoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5v
dWdoIGFyZ3VtZW50cy4KK1BBU1MgbmV3IFdlYlNvY2tldChudWxsKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCiBQQVNTIG5ldyBXZWJTb2NrZXQo
IndzOi8vamF2YXNjcmlwdDphIikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBE
T00gRXhjZXB0aW9uIDEyLgogUEFTUyBuZXcgV2ViU29ja2V0KCIvYXBwbGV0IikgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgogUEFTUyBuZXcgV2Vi
U29ja2V0KCJqYXZhc2NyaXB0OmEiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6
IERPTSBFeGNlcHRpb24gMTIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3VybC1wYXJzaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC1wYXJzaW5nLmh0bWwKaW5kZXggNzNkMzY4YmRj
NzI4Yjc1MjgyOTM2OTkwYWQ2ZGY4NTVkYzU5NTIwOS4uNDQxMzJmNzI3ZWQzMmE4MzhiNDUzNzhh
MzhmYTdiZDY2OWQ2NTRiNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS91cmwtcGFyc2luZy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXBhcnNpbmcuaHRtbApAQCAtMTIsNiArMTIs
OSBAQCBkZXNjcmlwdGlvbigiVGVzdCBXZWJTb2NrZXQgVVJMIHBhcnNpbmcuIik7CiAvLyBOb3Qg
ZW5vdWdoIGFyZ3VtZW50cy4KIHNob3VsZFRocm93KCduZXcgV2ViU29ja2V0KCknKTsKIAorLy8g
TnVsbCBVUkwKK3Nob3VsZFRocm93KCduZXcgV2ViU29ja2V0KG51bGwpJyk7CisKIC8vIEludmFs
aWQgdXJsIHdpbGwgZmFpbCB0byBiZSBwYXJzZWQuCiBzaG91bGRUaHJvdygnbmV3IFdlYlNvY2tl
dCgid3M6Ly9qYXZhc2NyaXB0OmEiKScpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS13aW4vd2Vic29ja2V0L3Rlc3RzL3VybC1wYXJzaW5nLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi93ZWJzb2NrZXQvdGVzdHMvdXJs
LXBhcnNpbmctZXhwZWN0ZWQudHh0CmluZGV4IDg4NzVlZGIzOTllNDE0ZTBkYjdiODc5MDkxNmJk
ZjllMGIyMzJlY2YuLjFlOTVlNDRlM2I4NjQwMDFjYWI0MDEzOGJjODJmYWU2ODIyNTA2M2YgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi93ZWJzb2NrZXQvdGVz
dHMvdXJsLXBhcnNpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtLXdpbi93ZWJzb2NrZXQvdGVzdHMvdXJsLXBhcnNpbmctZXhwZWN0ZWQudHh0CkBAIC0x
LDMgKzEsNCBAQAorQ09OU09MRSBNRVNTQUdFOiBXcm9uZyB1cmwgc2NoZW1lIGZvciBXZWJTb2Nr
ZXQgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3dlYnNvY2tldC90ZXN0cy9oeWJpL251bGwKIENPTlNP
TEUgTUVTU0FHRTogSW52YWxpZCB1cmwgZm9yIFdlYlNvY2tldCB3czovL2phdmFzY3JpcHQ6YS8K
IENPTlNPTEUgTUVTU0FHRTogV3JvbmcgdXJsIHNjaGVtZSBmb3IgV2ViU29ja2V0IGh0dHA6Ly8x
MjcuMC4wLjE6ODg4MC9hcHBsZXQKIENPTlNPTEUgTUVTU0FHRTogV3JvbmcgdXJsIHNjaGVtZSBm
b3IgV2ViU29ja2V0IGphdmFzY3JpcHQ6YQpAQCAtOCw2ICs5LDcgQEAgVGVzdCBXZWJTb2NrZXQg
VVJMIHBhcnNpbmcuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAorUEFTUyBuZXcgV2Vi
U29ja2V0KG51bGwpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2Vw
dGlvbiAxMi4KIFBBU1MgbmV3IFdlYlNvY2tldCgid3M6Ly9qYXZhc2NyaXB0OmEiKSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCiBQQVNTIG5ldyBX
ZWJTb2NrZXQoIi9hcHBsZXQiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERP
TSBFeGNlcHRpb24gMTIuCiBQQVNTIG5ldyBXZWJTb2NrZXQoImphdmFzY3JpcHQ6YSIpIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2hpeGllNzYvdXJsLXBhcnNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni91cmwtcGFyc2lu
Zy1leHBlY3RlZC50eHQKaW5kZXggOTE5NWVhZTAzZjEwMzMyZTIyNzdmNDBmMGVkOGI4YmQ1Mjhj
ZTRkNC4uYjUwZTA0ZGZkODkwMzFmMTVhOTU5M2ZmYzg0OTRkNDY2MjMxZGJmOSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaGl4aWU3Ni91cmwtcGFyc2luZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni91cmwtcGFy
c2luZy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw0IEBACitDT05TT0xFIE1FU1NBR0U6IFdyb25n
IHVybCBzY2hlbWUgZm9yIFdlYlNvY2tldCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvbnVsbAogQ09OU09MRSBNRVNTQUdFOiBJbnZhbGlkIHVybCBmb3IgV2ViU29j
a2V0IHdzOi8vamF2YXNjcmlwdDphLwogQ09OU09MRSBNRVNTQUdFOiBXcm9uZyB1cmwgc2NoZW1l
IGZvciBXZWJTb2NrZXQgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2FwcGxldAogQ09OU09MRSBNRVNT
QUdFOiBXcm9uZyB1cmwgc2NoZW1lIGZvciBXZWJTb2NrZXQgamF2YXNjcmlwdDphCkBAIC05LDYg
KzEwLDcgQEAgVGVzdCBXZWJTb2NrZXQgVVJMIHBhcnNpbmcuCiBPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCiAKIFBBU1MgbmV3IFdlYlNvY2tldCgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IE5vdCBlbm91Z2ggYXJndW1lbnRzLgorUEFTUyBuZXcgV2ViU29ja2V0KG51bGwpIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KIFBBU1MgbmV3IFdl
YlNvY2tldCgid3M6Ly9qYXZhc2NyaXB0OmEiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRB
WF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCiBQQVNTIG5ldyBXZWJTb2NrZXQoIi9hcHBsZXQiKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCiBQQVNT
IG5ldyBXZWJTb2NrZXQoImphdmFzY3JpcHQ6YSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lO
VEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXBhcnNpbmct
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtcGFyc2luZy1leHBlY3RlZC50eHQKaW5kZXggZGMyNjgz
MWRiYjBkNDhlNmFkZmRjNmM0MjVhNDY4Mjc3MTQzNmJkOC4uMzU2ZWI2ZTRmODUzZWU2OGM2OTI0
OGRiNDNmMTJlYzdiYjhmYzkwZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtcGFyc2luZy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS91cmwtcGFyc2luZy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw0IEBA
CitDT05TT0xFIE1FU1NBR0U6IFdyb25nIHVybCBzY2hlbWUgZm9yIFdlYlNvY2tldCBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbnVsbAogQ09OU09MRSBNRVNTQUdF
OiBJbnZhbGlkIHVybCBmb3IgV2ViU29ja2V0IHdzOi8vamF2YXNjcmlwdDphLwogQ09OU09MRSBN
RVNTQUdFOiBXcm9uZyB1cmwgc2NoZW1lIGZvciBXZWJTb2NrZXQgaHR0cDovLzEyNy4wLjAuMTo4
MDAwL2FwcGxldAogQ09OU09MRSBNRVNTQUdFOiBXcm9uZyB1cmwgc2NoZW1lIGZvciBXZWJTb2Nr
ZXQgamF2YXNjcmlwdDphCkBAIC05LDYgKzEwLDcgQEAgVGVzdCBXZWJTb2NrZXQgVVJMIHBhcnNp
bmcuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIFBBU1MgbmV3IFdlYlNvY2tldCgpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgorUEFTUyBuZXcg
V2ViU29ja2V0KG51bGwpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4
Y2VwdGlvbiAxMi4KIFBBU1MgbmV3IFdlYlNvY2tldCgid3M6Ly9qYXZhc2NyaXB0OmEiKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCiBQQVNTIG5l
dyBXZWJTb2NrZXQoIi9hcHBsZXQiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6
IERPTSBFeGNlcHRpb24gMTIuCiBQQVNTIG5ldyBXZWJTb2NrZXQoImphdmFzY3JpcHQ6YSIpIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173043</attachid>
            <date>2012-11-08 07:44:42 -0800</date>
            <delta_ts>2012-11-09 01:12:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100801-20121108164251.patch</filename>
            <type>text/plain</type>
            <size>90743</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzODQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWE0YTQ1ODc5NjJjOTU3
NGQ3NDVhMWQyNTIyM2ZjZTQyMjJlMjgzYS4uZGVlZTJjZGY3MDM4Y2UyZmRkMGU1MGRhOTNjMDQz
NzBjYWJlMjA5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxMi0xMS0wMSAgVG9t
bXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhl
IFY4IGN1c3RvbSBjb2RlIGZvciBXZWJTb2NrZXRzIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA4MDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGRvZXMgdGhlIGZv
bGxvd2luZzoKKworICAgICAgICAxKSBNb2RpZmllcyB0aGUgVjggY29kZSBnZW5lcmF0b3IgdG8g
c3VwcG9ydCBvdmVybG9hZGVkIGNvbnN0cnVjdG9ycywKKyAgICAgICAgICAgdGhlIEpTIGdlbmVy
YXRvciBpcyBmaXhlZCB0byB3b3JrIGFzIGJlZm9yZS4gUHJvcGVyIHN1cHBvcnQgZm9yIEpTIHdp
bGwgY29tZSBsYXRlci4KKworICAgICAgICAyKSBNb2RpZmllcyBXZWJTb2NrZXQuaC8uY3BwIGZv
ciB0aGUgbmV3IGNvbnN0cnVjdG9ycy4KKworICAgICAgICBUZXN0ZWQgYnkgcnVubmluZyBXZWJT
b2NrZXRzIGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgor
ICAgICAgICAoV2ViU29ja2V0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToK
KyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVy
KToKKyAgICAgICAgKEdlbmVyYXRlT3ZlcmxvYWRlZENvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAg
ICAgICAoR2VuZXJhdGVTaW5nbGVDb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKEdlbmVy
YXRlQ29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9u
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbToKKyAgICAgICAgKGNv
cHlBdHRyaWJ1dGVzKToKKyAgICAgICAgKHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KToKKyAg
ICAgICAgKHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVzKToKKyAgICAgICAgKGFwcGx5RXh0ZW5kZWRB
dHRyaWJ1dGVMaXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETFN0cnVjdHVyZS5w
bToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6V2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlOjpX
ZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGUpOgorICAgICAgICAoV2ViRE9N
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OldlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzUHJpdmF0ZSk6CisgICAgICAgIChXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
V2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOgorICAgICAgICAoV2ViRE9NVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJET01UZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczo6aW1wbCk6CisgICAgICAgIChXZWJET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6fldlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKToKKyAgICAg
ICAgKHRvV2ViQ29yZSk6CisgICAgICAgICh0b1dlYktpdCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktp
dERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpraXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAg
ICAgICAgKFdlYktpdDo6d3JhcFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKToKKyAgICAgICAg
KHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19maW5hbGl6ZSk6CisgICAg
ICAgICh3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfc2V0X3Byb3BlcnR5
KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19nZXRf
cHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0
b3JzX2NvbnN0cnVjdGVkKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2Nv
bnN0cnVjdG9yc19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vdmVybG9h
ZGVkX2NvbnN0cnVjdG9yc19pbml0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOiBBZGRlZC4KKyAg
ICAgICAgKF9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk6CisgICAgICAgIChf
V2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDbGFzcyk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNQcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnND
b25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rv
cjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZTo6c2VsZik6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6On5KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmdldE93blBy
b3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OmlzT2JzZXJ2YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNPd25lcjo6ZmluYWxpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChXZWJDb3JlOjp0b1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6cmVsZWFzZUltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6cmVsZWFzZUlt
cGxJZk5vdE51bGwpOgorICAgICAgICAoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OndyYXBwZXJPd25lcik6CisgICAgICAgIChXZWJDb3JlOjp3
cmFwcGVyQ29udGV4dCk6CisgICAgICAgIChKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJv
dG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQ
cm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZTo6SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1Byb3RvdHlwZSk6CisgICAgICAgIChKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc0NvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bRE9NVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgZGVhbGxvY10pOgorICAgICAgICAoLVtET01UZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyBmaW5hbGl6ZV0pOgorICAgICAgICAoY29yZSk6CisgICAgICAgIChr
aXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzSW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
aWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5pZGwuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaWRsOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzVjhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1Y4SW50ZXJuYWw6OlY4X1VTRSk6CisgICAgICAgIChXZWJDb3JlOjpW
OFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjFDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjJD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
Ojpjb25zdHJ1Y3RvcjNDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUZW1w
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpH
ZXRSYXdUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzOjpIYXNJbnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjp3cmFwU2xvdyk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjpkZXJlZk9iamVjdCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMp
OgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6dG9OYXRp
dmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6aW5z
dGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6
CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp3cmFwKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OFdlYlNvY2tldEN1c3RvbS5jcHA6CisKIDIwMTItMTEtMDcgIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxMzM4NDEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwCmluZGV4IDQ2ZDYyZGU4OWY0NjY4ZmU3YTE1MWZlZWQ1MzExMzgyNDczMDI3ZGEuLmU0
YTQ1NjBkNDhhMzkwNzI3ZjRiY2NlMWZlZDYzMmM1Yzg4MzljNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0xNjQsNiArMTY0LDM2
IEBAIFBhc3NSZWZQdHI8V2ViU29ja2V0PiBXZWJTb2NrZXQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQogICAgIHJldHVybiB3ZWJTb2NrZXQucmVsZWFzZSgpOwogfQog
CitQYXNzUmVmUHRyPFdlYlNvY2tldD4gV2ViU29ja2V0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIFZlY3RvcjxTdHJpbmc+IHByb3RvY29sczsKKyAgICByZXR1cm4gV2ViU29ja2V0Ojpj
cmVhdGUoY29udGV4dCwgdXJsLCBwcm90b2NvbHMsIGVjKTsKK30KKworUGFzc1JlZlB0cjxXZWJT
b2NrZXQ+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvdG9jb2xzLCBFeGNl
cHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAodXJsLmlzTnVsbCgpKSB7CisgICAgICAgIGVjID0g
U1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgUmVmUHRyPFdlYlNv
Y2tldD4gd2ViU29ja2V0KGFkb3B0UmVmKG5ldyBXZWJTb2NrZXQoY29udGV4dCkpKTsKKyAgICB3
ZWJTb2NrZXQtPnN1c3BlbmRJZk5lZWRlZCgpOworCisgICAgd2ViU29ja2V0LT5jb25uZWN0KGNv
bnRleHQtPmNvbXBsZXRlVVJMKHVybCksIHByb3RvY29scywgZWMpOworICAgIGlmIChlYykKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gd2ViU29ja2V0LnJlbGVhc2UoKTsKK30KKwor
UGFzc1JlZlB0cjxXZWJTb2NrZXQ+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29s
LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBwcm90b2NvbHM7Cisg
ICAgcHJvdG9jb2xzLmFwcGVuZChwcm90b2NvbCk7CisgICAgcmV0dXJuIFdlYlNvY2tldDo6Y3Jl
YXRlKGNvbnRleHQsIHVybCwgcHJvdG9jb2xzLCBlYyk7Cit9CisKIHZvaWQgV2ViU29ja2V0Ojpj
b25uZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBWZWN0
b3I8U3RyaW5nPiBwcm90b2NvbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmgKaW5kZXggYTkzNTUyOGJhMjQ2MTIyMTkyN2Q1YjMzZTFiNWNmNjU5NzRj
NDRkMi4uMmJhZTUzOWIxYjUxMjUzYTRiMzNjZWJiNWI4NDY5NjhlZWE0OGM0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApAQCAtNTYsNiArNTYs
OSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKICAgICBzdGF0aWMg
Y29uc3QgY2hhciogc3ViUHJvdG9jb2xTZXBlcmF0b3IoKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJTb2NrZXQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvdG9jb2xzLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgdmlydHVhbCB+V2ViU29ja2V0KCk7CiAKICAgICBlbnVtIFN0YXRlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQu
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwKaW5k
ZXggNzJjZjVkNGU5Y2MxN2JjOTJmNzM4ZjA5YmU2OGFjYjIwMTFlZTk0Ny4uMjNhY2M1ZjExNTgz
YjBmMzc1OGFlNzhlMWExZGZjYmNjZWQwNWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwKQEAgLTMyLDEwICszMiwxNSBAQAogWwogICAg
IENvbmRpdGlvbmFsPVdFQl9TT0NLRVRTLAogICAgIEFjdGl2ZURPTU9iamVjdCwKLSAgICBDdXN0
b21Db25zdHJ1Y3RvciwKLSAgICBDb25zdHJ1Y3RvclBhcmFtZXRlcnM9MSwKKyAgICBDb25zdHJ1
Y3RvcihpbiBET01TdHJpbmcgdXJsKSwKKyAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgdXJs
LCBpbiBzZXF1ZW5jZTxTdHJpbmc+IHByb3RvY29scyksCisgICAgQ29uc3RydWN0b3IoaW4gRE9N
U3RyaW5nIHVybCwgaW4gRE9NU3RyaW5nIHByb3RvY29sKSwKKyAgICBDb25zdHJ1Y3RvclJhaXNl
c0V4Y2VwdGlvbiwKKyAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgIEV2
ZW50VGFyZ2V0LAotICAgIEpTTm9TdGF0aWNUYWJsZXMKKyAgICBKU05vU3RhdGljVGFibGVzLAor
ICAgIEpTQ3VzdG9tQ29uc3RydWN0b3IsCisgICAgQ29uc3RydWN0b3JQYXJhbWV0ZXJzPTEsCiBd
IGludGVyZmFjZSBXZWJTb2NrZXQgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcg
VVJMOyAvLyBMb3dlcmNhc2VkIC51cmwgaXMgdGhlIG9uZSBpbiB0aGUgc3BlYywgYnV0IGxlYXZp
bmcgLlVSTCBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLgogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBiNTQ5NzlmYTJmMjA1NmM3M2ZhYmQyODdhNmI3Y2Y0
OGJmY2EyMGM4Li43MzNlYTY4NzE4NDM3YjIxYTQ2Mzc0ZjAwYmQwZDAxNjUxZDNkYTQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQpAQCAtMzcyMSwxMyArMzcyMSwxNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRp
b24KICAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKICAgICBteSAkZ2VuZXJhdGluZ05hbWVkQ29u
c3RydWN0b3IgPSBzaGlmdDsKIAorICAgICMgRklYTUU6IEFkZCBzdXBwb3J0IGZvciBvdmVybG9h
ZGVkIGNvbnN0cnVjdG9ycyB0byBKUyBhcyB3ZWxsLgorICAgICMgRm9yIG5vdyBtaW1pYyB0aGUg
b2xkIGJlaGF2aW91ciBieSBvbmx5IGdlbmVyYXRpbmcgY29kZSBmb3IgdGhlIGxhc3QgIkNvbnN0
cnVjdG9yIiBhdHRyaWJ1dGUuCisgICAgbXkgJGZ1bmN0aW9uID0gQHskZGF0YU5vZGUtPmNvbnN0
cnVjdG9yc31bLTFdOworCiAgICAgbXkgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lID0gJGdlbmVyYXRp
bmdOYW1lZENvbnN0cnVjdG9yID8gIiR7Y2xhc3NOYW1lfU5hbWVkQ29uc3RydWN0b3IiIDogIiR7
Y2xhc3NOYW1lfUNvbnN0cnVjdG9yIjsKICAgICBteSAkbnVtYmVyT2ZDb25zdHJ1Y3RvclBhcmFt
ZXRlcnMgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvclBhcmFt
ZXRlcnMifTsKICAgICBpZiAoIWRlZmluZWQgJG51bWJlck9mQ29uc3RydWN0b3JQYXJhbWV0ZXJz
KSB7CiAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclRlbXBsYXRlKCRk
YXRhTm9kZSwgIkV2ZW50IikpIHsKICAgICAgICAgICAgICRudW1iZXJPZkNvbnN0cnVjdG9yUGFy
YW1ldGVycyA9IDI7CiAgICAgICAgIH0gZWxzaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkNvbnN0cnVjdG9yIn0pIHsKLSAgICAgICAgICAgICRudW1iZXJPZkNvbnN0cnVjdG9y
UGFyYW1ldGVycyA9IEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3Rvci0+cGFyYW1ldGVyc307CisgICAg
ICAgICAgICAkbnVtYmVyT2ZDb25zdHJ1Y3RvclBhcmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+cGFy
YW1ldGVyc307CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM4ODksNyArMzg5Myw2IEBAIEVORAog
CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJHtjb25zdHJ1Y3RvckNsYXNz
TmFtZX0qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihleGVj
LT5jYWxsZWUoKSk7XG4iKTsKIAotICAgICAgICAgICAgbXkgJGZ1bmN0aW9uID0gJGRhdGFOb2Rl
LT5jb25zdHJ1Y3RvcjsKICAgICAgICAgICAgIG15IEBjb25zdHJ1Y3RvckFyZ0xpc3Q7CiAKICAg
ICAgICAgICAgICRpbXBsSW5jbHVkZXN7IjxydW50aW1lL0Vycm9yLmg+In0gPSAxOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0g
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRl
eCAzYzY0NmY5ZmRlYTc0NzQxNWJmNjlmODJmOTY1MWIyYWNhOTFiMGM1Li4zNzExMDJmZDlhNmZj
NWI3NzhjOThmNGNlYjg1NDI0ODAxYjZjYmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtNDk0LDYgKzQ5NCwxNyBAQCBF
TkQKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiBwcml2YXRlOgogICAgIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBTbG93KCR7d3JhcFNsb3dBcmd1bWVudFR5cGV9
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsK
K0VORAorCisgICAgaWYgKElzQ29uc3RydWN0YWJsZSgkZGF0YU5vZGUpICYmIEB7JGRhdGFOb2Rl
LT5jb25zdHJ1Y3RvcnN9ID4gMSkgeworICAgICAgICBmb3IgKG15ICRpID0gMTsgJGkgPD0gQHsk
ZGF0YU5vZGUtPmNvbnN0cnVjdG9yc307ICRpKyspIHsKKyAgICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgPDxFTkQpOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3Ry
dWN0b3Ike2l9Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOworRU5ECisgICAgICAgIH0K
KyAgICB9CisKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiB9OwogCiBFTkQKQEAg
LTE4NTksMTEgKzE4NzAsNTEgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgcmV0
dXJuICgkcGFyYW1ldGVyQ2hlY2tTdHJpbmcsICRwYXJhbUluZGV4LCAlcmVwbGFjZW1lbnRzKTsK
IH0KIAotc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JDYWxsYmFjaworc3ViIEdlbmVyYXRlT3Zlcmxv
YWRlZENvbnN0cnVjdG9yQ2FsbGJhY2sKIHsKLSAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKICAg
ICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKICAgICBteSAkaW1wbENsYXNzTmFtZSA9IHNoaWZ0Owor
ICAgIAorICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Cit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjgke2ltcGxDbGFzc05hbWV9Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uJHtpbXBsQ2xhc3NOYW1lfS5Db25z
dHJ1Y3RvciIpOworICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKKyAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxs
ZWQgYXMgYSBmdW5jdGlvbi4iKTsKKworICAgIGlmIChDb25zdHJ1Y3Rvck1vZGU6OmN1cnJlbnQo
KSA9PSBDb25zdHJ1Y3Rvck1vZGU6OldyYXBFeGlzdGluZ09iamVjdCkKKyAgICAgICAgcmV0dXJu
IGFyZ3MuSG9sZGVyKCk7CisKK0VORAorCisgICAgbXkgJGxlYXN0TnVtTWFuZGF0b3J5UGFyYW1z
ID0gMjU1OworICAgIGZvcmVhY2ggbXkgJGNvbnN0cnVjdG9yIChAeyRkYXRhTm9kZS0+Y29uc3Ry
dWN0b3JzfSkgeworICAgICAgICBteSAkbmFtZSA9ICJjb25zdHJ1Y3RvciIgLiAkY29uc3RydWN0
b3ItPntvdmVybG9hZGVkSW5kZXh9IC4gIkNhbGxiYWNrIjsKKyAgICAgICAgbXkgKCRudW1NYW5k
YXRvcnlQYXJhbXMsICRwYXJhbWV0ZXJzQ2hlY2spID0gR2VuZXJhdGVGdW5jdGlvblBhcmFtZXRl
cnNDaGVjaygkY29uc3RydWN0b3IpOworICAgICAgICAkbGVhc3ROdW1NYW5kYXRvcnlQYXJhbXMg
PSAkbnVtTWFuZGF0b3J5UGFyYW1zIGlmICgkbnVtTWFuZGF0b3J5UGFyYW1zIDwgJGxlYXN0TnVt
TWFuZGF0b3J5UGFyYW1zKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCRw
YXJhbWV0ZXJzQ2hlY2spXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IHJldHVybiAkbmFtZShhcmdzKTtcbiIpOworICAgIH0KKyAgICBpZiAoJGxlYXN0TnVtTWFuZGF0
b3J5UGFyYW1zID49IDEpIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGFy
Z3MuTGVuZ3RoKCkgPCAkbGVhc3ROdW1NYW5kYXRvcnlQYXJhbXMpXG4iKTsKKyAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTtcbiIpOworICAgIH0KKyAgICBwdXNoKEBpbXBsQ29udGVu
dCwgPDxFTkQpOworICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdldElzb2xhdGUo
KSk7CitFTkQKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Cit9CisKK3N1YiBHZW5l
cmF0ZVNpbmdsZUNvbnN0cnVjdG9yQ2FsbGJhY2sKK3sKKyAgICBteSAkZGF0YU5vZGUgPSBzaGlm
dDsKKyAgICBteSAkaW1wbENsYXNzTmFtZSA9IHNoaWZ0OworICAgIG15ICRmdW5jdGlvbiA9IHNo
aWZ0OworCisgICAgbXkgJG92ZXJsb2FkZWRJbmRleFN0cmluZyA9ICIiOworICAgIGlmICgkZnVu
Y3Rpb24tPntvdmVybG9hZGVkSW5kZXh9ID4gMCkgeworICAgICAgICAkb3ZlcmxvYWRlZEluZGV4
U3RyaW5nIC49ICRmdW5jdGlvbi0+e292ZXJsb2FkZWRJbmRleH07CisgICAgfQogCiAgICAgbXkg
JHJhaXNlc0V4Y2VwdGlvbnMgPSBAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc307CiAgICAg
aWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yUmFpc2VzRXhj
ZXB0aW9uIn0pIHsKQEAgLTE4ODIsMTggKzE5MzMsMjIgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0
b3JDYWxsYmFjawogICAgIG15IEBiZWZvcmVBcmd1bWVudExpc3Q7CiAgICAgbXkgQGFmdGVyQXJn
dW1lbnRMaXN0OwogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci12ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjgke2ltcGxDbGFzc05hbWV9Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2ltcGxDbGFzc05h
bWV9Ojpjb25zdHJ1Y3RvciR7b3ZlcmxvYWRlZEluZGV4U3RyaW5nfUNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uJHtpbXBsQ2xhc3NOYW1l
fS5Db25zdHJ1Y3RvciIpOworICAgIElOQ19TVEFUUygiRE9NLiR7aW1wbENsYXNzTmFtZX0uQ29u
c3RydWN0b3Ike292ZXJsb2FkZWRJbmRleFN0cmluZ30iKTsKICAgICAke21heWJlT2JzZXJ2ZUZl
YXR1cmV9CitFTkQKKworICAgIGlmICgkZnVuY3Rpb24tPntvdmVybG9hZGVkSW5kZXh9ID09IDAp
IHsKKyAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogICAgIGlmICghYXJncy5Jc0Nv
bnN0cnVjdENhbGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCJET00gb2JqZWN0
IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iKTsKIAogICAgIGlm
IChDb25zdHJ1Y3Rvck1vZGU6OmN1cnJlbnQoKSA9PSBDb25zdHJ1Y3Rvck1vZGU6OldyYXBFeGlz
dGluZ09iamVjdCkKICAgICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CiBFTkQKLQotICAgIHB1
c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soJGZ1bmN0aW9uLCAk
ZGF0YU5vZGUpKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlQXJndW1lbnRz
Q291bnRDaGVjaygkZnVuY3Rpb24sICRkYXRhTm9kZSkpOworICAgIH0KIAogICAgIGlmICgkcmFp
c2VzRXhjZXB0aW9ucykgewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRXhjZXB0aW9uQ29k
ZS5oIik7CkBAIC0xOTU2LDYgKzIwMTEsMjEgQEAgRU5ECiAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJcbiIpOwogfQogCitzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckNhbGxiYWNrCit7CisgICAgbXkg
JGRhdGFOb2RlID0gc2hpZnQ7CisgICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKKworICAg
IGlmIChAeyRkYXRhTm9kZS0+Y29uc3RydWN0b3JzfSA9PSAxKSB7CisgICAgICAgIEdlbmVyYXRl
U2luZ2xlQ29uc3RydWN0b3JDYWxsYmFjaygkZGF0YU5vZGUsICRpbXBsQ2xhc3NOYW1lLCBAeyRk
YXRhTm9kZS0+Y29uc3RydWN0b3JzfVswXSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yZWFj
aCBteSAkY29uc3RydWN0b3IgKEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3RvcnN9KSB7CisgICAgICAg
ICAgICBHZW5lcmF0ZVNpbmdsZUNvbnN0cnVjdG9yQ2FsbGJhY2soJGRhdGFOb2RlLCAkaW1wbENs
YXNzTmFtZSwgJGNvbnN0cnVjdG9yKTsKKyAgICAgICAgfQorICAgICAgICBHZW5lcmF0ZU92ZXJs
b2FkZWRDb25zdHJ1Y3RvckNhbGxiYWNrKCRkYXRhTm9kZSwgJGltcGxDbGFzc05hbWUpOworICAg
IH0KK30KKwogc3ViIEdlbmVyYXRlRXZlbnRDb25zdHJ1Y3RvckNhbGxiYWNrCiB7CiAgICAgbXkg
JGRhdGFOb2RlID0gc2hpZnQ7CkBAIC0yODI5LDkgKzI4OTksOSBAQCBFTkQKICAgICBwdXNoKEBp
bXBsQ29udGVudERlY2xzLCAifSAvLyBuYW1lc3BhY2UgJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJu
YWxcblxuIik7CiAKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFt
ZWRDb25zdHJ1Y3RvciJ9ICYmICEoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhD
dXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1
c3RvbUNvbnN0cnVjdG9yIn0pKSB7Ci0gICAgICAgIEdlbmVyYXRlTmFtZWRDb25zdHJ1Y3RvckNh
bGxiYWNrKCRkYXRhTm9kZS0+Y29uc3RydWN0b3IsICRkYXRhTm9kZSwgJGludGVyZmFjZU5hbWUp
OworICAgICAgICBHZW5lcmF0ZU5hbWVkQ29uc3RydWN0b3JDYWxsYmFjayhAeyRkYXRhTm9kZS0+
Y29uc3RydWN0b3JzfVswXSwgJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgfSBlbHNp
ZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3IifSAmJiAhKCRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tQ29uc3RydWN0b3IifSB8fCAk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9KSkgewot
ICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbGJhY2soJGRhdGFOb2RlLT5jb25zdHJ1Y3Rv
ciwgJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CisgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0
b3JDYWxsYmFjaygkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lKTsKICAgICB9IGVsc2lmICgkY29k
ZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclRlbXBsYXRlKCRkYXRhTm9kZSwgIkV2ZW50IikpIHsK
ICAgICAgICAgR2VuZXJhdGVFdmVudENvbnN0cnVjdG9yQ2FsbGJhY2soJGRhdGFOb2RlLCAkaW50
ZXJmYWNlTmFtZSk7CiAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JU
ZW1wbGF0ZSgkZGF0YU5vZGUsICJUeXBlZEFycmF5IikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KaW5kZXggMTlmYjY0OTVjMzFiMWZiNTZkN2U2YTlm
MTUwZGI5NTk4MmM3NDcxMi4uNDhmNWMzYzNmZTU5MDM2ODI2NDBkNDk1YjdjNTA3YjJhZmYyYWZh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIu
cG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KQEAg
LTEzMjMsNiArMTMyMywyNSBAQCBzdWIgcGFyc2VFeHRlbmRlZEF0dHJpYnV0ZUxpc3RBbGxvd0Vt
cHR5CiAgICAgcmV0dXJuIHt9OwogfQogCitzdWIgY29weUF0dHJpYnV0ZXMKK3sKKyAgICBteSAk
ZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0ID0gc2hpZnQ7CisgICAgbXkgJGF0dHIgPSBzaGlmdDsKKwor
ICAgIGZvciBteSAka2V5IChrZXlzICV7JGF0dHJ9KSB7CisgICAgICAgIGlmICgka2V5IGVxICJD
b25zdHJ1Y3RvciIpIHsKKyAgICAgICAgICAgIHB1c2goQHskZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0
LT57IkNvbnN0cnVjdG9ycyJ9fSwgJGF0dHItPnska2V5fSk7CisgICAgICAgIH0gZWxzaWYgKCRr
ZXkgZXEgIkNvbnN0cnVjdG9ycyIpIHsKKyAgICAgICAgICAgIG15IEBjb25zdHJ1Y3RvcnMgPSBA
eyRhdHRyLT57JGtleX19OworICAgICAgICAgICAgZm9yZWFjaCBteSAkY29uc3RydWN0b3IgKEBj
b25zdHJ1Y3RvcnMpIHsKKyAgICAgICAgICAgICAgICBwdXNoKEB7JGV4dGVuZGVkQXR0cmlidXRl
TGlzdC0+eyJDb25zdHJ1Y3RvcnMifX0sICRjb25zdHJ1Y3Rvcik7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57JGtl
eX0gPSAkYXR0ci0+eyRrZXl9OworICAgICAgICB9CisgICAgfQorfQorCiBzdWIgcGFyc2VFeHRl
bmRlZEF0dHJpYnV0ZUxpc3QKIHsKICAgICBteSAkc2VsZiA9IHNoaWZ0OwpAQCAtMTMzMSwxMyAr
MTM1MCw5IEBAIHN1YiBwYXJzZUV4dGVuZGVkQXR0cmlidXRlTGlzdAogICAgICAgICAkc2VsZi0+
YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIlsiLCBfX0xJTkVfXyk7CiAgICAg
ICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QgPSB7fTsKICAgICAgICAgbXkgJGF0dHIgPSAk
c2VsZi0+cGFyc2VFeHRlbmRlZEF0dHJpYnV0ZSgpOwotICAgICAgICBmb3IgbXkgJGtleSAoa2V5
cyAleyRhdHRyfSkgewotICAgICAgICAgICAgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyRrZXl9
ID0gJGF0dHItPnska2V5fTsKLSAgICAgICAgfQorICAgICAgICBjb3B5QXR0cmlidXRlcygkZXh0
ZW5kZWRBdHRyaWJ1dGVMaXN0LCAkYXR0cik7CiAgICAgICAgICRhdHRyID0gJHNlbGYtPnBhcnNl
RXh0ZW5kZWRBdHRyaWJ1dGVzKCk7Ci0gICAgICAgIGZvciBteSAka2V5IChrZXlzICV7JGF0dHJ9
KSB7Ci0gICAgICAgICAgICAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57JGtleX0gPSAkYXR0ci0+
eyRrZXl9OwotICAgICAgICB9CisgICAgICAgIGNvcHlBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJp
YnV0ZUxpc3QsICRhdHRyKTsKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYt
PmdldFRva2VuKCksICJdIiwgX19MSU5FX18pOwogICAgICAgICByZXR1cm4gJGV4dGVuZGVkQXR0
cmlidXRlTGlzdDsKICAgICB9CkBAIC0xMzU0LDkgKzEzNjksNyBAQCBzdWIgcGFyc2VFeHRlbmRl
ZEF0dHJpYnV0ZXMKICAgICAgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICIsIikgewogICAgICAg
ICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICIsIiwgX19M
SU5FX18pOwogICAgICAgICAgICAgbXkgJGF0dHIgPSAkc2VsZi0+cGFyc2VFeHRlbmRlZEF0dHJp
YnV0ZTIoKTsKLSAgICAgICAgICAgIGZvciBteSAka2V5IChrZXlzICV7JGF0dHJ9KSB7Ci0gICAg
ICAgICAgICAgICAgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyRrZXl9ID0gJGF0dHItPnska2V5
fTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvcHlBdHRyaWJ1dGVzKCRleHRlbmRlZEF0
dHJpYnV0ZUxpc3QsICRhdHRyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGxhc3Q7
CiAgICAgICAgIH0KQEAgLTIzODEsMTQgKzIzOTQsMjAgQEAgc3ViIGFwcGx5RXh0ZW5kZWRBdHRy
aWJ1dGVMaXN0CiAgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CiAgICAgbXkgJGV4dGVuZGVkQXR0
cmlidXRlTGlzdCA9IHNoaWZ0OwogCi0gICAgaWYgKGRlZmluZWQgJGV4dGVuZGVkQXR0cmlidXRl
TGlzdC0+eyJDb25zdHJ1Y3RvciJ9KSB7Ci0gICAgICAgIG15ICRuZXdEYXRhTm9kZSA9IG5ldyBk
b21GdW5jdGlvbigpOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShuZXcgZG9tU2ln
bmF0dXJlKCkpOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+bmFtZSgiQ29uc3Ry
dWN0b3IiKTsKLSAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKLSAgICAgICAgcHVzaChAeyRuZXdEYXRhTm9k
ZS0+cGFyYW1ldGVyc30sIEB7JGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJDb25zdHJ1Y3RvciJ9
fSk7CisgICAgaWYgKGRlZmluZWQgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJDb25zdHJ1Y3Rv
cnMifSkgeworICAgICAgICBteSBAY29uc3RydWN0b3JQYXJhbXMgPSBAeyRleHRlbmRlZEF0dHJp
YnV0ZUxpc3QtPnsiQ29uc3RydWN0b3JzIn19OworICAgICAgICBteSAkaW5kZXggPSAoQGNvbnN0
cnVjdG9yUGFyYW1zID09IDEpID8gMCA6IDE7CisgICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtIChA
Y29uc3RydWN0b3JQYXJhbXMpIHsKKyAgICAgICAgICAgIG15ICRjb25zdHJ1Y3RvciA9IG5ldyBk
b21GdW5jdGlvbigpOworICAgICAgICAgICAgJGNvbnN0cnVjdG9yLT5zaWduYXR1cmUobmV3IGRv
bVNpZ25hdHVyZSgpKTsKKyAgICAgICAgICAgICRjb25zdHJ1Y3Rvci0+c2lnbmF0dXJlLT5uYW1l
KCJDb25zdHJ1Y3RvciIpOworICAgICAgICAgICAgJGNvbnN0cnVjdG9yLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKKyAgICAgICAgICAgICRj
b25zdHJ1Y3Rvci0+cGFyYW1ldGVycygkcGFyYW0pOworICAgICAgICAgICAgJGNvbnN0cnVjdG9y
LT57b3ZlcmxvYWRlZEluZGV4fSA9ICRpbmRleCsrOworICAgICAgICAgICAgcHVzaChAeyRkYXRh
Tm9kZS0+Y29uc3RydWN0b3JzfSwgJGNvbnN0cnVjdG9yKTsKKyAgICAgICAgfQorICAgICAgICBk
ZWxldGUgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJDb25zdHJ1Y3RvcnMifTsKICAgICAgICAg
JGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJDb25zdHJ1Y3RvciJ9ID0gIlZBTFVFX0lTX01JU1NJ
TkciOwotICAgICAgICAkZGF0YU5vZGUtPmNvbnN0cnVjdG9yKCRuZXdEYXRhTm9kZSk7CiAgICAg
fSBlbHNpZiAoZGVmaW5lZCAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57Ik5hbWVkQ29uc3RydWN0
b3IifSkgewogICAgICAgICBteSAkbmV3RGF0YU5vZGUgPSBuZXcgZG9tRnVuY3Rpb24oKTsKICAg
ICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUobmV3IGRvbVNpZ25hdHVyZSgpKTsKQEAgLTIz
OTksNyArMjQxOCw3IEBAIHN1YiBhcHBseUV4dGVuZGVkQXR0cmlidXRlTGlzdAogICAgICAgICBt
eSAkY29uc3RydWN0b3JOYW1lID0gJGF0dHJpYnV0ZUtleXNbMF07CiAgICAgICAgIHB1c2goQHsk
bmV3RGF0YU5vZGUtPnBhcmFtZXRlcnN9LCBAeyRhdHRyaWJ1dGVzeyRjb25zdHJ1Y3Rvck5hbWV9
fSk7CiAgICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9
ID0gJGNvbnN0cnVjdG9yTmFtZTsKLSAgICAgICAgJGRhdGFOb2RlLT5jb25zdHJ1Y3RvcigkbmV3
RGF0YU5vZGUpOworICAgICAgICBwdXNoKEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3RvcnN9LCAkbmV3
RGF0YU5vZGUpOwogICAgIH0KICAgICAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0
ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvSURMU3RydWN0dXJlLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9JRExTdHJ1Y3R1cmUucG0KaW5kZXggZmY2Mjg3MjVlYjkwZjU0NjY3M2ZkMTY0MWVmMWRj
NWFjMjZjZGZjYi4uZjQ0MzI0MTczZWEyY2UwZDQ0M2M2ZjU0ZGVmZGI1NGQ1MDM5Y2U4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0KQEAg
LTQwLDcgKzQwLDcgQEAgc3RydWN0KCBkb21DbGFzcyA9PiB7CiAgICAgZnVuY3Rpb25zID0+ICdA
JywgICAgIyBMaXN0IG9mICdkb21GdW5jdGlvbicKICAgICBhdHRyaWJ1dGVzID0+ICdAJywgICAg
IyBMaXN0IG9mICdkb21BdHRyaWJ1dGUnICAgIAogICAgIGV4dGVuZGVkQXR0cmlidXRlcyA9PiAn
JCcsICMgRXh0ZW5kZWQgYXR0cmlidXRlcwotICAgIGNvbnN0cnVjdG9yID0+ICckJywgIyBDb25z
dHJ1Y3RvcgorICAgIGNvbnN0cnVjdG9ycyA9PiAnQCcsICMgQ29uc3RydWN0b3IKICAgICBpc0V4
Y2VwdGlvbiA9PiAnJCcsICMgVXNlZCBmb3IgZXhjZXB0aW9uIGludGVyZmFjZXMKIH0pOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRP
TVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE2NmEyZWRiNDZiM2NhMGI5OGFhOTg1YjIyZTc0NjVmODE1YzA1MDkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dl
YkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtMCwwICsxLDgyIEBACisvKgor
ICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0Lgor
ICogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4g
RE8gTk9UIE1PRElGWSEKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkRPTVRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmgiCisKKyNpbmNsdWRlICJUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycy5oIgorI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkhhbmRsZXIuaCIKKyNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCitzdHJ1Y3QgV2ViRE9NVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OldlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
UHJpdmF0ZSB7CisgICAgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlKFdl
YkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBvYmplY3QgPSAwKQorICAgICAgICA6
IGltcGwob2JqZWN0KQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGltcGw7Cit9OworCitXZWJET01UZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6V2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoKQorICAgIDogV2Vi
RE9NT2JqZWN0KCkKKyAgICAsIG1faW1wbCgwKQoreworfQorCitXZWJET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6V2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoV2ViQ29yZTo6
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGltcGwpCisgICAgOiBXZWJET01PYmplY3QoKQor
ICAgICwgbV9pbXBsKG5ldyBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGUo
aW1wbCkpCit7Cit9CisKK1dlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpXZWJET01U
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhjb25zdCBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyYgY29weSkKKyAgICA6IFdlYkRPTU9iamVjdCgpCit7CisgICAgbV9pbXBsID0gY29w
eS5pbXBsKCkgPyBuZXcgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlKGNv
cHkuaW1wbCgpKSA6IDA7Cit9CisKK1dlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzJiBX
ZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6b3BlcmF0b3I9KGNvbnN0IFdlYkRPTVRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzJiBjb3B5KQoreworICAgIGRlbGV0ZSBtX2ltcGw7Cisg
ICAgbV9pbXBsID0gY29weS5pbXBsKCkgPyBuZXcgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNQcml2YXRlKGNvcHkuaW1wbCgpKSA6IDA7CisgICAgcmV0dXJuICp0aGlzOworfQorCitX
ZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogV2ViRE9NVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM6OmltcGwoKSBjb25zdAoreworICAgIHJldHVybiBtX2ltcGwgPyBXVEY6Omdl
dFB0cihtX2ltcGwtPmltcGwpIDogMDsKK30KKworV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM6On5XZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycygpCit7CisgICAgZGVsZXRl
IG1faW1wbDsKKyAgICBtX2ltcGwgPSAwOworfQorCitXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycyogdG9XZWJDb3JlKGNvbnN0IFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzJiB3cmFwcGVyKQoreworICAgIHJldHVybiB3cmFwcGVyLmltcGwoKTsKK30KKworV2ViRE9N
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgdG9XZWJLaXQoV2ViQ29yZTo6VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMqIHZhbHVlKQoreworICAgIHJldHVybiBXZWJET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyh2YWx1ZSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFiODEyYmJiNmZmMGVkYTY4YWJlNDlm
OTNhMWIyMDQxM2FjMjUyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaApA
QCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdt
YWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAx
MC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc19oCisjZGVmaW5lIFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzX2gKKwor
I2luY2x1ZGUgPFdlYkRPTU9iamVjdC5oPgorI2luY2x1ZGUgPFdlYkRPTVN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczsKK307
CisKKworY2xhc3MgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgOiBwdWJsaWMgV2Vi
RE9NT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cygpOworICAgIGV4cGxpY2l0IFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKFdlYkNv
cmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKik7CisgICAgV2ViRE9NVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMoY29uc3QgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMmKTsK
KyAgICBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyYgb3BlcmF0b3I9KGNvbnN0IFdl
YkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzJik7CisgICAgdmlydHVhbCB+V2ViRE9NVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoKTsKKworCisgICAgV2ViQ29yZTo6VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMqIGltcGwoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIHN0cnVjdCBX
ZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGU7CisgICAgV2ViRE9NVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlKiBtX2ltcGw7Cit9OworCitXZWJDb3JlOjpUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdG9XZWJDb3JlKGNvbnN0IFdlYkRPTVRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzJik7CitXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyB0b1dl
YktpdChXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyopOworCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDUyZmM2ZjU1YTI3NTBkZjE2YWJkZWFkNzJjNjI3Y2Zi
YWI5NGZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBA
IC0wLDAgKzEsMTQxIEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQg
b3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5
IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIgor
CisjaW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CisjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW5jbHVkZSAiVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuaCIKKyNpbmNsdWRlICJXZWJLaXRET01CaW5kaW5nLmgiCisjaW5j
bHVkZSAiZ29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmgiCisjaW5jbHVkZSAid2Via2l0L1dl
YktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJpdmF0ZS5oIgorI2luY2x1ZGUgIndl
YmtpdGRlZmluZXMuaCIKKyNpbmNsdWRlICJ3ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIgorI2luY2x1
ZGUgIndlYmtpdG1hcnNoYWwuaCIKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUg
PHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyoga2l0KFdlYkNvcmU6
OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBvYmopCit7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwob2JqLCAwKTsKKworICAgIGlmIChncG9pbnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6
Z2V0KG9iaikpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXRET01UZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyo+KHJldCk7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0
RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihET01PYmplY3RDYWNoZTo6cHV0KG9iaiwg
V2ViS2l0Ojp3cmFwVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMob2JqKSkpOworfQorCitXZWJD
b3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogY29yZShXZWJLaXRET01UZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyogcmVxdWVzdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChy
ZXF1ZXN0LCAwKTsKKworICAgIFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBj
b3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMqPihXRUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0KS0+Y29yZU9iamVjdCk7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCwgMCk7CisKKyAgICByZXR1cm4gY29yZU9iamVjdDsK
K30KKworV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHdyYXBUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyhXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogY29y
ZU9iamVjdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAwKTsKKwor
ICAgIC8vIFdlIGNhbGwgcmVmKCkgcmF0aGVyIHRoYW4gdXNpbmcgYSBDKysgc21hcnQgcG9pbnRl
ciBiZWNhdXNlIHdlIGNhbid0IHN0b3JlIGEgQysrIG9iamVjdAorICAgIC8vIGluIGEgQy1hbGxv
Y2F0ZWQgR09iamVjdCBzdHJ1Y3R1cmUuIFNlZSB0aGUgZmluYWxpemUoKSBjb2RlIGZvciB0aGUg
bWF0Y2hpbmcgZGVyZWYoKS4KKyAgICBjb3JlT2JqZWN0LT5yZWYoKTsKKworICAgIHJldHVybiBX
RUJLSVRfRE9NX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlMoZ19vYmplY3RfbmV3KFdFQktJ
VF9UWVBFX0RPTV9URVNUX09WRVJMT0FERURfQ09OU1RSVUNUT1JTLCAiY29yZS1vYmplY3QiLCBj
b3JlT2JqZWN0LCBOVUxMKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCitHX0RFRklO
RV9UWVBFKFdlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLCB3ZWJraXRfZG9tX3Rl
c3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnMsIFdFQktJVF9UWVBFX0RPTV9PQkpFQ1QpCisKK2Vu
dW0geworICAgIFBST1BfMCwKK307CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9vdmVy
bG9hZGVkX2NvbnN0cnVjdG9yc19maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7CisKKyAgICBX
ZWJLaXRET01PYmplY3QqIGRvbU9iamVjdCA9IFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCk7Cisg
ICAgCisgICAgaWYgKGRvbU9iamVjdC0+Y29yZU9iamVjdCkgeworICAgICAgICBXZWJDb3JlOjpU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogY29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNv
cmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4oZG9tT2JqZWN0LT5jb3JlT2JqZWN0KTsK
KworICAgICAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3JnZXQoY29yZU9iamVjdCk7Cisg
ICAgICAgIGNvcmVPYmplY3QtPmRlcmVmKCk7CisKKyAgICAgICAgZG9tT2JqZWN0LT5jb3JlT2Jq
ZWN0ID0gMDsKKyAgICB9CisKKworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVzdF9v
dmVybG9hZGVkX2NvbnN0cnVjdG9yc19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwor
fQorCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNf
c2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgY29uc3QgR1Zh
bHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHN3aXRjaCAocHJvcGVydHlJZCkgeworICAgIGRlZmF1
bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHBy
b3BlcnR5SWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCisKK3N0YXRpYyB2
b2lkIHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19nZXRfcHJvcGVydHko
R09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1T
cGVjKiBwc3BlYykKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
CisgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpF
Q1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwor
ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKKworc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0
X292ZXJsb2FkZWRfY29uc3RydWN0b3JzX2NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKK3sK
KworICAgIGlmIChHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25z
dHJ1Y3RvcnNfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQpCisgICAgICAgIEdfT0JKRUNUX0NM
QVNTKHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19wYXJlbnRfY2xhc3Mp
LT5jb25zdHJ1Y3RlZChvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rf
b3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfY2xhc3NfaW5pdChXZWJLaXRET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0NsYXNzKiByZXF1ZXN0Q2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBn
b2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOworICAgIGdvYmplY3RD
bGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNf
ZmluYWxpemU7CisgICAgZ29iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX3Rl
c3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfc2V0X3Byb3BlcnR5OworICAgIGdvYmplY3RDbGFz
cy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3Jz
X2dldF9wcm9wZXJ0eTsKKyAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVjdGVkID0gd2Via2l0X2Rv
bV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3JzX2NvbnN0cnVjdGVkOworCisKKworfQorCitz
dGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfaW5pdChX
ZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogcmVxdWVzdCkKK3sKK30KKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWY5MzZiYzg5Mzg0N2E2MmZiOGMzZTQwMmFjZTc5MjJiODU4ZmEz
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKQEAgLTAsMCAr
MSw1MCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291
cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0
ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAg
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAg
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFdlYktpdERPTVRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzX2gKKyNkZWZpbmUgV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNfaAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJr
aXQvV2ViS2l0RE9NT2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4K
KyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZG9tZGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisj
ZGVmaW5lIFdFQktJVF9UWVBFX0RPTV9URVNUX09WRVJMT0FERURfQ09OU1RSVUNUT1JTICAgICAg
ICAgICAgKHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19nZXRfdHlwZSgp
KQorI2RlZmluZSBXRUJLSVRfRE9NX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlMob2JqKSAg
ICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVf
RE9NX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlMsIFdlYktpdERPTVRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzKSkKKyNkZWZpbmUgV0VCS0lUX0RPTV9URVNUX09WRVJMT0FERURfQ09OU1RS
VUNUT1JTX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwg
IFdFQktJVF9UWVBFX0RPTV9URVNUX09WRVJMT0FERURfQ09OU1RSVUNUT1JTLCBXZWJLaXRET01U
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NsYXNzKQorI2RlZmluZSBXRUJLSVRfRE9NX0lTX1RF
U1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlMob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5T
VEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfRE9NX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJV
Q1RPUlMpKQorI2RlZmluZSBXRUJLSVRfRE9NX0lTX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RP
UlNfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lU
X1RZUEVfRE9NX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlMpKQorI2RlZmluZSBXRUJLSVRf
RE9NX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlNfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVf
SU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfRE9NX1RFU1RfT1ZFUkxPQURF
RF9DT05TVFJVQ1RPUlMsIFdlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ2xhc3Mp
KQorCitzdHJ1Y3QgX1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIHsKKyAgICBX
ZWJLaXRET01PYmplY3QgcGFyZW50X2luc3RhbmNlOworfTsKKworc3RydWN0IF9XZWJLaXRET01U
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NsYXNzIHsKKyAgICBXZWJLaXRET01PYmplY3RDbGFz
cyBwYXJlbnRfY2xhc3M7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfZG9tX3Rlc3Rf
b3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfZ2V0X3R5cGUgKHZvaWQpOworCitHX0VORF9ERUNMUwor
CisjZW5kaWYgLyogV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNfaCAqLwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTJkNWZlNTUxOWVkNTdmNzg1N2JiNDU4
NDM0MjI2NjBmMmZiODZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNQcml2YXRlLmgKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVu
IGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisj
aWZuZGVmIFdlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJpdmF0ZV9oCisjZGVm
aW5lIFdlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJpdmF0ZV9oCisKKyNpbmNs
dWRlICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIgorI2luY2x1ZGUgPGdsaWItb2JqZWN0
Lmg+CisjaW5jbHVkZSA8d2Via2l0L1dlYktpdERPTU9iamVjdC5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKK1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB3cmFwVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMoV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqKTsK
K1dlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBjb3JlKFdlYktpdERPTVRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKiByZXF1ZXN0KTsKK1dlYktpdERPTVRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzKiBraXQoV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIG5v
ZGUpOworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvKiBXZWJLaXRET01UZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyZDJlYTg1MDBmMGQxZmM0MmMwODE5
NTRkNjhmMjAwOGFjYjQ2ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAg
LTAsMCArMSwxOTggQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBv
cGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkg
Z2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIKKworI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRl
ICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3Iu
aD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworLyogSGFzaCB0YWJsZSBmb3IgY29uc3RydWN0b3IgKi8KKwor
c3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNU
YWJsZVZhbHVlc1tdID0KK3sKKyAgICB7ICJjb25zdHJ1Y3RvciIsIERvbnRFbnVtIHwgUmVhZE9u
bHksIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KTAsIE5vSW50
cmluc2ljIH0sCisgICAgeyAwLCAwLCAwLCAwLCBOb0ludHJpbnNpYyB9Cit9OworCitzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUYWJsZSA9IHsgMiwg
MSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1RhYmxlVmFsdWVzLCAwIH07CisvKiBIYXNo
IHRhYmxlIGZvciBjb25zdHJ1Y3RvciAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUg
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9Cit7
CisgICAgeyAwLCAwLCAwLCAwLCBOb0ludHJpbnNpYyB9Cit9OworCitzdGF0aWMgY29uc3QgSGFz
aFRhYmxlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvclRhYmxlID0geyAx
LCAwLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3JUYWJsZVZhbHVlcywg
MCB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciIs
ICZCYXNlOjpzX2luZm8sICZKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3JU
YWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
Q29uc3RydWN0b3IpIH07CisKK0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rv
cjo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIDogRE9NQ29uc3Ry
dWN0b3JPYmplY3Qoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCit7Cit9CisKK3ZvaWQgSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMo
JnNfaW5mbykpOworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5
cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAg
ICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOworfQor
Citib29sIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJv
cGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY1Zh
bHVlU2xvdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IsIEpTRE9NV3Jh
cHBlcj4oZXhlYywgJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvclRhYmxl
LCBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oY2VsbCks
IHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK2Jvb2wgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc0NvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3Jp
cHRvcjxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IsIEpTRE9NV3JhcHBl
cj4oZXhlYywgJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvclRhYmxlLCBq
c0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4ob2JqZWN0KSwg
cHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciogY2FzdGVkVGhpcyA9IGpzQ2FzdDxK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7
CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOworICAg
IGNvbnN0IFN0cmluZyYgc3RyaW5nKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERl
ZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BB
UkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJlZlB0cjxUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycz4gb2JqZWN0ID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0
ZShzdHJpbmcpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVj
LCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0LmdldCgpKSkpOworfQorCitDb25z
dHJ1Y3RUeXBlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Z2V0Q29u
c3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAg
IGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKKy8qIEhh
c2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUg
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZVRhYmxlVmFsdWVzW10gPQorewor
ICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQorfTsKKworc3RhdGljIGNvbnN0IEhhc2hU
YWJsZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlVGFibGUgPSB7IDEsIDAs
IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGVUYWJsZVZhbHVlcywgMCB9Owor
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGU6OnNf
aW5mbyA9IHsgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlIiwgJkJhc2U6OnNf
aW5mbywgJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGVUYWJsZSwgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKSB9
OworCitKU09iamVjdCogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZTo6c2Vs
ZihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAg
cmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPihleGVj
LCBnbG9iYWxPYmplY3QpOworfQorCitjb25zdCBDbGFzc0luZm8gSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6c19pbmZvID0geyAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiLCAmQmFz
ZTo6c19pbmZvLCAmSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1RhYmxlLCAwICwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKSB9OworCitKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKFN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVm
UHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiBpbXBsKQorICAgIDogSlNET01XcmFwcGVy
KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQorICAgICwgbV9pbXBsKGltcGwubGVha1JlZigpKQor
eworfQorCit2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmZpbmlzaENyZWF0aW9u
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihn
bG9iYWxEYXRhKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOworfQorCitKU09iamVj
dCogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlUHJvdG90eXBlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZTo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERh
dGEoKSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworfQorCit2b2lkIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCit7CisgICAg
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0LT5KU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp+SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycygp
OworfQorCitKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp+SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycygpCit7CisgICAgcmVsZWFzZUltcGxJZk5vdE51bGwoKTsKK30KKworYm9vbCBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKK3sKKyAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihjZWxsKTsKKyAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOworICAgIHJldHVy
biBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycywgQmFzZT4o
ZXhlYywgJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUYWJsZSwgdGhpc09iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KTsKK30KKworYm9vbCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IpCit7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4ob2JqZWN0KTsKKyAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOworICAgIHJldHVybiBn
ZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycywgQmFz
ZT4oZXhlYywgJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUYWJsZSwgdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKK30KKworSlNWYWx1ZSBqc1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNl
LCBQcm9wZXJ0eU5hbWUpCit7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogZG9t
T2JqZWN0ID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihhc09iamVjdChz
bG90QmFzZSkpOworICAgIHJldHVybiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpnZXRD
b25zdHJ1Y3RvcihleGVjLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKTsKK30KKworSlNWYWx1
ZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpnZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERP
TUNvbnN0cnVjdG9yPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcj4oZXhl
YywganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cit9CisKK3N0YXRp
YyBpbmxpbmUgYm9vbCBpc09ic2VydmFibGUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyog
anNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycykKK3sKKyAgICBpZiAoanNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPSBq
c0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KGhhbmRsZS5nZXQoKS5hc0NlbGwo
KSk7CisgICAgaWYgKCFpc09ic2VydmFibGUoanNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycykp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCit2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNPd25l
cjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRl
eHQpCit7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyoganNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4oaGFu
ZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkID0gc3RhdGlj
X2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7CisgICAgdW5jYWNoZVdyYXBwZXIod29y
bGQsIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMtPmltcGwoKSwganNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyk7CisgICAganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy0+cmVsZWFz
ZUltcGwoKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
KiBpbXBsKQoreworICAgIHJldHVybiB3cmFwPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+
KGV4ZWMsIGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisKK1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzKiB0b1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sK
KyAgICByZXR1cm4gdmFsdWUuaW5oZXJpdHMoJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6
OnNfaW5mbykgPyBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KGFzT2JqZWN0
KHZhbHVlKSktPmltcGwoKSA6IDA7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2YmU5Yzg5NmJiMzc5OGM3NWM0ZjNkOTJjNDUy
ZWM1ZmJlMWI2MGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCkBAIC0wLDAgKzEs
MTQzIEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3Vy
Y2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRl
LWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc19oCisjZGVmaW5lIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNfaAor
CisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg+CisjaW5jbHVk
ZSA8cnVudGltZS9KU09iamVjdC5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBl
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyA6IHB1YmxpYyBKU0RPTVdyYXBwZXIgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNE
T01XcmFwcGVyIEJhc2U7CisgICAgc3RhdGljIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMq
IGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQYXNzUmVmUHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiBpbXBsKQor
ICAgIHsKKyAgICAgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogcHRyID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPihn
bG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5oZWFwKSkgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycyhzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgaW1wbCk7CisgICAgICAgIHB0ci0+ZmluaXNo
Q3JlYXRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkpOworICAgICAgICByZXR1cm4gcHRy
OworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3Bl
cnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIHZvaWQgZGVz
dHJveShKU0M6OkpTQ2VsbCopOworICAgIH5KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKCk7
CisgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKKworICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9i
YWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CisgICAgfQorCisgICAgc3RhdGljIEpT
Qzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKKyAgICBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogaW1wbCgpIGNvbnN0IHsg
cmV0dXJuIG1faW1wbDsgfQorICAgIHZvaWQgcmVsZWFzZUltcGwoKSB7IG1faW1wbC0+ZGVyZWYo
KTsgbV9pbXBsID0gMDsgfQorCisgICAgdm9pZCByZWxlYXNlSW1wbElmTm90TnVsbCgpIHsgaWYg
KG1faW1wbCkgeyBtX2ltcGwtPmRlcmVmKCk7IG1faW1wbCA9IDA7IH0gfQorCitwcml2YXRlOgor
ICAgIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBtX2ltcGw7Citwcm90ZWN0ZWQ6CisgICAg
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFs
T2JqZWN0KiwgUGFzc1JlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4pOworICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNDOjpKU0dsb2JhbERhdGEmKTsKKyAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0
aElzTm90WmVybyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworfTsKKworY2xhc3MgSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc093bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8
SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpOworICAgIHZp
cnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250
ZXh0KTsKK307CisKK2lubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERP
TVdyYXBwZXJXb3JsZCosIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKikKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNPd25lciwganNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVyLCAoKSk7CisgICAgcmV0dXJuICZqc1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzT3duZXI7Cit9CisKK2lubGluZSB2b2lkKiB3cmFwcGVyQ29udGV4
dChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyopCit7
CisgICAgcmV0dXJuIHdvcmxkOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqKTsKK1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB0b1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKEpT
Qzo6SlNWYWx1ZSk7CisKK2NsYXNzIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5
cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IEpTQzo6SlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBz
ZWxmKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZT4oZ2xvYmFsRGF0YS5oZWFw
KSkgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZShnbG9iYWxEYXRhLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFs
RGF0YSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IEpT
Qzo6Q2xhc3NJbmZvIHNfaW5mbzsKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
ICZzX2luZm8pOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzUHJvdG90eXBlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgOiBKU0M6OkpTTm9uRmluYWxP
YmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKSB7IH0KK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKK307
CisKK2NsYXNzIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciA6IHB1Ymxp
YyBET01Db25zdHJ1Y3Rvck9iamVjdCB7Citwcml2YXRlOgorICAgIEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0
Kik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFs
T2JqZWN0Kik7CisKK3B1YmxpYzoKKyAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0IEJh
c2U7CisgICAgc3RhdGljIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvciog
Y3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsKKyAgICAgICAgSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcj4oKmV4
ZWMtPmhlYXAoKSkpIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihzdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdCk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZXhlYywg
Z2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMg
Y29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgewor
ICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgJnNfaW5mbyk7CisgICAgfQorcHJvdGVjdGVkOgorICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
IHwgSlNDOjpJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBET01Db25zdHJ1Y3Rvck9iamVjdDo6U3Ry
dWN0dXJlRmxhZ3M7CisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKEpTQzo6RXhlY1N0YXRlKik7
CisgICAgc3RhdGljIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlND
ZWxsKiwgSlNDOjpDb25zdHJ1Y3REYXRhJik7Cit9OworCisvLyBBdHRyaWJ1dGVzCisKK0pTQzo6
SlNWYWx1ZSBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxNWI3YmM1N2RhN2IxNmRmNzM0ZmJhYTY3NWRmNjJi
N2M4MWJiMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCkBAIC0wLDAgKzEs
MzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0
IDxXZWJDb3JlL0RPTU9iamVjdC5oPgorCisjaWYgV0VCS0lUX1ZFUlNJT05fTUFYX0FMTE9XRUQg
Pj0gV0VCS0lUX1ZFUlNJT05fTEFURVNUCisKK0BpbnRlcmZhY2UgRE9NVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMgOiBET01PYmplY3QKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwMjliYjJiZjdl
YTgwYTYxNDU1OTQ5NGNmNmM3OGMxZDU4MWQyYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycy5tbQpAQCAtMCwwICsxLDg3IEBACisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICogVGhpcyBmaWxlIGhhcyBiZWVuIGdl
bmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJET01JbnRlcm5hbC5oIgorCisjaW1wb3J0ICJE
T01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIgorCisjaW1wb3J0ICJET01CbG9iSW50ZXJu
YWwuaCIKKyNpbXBvcnQgIkRPTUNTU1J1bGVJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NQ1NTVmFs
dWVJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NRXZlbnRJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9N
Tm9kZUludGVybmFsLmgiCisjaW1wb3J0ICJET01TdHlsZVNoZWV0SW50ZXJuYWwuaCIKKyNpbXBv
cnQgIkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkV4
Y2VwdGlvbkhhbmRsZXJzLmgiCisjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNp
bXBvcnQgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgiCisjaW1wb3J0ICJUaHJlYWRDaGVj
ay5oIgorI2ltcG9ydCAiV2ViQ29yZU9iakNFeHRyYXMuaCIKKyNpbXBvcnQgIldlYlNjcmlwdE9i
amVjdFByaXZhdGUuaCIKKyNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKworI2RlZmluZSBJTVBMIHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihfaW50
ZXJuYWwpCisKK0BpbXBsZW1lbnRhdGlvbiBET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycwor
CistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBpZiAoV2ViQ29yZU9iakNTY2hlZHVsZURlYWxsb2Nh
dGVPbk1haW5UaHJlYWQoW0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIGNsYXNzXSwgc2Vs
ZikpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChfaW50ZXJuYWwpCisgICAgICAgIElNUEwt
PmRlcmVmKCk7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKWZpbmFsaXplCit7
CisgICAgaWYgKF9pbnRlcm5hbCkKKyAgICAgICAgSU1QTC0+ZGVyZWYoKTsKKyAgICBbc3VwZXIg
ZmluYWxpemVdOworfQorCitAZW5kCisKK1dlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzKiBjb3JlKERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzICp3cmFwcGVyKQoreworICAg
IHJldHVybiB3cmFwcGVyID8gcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyo+KHdyYXBwZXItPl9pbnRlcm5hbCkgOiAwOworfQorCitET01UZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycyAqa2l0KFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzKiB2YWx1ZSkKK3sKKyAgICB7IERPTV9BU1NFUlRfTUFJTl9USFJFQUQoKTsgV2ViQ29yZVRo
cmVhZFZpb2xhdGlvbkNoZWNrUm91bmRPbmUoKTsgfTsKKyAgICBpZiAoIXZhbHVlKQorICAgICAg
ICByZXR1cm4gbmlsOworICAgIGlmIChET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyAqd3Jh
cHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQorICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJl
dGFpbl0gYXV0b3JlbGVhc2VdOworICAgIERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzICp3
cmFwcGVyID0gW1tET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyBhbGxvY10gX2luaXRdOwor
ICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJu
YWwqPih2YWx1ZSk7CisgICAgdmFsdWUtPnJlZigpOworICAgIGFkZERPTVdyYXBwZXIod3JhcHBl
ciwgdmFsdWUpOworICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc0ludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0ludGVybmFsLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOGZlY2M4MWMzOTZiZDBhODI1ZGE3YWJiMDExZjJjNTY3MmE2YjRlZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzSW50ZXJuYWwuaApAQCAtMCwwICsxLDM4IEBA
CisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9q
ZWN0LgorICogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5n
cy5wbC4gRE8gTk9UIE1PRElGWSEKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8V2ViQ29yZS9ET01UZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5oPgorCisjaWYgV0VCS0lUX1ZFUlNJT05fTUFYX0FMTE9XRUQg
Pj0gV0VCS0lUX1ZFUlNJT05fTEFURVNUCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFz
cyBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczsKK30KKworV2ViQ29yZTo6VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMqIGNvcmUoRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgKik7CitE
T01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyAqa2l0KFdlYkNvcmU6OlRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzKik7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmEzODZmNWI5N2JkZDIyNmMxOTExMTUwOTFiMDBiOTBkMzkyN2Rk
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5pZGwKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXN0ckFy
Zywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21w
dXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVzdHJBcmcsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworWworICAgIENvbnN0cnVjdG9yKGluIEFycmF5QnVmZmVyIGFycmF5QnVmZmVyKSwKKyAgICBD
b25zdHJ1Y3RvcihpbiBBcnJheUJ1ZmZlclZpZXcgYXJyYXlCdWZmZXJWaWV3KSwKKyAgICBDb25z
dHJ1Y3RvcihpbiBCbG9iIGJsb2IpLAorICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyBzdHJp
bmcpLAorXSBpbnRlcmZhY2UgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgeworfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmlkbAppbmRleCBjNmQ0
OTNkZWZmNDBjOTI0ODM5ZGM0NWU5ZWU5ZmIzNTI2MGVlMTM2Li42ODdlYWM1NDc3MTM1NmY2MDEy
ZWU3Nzc5OGMyMmNjMDAwMzg3NjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UuaWRsCkBAIC0yNyw3ICsyNyw2IEBACiAvLyBjaGFuZ2VzIGluIGl0
cyBvdXB1dC4KIFsKICAgICBDb25kaXRpb25hbD1Db25kaXRpb24xfENvbmRpdGlvbjIsCi0gICAg
Q29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIGhlbGxvLCBpbiBTZXJpYWxpemVkU2NyaXB0VmFsdWUg
dmFsdWUpLAogICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyBoZWxsbywgaW4gW1RyYW5zZmVy
TGlzdD10cmFuc2Zlckxpc3RdIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBkYXRhLCBpbiBbT3B0aW9u
YWw9RGVmYXVsdElzVW5kZWZpbmVkXSBBcnJheSB0cmFuc2Zlckxpc3QpLAogXSBpbnRlcmZhY2Ug
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSB7CiAgICAgYXR0cmlidXRlIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjU0NzZjMWQxNDEzODg3ZTRjYzIxYmFjZWQ3NWE0
MDU5OGQyYWNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBAIC0wLDAgKzEs
MjEyIEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3Vy
Y2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRl
LWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICAgIEJvc3Rv
biwgTUEgMDIxMTEtMTMwNywgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIKKworI2luY2x1ZGUgIkJpbmRpbmdT
dGF0ZS5oIgorI2luY2x1ZGUgIkNvbnRleHRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKKyNpbmNsdWRlICJWOEFycmF5QnVmZmVyLmgiCisjaW5jbHVkZSAiVjhBcnJheUJ1
ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEJsb2IuaCIK
KyNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKKyNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4K
KyNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVkZSA8d3RmL1VudXNlZFBh
cmFtLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV3JhcHBlclR5cGVJbmZvIFY4VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmluZm8gPSB7IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM6OkdldFRlbXBsYXRlLCBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpkZXJlZk9iamVj
dCwgMCwgMCwgVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6aW5zdGFsbFBlckNvbnRleHRQ
cm90b3R5cGVQcm9wZXJ0aWVzLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9OworCitu
YW1lc3BhY2UgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNWOEludGVybmFsIHsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHZvaWQgVjhfVVNFKFQpIHsgfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Y4SW50ZXJuYWwKKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yMUNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuQ29uc3RydWN0b3IxIik7CisgICAgCisgICAgRVhDRVBUSU9OX0JMT0NL
KEFycmF5QnVmZmVyKiwgYXJyYXlCdWZmZXIsIFY4QXJyYXlCdWZmZXI6Okhhc0luc3RhbmNlKE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpID8gVjhB
cnJheUJ1ZmZlcjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChNQVlCRV9N
SVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSkgOiAwKTsKKwor
ICAgIFJlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbCA9IFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoYXJyYXlCdWZmZXIpOworICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CisKKyAgICBWOERPTVdyYXBwZXI6OnNl
dERPTVdyYXBwZXIod3JhcHBlciwgJmluZm8sIGltcGwuZ2V0KCkpOworICAgIFY4RE9NV3JhcHBl
cjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltcGwucmVsZWFzZSgpLCB3cmFwcGVyLCBhcmdz
LkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHdyYXBwZXI7Cit9CisKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjJDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLkNvbnN0cnVjdG9yMiIpOworICAgIAorICAgIEVYQ0VQVElP
Tl9CTE9DSyhBcnJheUJ1ZmZlclZpZXcqLCBhcnJheUJ1ZmZlclZpZXcsIFY4QXJyYXlCdWZmZXJW
aWV3OjpIYXNJbnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0
SXNVbmRlZmluZWQpKSA/IFY4QXJyYXlCdWZmZXJWaWV3Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJ
c1VuZGVmaW5lZCkpKSA6IDApOworCisgICAgUmVmUHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzPiBpbXBsID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZShhcnJheUJ1ZmZl
clZpZXcpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVy
KCk7CisKKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIod3JhcHBlciwgJmluZm8sIGlt
cGwuZ2V0KCkpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGlt
cGwucmVsZWFzZSgpLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHdy
YXBwZXI7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpjb25zdHJ1Y3RvcjNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQor
eworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLkNvbnN0cnVj
dG9yMyIpOworICAgIAorICAgIEVYQ0VQVElPTl9CTE9DSyhCbG9iKiwgYmxvYiwgVjhCbG9iOjpI
YXNJbnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRl
ZmluZWQpKSA/IFY4QmxvYjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChN
QVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSkgOiAw
KTsKKworICAgIFJlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbCA9IFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoYmxvYik7CisgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKKworICAgIFY4RE9NV3JhcHBlcjo6c2V0
RE9NV3JhcHBlcih3cmFwcGVyLCAmaW5mbywgaW1wbC5nZXQoKSk7CisgICAgVjhET01XcmFwcGVy
OjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoaW1wbC5yZWxlYXNlKCksIHdyYXBwZXIsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gd3JhcHBlcjsKK30KKwordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yNENhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuQ29uc3RydWN0b3I0Iik7CisgICAgCisgICAgU1RSSU5HX1RP
X1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjw+LCBzdHJpbmcsIE1BWUJF
X01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpOworCisgICAg
UmVmUHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiBpbXBsID0gVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM6OmNyZWF0ZShzdHJpbmcpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CisKKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBw
ZXIod3JhcHBlciwgJmluZm8sIGltcGwuZ2V0KCkpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNX
cmFwcGVyRm9yRE9NT2JqZWN0KGltcGwucmVsZWFzZSgpLCB3cmFwcGVyLCBhcmdzLkdldElzb2xh
dGUoKSk7CisgICAgcmV0dXJuIHdyYXBwZXI7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMuQ29uc3RydWN0b3IiKTsKKyAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxs
KCkpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3Rv
ciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIik7CisKKyAgICBpZiAoQ29uc3RydWN0
b3JNb2RlOjpjdXJyZW50KCkgPT0gQ29uc3RydWN0b3JNb2RlOjpXcmFwRXhpc3RpbmdPYmplY3Qp
CisgICAgICAgIHJldHVybiBhcmdzLkhvbGRlcigpOworCisgICAgaWYgKChhcmdzLkxlbmd0aCgp
ID09IDEgJiYgKFY4QXJyYXlCdWZmZXI6Okhhc0luc3RhbmNlKGFyZ3NbMF0pKSkpCisgICAgICAg
IHJldHVybiBjb25zdHJ1Y3RvcjFDYWxsYmFjayhhcmdzKTsKKyAgICBpZiAoKGFyZ3MuTGVuZ3Ro
KCkgPT0gMSAmJiAoVjhBcnJheUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKGFyZ3NbMF0pKSkpCisg
ICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjJDYWxsYmFjayhhcmdzKTsKKyAgICBpZiAoKGFyZ3Mu
TGVuZ3RoKCkgPT0gMSAmJiAoVjhCbG9iOjpIYXNJbnN0YW5jZShhcmdzWzBdKSkpKQorICAgICAg
ICByZXR1cm4gY29uc3RydWN0b3IzQ2FsbGJhY2soYXJncyk7CisgICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yNENhbGxiYWNrKGFyZ3MpOworICAg
IGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cigwLCBhcmdzLkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Rl
bXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjKQoreworICAg
IGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CisKKyAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVy
ZT4gZGVmYXVsdFNpZ25hdHVyZTsKKyAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1
cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMiLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczo6aW50ZXJuYWxGaWVsZENvdW50LAorICAgICAgICAwLCAwLAorICAg
ICAgICAwLCAwKTsKKyAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNv
bWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCisgICAgZGVzYy0+U2V0Q2FsbEhhbmRsZXIo
VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3JDYWxsYmFjayk7CisgICAg
CisKKyAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKKyAgICBkZXNjLT5TZXQodjg6OlN0
cmluZzo6TmV3U3ltYm9sKCJ0b1N0cmluZyIpLCBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCkt
PnRvU3RyaW5nVGVtcGxhdGUoKSk7CisgICAgcmV0dXJuIGRlc2M7Cit9CisKK3Y4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpH
ZXRSYXdUZW1wbGF0ZSgpCit7CisgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNv
bGF0ZURhdGE6OmN1cnJlbnQoKTsKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6
aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKKyAg
ICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgICAgIHJl
dHVybiByZXN1bHQtPnZhbHVlOworCisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwor
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJh
d1RlbXBsYXRlKCk7CisgICAgZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBs
KTsKKyAgICByZXR1cm4gdGVtcGw7Cit9CisKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpHZXRUZW1wbGF0ZSgpCit7Cisg
ICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsK
KyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0
YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRl
bXBsYXRlTWFwKCkuZW5kKCkpCisgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOworCisgICAg
djg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiB0ZW1wbCA9CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNUZW1wbGF0ZShHZXRSYXdUZW1wbGF0ZSgpKTsKKyAgICBkYXRhLT50ZW1wbGF0
ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgIHJldHVybiB0ZW1wbDsKK30KKworYm9vbCBW
OFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdmFsdWUpCit7CisgICAgcmV0dXJuIEdldFJhd1RlbXBsYXRlKCktPkhhc0luc3RhbmNl
KHZhbHVlKTsKK30KKworCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM6OndyYXBTbG93KFBhc3NSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM+IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSkKK3sKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXI7Cisg
ICAgLy8gUGxlYXNlIGRvbid0IGFkZCBhbnkgbW9yZSB1c2VzIG9mIHRoaXMgdmFyaWFibGUuCisg
ICAgRG9jdW1lbnQqIGRlcHJlY2F0ZWREb2N1bWVudCA9IDA7CisgICAgVU5VU0VEX1BBUkFNKGRl
cHJlY2F0ZWREb2N1bWVudCk7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0
OworICAgIGlmICghY3JlYXRpb25Db250ZXh0LklzRW1wdHkoKSAmJiBjcmVhdGlvbkNvbnRleHQt
PkNyZWF0aW9uQ29udGV4dCgpICE9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCkpIHsKKyAgICAg
ICAgLy8gRm9yIHBlcmZvcm1hbmNlLCB3ZSBlbnRlciB0aGUgY29udGV4dCBvbmx5IGlmIHRoZSBj
dXJyZW50bHkgcnVubmluZyBjb250ZXh0CisgICAgICAgIC8vIGlzIGRpZmZlcmVudCBmcm9tIHRo
ZSBjb250ZXh0IHRoYXQgd2UgYXJlIGFib3V0IHRvIGVudGVyLgorICAgICAgICBjb250ZXh0ID0g
djg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KGNyZWF0aW9uQ29udGV4dC0+Q3JlYXRpb25Db250
ZXh0KCkpOworICAgICAgICBBU1NFUlQoIWNvbnRleHQuSXNFbXB0eSgpKTsKKyAgICAgICAgY29u
dGV4dC0+RW50ZXIoKTsKKyAgICB9CisKKyAgICB3cmFwcGVyID0gVjhET01XcmFwcGVyOjppbnN0
YW50aWF0ZVY4T2JqZWN0KGRlcHJlY2F0ZWREb2N1bWVudCwgJmluZm8sIGltcGwuZ2V0KCkpOwor
CisgICAgaWYgKCFjb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgY29udGV4dC0+RXhpdCgpOwor
CisgICAgaWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKKyAgICAgICAgcmV0dXJuIHdy
YXBwZXI7CisKKyAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5n
ZXQoKSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4
RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltcGwsIHdyYXBwZXIsIGlzb2xh
dGUpOworICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCisgICAgICAgIHdyYXBwZXJIYW5k
bGUuTWFya0luZGVwZW5kZW50KCk7CisgICAgcmV0dXJuIHdyYXBwZXI7Cit9CisKK3ZvaWQgVjhU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6ZGVyZWZPYmplY3Qodm9pZCogb2JqZWN0KQorewor
ICAgIHN0YXRpY19jYXN0PFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4ob2JqZWN0KS0+ZGVy
ZWYoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjY0NTMwNGI4N2UyZDBjZDNlYzNmMjMy
NTZlZDY2OTEwZjNjYjc2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKQEAgLTAs
MCArMSw4MCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4g
c291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5l
cmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAg
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAgICBC
b3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyovCisKKyNpZm5kZWYgVjhUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc19oCisjZGVmaW5lIFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNfaAor
CisjaW5jbHVkZSAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIKKyNpbmNsdWRlICJWOEJp
bmRpbmcuaCIKKyNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKKyNpbmNsdWRlICJXcmFwcGVyVHlw
ZUluZm8uaCIKKyNpbmNsdWRlIDx2OC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgeworcHVibGljOgorICAgIHN0YXRpYyBj
b25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7CisgICAgc3RhdGljIGJvb2wg
SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+KTsKKyAgICBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKCk7CisgICAgc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSgpOworICAg
IHN0YXRpYyBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdG9OYXRpdmUodjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KG9iamVjdC0+R2V0UG9pbnRlckZyb21JbnRl
cm5hbEZpZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4KSk7CisgICAgfQorICAgIGlubGluZSBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiA9IDApOworICAgIHN0YXRpYyB2b2lkIGRlcmVm
T2JqZWN0KHZvaWQqKTsKKyAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIGluZm87CisgICAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmKTsKKyAgICBzdGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3VudCA9IHY4
RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOworICAgIHN0YXRpYyB2b2lkIGlu
c3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycyopIHsgfQorICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250
ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KSB7IH0KK3ByaXZh
dGU6CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcFNsb3coUGFzc1JlZlB0
cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gY29uc3RydWN0b3IxQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOworICAgIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3IyQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYpOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0
b3IzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOworICAgIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gY29uc3RydWN0b3I0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOwor
fTsKKwordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
Ojp3cmFwKFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Y3VycmVudChp
c29sYXRlKS0+Z2V0KGltcGwpOworICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAg
ICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIFY4VGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM6OndyYXBTbG93KGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisK
K2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycyogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKK3sKKyAgICBp
ZiAoIWltcGwpCisgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CisgICAg
cmV0dXJuIFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OndyYXAoaW1wbCwgY3JlYXRpb25D
b250ZXh0LCBpc29sYXRlKTsKK30KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChQ
YXNzUmVmUHRyPCBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA+IGltcGwsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCit7CisgICAgcmV0dXJuIHRvVjgoaW1wbC5nZXQoKSwg
Y3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30KKworfQorCisjZW5kaWYgLy8gVjhUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcAppbmRleCBhNWRlOWE0MjNhZWI1MWQ2
YTRhYTk0MjA0Mjg3MWZiNWU4ZjI3OTI2Li45YzRmYzdmYTE2MjE4NjlmNjFmOGVjNWIwYTAzODI5
YzllZjhhZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhXZWJTb2NrZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAKQEAgLTUxLDY0ICs1MSw2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViU29ja2V0Ojpjb25zdHJ1
Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRT
KCJET00uV2ViU29ja2V0LkNvbnN0cnVjdG9yIik7Ci0KLSAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1
Y3RDYWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigiRE9NIG9iamVjdCBjb25z
dHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIiwgYXJncy5HZXRJc29sYXRl
KCkpOwotCi0gICAgaWYgKENvbnN0cnVjdG9yTW9kZTo6Y3VycmVudCgpID09IENvbnN0cnVjdG9y
TW9kZTo6V3JhcEV4aXN0aW5nT2JqZWN0KQotICAgICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsK
LQotICAgIGlmIChhcmdzLkxlbmd0aCgpID09IDApCi0gICAgICAgIHJldHVybiB0aHJvd05vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLQotICAgIHY4OjpUcnlDYXRj
aCB0cnlDYXRjaDsKLSAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHVybHN0cmluZyA9IGFyZ3Nb
MF0tPlRvU3RyaW5nKCk7Ci0gICAgaWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcih0cnlDYXRjaC5FeGNlcHRpb24oKSwgYXJncy5HZXRJc29sYXRlKCkp
OwotICAgIGlmICh1cmxzdHJpbmcuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJv
cihTeW50YXhFcnJvciwgIkVtcHR5IFVSTCIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLQotICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7Ci0gICAgY29uc3QgS1VSTCYgdXJsID0gY29udGV4dC0+Y29tcGxldGVVUkwodG9XZWJDb3Jl
U3RyaW5nKHVybHN0cmluZykpOwotCi0gICAgUmVmUHRyPFdlYlNvY2tldD4gd2ViU29ja2V0ID0g
V2ViU29ja2V0OjpjcmVhdGUoY29udGV4dCk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0K
LSAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCi0gICAgICAgIHdlYlNvY2tldC0+Y29ubmVjdCh1
cmwsIGVjKTsKLSAgICBlbHNlIHsKLSAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcHJvdG9j
b2xzVmFsdWUgPSBhcmdzWzFdOwotICAgICAgICBpZiAocHJvdG9jb2xzVmFsdWUtPklzQXJyYXko
KSkgewotICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gcHJvdG9jb2xzOwotICAgICAgICAgICAg
djg6OkxvY2FsPHY4OjpBcnJheT4gcHJvdG9jb2xzQXJyYXkgPSB2ODo6TG9jYWw8djg6OkFycmF5
Pjo6Q2FzdChwcm90b2NvbHNWYWx1ZSk7Ci0gICAgICAgICAgICBmb3IgKHVpbnQzMl90IGkgPSAw
OyBpIDwgcHJvdG9jb2xzQXJyYXktPkxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICB2
ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2hQcm90b2NvbDsKLSAgICAgICAgICAgICAgICB2ODo6SGFuZGxl
PHY4OjpTdHJpbmc+IHByb3RvY29sID0gcHJvdG9jb2xzQXJyYXktPkdldCh2ODo6SW50MzI6Ok5l
dyhpKSktPlRvU3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHRyeUNhdGNoUHJvdG9jb2wu
SGFzQ2F1Z2h0KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHRyeUNh
dGNoUHJvdG9jb2wuRXhjZXB0aW9uKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAgICAgICAgICAg
ICAgICBwcm90b2NvbHMuYXBwZW5kKHRvV2ViQ29yZVN0cmluZyhwcm90b2NvbCkpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgd2ViU29ja2V0LT5jb25uZWN0KHVybCwgcHJvdG9jb2xzLCBl
Yyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2hQ
cm90b2NvbDsKLSAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gcHJvdG9jb2wgPSBw
cm90b2NvbHNWYWx1ZS0+VG9TdHJpbmcoKTsKLSAgICAgICAgICAgIGlmICh0cnlDYXRjaFByb3Rv
Y29sLkhhc0NhdWdodCgpKQotICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHRyeUNh
dGNoUHJvdG9jb2wuRXhjZXB0aW9uKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAgICAgICAgICAg
IHdlYlNvY2tldC0+Y29ubmVjdCh1cmwsIHRvV2ViQ29yZVN0cmluZyhwcm90b2NvbCksIGVjKTsK
LSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiBzZXRET01FeGNl
cHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLQotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFw
cGVyKHdyYXBwZXIsICZpbmZvLCB3ZWJTb2NrZXQuZ2V0KCkpOwotICAgIFY4RE9NV3JhcHBlcjo6
c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KHdlYlNvY2tldC5yZWxlYXNlKCksIHdyYXBwZXIpOwot
ICAgIHJldHVybiB3cmFwcGVyOwotfQotCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJTb2Nr
ZXQ6OnNlbmRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19T
VEFUUygiRE9NLldlYlNvY2tldC5zZW5kKCkiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmM2E1Y2NlN2QwYWViYTk1N2E4
NDFjNjkzZDYyYzQ5YWIxZDY3ZmE1Li5lNzAzMDY2NGE5OGEwYzgzZTM5ZTAwMmNiYTU1ZWZkMjM4
MGQxZDBmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTEtMDEgIFRvbW15IFdpZGVuZmx5
Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBWOCBjdXN0b20g
Y29kZSBmb3IgV2ViU29ja2V0cyBjb25zdHJ1Y3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwODAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGVzdCBmb3IgbnVsbCBhcmd1bWVudCB0byBX
ZWJTb2NrZXQodXJsKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvdXJsLXBhcnNpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvdXJsLXBhcnNpbmcuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS13aW4vd2Vic29ja2V0L3Rlc3RzL3VybC1wYXJzaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2
L3VybC1wYXJzaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC1wYXJzaW5nLWV4cGVjdGVkLnR4dDoK
KwogMjAxMi0xMS0wNyAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgV2ViS2l0IGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXBhcnNpbmctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtcGFyc2lu
Zy1leHBlY3RlZC50eHQKaW5kZXggOWQwYzUxODliMDRjMjVmYWU0NTBmZmUzZjA3MDkyYTU5NjFi
YjRiMS4uZThhNzRlMjA5MzRmZjIwN2NjZGU2MmY3MGYzODA1MTQ3ZmExMWRmOCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtcGFyc2lu
Zy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS91cmwtcGFyc2luZy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw0IEBACitDT05TT0xF
IE1FU1NBR0U6IEludmFsaWQgdXJsIGZvciBXZWJTb2NrZXQgbnVsbAogQ09OU09MRSBNRVNTQUdF
OiBJbnZhbGlkIHVybCBmb3IgV2ViU29ja2V0IHdzOi8vamF2YXNjcmlwdDphCiBDT05TT0xFIE1F
U1NBR0U6IEludmFsaWQgdXJsIGZvciBXZWJTb2NrZXQgL2FwcGxldAogQ09OU09MRSBNRVNTQUdF
OiBXcm9uZyB1cmwgc2NoZW1lIGZvciBXZWJTb2NrZXQgamF2YXNjcmlwdDphCkBAIC05LDYgKzEw
LDcgQEAgVGVzdCBXZWJTb2NrZXQgVVJMIHBhcnNpbmcuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCiAKIFBBU1MgbmV3IFdlYlNvY2tldCgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5v
dCBlbm91Z2ggYXJndW1lbnRzLgorUEFTUyBuZXcgV2ViU29ja2V0KG51bGwpIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KIFBBU1MgbmV3IFdlYlNv
Y2tldCgid3M6Ly9qYXZhc2NyaXB0OmEiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9F
UlI6IERPTSBFeGNlcHRpb24gMTIuCiBQQVNTIG5ldyBXZWJTb2NrZXQoIi9hcHBsZXQiKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCiBQQVNTIG5l
dyBXZWJTb2NrZXQoImphdmFzY3JpcHQ6YSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFY
X0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXBhcnNpbmcuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXBhcnNpbmcuaHRtbAppbmRleCA3M2Qz
NjhiZGM3MjhiNzUyODI5MzY5OTBhZDZkZjg1NWRjNTk1MjA5Li40NDEzMmY3MjdlZDMyYTgzOGI0
NTM3OGEzOGZhN2JkNjY5ZDY1NGI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC1wYXJzaW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtcGFyc2luZy5odG1sCkBAIC0xMiw2
ICsxMiw5IEBAIGRlc2NyaXB0aW9uKCJUZXN0IFdlYlNvY2tldCBVUkwgcGFyc2luZy4iKTsKIC8v
IE5vdCBlbm91Z2ggYXJndW1lbnRzLgogc2hvdWxkVGhyb3coJ25ldyBXZWJTb2NrZXQoKScpOwog
CisvLyBOdWxsIFVSTAorc2hvdWxkVGhyb3coJ25ldyBXZWJTb2NrZXQobnVsbCknKTsKKwogLy8g
SW52YWxpZCB1cmwgd2lsbCBmYWlsIHRvIGJlIHBhcnNlZC4KIHNob3VsZFRocm93KCduZXcgV2Vi
U29ja2V0KCJ3czovL2phdmFzY3JpcHQ6YSIpJyk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLXdpbi93ZWJzb2NrZXQvdGVzdHMvdXJsLXBhcnNpbmctZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL3dlYnNvY2tldC90ZXN0
cy91cmwtcGFyc2luZy1leHBlY3RlZC50eHQKaW5kZXggODg3NWVkYjM5OWU0MTRlMGRiN2I4Nzkw
OTE2YmRmOWUwYjIzMmVjZi4uMWU5NWU0NGUzYjg2NDAwMWNhYjQwMTM4YmM4MmZhZTY4MjI1MDYz
ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL3dlYnNvY2tl
dC90ZXN0cy91cmwtcGFyc2luZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0td2luL3dlYnNvY2tldC90ZXN0cy91cmwtcGFyc2luZy1leHBlY3RlZC50eHQK
QEAgLTEsMyArMSw0IEBACitDT05TT0xFIE1FU1NBR0U6IFdyb25nIHVybCBzY2hlbWUgZm9yIFdl
YlNvY2tldCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbnVsbAog
Q09OU09MRSBNRVNTQUdFOiBJbnZhbGlkIHVybCBmb3IgV2ViU29ja2V0IHdzOi8vamF2YXNjcmlw
dDphLwogQ09OU09MRSBNRVNTQUdFOiBXcm9uZyB1cmwgc2NoZW1lIGZvciBXZWJTb2NrZXQgaHR0
cDovLzEyNy4wLjAuMTo4ODgwL2FwcGxldAogQ09OU09MRSBNRVNTQUdFOiBXcm9uZyB1cmwgc2No
ZW1lIGZvciBXZWJTb2NrZXQgamF2YXNjcmlwdDphCkBAIC04LDYgKzksNyBAQCBUZXN0IFdlYlNv
Y2tldCBVUkwgcGFyc2luZy4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCitQQVNTIG5l
dyBXZWJTb2NrZXQobnVsbCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00g
RXhjZXB0aW9uIDEyLgogUEFTUyBuZXcgV2ViU29ja2V0KCJ3czovL2phdmFzY3JpcHQ6YSIpIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KIFBBU1Mg
bmV3IFdlYlNvY2tldCgiL2FwcGxldCIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VS
UjogRE9NIEV4Y2VwdGlvbiAxMi4KIFBBU1MgbmV3IFdlYlNvY2tldCgiamF2YXNjcmlwdDphIikg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaGl4aWU3Ni91cmwtcGFyc2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3VybC1w
YXJzaW5nLWV4cGVjdGVkLnR4dAppbmRleCA5MTk1ZWFlMDNmMTAzMzJlMjI3N2Y0MGYwZWQ4Yjhi
ZDUyOGNlNGQ0Li5iNTBlMDRkZmQ4OTAzMWYxNWE5NTkzZmZjODQ5NGQ0NjYyMzFkYmY5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oaXhpZTc2L3VybC1wYXJzaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3Vy
bC1wYXJzaW5nLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDQgQEAKK0NPTlNPTEUgTUVTU0FHRTog
V3JvbmcgdXJsIHNjaGVtZSBmb3IgV2ViU29ja2V0IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC93ZWJz
b2NrZXQvdGVzdHMvaHliaS9udWxsCiBDT05TT0xFIE1FU1NBR0U6IEludmFsaWQgdXJsIGZvciBX
ZWJTb2NrZXQgd3M6Ly9qYXZhc2NyaXB0OmEvCiBDT05TT0xFIE1FU1NBR0U6IFdyb25nIHVybCBz
Y2hlbWUgZm9yIFdlYlNvY2tldCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvYXBwbGV0CiBDT05TT0xF
IE1FU1NBR0U6IFdyb25nIHVybCBzY2hlbWUgZm9yIFdlYlNvY2tldCBqYXZhc2NyaXB0OmEKQEAg
LTksNiArMTAsNyBAQCBUZXN0IFdlYlNvY2tldCBVUkwgcGFyc2luZy4KIE9uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KIAogUEFTUyBuZXcgV2ViU29ja2V0KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCitQQVNTIG5ldyBXZWJTb2NrZXQobnVsbCkgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgogUEFTUyBu
ZXcgV2ViU29ja2V0KCJ3czovL2phdmFzY3JpcHQ6YSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
U1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KIFBBU1MgbmV3IFdlYlNvY2tldCgiL2FwcGxl
dCIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4K
IFBBU1MgbmV3IFdlYlNvY2tldCgiamF2YXNjcmlwdDphIikgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtcGFy
c2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC1wYXJzaW5nLWV4cGVjdGVkLnR4dAppbmRleCBk
YzI2ODMxZGJiMGQ0OGU2YWRmZGM2YzQyNWE0NjgyNzcxNDM2YmQ4Li4zNTZlYjZlNGY4NTNlZTY4
YzY5MjQ4ZGI0M2YxMmVjN2JiOGZjOTBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC1wYXJzaW5nLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC1wYXJzaW5nLWV4cGVjdGVkLnR4dApAQCAtMSwzICsx
LDQgQEAKK0NPTlNPTEUgTUVTU0FHRTogV3JvbmcgdXJsIHNjaGVtZSBmb3IgV2ViU29ja2V0IGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC93ZWJzb2NrZXQvdGVzdHMvaHliaS9udWxsCiBDT05TT0xFIE1F
U1NBR0U6IEludmFsaWQgdXJsIGZvciBXZWJTb2NrZXQgd3M6Ly9qYXZhc2NyaXB0OmEvCiBDT05T
T0xFIE1FU1NBR0U6IFdyb25nIHVybCBzY2hlbWUgZm9yIFdlYlNvY2tldCBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvYXBwbGV0CiBDT05TT0xFIE1FU1NBR0U6IFdyb25nIHVybCBzY2hlbWUgZm9yIFdl
YlNvY2tldCBqYXZhc2NyaXB0OmEKQEAgLTksNiArMTAsNyBAQCBUZXN0IFdlYlNvY2tldCBVUkwg
cGFyc2luZy4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogUEFTUyBuZXcgV2ViU29ja2V0
KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCitQQVNT
IG5ldyBXZWJTb2NrZXQobnVsbCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBE
T00gRXhjZXB0aW9uIDEyLgogUEFTUyBuZXcgV2ViU29ja2V0KCJ3czovL2phdmFzY3JpcHQ6YSIp
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KIFBB
U1MgbmV3IFdlYlNvY2tldCgiL2FwcGxldCIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFY
X0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KIFBBU1MgbmV3IFdlYlNvY2tldCgiamF2YXNjcmlwdDph
IikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173234</attachid>
            <date>2012-11-09 01:13:04 -0800</date>
            <delta_ts>2012-11-09 05:45:42 -0800</delta_ts>
            <desc>Patch (merge changes only)</desc>
            <filename>bug-100801-20121109101111.patch</filename>
            <type>text/plain</type>
            <size>90660</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODQwNGNhNjI0OWJiOWNj
OGRmODg5YTRkYTFjYzU2NDIwYjNkOTBkZi4uMGMyMGU5OTAxYjlhNTBjNjNjM2E4NTIzZmJhNDE1
NDhhNTY4NmE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxMi0xMS0wMSAgVG9t
bXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhl
IFY4IGN1c3RvbSBjb2RlIGZvciBXZWJTb2NrZXRzIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA4MDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGRvZXMgdGhlIGZv
bGxvd2luZzoKKworICAgICAgICAxKSBNb2RpZmllcyB0aGUgVjggY29kZSBnZW5lcmF0b3IgdG8g
c3VwcG9ydCBvdmVybG9hZGVkIGNvbnN0cnVjdG9ycywKKyAgICAgICAgICAgdGhlIEpTIGdlbmVy
YXRvciBpcyBmaXhlZCB0byB3b3JrIGFzIGJlZm9yZS4gUHJvcGVyIHN1cHBvcnQgZm9yIEpTIHdp
bGwgY29tZSBsYXRlci4KKworICAgICAgICAyKSBNb2RpZmllcyBXZWJTb2NrZXQuaC8uY3BwIGZv
ciB0aGUgbmV3IGNvbnN0cnVjdG9ycy4KKworICAgICAgICBUZXN0ZWQgYnkgcnVubmluZyBXZWJT
b2NrZXRzIGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgor
ICAgICAgICAoV2ViU29ja2V0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToK
KyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVy
KToKKyAgICAgICAgKEdlbmVyYXRlT3ZlcmxvYWRlZENvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAg
ICAgICAoR2VuZXJhdGVTaW5nbGVDb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKEdlbmVy
YXRlQ29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9u
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbToKKyAgICAgICAgKGNv
cHlBdHRyaWJ1dGVzKToKKyAgICAgICAgKHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KToKKyAg
ICAgICAgKHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVzKToKKyAgICAgICAgKGFwcGx5RXh0ZW5kZWRB
dHRyaWJ1dGVMaXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETFN0cnVjdHVyZS5w
bToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6V2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlOjpX
ZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGUpOgorICAgICAgICAoV2ViRE9N
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OldlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzUHJpdmF0ZSk6CisgICAgICAgIChXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
V2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOgorICAgICAgICAoV2ViRE9NVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJET01UZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczo6aW1wbCk6CisgICAgICAgIChXZWJET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6fldlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKToKKyAgICAg
ICAgKHRvV2ViQ29yZSk6CisgICAgICAgICh0b1dlYktpdCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktp
dERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpraXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAg
ICAgICAgKFdlYktpdDo6d3JhcFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKToKKyAgICAgICAg
KHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19maW5hbGl6ZSk6CisgICAg
ICAgICh3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfc2V0X3Byb3BlcnR5
KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19nZXRf
cHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0
b3JzX2NvbnN0cnVjdGVkKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2Nv
bnN0cnVjdG9yc19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vdmVybG9h
ZGVkX2NvbnN0cnVjdG9yc19pbml0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOiBBZGRlZC4KKyAg
ICAgICAgKF9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk6CisgICAgICAgIChf
V2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDbGFzcyk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNQcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnND
b25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rv
cjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZTo6c2VsZik6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6On5KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmdldE93blBy
b3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OmlzT2JzZXJ2YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNPd25lcjo6ZmluYWxpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChXZWJDb3JlOjp0b1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6cmVsZWFzZUltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6cmVsZWFzZUlt
cGxJZk5vdE51bGwpOgorICAgICAgICAoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OndyYXBwZXJPd25lcik6CisgICAgICAgIChXZWJDb3JlOjp3
cmFwcGVyQ29udGV4dCk6CisgICAgICAgIChKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJv
dG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQ
cm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZTo6SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1Byb3RvdHlwZSk6CisgICAgICAgIChKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc0NvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bRE9NVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgZGVhbGxvY10pOgorICAgICAgICAoLVtET01UZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyBmaW5hbGl6ZV0pOgorICAgICAgICAoY29yZSk6CisgICAgICAgIChr
aXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzSW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
aWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5pZGwuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaWRsOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzVjhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1Y4SW50ZXJuYWw6OlY4X1VTRSk6CisgICAgICAgIChXZWJDb3JlOjpW
OFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjFDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjJD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
Ojpjb25zdHJ1Y3RvcjNDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUZW1w
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpH
ZXRSYXdUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzOjpIYXNJbnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjp3cmFwU2xvdyk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjpkZXJlZk9iamVjdCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMp
OgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6dG9OYXRp
dmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6aW5z
dGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6
CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp3cmFwKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OFdlYlNvY2tldEN1c3RvbS5jcHA6CisKIDIwMTItMTEtMDggIEV1Z2VuZSBLbHl1Y2huaWtvdiAg
PGV1c3Rhcy5idWdAZ21haWwuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFRpbWVsaW5l
OiAiU2VuZCBSZXF1ZXN0IiBldmVudHMgYXJlIHNob3duIG91dCBvZiBvcmRlci4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggNDZkNjJk
ZTg5ZjQ2NjhmZTdhMTUxZmVlZDUzMTEzODI0NzMwMjdkYS4uZTRhNDU2MGQ0OGEzOTA3MjdmNGJj
Y2UxZmVkNjMyYzVjODgzOWM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTE2NCw2ICsxNjQsMzYgQEAgUGFzc1JlZlB0cjxXZWJT
b2NrZXQ+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
CiAgICAgcmV0dXJuIHdlYlNvY2tldC5yZWxlYXNlKCk7CiB9CiAKK1Bhc3NSZWZQdHI8V2ViU29j
a2V0PiBXZWJTb2NrZXQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgVmVjdG9yPFN0cmlu
Zz4gcHJvdG9jb2xzOworICAgIHJldHVybiBXZWJTb2NrZXQ6OmNyZWF0ZShjb250ZXh0LCB1cmws
IHByb3RvY29scywgZWMpOworfQorCitQYXNzUmVmUHRyPFdlYlNvY2tldD4gV2ViU29ja2V0Ojpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcm90b2NvbHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQorewor
ICAgIGlmICh1cmwuaXNOdWxsKCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBSZWZQdHI8V2ViU29ja2V0PiB3ZWJTb2NrZXQoYWRv
cHRSZWYobmV3IFdlYlNvY2tldChjb250ZXh0KSkpOworICAgIHdlYlNvY2tldC0+c3VzcGVuZElm
TmVlZGVkKCk7CisKKyAgICB3ZWJTb2NrZXQtPmNvbm5lY3QoY29udGV4dC0+Y29tcGxldGVVUkwo
dXJsKSwgcHJvdG9jb2xzLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIHJldHVybiB3ZWJTb2NrZXQucmVsZWFzZSgpOworfQorCitQYXNzUmVmUHRyPFdlYlNvY2tl
dD4gV2ViU29ja2V0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUmIGVj
KQoreworICAgIFZlY3RvcjxTdHJpbmc+IHByb3RvY29sczsKKyAgICBwcm90b2NvbHMuYXBwZW5k
KHByb3RvY29sKTsKKyAgICByZXR1cm4gV2ViU29ja2V0OjpjcmVhdGUoY29udGV4dCwgdXJsLCBw
cm90b2NvbHMsIGVjKTsKK30KKwogdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5n
JiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFZlY3RvcjxTdHJpbmc+IHByb3RvY29s
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRl
eCBhOTM1NTI4YmEyNDYxMjIxOTI3ZDViMzNlMWI1Y2Y2NTk3NGM0NGQyLi4yYmFlNTM5YjFiNTEy
NTNhNGIzM2NlYmI1Yjg0Njk2OGVlYTQ4YzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC01Niw2ICs1Niw5IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdWJQcm90
b2NvbFNlcGVyYXRvcigpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNvY2tldD4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2Nr
ZXQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB1cmwsIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
cHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2Nr
ZXQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwcm90b2NvbHMsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0
dWFsIH5XZWJTb2NrZXQoKTsKIAogICAgIGVudW0gU3RhdGUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAppbmRleCA3MmNmNWQ0ZTljYzE3YmM5
MmY3MzhmMDliZTY4YWNiMjAxMWVlOTQ3Li4yM2FjYzVmMTE1ODNiMGYzNzU4YWU3OGUxYTFkZmNi
Y2NlZDA1YTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmlkbApAQCAtMzIsMTAgKzMyLDE1IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCX1NP
Q0tFVFMsCiAgICAgQWN0aXZlRE9NT2JqZWN0LAotICAgIEN1c3RvbUNvbnN0cnVjdG9yLAotICAg
IENvbnN0cnVjdG9yUGFyYW1ldGVycz0xLAorICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyB1
cmwpLAorICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyB1cmwsIGluIHNlcXVlbmNlPFN0cmlu
Zz4gcHJvdG9jb2xzKSwKKyAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgdXJsLCBpbiBET01T
dHJpbmcgcHJvdG9jb2wpLAorICAgIENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uLAorICAgIENh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgRXZlbnRUYXJnZXQsCi0gICAgSlNO
b1N0YXRpY1RhYmxlcworICAgIEpTTm9TdGF0aWNUYWJsZXMsCisgICAgSlNDdXN0b21Db25zdHJ1
Y3RvciwKKyAgICBDb25zdHJ1Y3RvclBhcmFtZXRlcnM9MSwKIF0gaW50ZXJmYWNlIFdlYlNvY2tl
dCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBVUkw7IC8vIExvd2VyY2FzZWQg
LnVybCBpcyB0aGUgb25lIGluIHRoZSBzcGVjLCBidXQgbGVhdmluZyAuVVJMIGZvciBjb21wYXRp
YmlsaXR5IHJlYXNvbnMuCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1cmw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CmluZGV4IDg1NWRhYWFjOGUwOTJiYTgzNmQ5YTEzNTlkNmIyYTg4MzUxNGE4ZGMuLjQwZDY3OWRh
NmYxOGNiNjljN2QwYzgwNThmNDcyNTcwMWIzYWRhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0zNzE3LDEzICszNzE3
LDE3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgogICAgIG15ICRkYXRhTm9k
ZSA9IHNoaWZ0OwogICAgIG15ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciA9IHNoaWZ0Owog
CisgICAgIyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG92ZXJsb2FkZWQgY29uc3RydWN0b3JzIHRv
IEpTIGFzIHdlbGwuCisgICAgIyBGb3Igbm93IG1pbWljIHRoZSBvbGQgYmVoYXZpb3VyIGJ5IG9u
bHkgZ2VuZXJhdGluZyBjb2RlIGZvciB0aGUgbGFzdCAiQ29uc3RydWN0b3IiIGF0dHJpYnV0ZS4K
KyAgICBteSAkZnVuY3Rpb24gPSBAeyRkYXRhTm9kZS0+Y29uc3RydWN0b3JzfVstMV07CisKICAg
ICBteSAkY29uc3RydWN0b3JDbGFzc05hbWUgPSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3Ig
PyAiJHtjbGFzc05hbWV9TmFtZWRDb25zdHJ1Y3RvciIgOiAiJHtjbGFzc05hbWV9Q29uc3RydWN0
b3IiOwogICAgIG15ICRudW1iZXJPZkNvbnN0cnVjdG9yUGFyYW1ldGVycyA9ICRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yUGFyYW1ldGVycyJ9OwogICAgIGlmICgh
ZGVmaW5lZCAkbnVtYmVyT2ZDb25zdHJ1Y3RvclBhcmFtZXRlcnMpIHsKICAgICAgICAgaWYgKCRj
b2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVGVtcGxhdGUoJGRhdGFOb2RlLCAiRXZlbnQiKSkg
ewogICAgICAgICAgICAgJG51bWJlck9mQ29uc3RydWN0b3JQYXJhbWV0ZXJzID0gMjsKICAgICAg
ICAgfSBlbHNpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3Ii
fSkgewotICAgICAgICAgICAgJG51bWJlck9mQ29uc3RydWN0b3JQYXJhbWV0ZXJzID0gQHskZGF0
YU5vZGUtPmNvbnN0cnVjdG9yLT5wYXJhbWV0ZXJzfTsKKyAgICAgICAgICAgICRudW1iZXJPZkNv
bnN0cnVjdG9yUGFyYW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKICAgICAgICAg
fQogICAgIH0KIApAQCAtMzg4NSw3ICszODg5LDYgQEAgRU5ECiAKICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSogY2FzdGVkVGhpcyA9
IGpzQ2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+KGV4ZWMtPmNhbGxlZSgpKTtcbiIpOwog
Ci0gICAgICAgICAgICBteSAkZnVuY3Rpb24gPSAkZGF0YU5vZGUtPmNvbnN0cnVjdG9yOwogICAg
ICAgICAgICAgbXkgQGNvbnN0cnVjdG9yQXJnTGlzdDsKIAogICAgICAgICAgICAgJGltcGxJbmNs
dWRlc3siPHJ1bnRpbWUvRXJyb3IuaD4ifSA9IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IGZiZGRhZTdiYWI4Y2I1Mzc0
ZjNkNTZlZTc2N2QzZTBjNTQ2ZGFkZDUuLjk4MTFkMzE5MDMwMThmYzE1NjJkZWEwNDA5MDkyNGVm
NWJiMWE3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtCkBAIC00OTQsNiArNDk0LDE3IEBAIEVORAogICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsIDw8RU5EKTsKIHByaXZhdGU6CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd3JhcFNsb3coJHt3cmFwU2xvd0FyZ3VtZW50VHlwZX0sIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOworRU5ECisKKyAgICBpZiAoSXND
b25zdHJ1Y3RhYmxlKCRkYXRhTm9kZSkgJiYgQHskZGF0YU5vZGUtPmNvbnN0cnVjdG9yc30gPiAx
KSB7CisgICAgICAgIGZvciAobXkgJGkgPSAxOyAkaSA8PSBAeyRkYXRhTm9kZS0+Y29uc3RydWN0
b3JzfTsgJGkrKykgeworICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7Cisg
ICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvciR7aX1DYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJik7CitFTkQKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKIH07CiAKIEVORApAQCAtMTg1MiwxMSArMTg2Myw1MSBA
QCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICByZXR1cm4gKCRwYXJhbWV0ZXJDaGVj
a1N0cmluZywgJHBhcmFtSW5kZXgsICVyZXBsYWNlbWVudHMpOwogfQogCi1zdWIgR2VuZXJhdGVD
b25zdHJ1Y3RvckNhbGxiYWNrCitzdWIgR2VuZXJhdGVPdmVybG9hZGVkQ29uc3RydWN0b3JDYWxs
YmFjawogewotICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OwogICAgIG15ICRkYXRhTm9kZSA9IHNo
aWZ0OwogICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7CisgICAgCisgICAgcHVzaChAaW1w
bENvbnRlbnQsIDw8RU5EKTsKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOCR7aW1wbENsYXNzTmFt
ZX06OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAg
ICBJTkNfU1RBVFMoIkRPTS4ke2ltcGxDbGFzc05hbWV9LkNvbnN0cnVjdG9yIik7CisgICAgaWYg
KCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
IkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIp
OworCisgICAgaWYgKENvbnN0cnVjdG9yTW9kZTo6Y3VycmVudCgpID09IENvbnN0cnVjdG9yTW9k
ZTo6V3JhcEV4aXN0aW5nT2JqZWN0KQorICAgICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKKwor
RU5ECisKKyAgICBteSAkbGVhc3ROdW1NYW5kYXRvcnlQYXJhbXMgPSAyNTU7CisgICAgZm9yZWFj
aCBteSAkY29uc3RydWN0b3IgKEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3RvcnN9KSB7CisgICAgICAg
IG15ICRuYW1lID0gImNvbnN0cnVjdG9yIiAuICRjb25zdHJ1Y3Rvci0+e292ZXJsb2FkZWRJbmRl
eH0gLiAiQ2FsbGJhY2siOworICAgICAgICBteSAoJG51bU1hbmRhdG9yeVBhcmFtcywgJHBhcmFt
ZXRlcnNDaGVjaykgPSBHZW5lcmF0ZUZ1bmN0aW9uUGFyYW1ldGVyc0NoZWNrKCRjb25zdHJ1Y3Rv
cik7CisgICAgICAgICRsZWFzdE51bU1hbmRhdG9yeVBhcmFtcyA9ICRudW1NYW5kYXRvcnlQYXJh
bXMgaWYgKCRudW1NYW5kYXRvcnlQYXJhbXMgPCAkbGVhc3ROdW1NYW5kYXRvcnlQYXJhbXMpOwor
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoJHBhcmFtZXRlcnNDaGVjaylcbiIp
OworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuICRuYW1lKGFyZ3Mp
O1xuIik7CisgICAgfQorICAgIGlmICgkbGVhc3ROdW1NYW5kYXRvcnlQYXJhbXMgPj0gMSkgewor
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoYXJncy5MZW5ndGgoKSA8ICRsZWFz
dE51bU1hbmRhdG9yeVBhcmFtcylcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRl
KCkpO1xuIik7CisgICAgfQorICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CisgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKDAsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKK0VORAorICAgIHB1c2go
QGltcGxDb250ZW50LCAifVxuXG4iKTsKK30KKworc3ViIEdlbmVyYXRlU2luZ2xlQ29uc3RydWN0
b3JDYWxsYmFjaworeworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworICAgIG15ICRpbXBsQ2xh
c3NOYW1lID0gc2hpZnQ7CisgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CisKKyAgICBteSAkb3Zl
cmxvYWRlZEluZGV4U3RyaW5nID0gIiI7CisgICAgaWYgKCRmdW5jdGlvbi0+e292ZXJsb2FkZWRJ
bmRleH0gPiAwKSB7CisgICAgICAgICRvdmVybG9hZGVkSW5kZXhTdHJpbmcgLj0gJGZ1bmN0aW9u
LT57b3ZlcmxvYWRlZEluZGV4fTsKKyAgICB9CiAKICAgICBteSAkcmFpc2VzRXhjZXB0aW9ucyA9
IEB7JGZ1bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25zfTsKICAgICBpZiAoJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24ifSkgewpAQCAtMTg3
NSwxOCArMTkyNiwyMiBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckNhbGxiYWNrCiAgICAgbXkg
QGJlZm9yZUFyZ3VtZW50TGlzdDsKICAgICBteSBAYWZ0ZXJBcmd1bWVudExpc3Q7CiAgICAgcHVz
aChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOCR7aW1wbENs
YXNzTmFtZX06OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
K3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOCR7aW1wbENsYXNzTmFtZX06OmNvbnN0cnVjdG9yJHtv
dmVybG9hZGVkSW5kZXhTdHJpbmd9Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKLSAgICBJTkNfU1RBVFMoIkRPTS4ke2ltcGxDbGFzc05hbWV9LkNvbnN0cnVjdG9yIik7Cisg
ICAgSU5DX1NUQVRTKCJET00uJHtpbXBsQ2xhc3NOYW1lfS5Db25zdHJ1Y3RvciR7b3ZlcmxvYWRl
ZEluZGV4U3RyaW5nfSIpOwogICAgICR7bWF5YmVPYnNlcnZlRmVhdHVyZX0KK0VORAorCisgICAg
aWYgKCRmdW5jdGlvbi0+e292ZXJsb2FkZWRJbmRleH0gPT0gMCkgeworICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCA8PEVORCk7CiAgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90
IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIpOwogCiAgICAgaWYgKENvbnN0cnVjdG9yTW9kZTo6
Y3VycmVudCgpID09IENvbnN0cnVjdG9yTW9kZTo6V3JhcEV4aXN0aW5nT2JqZWN0KQogICAgICAg
ICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKIEVORAotCi0gICAgcHVzaChAaW1wbENvbnRlbnQsIEdl
bmVyYXRlQXJndW1lbnRzQ291bnRDaGVjaygkZnVuY3Rpb24sICRkYXRhTm9kZSkpOworICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKCRmdW5jdGlv
biwgJGRhdGFOb2RlKSk7CisgICAgfQogCiAgICAgaWYgKCRyYWlzZXNFeGNlcHRpb25zKSB7CiAg
ICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJFeGNlcHRpb25Db2RlLmgiKTsKQEAgLTE5NDksNiAr
MjAwNCwyMSBAQCBFTkQKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7CiB9CiAKK3N1YiBH
ZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbGJhY2sKK3sKKyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsK
KyAgICBteSAkaW1wbENsYXNzTmFtZSA9IHNoaWZ0OworCisgICAgaWYgKEB7JGRhdGFOb2RlLT5j
b25zdHJ1Y3RvcnN9ID09IDEpIHsKKyAgICAgICAgR2VuZXJhdGVTaW5nbGVDb25zdHJ1Y3RvckNh
bGxiYWNrKCRkYXRhTm9kZSwgJGltcGxDbGFzc05hbWUsIEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3Rv
cnN9WzBdKTsKKyAgICB9IGVsc2UgeworICAgICAgICBmb3JlYWNoIG15ICRjb25zdHJ1Y3RvciAo
QHskZGF0YU5vZGUtPmNvbnN0cnVjdG9yc30pIHsKKyAgICAgICAgICAgIEdlbmVyYXRlU2luZ2xl
Q29uc3RydWN0b3JDYWxsYmFjaygkZGF0YU5vZGUsICRpbXBsQ2xhc3NOYW1lLCAkY29uc3RydWN0
b3IpOworICAgICAgICB9CisgICAgICAgIEdlbmVyYXRlT3ZlcmxvYWRlZENvbnN0cnVjdG9yQ2Fs
bGJhY2soJGRhdGFOb2RlLCAkaW1wbENsYXNzTmFtZSk7CisgICAgfQorfQorCiBzdWIgR2VuZXJh
dGVFdmVudENvbnN0cnVjdG9yQ2FsbGJhY2sKIHsKICAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsK
QEAgLTI4MjIsOSArMjg5Miw5IEBAIEVORAogICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICJ9
IC8vIG5hbWVzcGFjZSAke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbFxuXG4iKTsKIAogICAgIGlm
ICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1lZENvbnN0cnVjdG9yIn0gJiYg
ISgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1c3RvbUNvbnN0cnVjdG9yIn0g
fHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3IifSkp
IHsKLSAgICAgICAgR2VuZXJhdGVOYW1lZENvbnN0cnVjdG9yQ2FsbGJhY2soJGRhdGFOb2RlLT5j
b25zdHJ1Y3RvciwgJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CisgICAgICAgIEdlbmVyYXRl
TmFtZWRDb25zdHJ1Y3RvckNhbGxiYWNrKEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3RvcnN9WzBdLCAk
ZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lKTsKICAgICB9IGVsc2lmICgkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvciJ9ICYmICEoJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiVjhDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0pKSB7Ci0gICAgICAgIEdlbmVyYXRlQ29u
c3RydWN0b3JDYWxsYmFjaygkZGF0YU5vZGUtPmNvbnN0cnVjdG9yLCAkZGF0YU5vZGUsICRpbnRl
cmZhY2VOYW1lKTsKKyAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckNhbGxiYWNrKCRkYXRhTm9k
ZSwgJGludGVyZmFjZU5hbWUpOwogICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0
cnVjdG9yVGVtcGxhdGUoJGRhdGFOb2RlLCAiRXZlbnQiKSkgewogICAgICAgICBHZW5lcmF0ZUV2
ZW50Q29uc3RydWN0b3JDYWxsYmFjaygkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lKTsKICAgICB9
IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclRlbXBsYXRlKCRkYXRhTm9kZSwg
IlR5cGVkQXJyYXkiKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9JRExQYXJzZXIucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBh
cnNlci5wbQppbmRleCAxOWZiNjQ5NWMzMWIxZmI1NmQ3ZTZhOWYxNTBkYjk1OTgyYzc0NzEyLi40
OGY1YzNjM2ZlNTkwMzY4MjY0MGQ0OTViN2M1MDdiMmFmZjJhZmE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQpAQCAtMTMyMyw2ICsxMzIzLDI1IEBA
IHN1YiBwYXJzZUV4dGVuZGVkQXR0cmlidXRlTGlzdEFsbG93RW1wdHkKICAgICByZXR1cm4ge307
CiB9CiAKK3N1YiBjb3B5QXR0cmlidXRlcworeworICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZUxp
c3QgPSBzaGlmdDsKKyAgICBteSAkYXR0ciA9IHNoaWZ0OworCisgICAgZm9yIG15ICRrZXkgKGtl
eXMgJXskYXR0cn0pIHsKKyAgICAgICAgaWYgKCRrZXkgZXEgIkNvbnN0cnVjdG9yIikgeworICAg
ICAgICAgICAgcHVzaChAeyRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiQ29uc3RydWN0b3JzIn19
LCAkYXR0ci0+eyRrZXl9KTsKKyAgICAgICAgfSBlbHNpZiAoJGtleSBlcSAiQ29uc3RydWN0b3Jz
IikgeworICAgICAgICAgICAgbXkgQGNvbnN0cnVjdG9ycyA9IEB7JGF0dHItPnska2V5fX07Cisg
ICAgICAgICAgICBmb3JlYWNoIG15ICRjb25zdHJ1Y3RvciAoQGNvbnN0cnVjdG9ycykgeworICAg
ICAgICAgICAgICAgIHB1c2goQHskZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57IkNvbnN0cnVjdG9y
cyJ9fSwgJGNvbnN0cnVjdG9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnska2V5fSA9ICRhdHRyLT57JGtleX07
CisgICAgICAgIH0KKyAgICB9Cit9CisKIHN1YiBwYXJzZUV4dGVuZGVkQXR0cmlidXRlTGlzdAog
ewogICAgIG15ICRzZWxmID0gc2hpZnQ7CkBAIC0xMzMxLDEzICsxMzUwLDkgQEAgc3ViIHBhcnNl
RXh0ZW5kZWRBdHRyaWJ1dGVMaXN0CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRz
ZWxmLT5nZXRUb2tlbigpLCAiWyIsIF9fTElORV9fKTsKICAgICAgICAgbXkgJGV4dGVuZGVkQXR0
cmlidXRlTGlzdCA9IHt9OwogICAgICAgICBteSAkYXR0ciA9ICRzZWxmLT5wYXJzZUV4dGVuZGVk
QXR0cmlidXRlKCk7Ci0gICAgICAgIGZvciBteSAka2V5IChrZXlzICV7JGF0dHJ9KSB7Ci0gICAg
ICAgICAgICAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57JGtleX0gPSAkYXR0ci0+eyRrZXl9Owot
ICAgICAgICB9CisgICAgICAgIGNvcHlBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3Qs
ICRhdHRyKTsKICAgICAgICAgJGF0dHIgPSAkc2VsZi0+cGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMo
KTsKLSAgICAgICAgZm9yIG15ICRrZXkgKGtleXMgJXskYXR0cn0pIHsKLSAgICAgICAgICAgICRl
eHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnska2V5fSA9ICRhdHRyLT57JGtleX07Ci0gICAgICAgIH0K
KyAgICAgICAgY29weUF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCwgJGF0dHIpOwog
ICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIl0iLCBf
X0xJTkVfXyk7CiAgICAgICAgIHJldHVybiAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0OwogICAgIH0K
QEAgLTEzNTQsOSArMTM2OSw3IEBAIHN1YiBwYXJzZUV4dGVuZGVkQXR0cmlidXRlcwogICAgICAg
ICBpZiAoJG5leHQtPnZhbHVlKCkgZXEgIiwiKSB7CiAgICAgICAgICAgICAkc2VsZi0+YXNzZXJ0
VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIiwiLCBfX0xJTkVfXyk7CiAgICAgICAgICAg
ICBteSAkYXR0ciA9ICRzZWxmLT5wYXJzZUV4dGVuZGVkQXR0cmlidXRlMigpOwotICAgICAgICAg
ICAgZm9yIG15ICRrZXkgKGtleXMgJXskYXR0cn0pIHsKLSAgICAgICAgICAgICAgICAkZXh0ZW5k
ZWRBdHRyaWJ1dGVMaXN0LT57JGtleX0gPSAkYXR0ci0+eyRrZXl9OwotICAgICAgICAgICAgfQor
ICAgICAgICAgICAgY29weUF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCwgJGF0dHIp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbGFzdDsKICAgICAgICAgfQpAQCAtMjM4
MSwxNCArMjM5NCwyMCBAQCBzdWIgYXBwbHlFeHRlbmRlZEF0dHJpYnV0ZUxpc3QKICAgICBteSAk
ZGF0YU5vZGUgPSBzaGlmdDsKICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0ID0gc2hpZnQ7
CiAKLSAgICBpZiAoZGVmaW5lZCAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57IkNvbnN0cnVjdG9y
In0pIHsKLSAgICAgICAgbXkgJG5ld0RhdGFOb2RlID0gbmV3IGRvbUZ1bmN0aW9uKCk7Ci0gICAg
ICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlKG5ldyBkb21TaWduYXR1cmUoKSk7Ci0gICAgICAg
ICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5uYW1lKCJDb25zdHJ1Y3RvciIpOwotICAgICAgICAk
bmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJp
YnV0ZUxpc3QpOwotICAgICAgICBwdXNoKEB7JG5ld0RhdGFOb2RlLT5wYXJhbWV0ZXJzfSwgQHsk
ZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57IkNvbnN0cnVjdG9yIn19KTsKKyAgICBpZiAoZGVmaW5l
ZCAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57IkNvbnN0cnVjdG9ycyJ9KSB7CisgICAgICAgIG15
IEBjb25zdHJ1Y3RvclBhcmFtcyA9IEB7JGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJDb25zdHJ1
Y3RvcnMifX07CisgICAgICAgIG15ICRpbmRleCA9IChAY29uc3RydWN0b3JQYXJhbXMgPT0gMSkg
PyAwIDogMTsKKyAgICAgICAgZm9yZWFjaCBteSAkcGFyYW0gKEBjb25zdHJ1Y3RvclBhcmFtcykg
eworICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9yID0gbmV3IGRvbUZ1bmN0aW9uKCk7CisgICAg
ICAgICAgICAkY29uc3RydWN0b3ItPnNpZ25hdHVyZShuZXcgZG9tU2lnbmF0dXJlKCkpOworICAg
ICAgICAgICAgJGNvbnN0cnVjdG9yLT5zaWduYXR1cmUtPm5hbWUoIkNvbnN0cnVjdG9yIik7Cisg
ICAgICAgICAgICAkY29uc3RydWN0b3ItPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRl
eHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICAgICAgICAgJGNvbnN0cnVjdG9yLT5wYXJhbWV0
ZXJzKCRwYXJhbSk7CisgICAgICAgICAgICAkY29uc3RydWN0b3ItPntvdmVybG9hZGVkSW5kZXh9
ID0gJGluZGV4Kys7CisgICAgICAgICAgICBwdXNoKEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3RvcnN9
LCAkY29uc3RydWN0b3IpOworICAgICAgICB9CisgICAgICAgIGRlbGV0ZSAkZXh0ZW5kZWRBdHRy
aWJ1dGVMaXN0LT57IkNvbnN0cnVjdG9ycyJ9OwogICAgICAgICAkZXh0ZW5kZWRBdHRyaWJ1dGVM
aXN0LT57IkNvbnN0cnVjdG9yIn0gPSAiVkFMVUVfSVNfTUlTU0lORyI7Ci0gICAgICAgICRkYXRh
Tm9kZS0+Y29uc3RydWN0b3IoJG5ld0RhdGFOb2RlKTsKICAgICB9IGVsc2lmIChkZWZpbmVkICRl
eHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgIG15
ICRuZXdEYXRhTm9kZSA9IG5ldyBkb21GdW5jdGlvbigpOwogICAgICAgICAkbmV3RGF0YU5vZGUt
PnNpZ25hdHVyZShuZXcgZG9tU2lnbmF0dXJlKCkpOwpAQCAtMjM5OSw3ICsyNDE4LDcgQEAgc3Vi
IGFwcGx5RXh0ZW5kZWRBdHRyaWJ1dGVMaXN0CiAgICAgICAgIG15ICRjb25zdHJ1Y3Rvck5hbWUg
PSAkYXR0cmlidXRlS2V5c1swXTsKICAgICAgICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+cGFyYW1l
dGVyc30sIEB7JGF0dHJpYnV0ZXN7JGNvbnN0cnVjdG9yTmFtZX19KTsKICAgICAgICAgJGV4dGVu
ZGVkQXR0cmlidXRlTGlzdC0+eyJOYW1lZENvbnN0cnVjdG9yIn0gPSAkY29uc3RydWN0b3JOYW1l
OwotICAgICAgICAkZGF0YU5vZGUtPmNvbnN0cnVjdG9yKCRuZXdEYXRhTm9kZSk7CisgICAgICAg
IHB1c2goQHskZGF0YU5vZGUtPmNvbnN0cnVjdG9yc30sICRuZXdEYXRhTm9kZSk7CiAgICAgfQog
ICAgICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3Qp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1
Y3R1cmUucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFN0cnVjdHVyZS5w
bQppbmRleCBmZjYyODcyNWViOTBmNTQ2NjczZmQxNjQxZWYxZGM1YWMyNmNkZmNiLi5mNDQzMjQx
NzNlYTJjZTBkNDQzYzZmNTRkZWZkYjU0ZDUwMzljZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFN0cnVjdHVyZS5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0lETFN0cnVjdHVyZS5wbQpAQCAtNDAsNyArNDAsNyBAQCBzdHJ1
Y3QoIGRvbUNsYXNzID0+IHsKICAgICBmdW5jdGlvbnMgPT4gJ0AnLCAgICAjIExpc3Qgb2YgJ2Rv
bUZ1bmN0aW9uJwogICAgIGF0dHJpYnV0ZXMgPT4gJ0AnLCAgICAjIExpc3Qgb2YgJ2RvbUF0dHJp
YnV0ZScgICAgCiAgICAgZXh0ZW5kZWRBdHRyaWJ1dGVzID0+ICckJywgIyBFeHRlbmRlZCBhdHRy
aWJ1dGVzCi0gICAgY29uc3RydWN0b3IgPT4gJyQnLCAjIENvbnN0cnVjdG9yCisgICAgY29uc3Ry
dWN0b3JzID0+ICdAJywgIyBDb25zdHJ1Y3RvcgogICAgIGlzRXhjZXB0aW9uID0+ICckJywgIyBV
c2VkIGZvciBleGNlcHRpb24gaW50ZXJmYWNlcwogfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9X
ZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY2YTJlZGI0
NmIzY2EwYjk4YWE5ODViMjJlNzQ2NWY4MTVjMDUwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMuY3BwCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgKiBUaGlzIGZpbGUgaGFzIGJl
ZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMuaCIKKworI2luY2x1ZGUgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgiCisjaW5jbHVk
ZSAiV2ViRXhjZXB0aW9uSGFuZGxlci5oIgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisKK3N0cnVjdCBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yczo6V2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlIHsKKyAgICBXZWJE
T01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGUoV2ViQ29yZTo6VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMqIG9iamVjdCA9IDApCisgICAgICAgIDogaW1wbChvYmplY3QpCisgICAg
eworICAgIH0KKworICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cz4gaW1wbDsKK307CisKK1dlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpXZWJET01U
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycygpCisgICAgOiBXZWJET01PYmplY3QoKQorICAgICwg
bV9pbXBsKDApCit7Cit9CisKK1dlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpXZWJE
T01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyogaW1wbCkKKyAgICA6IFdlYkRPTU9iamVjdCgpCisgICAgLCBtX2ltcGwobmV3IFdl
YkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJpdmF0ZShpbXBsKSkKK3sKK30KKworV2Vi
RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OldlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzKGNvbnN0IFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzJiBjb3B5KQorICAg
IDogV2ViRE9NT2JqZWN0KCkKK3sKKyAgICBtX2ltcGwgPSBjb3B5LmltcGwoKSA/IG5ldyBXZWJE
T01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGUoY29weS5pbXBsKCkpIDogMDsKK30K
KworV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMmIFdlYkRPTVRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzOjpvcGVyYXRvcj0oY29uc3QgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMmIGNvcHkpCit7CisgICAgZGVsZXRlIG1faW1wbDsKKyAgICBtX2ltcGwgPSBjb3B5Lmlt
cGwoKSA/IG5ldyBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGUoY29weS5p
bXBsKCkpIDogMDsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK1dlYkNvcmU6OlRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKiBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6aW1wbCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW1wbCA/IFdURjo6Z2V0UHRyKG1faW1wbC0+aW1wbCkg
OiAwOworfQorCitXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6fldlYkRPTVRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKCkKK3sKKyAgICBkZWxldGUgbV9pbXBsOworICAgIG1faW1w
bCA9IDA7Cit9CisKK1dlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB0b1dlYkNv
cmUoY29uc3QgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMmIHdyYXBwZXIpCit7Cisg
ICAgcmV0dXJuIHdyYXBwZXIuaW1wbCgpOworfQorCitXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyB0b1dlYktpdChXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdmFs
dWUpCit7CisgICAgcmV0dXJuIFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKHZhbHVl
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9D
UFAvV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44YWI4MTJiYmI2ZmYwZWRhNjhhYmU0OWY5M2ExYjIwNDEzYWMyNTI3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQ
UC9XZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCkBAIC0wLDAgKzEsNTMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICogQ29weXJp
Z2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaWZuZGVmIFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzX2gKKyNkZWZpbmUg
V2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNfaAorCisjaW5jbHVkZSA8V2ViRE9NT2Jq
ZWN0Lmg+CisjaW5jbHVkZSA8V2ViRE9NU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOworfTsKKworCitjbGFzcyBXZWJET01U
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA6IHB1YmxpYyBXZWJET01PYmplY3QgeworcHVibGlj
OgorICAgIFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKCk7CisgICAgZXhwbGljaXQg
V2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMqKTsKKyAgICBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhjb25z
dCBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyYpOworICAgIFdlYkRPTVRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzJiBvcGVyYXRvcj0oY29uc3QgV2ViRE9NVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMmKTsKKyAgICB2aXJ0dWFsIH5XZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycygpOworCisKKyAgICBXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogaW1w
bCgpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgc3RydWN0IFdlYkRPTVRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzUHJpdmF0ZTsKKyAgICBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1ByaXZhdGUqIG1faW1wbDsKK307CisKK1dlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzKiB0b1dlYkNvcmUoY29uc3QgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMmKTsK
K1dlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIHRvV2ViS2l0KFdlYkNvcmU6OlRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKik7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA4M2U1NmZmNzQ5ZmM0NzUyNmU1MDA5Zjk0MGQ4ZGEyZGIxMTMyMWQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJL
aXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTAsMCArMSwxMzcgQEAKKy8q
CisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0
LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3Mu
cGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldl
YktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgiCisKKyNpbmNsdWRlICJET01PYmpl
Y3RDYWNoZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU01haW5U
aHJlYWRFeGVjU3RhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRET01CaW5kaW5nLmgiCisjaW5jbHVk
ZSAiV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlLmgiCisjaW5jbHVk
ZSAiZ29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmgiCisjaW5jbHVkZSAid2Via2l0Z2xvYmFs
c3ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMqIGtpdChXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogb2JqKQor
eworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG9iaiwgMCk7CisKKyAgICBpZiAoZ3BvaW50ZXIg
cmV0ID0gRE9NT2JqZWN0Q2FjaGU6OmdldChvYmopKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8V2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihyZXQpOworCisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFdlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4oRE9N
T2JqZWN0Q2FjaGU6OnB1dChvYmosIFdlYktpdDo6d3JhcFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzKG9iaikpKTsKK30KKworV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGNv
cmUoV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHJlcXVlc3QpCit7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwocmVxdWVzdCwgMCk7CisKKyAgICBXZWJDb3JlOjpUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycyogY29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNv
cmVPYmplY3QpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVPYmplY3QsIDApOworCisg
ICAgcmV0dXJuIGNvcmVPYmplY3Q7Cit9CisKK1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzKiB3cmFwVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoV2ViQ29yZTo6VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMqIGNvcmVPYmplY3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoY29yZU9iamVjdCwgMCk7CisKKyAgICAvLyBXZSBjYWxsIHJlZigpIHJhdGhlciB0aGFuIHVz
aW5nIGEgQysrIHNtYXJ0IHBvaW50ZXIgYmVjYXVzZSB3ZSBjYW4ndCBzdG9yZSBhIEMrKyBvYmpl
Y3QKKyAgICAvLyBpbiBhIEMtYWxsb2NhdGVkIEdPYmplY3Qgc3RydWN0dXJlLiBTZWUgdGhlIGZp
bmFsaXplKCkgY29kZSBmb3IgdGhlIG1hdGNoaW5nIGRlcmVmKCkuCisgICAgY29yZU9iamVjdC0+
cmVmKCk7CisKKyAgICByZXR1cm4gV0VCS0lUX0RPTV9URVNUX09WRVJMT0FERURfQ09OU1RSVUNU
T1JTKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ET01fVEVTVF9PVkVSTE9BREVEX0NPTlNUUlVD
VE9SUywgImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgTlVMTCkpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworR19ERUZJTkVfVFlQRShXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycywgd2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3JzLCBXRUJLSVRf
VFlQRV9ET01fT0JKRUNUKQorCitlbnVtIHsKKyAgICBQUk9QXzAsCit9OworCitzdGF0aWMgdm9p
ZCB3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfZmluYWxpemUoR09iamVj
dCogb2JqZWN0KQoreworCisgICAgV2ViS2l0RE9NT2JqZWN0KiBkb21PYmplY3QgPSBXRUJLSVRf
RE9NX09CSkVDVChvYmplY3QpOworICAgIAorICAgIGlmIChkb21PYmplY3QtPmNvcmVPYmplY3Qp
IHsKKyAgICAgICAgV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGNvcmVPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KGRv
bU9iamVjdC0+Y29yZU9iamVjdCk7CisKKyAgICAgICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6
Zm9yZ2V0KGNvcmVPYmplY3QpOworICAgICAgICBjb3JlT2JqZWN0LT5kZXJlZigpOworCisgICAg
ICAgIGRvbU9iamVjdC0+Y29yZU9iamVjdCA9IDA7CisgICAgfQorCisKKyAgICBHX09CSkVDVF9D
TEFTUyh3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfcGFyZW50X2NsYXNz
KS0+ZmluYWxpemUob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X292
ZXJsb2FkZWRfY29uc3RydWN0b3JzX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50
IHByb3BlcnR5SWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQorewor
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBzd2l0Y2ggKHBy
b3BlcnR5SWQpIHsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURf
UFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KK30KKworCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25z
dHJ1Y3RvcnNfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwg
R1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHN3aXRjaCAocHJvcGVydHlJZCkgeworICAgIGRl
ZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3Qs
IHByb3BlcnR5SWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCisKK3N0YXRp
YyB2b2lkIHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19jb25zdHJ1Y3Rl
ZChHT2JqZWN0KiBvYmplY3QpCit7CisKKyAgICBpZiAoR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2Rv
bV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3JzX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdGVk
KQorICAgICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25z
dHJ1Y3RvcnNfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKK30KKworc3RhdGlj
IHZvaWQgd2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3JzX2NsYXNzX2luaXQo
V2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDbGFzcyogcmVxdWVzdENsYXNzKQor
eworICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVz
dENsYXNzKTsKKyAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2RvbV90ZXN0X292
ZXJsb2FkZWRfY29uc3RydWN0b3JzX2ZpbmFsaXplOworICAgIGdvYmplY3RDbGFzcy0+c2V0X3By
b3BlcnR5ID0gd2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3JzX3NldF9wcm9w
ZXJ0eTsKKyAgICBnb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fdGVzdF9v
dmVybG9hZGVkX2NvbnN0cnVjdG9yc19nZXRfcHJvcGVydHk7CisgICAgZ29iamVjdENsYXNzLT5j
b25zdHJ1Y3RlZCA9IHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19jb25z
dHJ1Y3RlZDsKKworCisKK30KKworc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X292ZXJsb2Fk
ZWRfY29uc3RydWN0b3JzX2luaXQoV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMq
IHJlcXVlc3QpCit7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4NGY5NDdlMTI2YTViMzEy
NTkxZDZhZTZkOGMxODcwNDMwNjViZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQg
b2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVl
biBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKwor
I2lmbmRlZiBXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc19oCisjZGVmaW5lIFdl
YktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzX2gKKworI2luY2x1ZGUgPGdsaWItb2Jq
ZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0L1dlYktpdERPTU9iamVjdC5oPgorI2luY2x1ZGUgPHdl
YmtpdC93ZWJraXRkZWZpbmVzLmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRvbWRlZmluZXMu
aD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX0RPTV9URVNUX09WRVJM
T0FERURfQ09OU1RSVUNUT1JTICAgICAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVk
X2NvbnN0cnVjdG9yc19nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfRE9NX1RFU1RfT1ZFUkxP
QURFRF9DT05TVFJVQ1RPUlMob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0Vf
Q0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfRE9NX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlMs
IFdlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKSkKKyNkZWZpbmUgV0VCS0lUX0RP
TV9URVNUX09WRVJMT0FERURfQ09OU1RSVUNUT1JTX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NI
RUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0RPTV9URVNUX09WRVJMT0FERURf
Q09OU1RSVUNUT1JTLCBXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NsYXNzKQor
I2RlZmluZSBXRUJLSVRfRE9NX0lTX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlMob2JqKSAg
ICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfRE9N
X1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlMpKQorI2RlZmluZSBXRUJLSVRfRE9NX0lTX1RF
U1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlNfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xB
U1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfRE9NX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJV
Q1RPUlMpKQorI2RlZmluZSBXRUJLSVRfRE9NX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlNf
R0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lU
X1RZUEVfRE9NX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlMsIFdlYktpdERPTVRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzQ2xhc3MpKQorCitzdHJ1Y3QgX1dlYktpdERPTVRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzIHsKKyAgICBXZWJLaXRET01PYmplY3QgcGFyZW50X2luc3RhbmNlOwor
fTsKKworc3RydWN0IF9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NsYXNzIHsK
KyAgICBXZWJLaXRET01PYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitXRUJLSVRfQVBJ
IEdUeXBlCit3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfZ2V0X3R5cGUg
KHZvaWQpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogV2ViS2l0RE9NVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
ZmJjMWIxOWFmY2M5Yjg2NjZlZDYxMTQ0MmRjMGFiYzE2ZTJkZjE2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlLmgKQEAgLTAsMCArMSwzMyBAQAorLyoK
KyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3Qu
CisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5w
bC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFdlYktpdERPTVRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzUHJpdmF0ZV9oCisjZGVmaW5lIFdlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzUHJpdmF0ZV9oCisKKyNpbmNsdWRlICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5o
IgorI2luY2x1ZGUgPHdlYmtpdC9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKK1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzKiB3cmFwVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoV2ViQ29yZTo6VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMqKTsKK1dlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBj
b3JlKFdlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiByZXF1ZXN0KTsKK1dlYktp
dERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBraXQoV2ViQ29yZTo6VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMqIG5vZGUpOworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
KiBXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGVfaCAqLwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyZDJl
YTg1MDBmMGQxZmM0MmMwODE5NTRkNjhmMjAwOGFjYjQ2ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5jcHAKQEAgLTAsMCArMSwxOTggQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMg
YmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMuaCIKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU0RPTUJp
bmRpbmcuaCIKKyNpbmNsdWRlICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIgorI2luY2x1
ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLyogSGFzaCB0YWJsZSBmb3Ig
Y29uc3RydWN0b3IgKi8KKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7ICJjb25zdHJ1Y3RvciIs
IERvbnRFbnVtIHwgUmVhZE9ubHksIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKSwg
KGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCisgICAgeyAwLCAwLCAwLCAwLCBOb0ludHJpbnNp
YyB9Cit9OworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNUYWJsZSA9IHsgMiwgMSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1RhYmxlVmFs
dWVzLCAwIH07CisvKiBIYXNoIHRhYmxlIGZvciBjb25zdHJ1Y3RvciAqLworCitzdGF0aWMgY29u
c3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9y
VGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAwLCAwLCAwLCAwLCBOb0ludHJpbnNpYyB9Cit9Owor
CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25z
dHJ1Y3RvclRhYmxlID0geyAxLCAwLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3Ry
dWN0b3JUYWJsZVZhbHVlcywgMCB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzQ29uc3RydWN0b3JUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IpIH07CisKK0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVj
dG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQorICAgIDogRE9NQ29uc3RydWN0b3JPYmplY3Qoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCit7
Cit9CisKK3ZvaWQgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAg
ICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxE
YXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNQcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RGVsZXRl
IHwgRG9udEVudW0pOworfQorCitib29sIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25z
dHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAg
cmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29u
c3RydWN0b3IsIEpTRE9NV3JhcHBlcj4oZXhlYywgJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNDb25zdHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0Nv
bnN0cnVjdG9yKj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK2Jvb2wgSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIGdl
dFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3Ry
dWN0b3IsIEpTRE9NV3JhcHBlcj4oZXhlYywgJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnND
b25zdHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0
cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKK30KKworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3Ry
dWN0b3I6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoRXhlY1N0YXRlKiBl
eGVjKQoreworICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciogY2Fz
dGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3Iq
PihleGVjLT5jYWxsZWUoKSk7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoZXhlYykpOworICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKE1BWUJFX01JU1NJTkdfUEFS
QU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkg
OiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJl
ZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gb2JqZWN0ID0gVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM6OmNyZWF0ZShzdHJpbmcpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
YXNPYmplY3QodG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0Lmdl
dCgpKSkpOworfQorCitDb25zdHJ1Y3RUeXBlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnND
b25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25z
dHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3Ry
dWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlw
ZUhvc3Q7Cit9CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworCitzdGF0aWMgY29u
c3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZVRh
YmxlVmFsdWVzW10gPQoreworICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQorfTsKKwor
c3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90
eXBlVGFibGUgPSB7IDEsIDAsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGVU
YWJsZVZhbHVlcywgMCB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJv
dG90eXBlIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90
b3R5cGVUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzUHJvdG90eXBlKSB9OworCitKU09iamVjdCogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc1Byb3RvdHlwZTo6c2VsZihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzPihleGVjLCBnbG9iYWxPYmplY3QpOworfQorCitjb25zdCBDbGFzc0luZm8g
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6c19pbmZvID0geyAiVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1RhYmxlLCAwICwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzKSB9OworCitKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQYXNzUmVmUHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiBpbXBsKQor
ICAgIDogSlNET01XcmFwcGVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQorICAgICwgbV9pbXBs
KGltcGwubGVha1JlZigpKQoreworfQorCit2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5m
bykpOworfQorCitKU09iamVjdCogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRl
UHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
K3sKKyAgICByZXR1cm4gSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZTo6Y3Jl
YXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxE
YXRhKCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwor
fQorCit2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmRlc3Ryb3koSlNDOjpKU0Nl
bGwqIGNlbGwpCit7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdGhpc09iamVj
dCA9IHN0YXRpY19jYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihjZWxsKTsKKyAg
ICB0aGlzT2JqZWN0LT5KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp+SlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycygpOworfQorCitKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp+
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycygpCit7CisgICAgcmVsZWFzZUltcGxJZk5vdE51
bGwoKTsKK30KKworYm9vbCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZz
X2luZm8pOworICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycywgQmFzZT4oZXhlYywgJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUYWJs
ZSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworYm9vbCBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4o
b2JqZWN0KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2lu
Zm8pOworICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycywgQmFzZT4oZXhlYywgJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNU
YWJsZSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKK30KKworSlNWYWx1
ZSBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyogZG9tT2JqZWN0ID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMqPihhc09iamVjdChzbG90QmFzZSkpOworICAgIHJldHVybiBKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzOjpnZXRDb25zdHJ1Y3RvcihleGVjLCBkb21PYmplY3QtPmdsb2JhbE9iamVj
dCgpKTsKK30KKworSlNWYWx1ZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpnZXRDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7
CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNDb25zdHJ1Y3Rvcj4oZXhlYywganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc09ic2VydmFibGUoSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyoganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycykKK3sKKyAgICBp
ZiAoanNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhK
U0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQoreworICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGpzVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KGhh
bmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgaWYgKCFpc09ic2VydmFibGUoanNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBVTlVTRURfUEFS
QU0odmlzaXRvcik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBo
YW5kbGUsIHZvaWQqIGNvbnRleHQpCit7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cyoganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBET01XcmFwcGVyV29y
bGQqIHdvcmxkID0gc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7CisgICAg
dW5jYWNoZVdyYXBwZXIod29ybGQsIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMtPmltcGwo
KSwganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CisgICAganNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy0+cmVsZWFzZUltcGwoKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzKiBpbXBsKQoreworICAgIHJldHVybiB3cmFwPEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM+KGV4ZWMsIGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisKK1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKiB0b1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKEpTQzo6
SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUuaW5oZXJpdHMoJkpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM6OnNfaW5mbykgPyBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyo+KGFzT2JqZWN0KHZhbHVlKSktPmltcGwoKSA6IDA7Cit9CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2YmU5Yzg5NmJi
Mzc5OGM3NWM0ZjNkOTJjNDUyZWM1ZmJlMWI2MGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy5oCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2Vu
ZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5k
ZWYgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc19oCisjZGVmaW5lIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNfaAorCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAi
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pTR2xvYmFs
T2JqZWN0Lmg+CisjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgorI2luY2x1ZGUgPHJ1bnRp
bWUvT2JqZWN0UHJvdG90eXBlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA6IHB1YmxpYyBKU0RPTVdyYXBwZXIgeworcHVibGlj
OgorICAgIHR5cGVkZWYgSlNET01XcmFwcGVyIEJhc2U7CisgICAgc3RhdGljIEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzPiBpbXBsKQorICAgIHsKKyAgICAgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzPihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5oZWFwKSkgSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgaW1wbCk7Cisg
ICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkpOwor
ICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBj
cmVhdGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Cisg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7Cisg
ICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworICAgIH5KU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKCk7CisgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5m
bzsKKworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1
Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpU
eXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CisgICAg
fQorCisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cyogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbDsgfQorICAgIHZvaWQgcmVsZWFzZUltcGwo
KSB7IG1faW1wbC0+ZGVyZWYoKTsgbV9pbXBsID0gMDsgfQorCisgICAgdm9pZCByZWxlYXNlSW1w
bElmTm90TnVsbCgpIHsgaWYgKG1faW1wbCkgeyBtX2ltcGwtPmRlcmVmKCk7IG1faW1wbCA9IDA7
IH0gfQorCitwcml2YXRlOgorICAgIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBtX2ltcGw7
Citwcm90ZWN0ZWQ6CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhKU0M6OlN0cnVj
dHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycz4pOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpKU0dsb2JhbERhdGEmKTsK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5
SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworfTsK
KworY2xhc3MgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVyIDogcHVibGljIEpTQzo6
V2Vha0hhbmRsZU93bmVyIHsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVl
Um9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90
VmlzaXRvciYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+LCB2b2lkKiBjb250ZXh0KTsKK307CisKK2lubGluZSBKU0M6OldlYWtIYW5kbGVPd25l
ciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCosIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzKikKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNPd25lciwganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVyLCAoKSk7CisgICAg
cmV0dXJuICZqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzT3duZXI7Cit9CisKK2lubGluZSB2
b2lkKiB3cmFwcGVyQ29udGV4dChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyopCit7CisgICAgcmV0dXJuIHdvcmxkOworfQorCitKU0M6OkpTVmFsdWUg
dG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMqKTsKK1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB0b1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKEpTQzo6SlNWYWx1ZSk7CisKK2NsYXNzIEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIEpTQzo6SlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBzZWxmKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVj
dCopOworICAgIHN0YXRpYyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKiBj
cmVhdGUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAg
IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlw
ZT4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlw
ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisg
ICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKKyAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0
YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkg
OiBKU0M6OkpTTm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKSB7IH0KK3Byb3Rl
Y3RlZDoKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFnczsKK307CisKK2NsYXNzIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnND
b25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1Y3Rvck9iamVjdCB7Citwcml2YXRlOgorICAg
IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSos
IEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OkV4ZWNT
dGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisKK3B1YmxpYzoKKyAgICB0eXBlZGVmIERPTUNv
bnN0cnVjdG9yT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsK
KyAgICAgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKiBwdHIgPSBu
ZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CisgICAgICAgIHB0ci0+Zmlu
aXNoQ3JlYXRpb24oZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAg
ICB9CisKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwor
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKKyAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOworICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShn
bG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CisgICAgfQorcHJvdGVjdGVkOgor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBET01Db25z
dHJ1Y3Rvck9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
KEpTQzo6RXhlY1N0YXRlKik7CisgICAgc3RhdGljIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25z
dHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3REYXRhJik7Cit9OworCisvLyBB
dHRyaWJ1dGVzCisKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29u
c3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxNWI3YmM1N2RhN2Ix
NmRmNzM0ZmJhYTY3NWRmNjJiN2M4MWJiMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29t
PgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgorCisjaWYgV0VCS0lUX1ZF
UlNJT05fTUFYX0FMTE9XRUQgPj0gV0VCS0lUX1ZFUlNJT05fTEFURVNUCisKK0BpbnRlcmZhY2Ug
RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgOiBET01PYmplY3QKK0BlbmQKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQwMjliYjJiZjdlYTgwYTYxNDU1OTQ5NGNmNmM3OGMxZDU4MWQyYzcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5tbQpAQCAtMCwwICsxLDg3IEBACisvKgorICogVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICogVGhp
cyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9U
IE1PRElGWSEKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJET01JbnRlcm5h
bC5oIgorCisjaW1wb3J0ICJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIgorCisjaW1w
b3J0ICJET01CbG9iSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTUNTU1J1bGVJbnRlcm5hbC5oIgor
I2ltcG9ydCAiRE9NQ1NTVmFsdWVJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NRXZlbnRJbnRlcm5h
bC5oIgorI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCisjaW1wb3J0ICJET01TdHlsZVNoZWV0
SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzSW50ZXJu
YWwuaCIKKyNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCisjaW1wb3J0ICJKU01haW5UaHJl
YWRFeGVjU3RhdGUuaCIKKyNpbXBvcnQgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgiCisj
aW1wb3J0ICJUaHJlYWRDaGVjay5oIgorI2ltcG9ydCAiV2ViQ29yZU9iakNFeHRyYXMuaCIKKyNp
bXBvcnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKKyNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4K
KworI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMqPihfaW50ZXJuYWwpCisKK0BpbXBsZW1lbnRhdGlvbiBET01UZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycworCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBpZiAoV2ViQ29yZU9i
akNTY2hlZHVsZURlYWxsb2NhdGVPbk1haW5UaHJlYWQoW0RPTVRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzIGNsYXNzXSwgc2VsZikpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChfaW50ZXJu
YWwpCisgICAgICAgIElNUEwtPmRlcmVmKCk7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCist
ICh2b2lkKWZpbmFsaXplCit7CisgICAgaWYgKF9pbnRlcm5hbCkKKyAgICAgICAgSU1QTC0+ZGVy
ZWYoKTsKKyAgICBbc3VwZXIgZmluYWxpemVdOworfQorCitAZW5kCisKK1dlYkNvcmU6OlRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKiBjb3JlKERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
ICp3cmFwcGVyKQoreworICAgIHJldHVybiB3cmFwcGVyID8gcmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KHdyYXBwZXItPl9pbnRlcm5hbCkgOiAw
OworfQorCitET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyAqa2l0KFdlYkNvcmU6OlRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKiB2YWx1ZSkKK3sKKyAgICB7IERPTV9BU1NFUlRfTUFJTl9U
SFJFQUQoKTsgV2ViQ29yZVRocmVhZFZpb2xhdGlvbkNoZWNrUm91bmRPbmUoKTsgfTsKKyAgICBp
ZiAoIXZhbHVlKQorICAgICAgICByZXR1cm4gbmlsOworICAgIGlmIChET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQorICAgICAgICBy
ZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIERPTVRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzICp3cmFwcGVyID0gW1tET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cyBhbGxvY10gX2luaXRdOworICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CisgICAgdmFsdWUtPnJlZigpOworICAgIGFk
ZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOworICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVs
ZWFzZV07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvT2JqQy9ET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0ludGVybmFsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc0ludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGZlY2M4MWMzOTZiZDBhODI1ZGE3YWJiMDEx
ZjJjNTY3MmE2YjRlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzSW50ZXJuYWwu
aApAQCAtMCwwICsxLDM4IEBACisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktp
dCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBi
eSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8
V2ViQ29yZS9ET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oPgorCisjaWYgV0VCS0lUX1ZF
UlNJT05fTUFYX0FMTE9XRUQgPj0gV0VCS0lUX1ZFUlNJT05fTEFURVNUCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKyAgICBjbGFzcyBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczsKK30KKworV2Vi
Q29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGNvcmUoRE9NVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMgKik7CitET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyAqa2l0KFdlYkNv
cmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKik7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmEzODZmNWI5N2JkZDIyNmMxOTEx
MTUwOTFiMDBiOTBkMzkyN2RkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5pZGwKQEAgLTAs
MCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXN0ckFyZywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgor
ICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVzdHJBcmcsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworWworICAgIENvbnN0cnVjdG9yKGluIEFycmF5QnVmZmVyIGFy
cmF5QnVmZmVyKSwKKyAgICBDb25zdHJ1Y3RvcihpbiBBcnJheUJ1ZmZlclZpZXcgYXJyYXlCdWZm
ZXJWaWV3KSwKKyAgICBDb25zdHJ1Y3RvcihpbiBCbG9iIGJsb2IpLAorICAgIENvbnN0cnVjdG9y
KGluIERPTVN0cmluZyBzdHJpbmcpLAorXSBpbnRlcmZhY2UgVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMgeworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlLmlkbAppbmRleCBjNmQ0OTNkZWZmNDBjOTI0ODM5ZGM0NWU5ZWU5ZmIzNTI2MGVlMTM2Li42
ODdlYWM1NDc3MTM1NmY2MDEyZWU3Nzc5OGMyMmNjMDAwMzg3NjJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaWRsCkBAIC0yNyw3ICsyNyw2IEBA
CiAvLyBjaGFuZ2VzIGluIGl0cyBvdXB1dC4KIFsKICAgICBDb25kaXRpb25hbD1Db25kaXRpb24x
fENvbmRpdGlvbjIsCi0gICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIGhlbGxvLCBpbiBTZXJp
YWxpemVkU2NyaXB0VmFsdWUgdmFsdWUpLAogICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyBo
ZWxsbywgaW4gW1RyYW5zZmVyTGlzdD10cmFuc2Zlckxpc3RdIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSBkYXRhLCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBBcnJheSB0cmFuc2Zlckxp
c3QpLAogXSBpbnRlcmZhY2UgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSB7CiAg
ICAgYXR0cmlidXRlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjU0NzZjMWQxNDEz
ODg3ZTRjYzIxYmFjZWQ3NWE0MDU5OGQyYWNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMuY3BwCkBAIC0wLDAgKzEsMjEyIEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2Vu
ZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3Vp
dGUgMzMwLAorICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIKKwor
I2luY2x1ZGUgIkJpbmRpbmdTdGF0ZS5oIgorI2luY2x1ZGUgIkNvbnRleHRGZWF0dXJlcy5oIgor
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUg
IlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJWOEFycmF5QnVmZmVyLmgiCisj
aW5jbHVkZSAiVjhBcnJheUJ1ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNp
bmNsdWRlICJWOEJsb2IuaCIKKyNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKKyNpbmNsdWRlIDx3
dGYvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5j
bHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV3JhcHBl
clR5cGVJbmZvIFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmluZm8gPSB7IFY4VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OkdldFRlbXBsYXRlLCBWOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpkZXJlZk9iamVjdCwgMCwgMCwgVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAwLCBXcmFwcGVyVHlwZU9iamVj
dFByb3RvdHlwZSB9OworCituYW1lc3BhY2UgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNWOElu
dGVybmFsIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgVjhfVVNFKFQpIHsgfQorCit9
IC8vIG5hbWVzcGFjZSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Y4SW50ZXJuYWwKKwordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVj
dG9yMUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRT
KCJET00uVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuQ29uc3RydWN0b3IxIik7CisgICAgCisg
ICAgRVhDRVBUSU9OX0JMT0NLKEFycmF5QnVmZmVyKiwgYXJyYXlCdWZmZXIsIFY4QXJyYXlCdWZm
ZXI6Okhhc0luc3RhbmNlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJ
c1VuZGVmaW5lZCkpID8gVjhBcnJheUJ1ZmZlcjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Pjo6Q2FzdChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRl
ZmluZWQpKSkgOiAwKTsKKworICAgIFJlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4g
aW1wbCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoYXJyYXlCdWZmZXIpOwor
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CisKKyAg
ICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIod3JhcHBlciwgJmluZm8sIGltcGwuZ2V0KCkp
OworICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltcGwucmVsZWFz
ZSgpLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHdyYXBwZXI7Cit9
CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpj
b25zdHJ1Y3RvcjJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElO
Q19TVEFUUygiRE9NLlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLkNvbnN0cnVjdG9yMiIpOwor
ICAgIAorICAgIEVYQ0VQVElPTl9CTE9DSyhBcnJheUJ1ZmZlclZpZXcqLCBhcnJheUJ1ZmZlclZp
ZXcsIFY4QXJyYXlCdWZmZXJWaWV3OjpIYXNJbnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSA/IFY4QXJyYXlCdWZmZXJWaWV3Ojp0b05h
dGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKSA6IDApOworCisgICAgUmVmUHRyPFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzPiBpbXBsID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6
OmNyZWF0ZShhcnJheUJ1ZmZlclZpZXcpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3Jh
cHBlciA9IGFyZ3MuSG9sZGVyKCk7CisKKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIo
d3JhcHBlciwgJmluZm8sIGltcGwuZ2V0KCkpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFw
cGVyRm9yRE9NT2JqZWN0KGltcGwucmVsZWFzZSgpLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUo
KSk7CisgICAgcmV0dXJuIHdyYXBwZXI7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjNDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLkNvbnN0cnVjdG9yMyIpOworICAgIAorICAgIEVYQ0VQVElPTl9CTE9DSyhCbG9i
KiwgYmxvYiwgVjhCbG9iOjpIYXNJbnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdz
LCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSA/IFY4QmxvYjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2
ODo6T2JqZWN0Pjo6Q2FzdChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0
SXNVbmRlZmluZWQpKSkgOiAwKTsKKworICAgIFJlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycz4gaW1wbCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoYmxvYik7Cisg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKKworICAg
IFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcih3cmFwcGVyLCAmaW5mbywgaW1wbC5nZXQoKSk7
CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoaW1wbC5yZWxlYXNl
KCksIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gd3JhcHBlcjsKK30K
Kwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNv
bnN0cnVjdG9yNENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5D
X1NUQVRTKCJET00uVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuQ29uc3RydWN0b3I0Iik7Cisg
ICAgCisgICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRl
cjw+LCBzdHJpbmcsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1Vu
ZGVmaW5lZCkpOworCisgICAgUmVmUHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiBpbXBs
ID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZShzdHJpbmcpOworICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CisKKyAgICBWOERPTVdy
YXBwZXI6OnNldERPTVdyYXBwZXIod3JhcHBlciwgJmluZm8sIGltcGwuZ2V0KCkpOworICAgIFY4
RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltcGwucmVsZWFzZSgpLCB3cmFw
cGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHdyYXBwZXI7Cit9CisKK3Y4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3Rv
ckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJE
T00uVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuQ29uc3RydWN0b3IiKTsKKyAgICBpZiAoIWFy
Z3MuSXNDb25zdHJ1Y3RDYWxsKCkpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigiRE9N
IG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIik7CisK
KyAgICBpZiAoQ29uc3RydWN0b3JNb2RlOjpjdXJyZW50KCkgPT0gQ29uc3RydWN0b3JNb2RlOjpX
cmFwRXhpc3RpbmdPYmplY3QpCisgICAgICAgIHJldHVybiBhcmdzLkhvbGRlcigpOworCisgICAg
aWYgKChhcmdzLkxlbmd0aCgpID09IDEgJiYgKFY4QXJyYXlCdWZmZXI6Okhhc0luc3RhbmNlKGFy
Z3NbMF0pKSkpCisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjFDYWxsYmFjayhhcmdzKTsKKyAg
ICBpZiAoKGFyZ3MuTGVuZ3RoKCkgPT0gMSAmJiAoVjhBcnJheUJ1ZmZlclZpZXc6Okhhc0luc3Rh
bmNlKGFyZ3NbMF0pKSkpCisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjJDYWxsYmFjayhhcmdz
KTsKKyAgICBpZiAoKGFyZ3MuTGVuZ3RoKCkgPT0gMSAmJiAoVjhCbG9iOjpIYXNJbnN0YW5jZShh
cmdzWzBdKSkpKQorICAgICAgICByZXR1cm4gY29uc3RydWN0b3IzQ2FsbGJhY2soYXJncyk7Cisg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yNENh
bGxiYWNrKGFyZ3MpOworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKKyAgICAgICAgcmV0dXJu
IHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOworICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1RlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBkZXNjKQoreworICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CisKKyAgICB2ODo6
TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsKKyAgICBkZWZhdWx0U2lnbmF0
dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4oKSwgVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6aW50ZXJuYWxGaWVsZENvdW50LAor
ICAgICAgICAwLCAwLAorICAgICAgICAwLCAwKTsKKyAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNp
Z25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCisgICAgZGVz
Yy0+U2V0Q2FsbEhhbmRsZXIoVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0
b3JDYWxsYmFjayk7CisgICAgCisKKyAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKKyAg
ICBkZXNjLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ0b1N0cmluZyIpLCBWOFBlcklzb2xh
dGVEYXRhOjpjdXJyZW50KCktPnRvU3RyaW5nVGVtcGxhdGUoKSk7CisgICAgcmV0dXJuIGRlc2M7
Cit9CisKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzOjpHZXRSYXdUZW1wbGF0ZSgpCit7CisgICAgVjhQZXJJc29sYXRlRGF0
YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKKyAgICBWOFBlcklzb2xhdGVE
YXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAo
KS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCku
ZW5kKCkpCisgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOworCisgICAgdjg6OkhhbmRsZVNj
b3BlIGhhbmRsZVNjb3BlOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKCk7CisgICAgZGF0YS0+cmF3VGVtcGxhdGVNYXAo
KS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICByZXR1cm4gdGVtcGw7Cit9CisKK3Y4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpH
ZXRUZW1wbGF0ZSgpCit7CisgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0
ZURhdGE6OmN1cnJlbnQoKTsKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRl
cmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKKyAgICBpZiAo
cmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgICAgIHJldHVybiByZXN1
bHQtPnZhbHVlOworCisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9CisgICAgICAgIENvbmZpZ3Vy
ZVY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUZW1wbGF0ZShHZXRSYXdUZW1wbGF0ZSgpKTsK
KyAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgIHJldHVybiB0
ZW1wbDsKK30KKworYm9vbCBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpIYXNJbnN0YW5j
ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCit7CisgICAgcmV0dXJuIEdldFJhd1RlbXBs
YXRlKCktPkhhc0luc3RhbmNlKHZhbHVlKTsKK30KKworCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OndyYXBTbG93KFBhc3NSZWZQdHI8VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdyYXBwZXI7CisgICAgLy8gUGxlYXNlIGRvbid0IGFkZCBhbnkgbW9yZSB1c2VzIG9m
IHRoaXMgdmFyaWFibGUuCisgICAgRG9jdW1lbnQqIGRlcHJlY2F0ZWREb2N1bWVudCA9IDA7Cisg
ICAgVU5VU0VEX1BBUkFNKGRlcHJlY2F0ZWREb2N1bWVudCk7CisKKyAgICB2ODo6SGFuZGxlPHY4
OjpDb250ZXh0PiBjb250ZXh0OworICAgIGlmICghY3JlYXRpb25Db250ZXh0LklzRW1wdHkoKSAm
JiBjcmVhdGlvbkNvbnRleHQtPkNyZWF0aW9uQ29udGV4dCgpICE9IHY4OjpDb250ZXh0OjpHZXRD
dXJyZW50KCkpIHsKKyAgICAgICAgLy8gRm9yIHBlcmZvcm1hbmNlLCB3ZSBlbnRlciB0aGUgY29u
dGV4dCBvbmx5IGlmIHRoZSBjdXJyZW50bHkgcnVubmluZyBjb250ZXh0CisgICAgICAgIC8vIGlz
IGRpZmZlcmVudCBmcm9tIHRoZSBjb250ZXh0IHRoYXQgd2UgYXJlIGFib3V0IHRvIGVudGVyLgor
ICAgICAgICBjb250ZXh0ID0gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KGNyZWF0aW9uQ29u
dGV4dC0+Q3JlYXRpb25Db250ZXh0KCkpOworICAgICAgICBBU1NFUlQoIWNvbnRleHQuSXNFbXB0
eSgpKTsKKyAgICAgICAgY29udGV4dC0+RW50ZXIoKTsKKyAgICB9CisKKyAgICB3cmFwcGVyID0g
VjhET01XcmFwcGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0KGRlcHJlY2F0ZWREb2N1bWVudCwgJmlu
Zm8sIGltcGwuZ2V0KCkpOworCisgICAgaWYgKCFjb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAg
Y29udGV4dC0+RXhpdCgpOworCisgICAgaWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkK
KyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisKKyAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRp
ZXMod3JhcHBlciwgaW1wbC5nZXQoKSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4g
d3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGlt
cGwsIHdyYXBwZXIsIGlzb2xhdGUpOworICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCisg
ICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CisgICAgcmV0dXJuIHdyYXBw
ZXI7Cit9CisKK3ZvaWQgVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6ZGVyZWZPYmplY3Qo
dm9pZCogb2JqZWN0KQoreworICAgIHN0YXRpY19jYXN0PFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzKj4ob2JqZWN0KS0+ZGVyZWYoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjY0NTMw
NGI4N2UyZDBjZDNlYzNmMjMyNTZlZDY2OTEwZjNjYjc2OQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVu
IGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAt
IFN1aXRlIDMzMCwKKyAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyovCisKKyNpZm5k
ZWYgVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc19oCisjZGVmaW5lIFY4VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNfaAorCisjaW5jbHVkZSAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
aCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKKyNp
bmNsdWRlICJXcmFwcGVyVHlwZUluZm8uaCIKKyNpbmNsdWRlIDx2OC5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgeworcHVi
bGljOgorICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7
CisgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+KTsKKyAg
ICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBs
YXRlKCk7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBH
ZXRUZW1wbGF0ZSgpOworICAgIHN0YXRpYyBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdG9O
YXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCisgICAgeworICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KG9iamVjdC0+
R2V0UG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4KSk7Cisg
ICAgfQorICAgIGlubGluZSBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNv
bnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiA9IDApOworICAg
IHN0YXRpYyB2b2lkIGRlcmVmT2JqZWN0KHZvaWQqKTsKKyAgICBzdGF0aWMgV3JhcHBlclR5cGVJ
bmZvIGluZm87CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvckNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKKyAgICBzdGF0aWMgY29uc3QgaW50IGludGVy
bmFsRmllbGRDb3VudCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwor
ICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+LCBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyopIHsgfQorICAgIHN0YXRpYyB2
b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+KSB7IH0KK3ByaXZhdGU6CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4sIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3IxQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYpOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3Iy
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gY29uc3RydWN0b3IzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOworICAg
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3I0Q2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYpOworfTsKKwordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjp3cmFwKFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBpbXBs
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUpCit7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURh
dGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwpOworICAgICAgICBpZiAoIXdyYXBw
ZXIuSXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIFY4
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OndyYXBTbG93KGltcGwsIGNyZWF0aW9uQ29udGV4
dCwgaXNvbGF0ZSk7Cit9CisKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29s
YXRlID0gMCkKK3sKKyAgICBpZiAoIWltcGwpCisgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hl
Y2soaXNvbGF0ZSk7CisgICAgcmV0dXJuIFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6Ondy
YXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30KK2lubGluZSB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdG9WOChQYXNzUmVmUHRyPCBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA+
IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCit7CisgICAgcmV0dXJu
IHRvVjgoaW1wbC5nZXQoKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30KKworfQorCisj
ZW5kaWYgLy8gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc19oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcAppbmRl
eCBhNWRlOWE0MjNhZWI1MWQ2YTRhYTk0MjA0Mjg3MWZiNWU4ZjI3OTI2Li45YzRmYzdmYTE2MjE4
NjlmNjFmOGVjNWIwYTAzODI5YzllZjhhZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAKQEAgLTUxLDY0ICs1
MSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
V2ViU29ja2V0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
Ci17Ci0gICAgSU5DX1NUQVRTKCJET00uV2ViU29ja2V0LkNvbnN0cnVjdG9yIik7Ci0KLSAgICBp
ZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24u
IiwgYXJncy5HZXRJc29sYXRlKCkpOwotCi0gICAgaWYgKENvbnN0cnVjdG9yTW9kZTo6Y3VycmVu
dCgpID09IENvbnN0cnVjdG9yTW9kZTo6V3JhcEV4aXN0aW5nT2JqZWN0KQotICAgICAgICByZXR1
cm4gYXJncy5Ib2xkZXIoKTsKLQotICAgIGlmIChhcmdzLkxlbmd0aCgpID09IDApCi0gICAgICAg
IHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsK
LQotICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKLSAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+
IHVybHN0cmluZyA9IGFyZ3NbMF0tPlRvU3RyaW5nKCk7Ci0gICAgaWYgKHRyeUNhdGNoLkhhc0Nh
dWdodCgpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih0cnlDYXRjaC5FeGNlcHRpb24oKSwg
YXJncy5HZXRJc29sYXRlKCkpOwotICAgIGlmICh1cmxzdHJpbmcuSXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcihTeW50YXhFcnJvciwgIkVtcHR5IFVSTCIsIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKLQotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBnZXRTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgY29uc3QgS1VSTCYgdXJsID0gY29udGV4dC0+Y29t
cGxldGVVUkwodG9XZWJDb3JlU3RyaW5nKHVybHN0cmluZykpOwotCi0gICAgUmVmUHRyPFdlYlNv
Y2tldD4gd2ViU29ja2V0ID0gV2ViU29ja2V0OjpjcmVhdGUoY29udGV4dCk7Ci0gICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0KLSAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCi0gICAgICAgIHdl
YlNvY2tldC0+Y29ubmVjdCh1cmwsIGVjKTsKLSAgICBlbHNlIHsKLSAgICAgICAgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gcHJvdG9jb2xzVmFsdWUgPSBhcmdzWzFdOwotICAgICAgICBpZiAocHJvdG9j
b2xzVmFsdWUtPklzQXJyYXkoKSkgewotICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gcHJvdG9j
b2xzOwotICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gcHJvdG9jb2xzQXJyYXkgPSB2
ODo6TG9jYWw8djg6OkFycmF5Pjo6Q2FzdChwcm90b2NvbHNWYWx1ZSk7Ci0gICAgICAgICAgICBm
b3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgcHJvdG9jb2xzQXJyYXktPkxlbmd0aCgpOyArK2kpIHsK
LSAgICAgICAgICAgICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2hQcm90b2NvbDsKLSAgICAgICAg
ICAgICAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHByb3RvY29sID0gcHJvdG9jb2xzQXJyYXkt
PkdldCh2ODo6SW50MzI6Ok5ldyhpKSktPlRvU3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgaWYg
KHRyeUNhdGNoUHJvdG9jb2wuSGFzQ2F1Z2h0KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biB0aHJvd0Vycm9yKHRyeUNhdGNoUHJvdG9jb2wuRXhjZXB0aW9uKCksIGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKLSAgICAgICAgICAgICAgICBwcm90b2NvbHMuYXBwZW5kKHRvV2ViQ29yZVN0cmluZyhw
cm90b2NvbCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgd2ViU29ja2V0LT5jb25uZWN0
KHVybCwgcHJvdG9jb2xzLCBlYyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB2ODo6
VHJ5Q2F0Y2ggdHJ5Q2F0Y2hQcm90b2NvbDsKLSAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlN0
cmluZz4gcHJvdG9jb2wgPSBwcm90b2NvbHNWYWx1ZS0+VG9TdHJpbmcoKTsKLSAgICAgICAgICAg
IGlmICh0cnlDYXRjaFByb3RvY29sLkhhc0NhdWdodCgpKQotICAgICAgICAgICAgICAgIHJldHVy
biB0aHJvd0Vycm9yKHRyeUNhdGNoUHJvdG9jb2wuRXhjZXB0aW9uKCksIGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKLSAgICAgICAgICAgIHdlYlNvY2tldC0+Y29ubmVjdCh1cmwsIHRvV2ViQ29yZVN0cmlu
Zyhwcm90b2NvbCksIGVjKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoZWMpCi0gICAgICAg
IHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLQotICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01X
cmFwcGVyOjpzZXRET01XcmFwcGVyKHdyYXBwZXIsICZpbmZvLCB3ZWJTb2NrZXQuZ2V0KCkpOwot
ICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KHdlYlNvY2tldC5yZWxl
YXNlKCksIHdyYXBwZXIpOwotICAgIHJldHVybiB3cmFwcGVyOwotfQotCiB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhXZWJTb2NrZXQ6OnNlbmRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYlNvY2tldC5zZW5kKCkiKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBi
OWZhNzUyOWIyYWIwZmU3ZjYxNjlmZTY1MzE4ZDA5OGFiNzQ0NzEzLi41ZTAyYjgyYjdlOGQzZDA2
NTkyZmYyZjY0Yzk4MTk4Y2YzNTA3ZTU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTEt
MDEgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZlIHRoZSBWOCBjdXN0b20gY29kZSBmb3IgV2ViU29ja2V0cyBjb25zdHJ1Y3RvcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwODAxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGVzdCBmb3Ig
bnVsbCBhcmd1bWVudCB0byBXZWJTb2NrZXQodXJsKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXBhcnNpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXBhcnNpbmcuaHRtbDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS13aW4vd2Vic29ja2V0L3Rlc3RzL3VybC1wYXJzaW5nLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oaXhpZTc2L3VybC1wYXJzaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC1wYXJz
aW5nLWV4cGVjdGVkLnR4dDoKKwogMjAxMi0xMS0wOCAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdXBkYXRlIGNocm9taXVtLW1hYyBiYXNl
bGluZXMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL3VybC1wYXJzaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXBhcnNpbmctZXhwZWN0ZWQudHh0CmluZGV4IDlkMGM1
MTg5YjA0YzI1ZmFlNDUwZmZlM2YwNzA5MmE1OTYxYmI0YjEuLmU4YTc0ZTIwOTM0ZmYyMDdjY2Rl
NjJmNzBmMzgwNTE0N2ZhMTFkZjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXBhcnNpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXBhcnNpbmctZXhwZWN0
ZWQudHh0CkBAIC0xLDMgKzEsNCBAQAorQ09OU09MRSBNRVNTQUdFOiBJbnZhbGlkIHVybCBmb3Ig
V2ViU29ja2V0IG51bGwKIENPTlNPTEUgTUVTU0FHRTogSW52YWxpZCB1cmwgZm9yIFdlYlNvY2tl
dCB3czovL2phdmFzY3JpcHQ6YQogQ09OU09MRSBNRVNTQUdFOiBJbnZhbGlkIHVybCBmb3IgV2Vi
U29ja2V0IC9hcHBsZXQKIENPTlNPTEUgTUVTU0FHRTogV3JvbmcgdXJsIHNjaGVtZSBmb3IgV2Vi
U29ja2V0IGphdmFzY3JpcHQ6YQpAQCAtOSw2ICsxMCw3IEBAIFRlc3QgV2ViU29ja2V0IFVSTCBw
YXJzaW5nLgogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiBQQVNTIG5ldyBXZWJTb2NrZXQo
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KK1BBU1Mg
bmV3IFdlYlNvY2tldChudWxsKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERP
TSBFeGNlcHRpb24gMTIuCiBQQVNTIG5ldyBXZWJTb2NrZXQoIndzOi8vamF2YXNjcmlwdDphIikg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgogUEFT
UyBuZXcgV2ViU29ja2V0KCIvYXBwbGV0IikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhf
RVJSOiBET00gRXhjZXB0aW9uIDEyLgogUEFTUyBuZXcgV2ViU29ja2V0KCJqYXZhc2NyaXB0OmEi
KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Vy
bC1wYXJzaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3VybC1wYXJzaW5nLmh0bWwKaW5kZXggNzNkMzY4YmRjNzI4Yjc1MjgyOTM2OTkwYWQ2ZGY4
NTVkYzU5NTIwOS4uNDQxMzJmNzI3ZWQzMmE4MzhiNDUzNzhhMzhmYTdiZDY2OWQ2NTRiNiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwt
cGFyc2luZy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvdXJsLXBhcnNpbmcuaHRtbApAQCAtMTIsNiArMTIsOSBAQCBkZXNjcmlwdGlvbigiVGVz
dCBXZWJTb2NrZXQgVVJMIHBhcnNpbmcuIik7CiAvLyBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KIHNo
b3VsZFRocm93KCduZXcgV2ViU29ja2V0KCknKTsKIAorLy8gTnVsbCBVUkwKK3Nob3VsZFRocm93
KCduZXcgV2ViU29ja2V0KG51bGwpJyk7CisKIC8vIEludmFsaWQgdXJsIHdpbGwgZmFpbCB0byBi
ZSBwYXJzZWQuCiBzaG91bGRUaHJvdygnbmV3IFdlYlNvY2tldCgid3M6Ly9qYXZhc2NyaXB0OmEi
KScpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vd2Vi
c29ja2V0L3Rlc3RzL3VybC1wYXJzaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtLXdpbi93ZWJzb2NrZXQvdGVzdHMvdXJsLXBhcnNpbmctZXhwZWN0ZWQudHh0
CmluZGV4IDg4NzVlZGIzOTllNDE0ZTBkYjdiODc5MDkxNmJkZjllMGIyMzJlY2YuLjFlOTVlNDRl
M2I4NjQwMDFjYWI0MDEzOGJjODJmYWU2ODIyNTA2M2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLXdpbi93ZWJzb2NrZXQvdGVzdHMvdXJsLXBhcnNpbmctZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi93ZWJzb2NrZXQv
dGVzdHMvdXJsLXBhcnNpbmctZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsNCBAQAorQ09OU09MRSBN
RVNTQUdFOiBXcm9uZyB1cmwgc2NoZW1lIGZvciBXZWJTb2NrZXQgaHR0cDovLzEyNy4wLjAuMTo4
MDAwL3dlYnNvY2tldC90ZXN0cy9oeWJpL251bGwKIENPTlNPTEUgTUVTU0FHRTogSW52YWxpZCB1
cmwgZm9yIFdlYlNvY2tldCB3czovL2phdmFzY3JpcHQ6YS8KIENPTlNPTEUgTUVTU0FHRTogV3Jv
bmcgdXJsIHNjaGVtZSBmb3IgV2ViU29ja2V0IGh0dHA6Ly8xMjcuMC4wLjE6ODg4MC9hcHBsZXQK
IENPTlNPTEUgTUVTU0FHRTogV3JvbmcgdXJsIHNjaGVtZSBmb3IgV2ViU29ja2V0IGphdmFzY3Jp
cHQ6YQpAQCAtOCw2ICs5LDcgQEAgVGVzdCBXZWJTb2NrZXQgVVJMIHBhcnNpbmcuCiAKIE9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KIAorUEFTUyBuZXcgV2ViU29ja2V0KG51bGwpIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KIFBBU1MgbmV3IFdl
YlNvY2tldCgid3M6Ly9qYXZhc2NyaXB0OmEiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRB
WF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCiBQQVNTIG5ldyBXZWJTb2NrZXQoIi9hcHBsZXQiKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCiBQQVNT
IG5ldyBXZWJTb2NrZXQoImphdmFzY3JpcHQ6YSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lO
VEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYvdXJsLXBhcnNp
bmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni91cmwtcGFyc2luZy1leHBlY3RlZC50eHQKaW5kZXgg
OTE5NWVhZTAzZjEwMzMyZTIyNzdmNDBmMGVkOGI4YmQ1MjhjZTRkNC4uYjUwZTA0ZGZkODkwMzFm
MTVhOTU5M2ZmYzg0OTRkNDY2MjMxZGJmOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni91cmwtcGFyc2lu
Zy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni91cmwtcGFyc2luZy1leHBlY3RlZC50eHQKQEAg
LTEsMyArMSw0IEBACitDT05TT0xFIE1FU1NBR0U6IFdyb25nIHVybCBzY2hlbWUgZm9yIFdlYlNv
Y2tldCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbnVsbAogQ09O
U09MRSBNRVNTQUdFOiBJbnZhbGlkIHVybCBmb3IgV2ViU29ja2V0IHdzOi8vamF2YXNjcmlwdDph
LwogQ09OU09MRSBNRVNTQUdFOiBXcm9uZyB1cmwgc2NoZW1lIGZvciBXZWJTb2NrZXQgaHR0cDov
LzEyNy4wLjAuMTo4MDAwL2FwcGxldAogQ09OU09MRSBNRVNTQUdFOiBXcm9uZyB1cmwgc2NoZW1l
IGZvciBXZWJTb2NrZXQgamF2YXNjcmlwdDphCkBAIC05LDYgKzEwLDcgQEAgVGVzdCBXZWJTb2Nr
ZXQgVVJMIHBhcnNpbmcuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIFBBU1MgbmV3IFdl
YlNvY2tldCgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRz
LgorUEFTUyBuZXcgV2ViU29ja2V0KG51bGwpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFY
X0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KIFBBU1MgbmV3IFdlYlNvY2tldCgid3M6Ly9qYXZhc2Ny
aXB0OmEiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24g
MTIuCiBQQVNTIG5ldyBXZWJTb2NrZXQoIi9hcHBsZXQiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCiBQQVNTIG5ldyBXZWJTb2NrZXQoImphdmFz
Y3JpcHQ6YSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlv
biAxMi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXBhcnNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91
cmwtcGFyc2luZy1leHBlY3RlZC50eHQKaW5kZXggZGMyNjgzMWRiYjBkNDhlNmFkZmRjNmM0MjVh
NDY4Mjc3MTQzNmJkOC4uMzU2ZWI2ZTRmODUzZWU2OGM2OTI0OGRiNDNmMTJlYzdiYjhmYzkwZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS91cmwtcGFyc2luZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwt
cGFyc2luZy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw0IEBACitDT05TT0xFIE1FU1NBR0U6IFdy
b25nIHVybCBzY2hlbWUgZm9yIFdlYlNvY2tldCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvbnVsbAogQ09OU09MRSBNRVNTQUdFOiBJbnZhbGlkIHVybCBmb3IgV2Vi
U29ja2V0IHdzOi8vamF2YXNjcmlwdDphLwogQ09OU09MRSBNRVNTQUdFOiBXcm9uZyB1cmwgc2No
ZW1lIGZvciBXZWJTb2NrZXQgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2FwcGxldAogQ09OU09MRSBN
RVNTQUdFOiBXcm9uZyB1cmwgc2NoZW1lIGZvciBXZWJTb2NrZXQgamF2YXNjcmlwdDphCkBAIC05
LDYgKzEwLDcgQEAgVGVzdCBXZWJTb2NrZXQgVVJMIHBhcnNpbmcuCiBPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCiAKIFBBU1MgbmV3IFdlYlNvY2tldCgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgorUEFTUyBuZXcgV2ViU29ja2V0KG51bGwpIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KIFBBU1MgbmV3
IFdlYlNvY2tldCgid3M6Ly9qYXZhc2NyaXB0OmEiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZ
TlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCiBQQVNTIG5ldyBXZWJTb2NrZXQoIi9hcHBsZXQi
KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCiBQ
QVNTIG5ldyBXZWJTb2NrZXQoImphdmFzY3JpcHQ6YSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
U1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4K
</data>
<flag name="review"
          id="187853"
          type_id="1"
          status="+"
          setter="haraken"
    />
    <flag name="commit-queue"
          id="187854"
          type_id="3"
          status="-"
          setter="haraken"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173606</attachid>
            <date>2012-11-12 03:30:10 -0800</date>
            <delta_ts>2012-11-12 04:56:19 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-100801-20121112122812.patch</filename>
            <type>text/plain</type>
            <size>90740</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWQ1YjZlZWM0MjI5ZmFh
Y2Q4M2E2Y2E3Y2MwNjFmYzYyMzhmMmNkYS4uNDYxYTU1ZDQwOGI0YzIyYmFiMTBkZjcxNDA5M2Q2
YTI2OTYwMmFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxMi0xMS0wMSAgVG9t
bXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhl
IFY4IGN1c3RvbSBjb2RlIGZvciBXZWJTb2NrZXRzIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA4MDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBLZW50YXJvIEhhcmEuCisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHRoZSBmb2xs
b3dpbmc6CisKKyAgICAgICAgMSkgTW9kaWZpZXMgdGhlIFY4IGNvZGUgZ2VuZXJhdG9yIHRvIHN1
cHBvcnQgb3ZlcmxvYWRlZCBjb25zdHJ1Y3RvcnMsCisgICAgICAgICAgIHRoZSBKUyBnZW5lcmF0
b3IgaXMgZml4ZWQgdG8gd29yayBhcyBiZWZvcmUuIFByb3BlciBzdXBwb3J0IGZvciBKUyB3aWxs
IGNvbWUgbGF0ZXIuCisKKyAgICAgICAgMikgTW9kaWZpZXMgV2ViU29ja2V0LmgvLmNwcCBmb3Ig
dGhlIG5ldyBjb25zdHJ1Y3RvcnMuCisKKyAgICAgICAgVGVzdGVkIGJ5IHJ1bm5pbmcgV2ViU29j
a2V0cyBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaDoKKyAg
ICAgICAgKFdlYlNvY2tldCk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06Cisg
ICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbik6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6
CisgICAgICAgIChHZW5lcmF0ZU92ZXJsb2FkZWRDb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAg
ICAgKEdlbmVyYXRlU2luZ2xlQ29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0
ZUNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgIChjb3B5
QXR0cmlidXRlcyk6CisgICAgICAgIChwYXJzZUV4dGVuZGVkQXR0cmlidXRlTGlzdCk6CisgICAg
ICAgIChwYXJzZUV4dGVuZGVkQXR0cmlidXRlcyk6CisgICAgICAgIChhcHBseUV4dGVuZGVkQXR0
cmlidXRlTGlzdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG06
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViRE9NVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM6OldlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJpdmF0ZTo6V2Vi
RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlKToKKyAgICAgICAgKFdlYkRPTVRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1ByaXZhdGUpOgorICAgICAgICAoV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6Oldl
YkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKToKKyAgICAgICAgKFdlYkRPTVRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViRE9NVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM6OmltcGwpOgorICAgICAgICAoV2ViRE9NVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM6On5XZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk6CisgICAgICAg
ICh0b1dlYkNvcmUpOgorICAgICAgICAodG9XZWJLaXQpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6a2l0KToKKyAgICAgICAgKFdlYktpdDo6Y29yZSk6CisgICAg
ICAgIChXZWJLaXQ6OndyYXBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk6CisgICAgICAgICh3
ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfZmluYWxpemUpOgorICAgICAg
ICAod2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3JzX3NldF9wcm9wZXJ0eSk6
CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfZ2V0X3By
b3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9y
c19jb25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25z
dHJ1Y3RvcnNfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRl
ZF9jb25zdHJ1Y3RvcnNfaW5pdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaDogQWRkZWQuCisgICAg
ICAgIChfV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOgorICAgICAgICAoX1dl
YktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ2xhc3MpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29u
c3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c0NvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc0NvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGU6OnNlbGYpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzOjpjcmVhdGVQcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczo6ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjp+SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
czo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpnZXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjppc09ic2VydmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzT3duZXI6OmZpbmFsaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6dG9UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjppbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnJlbGVhc2VJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnJlbGVhc2VJbXBs
SWZOb3ROdWxsKToKKyAgICAgICAgKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNPd25lcik6
CisgICAgICAgIChXZWJDb3JlOjp3cmFwcGVyT3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6d3Jh
cHBlckNvbnRleHQpOgorICAgICAgICAoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3Rv
dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJv
dG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGU6OkpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNQcm90b3R5cGUpOgorICAgICAgICAoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5tbTogQWRkZWQuCisgICAgICAgICgtW0RPTVRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzIGRlYWxsb2NdKToKKyAgICAgICAgKC1bRE9NVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMgZmluYWxpemVdKToKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAoa2l0
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0ludGVybmFsLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmlk
bDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaWRsLgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmlkbDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1Y4SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNWOEludGVybmFsOjpWOF9VU0UpOgorICAgICAgICAoV2ViQ29yZTo6VjhU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3IxQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3IyQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
Y29uc3RydWN0b3IzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3I0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVGVtcGxh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6R2V0
UmF3VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yczo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6SGFzSW5zdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczo6d3JhcFNsb3cpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczo6ZGVyZWZPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnRvTmF0aXZl
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6Omluc3Rh
bGxQZXJDb250ZXh0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzOjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6d3JhcCk6Cisg
ICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJTb2NrZXRDdXN0b20uY3BwOgorCiAyMDEyLTExLTEyICBQYXZlbCBGZWxkbWFuICA8cGZlbGRt
YW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHdhc1Nob3duIGlzIGNh
bGxlZCB0d2ljZSB3aGVuIHNob3coKSBpcyBjYWxsZWQgZnJvbSB3aXRoaW4gd2FzU2hvd24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXgg
YzNjNzBhNGQ0MmNiN2NhMjUwZTA3NTc4NWFlNTBhYTRjYjQ4MTE3Yy4uZGZkM2Y3ZjFjYjgxZDRk
YThlZTY3YjUzMTQ3ODFhMDYxMjIyY2ViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTE2NCw2ICsxNjQsMzYgQEAgUGFzc1JlZlB0
cjxXZWJTb2NrZXQ+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCiAgICAgcmV0dXJuIHdlYlNvY2tldC5yZWxlYXNlKCk7CiB9CiAKK1Bhc3NSZWZQdHI8
V2ViU29ja2V0PiBXZWJTb2NrZXQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgVmVjdG9y
PFN0cmluZz4gcHJvdG9jb2xzOworICAgIHJldHVybiBXZWJTb2NrZXQ6OmNyZWF0ZShjb250ZXh0
LCB1cmwsIHByb3RvY29scywgZWMpOworfQorCitQYXNzUmVmUHRyPFdlYlNvY2tldD4gV2ViU29j
a2V0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcm90b2NvbHMsIEV4Y2VwdGlvbkNvZGUmIGVj
KQoreworICAgIGlmICh1cmwuaXNOdWxsKCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBSZWZQdHI8V2ViU29ja2V0PiB3ZWJTb2Nr
ZXQoYWRvcHRSZWYobmV3IFdlYlNvY2tldChjb250ZXh0KSkpOworICAgIHdlYlNvY2tldC0+c3Vz
cGVuZElmTmVlZGVkKCk7CisKKyAgICB3ZWJTb2NrZXQtPmNvbm5lY3QoY29udGV4dC0+Y29tcGxl
dGVVUkwodXJsKSwgcHJvdG9jb2xzLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIHJldHVybiB3ZWJTb2NrZXQucmVsZWFzZSgpOworfQorCitQYXNzUmVmUHRyPFdl
YlNvY2tldD4gV2ViU29ja2V0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHByb3RvY29sczsKKyAgICBwcm90b2NvbHMu
YXBwZW5kKHByb3RvY29sKTsKKyAgICByZXR1cm4gV2ViU29ja2V0OjpjcmVhdGUoY29udGV4dCwg
dXJsLCBwcm90b2NvbHMsIGVjKTsKK30KKwogdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3Qg
U3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFZlY3RvcjxTdHJpbmc+IHBy
b3RvY29sczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQu
aAppbmRleCBhOTM1NTI4YmEyNDYxMjIxOTI3ZDViMzNlMWI1Y2Y2NTk3NGM0NGQyLi4yYmFlNTM5
YjFiNTEyNTNhNGIzM2NlYmI1Yjg0Njk2OGVlYTQ4YzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC01Niw2ICs1Niw5IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBz
dWJQcm90b2NvbFNlcGVyYXRvcigpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNvY2tldD4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxX
ZWJTb2NrZXQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB1
cmwsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxX
ZWJTb2NrZXQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcm90b2NvbHMsIEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICB2aXJ0dWFsIH5XZWJTb2NrZXQoKTsKIAogICAgIGVudW0gU3RhdGUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAppbmRleCA3MmNmNWQ0ZTlj
YzE3YmM5MmY3MzhmMDliZTY4YWNiMjAxMWVlOTQ3Li44YzZjYmViZDM4NTIwNmUwM2I1MTFmOGY2
M2U5OGE4Nzk1MzA3ZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmlkbApAQCAtMzIsMTAgKzMyLDE1IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9
V0VCX1NPQ0tFVFMsCiAgICAgQWN0aXZlRE9NT2JqZWN0LAotICAgIEN1c3RvbUNvbnN0cnVjdG9y
LAotICAgIENvbnN0cnVjdG9yUGFyYW1ldGVycz0xLAorICAgIENvbnN0cnVjdG9yKGluIERPTVN0
cmluZyB1cmwpLAorICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyB1cmwsIGluIHNlcXVlbmNl
PFN0cmluZz4gcHJvdG9jb2xzKSwKKyAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgdXJsLCBp
biBET01TdHJpbmcgcHJvdG9jb2wpLAorICAgIENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uLAor
ICAgIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgRXZlbnRUYXJnZXQsCi0g
ICAgSlNOb1N0YXRpY1RhYmxlcworICAgIEpTTm9TdGF0aWNUYWJsZXMsCisgICAgSlNDdXN0b21D
b25zdHJ1Y3RvciwKKyAgICBDb25zdHJ1Y3RvclBhcmFtZXRlcnM9MQogXSBpbnRlcmZhY2UgV2Vi
U29ja2V0IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIFVSTDsgLy8gTG93ZXJj
YXNlZCAudXJsIGlzIHRoZSBvbmUgaW4gdGhlIHNwZWMsIGJ1dCBsZWF2aW5nIC5VUkwgZm9yIGNv
bXBhdGliaWxpdHkgcmVhc29ucy4KICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVy
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KaW5kZXggODU1ZGFhYWM4ZTA5MmJhODM2ZDlhMTM1OWQ2YjJhODgzNTE0YThkYy4uNDBk
Njc5ZGE2ZjE4Y2I2OWM3ZDBjODA1OGY0NzI1NzAxYjNhZGE0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTM3MTcsMTMg
KzM3MTcsMTcgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCiAgICAgbXkgJGRh
dGFOb2RlID0gc2hpZnQ7CiAgICAgbXkgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yID0gc2hp
ZnQ7CiAKKyAgICAjIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igb3ZlcmxvYWRlZCBjb25zdHJ1Y3Rv
cnMgdG8gSlMgYXMgd2VsbC4KKyAgICAjIEZvciBub3cgbWltaWMgdGhlIG9sZCBiZWhhdmlvdXIg
Ynkgb25seSBnZW5lcmF0aW5nIGNvZGUgZm9yIHRoZSBsYXN0ICJDb25zdHJ1Y3RvciIgYXR0cmli
dXRlLgorICAgIG15ICRmdW5jdGlvbiA9IEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3RvcnN9Wy0xXTsK
KwogICAgIG15ICRjb25zdHJ1Y3RvckNsYXNzTmFtZSA9ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1
Y3RvciA/ICIke2NsYXNzTmFtZX1OYW1lZENvbnN0cnVjdG9yIiA6ICIke2NsYXNzTmFtZX1Db25z
dHJ1Y3RvciI7CiAgICAgbXkgJG51bWJlck9mQ29uc3RydWN0b3JQYXJhbWV0ZXJzID0gJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JQYXJhbWV0ZXJzIn07CiAgICAg
aWYgKCFkZWZpbmVkICRudW1iZXJPZkNvbnN0cnVjdG9yUGFyYW1ldGVycykgewogICAgICAgICBp
ZiAoJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUZW1wbGF0ZSgkZGF0YU5vZGUsICJFdmVu
dCIpKSB7CiAgICAgICAgICAgICAkbnVtYmVyT2ZDb25zdHJ1Y3RvclBhcmFtZXRlcnMgPSAyOwog
ICAgICAgICB9IGVsc2lmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1
Y3RvciJ9KSB7Ci0gICAgICAgICAgICAkbnVtYmVyT2ZDb25zdHJ1Y3RvclBhcmFtZXRlcnMgPSBA
eyRkYXRhTm9kZS0+Y29uc3RydWN0b3ItPnBhcmFtZXRlcnN9OworICAgICAgICAgICAgJG51bWJl
ck9mQ29uc3RydWN0b3JQYXJhbWV0ZXJzID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwogICAg
ICAgICB9CiAgICAgfQogCkBAIC0zODg1LDcgKzM4ODksNiBAQCBFTkQKIAogICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgICR7Y29uc3RydWN0b3JDbGFzc05hbWV9KiBjYXN0ZWRU
aGlzID0ganNDYXN0PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9Kj4oZXhlYy0+Y2FsbGVlKCkpO1xu
Iik7CiAKLSAgICAgICAgICAgIG15ICRmdW5jdGlvbiA9ICRkYXRhTm9kZS0+Y29uc3RydWN0b3I7
CiAgICAgICAgICAgICBteSBAY29uc3RydWN0b3JBcmdMaXN0OwogCiAgICAgICAgICAgICAkaW1w
bEluY2x1ZGVzeyI8cnVudGltZS9FcnJvci5oPiJ9ID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggMTRmNDRiNzdkOWU1
NGY5ZTI4NDNmZTc0N2NlODE3YjdjMDAxMjNjMC4uZjg1NTViNDY1MGM0ZTgzZTVkZjE4MDAwNjBi
MDAwZTI2MmIwNDc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTQ5NCw2ICs0OTQsMTcgQEAgRU5ECiAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgPDxFTkQpOwogcHJpdmF0ZToKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwU2xvdygke3dyYXBTbG93QXJndW1lbnRUeXBlfSwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CitFTkQKKworICAgIGlm
IChJc0NvbnN0cnVjdGFibGUoJGRhdGFOb2RlKSAmJiBAeyRkYXRhTm9kZS0+Y29uc3RydWN0b3Jz
fSA+IDEpIHsKKyAgICAgICAgZm9yIChteSAkaSA9IDE7ICRpIDw9IEB7JGRhdGFOb2RlLT5jb25z
dHJ1Y3RvcnN9OyAkaSsrKSB7CisgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5E
KTsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yJHtpfUNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKK0VORAorICAgICAgICB9CisgICAgfQorCisgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogfTsKIAogRU5ECkBAIC0xODUyLDExICsxODYz
LDUxIEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgIHJldHVybiAoJHBhcmFtZXRl
ckNoZWNrU3RyaW5nLCAkcGFyYW1JbmRleCwgJXJlcGxhY2VtZW50cyk7CiB9CiAKLXN1YiBHZW5l
cmF0ZUNvbnN0cnVjdG9yQ2FsbGJhY2sKK3N1YiBHZW5lcmF0ZU92ZXJsb2FkZWRDb25zdHJ1Y3Rv
ckNhbGxiYWNrCiB7Ci0gICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CiAgICAgbXkgJGRhdGFOb2Rl
ID0gc2hpZnQ7CiAgICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKKyAgICAKKyAgICBwdXNo
KEBpbXBsQ29udGVudCwgPDxFTkQpOwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4JHtpbXBsQ2xh
c3NOYW1lfTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQor
eworICAgIElOQ19TVEFUUygiRE9NLiR7aW1wbENsYXNzTmFtZX0uQ29uc3RydWN0b3IiKTsKKyAg
ICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rp
b24uIik7CisKKyAgICBpZiAoQ29uc3RydWN0b3JNb2RlOjpjdXJyZW50KCkgPT0gQ29uc3RydWN0
b3JNb2RlOjpXcmFwRXhpc3RpbmdPYmplY3QpCisgICAgICAgIHJldHVybiBhcmdzLkhvbGRlcigp
OworCitFTkQKKworICAgIG15ICRsZWFzdE51bU1hbmRhdG9yeVBhcmFtcyA9IDI1NTsKKyAgICBm
b3JlYWNoIG15ICRjb25zdHJ1Y3RvciAoQHskZGF0YU5vZGUtPmNvbnN0cnVjdG9yc30pIHsKKyAg
ICAgICAgbXkgJG5hbWUgPSAiY29uc3RydWN0b3IiIC4gJGNvbnN0cnVjdG9yLT57b3ZlcmxvYWRl
ZEluZGV4fSAuICJDYWxsYmFjayI7CisgICAgICAgIG15ICgkbnVtTWFuZGF0b3J5UGFyYW1zLCAk
cGFyYW1ldGVyc0NoZWNrKSA9IEdlbmVyYXRlRnVuY3Rpb25QYXJhbWV0ZXJzQ2hlY2soJGNvbnN0
cnVjdG9yKTsKKyAgICAgICAgJGxlYXN0TnVtTWFuZGF0b3J5UGFyYW1zID0gJG51bU1hbmRhdG9y
eVBhcmFtcyBpZiAoJG51bU1hbmRhdG9yeVBhcmFtcyA8ICRsZWFzdE51bU1hbmRhdG9yeVBhcmFt
cyk7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICgkcGFyYW1ldGVyc0NoZWNr
KVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gJG5hbWUo
YXJncyk7XG4iKTsKKyAgICB9CisgICAgaWYgKCRsZWFzdE51bU1hbmRhdG9yeVBhcmFtcyA+PSAx
KSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChhcmdzLkxlbmd0aCgpIDwg
JGxlYXN0TnVtTWFuZGF0b3J5UGFyYW1zKVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElz
b2xhdGUoKSk7XG4iKTsKKyAgICB9CisgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKKyAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoMCwgYXJncy5HZXRJc29sYXRlKCkpOworRU5ECisgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOworfQorCitzdWIgR2VuZXJhdGVTaW5nbGVDb25z
dHJ1Y3RvckNhbGxiYWNrCit7CisgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CisgICAgbXkgJGlt
cGxDbGFzc05hbWUgPSBzaGlmdDsKKyAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKKworICAgIG15
ICRvdmVybG9hZGVkSW5kZXhTdHJpbmcgPSAiIjsKKyAgICBpZiAoJGZ1bmN0aW9uLT57b3Zlcmxv
YWRlZEluZGV4fSA+IDApIHsKKyAgICAgICAgJG92ZXJsb2FkZWRJbmRleFN0cmluZyAuPSAkZnVu
Y3Rpb24tPntvdmVybG9hZGVkSW5kZXh9OworICAgIH0KIAogICAgIG15ICRyYWlzZXNFeGNlcHRp
b25zID0gQHskZnVuY3Rpb24tPnJhaXNlc0V4Y2VwdGlvbnN9OwogICAgIGlmICgkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbiJ9KSB7CkBA
IC0xODc1LDE4ICsxOTI2LDIyIEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbGJhY2sKICAg
ICBteSBAYmVmb3JlQXJndW1lbnRMaXN0OwogICAgIG15IEBhZnRlckFyZ3VtZW50TGlzdDsKICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4JHtp
bXBsQ2xhc3NOYW1lfTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4JHtpbXBsQ2xhc3NOYW1lfTo6Y29uc3RydWN0
b3Ike292ZXJsb2FkZWRJbmRleFN0cmluZ31DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLiR7aW1wbENsYXNzTmFtZX0uQ29uc3RydWN0b3Ii
KTsKKyAgICBJTkNfU1RBVFMoIkRPTS4ke2ltcGxDbGFzc05hbWV9LkNvbnN0cnVjdG9yJHtvdmVy
bG9hZGVkSW5kZXhTdHJpbmd9Iik7CiAgICAgJHttYXliZU9ic2VydmVGZWF0dXJlfQorRU5ECisK
KyAgICBpZiAoJGZ1bmN0aW9uLT57b3ZlcmxvYWRlZEluZGV4fSA9PSAwKSB7CisgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsIDw8RU5EKTsKICAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkp
CiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBj
YW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIik7CiAKICAgICBpZiAoQ29uc3RydWN0b3JN
b2RlOjpjdXJyZW50KCkgPT0gQ29uc3RydWN0b3JNb2RlOjpXcmFwRXhpc3RpbmdPYmplY3QpCiAg
ICAgICAgIHJldHVybiBhcmdzLkhvbGRlcigpOwogRU5ECi0KLSAgICBwdXNoKEBpbXBsQ29udGVu
dCwgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKCRmdW5jdGlvbiwgJGRhdGFOb2RlKSk7Cisg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soJGZ1
bmN0aW9uLCAkZGF0YU5vZGUpKTsKKyAgICB9CiAKICAgICBpZiAoJHJhaXNlc0V4Y2VwdGlvbnMp
IHsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkV4Y2VwdGlvbkNvZGUuaCIpOwpAQCAtMTk0
OSw2ICsyMDA0LDIxIEBAIEVORAogICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKIH0KIAor
c3ViIEdlbmVyYXRlQ29uc3RydWN0b3JDYWxsYmFjaworeworICAgIG15ICRkYXRhTm9kZSA9IHNo
aWZ0OworICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7CisKKyAgICBpZiAoQHskZGF0YU5v
ZGUtPmNvbnN0cnVjdG9yc30gPT0gMSkgeworICAgICAgICBHZW5lcmF0ZVNpbmdsZUNvbnN0cnVj
dG9yQ2FsbGJhY2soJGRhdGFOb2RlLCAkaW1wbENsYXNzTmFtZSwgQHskZGF0YU5vZGUtPmNvbnN0
cnVjdG9yc31bMF0pOworICAgIH0gZWxzZSB7CisgICAgICAgIGZvcmVhY2ggbXkgJGNvbnN0cnVj
dG9yIChAeyRkYXRhTm9kZS0+Y29uc3RydWN0b3JzfSkgeworICAgICAgICAgICAgR2VuZXJhdGVT
aW5nbGVDb25zdHJ1Y3RvckNhbGxiYWNrKCRkYXRhTm9kZSwgJGltcGxDbGFzc05hbWUsICRjb25z
dHJ1Y3Rvcik7CisgICAgICAgIH0KKyAgICAgICAgR2VuZXJhdGVPdmVybG9hZGVkQ29uc3RydWN0
b3JDYWxsYmFjaygkZGF0YU5vZGUsICRpbXBsQ2xhc3NOYW1lKTsKKyAgICB9Cit9CisKIHN1YiBH
ZW5lcmF0ZUV2ZW50Q29uc3RydWN0b3JDYWxsYmFjawogewogICAgIG15ICRkYXRhTm9kZSA9IHNo
aWZ0OwpAQCAtMjgyMiw5ICsyODkyLDkgQEAgRU5ECiAgICAgcHVzaChAaW1wbENvbnRlbnREZWNs
cywgIn0gLy8gbmFtZXNwYWNlICR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFsXG5cbiIpOwogCiAg
ICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0b3Ii
fSAmJiAhKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tQ29uc3RydWN0
b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1Y3Rv
ciJ9KSkgewotICAgICAgICBHZW5lcmF0ZU5hbWVkQ29uc3RydWN0b3JDYWxsYmFjaygkZGF0YU5v
ZGUtPmNvbnN0cnVjdG9yLCAkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lKTsKKyAgICAgICAgR2Vu
ZXJhdGVOYW1lZENvbnN0cnVjdG9yQ2FsbGJhY2soQHskZGF0YU5vZGUtPmNvbnN0cnVjdG9yc31b
MF0sICRkYXRhTm9kZSwgJGludGVyZmFjZU5hbWUpOwogICAgIH0gZWxzaWYgKCRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0gJiYgISgkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJWOEN1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3IifSkpIHsKLSAgICAgICAgR2VuZXJh
dGVDb25zdHJ1Y3RvckNhbGxiYWNrKCRkYXRhTm9kZS0+Y29uc3RydWN0b3IsICRkYXRhTm9kZSwg
JGludGVyZmFjZU5hbWUpOworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbGJhY2soJGRh
dGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklz
Q29uc3RydWN0b3JUZW1wbGF0ZSgkZGF0YU5vZGUsICJFdmVudCIpKSB7CiAgICAgICAgIEdlbmVy
YXRlRXZlbnRDb25zdHJ1Y3RvckNhbGxiYWNrKCRkYXRhTm9kZSwgJGludGVyZmFjZU5hbWUpOwog
ICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVGVtcGxhdGUoJGRhdGFO
b2RlLCAiVHlwZWRBcnJheSIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0lETFBhcnNlci5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
SURMUGFyc2VyLnBtCmluZGV4IDE5ZmI2NDk1YzMxYjFmYjU2ZDdlNmE5ZjE1MGRiOTU5ODJjNzQ3
MTIuLjk3ZjMzNThiMWUwMzg4MGU4MDVhZThmYWJmYmQ5OThlMjY3NGRlNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCkBAIC0xMzIzLDYgKzEzMjMs
MjUgQEAgc3ViIHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVMaXN0QWxsb3dFbXB0eQogICAgIHJldHVy
biB7fTsKIH0KIAorc3ViIGNvcHlFeHRlbmRlZEF0dHJpYnV0ZXMKK3sKKyAgICBteSAkZXh0ZW5k
ZWRBdHRyaWJ1dGVMaXN0ID0gc2hpZnQ7CisgICAgbXkgJGF0dHIgPSBzaGlmdDsKKworICAgIGZv
ciBteSAka2V5IChrZXlzICV7JGF0dHJ9KSB7CisgICAgICAgIGlmICgka2V5IGVxICJDb25zdHJ1
Y3RvciIpIHsKKyAgICAgICAgICAgIHB1c2goQHskZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57IkNv
bnN0cnVjdG9ycyJ9fSwgJGF0dHItPnska2V5fSk7CisgICAgICAgIH0gZWxzaWYgKCRrZXkgZXEg
IkNvbnN0cnVjdG9ycyIpIHsKKyAgICAgICAgICAgIG15IEBjb25zdHJ1Y3RvcnMgPSBAeyRhdHRy
LT57JGtleX19OworICAgICAgICAgICAgZm9yZWFjaCBteSAkY29uc3RydWN0b3IgKEBjb25zdHJ1
Y3RvcnMpIHsKKyAgICAgICAgICAgICAgICBwdXNoKEB7JGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+
eyJDb25zdHJ1Y3RvcnMifX0sICRjb25zdHJ1Y3Rvcik7CisgICAgICAgICAgICB9CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57JGtleX0gPSAk
YXR0ci0+eyRrZXl9OworICAgICAgICB9CisgICAgfQorfQorCiBzdWIgcGFyc2VFeHRlbmRlZEF0
dHJpYnV0ZUxpc3QKIHsKICAgICBteSAkc2VsZiA9IHNoaWZ0OwpAQCAtMTMzMSwxMyArMTM1MCw5
IEBAIHN1YiBwYXJzZUV4dGVuZGVkQXR0cmlidXRlTGlzdAogICAgICAgICAkc2VsZi0+YXNzZXJ0
VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIlsiLCBfX0xJTkVfXyk7CiAgICAgICAgIG15
ICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QgPSB7fTsKICAgICAgICAgbXkgJGF0dHIgPSAkc2VsZi0+
cGFyc2VFeHRlbmRlZEF0dHJpYnV0ZSgpOwotICAgICAgICBmb3IgbXkgJGtleSAoa2V5cyAleyRh
dHRyfSkgewotICAgICAgICAgICAgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyRrZXl9ID0gJGF0
dHItPnska2V5fTsKLSAgICAgICAgfQorICAgICAgICBjb3B5RXh0ZW5kZWRBdHRyaWJ1dGVzKCRl
eHRlbmRlZEF0dHJpYnV0ZUxpc3QsICRhdHRyKTsKICAgICAgICAgJGF0dHIgPSAkc2VsZi0+cGFy
c2VFeHRlbmRlZEF0dHJpYnV0ZXMoKTsKLSAgICAgICAgZm9yIG15ICRrZXkgKGtleXMgJXskYXR0
cn0pIHsKLSAgICAgICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnska2V5fSA9ICRhdHRy
LT57JGtleX07Ci0gICAgICAgIH0KKyAgICAgICAgY29weUV4dGVuZGVkQXR0cmlidXRlcygkZXh0
ZW5kZWRBdHRyaWJ1dGVMaXN0LCAkYXR0cik7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZh
bHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiXSIsIF9fTElORV9fKTsKICAgICAgICAgcmV0dXJuICRl
eHRlbmRlZEF0dHJpYnV0ZUxpc3Q7CiAgICAgfQpAQCAtMTM1NCw5ICsxMzY5LDcgQEAgc3ViIHBh
cnNlRXh0ZW5kZWRBdHRyaWJ1dGVzCiAgICAgICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAiLCIp
IHsKICAgICAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigp
LCAiLCIsIF9fTElORV9fKTsKICAgICAgICAgICAgIG15ICRhdHRyID0gJHNlbGYtPnBhcnNlRXh0
ZW5kZWRBdHRyaWJ1dGUyKCk7Ci0gICAgICAgICAgICBmb3IgbXkgJGtleSAoa2V5cyAleyRhdHRy
fSkgewotICAgICAgICAgICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnska2V5fSA9ICRh
dHRyLT57JGtleX07Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBjb3B5RXh0ZW5kZWRBdHRy
aWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QsICRhdHRyKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgIH0KQEAgLTIzODEsMTQgKzIzOTQsMjAgQEAgc3Vi
IGFwcGx5RXh0ZW5kZWRBdHRyaWJ1dGVMaXN0CiAgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CiAg
ICAgbXkgJGV4dGVuZGVkQXR0cmlidXRlTGlzdCA9IHNoaWZ0OwogCi0gICAgaWYgKGRlZmluZWQg
JGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJDb25zdHJ1Y3RvciJ9KSB7Ci0gICAgICAgIG15ICRu
ZXdEYXRhTm9kZSA9IG5ldyBkb21GdW5jdGlvbigpOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNp
Z25hdHVyZShuZXcgZG9tU2lnbmF0dXJlKCkpOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25h
dHVyZS0+bmFtZSgiQ29uc3RydWN0b3IiKTsKLSAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKLSAgICAgICAg
cHVzaChAeyRuZXdEYXRhTm9kZS0+cGFyYW1ldGVyc30sIEB7JGV4dGVuZGVkQXR0cmlidXRlTGlz
dC0+eyJDb25zdHJ1Y3RvciJ9fSk7CisgICAgaWYgKGRlZmluZWQgJGV4dGVuZGVkQXR0cmlidXRl
TGlzdC0+eyJDb25zdHJ1Y3RvcnMifSkgeworICAgICAgICBteSBAY29uc3RydWN0b3JQYXJhbXMg
PSBAeyRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiQ29uc3RydWN0b3JzIn19OworICAgICAgICBt
eSAkaW5kZXggPSAoQGNvbnN0cnVjdG9yUGFyYW1zID09IDEpID8gMCA6IDE7CisgICAgICAgIGZv
cmVhY2ggbXkgJHBhcmFtIChAY29uc3RydWN0b3JQYXJhbXMpIHsKKyAgICAgICAgICAgIG15ICRj
b25zdHJ1Y3RvciA9IG5ldyBkb21GdW5jdGlvbigpOworICAgICAgICAgICAgJGNvbnN0cnVjdG9y
LT5zaWduYXR1cmUobmV3IGRvbVNpZ25hdHVyZSgpKTsKKyAgICAgICAgICAgICRjb25zdHJ1Y3Rv
ci0+c2lnbmF0dXJlLT5uYW1lKCJDb25zdHJ1Y3RvciIpOworICAgICAgICAgICAgJGNvbnN0cnVj
dG9yLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0
KTsKKyAgICAgICAgICAgICRjb25zdHJ1Y3Rvci0+cGFyYW1ldGVycygkcGFyYW0pOworICAgICAg
ICAgICAgJGNvbnN0cnVjdG9yLT57b3ZlcmxvYWRlZEluZGV4fSA9ICRpbmRleCsrOworICAgICAg
ICAgICAgcHVzaChAeyRkYXRhTm9kZS0+Y29uc3RydWN0b3JzfSwgJGNvbnN0cnVjdG9yKTsKKyAg
ICAgICAgfQorICAgICAgICBkZWxldGUgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJDb25zdHJ1
Y3RvcnMifTsKICAgICAgICAgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJDb25zdHJ1Y3RvciJ9
ID0gIlZBTFVFX0lTX01JU1NJTkciOwotICAgICAgICAkZGF0YU5vZGUtPmNvbnN0cnVjdG9yKCRu
ZXdEYXRhTm9kZSk7CiAgICAgfSBlbHNpZiAoZGVmaW5lZCAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0
LT57Ik5hbWVkQ29uc3RydWN0b3IifSkgewogICAgICAgICBteSAkbmV3RGF0YU5vZGUgPSBuZXcg
ZG9tRnVuY3Rpb24oKTsKICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUobmV3IGRvbVNp
Z25hdHVyZSgpKTsKQEAgLTIzOTksNyArMjQxOCw3IEBAIHN1YiBhcHBseUV4dGVuZGVkQXR0cmli
dXRlTGlzdAogICAgICAgICBteSAkY29uc3RydWN0b3JOYW1lID0gJGF0dHJpYnV0ZUtleXNbMF07
CiAgICAgICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPnBhcmFtZXRlcnN9LCBAeyRhdHRyaWJ1dGVz
eyRjb25zdHJ1Y3Rvck5hbWV9fSk7CiAgICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsi
TmFtZWRDb25zdHJ1Y3RvciJ9ID0gJGNvbnN0cnVjdG9yTmFtZTsKLSAgICAgICAgJGRhdGFOb2Rl
LT5jb25zdHJ1Y3RvcigkbmV3RGF0YU5vZGUpOworICAgICAgICBwdXNoKEB7JGRhdGFOb2RlLT5j
b25zdHJ1Y3RvcnN9LCAkbmV3RGF0YU5vZGUpOwogICAgIH0KICAgICAkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJlLnBtIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0KaW5kZXggZmY2Mjg3MjVlYjkw
ZjU0NjY3M2ZkMTY0MWVmMWRjNWFjMjZjZGZjYi4uZjQ0MzI0MTczZWEyY2UwZDQ0M2M2ZjU0ZGVm
ZGI1NGQ1MDM5Y2U4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExTdHJ1Y3R1cmUucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9J
RExTdHJ1Y3R1cmUucG0KQEAgLTQwLDcgKzQwLDcgQEAgc3RydWN0KCBkb21DbGFzcyA9PiB7CiAg
ICAgZnVuY3Rpb25zID0+ICdAJywgICAgIyBMaXN0IG9mICdkb21GdW5jdGlvbicKICAgICBhdHRy
aWJ1dGVzID0+ICdAJywgICAgIyBMaXN0IG9mICdkb21BdHRyaWJ1dGUnICAgIAogICAgIGV4dGVu
ZGVkQXR0cmlidXRlcyA9PiAnJCcsICMgRXh0ZW5kZWQgYXR0cmlidXRlcwotICAgIGNvbnN0cnVj
dG9yID0+ICckJywgIyBDb25zdHJ1Y3RvcgorICAgIGNvbnN0cnVjdG9ycyA9PiAnQCcsICMgQ29u
c3RydWN0b3IKICAgICBpc0V4Y2VwdGlvbiA9PiAnJCcsICMgVXNlZCBmb3IgZXhjZXB0aW9uIGlu
dGVyZmFjZXMKIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2NmEyZWRiNDZiM2NhMGI5OGFhOTg1YjIyZTc0
NjVmODE1YzA1MDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAt
MCwwICsxLDgyIEBACisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVu
IHNvdXJjZSBwcm9qZWN0LgorICogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5l
cmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgiCisKKyNpbmNsdWRlICJU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIgorI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkhhbmRs
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
CitzdHJ1Y3QgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OldlYkRPTVRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzUHJpdmF0ZSB7CisgICAgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNQcml2YXRlKFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBvYmpl
Y3QgPSAwKQorICAgICAgICA6IGltcGwob2JqZWN0KQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGltcGw7Cit9OworCitXZWJE
T01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6V2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMoKQorICAgIDogV2ViRE9NT2JqZWN0KCkKKyAgICAsIG1faW1wbCgwKQoreworfQorCitX
ZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6V2ViRE9NVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMoV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGltcGwpCisgICAg
OiBXZWJET01PYmplY3QoKQorICAgICwgbV9pbXBsKG5ldyBXZWJET01UZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1ByaXZhdGUoaW1wbCkpCit7Cit9CisKK1dlYkRPTVRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzOjpXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhjb25zdCBXZWJET01U
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyYgY29weSkKKyAgICA6IFdlYkRPTU9iamVjdCgpCit7
CisgICAgbV9pbXBsID0gY29weS5pbXBsKCkgPyBuZXcgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNQcml2YXRlKGNvcHkuaW1wbCgpKSA6IDA7Cit9CisKK1dlYkRPTVRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzJiBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6b3BlcmF0
b3I9KGNvbnN0IFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzJiBjb3B5KQoreworICAg
IGRlbGV0ZSBtX2ltcGw7CisgICAgbV9pbXBsID0gY29weS5pbXBsKCkgPyBuZXcgV2ViRE9NVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlKGNvcHkuaW1wbCgpKSA6IDA7CisgICAgcmV0
dXJuICp0aGlzOworfQorCitXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogV2Vi
RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmltcGwoKSBjb25zdAoreworICAgIHJldHVy
biBtX2ltcGwgPyBXVEY6OmdldFB0cihtX2ltcGwtPmltcGwpIDogMDsKK30KKworV2ViRE9NVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6On5XZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cygpCit7CisgICAgZGVsZXRlIG1faW1wbDsKKyAgICBtX2ltcGwgPSAwOworfQorCitXZWJDb3Jl
OjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdG9XZWJDb3JlKGNvbnN0IFdlYkRPTVRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzJiB3cmFwcGVyKQoreworICAgIHJldHVybiB3cmFwcGVyLmlt
cGwoKTsKK30KKworV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgdG9XZWJLaXQoV2Vi
Q29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHZhbHVlKQoreworICAgIHJldHVybiBX
ZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyh2YWx1ZSk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
Q1BQL1dlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFiODEy
YmJiNmZmMGVkYTY4YWJlNDlmOTNhMWIyMDQxM2FjMjUyNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSBS
ZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2Vp
bmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4g
TW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJET01U
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc19oCisjZGVmaW5lIFdlYkRPTVRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzX2gKKworI2luY2x1ZGUgPFdlYkRPTU9iamVjdC5oPgorI2luY2x1ZGUgPFdl
YkRPTVN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczsKK307CisKKworY2xhc3MgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMgOiBwdWJsaWMgV2ViRE9NT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBXZWJET01UZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycygpOworICAgIGV4cGxpY2l0IFdlYkRPTVRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzKFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKik7CisgICAg
V2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoY29uc3QgV2ViRE9NVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMmKTsKKyAgICBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyYg
b3BlcmF0b3I9KGNvbnN0IFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzJik7CisgICAg
dmlydHVhbCB+V2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoKTsKKworCisgICAgV2Vi
Q29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGltcGwoKSBjb25zdDsKKworcHJvdGVj
dGVkOgorICAgIHN0cnVjdCBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGU7
CisgICAgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlKiBtX2ltcGw7Cit9
OworCitXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdG9XZWJDb3JlKGNvbnN0
IFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzJik7CitXZWJET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyB0b1dlYktpdChXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cyopOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODNlNTZmZjc0OWZjNDc1
MjZlNTAwOWY5NDBkOGRhMmRiMTEzMjFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMuY3BwCkBAIC0wLDAgKzEsMTM3IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFz
IGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5oIgorCisjaW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisj
aW5jbHVkZSAiV2ViS2l0RE9NQmluZGluZy5oIgorI2luY2x1ZGUgIldlYktpdERPTVRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzUHJpdmF0ZS5oIgorI2luY2x1ZGUgImdvYmplY3QvQ29udmVydFRv
VVRGOFN0cmluZy5oIgorI2luY2x1ZGUgIndlYmtpdGdsb2JhbHNwcml2YXRlLmgiCisjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBraXQoV2ViQ29y
ZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIG9iaikKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChvYmosIDApOworCisgICAgaWYgKGdwb2ludGVyIHJldCA9IERPTU9iamVjdENhY2hl
OjpnZXQob2JqKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdERPTVRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzKj4ocmV0KTsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJL
aXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KERPTU9iamVjdENhY2hlOjpwdXQob2Jq
LCBXZWJLaXQ6OndyYXBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhvYmopKSk7Cit9CisKK1dl
YkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBjb3JlKFdlYktpdERPTVRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzKiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KHJlcXVlc3QsIDApOworCisgICAgV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMq
IGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycyo+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KTsKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAwKTsKKworICAgIHJldHVybiBjb3JlT2JqZWN0
OworfQorCitXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogd3JhcFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzKFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBj
b3JlT2JqZWN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVPYmplY3QsIDApOwor
CisgICAgLy8gV2UgY2FsbCByZWYoKSByYXRoZXIgdGhhbiB1c2luZyBhIEMrKyBzbWFydCBwb2lu
dGVyIGJlY2F1c2Ugd2UgY2FuJ3Qgc3RvcmUgYSBDKysgb2JqZWN0CisgICAgLy8gaW4gYSBDLWFs
bG9jYXRlZCBHT2JqZWN0IHN0cnVjdHVyZS4gU2VlIHRoZSBmaW5hbGl6ZSgpIGNvZGUgZm9yIHRo
ZSBtYXRjaGluZyBkZXJlZigpLgorICAgIGNvcmVPYmplY3QtPnJlZigpOworCisgICAgcmV0dXJu
IFdFQktJVF9ET01fVEVTVF9PVkVSTE9BREVEX0NPTlNUUlVDVE9SUyhnX29iamVjdF9uZXcoV0VC
S0lUX1RZUEVfRE9NX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlMsICJjb3JlLW9iamVjdCIs
IGNvcmVPYmplY3QsIE5VTEwpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKK0dfREVG
SU5FX1RZUEUoV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMsIHdlYmtpdF9kb21f
dGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9ycywgV0VCS0lUX1RZUEVfRE9NX09CSkVDVCkKKwor
ZW51bSB7CisgICAgUFJPUF8wLAorfTsKKworc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X292
ZXJsb2FkZWRfY29uc3RydWN0b3JzX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sKKworICAg
IFdlYktpdERPTU9iamVjdCogZG9tT2JqZWN0ID0gV0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0KTsK
KyAgICAKKyAgICBpZiAoZG9tT2JqZWN0LT5jb3JlT2JqZWN0KSB7CisgICAgICAgIFdlYkNvcmU6
OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBjb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihkb21PYmplY3QtPmNvcmVPYmplY3Qp
OworCisgICAgICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChjb3JlT2JqZWN0KTsK
KyAgICAgICAgY29yZU9iamVjdC0+ZGVyZWYoKTsKKworICAgICAgICBkb21PYmplY3QtPmNvcmVP
YmplY3QgPSAwOworICAgIH0KKworCisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0
X292ZXJsb2FkZWRfY29uc3RydWN0b3JzX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7
Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9y
c19zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBjb25zdCBH
VmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwg
cHJvcGVydHlJZCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKKworc3RhdGlj
IHZvaWQgd2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3JzX2dldF9wcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJh
bVNwZWMqIHBzcGVjKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09C
SkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7
CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rl
c3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfY29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQor
eworCisgICAgaWYgKEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2Nv
bnN0cnVjdG9yc19wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3RlZCkKKyAgICAgICAgR19PQkpFQ1Rf
Q0xBU1Mod2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3JzX3BhcmVudF9jbGFz
cyktPmNvbnN0cnVjdGVkKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVz
dF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19jbGFzc19pbml0KFdlYktpdERPTVRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzQ2xhc3MqIHJlcXVlc3RDbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3Mq
IGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAgZ29iamVj
dENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9y
c19maW5hbGl6ZTsKKyAgICBnb2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21f
dGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19zZXRfcHJvcGVydHk7CisgICAgZ29iamVjdENs
YXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3Rv
cnNfZ2V0X3Byb3BlcnR5OworICAgIGdvYmplY3RDbGFzcy0+Y29uc3RydWN0ZWQgPSB3ZWJraXRf
ZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfY29uc3RydWN0ZWQ7CisKKworCit9CisK
K3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19pbml0
KFdlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiByZXF1ZXN0KQoreworfQorCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44ODRmOTQ3ZTEyNmE1YjMxMjU5MWQ2YWU2ZDhjMTg3MDQzMDY1
YmRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaApAQCAtMCww
ICsxLDUxIEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBz
b3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVy
YXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgV2ViS2l0RE9NVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNfaAorI2RlZmluZSBXZWJLaXRET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc19oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdl
YmtpdC9XZWJLaXRET01PYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZGVmaW5lcy5o
PgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkb21kZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMK
KworI2RlZmluZSBXRUJLSVRfVFlQRV9ET01fVEVTVF9PVkVSTE9BREVEX0NPTlNUUlVDVE9SUyAg
ICAgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfZ2V0X3R5
cGUoKSkKKyNkZWZpbmUgV0VCS0lUX0RPTV9URVNUX09WRVJMT0FERURfQ09OU1RSVUNUT1JTKG9i
aikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9U
WVBFX0RPTV9URVNUX09WRVJMT0FERURfQ09OU1RSVUNUT1JTLCBXZWJLaXRET01UZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycykpCisjZGVmaW5lIFdFQktJVF9ET01fVEVTVF9PVkVSTE9BREVEX0NP
TlNUUlVDVE9SU19DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFz
cyksICBXRUJLSVRfVFlQRV9ET01fVEVTVF9PVkVSTE9BREVEX0NPTlNUUlVDVE9SUywgV2ViS2l0
RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDbGFzcykKKyNkZWZpbmUgV0VCS0lUX0RPTV9J
U19URVNUX09WRVJMT0FERURfQ09OU1RSVUNUT1JTKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNL
X0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX0RPTV9URVNUX09WRVJMT0FERURfQ09O
U1RSVUNUT1JTKSkKKyNkZWZpbmUgV0VCS0lUX0RPTV9JU19URVNUX09WRVJMT0FERURfQ09OU1RS
VUNUT1JTX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdF
QktJVF9UWVBFX0RPTV9URVNUX09WRVJMT0FERURfQ09OU1RSVUNUT1JTKSkKKyNkZWZpbmUgV0VC
S0lUX0RPTV9URVNUX09WRVJMT0FERURfQ09OU1RSVUNUT1JTX0dFVF9DTEFTUyhvYmopICAoR19U
WVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX0RPTV9URVNUX09WRVJM
T0FERURfQ09OU1RSVUNUT1JTLCBXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0Ns
YXNzKSkKKworc3RydWN0IF9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyB7Cisg
ICAgV2ViS2l0RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKK307CisKK3N0cnVjdCBfV2ViS2l0
RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDbGFzcyB7CisgICAgV2ViS2l0RE9NT2JqZWN0
Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X2RvbV90
ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3JzX2dldF90eXBlICh2b2lkKTsKKworR19FTkRfREVD
TFMKKworI2VuZGlmIC8qIFdlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzX2ggKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJpdmF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmZiYzFiMTlhZmNjOWI4NjY2ZWQ2
MTE0NDJkYzBhYmMxNmUyZGYxNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzUHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMg
YmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8K
KworI2lmbmRlZiBXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGVfaAor
I2RlZmluZSBXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGVfaAorCisj
aW5jbHVkZSAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIKKyNpbmNsdWRlIDx3ZWJraXQv
V2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CitXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogd3JhcFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKik7CitX
ZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogY29yZShXZWJLaXRET01UZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycyogcmVxdWVzdCk7CitXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycyoga2l0KFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBub2Rl
KTsKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLyogV2ViS2l0RE9NVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MmQyZWE4NTAwZjBkMWZjNDJjMDgxOTU0
ZDY4ZjIwMDhhY2I0NmU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBAIC0w
LDAgKzEsMTk4IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3Bl
biBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdl
bmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
ICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
CisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgiCisKKyNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAi
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIKKyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+
CisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKy8qIEhhc2ggdGFibGUgZm9yIGNvbnN0cnVjdG9yICovCisKK3N0
YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVGFi
bGVWYWx1ZXNbXSA9Cit7CisgICAgeyAiY29uc3RydWN0b3IiLCBEb250RW51bSB8IFJlYWRPbmx5
LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkwLCBOb0ludHJp
bnNpYyB9LAorICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQorfTsKKworc3RhdGljIGNv
bnN0IEhhc2hUYWJsZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVGFibGUgPSB7IDIsIDEs
IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUYWJsZVZhbHVlcywgMCB9OworLyogSGFzaCB0
YWJsZSBmb3IgY29uc3RydWN0b3IgKi8KKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQorewor
ICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQorfTsKKworc3RhdGljIGNvbnN0IEhhc2hU
YWJsZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3JUYWJsZSA9IHsgMSwg
MCwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yVGFibGVWYWx1ZXMsIDAg
fTsKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0
b3I6OnNfaW5mbyA9IHsgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IiLCAm
QmFzZTo6c19pbmZvLCAmSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yVGFi
bGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0Nv
bnN0cnVjdG9yKSB9OworCitKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6
OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICA6IERPTUNvbnN0cnVj
dG9yT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQoreworfQorCit2b2lkIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRl
KiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgQVNTRVJUKGluaGVyaXRzKCZz
X2luZm8pKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkucHJvdG90eXBlLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBl
OjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAg
cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0
aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKK30KKwor
Ym9vbCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNWYWx1
ZVNsb3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yLCBKU0RPTVdyYXBw
ZXI+KGV4ZWMsICZKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3JUYWJsZSwg
anNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KGNlbGwpLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitib29sIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0
b3I8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+
KGV4ZWMsICZKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3JUYWJsZSwganND
YXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwor
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKyAgICBj
b25zdCBTdHJpbmcmIHN0cmluZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZh
dWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJB
TUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM+IG9iamVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUo
c3RyaW5nKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhlYywg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKK30KKworQ29uc3Ry
dWN0VHlwZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmdldENvbnN0
cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBj
b25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQorCisvKiBIYXNo
IHRhYmxlIGZvciBwcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KK3sKKyAg
ICB7IDAsIDAsIDAsIDAsIE5vSW50cmluc2ljIH0KK307CisKK3N0YXRpYyBjb25zdCBIYXNoVGFi
bGUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZVRhYmxlID0geyAxLCAwLCBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlVGFibGVWYWx1ZXMsIDAgfTsKK2Nv
bnN0IENsYXNzSW5mbyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlOjpzX2lu
Zm8gPSB7ICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSIsICZCYXNlOjpzX2lu
Zm8sICZKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlVGFibGUsIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSkgfTsK
KworSlNPYmplY3QqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGU6OnNlbGYo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJl
dHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4oZXhlYywg
Z2xvYmFsT2JqZWN0KTsKK30KKworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM6OnNfaW5mbyA9IHsgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIiwgJkJhc2U6
OnNfaW5mbywgJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUYWJsZSwgMCAsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycykgfTsKKworSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0
cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbCkKKyAgICA6IEpTRE9NV3JhcHBlcihz
dHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKKyAgICAsIG1faW1wbChpbXBsLmxlYWtSZWYoKSkKK3sK
K30KKwordm9pZCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpmaW5pc2hDcmVhdGlvbihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xv
YmFsRGF0YSk7CisgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKK30KKworSlNPYmplY3Qq
IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZVByb3RvdHlwZShFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGU6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRh
KCksIGdsb2JhbE9iamVjdCwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKK30KKwordm9pZCBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQoreworICAgIEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6fkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoKTsK
K30KKworSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6fkpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMoKQoreworICAgIHJlbGVhc2VJbXBsSWZOb3ROdWxsKCk7Cit9CisKK2Jvb2wgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCit7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4oY2VsbCk7CisgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyAgICByZXR1cm4g
Z2V0U3RhdGljVmFsdWVTbG90PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMsIEJhc2U+KGV4
ZWMsICZKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVGFibGUsIHRoaXNPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7Cit9CisKK2Jvb2wgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQoreworICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KG9iamVjdCk7CisgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyAgICByZXR1cm4gZ2V0
U3RhdGljVmFsdWVEZXNjcmlwdG9yPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMsIEJhc2U+
KGV4ZWMsICZKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVGFibGUsIHRoaXNPYmplY3QsIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7Cit9CisKK0pTVmFsdWUganNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
UHJvcGVydHlOYW1lKQoreworICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGRvbU9i
amVjdCA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4oYXNPYmplY3Qoc2xv
dEJhc2UpKTsKKyAgICByZXR1cm4gSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Z2V0Q29u
c3RydWN0b3IoZXhlYywgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0pTVmFsdWUg
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Z2V0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01D
b25zdHJ1Y3RvcjxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I+KGV4ZWMs
IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworfQorCitzdGF0aWMg
aW5saW5lIGJvb2wgaXNPYnNlcnZhYmxlKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGpz
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpCit7CisgICAgaWYgKGpzVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMtPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtu
b3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKiBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID0ganND
YXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkp
OworICAgIGlmICghaXNPYnNlcnZhYmxlKGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKwordm9pZCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzT3duZXI6
OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0
KQoreworICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGpzVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KGhhbmRs
ZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCA9IHN0YXRpY19j
YXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxk
LCBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLT5pbXBsKCksIGpzVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMpOworICAgIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMtPnJlbGVhc2VJ
bXBsKCk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyog
aW1wbCkKK3sKKyAgICByZXR1cm4gd3JhcDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPihl
eGVjLCBnbG9iYWxPYmplY3QsIGltcGwpOworfQorCitUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cyogdG9UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhKU0M6OkpTVmFsdWUgdmFsdWUpCit7Cisg
ICAgcmV0dXJuIHZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpz
X2luZm8pID8ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihhc09iamVjdCh2
YWx1ZSkpLT5pbXBsKCkgOiAwOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NmJlOWM4OTZiYjM3OThjNzVjNGYzZDkyYzQ1MmVj
NWZiZTFiNjBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaApAQCAtMCwwICsxLDE0
MyBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNl
IHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1i
aW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNfaAorI2RlZmluZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzX2gKKwor
I2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIlRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmgiCisjaW5jbHVkZSA8cnVudGltZS9KU0dsb2JhbE9iamVjdC5oPgorI2luY2x1ZGUg
PHJ1bnRpbWUvSlNPYmplY3QuaD4KKyNpbmNsdWRlIDxydW50aW1lL09iamVjdFByb3RvdHlwZS5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMgOiBwdWJsaWMgSlNET01XcmFwcGVyIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRE9N
V3JhcHBlciBCYXNlOworICAgIHN0YXRpYyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBj
cmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUGFzc1JlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbCkKKyAg
ICB7CisgICAgICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHB0ciA9IG5ldyAoTm90
TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4oZ2xv
YmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkuaGVhcCkpIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIGltcGwpOworICAgICAgICBwdHItPmZpbmlzaENy
ZWF0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIHB0cjsK
KyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDOjpKU0NlbGwqKTsKKyAgICB+SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycygpOwor
ICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CisKKyAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFs
RGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6
OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CisgICAgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGltcGwoKSBjb25zdCB7IHJl
dHVybiBtX2ltcGw7IH0KKyAgICB2b2lkIHJlbGVhc2VJbXBsKCkgeyBtX2ltcGwtPmRlcmVmKCk7
IG1faW1wbCA9IDA7IH0KKworICAgIHZvaWQgcmVsZWFzZUltcGxJZk5vdE51bGwoKSB7IGlmICht
X2ltcGwpIHsgbV9pbXBsLT5kZXJlZigpOyBtX2ltcGwgPSAwOyB9IH0KKworcHJpdmF0ZToKKyAg
ICBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogbV9pbXBsOworcHJvdGVjdGVkOgorICAgIEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9i
amVjdCosIFBhc3NSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+KTsKKyAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKEpTQzo6SlNHbG9iYWxEYXRhJik7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJ
c05vdFplcm8gfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKK307CisKK2NsYXNzIEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7Cisg
ICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4
dCk7Cit9OworCitpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01X
cmFwcGVyV29ybGQqLCBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyopCit7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzT3duZXIsIGpzVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNPd25lciwgKCkpOworICAgIHJldHVybiAmanNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc093bmVyOworfQorCitpbmxpbmUgdm9pZCogd3JhcHBlckNvbnRleHQo
RE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqKQorewor
ICAgIHJldHVybiB3b3JsZDsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
LCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKik7CitUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdG9UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhKU0M6
OkpTVmFsdWUpOworCitjbGFzcyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBl
IDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBK
U0M6OkpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogc2Vs
ZihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSogY3JlYXRlKEpTQzo6SlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGU+KGdsb2JhbERhdGEuaGVhcCkp
IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUoZ2xvYmFsRGF0YSwgZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbERh
dGEpOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBKU0M6
OkNsYXNzSW5mbyBzX2luZm87CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAm
c19pbmZvKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc1Byb3RvdHlwZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpIDogSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkgeyB9Citwcm90ZWN0ZWQ6CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7Cit9Owor
CitjbGFzcyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IgOiBwdWJsaWMg
RE9NQ29uc3RydWN0b3JPYmplY3QgeworcHJpdmF0ZToKKyAgICBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCop
OworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9i
amVjdCopOworCitwdWJsaWM6CisgICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNl
OworICAgIHN0YXRpYyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqIGNy
ZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICB7CisgICAgICAgIEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFs
bG9jYXRlQ2VsbDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I+KCpleGVj
LT5oZWFwKCkpKSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3Ioc3RydWN0
dXJlLCBnbG9iYWxPYmplY3QpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGds
b2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIGNv
bnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksICZzX2luZm8pOworICAgIH0KK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IEpTQzo6SW1wbGVtZW50c0hhc0luc3RhbmNlIHwgRE9NQ29uc3RydWN0b3JPYmplY3Q6OlN0cnVj
dHVyZUZsYWdzOworICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhKU0M6OkV4ZWNTdGF0ZSopOwor
ICAgIHN0YXRpYyBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2Vs
bCosIEpTQzo6Q29uc3RydWN0RGF0YSYpOworfTsKKworLy8gQXR0cmlidXRlcworCitKU0M6OkpT
VmFsdWUganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTViN2JjNTdkYTdiMTZkZjczNGZiYWE2NzVkZjYyYjdj
ODFiYjFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaApAQCAtMCwwICsxLDM0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAy
MDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8
V2ViQ29yZS9ET01PYmplY3QuaD4KKworI2lmIFdFQktJVF9WRVJTSU9OX01BWF9BTExPV0VEID49
IFdFQktJVF9WRVJTSU9OX0xBVEVTVAorCitAaW50ZXJmYWNlIERPTVRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzIDogRE9NT2JqZWN0CitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDI5YmIyYmY3ZWE4
MGE2MTQ1NTk0OTRjZjZjNzhjMWQ1ODFkMmM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMubW0KQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5l
cmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKKworI2ltcG9ydCAiRE9N
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIKKworI2ltcG9ydCAiRE9NQmxvYkludGVybmFs
LmgiCisjaW1wb3J0ICJET01DU1NSdWxlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTUNTU1ZhbHVl
SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTUV2ZW50SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTU5v
ZGVJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NU3R5bGVTaGVldEludGVybmFsLmgiCisjaW1wb3J0
ICJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0ludGVybmFsLmgiCisjaW1wb3J0ICJFeGNl
cHRpb25IYW5kbGVycy5oIgorI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW1w
b3J0ICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIgorI2ltcG9ydCAiVGhyZWFkQ2hlY2su
aCIKKyNpbXBvcnQgIldlYkNvcmVPYmpDRXh0cmFzLmgiCisjaW1wb3J0ICJXZWJTY3JpcHRPYmpl
Y3RQcml2YXRlLmgiCisjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisKKyNkZWZpbmUgSU1QTCByZWlu
dGVycHJldF9jYXN0PFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4oX2ludGVy
bmFsKQorCitAaW1wbGVtZW50YXRpb24gRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMKKwor
LSAodm9pZClkZWFsbG9jCit7CisgICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9jYXRl
T25NYWluVGhyZWFkKFtET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyBjbGFzc10sIHNlbGYp
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoX2ludGVybmFsKQorICAgICAgICBJTVBMLT5k
ZXJlZigpOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZClmaW5hbGl6ZQorewor
ICAgIGlmIChfaW50ZXJuYWwpCisgICAgICAgIElNUEwtPmRlcmVmKCk7CisgICAgW3N1cGVyIGZp
bmFsaXplXTsKK30KKworQGVuZAorCitXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cyogY29yZShET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyAqd3JhcHBlcikKK3sKKyAgICBy
ZXR1cm4gd3JhcHBlciA/IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMqPih3cmFwcGVyLT5faW50ZXJuYWwpIDogMDsKK30KKworRE9NVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMgKmtpdChXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cyogdmFsdWUpCit7CisgICAgeyBET01fQVNTRVJUX01BSU5fVEhSRUFEKCk7IFdlYkNvcmVUaHJl
YWRWaW9sYXRpb25DaGVja1JvdW5kT25lKCk7IH07CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAg
cmV0dXJuIG5pbDsKKyAgICBpZiAoRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgKndyYXBw
ZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRh
aW5dIGF1dG9yZWxlYXNlXTsKKyAgICBET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyAqd3Jh
cHBlciA9IFtbRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgYWxsb2NdIF9pbml0XTsKKyAg
ICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFs
Kj4odmFsdWUpOworICAgIHZhbHVlLT5yZWYoKTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIs
IHZhbHVlKTsKKyAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L09iakMvRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNJbnRlcm5hbC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjhmZWNjODFjMzk2YmQwYTgyNWRhN2FiYjAxMWYyYzU2NzJhNmI0ZWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0ludGVybmFsLmgKQEAgLTAsMCArMSwzOCBAQAor
LyoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVj
dC4KKyAqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3Mu
cGwuIERPIE5PVCBNT0RJRlkhCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuaD4KKworI2lmIFdFQktJVF9WRVJTSU9OX01BWF9BTExPV0VEID49
IFdFQktJVF9WRVJTSU9OX0xBVEVTVAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3Mg
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM7Cit9CisKK1dlYkNvcmU6OlRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzKiBjb3JlKERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzICopOworRE9N
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgKmtpdChXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycyopOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
aWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZhMzg2ZjViOTdiZGQyMjZjMTkxMTE1MDkxYjAwYjkwZDM5MjdkZDcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaWRsCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zdHJBcmcs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFc3RyQXJnLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
K1sKKyAgICBDb25zdHJ1Y3RvcihpbiBBcnJheUJ1ZmZlciBhcnJheUJ1ZmZlciksCisgICAgQ29u
c3RydWN0b3IoaW4gQXJyYXlCdWZmZXJWaWV3IGFycmF5QnVmZmVyVmlldyksCisgICAgQ29uc3Ry
dWN0b3IoaW4gQmxvYiBibG9iKSwKKyAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgc3RyaW5n
KSwKK10gaW50ZXJmYWNlIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIHsKK307CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5pZGwKaW5kZXggYzZkNDkz
ZGVmZjQwYzkyNDgzOWRjNDVlOWVlOWZiMzUyNjBlZTEzNi4uNjg3ZWFjNTQ3NzEzNTZmNjAxMmVl
Nzc3OThjMjJjYzAwMDM4NzYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlLmlkbApAQCAtMjcsNyArMjcsNiBAQAogLy8gY2hhbmdlcyBpbiBpdHMg
b3VwdXQuCiBbCiAgICAgQ29uZGl0aW9uYWw9Q29uZGl0aW9uMXxDb25kaXRpb24yLAotICAgIENv
bnN0cnVjdG9yKGluIERPTVN0cmluZyBoZWxsbywgaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIHZh
bHVlKSwKICAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgaGVsbG8sIGluIFtUcmFuc2Zlckxp
c3Q9dHJhbnNmZXJMaXN0XSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgZGF0YSwgaW4gW09wdGlvbmFs
PURlZmF1bHRJc1VuZGVmaW5lZF0gQXJyYXkgdHJhbnNmZXJMaXN0KSwKIF0gaW50ZXJmYWNlIFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgewogICAgIGF0dHJpYnV0ZSBTZXJpYWxp
emVkU2NyaXB0VmFsdWUgdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDI1NDc2YzFkMTQxMzg4N2U0Y2MyMWJhY2VkNzVhNDA1
OThkMmFjYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtMCwwICsxLDIx
MiBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNl
IHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1i
aW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAgICBCb3N0b24s
IE1BIDAyMTExLTEzMDcsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgiCisKKyNpbmNsdWRlICJCaW5kaW5nU3Rh
dGUuaCIKKyNpbmNsdWRlICJDb250ZXh0RmVhdHVyZXMuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmgiCisjaW5jbHVkZSAiVjhBcnJheUJ1ZmZlci5oIgorI2luY2x1ZGUgIlY4QXJyYXlCdWZm
ZXJWaWV3LmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhCbG9iLmgiCisj
aW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCisjaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+Cisj
aW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyVmlldy5oPgorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJh
bS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dyYXBwZXJUeXBlSW5mbyBWOFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjppbmZvID0geyBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
OjpHZXRUZW1wbGF0ZSwgVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6ZGVyZWZPYmplY3Qs
IDAsIDAsIFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6Omluc3RhbGxQZXJDb250ZXh0UHJv
dG90eXBlUHJvcGVydGllcywgMCwgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUgfTsKKworbmFt
ZXNwYWNlIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVjhJbnRlcm5hbCB7CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPiB2b2lkIFY4X1VTRShUKSB7IH0KKworfSAvLyBuYW1lc3BhY2UgVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNWOEludGVybmFsCisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjFDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLkNvbnN0cnVjdG9yMSIpOworICAgIAorICAgIEVYQ0VQVElPTl9CTE9DSyhB
cnJheUJ1ZmZlciosIGFycmF5QnVmZmVyLCBWOEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZShNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSA/IFY4QXJy
YXlCdWZmZXI6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoTUFZQkVfTUlT
U0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpIDogMCk7CisKKyAg
ICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGltcGwgPSBUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6Y3JlYXRlKGFycmF5QnVmZmVyKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOworCisgICAgVjhET01XcmFwcGVyOjpzZXRE
T01XcmFwcGVyKHdyYXBwZXIsICZpbmZvLCBpbXBsLmdldCgpKTsKKyAgICBWOERPTVdyYXBwZXI6
OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChpbXBsLnJlbGVhc2UoKSwgd3JhcHBlciwgYXJncy5H
ZXRJc29sYXRlKCkpOworICAgIHJldHVybiB3cmFwcGVyOworfQorCit2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3IyQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5Db25zdHJ1Y3RvcjIiKTsKKyAgICAKKyAgICBFWENFUFRJT05f
QkxPQ0soQXJyYXlCdWZmZXJWaWV3KiwgYXJyYXlCdWZmZXJWaWV3LCBWOEFycmF5QnVmZmVyVmll
dzo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElz
VW5kZWZpbmVkKSkgPyBWOEFycmF5QnVmZmVyVmlldzo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6
T2JqZWN0Pjo6Q2FzdChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNV
bmRlZmluZWQpKSkgOiAwKTsKKworICAgIFJlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cz4gaW1wbCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoYXJyYXlCdWZmZXJW
aWV3KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigp
OworCisgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKHdyYXBwZXIsICZpbmZvLCBpbXBs
LmdldCgpKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChpbXBs
LnJlbGVhc2UoKSwgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB3cmFw
cGVyOworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yczo6Y29uc3RydWN0b3IzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sK
KyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5Db25zdHJ1Y3Rv
cjMiKTsKKyAgICAKKyAgICBFWENFUFRJT05fQkxPQ0soQmxvYiosIGJsb2IsIFY4QmxvYjo6SGFz
SW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZp
bmVkKSkgPyBWOEJsb2I6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoTUFZ
QkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpIDogMCk7
CisKKyAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGltcGwgPSBUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKGJsb2IpOworICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CisKKyAgICBWOERPTVdyYXBwZXI6OnNldERP
TVdyYXBwZXIod3JhcHBlciwgJmluZm8sIGltcGwuZ2V0KCkpOworICAgIFY4RE9NV3JhcHBlcjo6
c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltcGwucmVsZWFzZSgpLCB3cmFwcGVyLCBhcmdzLkdl
dElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHdyYXBwZXI7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjRDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLkNvbnN0cnVjdG9yNCIpOworICAgIAorICAgIFNUUklOR19UT19W
OFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8Piwgc3RyaW5nLCBNQVlCRV9N
SVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKKworICAgIFJl
ZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbCA9IFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzOjpjcmVhdGUoc3RyaW5nKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXBwZXIgPSBhcmdzLkhvbGRlcigpOworCisgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVy
KHdyYXBwZXIsICZpbmZvLCBpbXBsLmdldCgpKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldEpTV3Jh
cHBlckZvckRPTU9iamVjdChpbXBsLnJlbGVhc2UoKSwgd3JhcHBlciwgYXJncy5HZXRJc29sYXRl
KCkpOworICAgIHJldHVybiB3cmFwcGVyOworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLkNvbnN0cnVjdG9yIik7CisgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgp
KQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3Ig
Y2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIpOworCisgICAgaWYgKENvbnN0cnVjdG9y
TW9kZTo6Y3VycmVudCgpID09IENvbnN0cnVjdG9yTW9kZTo6V3JhcEV4aXN0aW5nT2JqZWN0KQor
ICAgICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKKworICAgIGlmICgoYXJncy5MZW5ndGgoKSA9
PSAxICYmIChWOEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZShhcmdzWzBdKSkpKQorICAgICAgICBy
ZXR1cm4gY29uc3RydWN0b3IxQ2FsbGJhY2soYXJncyk7CisgICAgaWYgKChhcmdzLkxlbmd0aCgp
ID09IDEgJiYgKFY4QXJyYXlCdWZmZXJWaWV3OjpIYXNJbnN0YW5jZShhcmdzWzBdKSkpKQorICAg
ICAgICByZXR1cm4gY29uc3RydWN0b3IyQ2FsbGJhY2soYXJncyk7CisgICAgaWYgKChhcmdzLkxl
bmd0aCgpID09IDEgJiYgKFY4QmxvYjo6SGFzSW5zdGFuY2UoYXJnc1swXSkpKSkKKyAgICAgICAg
cmV0dXJuIGNvbnN0cnVjdG9yM0NhbGxiYWNrKGFyZ3MpOworICAgIGlmIChhcmdzLkxlbmd0aCgp
ID09IDEpCisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjRDYWxsYmFjayhhcmdzKTsKKyAgICBp
ZiAoYXJncy5MZW5ndGgoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
MCwgYXJncy5HZXRJc29sYXRlKCkpOworfQorCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUZW1w
bGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYykKK3sKKyAgICBk
ZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOworCisgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+
IGRlZmF1bHRTaWduYXR1cmU7CisgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJh
dGlvbjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
Iiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6OmludGVybmFsRmllbGRDb3VudCwKKyAgICAgICAgMCwgMCwKKyAgICAg
ICAgMCwgMCk7CisgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21l
IGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgorICAgIGRlc2MtPlNldENhbGxIYW5kbGVyKFY4
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOworICAgIAor
CisgICAgLy8gQ3VzdG9tIHRvU3RyaW5nIHRlbXBsYXRlCisgICAgZGVzYy0+U2V0KHY4OjpTdHJp
bmc6Ok5ld1N5bWJvbCgidG9TdHJpbmciKSwgVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT50
b1N0cmluZ1RlbXBsYXRlKCkpOworICAgIHJldHVybiBkZXNjOworfQorCit2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6R2V0
UmF3VGVtcGxhdGUoKQoreworICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xh
dGVEYXRhOjpjdXJyZW50KCk7CisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0
ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CisgICAg
aWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgICAgICByZXR1
cm4gcmVzdWx0LT52YWx1ZTsKKworICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKyAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPSBjcmVhdGVSYXdU
ZW1wbGF0ZSgpOworICAgIGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7
CisgICAgcmV0dXJuIHRlbXBsOworfQorCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6R2V0VGVtcGxhdGUoKQoreworICAg
IFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCk7Cisg
ICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEt
PnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1w
bGF0ZU1hcCgpLmVuZCgpKQorICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKKworICAgIHY4
OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gdGVtcGwgPQorICAgICAgICBDb25maWd1cmVWOFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzVGVtcGxhdGUoR2V0UmF3VGVtcGxhdGUoKSk7CisgICAgZGF0YS0+dGVtcGxhdGVN
YXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICByZXR1cm4gdGVtcGw7Cit9CisKK2Jvb2wgVjhU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHZhbHVlKQoreworICAgIHJldHVybiBHZXRSYXdUZW1wbGF0ZSgpLT5IYXNJbnN0YW5jZSh2
YWx1ZSk7Cit9CisKKwordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzOjp3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
PiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUpCit7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyOworICAg
IC8vIFBsZWFzZSBkb24ndCBhZGQgYW55IG1vcmUgdXNlcyBvZiB0aGlzIHZhcmlhYmxlLgorICAg
IERvY3VtZW50KiBkZXByZWNhdGVkRG9jdW1lbnQgPSAwOworICAgIFVOVVNFRF9QQVJBTShkZXBy
ZWNhdGVkRG9jdW1lbnQpOworCisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dDsK
KyAgICBpZiAoIWNyZWF0aW9uQ29udGV4dC5Jc0VtcHR5KCkgJiYgY3JlYXRpb25Db250ZXh0LT5D
cmVhdGlvbkNvbnRleHQoKSAhPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpKSB7CisgICAgICAg
IC8vIEZvciBwZXJmb3JtYW5jZSwgd2UgZW50ZXIgdGhlIGNvbnRleHQgb25seSBpZiB0aGUgY3Vy
cmVudGx5IHJ1bm5pbmcgY29udGV4dAorICAgICAgICAvLyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUg
Y29udGV4dCB0aGF0IHdlIGFyZSBhYm91dCB0byBlbnRlci4KKyAgICAgICAgY29udGV4dCA9IHY4
OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyhjcmVhdGlvbkNvbnRleHQtPkNyZWF0aW9uQ29udGV4
dCgpKTsKKyAgICAgICAgQVNTRVJUKCFjb250ZXh0LklzRW1wdHkoKSk7CisgICAgICAgIGNvbnRl
eHQtPkVudGVyKCk7CisgICAgfQorCisgICAgd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFu
dGlhdGVWOE9iamVjdChkZXByZWNhdGVkRG9jdW1lbnQsICZpbmZvLCBpbXBsLmdldCgpKTsKKwor
ICAgIGlmICghY29udGV4dC5Jc0VtcHR5KCkpCisgICAgICAgIGNvbnRleHQtPkV4aXQoKTsKKwor
ICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCisgICAgICAgIHJldHVybiB3cmFw
cGVyOworCisgICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0
KCkpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERP
TVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChpbXBsLCB3cmFwcGVyLCBpc29sYXRl
KTsKKyAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQorICAgICAgICB3cmFwcGVySGFuZGxl
Lk1hcmtJbmRlcGVuZGVudCgpOworICAgIHJldHVybiB3cmFwcGVyOworfQorCit2b2lkIFY4VGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmRlcmVmT2JqZWN0KHZvaWQqIG9iamVjdCkKK3sKKyAg
ICBzdGF0aWNfY2FzdDxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KG9iamVjdCktPmRlcmVm
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2NDUzMDRiODdlMmQwY2QzZWMzZjIzMjU2
ZWQ2NjkxMGYzY2I3NjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCkBAIC0wLDAg
KzEsODAgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNv
dXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJh
dGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
ICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgICAgQm9z
dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisqLworCisjaWZuZGVmIFY4VGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNfaAorI2RlZmluZSBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzX2gKKwor
I2luY2x1ZGUgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgiCisjaW5jbHVkZSAiVjhCaW5k
aW5nLmgiCisjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCisjaW5jbHVkZSAiV3JhcHBlclR5cGVJ
bmZvLmgiCisjaW5jbHVkZSA8djguaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29u
c3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IGZhbHNlOworICAgIHN0YXRpYyBib29sIEhh
c0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPik7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRSYXdUZW1wbGF0ZSgpOworICAgIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUoKTsKKyAgICBz
dGF0aWMgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gb2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihvYmplY3QtPkdldFBvaW50ZXJGcm9tSW50ZXJu
YWxGaWVsZCh2OERPTVdyYXBwZXJPYmplY3RJbmRleCkpOworICAgIH0KKyAgICBpbmxpbmUgc3Rh
dGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cyosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogPSAwKTsKKyAgICBzdGF0aWMgdm9pZCBkZXJlZk9i
amVjdCh2b2lkKik7CisgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyBpbmZvOworICAgIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJik7CisgICAgc3RhdGljIGNvbnN0IGludCBpbnRlcm5hbEZpZWxkQ291bnQgPSB2OERl
ZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKKyAgICBzdGF0aWMgdm9pZCBpbnN0
YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMqKSB7IH0KKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4
dFByb3RvdHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PikgeyB9Citwcml2YXRl
OgorICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBTbG93KFBhc3NSZWZQdHI8
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGNvbnN0cnVjdG9yMUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKKyAgICBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yMkNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmKTsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9y
M0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGNvbnN0cnVjdG9yNENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKK307
CisKK3Y4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
d3JhcChUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNv
bGF0ZSktPmdldChpbXBsKTsKKyAgICAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAg
ICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiBWOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjp3cmFwU2xvdyhpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCitp
bmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCit7CisgICAgaWYg
KCFpbXBsKQorICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOworICAgIHJl
dHVybiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp3cmFwKGltcGwsIGNyZWF0aW9uQ29u
dGV4dCwgaXNvbGF0ZSk7Cit9CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoUGFz
c1JlZlB0cjwgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPiBpbXBsLCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQoreworICAgIHJldHVybiB0b1Y4KGltcGwuZ2V0KCksIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKK30KKworI2VuZGlmIC8vIFY4VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAKaW5kZXggYTVkZTlhNDIzYWViNTFkNmE0
YWE5NDIwNDI4NzFmYjVlOGYyNzkyNi4uOWM0ZmM3ZmExNjIxODY5ZjYxZjhlYzViMGEwMzgyOWM5
ZWY4YWYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
V2ViU29ja2V0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwCkBAIC01MSw2NCArNTEsNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYlNvY2tldDo6Y29uc3RydWN0
b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygi
RE9NLldlYlNvY2tldC5Db25zdHJ1Y3RvciIpOwotCi0gICAgaWYgKCFhcmdzLklzQ29uc3RydWN0
Q2FsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoIkRPTSBvYmplY3QgY29uc3Ry
dWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIsIGFyZ3MuR2V0SXNvbGF0ZSgp
KTsKLQotICAgIGlmIChDb25zdHJ1Y3Rvck1vZGU6OmN1cnJlbnQoKSA9PSBDb25zdHJ1Y3Rvck1v
ZGU6OldyYXBFeGlzdGluZ09iamVjdCkKLSAgICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7Ci0K
LSAgICBpZiAoYXJncy5MZW5ndGgoKSA9PSAwKQotICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7Ci0KLSAgICB2ODo6VHJ5Q2F0Y2gg
dHJ5Q2F0Y2g7Ci0gICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiB1cmxzdHJpbmcgPSBhcmdzWzBd
LT5Ub1N0cmluZygpOwotICAgIGlmICh0cnlDYXRjaC5IYXNDYXVnaHQoKSkKLSAgICAgICAgcmV0
dXJuIHRocm93RXJyb3IodHJ5Q2F0Y2guRXhjZXB0aW9uKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsK
LSAgICBpZiAodXJsc3RyaW5nLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
U3ludGF4RXJyb3IsICJFbXB0eSBVUkwiLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0KLSAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OwotICAgIGNvbnN0IEtVUkwmIHVybCA9IGNvbnRleHQtPmNvbXBsZXRlVVJMKHRvV2ViQ29yZVN0
cmluZyh1cmxzdHJpbmcpKTsKLQotICAgIFJlZlB0cjxXZWJTb2NrZXQ+IHdlYlNvY2tldCA9IFdl
YlNvY2tldDo6Y3JlYXRlKGNvbnRleHQpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotCi0g
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQotICAgICAgICB3ZWJTb2NrZXQtPmNvbm5lY3QodXJs
LCBlYyk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHByb3RvY29s
c1ZhbHVlID0gYXJnc1sxXTsKLSAgICAgICAgaWYgKHByb3RvY29sc1ZhbHVlLT5Jc0FycmF5KCkp
IHsKLSAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHByb3RvY29sczsKLSAgICAgICAgICAgIHY4
OjpMb2NhbDx2ODo6QXJyYXk+IHByb3RvY29sc0FycmF5ID0gdjg6OkxvY2FsPHY4OjpBcnJheT46
OkNhc3QocHJvdG9jb2xzVmFsdWUpOwotICAgICAgICAgICAgZm9yICh1aW50MzJfdCBpID0gMDsg
aSA8IHByb3RvY29sc0FycmF5LT5MZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdjg6
OlRyeUNhdGNoIHRyeUNhdGNoUHJvdG9jb2w7Ci0gICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2
ODo6U3RyaW5nPiBwcm90b2NvbCA9IHByb3RvY29sc0FycmF5LT5HZXQodjg6OkludDMyOjpOZXco
aSkpLT5Ub1N0cmluZygpOwotICAgICAgICAgICAgICAgIGlmICh0cnlDYXRjaFByb3RvY29sLkhh
c0NhdWdodCgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih0cnlDYXRj
aFByb3RvY29sLkV4Y2VwdGlvbigpLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgICAgICAgICAg
ICAgcHJvdG9jb2xzLmFwcGVuZCh0b1dlYkNvcmVTdHJpbmcocHJvdG9jb2wpKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHdlYlNvY2tldC0+Y29ubmVjdCh1cmwsIHByb3RvY29scywgZWMp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoUHJv
dG9jb2w7Ci0gICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHByb3RvY29sID0gcHJv
dG9jb2xzVmFsdWUtPlRvU3RyaW5nKCk7Ci0gICAgICAgICAgICBpZiAodHJ5Q2F0Y2hQcm90b2Nv
bC5IYXNDYXVnaHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih0cnlDYXRj
aFByb3RvY29sLkV4Y2VwdGlvbigpLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgICAgICAgICB3
ZWJTb2NrZXQtPmNvbm5lY3QodXJsLCB0b1dlYkNvcmVTdHJpbmcocHJvdG9jb2wpLCBlYyk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0
aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0KLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBl
cih3cmFwcGVyLCAmaW5mbywgd2ViU29ja2V0LmdldCgpKTsKLSAgICBWOERPTVdyYXBwZXI6OnNl
dEpTV3JhcHBlckZvckRPTU9iamVjdCh3ZWJTb2NrZXQucmVsZWFzZSgpLCB3cmFwcGVyKTsKLSAg
ICByZXR1cm4gd3JhcHBlcjsKLX0KLQogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViU29ja2V0
OjpzZW5kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RB
VFMoIkRPTS5XZWJTb2NrZXQuc2VuZCgpIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTg0OGQ3NTllZmFmNzIyYzBiNzE4
NjlkZmE1YjM5MjUzMjI2ZGIzNi4uYjA2NDM3ZGI3ZGNjNDlhYTZiZDZiMGI1MmQxNWIyMDE5M2U5
MGU3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTExLTAxICBUb21teSBXaWRlbmZseWNo
dCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgVjggY3VzdG9tIGNv
ZGUgZm9yIFdlYlNvY2tldHMgY29uc3RydWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDgwMQorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbnRh
cm8gSGFyYS4KKworICAgICAgICBBZGRlZCB0ZXN0IGZvciBudWxsIGFyZ3VtZW50IHRvIFdlYlNv
Y2tldCh1cmwpLgorCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91
cmwtcGFyc2luZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS91cmwtcGFyc2luZy5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
LXdpbi93ZWJzb2NrZXQvdGVzdHMvdXJsLXBhcnNpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYvdXJs
LXBhcnNpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXBhcnNpbmctZXhwZWN0ZWQudHh0OgorCiAy
MDEyLTExLTEyICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IHdhc1Nob3duIGlzIGNhbGxlZCB0d2ljZSB3aGVuIHNob3coKSBp
cyBjYWxsZWQgZnJvbSB3aXRoaW4gd2FzU2hvd24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXBhcnNpbmctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtcGFyc2luZy1l
eHBlY3RlZC50eHQKaW5kZXggOWQwYzUxODliMDRjMjVmYWU0NTBmZmUzZjA3MDkyYTU5NjFiYjRi
MS4uZThhNzRlMjA5MzRmZjIwN2NjZGU2MmY3MGYzODA1MTQ3ZmExMWRmOCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtcGFyc2luZy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS91cmwtcGFyc2luZy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw0IEBACitDT05TT0xFIE1F
U1NBR0U6IEludmFsaWQgdXJsIGZvciBXZWJTb2NrZXQgbnVsbAogQ09OU09MRSBNRVNTQUdFOiBJ
bnZhbGlkIHVybCBmb3IgV2ViU29ja2V0IHdzOi8vamF2YXNjcmlwdDphCiBDT05TT0xFIE1FU1NB
R0U6IEludmFsaWQgdXJsIGZvciBXZWJTb2NrZXQgL2FwcGxldAogQ09OU09MRSBNRVNTQUdFOiBX
cm9uZyB1cmwgc2NoZW1lIGZvciBXZWJTb2NrZXQgamF2YXNjcmlwdDphCkBAIC05LDYgKzEwLDcg
QEAgVGVzdCBXZWJTb2NrZXQgVVJMIHBhcnNpbmcuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CiAKIFBBU1MgbmV3IFdlYlNvY2tldCgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBl
bm91Z2ggYXJndW1lbnRzLgorUEFTUyBuZXcgV2ViU29ja2V0KG51bGwpIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KIFBBU1MgbmV3IFdlYlNvY2tl
dCgid3M6Ly9qYXZhc2NyaXB0OmEiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6
IERPTSBFeGNlcHRpb24gMTIuCiBQQVNTIG5ldyBXZWJTb2NrZXQoIi9hcHBsZXQiKSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCiBQQVNTIG5ldyBX
ZWJTb2NrZXQoImphdmFzY3JpcHQ6YSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VS
UjogRE9NIEV4Y2VwdGlvbiAxMi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXBhcnNpbmcuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXBhcnNpbmcuaHRtbAppbmRleCA3M2QzNjhi
ZGM3MjhiNzUyODI5MzY5OTBhZDZkZjg1NWRjNTk1MjA5Li40NDEzMmY3MjdlZDMyYTgzOGI0NTM3
OGEzOGZhN2JkNjY5ZDY1NGI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3VybC1wYXJzaW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtcGFyc2luZy5odG1sCkBAIC0xMiw2ICsx
Miw5IEBAIGRlc2NyaXB0aW9uKCJUZXN0IFdlYlNvY2tldCBVUkwgcGFyc2luZy4iKTsKIC8vIE5v
dCBlbm91Z2ggYXJndW1lbnRzLgogc2hvdWxkVGhyb3coJ25ldyBXZWJTb2NrZXQoKScpOwogCisv
LyBOdWxsIFVSTAorc2hvdWxkVGhyb3coJ25ldyBXZWJTb2NrZXQobnVsbCknKTsKKwogLy8gSW52
YWxpZCB1cmwgd2lsbCBmYWlsIHRvIGJlIHBhcnNlZC4KIHNob3VsZFRocm93KCduZXcgV2ViU29j
a2V0KCJ3czovL2phdmFzY3JpcHQ6YSIpJyk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtLXdpbi93ZWJzb2NrZXQvdGVzdHMvdXJsLXBhcnNpbmctZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL3dlYnNvY2tldC90ZXN0cy91
cmwtcGFyc2luZy1leHBlY3RlZC50eHQKaW5kZXggODg3NWVkYjM5OWU0MTRlMGRiN2I4NzkwOTE2
YmRmOWUwYjIzMmVjZi4uMWU5NWU0NGUzYjg2NDAwMWNhYjQwMTM4YmM4MmZhZTY4MjI1MDYzZiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL3dlYnNvY2tldC90
ZXN0cy91cmwtcGFyc2luZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0td2luL3dlYnNvY2tldC90ZXN0cy91cmwtcGFyc2luZy1leHBlY3RlZC50eHQKQEAg
LTEsMyArMSw0IEBACitDT05TT0xFIE1FU1NBR0U6IFdyb25nIHVybCBzY2hlbWUgZm9yIFdlYlNv
Y2tldCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbnVsbAogQ09O
U09MRSBNRVNTQUdFOiBJbnZhbGlkIHVybCBmb3IgV2ViU29ja2V0IHdzOi8vamF2YXNjcmlwdDph
LwogQ09OU09MRSBNRVNTQUdFOiBXcm9uZyB1cmwgc2NoZW1lIGZvciBXZWJTb2NrZXQgaHR0cDov
LzEyNy4wLjAuMTo4ODgwL2FwcGxldAogQ09OU09MRSBNRVNTQUdFOiBXcm9uZyB1cmwgc2NoZW1l
IGZvciBXZWJTb2NrZXQgamF2YXNjcmlwdDphCkBAIC04LDYgKzksNyBAQCBUZXN0IFdlYlNvY2tl
dCBVUkwgcGFyc2luZy4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCitQQVNTIG5ldyBX
ZWJTb2NrZXQobnVsbCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhj
ZXB0aW9uIDEyLgogUEFTUyBuZXcgV2ViU29ja2V0KCJ3czovL2phdmFzY3JpcHQ6YSIpIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KIFBBU1MgbmV3
IFdlYlNvY2tldCgiL2FwcGxldCIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjog
RE9NIEV4Y2VwdGlvbiAxMi4KIFBBU1MgbmV3IFdlYlNvY2tldCgiamF2YXNjcmlwdDphIikgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaGl4aWU3Ni91cmwtcGFyc2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3VybC1wYXJz
aW5nLWV4cGVjdGVkLnR4dAppbmRleCA5MTk1ZWFlMDNmMTAzMzJlMjI3N2Y0MGYwZWQ4YjhiZDUy
OGNlNGQ0Li5iNTBlMDRkZmQ4OTAzMWYxNWE5NTkzZmZjODQ5NGQ0NjYyMzFkYmY5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oaXhpZTc2L3VybC1wYXJzaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3VybC1w
YXJzaW5nLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDQgQEAKK0NPTlNPTEUgTUVTU0FHRTogV3Jv
bmcgdXJsIHNjaGVtZSBmb3IgV2ViU29ja2V0IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9udWxsCiBDT05TT0xFIE1FU1NBR0U6IEludmFsaWQgdXJsIGZvciBXZWJT
b2NrZXQgd3M6Ly9qYXZhc2NyaXB0OmEvCiBDT05TT0xFIE1FU1NBR0U6IFdyb25nIHVybCBzY2hl
bWUgZm9yIFdlYlNvY2tldCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvYXBwbGV0CiBDT05TT0xFIE1F
U1NBR0U6IFdyb25nIHVybCBzY2hlbWUgZm9yIFdlYlNvY2tldCBqYXZhc2NyaXB0OmEKQEAgLTks
NiArMTAsNyBAQCBUZXN0IFdlYlNvY2tldCBVUkwgcGFyc2luZy4KIE9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KIAogUEFTUyBuZXcgV2ViU29ja2V0KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogTm90IGVub3VnaCBhcmd1bWVudHMuCitQQVNTIG5ldyBXZWJTb2NrZXQobnVsbCkgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgogUEFTUyBuZXcg
V2ViU29ja2V0KCJ3czovL2phdmFzY3JpcHQ6YSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lO
VEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KIFBBU1MgbmV3IFdlYlNvY2tldCgiL2FwcGxldCIp
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KIFBB
U1MgbmV3IFdlYlNvY2tldCgiamF2YXNjcmlwdDphIikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBT
WU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtcGFyc2lu
Zy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC1wYXJzaW5nLWV4cGVjdGVkLnR4dAppbmRleCBkYzI2
ODMxZGJiMGQ0OGU2YWRmZGM2YzQyNWE0NjgyNzcxNDM2YmQ4Li4zNTZlYjZlNGY4NTNlZTY4YzY5
MjQ4ZGI0M2YxMmVjN2JiOGZjOTBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC1wYXJzaW5nLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3VybC1wYXJzaW5nLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDQg
QEAKK0NPTlNPTEUgTUVTU0FHRTogV3JvbmcgdXJsIHNjaGVtZSBmb3IgV2ViU29ja2V0IGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC93ZWJzb2NrZXQvdGVzdHMvaHliaS9udWxsCiBDT05TT0xFIE1FU1NB
R0U6IEludmFsaWQgdXJsIGZvciBXZWJTb2NrZXQgd3M6Ly9qYXZhc2NyaXB0OmEvCiBDT05TT0xF
IE1FU1NBR0U6IFdyb25nIHVybCBzY2hlbWUgZm9yIFdlYlNvY2tldCBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvYXBwbGV0CiBDT05TT0xFIE1FU1NBR0U6IFdyb25nIHVybCBzY2hlbWUgZm9yIFdlYlNv
Y2tldCBqYXZhc2NyaXB0OmEKQEAgLTksNiArMTAsNyBAQCBUZXN0IFdlYlNvY2tldCBVUkwgcGFy
c2luZy4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogUEFTUyBuZXcgV2ViU29ja2V0KCkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCitQQVNTIG5l
dyBXZWJTb2NrZXQobnVsbCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00g
RXhjZXB0aW9uIDEyLgogUEFTUyBuZXcgV2ViU29ja2V0KCJ3czovL2phdmFzY3JpcHQ6YSIpIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KIFBBU1Mg
bmV3IFdlYlNvY2tldCgiL2FwcGxldCIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VS
UjogRE9NIEV4Y2VwdGlvbiAxMi4KIFBBU1MgbmV3IFdlYlNvY2tldCgiamF2YXNjcmlwdDphIikg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgo=
</data>
<flag name="commit-queue"
          id="188346"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173628</attachid>
            <date>2012-11-12 05:16:36 -0800</date>
            <delta_ts>2012-11-12 06:19:19 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-100801-20121112141438.patch</filename>
            <type>text/plain</type>
            <size>90714</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzc3YjVkN2I1NDAzMjgx
MTQ2NWI0MTllMTI1OTJiZDJmZGM0MzZiOS4uN2UzZmQ1Y2Y4Y2Q3ZWUyNmNlOGM2MWU0YjIzMTIz
NmJmY2EyOTQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxMi0xMS0xMiAgVG9t
bXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhl
IFY4IGN1c3RvbSBjb2RlIGZvciBXZWJTb2NrZXRzIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA4MDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBLZW50YXJvIEhhcmEuCisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHRoZSBmb2xs
b3dpbmc6CisKKyAgICAgICAgMSkgTW9kaWZpZXMgdGhlIFY4IGNvZGUgZ2VuZXJhdG9yIHRvIHN1
cHBvcnQgb3ZlcmxvYWRlZCBjb25zdHJ1Y3RvcnMsCisgICAgICAgICAgIHRoZSBKUyBnZW5lcmF0
b3IgaXMgZml4ZWQgdG8gd29yayBhcyBiZWZvcmUuIFByb3BlciBzdXBwb3J0IGZvciBKUyB3aWxs
IGNvbWUgbGF0ZXIuCisKKyAgICAgICAgMikgTW9kaWZpZXMgV2ViU29ja2V0LmgvLmNwcCBmb3Ig
dGhlIG5ldyBjb25zdHJ1Y3RvcnMuCisKKyAgICAgICAgVGVzdGVkIGJ5IHJ1bm5pbmcgV2ViU29j
a2V0cyBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaDoKKyAg
ICAgICAgKFdlYlNvY2tldCk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06Cisg
ICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbik6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6
CisgICAgICAgIChHZW5lcmF0ZU92ZXJsb2FkZWRDb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAg
ICAgKEdlbmVyYXRlU2luZ2xlQ29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0
ZUNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgIChjb3B5
QXR0cmlidXRlcyk6CisgICAgICAgIChwYXJzZUV4dGVuZGVkQXR0cmlidXRlTGlzdCk6CisgICAg
ICAgIChwYXJzZUV4dGVuZGVkQXR0cmlidXRlcyk6CisgICAgICAgIChhcHBseUV4dGVuZGVkQXR0
cmlidXRlTGlzdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG06
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViRE9NVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM6OldlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJpdmF0ZTo6V2Vi
RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlKToKKyAgICAgICAgKFdlYkRPTVRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1ByaXZhdGUpOgorICAgICAgICAoV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6Oldl
YkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKToKKyAgICAgICAgKFdlYkRPTVRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViRE9NVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM6OmltcGwpOgorICAgICAgICAoV2ViRE9NVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM6On5XZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk6CisgICAgICAg
ICh0b1dlYkNvcmUpOgorICAgICAgICAodG9XZWJLaXQpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6a2l0KToKKyAgICAgICAgKFdlYktpdDo6Y29yZSk6CisgICAg
ICAgIChXZWJLaXQ6OndyYXBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk6CisgICAgICAgICh3
ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfZmluYWxpemUpOgorICAgICAg
ICAod2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3JzX3NldF9wcm9wZXJ0eSk6
CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfZ2V0X3By
b3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9y
c19jb25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25z
dHJ1Y3RvcnNfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRl
ZF9jb25zdHJ1Y3RvcnNfaW5pdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaDogQWRkZWQuCisgICAg
ICAgIChfV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOgorICAgICAgICAoX1dl
YktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ2xhc3MpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29u
c3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c0NvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc0NvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGU6OnNlbGYpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzOjpjcmVhdGVQcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczo6ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjp+SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
czo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpnZXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjppc09ic2VydmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzT3duZXI6OmZpbmFsaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6dG9UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjppbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnJlbGVhc2VJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnJlbGVhc2VJbXBs
SWZOb3ROdWxsKToKKyAgICAgICAgKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNPd25lcik6
CisgICAgICAgIChXZWJDb3JlOjp3cmFwcGVyT3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6d3Jh
cHBlckNvbnRleHQpOgorICAgICAgICAoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3Rv
dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJv
dG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGU6OkpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNQcm90b3R5cGUpOgorICAgICAgICAoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5tbTogQWRkZWQuCisgICAgICAgICgtW0RPTVRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzIGRlYWxsb2NdKToKKyAgICAgICAgKC1bRE9NVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMgZmluYWxpemVdKToKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAoa2l0
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0ludGVybmFsLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmlk
bDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaWRsLgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmlkbDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1Y4SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNWOEludGVybmFsOjpWOF9VU0UpOgorICAgICAgICAoV2ViQ29yZTo6VjhU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3IxQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3IyQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
Y29uc3RydWN0b3IzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3I0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVGVtcGxh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6R2V0
UmF3VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yczo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6SGFzSW5zdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczo6d3JhcFNsb3cpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczo6ZGVyZWZPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnRvTmF0aXZl
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6Omluc3Rh
bGxQZXJDb250ZXh0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzOjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6d3JhcCk6Cisg
ICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJTb2NrZXRDdXN0b20uY3BwOgorCiAyMDEyLTExLTEyICBBbmRyZWFzIEtsaW5nICA8YWtsaW5n
QGFwcGxlLmNvbT4KIAogICAgICAgICBUaWdodGVuIHZlY3RvciBpbiBSZXNvdXJjZVJlcXVlc3RC
YXNlOjpzZXRSZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSgp
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApp
bmRleCBjM2M3MGE0ZDQyY2I3Y2EyNTBlMDc1Nzg1YWU1MGFhNGNiNDgxMTdjLi5kZmQzZjdmMWNi
ODFkNGRhOGVlNjdiNTMxNDc4MWEwNjEyMjJjZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtMTY0LDYgKzE2NCwzNiBAQCBQYXNz
UmVmUHRyPFdlYlNvY2tldD4gV2ViU29ja2V0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkKICAgICByZXR1cm4gd2ViU29ja2V0LnJlbGVhc2UoKTsKIH0KIAorUGFzc1Jl
ZlB0cjxXZWJTb2NrZXQ+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBW
ZWN0b3I8U3RyaW5nPiBwcm90b2NvbHM7CisgICAgcmV0dXJuIFdlYlNvY2tldDo6Y3JlYXRlKGNv
bnRleHQsIHVybCwgcHJvdG9jb2xzLCBlYyk7Cit9CisKK1Bhc3NSZWZQdHI8V2ViU29ja2V0PiBX
ZWJTb2NrZXQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByb3RvY29scywgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgaWYgKHVybC5pc051bGwoKSkgeworICAgICAgICBlYyA9IFNZTlRBWF9F
UlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIFJlZlB0cjxXZWJTb2NrZXQ+IHdl
YlNvY2tldChhZG9wdFJlZihuZXcgV2ViU29ja2V0KGNvbnRleHQpKSk7CisgICAgd2ViU29ja2V0
LT5zdXNwZW5kSWZOZWVkZWQoKTsKKworICAgIHdlYlNvY2tldC0+Y29ubmVjdChjb250ZXh0LT5j
b21wbGV0ZVVSTCh1cmwpLCBwcm90b2NvbHMsIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgcmV0dXJuIHdlYlNvY2tldC5yZWxlYXNlKCk7Cit9CisKK1Bhc3NSZWZQ
dHI8V2ViU29ja2V0PiBXZWJTb2NrZXQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRXhjZXB0
aW9uQ29kZSYgZWMpCit7CisgICAgVmVjdG9yPFN0cmluZz4gcHJvdG9jb2xzOworICAgIHByb3Rv
Y29scy5hcHBlbmQocHJvdG9jb2wpOworICAgIHJldHVybiBXZWJTb2NrZXQ6OmNyZWF0ZShjb250
ZXh0LCB1cmwsIHByb3RvY29scywgZWMpOworfQorCiB2b2lkIFdlYlNvY2tldDo6Y29ubmVjdChj
b25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gcHJvdG9jb2xzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5oCmluZGV4IGE5MzU1MjhiYTI0NjEyMjE5MjdkNWIzM2UxYjVjZjY1OTc0YzQ0ZDIuLjJi
YWU1MzliMWI1MTI1M2E0YjMzY2ViYjViODQ2OTY4ZWVhNDhjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKQEAgLTU2LDYgKzU2LDkgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CiAgICAgc3RhdGljIGNvbnN0IGNo
YXIqIHN1YlByb3RvY29sU2VwZXJhdG9yKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29j
a2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJp
bmcmIHVybCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNvY2tl
dD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiBwcm90b2NvbCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByb3RvY29scywgRXhjZXB0aW9uQ29kZSYp
OwogICAgIHZpcnR1YWwgfldlYlNvY2tldCgpOwogCiAgICAgZW51bSBTdGF0ZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCmluZGV4IDcyY2Y1
ZDRlOWNjMTdiYzkyZjczOGYwOWJlNjhhY2IyMDExZWU5NDcuLjhjNmNiZWJkMzg1MjA2ZTAzYjUx
MWY4ZjYzZTk4YTg3OTUzMDdkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuaWRsCkBAIC0zMiwxMCArMzIsMTUgQEAKIFsKICAgICBDb25kaXRp
b25hbD1XRUJfU09DS0VUUywKICAgICBBY3RpdmVET01PYmplY3QsCi0gICAgQ3VzdG9tQ29uc3Ry
dWN0b3IsCi0gICAgQ29uc3RydWN0b3JQYXJhbWV0ZXJzPTEsCisgICAgQ29uc3RydWN0b3IoaW4g
RE9NU3RyaW5nIHVybCksCisgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIHVybCwgaW4gc2Vx
dWVuY2U8U3RyaW5nPiBwcm90b2NvbHMpLAorICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyB1
cmwsIGluIERPTVN0cmluZyBwcm90b2NvbCksCisgICAgQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRp
b24sCisgICAgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKICAgICBFdmVudFRhcmdl
dCwKLSAgICBKU05vU3RhdGljVGFibGVzCisgICAgSlNOb1N0YXRpY1RhYmxlcywKKyAgICBKU0N1
c3RvbUNvbnN0cnVjdG9yLAorICAgIENvbnN0cnVjdG9yUGFyYW1ldGVycz0xCiBdIGludGVyZmFj
ZSBXZWJTb2NrZXQgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgVVJMOyAvLyBM
b3dlcmNhc2VkIC51cmwgaXMgdGhlIG9uZSBpbiB0aGUgc3BlYywgYnV0IGxlYXZpbmcgLlVSTCBm
b3IgY29tcGF0aWJpbGl0eSByZWFzb25zLgogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcgdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQppbmRleCA4NTVkYWFhYzhlMDkyYmE4MzZkOWExMzU5ZDZiMmE4ODM1MTRhOGRj
Li40MGQ2NzlkYTZmMThjYjY5YzdkMGM4MDU4ZjQ3MjU3MDFiM2FkYTQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzcx
NywxMyArMzcxNywxNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KICAgICBt
eSAkZGF0YU5vZGUgPSBzaGlmdDsKICAgICBteSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3Ig
PSBzaGlmdDsKIAorICAgICMgRklYTUU6IEFkZCBzdXBwb3J0IGZvciBvdmVybG9hZGVkIGNvbnN0
cnVjdG9ycyB0byBKUyBhcyB3ZWxsLgorICAgICMgRm9yIG5vdyBtaW1pYyB0aGUgb2xkIGJlaGF2
aW91ciBieSBvbmx5IGdlbmVyYXRpbmcgY29kZSBmb3IgdGhlIGxhc3QgIkNvbnN0cnVjdG9yIiBh
dHRyaWJ1dGUuCisgICAgbXkgJGZ1bmN0aW9uID0gQHskZGF0YU5vZGUtPmNvbnN0cnVjdG9yc31b
LTFdOworCiAgICAgbXkgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lID0gJGdlbmVyYXRpbmdOYW1lZENv
bnN0cnVjdG9yID8gIiR7Y2xhc3NOYW1lfU5hbWVkQ29uc3RydWN0b3IiIDogIiR7Y2xhc3NOYW1l
fUNvbnN0cnVjdG9yIjsKICAgICBteSAkbnVtYmVyT2ZDb25zdHJ1Y3RvclBhcmFtZXRlcnMgPSAk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvclBhcmFtZXRlcnMifTsK
ICAgICBpZiAoIWRlZmluZWQgJG51bWJlck9mQ29uc3RydWN0b3JQYXJhbWV0ZXJzKSB7CiAgICAg
ICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclRlbXBsYXRlKCRkYXRhTm9kZSwg
IkV2ZW50IikpIHsKICAgICAgICAgICAgICRudW1iZXJPZkNvbnN0cnVjdG9yUGFyYW1ldGVycyA9
IDI7CiAgICAgICAgIH0gZWxzaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNv
bnN0cnVjdG9yIn0pIHsKLSAgICAgICAgICAgICRudW1iZXJPZkNvbnN0cnVjdG9yUGFyYW1ldGVy
cyA9IEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3Rvci0+cGFyYW1ldGVyc307CisgICAgICAgICAgICAk
bnVtYmVyT2ZDb25zdHJ1Y3RvclBhcmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM4ODUsNyArMzg4OSw2IEBAIEVORAogCiAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qIGNh
c3RlZFRoaXMgPSBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihleGVjLT5jYWxsZWUo
KSk7XG4iKTsKIAotICAgICAgICAgICAgbXkgJGZ1bmN0aW9uID0gJGRhdGFOb2RlLT5jb25zdHJ1
Y3RvcjsKICAgICAgICAgICAgIG15IEBjb25zdHJ1Y3RvckFyZ0xpc3Q7CiAKICAgICAgICAgICAg
ICRpbXBsSW5jbHVkZXN7IjxydW50aW1lL0Vycm9yLmg+In0gPSAxOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCAxNGY0NGI3
N2Q5ZTU0ZjllMjg0M2ZlNzQ3Y2U4MTdiN2MwMDEyM2MwLi5mODU1NWI0NjUwYzRlODNlNWRmMTgw
MDA2MGIwMDBlMjYyYjA0NzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtNDk0LDYgKzQ5NCwxNyBAQCBFTkQKICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiBwcml2YXRlOgogICAgIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBTbG93KCR7d3JhcFNsb3dBcmd1bWVudFR5cGV9LCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKK0VORAorCisg
ICAgaWYgKElzQ29uc3RydWN0YWJsZSgkZGF0YU5vZGUpICYmIEB7JGRhdGFOb2RlLT5jb25zdHJ1
Y3RvcnN9ID4gMSkgeworICAgICAgICBmb3IgKG15ICRpID0gMTsgJGkgPD0gQHskZGF0YU5vZGUt
PmNvbnN0cnVjdG9yc307ICRpKyspIHsKKyAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
PDxFTkQpOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3Ike2l9
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOworRU5ECisgICAgICAgIH0KKyAgICB9CisK
KyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiB9OwogCiBFTkQKQEAgLTE4NTIsMTEg
KzE4NjMsNTEgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgcmV0dXJuICgkcGFy
YW1ldGVyQ2hlY2tTdHJpbmcsICRwYXJhbUluZGV4LCAlcmVwbGFjZW1lbnRzKTsKIH0KIAotc3Vi
IEdlbmVyYXRlQ29uc3RydWN0b3JDYWxsYmFjaworc3ViIEdlbmVyYXRlT3ZlcmxvYWRlZENvbnN0
cnVjdG9yQ2FsbGJhY2sKIHsKLSAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKICAgICBteSAkZGF0
YU5vZGUgPSBzaGlmdDsKICAgICBteSAkaW1wbENsYXNzTmFtZSA9IHNoaWZ0OworICAgIAorICAg
IHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2lt
cGxDbGFzc05hbWV9Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uJHtpbXBsQ2xhc3NOYW1lfS5Db25zdHJ1Y3RvciIp
OworICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKKyAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBm
dW5jdGlvbi4iKTsKKworICAgIGlmIChDb25zdHJ1Y3Rvck1vZGU6OmN1cnJlbnQoKSA9PSBDb25z
dHJ1Y3Rvck1vZGU6OldyYXBFeGlzdGluZ09iamVjdCkKKyAgICAgICAgcmV0dXJuIGFyZ3MuSG9s
ZGVyKCk7CisKK0VORAorCisgICAgbXkgJGxlYXN0TnVtTWFuZGF0b3J5UGFyYW1zID0gMjU1Owor
ICAgIGZvcmVhY2ggbXkgJGNvbnN0cnVjdG9yIChAeyRkYXRhTm9kZS0+Y29uc3RydWN0b3JzfSkg
eworICAgICAgICBteSAkbmFtZSA9ICJjb25zdHJ1Y3RvciIgLiAkY29uc3RydWN0b3ItPntvdmVy
bG9hZGVkSW5kZXh9IC4gIkNhbGxiYWNrIjsKKyAgICAgICAgbXkgKCRudW1NYW5kYXRvcnlQYXJh
bXMsICRwYXJhbWV0ZXJzQ2hlY2spID0gR2VuZXJhdGVGdW5jdGlvblBhcmFtZXRlcnNDaGVjaygk
Y29uc3RydWN0b3IpOworICAgICAgICAkbGVhc3ROdW1NYW5kYXRvcnlQYXJhbXMgPSAkbnVtTWFu
ZGF0b3J5UGFyYW1zIGlmICgkbnVtTWFuZGF0b3J5UGFyYW1zIDwgJGxlYXN0TnVtTWFuZGF0b3J5
UGFyYW1zKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCRwYXJhbWV0ZXJz
Q2hlY2spXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiAk
bmFtZShhcmdzKTtcbiIpOworICAgIH0KKyAgICBpZiAoJGxlYXN0TnVtTWFuZGF0b3J5UGFyYW1z
ID49IDEpIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPCAkbGVhc3ROdW1NYW5kYXRvcnlQYXJhbXMpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3Mu
R2V0SXNvbGF0ZSgpKTtcbiIpOworICAgIH0KKyAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQp
OworICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdldElzb2xhdGUoKSk7CitFTkQK
KyAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Cit9CisKK3N1YiBHZW5lcmF0ZVNpbmds
ZUNvbnN0cnVjdG9yQ2FsbGJhY2sKK3sKKyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKKyAgICBt
eSAkaW1wbENsYXNzTmFtZSA9IHNoaWZ0OworICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OworCisg
ICAgbXkgJG92ZXJsb2FkZWRJbmRleFN0cmluZyA9ICIiOworICAgIGlmICgkZnVuY3Rpb24tPntv
dmVybG9hZGVkSW5kZXh9ID4gMCkgeworICAgICAgICAkb3ZlcmxvYWRlZEluZGV4U3RyaW5nIC49
ICRmdW5jdGlvbi0+e292ZXJsb2FkZWRJbmRleH07CisgICAgfQogCiAgICAgbXkgJHJhaXNlc0V4
Y2VwdGlvbnMgPSBAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc307CiAgICAgaWYgKCRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uIn0p
IHsKQEAgLTE4NzUsMTggKzE5MjYsMjIgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JDYWxsYmFj
awogICAgIG15IEBiZWZvcmVBcmd1bWVudExpc3Q7CiAgICAgbXkgQGFmdGVyQXJndW1lbnRMaXN0
OwogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci12ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
Vjgke2ltcGxDbGFzc05hbWV9Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2ltcGxDbGFzc05hbWV9Ojpjb25z
dHJ1Y3RvciR7b3ZlcmxvYWRlZEluZGV4U3RyaW5nfUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uJHtpbXBsQ2xhc3NOYW1lfS5Db25zdHJ1
Y3RvciIpOworICAgIElOQ19TVEFUUygiRE9NLiR7aW1wbENsYXNzTmFtZX0uQ29uc3RydWN0b3Ik
e292ZXJsb2FkZWRJbmRleFN0cmluZ30iKTsKICAgICAke21heWJlT2JzZXJ2ZUZlYXR1cmV9CitF
TkQKKworICAgIGlmICgkZnVuY3Rpb24tPntvdmVybG9hZGVkSW5kZXh9ID09IDApIHsKKyAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENh
bGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCJET00gb2JqZWN0IGNvbnN0cnVj
dG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iKTsKIAogICAgIGlmIChDb25zdHJ1
Y3Rvck1vZGU6OmN1cnJlbnQoKSA9PSBDb25zdHJ1Y3Rvck1vZGU6OldyYXBFeGlzdGluZ09iamVj
dCkKICAgICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CiBFTkQKLQotICAgIHB1c2goQGltcGxD
b250ZW50LCBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soJGZ1bmN0aW9uLCAkZGF0YU5vZGUp
KTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVj
aygkZnVuY3Rpb24sICRkYXRhTm9kZSkpOworICAgIH0KIAogICAgIGlmICgkcmFpc2VzRXhjZXB0
aW9ucykgewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRXhjZXB0aW9uQ29kZS5oIik7CkBA
IC0xOTQ5LDYgKzIwMDQsMjEgQEAgRU5ECiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOwog
fQogCitzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckNhbGxiYWNrCit7CisgICAgbXkgJGRhdGFOb2Rl
ID0gc2hpZnQ7CisgICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKKworICAgIGlmIChAeyRk
YXRhTm9kZS0+Y29uc3RydWN0b3JzfSA9PSAxKSB7CisgICAgICAgIEdlbmVyYXRlU2luZ2xlQ29u
c3RydWN0b3JDYWxsYmFjaygkZGF0YU5vZGUsICRpbXBsQ2xhc3NOYW1lLCBAeyRkYXRhTm9kZS0+
Y29uc3RydWN0b3JzfVswXSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yZWFjaCBteSAkY29u
c3RydWN0b3IgKEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3RvcnN9KSB7CisgICAgICAgICAgICBHZW5l
cmF0ZVNpbmdsZUNvbnN0cnVjdG9yQ2FsbGJhY2soJGRhdGFOb2RlLCAkaW1wbENsYXNzTmFtZSwg
JGNvbnN0cnVjdG9yKTsKKyAgICAgICAgfQorICAgICAgICBHZW5lcmF0ZU92ZXJsb2FkZWRDb25z
dHJ1Y3RvckNhbGxiYWNrKCRkYXRhTm9kZSwgJGltcGxDbGFzc05hbWUpOworICAgIH0KK30KKwog
c3ViIEdlbmVyYXRlRXZlbnRDb25zdHJ1Y3RvckNhbGxiYWNrCiB7CiAgICAgbXkgJGRhdGFOb2Rl
ID0gc2hpZnQ7CkBAIC0yODIyLDkgKzI4OTIsOSBAQCBFTkQKICAgICBwdXNoKEBpbXBsQ29udGVu
dERlY2xzLCAifSAvLyBuYW1lc3BhY2UgJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWxcblxuIik7
CiAKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRDb25zdHJ1
Y3RvciJ9ICYmICEoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhDdXN0b21Db25z
dHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0
cnVjdG9yIn0pKSB7Ci0gICAgICAgIEdlbmVyYXRlTmFtZWRDb25zdHJ1Y3RvckNhbGxiYWNrKCRk
YXRhTm9kZS0+Y29uc3RydWN0b3IsICRkYXRhTm9kZSwgJGludGVyZmFjZU5hbWUpOworICAgICAg
ICBHZW5lcmF0ZU5hbWVkQ29uc3RydWN0b3JDYWxsYmFjayhAeyRkYXRhTm9kZS0+Y29uc3RydWN0
b3JzfVswXSwgJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgfSBlbHNpZiAoJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3IifSAmJiAhKCRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9KSkgewotICAgICAgICBH
ZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbGJhY2soJGRhdGFOb2RlLT5jb25zdHJ1Y3RvciwgJGRhdGFO
b2RlLCAkaW50ZXJmYWNlTmFtZSk7CisgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JDYWxsYmFj
aygkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lKTsKICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRv
ci0+SXNDb25zdHJ1Y3RvclRlbXBsYXRlKCRkYXRhTm9kZSwgIkV2ZW50IikpIHsKICAgICAgICAg
R2VuZXJhdGVFdmVudENvbnN0cnVjdG9yQ2FsbGJhY2soJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFt
ZSk7CiAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUZW1wbGF0ZSgk
ZGF0YU5vZGUsICJUeXBlZEFycmF5IikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9JRExQYXJzZXIucG0KaW5kZXggMTlmYjY0OTVjMzFiMWZiNTZkN2U2YTlmMTUwZGI5NTk4
MmM3NDcxMi4uOTdmMzM1OGIxZTAzODgwZTgwNWFlOGZhYmZiZDk5OGUyNjc0ZGU2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KQEAgLTEzMjMsNiAr
MTMyMywyNSBAQCBzdWIgcGFyc2VFeHRlbmRlZEF0dHJpYnV0ZUxpc3RBbGxvd0VtcHR5CiAgICAg
cmV0dXJuIHt9OwogfQogCitzdWIgY29weUV4dGVuZGVkQXR0cmlidXRlcworeworICAgIG15ICRl
eHRlbmRlZEF0dHJpYnV0ZUxpc3QgPSBzaGlmdDsKKyAgICBteSAkYXR0ciA9IHNoaWZ0OworCisg
ICAgZm9yIG15ICRrZXkgKGtleXMgJXskYXR0cn0pIHsKKyAgICAgICAgaWYgKCRrZXkgZXEgIkNv
bnN0cnVjdG9yIikgeworICAgICAgICAgICAgcHVzaChAeyRleHRlbmRlZEF0dHJpYnV0ZUxpc3Qt
PnsiQ29uc3RydWN0b3JzIn19LCAkYXR0ci0+eyRrZXl9KTsKKyAgICAgICAgfSBlbHNpZiAoJGtl
eSBlcSAiQ29uc3RydWN0b3JzIikgeworICAgICAgICAgICAgbXkgQGNvbnN0cnVjdG9ycyA9IEB7
JGF0dHItPnska2V5fX07CisgICAgICAgICAgICBmb3JlYWNoIG15ICRjb25zdHJ1Y3RvciAoQGNv
bnN0cnVjdG9ycykgeworICAgICAgICAgICAgICAgIHB1c2goQHskZXh0ZW5kZWRBdHRyaWJ1dGVM
aXN0LT57IkNvbnN0cnVjdG9ycyJ9fSwgJGNvbnN0cnVjdG9yKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnska2V5
fSA9ICRhdHRyLT57JGtleX07CisgICAgICAgIH0KKyAgICB9Cit9CisKIHN1YiBwYXJzZUV4dGVu
ZGVkQXR0cmlidXRlTGlzdAogewogICAgIG15ICRzZWxmID0gc2hpZnQ7CkBAIC0xMzMxLDEzICsx
MzUwLDkgQEAgc3ViIHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVMaXN0CiAgICAgICAgICRzZWxmLT5h
c3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiWyIsIF9fTElORV9fKTsKICAgICAg
ICAgbXkgJGV4dGVuZGVkQXR0cmlidXRlTGlzdCA9IHt9OwogICAgICAgICBteSAkYXR0ciA9ICRz
ZWxmLT5wYXJzZUV4dGVuZGVkQXR0cmlidXRlKCk7Ci0gICAgICAgIGZvciBteSAka2V5IChrZXlz
ICV7JGF0dHJ9KSB7Ci0gICAgICAgICAgICAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57JGtleX0g
PSAkYXR0ci0+eyRrZXl9OwotICAgICAgICB9CisgICAgICAgIGNvcHlFeHRlbmRlZEF0dHJpYnV0
ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCwgJGF0dHIpOwogICAgICAgICAkYXR0ciA9ICRzZWxm
LT5wYXJzZUV4dGVuZGVkQXR0cmlidXRlcygpOwotICAgICAgICBmb3IgbXkgJGtleSAoa2V5cyAl
eyRhdHRyfSkgewotICAgICAgICAgICAgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyRrZXl9ID0g
JGF0dHItPnska2V5fTsKLSAgICAgICAgfQorICAgICAgICBjb3B5RXh0ZW5kZWRBdHRyaWJ1dGVz
KCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QsICRhdHRyKTsKICAgICAgICAgJHNlbGYtPmFzc2VydFRv
a2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJdIiwgX19MSU5FX18pOwogICAgICAgICByZXR1
cm4gJGV4dGVuZGVkQXR0cmlidXRlTGlzdDsKICAgICB9CkBAIC0xMzU0LDkgKzEzNjksNyBAQCBz
dWIgcGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMKICAgICAgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVx
ICIsIikgewogICAgICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRv
a2VuKCksICIsIiwgX19MSU5FX18pOwogICAgICAgICAgICAgbXkgJGF0dHIgPSAkc2VsZi0+cGFy
c2VFeHRlbmRlZEF0dHJpYnV0ZTIoKTsKLSAgICAgICAgICAgIGZvciBteSAka2V5IChrZXlzICV7
JGF0dHJ9KSB7Ci0gICAgICAgICAgICAgICAgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyRrZXl9
ID0gJGF0dHItPnska2V5fTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvcHlFeHRlbmRl
ZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCwgJGF0dHIpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgbGFzdDsKICAgICAgICAgfQpAQCAtMjM4MSwxNCArMjM5NCwyMCBA
QCBzdWIgYXBwbHlFeHRlbmRlZEF0dHJpYnV0ZUxpc3QKICAgICBteSAkZGF0YU5vZGUgPSBzaGlm
dDsKICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0ID0gc2hpZnQ7CiAKLSAgICBpZiAoZGVm
aW5lZCAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57IkNvbnN0cnVjdG9yIn0pIHsKLSAgICAgICAg
bXkgJG5ld0RhdGFOb2RlID0gbmV3IGRvbUZ1bmN0aW9uKCk7Ci0gICAgICAgICRuZXdEYXRhTm9k
ZS0+c2lnbmF0dXJlKG5ldyBkb21TaWduYXR1cmUoKSk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+
c2lnbmF0dXJlLT5uYW1lKCJDb25zdHJ1Y3RvciIpOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwotICAg
ICAgICBwdXNoKEB7JG5ld0RhdGFOb2RlLT5wYXJhbWV0ZXJzfSwgQHskZXh0ZW5kZWRBdHRyaWJ1
dGVMaXN0LT57IkNvbnN0cnVjdG9yIn19KTsKKyAgICBpZiAoZGVmaW5lZCAkZXh0ZW5kZWRBdHRy
aWJ1dGVMaXN0LT57IkNvbnN0cnVjdG9ycyJ9KSB7CisgICAgICAgIG15IEBjb25zdHJ1Y3RvclBh
cmFtcyA9IEB7JGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJDb25zdHJ1Y3RvcnMifX07CisgICAg
ICAgIG15ICRpbmRleCA9IChAY29uc3RydWN0b3JQYXJhbXMgPT0gMSkgPyAwIDogMTsKKyAgICAg
ICAgZm9yZWFjaCBteSAkcGFyYW0gKEBjb25zdHJ1Y3RvclBhcmFtcykgeworICAgICAgICAgICAg
bXkgJGNvbnN0cnVjdG9yID0gbmV3IGRvbUZ1bmN0aW9uKCk7CisgICAgICAgICAgICAkY29uc3Ry
dWN0b3ItPnNpZ25hdHVyZShuZXcgZG9tU2lnbmF0dXJlKCkpOworICAgICAgICAgICAgJGNvbnN0
cnVjdG9yLT5zaWduYXR1cmUtPm5hbWUoIkNvbnN0cnVjdG9yIik7CisgICAgICAgICAgICAkY29u
c3RydWN0b3ItPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0
ZUxpc3QpOworICAgICAgICAgICAgJGNvbnN0cnVjdG9yLT5wYXJhbWV0ZXJzKCRwYXJhbSk7Cisg
ICAgICAgICAgICAkY29uc3RydWN0b3ItPntvdmVybG9hZGVkSW5kZXh9ID0gJGluZGV4Kys7Cisg
ICAgICAgICAgICBwdXNoKEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3RvcnN9LCAkY29uc3RydWN0b3Ip
OworICAgICAgICB9CisgICAgICAgIGRlbGV0ZSAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57IkNv
bnN0cnVjdG9ycyJ9OwogICAgICAgICAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57IkNvbnN0cnVj
dG9yIn0gPSAiVkFMVUVfSVNfTUlTU0lORyI7Ci0gICAgICAgICRkYXRhTm9kZS0+Y29uc3RydWN0
b3IoJG5ld0RhdGFOb2RlKTsKICAgICB9IGVsc2lmIChkZWZpbmVkICRleHRlbmRlZEF0dHJpYnV0
ZUxpc3QtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgIG15ICRuZXdEYXRhTm9kZSA9
IG5ldyBkb21GdW5jdGlvbigpOwogICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShuZXcg
ZG9tU2lnbmF0dXJlKCkpOwpAQCAtMjM5OSw3ICsyNDE4LDcgQEAgc3ViIGFwcGx5RXh0ZW5kZWRB
dHRyaWJ1dGVMaXN0CiAgICAgICAgIG15ICRjb25zdHJ1Y3Rvck5hbWUgPSAkYXR0cmlidXRlS2V5
c1swXTsKICAgICAgICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+cGFyYW1ldGVyc30sIEB7JGF0dHJp
YnV0ZXN7JGNvbnN0cnVjdG9yTmFtZX19KTsKICAgICAgICAgJGV4dGVuZGVkQXR0cmlidXRlTGlz
dC0+eyJOYW1lZENvbnN0cnVjdG9yIn0gPSAkY29uc3RydWN0b3JOYW1lOwotICAgICAgICAkZGF0
YU5vZGUtPmNvbnN0cnVjdG9yKCRuZXdEYXRhTm9kZSk7CisgICAgICAgIHB1c2goQHskZGF0YU5v
ZGUtPmNvbnN0cnVjdG9yc30sICRuZXdEYXRhTm9kZSk7CiAgICAgfQogICAgICRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFN0cnVjdHVyZS5wbQppbmRleCBmZjYyODcy
NWViOTBmNTQ2NjczZmQxNjQxZWYxZGM1YWMyNmNkZmNiLi5mNDQzMjQxNzNlYTJjZTBkNDQzYzZm
NTRkZWZkYjU0ZDUwMzljZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0lETFN0cnVjdHVyZS5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0lETFN0cnVjdHVyZS5wbQpAQCAtNDAsNyArNDAsNyBAQCBzdHJ1Y3QoIGRvbUNsYXNzID0+
IHsKICAgICBmdW5jdGlvbnMgPT4gJ0AnLCAgICAjIExpc3Qgb2YgJ2RvbUZ1bmN0aW9uJwogICAg
IGF0dHJpYnV0ZXMgPT4gJ0AnLCAgICAjIExpc3Qgb2YgJ2RvbUF0dHJpYnV0ZScgICAgCiAgICAg
ZXh0ZW5kZWRBdHRyaWJ1dGVzID0+ICckJywgIyBFeHRlbmRlZCBhdHRyaWJ1dGVzCi0gICAgY29u
c3RydWN0b3IgPT4gJyQnLCAjIENvbnN0cnVjdG9yCisgICAgY29uc3RydWN0b3JzID0+ICdAJywg
IyBDb25zdHJ1Y3RvcgogICAgIGlzRXhjZXB0aW9uID0+ICckJywgIyBVc2VkIGZvciBleGNlcHRp
b24gaW50ZXJmYWNlcwogfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY2YTJlZGI0NmIzY2EwYjk4YWE5ODVi
MjJlNzQ2NWY4MTVjMDUwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3Bw
CkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0
IG9wZW4gc291cmNlIHByb2plY3QuCisgKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5
IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIKKworI2luY2x1
ZGUgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgiCisjaW5jbHVkZSAiV2ViRXhjZXB0aW9u
SGFuZGxlci5oIgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisKK3N0cnVjdCBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6V2ViRE9NVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlIHsKKyAgICBXZWJET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1ByaXZhdGUoV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMq
IG9iamVjdCA9IDApCisgICAgICAgIDogaW1wbChvYmplY3QpCisgICAgeworICAgIH0KKworICAg
IFJlZlB0cjxXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbDsKK307CisK
K1dlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpXZWJET01UZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycygpCisgICAgOiBXZWJET01PYmplY3QoKQorICAgICwgbV9pbXBsKDApCit7Cit9
CisKK1dlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpXZWJET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyhXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogaW1wbCkK
KyAgICA6IFdlYkRPTU9iamVjdCgpCisgICAgLCBtX2ltcGwobmV3IFdlYkRPTVRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzUHJpdmF0ZShpbXBsKSkKK3sKK30KKworV2ViRE9NVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6OldlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKGNvbnN0IFdl
YkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzJiBjb3B5KQorICAgIDogV2ViRE9NT2JqZWN0
KCkKK3sKKyAgICBtX2ltcGwgPSBjb3B5LmltcGwoKSA/IG5ldyBXZWJET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1ByaXZhdGUoY29weS5pbXBsKCkpIDogMDsKK30KKworV2ViRE9NVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMmIFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpv
cGVyYXRvcj0oY29uc3QgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMmIGNvcHkpCit7
CisgICAgZGVsZXRlIG1faW1wbDsKKyAgICBtX2ltcGwgPSBjb3B5LmltcGwoKSA/IG5ldyBXZWJE
T01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGUoY29weS5pbXBsKCkpIDogMDsKKyAg
ICByZXR1cm4gKnRoaXM7Cit9CisKK1dlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
KiBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6aW1wbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1faW1wbCA/IFdURjo6Z2V0UHRyKG1faW1wbC0+aW1wbCkgOiAwOworfQorCitXZWJE
T01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6fldlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzKCkKK3sKKyAgICBkZWxldGUgbV9pbXBsOworICAgIG1faW1wbCA9IDA7Cit9CisKK1dl
YkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB0b1dlYkNvcmUoY29uc3QgV2ViRE9N
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMmIHdyYXBwZXIpCit7CisgICAgcmV0dXJuIHdyYXBw
ZXIuaW1wbCgpOworfQorCitXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyB0b1dlYktp
dChXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdmFsdWUpCit7CisgICAgcmV0
dXJuIFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKHZhbHVlKTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9DUFAvV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
YWI4MTJiYmI2ZmYwZWRhNjhhYmU0OWY5M2ExYjIwNDEzYWMyNTI3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVl
bCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdl
YkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzX2gKKyNkZWZpbmUgV2ViRE9NVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNfaAorCisjaW5jbHVkZSA8V2ViRE9NT2JqZWN0Lmg+CisjaW5jbHVk
ZSA8V2ViRE9NU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOworfTsKKworCitjbGFzcyBXZWJET01UZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycyA6IHB1YmxpYyBXZWJET01PYmplY3QgeworcHVibGljOgorICAgIFdlYkRPTVRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKCk7CisgICAgZXhwbGljaXQgV2ViRE9NVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMoV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqKTsK
KyAgICBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhjb25zdCBXZWJET01UZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycyYpOworICAgIFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzJiBvcGVyYXRvcj0oY29uc3QgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMmKTsK
KyAgICB2aXJ0dWFsIH5XZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycygpOworCisKKyAg
ICBXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogaW1wbCgpIGNvbnN0OworCitw
cm90ZWN0ZWQ6CisgICAgc3RydWN0IFdlYkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJp
dmF0ZTsKKyAgICBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGUqIG1faW1w
bDsKK307CisKK1dlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB0b1dlYkNvcmUo
Y29uc3QgV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMmKTsKK1dlYkRPTVRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzIHRvV2ViS2l0KFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzKik7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4M2U1NmZmNzQ5
ZmM0NzUyNmU1MDA5Zjk0MGQ4ZGEyZGIxMTMyMWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTAsMCArMSwxMzcgQEAKKy8qCisgICAgVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmls
ZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJ
RlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdERPTVRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmgiCisKKyNpbmNsdWRlICJET01PYmplY3RDYWNoZS5oIgorI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUu
aCIKKyNpbmNsdWRlICJXZWJLaXRET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiV2ViS2l0RE9NVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlLmgiCisjaW5jbHVkZSAiZ29iamVjdC9Db252
ZXJ0VG9VVEY4U3RyaW5nLmgiCisjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKKyNp
bmNsdWRlIDx3dGYvR2V0UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGtpdChX
ZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogb2JqKQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKG9iaiwgMCk7CisKKyAgICBpZiAoZ3BvaW50ZXIgcmV0ID0gRE9NT2JqZWN0
Q2FjaGU6OmdldChvYmopKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0RE9NVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihyZXQpOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFdlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4oRE9NT2JqZWN0Q2FjaGU6OnB1
dChvYmosIFdlYktpdDo6d3JhcFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKG9iaikpKTsKK30K
KworV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGNvcmUoV2ViS2l0RE9NVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwocmVxdWVzdCwgMCk7CisKKyAgICBXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycyogY29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzKj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNvcmVPYmplY3QpOworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVPYmplY3QsIDApOworCisgICAgcmV0dXJuIGNvcmVP
YmplY3Q7Cit9CisKK1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB3cmFwVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMqIGNvcmVPYmplY3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCwg
MCk7CisKKyAgICAvLyBXZSBjYWxsIHJlZigpIHJhdGhlciB0aGFuIHVzaW5nIGEgQysrIHNtYXJ0
IHBvaW50ZXIgYmVjYXVzZSB3ZSBjYW4ndCBzdG9yZSBhIEMrKyBvYmplY3QKKyAgICAvLyBpbiBh
IEMtYWxsb2NhdGVkIEdPYmplY3Qgc3RydWN0dXJlLiBTZWUgdGhlIGZpbmFsaXplKCkgY29kZSBm
b3IgdGhlIG1hdGNoaW5nIGRlcmVmKCkuCisgICAgY29yZU9iamVjdC0+cmVmKCk7CisKKyAgICBy
ZXR1cm4gV0VCS0lUX0RPTV9URVNUX09WRVJMT0FERURfQ09OU1RSVUNUT1JTKGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9ET01fVEVTVF9PVkVSTE9BREVEX0NPTlNUUlVDVE9SUywgImNvcmUtb2Jq
ZWN0IiwgY29yZU9iamVjdCwgTlVMTCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
R19ERUZJTkVfVFlQRShXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycywgd2Via2l0
X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3JzLCBXRUJLSVRfVFlQRV9ET01fT0JKRUNU
KQorCitlbnVtIHsKKyAgICBQUk9QXzAsCit9OworCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rl
c3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQorewor
CisgICAgV2ViS2l0RE9NT2JqZWN0KiBkb21PYmplY3QgPSBXRUJLSVRfRE9NX09CSkVDVChvYmpl
Y3QpOworICAgIAorICAgIGlmIChkb21PYmplY3QtPmNvcmVPYmplY3QpIHsKKyAgICAgICAgV2Vi
Q29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGNvcmVPYmplY3QgPSBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KGRvbU9iamVjdC0+Y29yZU9i
amVjdCk7CisKKyAgICAgICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KGNvcmVPYmpl
Y3QpOworICAgICAgICBjb3JlT2JqZWN0LT5kZXJlZigpOworCisgICAgICAgIGRvbU9iamVjdC0+
Y29yZU9iamVjdCA9IDA7CisgICAgfQorCisKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9t
X3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2Jq
ZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3Ry
dWN0b3JzX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIGNv
bnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2Jq
ZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworCitz
dGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfZ2V0X3By
b3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwg
R1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOworICAgIHN3aXRjaCAocHJvcGVydHlJZCkgeworICAgIGRlZmF1bHQ6CisgICAgICAg
IEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBz
cGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCisKK3N0YXRpYyB2b2lkIHdlYmtpdF9k
b21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19jb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmpl
Y3QpCit7CisKKyAgICBpZiAoR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X292ZXJsb2Fk
ZWRfY29uc3RydWN0b3JzX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdGVkKQorICAgICAgICBHX09C
SkVDVF9DTEFTUyh3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfcGFyZW50
X2NsYXNzKS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X2Rv
bV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3JzX2NsYXNzX2luaXQoV2ViS2l0RE9NVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDbGFzcyogcmVxdWVzdENsYXNzKQoreworICAgIEdPYmplY3RD
bGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKKyAgICBn
b2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3Ry
dWN0b3JzX2ZpbmFsaXplOworICAgIGdvYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0
X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3JzX3NldF9wcm9wZXJ0eTsKKyAgICBnb2Jq
ZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0
cnVjdG9yc19nZXRfcHJvcGVydHk7CisgICAgZ29iamVjdENsYXNzLT5jb25zdHJ1Y3RlZCA9IHdl
YmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19jb25zdHJ1Y3RlZDsKKworCisK
K30KKworc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3Jz
X2luaXQoV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHJlcXVlc3QpCit7Cit9
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4NGY5NDdlMTI2YTViMzEyNTkxZDZhZTZkOGMxODcw
NDMwNjViZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCkBA
IC0wLDAgKzEsNTEgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBv
cGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkg
Z2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBXZWJLaXRE
T01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc19oCisjZGVmaW5lIFdlYktpdERPTVRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzX2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVk
ZSA8d2Via2l0L1dlYktpdERPTU9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZp
bmVzLmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRvbWRlZmluZXMuaD4KKworR19CRUdJTl9E
RUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX0RPTV9URVNUX09WRVJMT0FERURfQ09OU1RSVUNU
T1JTICAgICAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19n
ZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfRE9NX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RP
UlMob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VC
S0lUX1RZUEVfRE9NX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlMsIFdlYktpdERPTVRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKSkKKyNkZWZpbmUgV0VCS0lUX0RPTV9URVNUX09WRVJMT0FE
RURfQ09OU1RSVUNUT1JTX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1Qo
KGtsYXNzKSwgIFdFQktJVF9UWVBFX0RPTV9URVNUX09WRVJMT0FERURfQ09OU1RSVUNUT1JTLCBX
ZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NsYXNzKQorI2RlZmluZSBXRUJLSVRf
RE9NX0lTX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlMob2JqKSAgICAgICAgIChHX1RZUEVf
Q0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfRE9NX1RFU1RfT1ZFUkxPQURF
RF9DT05TVFJVQ1RPUlMpKQorI2RlZmluZSBXRUJLSVRfRE9NX0lTX1RFU1RfT1ZFUkxPQURFRF9D
T05TVFJVQ1RPUlNfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3Mp
LCAgV0VCS0lUX1RZUEVfRE9NX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlMpKQorI2RlZmlu
ZSBXRUJLSVRfRE9NX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlNfR0VUX0NMQVNTKG9iaikg
IChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfRE9NX1RFU1Rf
T1ZFUkxPQURFRF9DT05TVFJVQ1RPUlMsIFdlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzQ2xhc3MpKQorCitzdHJ1Y3QgX1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
IHsKKyAgICBXZWJLaXRET01PYmplY3QgcGFyZW50X2luc3RhbmNlOworfTsKKworc3RydWN0IF9X
ZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NsYXNzIHsKKyAgICBXZWJLaXRET01P
YmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRf
ZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfZ2V0X3R5cGUgKHZvaWQpOworCitHX0VO
RF9ERUNMUworCisjZW5kaWYgLyogV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNf
aCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZmJjMWIxOWFmY2M5Yjg2
NjZlZDYxMTQ0MmRjMGFiYzE2ZTJkZjE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNQcml2YXRlLmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAgICBUaGlzIGZpbGUg
aXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxl
IGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElG
WSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisqLworCisjaWZuZGVmIFdlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJpdmF0
ZV9oCisjZGVmaW5lIFdlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJpdmF0ZV9o
CisKKyNpbmNsdWRlICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIgorI2luY2x1ZGUgPHdl
YmtpdC9XZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKK1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB3cmFwVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMq
KTsKK1dlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBjb3JlKFdlYktpdERPTVRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiByZXF1ZXN0KTsKK1dlYktpdERPTVRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKiBraXQoV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMq
IG5vZGUpOworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvKiBXZWJLaXRET01UZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyZDJlYTg1MDBmMGQxZmM0MmMw
ODE5NTRkNjhmMjAwOGFjYjQ2ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAK
QEAgLTAsMCArMSwxOTggQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktp
dCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQg
YnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIKKworI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNs
dWRlICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJy
b3IuaD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworLyogSGFzaCB0YWJsZSBmb3IgY29uc3RydWN0b3IgKi8K
Kworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7ICJjb25zdHJ1Y3RvciIsIERvbnRFbnVtIHwgUmVh
ZE9ubHksIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KTAsIE5v
SW50cmluc2ljIH0sCisgICAgeyAwLCAwLCAwLCAwLCBOb0ludHJpbnNpYyB9Cit9OworCitzdGF0
aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUYWJsZSA9IHsg
MiwgMSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1RhYmxlVmFsdWVzLCAwIH07CisvKiBI
YXNoIHRhYmxlIGZvciBjb25zdHJ1Y3RvciAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFs
dWUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9
Cit7CisgICAgeyAwLCAwLCAwLCAwLCBOb0ludHJpbnNpYyB9Cit9OworCitzdGF0aWMgY29uc3Qg
SGFzaFRhYmxlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvclRhYmxlID0g
eyAxLCAwLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3JUYWJsZVZhbHVl
cywgMCB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25z
dHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rv
ciIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0
b3JUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzQ29uc3RydWN0b3IpIH07CisKK0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1
Y3Rvcjo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIDogRE9NQ29u
c3RydWN0b3JPYmplY3Qoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCit7Cit9CisKK3ZvaWQgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICBBU1NFUlQoaW5oZXJp
dHMoJnNfaW5mbykpOworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90
b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsK
KyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOwor
fQorCitib29sIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Z2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRp
Y1ZhbHVlU2xvdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IsIEpTRE9N
V3JhcHBlcj4oZXhlYywgJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvclRh
YmxlLCBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oY2Vs
bCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK2Jvb2wgSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc0NvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVz
Y3JpcHRvcjxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IsIEpTRE9NV3Jh
cHBlcj4oZXhlYywgJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvclRhYmxl
LCBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4ob2JqZWN0
KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVj
dEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciogY2FzdGVkVGhpcyA9IGpzQ2Fz
dDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUo
KSk7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwor
ICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAs
IERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5H
X1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJlZlB0cjxUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycz4gb2JqZWN0ID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNy
ZWF0ZShzdHJpbmcpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhl
eGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0LmdldCgpKSkpOworfQorCitD
b25zdHJ1Y3RUeXBlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Z2V0
Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQorewor
ICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKKy8q
IEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFs
dWUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZVRhYmxlVmFsdWVzW10gPQor
eworICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQorfTsKKworc3RhdGljIGNvbnN0IEhh
c2hUYWJsZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlVGFibGUgPSB7IDEs
IDAsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGVUYWJsZVZhbHVlcywgMCB9
OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGU6
OnNfaW5mbyA9IHsgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlIiwgJkJhc2U6
OnNfaW5mbywgJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGVUYWJsZSwgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBl
KSB9OworCitKU09iamVjdCogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZTo6
c2VsZihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7Cisg
ICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPihl
eGVjLCBnbG9iYWxPYmplY3QpOworfQorCitjb25zdCBDbGFzc0luZm8gSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6c19pbmZvID0geyAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiLCAm
QmFzZTo6c19pbmZvLCAmSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1RhYmxlLCAwICwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKSB9OworCitKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNz
UmVmUHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiBpbXBsKQorICAgIDogSlNET01XcmFw
cGVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQorICAgICwgbV9pbXBsKGltcGwubGVha1JlZigp
KQoreworfQorCit2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmZpbmlzaENyZWF0
aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bihnbG9iYWxEYXRhKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOworfQorCitKU09i
amVjdCogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlUHJvdG90eXBlKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4g
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZTo6Y3JlYXRlKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworfQorCit2b2lkIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCit7Cisg
ICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0
PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0LT5K
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp+SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cygpOworfQorCitKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp+SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycygpCit7CisgICAgcmVsZWFzZUltcGxJZk5vdE51bGwoKTsKK30KKworYm9v
bCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKK3sKKyAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihjZWxsKTsKKyAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOworICAgIHJl
dHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycywgQmFz
ZT4oZXhlYywgJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUYWJsZSwgdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworYm9vbCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpCit7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4ob2JqZWN0KTsKKyAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOworICAgIHJldHVy
biBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycywg
QmFzZT4oZXhlYywgJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUYWJsZSwgdGhpc09iamVj
dCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKK30KKworSlNWYWx1ZSBqc1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RC
YXNlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyog
ZG9tT2JqZWN0ID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihhc09iamVj
dChzbG90QmFzZSkpOworICAgIHJldHVybiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpn
ZXRDb25zdHJ1Y3RvcihleGVjLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKTsKK30KKworSlNW
YWx1ZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpnZXRDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdl
dERPTUNvbnN0cnVjdG9yPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcj4o
ZXhlYywganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cit9CisKK3N0
YXRpYyBpbmxpbmUgYm9vbCBpc09ic2VydmFibGUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cyoganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycykKK3sKKyAgICBpZiAoanNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycy0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMg
PSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KGhhbmRsZS5nZXQoKS5hc0Nl
bGwoKSk7CisgICAgaWYgKCFpc09ic2VydmFibGUoanNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNP
d25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNv
bnRleHQpCit7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyoganNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4o
aGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkID0gc3Rh
dGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7CisgICAgdW5jYWNoZVdyYXBwZXIo
d29ybGQsIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMtPmltcGwoKSwganNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyk7CisgICAganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy0+cmVs
ZWFzZUltcGwoKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzKiBpbXBsKQoreworICAgIHJldHVybiB3cmFwPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM+KGV4ZWMsIGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisKK1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzKiB0b1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKEpTQzo6SlNWYWx1ZSB2YWx1ZSkK
K3sKKyAgICByZXR1cm4gdmFsdWUuaW5oZXJpdHMoJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM6OnNfaW5mbykgPyBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KGFzT2Jq
ZWN0KHZhbHVlKSktPmltcGwoKSA6IDA7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2YmU5Yzg5NmJiMzc5OGM3NWM0ZjNkOTJj
NDUyZWM1ZmJlMWI2MGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCkBAIC0wLDAg
KzEsMTQzIEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBz
b3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVy
YXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc19oCisjZGVmaW5lIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNf
aAorCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg+CisjaW5j
bHVkZSA8cnVudGltZS9KU09iamVjdC5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycyA6IHB1YmxpYyBKU0RPTVdyYXBwZXIgeworcHVibGljOgorICAgIHR5cGVkZWYg
SlNET01XcmFwcGVyIEJhc2U7CisgICAgc3RhdGljIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiBpbXBs
KQorICAgIHsKKyAgICAgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
PihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5oZWFwKSkgSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyhzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgaW1wbCk7CisgICAgICAgIHB0ci0+Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkpOworICAgICAgICByZXR1cm4g
cHRyOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQ
cm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0M6OkpTQ2VsbCopOworICAgIH5KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
KCk7CisgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKKworICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShn
bG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CisgICAgfQorCisgICAgc3RhdGlj
IEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9i
YWxPYmplY3QqKTsKKyAgICBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogaW1wbCgpIGNvbnN0
IHsgcmV0dXJuIG1faW1wbDsgfQorICAgIHZvaWQgcmVsZWFzZUltcGwoKSB7IG1faW1wbC0+ZGVy
ZWYoKTsgbV9pbXBsID0gMDsgfQorCisgICAgdm9pZCByZWxlYXNlSW1wbElmTm90TnVsbCgpIHsg
aWYgKG1faW1wbCkgeyBtX2ltcGwtPmRlcmVmKCk7IG1faW1wbCA9IDA7IH0gfQorCitwcml2YXRl
OgorICAgIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBtX2ltcGw7Citwcm90ZWN0ZWQ6Cisg
ICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xv
YmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4pOworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpKU0dsb2JhbERhdGEmKTsKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdCB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxl
bmd0aElzTm90WmVybyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworfTsKKworY2xhc3MgSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVy
IHsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpOworICAg
IHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBj
b250ZXh0KTsKK307CisKK2lubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVy
KERPTVdyYXBwZXJXb3JsZCosIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKikKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNPd25lciwganNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVyLCAoKSk7CisgICAgcmV0dXJuICZqc1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzT3duZXI7Cit9CisKK2lubGluZSB2b2lkKiB3cmFwcGVyQ29u
dGV4dChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyop
Cit7CisgICAgcmV0dXJuIHdvcmxkOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqKTsK
K1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB0b1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
KEpTQzo6SlNWYWx1ZSk7CisKK2NsYXNzIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90
b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIEpTQzo6SlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0
KiBzZWxmKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRp
YyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0
ZUNlbGw8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZT4oZ2xvYmFsRGF0YS5o
ZWFwKSkgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZShnbG9iYWxEYXRhLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xv
YmFsRGF0YSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0
IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksICZzX2luZm8pOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzUHJvdG90eXBlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgOiBKU0M6OkpTTm9uRmlu
YWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKSB7IH0KK3Byb3RlY3RlZDoKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
K307CisKK2NsYXNzIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciA6IHB1
YmxpYyBET01Db25zdHJ1Y3Rvck9iamVjdCB7Citwcml2YXRlOgorICAgIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0Kik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xv
YmFsT2JqZWN0Kik7CisKK3B1YmxpYzoKKyAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0
IEJhc2U7CisgICAgc3RhdGljIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rv
ciogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsKKyAgICAgICAgSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcj4o
KmV4ZWMtPmhlYXAoKSkpIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcihz
dHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZXhl
YywgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0
aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAg
eworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgJnNfaW5mbyk7CisgICAgfQorcHJvdGVjdGVkOgorICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90IHwgSlNDOjpJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBET01Db25zdHJ1Y3Rvck9iamVjdDo6
U3RydWN0dXJlRmxhZ3M7CisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKEpTQzo6RXhlY1N0YXRl
Kik7CisgICAgc3RhdGljIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6
SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3REYXRhJik7Cit9OworCisvLyBBdHRyaWJ1dGVzCisKK0pT
Qzo6SlNWYWx1ZSBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxNWI3YmM1N2RhN2IxNmRmNzM0ZmJhYTY3NWRm
NjJiN2M4MWJiMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCkBAIC0wLDAg
KzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1w
b3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgorCisjaWYgV0VCS0lUX1ZFUlNJT05fTUFYX0FMTE9X
RUQgPj0gV0VCS0lUX1ZFUlNJT05fTEFURVNUCisKK0BpbnRlcmZhY2UgRE9NVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMgOiBET01PYmplY3QKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwMjliYjJi
ZjdlYTgwYTYxNDU1OTQ5NGNmNmM3OGMxZDU4MWQyYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5tbQpAQCAtMCwwICsxLDg3IEBACisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQg
b2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICogVGhpcyBmaWxlIGhhcyBiZWVu
IGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJET01JbnRlcm5hbC5oIgorCisjaW1wb3J0
ICJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIgorCisjaW1wb3J0ICJET01CbG9iSW50
ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTUNTU1J1bGVJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NQ1NT
VmFsdWVJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NRXZlbnRJbnRlcm5hbC5oIgorI2ltcG9ydCAi
RE9NTm9kZUludGVybmFsLmgiCisjaW1wb3J0ICJET01TdHlsZVNoZWV0SW50ZXJuYWwuaCIKKyNp
bXBvcnQgIkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzSW50ZXJuYWwuaCIKKyNpbXBvcnQg
IkV4Y2VwdGlvbkhhbmRsZXJzLmgiCisjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIK
KyNpbXBvcnQgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgiCisjaW1wb3J0ICJUaHJlYWRD
aGVjay5oIgorI2ltcG9ydCAiV2ViQ29yZU9iakNFeHRyYXMuaCIKKyNpbXBvcnQgIldlYlNjcmlw
dE9iamVjdFByaXZhdGUuaCIKKyNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKworI2RlZmluZSBJTVBM
IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihf
aW50ZXJuYWwpCisKK0BpbXBsZW1lbnRhdGlvbiBET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cworCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBpZiAoV2ViQ29yZU9iakNTY2hlZHVsZURlYWxs
b2NhdGVPbk1haW5UaHJlYWQoW0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIGNsYXNzXSwg
c2VsZikpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChfaW50ZXJuYWwpCisgICAgICAgIElN
UEwtPmRlcmVmKCk7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKWZpbmFsaXpl
Cit7CisgICAgaWYgKF9pbnRlcm5hbCkKKyAgICAgICAgSU1QTC0+ZGVyZWYoKTsKKyAgICBbc3Vw
ZXIgZmluYWxpemVdOworfQorCitAZW5kCisKK1dlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzKiBjb3JlKERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzICp3cmFwcGVyKQorewor
ICAgIHJldHVybiB3cmFwcGVyID8gcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyo+KHdyYXBwZXItPl9pbnRlcm5hbCkgOiAwOworfQorCitET01UZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyAqa2l0KFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzKiB2YWx1ZSkKK3sKKyAgICB7IERPTV9BU1NFUlRfTUFJTl9USFJFQUQoKTsgV2ViQ29y
ZVRocmVhZFZpb2xhdGlvbkNoZWNrUm91bmRPbmUoKTsgfTsKKyAgICBpZiAoIXZhbHVlKQorICAg
ICAgICByZXR1cm4gbmlsOworICAgIGlmIChET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyAq
d3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQorICAgICAgICByZXR1cm4gW1t3cmFwcGVy
IHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
ICp3cmFwcGVyID0gW1tET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyBhbGxvY10gX2luaXRd
OworICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50
ZXJuYWwqPih2YWx1ZSk7CisgICAgdmFsdWUtPnJlZigpOworICAgIGFkZERPTVdyYXBwZXIod3Jh
cHBlciwgdmFsdWUpOworICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0ludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0ludGVybmFs
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOGZlY2M4MWMzOTZiZDBhODI1ZGE3YWJiMDExZjJjNTY3MmE2YjRlZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzSW50ZXJuYWwuaApAQCAtMCwwICsxLDM4
IEBACisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBw
cm9qZWN0LgorICogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5k
aW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8V2ViQ29yZS9ET01UZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oPgorCisjaWYgV0VCS0lUX1ZFUlNJT05fTUFYX0FMTE9X
RUQgPj0gV0VCS0lUX1ZFUlNJT05fTEFURVNUCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBj
bGFzcyBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczsKK30KKworV2ViQ29yZTo6VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMqIGNvcmUoRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgKik7
CitET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyAqa2l0KFdlYkNvcmU6OlRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKik7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmEzODZmNWI5N2JkZDIyNmMxOTExMTUwOTFiMDBiOTBkMzky
N2RkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5pZGwKQEAgLTAsMCArMSwzNCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXN0
ckFyZywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBD
b21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVzdHJBcmcsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworWworICAgIENvbnN0cnVjdG9yKGluIEFycmF5QnVmZmVyIGFycmF5QnVmZmVyKSwKKyAg
ICBDb25zdHJ1Y3RvcihpbiBBcnJheUJ1ZmZlclZpZXcgYXJyYXlCdWZmZXJWaWV3KSwKKyAgICBD
b25zdHJ1Y3RvcihpbiBCbG9iIGJsb2IpLAorICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyBz
dHJpbmcpLAorXSBpbnRlcmZhY2UgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgeworfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmlkbAppbmRleCBj
NmQ0OTNkZWZmNDBjOTI0ODM5ZGM0NWU5ZWU5ZmIzNTI2MGVlMTM2Li42ODdlYWM1NDc3MTM1NmY2
MDEyZWU3Nzc5OGMyMmNjMDAwMzg3NjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuaWRsCkBAIC0yNyw3ICsyNyw2IEBACiAvLyBjaGFuZ2VzIGlu
IGl0cyBvdXB1dC4KIFsKICAgICBDb25kaXRpb25hbD1Db25kaXRpb24xfENvbmRpdGlvbjIsCi0g
ICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIGhlbGxvLCBpbiBTZXJpYWxpemVkU2NyaXB0VmFs
dWUgdmFsdWUpLAogICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyBoZWxsbywgaW4gW1RyYW5z
ZmVyTGlzdD10cmFuc2Zlckxpc3RdIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBkYXRhLCBpbiBbT3B0
aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBBcnJheSB0cmFuc2Zlckxpc3QpLAogXSBpbnRlcmZh
Y2UgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSB7CiAgICAgYXR0cmlidXRlIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjU0NzZjMWQxNDEzODg3ZTRjYzIxYmFjZWQ3
NWE0MDU5OGQyYWNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBAIC0wLDAg
KzEsMjEyIEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBz
b3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVy
YXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICAgIEJv
c3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIKKworI2luY2x1ZGUgIkJpbmRp
bmdTdGF0ZS5oIgorI2luY2x1ZGUgIkNvbnRleHRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXMuaCIKKyNpbmNsdWRlICJWOEFycmF5QnVmZmVyLmgiCisjaW5jbHVkZSAiVjhBcnJh
eUJ1ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEJsb2Iu
aCIKKyNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKKyNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIu
aD4KKyNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVkZSA8d3RmL1VudXNl
ZFBhcmFtLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV3JhcHBlclR5cGVJbmZvIFY4VGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmluZm8gPSB7IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM6OkdldFRlbXBsYXRlLCBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpkZXJlZk9i
amVjdCwgMCwgMCwgVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6aW5zdGFsbFBlckNvbnRl
eHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9Owor
CituYW1lc3BhY2UgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNWOEludGVybmFsIHsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgVjhfVVNFKFQpIHsgfQorCit9IC8vIG5hbWVzcGFjZSBU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Y4SW50ZXJuYWwKKwordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yMUNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuQ29uc3RydWN0b3IxIik7CisgICAgCisgICAgRVhDRVBUSU9OX0JM
T0NLKEFycmF5QnVmZmVyKiwgYXJyYXlCdWZmZXIsIFY4QXJyYXlCdWZmZXI6Okhhc0luc3RhbmNl
KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpID8g
VjhBcnJheUJ1ZmZlcjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSkgOiAwKTsK
KworICAgIFJlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbCA9IFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoYXJyYXlCdWZmZXIpOworICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CisKKyAgICBWOERPTVdyYXBwZXI6
OnNldERPTVdyYXBwZXIod3JhcHBlciwgJmluZm8sIGltcGwuZ2V0KCkpOworICAgIFY4RE9NV3Jh
cHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltcGwucmVsZWFzZSgpLCB3cmFwcGVyLCBh
cmdzLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHdyYXBwZXI7Cit9CisKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjJDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLlRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLkNvbnN0cnVjdG9yMiIpOworICAgIAorICAgIEVYQ0VQ
VElPTl9CTE9DSyhBcnJheUJ1ZmZlclZpZXcqLCBhcnJheUJ1ZmZlclZpZXcsIFY4QXJyYXlCdWZm
ZXJWaWV3OjpIYXNJbnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZh
dWx0SXNVbmRlZmluZWQpKSA/IFY4QXJyYXlCdWZmZXJWaWV3Ojp0b05hdGl2ZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1
bHRJc1VuZGVmaW5lZCkpKSA6IDApOworCisgICAgUmVmUHRyPFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzPiBpbXBsID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZShhcnJheUJ1
ZmZlclZpZXcpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9s
ZGVyKCk7CisKKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIod3JhcHBlciwgJmluZm8s
IGltcGwuZ2V0KCkpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0
KGltcGwucmVsZWFzZSgpLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJu
IHdyYXBwZXI7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzOjpjb25zdHJ1Y3RvcjNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLkNvbnN0
cnVjdG9yMyIpOworICAgIAorICAgIEVYQ0VQVElPTl9CTE9DSyhCbG9iKiwgYmxvYiwgVjhCbG9i
OjpIYXNJbnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNV
bmRlZmluZWQpKSA/IFY4QmxvYjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSkg
OiAwKTsKKworICAgIFJlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbCA9IFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoYmxvYik7CisgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKKworICAgIFY4RE9NV3JhcHBlcjo6
c2V0RE9NV3JhcHBlcih3cmFwcGVyLCAmaW5mbywgaW1wbC5nZXQoKSk7CisgICAgVjhET01XcmFw
cGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoaW1wbC5yZWxlYXNlKCksIHdyYXBwZXIsIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gd3JhcHBlcjsKK30KKwordjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yNENhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuQ29uc3RydWN0b3I0Iik7CisgICAgCisgICAgU1RSSU5H
X1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjw+LCBzdHJpbmcsIE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpOworCisg
ICAgUmVmUHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiBpbXBsID0gVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZShzdHJpbmcpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CisKKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdy
YXBwZXIod3JhcHBlciwgJmluZm8sIGltcGwuZ2V0KCkpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0
SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltcGwucmVsZWFzZSgpLCB3cmFwcGVyLCBhcmdzLkdldElz
b2xhdGUoKSk7CisgICAgcmV0dXJuIHdyYXBwZXI7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuQ29uc3RydWN0b3IiKTsKKyAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RD
YWxsKCkpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1
Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIik7CisKKyAgICBpZiAoQ29uc3Ry
dWN0b3JNb2RlOjpjdXJyZW50KCkgPT0gQ29uc3RydWN0b3JNb2RlOjpXcmFwRXhpc3RpbmdPYmpl
Y3QpCisgICAgICAgIHJldHVybiBhcmdzLkhvbGRlcigpOworCisgICAgaWYgKChhcmdzLkxlbmd0
aCgpID09IDEgJiYgKFY4QXJyYXlCdWZmZXI6Okhhc0luc3RhbmNlKGFyZ3NbMF0pKSkpCisgICAg
ICAgIHJldHVybiBjb25zdHJ1Y3RvcjFDYWxsYmFjayhhcmdzKTsKKyAgICBpZiAoKGFyZ3MuTGVu
Z3RoKCkgPT0gMSAmJiAoVjhBcnJheUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKGFyZ3NbMF0pKSkp
CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjJDYWxsYmFjayhhcmdzKTsKKyAgICBpZiAoKGFy
Z3MuTGVuZ3RoKCkgPT0gMSAmJiAoVjhCbG9iOjpIYXNJbnN0YW5jZShhcmdzWzBdKSkpKQorICAg
ICAgICByZXR1cm4gY29uc3RydWN0b3IzQ2FsbGJhY2soYXJncyk7CisgICAgaWYgKGFyZ3MuTGVu
Z3RoKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yNENhbGxiYWNrKGFyZ3MpOwor
ICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcigwLCBhcmdzLkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1RlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjKQorewor
ICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CisKKyAgICB2ODo6TG9jYWw8djg6OlNpZ25h
dHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsKKyAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25m
aWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMiLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczo6aW50ZXJuYWxGaWVsZENvdW50LAorICAgICAgICAwLCAwLAor
ICAgICAgICAwLCAwKTsKKyAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIElu
IHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCisgICAgZGVzYy0+U2V0Q2FsbEhhbmRs
ZXIoVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3JDYWxsYmFjayk7Cisg
ICAgCisKKyAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKKyAgICBkZXNjLT5TZXQodjg6
OlN0cmluZzo6TmV3U3ltYm9sKCJ0b1N0cmluZyIpLCBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50
KCktPnRvU3RyaW5nVGVtcGxhdGUoKSk7CisgICAgcmV0dXJuIGRlc2M7Cit9CisKK3Y4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
OjpHZXRSYXdUZW1wbGF0ZSgpCit7CisgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVy
SXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1h
cDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsK
KyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgICAg
IHJldHVybiByZXN1bHQtPnZhbHVlOworCisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3Bl
OworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0
ZVJhd1RlbXBsYXRlKCk7CisgICAgZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRl
bXBsKTsKKyAgICByZXR1cm4gdGVtcGw7Cit9CisKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpHZXRUZW1wbGF0ZSgpCit7
CisgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQo
KTsKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0g
ZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEt
PnRlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOworCisg
ICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNUZW1wbGF0ZShHZXRSYXdUZW1wbGF0ZSgpKTsKKyAgICBkYXRhLT50ZW1w
bGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgIHJldHVybiB0ZW1wbDsKK30KKworYm9v
bCBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdmFsdWUpCit7CisgICAgcmV0dXJuIEdldFJhd1RlbXBsYXRlKCktPkhhc0luc3Rh
bmNlKHZhbHVlKTsKK30KKworCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6OndyYXBTbG93KFBhc3NSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM+IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXI7
CisgICAgLy8gUGxlYXNlIGRvbid0IGFkZCBhbnkgbW9yZSB1c2VzIG9mIHRoaXMgdmFyaWFibGUu
CisgICAgRG9jdW1lbnQqIGRlcHJlY2F0ZWREb2N1bWVudCA9IDA7CisgICAgVU5VU0VEX1BBUkFN
KGRlcHJlY2F0ZWREb2N1bWVudCk7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250
ZXh0OworICAgIGlmICghY3JlYXRpb25Db250ZXh0LklzRW1wdHkoKSAmJiBjcmVhdGlvbkNvbnRl
eHQtPkNyZWF0aW9uQ29udGV4dCgpICE9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCkpIHsKKyAg
ICAgICAgLy8gRm9yIHBlcmZvcm1hbmNlLCB3ZSBlbnRlciB0aGUgY29udGV4dCBvbmx5IGlmIHRo
ZSBjdXJyZW50bHkgcnVubmluZyBjb250ZXh0CisgICAgICAgIC8vIGlzIGRpZmZlcmVudCBmcm9t
IHRoZSBjb250ZXh0IHRoYXQgd2UgYXJlIGFib3V0IHRvIGVudGVyLgorICAgICAgICBjb250ZXh0
ID0gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KGNyZWF0aW9uQ29udGV4dC0+Q3JlYXRpb25D
b250ZXh0KCkpOworICAgICAgICBBU1NFUlQoIWNvbnRleHQuSXNFbXB0eSgpKTsKKyAgICAgICAg
Y29udGV4dC0+RW50ZXIoKTsKKyAgICB9CisKKyAgICB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpp
bnN0YW50aWF0ZVY4T2JqZWN0KGRlcHJlY2F0ZWREb2N1bWVudCwgJmluZm8sIGltcGwuZ2V0KCkp
OworCisgICAgaWYgKCFjb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgY29udGV4dC0+RXhpdCgp
OworCisgICAgaWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKKyAgICAgICAgcmV0dXJu
IHdyYXBwZXI7CisKKyAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1w
bC5nZXQoKSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9
IFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltcGwsIHdyYXBwZXIsIGlz
b2xhdGUpOworICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCisgICAgICAgIHdyYXBwZXJI
YW5kbGUuTWFya0luZGVwZW5kZW50KCk7CisgICAgcmV0dXJuIHdyYXBwZXI7Cit9CisKK3ZvaWQg
VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6ZGVyZWZPYmplY3Qodm9pZCogb2JqZWN0KQor
eworICAgIHN0YXRpY19jYXN0PFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4ob2JqZWN0KS0+
ZGVyZWYoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjY0NTMwNGI4N2UyZDBjZDNlYzNm
MjMyNTZlZDY2OTEwZjNjYjc2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKQEAg
LTAsMCArMSw4MCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9w
ZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBn
ZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAg
ICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyovCisKKyNpZm5kZWYgVjhUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc19oCisjZGVmaW5lIFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNf
aAorCisjaW5jbHVkZSAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIKKyNpbmNsdWRlICJW
OEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKKyNpbmNsdWRlICJXcmFwcGVy
VHlwZUluZm8uaCIKKyNpbmNsdWRlIDx2OC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgeworcHVibGljOgorICAgIHN0YXRp
YyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7CisgICAgc3RhdGljIGJv
b2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+KTsKKyAgICBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKCk7CisgICAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSgpOwor
ICAgIHN0YXRpYyBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdG9OYXRpdmUodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KG9iamVjdC0+R2V0UG9pbnRlckZyb21J
bnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4KSk7CisgICAgfQorICAgIGlubGlu
ZSBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiA9IDApOworICAgIHN0YXRpYyB2b2lkIGRl
cmVmT2JqZWN0KHZvaWQqKTsKKyAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIGluZm87CisgICAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmKTsKKyAgICBzdGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3VudCA9
IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOworICAgIHN0YXRpYyB2b2lk
IGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyopIHsgfQorICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJD
b250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KSB7IH0KK3By
aXZhdGU6CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcFNsb3coUGFzc1Jl
ZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gY29uc3RydWN0b3IxQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOworICAg
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3IyQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYpOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3Ry
dWN0b3IzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOworICAgIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3I0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYp
OworfTsKKwordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzOjp3cmFwKFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBpbXBsLCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAg
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Y3VycmVu
dChpc29sYXRlKS0+Z2V0KGltcGwpOworICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQor
ICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIFY4VGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM6OndyYXBTbG93KGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9
CisKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKK3sKKyAg
ICBpZiAoIWltcGwpCisgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7Cisg
ICAgcmV0dXJuIFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OndyYXAoaW1wbCwgY3JlYXRp
b25Db250ZXh0LCBpc29sYXRlKTsKK30KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OChQYXNzUmVmUHRyPCBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA+IGltcGwsIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pigp
LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCit7CisgICAgcmV0dXJuIHRvVjgoaW1wbC5nZXQo
KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30KKworfQorCisjZW5kaWYgLy8gVjhUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcAppbmRleCBhNWRlOWE0MjNhZWI1
MWQ2YTRhYTk0MjA0Mjg3MWZiNWU4ZjI3OTI2Li45YzRmYzdmYTE2MjE4NjlmNjFmOGVjNWIwYTAz
ODI5YzllZjhhZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAKQEAgLTUxLDY0ICs1MSw2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViU29ja2V0Ojpjb25z
dHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NU
QVRTKCJET00uV2ViU29ja2V0LkNvbnN0cnVjdG9yIik7Ci0KLSAgICBpZiAoIWFyZ3MuSXNDb25z
dHJ1Y3RDYWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigiRE9NIG9iamVjdCBj
b25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIiwgYXJncy5HZXRJc29s
YXRlKCkpOwotCi0gICAgaWYgKENvbnN0cnVjdG9yTW9kZTo6Y3VycmVudCgpID09IENvbnN0cnVj
dG9yTW9kZTo6V3JhcEV4aXN0aW5nT2JqZWN0KQotICAgICAgICByZXR1cm4gYXJncy5Ib2xkZXIo
KTsKLQotICAgIGlmIChhcmdzLkxlbmd0aCgpID09IDApCi0gICAgICAgIHJldHVybiB0aHJvd05v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLQotICAgIHY4OjpUcnlD
YXRjaCB0cnlDYXRjaDsKLSAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHVybHN0cmluZyA9IGFy
Z3NbMF0tPlRvU3RyaW5nKCk7Ci0gICAgaWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpKQotICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcih0cnlDYXRjaC5FeGNlcHRpb24oKSwgYXJncy5HZXRJc29sYXRl
KCkpOwotICAgIGlmICh1cmxzdHJpbmcuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcihTeW50YXhFcnJvciwgIkVtcHR5IFVSTCIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLQotICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7Ci0gICAgY29uc3QgS1VSTCYgdXJsID0gY29udGV4dC0+Y29tcGxldGVVUkwodG9XZWJD
b3JlU3RyaW5nKHVybHN0cmluZykpOwotCi0gICAgUmVmUHRyPFdlYlNvY2tldD4gd2ViU29ja2V0
ID0gV2ViU29ja2V0OjpjcmVhdGUoY29udGV4dCk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0KLSAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCi0gICAgICAgIHdlYlNvY2tldC0+Y29ubmVj
dCh1cmwsIGVjKTsKLSAgICBlbHNlIHsKLSAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcHJv
dG9jb2xzVmFsdWUgPSBhcmdzWzFdOwotICAgICAgICBpZiAocHJvdG9jb2xzVmFsdWUtPklzQXJy
YXkoKSkgewotICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gcHJvdG9jb2xzOwotICAgICAgICAg
ICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gcHJvdG9jb2xzQXJyYXkgPSB2ODo6TG9jYWw8djg6OkFy
cmF5Pjo6Q2FzdChwcm90b2NvbHNWYWx1ZSk7Ci0gICAgICAgICAgICBmb3IgKHVpbnQzMl90IGkg
PSAwOyBpIDwgcHJvdG9jb2xzQXJyYXktPkxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgICAgICAg
ICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2hQcm90b2NvbDsKLSAgICAgICAgICAgICAgICB2ODo6SGFu
ZGxlPHY4OjpTdHJpbmc+IHByb3RvY29sID0gcHJvdG9jb2xzQXJyYXktPkdldCh2ODo6SW50MzI6
Ok5ldyhpKSktPlRvU3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHRyeUNhdGNoUHJvdG9j
b2wuSGFzQ2F1Z2h0KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHRy
eUNhdGNoUHJvdG9jb2wuRXhjZXB0aW9uKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAgICAgICAg
ICAgICAgICBwcm90b2NvbHMuYXBwZW5kKHRvV2ViQ29yZVN0cmluZyhwcm90b2NvbCkpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgd2ViU29ja2V0LT5jb25uZWN0KHVybCwgcHJvdG9jb2xz
LCBlYyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0
Y2hQcm90b2NvbDsKLSAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gcHJvdG9jb2wg
PSBwcm90b2NvbHNWYWx1ZS0+VG9TdHJpbmcoKTsKLSAgICAgICAgICAgIGlmICh0cnlDYXRjaFBy
b3RvY29sLkhhc0NhdWdodCgpKQotICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHRy
eUNhdGNoUHJvdG9jb2wuRXhjZXB0aW9uKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAgICAgICAg
ICAgIHdlYlNvY2tldC0+Y29ubmVjdCh1cmwsIHRvV2ViQ29yZVN0cmluZyhwcm90b2NvbCksIGVj
KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiBzZXRET01F
eGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLQotICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjpzZXRET01X
cmFwcGVyKHdyYXBwZXIsICZpbmZvLCB3ZWJTb2NrZXQuZ2V0KCkpOwotICAgIFY4RE9NV3JhcHBl
cjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KHdlYlNvY2tldC5yZWxlYXNlKCksIHdyYXBwZXIp
OwotICAgIHJldHVybiB3cmFwcGVyOwotfQotCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJT
b2NrZXQ6OnNlbmRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElO
Q19TVEFUUygiRE9NLldlYlNvY2tldC5zZW5kKCkiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhZTMzZDdmYzhhMDEzNzRj
Y2Q5NjlmZmYyNDg0ZjRjY2ZjM2UzZjc5Li40NGZkMzFiZDE4YmM3NmU3OTYxYmVjYzkzNjUxNWVl
MDVjNWM0ZTg2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTEtMTIgIFRvbW15IFdpZGVu
Zmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBWOCBjdXN0
b20gY29kZSBmb3IgV2ViU29ja2V0cyBjb25zdHJ1Y3RvcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwODAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
S2VudGFybyBIYXJhLgorCisgICAgICAgIEFkZGVkIHRlc3QgZm9yIG51bGwgYXJndW1lbnQgdG8g
V2ViU29ja2V0KHVybCkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3VybC1wYXJzaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3VybC1wYXJzaW5nLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0td2luL3dlYnNvY2tldC90ZXN0cy91cmwtcGFyc2luZy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3
Ni91cmwtcGFyc2luZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtcGFyc2luZy1leHBlY3RlZC50eHQ6
CisKIDIwMTItMTEtMTIgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLCBza2lwIGEgbmV3IGNyYXNoaW5nIHRl
c3QuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3VybC1wYXJzaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvdXJsLXBhcnNpbmctZXhwZWN0ZWQudHh0CmluZGV4IDlkMGM1MTg5
YjA0YzI1ZmFlNDUwZmZlM2YwNzA5MmE1OTYxYmI0YjEuLmU4YTc0ZTIwOTM0ZmYyMDdjY2RlNjJm
NzBmMzgwNTE0N2ZhMTFkZjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvdXJsLXBhcnNpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXBhcnNpbmctZXhwZWN0ZWQu
dHh0CkBAIC0xLDMgKzEsNCBAQAorQ09OU09MRSBNRVNTQUdFOiBJbnZhbGlkIHVybCBmb3IgV2Vi
U29ja2V0IG51bGwKIENPTlNPTEUgTUVTU0FHRTogSW52YWxpZCB1cmwgZm9yIFdlYlNvY2tldCB3
czovL2phdmFzY3JpcHQ6YQogQ09OU09MRSBNRVNTQUdFOiBJbnZhbGlkIHVybCBmb3IgV2ViU29j
a2V0IC9hcHBsZXQKIENPTlNPTEUgTUVTU0FHRTogV3JvbmcgdXJsIHNjaGVtZSBmb3IgV2ViU29j
a2V0IGphdmFzY3JpcHQ6YQpAQCAtOSw2ICsxMCw3IEBAIFRlc3QgV2ViU29ja2V0IFVSTCBwYXJz
aW5nLgogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiBQQVNTIG5ldyBXZWJTb2NrZXQoKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KK1BBU1MgbmV3
IFdlYlNvY2tldChudWxsKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBF
eGNlcHRpb24gMTIuCiBQQVNTIG5ldyBXZWJTb2NrZXQoIndzOi8vamF2YXNjcmlwdDphIikgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgogUEFTUyBu
ZXcgV2ViU29ja2V0KCIvYXBwbGV0IikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJS
OiBET00gRXhjZXB0aW9uIDEyLgogUEFTUyBuZXcgV2ViU29ja2V0KCJqYXZhc2NyaXB0OmEiKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC1w
YXJzaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3VybC1wYXJzaW5nLmh0bWwKaW5kZXggNzNkMzY4YmRjNzI4Yjc1MjgyOTM2OTkwYWQ2ZGY4NTVk
YzU5NTIwOS4uNDQxMzJmNzI3ZWQzMmE4MzhiNDUzNzhhMzhmYTdiZDY2OWQ2NTRiNiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtcGFy
c2luZy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvdXJsLXBhcnNpbmcuaHRtbApAQCAtMTIsNiArMTIsOSBAQCBkZXNjcmlwdGlvbigiVGVzdCBX
ZWJTb2NrZXQgVVJMIHBhcnNpbmcuIik7CiAvLyBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KIHNob3Vs
ZFRocm93KCduZXcgV2ViU29ja2V0KCknKTsKIAorLy8gTnVsbCBVUkwKK3Nob3VsZFRocm93KCdu
ZXcgV2ViU29ja2V0KG51bGwpJyk7CisKIC8vIEludmFsaWQgdXJsIHdpbGwgZmFpbCB0byBiZSBw
YXJzZWQuCiBzaG91bGRUaHJvdygnbmV3IFdlYlNvY2tldCgid3M6Ly9qYXZhc2NyaXB0OmEiKScp
OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vd2Vic29j
a2V0L3Rlc3RzL3VybC1wYXJzaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtLXdpbi93ZWJzb2NrZXQvdGVzdHMvdXJsLXBhcnNpbmctZXhwZWN0ZWQudHh0Cmlu
ZGV4IDg4NzVlZGIzOTllNDE0ZTBkYjdiODc5MDkxNmJkZjllMGIyMzJlY2YuLjFlOTVlNDRlM2I4
NjQwMDFjYWI0MDEzOGJjODJmYWU2ODIyNTA2M2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtLXdpbi93ZWJzb2NrZXQvdGVzdHMvdXJsLXBhcnNpbmctZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi93ZWJzb2NrZXQvdGVz
dHMvdXJsLXBhcnNpbmctZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsNCBAQAorQ09OU09MRSBNRVNT
QUdFOiBXcm9uZyB1cmwgc2NoZW1lIGZvciBXZWJTb2NrZXQgaHR0cDovLzEyNy4wLjAuMTo4MDAw
L3dlYnNvY2tldC90ZXN0cy9oeWJpL251bGwKIENPTlNPTEUgTUVTU0FHRTogSW52YWxpZCB1cmwg
Zm9yIFdlYlNvY2tldCB3czovL2phdmFzY3JpcHQ6YS8KIENPTlNPTEUgTUVTU0FHRTogV3Jvbmcg
dXJsIHNjaGVtZSBmb3IgV2ViU29ja2V0IGh0dHA6Ly8xMjcuMC4wLjE6ODg4MC9hcHBsZXQKIENP
TlNPTEUgTUVTU0FHRTogV3JvbmcgdXJsIHNjaGVtZSBmb3IgV2ViU29ja2V0IGphdmFzY3JpcHQ6
YQpAQCAtOCw2ICs5LDcgQEAgVGVzdCBXZWJTb2NrZXQgVVJMIHBhcnNpbmcuCiAKIE9uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KIAorUEFTUyBuZXcgV2ViU29ja2V0KG51bGwpIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KIFBBU1MgbmV3IFdlYlNv
Y2tldCgid3M6Ly9qYXZhc2NyaXB0OmEiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9F
UlI6IERPTSBFeGNlcHRpb24gMTIuCiBQQVNTIG5ldyBXZWJTb2NrZXQoIi9hcHBsZXQiKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCiBQQVNTIG5l
dyBXZWJTb2NrZXQoImphdmFzY3JpcHQ6YSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFY
X0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYvdXJsLXBhcnNpbmct
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni91cmwtcGFyc2luZy1leHBlY3RlZC50eHQKaW5kZXggOTE5
NWVhZTAzZjEwMzMyZTIyNzdmNDBmMGVkOGI4YmQ1MjhjZTRkNC4uYjUwZTA0ZGZkODkwMzFmMTVh
OTU5M2ZmYzg0OTRkNDY2MjMxZGJmOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni91cmwtcGFyc2luZy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni91cmwtcGFyc2luZy1leHBlY3RlZC50eHQKQEAgLTEs
MyArMSw0IEBACitDT05TT0xFIE1FU1NBR0U6IFdyb25nIHVybCBzY2hlbWUgZm9yIFdlYlNvY2tl
dCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbnVsbAogQ09OU09M
RSBNRVNTQUdFOiBJbnZhbGlkIHVybCBmb3IgV2ViU29ja2V0IHdzOi8vamF2YXNjcmlwdDphLwog
Q09OU09MRSBNRVNTQUdFOiBXcm9uZyB1cmwgc2NoZW1lIGZvciBXZWJTb2NrZXQgaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2FwcGxldAogQ09OU09MRSBNRVNTQUdFOiBXcm9uZyB1cmwgc2NoZW1lIGZv
ciBXZWJTb2NrZXQgamF2YXNjcmlwdDphCkBAIC05LDYgKzEwLDcgQEAgVGVzdCBXZWJTb2NrZXQg
VVJMIHBhcnNpbmcuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIFBBU1MgbmV3IFdlYlNv
Y2tldCgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgor
UEFTUyBuZXcgV2ViU29ja2V0KG51bGwpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VS
UjogRE9NIEV4Y2VwdGlvbiAxMi4KIFBBU1MgbmV3IFdlYlNvY2tldCgid3M6Ly9qYXZhc2NyaXB0
OmEiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIu
CiBQQVNTIG5ldyBXZWJTb2NrZXQoIi9hcHBsZXQiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZ
TlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCiBQQVNTIG5ldyBXZWJTb2NrZXQoImphdmFzY3Jp
cHQ6YSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAx
Mi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXBhcnNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwt
cGFyc2luZy1leHBlY3RlZC50eHQKaW5kZXggZGMyNjgzMWRiYjBkNDhlNmFkZmRjNmM0MjVhNDY4
Mjc3MTQzNmJkOC4uMzU2ZWI2ZTRmODUzZWU2OGM2OTI0OGRiNDNmMTJlYzdiYjhmYzkwZSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS91cmwtcGFyc2luZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtcGFy
c2luZy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw0IEBACitDT05TT0xFIE1FU1NBR0U6IFdyb25n
IHVybCBzY2hlbWUgZm9yIFdlYlNvY2tldCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvbnVsbAogQ09OU09MRSBNRVNTQUdFOiBJbnZhbGlkIHVybCBmb3IgV2ViU29j
a2V0IHdzOi8vamF2YXNjcmlwdDphLwogQ09OU09MRSBNRVNTQUdFOiBXcm9uZyB1cmwgc2NoZW1l
IGZvciBXZWJTb2NrZXQgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2FwcGxldAogQ09OU09MRSBNRVNT
QUdFOiBXcm9uZyB1cmwgc2NoZW1lIGZvciBXZWJTb2NrZXQgamF2YXNjcmlwdDphCkBAIC05LDYg
KzEwLDcgQEAgVGVzdCBXZWJTb2NrZXQgVVJMIHBhcnNpbmcuCiBPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCiAKIFBBU1MgbmV3IFdlYlNvY2tldCgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IE5vdCBlbm91Z2ggYXJndW1lbnRzLgorUEFTUyBuZXcgV2ViU29ja2V0KG51bGwpIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KIFBBU1MgbmV3IFdl
YlNvY2tldCgid3M6Ly9qYXZhc2NyaXB0OmEiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRB
WF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCiBQQVNTIG5ldyBXZWJTb2NrZXQoIi9hcHBsZXQiKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCiBQQVNT
IG5ldyBXZWJTb2NrZXQoImphdmFzY3JpcHQ6YSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lO
VEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4K
</data>

          </attachment>
      

    </bug>

</bugzilla>