<?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>200522</bug_id>
          
          <creation_ts>2019-08-07 16:45:01 -0700</creation_ts>
          <short_desc>[WHLSL] Devirtualize the AST</short_desc>
          <delta_ts>2022-03-31 20:25:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGPU</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>heycam</cc>
    
    <cc>jonlee</cc>
    
    <cc>justin_fan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>rmorisset</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1559378</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-07 16:45:01 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559424</commentid>
    <comment_count>1</comment_count>
      <attachid>375782</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-07 19:54:16 -0700</bug_when>
    <thetext>Created attachment 375782
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559459</commentid>
    <comment_count>2</comment_count>
      <attachid>375791</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-08 01:51:26 -0700</bug_when>
    <thetext>Created attachment 375791
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559654</commentid>
    <comment_count>3</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-08 14:03:04 -0700</bug_when>
    <thetext>Robin had a nice solution on how to solve it:
1. Use a deleter that does dispatch on type.
2. Make various UniqueRef use this custom deleter
3. Make RefCounted accept a custom deleter so Ref&lt;T&gt; Just Works

I think this removes the ugliness that I defined here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559662</commentid>
    <comment_count>4</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-08-08 14:33:52 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #3)
&gt; Robin had a nice solution on how to solve it:
&gt; 1. Use a deleter that does dispatch on type.
&gt; 2. Make various UniqueRef use this custom deleter
&gt; 3. Make RefCounted accept a custom deleter so Ref&lt;T&gt; Just Works
&gt; 
&gt; I think this removes the ugliness that I defined here.

A couple points I&apos;d like to clarify here:
- The custom deleter must downcast the base pointer to the right derived pointer, so then call the default delete.
- we can make the destructor of the base classes protected, making sure we never use the default deleter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559715</commentid>
    <comment_count>5</comment_count>
      <attachid>375856</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-08 16:30:53 -0700</bug_when>
    <thetext>Created attachment 375856
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559782</commentid>
    <comment_count>6</comment_count>
      <attachid>375883</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-08 19:55:30 -0700</bug_when>
    <thetext>Created attachment 375883
WIP

Some of these templates are painful. I don&apos;t think I know how to combine SFINAE with a specialization of the default_delete struct. So I&apos;m just defining it explicitly for each class in the hierarchy, which is less than stellar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559926</commentid>
    <comment_count>7</comment_count>
      <attachid>375929</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-09 10:14:21 -0700</bug_when>
    <thetext>Created attachment 375929
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559928</commentid>
    <comment_count>8</comment_count>
      <attachid>375929</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-09 10:16:03 -0700</bug_when>
    <thetext>Comment on attachment 375929
patch

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

&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLDefaultDelete.h:39
&gt; +#define DEFINE_DEFAULT_DELETE(type) \
&gt; +    namespace std { \
&gt; +        template&lt;&gt; \
&gt; +        struct default_delete&lt;WebCore::WHLSL::AST::type&gt; { \
&gt; +            void operator()(WebCore::WHLSL::AST::type* value) \
&gt; +            { \
&gt; +                WebCore::WHLSL::AST::type::destroy(*value); \
&gt; +            } \
&gt; +        }; \
&gt; +    } \

I wanted to use SFINAE to define these for all subtypes in a particular class hierarchy. However, I couldn&apos;t figure out how to do this. I ran into a bunch of issues, basically:
https://stackoverflow.com/questions/12858839/using-sfinae-for-template-class-specialisation

and this doesn&apos;t work (as it seems it only worked because it was a compiler bug)
https://stackoverflow.com/questions/31213516/stdhash-specialization-using-sfinae/31213703#31213703

So I just succumbed to splatting this out manually for each class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559929</commentid>
    <comment_count>9</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-09 10:16:17 -0700</bug_when>
    <thetext>Attachment 375929 did not pass style-queue:


ERROR: Source/WebCore/workers/WorkerScriptLoader.h:82:  std::default_delete is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 76 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>1559932</commentid>
    <comment_count>10</comment_count>
      <attachid>375930</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-09 10:19:02 -0700</bug_when>
    <thetext>Created attachment 375930
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559935</commentid>
    <comment_count>11</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-09 10:21:23 -0700</bug_when>
    <thetext>Attachment 375930 did not pass style-queue:


ERROR: Source/WebCore/workers/WorkerScriptLoader.h:82:  std::default_delete is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 75 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>1559938</commentid>
    <comment_count>12</comment_count>
      <attachid>375930</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-09 10:22:50 -0700</bug_when>
    <thetext>Comment on attachment 375930
patch

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

&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLDefaultDelete.h:39
&gt; +#define DEFINE_DEFAULT_DELETE(type) \
&gt; +    namespace std { \
&gt; +        template&lt;&gt; \
&gt; +        struct default_delete&lt;WebCore::WHLSL::AST::type&gt; { \
&gt; +            void operator()(WebCore::WHLSL::AST::type* value) \
&gt; +            { \
&gt; +                WebCore::WHLSL::AST::type::destroy(*value); \
&gt; +            } \
&gt; +        }; \
&gt; +    } \

I think I can further optimize this at compile time. Basically, if is_final&lt;type&gt;, just call delete. Else, call destroy().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559965</commentid>
    <comment_count>13</comment_count>
      <attachid>375930</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-08-09 11:40:54 -0700</bug_when>
    <thetext>Comment on attachment 375930
patch

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

&gt; Source/WTF/wtf/UniqueRef.h:43
&gt; +    using Deleter = std::default_delete&lt;T&gt;;

Since std::default_delete&lt;T&gt; is already the default deleter for std::unique_ptr, what is the point to add it explicitly?

&gt; Source/WebCore/ChangeLog:15
&gt; +        that when they&apos;re used inside UniqueRef, unique_ptr, Ref, RefPtr, that

Extra &quot;that&quot; at the end.

&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLPreserveVariableLifetimes.cpp:160
&gt; +            std::unique_ptr&lt;AST::Expression&gt; makePointerExpression(new AST::MakePointerExpression(functionDefinition.codeLocation(), WTFMove(structVariableReference), AST::AddressEscapeMode::DoesNotEscape));

What is the reason for not using std::make_unique anymore here?

&gt;&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLDefaultDelete.h:39
&gt;&gt; +    } \
&gt; 
&gt; I think I can further optimize this at compile time. Basically, if is_final&lt;type&gt;, just call delete. Else, call destroy().

I agree, it would be nice.

&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLExpression.cpp:107
&gt; +    if (is&lt;DotExpression&gt;(*this))

Is there a reason to use is&lt;&gt; instead of switching on the kind?
How does is&lt;&gt; even work without a vtable?

&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLExpression.h:148
&gt; +    CodeLocation codeLocation() const { return CodeLocation(m_codeLocation, m_codeLocation); }

Why are you removing half the information in CodeLocation ?!
Just having the start of the expression is not enough for good error messages.
Consider &quot;(x + y) * z&quot;. If we want to emit an error message for the &apos;+&apos; or for the &apos;*&apos; operation they will have the same starting offset, but not the same end offset.

&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLExpression.h:153
&gt; +    unsigned m_codeLocation;

Once m_codeLocation is again a CodeLocation, there won&apos;t be space here for m_kind.
Please put it after m_typeAnnotation, there are 5 padding bytes there.

&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLNamedType.h:50
&gt; +        , m_codeLocation(location.startOffset())

Same as for Expressions, please keep m_codeLocation a CodeLocation unless you have a good reason.

&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLPropertyAccessExpression.h:-50
&gt; -    virtual ~PropertyAccessExpression() = default;

This is not a concrete class, so please make the destructor protected.

&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLStatement.h:65
&gt; +        : m_codeLocation(codeLocation.startOffset())

Same as for Expression and NamedType: why lose half the information in codeLocation?

&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLType.h:121
&gt; +

extra newline.

&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLUnnamedType.h:50
&gt; +        , m_codeLocation(location.startOffset())

Same comment as for the other classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559973</commentid>
    <comment_count>14</comment_count>
      <attachid>375930</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-09 12:22:21 -0700</bug_when>
    <thetext>Comment on attachment 375930
patch

Attachment 375930 did not pass jsc-ews (mac):
Output: https://webkit-queues.webkit.org/results/12885916

New failing tests:
mozilla-tests.yaml/js1_5/Array/regress-101964.js.mozilla-dfg-eager-no-cjit-validate-phases</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559997</commentid>
    <comment_count>15</comment_count>
      <attachid>375930</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-08-09 13:46:59 -0700</bug_when>
    <thetext>Comment on attachment 375930
patch

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

&gt; Source/WTF/wtf/UniqueRef.h:77
&gt; +    static_assert(sizeof(m_ref) == sizeof(uintptr_t), &quot;Don&apos;t use a stateful deleter.&quot;);

This message could be clearer as to why.

&gt; Source/WebCore/ChangeLog:27
&gt; +        This is a 3ms speedup on compute_boids, which is about a 10% improvement
&gt; +        in the WHLSL compiler.

Nice. Out of curiosity, how much did this effect metal codegen time?

&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLExpression.h:153
&gt; +    unsigned m_codeLocation;

Why is storing only the startOffset ok for these?

&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLNamedType.h:48
&gt; +    NamedType(Kind kind, CodeLocation location, String&amp;&amp; name)

For Statement and Expression, the Kind came last. I think it would be good to maintain consistency.

&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLResolvableType.h:50
&gt; +    ResolvableType(Kind kind)
&gt; +        : Type(kind)
&gt; +    { }

This can probably be protected as well. Should also be marked explicit.

&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLType.h:67
&gt; +    Type(Kind kind)
&gt; +        : m_kind(kind)
&gt; +    { }

Should be explicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560011</commentid>
    <comment_count>16</comment_count>
      <attachid>375930</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-09 14:08:13 -0700</bug_when>
    <thetext>Comment on attachment 375930
patch

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

&gt;&gt; Source/WTF/wtf/UniqueRef.h:43
&gt;&gt; +    using Deleter = std::default_delete&lt;T&gt;;
&gt; 
&gt; Since std::default_delete&lt;T&gt; is already the default deleter for std::unique_ptr, what is the point to add it explicitly?

If I remember correctly, it&apos;s for the constructor below. I can confirm in a few by using godbolt.

&gt;&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLPreserveVariableLifetimes.cpp:160
&gt;&gt; +            std::unique_ptr&lt;AST::Expression&gt; makePointerExpression(new AST::MakePointerExpression(functionDefinition.codeLocation(), WTFMove(structVariableReference), AST::AddressEscapeMode::DoesNotEscape));
&gt; 
&gt; What is the reason for not using std::make_unique anymore here?

because there were compiler errors when casting up to the base class.

&gt;&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLExpression.cpp:107
&gt;&gt; +    if (is&lt;DotExpression&gt;(*this))
&gt; 
&gt; Is there a reason to use is&lt;&gt; instead of switching on the kind?
&gt; How does is&lt;&gt; even work without a vtable?

is&lt;&gt; is defined to be whatever we want it to be. In this case, in our implementation, we just call a function.

I use is&lt;&gt; just because it&apos;s convenient here. is&lt;&gt;&apos;s implementation will branch on kind()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560014</commentid>
    <comment_count>17</comment_count>
      <attachid>375951</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-09 14:08:46 -0700</bug_when>
    <thetext>Created attachment 375951
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560018</commentid>
    <comment_count>18</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-09 14:12:57 -0700</bug_when>
    <thetext>Attachment 375951 did not pass style-queue:


ERROR: Source/WebCore/workers/WorkerScriptLoader.h:82:  std::default_delete is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 76 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>1560025</commentid>
    <comment_count>19</comment_count>
      <attachid>375951</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-08-09 14:15:44 -0700</bug_when>
    <thetext>Comment on attachment 375951
patch

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

r=me

&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLReplaceWith.h:41
&gt; +    Old::destruct(old);

Nice catch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560042</commentid>
    <comment_count>20</comment_count>
      <attachid>375951</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-09 14:32:31 -0700</bug_when>
    <thetext>Comment on attachment 375951
patch

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

&gt; Source/WTF/wtf/UniqueRef.h:47
&gt; +        : m_ref(other.m_ref.release())

this is the only line needed. This nicely allows us to cast downwards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560055</commentid>
    <comment_count>21</comment_count>
      <attachid>375963</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-09 14:45:53 -0700</bug_when>
    <thetext>Created attachment 375963
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560057</commentid>
    <comment_count>22</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-09 14:49:00 -0700</bug_when>
    <thetext>Attachment 375963 did not pass style-queue:


ERROR: Source/WebCore/workers/WorkerScriptLoader.h:82:  std::default_delete is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 76 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>1560113</commentid>
    <comment_count>23</comment_count>
      <attachid>375963</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-09 16:30:36 -0700</bug_when>
    <thetext>Comment on attachment 375963
patch for landing

Clearing flags on attachment: 375963

Committed r248488: &lt;https://trac.webkit.org/changeset/248488&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560114</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-09 16:30:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560115</commentid>
    <comment_count>25</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-09 16:31:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/54147553&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560146</commentid>
    <comment_count>26</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-09 18:03:05 -0700</bug_when>
    <thetext>build fix in:
https://trac.webkit.org/changeset/248493/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375782</attachid>
            <date>2019-08-07 19:54:16 -0700</date>
            <delta_ts>2019-08-08 01:51:26 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>83598</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODM5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE5LTA4LTA3ICBTYWFtIEJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0gUHJ1bmUgdW5yZWFj
aGFibGUgc3RkbGliIGZ1bmN0aW9ucyBhZnRlciB0aGUgQ2hlY2tlciBydW5zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1MTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBSb2JpbiBNb3Jpc3NldC4KKworICAgICAgICBXZSBub3cgcHJ1bmUgdW5yZWFj
aGFibGUgc3RkbGliIGZ1bmN0aW9ucyBhZnRlciB0aGUgY2hlY2tlciBydW5zLiBXZSBtdXN0Cisg
ICAgICAgIGRvIHRoaXMgYWZ0ZXIgdGhlIGNoZWNrZXIgcnVucyBiZWNhdXNlIHRoYXQncyB3aGVu
IHdlIHJlc29sdmUgYWxsIHJlbWFpbmluZworICAgICAgICBmdW5jdGlvbiBjYWxscy4gV2hpbGUg
d2UgY2FuJ3QgcHJ1bmUgdW5yZWFjaGFibGUgdXNlciBjb2RlLCBiZWNhdXNlIHdlIG11c3QKKyAg
ICAgICAgc3RpbGwgcmVwb3J0IGVycm9ycyBpbiBpdCwgd2UgY2FuIHBydW5lIHVucmVhY2hhYmxl
IHN0YW5kYXJkIGxpYnJhcnkgY29kZQorICAgICAgICBiZWNhdXNlIHdlIGtub3cgYSBwcmlvcmkg
dGhhdCBpdCBoYXMgbm8gZXJyb3JzLiBUaGlzIGlzIGEgMTBtcyBlbmQtdG8tZW5kCisgICAgICAg
IHNwZWVkdXAgaW4gY29tcHV0ZV9ib2lkcy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUHJlcGFyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6cHJlcGFyZVNo
YXJlZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hh
YmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6cHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucyk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25zLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wOC0wNyAgRGV2
aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
VW5jYXVnaHQgRXhjZXB0aW9uOiBUaW1lbGluZUFnZW50IGFscmVhZHkgZW5hYmxlZApJbmRleDog
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQJKHJldmlzaW9uIDI0ODMyOSkKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNiArMzEyLDcgQEAgTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xBU1REdW1wZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEluZmVyVHlw
ZXMuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcAogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBydW5l
VW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuY3BwCiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTENoZWNrZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEdhdGhlckVudHJ5
UG9pbnRJdGVtcy5jcHAKQEAgLTM0MSw2ICszNDIsNyBAQCBNb2R1bGVzL3dlYmdwdS9XSExTTC9N
ZXRhbC9XSExTTE5hdGl2ZVR5CiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFZlcnRl
eEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMRnVu
Y3Rpb25TdGFnZUNoZWNrZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBl
QXJndW1lbnQuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmNw
cAogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmNwcAogTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHAKIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5jcHAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xDaGVja2VyLmNwcAkocmV2aXNpb24gMjQ4MzkyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiAr
NjQsOSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAorI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CisjaW5jbHVkZSA8d3Rm
L1Njb3BlLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIFdITFNMIHsKQEAg
LTU2Nyw2ICs1NzAsNyBAQCBzdGF0aWMgYm9vbCBjaGVja09wZXJhdG9yT3ZlcmxvYWQoY29uc3Qg
CiAKIGNsYXNzIENoZWNrZXIgOiBwdWJsaWMgVmlzaXRvciB7CiBwdWJsaWM6CisgICAgZG91Ymxl
IHRpbWUgeyAwIH07CiAgICAgQ2hlY2tlcihjb25zdCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBQ
cm9ncmFtJiBwcm9ncmFtKQogICAgICAgICA6IG1faW50cmluc2ljcyhpbnRyaW5zaWNzKQogICAg
ICAgICAsIG1fcHJvZ3JhbShwcm9ncmFtKQpAQCAtMTE3OCw2ICsxMTgyLDExIEBAIHZvaWQgQ2hl
Y2tlcjo6ZmluaXNoVmlzaXRpbmcoQVNUOjpQcm9wZXIKICAgICBhdXRvIGJhc2VJbmZvID0gcmVj
dXJzZUFuZEdldEluZm8ocHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmJhc2UoKSk7CiAgICAgaWYg
KCFiYXNlSW5mbykKICAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzdGFydCA9IE1vbm90b25p
Y1RpbWU6Om5vdygpOworICAgIGF1dG8gY291bnRUaW1lID0gbWFrZVNjb3BlRXhpdChbJl0gewor
ICAgICAgICB0aW1lICs9IChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0KS5taWxsaXNlY29u
ZHMoKTsKKyAgICB9KTsKICAgICBhdXRvIGJhc2VVbm5hbWVkVHlwZSA9IGNvbW1pdChiYXNlSW5m
by0+cmVzb2x2aW5nVHlwZSk7CiAgICAgaWYgKCFiYXNlVW5uYW1lZFR5cGUpIHsKICAgICAgICAg
c2V0RXJyb3IoRXJyb3IoIkNhbm5vdCByZXNvbHZlIHRoZSB0eXBlIG9mIHRoZSBiYXNlIG9mIGEg
cHJvcGVydHkgYWNjZXNzIGV4cHJlc3Npb24uIiwgcHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmNv
ZGVMb2NhdGlvbigpKSk7CkBAIC0xNjk3LDcgKzE3MDYsOSBAQCBFeHBlY3RlZDx2b2lkLCBFcnJv
cj4gY2hlY2soUHJvZ3JhbSYgcHJvCiAgICAgY2hlY2tlci5jaGVja0Vycm9yQW5kVmlzaXQocHJv
Z3JhbSk7CiAgICAgaWYgKGNoZWNrZXIuaGFzRXJyb3IoKSkKICAgICAgICAgcmV0dXJuIGNoZWNr
ZXIucmVzdWx0KCk7Ci0gICAgcmV0dXJuIGNoZWNrZXIuYXNzaWduVHlwZXMoKTsKKyAgICBhdXRv
IHJlc3VsdCA9IGNoZWNrZXIuYXNzaWduVHlwZXMoKTsKKyAgICBkYXRhTG9nTG4oInJlc29sdmVG
dW5jdGlvbiB0aW1lOiAiLCBjaGVja2VyLnRpbWUsICIgbXMiKTsKKyAgICByZXR1cm4gcmVzdWx0
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXSExTTApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3BwCShyZXZpc2lvbiAyNDgz
OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiV0hMU0xQcmVz
ZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmgiCiAjaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCiAjaW5j
bHVkZSAiV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmgiCisjaW5jbHVkZSAiV0hMU0xQcnVuZVVucmVh
Y2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiV0hMU0xSZWN1cnNp
b25DaGVja2VyLmgiCiAjaW5jbHVkZSAiV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5oIgogI2lu
Y2x1ZGUgIldITFNMU2VtYW50aWNNYXRjaGVyLmgiCkBAIC02MSw5ICs2Miw5IEBAIG5hbWVzcGFj
ZSBXSExTTCB7CiBzdGF0aWMgY29uc3RleHByIGJvb2wgZHVtcEFTVEJlZm9yZUVhY2hQYXNzID0g
ZmFsc2U7CiBzdGF0aWMgY29uc3RleHByIGJvb2wgZHVtcEFTVEFmdGVyUGFyc2luZyA9IGZhbHNl
Owogc3RhdGljIGNvbnN0ZXhwciBib29sIGR1bXBBU1RBdEVuZCA9IGZhbHNlOwotc3RhdGljIGNv
bnN0ZXhwciBib29sIGFsd2F5c0R1bXBQYXNzRmFpbHVyZXMgPSBmYWxzZTsKK3N0YXRpYyBjb25z
dGV4cHIgYm9vbCBhbHdheXNEdW1wUGFzc0ZhaWx1cmVzID0gdHJ1ZTsKIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBkdW1wUGFzc0ZhaWx1cmUgPSBkdW1wQVNUQmVmb3JlRWFjaFBhc3MgfHwgZHVtcEFT
VEFmdGVyUGFyc2luZyB8fCBkdW1wQVNUQXRFbmQgfHwgYWx3YXlzRHVtcFBhc3NGYWlsdXJlczsK
LXN0YXRpYyBjb25zdGV4cHIgYm9vbCBkdW1wUGhhc2VUaW1lcyA9IGZhbHNlOworc3RhdGljIGNv
bnN0ZXhwciBib29sIGR1bXBQaGFzZVRpbWVzID0gdHJ1ZTsKIAogc3RhdGljIGNvbnN0ZXhwciBi
b29sIHBhcnNlRnVsbFN0YW5kYXJkTGlicmFyeSA9IGZhbHNlOwogCkBAIC0xODMsNiArMTg0LDcg
QEAgc3RhdGljIEV4cGVjdGVkPFByb2dyYW0sIFN0cmluZz4gcHJlcGFyZQogICAgIENIRUNLX1BB
U1MoY2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMsIHByb2dyYW0pOwogCiAgICAgQ0hFQ0tfUEFTUyhj
aGVjaywgcHJvZ3JhbSk7CisgICAgUlVOX1BBU1MocHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGli
cmFyeUZ1bmN0aW9ucywgcHJvZ3JhbSk7CiAKICAgICBSVU5fUEFTUyhjaGVja0xpdGVyYWxUeXBl
cywgcHJvZ3JhbSk7CiAgICAgQ0hFQ0tfUEFTUyhjaGVja1RleHR1cmVSZWZlcmVuY2VzLCBwcm9n
cmFtKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJl
cGFyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMUHJlcGFyZS5oCShyZXZpc2lvbiAyNDgzOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyAr
MzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBXSExTTCB7CiAKLWNvbnN0
ZXhwciBib29sIGR1bXBNZXRhbENvbXBpbGVUaW1lcyA9IGZhbHNlOworY29uc3RleHByIGJvb2wg
ZHVtcE1ldGFsQ29tcGlsZVRpbWVzID0gdHJ1ZTsKIAogc3RydWN0IFJlbmRlclByZXBhcmVSZXN1
bHQgewogICAgIFN0cmluZ0J1aWxkZXIgbWV0YWxTb3VyY2U7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJh
cnlGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5j
cHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlv
bnMuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEFTVC5oIgorI2lu
Y2x1ZGUgIldITFNMUHJvZ3JhbS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFj
ZSBXSExTTCB7CisKK2NsYXNzIFJlYWNoYWJsZVN0ZGxpYkZ1bmN0aW9ucyBmaW5hbCA6IHB1Ymxp
YyBWaXNpdG9yIHsKK3B1YmxpYzoKKyAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0
aW9uJiBmdW5jdGlvbikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0g
bV9yZWFjaGFibGVGdW5jdGlvbnMuYWRkKCZmdW5jdGlvbik7CisgICAgICAgIGlmIChhZGRSZXN1
bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIFZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uKTsKKyAg
ICB9CisKKyAgICB2b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHByZXNzaW9u
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgVmlzaXRvcjo6dmlzaXQoY2FsbEV4cHJlc3Npb24p
OworICAgICAgICBpZiAoaXM8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KGNhbGxFeHByZXNzaW9u
LmZ1bmN0aW9uKCkpKQorICAgICAgICAgICAgdmlzaXQoZG93bmNhc3Q8QVNUOjpGdW5jdGlvbkRl
ZmluaXRpb24+KGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpKTsKKyAgICB9CisKKyAgICB2b2lk
IHZpc2l0KEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJiBleHByZXNzaW9uKSBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgYXV0byB2aXNpdEZ1bmN0aW9uID0gWyZdIChBU1Q6OkZ1bmN0aW9u
RGVjbGFyYXRpb24qIGZ1bmN0aW9uKSB7CisgICAgICAgICAgICBpZiAoIWZ1bmN0aW9uKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmIChpczxBU1Q6OkZ1bmN0aW9uRGVm
aW5pdGlvbj4oKmZ1bmN0aW9uKSkKKyAgICAgICAgICAgICAgICB2aXNpdChkb3duY2FzdDxBU1Q6
OkZ1bmN0aW9uRGVmaW5pdGlvbj4oKmZ1bmN0aW9uKSk7CisgICAgICAgIH07CisKKyAgICAgICAg
dmlzaXRGdW5jdGlvbihleHByZXNzaW9uLmdldHRlckZ1bmN0aW9uKCkpOworICAgICAgICB2aXNp
dEZ1bmN0aW9uKGV4cHJlc3Npb24uYW5kZXJGdW5jdGlvbigpKTsKKyAgICAgICAgdmlzaXRGdW5j
dGlvbihleHByZXNzaW9uLnRocmVhZEFuZGVyRnVuY3Rpb24oKSk7CisgICAgICAgIHZpc2l0RnVu
Y3Rpb24oZXhwcmVzc2lvbi5zZXR0ZXJGdW5jdGlvbigpKTsKKworICAgICAgICBWaXNpdG9yOjp2
aXNpdChleHByZXNzaW9uKTsKKyAgICB9CisKKyAgICBIYXNoU2V0PEFTVDo6RnVuY3Rpb25EZWZp
bml0aW9uKj4gdGFrZVJlYWNoYWJsZUZ1bmN0aW9ucygpIHsgcmV0dXJuIFdURk1vdmUobV9yZWFj
aGFibGVGdW5jdGlvbnMpOyB9CisKK3ByaXZhdGU6CisgICAgSGFzaFNldDxBU1Q6OkZ1bmN0aW9u
RGVmaW5pdGlvbio+IG1fcmVhY2hhYmxlRnVuY3Rpb25zOworfTsKKwordm9pZCBwcnVuZVVucmVh
Y2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zKFByb2dyYW0mIHByb2dyYW0pCit7CisgICAg
UmVhY2hhYmxlU3RkbGliRnVuY3Rpb25zIHJlYWNoYWJsZVN0ZGxpYkZ1bmN0aW9uczsKKyAgICBW
ZWN0b3I8VW5pcXVlUmVmPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPj4gZnVuY3Rpb25EZWZpbml0
aW9ucyA9IFdURk1vdmUocHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpOworICAgIGZvciAo
YXV0byYgZnVuY3Rpb24gOiBmdW5jdGlvbkRlZmluaXRpb25zKSB7CisgICAgICAgIGlmIChmdW5j
dGlvbi0+cGFyc2luZ01vZGUoKSAhPSBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KQorICAg
ICAgICAgICAgcmVhY2hhYmxlU3RkbGliRnVuY3Rpb25zLnZpc2l0KGZ1bmN0aW9uLmdldCgpKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWZ1bmN0aW9uLT5lbnRy
eVBvaW50VHlwZSgpKTsKKyAgICB9CisKKyAgICBhdXRvIHJlYWNoYWJsZUZ1bmN0aW9ucyA9IHJl
YWNoYWJsZVN0ZGxpYkZ1bmN0aW9ucy50YWtlUmVhY2hhYmxlRnVuY3Rpb25zKCk7CisgICAgVmVj
dG9yPFVuaXF1ZVJlZjxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4+IG5ld0Z1bmN0aW9uRGVmaW5p
dGlvbnM7CisgICAgZm9yIChVbmlxdWVSZWY8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+JiBlbnRy
eSA6IGZ1bmN0aW9uRGVmaW5pdGlvbnMpIHsKKyAgICAgICAgaWYgKHJlYWNoYWJsZUZ1bmN0aW9u
cy5jb250YWlucygmZW50cnkuZ2V0KCkpKQorICAgICAgICAgICAgbmV3RnVuY3Rpb25EZWZpbml0
aW9ucy5hcHBlbmQoV1RGTW92ZShlbnRyeSkpOworICAgIH0KKworICAgIHByb2dyYW0uZnVuY3Rp
b25EZWZpbml0aW9ucygpID0gV1RGTW92ZShuZXdGdW5jdGlvbkRlZmluaXRpb25zKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV0hMU0wKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1bmVV
bnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1bmVVbnJlYWNoYWJsZVN0
YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworY2xhc3MgUHJvZ3JhbTsKKwor
dm9pZCBwcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zKFByb2dyYW0mKTsK
KworfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xWaXNpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuY3BwCShyZXZpc2lvbiAyNDgzOTIpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMzEsNiArMzMxLDU1IEBAIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpT
dGF0ZW1lbnQmIHN0YXQKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6
VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpOwogICAgIGVsc2UKICAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6V2hpbGVMb29wPihzdGF0ZW1l
bnQpKTsKKworICAgIC8qCisgICAgc3dpdGNoIChzdGF0ZW1lbnQua2luZCgpKSB7CisgICAgY2Fz
ZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6QmxvY2s6CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChkb3duY2FzdDxBU1Q6OkJsb2NrPihzdGF0ZW1lbnQpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6QnJlYWs6CisgICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChkb3duY2FzdDxBU1Q6OkJyZWFrPihzdGF0ZW1lbnQpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6Q29udGludWU6CisgICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkNvbnRpbnVlPihzdGF0ZW1lbnQpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6RG9XaGlsZUxvb3A6CisgICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkRvV2hpbGVMb29wPihzdGF0ZW1l
bnQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6RWZm
ZWN0ZnVsRXhwcmVzc2lvbjoKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFT
VDo6RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudD4oc3RhdGVtZW50KSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OkZhbGx0aHJvdWdoOgorICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpGYWxsdGhyb3VnaD4oc3RhdGVtZW50
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OkZvckxv
b3A6CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkZvckxvb3A+KHN0
YXRlbWVudCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5k
OjpJZjoKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6SWZTdGF0ZW1l
bnQ+KHN0YXRlbWVudCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6U3RhdGVtZW50
OjpLaW5kOjpSZXR1cm46CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6
OlJldHVybj4oc3RhdGVtZW50KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpTdGF0
ZW1lbnQ6OktpbmQ6OlN0YXRlbWVudExpc3Q6CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChk
b3duY2FzdDxBU1Q6OlN0YXRlbWVudExpc3Q+KHN0YXRlbWVudCkpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpTd2l0Y2hDYXNlOgorICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpTd2l0Y2hDYXNlPihzdGF0ZW1lbnQpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6U3dpdGNoOgorICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpTd2l0Y2hTdGF0ZW1lbnQ+KHN0
YXRlbWVudCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5k
OjpWYXJpYWJsZURlY2xhcmF0aW9uczoKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25j
YXN0PEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpXaGlsZUxvb3A6Cisg
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OldoaWxlTG9vcD4oc3RhdGVt
ZW50KSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgICovCiB9CiAKIHZvaWQgVmlzaXRvcjo6dmlz
aXQoQVNUOjpCcmVhayYpCkBAIC0zODksNiArNDM4LDc0IEBAIHZvaWQgVmlzaXRvcjo6dmlzaXQo
QVNUOjpFeHByZXNzaW9uJiBleHAKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0
PEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPihleHByZXNzaW9uKSk7CiAgICAgZWxzZQog
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpWYXJpYWJsZVJlZmVyZW5j
ZT4oZXhwcmVzc2lvbikpOworCisKKyAgICAvKgorICAgIHN3aXRjaCAoZXhwcmVzc2lvbi5raW5k
KCkpIHsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6QXNzaWdubWVudDoKKyAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24+
KGV4cHJlc3Npb24pKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246
OktpbmQ6OkJvb2xlYW5MaXRlcmFsOgorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNh
c3Q8QVNUOjpCb29sZWFuTGl0ZXJhbD4oZXhwcmVzc2lvbikpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6Q2FsbDoKKyAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGRvd25jYXN0PEFTVDo6Q2FsbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkNvbW1hOgorICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpDb21tYUV4cHJlc3Npb24+KGV4cHJl
c3Npb24pKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6
OkRlcmVmZXJlbmNlOgorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpE
ZXJlZmVyZW5jZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkZsb2F0TGl0ZXJhbDoKKyAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6RmxvYXRMaXRlcmFsPihleHByZXNzaW9uKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpJbnRlZ2VyTGl0
ZXJhbDoKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6SW50ZWdlckxp
dGVyYWw+KGV4cHJlc3Npb24pKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJl
c3Npb246OktpbmQ6OkxvZ2ljYWw6CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2Fz
dDxBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uPihleHByZXNzaW9uKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpMb2dpY2FsTm90OgorICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpMb2dpY2FsTm90RXhwcmVzc2lvbj4oZXhwcmVz
c2lvbikpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6
TWFrZUFycmF5UmVmZXJlbmNlOgorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8
QVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpNYWtlUG9pbnRlcjoKKyAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6TWFrZVBvaW50ZXJFeHByZXNz
aW9uPihleHByZXNzaW9uKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNz
aW9uOjpLaW5kOjpOdWxsTGl0ZXJhbDoKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25j
YXN0PEFTVDo6TnVsbExpdGVyYWw+KGV4cHJlc3Npb24pKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkRvdDoKKyAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KGRvd25jYXN0PEFTVDo6RG90RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6R2xvYmFsVmFyaWFibGVSZWZl
cmVuY2U6CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6Okdsb2JhbFZh
cmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
QVNUOjpFeHByZXNzaW9uOjpLaW5kOjpJbmRleDoKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGRvd25jYXN0PEFTVDo6SW5kZXhFeHByZXNzaW9uPihleHByZXNzaW9uKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpSZWFkTW9kaWZ5V3JpdGU6Cisg
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4
cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4
cHJlc3Npb246OktpbmQ6OlRlcm5hcnk6CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3du
Y2FzdDxBU1Q6OlRlcm5hcnlFeHByZXNzaW9uPihleHByZXNzaW9uKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFs
OgorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpVbnNpZ25lZEludGVn
ZXJMaXRlcmFsPihleHByZXNzaW9uKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpF
eHByZXNzaW9uOjpLaW5kOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6CisgICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbD4oZXhw
cmVzc2lvbikpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2lu
ZDo6VmFyaWFibGVSZWZlcmVuY2U6CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2Fz
dDxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
fQorICAgICovCiB9CiAKIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpEb3RFeHByZXNzaW9uJiBk
b3RFeHByZXNzaW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5o
CShyZXZpc2lvbiAyNDgzOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywx
MSArMzcsMTEgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNz
IEFzc2lnbm1lbnRFeHByZXNzaW9uIDogcHVibGljIEV4cHJlc3Npb24geworY2xhc3MgQXNzaWdu
bWVudEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQXNzaWdubWVudEV4cHJlc3Npb24oQ29kZUxv
Y2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBsZWZ0LCBVbmlxdWVSZWY8
RXhwcmVzc2lvbj4mJiByaWdodCkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAg
ICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkFzc2lnbm1lbnQpCiAgICAgICAgICwg
bV9sZWZ0KFdURk1vdmUobGVmdCkpCiAgICAgICAgICwgbV9yaWdodChXVEZNb3ZlKHJpZ2h0KSkK
ICAgICB7CkBAIC01MCwxMyArNTAsMTkgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCi0gICAg
dmlydHVhbCB+QXNzaWdubWVudEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfkFzc2lnbm1l
bnRFeHByZXNzaW9uKCkKKyAgICB7CisgICAgICAgIG1fa2luZCA9IEtpbmQ6Ok5vbmU7CisgICAg
fQorICAgIHZvaWQgZGVzdHJveSgpCisgICAgeworICAgICAgICBVbmlxdWVSZWY8RXhwcmVzc2lv
bj4gc3dhcCA9IFdURk1vdmUobV9sZWZ0KTsKKyAgICAgICAgc3dhcCA9IFdURk1vdmUobV9yaWdo
dCk7CisgICAgfQogCiAgICAgQXNzaWdubWVudEV4cHJlc3Npb24oY29uc3QgQXNzaWdubWVudEV4
cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBBc3NpZ25tZW50RXhwcmVzc2lvbihBc3NpZ25tZW50
RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzQXNzaWdubWVudEV4cHJlc3Np
b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNzaW9uJiBs
ZWZ0KCkgeyByZXR1cm4gbV9sZWZ0OyB9CiAgICAgRXhwcmVzc2lvbiYgcmlnaHQoKSB7IHJldHVy
biBtX3JpZ2h0OyB9CiAgICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IHRha2VSaWdodCgpIHsgcmV0
dXJuIFdURk1vdmUobV9yaWdodCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmxvY2suaAkocmV2aXNpb24gMjQ4MzkyKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMzgsMjQgKzM4LDI5IEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5h
bWVzcGFjZSBBU1QgewogCi1jbGFzcyBCbG9jayA6IHB1YmxpYyBTdGF0ZW1lbnQgeworY2xhc3Mg
QmxvY2sgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBCbG9jayhDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0YXRlbWVu
dHMmJiBzdGF0ZW1lbnRzKQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbikKKyAgICAgICAg
OiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OkJsb2NrKQogICAgICAgICAsIG1fc3RhdGVtZW50
cyhXVEZNb3ZlKHN0YXRlbWVudHMpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5CbG9j
aygpID0gZGVmYXVsdDsKKyAgICB+QmxvY2soKQorICAgIHsKKyAgICAgICAgbV9raW5kID0gS2lu
ZDo6Tm9uZTsKKyAgICB9CisgICAgdm9pZCBkZXN0cm95KCkKKyAgICB7CisgICAgICAgIG1fc3Rh
dGVtZW50cy5+U3RhdGVtZW50cygpOworICAgIH0KIAogICAgIEJsb2NrKGNvbnN0IEJsb2NrJikg
PSBkZWxldGU7CiAgICAgQmxvY2soQmxvY2smJikgPSBkZWZhdWx0OwogCiAgICAgU3RhdGVtZW50
cyYgc3RhdGVtZW50cygpIHsgcmV0dXJuIG1fc3RhdGVtZW50czsgfQogCi0gICAgYm9vbCBpc0Js
b2NrKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiBwcml2YXRlOgogICAgIFN0
YXRlbWVudHMgbV9zdGF0ZW1lbnRzOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEJvb2xlYW5MaXRlcmFsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQm9vbGVhbkxpdGVyYWwu
aAkocmV2aXNpb24gMjQ4MzkyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQm9vbGVhbkxpdGVyYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTYgKzM2
LDIzIEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBCb29s
ZWFuTGl0ZXJhbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK2NsYXNzIEJvb2xlYW5MaXRlcmFsIGZp
bmFsIDogcHVibGljIEV4cHJlc3Npb24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIEJvb2xlYW5MaXRlcmFsKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgYm9vbCB2
YWx1ZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Np
b24obG9jYXRpb24sIEtpbmQ6OkJvb2xlYW5MaXRlcmFsKQogICAgICAgICAsIG1fdmFsdWUodmFs
dWUpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfkJvb2xlYW5MaXRlcmFsKCkgPSBkZWZh
dWx0OworICAgIH5Cb29sZWFuTGl0ZXJhbCgpCisgICAgeworICAgICAgICBtX2tpbmQgPSBLaW5k
OjpOb25lOworICAgIH0KKworICAgIHZvaWQgZGVzdHJveSgpCisgICAgeworICAgIH0KIAogICAg
IEJvb2xlYW5MaXRlcmFsKGNvbnN0IEJvb2xlYW5MaXRlcmFsJikgPSBkZWxldGU7CiAgICAgQm9v
bGVhbkxpdGVyYWwoQm9vbGVhbkxpdGVyYWwmJikgPSBkZWZhdWx0OwpAQCAtNTUsOCArNjIsNiBA
QCBwdWJsaWM6CiAKICAgICBib29sIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQog
Ci0gICAgYm9vbCBpc0Jvb2xlYW5MaXRlcmFsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQotCiAgICAgQm9vbGVhbkxpdGVyYWwgY2xvbmUoKSBjb25zdAogICAgIHsKICAgICAgICAg
Qm9vbGVhbkxpdGVyYWwgcmVzdWx0KGNvZGVMb2NhdGlvbigpLCBtX3ZhbHVlKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnJl
YWsuaAkocmV2aXNpb24gMjQ4MzkyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMQnJlYWsuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMjEgKzM3LDI2IEBA
IG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBCcmVhayA6IHB1
YmxpYyBTdGF0ZW1lbnQgeworY2xhc3MgQnJlYWsgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBCcmVhayhDb2RlTG9j
YXRpb24gbG9jYXRpb24pCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uKQorICAgICAgICA6
IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6QnJlYWspCiAgICAgewogICAgIH0KIAotICAgIHZp
cnR1YWwgfkJyZWFrKCkgPSBkZWZhdWx0OworICAgIH5CcmVhaygpCisgICAgeworICAgICAgICBt
X2tpbmQgPSBLaW5kOjpOb25lOworICAgIH0KKyAgICB2b2lkIGRlc3Ryb3koKQorICAgIHsKKwor
ICAgIH0KIAogICAgIEJyZWFrKGNvbnN0IEJyZWFrJikgPSBkZWxldGU7CiAgICAgQnJlYWsoQnJl
YWsmJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc0JyZWFrKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQotCiBwcml2YXRlOgogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ2FsbEV4cHJlc3Npb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDYWxsRXhwcmVz
c2lvbi5oCShyZXZpc2lvbiAyNDgzOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xDYWxsRXhwcmVzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwy
NyArNDAsMzMgQEAgbmFtZXNwYWNlIEFTVCB7CiAKIGNsYXNzIE5hbWVkVHlwZTsKIAotY2xhc3Mg
Q2FsbEV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBDYWxsRXhwcmVzc2lv
biBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBDYWxsRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0
cmluZyYmIG5hbWUsIFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiYgYXJndW1lbnRzKQot
ICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2Nh
dGlvbiwgS2luZDo6Q2FsbCkKICAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKICAgICAg
ICAgLCBtX2FyZ3VtZW50cyhXVEZNb3ZlKGFyZ3VtZW50cykpCiAgICAgewogICAgIH0KIAotICAg
IHZpcnR1YWwgfkNhbGxFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwotCiAgICAgQ2FsbEV4cHJlc3Np
b24oY29uc3QgQ2FsbEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBDYWxsRXhwcmVzc2lvbihD
YWxsRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzQ2FsbEV4cHJlc3Npb24o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBWZWN0b3I8VW5pcXVlUmVm
PEV4cHJlc3Npb24+PiYgYXJndW1lbnRzKCkgeyByZXR1cm4gbV9hcmd1bWVudHM7IH0KIAogICAg
IFN0cmluZyYgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQogCisgICAgfkNhbGxFeHByZXNzaW9u
KCkKKyAgICB7CisgICAgICAgIG1fa2luZCA9IEtpbmQ6Ok5vbmU7CisgICAgfQorICAgIHZvaWQg
ZGVzdHJveSgpCisgICAgeworICAgICAgICBTdHJpbmcgc3dhcCA9IFdURk1vdmUobV9uYW1lKTsK
KyAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4gc3dhcDIgPSBXVEZNb3ZlKG1f
YXJndW1lbnRzKTsKKyAgICB9CisKICAgICB2b2lkIHNldENhc3REYXRhKE5hbWVkVHlwZSYgbmFt
ZWRUeXBlKQogICAgIHsKICAgICAgICAgbV9jYXN0UmV0dXJuVHlwZSA9ICZuYW1lZFR5cGU7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb21tYUV4
cHJlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xDb21tYUV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4MzkyKQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29tbWFFeHByZXNzaW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDIyICszOCwyNyBAQCBuYW1lc3BhY2UgV0hMU0wgewog
CiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgQ29tbWFFeHByZXNzaW9uIDogcHVibGljIEV4cHJl
c3Npb24geworY2xhc3MgQ29tbWFFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24g
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENvbW1hRXhwcmVz
c2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+
JiYgbGlzdCkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJl
c3Npb24obG9jYXRpb24sIEtpbmQ6OkNvbW1hKQogICAgICAgICAsIG1fbGlzdChXVEZNb3ZlKGxp
c3QpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5Db21tYUV4cHJlc3Npb24oKSA9IGRl
ZmF1bHQ7CisgICAgfkNvbW1hRXhwcmVzc2lvbigpCisgICAgeworICAgICAgICBtX2tpbmQgPSBL
aW5kOjpOb25lOworICAgIH0KKyAgICB2b2lkIGRlc3Ryb3koKQorICAgIHsKKyAgICAgICAgVmVj
dG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4gc3dhcCA9IFdURk1vdmUobV9saXN0KTsKKyAgICB9
CiAKICAgICBDb21tYUV4cHJlc3Npb24oY29uc3QgQ29tbWFFeHByZXNzaW9uJikgPSBkZWxldGU7
CiAgICAgQ29tbWFFeHByZXNzaW9uKENvbW1hRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CiAKLSAg
ICBib29sIGlzQ29tbWFFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQotCiAgICAgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4mIGxpc3QoKSB7IHJldHVybiBt
X2xpc3Q7IH0KIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29udGludWUuaAkocmV2aXNpb24gMjQ4Mzky
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29udGlu
dWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMjEgKzM3LDI2IEBAIG5hbWVzcGFjZSBXSExTTCB7
CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBDb250aW51ZSA6IHB1YmxpYyBTdGF0ZW1lbnQg
eworY2xhc3MgQ29udGludWUgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDb250aW51ZShDb2RlTG9jYXRpb24gbG9j
YXRpb24pCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uKQorICAgICAgICA6IFN0YXRlbWVu
dChsb2NhdGlvbiwgS2luZDo6Q29udGludWUpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwg
fkNvbnRpbnVlKCkgPSBkZWZhdWx0OworICAgIH5Db250aW51ZSgpCisgICAgeworICAgICAgICBt
X2tpbmQgPSBLaW5kOjpOb25lOworICAgIH0KKworICAgIHZvaWQgZGVzdHJveSgpCisgICAgewor
ICAgIH0KIAogICAgIENvbnRpbnVlKGNvbnN0IENvbnRpbnVlJikgPSBkZWxldGU7CiAgICAgQ29u
dGludWUoQ29udGludWUmJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc0NvbnRpbnVlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiBwcml2YXRlOgogfTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVyZWZlcmVuY2VFeHBy
ZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmgJKHJldmlzaW9uIDI0ODM5MikKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlcmVmZXJlbmNl
RXhwcmVzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywyMiArMzcsMjcgQEAgbmFtZXNwYWNl
IFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIERlcmVmZXJlbmNlRXhwcmVzc2lv
biA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK2NsYXNzIERlcmVmZXJlbmNlRXhwcmVzc2lvbiBmaW5h
bCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBEZXJlZmVyZW5jZUV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBV
bmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBwb2ludGVyKQotICAgICAgICA6IEV4cHJlc3Npb24obG9j
YXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6RGVyZWZlcmVuY2Up
CiAgICAgICAgICwgbV9wb2ludGVyKFdURk1vdmUocG9pbnRlcikpCiAgICAgewogICAgIH0KIAot
ICAgIHZpcnR1YWwgfkRlcmVmZXJlbmNlRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKyAgICB+RGVy
ZWZlcmVuY2VFeHByZXNzaW9uKCkKKyAgICB7CisgICAgICAgIG1fa2luZCA9IEtpbmQ6Ok5vbmU7
CisgICAgfQorICAgIHZvaWQgZGVzdHJveSgpCisgICAgeworICAgICAgICBVbmlxdWVSZWY8RXhw
cmVzc2lvbj4oV1RGTW92ZShtX3BvaW50ZXIpKTsKKyAgICB9CiAKICAgICBEZXJlZmVyZW5jZUV4
cHJlc3Npb24oY29uc3QgRGVyZWZlcmVuY2VFeHByZXNzaW9uJikgPSBkZWxldGU7CiAgICAgRGVy
ZWZlcmVuY2VFeHByZXNzaW9uKERlcmVmZXJlbmNlRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CiAK
LSAgICBib29sIGlzRGVyZWZlcmVuY2VFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQotCiAgICAgRXhwcmVzc2lvbiYgcG9pbnRlcigpIHsgcmV0dXJuIG1fcG9pbnRl
cjsgfQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRG9XaGlsZUxvb3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb1doaWxlTG9vcC5oCShyZXZpc2lvbiAyNDgz
OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb1do
aWxlTG9vcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyMyArMzgsMzAgQEAgbmFtZXNwYWNlIFdI
TFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIERvV2hpbGVMb29wIDogcHVibGljIFN0
YXRlbWVudCB7CitjbGFzcyBEb1doaWxlTG9vcCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERvV2hpbGVMb29wKENv
ZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPFN0YXRlbWVudD4mJiBib2R5LCBVbmlxdWVS
ZWY8RXhwcmVzc2lvbj4mJiBjb25kaXRpb25hbCkKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRp
b24pCisgICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpEb1doaWxlTG9vcCkKICAg
ICAgICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkKICAgICAgICAgLCBtX2NvbmRpdGlvbmFsKFdU
Rk1vdmUoY29uZGl0aW9uYWwpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5Eb1doaWxl
TG9vcCgpID0gZGVmYXVsdDsKKyAgICB+RG9XaGlsZUxvb3AoKQorICAgIHsKKyAgICAgICAgbV9r
aW5kID0gS2luZDo6Tm9uZTsKKyAgICB9CisKKyAgICB2b2lkIGRlc3Ryb3koKQorICAgIHsKKyAg
ICAgICAgbV9ib2R5Ln5VbmlxdWVSZWY8U3RhdGVtZW50PigpOworICAgICAgICBtX2NvbmRpdGlv
bmFsLn5VbmlxdWVSZWY8RXhwcmVzc2lvbj4oKTsKKyAgICB9CiAKICAgICBEb1doaWxlTG9vcChj
b25zdCBEb1doaWxlTG9vcCYpID0gZGVsZXRlOwogICAgIERvV2hpbGVMb29wKERvV2hpbGVMb29w
JiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNEb1doaWxlTG9vcCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLQogICAgIFN0YXRlbWVudCYgYm9keSgpIHsgcmV0dXJuIG1fYm9k
eTsgfQogICAgIEV4cHJlc3Npb24mIGNvbmRpdGlvbmFsKCkgeyByZXR1cm4gbV9jb25kaXRpb25h
bDsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xEb3RFeHByZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRG90RXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDgzOTIpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb3RFeHByZXNz
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDMzICszOCw0MSBAQCBuYW1lc3BhY2UgV0hMU0wg
ewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgRG90RXhwcmVzc2lvbiA6IHB1YmxpYyBQcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24geworY2xhc3MgRG90RXhwcmVzc2lvbiBmaW5hbCA6IHB1Ymxp
YyBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworICAgIHVzaW5nIEJhc2UgPSBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb247CiBwdWJsaWM6CiAg
ICAgRG90RXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNz
aW9uPiYmIGJhc2UsIFN0cmluZyYmIGZpZWxkTmFtZSkKLSAgICAgICAgOiBQcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb24obG9jYXRpb24sIFdURk1vdmUoYmFzZSkpCisgICAgICAgIDogUHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpEb3QsIFdURk1vdmUoYmFzZSkpCiAgICAg
ICAgICwgbV9maWVsZE5hbWUoV1RGTW92ZShmaWVsZE5hbWUpKQogICAgIHsKICAgICB9CiAKLSAg
ICB2aXJ0dWFsIH5Eb3RFeHByZXNzaW9uKCkgPSBkZWZhdWx0OworICAgIH5Eb3RFeHByZXNzaW9u
KCkKKyAgICB7CisgICAgICAgIG1fa2luZCA9IEtpbmQ6Ok5vbmU7CisgICAgfQorCisgICAgdm9p
ZCBkZXN0cm95KCkKKyAgICB7CisgICAgICAgIFN0cmluZyhXVEZNb3ZlKG1fZmllbGROYW1lKSk7
CisgICAgICAgIHRoaXMtPkJhc2U6OmRlc3Ryb3koKTsKKyAgICB9CiAKICAgICBEb3RFeHByZXNz
aW9uKGNvbnN0IERvdEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBEb3RFeHByZXNzaW9uKERv
dEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc0RvdEV4cHJlc3Npb24oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBTdHJpbmcgZ2V0dGVyRnVuY3Rp
b25OYW1lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJpbmcgZ2V0dGVyRnVuY3Rpb25OYW1lKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJvcGVyYXRvci4iLCBtX2Zp
ZWxkTmFtZSk7CiAgICAgfQogCi0gICAgU3RyaW5nIHNldHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0
IG92ZXJyaWRlCisgICAgU3RyaW5nIHNldHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gbWFrZVN0cmluZygib3BlcmF0b3IuIiwgbV9maWVsZE5hbWUsICI9Iik7
CiAgICAgfQogCi0gICAgU3RyaW5nIGFuZGVyRnVuY3Rpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGUK
KyAgICBTdHJpbmcgYW5kZXJGdW5jdGlvbk5hbWUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0
dXJuIG1ha2VTdHJpbmcoIm9wZXJhdG9yJi4iLCBtX2ZpZWxkTmFtZSk7CiAgICAgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRWZmZWN0ZnVsRXhw
cmVzc2lvblN0YXRlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaAkocmV2
aXNpb24gMjQ4MzkyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCwyMiArMzgsMjggQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNs
YXNzIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2Ns
YXNzIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBFZmZlY3RmdWxF
eHByZXNzaW9uU3RhdGVtZW50KFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGVmZmVjdGZ1bEV4cHJl
c3Npb24pCi0gICAgICAgIDogU3RhdGVtZW50KGVmZmVjdGZ1bEV4cHJlc3Npb24tPmNvZGVMb2Nh
dGlvbigpKQorICAgICAgICA6IFN0YXRlbWVudChlZmZlY3RmdWxFeHByZXNzaW9uLT5jb2RlTG9j
YXRpb24oKSwgS2luZDo6RWZmZWN0ZnVsRXhwcmVzc2lvbikKICAgICAgICAgLCBtX2VmZmVjdGZ1
bEV4cHJlc3Npb24oV1RGTW92ZShlZmZlY3RmdWxFeHByZXNzaW9uKSkKICAgICB7CiAgICAgfQog
Ci0gICAgdmlydHVhbCB+RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpID0gZGVmYXVsdDsK
KyAgICB+RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpCisgICAgeworICAgICAgICBtX2tp
bmQgPSBLaW5kOjpOb25lOworICAgIH0KKworICAgIHZvaWQgZGVzdHJveSgpCisgICAgeworICAg
ICAgICBtX2VmZmVjdGZ1bEV4cHJlc3Npb24uflVuaXF1ZVJlZjxFeHByZXNzaW9uPigpOworICAg
IH0KIAogICAgIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoY29uc3QgRWZmZWN0ZnVsRXhw
cmVzc2lvblN0YXRlbWVudCYpID0gZGVsZXRlOwogICAgIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0
ZW1lbnQoRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYmKSA9IGRlZmF1bHQ7CiAKLSAgICBi
b29sIGlzRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KLQogICAgIEV4cHJlc3Npb24mIGVmZmVjdGZ1bEV4cHJlc3Npb24oKSB7IHJl
dHVybiBtX2VmZmVjdGZ1bEV4cHJlc3Npb247IH0KIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oCShyZXZpc2lvbiAyNDgzOTIpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTcgKzQwLDI1IEBAIG5hbWVz
cGFjZSBBU1QgewogY2xhc3MgRW51bWVyYXRpb25EZWZpbml0aW9uOwogY2xhc3MgRW51bWVyYXRp
b25NZW1iZXI7CiAKLWNsYXNzIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCA6IHB1YmxpYyBFeHBy
ZXNzaW9uIHsKK2NsYXNzIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCBmaW5hbCA6IHB1YmxpYyBF
eHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBs
ZWZ0LCBTdHJpbmcmJiByaWdodCkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAg
ICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJh
bCkKICAgICAgICAgLCBtX2xlZnQoV1RGTW92ZShsZWZ0KSkKICAgICAgICAgLCBtX3JpZ2h0KFdU
Rk1vdmUocmlnaHQpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5FbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwoKSA9IGRlZmF1bHQ7CisgICAgfkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCgp
CisgICAgeworICAgICAgICBtX2tpbmQgPSBLaW5kOjpOb25lOworICAgIH0KKyAgICB2b2lkIGRl
c3Ryb3koKQorICAgIHsKKyAgICAgICAgbV9sZWZ0Ln5TdHJpbmcoKTsKKyAgICAgICAgbV9yaWdo
dC5+U3RyaW5nKCk7CisgICAgfQogCiAgICAgZXhwbGljaXQgRW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsKGNvbnN0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYpID0gZGVsZXRlOwogICAgIEVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbChFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmJikgPSBkZWZhdWx0
OwpAQCAtNTgsOCArNjYsNiBAQCBwdWJsaWM6CiAgICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
JiBvcGVyYXRvcj0oY29uc3QgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJikgPSBkZWxldGU7CiAg
ICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBvcGVyYXRvcj0oRW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNFbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBzdGF0aWMgRW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsIHdyYXAoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBs
ZWZ0LCBTdHJpbmcmJiByaWdodCwgRW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRl
ZmluaXRpb24sIEVudW1lcmF0aW9uTWVtYmVyJiBlbnVtZXJhdGlvbk1lbWJlcikKICAgICB7CiAg
ICAgICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCByZXN1bHQobG9jYXRpb24sIFdURk1vdmUo
bGVmdCksIFdURk1vdmUocmlnaHQpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEV4cHJlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgor
CisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMQVNULmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK0V4
cHJlc3Npb246On5FeHByZXNzaW9uKCkKK3sKKyAgICBzd2l0Y2ggKGtpbmQoKSkgeworICAgIGNh
c2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpBc3NpZ25tZW50OgorICAgICAgICBkb3duY2FzdDxB
U1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPigqdGhpcykuZGVzdHJveSgpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6Qm9vbGVhbkxpdGVyYWw6CisgICAg
ICAgIGRvd25jYXN0PEFTVDo6Qm9vbGVhbkxpdGVyYWw+KCp0aGlzKS5kZXN0cm95KCk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpDYWxsOgorICAgICAg
ICBkb3duY2FzdDxBU1Q6OkNhbGxFeHByZXNzaW9uPigqdGhpcykuZGVzdHJveSgpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6Q29tbWE6CisgICAgICAg
IGRvd25jYXN0PEFTVDo6Q29tbWFFeHByZXNzaW9uPigqdGhpcykuZGVzdHJveSgpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6RGVyZWZlcmVuY2U6Cisg
ICAgICAgIGRvd25jYXN0PEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uPigqdGhpcykuZGVzdHJv
eSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6Rmxv
YXRMaXRlcmFsOgorICAgICAgICBkb3duY2FzdDxBU1Q6OkZsb2F0TGl0ZXJhbD4oKnRoaXMpLmRl
c3Ryb3koKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6
OkludGVnZXJMaXRlcmFsOgorICAgICAgICBkb3duY2FzdDxBU1Q6OkludGVnZXJMaXRlcmFsPigq
dGhpcykuZGVzdHJveSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lv
bjo6S2luZDo6TG9naWNhbDoKKyAgICAgICAgZG93bmNhc3Q8QVNUOjpMb2dpY2FsRXhwcmVzc2lv
bj4oKnRoaXMpLmRlc3Ryb3koKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJl
c3Npb246OktpbmQ6OkxvZ2ljYWxOb3Q6CisgICAgICAgIGRvd25jYXN0PEFTVDo6TG9naWNhbE5v
dEV4cHJlc3Npb24+KCp0aGlzKS5kZXN0cm95KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
QVNUOjpFeHByZXNzaW9uOjpLaW5kOjpNYWtlQXJyYXlSZWZlcmVuY2U6CisgICAgICAgIGRvd25j
YXN0PEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbj4oKnRoaXMpLmRlc3Ryb3koKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6Ok1ha2VQb2lu
dGVyOgorICAgICAgICBkb3duY2FzdDxBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbj4oKnRoaXMp
LmRlc3Ryb3koKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246Oktp
bmQ6Ok51bGxMaXRlcmFsOgorICAgICAgICBkb3duY2FzdDxBU1Q6Ok51bGxMaXRlcmFsPigqdGhp
cykuZGVzdHJveSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6
S2luZDo6RG90OgorICAgICAgICBkb3duY2FzdDxBU1Q6OkRvdEV4cHJlc3Npb24+KCp0aGlzKS5k
ZXN0cm95KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5k
OjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZToKKyAgICAgICAgZG93bmNhc3Q8QVNUOjpHbG9iYWxW
YXJpYWJsZVJlZmVyZW5jZT4oKnRoaXMpLmRlc3Ryb3koKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkluZGV4OgorICAgICAgICBkb3duY2FzdDxBU1Q6
OkluZGV4RXhwcmVzc2lvbj4oKnRoaXMpLmRlc3Ryb3koKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OlJlYWRNb2RpZnlXcml0ZToKKyAgICAgICAgZG93
bmNhc3Q8QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPigqdGhpcykuZGVzdHJveSgpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6VGVybmFyeToK
KyAgICAgICAgZG93bmNhc3Q8QVNUOjpUZXJuYXJ5RXhwcmVzc2lvbj4oKnRoaXMpLmRlc3Ryb3ko
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OlVuc2ln
bmVkSW50ZWdlckxpdGVyYWw6CisgICAgICAgIGRvd25jYXN0PEFTVDo6VW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbD4oKnRoaXMpLmRlc3Ryb3koKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6
OkV4cHJlc3Npb246OktpbmQ6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDoKKyAgICAgICAgZG93
bmNhc3Q8QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw+KCp0aGlzKS5kZXN0cm95KCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpWYXJpYWJsZVJl
ZmVyZW5jZToKKyAgICAgICAgZG93bmNhc3Q8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oKnRoaXMp
LmRlc3Ryb3koKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246Oktp
bmQ6Ok5vbmU6CisgICAgICAgIC8vIFVzZWQgYXMgYSBtYXJrZXIgdG8gbm90IGNhbGwgZGVzdHJv
eSB3aGVuIHdlIGhhdmUgY2hpbGQgZGVzdHJ1Y3RvcnMuCisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQor
CitTdHJpbmcgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uOjpnZXR0ZXJGdW5jdGlvbk5hbWUoKSBj
b25zdAoreworICAgIGlmIChpczxEb3RFeHByZXNzaW9uPigqdGhpcykpCisgICAgICAgIHJldHVy
biBkb3duY2FzdDxEb3RFeHByZXNzaW9uPigqdGhpcykuZ2V0dGVyRnVuY3Rpb25OYW1lKCk7Cisg
ICAgaWYgKGlzPEluZGV4RXhwcmVzc2lvbj4oKnRoaXMpKQorICAgICAgICByZXR1cm4gZG93bmNh
c3Q8SW5kZXhFeHByZXNzaW9uPigqdGhpcykuZ2V0dGVyRnVuY3Rpb25OYW1lKCk7CisgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworU3RyaW5nIFByb3BlcnR5QWNjZXNzRXhw
cmVzc2lvbjo6c2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3QKK3sKKyAgICBpZiAoaXM8RG90RXhw
cmVzc2lvbj4oKnRoaXMpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8RG90RXhwcmVzc2lvbj4o
KnRoaXMpLnNldHRlckZ1bmN0aW9uTmFtZSgpOworICAgIGlmIChpczxJbmRleEV4cHJlc3Npb24+
KCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEluZGV4RXhwcmVzc2lvbj4oKnRoaXMp
LnNldHRlckZ1bmN0aW9uTmFtZSgpOworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Cit9CisKK1N0cmluZyBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb246OmFuZGVyRnVuY3Rpb25OYW1l
KCkgY29uc3QKK3sKKyAgICBpZiAoaXM8RG90RXhwcmVzc2lvbj4oKnRoaXMpKQorICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8RG90RXhwcmVzc2lvbj4oKnRoaXMpLmFuZGVyRnVuY3Rpb25OYW1lKCk7
CisgICAgaWYgKGlzPEluZGV4RXhwcmVzc2lvbj4oKnRoaXMpKQorICAgICAgICByZXR1cm4gZG93
bmNhc3Q8SW5kZXhFeHByZXNzaW9uPigqdGhpcykuYW5kZXJGdW5jdGlvbk5hbWUoKTsKKyAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBBU1QKKwor
fQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRXhwcmVzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4Mzky
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVz
c2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMiArNDMsMzggQEAgbmFtZXNwYWNlIEFTVCB7
CiBjbGFzcyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24pCi0gICAgICAgIDog
bV9jb2RlTG9jYXRpb24oY29kZUxvY2F0aW9uKQorCisgICAgZW51bSBjbGFzcyBLaW5kIDogdWlu
dDhfdCB7CisgICAgICAgIEFzc2lnbm1lbnQsCisgICAgICAgIEJvb2xlYW5MaXRlcmFsLAorICAg
ICAgICBDYWxsLAorICAgICAgICBDb21tYSwKKyAgICAgICAgRGVyZWZlcmVuY2UsCisgICAgICAg
IERvdCwKKyAgICAgICAgR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UsCisgICAgICAgIEZsb2F0TGl0
ZXJhbCwKKyAgICAgICAgSW5kZXgsCisgICAgICAgIEludGVnZXJMaXRlcmFsLAorICAgICAgICBM
b2dpY2FsLAorICAgICAgICBMb2dpY2FsTm90LAorICAgICAgICBNYWtlQXJyYXlSZWZlcmVuY2Us
CisgICAgICAgIE1ha2VQb2ludGVyLAorICAgICAgICBOdWxsTGl0ZXJhbCwKKyAgICAgICAgUmVh
ZE1vZGlmeVdyaXRlLAorICAgICAgICBUZXJuYXJ5LAorICAgICAgICBVbnNpZ25lZEludGVnZXJM
aXRlcmFsLAorICAgICAgICBWYXJpYWJsZVJlZmVyZW5jZSwKKyAgICAgICAgRW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsLAorICAgICAgICBOb25lCisgICAgfTsKKworICAgIEV4cHJlc3Npb24oQ29k
ZUxvY2F0aW9uIGNvZGVMb2NhdGlvbiwgS2luZCBraW5kKQorICAgICAgICA6IG1fa2luZChraW5k
KQorICAgICAgICAsIG1fY29kZUxvY2F0aW9uKGNvZGVMb2NhdGlvbi5zdGFydE9mZnNldCgpKQog
ICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5FeHByZXNzaW9uKCkgPSBkZWZhdWx0OworICAg
IH5FeHByZXNzaW9uKCk7CiAKICAgICBFeHByZXNzaW9uKGNvbnN0IEV4cHJlc3Npb24mKSA9IGRl
bGV0ZTsKICAgICBFeHByZXNzaW9uKEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwpAQCAtOTIsMzMg
KzExOCwzNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvdGhlci5zZXRUeXBlQW5ub3RhdGlvbihU
eXBlQW5ub3RhdGlvbigqdHlwZUFubm90YXRpb24pKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJv
b2wgaXNBc3NpZ25tZW50RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzQm9vbGVhbkxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpc0NhbGxFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNDb21tYUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0RlcmVmZXJlbmNlRXhwcmVzc2lvbigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRG90RXhwcmVzc2lvbigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzR2xvYmFsVmFyaWFibGVS
ZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0Zs
b2F0TGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlz
SW5kZXhFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaXNJbnRlZ2VyTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzTG9naWNhbEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc0xvZ2ljYWxOb3RFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYWtlUG9pbnRlckV4
cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc051
bGxMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNQ
cm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBpc1JlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Rlcm5hcnlFeHByZXNzaW9uKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNVbnNpZ25lZEludGVnZXJMaXRlcmFs
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNWYXJpYWJsZVJl
ZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBLaW5k
IGtpbmQoKSBjb25zdCAgeyByZXR1cm4gbV9raW5kOyB9CisgICAgYm9vbCBpc0Fzc2lnbm1lbnRF
eHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkFzc2lnbm1lbnQ7IH0K
KyAgICBib29sIGlzQm9vbGVhbkxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2lu
ZDo6Qm9vbGVhbkxpdGVyYWw7IH0KKyAgICBib29sIGlzQ2FsbEV4cHJlc3Npb24oKSBjb25zdCB7
IHJldHVybiBraW5kKCkgPT0gS2luZDo6Q2FsbDsgfQorICAgIGJvb2wgaXNDb21tYUV4cHJlc3Np
b24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6Q29tbWE7IH0KKyAgICBib29sIGlz
RGVyZWZlcmVuY2VFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkRl
cmVmZXJlbmNlOyB9CisgICAgYm9vbCBpc0RvdEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBr
aW5kKCkgPT0gS2luZDo6RG90OyB9CisgICAgYm9vbCBpc0dsb2JhbFZhcmlhYmxlUmVmZXJlbmNl
KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNl
OyB9CisgICAgYm9vbCBpc0Zsb2F0TGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBL
aW5kOjpGbG9hdExpdGVyYWw7IH0KKyAgICBib29sIGlzSW5kZXhFeHByZXNzaW9uKCkgY29uc3Qg
eyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkluZGV4OyB9CisgICAgYm9vbCBpc0ludGVnZXJMaXRl
cmFsKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkludGVnZXJMaXRlcmFsOyB9Cisg
ICAgYm9vbCBpc0xvZ2ljYWxFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtp
bmQ6OkxvZ2ljYWw7IH0KKyAgICBib29sIGlzTG9naWNhbE5vdEV4cHJlc3Npb24oKSBjb25zdCB7
IHJldHVybiBraW5kKCkgPT0gS2luZDo6TG9naWNhbE5vdDsgfQorICAgIGJvb2wgaXNNYWtlQXJy
YXlSZWZlcmVuY2VFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6Ok1h
a2VBcnJheVJlZmVyZW5jZTsgfQorICAgIGJvb2wgaXNNYWtlUG9pbnRlckV4cHJlc3Npb24oKSBj
b25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6TWFrZVBvaW50ZXI7IH0KKyAgICBib29sIGlz
TnVsbExpdGVyYWwoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6TnVsbExpdGVyYWw7
IH0KKyAgICBib29sIGlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4g
aXNEb3RFeHByZXNzaW9uKCkgfHwgaXNJbmRleEV4cHJlc3Npb24oKTsgfQorICAgIGJvb2wgaXNS
ZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6
OlJlYWRNb2RpZnlXcml0ZTsgfQorICAgIGJvb2wgaXNUZXJuYXJ5RXhwcmVzc2lvbigpIGNvbnN0
IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpUZXJuYXJ5OyB9CisgICAgYm9vbCBpc1Vuc2lnbmVk
SW50ZWdlckxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6VW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbDsgfQorICAgIGJvb2wgaXNWYXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0IHsg
cmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpWYXJpYWJsZVJlZmVyZW5jZTsgfQorICAgIGJvb2wgaXNF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6
RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsOyB9CiAKLSAgICBDb2RlTG9jYXRpb24gY29kZUxvY2F0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlTG9jYXRpb247IH0KLSAgICB2b2lkIHVwZGF0ZUNv
ZGVMb2NhdGlvbihDb2RlTG9jYXRpb24gbG9jYXRpb24pIHsgbV9jb2RlTG9jYXRpb24gPSBsb2Nh
dGlvbjsgfQorICAgIENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBD
b2RlTG9jYXRpb24obV9jb2RlTG9jYXRpb24sIG1fY29kZUxvY2F0aW9uKTsgfQorICAgIHZvaWQg
dXBkYXRlQ29kZUxvY2F0aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbikgeyBtX2NvZGVMb2NhdGlv
biA9IGxvY2F0aW9uLnN0YXJ0T2Zmc2V0KCk7IH0KIAorcHJvdGVjdGVkOgorICAgIEtpbmQgbV9r
aW5kOwogcHJpdmF0ZToKLSAgICBDb2RlTG9jYXRpb24gbV9jb2RlTG9jYXRpb247CisgICAgdW5z
aWduZWQgbV9jb2RlTG9jYXRpb247CiAgICAgUmVmUHRyPFVubmFtZWRUeXBlPiBtX3R5cGU7CiAg
ICAgT3B0aW9uYWw8VHlwZUFubm90YXRpb24+IG1fdHlwZUFubm90YXRpb247CiB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmFsbHRocm91Z2gu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xGYWxsdGhyb3VnaC5oCShyZXZpc2lvbiAyNDgzOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNywyMSArMzcsMjYgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7
CiAKLWNsYXNzIEZhbGx0aHJvdWdoIDogcHVibGljIFN0YXRlbWVudCB7CitjbGFzcyBGYWxsdGhy
b3VnaCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIEZhbGx0aHJvdWdoKENvZGVMb2NhdGlvbiBsb2NhdGlvbikKLSAg
ICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24pCisgICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9u
LCBLaW5kOjpGYWxsdGhyb3VnaCkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+RmFsbHRo
cm91Z2goKSA9IGRlZmF1bHQ7CisgICAgfkZhbGx0aHJvdWdoKCkKKyAgICB7CisgICAgICAgIG1f
a2luZCA9IEtpbmQ6Ok5vbmU7CisgICAgfQorCisgICAgdm9pZCBkZXN0cm95KCkKKyAgICB7Cisg
ICAgfQogCiAgICAgRmFsbHRocm91Z2goY29uc3QgRmFsbHRocm91Z2gmKSA9IGRlbGV0ZTsKICAg
ICBGYWxsdGhyb3VnaChGYWxsdGhyb3VnaCYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzRmFs
bHRocm91Z2goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KIHByaXZhdGU6CiB9
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xG
bG9hdExpdGVyYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWwuaAkocmV2aXNpb24gMjQ4MzkyKQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDE3ICszNywyNCBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBu
YW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgRmxvYXRMaXRlcmFsIDogcHVibGljIEV4cHJlc3Npb24g
eworY2xhc3MgRmxvYXRMaXRlcmFsIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEZsb2F0TGl0ZXJhbChDb2RlTG9j
YXRpb24gbG9jYXRpb24sIGZsb2F0IHZhbHVlKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRp
b24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6RmxvYXRMaXRlcmFsKQog
ICAgICAgICAsIG1fdHlwZShsb2NhdGlvbiwgdmFsdWUpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1
ZSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+RmxvYXRMaXRlcmFsKCkgPSBkZWZhdWx0
OworICAgIH5GbG9hdExpdGVyYWwoKQorICAgIHsKKyAgICAgICAgbV9raW5kID0gS2luZDo6Tm9u
ZTsKKyAgICB9CisgICAgdm9pZCBkZXN0cm95KCkKKyAgICB7CisgICAgICAgIG1fdHlwZS5+Rmxv
YXRMaXRlcmFsVHlwZSgpOworICAgIH0KIAogICAgIEZsb2F0TGl0ZXJhbChjb25zdCBGbG9hdExp
dGVyYWwmKSA9IGRlbGV0ZTsKICAgICBGbG9hdExpdGVyYWwoRmxvYXRMaXRlcmFsJiYpID0gZGVm
YXVsdDsKQEAgLTU4LDggKzY1LDYgQEAgcHVibGljOgogICAgIEZsb2F0TGl0ZXJhbFR5cGUmIHR5
cGUoKSB7IHJldHVybiBtX3R5cGU7IH0KICAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdmFsdWU7IH0KIAotICAgIGJvb2wgaXNGbG9hdExpdGVyYWwoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9Ci0KICAgICBGbG9hdExpdGVyYWwgY2xvbmUoKSBjb25zdAogICAgIHsK
ICAgICAgICAgRmxvYXRMaXRlcmFsIHJlc3VsdChjb2RlTG9jYXRpb24oKSwgbV92YWx1ZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JMb29w
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRm9yTG9vcC5oCShyZXZpc2lvbiAyNDgzOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JMb29wLmgJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDExICs0MiwxMSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xh
c3MgRm9yTG9vcCA6IHB1YmxpYyBTdGF0ZW1lbnQgeworY2xhc3MgRm9yTG9vcCBmaW5hbCA6IHB1
YmxpYyBTdGF0ZW1lbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIEZvckxvb3AoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBWYXJpYW50PFVuaXF1ZVJlZjxTdGF0
ZW1lbnQ+LCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiYgaW5pdGlhbGl6YXRpb24sIHN0ZDo6dW5p
cXVlX3B0cjxFeHByZXNzaW9uPiYmIGNvbmRpdGlvbiwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Np
b24+JiYgaW5jcmVtZW50LCBVbmlxdWVSZWY8U3RhdGVtZW50PiYmIGJvZHkpCi0gICAgICAgIDog
U3RhdGVtZW50KGxvY2F0aW9uKQorICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6
Rm9yTG9vcCkKICAgICAgICAgLCBtX2luaXRpYWxpemF0aW9uKFdURk1vdmUoaW5pdGlhbGl6YXRp
b24pKQogICAgICAgICAsIG1fY29uZGl0aW9uKFdURk1vdmUoY29uZGl0aW9uKSkKICAgICAgICAg
LCBtX2luY3JlbWVudChXVEZNb3ZlKGluY3JlbWVudCkpCkBAIC01NCwxNSArNTQsMjIgQEAgcHVi
bGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5Gb3JMb29wKCkKKyAgICB+Rm9yTG9v
cCgpCiAgICAgeworICAgICAgICBtX2tpbmQgPSBLaW5kOjpOb25lOworICAgIH0KKworICAgIHZv
aWQgZGVzdHJveSgpCisgICAgeworICAgICAgICBtX2luaXRpYWxpemF0aW9uLn5WYXJpYW50PFVu
aXF1ZVJlZjxTdGF0ZW1lbnQ+LCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4+KCk7CisgICAgICAgIG1f
Y29uZGl0aW9uLn5zdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKTsKKyAgICAgICAgbV9pbmNy
ZW1lbnQufnN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigpOworICAgICAgICBtX2JvZHkuflVu
aXF1ZVJlZjxTdGF0ZW1lbnQ+KCk7CiAgICAgfQogCiAgICAgRm9yTG9vcChjb25zdCBGb3JMb29w
JikgPSBkZWxldGU7CiAgICAgRm9yTG9vcChGb3JMb29wJiYpID0gZGVmYXVsdDsKIAotICAgIGJv
b2wgaXNGb3JMb29wKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgVmFy
aWFudDxVbmlxdWVSZWY8U3RhdGVtZW50PiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+PiYgaW5pdGlh
bGl6YXRpb24oKSB7IHJldHVybiBtX2luaXRpYWxpemF0aW9uOyB9CiAgICAgRXhwcmVzc2lvbiog
Y29uZGl0aW9uKCkgeyByZXR1cm4gbV9jb25kaXRpb24uZ2V0KCk7IH0KICAgICBFeHByZXNzaW9u
KiBpbmNyZW1lbnQoKSB7IHJldHVybiBtX2luY3JlbWVudC5nZXQoKTsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMR2xvYmFsVmFyaWFibGVSZWZl
cmVuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5oCShyZXZpc2lvbiAyNDgzOTIpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xHbG9iYWxWYXJp
YWJsZVJlZmVyZW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxOSArMzcsMjYgQEAgbmFtZXNw
YWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEdsb2JhbFZhcmlhYmxlUmVm
ZXJlbmNlIDogcHVibGljIEV4cHJlc3Npb24geworY2xhc3MgR2xvYmFsVmFyaWFibGVSZWZlcmVu
Y2UgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UoQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBiYXNlLCBTdHJ1Y3R1cmVFbGVtZW50KiBz
dHJ1Y3RGaWVsZCkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4
cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKQogICAgICAg
ICAsIG1fYmFzZShXVEZNb3ZlKGJhc2UpKQogICAgICAgICAsIG1fc3RydWN0RmllbGQoKnN0cnVj
dEZpZWxkKQogICAgIHsKICAgICAgICAgQVNTRVJUKHN0cnVjdEZpZWxkKTsKICAgICB9CiAKLSAg
ICB2aXJ0dWFsIH5HbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKLSAgICBib29s
IGlzR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CisgICAgfkdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKCkKKyAgICB7CisgICAgICAgIG1fa2lu
ZCA9IEtpbmQ6Ok5vbmU7CisgICAgfQorICAgIHZvaWQgZGVzdHJveSgpCisgICAgeworICAgICAg
ICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4oV1RGTW92ZShtX2Jhc2UpKTsKKyAgICB9CisKICAgICBT
dHJ1Y3R1cmVFbGVtZW50JiBzdHJ1Y3RGaWVsZCgpIHsgcmV0dXJuIG1fc3RydWN0RmllbGQ7IH0K
IAogICAgIEV4cHJlc3Npb24mIGJhc2UoKSB7IHJldHVybiBtX2Jhc2UuZ2V0KCk7IH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTElmU3RhdGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMSWZTdGF0ZW1lbnQuaAkocmV2aXNpb24gMjQ4MzkyKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSWZTdGF0ZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzksMjQgKzM5LDIyIEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1Qg
ewogCi1jbGFzcyBJZlN0YXRlbWVudCA6IHB1YmxpYyBTdGF0ZW1lbnQgeworY2xhc3MgSWZTdGF0
ZW1lbnQgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBJZlN0YXRlbWVudChDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVu
aXF1ZVJlZjxFeHByZXNzaW9uPiYmIGNvbmRpdGlvbmFsLCBVbmlxdWVSZWY8U3RhdGVtZW50PiYm
IGJvZHksIHN0ZDo6dW5pcXVlX3B0cjxTdGF0ZW1lbnQ+JiYgZWxzZUJvZHkpCi0gICAgICAgIDog
U3RhdGVtZW50KGxvY2F0aW9uKQorICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6
SWYpCiAgICAgICAgICwgbV9jb25kaXRpb25hbChXVEZNb3ZlKGNvbmRpdGlvbmFsKSkKICAgICAg
ICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkKICAgICAgICAgLCBtX2Vsc2VCb2R5KFdURk1vdmUo
ZWxzZUJvZHkpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5JZlN0YXRlbWVudCgpID0g
ZGVmYXVsdDsKKyAgICB+SWZTdGF0ZW1lbnQoKSA9IGRlZmF1bHQ7CiAKICAgICBJZlN0YXRlbWVu
dChjb25zdCBJZlN0YXRlbWVudCYpID0gZGVsZXRlOwogICAgIElmU3RhdGVtZW50KElmU3RhdGVt
ZW50JiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNJZlN0YXRlbWVudCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIEV4cHJlc3Npb24mIGNvbmRpdGlvbmFsKCkgeyBy
ZXR1cm4gbV9jb25kaXRpb25hbDsgfQogICAgIFN0YXRlbWVudCYgYm9keSgpIHsgcmV0dXJuIG1f
Ym9keTsgfQogICAgIFN0YXRlbWVudCogZWxzZUJvZHkoKSB7IHJldHVybiBtX2Vsc2VCb2R5Lmdl
dCgpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xJbmRleEV4cHJlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbmRleEV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4Mzky
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW5kZXhF
eHByZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDMzICszOCw0MCBAQCBuYW1lc3BhY2Ug
V0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgSW5kZXhFeHByZXNzaW9uIDogcHVi
bGljIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiB7CitjbGFzcyBJbmRleEV4cHJlc3Npb24gZmlu
YWwgOiBwdWJsaWMgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uIHsKKyAgICB1c2luZyBCYXNlID0g
UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIEluZGV4RXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1
ZVJlZjxFeHByZXNzaW9uPiYmIGJhc2UsIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGluZGV4KQot
ICAgICAgICA6IFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihsb2NhdGlvbiwgV1RGTW92ZShiYXNl
KSkKKyAgICAgICAgOiBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6Oklu
ZGV4LCBXVEZNb3ZlKGJhc2UpKQogICAgICAgICAsIG1faW5kZXgoV1RGTW92ZShpbmRleCkpCiAg
ICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfkluZGV4RXhwcmVzc2lvbigpID0gZGVmYXVsdDsK
KyAgICB+SW5kZXhFeHByZXNzaW9uKCkKKyAgICB7CisgICAgICAgIG1fa2luZCA9IEtpbmQ6Ok5v
bmU7CisgICAgfQorICAgIHZvaWQgZGVzdHJveSgpCisgICAgeworICAgICAgICBVbmlxdWVSZWY8
RXhwcmVzc2lvbj4oV1RGTW92ZShtX2luZGV4KSk7CisgICAgICAgIHRoaXMtPkJhc2U6OmRlc3Ry
b3koKTsKKyAgICB9CiAKICAgICBJbmRleEV4cHJlc3Npb24oY29uc3QgSW5kZXhFeHByZXNzaW9u
JikgPSBkZWxldGU7CiAgICAgSW5kZXhFeHByZXNzaW9uKEluZGV4RXhwcmVzc2lvbiYmKSA9IGRl
ZmF1bHQ7CiAKLSAgICBib29sIGlzSW5kZXhFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQotCi0gICAgU3RyaW5nIGdldHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0IG92
ZXJyaWRlCisgICAgU3RyaW5nIGdldHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gIm9wZXJhdG9yW10iX3N0cjsKICAgICB9CiAKLSAgICBTdHJpbmcgc2V0dGVy
RnVuY3Rpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJpbmcgc2V0dGVyRnVuY3Rpb25O
YW1lKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAib3BlcmF0b3JbXT0iX3N0cjsKICAg
ICB9CiAKLSAgICBTdHJpbmcgYW5kZXJGdW5jdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZQorICAg
IFN0cmluZyBhbmRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
Im9wZXJhdG9yJltdIl9zdHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5o
CShyZXZpc2lvbiAyNDgzOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNyArMzcs
MjUgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEludGVn
ZXJMaXRlcmFsIDogcHVibGljIEV4cHJlc3Npb24geworY2xhc3MgSW50ZWdlckxpdGVyYWwgZmlu
YWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgSW50ZWdlckxpdGVyYWwoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBpbnQgdmFs
dWUpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9u
KGxvY2F0aW9uLCBLaW5kOjpJbnRlZ2VyTGl0ZXJhbCkKICAgICAgICAgLCBtX3R5cGUobG9jYXRp
b24sIHZhbHVlKQogICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgewogICAgIH0KIAotICAg
IHZpcnR1YWwgfkludGVnZXJMaXRlcmFsKCkgPSBkZWZhdWx0OworICAgIH5JbnRlZ2VyTGl0ZXJh
bCgpCisgICAgeworICAgICAgICBtX2tpbmQgPSBLaW5kOjpOb25lOworICAgIH0KKworICAgIHZv
aWQgZGVzdHJveSgpCisgICAgeworICAgICAgICBtX3R5cGUufkludGVnZXJMaXRlcmFsVHlwZSgp
OworICAgIH0KIAogICAgIEludGVnZXJMaXRlcmFsKGNvbnN0IEludGVnZXJMaXRlcmFsJikgPSBk
ZWxldGU7CiAgICAgSW50ZWdlckxpdGVyYWwoSW50ZWdlckxpdGVyYWwmJikgPSBkZWZhdWx0OwpA
QCAtNTgsOCArNjYsNiBAQCBwdWJsaWM6CiAgICAgSW50ZWdlckxpdGVyYWxUeXBlJiB0eXBlKCkg
eyByZXR1cm4gbV90eXBlOyB9CiAgICAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1
ZTsgfQogCi0gICAgYm9vbCBpc0ludGVnZXJMaXRlcmFsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQotCiAgICAgSW50ZWdlckxpdGVyYWwgY2xvbmUoKSBjb25zdAogICAgIHsKICAg
ICAgICAgSW50ZWdlckxpdGVyYWwgcmVzdWx0KGNvZGVMb2NhdGlvbigpLCBtX3ZhbHVlKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxF
eHByZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMTG9naWNhbEV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4MzkyKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbEV4cHJl
c3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV0hMU0wg
ewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgTG9naWNhbEV4cHJlc3Npb24gOiBwdWJsaWMg
RXhwcmVzc2lvbiB7CitjbGFzcyBMb2dpY2FsRXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBFeHBy
ZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVt
IGNsYXNzIFR5cGUgOiB1aW50OF90IHsKQEAgLTQ2LDIyICs0NiwzMCBAQCBwdWJsaWM6CiAgICAg
fTsKIAogICAgIExvZ2ljYWxFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVHlwZSB0
eXBlLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBsZWZ0LCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4m
JiByaWdodCkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJl
c3Npb24obG9jYXRpb24sIEtpbmQ6OkxvZ2ljYWwpCiAgICAgICAgICwgbV90eXBlKHR5cGUpCiAg
ICAgICAgICwgbV9sZWZ0KFdURk1vdmUobGVmdCkpCiAgICAgICAgICwgbV9yaWdodChXVEZNb3Zl
KHJpZ2h0KSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+TG9naWNhbEV4cHJlc3Npb24o
KSA9IGRlZmF1bHQ7CisgICAgfkxvZ2ljYWxFeHByZXNzaW9uKCkKKyAgICB7CisgICAgICAgIG1f
a2luZCA9IEtpbmQ6Ok5vbmU7CisgICAgfQorICAgICAgICAKKyAgICB2b2lkIGRlc3Ryb3koKQor
ICAgIHsKKyAgICAgICAgbV90eXBlLn5UeXBlKCk7CisgICAgICAgIFVuaXF1ZVJlZjxFeHByZXNz
aW9uPihXVEZNb3ZlKG1fbGVmdCkpOworICAgICAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4oV1RG
TW92ZShtX3JpZ2h0KSk7CisgICAgfQogCiAgICAgTG9naWNhbEV4cHJlc3Npb24oY29uc3QgTG9n
aWNhbEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBMb2dpY2FsRXhwcmVzc2lvbihMb2dpY2Fs
RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3R5cGU7IH0KIAotICAgIGJvb2wgaXNMb2dpY2FsRXhwcmVzc2lvbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIEV4cHJlc3Npb24mIGxlZnQoKSB7IHJldHVybiBt
X2xlZnQ7IH0KICAgICBFeHByZXNzaW9uJiByaWdodCgpIHsgcmV0dXJuIG1fcmlnaHQ7IH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNh
bE5vdEV4cHJlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDgz
OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dp
Y2FsTm90RXhwcmVzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywyMiArMzcsMjggQEAgbmFt
ZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIExvZ2ljYWxOb3RFeHBy
ZXNzaW9uIDogcHVibGljIEV4cHJlc3Npb24geworY2xhc3MgTG9naWNhbE5vdEV4cHJlc3Npb24g
ZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgTG9naWNhbE5vdEV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9u
LCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBvcGVyYW5kKQotICAgICAgICA6IEV4cHJlc3Npb24o
bG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6TG9naWNhbE5v
dCkKICAgICAgICAgLCBtX29wZXJhbmQoV1RGTW92ZShvcGVyYW5kKSkKICAgICB7CiAgICAgfQog
Ci0gICAgdmlydHVhbCB+TG9naWNhbE5vdEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfkxv
Z2ljYWxOb3RFeHByZXNzaW9uKCkKKyAgICB7CisgICAgICAgIG1fa2luZCA9IEtpbmQ6Ok5vbmU7
CisgICAgfQorCisgICAgdm9pZCBkZXN0cm95KCkKKyAgICB7CisgICAgICAgIFVuaXF1ZVJlZjxF
eHByZXNzaW9uPihXVEZNb3ZlKG1fb3BlcmFuZCkpOworICAgIH0KIAogICAgIExvZ2ljYWxOb3RF
eHByZXNzaW9uKGNvbnN0IExvZ2ljYWxOb3RFeHByZXNzaW9uJikgPSBkZWxldGU7CiAgICAgTG9n
aWNhbE5vdEV4cHJlc3Npb24oTG9naWNhbE5vdEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwogCi0g
ICAgYm9vbCBpc0xvZ2ljYWxOb3RFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQotCiAgICAgRXhwcmVzc2lvbiYgb3BlcmFuZCgpIHsgcmV0dXJuIG1fb3BlcmFuZDsg
fQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VBcnJheVJlZmVy
ZW5jZUV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4MzkyKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyMyArMzgsMjggQEAgbmFtZXNwYWNlIFdITFNMIHsKIAog
bmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24gOiBw
dWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uIGZp
bmFsIDogcHVibGljIEV4cHJlc3Npb24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBsZWZ0VmFsdWUsIEFkZHJlc3NFc2NhcGVN
b2RlIGFkZHJlc3NFc2NhcGVNb2RlKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24pCisg
ICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6TWFrZUFycmF5UmVmZXJlbmNlKQog
ICAgICAgICAsIG1fbGVmdFZhbHVlKFdURk1vdmUobGVmdFZhbHVlKSkKICAgICAgICAgLCBtX2Fk
ZHJlc3NFc2NhcGVNb2RlKGFkZHJlc3NFc2NhcGVNb2RlKQogICAgIHsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIH5NYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKCkgPSBkZWZhdWx0OworICAgIH5N
YWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKCkKKyAgICB7CisgICAgICAgIG1fa2luZCA9IEtp
bmQ6Ok5vbmU7CisgICAgfQorICAgIHZvaWQgZGVzdHJveSgpCisgICAgeworICAgICAgICBVbmlx
dWVSZWY8RXhwcmVzc2lvbj4oV1RGTW92ZShtX2xlZnRWYWx1ZSkpOworICAgIH0KIAogICAgIE1h
a2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oY29uc3QgTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVz
c2lvbiYpID0gZGVsZXRlOwogICAgIE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oTWFrZUFy
cmF5UmVmZXJlbmNlRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzTWFrZUFy
cmF5UmVmZXJlbmNlRXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
LQogICAgIEV4cHJlc3Npb24mIGxlZnRWYWx1ZSgpIHsgcmV0dXJuIG1fbGVmdFZhbHVlOyB9CiAK
ICAgICBib29sIG1pZ2h0RXNjYXBlKCkgY29uc3QgeyByZXR1cm4gbV9hZGRyZXNzRXNjYXBlTW9k
ZSA9PSBBZGRyZXNzRXNjYXBlTW9kZTo6RXNjYXBlczsgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
TWFrZVBvaW50ZXJFeHByZXNzaW9uLmgJKHJldmlzaW9uIDI0ODM5MikKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyMyArMzgsMjggQEAgbmFtZXNwYWNlIFdITFNMIHsKIAog
bmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIE1ha2VQb2ludGVyRXhwcmVzc2lvbiA6IHB1YmxpYyBF
eHByZXNzaW9uIHsKK2NsYXNzIE1ha2VQb2ludGVyRXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBF
eHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBN
YWtlUG9pbnRlckV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhw
cmVzc2lvbj4mJiBsZWZ0VmFsdWUsIEFkZHJlc3NFc2NhcGVNb2RlIGFkZHJlc3NFc2NhcGVNb2Rl
KQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihs
b2NhdGlvbiwgS2luZDo6TWFrZVBvaW50ZXIpCiAgICAgICAgICwgbV9sZWZ0VmFsdWUoV1RGTW92
ZShsZWZ0VmFsdWUpKQogICAgICAgICAsIG1fYWRkcmVzc0VzY2FwZU1vZGUoYWRkcmVzc0VzY2Fw
ZU1vZGUpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfk1ha2VQb2ludGVyRXhwcmVzc2lv
bigpID0gZGVmYXVsdDsKKyAgICB+TWFrZVBvaW50ZXJFeHByZXNzaW9uKCkKKyAgICB7CisgICAg
ICAgIG1fa2luZCA9IEtpbmQ6Ok5vbmU7CisgICAgfQorICAgIHZvaWQgZGVzdHJveSgpCisgICAg
eworICAgICAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4oV1RGTW92ZShtX2xlZnRWYWx1ZSkpOwor
ICAgIH0KIAogICAgIE1ha2VQb2ludGVyRXhwcmVzc2lvbihjb25zdCBNYWtlUG9pbnRlckV4cHJl
c3Npb24mKSA9IGRlbGV0ZTsKICAgICBNYWtlUG9pbnRlckV4cHJlc3Npb24oTWFrZVBvaW50ZXJF
eHByZXNzaW9uJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNNYWtlUG9pbnRlckV4cHJlc3Np
b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNzaW9uJiBs
ZWZ0VmFsdWUoKSB7IHJldHVybiBtX2xlZnRWYWx1ZTsgfQogCiAgICAgYm9vbCBtaWdodEVzY2Fw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWRkcmVzc0VzY2FwZU1vZGUgPT0gQWRkcmVzc0VzY2FwZU1v
ZGU6OkVzY2FwZXM7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTE51bGxMaXRlcmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVsbExpdGVyYWwuaAkocmV2aXNpb24gMjQ4Mzky
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVsbExp
dGVyYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTUgKzM3LDIyIEBAIG5hbWVzcGFjZSBXSExT
TCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBOdWxsTGl0ZXJhbCA6IHB1YmxpYyBFeHBy
ZXNzaW9uIHsKK2NsYXNzIE51bGxMaXRlcmFsIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE51bGxMaXRlcmFsKENv
ZGVMb2NhdGlvbiBsb2NhdGlvbikKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAg
ICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6Ok51bGxMaXRlcmFsKQogICAgIHsKICAg
ICB9CiAKLSAgICB2aXJ0dWFsIH5OdWxsTGl0ZXJhbCgpID0gZGVmYXVsdDsKKyAgICB+TnVsbExp
dGVyYWwoKQorICAgIHsKKyAgICAgICAgbV9raW5kID0gS2luZDo6Tm9uZTsKKyAgICB9CisgICAg
dm9pZCBkZXN0cm95KCkKKyAgICB7CisgICAgICAgIG1fdHlwZS5+TnVsbExpdGVyYWxUeXBlKCk7
CisgICAgfQogCiAgICAgTnVsbExpdGVyYWwoY29uc3QgTnVsbExpdGVyYWwmKSA9IGRlbGV0ZTsK
ICAgICBOdWxsTGl0ZXJhbChOdWxsTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CkBAIC01NSw4ICs2Miw2
IEBAIHB1YmxpYzoKIAogICAgIE51bGxMaXRlcmFsVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlw
ZTsgfQogCi0gICAgYm9vbCBpc051bGxMaXRlcmFsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQotCiAgICAgTnVsbExpdGVyYWwgY2xvbmUoKSBjb25zdAogICAgIHsKICAgICAgICAg
YXV0byByZXN1bHQgPSBOdWxsTGl0ZXJhbChjb2RlTG9jYXRpb24oKSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJl
c3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4MzkyKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDIyICs0MSwyMyBAQCBuYW1l
c3BhY2UgQVNUIHsKIGNsYXNzIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiA6IHB1YmxpYyBFeHBy
ZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhw
cmVzc2lvbj4mJiBiYXNlKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgUHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgS2luZCBraW5kLCBV
bmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBiYXNlKQorICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRp
b24sIGtpbmQpCiAgICAgICAgICwgbV9iYXNlKFdURk1vdmUoYmFzZSkpCiAgICAgewogICAgIH0K
IAotICAgIHZpcnR1YWwgflByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKyAg
ICB2b2lkIGRlc3Ryb3koKQorICAgIHsKKyAgICAgICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+KFdU
Rk1vdmUobV9iYXNlKSk7CisgICAgfQogCiAgICAgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGNv
bnN0IFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYpID0gZGVsZXRlOwogICAgIFByb3BlcnR5QWNj
ZXNzRXhwcmVzc2lvbihQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mJikgPSBkZWZhdWx0OwogCi0g
ICAgYm9vbCBpc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KLQotICAgIHZpcnR1YWwgU3RyaW5nIGdldHRlckZ1bmN0aW9uTmFtZSgpIGNv
bnN0ID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyBzZXR0ZXJGdW5jdGlvbk5hbWUoKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcgYW5kZXJGdW5jdGlvbk5hbWUoKSBjb25zdCA9IDA7Cisg
ICAgU3RyaW5nIGdldHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0OworICAgIFN0cmluZyBzZXR0ZXJG
dW5jdGlvbk5hbWUoKSBjb25zdDsKKyAgICBTdHJpbmcgYW5kZXJGdW5jdGlvbk5hbWUoKSBjb25z
dDsKIAogICAgIEZ1bmN0aW9uRGVjbGFyYXRpb24qIGdldHRlckZ1bmN0aW9uKCkgeyByZXR1cm4g
bV9nZXR0ZXJGdW5jdGlvbjsgfQogICAgIEZ1bmN0aW9uRGVjbGFyYXRpb24qIGFuZGVyRnVuY3Rp
b24oKSB7IHJldHVybiBtX2FuZGVyRnVuY3Rpb247IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmgJKHJldmlzaW9uIDI0ODM5MikKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRNb2RpZnlXcml0ZUV4
cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgQVNU
IHsKICAqICA2LiBFdmFsdWF0ZSBtX3Jlc3VsdEV4cHJlc3Npb24KICAqICA3LiBSZXR1cm4gdGhl
IHJlc3VsdAogICovCi1jbGFzcyBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uIDogcHVibGljIEV4
cHJlc3Npb24geworY2xhc3MgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiBmaW5hbCA6IHB1Ymxp
YyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgVW5pcXVlUmVmPFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+IGNyZWF0ZShDb2Rl
TG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBsVmFsdWUpCkBAIC01Nyw3
ICs1NywxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPFJlYWRNb2Rp
ZnlXcml0ZUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKGxWYWx1ZSkpOwogICAgIH0KIAot
ICAgIHZpcnR1YWwgflJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAg
flJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oKQorICAgIHsKKyAgICAgICAgbV9raW5kID0gS2lu
ZDo6Tm9uZTsKKyAgICB9CisgICAgdm9pZCBkZXN0cm95KCkKKyAgICB7CisgICAgICAgIFVuaXF1
ZVJlZjxFeHByZXNzaW9uPihXVEZNb3ZlKG1fbGVmdFZhbHVlKSk7CisgICAgICAgIFVuaXF1ZVJl
ZjxWYXJpYWJsZURlY2xhcmF0aW9uPihXVEZNb3ZlKG1fb2xkVmFsdWUpKTsKKyAgICAgICAgVW5p
cXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+KFdURk1vdmUobV9uZXdWYWx1ZSkpOworICAgICAg
ICBPcHRpb25hbDxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+KFdURk1vdmUobV9uZXdWYWx1ZUV4cHJl
c3Npb24pKTsKKyAgICAgICAgT3B0aW9uYWw8VW5pcXVlUmVmPEV4cHJlc3Npb24+PihXVEZNb3Zl
KG1fcmVzdWx0RXhwcmVzc2lvbikpOworICAgIH0KIAogICAgIFJlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb24oY29uc3QgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiYpID0gZGVsZXRlOwogICAgIFJl
YWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiYmKSA9IGRl
ZmF1bHQ7CkBAIC04Miw4ICs5Myw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWVSZWY8VmFyaWFibGVSZWZlcmVuY2U+KFZhcmlhYmxlUmVmZXJlbmNlOjp3cmFwKG1fbmV3VmFs
dWUpKTsKICAgICB9CiAKLSAgICBib29sIGlzUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIEV4cHJlc3Npb24mIGxlZnRWYWx1
ZSgpIHsgcmV0dXJuIG1fbGVmdFZhbHVlOyB9CiAgICAgVmFyaWFibGVEZWNsYXJhdGlvbiYgb2xk
VmFsdWUoKSB7IHJldHVybiBtX29sZFZhbHVlOyB9CiAgICAgVmFyaWFibGVEZWNsYXJhdGlvbiYg
bmV3VmFsdWUoKSB7IHJldHVybiBtX25ld1ZhbHVlOyB9CkBAIC0xMTcsNyArMTI2LDcgQEAgcHJp
dmF0ZToKICAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBmcmllbmQgVW5pcXVl
UmVmPFU+IFdURjo6bWFrZVVuaXF1ZVJlZihBcmdzJiYuLi4pOwogCiAgICAgUmVhZE1vZGlmeVdy
aXRlRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9u
PiBsZWZ0VmFsdWUpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBF
eHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpSZWFkTW9kaWZ5V3JpdGUpCiAgICAgICAgICwgbV9s
ZWZ0VmFsdWUoV1RGTW92ZShsZWZ0VmFsdWUpKQogICAgICAgICAsIG1fb2xkVmFsdWUobWFrZVVu
aXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9uPihsb2NhdGlvbiwgUXVhbGlmaWVycygpLCBudWxs
cHRyLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cikpCiAgICAgICAgICwgbV9uZXdWYWx1ZSht
YWtlVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+KGxvY2F0aW9uLCBRdWFsaWZpZXJzKCks
IG51bGxwdHIsIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJldHVybi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJldHVybi5oCShy
ZXZpc2lvbiAyNDgzOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xSZXR1cm4uaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTEgKzM5LDExIEBAIG5hbWVz
cGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBSZXR1cm4gOiBwdWJsaWMg
U3RhdGVtZW50IHsKK2NsYXNzIFJldHVybiBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFJldHVybihDb2RlTG9jYXRp
b24gbG9jYXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIHZhbHVlKQotICAgICAg
ICA6IFN0YXRlbWVudChsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtp
bmQ6OlJldHVybikKICAgICAgICAgLCBtX3ZhbHVlKFdURk1vdmUodmFsdWUpKQogICAgIHsKICAg
ICB9CkBAIC01Myw4ICs1Myw2IEBAIHB1YmxpYzoKICAgICBSZXR1cm4oY29uc3QgUmV0dXJuJikg
PSBkZWxldGU7CiAgICAgUmV0dXJuKFJldHVybiYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlz
UmV0dXJuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgRXhwcmVzc2lv
biogdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlLmdldCgpOyB9CiAKIHByaXZhdGU6CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFN0YXRlbWVudC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldITFNMU3RhdGVtZW50LmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hM
U0xBU1QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCitu
YW1lc3BhY2UgQVNUIHsKKworU3RhdGVtZW50Ojp+U3RhdGVtZW50KCkKK3sKK30KKworfSAvLyBu
YW1lc3BhY2UgQVNUCisKK30KKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5oCShy
ZXZpc2lvbiAyNDgzOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xTdGF0ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMzYgKzQwLDU3IEBAIG5h
bWVzcGFjZSBBU1QgewogY2xhc3MgU3RhdGVtZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBTdGF0ZW1lbnQoQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbikK
LSAgICAgICAgOiBtX2NvZGVMb2NhdGlvbihjb2RlTG9jYXRpb24pCisgICAgZW51bSBjbGFzcyBL
aW5kIDogdWludDhfdCB7CisgICAgICAgIEJsb2NrLAorICAgICAgICBCcmVhaywKKyAgICAgICAg
Q29udGludWUsCisgICAgICAgIERvV2hpbGVMb29wLAorICAgICAgICBFZmZlY3RmdWxFeHByZXNz
aW9uLAorICAgICAgICBGYWxsdGhyb3VnaCwKKyAgICAgICAgRm9yTG9vcCwKKyAgICAgICAgSWYs
CisgICAgICAgIFJldHVybiwKKyAgICAgICAgU3RhdGVtZW50TGlzdCwKKyAgICAgICAgU3dpdGNo
Q2FzZSwKKyAgICAgICAgU3dpdGNoLAorICAgICAgICBWYXJpYWJsZURlY2xhcmF0aW9ucywKKyAg
ICAgICAgV2hpbGVMb29wLAorICAgICAgICBOb25lLAorICAgIH07CisgICAgU3RhdGVtZW50KENv
ZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24sIEtpbmQga2luZCkKKyAgICAgICAgOiBtX2NvZGVMb2Nh
dGlvbihjb2RlTG9jYXRpb24uc3RhcnRPZmZzZXQoKSkKKyAgICAgICAgLCBtX2tpbmQoa2luZCkK
ICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+U3RhdGVtZW50KCkgPSBkZWZhdWx0OworICAg
IH5TdGF0ZW1lbnQoKTsKIAogICAgIFN0YXRlbWVudChjb25zdCBTdGF0ZW1lbnQmKSA9IGRlbGV0
ZTsKICAgICBTdGF0ZW1lbnQoU3RhdGVtZW50JiYpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwg
Ym9vbCBpc0Jsb2NrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aXNCcmVhaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQ29u
dGludWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0RvV2hp
bGVMb29wKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNFZmZl
Y3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNGYWxsdGhyb3VnaCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzRm9yTG9vcCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzSWZTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBpc1JldHVybigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzU3RhdGVtZW50TGlzdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzU3dpdGNoQ2FzZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzU3dpdGNoU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzV2hpbGVMb29wKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0K
IAotICAgIENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvZGVM
b2NhdGlvbjsgfQotICAgIHZvaWQgdXBkYXRlQ29kZUxvY2F0aW9uKENvZGVMb2NhdGlvbiBsb2Nh
dGlvbikgeyBtX2NvZGVMb2NhdGlvbiA9IGxvY2F0aW9uOyB9CisgICAgYm9vbCBpc0Jsb2NrKCkg
Y29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkJsb2NrOyB9CisgICAgYm9vbCBpc0JyZWFr
KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkJyZWFrOyB9CisgICAgYm9vbCBpc0Nv
bnRpbnVlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkNvbnRpbnVlOyB9CisgICAg
Ym9vbCBpc0RvV2hpbGVMb29wKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkRvV2hp
bGVMb29wOyB9CisgICAgYm9vbCBpc0VmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoKSBjb25z
dCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6RWZmZWN0ZnVsRXhwcmVzc2lvbjsgfQorICAgIGJv
b2wgaXNGYWxsdGhyb3VnaCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpGYWxsdGhy
b3VnaDsgfQorICAgIGJvb2wgaXNGb3JMb29wKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtp
bmQ6OkZvckxvb3A7IH0KKyAgICBib29sIGlzSWZTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBr
aW5kKCkgPT0gS2luZDo6SWY7IH0KKyAgICBib29sIGlzUmV0dXJuKCkgY29uc3QgeyByZXR1cm4g
a2luZCgpID09IEtpbmQ6OlJldHVybjsgfQorICAgIGJvb2wgaXNTdGF0ZW1lbnRMaXN0KCkgY29u
c3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlN0YXRlbWVudExpc3Q7IH0KKyAgICBib29sIGlz
U3dpdGNoQ2FzZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpTd2l0Y2hDYXNlOyB9
CisgICAgYm9vbCBpc1N3aXRjaFN0YXRlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBL
aW5kOjpTd2l0Y2g7IH0KKyAgICBib29sIGlzVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQo
KSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6VmFyaWFibGVEZWNsYXJhdGlvbnM7IH0K
KyAgICBib29sIGlzV2hpbGVMb29wKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6Oldo
aWxlTG9vcDsgfQorCisgICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIENvZGVMb2NhdGlvbihtX2NvZGVMb2NhdGlvbiwgbV9jb2RlTG9jYXRpb24pOyB9CisgICAg
dm9pZCB1cGRhdGVDb2RlTG9jYXRpb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uKSB7IG1fY29kZUxv
Y2F0aW9uID0gbG9jYXRpb24uc3RhcnRPZmZzZXQoKTsgfQogCiBwcml2YXRlOgotICAgIENvZGVM
b2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKKyAgICB1bnNpZ25lZCBtX2NvZGVMb2NhdGlvbjsKKyAg
ICBLaW5kIG1fa2luZDsKIH07CiAKIHVzaW5nIFN0YXRlbWVudHMgPSBWZWN0b3I8VW5pcXVlUmVm
PFN0YXRlbWVudD4+OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMU3RhdGVtZW50TGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudExpc3QuaAkocmV2aXNpb24gMjQ4
MzkyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3Rh
dGVtZW50TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMiArMzgsMTIgQEAgbmFtZXNwYWNl
IFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIFN0YXRlbWVudExpc3QgOiBwdWJs
aWMgU3RhdGVtZW50IHsKK2NsYXNzIFN0YXRlbWVudExpc3QgZmluYWwgOiBwdWJsaWMgU3RhdGVt
ZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICB1c2luZyBCYXNlID0gU3Rh
dGVtZW50OwogcHVibGljOgogICAgIFN0YXRlbWVudExpc3QoQ29kZUxvY2F0aW9uIGxvY2F0aW9u
LCBTdGF0ZW1lbnRzJiYgc3RhdGVtZW50cykKLSAgICAgICAgOiBCYXNlKGxvY2F0aW9uKQorICAg
ICAgICA6IEJhc2UobG9jYXRpb24sIEtpbmQ6OlN0YXRlbWVudExpc3QpCiAgICAgICAgICwgbV9z
dGF0ZW1lbnRzKFdURk1vdmUoc3RhdGVtZW50cykpCiAgICAgeyB9CiAKQEAgLTUxLDggKzUxLDYg
QEAgcHVibGljOgogCiAgICAgU3RhdGVtZW50cyYgc3RhdGVtZW50cygpIHsgcmV0dXJuIG1fc3Rh
dGVtZW50czsgfQogCi0gICAgYm9vbCBpc1N0YXRlbWVudExpc3QoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9Ci0KIHByaXZhdGU6CiAgICAgU3RhdGVtZW50cyBtX3N0YXRlbWVudHM7
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
U3dpdGNoQ2FzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFN3aXRjaENhc2UuaAkocmV2aXNpb24gMjQ4MzkyKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoQ2FzZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCwxMSArNDAsMTEgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNw
YWNlIEFTVCB7CiAKLWNsYXNzIFN3aXRjaENhc2UgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNz
IFN3aXRjaENhc2UgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTd2l0Y2hDYXNlKENvZGVMb2NhdGlvbiBsb2NhdGlv
biwgT3B0aW9uYWw8Q29uc3RhbnRFeHByZXNzaW9uPiYmIHZhbHVlLCBCbG9jayYmIGJsb2NrKQot
ICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRp
b24sIEtpbmQ6OlN3aXRjaENhc2UpCiAgICAgICAgICwgbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkK
ICAgICAgICAgLCBtX2Jsb2NrKFdURk1vdmUoYmxvY2spKQogICAgIHsKQEAgLTU1LDggKzU1LDYg
QEAgcHVibGljOgogICAgIFN3aXRjaENhc2UoY29uc3QgU3dpdGNoQ2FzZSYpID0gZGVsZXRlOwog
ICAgIFN3aXRjaENhc2UoU3dpdGNoQ2FzZSYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzU3dp
dGNoQ2FzZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIE9wdGlvbmFs
PENvbnN0YW50RXhwcmVzc2lvbj4mIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgIEJs
b2NrJiBibG9jaygpIHsgcmV0dXJuIG1fYmxvY2s7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoU3RhdGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNo
U3RhdGVtZW50LmgJKHJldmlzaW9uIDI0ODM5MikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaFN0YXRlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSwxMSArMzksMTEgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAK
LWNsYXNzIFN3aXRjaFN0YXRlbWVudCA6IHB1YmxpYyBTdGF0ZW1lbnQgeworY2xhc3MgU3dpdGNo
U3RhdGVtZW50IGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU3dpdGNoU3RhdGVtZW50KENvZGVMb2NhdGlvbiBsb2Nh
dGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgdmFsdWUsIFZlY3RvcjxTd2l0Y2hDYXNlPiYm
IHN3aXRjaENhc2VzKQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbikKKyAgICAgICAgOiBT
dGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OlN3aXRjaCkKICAgICAgICAgLCBtX3ZhbHVlKFdURk1v
dmUodmFsdWUpKQogICAgICAgICAsIG1fc3dpdGNoQ2FzZXMoV1RGTW92ZShzd2l0Y2hDYXNlcykp
CiAgICAgewpAQCAtNTQsOCArNTQsNiBAQCBwdWJsaWM6CiAgICAgU3dpdGNoU3RhdGVtZW50KGNv
bnN0IFN3aXRjaFN0YXRlbWVudCYpID0gZGVsZXRlOwogICAgIFN3aXRjaFN0YXRlbWVudChTd2l0
Y2hTdGF0ZW1lbnQmJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc1N3aXRjaFN0YXRlbWVudCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIEV4cHJlc3Npb24mIHZhbHVl
KCkgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgIFZlY3RvcjxTd2l0Y2hDYXNlPiYgc3dpdGNoQ2Fz
ZXMoKSB7IHJldHVybiBtX3N3aXRjaENhc2VzOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVGVybmFy
eUV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4MzkyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVGVybmFyeUV4cHJlc3Npb24uaAkod29ya2luZyBjb3B5
KQpAQCAtMzcsMjQgKzM3LDMxIEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1Qg
ewogCi1jbGFzcyBUZXJuYXJ5RXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK2NsYXNz
IFRlcm5hcnlFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFRlcm5hcnlFeHByZXNzaW9uKENvZGVM
b2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgcHJlZGljYXRlLCBVbmlx
dWVSZWY8RXhwcmVzc2lvbj4mJiBib2R5RXhwcmVzc2lvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+
JiYgZWxzZUV4cHJlc3Npb24pCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAg
ICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpUZXJuYXJ5KQogICAgICAgICAsIG1fcHJl
ZGljYXRlKFdURk1vdmUocHJlZGljYXRlKSkKICAgICAgICAgLCBtX2JvZHlFeHByZXNzaW9uKFdU
Rk1vdmUoYm9keUV4cHJlc3Npb24pKQogICAgICAgICAsIG1fZWxzZUV4cHJlc3Npb24oV1RGTW92
ZShlbHNlRXhwcmVzc2lvbikpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgflRlcm5hcnlF
eHByZXNzaW9uKCkgPSBkZWZhdWx0OworICAgIH5UZXJuYXJ5RXhwcmVzc2lvbigpCisgICAgewor
ICAgICAgICBtX2tpbmQgPSBLaW5kOjpOb25lOworICAgIH0KKyAgICB2b2lkIGRlc3Ryb3koKQor
ICAgIHsKKyAgICAgICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+KFdURk1vdmUobV9wcmVkaWNhdGUp
KTsKKyAgICAgICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+KFdURk1vdmUobV9ib2R5RXhwcmVzc2lv
bikpOworICAgICAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4oV1RGTW92ZShtX2Vsc2VFeHByZXNz
aW9uKSk7CisgICAgfQogCiAgICAgVGVybmFyeUV4cHJlc3Npb24oY29uc3QgVGVybmFyeUV4cHJl
c3Npb24mKSA9IGRlbGV0ZTsKICAgICBUZXJuYXJ5RXhwcmVzc2lvbihUZXJuYXJ5RXhwcmVzc2lv
biYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzVGVybmFyeUV4cHJlc3Npb24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNzaW9uJiBwcmVkaWNhdGUoKSB7
IHJldHVybiBtX3ByZWRpY2F0ZTsgfQogICAgIEV4cHJlc3Npb24mIGJvZHlFeHByZXNzaW9uKCkg
eyByZXR1cm4gbV9ib2R5RXhwcmVzc2lvbjsgfQogICAgIEV4cHJlc3Npb24mIGVsc2VFeHByZXNz
aW9uKCkgeyByZXR1cm4gbV9lbHNlRXhwcmVzc2lvbjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaAkocmV2aXNpb24gMjQ4MzkyKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNyArMzcsMjQgQEAgbmFtZXNwYWNlIFdITFNMIHsK
IAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwgOiBwdWJs
aWMgRXhwcmVzc2lvbiB7CitjbGFzcyBVbnNpZ25lZEludGVnZXJMaXRlcmFsIGZpbmFsIDogcHVi
bGljIEV4cHJlc3Npb24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCB1bnNpZ25l
ZCB2YWx1ZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJl
c3Npb24obG9jYXRpb24sIEtpbmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwpCiAgICAgICAgICwg
bV90eXBlKGxvY2F0aW9uLCB2YWx1ZSkKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIH5VbnNpZ25lZEludGVnZXJMaXRlcmFsKCkgPSBkZWZhdWx0
OworICAgIH5VbnNpZ25lZEludGVnZXJMaXRlcmFsKCkKKyAgICB7CisgICAgICAgIG1fa2luZCA9
IEtpbmQ6Ok5vbmU7CisgICAgfQorICAgIHZvaWQgZGVzdHJveSgpCisgICAgeworICAgICAgICBt
X3R5cGUuflVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKCk7CisgICAgfQogCiAgICAgVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbChjb25zdCBVbnNpZ25lZEludGVnZXJMaXRlcmFsJikgPSBkZWxldGU7
CiAgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbChVbnNpZ25lZEludGVnZXJMaXRlcmFsJiYpID0g
ZGVmYXVsdDsKQEAgLTU4LDggKzY1LDYgQEAgcHVibGljOgogICAgIFVuc2lnbmVkSW50ZWdlckxp
dGVyYWxUeXBlJiB0eXBlKCkgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgdW5zaWduZWQgdmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKLSAgICBib29sIGlzVW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIFVuc2lnbmVk
SW50ZWdlckxpdGVyYWwgY2xvbmUoKSBjb25zdAogICAgIHsKICAgICAgICAgVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbCByZXN1bHQoY29kZUxvY2F0aW9uKCksIG1fdmFsdWUpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlv
bnNTdGF0ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oCShyZXZpc2lv
biAyNDgzOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwx
MSArMzksMTEgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNz
IFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50IDogcHVibGljIFN0YXRlbWVudCB7CitjbGFz
cyBWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFZhcmlhYmxlRGVj
bGFyYXRpb25zU3RhdGVtZW50KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVmFyaWFibGVEZWNsYXJh
dGlvbnMmJiB2YXJpYWJsZURlY2xhcmF0aW9ucykKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRp
b24pCisgICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpWYXJpYWJsZURlY2xhcmF0
aW9ucykKICAgICAgICAgLCBtX3ZhcmlhYmxlRGVjbGFyYXRpb25zKFdURk1vdmUodmFyaWFibGVE
ZWNsYXJhdGlvbnMpKQogICAgIHsKICAgICB9CkBAIC01Myw4ICs1Myw2IEBAIHB1YmxpYzoKICAg
ICBWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudChjb25zdCBWYXJpYWJsZURlY2xhcmF0aW9u
c1N0YXRlbWVudCYpID0gZGVsZXRlOwogICAgIFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50
KFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50JiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wg
aXNWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KLQogICAgIFZlY3RvcjxVbmlxdWVSZWY8VmFyaWFibGVEZWNsYXJhdGlvbj4+JiB2
YXJpYWJsZURlY2xhcmF0aW9ucygpIHsgcmV0dXJuIG1fdmFyaWFibGVEZWNsYXJhdGlvbnM7IH0K
IAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFZhcmlhYmxlUmVmZXJlbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVSZWZlcmVuY2UuaAkocmV2aXNp
b24gMjQ4MzkyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMVmFyaWFibGVSZWZlcmVuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTYgKzM4LDIzIEBA
IG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBWYXJpYWJsZVJl
ZmVyZW5jZSA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK2NsYXNzIFZhcmlhYmxlUmVmZXJlbmNlIGZp
bmFsIDogcHVibGljIEV4cHJlc3Npb24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFZhcmlhYmxlUmVmZXJlbmNlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3Ry
aW5nJiYgbmFtZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4
cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OlZhcmlhYmxlUmVmZXJlbmNlKQogICAgICAgICAsIG1f
bmFtZShXVEZNb3ZlKG5hbWUpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5WYXJpYWJs
ZVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKKyAgICB+VmFyaWFibGVSZWZlcmVuY2UoKQorICAgIHsK
KyAgICAgICAgbV9raW5kID0gS2luZDo6Tm9uZTsKKyAgICB9CisgICAgdm9pZCBkZXN0cm95KCkK
KyAgICB7CisgICAgICAgIG1fbmFtZS5+U3RyaW5nKCk7CisgICAgfQogCiAgICAgVmFyaWFibGVS
ZWZlcmVuY2UoY29uc3QgVmFyaWFibGVSZWZlcmVuY2UmKSA9IGRlbGV0ZTsKICAgICBWYXJpYWJs
ZVJlZmVyZW5jZShWYXJpYWJsZVJlZmVyZW5jZSYmKSA9IGRlZmF1bHQ7CkBAIC02MCw4ICs2Nyw2
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBib29sIGlz
VmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAg
ICBTdHJpbmcmIG5hbWUoKSB7IHJldHVybiBtX25hbWU7IH0KIAogICAgIFZhcmlhYmxlRGVjbGFy
YXRpb24qIHZhcmlhYmxlKCkgeyByZXR1cm4gbV92YXJpYWJsZTsgfQpAQCAtNzMsNyArNzgsNyBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgVmFyaWFibGVSZWZlcmVuY2UoQ29kZUxvY2F0aW9u
IGxvY2F0aW9uKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgICAgIDogRXhw
cmVzc2lvbihsb2NhdGlvbiwgS2luZDo6VmFyaWFibGVSZWZlcmVuY2UpCiAgICAgewogICAgIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hp
bGVMb29wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMV2hpbGVMb29wLmgJKHJldmlzaW9uIDI0ODM5MikKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCwxMSArMzgsMTEgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFT
VCB7CiAKLWNsYXNzIFdoaWxlTG9vcCA6IHB1YmxpYyBTdGF0ZW1lbnQgeworY2xhc3MgV2hpbGVM
b29wIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgV2hpbGVMb29wKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVl
UmVmPEV4cHJlc3Npb24+JiYgY29uZGl0aW9uYWwsIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+JiYgYm9k
eSkKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24pCisgICAgICAgIDogU3RhdGVtZW50KGxv
Y2F0aW9uLCBLaW5kOjpXaGlsZUxvb3ApCiAgICAgICAgICwgbV9jb25kaXRpb25hbChXVEZNb3Zl
KGNvbmRpdGlvbmFsKSkKICAgICAgICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkKICAgICB7CkBA
IC01Myw4ICs1Myw2IEBAIHB1YmxpYzoKICAgICBXaGlsZUxvb3AoY29uc3QgV2hpbGVMb29wJikg
PSBkZWxldGU7CiAgICAgV2hpbGVMb29wKFdoaWxlTG9vcCYmKSA9IGRlZmF1bHQ7CiAKLSAgICBi
b29sIGlzV2hpbGVMb29wKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAg
RXhwcmVzc2lvbiYgY29uZGl0aW9uYWwoKSB7IHJldHVybiBtX2NvbmRpdGlvbmFsOyB9CiAgICAg
U3RhdGVtZW50JiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI0
ODMyOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtODMxNCwxMSArODMxNCwxNCBAQAogCQk1MjEzMUU1QTFDNEYx
NTYxMDAzM0Y4MDIgLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjE1ODYyQzIyOTM3N0I3MDA1OTI1
RUYgLyogV0hMU0xBU1QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xBU1QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTIyQkFCOTYyMkU2QTM2MjAwQzU0Q0U5IC8qIFdITFNMQ29kZUxv
Y2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ29kZUxvY2F0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUyMkQwN0EzMjJGQkFCNDMwMEI5MDVCRSAvKiBXSExTTEV4cHJl
c3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xFeHByZXNzaW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTIyREEzRDMyMjlFMUQzOTAwNDJEMTUxIC8qIFdITFNM
R2xvYmFsVmFyaWFibGVSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xHbG9iYWxWYXJp
YWJsZVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjJFMUExNzIy
OTdENkQ0MDBFNUQzNkEgLyogV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyMkUxQTE5MjI5N0Q2RDQwMEU1RDM2QSAvKiBXSExT
TFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQcmVzZXJ2
ZVZhcmlhYmxlTGlmZXRpbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNjcy
NEYxMUNCMkZERjYwMDc1OTc0RCAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGV4dFRyYWNrUmVwcmVzZW50
YXRpb25Db2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI2NzI0RjIxQ0Iy
RkRGNjAwNzU5NzREIC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MjZCM0YwMTIyRkI3QkREMDA3NkQzN0QgLyog
V0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9u
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyNkIzRjAzMjJGQjdCREUwMDc2
RDM3RCAvKiBXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rp
b25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyOTE0QzJBMjJGOTNFNEUwMDU3
ODE1MCAvKiBXSExTTFBhcnNpbmdNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUGFyc2luZ01v
ZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI5MTRDMkMyMkY5M0U1RDAwNTc4
MTUwIC8qIFdITFNMQWRkcmVzc0VzY2FwZU1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xBZGRy
ZXNzRXNjYXBlTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkIwRDRCRDFD
NTdGRDFFMDA3N0NFNTMgLyogUGxhdGZvcm1WaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBsYXRmb3JtVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTcwODAsNiArMTcwODMsNyBAQAogCQkJCUMyMUJGNzI2MjFDRDg5RTMwMDIyNzk3OSAvKiBXSExT
TEVudW1lcmF0aW9uTWVtYmVyLmggKi8sCiAJCQkJQzIxQkY3MDIyMUNEODlDNDAwMjI3OTc5IC8q
IFdITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmggKi8sCiAJCQkJQzIxQkY3MEMyMUNEODlD
QzAwMjI3OTc5IC8qIFdITFNMRXhwcmVzc2lvbi5oICovLAorCQkJCTUyMkQwN0EzMjJGQkFCNDMw
MEI5MDVCRSAvKiBXSExTTEV4cHJlc3Npb24uY3BwICovLAogCQkJCUMyMUJGNzAwMjFDRDg5QzIw
MDIyNzk3OSAvKiBXSExTTEZhbGx0aHJvdWdoLmggKi8sCiAJCQkJQzIxQkY3MzUyMUNEODlGMjAw
MjI3OTc5IC8qIFdITFNMRmxvYXRMaXRlcmFsLmggKi8sCiAJCQkJMUNCNjlCMzgyMURGMDNFMTAw
NkU4NDZBIC8qIFdITFNMRmxvYXRMaXRlcmFsVHlwZS5jcHAgKi8sCkBAIC0yNTUzMSw2ICsyNTUz
NSw4IEBACiAJCQkJQzI0QTU3QkIyMUZFQUZFQTAwNEM2REQxIC8qIFdITFNMUHJlcGFyZS5oICov
LAogCQkJCTUyMkUxQTE3MjI5N0Q2RDQwMEU1RDM2QSAvKiBXSExTTFByZXNlcnZlVmFyaWFibGVM
aWZldGltZXMuY3BwICovLAogCQkJCTUyMkUxQTE5MjI5N0Q2RDQwMEU1RDM2QSAvKiBXSExTTFBy
ZXNlcnZlVmFyaWFibGVMaWZldGltZXMuaCAqLywKKwkJCQk1MjZCM0YwMTIyRkI3QkREMDA3NkQz
N0QgLyogV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmNwcCAq
LywKKwkJCQk1MjZCM0YwMzIyRkI3QkRFMDA3NkQzN0QgLyogV0hMU0xQcnVuZVVucmVhY2hhYmxl
U3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmggKi8sCiAJCQkJQzIxQkY3M0EyMUNEOEQ3MDAwMjI3
OTc5IC8qIFdITFNMUHJvZ3JhbS5oICovLAogCQkJCTFDQUE4MkY2MjI0MkFFMDUwMEU4NEJCQiAv
KiBXSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwICovLAogCQkJCTFDQUE4MkY3MjI0MkFFMDUwMEU4
NEJCQiAvKiBXSExTTFByb3BlcnR5UmVzb2x2ZXIuaCAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375791</attachid>
            <date>2019-08-08 01:51:26 -0700</date>
            <delta_ts>2019-08-08 16:30:53 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>126391</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODM5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE5LTA4LTA3ICBTYWFtIEJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0gUHJ1bmUgdW5yZWFj
aGFibGUgc3RkbGliIGZ1bmN0aW9ucyBhZnRlciB0aGUgQ2hlY2tlciBydW5zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1MTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBSb2JpbiBNb3Jpc3NldC4KKworICAgICAgICBXZSBub3cgcHJ1bmUgdW5yZWFj
aGFibGUgc3RkbGliIGZ1bmN0aW9ucyBhZnRlciB0aGUgY2hlY2tlciBydW5zLiBXZSBtdXN0Cisg
ICAgICAgIGRvIHRoaXMgYWZ0ZXIgdGhlIGNoZWNrZXIgcnVucyBiZWNhdXNlIHRoYXQncyB3aGVu
IHdlIHJlc29sdmUgYWxsIHJlbWFpbmluZworICAgICAgICBmdW5jdGlvbiBjYWxscy4gV2hpbGUg
d2UgY2FuJ3QgcHJ1bmUgdW5yZWFjaGFibGUgdXNlciBjb2RlLCBiZWNhdXNlIHdlIG11c3QKKyAg
ICAgICAgc3RpbGwgcmVwb3J0IGVycm9ycyBpbiBpdCwgd2UgY2FuIHBydW5lIHVucmVhY2hhYmxl
IHN0YW5kYXJkIGxpYnJhcnkgY29kZQorICAgICAgICBiZWNhdXNlIHdlIGtub3cgYSBwcmlvcmkg
dGhhdCBpdCBoYXMgbm8gZXJyb3JzLiBUaGlzIGlzIGEgMTBtcyBlbmQtdG8tZW5kCisgICAgICAg
IHNwZWVkdXAgaW4gY29tcHV0ZV9ib2lkcy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUHJlcGFyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6cHJlcGFyZVNo
YXJlZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hh
YmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6cHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucyk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25zLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wOC0wNyAgRGV2
aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
VW5jYXVnaHQgRXhjZXB0aW9uOiBUaW1lbGluZUFnZW50IGFscmVhZHkgZW5hYmxlZApJbmRleDog
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQJKHJldmlzaW9uIDI0ODMyOSkKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNiArMzEyLDcgQEAgTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xBU1REdW1wZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEluZmVyVHlw
ZXMuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcAogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBydW5l
VW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuY3BwCiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTENoZWNrZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEdhdGhlckVudHJ5
UG9pbnRJdGVtcy5jcHAKQEAgLTM0MSw2ICszNDIsNyBAQCBNb2R1bGVzL3dlYmdwdS9XSExTTC9N
ZXRhbC9XSExTTE5hdGl2ZVR5CiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFZlcnRl
eEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMRnVu
Y3Rpb25TdGFnZUNoZWNrZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBl
QXJndW1lbnQuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmNw
cAogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmNwcAogTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHAKIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5jcHAK
QEAgLTM0OSw5ICszNTEsMTIgQEAgTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRM
aXRlcgogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNw
cAogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVsbExpdGVyYWxUeXBlLmNwcAogTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuY3Bw
CitNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnQuY3BwCitNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMVHlwZVJlZmVyZW5jZS5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVn
ZXJMaXRlcmFsLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbC5jcHAKK01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBl
LmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcAogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BV
LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVj
a2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTENoZWNrZXIuY3BwCShyZXZpc2lvbiAyNDg0MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
NCw2ICs2NCw5IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCisjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KKyNpbmNsdWRl
IDx3dGYvU2NvcGUuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgV0hMU0wg
ewpAQCAtNTY3LDYgKzU3MCw3IEBAIHN0YXRpYyBib29sIGNoZWNrT3BlcmF0b3JPdmVybG9hZChj
b25zdCAKIAogY2xhc3MgQ2hlY2tlciA6IHB1YmxpYyBWaXNpdG9yIHsKIHB1YmxpYzoKKyAgICBk
b3VibGUgdGltZSB7IDAgfTsKICAgICBDaGVja2VyKGNvbnN0IEludHJpbnNpY3MmIGludHJpbnNp
Y3MsIFByb2dyYW0mIHByb2dyYW0pCiAgICAgICAgIDogbV9pbnRyaW5zaWNzKGludHJpbnNpY3Mp
CiAgICAgICAgICwgbV9wcm9ncmFtKHByb2dyYW0pCkBAIC0xMTc4LDYgKzExODIsMTEgQEAgdm9p
ZCBDaGVja2VyOjpmaW5pc2hWaXNpdGluZyhBU1Q6OlByb3BlcgogICAgIGF1dG8gYmFzZUluZm8g
PSByZWN1cnNlQW5kR2V0SW5mbyhwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uYmFzZSgpKTsKICAg
ICBpZiAoIWJhc2VJbmZvKQogICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHN0YXJ0ID0gTW9u
b3RvbmljVGltZTo6bm93KCk7CisgICAgYXV0byBjb3VudFRpbWUgPSBtYWtlU2NvcGVFeGl0KFsm
XSB7CisgICAgICAgIHRpbWUgKz0gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnQpLm1pbGxp
c2Vjb25kcygpOworICAgIH0pOwogICAgIGF1dG8gYmFzZVVubmFtZWRUeXBlID0gY29tbWl0KGJh
c2VJbmZvLT5yZXNvbHZpbmdUeXBlKTsKICAgICBpZiAoIWJhc2VVbm5hbWVkVHlwZSkgewogICAg
ICAgICBzZXRFcnJvcihFcnJvcigiQ2Fubm90IHJlc29sdmUgdGhlIHR5cGUgb2YgdGhlIGJhc2Ug
b2YgYSBwcm9wZXJ0eSBhY2Nlc3MgZXhwcmVzc2lvbi4iLCBwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Np
b24uY29kZUxvY2F0aW9uKCkpKTsKQEAgLTE2OTcsNyArMTcwNiw5IEBAIEV4cGVjdGVkPHZvaWQs
IEVycm9yPiBjaGVjayhQcm9ncmFtJiBwcm8KICAgICBjaGVja2VyLmNoZWNrRXJyb3JBbmRWaXNp
dChwcm9ncmFtKTsKICAgICBpZiAoY2hlY2tlci5oYXNFcnJvcigpKQogICAgICAgICByZXR1cm4g
Y2hlY2tlci5yZXN1bHQoKTsKLSAgICByZXR1cm4gY2hlY2tlci5hc3NpZ25UeXBlcygpOworICAg
IGF1dG8gcmVzdWx0ID0gY2hlY2tlci5hc3NpZ25UeXBlcygpOworICAgIGRhdGFMb2dMbigicmVz
b2x2ZUZ1bmN0aW9uIHRpbWU6ICIsIGNoZWNrZXIudGltZSwgIiBtcyIpOworICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdITFNMCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHAJKHJldmlzaW9u
IDI0ODQwMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJl
cGFyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDkgKzYyLDkgQEAgbmFtZXNwYWNlIFdITFNM
IHsKIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBkdW1wQVNUQmVmb3JlRWFjaFBhc3MgPSBmYWxzZTsK
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBkdW1wQVNUQWZ0ZXJQYXJzaW5nID0gZmFsc2U7CiBzdGF0
aWMgY29uc3RleHByIGJvb2wgZHVtcEFTVEF0RW5kID0gZmFsc2U7Ci1zdGF0aWMgY29uc3RleHBy
IGJvb2wgYWx3YXlzRHVtcFBhc3NGYWlsdXJlcyA9IGZhbHNlOworc3RhdGljIGNvbnN0ZXhwciBi
b29sIGFsd2F5c0R1bXBQYXNzRmFpbHVyZXMgPSB0cnVlOwogc3RhdGljIGNvbnN0ZXhwciBib29s
IGR1bXBQYXNzRmFpbHVyZSA9IGR1bXBBU1RCZWZvcmVFYWNoUGFzcyB8fCBkdW1wQVNUQWZ0ZXJQ
YXJzaW5nIHx8IGR1bXBBU1RBdEVuZCB8fCBhbHdheXNEdW1wUGFzc0ZhaWx1cmVzOwotc3RhdGlj
IGNvbnN0ZXhwciBib29sIGR1bXBQaGFzZVRpbWVzID0gZmFsc2U7CitzdGF0aWMgY29uc3RleHBy
IGJvb2wgZHVtcFBoYXNlVGltZXMgPSB0cnVlOwogCiBzdGF0aWMgY29uc3RleHByIGJvb2wgcGFy
c2VGdWxsU3RhbmRhcmRMaWJyYXJ5ID0gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5oCShyZXZpc2lvbiAyNDg0
MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IG5hbWVzcGFjZSBXSExTTCB7CiAKLWNvbnN0ZXhwciBib29sIGR1bXBNZXRhbENvbXBpbGVUaW1l
cyA9IGZhbHNlOworY29uc3RleHByIGJvb2wgZHVtcE1ldGFsQ29tcGlsZVRpbWVzID0gdHJ1ZTsK
IAogc3RydWN0IFJlbmRlclByZXBhcmVSZXN1bHQgewogICAgIFN0cmluZ0J1aWxkZXIgbWV0YWxT
b3VyY2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZp
c2l0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMVmlzaXRvci5jcHAJKHJldmlzaW9uIDI0ODQwMykKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwMyw2ICszMDMsNyBAQCB2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6U3RhdGVtZW50TGlzdCYg
CiAKIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpTdGF0ZW1lbnQmIHN0YXRlbWVudCkKIHsKKyAg
ICAvKgogICAgIGlmIChpczxBU1Q6OkJsb2NrPihzdGF0ZW1lbnQpKQogICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpCbG9jaz4oc3RhdGVtZW50KSk7CiAgICAgZWxzZSBp
ZiAoaXM8QVNUOjpCcmVhaz4oc3RhdGVtZW50KSkKQEAgLTMzMSw2ICszMzIsNTQgQEAgdm9pZCBW
aXNpdG9yOjp2aXNpdChBU1Q6OlN0YXRlbWVudCYgc3RhdAogICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoZG93bmNhc3Q8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudD4oc3RhdGVt
ZW50KSk7CiAgICAgZWxzZQogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNU
OjpXaGlsZUxvb3A+KHN0YXRlbWVudCkpOworICAgICovCisKKyAgICBzd2l0Y2ggKHN0YXRlbWVu
dC5raW5kKCkpIHsKKyAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpCbG9jazoKKyAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6QmxvY2s+KHN0YXRlbWVudCkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpCcmVhazoKKyAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6QnJlYWs+KHN0YXRlbWVudCkp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpDb250aW51
ZToKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6Q29udGludWU+KHN0
YXRlbWVudCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5k
OjpEb1doaWxlTG9vcDoKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6
RG9XaGlsZUxvb3A+KHN0YXRlbWVudCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6
U3RhdGVtZW50OjpLaW5kOjpFZmZlY3RmdWxFeHByZXNzaW9uOgorICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50PihzdGF0
ZW1lbnQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6
RmFsbHRocm91Z2g6CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkZh
bGx0aHJvdWdoPihzdGF0ZW1lbnQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OlN0
YXRlbWVudDo6S2luZDo6Rm9yTG9vcDoKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25j
YXN0PEFTVDo6Rm9yTG9vcD4oc3RhdGVtZW50KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
QVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OklmOgorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93
bmNhc3Q8QVNUOjpJZlN0YXRlbWVudD4oc3RhdGVtZW50KSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OlJldHVybjoKKyAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGRvd25jYXN0PEFTVDo6UmV0dXJuPihzdGF0ZW1lbnQpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6U3RhdGVtZW50TGlzdDoKKyAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6U3RhdGVtZW50TGlzdD4oc3RhdGVtZW50
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OlN3aXRj
aENhc2U6CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlN3aXRjaENh
c2U+KHN0YXRlbWVudCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6U3RhdGVtZW50
OjpLaW5kOjpTd2l0Y2g6CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6
OlN3aXRjaFN0YXRlbWVudD4oc3RhdGVtZW50KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
QVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OlZhcmlhYmxlRGVjbGFyYXRpb25zOgorICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVu
dD4oc3RhdGVtZW50KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6
OktpbmQ6OldoaWxlTG9vcDoKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFT
VDo6V2hpbGVMb29wPihzdGF0ZW1lbnQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiB9CiAKIHZvaWQg
VmlzaXRvcjo6dmlzaXQoQVNUOjpCcmVhayYpCkBAIC0zNDksNiArMzk4LDcgQEAgdm9pZCBWaXNp
dG9yOjp2aXNpdChBU1Q6OkRvV2hpbGVMb29wJiBkbwogCiB2b2lkIFZpc2l0b3I6OnZpc2l0KEFT
VDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikKIHsKKyAgICAvKgogICAgIGlmIChpczxBU1Q6OkFz
c2lnbm1lbnRFeHByZXNzaW9uPihleHByZXNzaW9uKSkKICAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KGRvd25jYXN0PEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKICAg
ICBlbHNlIGlmIChpczxBU1Q6OkJvb2xlYW5MaXRlcmFsPihleHByZXNzaW9uKSkKQEAgLTM4OSw2
ICs0MzksNzMgQEAgdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkV4cHJlc3Npb24mIGV4cAogICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWw+KGV4cHJlc3Npb24pKTsKICAgICBlbHNlCiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChkb3duY2FzdDxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKSk7CisgICAgKi8K
KworCisgICAgc3dpdGNoIChleHByZXNzaW9uLmtpbmQoKSkgeworICAgIGNhc2UgQVNUOjpFeHBy
ZXNzaW9uOjpLaW5kOjpBc3NpZ25tZW50OgorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93
bmNhc3Q8QVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6Qm9vbGVhbkxpdGVyYWw6Cisg
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkJvb2xlYW5MaXRlcmFsPihl
eHByZXNzaW9uKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpL
aW5kOjpDYWxsOgorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpDYWxs
RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6
RXhwcmVzc2lvbjo6S2luZDo6Q29tbWE6CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3du
Y2FzdDxBU1Q6OkNvbW1hRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6RGVyZWZlcmVuY2U6CisgICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lvbj4oZXhw
cmVzc2lvbikpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2lu
ZDo6RmxvYXRMaXRlcmFsOgorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNU
OjpGbG9hdExpdGVyYWw+KGV4cHJlc3Npb24pKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBB
U1Q6OkV4cHJlc3Npb246OktpbmQ6OkludGVnZXJMaXRlcmFsOgorICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbikpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6TG9naWNhbDoKKyAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6TG9naWNhbEV4cHJlc3Npb24+
KGV4cHJlc3Npb24pKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246
OktpbmQ6OkxvZ2ljYWxOb3Q6CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxB
U1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uPihleHByZXNzaW9uKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpNYWtlQXJyYXlSZWZlcmVuY2U6CisgICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4
cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4
cHJlc3Npb246OktpbmQ6Ok1ha2VQb2ludGVyOgorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
ZG93bmNhc3Q8QVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6Ok51bGxMaXRlcmFsOgor
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpOdWxsTGl0ZXJhbD4oZXhw
cmVzc2lvbikpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2lu
ZDo6RG90OgorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpEb3RFeHBy
ZXNzaW9uPihleHByZXNzaW9uKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHBy
ZXNzaW9uOjpLaW5kOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZToKKyAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U+KGV4cHJlc3Np
b24pKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6Oklu
ZGV4OgorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpJbmRleEV4cHJl
c3Npb24+KGV4cHJlc3Npb24pKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJl
c3Npb246OktpbmQ6OlJlYWRNb2RpZnlXcml0ZToKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGRvd25jYXN0PEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6VGVybmFyeToK
KyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6VGVybmFyeUV4cHJlc3Np
b24+KGV4cHJlc3Npb24pKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Np
b246OktpbmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw6CisgICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChkb3duY2FzdDxBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbDoKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFT
VDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPihleHByZXNzaW9uKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpWYXJpYWJsZVJlZmVyZW5jZToKKyAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+
KGV4cHJlc3Npb24pKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiB9CiAKIHZvaWQgVmlzaXRvcjo6dmlz
aXQoQVNUOjpEb3RFeHByZXNzaW9uJiBkb3RFeHByZXNzaW9uKQpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
QXJyYXlSZWZlcmVuY2VUeXBlLmgJKHJldmlzaW9uIDI0ODQwMykKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsNyArNDcsNyBA
QCBjbGFzcyBBcnJheVJlZmVyZW5jZVR5cGUgZmluYWwgOiBwdWJsaWMgCiAgICAgdXNpbmcgQmFz
ZSA9IFJlZmVyZW5jZVR5cGU7CiAKICAgICBBcnJheVJlZmVyZW5jZVR5cGUoQ29kZUxvY2F0aW9u
IGxvY2F0aW9uLCBBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlLCBSZWY8VW5uYW1lZFR5cGU+IGVs
ZW1lbnRUeXBlKQotICAgICAgICA6IEJhc2UobG9jYXRpb24sIGFkZHJlc3NTcGFjZSwgV1RGTW92
ZShlbGVtZW50VHlwZSksIEtpbmQ6OkFycmF5UmVmZXJlbmNlVHlwZSkKKyAgICAgICAgOiBCYXNl
KGxvY2F0aW9uLCBhZGRyZXNzU3BhY2UsIFdURk1vdmUoZWxlbWVudFR5cGUpLCBLaW5kOjpBcnJh
eVJlZmVyZW5jZSkKICAgICB7CiAgICAgfQogcHVibGljOgpAQCAtNTUsNyArNTYsMTUgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcnJheVJlZmVyZW5jZVR5cGUobG9j
YXRpb24sIGFkZHJlc3NTcGFjZSwgV1RGTW92ZShlbGVtZW50VHlwZSkpKTsKICAgICB9CiAKLSAg
ICB2aXJ0dWFsIH5BcnJheVJlZmVyZW5jZVR5cGUoKSA9IGRlZmF1bHQ7CisgICAgfkFycmF5UmVm
ZXJlbmNlVHlwZSgpCisgICAgeworICAgICAgICBwcmVwYXJlRm9yQ2hpbGRDbGFzc0Rlc3RydWN0
aW9uKCk7CisgICAgfQorCisgICAgdm9pZCBkZXN0cm95KCkKKyAgICB7CisgICAgICAgIFJlZmVy
ZW5jZVR5cGU6OmRlc3Ryb3koKTsKKyAgICB9CiAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QK
ICAgICB7CkBAIC02Nyw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkZHJlc3NT
cGFjZSgpID09IG90aGVyLmFkZHJlc3NTcGFjZSgpICYmIGVsZW1lbnRUeXBlKCkgPT0gb3RoZXIu
ZWxlbWVudFR5cGUoKTsKICAgICB9CiAKLSAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCBvdmVy
cmlkZQorICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
bWFrZVN0cmluZyhlbGVtZW50VHlwZSgpLnRvU3RyaW5nKCksICJbXSIpOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEFycmF5VHlwZS5oCShyZXZpc2lvbiAyNDg0MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NDYsNyArNDYsNyBAQCBjbGFzcyBBcnJheVR5cGUgZmluYWwgOiBwdWJsaWMgVW5uYW1lZFR5CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXJy
YXlUeXBlKTsKICAgICBBcnJheVR5cGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBSZWY8VW5uYW1l
ZFR5cGU+IGVsZW1lbnRUeXBlLCB1bnNpZ25lZCBudW1FbGVtZW50cykKLSAgICAgICAgOiBVbm5h
bWVkVHlwZShsb2NhdGlvbiwgS2luZDo6QXJyYXlUeXBlKQorICAgICAgICA6IFVubmFtZWRUeXBl
KGxvY2F0aW9uLCBLaW5kOjpBcnJheSkKICAgICAgICAgLCBtX2VsZW1lbnRUeXBlKFdURk1vdmUo
ZWxlbWVudFR5cGUpKQogICAgICAgICAsIG1fbnVtRWxlbWVudHMobnVtRWxlbWVudHMpCiAgICAg
ewpAQCAtNTgsNyArNTgsMTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBBcnJheVR5cGUobG9jYXRpb24sIFdURk1vdmUoZWxlbWVudFR5cGUpLCBudW1FbGVtZW50cykp
OwogICAgIH0KIAotICAgIHZpcnR1YWwgfkFycmF5VHlwZSgpID0gZGVmYXVsdDsKKyAgICB+QXJy
YXlUeXBlKCkKKyAgICB7CisgICAgICAgIHByZXBhcmVGb3JDaGlsZENsYXNzRGVzdHJ1Y3Rpb24o
KTsKKyAgICB9CisKKyAgICB2b2lkIGRlc3Ryb3koKQorICAgIHsKKyAgICAgICAgbV9lbGVtZW50
VHlwZS5+UmVmPFVubmFtZWRUeXBlPigpOworCisgICAgICAgIFVubmFtZWRUeXBlOjpkZXN0cm95
KCk7CisgICAgfQogCiAgICAgY29uc3QgVW5uYW1lZFR5cGUmIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX2VsZW1lbnRUeXBlOyB9CiAgICAgVW5uYW1lZFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX2Vs
ZW1lbnRUeXBlOyB9CkBAIC03NCw5ICs4NCw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG51
bUVsZW1lbnRzKCkgPT0gb3RoZXIubnVtRWxlbWVudHMoKSAmJiB0eXBlKCkgPT0gb3RoZXIudHlw
ZSgpOwogICAgIH0KIAotICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IG92ZXJyaWRlCisgICAg
U3RyaW5nIHRvU3RyaW5nKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtYWtlU3RyaW5n
KHR5cGUoKS50b1N0cmluZygpLCAnWycsIG51bUVsZW1lbnRzKCksICddJyk7CisgICAgICAgIHJl
dHVybiBtYWtlU3RyaW5nKHR5cGUoKS50b1N0cmluZygpLCAnWycsIFN0cmluZzo6bnVtYmVyKG51
bUVsZW1lbnRzKCkpLCAnXScpOwogICAgIH0KIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMQXNzaWdubWVudEV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4NDAzKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXNzaWdubWVudEV4cHJlc3Npb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTEgKzM3LDExIEBAIG5hbWVzcGFjZSBXSExTTCB7CiAK
IG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBBc3NpZ25tZW50RXhwcmVzc2lvbiA6IHB1YmxpYyBF
eHByZXNzaW9uIHsKK2NsYXNzIEFzc2lnbm1lbnRFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIEV4
cHJlc3Npb24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEFz
c2lnbm1lbnRFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJl
c3Npb24+JiYgbGVmdCwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgcmlnaHQpCi0gICAgICAgIDog
RXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5k
OjpBc3NpZ25tZW50KQogICAgICAgICAsIG1fbGVmdChXVEZNb3ZlKGxlZnQpKQogICAgICAgICAs
IG1fcmlnaHQoV1RGTW92ZShyaWdodCkpCiAgICAgewpAQCAtNTAsMTMgKzUwLDE5IEBAIHB1Ymxp
YzoKICNlbmRpZgogICAgIH0KIAotICAgIHZpcnR1YWwgfkFzc2lnbm1lbnRFeHByZXNzaW9uKCkg
PSBkZWZhdWx0OworICAgIH5Bc3NpZ25tZW50RXhwcmVzc2lvbigpCisgICAgeworICAgICAgICBw
cmVwYXJlRm9yQ2hpbGRDbGFzc0Rlc3RydWN0aW9uKCk7CisgICAgfQorICAgIHZvaWQgZGVzdHJv
eSgpCisgICAgeworICAgICAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gc3dhcCA9IFdURk1vdmUo
bV9sZWZ0KTsKKyAgICAgICAgc3dhcCA9IFdURk1vdmUobV9yaWdodCk7CisgICAgfQogCiAgICAg
QXNzaWdubWVudEV4cHJlc3Npb24oY29uc3QgQXNzaWdubWVudEV4cHJlc3Npb24mKSA9IGRlbGV0
ZTsKICAgICBBc3NpZ25tZW50RXhwcmVzc2lvbihBc3NpZ25tZW50RXhwcmVzc2lvbiYmKSA9IGRl
ZmF1bHQ7CiAKLSAgICBib29sIGlzQXNzaWdubWVudEV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNzaW9uJiBsZWZ0KCkgeyByZXR1cm4gbV9s
ZWZ0OyB9CiAgICAgRXhwcmVzc2lvbiYgcmlnaHQoKSB7IHJldHVybiBtX3JpZ2h0OyB9CiAgICAg
VW5pcXVlUmVmPEV4cHJlc3Npb24+IHRha2VSaWdodCgpIHsgcmV0dXJuIFdURk1vdmUobV9yaWdo
dCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQmxvY2suaAkocmV2aXNpb24gMjQ4NDAzKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAt
MzgsMjQgKzM4LDI5IEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1j
bGFzcyBCbG9jayA6IHB1YmxpYyBTdGF0ZW1lbnQgeworY2xhc3MgQmxvY2sgZmluYWwgOiBwdWJs
aWMgU3RhdGVtZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBCbG9jayhDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0YXRlbWVudHMmJiBzdGF0ZW1lbnRzKQot
ICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRp
b24sIEtpbmQ6OkJsb2NrKQogICAgICAgICAsIG1fc3RhdGVtZW50cyhXVEZNb3ZlKHN0YXRlbWVu
dHMpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5CbG9jaygpID0gZGVmYXVsdDsKKyAg
ICB+QmxvY2soKQorICAgIHsKKyAgICAgICAgcHJlcGFyZUZvckNoaWxkQ2xhc3NEZXN0cnVjdGlv
bigpOworICAgIH0KKyAgICB2b2lkIGRlc3Ryb3koKQorICAgIHsKKyAgICAgICAgbV9zdGF0ZW1l
bnRzLn5TdGF0ZW1lbnRzKCk7CisgICAgfQogCiAgICAgQmxvY2soY29uc3QgQmxvY2smKSA9IGRl
bGV0ZTsKICAgICBCbG9jayhCbG9jayYmKSA9IGRlZmF1bHQ7CiAKICAgICBTdGF0ZW1lbnRzJiBz
dGF0ZW1lbnRzKCkgeyByZXR1cm4gbV9zdGF0ZW1lbnRzOyB9CiAKLSAgICBib29sIGlzQmxvY2so
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KIHByaXZhdGU6CiAgICAgU3RhdGVt
ZW50cyBtX3N0YXRlbWVudHM7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQm9vbGVhbkxpdGVyYWwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCb29sZWFuTGl0ZXJhbC5oCShy
ZXZpc2lvbiAyNDg0MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xCb29sZWFuTGl0ZXJhbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNiArMzYsMjMg
QEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEJvb2xlYW5M
aXRlcmFsIDogcHVibGljIEV4cHJlc3Npb24geworY2xhc3MgQm9vbGVhbkxpdGVyYWwgZmluYWwg
OiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgQm9vbGVhbkxpdGVyYWwoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBib29sIHZhbHVl
KQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihs
b2NhdGlvbiwgS2luZDo6Qm9vbGVhbkxpdGVyYWwpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkK
ICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+Qm9vbGVhbkxpdGVyYWwoKSA9IGRlZmF1bHQ7
CisgICAgfkJvb2xlYW5MaXRlcmFsKCkKKyAgICB7CisgICAgICAgIHByZXBhcmVGb3JDaGlsZENs
YXNzRGVzdHJ1Y3Rpb24oKTsKKyAgICB9CisKKyAgICB2b2lkIGRlc3Ryb3koKQorICAgIHsKKyAg
ICB9CiAKICAgICBCb29sZWFuTGl0ZXJhbChjb25zdCBCb29sZWFuTGl0ZXJhbCYpID0gZGVsZXRl
OwogICAgIEJvb2xlYW5MaXRlcmFsKEJvb2xlYW5MaXRlcmFsJiYpID0gZGVmYXVsdDsKQEAgLTU1
LDggKzYyLDYgQEAgcHVibGljOgogCiAgICAgYm9vbCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWU7IH0KIAotICAgIGJvb2wgaXNCb29sZWFuTGl0ZXJhbCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KLQogICAgIEJvb2xlYW5MaXRlcmFsIGNsb25lKCkgY29uc3QKICAgICB7
CiAgICAgICAgIEJvb2xlYW5MaXRlcmFsIHJlc3VsdChjb2RlTG9jYXRpb24oKSwgbV92YWx1ZSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCcmVh
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEJyZWFrLmgJKHJldmlzaW9uIDI0ODQwMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDIx
ICszNywyNiBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3Mg
QnJlYWsgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNzIEJyZWFrIGZpbmFsIDogcHVibGljIFN0
YXRlbWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQnJl
YWsoQ29kZUxvY2F0aW9uIGxvY2F0aW9uKQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbikK
KyAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OkJyZWFrKQogICAgIHsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIH5CcmVhaygpID0gZGVmYXVsdDsKKyAgICB+QnJlYWsoKQorICAgIHsK
KyAgICAgICAgcHJlcGFyZUZvckNoaWxkQ2xhc3NEZXN0cnVjdGlvbigpOworICAgIH0KKyAgICB2
b2lkIGRlc3Ryb3koKQorICAgIHsKKworICAgIH0KIAogICAgIEJyZWFrKGNvbnN0IEJyZWFrJikg
PSBkZWxldGU7CiAgICAgQnJlYWsoQnJlYWsmJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc0Jy
ZWFrKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiBwcml2YXRlOgogfTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ2FsbEV4
cHJlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xDYWxsRXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDg0MDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDYWxsRXhwcmVzc2lvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MCwyNyArNDAsMzMgQEAgbmFtZXNwYWNlIEFTVCB7CiAKIGNs
YXNzIE5hbWVkVHlwZTsKIAotY2xhc3MgQ2FsbEV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lv
biB7CitjbGFzcyBDYWxsRXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDYWxsRXhwcmVzc2lvbihD
b2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmluZyYmIG5hbWUsIFZlY3RvcjxVbmlxdWVSZWY8RXhw
cmVzc2lvbj4+JiYgYXJndW1lbnRzKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24pCisg
ICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6Q2FsbCkKICAgICAgICAgLCBtX25h
bWUoV1RGTW92ZShuYW1lKSkKICAgICAgICAgLCBtX2FyZ3VtZW50cyhXVEZNb3ZlKGFyZ3VtZW50
cykpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfkNhbGxFeHByZXNzaW9uKCkgPSBkZWZh
dWx0OwotCiAgICAgQ2FsbEV4cHJlc3Npb24oY29uc3QgQ2FsbEV4cHJlc3Npb24mKSA9IGRlbGV0
ZTsKICAgICBDYWxsRXhwcmVzc2lvbihDYWxsRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CiAKLSAg
ICBib29sIGlzQ2FsbEV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
Ci0KICAgICBWZWN0b3I8VW5pcXVlUmVmPEV4cHJlc3Npb24+PiYgYXJndW1lbnRzKCkgeyByZXR1
cm4gbV9hcmd1bWVudHM7IH0KIAogICAgIFN0cmluZyYgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsg
fQogCisgICAgfkNhbGxFeHByZXNzaW9uKCkKKyAgICB7CisgICAgICAgIHByZXBhcmVGb3JDaGls
ZENsYXNzRGVzdHJ1Y3Rpb24oKTsKKyAgICB9CisgICAgdm9pZCBkZXN0cm95KCkKKyAgICB7Cisg
ICAgICAgIFN0cmluZyBzd2FwID0gV1RGTW92ZShtX25hbWUpOworICAgICAgICBWZWN0b3I8VW5p
cXVlUmVmPEV4cHJlc3Npb24+PiBzd2FwMiA9IFdURk1vdmUobV9hcmd1bWVudHMpOworICAgIH0K
KwogICAgIHZvaWQgc2V0Q2FzdERhdGEoTmFtZWRUeXBlJiBuYW1lZFR5cGUpCiAgICAgewogICAg
ICAgICBtX2Nhc3RSZXR1cm5UeXBlID0gJm5hbWVkVHlwZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVzc2lvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1h
RXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDg0MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb21tYUV4cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpA
QCAtMzgsMjIgKzM4LDI3IEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1Qgewog
Ci1jbGFzcyBDb21tYUV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBDb21t
YUV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ29tbWFFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBs
b2NhdGlvbiwgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4mJiBsaXN0KQotICAgICAgICA6
IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2lu
ZDo6Q29tbWEpCiAgICAgICAgICwgbV9saXN0KFdURk1vdmUobGlzdCkpCiAgICAgewogICAgIH0K
IAotICAgIHZpcnR1YWwgfkNvbW1hRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKyAgICB+Q29tbWFF
eHByZXNzaW9uKCkKKyAgICB7CisgICAgICAgIHByZXBhcmVGb3JDaGlsZENsYXNzRGVzdHJ1Y3Rp
b24oKTsKKyAgICB9CisgICAgdm9pZCBkZXN0cm95KCkKKyAgICB7CisgICAgICAgIFZlY3RvcjxV
bmlxdWVSZWY8RXhwcmVzc2lvbj4+IHN3YXAgPSBXVEZNb3ZlKG1fbGlzdCk7CisgICAgfQogCiAg
ICAgQ29tbWFFeHByZXNzaW9uKGNvbnN0IENvbW1hRXhwcmVzc2lvbiYpID0gZGVsZXRlOwogICAg
IENvbW1hRXhwcmVzc2lvbihDb21tYUV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwogCi0gICAgYm9v
bCBpc0NvbW1hRXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQog
ICAgIFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiBsaXN0KCkgeyByZXR1cm4gbV9saXN0
OyB9CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xDb250aW51ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmgJKHJldmlzaW9uIDI0ODQwMykKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDIxICszNywyNiBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBu
YW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgQ29udGludWUgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2Ns
YXNzIENvbnRpbnVlIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ29udGludWUoQ29kZUxvY2F0aW9uIGxvY2F0aW9u
KQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnQobG9j
YXRpb24sIEtpbmQ6OkNvbnRpbnVlKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5Db250
aW51ZSgpID0gZGVmYXVsdDsKKyAgICB+Q29udGludWUoKQorICAgIHsKKyAgICAgICAgcHJlcGFy
ZUZvckNoaWxkQ2xhc3NEZXN0cnVjdGlvbigpOworICAgIH0KKworICAgIHZvaWQgZGVzdHJveSgp
CisgICAgeworICAgIH0KIAogICAgIENvbnRpbnVlKGNvbnN0IENvbnRpbnVlJikgPSBkZWxldGU7
CiAgICAgQ29udGludWUoQ29udGludWUmJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc0NvbnRp
bnVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiBwcml2YXRlOgogfTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVyZWZl
cmVuY2VFeHByZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmgJKHJldmlzaW9uIDI0
ODQwMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERl
cmVmZXJlbmNlRXhwcmVzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywyMiArMzcsMjcgQEAg
bmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIERlcmVmZXJlbmNl
RXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK2NsYXNzIERlcmVmZXJlbmNlRXhwcmVz
c2lvbiBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBEZXJlZmVyZW5jZUV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBwb2ludGVyKQotICAgICAgICA6IEV4cHJl
c3Npb24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6RGVy
ZWZlcmVuY2UpCiAgICAgICAgICwgbV9wb2ludGVyKFdURk1vdmUocG9pbnRlcikpCiAgICAgewog
ICAgIH0KIAotICAgIHZpcnR1YWwgfkRlcmVmZXJlbmNlRXhwcmVzc2lvbigpID0gZGVmYXVsdDsK
KyAgICB+RGVyZWZlcmVuY2VFeHByZXNzaW9uKCkKKyAgICB7CisgICAgICAgIHByZXBhcmVGb3JD
aGlsZENsYXNzRGVzdHJ1Y3Rpb24oKTsKKyAgICB9CisgICAgdm9pZCBkZXN0cm95KCkKKyAgICB7
CisgICAgICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPihXVEZNb3ZlKG1fcG9pbnRlcikpOworICAg
IH0KIAogICAgIERlcmVmZXJlbmNlRXhwcmVzc2lvbihjb25zdCBEZXJlZmVyZW5jZUV4cHJlc3Np
b24mKSA9IGRlbGV0ZTsKICAgICBEZXJlZmVyZW5jZUV4cHJlc3Npb24oRGVyZWZlcmVuY2VFeHBy
ZXNzaW9uJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNEZXJlZmVyZW5jZUV4cHJlc3Npb24o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNzaW9uJiBwb2lu
dGVyKCkgeyByZXR1cm4gbV9wb2ludGVyOyB9CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb1doaWxlTG9vcC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hp
bGVMb29wLmgJKHJldmlzaW9uIDI0ODQwMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29wLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDIz
ICszOCwzMCBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3Mg
RG9XaGlsZUxvb3AgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNzIERvV2hpbGVMb29wIGZpbmFs
IDogcHVibGljIFN0YXRlbWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgRG9XaGlsZUxvb3AoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8U3Rh
dGVtZW50PiYmIGJvZHksIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGNvbmRpdGlvbmFsKQotICAg
ICAgICA6IFN0YXRlbWVudChsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24s
IEtpbmQ6OkRvV2hpbGVMb29wKQogICAgICAgICAsIG1fYm9keShXVEZNb3ZlKGJvZHkpKQogICAg
ICAgICAsIG1fY29uZGl0aW9uYWwoV1RGTW92ZShjb25kaXRpb25hbCkpCiAgICAgewogICAgIH0K
IAotICAgIHZpcnR1YWwgfkRvV2hpbGVMb29wKCkgPSBkZWZhdWx0OworICAgIH5Eb1doaWxlTG9v
cCgpCisgICAgeworICAgICAgICBwcmVwYXJlRm9yQ2hpbGRDbGFzc0Rlc3RydWN0aW9uKCk7Cisg
ICAgfQorCisgICAgdm9pZCBkZXN0cm95KCkKKyAgICB7CisgICAgICAgIG1fYm9keS5+VW5pcXVl
UmVmPFN0YXRlbWVudD4oKTsKKyAgICAgICAgbV9jb25kaXRpb25hbC5+VW5pcXVlUmVmPEV4cHJl
c3Npb24+KCk7CisgICAgfQogCiAgICAgRG9XaGlsZUxvb3AoY29uc3QgRG9XaGlsZUxvb3AmKSA9
IGRlbGV0ZTsKICAgICBEb1doaWxlTG9vcChEb1doaWxlTG9vcCYmKSA9IGRlZmF1bHQ7CiAKLSAg
ICBib29sIGlzRG9XaGlsZUxvb3AoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0K
ICAgICBTdGF0ZW1lbnQmIGJvZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KICAgICBFeHByZXNzaW9u
JiBjb25kaXRpb25hbCgpIHsgcmV0dXJuIG1fY29uZGl0aW9uYWw7IH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG90RXhwcmVzc2lvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TERvdEV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4NDAzKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG90RXhwcmVzc2lvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCwzMyArMzgsNDEgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7
CiAKLWNsYXNzIERvdEV4cHJlc3Npb24gOiBwdWJsaWMgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9u
IHsKK2NsYXNzIERvdEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgUHJvcGVydHlBY2Nlc3NFeHBy
ZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICB1c2luZyBCYXNlID0g
UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uOwogcHVibGljOgogICAgIERvdEV4cHJlc3Npb24oQ29k
ZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBiYXNlLCBTdHJpbmcm
JiBmaWVsZE5hbWUpCi0gICAgICAgIDogUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGxvY2F0aW9u
LCBXVEZNb3ZlKGJhc2UpKQorICAgICAgICA6IFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihsb2Nh
dGlvbiwgS2luZDo6RG90LCBXVEZNb3ZlKGJhc2UpKQogICAgICAgICAsIG1fZmllbGROYW1lKFdU
Rk1vdmUoZmllbGROYW1lKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+RG90RXhwcmVz
c2lvbigpID0gZGVmYXVsdDsKKyAgICB+RG90RXhwcmVzc2lvbigpCisgICAgeworICAgICAgICBw
cmVwYXJlRm9yQ2hpbGRDbGFzc0Rlc3RydWN0aW9uKCk7CisgICAgfQorCisgICAgdm9pZCBkZXN0
cm95KCkKKyAgICB7CisgICAgICAgIFN0cmluZyhXVEZNb3ZlKG1fZmllbGROYW1lKSk7CisgICAg
ICAgIHRoaXMtPkJhc2U6OmRlc3Ryb3koKTsKKyAgICB9CiAKICAgICBEb3RFeHByZXNzaW9uKGNv
bnN0IERvdEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBEb3RFeHByZXNzaW9uKERvdEV4cHJl
c3Npb24mJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc0RvdEV4cHJlc3Npb24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBTdHJpbmcgZ2V0dGVyRnVuY3Rpb25OYW1l
KCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJpbmcgZ2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJvcGVyYXRvci4iLCBtX2ZpZWxkTmFt
ZSk7CiAgICAgfQogCi0gICAgU3RyaW5nIHNldHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0IG92ZXJy
aWRlCisgICAgU3RyaW5nIHNldHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gbWFrZVN0cmluZygib3BlcmF0b3IuIiwgbV9maWVsZE5hbWUsICI9Iik7CiAgICAg
fQogCi0gICAgU3RyaW5nIGFuZGVyRnVuY3Rpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBT
dHJpbmcgYW5kZXJGdW5jdGlvbk5hbWUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1h
a2VTdHJpbmcoIm9wZXJhdG9yJi4iLCBtX2ZpZWxkTmFtZSk7CiAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRWZmZWN0ZnVsRXhwcmVzc2lv
blN0YXRlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaAkocmV2aXNpb24g
MjQ4NDAzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyMiAr
MzgsMjggQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEVm
ZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNzIEVm
ZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBFZmZlY3RmdWxFeHByZXNz
aW9uU3RhdGVtZW50KFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGVmZmVjdGZ1bEV4cHJlc3Npb24p
Ci0gICAgICAgIDogU3RhdGVtZW50KGVmZmVjdGZ1bEV4cHJlc3Npb24tPmNvZGVMb2NhdGlvbigp
KQorICAgICAgICA6IFN0YXRlbWVudChlZmZlY3RmdWxFeHByZXNzaW9uLT5jb2RlTG9jYXRpb24o
KSwgS2luZDo6RWZmZWN0ZnVsRXhwcmVzc2lvbikKICAgICAgICAgLCBtX2VmZmVjdGZ1bEV4cHJl
c3Npb24oV1RGTW92ZShlZmZlY3RmdWxFeHByZXNzaW9uKSkKICAgICB7CiAgICAgfQogCi0gICAg
dmlydHVhbCB+RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpID0gZGVmYXVsdDsKKyAgICB+
RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpCisgICAgeworICAgICAgICBwcmVwYXJlRm9y
Q2hpbGRDbGFzc0Rlc3RydWN0aW9uKCk7CisgICAgfQorCisgICAgdm9pZCBkZXN0cm95KCkKKyAg
ICB7CisgICAgICAgIG1fZWZmZWN0ZnVsRXhwcmVzc2lvbi5+VW5pcXVlUmVmPEV4cHJlc3Npb24+
KCk7CisgICAgfQogCiAgICAgRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudChjb25zdCBFZmZl
Y3RmdWxFeHByZXNzaW9uU3RhdGVtZW50JikgPSBkZWxldGU7CiAgICAgRWZmZWN0ZnVsRXhwcmVz
c2lvblN0YXRlbWVudChFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50JiYpID0gZGVmYXVsdDsK
IAotICAgIGJvb2wgaXNFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgRXhwcmVzc2lvbiYgZWZmZWN0ZnVsRXhwcmVzc2lv
bigpIHsgcmV0dXJuIG1fZWZmZWN0ZnVsRXhwcmVzc2lvbjsgfQogCiBwcml2YXRlOgpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25E
ZWZpbml0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgJKHJldmlzaW9uIDI0ODQwMykK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0
aW9uRGVmaW5pdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSwxOCArNDksMjUgQEAgY2xhc3Mg
RW51bWVyYXRpb25EZWZpbml0aW9uIDogcHVibGljIE5hbQogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbihDb2RlTG9jYXRpb24g
bG9jYXRpb24sIFN0cmluZyYmIG5hbWUsIFJlZjxVbm5hbWVkVHlwZT4gdHlwZSkKLSAgICAgICAg
OiBOYW1lZFR5cGUobG9jYXRpb24sIFdURk1vdmUobmFtZSkpCisgICAgICAgIDogTmFtZWRUeXBl
KEtpbmQ6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiwgbG9jYXRpb24sIFdURk1vdmUobmFtZSkpCiAg
ICAgICAgICwgbV90eXBlKFdURk1vdmUodHlwZSkpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1
YWwgfkVudW1lcmF0aW9uRGVmaW5pdGlvbigpID0gZGVmYXVsdDsKKyAgICB+RW51bWVyYXRpb25E
ZWZpbml0aW9uKCkKKyAgICB7CisgICAgICAgIHByZXBhcmVGb3JDaGlsZENsYXNzRGVzdHJ1Y3Rp
b24oKTsKKyAgICB9CisgICAgdm9pZCBkZXN0cm95KCkKKyAgICB7CisgICAgICAgIG1fdHlwZS5+
UmVmPFVubmFtZWRUeXBlPigpOworICAgICAgICBtX21lbWJlcnMufkhhc2hNYXA8U3RyaW5nLCBz
dGQ6OnVuaXF1ZV9wdHI8RW51bWVyYXRpb25NZW1iZXI+PigpOworICAgICAgICBOYW1lZFR5cGU6
OmRlc3Ryb3koKTsKKyAgICB9CiAKICAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24oY29uc3QgRW51
bWVyYXRpb25EZWZpbml0aW9uJikgPSBkZWxldGU7CiAgICAgRW51bWVyYXRpb25EZWZpbml0aW9u
KEVudW1lcmF0aW9uRGVmaW5pdGlvbiYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzRW51bWVy
YXRpb25EZWZpbml0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAg
VW5uYW1lZFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIGJvb2wgYWRkKEVu
dW1lcmF0aW9uTWVtYmVyJiYgbWVtYmVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsLmgJKHJldmlzaW9uIDI0ODQwMykKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MCwxNyArNDAsMjUgQEAgbmFtZXNwYWNlIEFTVCB7CiBjbGFz
cyBFbnVtZXJhdGlvbkRlZmluaXRpb247CiBjbGFzcyBFbnVtZXJhdGlvbk1lbWJlcjsKIAotY2xh
c3MgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsIDogcHVibGljIEV4cHJlc3Npb24geworY2xhc3Mg
RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbChDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmluZyYmIGxlZnQsIFN0cmluZyYmIHJp
Z2h0KQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lv
bihsb2NhdGlvbiwgS2luZDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKQogICAgICAgICAsIG1f
bGVmdChXVEZNb3ZlKGxlZnQpKQogICAgICAgICAsIG1fcmlnaHQoV1RGTW92ZShyaWdodCkpCiAg
ICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCgpID0g
ZGVmYXVsdDsKKyAgICB+RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKCkKKyAgICB7CisgICAgICAg
IHByZXBhcmVGb3JDaGlsZENsYXNzRGVzdHJ1Y3Rpb24oKTsKKyAgICB9CisgICAgdm9pZCBkZXN0
cm95KCkKKyAgICB7CisgICAgICAgIG1fbGVmdC5+U3RyaW5nKCk7CisgICAgICAgIG1fcmlnaHQu
flN0cmluZygpOworICAgIH0KIAogICAgIGV4cGxpY2l0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJh
bChjb25zdCBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmKSA9IGRlbGV0ZTsKICAgICBFbnVtZXJh
dGlvbk1lbWJlckxpdGVyYWwoRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiYpID0gZGVmYXVsdDsK
QEAgLTU4LDggKzY2LDYgQEAgcHVibGljOgogICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYg
b3BlcmF0b3I9KGNvbnN0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYpID0gZGVsZXRlOwogICAg
IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgb3BlcmF0b3I9KEVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbCYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzRW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgc3RhdGljIEVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbCB3cmFwKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbGVm
dCwgU3RyaW5nJiYgcmlnaHQsIEVudW1lcmF0aW9uRGVmaW5pdGlvbiYgZW51bWVyYXRpb25EZWZp
bml0aW9uLCBFbnVtZXJhdGlvbk1lbWJlciYgZW51bWVyYXRpb25NZW1iZXIpCiAgICAgewogICAg
ICAgICBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwgcmVzdWx0KGxvY2F0aW9uLCBXVEZNb3ZlKGxl
ZnQpLCBXVEZNb3ZlKHJpZ2h0KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmNwcAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xF
eHByZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKwor
I2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEFTVC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitFeHBy
ZXNzaW9uOjp+RXhwcmVzc2lvbigpCit7CisgICAgc3dpdGNoIChraW5kKCkpIHsKKyAgICBjYXNl
IEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6QXNzaWdubWVudDoKKyAgICAgICAgZG93bmNhc3Q8QVNU
OjpBc3NpZ25tZW50RXhwcmVzc2lvbj4oKnRoaXMpLmRlc3Ryb3koKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkJvb2xlYW5MaXRlcmFsOgorICAgICAg
ICBkb3duY2FzdDxBU1Q6OkJvb2xlYW5MaXRlcmFsPigqdGhpcykuZGVzdHJveSgpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6Q2FsbDoKKyAgICAgICAg
ZG93bmNhc3Q8QVNUOjpDYWxsRXhwcmVzc2lvbj4oKnRoaXMpLmRlc3Ryb3koKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkNvbW1hOgorICAgICAgICBk
b3duY2FzdDxBU1Q6OkNvbW1hRXhwcmVzc2lvbj4oKnRoaXMpLmRlc3Ryb3koKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkRlcmVmZXJlbmNlOgorICAg
ICAgICBkb3duY2FzdDxBU1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lvbj4oKnRoaXMpLmRlc3Ryb3ko
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkZsb2F0
TGl0ZXJhbDoKKyAgICAgICAgZG93bmNhc3Q8QVNUOjpGbG9hdExpdGVyYWw+KCp0aGlzKS5kZXN0
cm95KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpJ
bnRlZ2VyTGl0ZXJhbDoKKyAgICAgICAgZG93bmNhc3Q8QVNUOjpJbnRlZ2VyTGl0ZXJhbD4oKnRo
aXMpLmRlc3Ryb3koKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246
OktpbmQ6OkxvZ2ljYWw6CisgICAgICAgIGRvd25jYXN0PEFTVDo6TG9naWNhbEV4cHJlc3Npb24+
KCp0aGlzKS5kZXN0cm95KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNz
aW9uOjpLaW5kOjpMb2dpY2FsTm90OgorICAgICAgICBkb3duY2FzdDxBU1Q6OkxvZ2ljYWxOb3RF
eHByZXNzaW9uPigqdGhpcykuZGVzdHJveSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFT
VDo6RXhwcmVzc2lvbjo6S2luZDo6TWFrZUFycmF5UmVmZXJlbmNlOgorICAgICAgICBkb3duY2Fz
dDxBU1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24+KCp0aGlzKS5kZXN0cm95KCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpNYWtlUG9pbnRl
cjoKKyAgICAgICAgZG93bmNhc3Q8QVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24+KCp0aGlzKS5k
ZXN0cm95KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5k
OjpOdWxsTGl0ZXJhbDoKKyAgICAgICAgZG93bmNhc3Q8QVNUOjpOdWxsTGl0ZXJhbD4oKnRoaXMp
LmRlc3Ryb3koKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246Oktp
bmQ6OkRvdDoKKyAgICAgICAgZG93bmNhc3Q8QVNUOjpEb3RFeHByZXNzaW9uPigqdGhpcykuZGVz
dHJveSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6
R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U6CisgICAgICAgIGRvd25jYXN0PEFTVDo6R2xvYmFsVmFy
aWFibGVSZWZlcmVuY2U+KCp0aGlzKS5kZXN0cm95KCk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpJbmRleDoKKyAgICAgICAgZG93bmNhc3Q8QVNUOjpJ
bmRleEV4cHJlc3Npb24+KCp0aGlzKS5kZXN0cm95KCk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpSZWFkTW9kaWZ5V3JpdGU6CisgICAgICAgIGRvd25j
YXN0PEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4oKnRoaXMpLmRlc3Ryb3koKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OlRlcm5hcnk6Cisg
ICAgICAgIGRvd25jYXN0PEFTVDo6VGVybmFyeUV4cHJlc3Npb24+KCp0aGlzKS5kZXN0cm95KCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpVbnNpZ25l
ZEludGVnZXJMaXRlcmFsOgorICAgICAgICBkb3duY2FzdDxBU1Q6OlVuc2lnbmVkSW50ZWdlckxp
dGVyYWw+KCp0aGlzKS5kZXN0cm95KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpF
eHByZXNzaW9uOjpLaW5kOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6CisgICAgICAgIGRvd25j
YXN0PEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPigqdGhpcykuZGVzdHJveSgpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6VmFyaWFibGVSZWZl
cmVuY2U6CisgICAgICAgIGRvd25jYXN0PEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+KCp0aGlzKS5k
ZXN0cm95KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5k
OjpOb25lOgorICAgICAgICAvLyBVc2VkIGFzIGEgbWFya2VyIHRvIG5vdCBjYWxsIGRlc3Ryb3kg
d2hlbiB3ZSBoYXZlIGNoaWxkIGRlc3RydWN0b3JzLgorICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKwor
U3RyaW5nIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbjo6Z2V0dGVyRnVuY3Rpb25OYW1lKCkgY29u
c3QKK3sKKyAgICBpZiAoaXM8RG90RXhwcmVzc2lvbj4oKnRoaXMpKQorICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8RG90RXhwcmVzc2lvbj4oKnRoaXMpLmdldHRlckZ1bmN0aW9uTmFtZSgpOworICAg
IGlmIChpczxJbmRleEV4cHJlc3Npb24+KCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0
PEluZGV4RXhwcmVzc2lvbj4oKnRoaXMpLmdldHRlckZ1bmN0aW9uTmFtZSgpOworICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK1N0cmluZyBQcm9wZXJ0eUFjY2Vzc0V4cHJl
c3Npb246OnNldHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0Cit7CisgICAgaWYgKGlzPERvdEV4cHJl
c3Npb24+KCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PERvdEV4cHJlc3Npb24+KCp0
aGlzKS5zZXR0ZXJGdW5jdGlvbk5hbWUoKTsKKyAgICBpZiAoaXM8SW5kZXhFeHByZXNzaW9uPigq
dGhpcykpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxJbmRleEV4cHJlc3Npb24+KCp0aGlzKS5z
ZXR0ZXJGdW5jdGlvbk5hbWUoKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorCitTdHJpbmcgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uOjphbmRlckZ1bmN0aW9uTmFtZSgp
IGNvbnN0Cit7CisgICAgaWYgKGlzPERvdEV4cHJlc3Npb24+KCp0aGlzKSkKKyAgICAgICAgcmV0
dXJuIGRvd25jYXN0PERvdEV4cHJlc3Npb24+KCp0aGlzKS5hbmRlckZ1bmN0aW9uTmFtZSgpOwor
ICAgIGlmIChpczxJbmRleEV4cHJlc3Npb24+KCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIGRvd25j
YXN0PEluZGV4RXhwcmVzc2lvbj4oKnRoaXMpLmFuZGVyRnVuY3Rpb25OYW1lKCk7CisgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30K
KworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEV4cHJlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmgJKHJldmlzaW9uIDI0ODQwMykK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Np
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTIgKzQzLDM4IEBAIG5hbWVzcGFjZSBBU1Qgewog
Y2xhc3MgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uKQotICAgICAgICA6IG1f
Y29kZUxvY2F0aW9uKGNvZGVMb2NhdGlvbikKKworICAgIGVudW0gY2xhc3MgS2luZCA6IHVpbnQ4
X3QgeworICAgICAgICBBc3NpZ25tZW50LAorICAgICAgICBCb29sZWFuTGl0ZXJhbCwKKyAgICAg
ICAgQ2FsbCwKKyAgICAgICAgQ29tbWEsCisgICAgICAgIERlcmVmZXJlbmNlLAorICAgICAgICBE
b3QsCisgICAgICAgIEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLAorICAgICAgICBGbG9hdExpdGVy
YWwsCisgICAgICAgIEluZGV4LAorICAgICAgICBJbnRlZ2VyTGl0ZXJhbCwKKyAgICAgICAgTG9n
aWNhbCwKKyAgICAgICAgTG9naWNhbE5vdCwKKyAgICAgICAgTWFrZUFycmF5UmVmZXJlbmNlLAor
ICAgICAgICBNYWtlUG9pbnRlciwKKyAgICAgICAgTnVsbExpdGVyYWwsCisgICAgICAgIFJlYWRN
b2RpZnlXcml0ZSwKKyAgICAgICAgVGVybmFyeSwKKyAgICAgICAgVW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbCwKKyAgICAgICAgVmFyaWFibGVSZWZlcmVuY2UsCisgICAgICAgIEVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbCwKKyAgICAgICAgTm9uZQorICAgIH07CisKKyAgICBFeHByZXNzaW9uKENvZGVM
b2NhdGlvbiBjb2RlTG9jYXRpb24sIEtpbmQga2luZCkKKyAgICAgICAgOiBtX2tpbmQoa2luZCkK
KyAgICAgICAgLCBtX2NvZGVMb2NhdGlvbihjb2RlTG9jYXRpb24uc3RhcnRPZmZzZXQoKSkKICAg
ICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKyAgICB+
RXhwcmVzc2lvbigpOwogCiAgICAgRXhwcmVzc2lvbihjb25zdCBFeHByZXNzaW9uJikgPSBkZWxl
dGU7CiAgICAgRXhwcmVzc2lvbihFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKQEAgLTkyLDMzICsx
MTgsNDEgQEAgcHVibGljOgogICAgICAgICAgICAgb3RoZXIuc2V0VHlwZUFubm90YXRpb24oVHlw
ZUFubm90YXRpb24oKnR5cGVBbm5vdGF0aW9uKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29s
IGlzQXNzaWdubWVudEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBpc0Jvb2xlYW5MaXRlcmFsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNDYWxsRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzQ29tbWFFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNEZXJlZmVyZW5jZUV4cHJlc3Npb24oKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0RvdEV4cHJlc3Npb24oKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0dsb2JhbFZhcmlhYmxlUmVm
ZXJlbmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNGbG9h
dExpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0lu
ZGV4RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29s
IGlzSW50ZWdlckxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBpc0xvZ2ljYWxFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNMb2dpY2FsTm90RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWFrZVBvaW50ZXJFeHBy
ZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNOdWxs
TGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzUHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNUZXJuYXJ5RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVmFyaWFibGVSZWZl
cmVuY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0VudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgS2luZCBr
aW5kKCkgY29uc3QgIHsgcmV0dXJuIG1fa2luZDsgfQorICAgIGJvb2wgaXNBc3NpZ25tZW50RXhw
cmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpBc3NpZ25tZW50OyB9Cisg
ICAgYm9vbCBpc0Jvb2xlYW5MaXRlcmFsKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6
OkJvb2xlYW5MaXRlcmFsOyB9CisgICAgYm9vbCBpc0NhbGxFeHByZXNzaW9uKCkgY29uc3QgeyBy
ZXR1cm4ga2luZCgpID09IEtpbmQ6OkNhbGw7IH0KKyAgICBib29sIGlzQ29tbWFFeHByZXNzaW9u
KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkNvbW1hOyB9CisgICAgYm9vbCBpc0Rl
cmVmZXJlbmNlRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpEZXJl
ZmVyZW5jZTsgfQorICAgIGJvb2wgaXNEb3RFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2lu
ZCgpID09IEtpbmQ6OkRvdDsgfQorICAgIGJvb2wgaXNHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSgp
IGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZTsg
fQorICAgIGJvb2wgaXNGbG9hdExpdGVyYWwoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2lu
ZDo6RmxvYXRMaXRlcmFsOyB9CisgICAgYm9vbCBpc0luZGV4RXhwcmVzc2lvbigpIGNvbnN0IHsg
cmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpJbmRleDsgfQorICAgIGJvb2wgaXNJbnRlZ2VyTGl0ZXJh
bCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpJbnRlZ2VyTGl0ZXJhbDsgfQorICAg
IGJvb2wgaXNMb2dpY2FsRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5k
OjpMb2dpY2FsOyB9CisgICAgYm9vbCBpc0xvZ2ljYWxOb3RFeHByZXNzaW9uKCkgY29uc3QgeyBy
ZXR1cm4ga2luZCgpID09IEtpbmQ6OkxvZ2ljYWxOb3Q7IH0KKyAgICBib29sIGlzTWFrZUFycmF5
UmVmZXJlbmNlRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpNYWtl
QXJyYXlSZWZlcmVuY2U7IH0KKyAgICBib29sIGlzTWFrZVBvaW50ZXJFeHByZXNzaW9uKCkgY29u
c3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6Ok1ha2VQb2ludGVyOyB9CisgICAgYm9vbCBpc051
bGxMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6Ok51bGxMaXRlcmFsOyB9
CisgICAgYm9vbCBpc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGlz
RG90RXhwcmVzc2lvbigpIHx8IGlzSW5kZXhFeHByZXNzaW9uKCk7IH0KKyAgICBib29sIGlzUmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpS
ZWFkTW9kaWZ5V3JpdGU7IH0KKyAgICBib29sIGlzVGVybmFyeUV4cHJlc3Npb24oKSBjb25zdCB7
IHJldHVybiBraW5kKCkgPT0gS2luZDo6VGVybmFyeTsgfQorICAgIGJvb2wgaXNVbnNpZ25lZElu
dGVnZXJMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlVuc2lnbmVkSW50
ZWdlckxpdGVyYWw7IH0KKyAgICBib29sIGlzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdCB7IHJl
dHVybiBraW5kKCkgPT0gS2luZDo6VmFyaWFibGVSZWZlcmVuY2U7IH0KKyAgICBib29sIGlzRW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkVu
dW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDsgfQorCisgICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIENvZGVMb2NhdGlvbihtX2NvZGVMb2NhdGlvbiwgbV9jb2RlTG9j
YXRpb24pOyB9CisgICAgdm9pZCB1cGRhdGVDb2RlTG9jYXRpb24oQ29kZUxvY2F0aW9uIGxvY2F0
aW9uKSB7IG1fY29kZUxvY2F0aW9uID0gbG9jYXRpb24uc3RhcnRPZmZzZXQoKTsgfQogCi0gICAg
Q29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUxvY2F0aW9u
OyB9Ci0gICAgdm9pZCB1cGRhdGVDb2RlTG9jYXRpb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uKSB7
IG1fY29kZUxvY2F0aW9uID0gbG9jYXRpb247IH0KK3Byb3RlY3RlZDoKKyAgICB2b2lkIHByZXBh
cmVGb3JDaGlsZENsYXNzRGVzdHJ1Y3Rpb24oKQorICAgIHsKKyAgICAgICAgbV9raW5kID0gS2lu
ZDo6Tm9uZTsKKyAgICB9CiAKIHByaXZhdGU6Ci0gICAgQ29kZUxvY2F0aW9uIG1fY29kZUxvY2F0
aW9uOworICAgIEtpbmQgbV9raW5kOworICAgIHVuc2lnbmVkIG1fY29kZUxvY2F0aW9uOwogICAg
IFJlZlB0cjxVbm5hbWVkVHlwZT4gbV90eXBlOwogICAgIE9wdGlvbmFsPFR5cGVBbm5vdGF0aW9u
PiBtX3R5cGVBbm5vdGF0aW9uOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEZhbGx0aHJvdWdoLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmFsbHRocm91Z2guaAkocmV2aXNp
b24gMjQ4NDAzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMRmFsbHRocm91Z2guaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMjEgKzM3LDI2IEBAIG5hbWVz
cGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBGYWxsdGhyb3VnaCA6IHB1
YmxpYyBTdGF0ZW1lbnQgeworY2xhc3MgRmFsbHRocm91Z2ggZmluYWwgOiBwdWJsaWMgU3RhdGVt
ZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBGYWxsdGhy
b3VnaChDb2RlTG9jYXRpb24gbG9jYXRpb24pCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9u
KQorICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6RmFsbHRocm91Z2gpCiAgICAg
ewogICAgIH0KIAotICAgIHZpcnR1YWwgfkZhbGx0aHJvdWdoKCkgPSBkZWZhdWx0OworICAgIH5G
YWxsdGhyb3VnaCgpCisgICAgeworICAgICAgICBwcmVwYXJlRm9yQ2hpbGRDbGFzc0Rlc3RydWN0
aW9uKCk7CisgICAgfQorCisgICAgdm9pZCBkZXN0cm95KCkKKyAgICB7CisgICAgfQogCiAgICAg
RmFsbHRocm91Z2goY29uc3QgRmFsbHRocm91Z2gmKSA9IGRlbGV0ZTsKICAgICBGYWxsdGhyb3Vn
aChGYWxsdGhyb3VnaCYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzRmFsbHRocm91Z2goKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KIHByaXZhdGU6CiB9OwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xGbG9hdExpdGVyYWwuaAkocmV2aXNpb24gMjQ4NDAzKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDE3ICszNywyNCBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNU
IHsKIAotY2xhc3MgRmxvYXRMaXRlcmFsIDogcHVibGljIEV4cHJlc3Npb24geworY2xhc3MgRmxv
YXRMaXRlcmFsIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIEZsb2F0TGl0ZXJhbChDb2RlTG9jYXRpb24gbG9jYXRp
b24sIGZsb2F0IHZhbHVlKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgICAg
IDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6RmxvYXRMaXRlcmFsKQogICAgICAgICAsIG1f
dHlwZShsb2NhdGlvbiwgdmFsdWUpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAg
ICAgfQogCi0gICAgdmlydHVhbCB+RmxvYXRMaXRlcmFsKCkgPSBkZWZhdWx0OworICAgIH5GbG9h
dExpdGVyYWwoKQorICAgIHsKKyAgICAgICAgcHJlcGFyZUZvckNoaWxkQ2xhc3NEZXN0cnVjdGlv
bigpOworICAgIH0KKyAgICB2b2lkIGRlc3Ryb3koKQorICAgIHsKKyAgICAgICAgbV90eXBlLn5G
bG9hdExpdGVyYWxUeXBlKCk7CisgICAgfQogCiAgICAgRmxvYXRMaXRlcmFsKGNvbnN0IEZsb2F0
TGl0ZXJhbCYpID0gZGVsZXRlOwogICAgIEZsb2F0TGl0ZXJhbChGbG9hdExpdGVyYWwmJikgPSBk
ZWZhdWx0OwpAQCAtNTgsOCArNjUsNiBAQCBwdWJsaWM6CiAgICAgRmxvYXRMaXRlcmFsVHlwZSYg
dHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIGZsb2F0IHZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV92YWx1ZTsgfQogCi0gICAgYm9vbCBpc0Zsb2F0TGl0ZXJhbCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLQogICAgIEZsb2F0TGl0ZXJhbCBjbG9uZSgpIGNvbnN0CiAgICAg
ewogICAgICAgICBGbG9hdExpdGVyYWwgcmVzdWx0KGNvZGVMb2NhdGlvbigpLCBtX3ZhbHVlKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0
TGl0ZXJhbFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuY3BwCShyZXZpc2lvbiAyNDg0MDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExp
dGVyYWxUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTcgKzM5LDEyIEBAIG5hbWVzcGFj
ZSBXSExTTCB7CiBuYW1lc3BhY2UgQVNUIHsKIAogRmxvYXRMaXRlcmFsVHlwZTo6RmxvYXRMaXRl
cmFsVHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIGZsb2F0IHZhbHVlKQotICAgIDogbV92YWx1
ZSh2YWx1ZSkKKyAgICA6IFJlc29sdmFibGVUeXBlKEtpbmQ6OkZsb2F0TGl0ZXJhbCkKKyAgICAs
IG1fdmFsdWUodmFsdWUpCiAgICAgLCBtX3ByZWZlcnJlZFR5cGUoVHlwZVJlZmVyZW5jZTo6Y3Jl
YXRlKGxvY2F0aW9uLCAiZmxvYXQiX3N0ciwgVHlwZUFyZ3VtZW50cygpKSkKIHsKIH0KIAotRmxv
YXRMaXRlcmFsVHlwZTo6fkZsb2F0TGl0ZXJhbFR5cGUoKSA9IGRlZmF1bHQ7Ci0KLUZsb2F0TGl0
ZXJhbFR5cGU6OkZsb2F0TGl0ZXJhbFR5cGUoRmxvYXRMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7
Ci0KLUZsb2F0TGl0ZXJhbFR5cGUmIEZsb2F0TGl0ZXJhbFR5cGU6Om9wZXJhdG9yPShGbG9hdExp
dGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKLQogYm9vbCBGbG9hdExpdGVyYWxUeXBlOjpjYW5SZXNv
bHZlKGNvbnN0IFR5cGUmIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFpczxOYW1lZFR5cGU+KHR5
cGUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
RmxvYXRMaXRlcmFsVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuaAkocmV2aXNpb24gMjQ4NDAz
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRM
aXRlcmFsVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwyMiArNDUsMzAgQEAgY2xhc3MgRmxv
YXRMaXRlcmFsVHlwZSA6IHB1YmxpYyBSZXNvbHZhYgogcHVibGljOgogICAgIEZsb2F0TGl0ZXJh
bFR5cGUoQ29kZUxvY2F0aW9uLCBmbG9hdCB2YWx1ZSk7CiAKLSAgICB2aXJ0dWFsIH5GbG9hdExp
dGVyYWxUeXBlKCk7CisgICAgfkZsb2F0TGl0ZXJhbFR5cGUoKQorICAgIHsKKyAgICAgICAgcHJl
cGFyZUZvckNoaWxkQ2xhc3NEZXN0cnVjdGlvbigpOworICAgIH0KKworICAgIHZvaWQgZGVzdHJv
eSgpCisgICAgeworICAgICAgICBtX3ByZWZlcnJlZFR5cGUuflJlZjxUeXBlUmVmZXJlbmNlPigp
OworCisgICAgICAgIFJlc29sdmFibGVUeXBlOjpkZXN0cm95KCk7CisgICAgfQogCiAgICAgRmxv
YXRMaXRlcmFsVHlwZShjb25zdCBGbG9hdExpdGVyYWxUeXBlJikgPSBkZWxldGU7Ci0gICAgRmxv
YXRMaXRlcmFsVHlwZShGbG9hdExpdGVyYWxUeXBlJiYpOworICAgIEZsb2F0TGl0ZXJhbFR5cGUo
RmxvYXRMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7CiAKICAgICBGbG9hdExpdGVyYWxUeXBlJiBv
cGVyYXRvcj0oY29uc3QgRmxvYXRMaXRlcmFsVHlwZSYpID0gZGVsZXRlOwotICAgIEZsb2F0TGl0
ZXJhbFR5cGUmIG9wZXJhdG9yPShGbG9hdExpdGVyYWxUeXBlJiYpOwotCi0gICAgYm9vbCBpc0Zs
b2F0TGl0ZXJhbFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgRmxv
YXRMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KEZsb2F0TGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0Owog
CiAgICAgZmxvYXQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKICAgICBUeXBl
UmVmZXJlbmNlJiBwcmVmZXJyZWRUeXBlKCkgeyByZXR1cm4gbV9wcmVmZXJyZWRUeXBlOyB9CiAK
LSAgICBib29sIGNhblJlc29sdmUoY29uc3QgVHlwZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHVu
c2lnbmVkIGNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFtZWRUeXBlJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgYm9vbCBjYW5SZXNvbHZlKGNvbnN0IFR5cGUmKSBjb25zdDsKKyAgICB1bnNpZ25lZCBj
b252ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0OwogCiAgICAgRmxvYXRMaXRl
cmFsVHlwZSBjbG9uZSgpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xGb3JMb29wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRm9yTG9vcC5oCShyZXZpc2lvbiAyNDg0
MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JM
b29wLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDExICs0MiwxMSBAQCBuYW1lc3BhY2UgV0hMU0wg
ewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgRm9yTG9vcCA6IHB1YmxpYyBTdGF0ZW1lbnQg
eworY2xhc3MgRm9yTG9vcCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEZvckxvb3AoQ29kZUxvY2F0aW9uIGxvY2F0
aW9uLCBWYXJpYW50PFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+LCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4+
JiYgaW5pdGlhbGl6YXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIGNvbmRpdGlv
biwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+JiYgaW5jcmVtZW50LCBVbmlxdWVSZWY8U3Rh
dGVtZW50PiYmIGJvZHkpCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uKQorICAgICAgICA6
IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6Rm9yTG9vcCkKICAgICAgICAgLCBtX2luaXRpYWxp
emF0aW9uKFdURk1vdmUoaW5pdGlhbGl6YXRpb24pKQogICAgICAgICAsIG1fY29uZGl0aW9uKFdU
Rk1vdmUoY29uZGl0aW9uKSkKICAgICAgICAgLCBtX2luY3JlbWVudChXVEZNb3ZlKGluY3JlbWVu
dCkpCkBAIC01NCwxNSArNTQsMjIgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIH5Gb3JMb29wKCkKKyAgICB+Rm9yTG9vcCgpCiAgICAgeworICAgICAgICBwcmVwYXJlRm9y
Q2hpbGRDbGFzc0Rlc3RydWN0aW9uKCk7CisgICAgfQorCisgICAgdm9pZCBkZXN0cm95KCkKKyAg
ICB7CisgICAgICAgIG1faW5pdGlhbGl6YXRpb24uflZhcmlhbnQ8VW5pcXVlUmVmPFN0YXRlbWVu
dD4sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4oKTsKKyAgICAgICAgbV9jb25kaXRpb24ufnVuaXF1
ZV9wdHI8RXhwcmVzc2lvbj4oKTsKKyAgICAgICAgbV9pbmNyZW1lbnQufnVuaXF1ZV9wdHI8RXhw
cmVzc2lvbj4oKTsKKyAgICAgICAgbV9ib2R5Ln5VbmlxdWVSZWY8U3RhdGVtZW50PigpOwogICAg
IH0KIAogICAgIEZvckxvb3AoY29uc3QgRm9yTG9vcCYpID0gZGVsZXRlOwogICAgIEZvckxvb3Ao
Rm9yTG9vcCYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzRm9yTG9vcCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIFZhcmlhbnQ8VW5pcXVlUmVmPFN0YXRlbWVudD4s
IFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4mIGluaXRpYWxpemF0aW9uKCkgeyByZXR1cm4gbV9pbml0
aWFsaXphdGlvbjsgfQogICAgIEV4cHJlc3Npb24qIGNvbmRpdGlvbigpIHsgcmV0dXJuIG1fY29u
ZGl0aW9uLmdldCgpOyB9CiAgICAgRXhwcmVzc2lvbiogaW5jcmVtZW50KCkgeyByZXR1cm4gbV9p
bmNyZW1lbnQuZ2V0KCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMR2xvYmFsVmFyaWFibGVS
ZWZlcmVuY2UuaAkocmV2aXNpb24gMjQ4NDAzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMzcsMTkgKzM3LDI2IEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBB
U1QgewogCi1jbGFzcyBHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSA6IHB1YmxpYyBFeHByZXNzaW9u
IHsKK2NsYXNzIEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlIGZpbmFsIDogcHVibGljIEV4cHJlc3Np
b24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdsb2JhbFZh
cmlhYmxlUmVmZXJlbmNlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Np
b24+JiYgYmFzZSwgU3RydWN0dXJlRWxlbWVudCogc3RydWN0RmllbGQpCi0gICAgICAgIDogRXhw
cmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpH
bG9iYWxWYXJpYWJsZVJlZmVyZW5jZSkKICAgICAgICAgLCBtX2Jhc2UoV1RGTW92ZShiYXNlKSkK
ICAgICAgICAgLCBtX3N0cnVjdEZpZWxkKCpzdHJ1Y3RGaWVsZCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChzdHJ1Y3RGaWVsZCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+R2xvYmFsVmFyaWFibGVS
ZWZlcmVuY2UoKSA9IGRlZmF1bHQ7Ci0gICAgYm9vbCBpc0dsb2JhbFZhcmlhYmxlUmVmZXJlbmNl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIH5HbG9iYWxWYXJpYWJsZVJl
ZmVyZW5jZSgpCisgICAgeworICAgICAgICBwcmVwYXJlRm9yQ2hpbGRDbGFzc0Rlc3RydWN0aW9u
KCk7CisgICAgfQorICAgIHZvaWQgZGVzdHJveSgpCisgICAgeworICAgICAgICBVbmlxdWVSZWY8
RXhwcmVzc2lvbj4oV1RGTW92ZShtX2Jhc2UpKTsKKyAgICB9CisKICAgICBTdHJ1Y3R1cmVFbGVt
ZW50JiBzdHJ1Y3RGaWVsZCgpIHsgcmV0dXJuIG1fc3RydWN0RmllbGQ7IH0KIAogICAgIEV4cHJl
c3Npb24mIGJhc2UoKSB7IHJldHVybiBtX2Jhc2UuZ2V0KCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTElmU3RhdGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSWZTdGF0
ZW1lbnQuaAkocmV2aXNpb24gMjQ4NDAzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMSWZTdGF0ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMjQg
KzM5LDMyIEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBJ
ZlN0YXRlbWVudCA6IHB1YmxpYyBTdGF0ZW1lbnQgeworY2xhc3MgSWZTdGF0ZW1lbnQgZmluYWwg
OiBwdWJsaWMgU3RhdGVtZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBJZlN0YXRlbWVudChDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHBy
ZXNzaW9uPiYmIGNvbmRpdGlvbmFsLCBVbmlxdWVSZWY8U3RhdGVtZW50PiYmIGJvZHksIHN0ZDo6
dW5pcXVlX3B0cjxTdGF0ZW1lbnQ+JiYgZWxzZUJvZHkpCi0gICAgICAgIDogU3RhdGVtZW50KGxv
Y2F0aW9uKQorICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6SWYpCiAgICAgICAg
ICwgbV9jb25kaXRpb25hbChXVEZNb3ZlKGNvbmRpdGlvbmFsKSkKICAgICAgICAgLCBtX2JvZHko
V1RGTW92ZShib2R5KSkKICAgICAgICAgLCBtX2Vsc2VCb2R5KFdURk1vdmUoZWxzZUJvZHkpKQog
ICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5JZlN0YXRlbWVudCgpID0gZGVmYXVsdDsKKyAg
ICB+SWZTdGF0ZW1lbnQoKQorICAgIHsKKyAgICAgICAgcHJlcGFyZUZvckNoaWxkQ2xhc3NEZXN0
cnVjdGlvbigpOworICAgIH0KKworICAgIHZvaWQgZGVzdHJveSgpCisgICAgeworICAgICAgICBt
X2NvbmRpdGlvbmFsLn5VbmlxdWVSZWY8RXhwcmVzc2lvbj4oKTsKKyAgICAgICAgbV9ib2R5Ln5V
bmlxdWVSZWY8U3RhdGVtZW50PigpOworICAgICAgICBtX2Vsc2VCb2R5Ln51bmlxdWVfcHRyPFN0
YXRlbWVudD4oKTsKKyAgICB9CiAKICAgICBJZlN0YXRlbWVudChjb25zdCBJZlN0YXRlbWVudCYp
ID0gZGVsZXRlOwogICAgIElmU3RhdGVtZW50KElmU3RhdGVtZW50JiYpID0gZGVmYXVsdDsKIAot
ICAgIGJvb2wgaXNJZlN0YXRlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
LQogICAgIEV4cHJlc3Npb24mIGNvbmRpdGlvbmFsKCkgeyByZXR1cm4gbV9jb25kaXRpb25hbDsg
fQogICAgIFN0YXRlbWVudCYgYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQogICAgIFN0YXRlbWVu
dCogZWxzZUJvZHkoKSB7IHJldHVybiBtX2Vsc2VCb2R5LmdldCgpOyB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbmRleEV4cHJlc3Npb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xJbmRleEV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4NDAzKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW5kZXhFeHByZXNzaW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDMzICszOCw0MCBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2Ug
QVNUIHsKIAotY2xhc3MgSW5kZXhFeHByZXNzaW9uIDogcHVibGljIFByb3BlcnR5QWNjZXNzRXhw
cmVzc2lvbiB7CitjbGFzcyBJbmRleEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgUHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uIHsKKyAgICB1c2luZyBCYXNlID0gUHJvcGVydHlBY2Nlc3NFeHByZXNz
aW9uOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEluZGV4RXhw
cmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGJh
c2UsIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGluZGV4KQotICAgICAgICA6IFByb3BlcnR5QWNj
ZXNzRXhwcmVzc2lvbihsb2NhdGlvbiwgV1RGTW92ZShiYXNlKSkKKyAgICAgICAgOiBQcm9wZXJ0
eUFjY2Vzc0V4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkluZGV4LCBXVEZNb3ZlKGJhc2UpKQog
ICAgICAgICAsIG1faW5kZXgoV1RGTW92ZShpbmRleCkpCiAgICAgewogICAgIH0KIAotICAgIHZp
cnR1YWwgfkluZGV4RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKyAgICB+SW5kZXhFeHByZXNzaW9u
KCkKKyAgICB7CisgICAgICAgIHByZXBhcmVGb3JDaGlsZENsYXNzRGVzdHJ1Y3Rpb24oKTsKKyAg
ICB9CisgICAgdm9pZCBkZXN0cm95KCkKKyAgICB7CisgICAgICAgIFVuaXF1ZVJlZjxFeHByZXNz
aW9uPihXVEZNb3ZlKG1faW5kZXgpKTsKKyAgICAgICAgdGhpcy0+QmFzZTo6ZGVzdHJveSgpOwor
ICAgIH0KIAogICAgIEluZGV4RXhwcmVzc2lvbihjb25zdCBJbmRleEV4cHJlc3Npb24mKSA9IGRl
bGV0ZTsKICAgICBJbmRleEV4cHJlc3Npb24oSW5kZXhFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsK
IAotICAgIGJvb2wgaXNJbmRleEV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9Ci0KLSAgICBTdHJpbmcgZ2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGUK
KyAgICBTdHJpbmcgZ2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiAib3BlcmF0b3JbXSJfc3RyOwogICAgIH0KIAotICAgIFN0cmluZyBzZXR0ZXJGdW5jdGlv
bk5hbWUoKSBjb25zdCBvdmVycmlkZQorICAgIFN0cmluZyBzZXR0ZXJGdW5jdGlvbk5hbWUoKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICJvcGVyYXRvcltdPSJfc3RyOwogICAgIH0KIAot
ICAgIFN0cmluZyBhbmRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgU3RyaW5n
IGFuZGVyRnVuY3Rpb25OYW1lKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAib3BlcmF0
b3ImW10iX3N0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmgJKHJldmlz
aW9uIDI0ODQwMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEludGVnZXJMaXRlcmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDE3ICszNywyNSBAQCBu
YW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgSW50ZWdlckxpdGVy
YWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBJbnRlZ2VyTGl0ZXJhbCBmaW5hbCA6IHB1
YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBJbnRlZ2VyTGl0ZXJhbChDb2RlTG9jYXRpb24gbG9jYXRpb24sIGludCB2YWx1ZSkKLSAg
ICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRp
b24sIEtpbmQ6OkludGVnZXJMaXRlcmFsKQogICAgICAgICAsIG1fdHlwZShsb2NhdGlvbiwgdmFs
dWUpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVh
bCB+SW50ZWdlckxpdGVyYWwoKSA9IGRlZmF1bHQ7CisgICAgfkludGVnZXJMaXRlcmFsKCkKKyAg
ICB7CisgICAgICAgIHByZXBhcmVGb3JDaGlsZENsYXNzRGVzdHJ1Y3Rpb24oKTsKKyAgICB9CisK
KyAgICB2b2lkIGRlc3Ryb3koKQorICAgIHsKKyAgICAgICAgbV90eXBlLn5JbnRlZ2VyTGl0ZXJh
bFR5cGUoKTsKKyAgICB9CiAKICAgICBJbnRlZ2VyTGl0ZXJhbChjb25zdCBJbnRlZ2VyTGl0ZXJh
bCYpID0gZGVsZXRlOwogICAgIEludGVnZXJMaXRlcmFsKEludGVnZXJMaXRlcmFsJiYpID0gZGVm
YXVsdDsKQEAgLTU4LDggKzY2LDYgQEAgcHVibGljOgogICAgIEludGVnZXJMaXRlcmFsVHlwZSYg
dHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdmFsdWU7IH0KIAotICAgIGJvb2wgaXNJbnRlZ2VyTGl0ZXJhbCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLQogICAgIEludGVnZXJMaXRlcmFsIGNsb25lKCkgY29uc3QKICAg
ICB7CiAgICAgICAgIEludGVnZXJMaXRlcmFsIHJlc3VsdChjb2RlTG9jYXRpb24oKSwgbV92YWx1
ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJ
bnRlZ2VyTGl0ZXJhbFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5jcHAJKHJldmlzaW9u
IDI0ODQwMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEludGVnZXJMaXRlcmFsVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDE3ICs0MCwxMiBA
QCBuYW1lc3BhY2UgV0hMU0wgewogbmFtZXNwYWNlIEFTVCB7CiAKIEludGVnZXJMaXRlcmFsVHlw
ZTo6SW50ZWdlckxpdGVyYWxUeXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgaW50IHZhbHVlKQot
ICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICA6IFJlc29sdmFibGVUeXBlKEtpbmQ6OkludGVnZXJM
aXRlcmFsKQorICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICAsIG1fcHJlZmVycmVkVHlwZShUeXBl
UmVmZXJlbmNlOjpjcmVhdGUobG9jYXRpb24sICJpbnQiX3N0ciwgVHlwZUFyZ3VtZW50cygpKSkK
IHsKIH0KIAotSW50ZWdlckxpdGVyYWxUeXBlOjp+SW50ZWdlckxpdGVyYWxUeXBlKCkgPSBkZWZh
dWx0OwotCi1JbnRlZ2VyTGl0ZXJhbFR5cGU6OkludGVnZXJMaXRlcmFsVHlwZShJbnRlZ2VyTGl0
ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwotCi1JbnRlZ2VyTGl0ZXJhbFR5cGUmIEludGVnZXJMaXRl
cmFsVHlwZTo6b3BlcmF0b3I9KEludGVnZXJMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7Ci0KIGJv
b2wgSW50ZWdlckxpdGVyYWxUeXBlOjpjYW5SZXNvbHZlKGNvbnN0IFR5cGUmIHR5cGUpIGNvbnN0
CiB7CiAgICAgaWYgKCFpczxOYW1lZFR5cGU+KHR5cGUpKQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50
ZWdlckxpdGVyYWxUeXBlLmgJKHJldmlzaW9uIDI0ODQwMykKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NSwyMiArNDUsMzAgQEAgY2xhc3MgSW50ZWdlckxpdGVyYWxUeXBlIDogcHVi
bGljIFJlc29sdgogcHVibGljOgogICAgIEludGVnZXJMaXRlcmFsVHlwZShDb2RlTG9jYXRpb24s
IGludCB2YWx1ZSk7CiAKLSAgICB2aXJ0dWFsIH5JbnRlZ2VyTGl0ZXJhbFR5cGUoKTsKKyAgICB+
SW50ZWdlckxpdGVyYWxUeXBlKCkKKyAgICB7CisgICAgICAgIHByZXBhcmVGb3JDaGlsZENsYXNz
RGVzdHJ1Y3Rpb24oKTsKKyAgICB9CisKKyAgICB2b2lkIGRlc3Ryb3koKQorICAgIHsKKyAgICAg
ICAgbV9wcmVmZXJyZWRUeXBlLn5SZWY8VHlwZVJlZmVyZW5jZT4oKTsKKworICAgICAgICBSZXNv
bHZhYmxlVHlwZTo6ZGVzdHJveSgpOworICAgIH0KIAogICAgIEludGVnZXJMaXRlcmFsVHlwZShj
b25zdCBJbnRlZ2VyTGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBJbnRlZ2VyTGl0ZXJhbFR5
cGUoSW50ZWdlckxpdGVyYWxUeXBlJiYpOworICAgIEludGVnZXJMaXRlcmFsVHlwZShJbnRlZ2Vy
TGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwogCiAgICAgSW50ZWdlckxpdGVyYWxUeXBlJiBvcGVy
YXRvcj0oY29uc3QgSW50ZWdlckxpdGVyYWxUeXBlJikgPSBkZWxldGU7Ci0gICAgSW50ZWdlckxp
dGVyYWxUeXBlJiBvcGVyYXRvcj0oSW50ZWdlckxpdGVyYWxUeXBlJiYpOwotCi0gICAgYm9vbCBp
c0ludGVnZXJMaXRlcmFsVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICBJbnRlZ2VyTGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShJbnRlZ2VyTGl0ZXJhbFR5cGUmJikgPSBk
ZWZhdWx0OwogCiAgICAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCiAg
ICAgVHlwZVJlZmVyZW5jZSYgcHJlZmVycmVkVHlwZSgpIHsgcmV0dXJuIG1fcHJlZmVycmVkVHlw
ZTsgfQogCi0gICAgYm9vbCBjYW5SZXNvbHZlKGNvbnN0IFR5cGUmKSBjb25zdCBvdmVycmlkZTsK
LSAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBUeXBlJikgY29uc3Q7CisgICAgdW5z
aWduZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBjb25zdDsKIAogICAgIElu
dGVnZXJMaXRlcmFsVHlwZSBjbG9uZSgpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2lj
YWxFeHByZXNzaW9uLmgJKHJldmlzaW9uIDI0ODQwMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxFeHByZXNzaW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7
CiAKLWNsYXNzIExvZ2ljYWxFeHByZXNzaW9uIDogcHVibGljIEV4cHJlc3Npb24geworY2xhc3Mg
TG9naWNhbEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhf
dCB7CkBAIC00NiwyMiArNDYsMzAgQEAgcHVibGljOgogICAgIH07CiAKICAgICBMb2dpY2FsRXhw
cmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFR5cGUgdHlwZSwgVW5pcXVlUmVmPEV4cHJl
c3Npb24+JiYgbGVmdCwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgcmlnaHQpCi0gICAgICAgIDog
RXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5k
OjpMb2dpY2FsKQogICAgICAgICAsIG1fdHlwZSh0eXBlKQogICAgICAgICAsIG1fbGVmdChXVEZN
b3ZlKGxlZnQpKQogICAgICAgICAsIG1fcmlnaHQoV1RGTW92ZShyaWdodCkpCiAgICAgewogICAg
IH0KIAotICAgIHZpcnR1YWwgfkxvZ2ljYWxFeHByZXNzaW9uKCkgPSBkZWZhdWx0OworICAgIH5M
b2dpY2FsRXhwcmVzc2lvbigpCisgICAgeworICAgICAgICBwcmVwYXJlRm9yQ2hpbGRDbGFzc0Rl
c3RydWN0aW9uKCk7CisgICAgfQorICAgICAgICAKKyAgICB2b2lkIGRlc3Ryb3koKQorICAgIHsK
KyAgICAgICAgbV90eXBlLn5UeXBlKCk7CisgICAgICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPihX
VEZNb3ZlKG1fbGVmdCkpOworICAgICAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4oV1RGTW92ZSht
X3JpZ2h0KSk7CisgICAgfQogCiAgICAgTG9naWNhbEV4cHJlc3Npb24oY29uc3QgTG9naWNhbEV4
cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBMb2dpY2FsRXhwcmVzc2lvbihMb2dpY2FsRXhwcmVz
c2lvbiYmKSA9IGRlZmF1bHQ7CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGU7IH0KIAotICAgIGJvb2wgaXNMb2dpY2FsRXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KLQogICAgIEV4cHJlc3Npb24mIGxlZnQoKSB7IHJldHVybiBtX2xlZnQ7
IH0KICAgICBFeHByZXNzaW9uJiByaWdodCgpIHsgcmV0dXJuIG1fcmlnaHQ7IH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5vdEV4
cHJlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDg0MDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsTm90
RXhwcmVzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywyMiArMzcsMjggQEAgbmFtZXNwYWNl
IFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIExvZ2ljYWxOb3RFeHByZXNzaW9u
IDogcHVibGljIEV4cHJlc3Npb24geworY2xhc3MgTG9naWNhbE5vdEV4cHJlc3Npb24gZmluYWwg
OiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgTG9naWNhbE5vdEV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlx
dWVSZWY8RXhwcmVzc2lvbj4mJiBvcGVyYW5kKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRp
b24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6TG9naWNhbE5vdCkKICAg
ICAgICAgLCBtX29wZXJhbmQoV1RGTW92ZShvcGVyYW5kKSkKICAgICB7CiAgICAgfQogCi0gICAg
dmlydHVhbCB+TG9naWNhbE5vdEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfkxvZ2ljYWxO
b3RFeHByZXNzaW9uKCkKKyAgICB7CisgICAgICAgIHByZXBhcmVGb3JDaGlsZENsYXNzRGVzdHJ1
Y3Rpb24oKTsKKyAgICB9CisKKyAgICB2b2lkIGRlc3Ryb3koKQorICAgIHsKKyAgICAgICAgVW5p
cXVlUmVmPEV4cHJlc3Npb24+KFdURk1vdmUobV9vcGVyYW5kKSk7CisgICAgfQogCiAgICAgTG9n
aWNhbE5vdEV4cHJlc3Npb24oY29uc3QgTG9naWNhbE5vdEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsK
ICAgICBMb2dpY2FsTm90RXhwcmVzc2lvbihMb2dpY2FsTm90RXhwcmVzc2lvbiYmKSA9IGRlZmF1
bHQ7CiAKLSAgICBib29sIGlzTG9naWNhbE5vdEV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNzaW9uJiBvcGVyYW5kKCkgeyByZXR1cm4gbV9v
cGVyYW5kOyB9CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFy
cmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDg0MDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHBy
ZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDIzICszOCwyOCBAQCBuYW1lc3BhY2UgV0hM
U0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVz
c2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK2NsYXNzIE1ha2VBcnJheVJlZmVyZW5jZUV4cHJl
c3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbihDb2RlTG9j
YXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGxlZnRWYWx1ZSwgQWRkcmVz
c0VzY2FwZU1vZGUgYWRkcmVzc0VzY2FwZU1vZGUpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2Nh
dGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpNYWtlQXJyYXlSZWZl
cmVuY2UpCiAgICAgICAgICwgbV9sZWZ0VmFsdWUoV1RGTW92ZShsZWZ0VmFsdWUpKQogICAgICAg
ICAsIG1fYWRkcmVzc0VzY2FwZU1vZGUoYWRkcmVzc0VzY2FwZU1vZGUpCiAgICAgewogICAgIH0K
IAotICAgIHZpcnR1YWwgfk1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7
CisgICAgfk1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKQorICAgIHsKKyAgICAgICAgcHJl
cGFyZUZvckNoaWxkQ2xhc3NEZXN0cnVjdGlvbigpOworICAgIH0KKyAgICB2b2lkIGRlc3Ryb3ko
KQorICAgIHsKKyAgICAgICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+KFdURk1vdmUobV9sZWZ0VmFs
dWUpKTsKKyAgICB9CiAKICAgICBNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKGNvbnN0IE1h
a2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBNYWtlQXJyYXlSZWZl
cmVuY2VFeHByZXNzaW9uKE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mJikgPSBkZWZhdWx0
OwogCi0gICAgYm9vbCBpc01ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNzaW9uJiBsZWZ0VmFsdWUoKSB7IHJl
dHVybiBtX2xlZnRWYWx1ZTsgfQogCiAgICAgYm9vbCBtaWdodEVzY2FwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYWRkcmVzc0VzY2FwZU1vZGUgPT0gQWRkcmVzc0VzY2FwZU1vZGU6OkVzY2FwZXM7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQ
b2ludGVyRXhwcmVzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oCShyZXZpc2lvbiAy
NDg0MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xN
YWtlUG9pbnRlckV4cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjMgKzM4LDI4IEBA
IG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBNYWtlUG9pbnRl
ckV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBNYWtlUG9pbnRlckV4cHJl
c3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgTWFrZVBvaW50ZXJFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBs
b2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgbGVmdFZhbHVlLCBBZGRyZXNzRXNjYXBl
TW9kZSBhZGRyZXNzRXNjYXBlTW9kZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQor
ICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6Ok1ha2VQb2ludGVyKQogICAgICAg
ICAsIG1fbGVmdFZhbHVlKFdURk1vdmUobGVmdFZhbHVlKSkKICAgICAgICAgLCBtX2FkZHJlc3NF
c2NhcGVNb2RlKGFkZHJlc3NFc2NhcGVNb2RlKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IH5NYWtlUG9pbnRlckV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfk1ha2VQb2ludGVyRXhw
cmVzc2lvbigpCisgICAgeworICAgICAgICBwcmVwYXJlRm9yQ2hpbGRDbGFzc0Rlc3RydWN0aW9u
KCk7CisgICAgfQorICAgIHZvaWQgZGVzdHJveSgpCisgICAgeworICAgICAgICBVbmlxdWVSZWY8
RXhwcmVzc2lvbj4oV1RGTW92ZShtX2xlZnRWYWx1ZSkpOworICAgIH0KIAogICAgIE1ha2VQb2lu
dGVyRXhwcmVzc2lvbihjb25zdCBNYWtlUG9pbnRlckV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAg
ICBNYWtlUG9pbnRlckV4cHJlc3Npb24oTWFrZVBvaW50ZXJFeHByZXNzaW9uJiYpID0gZGVmYXVs
dDsKIAotICAgIGJvb2wgaXNNYWtlUG9pbnRlckV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNzaW9uJiBsZWZ0VmFsdWUoKSB7IHJldHVybiBt
X2xlZnRWYWx1ZTsgfQogCiAgICAgYm9vbCBtaWdodEVzY2FwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YWRkcmVzc0VzY2FwZU1vZGUgPT0gQWRkcmVzc0VzY2FwZU1vZGU6OkVzY2FwZXM7IH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVkVHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTE5hbWVkVHlwZS5oCShyZXZpc2lvbiAyNDg0MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYW1lZFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NDEsMTMgKzQxLDE4IEBAIG5hbWVzcGFjZSBBU1QgewogY2xhc3MgTmFtZWRUeXBlIDogcHVibGlj
IFR5cGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIE5hbWVk
VHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmluZyYmIG5hbWUpCi0gICAgICAgIDogbV9j
b2RlTG9jYXRpb24obG9jYXRpb24pCisgICAgTmFtZWRUeXBlKEtpbmQga2luZCwgQ29kZUxvY2F0
aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1lKQorICAgICAgICA6IFR5cGUoa2luZCkKKyAgICAg
ICAgLCBtX2NvZGVMb2NhdGlvbihsb2NhdGlvbikKICAgICAgICAgLCBtX25hbWUoV1RGTW92ZShu
YW1lKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+TmFtZWRUeXBlKCkgPSBkZWZhdWx0
OworICAgIH5OYW1lZFR5cGUoKSA9IGRlZmF1bHQ7CisgICAgdm9pZCBkZXN0cm95KCkKKyAgICB7
CisgICAgICAgIG1fbmFtZS5+U3RyaW5nKCk7CisgICAgfQogCiAgICAgTmFtZWRUeXBlKGNvbnN0
IE5hbWVkVHlwZSYpID0gZGVsZXRlOwogICAgIE5hbWVkVHlwZShOYW1lZFR5cGUmJikgPSBkZWZh
dWx0OwpAQCAtNTcsMTYgKzYyLDEwIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyYgbmFtZSgpIHsg
cmV0dXJuIG1fbmFtZTsgfQogCi0gICAgYm9vbCBpc05hbWVkVHlwZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNUeXBlRGVmaW5pdGlvbigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU3RydWN0dXJlRGVmaW5p
dGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRW51bWVy
YXRpb25EZWZpbml0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaXNOYXRpdmVUeXBlRGVjbGFyYXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0g
ICAgdmlydHVhbCBjb25zdCBUeXBlJiB1bmlmeU5vZGUoKSBjb25zdCB7IHJldHVybiAqdGhpczsg
fQotICAgIHZpcnR1YWwgVHlwZSYgdW5pZnlOb2RlKCkgeyByZXR1cm4gKnRoaXM7IH0KIAogcHJp
dmF0ZToKKyAgICBmcmllbmQgY2xhc3MgVHlwZTsKKyAgICBUeXBlJiB1bmlmeU5vZGVJbXBsKCkg
eyByZXR1cm4gKnRoaXM7IH0KICAgICBDb2RlTG9jYXRpb24gbV9jb2RlTG9jYXRpb247CiAgICAg
U3RyaW5nIG1fbmFtZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVjbGFy
YXRpb24uaAkocmV2aXNpb24gMjQ4NDAzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDE4ICs0NCwzMyBAQCBjbGFzcyBOYXRpdmVUeXBlRGVjbGFyYXRpb24gOiBwdWJsaWMg
TmFtCiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTmF0aXZlVHlw
ZURlY2xhcmF0aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSwgVHlwZUFy
Z3VtZW50cyYmIHR5cGVBcmd1bWVudHMpCi0gICAgICAgIDogTmFtZWRUeXBlKGxvY2F0aW9uLCBX
VEZNb3ZlKG5hbWUpKQorICAgICAgICA6IE5hbWVkVHlwZShLaW5kOjpOYXRpdmVUeXBlRGVjbGFy
YXRpb24sIGxvY2F0aW9uLCBXVEZNb3ZlKG5hbWUpKQogICAgICAgICAsIG1fdHlwZUFyZ3VtZW50
cyhXVEZNb3ZlKHR5cGVBcmd1bWVudHMpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5O
YXRpdmVUeXBlRGVjbGFyYXRpb24oKSA9IGRlZmF1bHQ7CisgICAgfk5hdGl2ZVR5cGVEZWNsYXJh
dGlvbigpCisgICAgeworICAgICAgICBwcmVwYXJlRm9yQ2hpbGRDbGFzc0Rlc3RydWN0aW9uKCk7
CisgICAgfQorCisgICAgdm9pZCBkZXN0cm95KCkKKyAgICB7CisgICAgICAgIG1fdHlwZUFyZ3Vt
ZW50cy5+VHlwZUFyZ3VtZW50cygpOworICAgICAgICBtX2NhblJlcHJlc2VudEludGVnZXIufmZ1
bmN0aW9uPGJvb2woaW50KT4oKTsKKyAgICAgICAgbV9jYW5SZXByZXNlbnRVbnNpZ25lZEludGVn
ZXIufmZ1bmN0aW9uPGJvb2wodW5zaWduZWQpPigpOworICAgICAgICBtX2NhblJlcHJlc2VudEZs
b2F0Ln5mdW5jdGlvbjxib29sKGZsb2F0KT4oKTsKKyAgICAgICAgbV9zdWNjZXNzb3IufmZ1bmN0
aW9uPGludDY0X3QoaW50NjRfdCk+KCk7CisgICAgICAgIG1fZm9ybWF0VmFsdWVGcm9tSW50ZWdl
ci5+ZnVuY3Rpb248aW50NjRfdChpbnQpPigpOworICAgICAgICBtX2Zvcm1hdFZhbHVlRnJvbVVu
c2lnbmVkSW50ZWdlci5+ZnVuY3Rpb248aW50NjRfdCh1bnNpZ25lZCk+KCk7CisgICAgICAgIG1f
aXRlcmF0ZUFsbFZhbHVlcy5+ZnVuY3Rpb248dm9pZChjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wo
aW50NjRfdCk+Jik+KCk7CisKKyAgICAgICAgTmFtZWRUeXBlOjpkZXN0cm95KCk7CisgICAgfQog
CiAgICAgTmF0aXZlVHlwZURlY2xhcmF0aW9uKGNvbnN0IE5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYp
ID0gZGVsZXRlOwogICAgIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbihOYXRpdmVUeXBlRGVjbGFyYXRp
b24mJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc05hdGl2ZVR5cGVEZWNsYXJhdGlvbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIFR5cGVBcmd1bWVudHMmIHR5cGVB
cmd1bWVudHMoKSB7IHJldHVybiBtX3R5cGVBcmd1bWVudHM7IH0KIAogICAgIGJvb2wgaXNJbnQo
KSBjb25zdCB7IHJldHVybiBtX2lzSW50OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdWxsTGl0ZXJhbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRlcmFsLmgJKHJl
dmlzaW9uIDI0ODQwMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTE51bGxMaXRlcmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDE1ICszNywyMiBAQCBu
YW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgTnVsbExpdGVyYWwg
OiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBOdWxsTGl0ZXJhbCBmaW5hbCA6IHB1YmxpYyBF
eHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBO
dWxsTGl0ZXJhbChDb2RlTG9jYXRpb24gbG9jYXRpb24pCi0gICAgICAgIDogRXhwcmVzc2lvbihs
b2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpOdWxsTGl0ZXJh
bCkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+TnVsbExpdGVyYWwoKSA9IGRlZmF1bHQ7
CisgICAgfk51bGxMaXRlcmFsKCkKKyAgICB7CisgICAgICAgIHByZXBhcmVGb3JDaGlsZENsYXNz
RGVzdHJ1Y3Rpb24oKTsKKyAgICB9CisgICAgdm9pZCBkZXN0cm95KCkKKyAgICB7CisgICAgICAg
IG1fdHlwZS5+TnVsbExpdGVyYWxUeXBlKCk7CisgICAgfQogCiAgICAgTnVsbExpdGVyYWwoY29u
c3QgTnVsbExpdGVyYWwmKSA9IGRlbGV0ZTsKICAgICBOdWxsTGl0ZXJhbChOdWxsTGl0ZXJhbCYm
KSA9IGRlZmF1bHQ7CkBAIC01NSw4ICs2Miw2IEBAIHB1YmxpYzoKIAogICAgIE51bGxMaXRlcmFs
VHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQogCi0gICAgYm9vbCBpc051bGxMaXRlcmFs
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgTnVsbExpdGVyYWwgY2xv
bmUoKSBjb25zdAogICAgIHsKICAgICAgICAgYXV0byByZXN1bHQgPSBOdWxsTGl0ZXJhbChjb2Rl
TG9jYXRpb24oKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xOdWxsTGl0ZXJhbFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdWxsTGl0ZXJhbFR5cGUuaAkocmV2aXNpb24g
MjQ4NDAzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
TnVsbExpdGVyYWxUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDkgKzM5LDE5IEBAIG5hbWVz
cGFjZSBBU1QgewogY2xhc3MgTnVsbExpdGVyYWxUeXBlIDogcHVibGljIFJlc29sdmFibGVUeXBl
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBOdWxsTGl0ZXJh
bFR5cGUoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2aXJ0dWFsIH5OdWxsTGl0ZXJhbFR5cGUoKSA9IGRl
ZmF1bHQ7CisgICAgTnVsbExpdGVyYWxUeXBlKCkKKyAgICAgICAgOiBSZXNvbHZhYmxlVHlwZShL
aW5kOjpOdWxsTGl0ZXJhbCkKKyAgICB7IH0KKworICAgIH5OdWxsTGl0ZXJhbFR5cGUoKQorICAg
IHsKKyAgICAgICAgcHJlcGFyZUZvckNoaWxkQ2xhc3NEZXN0cnVjdGlvbigpOworICAgIH0KKwor
ICAgIHZvaWQgZGVzdHJveSgpCisgICAgeworICAgICAgICBSZXNvbHZhYmxlVHlwZTo6ZGVzdHJv
eSgpOworICAgIH0KIAogICAgIE51bGxMaXRlcmFsVHlwZShjb25zdCBOdWxsTGl0ZXJhbFR5cGUm
KSA9IGRlbGV0ZTsKICAgICBOdWxsTGl0ZXJhbFR5cGUoTnVsbExpdGVyYWxUeXBlJiYpID0gZGVm
YXVsdDsKQEAgLTQ5LDEwICs1OSw4IEBAIHB1YmxpYzoKICAgICBOdWxsTGl0ZXJhbFR5cGUmIG9w
ZXJhdG9yPShjb25zdCBOdWxsTGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKICAgICBOdWxsTGl0ZXJh
bFR5cGUmIG9wZXJhdG9yPShOdWxsTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwogCi0gICAgYm9v
bCBpc051bGxMaXRlcmFsVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQot
ICAgIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBUeXBlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdW5z
aWduZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIGNhblJlc29sdmUoY29uc3QgVHlwZSYpIGNvbnN0OworICAgIHVuc2lnbmVkIGNv
bnZlcnNpb25Db3N0KGNvbnN0IFVubmFtZWRUeXBlJikgY29uc3Q7CiAKIHByaXZhdGU6CiB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUG9pbnRl
clR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xQb2ludGVyVHlwZS5oCShyZXZpc2lvbiAyNDg0MDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQb2ludGVyVHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsNyArNDcsNyBAQCBj
bGFzcyBQb2ludGVyVHlwZSBmaW5hbCA6IHB1YmxpYyBSZWZlcmVuCiAgICAgdXNpbmcgQmFzZSA9
IFJlZmVyZW5jZVR5cGU7CiAKICAgICBQb2ludGVyVHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24s
IEFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2UsIFJlZjxVbm5hbWVkVHlwZT4gZWxlbWVudFR5cGUp
Ci0gICAgICAgIDogQmFzZShsb2NhdGlvbiwgYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKGVsZW1lbnRU
eXBlKSwgS2luZDo6UG9pbnRlclR5cGUpCisgICAgICAgIDogQmFzZShsb2NhdGlvbiwgYWRkcmVz
c1NwYWNlLCBXVEZNb3ZlKGVsZW1lbnRUeXBlKSwgS2luZDo6UG9pbnRlcikKICAgICB7CiAgICAg
fQogCkBAIC01Niw3ICs1NywxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFBvaW50ZXJUeXBlKGxvY2F0aW9uLCBhZGRyZXNzU3BhY2UsIFdURk1vdmUoZWxlbWVudFR5
cGUpKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+UG9pbnRlclR5cGUoKSA9IGRlZmF1bHQ7Cisg
ICAgflBvaW50ZXJUeXBlKCkKKyAgICB7CisgICAgICAgIHByZXBhcmVGb3JDaGlsZENsYXNzRGVz
dHJ1Y3Rpb24oKTsKKyAgICB9CisgICAgdm9pZCBkZXN0cm95KCkKKyAgICB7CisgICAgICAgIFJl
ZmVyZW5jZVR5cGU6OmRlc3Ryb3koKTsKKyAgICB9CiAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29u
c3QKICAgICB7CkBAIC02OCw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkZHJl
c3NTcGFjZSgpID09IG90aGVyLmFkZHJlc3NTcGFjZSgpICYmIGVsZW1lbnRUeXBlKCkgPT0gb3Ro
ZXIuZWxlbWVudFR5cGUoKTsKICAgICB9CiAKLSAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCBv
dmVycmlkZQorICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1
cm4gbWFrZVN0cmluZyhlbGVtZW50VHlwZSgpLnRvU3RyaW5nKCksICcqJyk7CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgJKHJldmlzaW9u
IDI0ODQwMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwyMiArNDEs
MjMgQEAgbmFtZXNwYWNlIEFTVCB7CiBjbGFzcyBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24gOiBw
dWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5p
cXVlUmVmPEV4cHJlc3Npb24+JiYgYmFzZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9u
KQorICAgIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIEtp
bmQga2luZCwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgYmFzZSkKKyAgICAgICAgOiBFeHByZXNz
aW9uKGxvY2F0aW9uLCBraW5kKQogICAgICAgICAsIG1fYmFzZShXVEZNb3ZlKGJhc2UpKQogICAg
IHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5Qcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oKSA9IGRl
ZmF1bHQ7CisgICAgdm9pZCBkZXN0cm95KCkKKyAgICB7CisgICAgICAgIFVuaXF1ZVJlZjxFeHBy
ZXNzaW9uPihXVEZNb3ZlKG1fYmFzZSkpOworICAgIH0KIAogICAgIFByb3BlcnR5QWNjZXNzRXhw
cmVzc2lvbihjb25zdCBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBQ
cm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJiYpID0gZGVm
YXVsdDsKIAotICAgIGJvb2wgaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICB2aXJ0dWFsIFN0cmluZyBnZXR0ZXJGdW5jdGlv
bk5hbWUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcgc2V0dGVyRnVuY3Rpb25OYW1l
KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIGFuZGVyRnVuY3Rpb25OYW1lKCkgY29u
c3QgPSAwOworICAgIFN0cmluZyBnZXR0ZXJGdW5jdGlvbk5hbWUoKSBjb25zdDsKKyAgICBTdHJp
bmcgc2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3Q7CisgICAgU3RyaW5nIGFuZGVyRnVuY3Rpb25O
YW1lKCkgY29uc3Q7CiAKICAgICBGdW5jdGlvbkRlY2xhcmF0aW9uKiBnZXR0ZXJGdW5jdGlvbigp
IHsgcmV0dXJuIG1fZ2V0dGVyRnVuY3Rpb247IH0KICAgICBGdW5jdGlvbkRlY2xhcmF0aW9uKiBh
bmRlckZ1bmN0aW9uKCkgeyByZXR1cm4gbV9hbmRlckZ1bmN0aW9uOyB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHBy
ZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDg0MDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWFkTW9k
aWZ5V3JpdGVFeHByZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFt
ZXNwYWNlIEFTVCB7CiAgKiAgNi4gRXZhbHVhdGUgbV9yZXN1bHRFeHByZXNzaW9uCiAgKiAgNy4g
UmV0dXJuIHRoZSByZXN1bHQKICAqLwotY2xhc3MgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiA6
IHB1YmxpYyBFeHByZXNzaW9uIHsKK2NsYXNzIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24gZmlu
YWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFVuaXF1ZVJlZjxSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPiBj
cmVhdGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbFZhbHVl
KQpAQCAtNTcsNyArNTcsMTggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJl
ZjxSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShsVmFsdWUpKTsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIH5SZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKCkgPSBkZWZh
dWx0OworICAgIH5SZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKCkKKyAgICB7CisgICAgICAgIHBy
ZXBhcmVGb3JDaGlsZENsYXNzRGVzdHJ1Y3Rpb24oKTsKKyAgICB9CisgICAgdm9pZCBkZXN0cm95
KCkKKyAgICB7CisgICAgICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPihXVEZNb3ZlKG1fbGVmdFZh
bHVlKSk7CisgICAgICAgIFVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9uPihXVEZNb3ZlKG1f
b2xkVmFsdWUpKTsKKyAgICAgICAgVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+KFdURk1v
dmUobV9uZXdWYWx1ZSkpOworICAgICAgICBPcHRpb25hbDxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+
KFdURk1vdmUobV9uZXdWYWx1ZUV4cHJlc3Npb24pKTsKKyAgICAgICAgT3B0aW9uYWw8VW5pcXVl
UmVmPEV4cHJlc3Npb24+PihXVEZNb3ZlKG1fcmVzdWx0RXhwcmVzc2lvbikpOworICAgIH0KIAog
ICAgIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oY29uc3QgUmVhZE1vZGlmeVdyaXRlRXhwcmVz
c2lvbiYpID0gZGVsZXRlOwogICAgIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oUmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CkBAIC04Miw4ICs5Myw2IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8VmFyaWFibGVSZWZlcmVuY2U+KFZhcmlhYmxl
UmVmZXJlbmNlOjp3cmFwKG1fbmV3VmFsdWUpKTsKICAgICB9CiAKLSAgICBib29sIGlzUmVhZE1v
ZGlmeVdyaXRlRXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQog
ICAgIEV4cHJlc3Npb24mIGxlZnRWYWx1ZSgpIHsgcmV0dXJuIG1fbGVmdFZhbHVlOyB9CiAgICAg
VmFyaWFibGVEZWNsYXJhdGlvbiYgb2xkVmFsdWUoKSB7IHJldHVybiBtX29sZFZhbHVlOyB9CiAg
ICAgVmFyaWFibGVEZWNsYXJhdGlvbiYgbmV3VmFsdWUoKSB7IHJldHVybiBtX25ld1ZhbHVlOyB9
CkBAIC0xMTcsNyArMTI2LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFz
cy4uLiBBcmdzPiBmcmllbmQgVW5pcXVlUmVmPFU+IFdURjo6bWFrZVVuaXF1ZVJlZihBcmdzJiYu
Li4pOwogCiAgICAgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRp
b24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBsZWZ0VmFsdWUpCi0gICAgICAgIDogRXhwcmVzc2lv
bihsb2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpSZWFkTW9k
aWZ5V3JpdGUpCiAgICAgICAgICwgbV9sZWZ0VmFsdWUoV1RGTW92ZShsZWZ0VmFsdWUpKQogICAg
ICAgICAsIG1fb2xkVmFsdWUobWFrZVVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9uPihsb2Nh
dGlvbiwgUXVhbGlmaWVycygpLCBudWxscHRyLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cikp
CiAgICAgICAgICwgbV9uZXdWYWx1ZShtYWtlVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+
KGxvY2F0aW9uLCBRdWFsaWZpZXJzKCksIG51bGxwdHIsIFN0cmluZygpLCBudWxscHRyLCBudWxs
cHRyKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFJlZmVyZW5jZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xSZWZlcmVuY2VUeXBlLmgJKHJldmlzaW9uIDI0ODQwMykKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlZmVyZW5jZVR5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsMTIgQEAgcHJvdGVjdGVkOgogICAgIHsK
ICAgICB9CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+UmVmZXJlbmNlVHlwZSgpID0gZGVmYXVsdDsK
KyAgICB2b2lkIGRlc3Ryb3koKQorICAgIHsKKyAgICAgICAgbV9lbGVtZW50VHlwZS5+UmVmPFVu
bmFtZWRUeXBlPigpOworCisgICAgICAgIFVubmFtZWRUeXBlOjpkZXN0cm95KCk7CisgICAgfQog
CiAgICAgQWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWRkcmVz
c1NwYWNlOyB9CiAgICAgY29uc3QgVW5uYW1lZFR5cGUmIGVsZW1lbnRUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbGVtZW50VHlwZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMUmVzb2x2YWJsZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvbHZhYmxlVHlwZS5oCShy
ZXZpc2lvbiAyNDg0MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xSZXNvbHZhYmxlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw5ICs0MSwxNiBA
QCBuYW1lc3BhY2UgQVNUIHsKIGNsYXNzIFJlc29sdmFibGVUeXBlIDogcHVibGljIFR5cGUgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFJlc29sdmFibGVUeXBl
KCkgPSBkZWZhdWx0OworICAgIFJlc29sdmFibGVUeXBlKEtpbmQga2luZCkKKyAgICAgICAgOiBU
eXBlKGtpbmQpCisgICAgeyB9CiAKLSAgICB2aXJ0dWFsIH5SZXNvbHZhYmxlVHlwZSgpID0gZGVm
YXVsdDsKKyAgICB+UmVzb2x2YWJsZVR5cGUoKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIGRlc3Ry
b3koKQorICAgIHsKKyAgICAgICAgbV9yZXNvbHZlZFR5cGUuflJlZlB0cjxVbm5hbWVkVHlwZT4o
KTsKKyAgICB9CiAKICAgICBSZXNvbHZhYmxlVHlwZShjb25zdCBSZXNvbHZhYmxlVHlwZSYpID0g
ZGVsZXRlOwogICAgIFJlc29sdmFibGVUeXBlKFJlc29sdmFibGVUeXBlJiYpID0gZGVmYXVsdDsK
QEAgLTUxLDE0ICs1OCw4IEBAIHB1YmxpYzoKICAgICBSZXNvbHZhYmxlVHlwZSYgb3BlcmF0b3I9
KGNvbnN0IFJlc29sdmFibGVUeXBlJikgPSBkZWxldGU7CiAgICAgUmVzb2x2YWJsZVR5cGUmIG9w
ZXJhdG9yPShSZXNvbHZhYmxlVHlwZSYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzUmVzb2x2
YWJsZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzRmxvYXRMaXRlcmFsVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzSW50ZWdlckxpdGVyYWxUeXBlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNOdWxsTGl0ZXJhbFR5cGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBjYW5SZXNvbHZlKGNvbnN0
IFR5cGUmKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChj
b25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0ID0gMDsKKyAgICBib29sIGNhblJlc29sdmUoY29uc3Qg
VHlwZSYpIGNvbnN0OworICAgIHVuc2lnbmVkIGNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFtZWRU
eXBlJikgY29uc3Q7CiAKICAgICBjb25zdCBVbm5hbWVkVHlwZSogbWF5YmVSZXNvbHZlZFR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkVHlwZSA/ICYqbV9yZXNvbHZlZFR5cGUgOiBudWxs
cHRyOyB9CiAgICAgY29uc3QgVW5uYW1lZFR5cGUmIHJlc29sdmVkVHlwZSgpIGNvbnN0CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xSZXR1cm4uaAkocmV2aXNpb24gMjQ4NDAzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMUmV0dXJuLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDIyICsz
OSwyOCBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgUmV0
dXJuIDogcHVibGljIFN0YXRlbWVudCB7CitjbGFzcyBSZXR1cm4gZmluYWwgOiBwdWJsaWMgU3Rh
dGVtZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBSZXR1
cm4oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4mJiB2
YWx1ZSkKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24pCisgICAgICAgIDogU3RhdGVtZW50
KGxvY2F0aW9uLCBLaW5kOjpSZXR1cm4pCiAgICAgICAgICwgbV92YWx1ZShXVEZNb3ZlKHZhbHVl
KSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+UmV0dXJuKCkgPSBkZWZhdWx0OworICAg
IH5SZXR1cm4oKQorICAgIHsKKyAgICAgICAgcHJlcGFyZUZvckNoaWxkQ2xhc3NEZXN0cnVjdGlv
bigpOworICAgIH0KKworICAgIHZvaWQgZGVzdHJveSgpCisgICAgeworICAgICAgICBtX3ZhbHVl
Ln51bmlxdWVfcHRyPEV4cHJlc3Npb24+KCk7CisgICAgfQogCiAgICAgUmV0dXJuKGNvbnN0IFJl
dHVybiYpID0gZGVsZXRlOwogICAgIFJldHVybihSZXR1cm4mJikgPSBkZWZhdWx0OwogCi0gICAg
Ym9vbCBpc1JldHVybigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIEV4
cHJlc3Npb24qIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZS5nZXQoKTsgfQogCiBwcml2YXRlOgpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTdGF0ZW1lbnQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1
ZGUgIldITFNMQVNULmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNM
IHsKKworbmFtZXNwYWNlIEFTVCB7CisKK1N0YXRlbWVudDo6flN0YXRlbWVudCgpCit7CisgICAg
c3dpdGNoIChraW5kKCkpIHsKKyAgICBjYXNlIEtpbmQ6OkJsb2NrOgorICAgICAgICBkb3duY2Fz
dDxBU1Q6OkJsb2NrPigqdGhpcykuZGVzdHJveSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEtpbmQ6OkJyZWFrOgorICAgICAgICBkb3duY2FzdDxBU1Q6OkJyZWFrPigqdGhpcykuZGVzdHJv
eSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6OkNvbnRpbnVlOgorICAgICAgICBk
b3duY2FzdDxBU1Q6OkNvbnRpbnVlPigqdGhpcykuZGVzdHJveSgpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEtpbmQ6OkRvV2hpbGVMb29wOgorICAgICAgICBkb3duY2FzdDxBU1Q6OkRvV2hp
bGVMb29wPigqdGhpcykuZGVzdHJveSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6
OkVmZmVjdGZ1bEV4cHJlc3Npb246CisgICAgICAgIGRvd25jYXN0PEFTVDo6RWZmZWN0ZnVsRXhw
cmVzc2lvblN0YXRlbWVudD4oKnRoaXMpLmRlc3Ryb3koKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBLaW5kOjpGYWxsdGhyb3VnaDoKKyAgICAgICAgZG93bmNhc3Q8QVNUOjpGYWxsdGhyb3Vn
aD4oKnRoaXMpLmRlc3Ryb3koKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpGb3JM
b29wOgorICAgICAgICBkb3duY2FzdDxBU1Q6OkZvckxvb3A+KCp0aGlzKS5kZXN0cm95KCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6SWY6CisgICAgICAgIGRvd25jYXN0PEFTVDo6
SWZTdGF0ZW1lbnQ+KCp0aGlzKS5kZXN0cm95KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
S2luZDo6UmV0dXJuOgorICAgICAgICBkb3duY2FzdDxBU1Q6OlJldHVybj4oKnRoaXMpLmRlc3Ry
b3koKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpTdGF0ZW1lbnRMaXN0OgorICAg
ICAgICBkb3duY2FzdDxBU1Q6OlN0YXRlbWVudExpc3Q+KCp0aGlzKS5kZXN0cm95KCk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6U3dpdGNoQ2FzZToKKyAgICAgICAgZG93bmNhc3Q8
QVNUOjpTd2l0Y2hDYXNlPigqdGhpcykuZGVzdHJveSgpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEtpbmQ6OlN3aXRjaDoKKyAgICAgICAgZG93bmNhc3Q8QVNUOjpTd2l0Y2hTdGF0ZW1lbnQ+
KCp0aGlzKS5kZXN0cm95KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6VmFyaWFi
bGVEZWNsYXJhdGlvbnM6CisgICAgICAgIGRvd25jYXN0PEFTVDo6VmFyaWFibGVEZWNsYXJhdGlv
bnNTdGF0ZW1lbnQ+KCp0aGlzKS5kZXN0cm95KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
S2luZDo6V2hpbGVMb29wOgorICAgICAgICBkb3duY2FzdDxBU1Q6OldoaWxlTG9vcD4oKnRoaXMp
LmRlc3Ryb3koKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpOb25lOgorICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCisjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFN0YXRlbWVudC5oCShyZXZpc2lvbiAyNDg0MDMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDAsMzYgKzQwLDYzIEBAIG5hbWVzcGFjZSBBU1QgewogY2xhc3MgU3RhdGVtZW50IHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTdGF0ZW1lbnQoQ29k
ZUxvY2F0aW9uIGNvZGVMb2NhdGlvbikKLSAgICAgICAgOiBtX2NvZGVMb2NhdGlvbihjb2RlTG9j
YXRpb24pCisgICAgZW51bSBjbGFzcyBLaW5kIDogdWludDhfdCB7CisgICAgICAgIEJsb2NrLAor
ICAgICAgICBCcmVhaywKKyAgICAgICAgQ29udGludWUsCisgICAgICAgIERvV2hpbGVMb29wLAor
ICAgICAgICBFZmZlY3RmdWxFeHByZXNzaW9uLAorICAgICAgICBGYWxsdGhyb3VnaCwKKyAgICAg
ICAgRm9yTG9vcCwKKyAgICAgICAgSWYsCisgICAgICAgIFJldHVybiwKKyAgICAgICAgU3RhdGVt
ZW50TGlzdCwKKyAgICAgICAgU3dpdGNoQ2FzZSwKKyAgICAgICAgU3dpdGNoLAorICAgICAgICBW
YXJpYWJsZURlY2xhcmF0aW9ucywKKyAgICAgICAgV2hpbGVMb29wLAorICAgICAgICBOb25lLAor
ICAgIH07CisgICAgU3RhdGVtZW50KENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24sIEtpbmQga2lu
ZCkKKyAgICAgICAgOiBtX2NvZGVMb2NhdGlvbihjb2RlTG9jYXRpb24uc3RhcnRPZmZzZXQoKSkK
KyAgICAgICAgLCBtX2tpbmQoa2luZCkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+U3Rh
dGVtZW50KCkgPSBkZWZhdWx0OworICAgIH5TdGF0ZW1lbnQoKTsKIAogICAgIFN0YXRlbWVudChj
b25zdCBTdGF0ZW1lbnQmKSA9IGRlbGV0ZTsKICAgICBTdGF0ZW1lbnQoU3RhdGVtZW50JiYpID0g
ZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0Jsb2NrKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNCcmVhaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzQ29udGludWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpc0RvV2hpbGVMb29wKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNGYWxsdGhyb3VnaCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRm9yTG9vcCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzSWZTdGF0ZW1lbnQoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1JldHVybigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU3RhdGVtZW50TGlzdCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU3dpdGNoQ2FzZSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU3dpdGNoU3RhdGVtZW50KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNWYXJpYWJsZURlY2xhcmF0
aW9uc1N0YXRlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29s
IGlzV2hpbGVMb29wKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBLaW5kIGtpbmQoKSBj
b25zdCB7IHJldHVybiBtX2tpbmQ7IH0KIAotICAgIENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2NvZGVMb2NhdGlvbjsgfQotICAgIHZvaWQgdXBkYXRlQ29kZUxv
Y2F0aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbikgeyBtX2NvZGVMb2NhdGlvbiA9IGxvY2F0aW9u
OyB9CisgICAgYm9vbCBpc0Jsb2NrKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkJs
b2NrOyB9CisgICAgYm9vbCBpc0JyZWFrKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6
OkJyZWFrOyB9CisgICAgYm9vbCBpc0NvbnRpbnVlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09
IEtpbmQ6OkNvbnRpbnVlOyB9CisgICAgYm9vbCBpc0RvV2hpbGVMb29wKCkgY29uc3QgeyByZXR1
cm4ga2luZCgpID09IEtpbmQ6OkRvV2hpbGVMb29wOyB9CisgICAgYm9vbCBpc0VmZmVjdGZ1bEV4
cHJlc3Npb25TdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6RWZmZWN0
ZnVsRXhwcmVzc2lvbjsgfQorICAgIGJvb2wgaXNGYWxsdGhyb3VnaCgpIGNvbnN0IHsgcmV0dXJu
IGtpbmQoKSA9PSBLaW5kOjpGYWxsdGhyb3VnaDsgfQorICAgIGJvb2wgaXNGb3JMb29wKCkgY29u
c3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkZvckxvb3A7IH0KKyAgICBib29sIGlzSWZTdGF0
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6SWY7IH0KKyAgICBib29sIGlz
UmV0dXJuKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlJldHVybjsgfQorICAgIGJv
b2wgaXNTdGF0ZW1lbnRMaXN0KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlN0YXRl
bWVudExpc3Q7IH0KKyAgICBib29sIGlzU3dpdGNoQ2FzZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQo
KSA9PSBLaW5kOjpTd2l0Y2hDYXNlOyB9CisgICAgYm9vbCBpc1N3aXRjaFN0YXRlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpTd2l0Y2g7IH0KKyAgICBib29sIGlzVmFyaWFi
bGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6
VmFyaWFibGVEZWNsYXJhdGlvbnM7IH0KKyAgICBib29sIGlzV2hpbGVMb29wKCkgY29uc3QgeyBy
ZXR1cm4ga2luZCgpID09IEtpbmQ6OldoaWxlTG9vcDsgfQorCisgICAgQ29kZUxvY2F0aW9uIGNv
ZGVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIENvZGVMb2NhdGlvbihtX2NvZGVMb2NhdGlvbiwg
bV9jb2RlTG9jYXRpb24pOyB9CisgICAgdm9pZCB1cGRhdGVDb2RlTG9jYXRpb24oQ29kZUxvY2F0
aW9uIGxvY2F0aW9uKSB7IG1fY29kZUxvY2F0aW9uID0gbG9jYXRpb24uc3RhcnRPZmZzZXQoKTsg
fQorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBwcmVwYXJlRm9yQ2hpbGRDbGFzc0Rlc3RydWN0aW9u
KCkKKyAgICB7CisgICAgICAgIG1fa2luZCA9IEtpbmQ6Ok5vbmU7CisgICAgfQogCiBwcml2YXRl
OgotICAgIENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKKyAgICB1bnNpZ25lZCBtX2NvZGVM
b2NhdGlvbjsKKyAgICBLaW5kIG1fa2luZDsKIH07CiAKIHVzaW5nIFN0YXRlbWVudHMgPSBWZWN0
b3I8VW5pcXVlUmVmPFN0YXRlbWVudD4+OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50TGlzdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudExpc3QuaAko
cmV2aXNpb24gMjQ4NDAzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMU3RhdGVtZW50TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyMSArMzgsMjYg
QEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIFN0YXRlbWVu
dExpc3QgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNzIFN0YXRlbWVudExpc3QgZmluYWwgOiBw
dWJsaWMgU3RhdGVtZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICB1c2lu
ZyBCYXNlID0gU3RhdGVtZW50OwogcHVibGljOgogICAgIFN0YXRlbWVudExpc3QoQ29kZUxvY2F0
aW9uIGxvY2F0aW9uLCBTdGF0ZW1lbnRzJiYgc3RhdGVtZW50cykKLSAgICAgICAgOiBCYXNlKGxv
Y2F0aW9uKQorICAgICAgICA6IEJhc2UobG9jYXRpb24sIEtpbmQ6OlN0YXRlbWVudExpc3QpCiAg
ICAgICAgICwgbV9zdGF0ZW1lbnRzKFdURk1vdmUoc3RhdGVtZW50cykpCiAgICAgeyB9CiAKLSAg
ICB2aXJ0dWFsIH5TdGF0ZW1lbnRMaXN0KCkgPSBkZWZhdWx0OworICAgIH5TdGF0ZW1lbnRMaXN0
KCkKKyAgICB7CisgICAgICAgIHByZXBhcmVGb3JDaGlsZENsYXNzRGVzdHJ1Y3Rpb24oKTsKKyAg
ICB9CisgICAgdm9pZCBkZXN0cm95KCkKKyAgICB7CisgICAgICAgIG1fc3RhdGVtZW50cy5+U3Rh
dGVtZW50cygpOworICAgIH0KIAogICAgIFN0YXRlbWVudHMmIHN0YXRlbWVudHMoKSB7IHJldHVy
biBtX3N0YXRlbWVudHM7IH0KIAotICAgIGJvb2wgaXNTdGF0ZW1lbnRMaXN0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiBwcml2YXRlOgogICAgIFN0YXRlbWVudHMgbV9zdGF0
ZW1lbnRzOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFN0cnVjdHVyZURlZmluaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgJKHJl
dmlzaW9uIDI0ODQwMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFN0cnVjdHVyZURlZmluaXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTggKzQ0
LDI1IEBAIGNsYXNzIFN0cnVjdHVyZURlZmluaXRpb24gOiBwdWJsaWMgTmFtZWQKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmVEZWZpbml0aW9uKENv
ZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSwgU3RydWN0dXJlRWxlbWVudHMmJiBz
dHJ1Y3R1cmVFbGVtZW50cykKLSAgICAgICAgOiBOYW1lZFR5cGUobG9jYXRpb24sIFdURk1vdmUo
bmFtZSkpCisgICAgICAgIDogTmFtZWRUeXBlKEtpbmQ6OlN0cnVjdHVyZURlZmluaXRpb24sIGxv
Y2F0aW9uLCBXVEZNb3ZlKG5hbWUpKQogICAgICAgICAsIG1fc3RydWN0dXJlRWxlbWVudHMoV1RG
TW92ZShzdHJ1Y3R1cmVFbGVtZW50cykpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgflN0
cnVjdHVyZURlZmluaXRpb24oKSA9IGRlZmF1bHQ7CisgICAgflN0cnVjdHVyZURlZmluaXRpb24o
KQorICAgIHsKKyAgICAgICAgcHJlcGFyZUZvckNoaWxkQ2xhc3NEZXN0cnVjdGlvbigpOworICAg
IH0KKworICAgIHZvaWQgZGVzdHJveSgpCisgICAgeworICAgICAgICBtX3N0cnVjdHVyZUVsZW1l
bnRzLn5TdHJ1Y3R1cmVFbGVtZW50cygpOworICAgICAgICBOYW1lZFR5cGU6OmRlc3Ryb3koKTsK
KyAgICB9CiAKICAgICBTdHJ1Y3R1cmVEZWZpbml0aW9uKGNvbnN0IFN0cnVjdHVyZURlZmluaXRp
b24mKSA9IGRlbGV0ZTsKICAgICBTdHJ1Y3R1cmVEZWZpbml0aW9uKFN0cnVjdHVyZURlZmluaXRp
b24mJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc1N0cnVjdHVyZURlZmluaXRpb24oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBTdHJ1Y3R1cmVFbGVtZW50cyYgc3Ry
dWN0dXJlRWxlbWVudHMoKSB7IHJldHVybiBtX3N0cnVjdHVyZUVsZW1lbnRzOyB9CiAgICAgU3Ry
dWN0dXJlRWxlbWVudCogZmluZChjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgewpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJlRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFN0cnVjdHVyZUVsZW1lbnQuaAkocmV2aXNpb24gMjQ4NDAzKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJlRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVz
cGFjZSBBU1QgewogCi1jbGFzcyBTdHJ1Y3R1cmVFbGVtZW50IHsKK2NsYXNzIFN0cnVjdHVyZUVs
ZW1lbnQgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IFN0cnVjdHVyZUVsZW1lbnQoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBRdWFsaWZpZXJzJiYgcXVh
bGlmaWVycywgUmVmPFVubmFtZWRUeXBlPiB0eXBlLCBTdHJpbmcmJiBuYW1lLCBzdGQ6OnVuaXF1
ZV9wdHI8U2VtYW50aWM+JiYgc2VtYW50aWMpCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+U3RydWN0dXJlRWxlbWVudCgpID0gZGVmYXVsdDsK
KyAgICB+U3RydWN0dXJlRWxlbWVudCgpID0gZGVmYXVsdDsKIAogICAgIFN0cnVjdHVyZUVsZW1l
bnQoY29uc3QgU3RydWN0dXJlRWxlbWVudCYpID0gZGVsZXRlOwogICAgIFN0cnVjdHVyZUVsZW1l
bnQoU3RydWN0dXJlRWxlbWVudCYmKSA9IGRlZmF1bHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hDYXNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoQ2FzZS5o
CShyZXZpc2lvbiAyNDg0MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTd2l0Y2hDYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDIzICs0MCwyOSBA
QCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgU3dpdGNoQ2Fz
ZSA6IHB1YmxpYyBTdGF0ZW1lbnQgeworY2xhc3MgU3dpdGNoQ2FzZSBmaW5hbCA6IHB1YmxpYyBT
dGF0ZW1lbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFN3
aXRjaENhc2UoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBPcHRpb25hbDxDb25zdGFudEV4cHJlc3Np
b24+JiYgdmFsdWUsIEJsb2NrJiYgYmxvY2spCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9u
KQorICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6U3dpdGNoQ2FzZSkKICAgICAg
ICAgLCBtX3ZhbHVlKFdURk1vdmUodmFsdWUpKQogICAgICAgICAsIG1fYmxvY2soV1RGTW92ZShi
bG9jaykpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgflN3aXRjaENhc2UoKSA9IGRlZmF1
bHQ7CisgICAgflN3aXRjaENhc2UoKQorICAgIHsKKyAgICAgICAgcHJlcGFyZUZvckNoaWxkQ2xh
c3NEZXN0cnVjdGlvbigpOworICAgIH0KKyAgICB2b2lkIGRlc3Ryb3koKQorICAgIHsKKyAgICAg
ICAgbV92YWx1ZS5+T3B0aW9uYWw8Q29uc3RhbnRFeHByZXNzaW9uPigpOworICAgICAgICBtX2Js
b2NrLn5CbG9jaygpOworICAgIH0KIAogICAgIFN3aXRjaENhc2UoY29uc3QgU3dpdGNoQ2FzZSYp
ID0gZGVsZXRlOwogICAgIFN3aXRjaENhc2UoU3dpdGNoQ2FzZSYmKSA9IGRlZmF1bHQ7CiAKLSAg
ICBib29sIGlzU3dpdGNoQ2FzZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQog
ICAgIE9wdGlvbmFsPENvbnN0YW50RXhwcmVzc2lvbj4mIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1
ZTsgfQogICAgIEJsb2NrJiBibG9jaygpIHsgcmV0dXJuIG1fYmxvY2s7IH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoU3RhdGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMU3dpdGNoU3RhdGVtZW50LmgJKHJldmlzaW9uIDI0ODQwMykKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaFN0YXRlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSwyMyArMzksMjkgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNw
YWNlIEFTVCB7CiAKLWNsYXNzIFN3aXRjaFN0YXRlbWVudCA6IHB1YmxpYyBTdGF0ZW1lbnQgewor
Y2xhc3MgU3dpdGNoU3RhdGVtZW50IGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU3dpdGNoU3RhdGVtZW50KENvZGVM
b2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgdmFsdWUsIFZlY3RvcjxT
d2l0Y2hDYXNlPiYmIHN3aXRjaENhc2VzKQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbikK
KyAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OlN3aXRjaCkKICAgICAgICAgLCBt
X3ZhbHVlKFdURk1vdmUodmFsdWUpKQogICAgICAgICAsIG1fc3dpdGNoQ2FzZXMoV1RGTW92ZShz
d2l0Y2hDYXNlcykpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgflN3aXRjaFN0YXRlbWVu
dCgpID0gZGVmYXVsdDsKKyAgICB+U3dpdGNoU3RhdGVtZW50KCkKKyAgICB7CisgICAgICAgIHBy
ZXBhcmVGb3JDaGlsZENsYXNzRGVzdHJ1Y3Rpb24oKTsKKyAgICB9CisgICAgdm9pZCBkZXN0cm95
KCkKKyAgICB7CisgICAgICAgIG1fdmFsdWUuflVuaXF1ZVJlZjxFeHByZXNzaW9uPigpOworICAg
ICAgICBtX3N3aXRjaENhc2VzLn5WZWN0b3I8U3dpdGNoQ2FzZT4oKTsKKyAgICB9CiAKICAgICBT
d2l0Y2hTdGF0ZW1lbnQoY29uc3QgU3dpdGNoU3RhdGVtZW50JikgPSBkZWxldGU7CiAgICAgU3dp
dGNoU3RhdGVtZW50KFN3aXRjaFN0YXRlbWVudCYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlz
U3dpdGNoU3RhdGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAg
RXhwcmVzc2lvbiYgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgVmVjdG9yPFN3aXRj
aENhc2U+JiBzd2l0Y2hDYXNlcygpIHsgcmV0dXJuIG1fc3dpdGNoQ2FzZXM7IH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVGVybmFyeUV4cHJl
c3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDg0MDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUZXJuYXJ5RXhwcmVzc2lv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywyNCArMzcsMzEgQEAgbmFtZXNwYWNlIFdITFNMIHsK
IAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIFRlcm5hcnlFeHByZXNzaW9uIDogcHVibGljIEV4
cHJlc3Npb24geworY2xhc3MgVGVybmFyeUV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVz
c2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVGVybmFy
eUV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4m
JiBwcmVkaWNhdGUsIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGJvZHlFeHByZXNzaW9uLCBVbmlx
dWVSZWY8RXhwcmVzc2lvbj4mJiBlbHNlRXhwcmVzc2lvbikKLSAgICAgICAgOiBFeHByZXNzaW9u
KGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OlRlcm5hcnkp
CiAgICAgICAgICwgbV9wcmVkaWNhdGUoV1RGTW92ZShwcmVkaWNhdGUpKQogICAgICAgICAsIG1f
Ym9keUV4cHJlc3Npb24oV1RGTW92ZShib2R5RXhwcmVzc2lvbikpCiAgICAgICAgICwgbV9lbHNl
RXhwcmVzc2lvbihXVEZNb3ZlKGVsc2VFeHByZXNzaW9uKSkKICAgICB7CiAgICAgfQogCi0gICAg
dmlydHVhbCB+VGVybmFyeUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgflRlcm5hcnlFeHBy
ZXNzaW9uKCkKKyAgICB7CisgICAgICAgIHByZXBhcmVGb3JDaGlsZENsYXNzRGVzdHJ1Y3Rpb24o
KTsKKyAgICB9CisgICAgdm9pZCBkZXN0cm95KCkKKyAgICB7CisgICAgICAgIFVuaXF1ZVJlZjxF
eHByZXNzaW9uPihXVEZNb3ZlKG1fcHJlZGljYXRlKSk7CisgICAgICAgIFVuaXF1ZVJlZjxFeHBy
ZXNzaW9uPihXVEZNb3ZlKG1fYm9keUV4cHJlc3Npb24pKTsKKyAgICAgICAgVW5pcXVlUmVmPEV4
cHJlc3Npb24+KFdURk1vdmUobV9lbHNlRXhwcmVzc2lvbikpOworICAgIH0KIAogICAgIFRlcm5h
cnlFeHByZXNzaW9uKGNvbnN0IFRlcm5hcnlFeHByZXNzaW9uJikgPSBkZWxldGU7CiAgICAgVGVy
bmFyeUV4cHJlc3Npb24oVGVybmFyeUV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwogCi0gICAgYm9v
bCBpc1Rlcm5hcnlFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQot
CiAgICAgRXhwcmVzc2lvbiYgcHJlZGljYXRlKCkgeyByZXR1cm4gbV9wcmVkaWNhdGU7IH0KICAg
ICBFeHByZXNzaW9uJiBib2R5RXhwcmVzc2lvbigpIHsgcmV0dXJuIG1fYm9keUV4cHJlc3Npb247
IH0KICAgICBFeHByZXNzaW9uJiBlbHNlRXhwcmVzc2lvbigpIHsgcmV0dXJuIG1fZWxzZUV4cHJl
c3Npb247IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFR5cGUuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldITFNMVHlwZS5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNM
QVNULmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFt
ZXNwYWNlIEFTVCB7CisKK1R5cGU6On5UeXBlKCkKK3sKKyAgICBzd2l0Y2ggKGtpbmQoKSkgewor
ICAgIGNhc2UgS2luZDo6VHlwZVJlZmVyZW5jZToKKyAgICAgICAgZG93bmNhc3Q8VHlwZVJlZmVy
ZW5jZT4oKnRoaXMpLmRlc3Ryb3koKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpQ
b2ludGVyOgorICAgICAgICBkb3duY2FzdDxQb2ludGVyVHlwZT4oKnRoaXMpLmRlc3Ryb3koKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpBcnJheVJlZmVyZW5jZToKKyAgICAgICAg
ZG93bmNhc3Q8QXJyYXlSZWZlcmVuY2VUeXBlPigqdGhpcykuZGVzdHJveSgpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEtpbmQ6OkFycmF5OgorICAgICAgICBkb3duY2FzdDxBcnJheVR5cGU+
KCp0aGlzKS5kZXN0cm95KCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBLaW5kOjpUeXBl
RGVmaW5pdGlvbjoKKyAgICAgICAgZG93bmNhc3Q8VHlwZURlZmluaXRpb24+KCp0aGlzKS5kZXN0
cm95KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6U3RydWN0dXJlRGVmaW5pdGlv
bjoKKyAgICAgICAgZG93bmNhc3Q8U3RydWN0dXJlRGVmaW5pdGlvbj4oKnRoaXMpLmRlc3Ryb3ko
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpFbnVtZXJhdGlvbkRlZmluaXRpb246
CisgICAgICAgIGRvd25jYXN0PEVudW1lcmF0aW9uRGVmaW5pdGlvbj4oKnRoaXMpLmRlc3Ryb3ko
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246
CisgICAgICAgIGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oKnRoaXMpLmRlc3Ryb3ko
KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEtpbmQ6OkZsb2F0TGl0ZXJhbDoKKyAgICAg
ICAgZG93bmNhc3Q8RmxvYXRMaXRlcmFsVHlwZT4oKnRoaXMpLmRlc3Ryb3koKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBLaW5kOjpJbnRlZ2VyTGl0ZXJhbDoKKyAgICAgICAgZG93bmNhc3Q8
SW50ZWdlckxpdGVyYWxUeXBlPigqdGhpcykuZGVzdHJveSgpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEtpbmQ6Ok51bGxMaXRlcmFsOgorICAgICAgICBkb3duY2FzdDxOdWxsTGl0ZXJhbFR5
cGU+KCp0aGlzKS5kZXN0cm95KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6VW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbDoKKyAgICAgICAgZG93bmNhc3Q8VW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbFR5cGU+KCp0aGlzKS5kZXN0cm95KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2lu
ZDo6Tm9uZToKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDogCisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCitUeXBlJiBUeXBlOjp1bmlmeU5vZGUo
KQoreworICAgIHN3aXRjaCAoa2luZCgpKSB7CisgICAgY2FzZSBLaW5kOjpUeXBlUmVmZXJlbmNl
OgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8VHlwZVJlZmVyZW5jZT4oKnRoaXMpLnVuaWZ5Tm9k
ZUltcGwoKTsKKyAgICBjYXNlIEtpbmQ6OlBvaW50ZXI6CisgICAgICAgIHJldHVybiBkb3duY2Fz
dDxQb2ludGVyVHlwZT4oKnRoaXMpLnVuaWZ5Tm9kZUltcGwoKTsKKyAgICBjYXNlIEtpbmQ6OkFy
cmF5UmVmZXJlbmNlOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8QXJyYXlSZWZlcmVuY2VUeXBl
PigqdGhpcykudW5pZnlOb2RlSW1wbCgpOworICAgIGNhc2UgS2luZDo6QXJyYXk6CisgICAgICAg
IHJldHVybiBkb3duY2FzdDxBcnJheVR5cGU+KCp0aGlzKS51bmlmeU5vZGVJbXBsKCk7CisKKyAg
ICBjYXNlIEtpbmQ6OlR5cGVEZWZpbml0aW9uOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8VHlw
ZURlZmluaXRpb24+KCp0aGlzKS51bmlmeU5vZGVJbXBsKCk7CisgICAgY2FzZSBLaW5kOjpTdHJ1
Y3R1cmVEZWZpbml0aW9uOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8U3RydWN0dXJlRGVmaW5p
dGlvbj4oKnRoaXMpLnVuaWZ5Tm9kZUltcGwoKTsKKyAgICBjYXNlIEtpbmQ6OkVudW1lcmF0aW9u
RGVmaW5pdGlvbjoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEVudW1lcmF0aW9uRGVmaW5pdGlv
bj4oKnRoaXMpLnVuaWZ5Tm9kZUltcGwoKTsKKyAgICBjYXNlIEtpbmQ6Ok5hdGl2ZVR5cGVEZWNs
YXJhdGlvbjoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4o
KnRoaXMpLnVuaWZ5Tm9kZUltcGwoKTsKKworICAgIGRlZmF1bHQ6IAorICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworYm9vbCBSZXNvbHZhYmxlVHlwZTo6
Y2FuUmVzb2x2ZShjb25zdCBUeXBlJiB0eXBlKSBjb25zdAoreworICAgIHN3aXRjaCAoa2luZCgp
KSB7CisgICAgY2FzZSBLaW5kOjpGbG9hdExpdGVyYWw6CisgICAgICAgIHJldHVybiBkb3duY2Fz
dDxGbG9hdExpdGVyYWxUeXBlPigqdGhpcykuY2FuUmVzb2x2ZSh0eXBlKTsKKyAgICBjYXNlIEtp
bmQ6OkludGVnZXJMaXRlcmFsOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8SW50ZWdlckxpdGVy
YWxUeXBlPigqdGhpcykuY2FuUmVzb2x2ZSh0eXBlKTsKKyAgICBjYXNlIEtpbmQ6Ok51bGxMaXRl
cmFsOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8TnVsbExpdGVyYWxUeXBlPigqdGhpcykuY2Fu
UmVzb2x2ZSh0eXBlKTsKKyAgICBjYXNlIEtpbmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw6Cisg
ICAgICAgIHJldHVybiBkb3duY2FzdDxVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZT4oKnRoaXMp
LmNhblJlc29sdmUodHlwZSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIFJlc29sdmFibGVUeXBlOjpjb252
ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYgdHlwZSkgY29uc3QKK3sKKyAgICBzd2l0Y2gg
KGtpbmQoKSkgeworICAgIGNhc2UgS2luZDo6RmxvYXRMaXRlcmFsOgorICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8RmxvYXRMaXRlcmFsVHlwZT4oKnRoaXMpLmNvbnZlcnNpb25Db3N0KHR5cGUpOwor
ICAgIGNhc2UgS2luZDo6SW50ZWdlckxpdGVyYWw6CisgICAgICAgIHJldHVybiBkb3duY2FzdDxJ
bnRlZ2VyTGl0ZXJhbFR5cGU+KCp0aGlzKS5jb252ZXJzaW9uQ29zdCh0eXBlKTsKKyAgICBjYXNl
IEtpbmQ6Ok51bGxMaXRlcmFsOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8TnVsbExpdGVyYWxU
eXBlPigqdGhpcykuY29udmVyc2lvbkNvc3QodHlwZSk7CisgICAgY2FzZSBLaW5kOjpVbnNpZ25l
ZEludGVnZXJMaXRlcmFsOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8VW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbFR5cGU+KCp0aGlzKS5jb252ZXJzaW9uQ29zdCh0eXBlKTsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworU3RyaW5n
IFVubmFtZWRUeXBlOjp0b1N0cmluZygpIGNvbnN0Cit7CisgICAgc3dpdGNoIChraW5kKCkpIHsK
KyAgICBjYXNlIEtpbmQ6OlR5cGVSZWZlcmVuY2U6CisgICAgICAgIHJldHVybiBkb3duY2FzdDxU
eXBlUmVmZXJlbmNlPigqdGhpcykudG9TdHJpbmcoKTsKKyAgICBjYXNlIEtpbmQ6OlBvaW50ZXI6
CisgICAgICAgIHJldHVybiBkb3duY2FzdDxQb2ludGVyVHlwZT4oKnRoaXMpLnRvU3RyaW5nKCk7
CisgICAgY2FzZSBLaW5kOjpBcnJheVJlZmVyZW5jZToKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0
PEFycmF5UmVmZXJlbmNlVHlwZT4oKnRoaXMpLnRvU3RyaW5nKCk7CisgICAgY2FzZSBLaW5kOjpB
cnJheToKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFycmF5VHlwZT4oKnRoaXMpLnRvU3RyaW5n
KCk7CisgICAgZGVmYXVsdDogCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgfQorCit9CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMVHlwZS5oCShyZXZpc2lvbiAyNDg0MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDkgKzM5LDMx
IEBAIG5hbWVzcGFjZSBBU1QgewogY2xhc3MgVHlwZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgVHlwZSgpID0gZGVmYXVsdDsKKyAgICBlbnVtIGNsYXNzIEtp
bmQgOiB1aW50OF90IHsKKyAgICAgICAgLy8gVW5uYW1lZFR5cGVzCisgICAgICAgIFR5cGVSZWZl
cmVuY2UsCisgICAgICAgIFBvaW50ZXIsCisgICAgICAgIEFycmF5UmVmZXJlbmNlLAorICAgICAg
ICBBcnJheSwKKyAgICAgICAgLy8gTmFtZWRUeXBlcworICAgICAgICBUeXBlRGVmaW5pdGlvbiwK
KyAgICAgICAgU3RydWN0dXJlRGVmaW5pdGlvbiwKKyAgICAgICAgRW51bWVyYXRpb25EZWZpbml0
aW9uLAorICAgICAgICBOYXRpdmVUeXBlRGVjbGFyYXRpb24sCisgICAgICAgIC8vIFJlc29sdmFi
bGVUeXBlcworICAgICAgICBGbG9hdExpdGVyYWwsCisgICAgICAgIEludGVnZXJMaXRlcmFsLAor
ICAgICAgICBOdWxsTGl0ZXJhbCwKKyAgICAgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCwKKyAg
ICAgICAgLy8gZGVzdHJ1Y3RvciBzaWduaWZpZXIKKyAgICAgICAgTm9uZQorICAgIH07CisKKyAg
ICBUeXBlKEtpbmQga2luZCkKKyAgICAgICAgOiBtX2tpbmQoa2luZCkKKyAgICB7IH0KIAotICAg
IHZpcnR1YWwgflR5cGUoKSA9IGRlZmF1bHQ7CisgICAgflR5cGUoKTsKIAogICAgIGV4cGxpY2l0
IFR5cGUoY29uc3QgVHlwZSYpID0gZGVsZXRlOwogICAgIFR5cGUoVHlwZSYmKSA9IGRlZmF1bHQ7
CkBAIC00OSwxMSArNzEsNDEgQEAgcHVibGljOgogICAgIFR5cGUmIG9wZXJhdG9yPShjb25zdCBU
eXBlJikgPSBkZWxldGU7CiAgICAgVHlwZSYgb3BlcmF0b3I9KFR5cGUmJikgPSBkZWZhdWx0Owog
Ci0gICAgdmlydHVhbCBib29sIGlzTmFtZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNVbm5hbWVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzUmVzb2x2YWJsZVR5cGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQogCisgICAgYm9v
bCBpc1VubmFtZWRUeXBlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID49IEtpbmQ6OlR5cGVSZWZl
cmVuY2UgJiYga2luZCgpIDw9IEtpbmQ6OkFycmF5OyB9CisgICAgYm9vbCBpc05hbWVkVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA+PSBLaW5kOjpUeXBlRGVmaW5pdGlvbiAmJiBraW5kKCkg
PD0gS2luZDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOyB9CisgICAgYm9vbCBpc1Jlc29sdmFibGVU
eXBlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID49IEtpbmQ6OkZsb2F0TGl0ZXJhbCAmJiBraW5k
KCkgPD0gS2luZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDsgfQorCisgICAgYm9vbCBpc1R5cGVS
ZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6VHlwZVJlZmVyZW5jZTsg
fQorICAgIGJvb2wgaXNQb2ludGVyVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5k
OjpQb2ludGVyOyB9CisgICAgYm9vbCBpc0FycmF5UmVmZXJlbmNlVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIGtpbmQoKSA9PSBLaW5kOjpBcnJheVJlZmVyZW5jZTsgfQorICAgIGJvb2wgaXNBcnJheVR5
cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6QXJyYXk7IH0KKyAgICBib29sIGlz
UmVmZXJlbmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGlzUG9pbnRlclR5cGUoKSB8fCBpc0FycmF5
UmVmZXJlbmNlVHlwZSgpOyB9CisKKyAgICBib29sIGlzVHlwZURlZmluaXRpb24oKSBjb25zdCB7
IHJldHVybiBraW5kKCkgPT0gS2luZDo6VHlwZURlZmluaXRpb247IH0KKyAgICBib29sIGlzU3Ry
dWN0dXJlRGVmaW5pdGlvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpTdHJ1Y3R1
cmVEZWZpbml0aW9uOyB9CisgICAgYm9vbCBpc0VudW1lcmF0aW9uRGVmaW5pdGlvbigpIGNvbnN0
IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpFbnVtZXJhdGlvbkRlZmluaXRpb247IH0KKyAgICBi
b29sIGlzTmF0aXZlVHlwZURlY2xhcmF0aW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtp
bmQ6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsgfQorCisgICAgYm9vbCBpc0Zsb2F0TGl0ZXJhbFR5
cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6RmxvYXRMaXRlcmFsOyB9CisgICAg
Ym9vbCBpc0ludGVnZXJMaXRlcmFsVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5k
OjpJbnRlZ2VyTGl0ZXJhbDsgfQorICAgIGJvb2wgaXNOdWxsTGl0ZXJhbFR5cGUoKSBjb25zdCB7
IHJldHVybiBraW5kKCkgPT0gS2luZDo6TnVsbExpdGVyYWw7IH0KKyAgICBib29sIGlzVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6VW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbDsgfQorCisgICAgVHlwZSYgdW5pZnlOb2RlKCk7CisgICAgY29u
c3QgVHlwZSYgdW5pZnlOb2RlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjb25zdF9j
YXN0PFR5cGUqPih0aGlzKS0+dW5pZnlOb2RlKCk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAg
dm9pZCBwcmVwYXJlRm9yQ2hpbGRDbGFzc0Rlc3RydWN0aW9uKCkKKyAgICB7CisgICAgICAgIG1f
a2luZCA9IEtpbmQ6Ok5vbmU7CisgICAgfQogcHJpdmF0ZToKKyAgICBLaW5kIG1fa2luZDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIEFTVApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMVHlwZURlZmluaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlRGVmaW5pdGlvbi5oCShy
ZXZpc2lvbiAyNDg0MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xUeXBlRGVmaW5pdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwzMSArNDQsMzMg
QEAgY2xhc3MgVHlwZURlZmluaXRpb24gOiBwdWJsaWMgTmFtZWRUeXBlIAogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFR5cGVEZWZpbml0aW9uKENvZGVMb2NhdGlv
biBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSwgUmVmPFVubmFtZWRUeXBlPiB0eXBlKQotICAgICAg
ICA6IE5hbWVkVHlwZShsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSkKKyAgICAgICAgOiBOYW1lZFR5
cGUoS2luZDo6VHlwZURlZmluaXRpb24sIGxvY2F0aW9uLCBXVEZNb3ZlKG5hbWUpKQogICAgICAg
ICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5U
eXBlRGVmaW5pdGlvbigpID0gZGVmYXVsdDsKKyAgICB+VHlwZURlZmluaXRpb24oKQorICAgIHsK
KyAgICAgICAgcHJlcGFyZUZvckNoaWxkQ2xhc3NEZXN0cnVjdGlvbigpOworICAgIH0KKworICAg
IHZvaWQgZGVzdHJveSgpCisgICAgeworICAgICAgICBtX3R5cGUuflJlZjxVbm5hbWVkVHlwZT4o
KTsKKyAgICB9CiAKICAgICBUeXBlRGVmaW5pdGlvbihjb25zdCBUeXBlRGVmaW5pdGlvbiYpID0g
ZGVsZXRlOwogICAgIFR5cGVEZWZpbml0aW9uKFR5cGVEZWZpbml0aW9uJiYpID0gZGVmYXVsdDsK
IAotICAgIGJvb2wgaXNUeXBlRGVmaW5pdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KLQogICAgIFVubmFtZWRUeXBlJiB0eXBlKCkgeyByZXR1cm4gbV90eXBlOyB9CiAKLSAg
ICBjb25zdCBUeXBlJiB1bmlmeU5vZGUoKSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fdHlwZS0+dW5pZnlOb2RlKCk7Ci0gICAgfQotCi0gICAgVHlwZSYgdW5pZnlOb2Rl
KCkgb3ZlcnJpZGUKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFR5cGU7CisgICAgVHlwZSYg
dW5pZnlOb2RlSW1wbCgpCiAgICAgewogICAgICAgICByZXR1cm4gbV90eXBlLT51bmlmeU5vZGUo
KTsKICAgICB9CiAKLXByaXZhdGU6CiAgICAgUmVmPFVubmFtZWRUeXBlPiBtX3R5cGU7CiB9Owog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBl
UmVmZXJlbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMVHlwZVJlZmVyZW5jZS5oCShyZXZpc2lvbiAyNDg0MDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDE4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCogbmV3IFR5cGVSZWZlcmVuY2UobG9jYXRpb24sIFdURk1vdmUobmFtZSksIFdU
Rk1vdmUodHlwZUFyZ3VtZW50cykpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5UeXBlUmVmZXJl
bmNlKCkgPSBkZWZhdWx0OworICAgIH5UeXBlUmVmZXJlbmNlKCkKKyAgICB7CisgICAgICAgIHBy
ZXBhcmVGb3JDaGlsZENsYXNzRGVzdHJ1Y3Rpb24oKTsKKyAgICB9CisKKyAgICB2b2lkIGRlc3Ry
b3koKQorICAgIHsKKyAgICAgICAgbV9uYW1lLn5TdHJpbmcoKTsKKyAgICAgICAgbV90eXBlQXJn
dW1lbnRzLn5UeXBlQXJndW1lbnRzKCk7CisKKyAgICAgICAgVW5uYW1lZFR5cGU6OmRlc3Ryb3ko
KTsKKyAgICB9CiAKICAgICBzdGF0aWMgUmVmPFR5cGVSZWZlcmVuY2U+IHdyYXAoQ29kZUxvY2F0
aW9uLCBOYW1lZFR5cGUmIHJlc29sdmVkVHlwZSk7CiAKQEAgLTcyLDE4ICs4Myw2IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuICptX3Jlc29sdmVkVHlwZTsKICAgICB9CiAKLSAgICBjb25zdCBU
eXBlJiB1bmlmeU5vZGUoKSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
cmVzb2x2ZWRUeXBlKTsKLSAgICAgICAgcmV0dXJuIG1fcmVzb2x2ZWRUeXBlLT51bmlmeU5vZGUo
KTsKLSAgICB9Ci0KLSAgICBUeXBlJiB1bmlmeU5vZGUoKSBvdmVycmlkZQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKG1fcmVzb2x2ZWRUeXBlKTsKLSAgICAgICAgcmV0dXJuIG1fcmVzb2x2ZWRUeXBl
LT51bmlmeU5vZGUoKTsKLSAgICB9Ci0KICAgICB2b2lkIHNldFJlc29sdmVkVHlwZShOYW1lZFR5
cGUmIHJlc29sdmVkVHlwZSkKICAgICB7CiAgICAgICAgIG1fcmVzb2x2ZWRUeXBlID0gJnJlc29s
dmVkVHlwZTsKQEAgLTEwMywxMyArMTAyLDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICZ1
bmlmeU5vZGUoKSA9PSAmb3RoZXIudW5pZnlOb2RlKCk7CiAgICAgfQogCi0gICAgU3RyaW5nIHRv
U3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdAogICAg
IHsKICAgICAgICAgQVNTRVJUKG1fcmVzb2x2ZWRUeXBlKTsKICAgICAgICAgcmV0dXJuIG1fcmVz
b2x2ZWRUeXBlLT5uYW1lKCk7CiAgICAgfQogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBU
eXBlOworICAgIFR5cGUmIHVuaWZ5Tm9kZUltcGwoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
cmVzb2x2ZWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIG1fcmVzb2x2ZWRUeXBlLT51bmlmeU5vZGUo
KTsKKyAgICB9CisKICAgICBTdHJpbmcgbV9uYW1lOwogICAgIFR5cGVBcmd1bWVudHMgbV90eXBl
QXJndW1lbnRzOwogICAgIE5hbWVkVHlwZSogbV9yZXNvbHZlZFR5cGUgeyBudWxscHRyIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5hbWVk
VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuY3BwCShyZXZpc2lvbiAyNDg0MDMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDMyICs0MSwzNiBAQCBuYW1lc3BhY2UgQVNUIHsKIAogdW5zaWdu
ZWQgVW5uYW1lZFR5cGU6Omhhc2goKSBjb25zdAogewotICAgIHN3aXRjaCAobV9raW5kKSB7Cisg
ICAgc3dpdGNoIChraW5kKCkpIHsKICAgICBjYXNlIEtpbmQ6OlR5cGVSZWZlcmVuY2U6CiAgICAg
ICAgIHJldHVybiBkb3duY2FzdDxUeXBlUmVmZXJlbmNlPigqdGhpcykuaGFzaCgpOwotICAgIGNh
c2UgS2luZDo6UG9pbnRlclR5cGU6CisgICAgY2FzZSBLaW5kOjpQb2ludGVyOgogICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8UG9pbnRlclR5cGU+KCp0aGlzKS5oYXNoKCk7Ci0gICAgY2FzZSBLaW5k
OjpBcnJheVJlZmVyZW5jZVR5cGU6CisgICAgY2FzZSBLaW5kOjpBcnJheVJlZmVyZW5jZToKICAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PEFycmF5UmVmZXJlbmNlVHlwZT4oKnRoaXMpLmhhc2goKTsK
LSAgICBjYXNlIEtpbmQ6OkFycmF5VHlwZToKKyAgICBjYXNlIEtpbmQ6OkFycmF5OgogICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8QXJyYXlUeXBlPigqdGhpcykuaGFzaCgpOworICAgIGRlZmF1bHQ6
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogfQogCiBib29s
IFVubmFtZWRUeXBlOjpvcGVyYXRvcj09KGNvbnN0IFVubmFtZWRUeXBlJiBvdGhlcikgY29uc3QK
IHsKLSAgICBpZiAob3RoZXIubV9raW5kICE9IG1fa2luZCkKKyAgICBpZiAob3RoZXIua2luZCgp
ICE9IGtpbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3dpdGNoIChtX2tpbmQp
IHsKKyAgICBzd2l0Y2ggKGtpbmQoKSkgewogICAgIGNhc2UgS2luZDo6VHlwZVJlZmVyZW5jZToK
ICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KCp0aGlzKSA9PSBkb3duY2Fz
dDxUeXBlUmVmZXJlbmNlPihvdGhlcik7Ci0gICAgY2FzZSBLaW5kOjpQb2ludGVyVHlwZToKKyAg
ICBjYXNlIEtpbmQ6OlBvaW50ZXI6CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxQb2ludGVyVHlw
ZT4oKnRoaXMpID09IGRvd25jYXN0PFBvaW50ZXJUeXBlPihvdGhlcik7Ci0gICAgY2FzZSBLaW5k
OjpBcnJheVJlZmVyZW5jZVR5cGU6CisgICAgY2FzZSBLaW5kOjpBcnJheVJlZmVyZW5jZToKICAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PEFycmF5UmVmZXJlbmNlVHlwZT4oKnRoaXMpID09IGRvd25j
YXN0PEFycmF5UmVmZXJlbmNlVHlwZT4ob3RoZXIpOwotICAgIGNhc2UgS2luZDo6QXJyYXlUeXBl
OgorICAgIGNhc2UgS2luZDo6QXJyYXk6CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxBcnJheVR5
cGU+KCp0aGlzKSA9PSBkb3duY2FzdDxBcnJheVR5cGU+KG90aGVyKTsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xVbm5hbWVkVHlwZS5oCShyZXZpc2lvbiAyNDg0MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NSw0MyArNDUsMjcgQEAgY2xhc3MgVW5uYW1lZFR5cGUgOiBwdWJsaWMgVHlwZSwgcHVi
bGljIAogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFVubmFtZWRUeXBlKTsKIHB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEtpbmQgewotICAgICAg
ICBUeXBlUmVmZXJlbmNlLAotICAgICAgICBQb2ludGVyVHlwZSwKLSAgICAgICAgQXJyYXlSZWZl
cmVuY2VUeXBlLAotICAgICAgICBBcnJheVR5cGUKLSAgICB9OwotCiAgICAgVW5uYW1lZFR5cGUo
Q29kZUxvY2F0aW9uIGxvY2F0aW9uLCBLaW5kIGtpbmQpCi0gICAgICAgIDogbV9jb2RlTG9jYXRp
b24obG9jYXRpb24pCi0gICAgICAgICwgbV9raW5kKGtpbmQpCisgICAgICAgIDogVHlwZShraW5k
KQorICAgICAgICAsIG1fY29kZUxvY2F0aW9uKGxvY2F0aW9uKQogICAgIHsKICAgICB9CiAKLSAg
ICB2aXJ0dWFsIH5Vbm5hbWVkVHlwZSgpID0gZGVmYXVsdDsKLQotICAgIGJvb2wgaXNVbm5hbWVk
VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQotICAgIEtpbmQga2luZCgp
IGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQotICAgIGJvb2wgaXNUeXBlUmVmZXJlbmNlKCkgY29u
c3QgeyByZXR1cm4gbV9raW5kID09IEtpbmQ6OlR5cGVSZWZlcmVuY2U7IH0KLSAgICBib29sIGlz
UG9pbnRlclR5cGUoKSBjb25zdCB7IHJldHVybiBtX2tpbmQgPT0gS2luZDo6UG9pbnRlclR5cGU7
IH0KLSAgICBib29sIGlzQXJyYXlSZWZlcmVuY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9raW5k
ID09IEtpbmQ6OkFycmF5UmVmZXJlbmNlVHlwZTsgfQotICAgIGJvb2wgaXNBcnJheVR5cGUoKSBj
b25zdCB7IHJldHVybiBtX2tpbmQgPT0gS2luZDo6QXJyYXlUeXBlOyB9Ci0gICAgYm9vbCBpc1Jl
ZmVyZW5jZVR5cGUoKSBjb25zdCB7IHJldHVybiBpc1BvaW50ZXJUeXBlKCkgfHwgaXNBcnJheVJl
ZmVyZW5jZVR5cGUoKTsgfQotCi0gICAgdmlydHVhbCBjb25zdCBUeXBlJiB1bmlmeU5vZGUoKSBj
b25zdCB7IHJldHVybiAqdGhpczsgfQotICAgIHZpcnR1YWwgVHlwZSYgdW5pZnlOb2RlKCkgeyBy
ZXR1cm4gKnRoaXM7IH0KKyAgICB2b2lkIGRlc3Ryb3koKQorICAgIHsKKyAgICB9CiAKICAgICB1
bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVubmFtZWRU
eXBlJikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyB0b1N0cmluZygpIGNvbnN0ID0gMDsK
KyAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKIAogICAgIGNvbnN0IENvZGVMb2NhdGlvbiYg
Y29kZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlTG9jYXRpb247IH0KIAogcHJpdmF0
ZToKKyAgICBmcmllbmQgY2xhc3MgVHlwZTsKKyAgICBUeXBlJiB1bmlmeU5vZGVJbXBsKCkgeyBy
ZXR1cm4gKnRoaXM7IH0KICAgICBDb2RlTG9jYXRpb24gbV9jb2RlTG9jYXRpb247Ci0gICAgS2lu
ZCBtX2tpbmQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBU1QKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgJKHJldmlzaW9uIDI0ODQwMykKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVy
YWwuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTcgKzM3LDI0IEBAIG5hbWVzcGFjZSBXSExTTCB7
CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBVbnNpZ25lZEludGVnZXJMaXRlcmFsIDogcHVi
bGljIEV4cHJlc3Npb24geworY2xhc3MgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCBmaW5hbCA6IHB1
YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgdW5zaWdu
ZWQgdmFsdWUpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBFeHBy
ZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsKQogICAgICAgICAs
IG1fdHlwZShsb2NhdGlvbiwgdmFsdWUpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7
CiAgICAgfQogCi0gICAgdmlydHVhbCB+VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpID0gZGVmYXVs
dDsKKyAgICB+VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpCisgICAgeworICAgICAgICBwcmVwYXJl
Rm9yQ2hpbGRDbGFzc0Rlc3RydWN0aW9uKCk7CisgICAgfQorICAgIHZvaWQgZGVzdHJveSgpCisg
ICAgeworICAgICAgICBtX3R5cGUuflVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKCk7CisgICAg
fQogCiAgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbChjb25zdCBVbnNpZ25lZEludGVnZXJMaXRl
cmFsJikgPSBkZWxldGU7CiAgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbChVbnNpZ25lZEludGVn
ZXJMaXRlcmFsJiYpID0gZGVmYXVsdDsKQEAgLTU4LDggKzY1LDYgQEAgcHVibGljOgogICAgIFVu
c2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiB0eXBlKCkgeyByZXR1cm4gbV90eXBlOyB9CiAgICAg
dW5zaWduZWQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKLSAgICBib29sIGlz
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
LQogICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwgY2xvbmUoKSBjb25zdAogICAgIHsKICAgICAg
ICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCByZXN1bHQoY29kZUxvY2F0aW9uKCksIG1fdmFsdWUp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBl
LmNwcAkocmV2aXNpb24gMjQ4NDAzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MSwxNyArNDEsMTIgQEAgbmFtZXNwYWNlIFdITFNMIHsKIG5hbWVzcGFjZSBBU1Qg
ewogCiBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZTo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5
cGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCB1bnNpZ25lZCB2YWx1ZSkKLSAgICA6IG1fdmFsdWUo
dmFsdWUpCisgICAgOiBSZXNvbHZhYmxlVHlwZShLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFs
KQorICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICAsIG1fcHJlZmVycmVkVHlwZShUeXBlUmVmZXJl
bmNlOjpjcmVhdGUobG9jYXRpb24sICJ1aW50Il9zdHIsIFR5cGVBcmd1bWVudHMoKSkpCiB7CiB9
CiAKLVVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlOjp+VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5
cGUoKSA9IGRlZmF1bHQ7Ci0KLVVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlOjpVbnNpZ25lZElu
dGVnZXJMaXRlcmFsVHlwZShVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7
Ci0KLVVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlw
ZTo6b3BlcmF0b3I9KFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKLQog
Ym9vbCBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZTo6Y2FuUmVzb2x2ZShjb25zdCBUeXBlJiB0
eXBlKSBjb25zdAogewogICAgIGlmICghaXM8TmFtZWRUeXBlPih0eXBlKSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxp
dGVyYWxUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaAkocmV2aXNpb24gMjQ4
NDAzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMjIgKzQ1LDI5
IEBAIGNsYXNzIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlIDogcHVibGkKIHB1YmxpYzoKICAg
ICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZShDb2RlTG9jYXRpb24sIHVuc2lnbmVkIHZhbHVl
KTsKIAotICAgIHZpcnR1YWwgflVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKCk7CisgICAgflVu
c2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKCkKKyAgICB7CisgICAgICAgIHByZXBhcmVGb3JDaGls
ZENsYXNzRGVzdHJ1Y3Rpb24oKTsKKyAgICB9CisKKyAgICB2b2lkIGRlc3Ryb3koKQorICAgIHsK
KyAgICAgICAgbV9wcmVmZXJyZWRUeXBlLn5SZWY8VHlwZVJlZmVyZW5jZT4oKTsKKyAgICAgICAg
UmVzb2x2YWJsZVR5cGU6OmRlc3Ryb3koKTsKKyAgICB9CiAKICAgICBVbnNpZ25lZEludGVnZXJM
aXRlcmFsVHlwZShjb25zdCBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYpID0gZGVsZXRlOwot
ICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBl
JiYpOworICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKFVuc2lnbmVkSW50ZWdlckxpdGVy
YWxUeXBlJiYpID0gZGVmYXVsdDsKIAogICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiBv
cGVyYXRvcj0oY29uc3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKLSAg
ICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KFVuc2lnbmVkSW50ZWdlckxp
dGVyYWxUeXBlJiYpOwotCi0gICAgYm9vbCBpc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIFVuc2lnbmVkSW50ZWdlckxpdGVy
YWxUeXBlJiBvcGVyYXRvcj0oVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0
OwogCiAgICAgdW5zaWduZWQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKICAg
ICBUeXBlUmVmZXJlbmNlJiBwcmVmZXJyZWRUeXBlKCkgeyByZXR1cm4gbV9wcmVmZXJyZWRUeXBl
OyB9CiAKLSAgICBib29sIGNhblJlc29sdmUoY29uc3QgVHlwZSYpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHVuc2lnbmVkIGNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFtZWRUeXBlJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgYm9vbCBjYW5SZXNvbHZlKGNvbnN0IFR5cGUmKSBjb25zdDsKKyAgICB1bnNp
Z25lZCBjb252ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0OwogCiAgICAgVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUgY2xvbmUoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNT
dGF0ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oCShyZXZpc2lvbiAy
NDg0MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xW
YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyMiAr
MzksMjggQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIFZh
cmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50IDogcHVibGljIFN0YXRlbWVudCB7CitjbGFzcyBW
YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFZhcmlhYmxlRGVjbGFy
YXRpb25zU3RhdGVtZW50KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVmFyaWFibGVEZWNsYXJhdGlv
bnMmJiB2YXJpYWJsZURlY2xhcmF0aW9ucykKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24p
CisgICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpWYXJpYWJsZURlY2xhcmF0aW9u
cykKICAgICAgICAgLCBtX3ZhcmlhYmxlRGVjbGFyYXRpb25zKFdURk1vdmUodmFyaWFibGVEZWNs
YXJhdGlvbnMpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5WYXJpYWJsZURlY2xhcmF0
aW9uc1N0YXRlbWVudCgpID0gZGVmYXVsdDsKKyAgICB+VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0
ZW1lbnQoKQorICAgIHsKKyAgICAgICAgcHJlcGFyZUZvckNoaWxkQ2xhc3NEZXN0cnVjdGlvbigp
OworICAgIH0KKworICAgIHZvaWQgZGVzdHJveSgpCisgICAgeworICAgICAgICBtX3ZhcmlhYmxl
RGVjbGFyYXRpb25zLn5WYXJpYWJsZURlY2xhcmF0aW9ucygpOworICAgIH0KIAogICAgIFZhcmlh
YmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KGNvbnN0IFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVt
ZW50JikgPSBkZWxldGU7CiAgICAgVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoVmFyaWFi
bGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQmJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc1Zhcmlh
YmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQotCiAgICAgVmVjdG9yPFVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9uPj4mIHZhcmlhYmxl
RGVjbGFyYXRpb25zKCkgeyByZXR1cm4gbV92YXJpYWJsZURlY2xhcmF0aW9uczsgfQogCiBwcml2
YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
VmFyaWFibGVSZWZlcmVuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oCShyZXZpc2lvbiAyNDg0
MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJp
YWJsZVJlZmVyZW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNiArMzgsMjMgQEAgbmFtZXNw
YWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIFZhcmlhYmxlUmVmZXJlbmNl
IDogcHVibGljIEV4cHJlc3Npb24geworY2xhc3MgVmFyaWFibGVSZWZlcmVuY2UgZmluYWwgOiBw
dWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgVmFyaWFibGVSZWZlcmVuY2UoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBu
YW1lKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lv
bihsb2NhdGlvbiwgS2luZDo6VmFyaWFibGVSZWZlcmVuY2UpCiAgICAgICAgICwgbV9uYW1lKFdU
Rk1vdmUobmFtZSkpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgflZhcmlhYmxlUmVmZXJl
bmNlKCkgPSBkZWZhdWx0OworICAgIH5WYXJpYWJsZVJlZmVyZW5jZSgpCisgICAgeworICAgICAg
ICBwcmVwYXJlRm9yQ2hpbGRDbGFzc0Rlc3RydWN0aW9uKCk7CisgICAgfQorICAgIHZvaWQgZGVz
dHJveSgpCisgICAgeworICAgICAgICBtX25hbWUuflN0cmluZygpOworICAgIH0KIAogICAgIFZh
cmlhYmxlUmVmZXJlbmNlKGNvbnN0IFZhcmlhYmxlUmVmZXJlbmNlJikgPSBkZWxldGU7CiAgICAg
VmFyaWFibGVSZWZlcmVuY2UoVmFyaWFibGVSZWZlcmVuY2UmJikgPSBkZWZhdWx0OwpAQCAtNjAs
OCArNjcsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAg
Ym9vbCBpc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQotCiAgICAgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9CiAKICAgICBWYXJpYWJs
ZURlY2xhcmF0aW9uKiB2YXJpYWJsZSgpIHsgcmV0dXJuIG1fdmFyaWFibGU7IH0KQEAgLTczLDcg
Kzc4LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFZhcmlhYmxlUmVmZXJlbmNlKENvZGVM
b2NhdGlvbiBsb2NhdGlvbikKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAg
ICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OlZhcmlhYmxlUmVmZXJlbmNlKQogICAgIHsK
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFdoaWxlTG9vcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oCShyZXZpc2lvbiAyNDg0MDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xXaGlsZUxvb3AuaAkod29y
a2luZyBjb3B5KQpAQCAtMzgsMjMgKzM4LDI5IEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVz
cGFjZSBBU1QgewogCi1jbGFzcyBXaGlsZUxvb3AgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNz
IFdoaWxlTG9vcCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFdoaWxlTG9vcChDb2RlTG9jYXRpb24gbG9jYXRpb24s
IFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGNvbmRpdGlvbmFsLCBVbmlxdWVSZWY8U3RhdGVtZW50
PiYmIGJvZHkpCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uKQorICAgICAgICA6IFN0YXRl
bWVudChsb2NhdGlvbiwgS2luZDo6V2hpbGVMb29wKQogICAgICAgICAsIG1fY29uZGl0aW9uYWwo
V1RGTW92ZShjb25kaXRpb25hbCkpCiAgICAgICAgICwgbV9ib2R5KFdURk1vdmUoYm9keSkpCiAg
ICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfldoaWxlTG9vcCgpID0gZGVmYXVsdDsKKyAgICB+
V2hpbGVMb29wKCkKKyAgICB7CisgICAgICAgIHByZXBhcmVGb3JDaGlsZENsYXNzRGVzdHJ1Y3Rp
b24oKTsKKyAgICB9CisgICAgdm9pZCBkZXN0cm95KCkKKyAgICB7CisgICAgICAgIG1fY29uZGl0
aW9uYWwuflVuaXF1ZVJlZjxFeHByZXNzaW9uPigpOworICAgICAgICBtX2JvZHkuflVuaXF1ZVJl
ZjxTdGF0ZW1lbnQ+KCk7CisgICAgfQogCiAgICAgV2hpbGVMb29wKGNvbnN0IFdoaWxlTG9vcCYp
ID0gZGVsZXRlOwogICAgIFdoaWxlTG9vcChXaGlsZUxvb3AmJikgPSBkZWZhdWx0OwogCi0gICAg
Ym9vbCBpc1doaWxlTG9vcCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAg
IEV4cHJlc3Npb24mIGNvbmRpdGlvbmFsKCkgeyByZXR1cm4gbV9jb25kaXRpb25hbDsgfQogICAg
IFN0YXRlbWVudCYgYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xU
eXBlTmFtZXIuY3BwCShyZXZpc2lvbiAyNDg0MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcyLDkgKzcyLDkgQEAgcHVibGljOgogICAgIAogICAgIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQg
a2luZCgpIHsgcmV0dXJuIG1fa2luZDsgfQogICAgIGJvb2wgaXNSZWZlcmVuY2VUeXBlTmFtZU5v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2tpbmQgPT0gQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6VHlw
ZVJlZmVyZW5jZTsgfQotICAgIGJvb2wgaXNQb2ludGVyVHlwZU5hbWVOb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9raW5kID09IEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlBvaW50ZXJUeXBlOyB9Ci0g
ICAgYm9vbCBpc0FycmF5UmVmZXJlbmNlVHlwZU5hbWVOb2RlKCkgY29uc3QgeyByZXR1cm4gbV9r
aW5kID09IEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5UmVmZXJlbmNlVHlwZTsgfQotICAg
IGJvb2wgaXNBcnJheVR5cGVOYW1lTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCA9PSBBU1Q6
OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVR5cGU7IH0KKyAgICBib29sIGlzUG9pbnRlclR5cGVO
YW1lTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCA9PSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5k
OjpQb2ludGVyOyB9CisgICAgYm9vbCBpc0FycmF5UmVmZXJlbmNlVHlwZU5hbWVOb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9raW5kID09IEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5UmVmZXJl
bmNlOyB9CisgICAgYm9vbCBpc0FycmF5VHlwZU5hbWVOb2RlKCkgY29uc3QgeyByZXR1cm4gbV9r
aW5kID09IEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5OyB9CiAKICAgICBCYXNlVHlwZU5h
bWVOb2RlKiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQogICAgIE1hbmdsZWRUeXBlTmFt
ZSBtYW5nbGVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFuZ2xlZE5hbWU7IH0KQEAgLTg5LDcg
Kzg5LDcgQEAgY2xhc3MgQXJyYXlUeXBlTmFtZU5vZGUgZmluYWwgOiBwdWJsaWMgQgogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEFycmF5VHlwZU5hbWVOb2RlKEJh
c2VUeXBlTmFtZU5vZGUqIHBhcmVudCwgTWFuZ2xlZFR5cGVOYW1lJiYgbWFuZ2xlZE5hbWUsIHVu
c2lnbmVkIG51bUVsZW1lbnRzKQotICAgICAgICA6IEJhc2VUeXBlTmFtZU5vZGUocGFyZW50LCBX
VEZNb3ZlKG1hbmdsZWROYW1lKSwgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlUeXBlKQor
ICAgICAgICA6IEJhc2VUeXBlTmFtZU5vZGUocGFyZW50LCBXVEZNb3ZlKG1hbmdsZWROYW1lKSwg
QVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXkpCiAgICAgICAgICwgbV9udW1FbGVtZW50cyhu
dW1FbGVtZW50cykKICAgICB7CiAgICAgfQpAQCAtMTA0LDcgKzEwNCw3IEBAIGNsYXNzIEFycmF5
UmVmZXJlbmNlVHlwZU5hbWVOb2RlIGZpbmFsIDoKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZShCYXNlVHlwZU5hbWVO
b2RlKiBwYXJlbnQsIE1hbmdsZWRUeXBlTmFtZSYmIG1hbmdsZWROYW1lLCBBU1Q6OkFkZHJlc3NT
cGFjZSBhZGRyZXNzU3BhY2UpCi0gICAgICAgIDogQmFzZVR5cGVOYW1lTm9kZShwYXJlbnQsIFdU
Rk1vdmUobWFuZ2xlZE5hbWUpLCBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVyZW5j
ZVR5cGUpCisgICAgICAgIDogQmFzZVR5cGVOYW1lTm9kZShwYXJlbnQsIFdURk1vdmUobWFuZ2xl
ZE5hbWUpLCBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVyZW5jZSkKICAgICAgICAg
LCBtX2FkZHJlc3NTcGFjZShhZGRyZXNzU3BhY2UpCiAgICAgewogICAgIH0KQEAgLTExOSw3ICsx
MTksNyBAQCBjbGFzcyBQb2ludGVyVHlwZU5hbWVOb2RlIGZpbmFsIDogcHVibGljCiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUG9pbnRlclR5cGVOYW1lTm9kZShC
YXNlVHlwZU5hbWVOb2RlKiBwYXJlbnQsIE1hbmdsZWRUeXBlTmFtZSYmIG1hbmdsZWROYW1lLCBB
U1Q6OkFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2UpCi0gICAgICAgIDogQmFzZVR5cGVOYW1lTm9k
ZShwYXJlbnQsIFdURk1vdmUobWFuZ2xlZE5hbWUpLCBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQ
b2ludGVyVHlwZSkKKyAgICAgICAgOiBCYXNlVHlwZU5hbWVOb2RlKHBhcmVudCwgV1RGTW92ZSht
YW5nbGVkTmFtZSksIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlBvaW50ZXIpCiAgICAgICAgICwg
bV9hZGRyZXNzU3BhY2UoYWRkcmVzc1NwYWNlKQogICAgIHsKICAgICB9CkBAIC0yNzQsMTggKzI3
NCwyMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QmFzZVR5cGVOYW1lTm9kZT4gVHlwZU5hCiAgICAgICAg
IGF1dG8mIHR5cGVSZWZlcmVuY2UgPSBkb3duY2FzdDxBU1Q6OlR5cGVSZWZlcmVuY2U+KHVubmFt
ZWRUeXBlKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVmZXJlbmNlVHlwZU5h
bWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIHR5cGVSZWZlcmVuY2UucmVz
b2x2ZWRUeXBlKCkpOwogICAgIH0KLSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlBv
aW50ZXJUeXBlOiB7CisgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQb2ludGVyOiB7
CiAgICAgICAgIGF1dG8mIHBvaW50ZXJUeXBlID0gZG93bmNhc3Q8QVNUOjpQb2ludGVyVHlwZT4o
dW5uYW1lZFR5cGUpOwogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQb2ludGVyVHlw
ZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIHBvaW50ZXJUeXBlLmFk
ZHJlc3NTcGFjZSgpKTsKICAgICB9Ci0gICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpB
cnJheVJlZmVyZW5jZVR5cGU6IHsKKyAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFy
cmF5UmVmZXJlbmNlOiB7CiAgICAgICAgIGF1dG8mIGFycmF5UmVmZXJlbmNlVHlwZSA9IGRvd25j
YXN0PEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSk7CiAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5UmVmZXJlbmNlVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdl
bmVyYXRlTmV4dFR5cGVOYW1lKCksIGFycmF5UmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2UoKSk7
CiAgICAgfQotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlUeXBlOiB7Cisg
ICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheTogewogICAgICAgICBhdXRvJiBh
cnJheVR5cGUgPSBkb3duY2FzdDxBU1Q6OkFycmF5VHlwZT4odW5uYW1lZFR5cGUpOwogICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBcnJheVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5l
cmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJheVR5cGUubnVtRWxlbWVudHMoKSk7CiAgICAgfQorICAg
IGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQog
fQogCkBAIC0yOTQsMTIgKzI5NiwxNCBAQCBzdGF0aWMgQVNUOjpVbm5hbWVkVHlwZSogcGFyZW50
KEFTVDo6VW5uCiAgICAgc3dpdGNoICh1bm5hbWVkVHlwZS5raW5kKCkpIHsKICAgICBjYXNlIEFT
VDo6VW5uYW1lZFR5cGU6OktpbmQ6OlR5cGVSZWZlcmVuY2U6CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlclR5cGU6CisgICAg
Y2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQb2ludGVyOgogICAgICAgICByZXR1cm4gJmRv
d25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KHVubmFtZWRUeXBlKS5lbGVtZW50VHlwZSgpOwotICAg
IGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2VUeXBlOgorICAgIGNh
c2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2U6CiAgICAgICAgIHJldHVy
biAmZG93bmNhc3Q8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKS5lbGVtZW50
VHlwZSgpOwotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlUeXBlOgorICAg
IGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXk6CiAgICAgICAgIHJldHVybiAmZG93
bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRUeXBlKS50eXBlKCk7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9CiAKQEAgLTM2
MSwxMyArMzY1LDEzIEBAIHZvaWQgVHlwZU5hbWVyOjplbWl0VW5uYW1lZFR5cGVEZWZpbml0aW8K
ICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgidHlwZWRlZiAiLCBtYW5nbGVk
TmFtZUZvclR5cGUobmFtZWRUeXBlKSwgJyAnLCBiYXNlVHlwZU5hbWVOb2RlLm1hbmdsZWROYW1l
KCksICI7XG4iKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgQVNUOjpVbm5hbWVk
VHlwZTo6S2luZDo6UG9pbnRlclR5cGU6IHsKKyAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6Oktp
bmQ6OlBvaW50ZXI6IHsKICAgICAgICAgYXV0byYgcG9pbnRlclR5cGUgPSBkb3duY2FzdDxQb2lu
dGVyVHlwZU5hbWVOb2RlPihiYXNlVHlwZU5hbWVOb2RlKTsKICAgICAgICAgQVNTRVJUKGJhc2VU
eXBlTmFtZU5vZGUucGFyZW50KCkpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKCJ0eXBlZGVmICIsIHRvU3RyaW5nKHBvaW50ZXJUeXBlLmFkZHJlc3NTcGFjZSgpKSwgJyAn
LCBwb2ludGVyVHlwZS5wYXJlbnQoKS0+bWFuZ2xlZE5hbWUoKSwgIiogIiwgcG9pbnRlclR5cGUu
bWFuZ2xlZE5hbWUoKSwgIjtcbiIpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBB
U1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVyZW5jZVR5cGU6IHsKKyAgICBjYXNlIEFT
VDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5UmVmZXJlbmNlOiB7CiAgICAgICAgIGF1dG8mIGFy
cmF5UmVmZXJlbmNlVHlwZSA9IGRvd25jYXN0PEFycmF5UmVmZXJlbmNlVHlwZU5hbWVOb2RlPihi
YXNlVHlwZU5hbWVOb2RlKTsKICAgICAgICAgQVNTRVJUKGJhc2VUeXBlTmFtZU5vZGUucGFyZW50
KCkpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKApAQCAtMzc4LDEyICsz
ODIsMTQgQEAgdm9pZCBUeXBlTmFtZXI6OmVtaXRVbm5hbWVkVHlwZURlZmluaXRpbwogICAgICAg
ICApOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpL
aW5kOjpBcnJheVR5cGU6IHsKKyAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5
OiB7CiAgICAgICAgIGF1dG8mIGFycmF5VHlwZSA9IGRvd25jYXN0PEFycmF5VHlwZU5hbWVOb2Rl
PihiYXNlVHlwZU5hbWVOb2RlKTsKICAgICAgICAgQVNTRVJUKGJhc2VUeXBlTmFtZU5vZGUucGFy
ZW50KCkpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ0eXBlZGVmIGFy
cmF5PCIsIGFycmF5VHlwZS5wYXJlbnQoKS0+bWFuZ2xlZE5hbWUoKSwgIiwgIiwgYXJyYXlUeXBl
Lm51bUVsZW1lbnRzKCksICI+ICIsIGFycmF5VHlwZS5tYW5nbGVkTmFtZSgpLCAiO1xuIik7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAogICAgIGVtaXR0ZWRVbm5hbWVkVHlwZXMuYWRkKCZi
YXNlVHlwZU5hbWVOb2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI0ODMyOSkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
ODMxNCwxMSArODMxNCwxNiBAQAogCQk1MjEzMUU1QTFDNEYxNTYxMDAzM0Y4MDIgLyogVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MjE1ODYyQzIyOTM3N0I3MDA1OTI1RUYgLyogV0hMU0xBU1QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xBU1QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTIy
QkFCOTYyMkU2QTM2MjAwQzU0Q0U5IC8qIFdITFNMQ29kZUxvY2F0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMQ29kZUxvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUy
MkQwN0EzMjJGQkFCNDMwMEI5MDVCRSAvKiBXSExTTEV4cHJlc3Npb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV0hMU0xFeHByZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTIyREEzRDMyMjlFMUQzOTAwNDJEMTUxIC8qIFdITFNMR2xvYmFsVmFyaWFibGVSZWZlcmVu
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjJFMUExNzIyOTdENkQ0MDBFNUQzNkEgLyogV0hM
U0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNM
UHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUyMkUxQTE5MjI5N0Q2RDQwMEU1RDM2QSAvKiBXSExTTFByZXNlcnZlVmFyaWFibGVMaWZl
dGltZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyMzUxNUUwMjJGQzE0MkMwMDUxRUE1RCAv
KiBXSExTTFVubmFtZWRUeXBlSGFzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFVubmFtZWRUeXBl
SGFzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjY3MjRGMTFDQjJGREY2MDA3
NTk3NEQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNjcyNEYyMUNCMkZERjYwMDc1OTc0RCAv
KiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTI2QTEyRTAyMkZDMDE0MzAwRThGOUY5IC8qIFdITFNMU3RhdGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMU3RhdGVtZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTI2QjNGMDEyMkZCN0JERDAwNzZEMzdEIC8qIFdITFNMUHJ1bmVV
bnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MjZCM0YwMzIyRkI3QkRFMDA3NkQzN0QgLyogV0hM
U0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjkxNEMyQTIyRjkzRTRFMDA1NzgxNTAgLyogV0hM
U0xQYXJzaW5nTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFBhcnNpbmdNb2RlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyOTE0QzJDMjJGOTNFNUQwMDU3ODE1MCAvKiBXSExT
TEFkZHJlc3NFc2NhcGVNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQWRkcmVzc0VzY2FwZU1v
ZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJCMEQ0QkQxQzU3RkQxRTAwNzdD
RTUzIC8qIFBsYXRmb3JtVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
bGF0Zm9ybVZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MDgwLDYgKzE3
MDg1LDcgQEAKIAkJCQlDMjFCRjcyNjIxQ0Q4OUUzMDAyMjc5NzkgLyogV0hMU0xFbnVtZXJhdGlv
bk1lbWJlci5oICovLAogCQkJCUMyMUJGNzAyMjFDRDg5QzQwMDIyNzk3OSAvKiBXSExTTEVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbC5oICovLAogCQkJCUMyMUJGNzBDMjFDRDg5Q0MwMDIyNzk3OSAv
KiBXSExTTEV4cHJlc3Npb24uaCAqLywKKwkJCQk1MjJEMDdBMzIyRkJBQjQzMDBCOTA1QkUgLyog
V0hMU0xFeHByZXNzaW9uLmNwcCAqLywKIAkJCQlDMjFCRjcwMDIxQ0Q4OUMyMDAyMjc5NzkgLyog
V0hMU0xGYWxsdGhyb3VnaC5oICovLAogCQkJCUMyMUJGNzM1MjFDRDg5RjIwMDIyNzk3OSAvKiBX
SExTTEZsb2F0TGl0ZXJhbC5oICovLAogCQkJCTFDQjY5QjM4MjFERjAzRTEwMDZFODQ2QSAvKiBX
SExTTEZsb2F0TGl0ZXJhbFR5cGUuY3BwICovLApAQCAtMTcxMjIsNiArMTcxMjgsNyBAQAogCQkJ
CUMyMTM4QTE3MjFEREVEMEQwMEY1MTZCQSAvKiBXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHAg
Ki8sCiAJCQkJQzIxQkY3MEUyMUNEODlDRTAwMjI3OTc5IC8qIFdITFNMU3RhZ2VJbk91dFNlbWFu
dGljLmggKi8sCiAJCQkJQzIxQkY3MTIyMUNEODlEMTAwMjI3OTc5IC8qIFdITFNMU3RhdGVtZW50
LmggKi8sCisJCQkJNTI2QTEyRTAyMkZDMDE0MzAwRThGOUY5IC8qIFdITFNMU3RhdGVtZW50LmNw
cCAqLywKIAkJCQlDMjFCRjcyNzIxQ0Q4OUU0MDAyMjc5NzkgLyogV0hMU0xTdHJ1Y3R1cmVEZWZp
bml0aW9uLmggKi8sCiAJCQkJQzIxQkY2RkUyMUNEODlDMTAwMjI3OTc5IC8qIFdITFNMU3RydWN0
dXJlRWxlbWVudC5oICovLAogCQkJCUMyMUJGNzE5MjFDRDg5RDcwMDIyNzk3OSAvKiBXSExTTFN3
aXRjaENhc2UuaCAqLywKQEAgLTE3MTM0LDYgKzE3MTQxLDcgQEAKIAkJCQlDMjBGNEY2NDIxREZC
RTVDMDA3MEM0NUEgLyogV0hMU0xUeXBlUmVmZXJlbmNlLmNwcCAqLywKIAkJCQlDMjFCRjcxRjIx
Q0Q4OURDMDAyMjc5NzkgLyogV0hMU0xUeXBlUmVmZXJlbmNlLmggKi8sCiAJCQkJMUMzMzI3NzIy
MUNGMEQyRTAwMERDOUYyIC8qIFdITFNMVW5uYW1lZFR5cGUuaCAqLywKKwkJCQk1MjM1MTVFMDIy
RkMxNDJDMDA1MUVBNUQgLyogV0hMU0xVbm5hbWVkVHlwZUhhc2guaCAqLywKIAkJCQlDMjBGNEY2
NzIxREZGM0E3MDA3MEM0NUEgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmNwcCAqLywK
IAkJCQlDMjFCRjcyQjIxQ0Q4OUU4MDAyMjc5NzkgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRl
cmFsLmggKi8sCiAJCQkJMUNCNjlCM0IyMURGMDQxRTAwNkU4NDZBIC8qIFdITFNMVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbFR5cGUuY3BwICovLApAQCAtMjU1MzEsNiArMjU1MzksOCBAQAogCQkJCUMy
NEE1N0JCMjFGRUFGRUEwMDRDNkREMSAvKiBXSExTTFByZXBhcmUuaCAqLywKIAkJCQk1MjJFMUEx
NzIyOTdENkQ0MDBFNUQzNkEgLyogV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcCAq
LywKIAkJCQk1MjJFMUExOTIyOTdENkQ0MDBFNUQzNkEgLyogV0hMU0xQcmVzZXJ2ZVZhcmlhYmxl
TGlmZXRpbWVzLmggKi8sCisJCQkJNTI2QjNGMDEyMkZCN0JERDAwNzZEMzdEIC8qIFdITFNMUHJ1
bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5jcHAgKi8sCisJCQkJNTI2QjNG
MDMyMkZCN0JERTAwNzZEMzdEIC8qIFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFy
eUZ1bmN0aW9ucy5oICovLAogCQkJCUMyMUJGNzNBMjFDRDhENzAwMDIyNzk3OSAvKiBXSExTTFBy
b2dyYW0uaCAqLywKIAkJCQkxQ0FBODJGNjIyNDJBRTA1MDBFODRCQkIgLyogV0hMU0xQcm9wZXJ0
eVJlc29sdmVyLmNwcCAqLywKIAkJCQkxQ0FBODJGNzIyNDJBRTA1MDBFODRCQkIgLyogV0hMU0xQ
cm9wZXJ0eVJlc29sdmVyLmggKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375856</attachid>
            <date>2019-08-08 16:30:53 -0700</date>
            <delta_ts>2019-08-08 19:55:30 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>118335</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9SZWZDb3VudGVkLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XVEYvd3Rm
L1JlZkNvdW50ZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDEzICsxMzYsMTMgQEAgaW5saW5l
IHZvaWQgYWRvcHRlZChSZWZDb3VudGVkQmFzZSogb2JqZQogfQogI2VuZGlmCiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGNsYXNzIFJlZkNvdW50ZWQgOiBwdWJsaWMgUmVmQ291bnRlZEJhc2Ugewor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRGVsZXRlciA9IHN0ZDo6ZGVmYXVsdF9kZWxl
dGU8VD4+IGNsYXNzIFJlZkNvdW50ZWQgOiBwdWJsaWMgUmVmQ291bnRlZEJhc2UgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFJlZkNvdW50ZWQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICB2b2lkIGRlcmVmKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChkZXJl
ZkJhc2UoKSkKLSAgICAgICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxjb25zdCBUKj4odGhpcyk7
CisgICAgICAgICAgICBEZWxldGVyKCkoY29uc3RfY2FzdDxUKj4oc3RhdGljX2Nhc3Q8Y29uc3Qg
VCo+KHRoaXMpKSk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9V
bmlxdWVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAkocmV2
aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDYgKzQwLDcgQEAgVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4u
IGFyZwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogY2xhc3MgVW5pcXVlUmVmIHsKKyAgICB1c2lu
ZyBEZWxldGVyID0gc3RkOjpkZWZhdWx0X2RlbGV0ZTxUPjsKIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVT4KICAgICBVbmlxdWVSZWYoVW5pcXVlUmVmPFU+JiYgb3RoZXIpCkBAIC02
MCwxOSArNjEsMjAgQEAgcHVibGljOgogICAgIG9wZXJhdG9yIFQmKCkgeyBBU1NFUlQobV9yZWYp
OyByZXR1cm4gKm1fcmVmOyB9CiAgICAgb3BlcmF0b3IgY29uc3QgVCYoKSBjb25zdCB7IEFTU0VS
VChtX3JlZik7IHJldHVybiAqbV9yZWY7IH0KIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxUPiBtb3Zl
VG9VbmlxdWVQdHIoKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVmKTsgfQorICAgIHN0ZDo6dW5pcXVl
X3B0cjxULCBEZWxldGVyPiBtb3ZlVG9VbmlxdWVQdHIoKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVm
KTsgfQogCiBwcml2YXRlOgogICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+IGZy
aWVuZCBVbmlxdWVSZWY8VT4gbWFrZVVuaXF1ZVJlZihBcmdzJiYuLi4pOwogICAgIHRlbXBsYXRl
PGNsYXNzIFU+IGZyaWVuZCBjbGFzcyBVbmlxdWVSZWY7CiAKICAgICBVbmlxdWVSZWYoVCYgb3Ro
ZXIpCi0gICAgICAgIDogbV9yZWYoJm90aGVyKQorICAgICAgICA6IG1fcmVmKCZvdGhlciwgRGVs
ZXRlcigpKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fcmVmKTsKICAgICB9CiAKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8VD4gbV9yZWY7CisgICAgc3RkOjp1bmlxdWVfcHRyPFQsIERlbGV0ZXI+IG1f
cmVmOworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKG1fcmVmKSA9PSBzaXplb2YodWludHB0cl90
KSwgIkRvbid0IHdyaXRlIHN0YXRlZnVsIGRlbGV0ZXJzIik7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzQyLDYgKzM0Miw3IEBAIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlVHkKIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L01ldGFsL1dITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmNwcAogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFR5cGVBcmd1bWVudC5jcHAKK01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEV4cHJlc3Npb24uY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdElu
U2VtYW50aWMuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFu
dGljLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25z
dGFudFNlbWFudGljLmNwcApAQCAtMzUwLDkgKzM1MSwxMiBAQCBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xGbG9hdExpdGVyCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRl
Z2VyTGl0ZXJhbFR5cGUuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdWxsTGl0
ZXJhbFR5cGUuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVn
ZXJMaXRlcmFsVHlwZS5jcHAKK01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVu
dC5jcHAKK01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuY3BwCiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmNwcAogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmNwcAorTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMVW5uYW1lZFR5cGUuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUu
Y3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwCiBNb2R1
bGVzL3dlYmdwdS9XZWJHUFUuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFByZXBhcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHAJKHJldmlzaW9uIDI0ODQwNCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgbmFtZXNwYWNlIFdITFNMIHsKIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBkdW1wQVNUQmVmb3JlRWFjaFBhc3MgPSBmYWxzZTsKIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBkdW1wQVNUQWZ0ZXJQYXJzaW5nID0gZmFsc2U7CiBzdGF0aWMgY29uc3RleHBy
IGJvb2wgZHVtcEFTVEF0RW5kID0gZmFsc2U7Ci1zdGF0aWMgY29uc3RleHByIGJvb2wgYWx3YXlz
RHVtcFBhc3NGYWlsdXJlcyA9IGZhbHNlOworc3RhdGljIGNvbnN0ZXhwciBib29sIGFsd2F5c0R1
bXBQYXNzRmFpbHVyZXMgPSB0cnVlOwogc3RhdGljIGNvbnN0ZXhwciBib29sIGR1bXBQYXNzRmFp
bHVyZSA9IGR1bXBBU1RCZWZvcmVFYWNoUGFzcyB8fCBkdW1wQVNUQWZ0ZXJQYXJzaW5nIHx8IGR1
bXBBU1RBdEVuZCB8fCBhbHdheXNEdW1wUGFzc0ZhaWx1cmVzOwogc3RhdGljIGNvbnN0ZXhwciBi
b29sIGR1bXBQaGFzZVRpbWVzID0gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmNwcAkocmV2aXNpb24gMjQ4
NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAzLDM0ICszMDMsNTIgQEAgdm9pZCBWaXNpdG9yOjp2
aXNpdChBU1Q6OlN0YXRlbWVudExpc3QmIAogCiB2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6U3Rh
dGVtZW50JiBzdGF0ZW1lbnQpCiB7Ci0gICAgaWYgKGlzPEFTVDo6QmxvY2s+KHN0YXRlbWVudCkp
CisgICAgc3dpdGNoIChzdGF0ZW1lbnQua2luZCgpKSB7CisgICAgY2FzZSBBU1Q6OlN0YXRlbWVu
dDo6S2luZDo6QmxvY2s6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6
OkJsb2NrPihzdGF0ZW1lbnQpKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OkJyZWFrPihzdGF0ZW1l
bnQpKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpCcmVh
azoKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6QnJlYWs+KHN0YXRl
bWVudCkpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6Q29udGludWU+KHN0YXRlbWVudCkpCisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OkNvbnRpbnVlOgogICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpDb250aW51ZT4oc3RhdGVtZW50
KSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpEb1doaWxlTG9vcD4oc3RhdGVtZW50KSkKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6RG9XaGlsZUxvb3A6CiAg
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkRvV2hpbGVMb29wPihzdGF0
ZW1lbnQpKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1l
bnQ+KHN0YXRlbWVudCkpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6
OktpbmQ6OkVmZmVjdGZ1bEV4cHJlc3Npb246CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChk
b3duY2FzdDxBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ+KHN0YXRlbWVudCkpOwot
ICAgIGVsc2UgaWYgKGlzPEFTVDo6RmFsbHRocm91Z2g+KHN0YXRlbWVudCkpCisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OkZhbGx0aHJvdWdoOgogICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpGYWxsdGhyb3VnaD4oc3RhdGVtZW50
KSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpGb3JMb29wPihzdGF0ZW1lbnQpKQorICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpGb3JMb29wOgogICAgICAgICBj
aGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpGb3JMb29wPihzdGF0ZW1lbnQpKTsKLSAg
ICBlbHNlIGlmIChpczxBU1Q6OklmU3RhdGVtZW50PihzdGF0ZW1lbnQpKQorICAgICAgICBicmVh
azsKKyAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpJZjoKICAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6SWZTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpOwotICAgIGVs
c2UgaWYgKGlzPEFTVDo6UmV0dXJuPihzdGF0ZW1lbnQpKQorICAgICAgICBicmVhazsKKyAgICBj
YXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpSZXR1cm46CiAgICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChkb3duY2FzdDxBU1Q6OlJldHVybj4oc3RhdGVtZW50KSk7Ci0gICAgZWxzZSBpZiAoaXM8
QVNUOjpTdGF0ZW1lbnRMaXN0PihzdGF0ZW1lbnQpKQorICAgICAgICBicmVhazsKKyAgICBjYXNl
IEFTVDo6U3RhdGVtZW50OjpLaW5kOjpTdGF0ZW1lbnRMaXN0OgogICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpTdGF0ZW1lbnRMaXN0PihzdGF0ZW1lbnQpKTsKLSAgICBl
bHNlIGlmIChpczxBU1Q6OlN3aXRjaENhc2U+KHN0YXRlbWVudCkpCisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OlN3aXRjaENhc2U6CiAgICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlN3aXRjaENhc2U+KHN0YXRlbWVudCkpOwotICAg
IGVsc2UgaWYgKGlzPEFTVDo6U3dpdGNoU3RhdGVtZW50PihzdGF0ZW1lbnQpKQorICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpTd2l0Y2g6CiAgICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlN3aXRjaFN0YXRlbWVudD4oc3RhdGVtZW50
KSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudD4o
c3RhdGVtZW50KSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2lu
ZDo6VmFyaWFibGVEZWNsYXJhdGlvbnM6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3du
Y2FzdDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50PihzdGF0ZW1lbnQpKTsKLSAg
ICBlbHNlCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6Oldo
aWxlTG9vcDoKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6V2hpbGVM
b29wPihzdGF0ZW1lbnQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiB9CiAKIHZvaWQgVmlzaXRvcjo6
dmlzaXQoQVNUOjpCcmVhayYpCkBAIC0zNDksNDYgKzM2Nyw3MCBAQCB2b2lkIFZpc2l0b3I6OnZp
c2l0KEFTVDo6RG9XaGlsZUxvb3AmIGRvCiAKIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpFeHBy
ZXNzaW9uJiBleHByZXNzaW9uKQogewotICAgIGlmIChpczxBU1Q6OkFzc2lnbm1lbnRFeHByZXNz
aW9uPihleHByZXNzaW9uKSkKKyAgICBzd2l0Y2ggKGV4cHJlc3Npb24ua2luZCgpKSB7CisgICAg
Y2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkFzc2lnbm1lbnQ6CiAgICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPihleHByZXNzaW9u
KSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpCb29sZWFuTGl0ZXJhbD4oZXhwcmVzc2lvbikpCisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpCb29sZWFuTGl0
ZXJhbDoKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6Qm9vbGVhbkxp
dGVyYWw+KGV4cHJlc3Npb24pKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OkNhbGxFeHByZXNzaW9u
PihleHByZXNzaW9uKSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246
OktpbmQ6OkNhbGw6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkNh
bGxFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpDb21tYUV4
cHJlc3Npb24+KGV4cHJlc3Npb24pKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhw
cmVzc2lvbjo6S2luZDo6Q29tbWE6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2Fz
dDxBU1Q6OkNvbW1hRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgIGVsc2UgaWYgKGlzPEFT
VDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKSkKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkRlcmVmZXJlbmNlOgogICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24+KGV4cHJl
c3Npb24pKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OkZsb2F0TGl0ZXJhbD4oZXhwcmVzc2lvbikp
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpGbG9hdExp
dGVyYWw6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkZsb2F0TGl0
ZXJhbD4oZXhwcmVzc2lvbikpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6SW50ZWdlckxpdGVyYWw+
KGV4cHJlc3Npb24pKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6
S2luZDo6SW50ZWdlckxpdGVyYWw6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2Fz
dDxBU1Q6OkludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNU
OjpMb2dpY2FsRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpCisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpMb2dpY2FsOgogICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoZG93bmNhc3Q8QVNUOjpMb2dpY2FsRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAg
IGVsc2UgaWYgKGlzPEFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKQorICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6TG9naWNhbE5vdDoK
ICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6TG9naWNhbE5vdEV4cHJl
c3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6Ok1ha2VBcnJheVJlZmVy
ZW5jZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFT
VDo6RXhwcmVzc2lvbjo6S2luZDo6TWFrZUFycmF5UmVmZXJlbmNlOgogICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uPihl
eHByZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24+
KGV4cHJlc3Npb24pKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6
S2luZDo6TWFrZVBvaW50ZXI6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxB
U1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgIGVsc2UgaWYgKGlz
PEFTVDo6TnVsbExpdGVyYWw+KGV4cHJlc3Npb24pKQorICAgICAgICBicmVhazsKKyAgICBjYXNl
IEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6TnVsbExpdGVyYWw6CiAgICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChkb3duY2FzdDxBU1Q6Ok51bGxMaXRlcmFsPihleHByZXNzaW9uKSk7Ci0gICAgZWxz
ZSBpZiAoaXM8QVNUOjpEb3RFeHByZXNzaW9uPihleHByZXNzaW9uKSkKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkRvdDoKICAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6RG90RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAg
IGVsc2UgaWYgKGlzPEFTVDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U+KGV4cHJlc3Npb24pKQor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6R2xvYmFsVmFy
aWFibGVSZWZlcmVuY2U6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6
Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8
QVNUOjpJbmRleEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKQorICAgICAgICBicmVhazsKKyAgICBj
YXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6SW5kZXg6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChkb3duY2FzdDxBU1Q6OkluZGV4RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgIGVs
c2UgaWYgKGlzPEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpCisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpSZWFkTW9kaWZ5
V3JpdGU6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlJlYWRNb2Rp
ZnlXcml0ZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OlRl
cm5hcnlFeHByZXNzaW9uPihleHByZXNzaW9uKSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBB
U1Q6OkV4cHJlc3Npb246OktpbmQ6OlRlcm5hcnk6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChkb3duY2FzdDxBU1Q6OlRlcm5hcnlFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgZWxz
ZSBpZiAoaXM8QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKSkKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OlVuc2lnbmVkSW50ZWdl
ckxpdGVyYWw6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlVuc2ln
bmVkSW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OkVu
dW1lcmF0aW9uTWVtYmVyTGl0ZXJhbD4oZXhwcmVzc2lvbikpCisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6CiAg
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbD4oZXhwcmVzc2lvbikpOwotICAgIGVsc2UKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OlZhcmlhYmxlUmVmZXJlbmNlOgogICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lv
bikpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIH0KIH0KIAogdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkRv
dEV4cHJlc3Npb24mIGRvdEV4cHJlc3Npb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVJlZmVy
ZW5jZVR5cGUuaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw3ICs0Nyw3IEBAIGNsYXNzIEFy
cmF5UmVmZXJlbmNlVHlwZSBmaW5hbCA6IHB1YmxpYyAKICAgICB1c2luZyBCYXNlID0gUmVmZXJl
bmNlVHlwZTsKIAogICAgIEFycmF5UmVmZXJlbmNlVHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24s
IEFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2UsIFJlZjxVbm5hbWVkVHlwZT4gZWxlbWVudFR5cGUp
Ci0gICAgICAgIDogQmFzZShsb2NhdGlvbiwgYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKGVsZW1lbnRU
eXBlKSwgS2luZDo6QXJyYXlSZWZlcmVuY2VUeXBlKQorICAgICAgICA6IEJhc2UobG9jYXRpb24s
IGFkZHJlc3NTcGFjZSwgV1RGTW92ZShlbGVtZW50VHlwZSksIEtpbmQ6OkFycmF5UmVmZXJlbmNl
KQogICAgIHsKICAgICB9CiBwdWJsaWM6CkBAIC01NSw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXJyYXlSZWZlcmVuY2VUeXBlKGxvY2F0aW9uLCBhZGRy
ZXNzU3BhY2UsIFdURk1vdmUoZWxlbWVudFR5cGUpKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+
QXJyYXlSZWZlcmVuY2VUeXBlKCkgPSBkZWZhdWx0OworICAgIH5BcnJheVJlZmVyZW5jZVR5cGUo
KSA9IGRlZmF1bHQ7CiAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7CkBAIC02Nyw3
ICs2OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkZHJlc3NTcGFjZSgpID09IG90aGVy
LmFkZHJlc3NTcGFjZSgpICYmIGVsZW1lbnRUeXBlKCkgPT0gb3RoZXIuZWxlbWVudFR5cGUoKTsK
ICAgICB9CiAKLSAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCBvdmVycmlkZQorICAgIFN0cmlu
ZyB0b1N0cmluZygpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhlbGVt
ZW50VHlwZSgpLnRvU3RyaW5nKCksICJbXSIpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5o
CShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xBcnJheVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBj
bGFzcyBBcnJheVR5cGUgZmluYWwgOiBwdWJsaWMgVW5uYW1lZFR5CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXJyYXlUeXBlKTsKICAgICBB
cnJheVR5cGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBSZWY8VW5uYW1lZFR5cGU+IGVsZW1lbnRU
eXBlLCB1bnNpZ25lZCBudW1FbGVtZW50cykKLSAgICAgICAgOiBVbm5hbWVkVHlwZShsb2NhdGlv
biwgS2luZDo6QXJyYXlUeXBlKQorICAgICAgICA6IFVubmFtZWRUeXBlKGxvY2F0aW9uLCBLaW5k
OjpBcnJheSkKICAgICAgICAgLCBtX2VsZW1lbnRUeXBlKFdURk1vdmUoZWxlbWVudFR5cGUpKQog
ICAgICAgICAsIG1fbnVtRWxlbWVudHMobnVtRWxlbWVudHMpCiAgICAgewpAQCAtNTgsNyArNTgs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFycmF5VHlwZShsb2Nh
dGlvbiwgV1RGTW92ZShlbGVtZW50VHlwZSksIG51bUVsZW1lbnRzKSk7CiAgICAgfQogCi0gICAg
dmlydHVhbCB+QXJyYXlUeXBlKCkgPSBkZWZhdWx0OworICAgIH5BcnJheVR5cGUoKSA9IGRlZmF1
bHQ7CiAKICAgICBjb25zdCBVbm5hbWVkVHlwZSYgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxl
bWVudFR5cGU7IH0KICAgICBVbm5hbWVkVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fZWxlbWVudFR5
cGU7IH0KQEAgLTc0LDkgKzc0LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbnVtRWxlbWVu
dHMoKSA9PSBvdGhlci5udW1FbGVtZW50cygpICYmIHR5cGUoKSA9PSBvdGhlci50eXBlKCk7CiAg
ICAgfQogCi0gICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJpbmcg
dG9TdHJpbmcoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcodHlwZSgp
LnRvU3RyaW5nKCksICdbJywgbnVtRWxlbWVudHMoKSwgJ10nKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VTdHJpbmcodHlwZSgpLnRvU3RyaW5nKCksICdbJywgU3RyaW5nOjpudW1iZXIobnVtRWxlbWVu
dHMoKSksICddJyk7CiAgICAgfQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBc3Np
Z25tZW50RXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNywxMSArMzcsMTEgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNw
YWNlIEFTVCB7CiAKLWNsYXNzIEFzc2lnbm1lbnRFeHByZXNzaW9uIDogcHVibGljIEV4cHJlc3Np
b24geworY2xhc3MgQXNzaWdubWVudEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lv
biB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQXNzaWdubWVu
dEV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4m
JiBsZWZ0LCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiByaWdodCkKLSAgICAgICAgOiBFeHByZXNz
aW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkFzc2ln
bm1lbnQpCiAgICAgICAgICwgbV9sZWZ0KFdURk1vdmUobGVmdCkpCiAgICAgICAgICwgbV9yaWdo
dChXVEZNb3ZlKHJpZ2h0KSkKICAgICB7CkBAIC01MCwxMyArNTAsMTEgQEAgcHVibGljOgogI2Vu
ZGlmCiAgICAgfQogCi0gICAgdmlydHVhbCB+QXNzaWdubWVudEV4cHJlc3Npb24oKSA9IGRlZmF1
bHQ7CisgICAgfkFzc2lnbm1lbnRFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwogCiAgICAgQXNzaWdu
bWVudEV4cHJlc3Npb24oY29uc3QgQXNzaWdubWVudEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAg
ICBBc3NpZ25tZW50RXhwcmVzc2lvbihBc3NpZ25tZW50RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7
CiAKLSAgICBib29sIGlzQXNzaWdubWVudEV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNzaW9uJiBsZWZ0KCkgeyByZXR1cm4gbV9sZWZ0OyB9
CiAgICAgRXhwcmVzc2lvbiYgcmlnaHQoKSB7IHJldHVybiBtX3JpZ2h0OyB9CiAgICAgVW5pcXVl
UmVmPEV4cHJlc3Npb24+IHRha2VSaWdodCgpIHsgcmV0dXJuIFdURk1vdmUobV9yaWdodCk7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJsb2Nr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQmxvY2suaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjQg
KzM4LDIyIEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBC
bG9jayA6IHB1YmxpYyBTdGF0ZW1lbnQgeworY2xhc3MgQmxvY2sgZmluYWwgOiBwdWJsaWMgU3Rh
dGVtZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBCbG9j
ayhDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0YXRlbWVudHMmJiBzdGF0ZW1lbnRzKQotICAgICAg
ICA6IFN0YXRlbWVudChsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtp
bmQ6OkJsb2NrKQogICAgICAgICAsIG1fc3RhdGVtZW50cyhXVEZNb3ZlKHN0YXRlbWVudHMpKQog
ICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5CbG9jaygpID0gZGVmYXVsdDsKKyAgICB+Qmxv
Y2soKSA9IGRlZmF1bHQ7CiAKICAgICBCbG9jayhjb25zdCBCbG9jayYpID0gZGVsZXRlOwogICAg
IEJsb2NrKEJsb2NrJiYpID0gZGVmYXVsdDsKIAogICAgIFN0YXRlbWVudHMmIHN0YXRlbWVudHMo
KSB7IHJldHVybiBtX3N0YXRlbWVudHM7IH0KIAotICAgIGJvb2wgaXNCbG9jaygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogcHJpdmF0ZToKICAgICBTdGF0ZW1lbnRzIG1fc3Rh
dGVtZW50czsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xCb29sZWFuTGl0ZXJhbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJvb2xlYW5MaXRlcmFsLmgJKHJldmlzaW9uIDI0
ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJv
b2xlYW5MaXRlcmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE2ICszNiwxNiBAQCBuYW1lc3Bh
Y2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgQm9vbGVhbkxpdGVyYWwgOiBw
dWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBCb29sZWFuTGl0ZXJhbCBmaW5hbCA6IHB1YmxpYyBF
eHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBC
b29sZWFuTGl0ZXJhbChDb2RlTG9jYXRpb24gbG9jYXRpb24sIGJvb2wgdmFsdWUpCi0gICAgICAg
IDogRXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBL
aW5kOjpCb29sZWFuTGl0ZXJhbCkKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAg
ICB9CiAKLSAgICB2aXJ0dWFsIH5Cb29sZWFuTGl0ZXJhbCgpID0gZGVmYXVsdDsKKyAgICB+Qm9v
bGVhbkxpdGVyYWwoKSA9IGRlZmF1bHQ7CiAKICAgICBCb29sZWFuTGl0ZXJhbChjb25zdCBCb29s
ZWFuTGl0ZXJhbCYpID0gZGVsZXRlOwogICAgIEJvb2xlYW5MaXRlcmFsKEJvb2xlYW5MaXRlcmFs
JiYpID0gZGVmYXVsdDsKQEAgLTU1LDggKzU1LDYgQEAgcHVibGljOgogCiAgICAgYm9vbCB2YWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAotICAgIGJvb2wgaXNCb29sZWFuTGl0ZXJh
bCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIEJvb2xlYW5MaXRlcmFs
IGNsb25lKCkgY29uc3QKICAgICB7CiAgICAgICAgIEJvb2xlYW5MaXRlcmFsIHJlc3VsdChjb2Rl
TG9jYXRpb24oKSwgbV92YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xCcmVhay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmgJKHJldmlzaW9uIDI0ODQwNCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDIxICszNywxOSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1l
c3BhY2UgQVNUIHsKIAotY2xhc3MgQnJlYWsgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNzIEJy
ZWFrIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgQnJlYWsoQ29kZUxvY2F0aW9uIGxvY2F0aW9uKQotICAgICAgICA6
IFN0YXRlbWVudChsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6
OkJyZWFrKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5CcmVhaygpID0gZGVmYXVsdDsK
KyAgICB+QnJlYWsoKSA9IGRlZmF1bHQ7CiAKICAgICBCcmVhayhjb25zdCBCcmVhayYpID0gZGVs
ZXRlOwogICAgIEJyZWFrKEJyZWFrJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNCcmVhaygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogcHJpdmF0ZToKIH07CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENhbGxFeHByZXNz
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQ2FsbEV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ2FsbEV4cHJlc3Npb24uaAkod29y
a2luZyBjb3B5KQpAQCAtNDAsMjcgKzQwLDI1IEBAIG5hbWVzcGFjZSBBU1QgewogCiBjbGFzcyBO
YW1lZFR5cGU7CiAKLWNsYXNzIENhbGxFeHByZXNzaW9uIDogcHVibGljIEV4cHJlc3Npb24gewor
Y2xhc3MgQ2FsbEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ2FsbEV4cHJlc3Npb24oQ29kZUxv
Y2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1lLCBWZWN0b3I8VW5pcXVlUmVmPEV4cHJlc3Np
b24+PiYmIGFyZ3VtZW50cykKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAg
ICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkNhbGwpCiAgICAgICAgICwgbV9uYW1lKFdU
Rk1vdmUobmFtZSkpCiAgICAgICAgICwgbV9hcmd1bWVudHMoV1RGTW92ZShhcmd1bWVudHMpKQog
ICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5DYWxsRXhwcmVzc2lvbigpID0gZGVmYXVsdDsK
LQogICAgIENhbGxFeHByZXNzaW9uKGNvbnN0IENhbGxFeHByZXNzaW9uJikgPSBkZWxldGU7CiAg
ICAgQ2FsbEV4cHJlc3Npb24oQ2FsbEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwogCi0gICAgYm9v
bCBpc0NhbGxFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAg
ICAgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4mIGFyZ3VtZW50cygpIHsgcmV0dXJuIG1f
YXJndW1lbnRzOyB9CiAKICAgICBTdHJpbmcmIG5hbWUoKSB7IHJldHVybiBtX25hbWU7IH0KIAor
ICAgIH5DYWxsRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKwogICAgIHZvaWQgc2V0Q2FzdERhdGEo
TmFtZWRUeXBlJiBuYW1lZFR5cGUpCiAgICAgewogICAgICAgICBtX2Nhc3RSZXR1cm5UeXBlID0g
Jm5hbWVkVHlwZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTENvbW1hRXhwcmVzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVzc2lvbi5oCShyZXZpc2lvbiAy
NDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xD
b21tYUV4cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjIgKzM4LDIwIEBAIG5hbWVz
cGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBDb21tYUV4cHJlc3Npb24g
OiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBDb21tYUV4cHJlc3Npb24gZmluYWwgOiBwdWJs
aWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgQ29tbWFFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVmVjdG9yPFVuaXF1ZVJl
ZjxFeHByZXNzaW9uPj4mJiBsaXN0KQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24pCisg
ICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6Q29tbWEpCiAgICAgICAgICwgbV9s
aXN0KFdURk1vdmUobGlzdCkpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfkNvbW1hRXhw
cmVzc2lvbigpID0gZGVmYXVsdDsKKyAgICB+Q29tbWFFeHByZXNzaW9uKCkgPSBkZWZhdWx0Owog
CiAgICAgQ29tbWFFeHByZXNzaW9uKGNvbnN0IENvbW1hRXhwcmVzc2lvbiYpID0gZGVsZXRlOwog
ICAgIENvbW1hRXhwcmVzc2lvbihDb21tYUV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwogCi0gICAg
Ym9vbCBpc0NvbW1hRXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
LQogICAgIFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiBsaXN0KCkgeyByZXR1cm4gbV9s
aXN0OyB9CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xDb250aW51ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmgJKHJldmlzaW9uIDI0ODQwNCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRpbnVl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDIxICszNywxOSBAQCBuYW1lc3BhY2UgV0hMU0wgewog
CiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgQ29udGludWUgOiBwdWJsaWMgU3RhdGVtZW50IHsK
K2NsYXNzIENvbnRpbnVlIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ29udGludWUoQ29kZUxvY2F0aW9uIGxvY2F0
aW9uKQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnQo
bG9jYXRpb24sIEtpbmQ6OkNvbnRpbnVlKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5D
b250aW51ZSgpID0gZGVmYXVsdDsKKyAgICB+Q29udGludWUoKSA9IGRlZmF1bHQ7CiAKICAgICBD
b250aW51ZShjb25zdCBDb250aW51ZSYpID0gZGVsZXRlOwogICAgIENvbnRpbnVlKENvbnRpbnVl
JiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNDb250aW51ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KLQogcHJpdmF0ZToKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERl
cmVmZXJlbmNlRXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMzcsMjIgKzM3LDIwIEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5h
bWVzcGFjZSBBU1QgewogCi1jbGFzcyBEZXJlZmVyZW5jZUV4cHJlc3Npb24gOiBwdWJsaWMgRXhw
cmVzc2lvbiB7CitjbGFzcyBEZXJlZmVyZW5jZUV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhw
cmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRGVy
ZWZlcmVuY2VFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJl
c3Npb24+JiYgcG9pbnRlcikKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAg
ICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkRlcmVmZXJlbmNlKQogICAgICAgICAsIG1f
cG9pbnRlcihXVEZNb3ZlKHBvaW50ZXIpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5E
ZXJlZmVyZW5jZUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfkRlcmVmZXJlbmNlRXhwcmVz
c2lvbigpID0gZGVmYXVsdDsKIAogICAgIERlcmVmZXJlbmNlRXhwcmVzc2lvbihjb25zdCBEZXJl
ZmVyZW5jZUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBEZXJlZmVyZW5jZUV4cHJlc3Npb24o
RGVyZWZlcmVuY2VFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNEZXJlZmVy
ZW5jZUV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBF
eHByZXNzaW9uJiBwb2ludGVyKCkgeyByZXR1cm4gbV9wb2ludGVyOyB9CiAKIHByaXZhdGU6Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb1doaWxl
TG9vcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTERvV2hpbGVMb29wLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29wLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDIzICszOCwyMSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2Ug
QVNUIHsKIAotY2xhc3MgRG9XaGlsZUxvb3AgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNzIERv
V2hpbGVMb29wIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRG9XaGlsZUxvb3AoQ29kZUxvY2F0aW9uIGxvY2F0aW9u
LCBVbmlxdWVSZWY8U3RhdGVtZW50PiYmIGJvZHksIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGNv
bmRpdGlvbmFsKQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0
ZW1lbnQobG9jYXRpb24sIEtpbmQ6OkRvV2hpbGVMb29wKQogICAgICAgICAsIG1fYm9keShXVEZN
b3ZlKGJvZHkpKQogICAgICAgICAsIG1fY29uZGl0aW9uYWwoV1RGTW92ZShjb25kaXRpb25hbCkp
CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfkRvV2hpbGVMb29wKCkgPSBkZWZhdWx0Owor
ICAgIH5Eb1doaWxlTG9vcCgpID0gZGVmYXVsdDsKIAogICAgIERvV2hpbGVMb29wKGNvbnN0IERv
V2hpbGVMb29wJikgPSBkZWxldGU7CiAgICAgRG9XaGlsZUxvb3AoRG9XaGlsZUxvb3AmJikgPSBk
ZWZhdWx0OwogCi0gICAgYm9vbCBpc0RvV2hpbGVMb29wKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQotCiAgICAgU3RhdGVtZW50JiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9CiAg
ICAgRXhwcmVzc2lvbiYgY29uZGl0aW9uYWwoKSB7IHJldHVybiBtX2NvbmRpdGlvbmFsOyB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvdEV4
cHJlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xEb3RFeHByZXNzaW9uLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvdEV4cHJlc3Npb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMzgsMzMgKzM4LDMyIEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5h
bWVzcGFjZSBBU1QgewogCi1jbGFzcyBEb3RFeHByZXNzaW9uIDogcHVibGljIFByb3BlcnR5QWNj
ZXNzRXhwcmVzc2lvbiB7CitjbGFzcyBEb3RFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIFByb3Bl
cnR5QWNjZXNzRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAg
dXNpbmcgQmFzZSA9IFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbjsKIHB1YmxpYzoKICAgICBEb3RF
eHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYg
YmFzZSwgU3RyaW5nJiYgZmllbGROYW1lKQotICAgICAgICA6IFByb3BlcnR5QWNjZXNzRXhwcmVz
c2lvbihsb2NhdGlvbiwgV1RGTW92ZShiYXNlKSkKKyAgICAgICAgOiBQcm9wZXJ0eUFjY2Vzc0V4
cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkRvdCwgV1RGTW92ZShiYXNlKSkKICAgICAgICAgLCBt
X2ZpZWxkTmFtZShXVEZNb3ZlKGZpZWxkTmFtZSkpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1
YWwgfkRvdEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfkRvdEV4cHJlc3Npb24oKSA9IGRl
ZmF1bHQ7CiAKICAgICBEb3RFeHByZXNzaW9uKGNvbnN0IERvdEV4cHJlc3Npb24mKSA9IGRlbGV0
ZTsKICAgICBEb3RFeHByZXNzaW9uKERvdEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwogCi0gICAg
Ym9vbCBpc0RvdEV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0K
LSAgICBTdHJpbmcgZ2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJp
bmcgZ2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtYWtl
U3RyaW5nKCJvcGVyYXRvci4iLCBtX2ZpZWxkTmFtZSk7CiAgICAgfQogCi0gICAgU3RyaW5nIHNl
dHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgU3RyaW5nIHNldHRlckZ1bmN0
aW9uTmFtZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygib3BlcmF0
b3IuIiwgbV9maWVsZE5hbWUsICI9Iik7CiAgICAgfQogCi0gICAgU3RyaW5nIGFuZGVyRnVuY3Rp
b25OYW1lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJpbmcgYW5kZXJGdW5jdGlvbk5hbWUoKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIm9wZXJhdG9yJi4iLCBtX2Zp
ZWxkTmFtZSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVmZmVjdGZ1bEV4
cHJlc3Npb25TdGF0ZW1lbnQuaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyMiArMzgsMjAgQEAgbmFtZXNwYWNlIFdITFNMIHsK
IAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQg
OiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNzIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQg
ZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KFVuaXF1ZVJlZjxFeHBy
ZXNzaW9uPiYmIGVmZmVjdGZ1bEV4cHJlc3Npb24pCi0gICAgICAgIDogU3RhdGVtZW50KGVmZmVj
dGZ1bEV4cHJlc3Npb24tPmNvZGVMb2NhdGlvbigpKQorICAgICAgICA6IFN0YXRlbWVudChlZmZl
Y3RmdWxFeHByZXNzaW9uLT5jb2RlTG9jYXRpb24oKSwgS2luZDo6RWZmZWN0ZnVsRXhwcmVzc2lv
bikKICAgICAgICAgLCBtX2VmZmVjdGZ1bEV4cHJlc3Npb24oV1RGTW92ZShlZmZlY3RmdWxFeHBy
ZXNzaW9uKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+RWZmZWN0ZnVsRXhwcmVzc2lv
blN0YXRlbWVudCgpID0gZGVmYXVsdDsKKyAgICB+RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVu
dCgpID0gZGVmYXVsdDsKIAogICAgIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoY29uc3Qg
RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYpID0gZGVsZXRlOwogICAgIEVmZmVjdGZ1bEV4
cHJlc3Npb25TdGF0ZW1lbnQoRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYmKSA9IGRlZmF1
bHQ7CiAKLSAgICBib29sIGlzRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIEV4cHJlc3Npb24mIGVmZmVjdGZ1bEV4cHJl
c3Npb24oKSB7IHJldHVybiBtX2VmZmVjdGZ1bEV4cHJlc3Npb247IH0KIAogcHJpdmF0ZToKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0
aW9uRGVmaW5pdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCShyZXZpc2lvbiAyNDg0
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVt
ZXJhdGlvbkRlZmluaXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMjIgKzQ1LDIwIEBAIG5h
bWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBFbnVtZXJhdGlvbkRl
ZmluaXRpb24gOiBwdWJsaWMgTmFtZWRUeXBlIHsKK2NsYXNzIEVudW1lcmF0aW9uRGVmaW5pdGlv
biBmaW5hbCA6IHB1YmxpYyBOYW1lZFR5cGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbihDb2RlTG9jYXRpb24gbG9jYXRp
b24sIFN0cmluZyYmIG5hbWUsIFJlZjxVbm5hbWVkVHlwZT4gdHlwZSkKLSAgICAgICAgOiBOYW1l
ZFR5cGUobG9jYXRpb24sIFdURk1vdmUobmFtZSkpCisgICAgICAgIDogTmFtZWRUeXBlKEtpbmQ6
OkVudW1lcmF0aW9uRGVmaW5pdGlvbiwgbG9jYXRpb24sIFdURk1vdmUobmFtZSkpCiAgICAgICAg
ICwgbV90eXBlKFdURk1vdmUodHlwZSkpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfkVu
dW1lcmF0aW9uRGVmaW5pdGlvbigpID0gZGVmYXVsdDsKKyAgICB+RW51bWVyYXRpb25EZWZpbml0
aW9uKCkgPSBkZWZhdWx0OwogCiAgICAgRW51bWVyYXRpb25EZWZpbml0aW9uKGNvbnN0IEVudW1l
cmF0aW9uRGVmaW5pdGlvbiYpID0gZGVsZXRlOwogICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbihF
bnVtZXJhdGlvbkRlZmluaXRpb24mJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc0VudW1lcmF0
aW9uRGVmaW5pdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIFVu
bmFtZWRUeXBlJiB0eXBlKCkgeyByZXR1cm4gbV90eXBlOyB9CiAKICAgICBib29sIGFkZChFbnVt
ZXJhdGlvbk1lbWJlciYmIG1lbWJlcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbC5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaAko
d29ya2luZyBjb3B5KQpAQCAtNDAsMTcgKzQwLDE3IEBAIG5hbWVzcGFjZSBBU1QgewogY2xhc3Mg
RW51bWVyYXRpb25EZWZpbml0aW9uOwogY2xhc3MgRW51bWVyYXRpb25NZW1iZXI7CiAKLWNsYXNz
IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK2NsYXNzIEVu
dW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWwoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBsZWZ0LCBTdHJpbmcmJiByaWdo
dCkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Npb24o
bG9jYXRpb24sIEtpbmQ6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkKICAgICAgICAgLCBtX2xl
ZnQoV1RGTW92ZShsZWZ0KSkKICAgICAgICAgLCBtX3JpZ2h0KFdURk1vdmUocmlnaHQpKQogICAg
IHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5FbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoKSA9IGRl
ZmF1bHQ7CisgICAgfkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCgpID0gZGVmYXVsdDsKIAogICAg
IGV4cGxpY2l0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbChjb25zdCBFbnVtZXJhdGlvbk1lbWJl
ckxpdGVyYWwmKSA9IGRlbGV0ZTsKICAgICBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoRW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsJiYpID0gZGVmYXVsdDsKQEAgLTU4LDggKzU4LDYgQEAgcHVibGlj
OgogICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgb3BlcmF0b3I9KGNvbnN0IEVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbCYpID0gZGVsZXRlOwogICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJh
bCYgb3BlcmF0b3I9KEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CiAKLSAg
ICBib29sIGlzRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQotCiAgICAgc3RhdGljIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCB3cmFwKENv
ZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbGVmdCwgU3RyaW5nJiYgcmlnaHQsIEVudW1l
cmF0aW9uRGVmaW5pdGlvbiYgZW51bWVyYXRpb25EZWZpbml0aW9uLCBFbnVtZXJhdGlvbk1lbWJl
ciYgZW51bWVyYXRpb25NZW1iZXIpCiAgICAgewogICAgICAgICBFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWwgcmVzdWx0KGxvY2F0aW9uLCBXVEZNb3ZlKGxlZnQpLCBXVEZNb3ZlKHJpZ2h0KSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNz
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xFeHByZXNzaW9uLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJXSExTTEFTVC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBX
SExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCit2b2lkIEV4cHJlc3Npb246OmRlc3Ryb3koRXhw
cmVzc2lvbiYgZXhwcmVzc2lvbikKK3sKKyAgICBzd2l0Y2ggKGV4cHJlc3Npb24ua2luZCgpKSB7
CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkFzc2lnbm1lbnQ6CisgICAgICAgIGRl
bGV0ZSAmZG93bmNhc3Q8QVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpCb29sZWFuTGl0
ZXJhbDoKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OkJvb2xlYW5MaXRlcmFsPihleHBy
ZXNzaW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6
OkNhbGw6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpDYWxsRXhwcmVzc2lvbj4oZXhw
cmVzc2lvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5k
OjpDb21tYToKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OkNvbW1hRXhwcmVzc2lvbj4o
ZXhwcmVzc2lvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpL
aW5kOjpEZXJlZmVyZW5jZToKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OkRlcmVmZXJl
bmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNU
OjpFeHByZXNzaW9uOjpLaW5kOjpGbG9hdExpdGVyYWw6CisgICAgICAgIGRlbGV0ZSAmZG93bmNh
c3Q8QVNUOjpGbG9hdExpdGVyYWw+KGV4cHJlc3Npb24pOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6SW50ZWdlckxpdGVyYWw6CisgICAgICAgIGRlbGV0
ZSAmZG93bmNhc3Q8QVNUOjpJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpMb2dpY2FsOgorICAgICAgICBk
ZWxldGUgJmRvd25jYXN0PEFTVDo6TG9naWNhbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6TG9naWNhbE5vdDoK
KyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uPihleHBy
ZXNzaW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6
Ok1ha2VBcnJheVJlZmVyZW5jZToKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6Ok1ha2VB
cnJheVJlZmVyZW5jZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6TWFrZVBvaW50ZXI6CisgICAgICAgIGRlbGV0
ZSAmZG93bmNhc3Q8QVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24+KGV4cHJlc3Npb24pOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6TnVsbExpdGVyYWw6
CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpOdWxsTGl0ZXJhbD4oZXhwcmVzc2lvbik7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpEb3Q6Cisg
ICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpEb3RFeHByZXNzaW9uPihleHByZXNzaW9uKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6Okdsb2JhbFZh
cmlhYmxlUmVmZXJlbmNlOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PEFTVDo6R2xvYmFsVmFy
aWFibGVSZWZlcmVuY2U+KGV4cHJlc3Npb24pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFT
VDo6RXhwcmVzc2lvbjo6S2luZDo6SW5kZXg6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNU
OjpJbmRleEV4cHJlc3Npb24+KGV4cHJlc3Npb24pOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6UmVhZE1vZGlmeVdyaXRlOgorICAgICAgICBkZWxldGUg
JmRvd25jYXN0PEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpUZXJuYXJ5Ogor
ICAgICAgICBkZWxldGUgJmRvd25jYXN0PEFTVDo6VGVybmFyeUV4cHJlc3Npb24+KGV4cHJlc3Np
b24pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6VW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbDoKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OlVuc2ln
bmVkSW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsOgorICAgICAg
ICBkZWxldGUgJmRvd25jYXN0PEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPihleHByZXNz
aW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OlZh
cmlhYmxlUmVmZXJlbmNlOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PEFTVDo6VmFyaWFibGVS
ZWZlcmVuY2U+KGV4cHJlc3Npb24pOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK1N0cmlu
ZyBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb246OmdldHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0Cit7
CisgICAgaWYgKGlzPERvdEV4cHJlc3Npb24+KCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIGRvd25j
YXN0PERvdEV4cHJlc3Npb24+KCp0aGlzKS5nZXR0ZXJGdW5jdGlvbk5hbWUoKTsKKyAgICBpZiAo
aXM8SW5kZXhFeHByZXNzaW9uPigqdGhpcykpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxJbmRl
eEV4cHJlc3Npb24+KCp0aGlzKS5nZXR0ZXJGdW5jdGlvbk5hbWUoKTsKKyAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitTdHJpbmcgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9u
OjpzZXR0ZXJGdW5jdGlvbk5hbWUoKSBjb25zdAoreworICAgIGlmIChpczxEb3RFeHByZXNzaW9u
PigqdGhpcykpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxEb3RFeHByZXNzaW9uPigqdGhpcyku
c2V0dGVyRnVuY3Rpb25OYW1lKCk7CisgICAgaWYgKGlzPEluZGV4RXhwcmVzc2lvbj4oKnRoaXMp
KQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8SW5kZXhFeHByZXNzaW9uPigqdGhpcykuc2V0dGVy
RnVuY3Rpb25OYW1lKCk7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwor
U3RyaW5nIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbjo6YW5kZXJGdW5jdGlvbk5hbWUoKSBjb25z
dAoreworICAgIGlmIChpczxEb3RFeHByZXNzaW9uPigqdGhpcykpCisgICAgICAgIHJldHVybiBk
b3duY2FzdDxEb3RFeHByZXNzaW9uPigqdGhpcykuYW5kZXJGdW5jdGlvbk5hbWUoKTsKKyAgICBp
ZiAoaXM8SW5kZXhFeHByZXNzaW9uPigqdGhpcykpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxJ
bmRleEV4cHJlc3Npb24+KCp0aGlzKS5hbmRlckZ1bmN0aW9uTmFtZSgpOworICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9IC8vIG5h
bWVzcGFjZSBXSExTTAorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MywxMiArNDMsMzggQEAgbmFtZXNwYWNlIEFTVCB7CiBjbGFzcyBFeHByZXNzaW9uIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBFeHByZXNzaW9uKENvZGVM
b2NhdGlvbiBjb2RlTG9jYXRpb24pCi0gICAgICAgIDogbV9jb2RlTG9jYXRpb24oY29kZUxvY2F0
aW9uKQorCisgICAgZW51bSBjbGFzcyBLaW5kIDogdWludDhfdCB7CisgICAgICAgIEFzc2lnbm1l
bnQsCisgICAgICAgIEJvb2xlYW5MaXRlcmFsLAorICAgICAgICBDYWxsLAorICAgICAgICBDb21t
YSwKKyAgICAgICAgRGVyZWZlcmVuY2UsCisgICAgICAgIERvdCwKKyAgICAgICAgR2xvYmFsVmFy
aWFibGVSZWZlcmVuY2UsCisgICAgICAgIEZsb2F0TGl0ZXJhbCwKKyAgICAgICAgSW5kZXgsCisg
ICAgICAgIEludGVnZXJMaXRlcmFsLAorICAgICAgICBMb2dpY2FsLAorICAgICAgICBMb2dpY2Fs
Tm90LAorICAgICAgICBNYWtlQXJyYXlSZWZlcmVuY2UsCisgICAgICAgIE1ha2VQb2ludGVyLAor
ICAgICAgICBOdWxsTGl0ZXJhbCwKKyAgICAgICAgUmVhZE1vZGlmeVdyaXRlLAorICAgICAgICBU
ZXJuYXJ5LAorICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsLAorICAgICAgICBWYXJpYWJs
ZVJlZmVyZW5jZSwKKyAgICAgICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLAorICAgIH07CisK
KyAgICBFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24sIEtpbmQga2luZCkKKyAg
ICAgICAgOiBtX2tpbmQoa2luZCkKKyAgICAgICAgLCBtX2NvZGVMb2NhdGlvbihjb2RlTG9jYXRp
b24uc3RhcnRPZmZzZXQoKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+RXhwcmVzc2lv
bigpID0gZGVmYXVsdDsKKyAgICB+RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKyAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEV4cHJlc3Npb24mKTsKIAogICAgIEV4cHJlc3Npb24oY29uc3QgRXhwcmVz
c2lvbiYpID0gZGVsZXRlOwogICAgIEV4cHJlc3Npb24oRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7
CkBAIC05Miw0MyArMTE4LDU4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG90aGVyLnNldFR5cGVB
bm5vdGF0aW9uKFR5cGVBbm5vdGF0aW9uKCp0eXBlQW5ub3RhdGlvbikpOwogICAgIH0KIAotICAg
IHZpcnR1YWwgYm9vbCBpc0Fzc2lnbm1lbnRFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNCb29sZWFuTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQ2FsbEV4cHJlc3Npb24oKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0NvbW1hRXhwcmVzc2lvbigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRGVyZWZlcmVuY2VFeHByZXNz
aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNEb3RFeHBy
ZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNHbG9i
YWxWYXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzRmxvYXRMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNJbmRleEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc0ludGVnZXJMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNMb2dpY2FsRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTG9naWNhbE5vdEV4cHJlc3Npb24oKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01ha2VBcnJheVJlZmVyZW5jZUV4
cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01h
a2VQb2ludGVyRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzTnVsbExpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVGVybmFyeUV4cHJlc3Npb24o
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Vuc2lnbmVkSW50
ZWdlckxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBp
c1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIEtpbmQga2luZCgpIGNvbnN0ICB7IHJldHVybiBtX2tpbmQ7IH0KKyAgICBib29sIGlz
QXNzaWdubWVudEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6QXNz
aWdubWVudDsgfQorICAgIGJvb2wgaXNCb29sZWFuTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGtp
bmQoKSA9PSBLaW5kOjpCb29sZWFuTGl0ZXJhbDsgfQorICAgIGJvb2wgaXNDYWxsRXhwcmVzc2lv
bigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpDYWxsOyB9CisgICAgYm9vbCBpc0Nv
bW1hRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpDb21tYTsgfQor
ICAgIGJvb2wgaXNEZXJlZmVyZW5jZUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkg
PT0gS2luZDo6RGVyZWZlcmVuY2U7IH0KKyAgICBib29sIGlzRG90RXhwcmVzc2lvbigpIGNvbnN0
IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpEb3Q7IH0KKyAgICBib29sIGlzR2xvYmFsVmFyaWFi
bGVSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6R2xvYmFsVmFyaWFi
bGVSZWZlcmVuY2U7IH0KKyAgICBib29sIGlzRmxvYXRMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4g
a2luZCgpID09IEtpbmQ6OkZsb2F0TGl0ZXJhbDsgfQorICAgIGJvb2wgaXNJbmRleEV4cHJlc3Np
b24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6SW5kZXg7IH0KKyAgICBib29sIGlz
SW50ZWdlckxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6SW50ZWdlckxp
dGVyYWw7IH0KKyAgICBib29sIGlzTG9naWNhbEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBr
aW5kKCkgPT0gS2luZDo6TG9naWNhbDsgfQorICAgIGJvb2wgaXNMb2dpY2FsTm90RXhwcmVzc2lv
bigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpMb2dpY2FsTm90OyB9CisgICAgYm9v
bCBpc01ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkg
PT0gS2luZDo6TWFrZUFycmF5UmVmZXJlbmNlOyB9CisgICAgYm9vbCBpc01ha2VQb2ludGVyRXhw
cmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpNYWtlUG9pbnRlcjsgfQor
ICAgIGJvb2wgaXNOdWxsTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpO
dWxsTGl0ZXJhbDsgfQorICAgIGJvb2wgaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oKSBjb25z
dCB7IHJldHVybiBpc0RvdEV4cHJlc3Npb24oKSB8fCBpc0luZGV4RXhwcmVzc2lvbigpOyB9Cisg
ICAgYm9vbCBpc1JlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5k
KCkgPT0gS2luZDo6UmVhZE1vZGlmeVdyaXRlOyB9CisgICAgYm9vbCBpc1Rlcm5hcnlFeHByZXNz
aW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlRlcm5hcnk7IH0KKyAgICBib29s
IGlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5k
OjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOyB9CisgICAgYm9vbCBpc1ZhcmlhYmxlUmVmZXJlbmNl
KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlZhcmlhYmxlUmVmZXJlbmNlOyB9Cisg
ICAgYm9vbCBpc0VudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQo
KSA9PSBLaW5kOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw7IH0KIAotICAgIENvZGVMb2NhdGlv
biBjb2RlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvZGVMb2NhdGlvbjsgfQotICAgIHZv
aWQgdXBkYXRlQ29kZUxvY2F0aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbikgeyBtX2NvZGVMb2Nh
dGlvbiA9IGxvY2F0aW9uOyB9CisgICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIENvZGVMb2NhdGlvbihtX2NvZGVMb2NhdGlvbiwgbV9jb2RlTG9jYXRpb24pOyB9
CisgICAgdm9pZCB1cGRhdGVDb2RlTG9jYXRpb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uKSB7IG1f
Y29kZUxvY2F0aW9uID0gbG9jYXRpb24uc3RhcnRPZmZzZXQoKTsgfQogCiBwcml2YXRlOgotICAg
IENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKKyAgICBLaW5kIG1fa2luZDsKKyAgICB1bnNp
Z25lZCBtX2NvZGVMb2NhdGlvbjsKICAgICBSZWZQdHI8VW5uYW1lZFR5cGU+IG1fdHlwZTsKICAg
ICBPcHRpb25hbDxUeXBlQW5ub3RhdGlvbj4gbV90eXBlQW5ub3RhdGlvbjsKIH07CiAKKwogfSAv
LyBuYW1lc3BhY2UgQVNUCiAKIH0KIAogfQogCituYW1lc3BhY2Ugc3RkIHsKKwordGVtcGxhdGUg
PD4KK3N0cnVjdCBzdGQ6OmRlZmF1bHRfZGVsZXRlPFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJl
c3Npb24+IHsKKyAgICB2b2lkIG9wZXJhdG9yKCkoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVz
c2lvbiogZXhwcmVzc2lvbikKKyAgICB7CisgICAgICAgIFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4
cHJlc3Npb246OmRlc3Ryb3koKmV4cHJlc3Npb24pOworICAgIH0KK307CisKK30KKwogI2RlZmlu
ZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oVG9WYWx1ZVR5cGVOYW1l
LCBwcmVkaWNhdGUpIFwKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V0hM
U0w6OkFTVDo6VG9WYWx1ZVR5cGVOYW1lKSBcCiAgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0
IFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24pIHsgcmV0dXJuIGV4
cHJlc3Npb24ucHJlZGljYXRlOyB9IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEZhbGx0aHJvdWdoLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmFsbHRocm91Z2guaAkocmV2aXNp
b24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMRmFsbHRocm91Z2guaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMjEgKzM3LDE5IEBAIG5hbWVz
cGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBGYWxsdGhyb3VnaCA6IHB1
YmxpYyBTdGF0ZW1lbnQgeworY2xhc3MgRmFsbHRocm91Z2ggZmluYWwgOiBwdWJsaWMgU3RhdGVt
ZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBGYWxsdGhy
b3VnaChDb2RlTG9jYXRpb24gbG9jYXRpb24pCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9u
KQorICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6RmFsbHRocm91Z2gpCiAgICAg
ewogICAgIH0KIAotICAgIHZpcnR1YWwgfkZhbGx0aHJvdWdoKCkgPSBkZWZhdWx0OworICAgIH5G
YWxsdGhyb3VnaCgpID0gZGVmYXVsdDsKIAogICAgIEZhbGx0aHJvdWdoKGNvbnN0IEZhbGx0aHJv
dWdoJikgPSBkZWxldGU7CiAgICAgRmFsbHRocm91Z2goRmFsbHRocm91Z2gmJikgPSBkZWZhdWx0
OwogCi0gICAgYm9vbCBpc0ZhbGx0aHJvdWdoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQotCiBwcml2YXRlOgogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsLmgJKHJldmlz
aW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEZsb2F0TGl0ZXJhbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNyArMzcsMTcgQEAgbmFt
ZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEZsb2F0TGl0ZXJhbCA6
IHB1YmxpYyBFeHByZXNzaW9uIHsKK2NsYXNzIEZsb2F0TGl0ZXJhbCBmaW5hbCA6IHB1YmxpYyBF
eHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBG
bG9hdExpdGVyYWwoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBmbG9hdCB2YWx1ZSkKLSAgICAgICAg
OiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtp
bmQ6OkZsb2F0TGl0ZXJhbCkKICAgICAgICAgLCBtX3R5cGUobG9jYXRpb24sIHZhbHVlKQogICAg
ICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfkZsb2F0
TGl0ZXJhbCgpID0gZGVmYXVsdDsKKyAgICB+RmxvYXRMaXRlcmFsKCkgPSBkZWZhdWx0OwogCiAg
ICAgRmxvYXRMaXRlcmFsKGNvbnN0IEZsb2F0TGl0ZXJhbCYpID0gZGVsZXRlOwogICAgIEZsb2F0
TGl0ZXJhbChGbG9hdExpdGVyYWwmJikgPSBkZWZhdWx0OwpAQCAtNTgsOCArNTgsNiBAQCBwdWJs
aWM6CiAgICAgRmxvYXRMaXRlcmFsVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQogICAg
IGZsb2F0IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCi0gICAgYm9vbCBpc0Zs
b2F0TGl0ZXJhbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIEZsb2F0
TGl0ZXJhbCBjbG9uZSgpIGNvbnN0CiAgICAgewogICAgICAgICBGbG9hdExpdGVyYWwgcmVzdWx0
KGNvZGVMb2NhdGlvbigpLCBtX3ZhbHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJh
bFR5cGUuY3BwCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzksMTcgKzM5LDEyIEBAIG5hbWVzcGFjZSBXSExTTCB7CiBuYW1lc3BhY2UgQVNUIHsKIAog
RmxvYXRMaXRlcmFsVHlwZTo6RmxvYXRMaXRlcmFsVHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24s
IGZsb2F0IHZhbHVlKQotICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICA6IFJlc29sdmFibGVUeXBl
KEtpbmQ6OkZsb2F0TGl0ZXJhbCkKKyAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgLCBtX3ByZWZl
cnJlZFR5cGUoVHlwZVJlZmVyZW5jZTo6Y3JlYXRlKGxvY2F0aW9uLCAiZmxvYXQiX3N0ciwgVHlw
ZUFyZ3VtZW50cygpKSkKIHsKIH0KIAotRmxvYXRMaXRlcmFsVHlwZTo6fkZsb2F0TGl0ZXJhbFR5
cGUoKSA9IGRlZmF1bHQ7Ci0KLUZsb2F0TGl0ZXJhbFR5cGU6OkZsb2F0TGl0ZXJhbFR5cGUoRmxv
YXRMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7Ci0KLUZsb2F0TGl0ZXJhbFR5cGUmIEZsb2F0TGl0
ZXJhbFR5cGU6Om9wZXJhdG9yPShGbG9hdExpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKLQogYm9v
bCBGbG9hdExpdGVyYWxUeXBlOjpjYW5SZXNvbHZlKGNvbnN0IFR5cGUmIHR5cGUpIGNvbnN0CiB7
CiAgICAgaWYgKCFpczxOYW1lZFR5cGU+KHR5cGUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0
ZXJhbFR5cGUuaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCwyNyArNDAsMjUgQEAgbmFtZXNwYWNlIEFTVCB7CiAKIGNsYXNzIFR5cGVSZWZlcmVuY2U7
CiAKLWNsYXNzIEZsb2F0TGl0ZXJhbFR5cGUgOiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUgeworY2xh
c3MgRmxvYXRMaXRlcmFsVHlwZSBmaW5hbCA6IHB1YmxpYyBSZXNvbHZhYmxlVHlwZSB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRmxvYXRMaXRlcmFsVHlwZShD
b2RlTG9jYXRpb24sIGZsb2F0IHZhbHVlKTsKIAotICAgIHZpcnR1YWwgfkZsb2F0TGl0ZXJhbFR5
cGUoKTsKKyAgICB+RmxvYXRMaXRlcmFsVHlwZSgpID0gZGVmYXVsdDsKIAogICAgIEZsb2F0TGl0
ZXJhbFR5cGUoY29uc3QgRmxvYXRMaXRlcmFsVHlwZSYpID0gZGVsZXRlOwotICAgIEZsb2F0TGl0
ZXJhbFR5cGUoRmxvYXRMaXRlcmFsVHlwZSYmKTsKKyAgICBGbG9hdExpdGVyYWxUeXBlKEZsb2F0
TGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwogCiAgICAgRmxvYXRMaXRlcmFsVHlwZSYgb3BlcmF0
b3I9KGNvbnN0IEZsb2F0TGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBGbG9hdExpdGVyYWxU
eXBlJiBvcGVyYXRvcj0oRmxvYXRMaXRlcmFsVHlwZSYmKTsKLQotICAgIGJvb2wgaXNGbG9hdExp
dGVyYWxUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIEZsb2F0TGl0
ZXJhbFR5cGUmIG9wZXJhdG9yPShGbG9hdExpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKIAogICAg
IGZsb2F0IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCiAgICAgVHlwZVJlZmVy
ZW5jZSYgcHJlZmVycmVkVHlwZSgpIHsgcmV0dXJuIG1fcHJlZmVycmVkVHlwZTsgfQogCi0gICAg
Ym9vbCBjYW5SZXNvbHZlKGNvbnN0IFR5cGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB1bnNpZ25l
ZCBjb252ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgY2FuUmVzb2x2ZShjb25zdCBUeXBlJikgY29uc3Q7CisgICAgdW5zaWduZWQgY29udmVy
c2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBjb25zdDsKIAogICAgIEZsb2F0TGl0ZXJhbFR5
cGUgY2xvbmUoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRm9yTG9vcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZvckxvb3AuaAkocmV2aXNpb24gMjQ4NDA0KQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRm9yTG9vcC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMSArNDIsMTEgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAog
bmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEZvckxvb3AgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2Ns
YXNzIEZvckxvb3AgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBGb3JMb29wKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwg
VmFyaWFudDxVbmlxdWVSZWY8U3RhdGVtZW50PiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+PiYmIGlu
aXRpYWxpemF0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4mJiBjb25kaXRpb24sIHN0
ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIGluY3JlbWVudCwgVW5pcXVlUmVmPFN0YXRlbWVu
dD4mJiBib2R5KQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0
ZW1lbnQobG9jYXRpb24sIEtpbmQ6OkZvckxvb3ApCiAgICAgICAgICwgbV9pbml0aWFsaXphdGlv
bihXVEZNb3ZlKGluaXRpYWxpemF0aW9uKSkKICAgICAgICAgLCBtX2NvbmRpdGlvbihXVEZNb3Zl
KGNvbmRpdGlvbikpCiAgICAgICAgICwgbV9pbmNyZW1lbnQoV1RGTW92ZShpbmNyZW1lbnQpKQpA
QCAtNTQsMTUgKzU0LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+
Rm9yTG9vcCgpCi0gICAgewotICAgIH0KKyAgICB+Rm9yTG9vcCgpID0gZGVmYXVsdDsKIAogICAg
IEZvckxvb3AoY29uc3QgRm9yTG9vcCYpID0gZGVsZXRlOwogICAgIEZvckxvb3AoRm9yTG9vcCYm
KSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzRm9yTG9vcCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KLQogICAgIFZhcmlhbnQ8VW5pcXVlUmVmPFN0YXRlbWVudD4sIFVuaXF1ZVJl
ZjxFeHByZXNzaW9uPj4mIGluaXRpYWxpemF0aW9uKCkgeyByZXR1cm4gbV9pbml0aWFsaXphdGlv
bjsgfQogICAgIEV4cHJlc3Npb24qIGNvbmRpdGlvbigpIHsgcmV0dXJuIG1fY29uZGl0aW9uLmdl
dCgpOyB9CiAgICAgRXhwcmVzc2lvbiogaW5jcmVtZW50KCkgeyByZXR1cm4gbV9pbmNyZW1lbnQu
Z2V0KCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMR2xvYmFsVmFyaWFibGVSZWZlcmVuY2Uu
aAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MzcsMTkgKzM3LDE5IEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1j
bGFzcyBHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK2NsYXNz
IEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdsb2JhbFZhcmlhYmxlUmVm
ZXJlbmNlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgYmFz
ZSwgU3RydWN0dXJlRWxlbWVudCogc3RydWN0RmllbGQpCi0gICAgICAgIDogRXhwcmVzc2lvbihs
b2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpHbG9iYWxWYXJp
YWJsZVJlZmVyZW5jZSkKICAgICAgICAgLCBtX2Jhc2UoV1RGTW92ZShiYXNlKSkKICAgICAgICAg
LCBtX3N0cnVjdEZpZWxkKCpzdHJ1Y3RGaWVsZCkKICAgICB7CiAgICAgICAgIEFTU0VSVChzdHJ1
Y3RGaWVsZCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+R2xvYmFsVmFyaWFibGVSZWZlcmVuY2Uo
KSA9IGRlZmF1bHQ7Ci0gICAgYm9vbCBpc0dsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIH5HbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSgp
ID0gZGVmYXVsdDsKKyAgICAKICAgICBTdHJ1Y3R1cmVFbGVtZW50JiBzdHJ1Y3RGaWVsZCgpIHsg
cmV0dXJuIG1fc3RydWN0RmllbGQ7IH0KIAogICAgIEV4cHJlc3Npb24mIGJhc2UoKSB7IHJldHVy
biBtX2Jhc2UuZ2V0KCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTElmU3RhdGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSWZTdGF0ZW1lbnQuaAkocmV2aXNpb24gMjQ4
NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSWZT
dGF0ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMjQgKzM5LDIyIEBAIG5hbWVzcGFjZSBX
SExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBJZlN0YXRlbWVudCA6IHB1YmxpYyBT
dGF0ZW1lbnQgeworY2xhc3MgSWZTdGF0ZW1lbnQgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBJZlN0YXRlbWVudChD
b2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGNvbmRpdGlvbmFs
LCBVbmlxdWVSZWY8U3RhdGVtZW50PiYmIGJvZHksIHN0ZDo6dW5pcXVlX3B0cjxTdGF0ZW1lbnQ+
JiYgZWxzZUJvZHkpCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uKQorICAgICAgICA6IFN0
YXRlbWVudChsb2NhdGlvbiwgS2luZDo6SWYpCiAgICAgICAgICwgbV9jb25kaXRpb25hbChXVEZN
b3ZlKGNvbmRpdGlvbmFsKSkKICAgICAgICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkKICAgICAg
ICAgLCBtX2Vsc2VCb2R5KFdURk1vdmUoZWxzZUJvZHkpKQogICAgIHsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIH5JZlN0YXRlbWVudCgpID0gZGVmYXVsdDsKKyAgICB+SWZTdGF0ZW1lbnQoKSA9IGRl
ZmF1bHQ7CiAKICAgICBJZlN0YXRlbWVudChjb25zdCBJZlN0YXRlbWVudCYpID0gZGVsZXRlOwog
ICAgIElmU3RhdGVtZW50KElmU3RhdGVtZW50JiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNJ
ZlN0YXRlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIEV4cHJl
c3Npb24mIGNvbmRpdGlvbmFsKCkgeyByZXR1cm4gbV9jb25kaXRpb25hbDsgfQogICAgIFN0YXRl
bWVudCYgYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQogICAgIFN0YXRlbWVudCogZWxzZUJvZHko
KSB7IHJldHVybiBtX2Vsc2VCb2R5LmdldCgpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbmRleEV4cHJlc3Npb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbmRleEV4cHJl
c3Npb24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMSW5kZXhFeHByZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDMzICszOCwzMiBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xh
c3MgSW5kZXhFeHByZXNzaW9uIDogcHVibGljIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiB7Citj
bGFzcyBJbmRleEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgUHJvcGVydHlBY2Nlc3NFeHByZXNz
aW9uIHsKKyAgICB1c2luZyBCYXNlID0gUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uOwogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEluZGV4RXhwcmVzc2lvbihDb2Rl
TG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGJhc2UsIFVuaXF1ZVJl
ZjxFeHByZXNzaW9uPiYmIGluZGV4KQotICAgICAgICA6IFByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
bihsb2NhdGlvbiwgV1RGTW92ZShiYXNlKSkKKyAgICAgICAgOiBQcm9wZXJ0eUFjY2Vzc0V4cHJl
c3Npb24obG9jYXRpb24sIEtpbmQ6OkluZGV4LCBXVEZNb3ZlKGJhc2UpKQogICAgICAgICAsIG1f
aW5kZXgoV1RGTW92ZShpbmRleCkpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfkluZGV4
RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKyAgICB+SW5kZXhFeHByZXNzaW9uKCkgPSBkZWZhdWx0
OwogCiAgICAgSW5kZXhFeHByZXNzaW9uKGNvbnN0IEluZGV4RXhwcmVzc2lvbiYpID0gZGVsZXRl
OwogICAgIEluZGV4RXhwcmVzc2lvbihJbmRleEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwogCi0g
ICAgYm9vbCBpc0luZGV4RXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KLQotICAgIFN0cmluZyBnZXR0ZXJGdW5jdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZQorICAg
IFN0cmluZyBnZXR0ZXJGdW5jdGlvbk5hbWUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
ICJvcGVyYXRvcltdIl9zdHI7CiAgICAgfQogCi0gICAgU3RyaW5nIHNldHRlckZ1bmN0aW9uTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgU3RyaW5nIHNldHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gIm9wZXJhdG9yW109Il9zdHI7CiAgICAgfQogCi0gICAg
U3RyaW5nIGFuZGVyRnVuY3Rpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJpbmcgYW5k
ZXJGdW5jdGlvbk5hbWUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICJvcGVyYXRvciZb
XSJfc3RyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuaAkocmV2aXNpb24g
MjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
SW50ZWdlckxpdGVyYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTcgKzM3LDE3IEBAIG5hbWVz
cGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBJbnRlZ2VyTGl0ZXJhbCA6
IHB1YmxpYyBFeHByZXNzaW9uIHsKK2NsYXNzIEludGVnZXJMaXRlcmFsIGZpbmFsIDogcHVibGlj
IEV4cHJlc3Npb24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IEludGVnZXJMaXRlcmFsKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgaW50IHZhbHVlKQotICAgICAg
ICA6IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwg
S2luZDo6SW50ZWdlckxpdGVyYWwpCiAgICAgICAgICwgbV90eXBlKGxvY2F0aW9uLCB2YWx1ZSkK
ICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5J
bnRlZ2VyTGl0ZXJhbCgpID0gZGVmYXVsdDsKKyAgICB+SW50ZWdlckxpdGVyYWwoKSA9IGRlZmF1
bHQ7CiAKICAgICBJbnRlZ2VyTGl0ZXJhbChjb25zdCBJbnRlZ2VyTGl0ZXJhbCYpID0gZGVsZXRl
OwogICAgIEludGVnZXJMaXRlcmFsKEludGVnZXJMaXRlcmFsJiYpID0gZGVmYXVsdDsKQEAgLTU4
LDggKzU4LDYgQEAgcHVibGljOgogICAgIEludGVnZXJMaXRlcmFsVHlwZSYgdHlwZSgpIHsgcmV0
dXJuIG1fdHlwZTsgfQogICAgIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0K
IAotICAgIGJvb2wgaXNJbnRlZ2VyTGl0ZXJhbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KLQogICAgIEludGVnZXJMaXRlcmFsIGNsb25lKCkgY29uc3QKICAgICB7CiAgICAgICAg
IEludGVnZXJMaXRlcmFsIHJlc3VsdChjb2RlTG9jYXRpb24oKSwgbV92YWx1ZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJh
bFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5jcHAJKHJldmlzaW9uIDI0ODQwNCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRl
cmFsVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDE3ICs0MCwxMiBAQCBuYW1lc3BhY2Ug
V0hMU0wgewogbmFtZXNwYWNlIEFTVCB7CiAKIEludGVnZXJMaXRlcmFsVHlwZTo6SW50ZWdlckxp
dGVyYWxUeXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgaW50IHZhbHVlKQotICAgIDogbV92YWx1
ZSh2YWx1ZSkKKyAgICA6IFJlc29sdmFibGVUeXBlKEtpbmQ6OkludGVnZXJMaXRlcmFsKQorICAg
ICwgbV92YWx1ZSh2YWx1ZSkKICAgICAsIG1fcHJlZmVycmVkVHlwZShUeXBlUmVmZXJlbmNlOjpj
cmVhdGUobG9jYXRpb24sICJpbnQiX3N0ciwgVHlwZUFyZ3VtZW50cygpKSkKIHsKIH0KIAotSW50
ZWdlckxpdGVyYWxUeXBlOjp+SW50ZWdlckxpdGVyYWxUeXBlKCkgPSBkZWZhdWx0OwotCi1JbnRl
Z2VyTGl0ZXJhbFR5cGU6OkludGVnZXJMaXRlcmFsVHlwZShJbnRlZ2VyTGl0ZXJhbFR5cGUmJikg
PSBkZWZhdWx0OwotCi1JbnRlZ2VyTGl0ZXJhbFR5cGUmIEludGVnZXJMaXRlcmFsVHlwZTo6b3Bl
cmF0b3I9KEludGVnZXJMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7Ci0KIGJvb2wgSW50ZWdlckxp
dGVyYWxUeXBlOjpjYW5SZXNvbHZlKGNvbnN0IFR5cGUmIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYg
KCFpczxOYW1lZFR5cGU+KHR5cGUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxU
eXBlLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MCwyNyArNDAsMjUgQEAgbmFtZXNwYWNlIEFTVCB7CiAKIGNsYXNzIFR5cGVSZWZlcmVuY2U7CiAK
LWNsYXNzIEludGVnZXJMaXRlcmFsVHlwZSA6IHB1YmxpYyBSZXNvbHZhYmxlVHlwZSB7CitjbGFz
cyBJbnRlZ2VyTGl0ZXJhbFR5cGUgZmluYWwgOiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEludGVnZXJMaXRlcmFsVHlw
ZShDb2RlTG9jYXRpb24sIGludCB2YWx1ZSk7CiAKLSAgICB2aXJ0dWFsIH5JbnRlZ2VyTGl0ZXJh
bFR5cGUoKTsKKyAgICB+SW50ZWdlckxpdGVyYWxUeXBlKCkgPSBkZWZhdWx0OwogCiAgICAgSW50
ZWdlckxpdGVyYWxUeXBlKGNvbnN0IEludGVnZXJMaXRlcmFsVHlwZSYpID0gZGVsZXRlOwotICAg
IEludGVnZXJMaXRlcmFsVHlwZShJbnRlZ2VyTGl0ZXJhbFR5cGUmJik7CisgICAgSW50ZWdlckxp
dGVyYWxUeXBlKEludGVnZXJMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7CiAKICAgICBJbnRlZ2Vy
TGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShjb25zdCBJbnRlZ2VyTGl0ZXJhbFR5cGUmKSA9IGRlbGV0
ZTsKLSAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShJbnRlZ2VyTGl0ZXJhbFR5cGUm
Jik7Ci0KLSAgICBib29sIGlzSW50ZWdlckxpdGVyYWxUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIEludGVnZXJMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KEludGVnZXJM
aXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7CiAKICAgICBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlOyB9CiAKICAgICBUeXBlUmVmZXJlbmNlJiBwcmVmZXJyZWRUeXBlKCkgeyByZXR1
cm4gbV9wcmVmZXJyZWRUeXBlOyB9CiAKLSAgICBib29sIGNhblJlc29sdmUoY29uc3QgVHlwZSYp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHVuc2lnbmVkIGNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFt
ZWRUeXBlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5SZXNvbHZlKGNvbnN0IFR5cGUm
KSBjb25zdDsKKyAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYp
IGNvbnN0OwogCiAgICAgSW50ZWdlckxpdGVyYWxUeXBlIGNsb25lKCkgY29uc3Q7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxFeHBy
ZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMTG9naWNhbEV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbEV4cHJlc3Np
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV0hMU0wgewog
CiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgTG9naWNhbEV4cHJlc3Npb24gOiBwdWJsaWMgRXhw
cmVzc2lvbiB7CitjbGFzcyBMb2dpY2FsRXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBFeHByZXNz
aW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIGNs
YXNzIFR5cGUgOiB1aW50OF90IHsKQEAgLTQ2LDIyICs0NiwyMCBAQCBwdWJsaWM6CiAgICAgfTsK
IAogICAgIExvZ2ljYWxFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVHlwZSB0eXBl
LCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBsZWZ0LCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBy
aWdodCkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Np
b24obG9jYXRpb24sIEtpbmQ6OkxvZ2ljYWwpCiAgICAgICAgICwgbV90eXBlKHR5cGUpCiAgICAg
ICAgICwgbV9sZWZ0KFdURk1vdmUobGVmdCkpCiAgICAgICAgICwgbV9yaWdodChXVEZNb3ZlKHJp
Z2h0KSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+TG9naWNhbEV4cHJlc3Npb24oKSA9
IGRlZmF1bHQ7CisgICAgfkxvZ2ljYWxFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwogCiAgICAgTG9n
aWNhbEV4cHJlc3Npb24oY29uc3QgTG9naWNhbEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBM
b2dpY2FsRXhwcmVzc2lvbihMb2dpY2FsRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CiAKICAgICBU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAotICAgIGJvb2wgaXNMb2dpY2Fs
RXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIEV4cHJl
c3Npb24mIGxlZnQoKSB7IHJldHVybiBtX2xlZnQ7IH0KICAgICBFeHByZXNzaW9uJiByaWdodCgp
IHsgcmV0dXJuIG1fcmlnaHQ7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsTm90RXhw
cmVzc2lvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNywyMiArMzcsMjAgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7
CiAKLWNsYXNzIExvZ2ljYWxOb3RFeHByZXNzaW9uIDogcHVibGljIEV4cHJlc3Npb24geworY2xh
c3MgTG9naWNhbE5vdEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTG9naWNhbE5vdEV4cHJlc3Np
b24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBvcGVyYW5k
KQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihs
b2NhdGlvbiwgS2luZDo6TG9naWNhbE5vdCkKICAgICAgICAgLCBtX29wZXJhbmQoV1RGTW92ZShv
cGVyYW5kKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+TG9naWNhbE5vdEV4cHJlc3Np
b24oKSA9IGRlZmF1bHQ7CisgICAgfkxvZ2ljYWxOb3RFeHByZXNzaW9uKCkgPSBkZWZhdWx0Owog
CiAgICAgTG9naWNhbE5vdEV4cHJlc3Npb24oY29uc3QgTG9naWNhbE5vdEV4cHJlc3Npb24mKSA9
IGRlbGV0ZTsKICAgICBMb2dpY2FsTm90RXhwcmVzc2lvbihMb2dpY2FsTm90RXhwcmVzc2lvbiYm
KSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzTG9naWNhbE5vdEV4cHJlc3Npb24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNzaW9uJiBvcGVyYW5kKCkgeyBy
ZXR1cm4gbV9vcGVyYW5kOyB9CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlQXJyYXlSZWZl
cmVuY2VFeHByZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDIzICszOCwyMSBAQCBuYW1l
c3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgTWFrZUFycmF5UmVmZXJl
bmNlRXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK2NsYXNzIE1ha2VBcnJheVJlZmVy
ZW5jZUV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lv
bihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGxlZnRWYWx1
ZSwgQWRkcmVzc0VzY2FwZU1vZGUgYWRkcmVzc0VzY2FwZU1vZGUpCi0gICAgICAgIDogRXhwcmVz
c2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpNYWtl
QXJyYXlSZWZlcmVuY2UpCiAgICAgICAgICwgbV9sZWZ0VmFsdWUoV1RGTW92ZShsZWZ0VmFsdWUp
KQogICAgICAgICAsIG1fYWRkcmVzc0VzY2FwZU1vZGUoYWRkcmVzc0VzY2FwZU1vZGUpCiAgICAg
ewogICAgIH0KIAotICAgIHZpcnR1YWwgfk1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKSA9
IGRlZmF1bHQ7CisgICAgfk1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7
CiAKICAgICBNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKGNvbnN0IE1ha2VBcnJheVJlZmVy
ZW5jZUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNz
aW9uKE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwogCi0gICAgYm9v
bCBpc01ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9Ci0KICAgICBFeHByZXNzaW9uJiBsZWZ0VmFsdWUoKSB7IHJldHVybiBtX2xlZnRW
YWx1ZTsgfQogCiAgICAgYm9vbCBtaWdodEVzY2FwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWRkcmVz
c0VzY2FwZU1vZGUgPT0gQWRkcmVzc0VzY2FwZU1vZGU6OkVzY2FwZXM7IH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVz
c2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlUG9pbnRlckV4
cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjMgKzM4LDIxIEBAIG5hbWVzcGFjZSBX
SExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBNYWtlUG9pbnRlckV4cHJlc3Npb24g
OiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBNYWtlUG9pbnRlckV4cHJlc3Npb24gZmluYWwg
OiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgTWFrZVBvaW50ZXJFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5p
cXVlUmVmPEV4cHJlc3Npb24+JiYgbGVmdFZhbHVlLCBBZGRyZXNzRXNjYXBlTW9kZSBhZGRyZXNz
RXNjYXBlTW9kZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4
cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6Ok1ha2VQb2ludGVyKQogICAgICAgICAsIG1fbGVmdFZh
bHVlKFdURk1vdmUobGVmdFZhbHVlKSkKICAgICAgICAgLCBtX2FkZHJlc3NFc2NhcGVNb2RlKGFk
ZHJlc3NFc2NhcGVNb2RlKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5NYWtlUG9pbnRl
ckV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfk1ha2VQb2ludGVyRXhwcmVzc2lvbigpID0g
ZGVmYXVsdDsKIAogICAgIE1ha2VQb2ludGVyRXhwcmVzc2lvbihjb25zdCBNYWtlUG9pbnRlckV4
cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBNYWtlUG9pbnRlckV4cHJlc3Npb24oTWFrZVBvaW50
ZXJFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNNYWtlUG9pbnRlckV4cHJl
c3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNzaW9u
JiBsZWZ0VmFsdWUoKSB7IHJldHVybiBtX2xlZnRWYWx1ZTsgfQogCiAgICAgYm9vbCBtaWdodEVz
Y2FwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWRkcmVzc0VzY2FwZU1vZGUgPT0gQWRkcmVzc0VzY2Fw
ZU1vZGU6OkVzY2FwZXM7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTE5hbWVkVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVkVHlwZS5oCShyZXZpc2lvbiAyNDg0MDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYW1lZFR5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTMgKzQxLDE0IEBAIG5hbWVzcGFjZSBBU1Qgewog
Y2xhc3MgTmFtZWRUeXBlIDogcHVibGljIFR5cGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIE5hbWVkVHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmlu
ZyYmIG5hbWUpCi0gICAgICAgIDogbV9jb2RlTG9jYXRpb24obG9jYXRpb24pCisgICAgTmFtZWRU
eXBlKEtpbmQga2luZCwgQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1lKQorICAg
ICAgICA6IFR5cGUoa2luZCkKKyAgICAgICAgLCBtX2NvZGVMb2NhdGlvbihsb2NhdGlvbikKICAg
ICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVh
bCB+TmFtZWRUeXBlKCkgPSBkZWZhdWx0OworICAgIH5OYW1lZFR5cGUoKSA9IGRlZmF1bHQ7CiAK
ICAgICBOYW1lZFR5cGUoY29uc3QgTmFtZWRUeXBlJikgPSBkZWxldGU7CiAgICAgTmFtZWRUeXBl
KE5hbWVkVHlwZSYmKSA9IGRlZmF1bHQ7CkBAIC01NywxNiArNTgsMTAgQEAgcHVibGljOgogCiAg
ICAgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9CiAKLSAgICBib29sIGlzTmFtZWRU
eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBp
c1R5cGVEZWZpbml0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaXNTdHJ1Y3R1cmVEZWZpbml0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNFbnVtZXJhdGlvbkRlZmluaXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZVR5cGVEZWNsYXJhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IFR5cGUmIHVuaWZ5Tm9kZSgpIGNv
bnN0IHsgcmV0dXJuICp0aGlzOyB9Ci0gICAgdmlydHVhbCBUeXBlJiB1bmlmeU5vZGUoKSB7IHJl
dHVybiAqdGhpczsgfQogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBUeXBlOworICAgIFR5
cGUmIHVuaWZ5Tm9kZUltcGwoKSB7IHJldHVybiAqdGhpczsgfQogICAgIENvZGVMb2NhdGlvbiBt
X2NvZGVMb2NhdGlvbjsKICAgICBTdHJpbmcgbV9uYW1lOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMjIgKzQwLDIwIEBAIG5hbWVzcGFjZSBXSExTTCB7
CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBOYXRpdmVUeXBlRGVjbGFyYXRpb24gOiBwdWJs
aWMgTmFtZWRUeXBlIHsKK2NsYXNzIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbiBmaW5hbCA6IHB1Ymxp
YyBOYW1lZFR5cGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IE5hdGl2ZVR5cGVEZWNsYXJhdGlvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmluZyYmIG5h
bWUsIFR5cGVBcmd1bWVudHMmJiB0eXBlQXJndW1lbnRzKQotICAgICAgICA6IE5hbWVkVHlwZShs
b2NhdGlvbiwgV1RGTW92ZShuYW1lKSkKKyAgICAgICAgOiBOYW1lZFR5cGUoS2luZDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uLCBsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSkKICAgICAgICAgLCBtX3R5
cGVBcmd1bWVudHMoV1RGTW92ZSh0eXBlQXJndW1lbnRzKSkKICAgICB7CiAgICAgfQogCi0gICAg
dmlydHVhbCB+TmF0aXZlVHlwZURlY2xhcmF0aW9uKCkgPSBkZWZhdWx0OworICAgIH5OYXRpdmVU
eXBlRGVjbGFyYXRpb24oKSA9IGRlZmF1bHQ7CiAKICAgICBOYXRpdmVUeXBlRGVjbGFyYXRpb24o
Y29uc3QgTmF0aXZlVHlwZURlY2xhcmF0aW9uJikgPSBkZWxldGU7CiAgICAgTmF0aXZlVHlwZURl
Y2xhcmF0aW9uKE5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29s
IGlzTmF0aXZlVHlwZURlY2xhcmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQotCiAgICAgVHlwZUFyZ3VtZW50cyYgdHlwZUFyZ3VtZW50cygpIHsgcmV0dXJuIG1fdHlwZUFy
Z3VtZW50czsgfQogCiAgICAgYm9vbCBpc0ludCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbnQ7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxM
aXRlcmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMTnVsbExpdGVyYWwuaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVsbExpdGVyYWwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsMTUgKzM3LDE1IEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFj
ZSBBU1QgewogCi1jbGFzcyBOdWxsTGl0ZXJhbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK2NsYXNz
IE51bGxMaXRlcmFsIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE51bGxMaXRlcmFsKENvZGVMb2NhdGlvbiBsb2Nh
dGlvbikKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Np
b24obG9jYXRpb24sIEtpbmQ6Ok51bGxMaXRlcmFsKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIH5OdWxsTGl0ZXJhbCgpID0gZGVmYXVsdDsKKyAgICB+TnVsbExpdGVyYWwoKSA9IGRlZmF1
bHQ7CiAKICAgICBOdWxsTGl0ZXJhbChjb25zdCBOdWxsTGl0ZXJhbCYpID0gZGVsZXRlOwogICAg
IE51bGxMaXRlcmFsKE51bGxMaXRlcmFsJiYpID0gZGVmYXVsdDsKQEAgLTU1LDggKzU1LDYgQEAg
cHVibGljOgogCiAgICAgTnVsbExpdGVyYWxUeXBlJiB0eXBlKCkgeyByZXR1cm4gbV90eXBlOyB9
CiAKLSAgICBib29sIGlzTnVsbExpdGVyYWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9Ci0KICAgICBOdWxsTGl0ZXJhbCBjbG9uZSgpIGNvbnN0CiAgICAgewogICAgICAgICBhdXRv
IHJlc3VsdCA9IE51bGxMaXRlcmFsKGNvZGVMb2NhdGlvbigpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRlcmFsVHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51
bGxMaXRlcmFsVHlwZS5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdWxsTGl0ZXJhbFR5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzYsMTIgKzM2LDE0IEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1Qg
ewogCi1jbGFzcyBOdWxsTGl0ZXJhbFR5cGUgOiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUgeworY2xh
c3MgTnVsbExpdGVyYWxUeXBlIGZpbmFsIDogcHVibGljIFJlc29sdmFibGVUeXBlIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBOdWxsTGl0ZXJhbFR5cGUoKSA9
IGRlZmF1bHQ7CisgICAgTnVsbExpdGVyYWxUeXBlKCkKKyAgICAgICAgOiBSZXNvbHZhYmxlVHlw
ZShLaW5kOjpOdWxsTGl0ZXJhbCkKKyAgICB7IH0KIAotICAgIHZpcnR1YWwgfk51bGxMaXRlcmFs
VHlwZSgpID0gZGVmYXVsdDsKKyAgICB+TnVsbExpdGVyYWxUeXBlKCkgPSBkZWZhdWx0OwogCiAg
ICAgTnVsbExpdGVyYWxUeXBlKGNvbnN0IE51bGxMaXRlcmFsVHlwZSYpID0gZGVsZXRlOwogICAg
IE51bGxMaXRlcmFsVHlwZShOdWxsTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwpAQCAtNDksMTAg
KzUxLDggQEAgcHVibGljOgogICAgIE51bGxMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KGNvbnN0IE51
bGxMaXRlcmFsVHlwZSYpID0gZGVsZXRlOwogICAgIE51bGxMaXRlcmFsVHlwZSYgb3BlcmF0b3I9
KE51bGxMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzTnVsbExpdGVyYWxU
eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgYm9vbCBjYW5SZXNv
bHZlKGNvbnN0IFR5cGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB1bnNpZ25lZCBjb252ZXJzaW9u
Q29zdChjb25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY2FuUmVz
b2x2ZShjb25zdCBUeXBlJikgY29uc3Q7CisgICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29u
c3QgVW5uYW1lZFR5cGUmKSBjb25zdDsKIAogcHJpdmF0ZToKIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQb2ludGVyVHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFBvaW50
ZXJUeXBlLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFBvaW50ZXJUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw3ICs0Nyw3IEBAIGNsYXNzIFBvaW50ZXJUeXBl
IGZpbmFsIDogcHVibGljIFJlZmVyZW4KICAgICB1c2luZyBCYXNlID0gUmVmZXJlbmNlVHlwZTsK
IAogICAgIFBvaW50ZXJUeXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgQWRkcmVzc1NwYWNlIGFk
ZHJlc3NTcGFjZSwgUmVmPFVubmFtZWRUeXBlPiBlbGVtZW50VHlwZSkKLSAgICAgICAgOiBCYXNl
KGxvY2F0aW9uLCBhZGRyZXNzU3BhY2UsIFdURk1vdmUoZWxlbWVudFR5cGUpLCBLaW5kOjpQb2lu
dGVyVHlwZSkKKyAgICAgICAgOiBCYXNlKGxvY2F0aW9uLCBhZGRyZXNzU3BhY2UsIFdURk1vdmUo
ZWxlbWVudFR5cGUpLCBLaW5kOjpQb2ludGVyKQogICAgIHsKICAgICB9CiAKQEAgLTU2LDcgKzU3
LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQb2ludGVyVHlwZShs
b2NhdGlvbiwgYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKGVsZW1lbnRUeXBlKSkpOwogICAgIH0KIAot
ICAgIHZpcnR1YWwgflBvaW50ZXJUeXBlKCkgPSBkZWZhdWx0OworICAgIH5Qb2ludGVyVHlwZSgp
ID0gZGVmYXVsdDsKIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKQEAgLTY4LDcg
KzY5LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRkcmVzc1NwYWNlKCkgPT0gb3RoZXIu
YWRkcmVzc1NwYWNlKCkgJiYgZWxlbWVudFR5cGUoKSA9PSBvdGhlci5lbGVtZW50VHlwZSgpOwog
ICAgIH0KIAotICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IG92ZXJyaWRlCisgICAgU3RyaW5n
IHRvU3RyaW5nKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKGVsZW1l
bnRUeXBlKCkudG9TdHJpbmcoKSwgJyonKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUHJvcGVydHlBY2Nlc3NFeHBy
ZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDIyICs0MSwxOCBAQCBuYW1lc3BhY2UgQVNU
IHsKIGNsYXNzIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4m
JiBiYXNlKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgUHJvcGVydHlBY2Nl
c3NFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgS2luZCBraW5kLCBVbmlxdWVSZWY8
RXhwcmVzc2lvbj4mJiBiYXNlKQorICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIGtpbmQp
CiAgICAgICAgICwgbV9iYXNlKFdURk1vdmUoYmFzZSkpCiAgICAgewogICAgIH0KIAotICAgIHZp
cnR1YWwgflByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKLQogICAgIFByb3Bl
cnR5QWNjZXNzRXhwcmVzc2lvbihjb25zdCBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mKSA9IGRl
bGV0ZTsKICAgICBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oUHJvcGVydHlBY2Nlc3NFeHByZXNz
aW9uJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICB2aXJ0dWFsIFN0cmluZyBn
ZXR0ZXJGdW5jdGlvbk5hbWUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcgc2V0dGVy
RnVuY3Rpb25OYW1lKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIGFuZGVyRnVuY3Rp
b25OYW1lKCkgY29uc3QgPSAwOworICAgIFN0cmluZyBnZXR0ZXJGdW5jdGlvbk5hbWUoKSBjb25z
dDsKKyAgICBTdHJpbmcgc2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3Q7CisgICAgU3RyaW5nIGFu
ZGVyRnVuY3Rpb25OYW1lKCkgY29uc3Q7CiAKICAgICBGdW5jdGlvbkRlY2xhcmF0aW9uKiBnZXR0
ZXJGdW5jdGlvbigpIHsgcmV0dXJuIG1fZ2V0dGVyRnVuY3Rpb247IH0KICAgICBGdW5jdGlvbkRl
Y2xhcmF0aW9uKiBhbmRlckZ1bmN0aW9uKCkgeyByZXR1cm4gbV9hbmRlckZ1bmN0aW9uOyB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWFkTW9k
aWZ5V3JpdGVFeHByZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oCShyZXZp
c2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcg
KzQ5LDcgQEAgbmFtZXNwYWNlIEFTVCB7CiAgKiAgNi4gRXZhbHVhdGUgbV9yZXN1bHRFeHByZXNz
aW9uCiAgKiAgNy4gUmV0dXJuIHRoZSByZXN1bHQKICAqLwotY2xhc3MgUmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK2NsYXNzIFJlYWRNb2RpZnlXcml0ZUV4
cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFVuaXF1ZVJlZjxSZWFkTW9kaWZ5V3JpdGVF
eHByZXNzaW9uPiBjcmVhdGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVz
c2lvbj4gbFZhbHVlKQpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlUmVmPFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3Zl
KGxWYWx1ZSkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgflJlYWRNb2RpZnlXcml0ZUV4cHJlc3Np
b24oKSA9IGRlZmF1bHQ7CisgICAgflJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oKSA9IGRlZmF1
bHQ7CiAKICAgICBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKGNvbnN0IFJlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKFJl
YWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwpAQCAtODIsOCArODIsNiBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPFZhcmlhYmxlUmVmZXJlbmNlPihW
YXJpYWJsZVJlZmVyZW5jZTo6d3JhcChtX25ld1ZhbHVlKSk7CiAgICAgfQogCi0gICAgYm9vbCBp
c1JlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9Ci0KICAgICBFeHByZXNzaW9uJiBsZWZ0VmFsdWUoKSB7IHJldHVybiBtX2xlZnRWYWx1ZTsg
fQogICAgIFZhcmlhYmxlRGVjbGFyYXRpb24mIG9sZFZhbHVlKCkgeyByZXR1cm4gbV9vbGRWYWx1
ZTsgfQogICAgIFZhcmlhYmxlRGVjbGFyYXRpb24mIG5ld1ZhbHVlKCkgeyByZXR1cm4gbV9uZXdW
YWx1ZTsgfQpAQCAtMTE3LDcgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8Y2xhc3Mg
VSwgY2xhc3MuLi4gQXJncz4gZnJpZW5kIFVuaXF1ZVJlZjxVPiBXVEY6Om1ha2VVbmlxdWVSZWYo
QXJncyYmLi4uKTsKIAogICAgIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oQ29kZUxvY2F0aW9u
IGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbGVmdFZhbHVlKQotICAgICAgICA6IEV4
cHJlc3Npb24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6
UmVhZE1vZGlmeVdyaXRlKQogICAgICAgICAsIG1fbGVmdFZhbHVlKFdURk1vdmUobGVmdFZhbHVl
KSkKICAgICAgICAgLCBtX29sZFZhbHVlKG1ha2VVbmlxdWVSZWY8VmFyaWFibGVEZWNsYXJhdGlv
bj4obG9jYXRpb24sIFF1YWxpZmllcnMoKSwgbnVsbHB0ciwgU3RyaW5nKCksIG51bGxwdHIsIG51
bGxwdHIpKQogICAgICAgICAsIG1fbmV3VmFsdWUobWFrZVVuaXF1ZVJlZjxWYXJpYWJsZURlY2xh
cmF0aW9uPihsb2NhdGlvbiwgUXVhbGlmaWVycygpLCBudWxscHRyLCBTdHJpbmcoKSwgbnVsbHB0
ciwgbnVsbHB0cikpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xSZWZlcmVuY2VUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVmZXJlbmNlVHlwZS5oCShyZXZpc2lvbiAyNDg0
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWZl
cmVuY2VUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDkgKzUwLDEwIEBAIHByb3RlY3RlZDoK
ICAgICAgICAgLCBtX2VsZW1lbnRUeXBlKFdURk1vdmUoZWxlbWVudFR5cGUpKQogICAgIHsKICAg
ICB9Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+UmVmZXJlbmNlVHlwZSgpID0gZGVmYXVsdDsKIAor
ICAgIH5SZWZlcmVuY2VUeXBlKCkgPSBkZWZhdWx0OworCitwdWJsaWM6CiAgICAgQWRkcmVzc1Nw
YWNlIGFkZHJlc3NTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWRkcmVzc1NwYWNlOyB9CiAgICAg
Y29uc3QgVW5uYW1lZFR5cGUmIGVsZW1lbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50
VHlwZTsgfQogICAgIFVubmFtZWRUeXBlJiBlbGVtZW50VHlwZSgpIHsgcmV0dXJuIG1fZWxlbWVu
dFR5cGU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFJlc29sdmFibGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb2x2YWJsZVR5cGUuaAkocmV2aXNpb24gMjQ4NDA0
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb2x2
YWJsZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOSArNDEsMTEgQEAgbmFtZXNwYWNlIEFT
VCB7CiBjbGFzcyBSZXNvbHZhYmxlVHlwZSA6IHB1YmxpYyBUeXBlIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBSZXNvbHZhYmxlVHlwZSgpID0gZGVmYXVsdDsK
KyAgICBSZXNvbHZhYmxlVHlwZShLaW5kIGtpbmQpCisgICAgICAgIDogVHlwZShraW5kKQorICAg
IHsgfQogCi0gICAgdmlydHVhbCB+UmVzb2x2YWJsZVR5cGUoKSA9IGRlZmF1bHQ7CisgICAgflJl
c29sdmFibGVUeXBlKCkgPSBkZWZhdWx0OwogCiAgICAgUmVzb2x2YWJsZVR5cGUoY29uc3QgUmVz
b2x2YWJsZVR5cGUmKSA9IGRlbGV0ZTsKICAgICBSZXNvbHZhYmxlVHlwZShSZXNvbHZhYmxlVHlw
ZSYmKSA9IGRlZmF1bHQ7CkBAIC01MSwxNCArNTMsOCBAQCBwdWJsaWM6CiAgICAgUmVzb2x2YWJs
ZVR5cGUmIG9wZXJhdG9yPShjb25zdCBSZXNvbHZhYmxlVHlwZSYpID0gZGVsZXRlOwogICAgIFJl
c29sdmFibGVUeXBlJiBvcGVyYXRvcj0oUmVzb2x2YWJsZVR5cGUmJikgPSBkZWZhdWx0OwogCi0g
ICAgYm9vbCBpc1Jlc29sdmFibGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBpc0Zsb2F0TGl0ZXJhbFR5cGUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0ludGVnZXJMaXRlcmFsVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTnVsbExpdGVyYWxUeXBlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNVbnNpZ25lZEludGVnZXJM
aXRlcmFsVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wg
Y2FuUmVzb2x2ZShjb25zdCBUeXBlJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdW5zaWduZWQg
Y29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBjb25zdCA9IDA7CisgICAgYm9vbCBj
YW5SZXNvbHZlKGNvbnN0IFR5cGUmKSBjb25zdDsKKyAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29z
dChjb25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0OwogCiAgICAgY29uc3QgVW5uYW1lZFR5cGUqIG1h
eWJlUmVzb2x2ZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZFR5cGUgPyAmKm1fcmVz
b2x2ZWRUeXBlIDogbnVsbHB0cjsgfQogICAgIGNvbnN0IFVubmFtZWRUeXBlJiByZXNvbHZlZFR5
cGUoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMUmV0dXJuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMUmV0dXJuLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJldHVybi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSwyMiArMzksMjAgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFT
VCB7CiAKLWNsYXNzIFJldHVybiA6IHB1YmxpYyBTdGF0ZW1lbnQgeworY2xhc3MgUmV0dXJuIGZp
bmFsIDogcHVibGljIFN0YXRlbWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgUmV0dXJuKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgc3RkOjp1bmlxdWVfcHRy
PEV4cHJlc3Npb24+JiYgdmFsdWUpCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uKQorICAg
ICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6UmV0dXJuKQogICAgICAgICAsIG1fdmFs
dWUoV1RGTW92ZSh2YWx1ZSkpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgflJldHVybigp
ID0gZGVmYXVsdDsKKyAgICB+UmV0dXJuKCkgPSBkZWZhdWx0OwogCiAgICAgUmV0dXJuKGNvbnN0
IFJldHVybiYpID0gZGVsZXRlOwogICAgIFJldHVybihSZXR1cm4mJikgPSBkZWZhdWx0OwogCi0g
ICAgYm9vbCBpc1JldHVybigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAg
IEV4cHJlc3Npb24qIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZS5nZXQoKTsgfQogCiBwcml2YXRl
OgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3Rh
dGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xTdGF0ZW1lbnQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2lu
Y2x1ZGUgIldITFNMQVNULmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdI
TFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK3ZvaWQgU3RhdGVtZW50OjpkZXN0cm95KFN0YXRl
bWVudCYgc3RhdGVtZW50KQoreworICAgIHN3aXRjaCAoc3RhdGVtZW50LmtpbmQoKSkgeworICAg
IGNhc2UgS2luZDo6QmxvY2s6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpCbG9jaz4o
c3RhdGVtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpCcmVhazoKKyAgICAg
ICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OkJyZWFrPihzdGF0ZW1lbnQpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEtpbmQ6OkNvbnRpbnVlOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PEFT
VDo6Q29udGludWU+KHN0YXRlbWVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6
RG9XaGlsZUxvb3A6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpEb1doaWxlTG9vcD4o
c3RhdGVtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpFZmZlY3RmdWxFeHBy
ZXNzaW9uOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PEFTVDo6RWZmZWN0ZnVsRXhwcmVzc2lv
blN0YXRlbWVudD4oc3RhdGVtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpG
YWxsdGhyb3VnaDoKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OkZhbGx0aHJvdWdoPihz
dGF0ZW1lbnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6OkZvckxvb3A6CisgICAg
ICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpGb3JMb29wPihzdGF0ZW1lbnQpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEtpbmQ6OklmOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PEFTVDo6
SWZTdGF0ZW1lbnQ+KHN0YXRlbWVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6
UmV0dXJuOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PEFTVDo6UmV0dXJuPihzdGF0ZW1lbnQp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6OlN0YXRlbWVudExpc3Q6CisgICAgICAg
IGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpTdGF0ZW1lbnRMaXN0PihzdGF0ZW1lbnQpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEtpbmQ6OlN3aXRjaENhc2U6CisgICAgICAgIGRlbGV0ZSAmZG93
bmNhc3Q8QVNUOjpTd2l0Y2hDYXNlPihzdGF0ZW1lbnQpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEtpbmQ6OlN3aXRjaDoKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OlN3aXRjaFN0
YXRlbWVudD4oc3RhdGVtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpWYXJp
YWJsZURlY2xhcmF0aW9uczoKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OlZhcmlhYmxl
RGVjbGFyYXRpb25zU3RhdGVtZW50PihzdGF0ZW1lbnQpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEtpbmQ6OldoaWxlTG9vcDoKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OldoaWxl
TG9vcD4oc3RhdGVtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit9IC8vIG5hbWVz
cGFjZSBBU1QKKworfSAvLyBuYW1lc3BhY2UgV0hMU0wKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFN0YXRlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDAsNDEgKzQwLDg2IEBAIG5hbWVzcGFjZSBBU1QgewogY2xhc3Mg
U3RhdGVtZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBT
dGF0ZW1lbnQoQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbikKLSAgICAgICAgOiBtX2NvZGVMb2Nh
dGlvbihjb2RlTG9jYXRpb24pCisgICAgZW51bSBjbGFzcyBLaW5kIDogdWludDhfdCB7CisgICAg
ICAgIEJsb2NrLAorICAgICAgICBCcmVhaywKKyAgICAgICAgQ29udGludWUsCisgICAgICAgIERv
V2hpbGVMb29wLAorICAgICAgICBFZmZlY3RmdWxFeHByZXNzaW9uLAorICAgICAgICBGYWxsdGhy
b3VnaCwKKyAgICAgICAgRm9yTG9vcCwKKyAgICAgICAgSWYsCisgICAgICAgIFJldHVybiwKKyAg
ICAgICAgU3RhdGVtZW50TGlzdCwKKyAgICAgICAgU3dpdGNoQ2FzZSwKKyAgICAgICAgU3dpdGNo
LAorICAgICAgICBWYXJpYWJsZURlY2xhcmF0aW9ucywKKyAgICAgICAgV2hpbGVMb29wLAorICAg
IH07CisgICAgU3RhdGVtZW50KENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24sIEtpbmQga2luZCkK
KyAgICAgICAgOiBtX2NvZGVMb2NhdGlvbihjb2RlTG9jYXRpb24uc3RhcnRPZmZzZXQoKSkKKyAg
ICAgICAgLCBtX2tpbmQoa2luZCkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+U3RhdGVt
ZW50KCkgPSBkZWZhdWx0OworICAgIH5TdGF0ZW1lbnQoKSA9IGRlZmF1bHQ7CisgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShTdGF0ZW1lbnQmKTsKIAogICAgIFN0YXRlbWVudChjb25zdCBTdGF0ZW1l
bnQmKSA9IGRlbGV0ZTsKICAgICBTdGF0ZW1lbnQoU3RhdGVtZW50JiYpID0gZGVmYXVsdDsKIAot
ICAgIHZpcnR1YWwgYm9vbCBpc0Jsb2NrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNCcmVhaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzQ29udGludWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBpc0RvV2hpbGVMb29wKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNGYWxsdGhyb3VnaCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRm9yTG9vcCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzSWZTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1JldHVybigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzU3RhdGVtZW50TGlzdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzU3dpdGNoQ2FzZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzU3dpdGNoU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzV2hpbGVMb29w
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVy
biBtX2tpbmQ7IH0KIAotICAgIENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2NvZGVMb2NhdGlvbjsgfQotICAgIHZvaWQgdXBkYXRlQ29kZUxvY2F0aW9uKENvZGVM
b2NhdGlvbiBsb2NhdGlvbikgeyBtX2NvZGVMb2NhdGlvbiA9IGxvY2F0aW9uOyB9CisgICAgYm9v
bCBpc0Jsb2NrKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkJsb2NrOyB9CisgICAg
Ym9vbCBpc0JyZWFrKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkJyZWFrOyB9Cisg
ICAgYm9vbCBpc0NvbnRpbnVlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkNvbnRp
bnVlOyB9CisgICAgYm9vbCBpc0RvV2hpbGVMb29wKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09
IEtpbmQ6OkRvV2hpbGVMb29wOyB9CisgICAgYm9vbCBpc0VmZmVjdGZ1bEV4cHJlc3Npb25TdGF0
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6RWZmZWN0ZnVsRXhwcmVzc2lv
bjsgfQorICAgIGJvb2wgaXNGYWxsdGhyb3VnaCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBL
aW5kOjpGYWxsdGhyb3VnaDsgfQorICAgIGJvb2wgaXNGb3JMb29wKCkgY29uc3QgeyByZXR1cm4g
a2luZCgpID09IEtpbmQ6OkZvckxvb3A7IH0KKyAgICBib29sIGlzSWZTdGF0ZW1lbnQoKSBjb25z
dCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6SWY7IH0KKyAgICBib29sIGlzUmV0dXJuKCkgY29u
c3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlJldHVybjsgfQorICAgIGJvb2wgaXNTdGF0ZW1l
bnRMaXN0KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlN0YXRlbWVudExpc3Q7IH0K
KyAgICBib29sIGlzU3dpdGNoQ2FzZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpT
d2l0Y2hDYXNlOyB9CisgICAgYm9vbCBpc1N3aXRjaFN0YXRlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IGtpbmQoKSA9PSBLaW5kOjpTd2l0Y2g7IH0KKyAgICBib29sIGlzVmFyaWFibGVEZWNsYXJhdGlv
bnNTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6VmFyaWFibGVEZWNs
YXJhdGlvbnM7IH0KKyAgICBib29sIGlzV2hpbGVMb29wKCkgY29uc3QgeyByZXR1cm4ga2luZCgp
ID09IEtpbmQ6OldoaWxlTG9vcDsgfQorCisgICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIENvZGVMb2NhdGlvbihtX2NvZGVMb2NhdGlvbiwgbV9jb2RlTG9jYXRp
b24pOyB9CisgICAgdm9pZCB1cGRhdGVDb2RlTG9jYXRpb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9u
KSB7IG1fY29kZUxvY2F0aW9uID0gbG9jYXRpb24uc3RhcnRPZmZzZXQoKTsgfQogCiBwcml2YXRl
OgotICAgIENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKKyAgICB1bnNpZ25lZCBtX2NvZGVM
b2NhdGlvbjsKKyAgICBLaW5kIG1fa2luZDsKK307CisKK30KKworfQorCit9CisKK25hbWVzcGFj
ZSBzdGQgeworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IHN0ZDo6ZGVmYXVsdF9kZWxldGU8V2ViQ29y
ZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50PiB7CisgICAgdm9pZCBvcGVyYXRvcigpKFdlYkNvcmU6
OldITFNMOjpBU1Q6OlN0YXRlbWVudCogc3RhdGVtZW50KQorICAgIHsKKyAgICAgICAgV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50OjpkZXN0cm95KCpzdGF0ZW1lbnQpOworICAgIH0KIH07
CiAKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1l
c3BhY2UgQVNUIHsKKwogdXNpbmcgU3RhdGVtZW50cyA9IFZlY3RvcjxVbmlxdWVSZWY8U3RhdGVt
ZW50Pj47CiAKLX0gLy8gbmFtZXNwYWNlIEFTVAorfQogCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudExpc3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0
ZW1lbnRMaXN0LmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MzgsMjEgKzM4LDE5IEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1j
bGFzcyBTdGF0ZW1lbnRMaXN0IDogcHVibGljIFN0YXRlbWVudCB7CitjbGFzcyBTdGF0ZW1lbnRM
aXN0IGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgdXNpbmcgQmFzZSA9IFN0YXRlbWVudDsKIHB1YmxpYzoKICAgICBTdGF0ZW1lbnRM
aXN0KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RhdGVtZW50cyYmIHN0YXRlbWVudHMpCi0gICAg
ICAgIDogQmFzZShsb2NhdGlvbikKKyAgICAgICAgOiBCYXNlKGxvY2F0aW9uLCBLaW5kOjpTdGF0
ZW1lbnRMaXN0KQogICAgICAgICAsIG1fc3RhdGVtZW50cyhXVEZNb3ZlKHN0YXRlbWVudHMpKQog
ICAgIHsgfQogCi0gICAgdmlydHVhbCB+U3RhdGVtZW50TGlzdCgpID0gZGVmYXVsdDsKKyAgICB+
U3RhdGVtZW50TGlzdCgpID0gZGVmYXVsdDsKIAogICAgIFN0YXRlbWVudHMmIHN0YXRlbWVudHMo
KSB7IHJldHVybiBtX3N0YXRlbWVudHM7IH0KIAotICAgIGJvb2wgaXNTdGF0ZW1lbnRMaXN0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiBwcml2YXRlOgogICAgIFN0YXRlbWVu
dHMgbV9zdGF0ZW1lbnRzOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZURlZmluaXRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0
aW9uLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZURlZmluaXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
NDAsMjIgKzQwLDIwIEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1j
bGFzcyBTdHJ1Y3R1cmVEZWZpbml0aW9uIDogcHVibGljIE5hbWVkVHlwZSB7CitjbGFzcyBTdHJ1
Y3R1cmVEZWZpbml0aW9uIGZpbmFsIDogcHVibGljIE5hbWVkVHlwZSB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU3RydWN0dXJlRGVmaW5pdGlvbihDb2RlTG9j
YXRpb24gbG9jYXRpb24sIFN0cmluZyYmIG5hbWUsIFN0cnVjdHVyZUVsZW1lbnRzJiYgc3RydWN0
dXJlRWxlbWVudHMpCi0gICAgICAgIDogTmFtZWRUeXBlKGxvY2F0aW9uLCBXVEZNb3ZlKG5hbWUp
KQorICAgICAgICA6IE5hbWVkVHlwZShLaW5kOjpTdHJ1Y3R1cmVEZWZpbml0aW9uLCBsb2NhdGlv
biwgV1RGTW92ZShuYW1lKSkKICAgICAgICAgLCBtX3N0cnVjdHVyZUVsZW1lbnRzKFdURk1vdmUo
c3RydWN0dXJlRWxlbWVudHMpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5TdHJ1Y3R1
cmVEZWZpbml0aW9uKCkgPSBkZWZhdWx0OworICAgIH5TdHJ1Y3R1cmVEZWZpbml0aW9uKCkgPSBk
ZWZhdWx0OwogCiAgICAgU3RydWN0dXJlRGVmaW5pdGlvbihjb25zdCBTdHJ1Y3R1cmVEZWZpbml0
aW9uJikgPSBkZWxldGU7CiAgICAgU3RydWN0dXJlRGVmaW5pdGlvbihTdHJ1Y3R1cmVEZWZpbml0
aW9uJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNTdHJ1Y3R1cmVEZWZpbml0aW9uKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgU3RydWN0dXJlRWxlbWVudHMmIHN0
cnVjdHVyZUVsZW1lbnRzKCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmVFbGVtZW50czsgfQogICAgIFN0
cnVjdHVyZUVsZW1lbnQqIGZpbmQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZUVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1l
c3BhY2UgQVNUIHsKIAotY2xhc3MgU3RydWN0dXJlRWxlbWVudCB7CitjbGFzcyBTdHJ1Y3R1cmVF
bGVtZW50IGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBTdHJ1Y3R1cmVFbGVtZW50KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgUXVhbGlmaWVycyYmIHF1
YWxpZmllcnMsIFJlZjxVbm5hbWVkVHlwZT4gdHlwZSwgU3RyaW5nJiYgbmFtZSwgc3RkOjp1bmlx
dWVfcHRyPFNlbWFudGljPiYmIHNlbWFudGljKQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgflN0cnVjdHVyZUVsZW1lbnQoKSA9IGRlZmF1bHQ7
CisgICAgflN0cnVjdHVyZUVsZW1lbnQoKSA9IGRlZmF1bHQ7CiAKICAgICBTdHJ1Y3R1cmVFbGVt
ZW50KGNvbnN0IFN0cnVjdHVyZUVsZW1lbnQmKSA9IGRlbGV0ZTsKICAgICBTdHJ1Y3R1cmVFbGVt
ZW50KFN0cnVjdHVyZUVsZW1lbnQmJikgPSBkZWZhdWx0OwpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoQ2FzZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaENhc2Uu
aAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMU3dpdGNoQ2FzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwyMyArNDAsMjEg
QEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIFN3aXRjaENh
c2UgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNzIFN3aXRjaENhc2UgZmluYWwgOiBwdWJsaWMg
U3RhdGVtZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBT
d2l0Y2hDYXNlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgT3B0aW9uYWw8Q29uc3RhbnRFeHByZXNz
aW9uPiYmIHZhbHVlLCBCbG9jayYmIGJsb2NrKQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlv
bikKKyAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OlN3aXRjaENhc2UpCiAgICAg
ICAgICwgbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkKICAgICAgICAgLCBtX2Jsb2NrKFdURk1vdmUo
YmxvY2spKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5Td2l0Y2hDYXNlKCkgPSBkZWZh
dWx0OworICAgIH5Td2l0Y2hDYXNlKCkgPSBkZWZhdWx0OwogCiAgICAgU3dpdGNoQ2FzZShjb25z
dCBTd2l0Y2hDYXNlJikgPSBkZWxldGU7CiAgICAgU3dpdGNoQ2FzZShTd2l0Y2hDYXNlJiYpID0g
ZGVmYXVsdDsKIAotICAgIGJvb2wgaXNTd2l0Y2hDYXNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQotCiAgICAgT3B0aW9uYWw8Q29uc3RhbnRFeHByZXNzaW9uPiYgdmFsdWUoKSB7
IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgQmxvY2smIGJsb2NrKCkgeyByZXR1cm4gbV9ibG9jazsg
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xT
d2l0Y2hTdGF0ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaAkocmV2aXNpb24gMjQ4NDA0KQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoU3Rh
dGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDIzICszOSwyMSBAQCBuYW1lc3BhY2UgV0hM
U0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgU3dpdGNoU3RhdGVtZW50IDogcHVibGlj
IFN0YXRlbWVudCB7CitjbGFzcyBTd2l0Y2hTdGF0ZW1lbnQgZmluYWwgOiBwdWJsaWMgU3RhdGVt
ZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTd2l0Y2hT
dGF0ZW1lbnQoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiB2
YWx1ZSwgVmVjdG9yPFN3aXRjaENhc2U+JiYgc3dpdGNoQ2FzZXMpCi0gICAgICAgIDogU3RhdGVt
ZW50KGxvY2F0aW9uKQorICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6U3dpdGNo
KQogICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkpCiAgICAgICAgICwgbV9zd2l0Y2hD
YXNlcyhXVEZNb3ZlKHN3aXRjaENhc2VzKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+
U3dpdGNoU3RhdGVtZW50KCkgPSBkZWZhdWx0OworICAgIH5Td2l0Y2hTdGF0ZW1lbnQoKSA9IGRl
ZmF1bHQ7CiAKICAgICBTd2l0Y2hTdGF0ZW1lbnQoY29uc3QgU3dpdGNoU3RhdGVtZW50JikgPSBk
ZWxldGU7CiAgICAgU3dpdGNoU3RhdGVtZW50KFN3aXRjaFN0YXRlbWVudCYmKSA9IGRlZmF1bHQ7
CiAKLSAgICBib29sIGlzU3dpdGNoU3RhdGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQotCiAgICAgRXhwcmVzc2lvbiYgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CiAg
ICAgVmVjdG9yPFN3aXRjaENhc2U+JiBzd2l0Y2hDYXNlcygpIHsgcmV0dXJuIG1fc3dpdGNoQ2Fz
ZXM7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMVGVybmFyeUV4cHJlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oCShyZXZpc2lvbiAy
NDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xU
ZXJuYXJ5RXhwcmVzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywyNCArMzcsMjIgQEAgbmFt
ZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIFRlcm5hcnlFeHByZXNz
aW9uIDogcHVibGljIEV4cHJlc3Npb24geworY2xhc3MgVGVybmFyeUV4cHJlc3Npb24gZmluYWwg
OiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgVGVybmFyeUV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVS
ZWY8RXhwcmVzc2lvbj4mJiBwcmVkaWNhdGUsIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGJvZHlF
eHByZXNzaW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBlbHNlRXhwcmVzc2lvbikKLSAgICAg
ICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24s
IEtpbmQ6OlRlcm5hcnkpCiAgICAgICAgICwgbV9wcmVkaWNhdGUoV1RGTW92ZShwcmVkaWNhdGUp
KQogICAgICAgICAsIG1fYm9keUV4cHJlc3Npb24oV1RGTW92ZShib2R5RXhwcmVzc2lvbikpCiAg
ICAgICAgICwgbV9lbHNlRXhwcmVzc2lvbihXVEZNb3ZlKGVsc2VFeHByZXNzaW9uKSkKICAgICB7
CiAgICAgfQogCi0gICAgdmlydHVhbCB+VGVybmFyeUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7Cisg
ICAgflRlcm5hcnlFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwogCiAgICAgVGVybmFyeUV4cHJlc3Np
b24oY29uc3QgVGVybmFyeUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBUZXJuYXJ5RXhwcmVz
c2lvbihUZXJuYXJ5RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzVGVybmFy
eUV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHBy
ZXNzaW9uJiBwcmVkaWNhdGUoKSB7IHJldHVybiBtX3ByZWRpY2F0ZTsgfQogICAgIEV4cHJlc3Np
b24mIGJvZHlFeHByZXNzaW9uKCkgeyByZXR1cm4gbV9ib2R5RXhwcmVzc2lvbjsgfQogICAgIEV4
cHJlc3Npb24mIGVsc2VFeHByZXNzaW9uKCkgeyByZXR1cm4gbV9lbHNlRXhwcmVzc2lvbjsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMVHlwZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
NjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0hMU0xU
eXBlLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xBU1QuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNU
IHsKKwordm9pZCBUeXBlOjpkZXN0cm95KFR5cGUmIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBl
LmtpbmQoKSkgeworICAgIGNhc2UgS2luZDo6VHlwZVJlZmVyZW5jZToKKyAgICAgICAgZGVsZXRl
ICZkb3duY2FzdDxUeXBlUmVmZXJlbmNlPih0eXBlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBLaW5kOjpQb2ludGVyOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PFBvaW50ZXJUeXBlPih0
eXBlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpBcnJheVJlZmVyZW5jZToKKyAg
ICAgICAgZGVsZXRlICZkb3duY2FzdDxBcnJheVJlZmVyZW5jZVR5cGU+KHR5cGUpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEtpbmQ6OkFycmF5OgorICAgICAgICBkZWxldGUgJmRvd25jYXN0
PEFycmF5VHlwZT4odHlwZSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBLaW5kOjpUeXBl
RGVmaW5pdGlvbjoKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxUeXBlRGVmaW5pdGlvbj4odHlw
ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6U3RydWN0dXJlRGVmaW5pdGlvbjoK
KyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxTdHJ1Y3R1cmVEZWZpbml0aW9uPih0eXBlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpFbnVtZXJhdGlvbkRlZmluaXRpb246CisgICAg
ICAgIGRlbGV0ZSAmZG93bmNhc3Q8RW51bWVyYXRpb25EZWZpbml0aW9uPih0eXBlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246CisgICAgICAg
IGRlbGV0ZSAmZG93bmNhc3Q8TmF0aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlKTsKKyAgICAgICAg
YnJlYWs7CisKKyAgICBjYXNlIEtpbmQ6OkZsb2F0TGl0ZXJhbDoKKyAgICAgICAgZGVsZXRlICZk
b3duY2FzdDxGbG9hdExpdGVyYWxUeXBlPih0eXBlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBLaW5kOjpJbnRlZ2VyTGl0ZXJhbDoKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxJbnRlZ2Vy
TGl0ZXJhbFR5cGU+KHR5cGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6Ok51bGxM
aXRlcmFsOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PE51bGxMaXRlcmFsVHlwZT4odHlwZSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDoK
KyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZT4odHlw
ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworVHlwZSYgVHlwZTo6dW5pZnlOb2RlKCkK
K3sKKyAgICBzd2l0Y2ggKGtpbmQoKSkgeworICAgIGNhc2UgS2luZDo6VHlwZVJlZmVyZW5jZToK
KyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KCp0aGlzKS51bmlmeU5vZGVJ
bXBsKCk7CisgICAgY2FzZSBLaW5kOjpQb2ludGVyOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8
UG9pbnRlclR5cGU+KCp0aGlzKS51bmlmeU5vZGVJbXBsKCk7CisgICAgY2FzZSBLaW5kOjpBcnJh
eVJlZmVyZW5jZToKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFycmF5UmVmZXJlbmNlVHlwZT4o
KnRoaXMpLnVuaWZ5Tm9kZUltcGwoKTsKKyAgICBjYXNlIEtpbmQ6OkFycmF5OgorICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8QXJyYXlUeXBlPigqdGhpcykudW5pZnlOb2RlSW1wbCgpOworCisgICAg
Y2FzZSBLaW5kOjpUeXBlRGVmaW5pdGlvbjoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFR5cGVE
ZWZpbml0aW9uPigqdGhpcykudW5pZnlOb2RlSW1wbCgpOworICAgIGNhc2UgS2luZDo6U3RydWN0
dXJlRGVmaW5pdGlvbjoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFN0cnVjdHVyZURlZmluaXRp
b24+KCp0aGlzKS51bmlmeU5vZGVJbXBsKCk7CisgICAgY2FzZSBLaW5kOjpFbnVtZXJhdGlvbkRl
ZmluaXRpb246CisgICAgICAgIHJldHVybiBkb3duY2FzdDxFbnVtZXJhdGlvbkRlZmluaXRpb24+
KCp0aGlzKS51bmlmeU5vZGVJbXBsKCk7CisgICAgY2FzZSBLaW5kOjpOYXRpdmVUeXBlRGVjbGFy
YXRpb246CisgICAgICAgIHJldHVybiBkb3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KCp0
aGlzKS51bmlmeU5vZGVJbXBsKCk7CisKKyAgICBkZWZhdWx0OiAKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK2Jvb2wgUmVzb2x2YWJsZVR5cGU6OmNh
blJlc29sdmUoY29uc3QgVHlwZSYgdHlwZSkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKGtpbmQoKSkg
eworICAgIGNhc2UgS2luZDo6RmxvYXRMaXRlcmFsOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8
RmxvYXRMaXRlcmFsVHlwZT4oKnRoaXMpLmNhblJlc29sdmUodHlwZSk7CisgICAgY2FzZSBLaW5k
OjpJbnRlZ2VyTGl0ZXJhbDoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEludGVnZXJMaXRlcmFs
VHlwZT4oKnRoaXMpLmNhblJlc29sdmUodHlwZSk7CisgICAgY2FzZSBLaW5kOjpOdWxsTGl0ZXJh
bDoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PE51bGxMaXRlcmFsVHlwZT4oKnRoaXMpLmNhblJl
c29sdmUodHlwZSk7CisgICAgY2FzZSBLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOgorICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU+KCp0aGlzKS5j
YW5SZXNvbHZlKHR5cGUpOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgfQorfQorCit1bnNpZ25lZCBSZXNvbHZhYmxlVHlwZTo6Y29udmVy
c2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmIHR5cGUpIGNvbnN0Cit7CisgICAgc3dpdGNoIChr
aW5kKCkpIHsKKyAgICBjYXNlIEtpbmQ6OkZsb2F0TGl0ZXJhbDoKKyAgICAgICAgcmV0dXJuIGRv
d25jYXN0PEZsb2F0TGl0ZXJhbFR5cGU+KCp0aGlzKS5jb252ZXJzaW9uQ29zdCh0eXBlKTsKKyAg
ICBjYXNlIEtpbmQ6OkludGVnZXJMaXRlcmFsOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8SW50
ZWdlckxpdGVyYWxUeXBlPigqdGhpcykuY29udmVyc2lvbkNvc3QodHlwZSk7CisgICAgY2FzZSBL
aW5kOjpOdWxsTGl0ZXJhbDoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PE51bGxMaXRlcmFsVHlw
ZT4oKnRoaXMpLmNvbnZlcnNpb25Db3N0KHR5cGUpOworICAgIGNhc2UgS2luZDo6VW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbDoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFVuc2lnbmVkSW50ZWdlckxp
dGVyYWxUeXBlPigqdGhpcykuY29udmVyc2lvbkNvc3QodHlwZSk7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK1N0cmluZyBV
bm5hbWVkVHlwZTo6dG9TdHJpbmcoKSBjb25zdAoreworICAgIHN3aXRjaCAoa2luZCgpKSB7Cisg
ICAgY2FzZSBLaW5kOjpUeXBlUmVmZXJlbmNlOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8VHlw
ZVJlZmVyZW5jZT4oKnRoaXMpLnRvU3RyaW5nKCk7CisgICAgY2FzZSBLaW5kOjpQb2ludGVyOgor
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8UG9pbnRlclR5cGU+KCp0aGlzKS50b1N0cmluZygpOwor
ICAgIGNhc2UgS2luZDo6QXJyYXlSZWZlcmVuY2U6CisgICAgICAgIHJldHVybiBkb3duY2FzdDxB
cnJheVJlZmVyZW5jZVR5cGU+KCp0aGlzKS50b1N0cmluZygpOworICAgIGNhc2UgS2luZDo6QXJy
YXk6CisgICAgICAgIHJldHVybiBkb3duY2FzdDxBcnJheVR5cGU+KCp0aGlzKS50b1N0cmluZygp
OworICAgIGRlZmF1bHQ6IAorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KKworfQorCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfSAvLyBuYW1lc3BhY2UgV0hMU0wK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlLmgJKHJldmlzaW9u
IDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksMzAgQEAgbmFtZXNwYWNlIEFTVCB7
CiBjbGFzcyBUeXBlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBUeXBlKCkgPSBkZWZhdWx0OworICAgIGVudW0gY2xhc3MgS2luZCA6IHVpbnQ4X3QgeworICAg
ICAgICAvLyBVbm5hbWVkVHlwZXMKKyAgICAgICAgVHlwZVJlZmVyZW5jZSwKKyAgICAgICAgUG9p
bnRlciwKKyAgICAgICAgQXJyYXlSZWZlcmVuY2UsCisgICAgICAgIEFycmF5LAorICAgICAgICAv
LyBOYW1lZFR5cGVzCisgICAgICAgIFR5cGVEZWZpbml0aW9uLAorICAgICAgICBTdHJ1Y3R1cmVE
ZWZpbml0aW9uLAorICAgICAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24sCisgICAgICAgIE5hdGl2
ZVR5cGVEZWNsYXJhdGlvbiwKKyAgICAgICAgLy8gUmVzb2x2YWJsZVR5cGVzCisgICAgICAgIEZs
b2F0TGl0ZXJhbCwKKyAgICAgICAgSW50ZWdlckxpdGVyYWwsCisgICAgICAgIE51bGxMaXRlcmFs
LAorICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsLAorICAgIH07CisKKyAgICBUeXBlKEtp
bmQga2luZCkKKyAgICAgICAgOiBtX2tpbmQoa2luZCkKKyAgICB7IH0KIAotICAgIHZpcnR1YWwg
flR5cGUoKSA9IGRlZmF1bHQ7CisgICAgflR5cGUoKSA9IGRlZmF1bHQ7CisgICAgc3RhdGljIHZv
aWQgZGVzdHJveShUeXBlJik7CiAKICAgICBleHBsaWNpdCBUeXBlKGNvbnN0IFR5cGUmKSA9IGRl
bGV0ZTsKICAgICBUeXBlKFR5cGUmJikgPSBkZWZhdWx0OwpAQCAtNDksMTEgKzcwLDM2IEBAIHB1
YmxpYzoKICAgICBUeXBlJiBvcGVyYXRvcj0oY29uc3QgVHlwZSYpID0gZGVsZXRlOwogICAgIFR5
cGUmIG9wZXJhdG9yPShUeXBlJiYpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgYm9vbCBpc05h
bWVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVW5u
YW1lZFR5cGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Jl
c29sdmFibGVUeXBlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBLaW5kIGtpbmQoKSBj
b25zdCB7IHJldHVybiBtX2tpbmQ7IH0KKworICAgIGJvb2wgaXNVbm5hbWVkVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIGtpbmQoKSA+PSBLaW5kOjpUeXBlUmVmZXJlbmNlICYmIGtpbmQoKSA8PSBLaW5k
OjpBcnJheTsgfQorICAgIGJvb2wgaXNOYW1lZFR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkg
Pj0gS2luZDo6VHlwZURlZmluaXRpb24gJiYga2luZCgpIDw9IEtpbmQ6Ok5hdGl2ZVR5cGVEZWNs
YXJhdGlvbjsgfQorICAgIGJvb2wgaXNSZXNvbHZhYmxlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtp
bmQoKSA+PSBLaW5kOjpGbG9hdExpdGVyYWwgJiYga2luZCgpIDw9IEtpbmQ6OlVuc2lnbmVkSW50
ZWdlckxpdGVyYWw7IH0KKworICAgIGJvb2wgaXNUeXBlUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1
cm4ga2luZCgpID09IEtpbmQ6OlR5cGVSZWZlcmVuY2U7IH0KKyAgICBib29sIGlzUG9pbnRlclR5
cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6UG9pbnRlcjsgfQorICAgIGJvb2wg
aXNBcnJheVJlZmVyZW5jZVR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6QXJy
YXlSZWZlcmVuY2U7IH0KKyAgICBib29sIGlzQXJyYXlUeXBlKCkgY29uc3QgeyByZXR1cm4ga2lu
ZCgpID09IEtpbmQ6OkFycmF5OyB9CisgICAgYm9vbCBpc1JlZmVyZW5jZVR5cGUoKSBjb25zdCB7
IHJldHVybiBpc1BvaW50ZXJUeXBlKCkgfHwgaXNBcnJheVJlZmVyZW5jZVR5cGUoKTsgfQorCisg
ICAgYm9vbCBpc1R5cGVEZWZpbml0aW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6
OlR5cGVEZWZpbml0aW9uOyB9CisgICAgYm9vbCBpc1N0cnVjdHVyZURlZmluaXRpb24oKSBjb25z
dCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6U3RydWN0dXJlRGVmaW5pdGlvbjsgfQorICAgIGJv
b2wgaXNFbnVtZXJhdGlvbkRlZmluaXRpb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2lu
ZDo6RW51bWVyYXRpb25EZWZpbml0aW9uOyB9CisgICAgYm9vbCBpc05hdGl2ZVR5cGVEZWNsYXJh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpOYXRpdmVUeXBlRGVjbGFyYXRp
b247IH0KKworICAgIGJvb2wgaXNGbG9hdExpdGVyYWxUeXBlKCkgY29uc3QgeyByZXR1cm4ga2lu
ZCgpID09IEtpbmQ6OkZsb2F0TGl0ZXJhbDsgfQorICAgIGJvb2wgaXNJbnRlZ2VyTGl0ZXJhbFR5
cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6SW50ZWdlckxpdGVyYWw7IH0KKyAg
ICBib29sIGlzTnVsbExpdGVyYWxUeXBlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6
Ok51bGxMaXRlcmFsOyB9CisgICAgYm9vbCBpc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKCkg
Y29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw7IH0K
KworICAgIFR5cGUmIHVuaWZ5Tm9kZSgpOworICAgIGNvbnN0IFR5cGUmIHVuaWZ5Tm9kZSgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxUeXBlKj4odGhpcyktPnVuaWZ5
Tm9kZSgpOworICAgIH0KIAogcHJpdmF0ZToKKyAgICBLaW5kIG1fa2luZDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEFTVApAQCAtNjIsOSArMTA4LDIyIEBAIHByaXZhdGU6CiAKIH0KIAorbmFtZXNw
YWNlIHN0ZCB7CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3Qgc3RkOjpkZWZhdWx0X2RlbGV0ZTxXZWJD
b3JlOjpXSExTTDo6QVNUOjpUeXBlPiB7CisgICAgdm9pZCBvcGVyYXRvcigpKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OlR5cGUqIHR5cGUpCisgICAgeworICAgICAgICBXZWJDb3JlOjpXSExTTDo6QVNU
OjpUeXBlOjpkZXN0cm95KCp0eXBlKTsKKyAgICB9Cit9OworCit9CisKICNkZWZpbmUgU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBc
CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldITFNMOjpBU1Q6OlRvVmFs
dWVUeXBlTmFtZSkgXAogICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXSExT
TDo6QVNUOjpUeXBlJiB0eXBlKSB7IHJldHVybiB0eXBlLnByZWRpY2F0ZTsgfSBcCiBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKKwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlRGVmaW5pdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVEZWZp
bml0aW9uLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFR5cGVEZWZpbml0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDM1ICs0MCwyOSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xh
c3MgVHlwZURlZmluaXRpb24gOiBwdWJsaWMgTmFtZWRUeXBlIHsKK2NsYXNzIFR5cGVEZWZpbml0
aW9uIGZpbmFsIDogcHVibGljIE5hbWVkVHlwZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgVHlwZURlZmluaXRpb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBT
dHJpbmcmJiBuYW1lLCBSZWY8VW5uYW1lZFR5cGU+IHR5cGUpCi0gICAgICAgIDogTmFtZWRUeXBl
KGxvY2F0aW9uLCBXVEZNb3ZlKG5hbWUpKQorICAgICAgICA6IE5hbWVkVHlwZShLaW5kOjpUeXBl
RGVmaW5pdGlvbiwgbG9jYXRpb24sIFdURk1vdmUobmFtZSkpCiAgICAgICAgICwgbV90eXBlKFdU
Rk1vdmUodHlwZSkpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgflR5cGVEZWZpbml0aW9u
KCkgPSBkZWZhdWx0OworICAgIH5UeXBlRGVmaW5pdGlvbigpID0gZGVmYXVsdDsKIAogICAgIFR5
cGVEZWZpbml0aW9uKGNvbnN0IFR5cGVEZWZpbml0aW9uJikgPSBkZWxldGU7CiAgICAgVHlwZURl
ZmluaXRpb24oVHlwZURlZmluaXRpb24mJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc1R5cGVE
ZWZpbml0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgVW5uYW1l
ZFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0KIAotICAgIGNvbnN0IFR5cGUmIHVuaWZ5
Tm9kZSgpIGNvbnN0IG92ZXJyaWRlCi0gICAgewotICAgICAgICByZXR1cm4gbV90eXBlLT51bmlm
eU5vZGUoKTsKLSAgICB9Ci0KLSAgICBUeXBlJiB1bmlmeU5vZGUoKSBvdmVycmlkZQorcHJpdmF0
ZToKKyAgICBmcmllbmQgY2xhc3MgVHlwZTsKKyAgICBUeXBlJiB1bmlmeU5vZGVJbXBsKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX3R5cGUtPnVuaWZ5Tm9kZSgpOwogICAgIH0KIAotcHJpdmF0
ZToKICAgICBSZWY8VW5uYW1lZFR5cGU+IG1fdHlwZTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBl
UmVmZXJlbmNlLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2UuaAkod29ya2luZyBjb3B5KQpAQCAt
NTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqIG5ldyBUeXBl
UmVmZXJlbmNlKGxvY2F0aW9uLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHR5cGVBcmd1bWVudHMp
KSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+VHlwZVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKKyAg
ICB+VHlwZVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyBSZWY8VHlwZVJlZmVy
ZW5jZT4gd3JhcChDb2RlTG9jYXRpb24sIE5hbWVkVHlwZSYgcmVzb2x2ZWRUeXBlKTsKIApAQCAt
NzIsMTggKzcyLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKm1fcmVzb2x2ZWRUeXBlOwog
ICAgIH0KIAotICAgIGNvbnN0IFR5cGUmIHVuaWZ5Tm9kZSgpIGNvbnN0IG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBBU1NFUlQobV9yZXNvbHZlZFR5cGUpOwotICAgICAgICByZXR1cm4gbV9yZXNv
bHZlZFR5cGUtPnVuaWZ5Tm9kZSgpOwotICAgIH0KLQotICAgIFR5cGUmIHVuaWZ5Tm9kZSgpIG92
ZXJyaWRlCi0gICAgewotICAgICAgICBBU1NFUlQobV9yZXNvbHZlZFR5cGUpOwotICAgICAgICBy
ZXR1cm4gbV9yZXNvbHZlZFR5cGUtPnVuaWZ5Tm9kZSgpOwotICAgIH0KLQogICAgIHZvaWQgc2V0
UmVzb2x2ZWRUeXBlKE5hbWVkVHlwZSYgcmVzb2x2ZWRUeXBlKQogICAgIHsKICAgICAgICAgbV9y
ZXNvbHZlZFR5cGUgPSAmcmVzb2x2ZWRUeXBlOwpAQCAtMTAzLDEzICs5MSwyMCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiAmdW5pZnlOb2RlKCkgPT0gJm90aGVyLnVuaWZ5Tm9kZSgpOwogICAg
IH0KIAotICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IG92ZXJyaWRlCisgICAgU3RyaW5nIHRv
U3RyaW5nKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3Jlc29sdmVkVHlwZSk7CiAg
ICAgICAgIHJldHVybiBtX3Jlc29sdmVkVHlwZS0+bmFtZSgpOwogICAgIH0KIAogcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgVHlwZTsKKyAgICBUeXBlJiB1bmlmeU5vZGVJbXBsKCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChtX3Jlc29sdmVkVHlwZSk7CisgICAgICAgIHJldHVybiBtX3Jlc29s
dmVkVHlwZS0+dW5pZnlOb2RlKCk7CisgICAgfQorCiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBU
eXBlQXJndW1lbnRzIG1fdHlwZUFyZ3VtZW50czsKICAgICBOYW1lZFR5cGUqIG1fcmVzb2x2ZWRU
eXBlIHsgbnVsbHB0ciB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlLmNwcAkocmV2aXNpb24g
MjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
VW5uYW1lZFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwzMiArNDEsMzYgQEAgbmFtZXNw
YWNlIEFTVCB7CiAKIHVuc2lnbmVkIFVubmFtZWRUeXBlOjpoYXNoKCkgY29uc3QKIHsKLSAgICBz
d2l0Y2ggKG1fa2luZCkgeworICAgIHN3aXRjaCAoa2luZCgpKSB7CiAgICAgY2FzZSBLaW5kOjpU
eXBlUmVmZXJlbmNlOgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8VHlwZVJlZmVyZW5jZT4oKnRo
aXMpLmhhc2goKTsKLSAgICBjYXNlIEtpbmQ6OlBvaW50ZXJUeXBlOgorICAgIGNhc2UgS2luZDo6
UG9pbnRlcjoKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFBvaW50ZXJUeXBlPigqdGhpcykuaGFz
aCgpOwotICAgIGNhc2UgS2luZDo6QXJyYXlSZWZlcmVuY2VUeXBlOgorICAgIGNhc2UgS2luZDo6
QXJyYXlSZWZlcmVuY2U6CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxBcnJheVJlZmVyZW5jZVR5
cGU+KCp0aGlzKS5oYXNoKCk7Ci0gICAgY2FzZSBLaW5kOjpBcnJheVR5cGU6CisgICAgY2FzZSBL
aW5kOjpBcnJheToKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFycmF5VHlwZT4oKnRoaXMpLmhh
c2goKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIH0KIH0KIAogYm9vbCBVbm5hbWVkVHlwZTo6b3BlcmF0b3I9PShjb25zdCBVbm5hbWVk
VHlwZSYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgaWYgKG90aGVyLm1fa2luZCAhPSBtX2tpbmQpCisg
ICAgaWYgKG90aGVyLmtpbmQoKSAhPSBraW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIHN3aXRjaCAobV9raW5kKSB7CisgICAgc3dpdGNoIChraW5kKCkpIHsKICAgICBjYXNlIEtp
bmQ6OlR5cGVSZWZlcmVuY2U6CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxUeXBlUmVmZXJlbmNl
PigqdGhpcykgPT0gZG93bmNhc3Q8VHlwZVJlZmVyZW5jZT4ob3RoZXIpOwotICAgIGNhc2UgS2lu
ZDo6UG9pbnRlclR5cGU6CisgICAgY2FzZSBLaW5kOjpQb2ludGVyOgogICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8UG9pbnRlclR5cGU+KCp0aGlzKSA9PSBkb3duY2FzdDxQb2ludGVyVHlwZT4ob3Ro
ZXIpOwotICAgIGNhc2UgS2luZDo6QXJyYXlSZWZlcmVuY2VUeXBlOgorICAgIGNhc2UgS2luZDo6
QXJyYXlSZWZlcmVuY2U6CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxBcnJheVJlZmVyZW5jZVR5
cGU+KCp0aGlzKSA9PSBkb3duY2FzdDxBcnJheVJlZmVyZW5jZVR5cGU+KG90aGVyKTsKLSAgICBj
YXNlIEtpbmQ6OkFycmF5VHlwZToKKyAgICBjYXNlIEtpbmQ6OkFycmF5OgogICAgICAgICByZXR1
cm4gZG93bmNhc3Q8QXJyYXlUeXBlPigqdGhpcykgPT0gZG93bmNhc3Q8QXJyYXlUeXBlPihvdGhl
cik7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFVubmFtZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuaAkocmV2aXNpb24gMjQ4NDA0KQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNDMgKzQ1LDIzIEBAIGNsYXNzIFVubmFtZWRUeXBl
IDogcHVibGljIFR5cGUsIHB1YmxpYyAKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShVbm5hbWVkVHlwZSk7CiBwdWJsaWM6Ci0gICAgZW51bSBj
bGFzcyBLaW5kIHsKLSAgICAgICAgVHlwZVJlZmVyZW5jZSwKLSAgICAgICAgUG9pbnRlclR5cGUs
Ci0gICAgICAgIEFycmF5UmVmZXJlbmNlVHlwZSwKLSAgICAgICAgQXJyYXlUeXBlCi0gICAgfTsK
LQogICAgIFVubmFtZWRUeXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgS2luZCBraW5kKQotICAg
ICAgICA6IG1fY29kZUxvY2F0aW9uKGxvY2F0aW9uKQotICAgICAgICAsIG1fa2luZChraW5kKQor
ICAgICAgICA6IFR5cGUoa2luZCkKKyAgICAgICAgLCBtX2NvZGVMb2NhdGlvbihsb2NhdGlvbikK
ICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+VW5uYW1lZFR5cGUoKSA9IGRlZmF1bHQ7Ci0K
LSAgICBib29sIGlzVW5uYW1lZFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
Ci0KLSAgICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KLSAgICBib29sIGlz
VHlwZVJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpUeXBlUmVmZXJl
bmNlOyB9Ci0gICAgYm9vbCBpc1BvaW50ZXJUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9raW5kID09
IEtpbmQ6OlBvaW50ZXJUeXBlOyB9Ci0gICAgYm9vbCBpc0FycmF5UmVmZXJlbmNlVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpBcnJheVJlZmVyZW5jZVR5cGU7IH0KLSAgICBi
b29sIGlzQXJyYXlUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9raW5kID09IEtpbmQ6OkFycmF5VHlw
ZTsgfQotICAgIGJvb2wgaXNSZWZlcmVuY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gaXNQb2ludGVy
VHlwZSgpIHx8IGlzQXJyYXlSZWZlcmVuY2VUeXBlKCk7IH0KLQotICAgIHZpcnR1YWwgY29uc3Qg
VHlwZSYgdW5pZnlOb2RlKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KLSAgICB2aXJ0dWFsIFR5
cGUmIHVuaWZ5Tm9kZSgpIHsgcmV0dXJuICp0aGlzOyB9Ci0KICAgICB1bnNpZ25lZCBoYXNoKCkg
Y29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVubmFtZWRUeXBlJikgY29uc3Q7CiAK
LSAgICB2aXJ0dWFsIFN0cmluZyB0b1N0cmluZygpIGNvbnN0ID0gMDsKKyAgICBTdHJpbmcgdG9T
dHJpbmcoKSBjb25zdDsKIAogICAgIGNvbnN0IENvZGVMb2NhdGlvbiYgY29kZUxvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2RlTG9jYXRpb247IH0KIAogcHJpdmF0ZToKKyAgICBmcmllbmQg
Y2xhc3MgVHlwZTsKKyAgICBUeXBlJiB1bmlmeU5vZGVJbXBsKCkgeyByZXR1cm4gKnRoaXM7IH0K
ICAgICBDb2RlTG9jYXRpb24gbV9jb2RlTG9jYXRpb247Ci0gICAgS2luZCBtX2tpbmQ7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBBU1QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVn
ZXJMaXRlcmFsLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaAkod29ya2luZyBj
b3B5KQpAQCAtMzcsMTcgKzM3LDE3IEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBB
U1QgewogCi1jbGFzcyBVbnNpZ25lZEludGVnZXJMaXRlcmFsIDogcHVibGljIEV4cHJlc3Npb24g
eworY2xhc3MgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9u
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBVbnNpZ25lZElu
dGVnZXJMaXRlcmFsKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgdW5zaWduZWQgdmFsdWUpCi0gICAg
ICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9u
LCBLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsKQogICAgICAgICAsIG1fdHlwZShsb2NhdGlv
biwgdmFsdWUpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAgfQogCi0gICAg
dmlydHVhbCB+VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpID0gZGVmYXVsdDsKKyAgICB+VW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbCgpID0gZGVmYXVsdDsKIAogICAgIFVuc2lnbmVkSW50ZWdlckxpdGVy
YWwoY29uc3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYpID0gZGVsZXRlOwogICAgIFVuc2lnbmVk
SW50ZWdlckxpdGVyYWwoVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CkBAIC01
OCw4ICs1OCw2IEBAIHB1YmxpYzoKICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYgdHlw
ZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIHVuc2lnbmVkIHZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV92YWx1ZTsgfQogCi0gICAgYm9vbCBpc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWwoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFs
IGNsb25lKCkgY29uc3QKICAgICB7CiAgICAgICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwgcmVz
dWx0KGNvZGVMb2NhdGlvbigpLCBtX3ZhbHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5jcHAJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdl
ckxpdGVyYWxUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTcgKzQxLDEyIEBAIG5hbWVz
cGFjZSBXSExTTCB7CiBuYW1lc3BhY2UgQVNUIHsKIAogVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5
cGU6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgdW5z
aWduZWQgdmFsdWUpCi0gICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIDogUmVzb2x2YWJsZVR5cGUo
S2luZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkKKyAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAg
LCBtX3ByZWZlcnJlZFR5cGUoVHlwZVJlZmVyZW5jZTo6Y3JlYXRlKGxvY2F0aW9uLCAidWludCJf
c3RyLCBUeXBlQXJndW1lbnRzKCkpKQogewogfQogCi1VbnNpZ25lZEludGVnZXJMaXRlcmFsVHlw
ZTo6flVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKCkgPSBkZWZhdWx0OwotCi1VbnNpZ25lZElu
dGVnZXJMaXRlcmFsVHlwZTo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwotCi1VbnNpZ25lZEludGVnZXJMaXRlcmFsVHlw
ZSYgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU6Om9wZXJhdG9yPShVbnNpZ25lZEludGVnZXJM
aXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7Ci0KIGJvb2wgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5
cGU6OmNhblJlc29sdmUoY29uc3QgVHlwZSYgdHlwZSkgY29uc3QKIHsKICAgICBpZiAoIWlzPE5h
bWVkVHlwZT4odHlwZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdl
ckxpdGVyYWxUeXBlLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDI3ICs0MCwyNSBAQCBuYW1lc3BhY2UgQVNUIHsKIAogY2xhc3Mg
VHlwZVJlZmVyZW5jZTsKIAotY2xhc3MgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUgOiBwdWJs
aWMgUmVzb2x2YWJsZVR5cGUgeworY2xhc3MgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUgZmlu
YWwgOiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKENvZGVMb2NhdGlvbiwg
dW5zaWduZWQgdmFsdWUpOwogCi0gICAgdmlydHVhbCB+VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5
cGUoKTsKKyAgICB+VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoKSA9IGRlZmF1bHQ7CiAKICAg
ICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZShjb25zdCBVbnNpZ25lZEludGVnZXJMaXRlcmFs
VHlwZSYpID0gZGVsZXRlOwotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKFVuc2lnbmVk
SW50ZWdlckxpdGVyYWxUeXBlJiYpOworICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKFVu
c2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKIAogICAgIFVuc2lnbmVkSW50
ZWdlckxpdGVyYWxUeXBlJiBvcGVyYXRvcj0oY29uc3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5
cGUmKSA9IGRlbGV0ZTsKLSAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYgb3BlcmF0b3I9
KFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiYpOwotCi0gICAgYm9vbCBpc1Vuc2lnbmVkSW50
ZWdlckxpdGVyYWxUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIFVu
c2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiBvcGVyYXRvcj0oVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bFR5cGUmJikgPSBkZWZhdWx0OwogCiAgICAgdW5zaWduZWQgdmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlOyB9CiAKICAgICBUeXBlUmVmZXJlbmNlJiBwcmVmZXJyZWRUeXBlKCkgeyByZXR1
cm4gbV9wcmVmZXJyZWRUeXBlOyB9CiAKLSAgICBib29sIGNhblJlc29sdmUoY29uc3QgVHlwZSYp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHVuc2lnbmVkIGNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFt
ZWRUeXBlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5SZXNvbHZlKGNvbnN0IFR5cGUm
KSBjb25zdDsKKyAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYp
IGNvbnN0OwogCiAgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUgY2xvbmUoKSBjb25zdDsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFy
aWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRl
bWVudC5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSwyMiArMzksMjAgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNl
IEFTVCB7CiAKLWNsYXNzIFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50IDogcHVibGljIFN0
YXRlbWVudCB7CitjbGFzcyBWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCBmaW5hbCA6IHB1
YmxpYyBTdGF0ZW1lbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwg
VmFyaWFibGVEZWNsYXJhdGlvbnMmJiB2YXJpYWJsZURlY2xhcmF0aW9ucykKLSAgICAgICAgOiBT
dGF0ZW1lbnQobG9jYXRpb24pCisgICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpW
YXJpYWJsZURlY2xhcmF0aW9ucykKICAgICAgICAgLCBtX3ZhcmlhYmxlRGVjbGFyYXRpb25zKFdU
Rk1vdmUodmFyaWFibGVEZWNsYXJhdGlvbnMpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IH5WYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCgpID0gZGVmYXVsdDsKKyAgICB+VmFyaWFi
bGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoKSA9IGRlZmF1bHQ7CiAKICAgICBWYXJpYWJsZURlY2xh
cmF0aW9uc1N0YXRlbWVudChjb25zdCBWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCYpID0g
ZGVsZXRlOwogICAgIFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KFZhcmlhYmxlRGVjbGFy
YXRpb25zU3RhdGVtZW50JiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNWYXJpYWJsZURlY2xh
cmF0aW9uc1N0YXRlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAg
IFZlY3RvcjxVbmlxdWVSZWY8VmFyaWFibGVEZWNsYXJhdGlvbj4+JiB2YXJpYWJsZURlY2xhcmF0
aW9ucygpIHsgcmV0dXJuIG1fdmFyaWFibGVEZWNsYXJhdGlvbnM7IH0KIAogcHJpdmF0ZToKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxl
UmVmZXJlbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMVmFyaWFibGVSZWZlcmVuY2UuaAkocmV2aXNpb24gMjQ4NDA0KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVSZWZl
cmVuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTYgKzM4LDE2IEBAIG5hbWVzcGFjZSBXSExT
TCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBWYXJpYWJsZVJlZmVyZW5jZSA6IHB1Ymxp
YyBFeHByZXNzaW9uIHsKK2NsYXNzIFZhcmlhYmxlUmVmZXJlbmNlIGZpbmFsIDogcHVibGljIEV4
cHJlc3Npb24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFZh
cmlhYmxlUmVmZXJlbmNlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSkKLSAg
ICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRp
b24sIEtpbmQ6OlZhcmlhYmxlUmVmZXJlbmNlKQogICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5h
bWUpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5WYXJpYWJsZVJlZmVyZW5jZSgpID0g
ZGVmYXVsdDsKKyAgICB+VmFyaWFibGVSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CiAKICAgICBWYXJp
YWJsZVJlZmVyZW5jZShjb25zdCBWYXJpYWJsZVJlZmVyZW5jZSYpID0gZGVsZXRlOwogICAgIFZh
cmlhYmxlUmVmZXJlbmNlKFZhcmlhYmxlUmVmZXJlbmNlJiYpID0gZGVmYXVsdDsKQEAgLTYwLDgg
KzYwLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIGJv
b2wgaXNWYXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
LQogICAgIFN0cmluZyYgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQogCiAgICAgVmFyaWFibGVE
ZWNsYXJhdGlvbiogdmFyaWFibGUoKSB7IHJldHVybiBtX3ZhcmlhYmxlOyB9CkBAIC03Myw3ICs3
MSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBWYXJpYWJsZVJlZmVyZW5jZShDb2RlTG9j
YXRpb24gbG9jYXRpb24pCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAg
OiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpWYXJpYWJsZVJlZmVyZW5jZSkKICAgICB7CiAg
ICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xXaGlsZUxvb3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xXaGlsZUxvb3AuaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDIzICszOCwyMSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3Bh
Y2UgQVNUIHsKIAotY2xhc3MgV2hpbGVMb29wIDogcHVibGljIFN0YXRlbWVudCB7CitjbGFzcyBX
aGlsZUxvb3AgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBXaGlsZUxvb3AoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBV
bmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBjb25kaXRpb25hbCwgVW5pcXVlUmVmPFN0YXRlbWVudD4m
JiBib2R5KQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1l
bnQobG9jYXRpb24sIEtpbmQ6OldoaWxlTG9vcCkKICAgICAgICAgLCBtX2NvbmRpdGlvbmFsKFdU
Rk1vdmUoY29uZGl0aW9uYWwpKQogICAgICAgICAsIG1fYm9keShXVEZNb3ZlKGJvZHkpKQogICAg
IHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5XaGlsZUxvb3AoKSA9IGRlZmF1bHQ7CisgICAgfldo
aWxlTG9vcCgpID0gZGVmYXVsdDsKIAogICAgIFdoaWxlTG9vcChjb25zdCBXaGlsZUxvb3AmKSA9
IGRlbGV0ZTsKICAgICBXaGlsZUxvb3AoV2hpbGVMb29wJiYpID0gZGVmYXVsdDsKIAotICAgIGJv
b2wgaXNXaGlsZUxvb3AoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBF
eHByZXNzaW9uJiBjb25kaXRpb25hbCgpIHsgcmV0dXJuIG1fY29uZGl0aW9uYWw7IH0KICAgICBT
dGF0ZW1lbnQmIGJvZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlw
ZU5hbWVyLmNwcAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
Miw5ICs3Miw5IEBAIHB1YmxpYzoKICAgICAKICAgICBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kIGtp
bmQoKSB7IHJldHVybiBtX2tpbmQ7IH0KICAgICBib29sIGlzUmVmZXJlbmNlVHlwZU5hbWVOb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9raW5kID09IEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlR5cGVS
ZWZlcmVuY2U7IH0KLSAgICBib29sIGlzUG9pbnRlclR5cGVOYW1lTm9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fa2luZCA9PSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQb2ludGVyVHlwZTsgfQotICAg
IGJvb2wgaXNBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fa2lu
ZCA9PSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVyZW5jZVR5cGU7IH0KLSAgICBi
b29sIGlzQXJyYXlUeXBlTmFtZU5vZGUoKSBjb25zdCB7IHJldHVybiBtX2tpbmQgPT0gQVNUOjpV
bm5hbWVkVHlwZTo6S2luZDo6QXJyYXlUeXBlOyB9CisgICAgYm9vbCBpc1BvaW50ZXJUeXBlTmFt
ZU5vZGUoKSBjb25zdCB7IHJldHVybiBtX2tpbmQgPT0gQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6
UG9pbnRlcjsgfQorICAgIGJvb2wgaXNBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fa2luZCA9PSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVyZW5j
ZTsgfQorICAgIGJvb2wgaXNBcnJheVR5cGVOYW1lTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fa2lu
ZCA9PSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheTsgfQogCiAgICAgQmFzZVR5cGVOYW1l
Tm9kZSogcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KICAgICBNYW5nbGVkVHlwZU5hbWUg
bWFuZ2xlZE5hbWUoKSBjb25zdCB7IHJldHVybiBtX21hbmdsZWROYW1lOyB9CkBAIC04OSw3ICs4
OSw3IEBAIGNsYXNzIEFycmF5VHlwZU5hbWVOb2RlIGZpbmFsIDogcHVibGljIEIKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBBcnJheVR5cGVOYW1lTm9kZShCYXNl
VHlwZU5hbWVOb2RlKiBwYXJlbnQsIE1hbmdsZWRUeXBlTmFtZSYmIG1hbmdsZWROYW1lLCB1bnNp
Z25lZCBudW1FbGVtZW50cykKLSAgICAgICAgOiBCYXNlVHlwZU5hbWVOb2RlKHBhcmVudCwgV1RG
TW92ZShtYW5nbGVkTmFtZSksIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5VHlwZSkKKyAg
ICAgICAgOiBCYXNlVHlwZU5hbWVOb2RlKHBhcmVudCwgV1RGTW92ZShtYW5nbGVkTmFtZSksIEFT
VDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5KQogICAgICAgICAsIG1fbnVtRWxlbWVudHMobnVt
RWxlbWVudHMpCiAgICAgewogICAgIH0KQEAgLTEwNCw3ICsxMDQsNyBAQCBjbGFzcyBBcnJheVJl
ZmVyZW5jZVR5cGVOYW1lTm9kZSBmaW5hbCA6CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgQXJyYXlSZWZlcmVuY2VUeXBlTmFtZU5vZGUoQmFzZVR5cGVOYW1lTm9k
ZSogcGFyZW50LCBNYW5nbGVkVHlwZU5hbWUmJiBtYW5nbGVkTmFtZSwgQVNUOjpBZGRyZXNzU3Bh
Y2UgYWRkcmVzc1NwYWNlKQotICAgICAgICA6IEJhc2VUeXBlTmFtZU5vZGUocGFyZW50LCBXVEZN
b3ZlKG1hbmdsZWROYW1lKSwgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2VU
eXBlKQorICAgICAgICA6IEJhc2VUeXBlTmFtZU5vZGUocGFyZW50LCBXVEZNb3ZlKG1hbmdsZWRO
YW1lKSwgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2UpCiAgICAgICAgICwg
bV9hZGRyZXNzU3BhY2UoYWRkcmVzc1NwYWNlKQogICAgIHsKICAgICB9CkBAIC0xMTksNyArMTE5
LDcgQEAgY2xhc3MgUG9pbnRlclR5cGVOYW1lTm9kZSBmaW5hbCA6IHB1YmxpYwogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFBvaW50ZXJUeXBlTmFtZU5vZGUoQmFz
ZVR5cGVOYW1lTm9kZSogcGFyZW50LCBNYW5nbGVkVHlwZU5hbWUmJiBtYW5nbGVkTmFtZSwgQVNU
OjpBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlKQotICAgICAgICA6IEJhc2VUeXBlTmFtZU5vZGUo
cGFyZW50LCBXVEZNb3ZlKG1hbmdsZWROYW1lKSwgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9p
bnRlclR5cGUpCisgICAgICAgIDogQmFzZVR5cGVOYW1lTm9kZShwYXJlbnQsIFdURk1vdmUobWFu
Z2xlZE5hbWUpLCBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQb2ludGVyKQogICAgICAgICAsIG1f
YWRkcmVzc1NwYWNlKGFkZHJlc3NTcGFjZSkKICAgICB7CiAgICAgfQpAQCAtMjc0LDE4ICsyNzQs
MjAgQEAgc3RkOjp1bmlxdWVfcHRyPEJhc2VUeXBlTmFtZU5vZGU+IFR5cGVOYQogICAgICAgICBh
dXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8QVNUOjpUeXBlUmVmZXJlbmNlPih1bm5hbWVk
VHlwZSk7CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlZmVyZW5jZVR5cGVOYW1l
Tm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCB0eXBlUmVmZXJlbmNlLnJlc29s
dmVkVHlwZSgpKTsKICAgICB9Ci0gICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQb2lu
dGVyVHlwZTogeworICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlcjogewog
ICAgICAgICBhdXRvJiBwb2ludGVyVHlwZSA9IGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KHVu
bmFtZWRUeXBlKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9pbnRlclR5cGVO
YW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBwb2ludGVyVHlwZS5hZGRy
ZXNzU3BhY2UoKSk7CiAgICAgfQotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJy
YXlSZWZlcmVuY2VUeXBlOiB7CisgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJh
eVJlZmVyZW5jZTogewogICAgICAgICBhdXRvJiBhcnJheVJlZmVyZW5jZVR5cGUgPSBkb3duY2Fz
dDxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpOwogICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5l
cmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJheVJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkpOwog
ICAgIH0KLSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5VHlwZTogeworICAg
IGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXk6IHsKICAgICAgICAgYXV0byYgYXJy
YXlUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRUeXBlKTsKICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXJyYXlUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJh
dGVOZXh0VHlwZU5hbWUoKSwgYXJyYXlUeXBlLm51bUVsZW1lbnRzKCkpOwogICAgIH0KKyAgICBk
ZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIH0K
IApAQCAtMjk0LDEyICsyOTYsMTQgQEAgc3RhdGljIEFTVDo6VW5uYW1lZFR5cGUqIHBhcmVudChB
U1Q6OlVubgogICAgIHN3aXRjaCAodW5uYW1lZFR5cGUua2luZCgpKSB7CiAgICAgY2FzZSBBU1Q6
OlVubmFtZWRUeXBlOjpLaW5kOjpUeXBlUmVmZXJlbmNlOgogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlBvaW50ZXJUeXBlOgorICAgIGNh
c2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlcjoKICAgICAgICAgcmV0dXJuICZkb3du
Y2FzdDxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVHlwZSkuZWxlbWVudFR5cGUoKTsKLSAgICBj
YXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5UmVmZXJlbmNlVHlwZToKKyAgICBjYXNl
IEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5UmVmZXJlbmNlOgogICAgICAgICByZXR1cm4g
JmRvd25jYXN0PEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSkuZWxlbWVudFR5
cGUoKTsKLSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5VHlwZToKKyAgICBj
YXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5OgogICAgICAgICByZXR1cm4gJmRvd25j
YXN0PEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSkudHlwZSgpOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogfQogCkBAIC0zNjEs
MTMgKzM2NSwxMyBAQCB2b2lkIFR5cGVOYW1lcjo6ZW1pdFVubmFtZWRUeXBlRGVmaW5pdGlvCiAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInR5cGVkZWYgIiwgbWFuZ2xlZE5h
bWVGb3JUeXBlKG5hbWVkVHlwZSksICcgJywgYmFzZVR5cGVOYW1lTm9kZS5tYW5nbGVkTmFtZSgp
LCAiO1xuIik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5
cGU6OktpbmQ6OlBvaW50ZXJUeXBlOiB7CisgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5k
OjpQb2ludGVyOiB7CiAgICAgICAgIGF1dG8mIHBvaW50ZXJUeXBlID0gZG93bmNhc3Q8UG9pbnRl
clR5cGVOYW1lTm9kZT4oYmFzZVR5cGVOYW1lTm9kZSk7CiAgICAgICAgIEFTU0VSVChiYXNlVHlw
ZU5hbWVOb2RlLnBhcmVudCgpKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZCgidHlwZWRlZiAiLCB0b1N0cmluZyhwb2ludGVyVHlwZS5hZGRyZXNzU3BhY2UoKSksICcgJywg
cG9pbnRlclR5cGUucGFyZW50KCktPm1hbmdsZWROYW1lKCksICIqICIsIHBvaW50ZXJUeXBlLm1h
bmdsZWROYW1lKCksICI7XG4iKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgQVNU
OjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2VUeXBlOiB7CisgICAgY2FzZSBBU1Q6
OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVyZW5jZTogewogICAgICAgICBhdXRvJiBhcnJh
eVJlZmVyZW5jZVR5cGUgPSBkb3duY2FzdDxBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZT4oYmFz
ZVR5cGVOYW1lTm9kZSk7CiAgICAgICAgIEFTU0VSVChiYXNlVHlwZU5hbWVOb2RlLnBhcmVudCgp
KTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKQEAgLTM3OCwxMiArMzgy
LDE0IEBAIHZvaWQgVHlwZU5hbWVyOjplbWl0VW5uYW1lZFR5cGVEZWZpbml0aW8KICAgICAgICAg
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2lu
ZDo6QXJyYXlUeXBlOiB7CisgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheTog
ewogICAgICAgICBhdXRvJiBhcnJheVR5cGUgPSBkb3duY2FzdDxBcnJheVR5cGVOYW1lTm9kZT4o
YmFzZVR5cGVOYW1lTm9kZSk7CiAgICAgICAgIEFTU0VSVChiYXNlVHlwZU5hbWVOb2RlLnBhcmVu
dCgpKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgidHlwZWRlZiBhcnJh
eTwiLCBhcnJheVR5cGUucGFyZW50KCktPm1hbmdsZWROYW1lKCksICIsICIsIGFycmF5VHlwZS5u
dW1FbGVtZW50cygpLCAiPiAiLCBhcnJheVR5cGUubWFuZ2xlZE5hbWUoKSwgIjtcbiIpOwogICAg
ICAgICBicmVhazsKICAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICB9CiAKICAgICBlbWl0dGVkVW5uYW1lZFR5cGVzLmFkZCgmYmFz
ZVR5cGVOYW1lTm9kZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIy
MzEsNyArMjIzMSw2IEBACiAJCTdDODEzOUE4MUVENjI4NzQwMENFMjZFOCAvKiBKU0RPTU9wZXJh
dGlvblJldHVybmluZ1Byb21pc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDODEzOUE1MUVENjI4MUQwMENFMjZFOCAvKiBKU0RPTU9wZXJhdGlvblJl
dHVybmluZ1Byb21pc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3QzgxMzlBQTFFRDY2MDRCMDBDRTI2RTggLyogSlNET01DYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0M4MTM5QTkxRUQ2MkRGMjAwQ0UyNkU4IC8qIEpTRE9NQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
QzgzREU4NjFEMDRDQzVEMDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzgzREU4NTFEMDRDQkQ0MDBGRUJDRjMg
LyogU3ByaW5nU29sdmVyLmggKi87IH07Ci0JCTdDODVCMjAyMjJGQjA0ODUwMDMwNjg0RiAvKiBX
SExTTFVubmFtZWRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDODVCMjAxMjJGQjA0ODUwMDMwNjg0RiAvKiBXSExTTFVubmFtZWRUeXBlLmNw
cCAqLzsgfTsKIAkJN0M4RTM0QUQxRTRBMzNBRjAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEFueS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4RTM0OTIx
RTRBMzM4RTAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEFueS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDOEUzNEFFMUU0QTMzQUYwMDU0Q0UyMyAv
KiBKU0RPTUNvbnZlcnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzhFMzQ5MzFFNEEzMzhFMDA1NENFMjMgLyogSlNET01Db252ZXJ0QmFzZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDOEUz
NEFGMUU0QTMzQUYwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRCb29sZWFuLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzhFMzQ5NDFFNEEzMzhFMDA1NENF
MjMgLyogSlNET01Db252ZXJ0Qm9vbGVhbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC04MzE1LDYgKzgzMTQsNyBAQAogCQk1MjEzMUU1QTFDNEYx
NTYxMDAzM0Y4MDIgLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjE1ODYyQzIyOTM3N0I3MDA1OTI1
RUYgLyogV0hMU0xBU1QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xBU1QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTIyQkFCOTYyMkU2QTM2MjAwQzU0Q0U5IC8qIFdITFNMQ29kZUxv
Y2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ29kZUxvY2F0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUyMkQwN0EzMjJGQkFCNDMwMEI5MDVCRSAvKiBXSExTTEV4cHJl
c3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xFeHByZXNzaW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTIyREEzRDMyMjlFMUQzOTAwNDJEMTUxIC8qIFdITFNM
R2xvYmFsVmFyaWFibGVSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xHbG9iYWxWYXJp
YWJsZVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjJFMUExNzIy
OTdENkQ0MDBFNUQzNkEgLyogV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyMkUxQTE5MjI5N0Q2RDQwMEU1RDM2QSAvKiBXSExT
TFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQcmVzZXJ2
ZVZhcmlhYmxlTGlmZXRpbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzA4
OSw2ICsxNzA4OSw3IEBACiAJCQkJQzIxQkY3MjYyMUNEODlFMzAwMjI3OTc5IC8qIFdITFNMRW51
bWVyYXRpb25NZW1iZXIuaCAqLywKIAkJCQlDMjFCRjcwMjIxQ0Q4OUM0MDAyMjc5NzkgLyogV0hM
U0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaCAqLywKIAkJCQlDMjFCRjcwQzIxQ0Q4OUNDMDAy
Mjc5NzkgLyogV0hMU0xFeHByZXNzaW9uLmggKi8sCisJCQkJNTIyRDA3QTMyMkZCQUI0MzAwQjkw
NUJFIC8qIFdITFNMRXhwcmVzc2lvbi5jcHAgKi8sCiAJCQkJQzIxQkY3MDAyMUNEODlDMjAwMjI3
OTc5IC8qIFdITFNMRmFsbHRocm91Z2guaCAqLywKIAkJCQlDMjFCRjczNTIxQ0Q4OUYyMDAyMjc5
NzkgLyogV0hMU0xGbG9hdExpdGVyYWwuaCAqLywKIAkJCQkxQ0I2OUIzODIxREYwM0UxMDA2RTg0
NkEgLyogV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcCAqLywKQEAgLTMzNTI0LDcgKzMzNTI1LDYg
QEAKIAkJCQlGMTIxNzFGNTE2QThDRUQyMDAwMDUzQ0EgLyogV2ViVlRURWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1RDIxQTgwMjEzRUNFNURGMDBCQjcwNjQgLyogV2ViVlRUUGFyc2Vy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIxMEI2OTgxMTQwQzE3NDAwMEJDMUMyNiAvKiBXZWJW
VFRUb2tlbml6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJN0M4NUIyMDIyMkZCMDQ4NTAwMzA2
ODRGIC8qIFdITFNMVW5uYW1lZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE0ODMyQzIx
ODdGNjVDNzAwREE2M0E2IC8qIFdLVXRpbGl0aWVzLmMgaW4gU291cmNlcyAqLywKIAkJCQlBODMz
QzdDQzBBMkNGMDc0MDBENTc2NjQgLyogWExpbmtOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBODMzQzgwQzBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8s
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgJKHJl
dmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDcgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBXVEY6OlJlZkNvdW50ZWQ8V29ya2VyU2NyaXB0TG9hZGVyPjsK
KyAgICBmcmllbmQgc3RydWN0IHN0ZDo6ZGVmYXVsdF9kZWxldGU8V29ya2VyU2NyaXB0TG9hZGVy
PjsKIAogICAgIFdvcmtlclNjcmlwdExvYWRlcigpOwogICAgIH5Xb3JrZXJTY3JpcHRMb2FkZXIo
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375883</attachid>
            <date>2019-08-08 19:55:30 -0700</date>
            <delta_ts>2019-08-09 10:14:21 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>136752</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9SZWZDb3VudGVkLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XVEYvd3Rm
L1JlZkNvdW50ZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDEzICsxMzYsMTMgQEAgaW5saW5l
IHZvaWQgYWRvcHRlZChSZWZDb3VudGVkQmFzZSogb2JqZQogfQogI2VuZGlmCiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGNsYXNzIFJlZkNvdW50ZWQgOiBwdWJsaWMgUmVmQ291bnRlZEJhc2Ugewor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRGVsZXRlciA9IHN0ZDo6ZGVmYXVsdF9kZWxl
dGU8VD4+IGNsYXNzIFJlZkNvdW50ZWQgOiBwdWJsaWMgUmVmQ291bnRlZEJhc2UgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFJlZkNvdW50ZWQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICB2b2lkIGRlcmVmKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChkZXJl
ZkJhc2UoKSkKLSAgICAgICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxjb25zdCBUKj4odGhpcyk7
CisgICAgICAgICAgICBEZWxldGVyKCkoY29uc3RfY2FzdDxUKj4oc3RhdGljX2Nhc3Q8Y29uc3Qg
VCo+KHRoaXMpKSk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9V
bmlxdWVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAkocmV2
aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDEwICs0MCwxMSBAQCBVbmlxdWVSZWY8VD4gbWFrZVVuaXF1ZVJlZihBcmdzJiYu
Li4gYXJnCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjbGFzcyBVbmlxdWVSZWYgeworICAgIHVz
aW5nIERlbGV0ZXIgPSBzdGQ6OmRlZmF1bHRfZGVsZXRlPFQ+OwogcHVibGljOgogICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBVPgogICAgIFVuaXF1ZVJlZihVbmlxdWVSZWY8VT4mJiBvdGhlcikKLSAg
ICAgICAgOiBtX3JlZihXVEZNb3ZlKG90aGVyLm1fcmVmKSkKKyAgICAgICAgOiBtX3JlZihvdGhl
ci5tX3JlZi5yZWxlYXNlKCkpCiAgICAgewogICAgICAgICBBU1NFUlQobV9yZWYpOwogICAgIH0K
QEAgLTYwLDE5ICs2MSwyMCBAQCBwdWJsaWM6CiAgICAgb3BlcmF0b3IgVCYoKSB7IEFTU0VSVCht
X3JlZik7IHJldHVybiAqbV9yZWY7IH0KICAgICBvcGVyYXRvciBjb25zdCBUJigpIGNvbnN0IHsg
QVNTRVJUKG1fcmVmKTsgcmV0dXJuICptX3JlZjsgfQogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFQ+
IG1vdmVUb1VuaXF1ZVB0cigpIHsgcmV0dXJuIFdURk1vdmUobV9yZWYpOyB9CisgICAgc3RkOjp1
bmlxdWVfcHRyPFQsIERlbGV0ZXI+IG1vdmVUb1VuaXF1ZVB0cigpIHsgcmV0dXJuIFdURk1vdmUo
bV9yZWYpOyB9CiAKIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MuLi4gQXJn
cz4gZnJpZW5kIFVuaXF1ZVJlZjxVPiBtYWtlVW5pcXVlUmVmKEFyZ3MmJi4uLik7CiAgICAgdGVt
cGxhdGU8Y2xhc3MgVT4gZnJpZW5kIGNsYXNzIFVuaXF1ZVJlZjsKIAogICAgIFVuaXF1ZVJlZihU
JiBvdGhlcikKLSAgICAgICAgOiBtX3JlZigmb3RoZXIpCisgICAgICAgIDogbV9yZWYoJm90aGVy
LCBEZWxldGVyKCkpCiAgICAgewogICAgICAgICBBU1NFUlQobV9yZWYpOwogICAgIH0KIAotICAg
IHN0ZDo6dW5pcXVlX3B0cjxUPiBtX3JlZjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VCwgRGVsZXRl
cj4gbV9yZWY7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YobV9yZWYpID09IHNpemVvZih1aW50
cHRyX3QpLCAiRG9uJ3Qgd3JpdGUgc3RhdGVmdWwgZGVsZXRlcnMiKTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zNDIsNiArMzQyLDcgQEAg
TW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVUeQogTW9kdWxlcy93ZWJncHUv
V0hMU0wvTWV0YWwvV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuY3BwCiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmNwcAogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50LmNwcAorTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRXhwcmVzc2lvbi5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1
aWx0SW5TZW1hbnRpYy5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc291cmNl
U2VtYW50aWMuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlv
bkNvbnN0YW50U2VtYW50aWMuY3BwCkBAIC0zNTAsOSArMzUxLDEyIEBAIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXIKIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEludGVnZXJMaXRlcmFsVHlwZS5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51
bGxMaXRlcmFsVHlwZS5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVk
SW50ZWdlckxpdGVyYWxUeXBlLmNwcAorTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3Rh
dGVtZW50LmNwcAorTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5jcHAKIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2UuY3BwCiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xVbm5hbWVkVHlwZS5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJl
cGFyZS5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5jcHAK
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAJKHJldmlzaW9uIDI0ODQwNCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQ5NCw3ICsxNDk0LDcgQEAgYXV0byBQYXJzZXI6OnBhcnNlU3Vm
Zml4T3BlcmF0b3IoVW5pcXVlUgogICAgIH0KICAgICBjYXNlIFRva2VuOjpUeXBlOjpQbHVzUGx1
czogewogICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJldmlvdXMtPmNvZGVMb2NhdGlv
bigpLCAqc3VmZml4KTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBBU1Q6OlJlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb246OmNyZWF0ZShsb2NhdGlvbiwgV1RGTW92ZShwcmV2aW91cykpOworICAgICAg
ICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNz
aW9uPihsb2NhdGlvbiwgV1RGTW92ZShwcmV2aW91cykpOwogICAgICAgICBWZWN0b3I8VW5pcXVl
UmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7CiAgICAgICAgIGNhbGxBcmd1bWVu
dHMuYXBwZW5kKHJlc3VsdC0+b2xkVmFyaWFibGVSZWZlcmVuY2UoKSk7CiAgICAgICAgIHJlc3Vs
dC0+c2V0TmV3VmFsdWVFeHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lv
bj4obG9jYXRpb24sICJvcGVyYXRvcisrIl9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpKTsK
QEAgLTE1MDQsNyArMTUwNCw3IEBAIGF1dG8gUGFyc2VyOjpwYXJzZVN1ZmZpeE9wZXJhdG9yKFVu
aXF1ZVIKICAgICBkZWZhdWx0OiB7CiAgICAgICAgIEFTU0VSVChzdWZmaXgtPnR5cGUgPT0gVG9r
ZW46OlR5cGU6Ok1pbnVzTWludXMpOwogICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJl
dmlvdXMtPmNvZGVMb2NhdGlvbigpLCAqc3VmZml4KTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBB
U1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246OmNyZWF0ZShsb2NhdGlvbiwgV1RGTW92ZShw
cmV2aW91cykpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpSZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShwcmV2aW91cykpOwogICAg
ICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7CiAg
ICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKHJlc3VsdC0+b2xkVmFyaWFibGVSZWZlcmVuY2Uo
KSk7CiAgICAgICAgIHJlc3VsdC0+c2V0TmV3VmFsdWVFeHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8
QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvci0tIl9zdHIsIFdURk1vdmUo
Y2FsbEFyZ3VtZW50cykpKTsKQEAgLTE2MDYsNyArMTYwNiw3IEBAIGF1dG8gUGFyc2VyOjpjb21w
bGV0ZUFzc2lnbm1lbnQoVW5pcXVlUmUKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgYXV0
byByZXN1bHQgPSBBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246OmNyZWF0ZShsb2NhdGlv
biwgV1RGTW92ZShsZWZ0KSk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6
UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUobGVmdCkpOwogICAg
IFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FsbEFyZ3VtZW50czsKICAgICBj
YWxsQXJndW1lbnRzLmFwcGVuZChyZXN1bHQtPm9sZFZhcmlhYmxlUmVmZXJlbmNlKCkpOwogICAg
IGNhbGxBcmd1bWVudHMuYXBwZW5kKFdURk1vdmUoKnJpZ2h0KSk7CkBAIC0xODk4LDcgKzE4OTgs
NyBAQCBhdXRvIFBhcnNlcjo6cGFyc2VQb3NzaWJsZVByZWZpeChib29sICppCiAgICAgICAgIGNh
c2UgVG9rZW46OlR5cGU6OlBsdXNQbHVzOiB7CiAgICAgICAgICAgICBpZiAoaXNFZmZlY3RmdWwp
CiAgICAgICAgICAgICAgICAgKmlzRWZmZWN0ZnVsID0gdHJ1ZTsKLSAgICAgICAgICAgIGF1dG8g
cmVzdWx0ID0gQVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpjcmVhdGUobG9jYXRpb24s
IFdURk1vdmUoKm5leHQpKTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZVJl
ZjxBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKCpuZXh0
KSk7CiAgICAgICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxB
cmd1bWVudHM7CiAgICAgICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChyZXN1bHQtPm9sZFZh
cmlhYmxlUmVmZXJlbmNlKCkpOwogICAgICAgICAgICAgcmVzdWx0LT5zZXROZXdWYWx1ZUV4cHJl
c3Npb24obWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJh
dG9yKysiX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSkpOwpAQCAtMTkwOCw3ICsxOTA4LDcg
QEAgYXV0byBQYXJzZXI6OnBhcnNlUG9zc2libGVQcmVmaXgoYm9vbCAqaQogICAgICAgICBjYXNl
IFRva2VuOjpUeXBlOjpNaW51c01pbnVzOiB7CiAgICAgICAgICAgICBpZiAoaXNFZmZlY3RmdWwp
CiAgICAgICAgICAgICAgICAgKmlzRWZmZWN0ZnVsID0gdHJ1ZTsKLSAgICAgICAgICAgIGF1dG8g
cmVzdWx0ID0gQVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpjcmVhdGUobG9jYXRpb24s
IFdURk1vdmUoKm5leHQpKTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZVJl
ZjxBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKCpuZXh0
KSk7CiAgICAgICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxB
cmd1bWVudHM7CiAgICAgICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChyZXN1bHQtPm9sZFZh
cmlhYmxlUmVmZXJlbmNlKCkpOwogICAgICAgICAgICAgcmVzdWx0LT5zZXROZXdWYWx1ZUV4cHJl
c3Npb24obWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJh
dG9yLS0iX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSkpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3BwCShyZXZp
c2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFByZXBhcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw5ICs2Miw5IEBAIG5hbWVzcGFjZSBX
SExTTCB7CiBzdGF0aWMgY29uc3RleHByIGJvb2wgZHVtcEFTVEJlZm9yZUVhY2hQYXNzID0gZmFs
c2U7CiBzdGF0aWMgY29uc3RleHByIGJvb2wgZHVtcEFTVEFmdGVyUGFyc2luZyA9IGZhbHNlOwog
c3RhdGljIGNvbnN0ZXhwciBib29sIGR1bXBBU1RBdEVuZCA9IGZhbHNlOwotc3RhdGljIGNvbnN0
ZXhwciBib29sIGFsd2F5c0R1bXBQYXNzRmFpbHVyZXMgPSBmYWxzZTsKK3N0YXRpYyBjb25zdGV4
cHIgYm9vbCBhbHdheXNEdW1wUGFzc0ZhaWx1cmVzID0gdHJ1ZTsKIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBkdW1wUGFzc0ZhaWx1cmUgPSBkdW1wQVNUQmVmb3JlRWFjaFBhc3MgfHwgZHVtcEFTVEFm
dGVyUGFyc2luZyB8fCBkdW1wQVNUQXRFbmQgfHwgYWx3YXlzRHVtcFBhc3NGYWlsdXJlczsKLXN0
YXRpYyBjb25zdGV4cHIgYm9vbCBkdW1wUGhhc2VUaW1lcyA9IGZhbHNlOworc3RhdGljIGNvbnN0
ZXhwciBib29sIGR1bXBQaGFzZVRpbWVzID0gdHJ1ZTsKIAogc3RhdGljIGNvbnN0ZXhwciBib29s
IHBhcnNlRnVsbFN0YW5kYXJkTGlicmFyeSA9IGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHAJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0
aW1lcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBzdHJ1Y3RWYXJpYWJsZURlY2xhcmF0aW9ucy5hcHBlbmQoV1RGTW92ZShzdHJ1Y3RW
YXJpYWJsZURlY2xhcmF0aW9uKSk7CiAgICAgICAgICAgICBhdXRvIHN0cnVjdERlY2xhcmF0aW9u
U3RhdGVtZW50ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVt
ZW50PihmdW5jdGlvbkRlZmluaXRpb24uY29kZUxvY2F0aW9uKCksIFdURk1vdmUoc3RydWN0VmFy
aWFibGVEZWNsYXJhdGlvbnMpKTsKIAotICAgICAgICAgICAgYXV0byBtYWtlUG9pbnRlckV4cHJl
c3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uPihmdW5j
dGlvbkRlZmluaXRpb24uY29kZUxvY2F0aW9uKCksIFdURk1vdmUoc3RydWN0VmFyaWFibGVSZWZl
cmVuY2UpLCBBU1Q6OkFkZHJlc3NFc2NhcGVNb2RlOjpEb2VzTm90RXNjYXBlKTsKKyAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBU1Q6OkV4cHJlc3Npb24+IG1ha2VQb2ludGVyRXhwcmVzc2lv
bihuZXcgQVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24oZnVuY3Rpb25EZWZpbml0aW9uLmNvZGVM
b2NhdGlvbigpLCBXVEZNb3ZlKHN0cnVjdFZhcmlhYmxlUmVmZXJlbmNlKSwgQVNUOjpBZGRyZXNz
RXNjYXBlTW9kZTo6RG9lc05vdEVzY2FwZSkpOwogICAgICAgICAgICAgbWFrZVBvaW50ZXJFeHBy
ZXNzaW9uLT5zZXRUeXBlKG1fcG9pbnRlclRvU3RydWN0VHlwZS5jb3B5UmVmKCkpOwogICAgICAg
ICAgICAgbWFrZVBvaW50ZXJFeHByZXNzaW9uLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OlJpZ2h0
VmFsdWUoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMVmlzaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xWaXNpdG9yLmNwcAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzAzLDM0ICszMDMsNTIgQEAgdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlN0YXRlbWVu
dExpc3QmIAogCiB2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6U3RhdGVtZW50JiBzdGF0ZW1lbnQp
CiB7Ci0gICAgaWYgKGlzPEFTVDo6QmxvY2s+KHN0YXRlbWVudCkpCisgICAgc3dpdGNoIChzdGF0
ZW1lbnQua2luZCgpKSB7CisgICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6QmxvY2s6CiAg
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkJsb2NrPihzdGF0ZW1lbnQp
KTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OkJyZWFrPihzdGF0ZW1lbnQpKQorICAgICAgICBicmVh
azsKKyAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpCcmVhazoKICAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6QnJlYWs+KHN0YXRlbWVudCkpOwotICAgIGVsc2Ug
aWYgKGlzPEFTVDo6Q29udGludWU+KHN0YXRlbWVudCkpCisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OkNvbnRpbnVlOgogICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoZG93bmNhc3Q8QVNUOjpDb250aW51ZT4oc3RhdGVtZW50KSk7Ci0gICAgZWxzZSBpZiAo
aXM8QVNUOjpEb1doaWxlTG9vcD4oc3RhdGVtZW50KSkKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6RG9XaGlsZUxvb3A6CiAgICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChkb3duY2FzdDxBU1Q6OkRvV2hpbGVMb29wPihzdGF0ZW1lbnQpKTsKLSAgICBlbHNl
IGlmIChpczxBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ+KHN0YXRlbWVudCkpCisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OkVmZmVjdGZ1bEV4
cHJlc3Npb246CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkVmZmVj
dGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ+KHN0YXRlbWVudCkpOwotICAgIGVsc2UgaWYgKGlzPEFT
VDo6RmFsbHRocm91Z2g+KHN0YXRlbWVudCkpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNU
OjpTdGF0ZW1lbnQ6OktpbmQ6OkZhbGx0aHJvdWdoOgogICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoZG93bmNhc3Q8QVNUOjpGYWxsdGhyb3VnaD4oc3RhdGVtZW50KSk7Ci0gICAgZWxzZSBpZiAo
aXM8QVNUOjpGb3JMb29wPihzdGF0ZW1lbnQpKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFT
VDo6U3RhdGVtZW50OjpLaW5kOjpGb3JMb29wOgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
ZG93bmNhc3Q8QVNUOjpGb3JMb29wPihzdGF0ZW1lbnQpKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6
OklmU3RhdGVtZW50PihzdGF0ZW1lbnQpKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6
U3RhdGVtZW50OjpLaW5kOjpJZjoKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0
PEFTVDo6SWZTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6UmV0
dXJuPihzdGF0ZW1lbnQpKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6U3RhdGVtZW50
OjpLaW5kOjpSZXR1cm46CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6
OlJldHVybj4oc3RhdGVtZW50KSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpTdGF0ZW1lbnRMaXN0
PihzdGF0ZW1lbnQpKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpL
aW5kOjpTdGF0ZW1lbnRMaXN0OgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8
QVNUOjpTdGF0ZW1lbnRMaXN0PihzdGF0ZW1lbnQpKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OlN3
aXRjaENhc2U+KHN0YXRlbWVudCkpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpTdGF0
ZW1lbnQ6OktpbmQ6OlN3aXRjaENhc2U6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3du
Y2FzdDxBU1Q6OlN3aXRjaENhc2U+KHN0YXRlbWVudCkpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6
U3dpdGNoU3RhdGVtZW50PihzdGF0ZW1lbnQpKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFT
VDo6U3RhdGVtZW50OjpLaW5kOjpTd2l0Y2g6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChk
b3duY2FzdDxBU1Q6OlN3aXRjaFN0YXRlbWVudD4oc3RhdGVtZW50KSk7Ci0gICAgZWxzZSBpZiAo
aXM8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudD4oc3RhdGVtZW50KSkKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6VmFyaWFibGVEZWNsYXJh
dGlvbnM6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlZhcmlhYmxl
RGVjbGFyYXRpb25zU3RhdGVtZW50PihzdGF0ZW1lbnQpKTsKLSAgICBlbHNlCisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OldoaWxlTG9vcDoKICAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6V2hpbGVMb29wPihzdGF0ZW1lbnQpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9CiB9CiAKIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpCcmVhayYp
CkBAIC0zNDksNDYgKzM2Nyw3MCBAQCB2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RG9XaGlsZUxv
b3AmIGRvCiAKIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9u
KQogewotICAgIGlmIChpczxBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPihleHByZXNzaW9uKSkK
KyAgICBzd2l0Y2ggKGV4cHJlc3Npb24ua2luZCgpKSB7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Np
b246OktpbmQ6OkFzc2lnbm1lbnQ6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2Fz
dDxBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAo
aXM8QVNUOjpCb29sZWFuTGl0ZXJhbD4oZXhwcmVzc2lvbikpCisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpCb29sZWFuTGl0ZXJhbDoKICAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6Qm9vbGVhbkxpdGVyYWw+KGV4cHJlc3Npb24p
KTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OkNhbGxFeHByZXNzaW9uPihleHByZXNzaW9uKSkKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkNhbGw6CiAgICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkNhbGxFeHByZXNzaW9uPihleHBy
ZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpDb21tYUV4cHJlc3Npb24+KGV4cHJlc3Np
b24pKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6Q29t
bWE6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkNvbW1hRXhwcmVz
c2lvbj4oZXhwcmVzc2lvbikpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6RGVyZWZlcmVuY2VFeHBy
ZXNzaW9uPihleHByZXNzaW9uKSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJl
c3Npb246OktpbmQ6OkRlcmVmZXJlbmNlOgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93
bmNhc3Q8QVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICBlbHNl
IGlmIChpczxBU1Q6OkZsb2F0TGl0ZXJhbD4oZXhwcmVzc2lvbikpCisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpGbG9hdExpdGVyYWw6CiAgICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkZsb2F0TGl0ZXJhbD4oZXhwcmVzc2lvbikp
OwotICAgIGVsc2UgaWYgKGlzPEFTVDo6SW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pKQorICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6SW50ZWdlckxpdGVy
YWw6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkludGVnZXJMaXRl
cmFsPihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpMb2dpY2FsRXhwcmVzc2lv
bj4oZXhwcmVzc2lvbikpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9u
OjpLaW5kOjpMb2dpY2FsOgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNU
OjpMb2dpY2FsRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6
TG9naWNhbE5vdEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKQorICAgICAgICBicmVhazsKKyAgICBj
YXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6TG9naWNhbE5vdDoKICAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb24+KGV4cHJlc3Npb24p
KTsKLSAgICBlbHNlIGlmIChpczxBU1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24+KGV4
cHJlc3Npb24pKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2lu
ZDo6TWFrZUFycmF5UmVmZXJlbmNlOgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNh
c3Q8QVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAg
ZWxzZSBpZiAoaXM8QVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24+KGV4cHJlc3Npb24pKQorICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6TWFrZVBvaW50ZXI6
CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6Ok1ha2VQb2ludGVyRXhw
cmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6TnVsbExpdGVyYWw+
KGV4cHJlc3Npb24pKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6
S2luZDo6TnVsbExpdGVyYWw6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxB
U1Q6Ok51bGxMaXRlcmFsPihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpEb3RF
eHByZXNzaW9uPihleHByZXNzaW9uKSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4
cHJlc3Npb246OktpbmQ6OkRvdDoKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0
PEFTVDo6RG90RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6
R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U+KGV4cHJlc3Npb24pKQorICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U6CiAg
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6Okdsb2JhbFZhcmlhYmxlUmVm
ZXJlbmNlPihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpJbmRleEV4cHJlc3Np
b24+KGV4cHJlc3Npb24pKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lv
bjo6S2luZDo6SW5kZXg6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6
OkluZGV4RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6UmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpCisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpSZWFkTW9kaWZ5V3JpdGU6CiAgICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+
KGV4cHJlc3Npb24pKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OlRlcm5hcnlFeHByZXNzaW9uPihl
eHByZXNzaW9uKSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246Oktp
bmQ6OlRlcm5hcnk6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlRl
cm5hcnlFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpVbnNp
Z25lZEludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKSkKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw6CiAgICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw+
KGV4cHJlc3Npb24pKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbD4oZXhwcmVzc2lvbikpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNz
aW9uOjpLaW5kOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6CiAgICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChkb3duY2FzdDxBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbD4oZXhwcmVzc2lv
bikpOwotICAgIGVsc2UKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246
OktpbmQ6OlZhcmlhYmxlUmVmZXJlbmNlOgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93
bmNhc3Q8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lvbikpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KIH0KIAogdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mIGRvdEV4
cHJlc3Npb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaAkocmV2aXNp
b24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC00Niw3ICs0Nyw3IEBAIGNsYXNzIEFycmF5UmVmZXJlbmNlVHlwZSBm
aW5hbCA6IHB1YmxpYyAKICAgICB1c2luZyBCYXNlID0gUmVmZXJlbmNlVHlwZTsKIAogICAgIEFy
cmF5UmVmZXJlbmNlVHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIEFkZHJlc3NTcGFjZSBhZGRy
ZXNzU3BhY2UsIFJlZjxVbm5hbWVkVHlwZT4gZWxlbWVudFR5cGUpCi0gICAgICAgIDogQmFzZShs
b2NhdGlvbiwgYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKGVsZW1lbnRUeXBlKSwgS2luZDo6QXJyYXlS
ZWZlcmVuY2VUeXBlKQorICAgICAgICA6IEJhc2UobG9jYXRpb24sIGFkZHJlc3NTcGFjZSwgV1RG
TW92ZShlbGVtZW50VHlwZSksIEtpbmQ6OkFycmF5UmVmZXJlbmNlKQogICAgIHsKICAgICB9CiBw
dWJsaWM6CkBAIC01NSw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQXJyYXlSZWZlcmVuY2VUeXBlKGxvY2F0aW9uLCBhZGRyZXNzU3BhY2UsIFdURk1vdmUo
ZWxlbWVudFR5cGUpKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+QXJyYXlSZWZlcmVuY2VUeXBl
KCkgPSBkZWZhdWx0OworICAgIH5BcnJheVJlZmVyZW5jZVR5cGUoKSA9IGRlZmF1bHQ7CiAKICAg
ICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7CkBAIC02Nyw3ICs2OCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGFkZHJlc3NTcGFjZSgpID09IG90aGVyLmFkZHJlc3NTcGFjZSgpICYm
IGVsZW1lbnRUeXBlKCkgPT0gb3RoZXIuZWxlbWVudFR5cGUoKTsKICAgICB9CiAKLSAgICBTdHJp
bmcgdG9TdHJpbmcoKSBjb25zdCBvdmVycmlkZQorICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhlbGVtZW50VHlwZSgpLnRvU3RyaW5n
KCksICJbXSIpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEFycmF5VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5oCShyZXZpc2lvbiAyNDg0MDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVR5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBBcnJheVR5cGUgZmlu
YWwgOiBwdWJsaWMgVW5uYW1lZFR5CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQXJyYXlUeXBlKTsKICAgICBBcnJheVR5cGUoQ29kZUxvY2F0
aW9uIGxvY2F0aW9uLCBSZWY8VW5uYW1lZFR5cGU+IGVsZW1lbnRUeXBlLCB1bnNpZ25lZCBudW1F
bGVtZW50cykKLSAgICAgICAgOiBVbm5hbWVkVHlwZShsb2NhdGlvbiwgS2luZDo6QXJyYXlUeXBl
KQorICAgICAgICA6IFVubmFtZWRUeXBlKGxvY2F0aW9uLCBLaW5kOjpBcnJheSkKICAgICAgICAg
LCBtX2VsZW1lbnRUeXBlKFdURk1vdmUoZWxlbWVudFR5cGUpKQogICAgICAgICAsIG1fbnVtRWxl
bWVudHMobnVtRWxlbWVudHMpCiAgICAgewpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFycmF5VHlwZShsb2NhdGlvbiwgV1RGTW92ZShlbGVt
ZW50VHlwZSksIG51bUVsZW1lbnRzKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+QXJyYXlUeXBl
KCkgPSBkZWZhdWx0OworICAgIH5BcnJheVR5cGUoKSA9IGRlZmF1bHQ7CiAKICAgICBjb25zdCBV
bm5hbWVkVHlwZSYgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudFR5cGU7IH0KICAgICBV
bm5hbWVkVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fZWxlbWVudFR5cGU7IH0KQEAgLTc0LDkgKzc0
LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbnVtRWxlbWVudHMoKSA9PSBvdGhlci5udW1F
bGVtZW50cygpICYmIHR5cGUoKSA9PSBvdGhlci50eXBlKCk7CiAgICAgfQogCi0gICAgU3RyaW5n
IHRvU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcodHlwZSgpLnRvU3RyaW5nKCksICdbJywg
bnVtRWxlbWVudHMoKSwgJ10nKTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcodHlwZSgpLnRv
U3RyaW5nKCksICdbJywgU3RyaW5nOjpudW1iZXIobnVtRWxlbWVudHMoKSksICddJyk7CiAgICAg
fQogCiBwcml2YXRlOgpAQCAtOTAsNiArOTAsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9E
RUZBVUxUX0RFTEVURShBcnJheVR5cGUpCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xf
VU5OQU1FRF9UWVBFKEFycmF5VHlwZSwgaXNBcnJheVR5cGUoKSkKIAogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBc3NpZ25tZW50RXhw
cmVzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmgJKHJldmlzaW9uIDI0ODQwNCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFzc2lnbm1lbnRF
eHByZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDExICszNywxMSBAQCBuYW1lc3BhY2Ug
V0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgQXNzaWdubWVudEV4cHJlc3Npb24g
OiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBBc3NpZ25tZW50RXhwcmVzc2lvbiBmaW5hbCA6
IHB1YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBBc3NpZ25tZW50RXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1
ZVJlZjxFeHByZXNzaW9uPiYmIGxlZnQsIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIHJpZ2h0KQot
ICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2Nh
dGlvbiwgS2luZDo6QXNzaWdubWVudCkKICAgICAgICAgLCBtX2xlZnQoV1RGTW92ZShsZWZ0KSkK
ICAgICAgICAgLCBtX3JpZ2h0KFdURk1vdmUocmlnaHQpKQogICAgIHsKQEAgLTUwLDEzICs1MCwx
MSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5Bc3NpZ25tZW50RXhw
cmVzc2lvbigpID0gZGVmYXVsdDsKKyAgICB+QXNzaWdubWVudEV4cHJlc3Npb24oKSA9IGRlZmF1
bHQ7CiAKICAgICBBc3NpZ25tZW50RXhwcmVzc2lvbihjb25zdCBBc3NpZ25tZW50RXhwcmVzc2lv
biYpID0gZGVsZXRlOwogICAgIEFzc2lnbm1lbnRFeHByZXNzaW9uKEFzc2lnbm1lbnRFeHByZXNz
aW9uJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNBc3NpZ25tZW50RXhwcmVzc2lvbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIEV4cHJlc3Npb24mIGxlZnQoKSB7
IHJldHVybiBtX2xlZnQ7IH0KICAgICBFeHByZXNzaW9uJiByaWdodCgpIHsgcmV0dXJuIG1fcmln
aHQ7IH0KICAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gdGFrZVJpZ2h0KCkgeyByZXR1cm4gV1RG
TW92ZShtX3JpZ2h0KTsgfQpAQCAtNzUsNiArNzMsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklO
RV9ERUZBVUxUX0RFTEVURShBc3NpZ25tZW50RXhwcmVzc2lvbikKKwogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEFzc2lnbm1lbnRFeHByZXNzaW9uLCBpc0Fzc2lnbm1l
bnRFeHByZXNzaW9uKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCbG9jay5oCShyZXZpc2lvbiAyNDg0MDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCbG9jay5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyNCArMzgsMjIgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAog
bmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEJsb2NrIDogcHVibGljIFN0YXRlbWVudCB7CitjbGFz
cyBCbG9jayBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIEJsb2NrKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RhdGVt
ZW50cyYmIHN0YXRlbWVudHMpCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uKQorICAgICAg
ICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6QmxvY2spCiAgICAgICAgICwgbV9zdGF0ZW1l
bnRzKFdURk1vdmUoc3RhdGVtZW50cykpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfkJs
b2NrKCkgPSBkZWZhdWx0OworICAgIH5CbG9jaygpID0gZGVmYXVsdDsKIAogICAgIEJsb2NrKGNv
bnN0IEJsb2NrJikgPSBkZWxldGU7CiAgICAgQmxvY2soQmxvY2smJikgPSBkZWZhdWx0OwogCiAg
ICAgU3RhdGVtZW50cyYgc3RhdGVtZW50cygpIHsgcmV0dXJuIG1fc3RhdGVtZW50czsgfQogCi0g
ICAgYm9vbCBpc0Jsb2NrKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiBwcml2
YXRlOgogICAgIFN0YXRlbWVudHMgbV9zdGF0ZW1lbnRzOwogfTsKQEAgLTY2LDYgKzY0LDggQEAg
cHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoQmxvY2spCisKIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKEJsb2NrLCBpc0Jsb2NrKCkpCiAKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQm9v
bGVhbkxpdGVyYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xCb29sZWFuTGl0ZXJhbC5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCb29sZWFuTGl0ZXJh
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNiArMzYsMTYgQEAgbmFtZXNwYWNlIFdITFNMIHsK
IAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEJvb2xlYW5MaXRlcmFsIDogcHVibGljIEV4cHJl
c3Npb24geworY2xhc3MgQm9vbGVhbkxpdGVyYWwgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQm9vbGVhbkxpdGVy
YWwoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBib29sIHZhbHVlKQotICAgICAgICA6IEV4cHJlc3Np
b24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6Qm9vbGVh
bkxpdGVyYWwpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAgfQogCi0gICAg
dmlydHVhbCB+Qm9vbGVhbkxpdGVyYWwoKSA9IGRlZmF1bHQ7CisgICAgfkJvb2xlYW5MaXRlcmFs
KCkgPSBkZWZhdWx0OwogCiAgICAgQm9vbGVhbkxpdGVyYWwoY29uc3QgQm9vbGVhbkxpdGVyYWwm
KSA9IGRlbGV0ZTsKICAgICBCb29sZWFuTGl0ZXJhbChCb29sZWFuTGl0ZXJhbCYmKSA9IGRlZmF1
bHQ7CkBAIC01NSw4ICs1NSw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgdmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlOyB9CiAKLSAgICBib29sIGlzQm9vbGVhbkxpdGVyYWwoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBCb29sZWFuTGl0ZXJhbCBjbG9uZSgpIGNv
bnN0CiAgICAgewogICAgICAgICBCb29sZWFuTGl0ZXJhbCByZXN1bHQoY29kZUxvY2F0aW9uKCks
IG1fdmFsdWUpOwpAQCAtNzQsNiArNzIsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZB
VUxUX0RFTEVURShCb29sZWFuTGl0ZXJhbCkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExT
TF9FWFBSRVNTSU9OKEJvb2xlYW5MaXRlcmFsLCBpc0Jvb2xlYW5MaXRlcmFsKCkpCiAKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnJl
YWsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xCcmVhay5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCcmVhay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywy
MSArMzcsMTkgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNz
IEJyZWFrIDogcHVibGljIFN0YXRlbWVudCB7CitjbGFzcyBCcmVhayBmaW5hbCA6IHB1YmxpYyBT
dGF0ZW1lbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEJy
ZWFrKENvZGVMb2NhdGlvbiBsb2NhdGlvbikKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24p
CisgICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpCcmVhaykKICAgICB7CiAgICAg
fQogCi0gICAgdmlydHVhbCB+QnJlYWsoKSA9IGRlZmF1bHQ7CisgICAgfkJyZWFrKCkgPSBkZWZh
dWx0OwogCiAgICAgQnJlYWsoY29uc3QgQnJlYWsmKSA9IGRlbGV0ZTsKICAgICBCcmVhayhCcmVh
ayYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzQnJlYWsoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0KIHByaXZhdGU6CiB9OwogCkBAIC02MSw2ICs1OSw4IEBAIHByaXZhdGU6
CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKEJyZWFrKQorCiBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dITFNMX1NUQVRFTUVOVChCcmVhaywgaXNCcmVhaygpKQogCiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENhbGxFeHByZXNz
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQ2FsbEV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ2FsbEV4cHJlc3Npb24uaAkod29y
a2luZyBjb3B5KQpAQCAtNDAsMjcgKzQwLDI1IEBAIG5hbWVzcGFjZSBBU1QgewogCiBjbGFzcyBO
YW1lZFR5cGU7CiAKLWNsYXNzIENhbGxFeHByZXNzaW9uIDogcHVibGljIEV4cHJlc3Npb24gewor
Y2xhc3MgQ2FsbEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ2FsbEV4cHJlc3Npb24oQ29kZUxv
Y2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1lLCBWZWN0b3I8VW5pcXVlUmVmPEV4cHJlc3Np
b24+PiYmIGFyZ3VtZW50cykKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAg
ICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkNhbGwpCiAgICAgICAgICwgbV9uYW1lKFdU
Rk1vdmUobmFtZSkpCiAgICAgICAgICwgbV9hcmd1bWVudHMoV1RGTW92ZShhcmd1bWVudHMpKQog
ICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5DYWxsRXhwcmVzc2lvbigpID0gZGVmYXVsdDsK
LQogICAgIENhbGxFeHByZXNzaW9uKGNvbnN0IENhbGxFeHByZXNzaW9uJikgPSBkZWxldGU7CiAg
ICAgQ2FsbEV4cHJlc3Npb24oQ2FsbEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwogCi0gICAgYm9v
bCBpc0NhbGxFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAg
ICAgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4mIGFyZ3VtZW50cygpIHsgcmV0dXJuIG1f
YXJndW1lbnRzOyB9CiAKICAgICBTdHJpbmcmIG5hbWUoKSB7IHJldHVybiBtX25hbWU7IH0KIAor
ICAgIH5DYWxsRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKwogICAgIHZvaWQgc2V0Q2FzdERhdGEo
TmFtZWRUeXBlJiBuYW1lZFR5cGUpCiAgICAgewogICAgICAgICBtX2Nhc3RSZXR1cm5UeXBlID0g
Jm5hbWVkVHlwZTsKQEAgLTkzLDYgKzkxLDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVG
QVVMVF9ERUxFVEUoQ2FsbEV4cHJlc3Npb24pCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hM
U0xfRVhQUkVTU0lPTihDYWxsRXhwcmVzc2lvbiwgaXNDYWxsRXhwcmVzc2lvbigpKQogCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENv
bW1hRXhwcmVzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb21tYUV4cHJl
c3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjIgKzM4LDIwIEBAIG5hbWVzcGFjZSBXSExT
TCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBDb21tYUV4cHJlc3Npb24gOiBwdWJsaWMg
RXhwcmVzc2lvbiB7CitjbGFzcyBDb21tYUV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVz
c2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ29tbWFF
eHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNz
aW9uPj4mJiBsaXN0KQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgICAgIDog
RXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6Q29tbWEpCiAgICAgICAgICwgbV9saXN0KFdURk1v
dmUobGlzdCkpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfkNvbW1hRXhwcmVzc2lvbigp
ID0gZGVmYXVsdDsKKyAgICB+Q29tbWFFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwogCiAgICAgQ29t
bWFFeHByZXNzaW9uKGNvbnN0IENvbW1hRXhwcmVzc2lvbiYpID0gZGVsZXRlOwogICAgIENvbW1h
RXhwcmVzc2lvbihDb21tYUV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc0Nv
bW1hRXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIFZl
Y3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiBsaXN0KCkgeyByZXR1cm4gbV9saXN0OyB9CiAK
IHByaXZhdGU6CkBAIC02Niw2ICs2NCw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFV
TFRfREVMRVRFKENvbW1hRXhwcmVzc2lvbikKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExT
TF9FWFBSRVNTSU9OKENvbW1hRXhwcmVzc2lvbiwgaXNDb21tYUV4cHJlc3Npb24oKSkKIAogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xD
b25zdGFudEV4cHJlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4
NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29u
c3RhbnRFeHByZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNw
YWNlIEFTVCB7CiAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5ODE1OCBtYWNPUyBTaWVycmEgZG9lc24ndCBzZWVtIHRvIHN1cHBvcnQgcHV0dGluZyBW
YXJpYW50cyBpbnNpZGUgVmFyaWFudHMsCiAvLyBzbyB0aGlzIGlzIGEgd3JhcHBlciBjbGFzcyB0
byBtYWtlIHN1cmUgdGhhdCBkb2Vzbid0IGhhcHBlbi4gQXMgc29vbiBhcyB3ZSBkb24ndAogLy8g
aGF2ZSB0byBzdXBwb3J0IFNpZXJyYSwgdGhpcyBjYW4gYmUgbWlncmF0ZWQgdG8gYSBWYXJpYW50
IHByb3Blci4KLWNsYXNzIENvbnN0YW50RXhwcmVzc2lvbiB7CitjbGFzcyBDb25zdGFudEV4cHJl
c3Npb24gZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IENvbnN0YW50RXhwcmVzc2lvbihJbnRlZ2VyTGl0ZXJhbCYmIGludGVnZXJMaXRlcmFsKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29udGludWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xDb250aW51ZS5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb250aW51ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NywyMSArMzcsMTkgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNs
YXNzIENvbnRpbnVlIDogcHVibGljIFN0YXRlbWVudCB7CitjbGFzcyBDb250aW51ZSBmaW5hbCA6
IHB1YmxpYyBTdGF0ZW1lbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIENvbnRpbnVlKENvZGVMb2NhdGlvbiBsb2NhdGlvbikKLSAgICAgICAgOiBTdGF0ZW1l
bnQobG9jYXRpb24pCisgICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpDb250aW51
ZSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+Q29udGludWUoKSA9IGRlZmF1bHQ7Cisg
ICAgfkNvbnRpbnVlKCkgPSBkZWZhdWx0OwogCiAgICAgQ29udGludWUoY29uc3QgQ29udGludWUm
KSA9IGRlbGV0ZTsKICAgICBDb250aW51ZShDb250aW51ZSYmKSA9IGRlZmF1bHQ7CiAKLSAgICBi
b29sIGlzQ29udGludWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KIHByaXZh
dGU6CiB9OwogCkBAIC02MSw2ICs1OSw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFV
TFRfREVMRVRFKENvbnRpbnVlKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRF
TUVOVChDb250aW51ZSwgaXNDb250aW51ZSgpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Np
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMjIgKzM3LDIwIEBAIG5hbWVzcGFjZSBXSExTTCB7
CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBEZXJlZmVyZW5jZUV4cHJlc3Npb24gOiBwdWJs
aWMgRXhwcmVzc2lvbiB7CitjbGFzcyBEZXJlZmVyZW5jZUV4cHJlc3Npb24gZmluYWwgOiBwdWJs
aWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgRGVyZWZlcmVuY2VFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVm
PEV4cHJlc3Npb24+JiYgcG9pbnRlcikKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQor
ICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkRlcmVmZXJlbmNlKQogICAgICAg
ICAsIG1fcG9pbnRlcihXVEZNb3ZlKHBvaW50ZXIpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIH5EZXJlZmVyZW5jZUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfkRlcmVmZXJlbmNl
RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKIAogICAgIERlcmVmZXJlbmNlRXhwcmVzc2lvbihjb25z
dCBEZXJlZmVyZW5jZUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBEZXJlZmVyZW5jZUV4cHJl
c3Npb24oRGVyZWZlcmVuY2VFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNE
ZXJlZmVyZW5jZUV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0K
ICAgICBFeHByZXNzaW9uJiBwb2ludGVyKCkgeyByZXR1cm4gbV9wb2ludGVyOyB9CiAKIHByaXZh
dGU6CkBAIC02NSw2ICs2Myw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVM
RVRFKERlcmVmZXJlbmNlRXhwcmVzc2lvbikKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExT
TF9FWFBSRVNTSU9OKERlcmVmZXJlbmNlRXhwcmVzc2lvbiwgaXNEZXJlZmVyZW5jZUV4cHJlc3Np
b24oKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xEb1doaWxlTG9vcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29wLmgJKHJldmlzaW9uIDI0ODQw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hp
bGVMb29wLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDIzICszOCwyMSBAQCBuYW1lc3BhY2UgV0hM
U0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgRG9XaGlsZUxvb3AgOiBwdWJsaWMgU3Rh
dGVtZW50IHsKK2NsYXNzIERvV2hpbGVMb29wIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRG9XaGlsZUxvb3AoQ29k
ZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8U3RhdGVtZW50PiYmIGJvZHksIFVuaXF1ZVJl
ZjxFeHByZXNzaW9uPiYmIGNvbmRpdGlvbmFsKQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlv
bikKKyAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OkRvV2hpbGVMb29wKQogICAg
ICAgICAsIG1fYm9keShXVEZNb3ZlKGJvZHkpKQogICAgICAgICAsIG1fY29uZGl0aW9uYWwoV1RG
TW92ZShjb25kaXRpb25hbCkpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfkRvV2hpbGVM
b29wKCkgPSBkZWZhdWx0OworICAgIH5Eb1doaWxlTG9vcCgpID0gZGVmYXVsdDsKIAogICAgIERv
V2hpbGVMb29wKGNvbnN0IERvV2hpbGVMb29wJikgPSBkZWxldGU7CiAgICAgRG9XaGlsZUxvb3Ao
RG9XaGlsZUxvb3AmJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc0RvV2hpbGVMb29wKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgU3RhdGVtZW50JiBib2R5KCkgeyBy
ZXR1cm4gbV9ib2R5OyB9CiAgICAgRXhwcmVzc2lvbiYgY29uZGl0aW9uYWwoKSB7IHJldHVybiBt
X2NvbmRpdGlvbmFsOyB9CiAKQEAgLTY5LDYgKzY3LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJ
TkVfREVGQVVMVF9ERUxFVEUoRG9XaGlsZUxvb3ApCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
V0hMU0xfU1RBVEVNRU5UKERvV2hpbGVMb29wLCBpc0RvV2hpbGVMb29wKCkpCiAKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG90RXhw
cmVzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTERvdEV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG90RXhwcmVzc2lvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCwzMyArMzgsMzIgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFt
ZXNwYWNlIEFTVCB7CiAKLWNsYXNzIERvdEV4cHJlc3Npb24gOiBwdWJsaWMgUHJvcGVydHlBY2Nl
c3NFeHByZXNzaW9uIHsKK2NsYXNzIERvdEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgUHJvcGVy
dHlBY2Nlc3NFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICB1
c2luZyBCYXNlID0gUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uOwogcHVibGljOgogICAgIERvdEV4
cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBi
YXNlLCBTdHJpbmcmJiBmaWVsZE5hbWUpCi0gICAgICAgIDogUHJvcGVydHlBY2Nlc3NFeHByZXNz
aW9uKGxvY2F0aW9uLCBXVEZNb3ZlKGJhc2UpKQorICAgICAgICA6IFByb3BlcnR5QWNjZXNzRXhw
cmVzc2lvbihsb2NhdGlvbiwgS2luZDo6RG90LCBXVEZNb3ZlKGJhc2UpKQogICAgICAgICAsIG1f
ZmllbGROYW1lKFdURk1vdmUoZmllbGROYW1lKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVh
bCB+RG90RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKyAgICB+RG90RXhwcmVzc2lvbigpID0gZGVm
YXVsdDsKIAogICAgIERvdEV4cHJlc3Npb24oY29uc3QgRG90RXhwcmVzc2lvbiYpID0gZGVsZXRl
OwogICAgIERvdEV4cHJlc3Npb24oRG90RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CiAKLSAgICBi
b29sIGlzRG90RXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQot
ICAgIFN0cmluZyBnZXR0ZXJGdW5jdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZQorICAgIFN0cmlu
ZyBnZXR0ZXJGdW5jdGlvbk5hbWUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1ha2VT
dHJpbmcoIm9wZXJhdG9yLiIsIG1fZmllbGROYW1lKTsKICAgICB9CiAKLSAgICBTdHJpbmcgc2V0
dGVyRnVuY3Rpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJpbmcgc2V0dGVyRnVuY3Rp
b25OYW1lKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJvcGVyYXRv
ci4iLCBtX2ZpZWxkTmFtZSwgIj0iKTsKICAgICB9CiAKLSAgICBTdHJpbmcgYW5kZXJGdW5jdGlv
bk5hbWUoKSBjb25zdCBvdmVycmlkZQorICAgIFN0cmluZyBhbmRlckZ1bmN0aW9uTmFtZSgpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygib3BlcmF0b3ImLiIsIG1fZmll
bGROYW1lKTsKICAgICB9CkBAIC04MSw2ICs4MCw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5F
X0RFRkFVTFRfREVMRVRFKERvdEV4cHJlc3Npb24pCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
V0hMU0xfRVhQUkVTU0lPTihEb3RFeHByZXNzaW9uLCBpc0RvdEV4cHJlc3Npb24oKSkKIAogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xF
ZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRl
bWVudC5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDIyICszOCwyMCBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2Ug
QVNUIHsKIAotY2xhc3MgRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCA6IHB1YmxpYyBTdGF0
ZW1lbnQgeworY2xhc3MgRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCBmaW5hbCA6IHB1Ymxp
YyBTdGF0ZW1lbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgZWZm
ZWN0ZnVsRXhwcmVzc2lvbikKLSAgICAgICAgOiBTdGF0ZW1lbnQoZWZmZWN0ZnVsRXhwcmVzc2lv
bi0+Y29kZUxvY2F0aW9uKCkpCisgICAgICAgIDogU3RhdGVtZW50KGVmZmVjdGZ1bEV4cHJlc3Np
b24tPmNvZGVMb2NhdGlvbigpLCBLaW5kOjpFZmZlY3RmdWxFeHByZXNzaW9uKQogICAgICAgICAs
IG1fZWZmZWN0ZnVsRXhwcmVzc2lvbihXVEZNb3ZlKGVmZmVjdGZ1bEV4cHJlc3Npb24pKQogICAg
IHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5FZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KCkg
PSBkZWZhdWx0OworICAgIH5FZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KCkgPSBkZWZhdWx0
OwogCiAgICAgRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudChjb25zdCBFZmZlY3RmdWxFeHBy
ZXNzaW9uU3RhdGVtZW50JikgPSBkZWxldGU7CiAgICAgRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRl
bWVudChFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50JiYpID0gZGVmYXVsdDsKIAotICAgIGJv
b2wgaXNFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQotCiAgICAgRXhwcmVzc2lvbiYgZWZmZWN0ZnVsRXhwcmVzc2lvbigpIHsgcmV0
dXJuIG1fZWZmZWN0ZnVsRXhwcmVzc2lvbjsgfQogCiBwcml2YXRlOgpAQCAtNjYsNiArNjQsOCBA
QCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShFZmZlY3RmdWxFeHByZXNz
aW9uU3RhdGVtZW50KQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChF
ZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LCBpc0VmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1l
bnQoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRp
b24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ1LDIyICs0NSwyMCBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAot
Y2xhc3MgRW51bWVyYXRpb25EZWZpbml0aW9uIDogcHVibGljIE5hbWVkVHlwZSB7CitjbGFzcyBF
bnVtZXJhdGlvbkRlZmluaXRpb24gZmluYWwgOiBwdWJsaWMgTmFtZWRUeXBlIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24o
Q29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1lLCBSZWY8VW5uYW1lZFR5cGU+IHR5
cGUpCi0gICAgICAgIDogTmFtZWRUeXBlKGxvY2F0aW9uLCBXVEZNb3ZlKG5hbWUpKQorICAgICAg
ICA6IE5hbWVkVHlwZShLaW5kOjpFbnVtZXJhdGlvbkRlZmluaXRpb24sIGxvY2F0aW9uLCBXVEZN
b3ZlKG5hbWUpKQogICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQogICAgIHsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIH5FbnVtZXJhdGlvbkRlZmluaXRpb24oKSA9IGRlZmF1bHQ7CisgICAg
fkVudW1lcmF0aW9uRGVmaW5pdGlvbigpID0gZGVmYXVsdDsKIAogICAgIEVudW1lcmF0aW9uRGVm
aW5pdGlvbihjb25zdCBFbnVtZXJhdGlvbkRlZmluaXRpb24mKSA9IGRlbGV0ZTsKICAgICBFbnVt
ZXJhdGlvbkRlZmluaXRpb24oRW51bWVyYXRpb25EZWZpbml0aW9uJiYpID0gZGVmYXVsdDsKIAot
ICAgIGJvb2wgaXNFbnVtZXJhdGlvbkRlZmluaXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9Ci0KICAgICBVbm5hbWVkVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQog
CiAgICAgYm9vbCBhZGQoRW51bWVyYXRpb25NZW1iZXImJiBtZW1iZXIpCkBAIC05Niw2ICs5NCw4
IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKEVudW1lcmF0aW9uRGVm
aW5pdGlvbikKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9OQU1FRF9UWVBFKEVudW1l
cmF0aW9uRGVmaW5pdGlvbiwgaXNFbnVtZXJhdGlvbkRlZmluaXRpb24oKSkKIAogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJh
dGlvbk1lbWJlckxpdGVyYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaAkocmV2aXNp
b24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDE3ICs0
MCwxNyBAQCBuYW1lc3BhY2UgQVNUIHsKIGNsYXNzIEVudW1lcmF0aW9uRGVmaW5pdGlvbjsKIGNs
YXNzIEVudW1lcmF0aW9uTWVtYmVyOwogCi1jbGFzcyBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwg
OiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwgZmlu
YWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKENvZGVMb2NhdGlvbiBsb2NhdGlv
biwgU3RyaW5nJiYgbGVmdCwgU3RyaW5nJiYgcmlnaHQpCi0gICAgICAgIDogRXhwcmVzc2lvbihs
b2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpFbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwpCiAgICAgICAgICwgbV9sZWZ0KFdURk1vdmUobGVmdCkpCiAgICAgICAg
ICwgbV9yaWdodChXVEZNb3ZlKHJpZ2h0KSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+
RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKCkgPSBkZWZhdWx0OworICAgIH5FbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwoKSA9IGRlZmF1bHQ7CiAKICAgICBleHBsaWNpdCBFbnVtZXJhdGlvbk1lbWJl
ckxpdGVyYWwoY29uc3QgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJikgPSBkZWxldGU7CiAgICAg
RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYmKSA9IGRl
ZmF1bHQ7CkBAIC01OCw4ICs1OCw2IEBAIHB1YmxpYzoKICAgICBFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWwmIG9wZXJhdG9yPShjb25zdCBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmKSA9IGRlbGV0
ZTsKICAgICBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmIG9wZXJhdG9yPShFbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwmJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc0VudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIHN0YXRpYyBF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwgd3JhcChDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmlu
ZyYmIGxlZnQsIFN0cmluZyYmIHJpZ2h0LCBFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0
aW9uRGVmaW5pdGlvbiwgRW51bWVyYXRpb25NZW1iZXImIGVudW1lcmF0aW9uTWVtYmVyKQogICAg
IHsKICAgICAgICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsIHJlc3VsdChsb2NhdGlvbiwgV1RG
TW92ZShsZWZ0KSwgV1RGTW92ZShyaWdodCkpOwpAQCAtMTE4LDYgKzExNiw4IEBAIHByaXZhdGU6
CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkK
KwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbCwgaXNFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoKSkKIAogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xFeHByZXNzaW9uLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNs
dWRlICJXSExTTEFTVC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExT
TCB7CisKK25hbWVzcGFjZSBBU1QgeworCit2b2lkIEV4cHJlc3Npb246OmRlc3Ryb3koRXhwcmVz
c2lvbiYgZXhwcmVzc2lvbikKK3sKKyAgICBzd2l0Y2ggKGV4cHJlc3Npb24ua2luZCgpKSB7Cisg
ICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkFzc2lnbm1lbnQ6CisgICAgICAgIGRlbGV0
ZSAmZG93bmNhc3Q8QVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpCb29sZWFuTGl0ZXJh
bDoKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OkJvb2xlYW5MaXRlcmFsPihleHByZXNz
aW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkNh
bGw6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpDYWxsRXhwcmVzc2lvbj4oZXhwcmVz
c2lvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpD
b21tYToKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OkNvbW1hRXhwcmVzc2lvbj4oZXhw
cmVzc2lvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5k
OjpEZXJlZmVyZW5jZToKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OkRlcmVmZXJlbmNl
RXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpF
eHByZXNzaW9uOjpLaW5kOjpGbG9hdExpdGVyYWw6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8
QVNUOjpGbG9hdExpdGVyYWw+KGV4cHJlc3Npb24pOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6SW50ZWdlckxpdGVyYWw6CisgICAgICAgIGRlbGV0ZSAm
ZG93bmNhc3Q8QVNUOjpJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpMb2dpY2FsOgorICAgICAgICBkZWxl
dGUgJmRvd25jYXN0PEFTVDo6TG9naWNhbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6TG9naWNhbE5vdDoKKyAg
ICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uPihleHByZXNz
aW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6Ok1h
a2VBcnJheVJlZmVyZW5jZToKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6Ok1ha2VBcnJh
eVJlZmVyZW5jZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6TWFrZVBvaW50ZXI6CisgICAgICAgIGRlbGV0ZSAm
ZG93bmNhc3Q8QVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24+KGV4cHJlc3Npb24pOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6TnVsbExpdGVyYWw6Cisg
ICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpOdWxsTGl0ZXJhbD4oZXhwcmVzc2lvbik7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpEb3Q6CisgICAg
ICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpEb3RFeHByZXNzaW9uPihleHByZXNzaW9uKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6Okdsb2JhbFZhcmlh
YmxlUmVmZXJlbmNlOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PEFTVDo6R2xvYmFsVmFyaWFi
bGVSZWZlcmVuY2U+KGV4cHJlc3Npb24pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6
RXhwcmVzc2lvbjo6S2luZDo6SW5kZXg6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpJ
bmRleEV4cHJlc3Npb24+KGV4cHJlc3Npb24pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFT
VDo6RXhwcmVzc2lvbjo6S2luZDo6UmVhZE1vZGlmeVdyaXRlOgorICAgICAgICBkZWxldGUgJmRv
d25jYXN0PEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpUZXJuYXJ5OgorICAg
ICAgICBkZWxldGUgJmRvd25jYXN0PEFTVDo6VGVybmFyeUV4cHJlc3Npb24+KGV4cHJlc3Npb24p
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6VW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbDoKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OlVuc2lnbmVk
SW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFT
VDo6RXhwcmVzc2lvbjo6S2luZDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsOgorICAgICAgICBk
ZWxldGUgJmRvd25jYXN0PEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPihleHByZXNzaW9u
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OlZhcmlh
YmxlUmVmZXJlbmNlOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PEFTVDo6VmFyaWFibGVSZWZl
cmVuY2U+KGV4cHJlc3Npb24pOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK1N0cmluZyBQ
cm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb246OmdldHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0Cit7Cisg
ICAgaWYgKGlzPERvdEV4cHJlc3Npb24+KCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0
PERvdEV4cHJlc3Npb24+KCp0aGlzKS5nZXR0ZXJGdW5jdGlvbk5hbWUoKTsKKyAgICBpZiAoaXM8
SW5kZXhFeHByZXNzaW9uPigqdGhpcykpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxJbmRleEV4
cHJlc3Npb24+KCp0aGlzKS5nZXR0ZXJGdW5jdGlvbk5hbWUoKTsKKyAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworfQorCitTdHJpbmcgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uOjpz
ZXR0ZXJGdW5jdGlvbk5hbWUoKSBjb25zdAoreworICAgIGlmIChpczxEb3RFeHByZXNzaW9uPigq
dGhpcykpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxEb3RFeHByZXNzaW9uPigqdGhpcykuc2V0
dGVyRnVuY3Rpb25OYW1lKCk7CisgICAgaWYgKGlzPEluZGV4RXhwcmVzc2lvbj4oKnRoaXMpKQor
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8SW5kZXhFeHByZXNzaW9uPigqdGhpcykuc2V0dGVyRnVu
Y3Rpb25OYW1lKCk7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworU3Ry
aW5nIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbjo6YW5kZXJGdW5jdGlvbk5hbWUoKSBjb25zdAor
eworICAgIGlmIChpczxEb3RFeHByZXNzaW9uPigqdGhpcykpCisgICAgICAgIHJldHVybiBkb3du
Y2FzdDxEb3RFeHByZXNzaW9uPigqdGhpcykuYW5kZXJGdW5jdGlvbk5hbWUoKTsKKyAgICBpZiAo
aXM8SW5kZXhFeHByZXNzaW9uPigqdGhpcykpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxJbmRl
eEV4cHJlc3Npb24+KCp0aGlzKS5hbmRlckZ1bmN0aW9uTmFtZSgpOworICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9IC8vIG5hbWVz
cGFjZSBXSExTTAorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MywxMiArNDMsMzggQEAgbmFtZXNwYWNlIEFTVCB7CiBjbGFzcyBFeHByZXNzaW9uIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBFeHByZXNzaW9uKENvZGVMb2Nh
dGlvbiBjb2RlTG9jYXRpb24pCi0gICAgICAgIDogbV9jb2RlTG9jYXRpb24oY29kZUxvY2F0aW9u
KQorCisgICAgZW51bSBjbGFzcyBLaW5kIDogdWludDhfdCB7CisgICAgICAgIEFzc2lnbm1lbnQs
CisgICAgICAgIEJvb2xlYW5MaXRlcmFsLAorICAgICAgICBDYWxsLAorICAgICAgICBDb21tYSwK
KyAgICAgICAgRGVyZWZlcmVuY2UsCisgICAgICAgIERvdCwKKyAgICAgICAgR2xvYmFsVmFyaWFi
bGVSZWZlcmVuY2UsCisgICAgICAgIEZsb2F0TGl0ZXJhbCwKKyAgICAgICAgSW5kZXgsCisgICAg
ICAgIEludGVnZXJMaXRlcmFsLAorICAgICAgICBMb2dpY2FsLAorICAgICAgICBMb2dpY2FsTm90
LAorICAgICAgICBNYWtlQXJyYXlSZWZlcmVuY2UsCisgICAgICAgIE1ha2VQb2ludGVyLAorICAg
ICAgICBOdWxsTGl0ZXJhbCwKKyAgICAgICAgUmVhZE1vZGlmeVdyaXRlLAorICAgICAgICBUZXJu
YXJ5LAorICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsLAorICAgICAgICBWYXJpYWJsZVJl
ZmVyZW5jZSwKKyAgICAgICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLAorICAgIH07CisKKyAg
ICBFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24sIEtpbmQga2luZCkKKyAgICAg
ICAgOiBtX2tpbmQoa2luZCkKKyAgICAgICAgLCBtX2NvZGVMb2NhdGlvbihjb2RlTG9jYXRpb24u
c3RhcnRPZmZzZXQoKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+RXhwcmVzc2lvbigp
ID0gZGVmYXVsdDsKKyAgICB+RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKyAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEV4cHJlc3Npb24mKTsKIAogICAgIEV4cHJlc3Npb24oY29uc3QgRXhwcmVzc2lv
biYpID0gZGVsZXRlOwogICAgIEV4cHJlc3Npb24oRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CkBA
IC05Miw0MyArMTE4LDc4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG90aGVyLnNldFR5cGVBbm5v
dGF0aW9uKFR5cGVBbm5vdGF0aW9uKCp0eXBlQW5ub3RhdGlvbikpOwogICAgIH0KIAotICAgIHZp
cnR1YWwgYm9vbCBpc0Fzc2lnbm1lbnRFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNCb29sZWFuTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQ2FsbEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0NvbW1hRXhwcmVzc2lvbigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRGVyZWZlcmVuY2VFeHByZXNzaW9u
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNEb3RFeHByZXNz
aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNHbG9iYWxW
YXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzRmxvYXRMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNJbmRleEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBpc0ludGVnZXJMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNMb2dpY2FsRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzTG9naWNhbE5vdEV4cHJlc3Npb24oKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01ha2VBcnJheVJlZmVyZW5jZUV4cHJl
c3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01ha2VQ
b2ludGVyRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzTnVsbExpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBpc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVGVybmFyeUV4cHJlc3Npb24oKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Vuc2lnbmVkSW50ZWdl
ckxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Zh
cmlhYmxlUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaXNFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIEtpbmQga2luZCgpIGNvbnN0ICB7IHJldHVybiBtX2tpbmQ7IH0KKyAgICBib29sIGlzQXNz
aWdubWVudEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6QXNzaWdu
bWVudDsgfQorICAgIGJvb2wgaXNCb29sZWFuTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQo
KSA9PSBLaW5kOjpCb29sZWFuTGl0ZXJhbDsgfQorICAgIGJvb2wgaXNDYWxsRXhwcmVzc2lvbigp
IGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpDYWxsOyB9CisgICAgYm9vbCBpc0NvbW1h
RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpDb21tYTsgfQorICAg
IGJvb2wgaXNEZXJlZmVyZW5jZUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0g
S2luZDo6RGVyZWZlcmVuY2U7IH0KKyAgICBib29sIGlzRG90RXhwcmVzc2lvbigpIGNvbnN0IHsg
cmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpEb3Q7IH0KKyAgICBib29sIGlzR2xvYmFsVmFyaWFibGVS
ZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6R2xvYmFsVmFyaWFibGVS
ZWZlcmVuY2U7IH0KKyAgICBib29sIGlzRmxvYXRMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4ga2lu
ZCgpID09IEtpbmQ6OkZsb2F0TGl0ZXJhbDsgfQorICAgIGJvb2wgaXNJbmRleEV4cHJlc3Npb24o
KSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6SW5kZXg7IH0KKyAgICBib29sIGlzSW50
ZWdlckxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6SW50ZWdlckxpdGVy
YWw7IH0KKyAgICBib29sIGlzTG9naWNhbEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5k
KCkgPT0gS2luZDo6TG9naWNhbDsgfQorICAgIGJvb2wgaXNMb2dpY2FsTm90RXhwcmVzc2lvbigp
IGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpMb2dpY2FsTm90OyB9CisgICAgYm9vbCBp
c01ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0g
S2luZDo6TWFrZUFycmF5UmVmZXJlbmNlOyB9CisgICAgYm9vbCBpc01ha2VQb2ludGVyRXhwcmVz
c2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpNYWtlUG9pbnRlcjsgfQorICAg
IGJvb2wgaXNOdWxsTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpOdWxs
TGl0ZXJhbDsgfQorICAgIGJvb2wgaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oKSBjb25zdCB7
IHJldHVybiBpc0RvdEV4cHJlc3Npb24oKSB8fCBpc0luZGV4RXhwcmVzc2lvbigpOyB9CisgICAg
Ym9vbCBpc1JlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkg
PT0gS2luZDo6UmVhZE1vZGlmeVdyaXRlOyB9CisgICAgYm9vbCBpc1Rlcm5hcnlFeHByZXNzaW9u
KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlRlcm5hcnk7IH0KKyAgICBib29sIGlz
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpV
bnNpZ25lZEludGVnZXJMaXRlcmFsOyB9CisgICAgYm9vbCBpc1ZhcmlhYmxlUmVmZXJlbmNlKCkg
Y29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlZhcmlhYmxlUmVmZXJlbmNlOyB9CisgICAg
Ym9vbCBpc0VudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9
PSBLaW5kOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw7IH0KIAotICAgIENvZGVMb2NhdGlvbiBj
b2RlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvZGVMb2NhdGlvbjsgfQotICAgIHZvaWQg
dXBkYXRlQ29kZUxvY2F0aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbikgeyBtX2NvZGVMb2NhdGlv
biA9IGxvY2F0aW9uOyB9CisgICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIENvZGVMb2NhdGlvbihtX2NvZGVMb2NhdGlvbiwgbV9jb2RlTG9jYXRpb24pOyB9Cisg
ICAgdm9pZCB1cGRhdGVDb2RlTG9jYXRpb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uKSB7IG1fY29k
ZUxvY2F0aW9uID0gbG9jYXRpb24uc3RhcnRPZmZzZXQoKTsgfQogCiBwcml2YXRlOgotICAgIENv
ZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKKyAgICBLaW5kIG1fa2luZDsKKyAgICB1bnNpZ25l
ZCBtX2NvZGVMb2NhdGlvbjsKICAgICBSZWZQdHI8VW5uYW1lZFR5cGU+IG1fdHlwZTsKICAgICBP
cHRpb25hbDxUeXBlQW5ub3RhdGlvbj4gbV90eXBlQW5ub3RhdGlvbjsKIH07CiAKKwogfSAvLyBu
YW1lc3BhY2UgQVNUCiAKIH0KIAogfQogCituYW1lc3BhY2Ugc3RkIHsKKworLy90ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgWCA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNf
YmFzZV9vZjxXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uLCBUPjo6dmFsdWUsIFQ+Ojp0
eXBlPgorLy9zdHJ1Y3Qgc3RkOjpkZWZhdWx0X2RlbGV0ZTxYPiB7CisvLyAgICB2b2lkIG9wZXJh
dG9yKCkoWCogZXhwcmVzc2lvbikKKy8vICAgIHsKKy8vICAgICAgICBXZWJDb3JlOjpXSExTTDo6
QVNUOjpFeHByZXNzaW9uOjpkZXN0cm95KCpleHByZXNzaW9uKTsKKy8vICAgIH0KKy8vfTsKKwor
Ly90ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKy8vdXNpbmcgT2xkRGVmYXVsdERlbGV0ZUV4cHJlc3Np
b24gPSBkZWZhdWx0X2RlbGV0ZTxUPjsKKy8vCisvL3RlbXBsYXRlIDw+CisvL3N0cnVjdCBzdGQ6
OmRlZmF1bHRfZGVsZXRlIHsKKy8vICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OmVuYWJs
ZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uLCBU
Pjo6dmFsdWU+CisvLyAgICB2b2lkIG9wZXJhdG9yKCkoVCogdHlwZSkKKy8vICAgIHsKKy8vICAg
ICAgICBXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjpkZXN0cm95KCp0eXBlKTsKKy8v
ICAgIH0KKy8vCisvLyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKy8vICAgIHZvaWQgb3BlcmF0
b3IoKShUKiB0eXBlKQorLy8gICAgeworLy8gICAgICAgIE9sZERlZmF1bHREZWxldGVFeHByZXNz
aW9uKCkodHlwZSk7CisvLyAgICB9CisvL307CisgICAgCit9CisKK0RFRklORV9ERUZBVUxUX0RF
TEVURShFeHByZXNzaW9uKQorCiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xf
RVhQUkVTU0lPTihUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExTTDo6QVNUOjpUb1ZhbHVlVHlwZU5hbWUpIFwKICAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lv
biYgZXhwcmVzc2lvbikgeyByZXR1cm4gZXhwcmVzc2lvbi5wcmVkaWNhdGU7IH0gXApJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmFsbHRocm91Z2gu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xGYWxsdGhyb3VnaC5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNywyMSArMzcsMTkgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7
CiAKLWNsYXNzIEZhbGx0aHJvdWdoIDogcHVibGljIFN0YXRlbWVudCB7CitjbGFzcyBGYWxsdGhy
b3VnaCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIEZhbGx0aHJvdWdoKENvZGVMb2NhdGlvbiBsb2NhdGlvbikKLSAg
ICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24pCisgICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9u
LCBLaW5kOjpGYWxsdGhyb3VnaCkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+RmFsbHRo
cm91Z2goKSA9IGRlZmF1bHQ7CisgICAgfkZhbGx0aHJvdWdoKCkgPSBkZWZhdWx0OwogCiAgICAg
RmFsbHRocm91Z2goY29uc3QgRmFsbHRocm91Z2gmKSA9IGRlbGV0ZTsKICAgICBGYWxsdGhyb3Vn
aChGYWxsdGhyb3VnaCYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzRmFsbHRocm91Z2goKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KIHByaXZhdGU6CiB9OwogCkBAIC02MSw2
ICs1OSw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKEZhbGx0aHJv
dWdoKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChGYWxsdGhyb3Vn
aCwgaXNGYWxsdGhyb3VnaCgpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbC5o
CShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xGbG9hdExpdGVyYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTcgKzM3LDE3
IEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBGbG9hdExp
dGVyYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBGbG9hdExpdGVyYWwgZmluYWwgOiBw
dWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgRmxvYXRMaXRlcmFsKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgZmxvYXQgdmFsdWUpCi0g
ICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0
aW9uLCBLaW5kOjpGbG9hdExpdGVyYWwpCiAgICAgICAgICwgbV90eXBlKGxvY2F0aW9uLCB2YWx1
ZSkKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IH5GbG9hdExpdGVyYWwoKSA9IGRlZmF1bHQ7CisgICAgfkZsb2F0TGl0ZXJhbCgpID0gZGVmYXVs
dDsKIAogICAgIEZsb2F0TGl0ZXJhbChjb25zdCBGbG9hdExpdGVyYWwmKSA9IGRlbGV0ZTsKICAg
ICBGbG9hdExpdGVyYWwoRmxvYXRMaXRlcmFsJiYpID0gZGVmYXVsdDsKQEAgLTU4LDggKzU4LDYg
QEAgcHVibGljOgogICAgIEZsb2F0TGl0ZXJhbFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX3R5cGU7
IH0KICAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAotICAgIGJv
b2wgaXNGbG9hdExpdGVyYWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAg
ICBGbG9hdExpdGVyYWwgY2xvbmUoKSBjb25zdAogICAgIHsKICAgICAgICAgRmxvYXRMaXRlcmFs
IHJlc3VsdChjb2RlTG9jYXRpb24oKSwgbV92YWx1ZSk7CkBAIC04MSw2ICs3OSw4IEBAIHByaXZh
dGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKEZsb2F0TGl0ZXJhbCkKKwogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEZsb2F0TGl0ZXJhbCwgaXNGbG9hdExp
dGVyYWwoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNw
cAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDE3
ICszOSwxMiBAQCBuYW1lc3BhY2UgV0hMU0wgewogbmFtZXNwYWNlIEFTVCB7CiAKIEZsb2F0TGl0
ZXJhbFR5cGU6OkZsb2F0TGl0ZXJhbFR5cGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBmbG9hdCB2
YWx1ZSkKLSAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgOiBSZXNvbHZhYmxlVHlwZShLaW5kOjpG
bG9hdExpdGVyYWwpCisgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgICwgbV9wcmVmZXJyZWRUeXBl
KFR5cGVSZWZlcmVuY2U6OmNyZWF0ZShsb2NhdGlvbiwgImZsb2F0Il9zdHIsIFR5cGVBcmd1bWVu
dHMoKSkpCiB7CiB9CiAKLUZsb2F0TGl0ZXJhbFR5cGU6On5GbG9hdExpdGVyYWxUeXBlKCkgPSBk
ZWZhdWx0OwotCi1GbG9hdExpdGVyYWxUeXBlOjpGbG9hdExpdGVyYWxUeXBlKEZsb2F0TGl0ZXJh
bFR5cGUmJikgPSBkZWZhdWx0OwotCi1GbG9hdExpdGVyYWxUeXBlJiBGbG9hdExpdGVyYWxUeXBl
OjpvcGVyYXRvcj0oRmxvYXRMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7Ci0KIGJvb2wgRmxvYXRM
aXRlcmFsVHlwZTo6Y2FuUmVzb2x2ZShjb25zdCBUeXBlJiB0eXBlKSBjb25zdAogewogICAgIGlm
ICghaXM8TmFtZWRUeXBlPih0eXBlKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBl
LmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMjcg
KzQwLDI1IEBAIG5hbWVzcGFjZSBBU1QgewogCiBjbGFzcyBUeXBlUmVmZXJlbmNlOwogCi1jbGFz
cyBGbG9hdExpdGVyYWxUeXBlIDogcHVibGljIFJlc29sdmFibGVUeXBlIHsKK2NsYXNzIEZsb2F0
TGl0ZXJhbFR5cGUgZmluYWwgOiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEZsb2F0TGl0ZXJhbFR5cGUoQ29kZUxvY2F0
aW9uLCBmbG9hdCB2YWx1ZSk7CiAKLSAgICB2aXJ0dWFsIH5GbG9hdExpdGVyYWxUeXBlKCk7Cisg
ICAgfkZsb2F0TGl0ZXJhbFR5cGUoKSA9IGRlZmF1bHQ7CiAKICAgICBGbG9hdExpdGVyYWxUeXBl
KGNvbnN0IEZsb2F0TGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBGbG9hdExpdGVyYWxUeXBl
KEZsb2F0TGl0ZXJhbFR5cGUmJik7CisgICAgRmxvYXRMaXRlcmFsVHlwZShGbG9hdExpdGVyYWxU
eXBlJiYpID0gZGVmYXVsdDsKIAogICAgIEZsb2F0TGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShjb25z
dCBGbG9hdExpdGVyYWxUeXBlJikgPSBkZWxldGU7Ci0gICAgRmxvYXRMaXRlcmFsVHlwZSYgb3Bl
cmF0b3I9KEZsb2F0TGl0ZXJhbFR5cGUmJik7Ci0KLSAgICBib29sIGlzRmxvYXRMaXRlcmFsVHlw
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBGbG9hdExpdGVyYWxUeXBl
JiBvcGVyYXRvcj0oRmxvYXRMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7CiAKICAgICBmbG9hdCB2
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogICAgIFR5cGVSZWZlcmVuY2UmIHBy
ZWZlcnJlZFR5cGUoKSB7IHJldHVybiBtX3ByZWZlcnJlZFR5cGU7IH0KIAotICAgIGJvb2wgY2Fu
UmVzb2x2ZShjb25zdCBUeXBlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdW5zaWduZWQgY29udmVy
c2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNh
blJlc29sdmUoY29uc3QgVHlwZSYpIGNvbnN0OworICAgIHVuc2lnbmVkIGNvbnZlcnNpb25Db3N0
KGNvbnN0IFVubmFtZWRUeXBlJikgY29uc3Q7CiAKICAgICBGbG9hdExpdGVyYWxUeXBlIGNsb25l
KCkgY29uc3Q7CiAKQEAgLTc3LDYgKzc1LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVG
QVVMVF9ERUxFVEUoRmxvYXRMaXRlcmFsVHlwZSkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19X
SExTTF9SRVNPTFZBQkxFX1RZUEUoRmxvYXRMaXRlcmFsVHlwZSwgaXNGbG9hdExpdGVyYWxUeXBl
KCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRm9yTG9vcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEZvckxvb3AuaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRm9yTG9vcC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MiwxMSArNDIsMTEgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNw
YWNlIEFTVCB7CiAKLWNsYXNzIEZvckxvb3AgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNzIEZv
ckxvb3AgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBGb3JMb29wKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVmFyaWFu
dDxVbmlxdWVSZWY8U3RhdGVtZW50PiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+PiYmIGluaXRpYWxp
emF0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4mJiBjb25kaXRpb24sIHN0ZDo6dW5p
cXVlX3B0cjxFeHByZXNzaW9uPiYmIGluY3JlbWVudCwgVW5pcXVlUmVmPFN0YXRlbWVudD4mJiBi
b2R5KQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnQo
bG9jYXRpb24sIEtpbmQ6OkZvckxvb3ApCiAgICAgICAgICwgbV9pbml0aWFsaXphdGlvbihXVEZN
b3ZlKGluaXRpYWxpemF0aW9uKSkKICAgICAgICAgLCBtX2NvbmRpdGlvbihXVEZNb3ZlKGNvbmRp
dGlvbikpCiAgICAgICAgICwgbV9pbmNyZW1lbnQoV1RGTW92ZShpbmNyZW1lbnQpKQpAQCAtNTQs
MTUgKzU0LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+Rm9yTG9v
cCgpCi0gICAgewotICAgIH0KKyAgICB+Rm9yTG9vcCgpID0gZGVmYXVsdDsKIAogICAgIEZvckxv
b3AoY29uc3QgRm9yTG9vcCYpID0gZGVsZXRlOwogICAgIEZvckxvb3AoRm9yTG9vcCYmKSA9IGRl
ZmF1bHQ7CiAKLSAgICBib29sIGlzRm9yTG9vcCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KLQogICAgIFZhcmlhbnQ8VW5pcXVlUmVmPFN0YXRlbWVudD4sIFVuaXF1ZVJlZjxFeHBy
ZXNzaW9uPj4mIGluaXRpYWxpemF0aW9uKCkgeyByZXR1cm4gbV9pbml0aWFsaXphdGlvbjsgfQog
ICAgIEV4cHJlc3Npb24qIGNvbmRpdGlvbigpIHsgcmV0dXJuIG1fY29uZGl0aW9uLmdldCgpOyB9
CiAgICAgRXhwcmVzc2lvbiogaW5jcmVtZW50KCkgeyByZXR1cm4gbV9pbmNyZW1lbnQuZ2V0KCk7
IH0KQEAgLTgxLDYgKzc3LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxF
VEUoRm9yTG9vcCkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoRm9y
TG9vcCwgaXNGb3JMb29wKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xHbG9i
YWxWYXJpYWJsZVJlZmVyZW5jZS5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNywxOSArMzcsMTkgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAog
bmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlIDogcHVibGlj
IEV4cHJlc3Npb24geworY2xhc3MgR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UgZmluYWwgOiBwdWJs
aWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVS
ZWY8RXhwcmVzc2lvbj4mJiBiYXNlLCBTdHJ1Y3R1cmVFbGVtZW50KiBzdHJ1Y3RGaWVsZCkKLSAg
ICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRp
b24sIEtpbmQ6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKQogICAgICAgICAsIG1fYmFzZShXVEZN
b3ZlKGJhc2UpKQogICAgICAgICAsIG1fc3RydWN0RmllbGQoKnN0cnVjdEZpZWxkKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKHN0cnVjdEZpZWxkKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5HbG9i
YWxWYXJpYWJsZVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKLSAgICBib29sIGlzR2xvYmFsVmFyaWFi
bGVSZWZlcmVuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgfkdsb2Jh
bFZhcmlhYmxlUmVmZXJlbmNlKCkgPSBkZWZhdWx0OworICAgIAogICAgIFN0cnVjdHVyZUVsZW1l
bnQmIHN0cnVjdEZpZWxkKCkgeyByZXR1cm4gbV9zdHJ1Y3RGaWVsZDsgfQogCiAgICAgRXhwcmVz
c2lvbiYgYmFzZSgpIHsgcmV0dXJuIG1fYmFzZS5nZXQoKTsgfQpAQCAtNjUsNiArNjUsOCBAQCBw
cml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShHbG9iYWxWYXJpYWJsZVJlZmVy
ZW5jZSkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEdsb2JhbFZh
cmlhYmxlUmVmZXJlbmNlLCBpc0dsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKCkpCiAKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSWZTdGF0
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xJZlN0YXRlbWVudC5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJZlN0YXRlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSwyNCArMzksMjIgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNl
IEFTVCB7CiAKLWNsYXNzIElmU3RhdGVtZW50IDogcHVibGljIFN0YXRlbWVudCB7CitjbGFzcyBJ
ZlN0YXRlbWVudCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIElmU3RhdGVtZW50KENvZGVMb2NhdGlvbiBsb2NhdGlv
biwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgY29uZGl0aW9uYWwsIFVuaXF1ZVJlZjxTdGF0ZW1l
bnQ+JiYgYm9keSwgc3RkOjp1bmlxdWVfcHRyPFN0YXRlbWVudD4mJiBlbHNlQm9keSkKLSAgICAg
ICAgOiBTdGF0ZW1lbnQobG9jYXRpb24pCisgICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBL
aW5kOjpJZikKICAgICAgICAgLCBtX2NvbmRpdGlvbmFsKFdURk1vdmUoY29uZGl0aW9uYWwpKQog
ICAgICAgICAsIG1fYm9keShXVEZNb3ZlKGJvZHkpKQogICAgICAgICAsIG1fZWxzZUJvZHkoV1RG
TW92ZShlbHNlQm9keSkpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfklmU3RhdGVtZW50
KCkgPSBkZWZhdWx0OworICAgIH5JZlN0YXRlbWVudCgpID0gZGVmYXVsdDsKIAogICAgIElmU3Rh
dGVtZW50KGNvbnN0IElmU3RhdGVtZW50JikgPSBkZWxldGU7CiAgICAgSWZTdGF0ZW1lbnQoSWZT
dGF0ZW1lbnQmJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc0lmU3RhdGVtZW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgRXhwcmVzc2lvbiYgY29uZGl0aW9uYWwo
KSB7IHJldHVybiBtX2NvbmRpdGlvbmFsOyB9CiAgICAgU3RhdGVtZW50JiBib2R5KCkgeyByZXR1
cm4gbV9ib2R5OyB9CiAgICAgU3RhdGVtZW50KiBlbHNlQm9keSgpIHsgcmV0dXJuIG1fZWxzZUJv
ZHkuZ2V0KCk7IH0KQEAgLTczLDYgKzcxLDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVG
QVVMVF9ERUxFVEUoSWZTdGF0ZW1lbnQpCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xf
U1RBVEVNRU5UKElmU3RhdGVtZW50LCBpc0lmU3RhdGVtZW50KCkpCiAKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW5kZXhFeHByZXNz
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMSW5kZXhFeHByZXNzaW9uLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEluZGV4RXhwcmVzc2lvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCwzMyArMzgsMzIgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFt
ZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEluZGV4RXhwcmVzc2lvbiA6IHB1YmxpYyBQcm9wZXJ0eUFj
Y2Vzc0V4cHJlc3Npb24geworY2xhc3MgSW5kZXhFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIFBy
b3BlcnR5QWNjZXNzRXhwcmVzc2lvbiB7CisgICAgdXNpbmcgQmFzZSA9IFByb3BlcnR5QWNjZXNz
RXhwcmVzc2lvbjsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBJ
bmRleEV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lv
bj4mJiBiYXNlLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBpbmRleCkKLSAgICAgICAgOiBQcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24obG9jYXRpb24sIFdURk1vdmUoYmFzZSkpCisgICAgICAgIDog
UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpJbmRleCwgV1RGTW92ZShi
YXNlKSkKICAgICAgICAgLCBtX2luZGV4KFdURk1vdmUoaW5kZXgpKQogICAgIHsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIH5JbmRleEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfkluZGV4RXhw
cmVzc2lvbigpID0gZGVmYXVsdDsKIAogICAgIEluZGV4RXhwcmVzc2lvbihjb25zdCBJbmRleEV4
cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBJbmRleEV4cHJlc3Npb24oSW5kZXhFeHByZXNzaW9u
JiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNJbmRleEV4cHJlc3Npb24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBTdHJpbmcgZ2V0dGVyRnVuY3Rpb25OYW1lKCkg
Y29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJpbmcgZ2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiAib3BlcmF0b3JbXSJfc3RyOwogICAgIH0KIAotICAgIFN0cmlu
ZyBzZXR0ZXJGdW5jdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZQorICAgIFN0cmluZyBzZXR0ZXJG
dW5jdGlvbk5hbWUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICJvcGVyYXRvcltdPSJf
c3RyOwogICAgIH0KIAotICAgIFN0cmluZyBhbmRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0IG92ZXJy
aWRlCisgICAgU3RyaW5nIGFuZGVyRnVuY3Rpb25OYW1lKCkgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiAib3BlcmF0b3ImW10iX3N0cjsKICAgICB9CkBAIC04Miw2ICs4MSw4IEBAIHByaXZh
dGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKEluZGV4RXhwcmVzc2lvbikKKwogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEluZGV4RXhwcmVzc2lvbiwgaXNJ
bmRleEV4cHJlc3Npb24oKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFs
LmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDE3ICsz
NywxNyBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgSW50
ZWdlckxpdGVyYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBJbnRlZ2VyTGl0ZXJhbCBm
aW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBJbnRlZ2VyTGl0ZXJhbChDb2RlTG9jYXRpb24gbG9jYXRpb24sIGludCB2
YWx1ZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Np
b24obG9jYXRpb24sIEtpbmQ6OkludGVnZXJMaXRlcmFsKQogICAgICAgICAsIG1fdHlwZShsb2Nh
dGlvbiwgdmFsdWUpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB+SW50ZWdlckxpdGVyYWwoKSA9IGRlZmF1bHQ7CisgICAgfkludGVnZXJMaXRl
cmFsKCkgPSBkZWZhdWx0OwogCiAgICAgSW50ZWdlckxpdGVyYWwoY29uc3QgSW50ZWdlckxpdGVy
YWwmKSA9IGRlbGV0ZTsKICAgICBJbnRlZ2VyTGl0ZXJhbChJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRl
ZmF1bHQ7CkBAIC01OCw4ICs1OCw2IEBAIHB1YmxpYzoKICAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUm
IHR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0KICAgICBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlOyB9CiAKLSAgICBib29sIGlzSW50ZWdlckxpdGVyYWwoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBJbnRlZ2VyTGl0ZXJhbCBjbG9uZSgpIGNvbnN0CiAg
ICAgewogICAgICAgICBJbnRlZ2VyTGl0ZXJhbCByZXN1bHQoY29kZUxvY2F0aW9uKCksIG1fdmFs
dWUpOwpAQCAtODMsNiArODEsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RF
TEVURShJbnRlZ2VyTGl0ZXJhbCkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBS
RVNTSU9OKEludGVnZXJMaXRlcmFsLCBpc0ludGVnZXJMaXRlcmFsKCkpCiAKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxp
dGVyYWxUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwCShyZXZpc2lvbiAyNDg0MDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2Vy
TGl0ZXJhbFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxNyArNDAsMTIgQEAgbmFtZXNw
YWNlIFdITFNMIHsKIG5hbWVzcGFjZSBBU1QgewogCiBJbnRlZ2VyTGl0ZXJhbFR5cGU6OkludGVn
ZXJMaXRlcmFsVHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIGludCB2YWx1ZSkKLSAgICA6IG1f
dmFsdWUodmFsdWUpCisgICAgOiBSZXNvbHZhYmxlVHlwZShLaW5kOjpJbnRlZ2VyTGl0ZXJhbCkK
KyAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgLCBtX3ByZWZlcnJlZFR5cGUoVHlwZVJlZmVyZW5j
ZTo6Y3JlYXRlKGxvY2F0aW9uLCAiaW50Il9zdHIsIFR5cGVBcmd1bWVudHMoKSkpCiB7CiB9CiAK
LUludGVnZXJMaXRlcmFsVHlwZTo6fkludGVnZXJMaXRlcmFsVHlwZSgpID0gZGVmYXVsdDsKLQot
SW50ZWdlckxpdGVyYWxUeXBlOjpJbnRlZ2VyTGl0ZXJhbFR5cGUoSW50ZWdlckxpdGVyYWxUeXBl
JiYpID0gZGVmYXVsdDsKLQotSW50ZWdlckxpdGVyYWxUeXBlJiBJbnRlZ2VyTGl0ZXJhbFR5cGU6
Om9wZXJhdG9yPShJbnRlZ2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwotCiBib29sIEludGVn
ZXJMaXRlcmFsVHlwZTo6Y2FuUmVzb2x2ZShjb25zdCBUeXBlJiB0eXBlKSBjb25zdAogewogICAg
IGlmICghaXM8TmFtZWRUeXBlPih0eXBlKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRl
cmFsVHlwZS5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNDAsMjcgKzQwLDI1IEBAIG5hbWVzcGFjZSBBU1QgewogCiBjbGFzcyBUeXBlUmVmZXJlbmNl
OwogCi1jbGFzcyBJbnRlZ2VyTGl0ZXJhbFR5cGUgOiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUgewor
Y2xhc3MgSW50ZWdlckxpdGVyYWxUeXBlIGZpbmFsIDogcHVibGljIFJlc29sdmFibGVUeXBlIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBJbnRlZ2VyTGl0ZXJh
bFR5cGUoQ29kZUxvY2F0aW9uLCBpbnQgdmFsdWUpOwogCi0gICAgdmlydHVhbCB+SW50ZWdlckxp
dGVyYWxUeXBlKCk7CisgICAgfkludGVnZXJMaXRlcmFsVHlwZSgpID0gZGVmYXVsdDsKIAogICAg
IEludGVnZXJMaXRlcmFsVHlwZShjb25zdCBJbnRlZ2VyTGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsK
LSAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUoSW50ZWdlckxpdGVyYWxUeXBlJiYpOworICAgIEludGVn
ZXJMaXRlcmFsVHlwZShJbnRlZ2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwogCiAgICAgSW50
ZWdlckxpdGVyYWxUeXBlJiBvcGVyYXRvcj0oY29uc3QgSW50ZWdlckxpdGVyYWxUeXBlJikgPSBk
ZWxldGU7Ci0gICAgSW50ZWdlckxpdGVyYWxUeXBlJiBvcGVyYXRvcj0oSW50ZWdlckxpdGVyYWxU
eXBlJiYpOwotCi0gICAgYm9vbCBpc0ludGVnZXJMaXRlcmFsVHlwZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KKyAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShJbnRl
Z2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwogCiAgICAgaW50IHZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZTsgfQogCiAgICAgVHlwZVJlZmVyZW5jZSYgcHJlZmVycmVkVHlwZSgpIHsg
cmV0dXJuIG1fcHJlZmVycmVkVHlwZTsgfQogCi0gICAgYm9vbCBjYW5SZXNvbHZlKGNvbnN0IFR5
cGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChjb25zdCBV
bm5hbWVkVHlwZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBU
eXBlJikgY29uc3Q7CisgICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5
cGUmKSBjb25zdDsKIAogICAgIEludGVnZXJMaXRlcmFsVHlwZSBjbG9uZSgpIGNvbnN0OwogCkBA
IC03Nyw2ICs3NSw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKElu
dGVnZXJMaXRlcmFsVHlwZSkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9SRVNPTFZB
QkxFX1RZUEUoSW50ZWdlckxpdGVyYWxUeXBlLCBpc0ludGVnZXJMaXRlcmFsVHlwZSgpKQogCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TExvZ2ljYWxFeHByZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbEV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4
NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9n
aWNhbEV4cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3Bh
Y2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgTG9naWNhbEV4cHJlc3Npb24g
OiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBMb2dpY2FsRXhwcmVzc2lvbiBmaW5hbCA6IHB1
YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsKQEAgLTQ2LDIyICs0NiwyMCBAQCBwdWJs
aWM6CiAgICAgfTsKIAogICAgIExvZ2ljYWxFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlv
biwgVHlwZSB0eXBlLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBsZWZ0LCBVbmlxdWVSZWY8RXhw
cmVzc2lvbj4mJiByaWdodCkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAg
ICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkxvZ2ljYWwpCiAgICAgICAgICwgbV90eXBl
KHR5cGUpCiAgICAgICAgICwgbV9sZWZ0KFdURk1vdmUobGVmdCkpCiAgICAgICAgICwgbV9yaWdo
dChXVEZNb3ZlKHJpZ2h0KSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+TG9naWNhbEV4
cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfkxvZ2ljYWxFeHByZXNzaW9uKCkgPSBkZWZhdWx0
OwogCiAgICAgTG9naWNhbEV4cHJlc3Npb24oY29uc3QgTG9naWNhbEV4cHJlc3Npb24mKSA9IGRl
bGV0ZTsKICAgICBMb2dpY2FsRXhwcmVzc2lvbihMb2dpY2FsRXhwcmVzc2lvbiYmKSA9IGRlZmF1
bHQ7CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAotICAgIGJv
b2wgaXNMb2dpY2FsRXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
LQogICAgIEV4cHJlc3Npb24mIGxlZnQoKSB7IHJldHVybiBtX2xlZnQ7IH0KICAgICBFeHByZXNz
aW9uJiByaWdodCgpIHsgcmV0dXJuIG1fcmlnaHQ7IH0KIApAQCAtNzcsNiArNzUsOCBAQCBwcml2
YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShMb2dpY2FsRXhwcmVzc2lvbikKKwog
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKExvZ2ljYWxFeHByZXNzaW9u
LCBpc0xvZ2ljYWxFeHByZXNzaW9uKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xM
b2dpY2FsTm90RXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNywyMiArMzcsMjAgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFt
ZXNwYWNlIEFTVCB7CiAKLWNsYXNzIExvZ2ljYWxOb3RFeHByZXNzaW9uIDogcHVibGljIEV4cHJl
c3Npb24geworY2xhc3MgTG9naWNhbE5vdEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVz
c2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTG9naWNh
bE5vdEV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lv
bj4mJiBvcGVyYW5kKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgICAgIDog
RXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6TG9naWNhbE5vdCkKICAgICAgICAgLCBtX29wZXJh
bmQoV1RGTW92ZShvcGVyYW5kKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+TG9naWNh
bE5vdEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfkxvZ2ljYWxOb3RFeHByZXNzaW9uKCkg
PSBkZWZhdWx0OwogCiAgICAgTG9naWNhbE5vdEV4cHJlc3Npb24oY29uc3QgTG9naWNhbE5vdEV4
cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBMb2dpY2FsTm90RXhwcmVzc2lvbihMb2dpY2FsTm90
RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzTG9naWNhbE5vdEV4cHJlc3Np
b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNzaW9uJiBv
cGVyYW5kKCkgeyByZXR1cm4gbV9vcGVyYW5kOyB9CiAKIHByaXZhdGU6CkBAIC02NSw2ICs2Myw4
IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKExvZ2ljYWxOb3RFeHBy
ZXNzaW9uKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oTG9naWNh
bE5vdEV4cHJlc3Npb24sIGlzTG9naWNhbE5vdEV4cHJlc3Npb24oKSkKIAogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlQXJyYXlS
ZWZlcmVuY2VFeHByZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oCShy
ZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDIzICszOCwyMSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAot
Y2xhc3MgTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsK
K2NsYXNzIE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVz
c2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTWFrZUFy
cmF5UmVmZXJlbmNlRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxF
eHByZXNzaW9uPiYmIGxlZnRWYWx1ZSwgQWRkcmVzc0VzY2FwZU1vZGUgYWRkcmVzc0VzY2FwZU1v
ZGUpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9u
KGxvY2F0aW9uLCBLaW5kOjpNYWtlQXJyYXlSZWZlcmVuY2UpCiAgICAgICAgICwgbV9sZWZ0VmFs
dWUoV1RGTW92ZShsZWZ0VmFsdWUpKQogICAgICAgICAsIG1fYWRkcmVzc0VzY2FwZU1vZGUoYWRk
cmVzc0VzY2FwZU1vZGUpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfk1ha2VBcnJheVJl
ZmVyZW5jZUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfk1ha2VBcnJheVJlZmVyZW5jZUV4
cHJlc3Npb24oKSA9IGRlZmF1bHQ7CiAKICAgICBNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9u
KGNvbnN0IE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBNYWtl
QXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mJikg
PSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc01ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNzaW9uJiBsZWZ0VmFs
dWUoKSB7IHJldHVybiBtX2xlZnRWYWx1ZTsgfQogCiAgICAgYm9vbCBtaWdodEVzY2FwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYWRkcmVzc0VzY2FwZU1vZGUgPT0gQWRkcmVzc0VzY2FwZU1vZGU6OkVz
Y2FwZXM7IH0KQEAgLTcwLDYgKzY4LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVM
VF9ERUxFVEUoTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbikKKwogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24sIGlz
TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbigpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlUG9pbnRlckV4cHJl
c3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjMgKzM4LDIxIEBAIG5hbWVzcGFjZSBXSExT
TCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBNYWtlUG9pbnRlckV4cHJlc3Npb24gOiBw
dWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBNYWtlUG9pbnRlckV4cHJlc3Npb24gZmluYWwgOiBw
dWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgTWFrZVBvaW50ZXJFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVl
UmVmPEV4cHJlc3Npb24+JiYgbGVmdFZhbHVlLCBBZGRyZXNzRXNjYXBlTW9kZSBhZGRyZXNzRXNj
YXBlTW9kZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJl
c3Npb24obG9jYXRpb24sIEtpbmQ6Ok1ha2VQb2ludGVyKQogICAgICAgICAsIG1fbGVmdFZhbHVl
KFdURk1vdmUobGVmdFZhbHVlKSkKICAgICAgICAgLCBtX2FkZHJlc3NFc2NhcGVNb2RlKGFkZHJl
c3NFc2NhcGVNb2RlKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5NYWtlUG9pbnRlckV4
cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfk1ha2VQb2ludGVyRXhwcmVzc2lvbigpID0gZGVm
YXVsdDsKIAogICAgIE1ha2VQb2ludGVyRXhwcmVzc2lvbihjb25zdCBNYWtlUG9pbnRlckV4cHJl
c3Npb24mKSA9IGRlbGV0ZTsKICAgICBNYWtlUG9pbnRlckV4cHJlc3Npb24oTWFrZVBvaW50ZXJF
eHByZXNzaW9uJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNNYWtlUG9pbnRlckV4cHJlc3Np
b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNzaW9uJiBs
ZWZ0VmFsdWUoKSB7IHJldHVybiBtX2xlZnRWYWx1ZTsgfQogCiAgICAgYm9vbCBtaWdodEVzY2Fw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWRkcmVzc0VzY2FwZU1vZGUgPT0gQWRkcmVzc0VzY2FwZU1v
ZGU6OkVzY2FwZXM7IH0KQEAgLTcwLDYgKzY4LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVf
REVGQVVMVF9ERUxFVEUoTWFrZVBvaW50ZXJFeHByZXNzaW9uKQorCiBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dITFNMX0VYUFJFU1NJT04oTWFrZVBvaW50ZXJFeHByZXNzaW9uLCBpc01ha2VQb2lu
dGVyRXhwcmVzc2lvbigpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVkVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVkVHlwZS5oCShyZXZpc2lv
biAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xOYW1lZFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTMgKzQxLDE0IEBAIG5hbWVzcGFj
ZSBBU1QgewogY2xhc3MgTmFtZWRUeXBlIDogcHVibGljIFR5cGUgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIE5hbWVkVHlwZShDb2RlTG9jYXRpb24gbG9jYXRp
b24sIFN0cmluZyYmIG5hbWUpCi0gICAgICAgIDogbV9jb2RlTG9jYXRpb24obG9jYXRpb24pCisg
ICAgTmFtZWRUeXBlKEtpbmQga2luZCwgQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBu
YW1lKQorICAgICAgICA6IFR5cGUoa2luZCkKKyAgICAgICAgLCBtX2NvZGVMb2NhdGlvbihsb2Nh
dGlvbikKICAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKICAgICB7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB+TmFtZWRUeXBlKCkgPSBkZWZhdWx0OworICAgIH5OYW1lZFR5cGUoKSA9IGRl
ZmF1bHQ7CiAKICAgICBOYW1lZFR5cGUoY29uc3QgTmFtZWRUeXBlJikgPSBkZWxldGU7CiAgICAg
TmFtZWRUeXBlKE5hbWVkVHlwZSYmKSA9IGRlZmF1bHQ7CkBAIC01NywxNiArNTgsMTAgQEAgcHVi
bGljOgogCiAgICAgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9CiAKLSAgICBib29s
IGlzTmFtZWRUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc1R5cGVEZWZpbml0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNTdHJ1Y3R1cmVEZWZpbml0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNFbnVtZXJhdGlvbkRlZmluaXRpb24oKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZVR5cGVEZWNsYXJhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IFR5cGUmIHVuaWZ5
Tm9kZSgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9Ci0gICAgdmlydHVhbCBUeXBlJiB1bmlmeU5v
ZGUoKSB7IHJldHVybiAqdGhpczsgfQogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBUeXBl
OworICAgIFR5cGUmIHVuaWZ5Tm9kZUltcGwoKSB7IHJldHVybiAqdGhpczsgfQogICAgIENvZGVM
b2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKICAgICBTdHJpbmcgbV9uYW1lOwogfTsKQEAgLTc3LDYg
KzcyLDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoTmFtZWRUeXBl
KQorCiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfTkFNRURfVFlQRShUb1Zh
bHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihX
ZWJDb3JlOjpXSExTTDo6QVNUOjpUb1ZhbHVlVHlwZU5hbWUpIFwKICAgICBzdGF0aWMgYm9vbCBp
c1R5cGUoY29uc3QgV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmFtZWRUeXBlJiB0eXBlKSB7IHJldHVy
biB0eXBlLnByZWRpY2F0ZTsgfSBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVj
bGFyYXRpb24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDIyICs0MCwyMCBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNU
IHsKIAotY2xhc3MgTmF0aXZlVHlwZURlY2xhcmF0aW9uIDogcHVibGljIE5hbWVkVHlwZSB7Citj
bGFzcyBOYXRpdmVUeXBlRGVjbGFyYXRpb24gZmluYWwgOiBwdWJsaWMgTmFtZWRUeXBlIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBOYXRpdmVUeXBlRGVjbGFy
YXRpb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1lLCBUeXBlQXJndW1lbnRz
JiYgdHlwZUFyZ3VtZW50cykKLSAgICAgICAgOiBOYW1lZFR5cGUobG9jYXRpb24sIFdURk1vdmUo
bmFtZSkpCisgICAgICAgIDogTmFtZWRUeXBlKEtpbmQ6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiwg
bG9jYXRpb24sIFdURk1vdmUobmFtZSkpCiAgICAgICAgICwgbV90eXBlQXJndW1lbnRzKFdURk1v
dmUodHlwZUFyZ3VtZW50cykpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfk5hdGl2ZVR5
cGVEZWNsYXJhdGlvbigpID0gZGVmYXVsdDsKKyAgICB+TmF0aXZlVHlwZURlY2xhcmF0aW9uKCkg
PSBkZWZhdWx0OwogCiAgICAgTmF0aXZlVHlwZURlY2xhcmF0aW9uKGNvbnN0IE5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbiYpID0gZGVsZXRlOwogICAgIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbihOYXRpdmVU
eXBlRGVjbGFyYXRpb24mJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc05hdGl2ZVR5cGVEZWNs
YXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIFR5cGVBcmd1
bWVudHMmIHR5cGVBcmd1bWVudHMoKSB7IHJldHVybiBtX3R5cGVBcmd1bWVudHM7IH0KIAogICAg
IGJvb2wgaXNJbnQoKSBjb25zdCB7IHJldHVybiBtX2lzSW50OyB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdWxsTGl0ZXJhbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxM
aXRlcmFsLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRlcmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDE1
ICszNywxNSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3Mg
TnVsbExpdGVyYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBOdWxsTGl0ZXJhbCBmaW5h
bCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBOdWxsTGl0ZXJhbChDb2RlTG9jYXRpb24gbG9jYXRpb24pCi0gICAgICAgIDog
RXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5k
OjpOdWxsTGl0ZXJhbCkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+TnVsbExpdGVyYWwo
KSA9IGRlZmF1bHQ7CisgICAgfk51bGxMaXRlcmFsKCkgPSBkZWZhdWx0OwogCiAgICAgTnVsbExp
dGVyYWwoY29uc3QgTnVsbExpdGVyYWwmKSA9IGRlbGV0ZTsKICAgICBOdWxsTGl0ZXJhbChOdWxs
TGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CkBAIC01NSw4ICs1NSw2IEBAIHB1YmxpYzoKIAogICAgIE51
bGxMaXRlcmFsVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQogCi0gICAgYm9vbCBpc051
bGxMaXRlcmFsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgTnVsbExp
dGVyYWwgY2xvbmUoKSBjb25zdAogICAgIHsKICAgICAgICAgYXV0byByZXN1bHQgPSBOdWxsTGl0
ZXJhbChjb2RlTG9jYXRpb24oKSk7CkBAIC03Niw2ICs3NCw4IEBAIHByaXZhdGU6CiAKIH0KIAor
REVGSU5FX0RFRkFVTFRfREVMRVRFKE51bGxMaXRlcmFsKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX1dITFNMX0VYUFJFU1NJT04oTnVsbExpdGVyYWwsIGlzTnVsbExpdGVyYWwoKSkKIAogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xO
dWxsTGl0ZXJhbFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xOdWxsTGl0ZXJhbFR5cGUuaAkocmV2aXNpb24gMjQ4NDA0KQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVsbExpdGVy
YWxUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEyICszNiwxNCBAQCBuYW1lc3BhY2UgV0hM
U0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgTnVsbExpdGVyYWxUeXBlIDogcHVibGlj
IFJlc29sdmFibGVUeXBlIHsKK2NsYXNzIE51bGxMaXRlcmFsVHlwZSBmaW5hbCA6IHB1YmxpYyBS
ZXNvbHZhYmxlVHlwZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgTnVsbExpdGVyYWxUeXBlKCkgPSBkZWZhdWx0OworICAgIE51bGxMaXRlcmFsVHlwZSgpCisg
ICAgICAgIDogUmVzb2x2YWJsZVR5cGUoS2luZDo6TnVsbExpdGVyYWwpCisgICAgeyB9CiAKLSAg
ICB2aXJ0dWFsIH5OdWxsTGl0ZXJhbFR5cGUoKSA9IGRlZmF1bHQ7CisgICAgfk51bGxMaXRlcmFs
VHlwZSgpID0gZGVmYXVsdDsKIAogICAgIE51bGxMaXRlcmFsVHlwZShjb25zdCBOdWxsTGl0ZXJh
bFR5cGUmKSA9IGRlbGV0ZTsKICAgICBOdWxsTGl0ZXJhbFR5cGUoTnVsbExpdGVyYWxUeXBlJiYp
ID0gZGVmYXVsdDsKQEAgLTQ5LDEwICs1MSw4IEBAIHB1YmxpYzoKICAgICBOdWxsTGl0ZXJhbFR5
cGUmIG9wZXJhdG9yPShjb25zdCBOdWxsTGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKICAgICBOdWxs
TGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShOdWxsTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwogCi0g
ICAgYm9vbCBpc051bGxMaXRlcmFsVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KLQotICAgIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBUeXBlJikgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIGNhblJlc29sdmUoY29uc3QgVHlwZSYpIGNvbnN0OworICAgIHVuc2ln
bmVkIGNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFtZWRUeXBlJikgY29uc3Q7CiAKIHByaXZhdGU6
CiB9OwpAQCAtNjMsNiArNjMsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RF
TEVURShOdWxsTGl0ZXJhbFR5cGUpCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfUkVT
T0xWQUJMRV9UWVBFKE51bGxMaXRlcmFsVHlwZSwgaXNOdWxsTGl0ZXJhbFR5cGUoKSkKIAogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQ
b2ludGVyVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFBvaW50ZXJUeXBlLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFBvaW50ZXJUeXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDExIEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVm
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIFdITFNMIHsKQEAgLTQ2LDE3ICs0OSwxOSBAQCBj
bGFzcyBQb2ludGVyVHlwZSBmaW5hbCA6IHB1YmxpYyBSZWZlcmVuCiAgICAgdXNpbmcgQmFzZSA9
IFJlZmVyZW5jZVR5cGU7CiAKICAgICBQb2ludGVyVHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24s
IEFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2UsIFJlZjxVbm5hbWVkVHlwZT4gZWxlbWVudFR5cGUp
Ci0gICAgICAgIDogQmFzZShsb2NhdGlvbiwgYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKGVsZW1lbnRU
eXBlKSwgS2luZDo6UG9pbnRlclR5cGUpCisgICAgICAgIDogQmFzZShsb2NhdGlvbiwgYWRkcmVz
c1NwYWNlLCBXVEZNb3ZlKGVsZW1lbnRUeXBlKSwgS2luZDo6UG9pbnRlcikKICAgICB7CiAgICAg
fQogCiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxQb2ludGVyVHlwZT4gY3JlYXRlKENvZGVMb2Nh
dGlvbiBsb2NhdGlvbiwgQWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFjZSwgUmVmPFVubmFtZWRUeXBl
PiBlbGVtZW50VHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBvaW50
ZXJUeXBlKGxvY2F0aW9uLCBhZGRyZXNzU3BhY2UsIFdURk1vdmUoZWxlbWVudFR5cGUpKSk7Cisg
ICAgICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBQb2ludGVyVHlwZShsb2NhdGlvbiwg
YWRkcmVzc1NwYWNlLCBXVEZNb3ZlKGVsZW1lbnRUeXBlKSkpOworICAgICAgICBkYXRhTG9nTG4o
Ik1hZGU6ICIsIFJhd1BvaW50ZXIoJnJlc3VsdC5nZXQoKSkpOworICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIAotICAgIHZpcnR1YWwgflBvaW50ZXJUeXBlKCkgPSBkZWZhdWx0OworICAg
IH5Qb2ludGVyVHlwZSgpID0gZGVmYXVsdDsKIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAog
ICAgIHsKQEAgLTY4LDcgKzczLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRkcmVzc1Nw
YWNlKCkgPT0gb3RoZXIuYWRkcmVzc1NwYWNlKCkgJiYgZWxlbWVudFR5cGUoKSA9PSBvdGhlci5l
bGVtZW50VHlwZSgpOwogICAgIH0KIAotICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IG92ZXJy
aWRlCisgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBt
YWtlU3RyaW5nKGVsZW1lbnRUeXBlKCkudG9TdHJpbmcoKSwgJyonKTsKICAgICB9CkBAIC04MCw2
ICs4NSw4IEBAIHB1YmxpYzoKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoUG9pbnRlclR5
cGUpCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVU5OQU1FRF9UWVBFKFBvaW50ZXJU
eXBlLCBpc1BvaW50ZXJUeXBlKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVz
c2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwyMiArNDEsMTggQEAgbmFtZXNwYWNlIEFTVCB7
CiBjbGFzcyBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgUHJvcGVydHlBY2Nlc3NF
eHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYg
YmFzZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgIFByb3BlcnR5QWNjZXNz
RXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIEtpbmQga2luZCwgVW5pcXVlUmVmPEV4
cHJlc3Npb24+JiYgYmFzZSkKKyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBraW5kKQog
ICAgICAgICAsIG1fYmFzZShXVEZNb3ZlKGJhc2UpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIH5Qcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oKSA9IGRlZmF1bHQ7Ci0KICAgICBQcm9wZXJ0
eUFjY2Vzc0V4cHJlc3Npb24oY29uc3QgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJikgPSBkZWxl
dGU7CiAgICAgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKFByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
biYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgdmlydHVhbCBTdHJpbmcgZ2V0
dGVyRnVuY3Rpb25OYW1lKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIHNldHRlckZ1
bmN0aW9uTmFtZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyBhbmRlckZ1bmN0aW9u
TmFtZSgpIGNvbnN0ID0gMDsKKyAgICBTdHJpbmcgZ2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3Q7
CisgICAgU3RyaW5nIHNldHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0OworICAgIFN0cmluZyBhbmRl
ckZ1bmN0aW9uTmFtZSgpIGNvbnN0OwogCiAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbiogZ2V0dGVy
RnVuY3Rpb24oKSB7IHJldHVybiBtX2dldHRlckZ1bmN0aW9uOyB9CiAgICAgRnVuY3Rpb25EZWNs
YXJhdGlvbiogYW5kZXJGdW5jdGlvbigpIHsgcmV0dXJuIG1fYW5kZXJGdW5jdGlvbjsgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaAkocmV2aXNp
b24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMCAr
MzAsMTQgQEAKICNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKICNpbmNsdWRlICJXSExTTFZh
cmlhYmxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJXSExTTFZhcmlhYmxlUmVmZXJlbmNlLmgi
Ci0jaW5jbHVkZSA8bWVtb3J5PgorLy8jaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCituYW1lc3BhY2Ugc3Rk
IHsKKworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBXSExTTCB7CkBAIC00
OSwxNSArNTMsMTkgQEAgbmFtZXNwYWNlIEFTVCB7CiAgKiAgNi4gRXZhbHVhdGUgbV9yZXN1bHRF
eHByZXNzaW9uCiAgKiAgNy4gUmV0dXJuIHRoZSByZXN1bHQKICAqLwotY2xhc3MgUmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK2NsYXNzIFJlYWRNb2RpZnlX
cml0ZUV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFVuaXF1ZVJlZjxSZWFkTW9kaWZ5
V3JpdGVFeHByZXNzaW9uPiBjcmVhdGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8
RXhwcmVzc2lvbj4gbFZhbHVlKQorICAgIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oQ29kZUxv
Y2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbGVmdFZhbHVlKQorICAgICAg
ICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OlJlYWRNb2RpZnlXcml0ZSkKKyAgICAgICAg
LCBtX2xlZnRWYWx1ZShXVEZNb3ZlKGxlZnRWYWx1ZSkpCisgICAgICAgICwgbV9vbGRWYWx1ZSht
YWtlVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+KGxvY2F0aW9uLCBRdWFsaWZpZXJzKCks
IG51bGxwdHIsIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKSkKKyAgICAgICAgLCBtX25ld1Zh
bHVlKG1ha2VVbmlxdWVSZWY8VmFyaWFibGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIFF1YWxpZmll
cnMoKSwgbnVsbHB0ciwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIpKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4obG9jYXRp
b24sIFdURk1vdmUobFZhbHVlKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+UmVhZE1vZGlmeVdy
aXRlRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKworICAgIH5SZWFkTW9kaWZ5V3JpdGVFeHByZXNz
aW9uKCkgPSBkZWZhdWx0OwogCiAgICAgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbihjb25zdCBS
ZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uJikgPSBkZWxldGU7CiAgICAgUmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbihSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKQEAgLTgy
LDggKzkwLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxWYXJpYWJs
ZVJlZmVyZW5jZT4oVmFyaWFibGVSZWZlcmVuY2U6OndyYXAobV9uZXdWYWx1ZSkpOwogICAgIH0K
IAotICAgIGJvb2wgaXNSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgRXhwcmVzc2lvbiYgbGVmdFZhbHVlKCkgeyByZXR1cm4g
bV9sZWZ0VmFsdWU7IH0KICAgICBWYXJpYWJsZURlY2xhcmF0aW9uJiBvbGRWYWx1ZSgpIHsgcmV0
dXJuIG1fb2xkVmFsdWU7IH0KICAgICBWYXJpYWJsZURlY2xhcmF0aW9uJiBuZXdWYWx1ZSgpIHsg
cmV0dXJuIG1fbmV3VmFsdWU7IH0KQEAgLTExNCwxNiArMTIwLDYgQEAgcHVibGljOgogICAgIH0K
IAogcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBmcmllbmQg
VW5pcXVlUmVmPFU+IFdURjo6bWFrZVVuaXF1ZVJlZihBcmdzJiYuLi4pOwotCi0gICAgUmVhZE1v
ZGlmeVdyaXRlRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHBy
ZXNzaW9uPiBsZWZ0VmFsdWUpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbikKLSAgICAg
ICAgLCBtX2xlZnRWYWx1ZShXVEZNb3ZlKGxlZnRWYWx1ZSkpCi0gICAgICAgICwgbV9vbGRWYWx1
ZShtYWtlVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+KGxvY2F0aW9uLCBRdWFsaWZpZXJz
KCksIG51bGxwdHIsIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKSkKLSAgICAgICAgLCBtX25l
d1ZhbHVlKG1ha2VVbmlxdWVSZWY8VmFyaWFibGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIFF1YWxp
ZmllcnMoKSwgbnVsbHB0ciwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIpKQotICAgIHsKLSAg
ICB9Ci0KICAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9sZWZ0VmFsdWU7CiAgICAgVW5pcXVl
UmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+IG1fb2xkVmFsdWU7CiAgICAgVW5pcXVlUmVmPFZhcmlh
YmxlRGVjbGFyYXRpb24+IG1fbmV3VmFsdWU7CkBAIC0xMzcsNiArMTMzLDggQEAgcHJpdmF0ZToK
IAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbikK
KwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFJlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb24sIGlzUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbigpKQogCiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlZmVyZW5j
ZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xSZWZlcmVuY2VUeXBlLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlZmVyZW5jZVR5cGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNTAsOSArNTAsMTAgQEAgcHJvdGVjdGVkOgogICAgICAgICAsIG1fZWxl
bWVudFR5cGUoV1RGTW92ZShlbGVtZW50VHlwZSkpCiAgICAgewogICAgIH0KLXB1YmxpYzoKLSAg
ICB2aXJ0dWFsIH5SZWZlcmVuY2VUeXBlKCkgPSBkZWZhdWx0OwogCisgICAgflJlZmVyZW5jZVR5
cGUoKSA9IGRlZmF1bHQ7CisKK3B1YmxpYzoKICAgICBBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNl
KCkgY29uc3QgeyByZXR1cm4gbV9hZGRyZXNzU3BhY2U7IH0KICAgICBjb25zdCBVbm5hbWVkVHlw
ZSYgZWxlbWVudFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRUeXBlOyB9CiAgICAgVW5u
YW1lZFR5cGUmIGVsZW1lbnRUeXBlKCkgeyByZXR1cm4gbV9lbGVtZW50VHlwZTsgfQpAQCAtNzMs
NiArNzQsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShSZWZlcmVu
Y2VUeXBlKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1VOTkFNRURfVFlQRShSZWZl
cmVuY2VUeXBlLCBpc1JlZmVyZW5jZVR5cGUoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvbHZhYmxlVHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJl
c29sdmFibGVUeXBlLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc29sdmFibGVUeXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDkgKzQxLDExIEBAIG5hbWVzcGFjZSBBU1QgewogY2xhc3MgUmVzb2x2YWJsZVR5cGUg
OiBwdWJsaWMgVHlwZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgUmVzb2x2YWJsZVR5cGUoKSA9IGRlZmF1bHQ7CisgICAgUmVzb2x2YWJsZVR5cGUoS2luZCBr
aW5kKQorICAgICAgICA6IFR5cGUoa2luZCkKKyAgICB7IH0KIAotICAgIHZpcnR1YWwgflJlc29s
dmFibGVUeXBlKCkgPSBkZWZhdWx0OworICAgIH5SZXNvbHZhYmxlVHlwZSgpID0gZGVmYXVsdDsK
IAogICAgIFJlc29sdmFibGVUeXBlKGNvbnN0IFJlc29sdmFibGVUeXBlJikgPSBkZWxldGU7CiAg
ICAgUmVzb2x2YWJsZVR5cGUoUmVzb2x2YWJsZVR5cGUmJikgPSBkZWZhdWx0OwpAQCAtNTEsMTQg
KzUzLDggQEAgcHVibGljOgogICAgIFJlc29sdmFibGVUeXBlJiBvcGVyYXRvcj0oY29uc3QgUmVz
b2x2YWJsZVR5cGUmKSA9IGRlbGV0ZTsKICAgICBSZXNvbHZhYmxlVHlwZSYgb3BlcmF0b3I9KFJl
c29sdmFibGVUeXBlJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNSZXNvbHZhYmxlVHlwZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNGbG9h
dExpdGVyYWxUeXBlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aXNJbnRlZ2VyTGl0ZXJhbFR5cGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc051bGxMaXRlcmFsVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotCi0gICAgdmlydHVhbCBib29sIGNhblJlc29sdmUoY29uc3QgVHlwZSYpIGNv
bnN0ID0gMDsKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFt
ZWRUeXBlJikgY29uc3QgPSAwOworICAgIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBUeXBlJikgY29u
c3Q7CisgICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBjb25z
dDsKIAogICAgIGNvbnN0IFVubmFtZWRUeXBlKiBtYXliZVJlc29sdmVkVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzb2x2ZWRUeXBlID8gJiptX3Jlc29sdmVkVHlwZSA6IG51bGxwdHI7IH0KICAg
ICBjb25zdCBVbm5hbWVkVHlwZSYgcmVzb2x2ZWRUeXBlKCkgY29uc3QKQEAgLTg5LDYgKzg1LDgg
QEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoUmVzb2x2YWJsZVR5cGUp
CisKICNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9SRVNPTFZBQkxFX1RZUEUo
VG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVH
SU4oV2ViQ29yZTo6V0hMU0w6OkFTVDo6VG9WYWx1ZVR5cGVOYW1lKSBcCiAgICAgc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlc29sdmFibGVUeXBlJiB0eXBl
KSB7IHJldHVybiB0eXBlLnByZWRpY2F0ZTsgfSBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaAkocmV2aXNpb24g
MjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
UmV0dXJuLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDIyICszOSwyMCBAQCBuYW1lc3BhY2UgV0hM
U0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgUmV0dXJuIDogcHVibGljIFN0YXRlbWVu
dCB7CitjbGFzcyBSZXR1cm4gZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBSZXR1cm4oQ29kZUxvY2F0aW9uIGxvY2F0
aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4mJiB2YWx1ZSkKLSAgICAgICAgOiBTdGF0
ZW1lbnQobG9jYXRpb24pCisgICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpSZXR1
cm4pCiAgICAgICAgICwgbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkKICAgICB7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB+UmV0dXJuKCkgPSBkZWZhdWx0OworICAgIH5SZXR1cm4oKSA9IGRlZmF1bHQ7
CiAKICAgICBSZXR1cm4oY29uc3QgUmV0dXJuJikgPSBkZWxldGU7CiAgICAgUmV0dXJuKFJldHVy
biYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzUmV0dXJuKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQotCiAgICAgRXhwcmVzc2lvbiogdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVl
LmdldCgpOyB9CiAKIHByaXZhdGU6CkBAIC02Nyw2ICs2NSw4IEBAIHByaXZhdGU6CiAKIH0KIAor
REVGSU5FX0RFRkFVTFRfREVMRVRFKFJldHVybikKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19X
SExTTF9TVEFURU1FTlQoUmV0dXJuLCBpc1JldHVybigpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
U3RhdGVtZW50LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0hM
U0xTdGF0ZW1lbnQuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEFT
VC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVz
cGFjZSBBU1QgeworCit2b2lkIFN0YXRlbWVudDo6ZGVzdHJveShTdGF0ZW1lbnQmIHN0YXRlbWVu
dCkKK3sKKyAgICBzd2l0Y2ggKHN0YXRlbWVudC5raW5kKCkpIHsKKyAgICBjYXNlIEtpbmQ6OkJs
b2NrOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PEFTVDo6QmxvY2s+KHN0YXRlbWVudCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6QnJlYWs6CisgICAgICAgIGRlbGV0ZSAmZG93
bmNhc3Q8QVNUOjpCcmVhaz4oc3RhdGVtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBL
aW5kOjpDb250aW51ZToKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OkNvbnRpbnVlPihz
dGF0ZW1lbnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6OkRvV2hpbGVMb29wOgor
ICAgICAgICBkZWxldGUgJmRvd25jYXN0PEFTVDo6RG9XaGlsZUxvb3A+KHN0YXRlbWVudCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6RWZmZWN0ZnVsRXhwcmVzc2lvbjoKKyAgICAg
ICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ+KHN0
YXRlbWVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6RmFsbHRocm91Z2g6Cisg
ICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpGYWxsdGhyb3VnaD4oc3RhdGVtZW50KTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpGb3JMb29wOgorICAgICAgICBkZWxldGUgJmRv
d25jYXN0PEFTVDo6Rm9yTG9vcD4oc3RhdGVtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBLaW5kOjpJZjoKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OklmU3RhdGVtZW50Pihz
dGF0ZW1lbnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6OlJldHVybjoKKyAgICAg
ICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OlJldHVybj4oc3RhdGVtZW50KTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBLaW5kOjpTdGF0ZW1lbnRMaXN0OgorICAgICAgICBkZWxldGUgJmRvd25j
YXN0PEFTVDo6U3RhdGVtZW50TGlzdD4oc3RhdGVtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBLaW5kOjpTd2l0Y2hDYXNlOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PEFTVDo6U3dp
dGNoQ2FzZT4oc3RhdGVtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpTd2l0
Y2g6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpTd2l0Y2hTdGF0ZW1lbnQ+KHN0YXRl
bWVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6VmFyaWFibGVEZWNsYXJhdGlv
bnM6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0
YXRlbWVudD4oc3RhdGVtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpXaGls
ZUxvb3A6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpXaGlsZUxvb3A+KHN0YXRlbWVu
dCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30g
Ly8gbmFtZXNwYWNlIFdITFNMCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xTdGF0ZW1lbnQuaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgogI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1
ZGUgIldITFNMVHlwZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwLDQ2ICs0MSwx
MjYgQEAgbmFtZXNwYWNlIEFTVCB7CiBjbGFzcyBTdGF0ZW1lbnQgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFN0YXRlbWVudChDb2RlTG9jYXRpb24gY29kZUxv
Y2F0aW9uKQotICAgICAgICA6IG1fY29kZUxvY2F0aW9uKGNvZGVMb2NhdGlvbikKKyAgICBlbnVt
IGNsYXNzIEtpbmQgOiB1aW50OF90IHsKKyAgICAgICAgQmxvY2ssCisgICAgICAgIEJyZWFrLAor
ICAgICAgICBDb250aW51ZSwKKyAgICAgICAgRG9XaGlsZUxvb3AsCisgICAgICAgIEVmZmVjdGZ1
bEV4cHJlc3Npb24sCisgICAgICAgIEZhbGx0aHJvdWdoLAorICAgICAgICBGb3JMb29wLAorICAg
ICAgICBJZiwKKyAgICAgICAgUmV0dXJuLAorICAgICAgICBTdGF0ZW1lbnRMaXN0LAorICAgICAg
ICBTd2l0Y2hDYXNlLAorICAgICAgICBTd2l0Y2gsCisgICAgICAgIFZhcmlhYmxlRGVjbGFyYXRp
b25zLAorICAgICAgICBXaGlsZUxvb3AsCisgICAgfTsKKyAgICBTdGF0ZW1lbnQoQ29kZUxvY2F0
aW9uIGNvZGVMb2NhdGlvbiwgS2luZCBraW5kKQorICAgICAgICA6IG1fY29kZUxvY2F0aW9uKGNv
ZGVMb2NhdGlvbi5zdGFydE9mZnNldCgpKQorICAgICAgICAsIG1fa2luZChraW5kKQogICAgIHsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIH5TdGF0ZW1lbnQoKSA9IGRlZmF1bHQ7CisgICAgflN0YXRl
bWVudCgpID0gZGVmYXVsdDsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KFN0YXRlbWVudCYpOwog
CiAgICAgU3RhdGVtZW50KGNvbnN0IFN0YXRlbWVudCYpID0gZGVsZXRlOwogICAgIFN0YXRlbWVu
dChTdGF0ZW1lbnQmJikgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCBib29sIGlzQmxvY2soKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0JyZWFrKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNDb250aW51ZSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRG9XaGlsZUxvb3AoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0VmZmVjdGZ1bEV4cHJlc3Npb25T
dGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0Zh
bGx0aHJvdWdoKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNG
b3JMb29wKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNJZlN0
YXRlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzUmV0
dXJuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTdGF0ZW1l
bnRMaXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTd2l0
Y2hDYXNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTd2l0
Y2hTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBp
c1ZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNXaGlsZUxvb3AoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQogCi0gICAgQ29kZUxvY2F0
aW9uIGNvZGVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUxvY2F0aW9uOyB9Ci0gICAg
dm9pZCB1cGRhdGVDb2RlTG9jYXRpb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uKSB7IG1fY29kZUxv
Y2F0aW9uID0gbG9jYXRpb247IH0KKyAgICBib29sIGlzQmxvY2soKSBjb25zdCB7IHJldHVybiBr
aW5kKCkgPT0gS2luZDo6QmxvY2s7IH0KKyAgICBib29sIGlzQnJlYWsoKSBjb25zdCB7IHJldHVy
biBraW5kKCkgPT0gS2luZDo6QnJlYWs7IH0KKyAgICBib29sIGlzQ29udGludWUoKSBjb25zdCB7
IHJldHVybiBraW5kKCkgPT0gS2luZDo6Q29udGludWU7IH0KKyAgICBib29sIGlzRG9XaGlsZUxv
b3AoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6RG9XaGlsZUxvb3A7IH0KKyAgICBi
b29sIGlzRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQo
KSA9PSBLaW5kOjpFZmZlY3RmdWxFeHByZXNzaW9uOyB9CisgICAgYm9vbCBpc0ZhbGx0aHJvdWdo
KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkZhbGx0aHJvdWdoOyB9CisgICAgYm9v
bCBpc0Zvckxvb3AoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6Rm9yTG9vcDsgfQor
ICAgIGJvb2wgaXNJZlN0YXRlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpJ
ZjsgfQorICAgIGJvb2wgaXNSZXR1cm4oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6
UmV0dXJuOyB9CisgICAgYm9vbCBpc1N0YXRlbWVudExpc3QoKSBjb25zdCB7IHJldHVybiBraW5k
KCkgPT0gS2luZDo6U3RhdGVtZW50TGlzdDsgfQorICAgIGJvb2wgaXNTd2l0Y2hDYXNlKCkgY29u
c3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlN3aXRjaENhc2U7IH0KKyAgICBib29sIGlzU3dp
dGNoU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlN3aXRjaDsgfQor
ICAgIGJvb2wgaXNWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IGtpbmQoKSA9PSBLaW5kOjpWYXJpYWJsZURlY2xhcmF0aW9uczsgfQorICAgIGJvb2wgaXNXaGls
ZUxvb3AoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6V2hpbGVMb29wOyB9CisKKyAg
ICBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gQ29kZUxvY2F0aW9u
KG1fY29kZUxvY2F0aW9uLCBtX2NvZGVMb2NhdGlvbik7IH0KKyAgICB2b2lkIHVwZGF0ZUNvZGVM
b2NhdGlvbihDb2RlTG9jYXRpb24gbG9jYXRpb24pIHsgbV9jb2RlTG9jYXRpb24gPSBsb2NhdGlv
bi5zdGFydE9mZnNldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgQ29kZUxvY2F0aW9uIG1fY29kZUxv
Y2F0aW9uOworICAgIHVuc2lnbmVkIG1fY29kZUxvY2F0aW9uOworICAgIEtpbmQgbV9raW5kOwog
fTsKIAorfQorCit9CisKK30KKworbmFtZXNwYWNlIHN0ZCB7CisKKy8vdGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFggPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Jhc2Vf
b2Y8V2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50LCBUPjo6dmFsdWUsIFQ+Ojp0eXBlPgor
Ly9zdHJ1Y3Qgc3RkOjpkZWZhdWx0X2RlbGV0ZTxYPiB7CisvLyAgICB2b2lkIG9wZXJhdG9yKCko
WCogc3RhdGVtZW50KQorLy8gICAgeworLy8gICAgICAgIFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0
YXRlbWVudDo6ZGVzdHJveSgqc3RhdGVtZW50KTsKKy8vICAgIH0KKy8vfTsKKworLy90ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorLy9zdHJ1Y3QgRHVtbXk7CisvLworLy90ZW1wbGF0ZSA8dHlwZW5hbWUg
QSwgdHlwZW5hbWUgQj4KKy8vdXNpbmcgRmlyc3QgPSBBOworLy8KKy8vdGVtcGxhdGU8dHlwZW5h
bWUgVD4KKy8vc3RydWN0IEltcGw7CisvLworLy90ZW1wbGF0ZTx0eXBlbmFtZSBUPgorLy9zdHJ1
Y3QgSW1wbDxGaXJzdDxEdW1teTxUPiwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8
V2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50LCBUPjo6dmFsdWU+Pj4geyAKKy8vICAgIHVz
aW5nIHR5cGUgPSB0eXBlbmFtZSBUOworLy99OworCisvL3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
Ly91c2luZyBPbGREZWZhdWx0RGVsZXRlU3RhdGVtZW50ID0gZGVmYXVsdF9kZWxldGU8VD47Cisv
LworLy90ZW1wbGF0ZSA8PgorLy9zdHJ1Y3Qgc3RkOjpkZWZhdWx0X2RlbGV0ZSB7CisvLyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8V2Vi
Q29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50LCBUPjo6dmFsdWU+CisvLyAgICB2b2lkIG9wZXJh
dG9yKCkoVCogdHlwZSkKKy8vICAgIHsKKy8vICAgICAgICBXZWJDb3JlOjpXSExTTDo6QVNUOjpT
dGF0ZW1lbnQ6OmRlc3Ryb3koKnR5cGUpOworLy8gICAgfQorLy8KKy8vICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgorLy8gICAgdm9pZCBvcGVyYXRvcigpKFQqIHR5cGUpCisvLyAgICB7CisvLyAg
ICAgICAgT2xkRGVmYXVsdERlbGV0ZVN0YXRlbWVudCgpKHR5cGUpOworLy8gICAgfQorLy99Owor
CisKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1l
c3BhY2UgQVNUIHsKKwogdXNpbmcgU3RhdGVtZW50cyA9IFZlY3RvcjxVbmlxdWVSZWY8U3RhdGVt
ZW50Pj47CiAKLX0gLy8gbmFtZXNwYWNlIEFTVAorfQogCiB9CiAKIH0KIAorREVGSU5FX0RFRkFV
TFRfREVMRVRFKFN0YXRlbWVudCkKKwogI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dI
TFNMX1NUQVRFTUVOVChUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExTTDo6QVNUOjpUb1ZhbHVlVHlwZU5hbWUpIFwK
ICAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVt
ZW50JiBzdGF0ZW1lbnQpIHsgcmV0dXJuIHN0YXRlbWVudC5wcmVkaWNhdGU7IH0gXApJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50TGlz
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFN0YXRlbWVudExpc3QuaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50TGlzdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCwyMSArMzgsMTkgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNl
IEFTVCB7CiAKLWNsYXNzIFN0YXRlbWVudExpc3QgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNz
IFN0YXRlbWVudExpc3QgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICB1c2luZyBCYXNlID0gU3RhdGVtZW50OwogcHVibGljOgogICAg
IFN0YXRlbWVudExpc3QoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdGF0ZW1lbnRzJiYgc3RhdGVt
ZW50cykKLSAgICAgICAgOiBCYXNlKGxvY2F0aW9uKQorICAgICAgICA6IEJhc2UobG9jYXRpb24s
IEtpbmQ6OlN0YXRlbWVudExpc3QpCiAgICAgICAgICwgbV9zdGF0ZW1lbnRzKFdURk1vdmUoc3Rh
dGVtZW50cykpCiAgICAgeyB9CiAKLSAgICB2aXJ0dWFsIH5TdGF0ZW1lbnRMaXN0KCkgPSBkZWZh
dWx0OworICAgIH5TdGF0ZW1lbnRMaXN0KCkgPSBkZWZhdWx0OwogCiAgICAgU3RhdGVtZW50cyYg
c3RhdGVtZW50cygpIHsgcmV0dXJuIG1fc3RhdGVtZW50czsgfQogCi0gICAgYm9vbCBpc1N0YXRl
bWVudExpc3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KIHByaXZhdGU6CiAg
ICAgU3RhdGVtZW50cyBtX3N0YXRlbWVudHM7CiB9OwpAQCAtNjMsNiArNjEsOCBAQCBwcml2YXRl
OgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShTdGF0ZW1lbnRMaXN0KQorCiBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChTdGF0ZW1lbnRMaXN0LCBpc1N0YXRlbWVu
dExpc3QoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJlRGVmaW5pdGlv
bi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDIyICs0MCwyMCBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xh
c3MgU3RydWN0dXJlRGVmaW5pdGlvbiA6IHB1YmxpYyBOYW1lZFR5cGUgeworY2xhc3MgU3RydWN0
dXJlRGVmaW5pdGlvbiBmaW5hbCA6IHB1YmxpYyBOYW1lZFR5cGUgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFN0cnVjdHVyZURlZmluaXRpb24oQ29kZUxvY2F0
aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1lLCBTdHJ1Y3R1cmVFbGVtZW50cyYmIHN0cnVjdHVy
ZUVsZW1lbnRzKQotICAgICAgICA6IE5hbWVkVHlwZShsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSkK
KyAgICAgICAgOiBOYW1lZFR5cGUoS2luZDo6U3RydWN0dXJlRGVmaW5pdGlvbiwgbG9jYXRpb24s
IFdURk1vdmUobmFtZSkpCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVFbGVtZW50cyhXVEZNb3ZlKHN0
cnVjdHVyZUVsZW1lbnRzKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+U3RydWN0dXJl
RGVmaW5pdGlvbigpID0gZGVmYXVsdDsKKyAgICB+U3RydWN0dXJlRGVmaW5pdGlvbigpID0gZGVm
YXVsdDsKIAogICAgIFN0cnVjdHVyZURlZmluaXRpb24oY29uc3QgU3RydWN0dXJlRGVmaW5pdGlv
biYpID0gZGVsZXRlOwogICAgIFN0cnVjdHVyZURlZmluaXRpb24oU3RydWN0dXJlRGVmaW5pdGlv
biYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzU3RydWN0dXJlRGVmaW5pdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIFN0cnVjdHVyZUVsZW1lbnRzJiBzdHJ1
Y3R1cmVFbGVtZW50cygpIHsgcmV0dXJuIG1fc3RydWN0dXJlRWxlbWVudHM7IH0KICAgICBTdHJ1
Y3R1cmVFbGVtZW50KiBmaW5kKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB7CkBAIC03Nyw2ICs3
NSw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKFN0cnVjdHVyZURl
ZmluaXRpb24pCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfTkFNRURfVFlQRShTdHJ1
Y3R1cmVEZWZpbml0aW9uLCBpc1N0cnVjdHVyZURlZmluaXRpb24oKSkKIAogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMU3RydWN0dXJlRWxlbWVudC5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAog
bmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIFN0cnVjdHVyZUVsZW1lbnQgeworY2xhc3MgU3RydWN0
dXJlRWxlbWVudCBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgU3RydWN0dXJlRWxlbWVudChDb2RlTG9jYXRpb24gbG9jYXRpb24sIFF1YWxpZmllcnMm
JiBxdWFsaWZpZXJzLCBSZWY8VW5uYW1lZFR5cGU+IHR5cGUsIFN0cmluZyYmIG5hbWUsIHN0ZDo6
dW5pcXVlX3B0cjxTZW1hbnRpYz4mJiBzZW1hbnRpYykKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGlj
OgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5TdHJ1Y3R1cmVFbGVtZW50KCkgPSBkZWZh
dWx0OworICAgIH5TdHJ1Y3R1cmVFbGVtZW50KCkgPSBkZWZhdWx0OwogCiAgICAgU3RydWN0dXJl
RWxlbWVudChjb25zdCBTdHJ1Y3R1cmVFbGVtZW50JikgPSBkZWxldGU7CiAgICAgU3RydWN0dXJl
RWxlbWVudChTdHJ1Y3R1cmVFbGVtZW50JiYpID0gZGVmYXVsdDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaENhc2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hD
YXNlLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFN3aXRjaENhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMjMgKzQw
LDIxIEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBTd2l0
Y2hDYXNlIDogcHVibGljIFN0YXRlbWVudCB7CitjbGFzcyBTd2l0Y2hDYXNlIGZpbmFsIDogcHVi
bGljIFN0YXRlbWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgU3dpdGNoQ2FzZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIE9wdGlvbmFsPENvbnN0YW50RXhw
cmVzc2lvbj4mJiB2YWx1ZSwgQmxvY2smJiBibG9jaykKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9j
YXRpb24pCisgICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpTd2l0Y2hDYXNlKQog
ICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkpCiAgICAgICAgICwgbV9ibG9jayhXVEZN
b3ZlKGJsb2NrKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+U3dpdGNoQ2FzZSgpID0g
ZGVmYXVsdDsKKyAgICB+U3dpdGNoQ2FzZSgpID0gZGVmYXVsdDsKIAogICAgIFN3aXRjaENhc2Uo
Y29uc3QgU3dpdGNoQ2FzZSYpID0gZGVsZXRlOwogICAgIFN3aXRjaENhc2UoU3dpdGNoQ2FzZSYm
KSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzU3dpdGNoQ2FzZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KLQogICAgIE9wdGlvbmFsPENvbnN0YW50RXhwcmVzc2lvbj4mIHZhbHVl
KCkgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgIEJsb2NrJiBibG9jaygpIHsgcmV0dXJuIG1fYmxv
Y2s7IH0KIApAQCAtNzEsNiArNjksOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxU
X0RFTEVURShTd2l0Y2hDYXNlKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRF
TUVOVChTd2l0Y2hDYXNlLCBpc1N3aXRjaENhc2UoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTd2l0Y2hTdGF0ZW1lbnQuaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoU3RhdGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDIzICszOSwyMSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2Ug
QVNUIHsKIAotY2xhc3MgU3dpdGNoU3RhdGVtZW50IDogcHVibGljIFN0YXRlbWVudCB7CitjbGFz
cyBTd2l0Y2hTdGF0ZW1lbnQgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTd2l0Y2hTdGF0ZW1lbnQoQ29kZUxvY2F0
aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiB2YWx1ZSwgVmVjdG9yPFN3aXRj
aENhc2U+JiYgc3dpdGNoQ2FzZXMpCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uKQorICAg
ICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6U3dpdGNoKQogICAgICAgICAsIG1fdmFs
dWUoV1RGTW92ZSh2YWx1ZSkpCiAgICAgICAgICwgbV9zd2l0Y2hDYXNlcyhXVEZNb3ZlKHN3aXRj
aENhc2VzKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+U3dpdGNoU3RhdGVtZW50KCkg
PSBkZWZhdWx0OworICAgIH5Td2l0Y2hTdGF0ZW1lbnQoKSA9IGRlZmF1bHQ7CiAKICAgICBTd2l0
Y2hTdGF0ZW1lbnQoY29uc3QgU3dpdGNoU3RhdGVtZW50JikgPSBkZWxldGU7CiAgICAgU3dpdGNo
U3RhdGVtZW50KFN3aXRjaFN0YXRlbWVudCYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzU3dp
dGNoU3RhdGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgRXhw
cmVzc2lvbiYgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgVmVjdG9yPFN3aXRjaENh
c2U+JiBzd2l0Y2hDYXNlcygpIHsgcmV0dXJuIG1fc3dpdGNoQ2FzZXM7IH0KIApAQCAtNzAsNiAr
NjgsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShTd2l0Y2hTdGF0
ZW1lbnQpCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKFN3aXRjaFN0
YXRlbWVudCwgaXNTd2l0Y2hTdGF0ZW1lbnQoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFRlcm5hcnlFeHByZXNzaW9uLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDI0ICszNywyMiBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3Bh
Y2UgQVNUIHsKIAotY2xhc3MgVGVybmFyeUV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7
CitjbGFzcyBUZXJuYXJ5RXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBUZXJuYXJ5RXhwcmVzc2lv
bihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIHByZWRpY2F0
ZSwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgYm9keUV4cHJlc3Npb24sIFVuaXF1ZVJlZjxFeHBy
ZXNzaW9uPiYmIGVsc2VFeHByZXNzaW9uKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24p
CisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6VGVybmFyeSkKICAgICAgICAg
LCBtX3ByZWRpY2F0ZShXVEZNb3ZlKHByZWRpY2F0ZSkpCiAgICAgICAgICwgbV9ib2R5RXhwcmVz
c2lvbihXVEZNb3ZlKGJvZHlFeHByZXNzaW9uKSkKICAgICAgICAgLCBtX2Vsc2VFeHByZXNzaW9u
KFdURk1vdmUoZWxzZUV4cHJlc3Npb24pKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5U
ZXJuYXJ5RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKyAgICB+VGVybmFyeUV4cHJlc3Npb24oKSA9
IGRlZmF1bHQ7CiAKICAgICBUZXJuYXJ5RXhwcmVzc2lvbihjb25zdCBUZXJuYXJ5RXhwcmVzc2lv
biYpID0gZGVsZXRlOwogICAgIFRlcm5hcnlFeHByZXNzaW9uKFRlcm5hcnlFeHByZXNzaW9uJiYp
ID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNUZXJuYXJ5RXhwcmVzc2lvbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIEV4cHJlc3Npb24mIHByZWRpY2F0ZSgpIHsgcmV0
dXJuIG1fcHJlZGljYXRlOyB9CiAgICAgRXhwcmVzc2lvbiYgYm9keUV4cHJlc3Npb24oKSB7IHJl
dHVybiBtX2JvZHlFeHByZXNzaW9uOyB9CiAgICAgRXhwcmVzc2lvbiYgZWxzZUV4cHJlc3Npb24o
KSB7IHJldHVybiBtX2Vsc2VFeHByZXNzaW9uOyB9CkBAIC03MSw2ICs2OSw4IEBAIHByaXZhdGU6
CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKFRlcm5hcnlFeHByZXNzaW9uKQorCiBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oVGVybmFyeUV4cHJlc3Npb24sIGlz
VGVybmFyeUV4cHJlc3Npb24oKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlLmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXSExTTFR5cGUuaCIKKworI2lmIEVOQUJMRShXRUJH
UFUpCisKKyNpbmNsdWRlICJXSExTTEFTVC5oIgorCisvLyBPT1BTCisjaW5jbHVkZSA8d3RmL0Rh
dGFMb2cuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCitu
YW1lc3BhY2UgQVNUIHsKKwordm9pZCBUeXBlOjpkZXN0cm95KFR5cGUmIHR5cGUpCit7CisgICAg
c3dpdGNoICh0eXBlLmtpbmQoKSkgeworICAgIGNhc2UgS2luZDo6VHlwZVJlZmVyZW5jZToKKyAg
ICAgICAgZGVsZXRlICZkb3duY2FzdDxUeXBlUmVmZXJlbmNlPih0eXBlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBLaW5kOjpQb2ludGVyOgorICAgICAgICBkYXRhTG9nTG4oIkRlc3Ryb3lp
bmcgcG9pbnRlcjogIiwgUmF3UG9pbnRlcigmdHlwZSkpOworICAgICAgICBkZWxldGUgJmRvd25j
YXN0PFBvaW50ZXJUeXBlPih0eXBlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpB
cnJheVJlZmVyZW5jZToKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBcnJheVJlZmVyZW5jZVR5
cGU+KHR5cGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6OkFycmF5OgorICAgICAg
ICBkZWxldGUgJmRvd25jYXN0PEFycmF5VHlwZT4odHlwZSk7CisgICAgICAgIGJyZWFrOworCisg
ICAgY2FzZSBLaW5kOjpUeXBlRGVmaW5pdGlvbjoKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxU
eXBlRGVmaW5pdGlvbj4odHlwZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6U3Ry
dWN0dXJlRGVmaW5pdGlvbjoKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxTdHJ1Y3R1cmVEZWZp
bml0aW9uPih0eXBlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpFbnVtZXJhdGlv
bkRlZmluaXRpb246CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8RW51bWVyYXRpb25EZWZpbml0
aW9uPih0eXBlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpOYXRpdmVUeXBlRGVj
bGFyYXRpb246CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8TmF0aXZlVHlwZURlY2xhcmF0aW9u
Pih0eXBlKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEtpbmQ6OkZsb2F0TGl0ZXJhbDoK
KyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxGbG9hdExpdGVyYWxUeXBlPih0eXBlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpJbnRlZ2VyTGl0ZXJhbDoKKyAgICAgICAgZGVsZXRl
ICZkb3duY2FzdDxJbnRlZ2VyTGl0ZXJhbFR5cGU+KHR5cGUpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEtpbmQ6Ok51bGxMaXRlcmFsOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PE51bGxM
aXRlcmFsVHlwZT4odHlwZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6VW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbDoKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxVbnNpZ25lZEludGVn
ZXJMaXRlcmFsVHlwZT4odHlwZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworVHlwZSYg
VHlwZTo6dW5pZnlOb2RlKCkKK3sKKyAgICBzd2l0Y2ggKGtpbmQoKSkgeworICAgIGNhc2UgS2lu
ZDo6VHlwZVJlZmVyZW5jZToKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+
KCp0aGlzKS51bmlmeU5vZGVJbXBsKCk7CisgICAgY2FzZSBLaW5kOjpQb2ludGVyOgorICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8UG9pbnRlclR5cGU+KCp0aGlzKS51bmlmeU5vZGVJbXBsKCk7Cisg
ICAgY2FzZSBLaW5kOjpBcnJheVJlZmVyZW5jZToKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFy
cmF5UmVmZXJlbmNlVHlwZT4oKnRoaXMpLnVuaWZ5Tm9kZUltcGwoKTsKKyAgICBjYXNlIEtpbmQ6
OkFycmF5OgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8QXJyYXlUeXBlPigqdGhpcykudW5pZnlO
b2RlSW1wbCgpOworCisgICAgY2FzZSBLaW5kOjpUeXBlRGVmaW5pdGlvbjoKKyAgICAgICAgcmV0
dXJuIGRvd25jYXN0PFR5cGVEZWZpbml0aW9uPigqdGhpcykudW5pZnlOb2RlSW1wbCgpOworICAg
IGNhc2UgS2luZDo6U3RydWN0dXJlRGVmaW5pdGlvbjoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0
PFN0cnVjdHVyZURlZmluaXRpb24+KCp0aGlzKS51bmlmeU5vZGVJbXBsKCk7CisgICAgY2FzZSBL
aW5kOjpFbnVtZXJhdGlvbkRlZmluaXRpb246CisgICAgICAgIHJldHVybiBkb3duY2FzdDxFbnVt
ZXJhdGlvbkRlZmluaXRpb24+KCp0aGlzKS51bmlmeU5vZGVJbXBsKCk7CisgICAgY2FzZSBLaW5k
OjpOYXRpdmVUeXBlRGVjbGFyYXRpb246CisgICAgICAgIHJldHVybiBkb3duY2FzdDxOYXRpdmVU
eXBlRGVjbGFyYXRpb24+KCp0aGlzKS51bmlmeU5vZGVJbXBsKCk7CisKKyAgICBkZWZhdWx0OiAK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK2Jvb2wg
UmVzb2x2YWJsZVR5cGU6OmNhblJlc29sdmUoY29uc3QgVHlwZSYgdHlwZSkgY29uc3QKK3sKKyAg
ICBzd2l0Y2ggKGtpbmQoKSkgeworICAgIGNhc2UgS2luZDo6RmxvYXRMaXRlcmFsOgorICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8RmxvYXRMaXRlcmFsVHlwZT4oKnRoaXMpLmNhblJlc29sdmUodHlw
ZSk7CisgICAgY2FzZSBLaW5kOjpJbnRlZ2VyTGl0ZXJhbDoKKyAgICAgICAgcmV0dXJuIGRvd25j
YXN0PEludGVnZXJMaXRlcmFsVHlwZT4oKnRoaXMpLmNhblJlc29sdmUodHlwZSk7CisgICAgY2Fz
ZSBLaW5kOjpOdWxsTGl0ZXJhbDoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PE51bGxMaXRlcmFs
VHlwZT4oKnRoaXMpLmNhblJlc29sdmUodHlwZSk7CisgICAgY2FzZSBLaW5kOjpVbnNpZ25lZElu
dGVnZXJMaXRlcmFsOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8VW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbFR5cGU+KCp0aGlzKS5jYW5SZXNvbHZlKHR5cGUpOworICAgIGRlZmF1bHQ6CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCit1bnNpZ25lZCBSZXNv
bHZhYmxlVHlwZTo6Y29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmIHR5cGUpIGNvbnN0
Cit7CisgICAgc3dpdGNoIChraW5kKCkpIHsKKyAgICBjYXNlIEtpbmQ6OkZsb2F0TGl0ZXJhbDoK
KyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEZsb2F0TGl0ZXJhbFR5cGU+KCp0aGlzKS5jb252ZXJz
aW9uQ29zdCh0eXBlKTsKKyAgICBjYXNlIEtpbmQ6OkludGVnZXJMaXRlcmFsOgorICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8SW50ZWdlckxpdGVyYWxUeXBlPigqdGhpcykuY29udmVyc2lvbkNvc3Qo
dHlwZSk7CisgICAgY2FzZSBLaW5kOjpOdWxsTGl0ZXJhbDoKKyAgICAgICAgcmV0dXJuIGRvd25j
YXN0PE51bGxMaXRlcmFsVHlwZT4oKnRoaXMpLmNvbnZlcnNpb25Db3N0KHR5cGUpOworICAgIGNh
c2UgS2luZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0
PFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlPigqdGhpcykuY29udmVyc2lvbkNvc3QodHlwZSk7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICB9Cit9CisKK1N0cmluZyBVbm5hbWVkVHlwZTo6dG9TdHJpbmcoKSBjb25zdAoreworICAgIHN3
aXRjaCAoa2luZCgpKSB7CisgICAgY2FzZSBLaW5kOjpUeXBlUmVmZXJlbmNlOgorICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8VHlwZVJlZmVyZW5jZT4oKnRoaXMpLnRvU3RyaW5nKCk7CisgICAgY2Fz
ZSBLaW5kOjpQb2ludGVyOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8UG9pbnRlclR5cGU+KCp0
aGlzKS50b1N0cmluZygpOworICAgIGNhc2UgS2luZDo6QXJyYXlSZWZlcmVuY2U6CisgICAgICAg
IHJldHVybiBkb3duY2FzdDxBcnJheVJlZmVyZW5jZVR5cGU+KCp0aGlzKS50b1N0cmluZygpOwor
ICAgIGNhc2UgS2luZDo6QXJyYXk6CisgICAgICAgIHJldHVybiBkb3duY2FzdDxBcnJheVR5cGU+
KCp0aGlzKS50b1N0cmluZygpOworICAgIGRlZmF1bHQ6IAorICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworfQorCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfSAv
LyBuYW1lc3BhY2UgV0hMU0wKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xUeXBlLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsMTcg
QEAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMu
aD4KIAorI2RlZmluZSBERUZJTkVfREVGQVVMVF9ERUxFVEUodHlwZSkgXAorICAgIG5hbWVzcGFj
ZSBzdGQgeyBcCisgICAgICAgIHRlbXBsYXRlPD4gXAorICAgICAgICBzdHJ1Y3QgZGVmYXVsdF9k
ZWxldGU8V2ViQ29yZTo6V0hMU0w6OkFTVDo6dHlwZT4geyBcCisgICAgICAgICAgICB2b2lkIG9w
ZXJhdG9yKCkoV2ViQ29yZTo6V0hMU0w6OkFTVDo6dHlwZSogdmFsdWUpIFwKKyAgICAgICAgICAg
IHsgXAorICAgICAgICAgICAgICAgIFdlYkNvcmU6OldITFNMOjpBU1Q6OnR5cGU6OmRlc3Ryb3ko
KnZhbHVlKTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH07IFwKKyAgICB9IFwKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgV0hMU0wgewpAQCAtMzksOSArNTAsMzAgQEAg
bmFtZXNwYWNlIEFTVCB7CiBjbGFzcyBUeXBlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBUeXBlKCkgPSBkZWZhdWx0OworICAgIGVudW0gY2xhc3MgS2luZCA6
IHVpbnQ4X3QgeworICAgICAgICAvLyBVbm5hbWVkVHlwZXMKKyAgICAgICAgVHlwZVJlZmVyZW5j
ZSwKKyAgICAgICAgUG9pbnRlciwKKyAgICAgICAgQXJyYXlSZWZlcmVuY2UsCisgICAgICAgIEFy
cmF5LAorICAgICAgICAvLyBOYW1lZFR5cGVzCisgICAgICAgIFR5cGVEZWZpbml0aW9uLAorICAg
ICAgICBTdHJ1Y3R1cmVEZWZpbml0aW9uLAorICAgICAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24s
CisgICAgICAgIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbiwKKyAgICAgICAgLy8gUmVzb2x2YWJsZVR5
cGVzCisgICAgICAgIEZsb2F0TGl0ZXJhbCwKKyAgICAgICAgSW50ZWdlckxpdGVyYWwsCisgICAg
ICAgIE51bGxMaXRlcmFsLAorICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsLAorICAgIH07
CisKKyAgICBUeXBlKEtpbmQga2luZCkKKyAgICAgICAgOiBtX2tpbmQoa2luZCkKKyAgICB7IH0K
IAotICAgIHZpcnR1YWwgflR5cGUoKSA9IGRlZmF1bHQ7CisgICAgflR5cGUoKSA9IGRlZmF1bHQ7
CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShUeXBlJik7CiAKICAgICBleHBsaWNpdCBUeXBlKGNv
bnN0IFR5cGUmKSA9IGRlbGV0ZTsKICAgICBUeXBlKFR5cGUmJikgPSBkZWZhdWx0OwpAQCAtNDks
MTEgKzgxLDM2IEBAIHB1YmxpYzoKICAgICBUeXBlJiBvcGVyYXRvcj0oY29uc3QgVHlwZSYpID0g
ZGVsZXRlOwogICAgIFR5cGUmIG9wZXJhdG9yPShUeXBlJiYpID0gZGVmYXVsdDsKIAotICAgIHZp
cnR1YWwgYm9vbCBpc05hbWVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzVW5uYW1lZFR5cGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBpc1Jlc29sdmFibGVUeXBlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KKworICAgIGJvb2wgaXNVbm5h
bWVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA+PSBLaW5kOjpUeXBlUmVmZXJlbmNlICYm
IGtpbmQoKSA8PSBLaW5kOjpBcnJheTsgfQorICAgIGJvb2wgaXNOYW1lZFR5cGUoKSBjb25zdCB7
IHJldHVybiBraW5kKCkgPj0gS2luZDo6VHlwZURlZmluaXRpb24gJiYga2luZCgpIDw9IEtpbmQ6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsgfQorICAgIGJvb2wgaXNSZXNvbHZhYmxlVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIGtpbmQoKSA+PSBLaW5kOjpGbG9hdExpdGVyYWwgJiYga2luZCgpIDw9IEtp
bmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw7IH0KKworICAgIGJvb2wgaXNUeXBlUmVmZXJlbmNl
KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlR5cGVSZWZlcmVuY2U7IH0KKyAgICBi
b29sIGlzUG9pbnRlclR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6UG9pbnRl
cjsgfQorICAgIGJvb2wgaXNBcnJheVJlZmVyZW5jZVR5cGUoKSBjb25zdCB7IHJldHVybiBraW5k
KCkgPT0gS2luZDo6QXJyYXlSZWZlcmVuY2U7IH0KKyAgICBib29sIGlzQXJyYXlUeXBlKCkgY29u
c3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkFycmF5OyB9CisgICAgYm9vbCBpc1JlZmVyZW5j
ZVR5cGUoKSBjb25zdCB7IHJldHVybiBpc1BvaW50ZXJUeXBlKCkgfHwgaXNBcnJheVJlZmVyZW5j
ZVR5cGUoKTsgfQorCisgICAgYm9vbCBpc1R5cGVEZWZpbml0aW9uKCkgY29uc3QgeyByZXR1cm4g
a2luZCgpID09IEtpbmQ6OlR5cGVEZWZpbml0aW9uOyB9CisgICAgYm9vbCBpc1N0cnVjdHVyZURl
ZmluaXRpb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6U3RydWN0dXJlRGVmaW5p
dGlvbjsgfQorICAgIGJvb2wgaXNFbnVtZXJhdGlvbkRlZmluaXRpb24oKSBjb25zdCB7IHJldHVy
biBraW5kKCkgPT0gS2luZDo6RW51bWVyYXRpb25EZWZpbml0aW9uOyB9CisgICAgYm9vbCBpc05h
dGl2ZVR5cGVEZWNsYXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb247IH0KKworICAgIGJvb2wgaXNGbG9hdExpdGVyYWxUeXBlKCkgY29u
c3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkZsb2F0TGl0ZXJhbDsgfQorICAgIGJvb2wgaXNJ
bnRlZ2VyTGl0ZXJhbFR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6SW50ZWdl
ckxpdGVyYWw7IH0KKyAgICBib29sIGlzTnVsbExpdGVyYWxUeXBlKCkgY29uc3QgeyByZXR1cm4g
a2luZCgpID09IEtpbmQ6Ok51bGxMaXRlcmFsOyB9CisgICAgYm9vbCBpc1Vuc2lnbmVkSW50ZWdl
ckxpdGVyYWxUeXBlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlVuc2lnbmVkSW50
ZWdlckxpdGVyYWw7IH0KKworICAgIFR5cGUmIHVuaWZ5Tm9kZSgpOworICAgIGNvbnN0IFR5cGUm
IHVuaWZ5Tm9kZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxUeXBl
Kj4odGhpcyktPnVuaWZ5Tm9kZSgpOworICAgIH0KIAogcHJpdmF0ZToKKyAgICBLaW5kIG1fa2lu
ZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFTVApAQCAtNjIsOSArMTE5LDU2IEBAIHByaXZhdGU6
CiAKIH0KIAorbmFtZXNwYWNlIHN0ZCB7CisKKy8vdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFggPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Jhc2Vfb2Y8V2ViQ29yZTo6
V0hMU0w6OkFTVDo6VHlwZSwgVD46OnZhbHVlLCBUPjo6dHlwZT4KKy8vc3RydWN0IHN0ZDo6ZGVm
YXVsdF9kZWxldGU8WD4geworLy8gICAgdm9pZCBvcGVyYXRvcigpKFgqIHR5cGUpCisvLyAgICB7
CisvLyAgICAgICAgV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZTo6ZGVzdHJveSgqdHlwZSk7Cisv
LyAgICB9CisvL307CisKKy8vdGVtcGxhdGU8dHlwZW5hbWUgVD4KKy8vc3RydWN0IER1bW15Owor
Ly8KKy8vdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIEI+CisvL3VzaW5nIEZpcnN0ID0g
QTsKKy8vCisvL3RlbXBsYXRlPHR5cGVuYW1lIFQ+CisvL3N0cnVjdCBJbXBsOworLy8KKy8vdGVt
cGxhdGU8dHlwZW5hbWUgVD4KKy8vc3RydWN0IEltcGw8Rmlyc3Q8RHVtbXk8VD4sIHN0ZDo6ZW5h
YmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGUsIFQ+Ojp2
YWx1ZT4+PiB7IAorLy8gICAgdXNpbmcgdHlwZSA9IFQ7CisvL307CisKKy8vdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CisvL3VzaW5nIE9sZERlZmF1bHREZWxldGVUeXBlID0gZGVmYXVsdF9kZWxldGU8
VD47CisvLworLy90ZW1wbGF0ZSA8PgorLy9zdHJ1Y3Qgc3RkOjpkZWZhdWx0X2RlbGV0ZSB7Cisv
LyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vf
b2Y8V2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZSwgVD46OnZhbHVlPgorLy8gICAgdm9pZCBvcGVy
YXRvcigpKFQqIHR5cGUpCisvLyAgICB7CisvLyAgICAgICAgV2ViQ29yZTo6V0hMU0w6OkFTVDo6
VHlwZTo6ZGVzdHJveSgqdHlwZSk7CisvLyAgICB9CisvLworLy8gICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CisvLyAgICB2b2lkIG9wZXJhdG9yKCkoVCogdHlwZSkKKy8vICAgIHsKKy8vICAgICAg
ICBPbGREZWZhdWx0RGVsZXRlVHlwZSgpKHR5cGUpOworLy8gICAgfQorLy99OworCit9CisKK0RF
RklORV9ERUZBVUxUX0RFTEVURShUeXBlKQorCiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfV0hMU0xfVFlQRShUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExTTDo6QVNUOjpUb1ZhbHVlVHlwZU5hbWUpIFwK
ICAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZSYg
dHlwZSkgeyByZXR1cm4gdHlwZS5wcmVkaWNhdGU7IH0gXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19FTkQoKQogCisKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMVHlwZURlZmluaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlRGVmaW5pdGlvbi5oCShyZXZp
c2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xUeXBlRGVmaW5pdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwzNSArNDAsMjkgQEAg
bmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIFR5cGVEZWZpbml0
aW9uIDogcHVibGljIE5hbWVkVHlwZSB7CitjbGFzcyBUeXBlRGVmaW5pdGlvbiBmaW5hbCA6IHB1
YmxpYyBOYW1lZFR5cGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIFR5cGVEZWZpbml0aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSwg
UmVmPFVubmFtZWRUeXBlPiB0eXBlKQotICAgICAgICA6IE5hbWVkVHlwZShsb2NhdGlvbiwgV1RG
TW92ZShuYW1lKSkKKyAgICAgICAgOiBOYW1lZFR5cGUoS2luZDo6VHlwZURlZmluaXRpb24sIGxv
Y2F0aW9uLCBXVEZNb3ZlKG5hbWUpKQogICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQog
ICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5UeXBlRGVmaW5pdGlvbigpID0gZGVmYXVsdDsK
KyAgICB+VHlwZURlZmluaXRpb24oKSA9IGRlZmF1bHQ7CiAKICAgICBUeXBlRGVmaW5pdGlvbihj
b25zdCBUeXBlRGVmaW5pdGlvbiYpID0gZGVsZXRlOwogICAgIFR5cGVEZWZpbml0aW9uKFR5cGVE
ZWZpbml0aW9uJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNUeXBlRGVmaW5pdGlvbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIFVubmFtZWRUeXBlJiB0eXBlKCkg
eyByZXR1cm4gbV90eXBlOyB9CiAKLSAgICBjb25zdCBUeXBlJiB1bmlmeU5vZGUoKSBjb25zdCBv
dmVycmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdHlwZS0+dW5pZnlOb2RlKCk7Ci0gICAg
fQotCi0gICAgVHlwZSYgdW5pZnlOb2RlKCkgb3ZlcnJpZGUKK3ByaXZhdGU6CisgICAgZnJpZW5k
IGNsYXNzIFR5cGU7CisgICAgVHlwZSYgdW5pZnlOb2RlSW1wbCgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gbV90eXBlLT51bmlmeU5vZGUoKTsKICAgICB9CiAKLXByaXZhdGU6CiAgICAgUmVmPFVu
bmFtZWRUeXBlPiBtX3R5cGU7CiB9OwogCkBAIC03OCw2ICs3Miw4IEBAIHByaXZhdGU6CiAKIH0K
IAorREVGSU5FX0RFRkFVTFRfREVMRVRFKFR5cGVEZWZpbml0aW9uKQorCiBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX1dITFNMX05BTUVEX1RZUEUoVHlwZURlZmluaXRpb24sIGlzVHlwZURlZmluaXRp
b24oKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZVJlZmVyZW5jZS5oCShyZXZpc2lvbiAy
NDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xU
eXBlUmVmZXJlbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKiBuZXcgVHlwZVJlZmVyZW5jZShsb2NhdGlvbiwgV1RG
TW92ZShuYW1lKSwgV1RGTW92ZSh0eXBlQXJndW1lbnRzKSkpOwogICAgIH0KIAotICAgIHZpcnR1
YWwgflR5cGVSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CisgICAgflR5cGVSZWZlcmVuY2UoKSA9IGRl
ZmF1bHQ7CiAKICAgICBzdGF0aWMgUmVmPFR5cGVSZWZlcmVuY2U+IHdyYXAoQ29kZUxvY2F0aW9u
LCBOYW1lZFR5cGUmIHJlc29sdmVkVHlwZSk7CiAKQEAgLTcyLDE4ICs3Miw2IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuICptX3Jlc29sdmVkVHlwZTsKICAgICB9CiAKLSAgICBjb25zdCBUeXBl
JiB1bmlmeU5vZGUoKSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcmVz
b2x2ZWRUeXBlKTsKLSAgICAgICAgcmV0dXJuIG1fcmVzb2x2ZWRUeXBlLT51bmlmeU5vZGUoKTsK
LSAgICB9Ci0KLSAgICBUeXBlJiB1bmlmeU5vZGUoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fcmVzb2x2ZWRUeXBlKTsKLSAgICAgICAgcmV0dXJuIG1fcmVzb2x2ZWRUeXBlLT51
bmlmeU5vZGUoKTsKLSAgICB9Ci0KICAgICB2b2lkIHNldFJlc29sdmVkVHlwZShOYW1lZFR5cGUm
IHJlc29sdmVkVHlwZSkKICAgICB7CiAgICAgICAgIG1fcmVzb2x2ZWRUeXBlID0gJnJlc29sdmVk
VHlwZTsKQEAgLTEwMywxMyArOTEsMjAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gJnVuaWZ5
Tm9kZSgpID09ICZvdGhlci51bmlmeU5vZGUoKTsKICAgICB9CiAKLSAgICBTdHJpbmcgdG9TdHJp
bmcoKSBjb25zdCBvdmVycmlkZQorICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0CiAgICAgewog
ICAgICAgICBBU1NFUlQobV9yZXNvbHZlZFR5cGUpOwogICAgICAgICByZXR1cm4gbV9yZXNvbHZl
ZFR5cGUtPm5hbWUoKTsKICAgICB9CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFR5cGU7
CisgICAgVHlwZSYgdW5pZnlOb2RlSW1wbCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9yZXNv
bHZlZFR5cGUpOworICAgICAgICByZXR1cm4gbV9yZXNvbHZlZFR5cGUtPnVuaWZ5Tm9kZSgpOwor
ICAgIH0KKwogICAgIFN0cmluZyBtX25hbWU7CiAgICAgVHlwZUFyZ3VtZW50cyBtX3R5cGVBcmd1
bWVudHM7CiAgICAgTmFtZWRUeXBlKiBtX3Jlc29sdmVkVHlwZSB7IG51bGxwdHIgfTsKQEAgLTEy
MSw2ICsxMTYsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShUeXBl
UmVmZXJlbmNlKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1VOTkFNRURfVFlQRShU
eXBlUmVmZXJlbmNlLCBpc1R5cGVSZWZlcmVuY2UoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
VW5uYW1lZFR5cGUuY3BwCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDMyICs0MSwzNiBAQCBuYW1lc3BhY2UgQVNUIHsKIAogdW5zaWduZWQgVW5uYW1lZFR5
cGU6Omhhc2goKSBjb25zdAogewotICAgIHN3aXRjaCAobV9raW5kKSB7CisgICAgc3dpdGNoIChr
aW5kKCkpIHsKICAgICBjYXNlIEtpbmQ6OlR5cGVSZWZlcmVuY2U6CiAgICAgICAgIHJldHVybiBk
b3duY2FzdDxUeXBlUmVmZXJlbmNlPigqdGhpcykuaGFzaCgpOwotICAgIGNhc2UgS2luZDo6UG9p
bnRlclR5cGU6CisgICAgY2FzZSBLaW5kOjpQb2ludGVyOgogICAgICAgICByZXR1cm4gZG93bmNh
c3Q8UG9pbnRlclR5cGU+KCp0aGlzKS5oYXNoKCk7Ci0gICAgY2FzZSBLaW5kOjpBcnJheVJlZmVy
ZW5jZVR5cGU6CisgICAgY2FzZSBLaW5kOjpBcnJheVJlZmVyZW5jZToKICAgICAgICAgcmV0dXJu
IGRvd25jYXN0PEFycmF5UmVmZXJlbmNlVHlwZT4oKnRoaXMpLmhhc2goKTsKLSAgICBjYXNlIEtp
bmQ6OkFycmF5VHlwZToKKyAgICBjYXNlIEtpbmQ6OkFycmF5OgogICAgICAgICByZXR1cm4gZG93
bmNhc3Q8QXJyYXlUeXBlPigqdGhpcykuaGFzaCgpOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogfQogCiBib29sIFVubmFtZWRUeXBl
OjpvcGVyYXRvcj09KGNvbnN0IFVubmFtZWRUeXBlJiBvdGhlcikgY29uc3QKIHsKLSAgICBpZiAo
b3RoZXIubV9raW5kICE9IG1fa2luZCkKKyAgICBpZiAob3RoZXIua2luZCgpICE9IGtpbmQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3dpdGNoIChtX2tpbmQpIHsKKyAgICBzd2l0
Y2ggKGtpbmQoKSkgewogICAgIGNhc2UgS2luZDo6VHlwZVJlZmVyZW5jZToKICAgICAgICAgcmV0
dXJuIGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KCp0aGlzKSA9PSBkb3duY2FzdDxUeXBlUmVmZXJl
bmNlPihvdGhlcik7Ci0gICAgY2FzZSBLaW5kOjpQb2ludGVyVHlwZToKKyAgICBjYXNlIEtpbmQ6
OlBvaW50ZXI6CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxQb2ludGVyVHlwZT4oKnRoaXMpID09
IGRvd25jYXN0PFBvaW50ZXJUeXBlPihvdGhlcik7Ci0gICAgY2FzZSBLaW5kOjpBcnJheVJlZmVy
ZW5jZVR5cGU6CisgICAgY2FzZSBLaW5kOjpBcnJheVJlZmVyZW5jZToKICAgICAgICAgcmV0dXJu
IGRvd25jYXN0PEFycmF5UmVmZXJlbmNlVHlwZT4oKnRoaXMpID09IGRvd25jYXN0PEFycmF5UmVm
ZXJlbmNlVHlwZT4ob3RoZXIpOwotICAgIGNhc2UgS2luZDo6QXJyYXlUeXBlOgorICAgIGNhc2Ug
S2luZDo6QXJyYXk6CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxBcnJheVR5cGU+KCp0aGlzKSA9
PSBkb3duY2FzdDxBcnJheVR5cGU+KG90aGVyKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5hbWVk
VHlwZS5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw0MyAr
NDUsMjMgQEAgY2xhc3MgVW5uYW1lZFR5cGUgOiBwdWJsaWMgVHlwZSwgcHVibGljIAogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVubmFtZWRU
eXBlKTsKIHB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEtpbmQgewotICAgICAgICBUeXBlUmVmZXJl
bmNlLAotICAgICAgICBQb2ludGVyVHlwZSwKLSAgICAgICAgQXJyYXlSZWZlcmVuY2VUeXBlLAot
ICAgICAgICBBcnJheVR5cGUKLSAgICB9OwotCiAgICAgVW5uYW1lZFR5cGUoQ29kZUxvY2F0aW9u
IGxvY2F0aW9uLCBLaW5kIGtpbmQpCi0gICAgICAgIDogbV9jb2RlTG9jYXRpb24obG9jYXRpb24p
Ci0gICAgICAgICwgbV9raW5kKGtpbmQpCisgICAgICAgIDogVHlwZShraW5kKQorICAgICAgICAs
IG1fY29kZUxvY2F0aW9uKGxvY2F0aW9uKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5V
bm5hbWVkVHlwZSgpID0gZGVmYXVsdDsKLQotICAgIGJvb2wgaXNVbm5hbWVkVHlwZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQotICAgIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0
dXJuIG1fa2luZDsgfQotICAgIGJvb2wgaXNUeXBlUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4g
bV9raW5kID09IEtpbmQ6OlR5cGVSZWZlcmVuY2U7IH0KLSAgICBib29sIGlzUG9pbnRlclR5cGUo
KSBjb25zdCB7IHJldHVybiBtX2tpbmQgPT0gS2luZDo6UG9pbnRlclR5cGU7IH0KLSAgICBib29s
IGlzQXJyYXlSZWZlcmVuY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9raW5kID09IEtpbmQ6OkFy
cmF5UmVmZXJlbmNlVHlwZTsgfQotICAgIGJvb2wgaXNBcnJheVR5cGUoKSBjb25zdCB7IHJldHVy
biBtX2tpbmQgPT0gS2luZDo6QXJyYXlUeXBlOyB9Ci0gICAgYm9vbCBpc1JlZmVyZW5jZVR5cGUo
KSBjb25zdCB7IHJldHVybiBpc1BvaW50ZXJUeXBlKCkgfHwgaXNBcnJheVJlZmVyZW5jZVR5cGUo
KTsgfQotCi0gICAgdmlydHVhbCBjb25zdCBUeXBlJiB1bmlmeU5vZGUoKSBjb25zdCB7IHJldHVy
biAqdGhpczsgfQotICAgIHZpcnR1YWwgVHlwZSYgdW5pZnlOb2RlKCkgeyByZXR1cm4gKnRoaXM7
IH0KLQogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgVW5uYW1lZFR5cGUmKSBjb25zdDsKIAotICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkg
Y29uc3QgPSAwOworICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwogCiAgICAgY29uc3QgQ29k
ZUxvY2F0aW9uJiBjb2RlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvZGVMb2NhdGlvbjsg
fQogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBUeXBlOworICAgIFR5cGUmIHVuaWZ5Tm9k
ZUltcGwoKSB7IHJldHVybiAqdGhpczsgfQogICAgIENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlv
bjsKLSAgICBLaW5kIG1fa2luZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFTVApAQCAtOTAsNiAr
NzAsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShVbm5hbWVkVHlw
ZSkKKwogI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1VOTkFNRURfVFlQRShU
b1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJ
TihXZWJDb3JlOjpXSExTTDo6QVNUOjpUb1ZhbHVlVHlwZU5hbWUpIFwKICAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGUmIHR5cGUpIHsg
cmV0dXJuIHR5cGUucHJlZGljYXRlOyB9IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25l
ZEludGVnZXJMaXRlcmFsLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaAkod29y
a2luZyBjb3B5KQpAQCAtMzcsMTcgKzM3LDE3IEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVz
cGFjZSBBU1QgewogCi1jbGFzcyBVbnNpZ25lZEludGVnZXJMaXRlcmFsIDogcHVibGljIEV4cHJl
c3Npb24geworY2xhc3MgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCBmaW5hbCA6IHB1YmxpYyBFeHBy
ZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBVbnNp
Z25lZEludGVnZXJMaXRlcmFsKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgdW5zaWduZWQgdmFsdWUp
Ci0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9uKGxv
Y2F0aW9uLCBLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsKQogICAgICAgICAsIG1fdHlwZShs
b2NhdGlvbiwgdmFsdWUpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAgfQog
Ci0gICAgdmlydHVhbCB+VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpID0gZGVmYXVsdDsKKyAgICB+
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpID0gZGVmYXVsdDsKIAogICAgIFVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwoY29uc3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYpID0gZGVsZXRlOwogICAgIFVu
c2lnbmVkSW50ZWdlckxpdGVyYWwoVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7
CkBAIC01OCw4ICs1OCw2IEBAIHB1YmxpYzoKICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlw
ZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIHVuc2lnbmVkIHZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZTsgfQogCi0gICAgYm9vbCBpc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWwo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBVbnNpZ25lZEludGVnZXJM
aXRlcmFsIGNsb25lKCkgY29uc3QKICAgICB7CiAgICAgICAgIFVuc2lnbmVkSW50ZWdlckxpdGVy
YWwgcmVzdWx0KGNvZGVMb2NhdGlvbigpLCBtX3ZhbHVlKTsKQEAgLTgzLDYgKzgxLDggQEAgcHJp
dmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bCkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFVuc2lnbmVkSW50
ZWdlckxpdGVyYWwsIGlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpKQogCiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50
ZWdlckxpdGVyYWxUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5jcHAJKHJl
dmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDEsMTcgKzQxLDEyIEBAIG5hbWVzcGFjZSBXSExTTCB7CiBuYW1lc3BhY2UgQVNUIHsKIAogVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKENvZGVM
b2NhdGlvbiBsb2NhdGlvbiwgdW5zaWduZWQgdmFsdWUpCi0gICAgOiBtX3ZhbHVlKHZhbHVlKQor
ICAgIDogUmVzb2x2YWJsZVR5cGUoS2luZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkKKyAgICAs
IG1fdmFsdWUodmFsdWUpCiAgICAgLCBtX3ByZWZlcnJlZFR5cGUoVHlwZVJlZmVyZW5jZTo6Y3Jl
YXRlKGxvY2F0aW9uLCAidWludCJfc3RyLCBUeXBlQXJndW1lbnRzKCkpKQogewogfQogCi1VbnNp
Z25lZEludGVnZXJMaXRlcmFsVHlwZTo6flVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKCkgPSBk
ZWZhdWx0OwotCi1VbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZTo6VW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbFR5cGUoVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwotCi1VbnNp
Z25lZEludGVnZXJMaXRlcmFsVHlwZSYgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU6Om9wZXJh
dG9yPShVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7Ci0KIGJvb2wgVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU6OmNhblJlc29sdmUoY29uc3QgVHlwZSYgdHlwZSkgY29u
c3QKIHsKICAgICBpZiAoIWlzPE5hbWVkVHlwZT4odHlwZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmgJKHJldmlzaW9uIDI0ODQwNCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50
ZWdlckxpdGVyYWxUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDI3ICs0MCwyNSBAQCBuYW1l
c3BhY2UgQVNUIHsKIAogY2xhc3MgVHlwZVJlZmVyZW5jZTsKIAotY2xhc3MgVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGUgOiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUgeworY2xhc3MgVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbFR5cGUgZmluYWwgOiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFVuc2lnbmVkSW50ZWdlckxpdGVy
YWxUeXBlKENvZGVMb2NhdGlvbiwgdW5zaWduZWQgdmFsdWUpOwogCi0gICAgdmlydHVhbCB+VW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoKTsKKyAgICB+VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5
cGUoKSA9IGRlZmF1bHQ7CiAKICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZShjb25zdCBV
bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYpID0gZGVsZXRlOwotICAgIFVuc2lnbmVkSW50ZWdl
ckxpdGVyYWxUeXBlKFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiYpOworICAgIFVuc2lnbmVk
SW50ZWdlckxpdGVyYWxUeXBlKFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiYpID0gZGVmYXVs
dDsKIAogICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiBvcGVyYXRvcj0oY29uc3QgVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBVbnNpZ25lZEludGVnZXJM
aXRlcmFsVHlwZSYgb3BlcmF0b3I9KFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiYpOwotCi0g
ICAgYm9vbCBpc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiBvcGVyYXRvcj0o
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwogCiAgICAgdW5zaWduZWQg
dmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKICAgICBUeXBlUmVmZXJlbmNlJiBw
cmVmZXJyZWRUeXBlKCkgeyByZXR1cm4gbV9wcmVmZXJyZWRUeXBlOyB9CiAKLSAgICBib29sIGNh
blJlc29sdmUoY29uc3QgVHlwZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHVuc2lnbmVkIGNvbnZl
cnNpb25Db3N0KGNvbnN0IFVubmFtZWRUeXBlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBj
YW5SZXNvbHZlKGNvbnN0IFR5cGUmKSBjb25zdDsKKyAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29z
dChjb25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0OwogCiAgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bFR5cGUgY2xvbmUoKSBjb25zdDsKIApAQCAtNzcsNiArNzUsOCBAQCBwcml2YXRlOgogCiB9CiAK
K0RFRklORV9ERUZBVUxUX0RFTEVURShVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSkKKwogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9SRVNPTFZBQkxFX1RZUEUoVW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbFR5cGUsIGlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoKSkKIAogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJs
ZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50
LmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDIyICszOSwyMCBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNU
IHsKIAotY2xhc3MgVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQgOiBwdWJsaWMgU3RhdGVt
ZW50IHsKK2NsYXNzIFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50IGZpbmFsIDogcHVibGlj
IFN0YXRlbWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBWYXJp
YWJsZURlY2xhcmF0aW9ucyYmIHZhcmlhYmxlRGVjbGFyYXRpb25zKQotICAgICAgICA6IFN0YXRl
bWVudChsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OlZhcmlh
YmxlRGVjbGFyYXRpb25zKQogICAgICAgICAsIG1fdmFyaWFibGVEZWNsYXJhdGlvbnMoV1RGTW92
ZSh2YXJpYWJsZURlY2xhcmF0aW9ucykpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgflZh
cmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KCkgPSBkZWZhdWx0OworICAgIH5WYXJpYWJsZURl
Y2xhcmF0aW9uc1N0YXRlbWVudCgpID0gZGVmYXVsdDsKIAogICAgIFZhcmlhYmxlRGVjbGFyYXRp
b25zU3RhdGVtZW50KGNvbnN0IFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50JikgPSBkZWxl
dGU7CiAgICAgVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoVmFyaWFibGVEZWNsYXJhdGlv
bnNTdGF0ZW1lbnQmJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc1ZhcmlhYmxlRGVjbGFyYXRp
b25zU3RhdGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgVmVj
dG9yPFVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9uPj4mIHZhcmlhYmxlRGVjbGFyYXRpb25z
KCkgeyByZXR1cm4gbV92YXJpYWJsZURlY2xhcmF0aW9uczsgfQogCiBwcml2YXRlOgpAQCAtNjcs
NiArNjUsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShWYXJpYWJs
ZURlY2xhcmF0aW9uc1N0YXRlbWVudCkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9T
VEFURU1FTlQoVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQsIGlzVmFyaWFibGVEZWNsYXJh
dGlvbnNTdGF0ZW1lbnQoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlUmVm
ZXJlbmNlLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlUmVmZXJlbmNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDE2ICszOCwxNiBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAot
Y2xhc3MgVmFyaWFibGVSZWZlcmVuY2UgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBWYXJp
YWJsZVJlZmVyZW5jZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBWYXJpYWJsZVJlZmVyZW5jZShDb2RlTG9jYXRp
b24gbG9jYXRpb24sIFN0cmluZyYmIG5hbWUpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlv
bikKKyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpWYXJpYWJsZVJlZmVyZW5j
ZSkKICAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKICAgICB7CiAgICAgfQogCi0gICAg
dmlydHVhbCB+VmFyaWFibGVSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CisgICAgflZhcmlhYmxlUmVm
ZXJlbmNlKCkgPSBkZWZhdWx0OwogCiAgICAgVmFyaWFibGVSZWZlcmVuY2UoY29uc3QgVmFyaWFi
bGVSZWZlcmVuY2UmKSA9IGRlbGV0ZTsKICAgICBWYXJpYWJsZVJlZmVyZW5jZShWYXJpYWJsZVJl
ZmVyZW5jZSYmKSA9IGRlZmF1bHQ7CkBAIC02MCw4ICs2MCw2IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBib29sIGlzVmFyaWFibGVSZWZlcmVuY2UoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBTdHJpbmcmIG5hbWUoKSB7IHJl
dHVybiBtX25hbWU7IH0KIAogICAgIFZhcmlhYmxlRGVjbGFyYXRpb24qIHZhcmlhYmxlKCkgeyBy
ZXR1cm4gbV92YXJpYWJsZTsgfQpAQCAtNzMsNyArNzEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgVmFyaWFibGVSZWZlcmVuY2UoQ29kZUxvY2F0aW9uIGxvY2F0aW9uKQotICAgICAgICA6
IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2lu
ZDo6VmFyaWFibGVSZWZlcmVuY2UpCiAgICAgewogICAgIH0KIApAQCAtODcsNiArODUsOCBAQCBw
cml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShWYXJpYWJsZVJlZmVyZW5jZSkK
KwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFZhcmlhYmxlUmVmZXJl
bmNlLCBpc1ZhcmlhYmxlUmVmZXJlbmNlKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29w
LmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFdoaWxlTG9vcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyMyArMzgsMjEg
QEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIFdoaWxlTG9v
cCA6IHB1YmxpYyBTdGF0ZW1lbnQgeworY2xhc3MgV2hpbGVMb29wIGZpbmFsIDogcHVibGljIFN0
YXRlbWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2hp
bGVMb29wKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgY29u
ZGl0aW9uYWwsIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+JiYgYm9keSkKLSAgICAgICAgOiBTdGF0ZW1l
bnQobG9jYXRpb24pCisgICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpXaGlsZUxv
b3ApCiAgICAgICAgICwgbV9jb25kaXRpb25hbChXVEZNb3ZlKGNvbmRpdGlvbmFsKSkKICAgICAg
ICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+
V2hpbGVMb29wKCkgPSBkZWZhdWx0OworICAgIH5XaGlsZUxvb3AoKSA9IGRlZmF1bHQ7CiAKICAg
ICBXaGlsZUxvb3AoY29uc3QgV2hpbGVMb29wJikgPSBkZWxldGU7CiAgICAgV2hpbGVMb29wKFdo
aWxlTG9vcCYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzV2hpbGVMb29wKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgRXhwcmVzc2lvbiYgY29uZGl0aW9uYWwoKSB7
IHJldHVybiBtX2NvbmRpdGlvbmFsOyB9CiAgICAgU3RhdGVtZW50JiBib2R5KCkgeyByZXR1cm4g
bV9ib2R5OyB9CiAKQEAgLTY5LDYgKzY3LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVG
QVVMVF9ERUxFVEUoV2hpbGVMb29wKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NU
QVRFTUVOVChXaGlsZUxvb3AsIGlzV2hpbGVMb29wKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMVHlwZU5hbWVyLmNwcAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03Miw5ICs3Miw5IEBAIHB1YmxpYzoKICAgICAKICAgICBBU1Q6OlVubmFtZWRUeXBlOjpL
aW5kIGtpbmQoKSB7IHJldHVybiBtX2tpbmQ7IH0KICAgICBib29sIGlzUmVmZXJlbmNlVHlwZU5h
bWVOb2RlKCkgY29uc3QgeyByZXR1cm4gbV9raW5kID09IEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6
OlR5cGVSZWZlcmVuY2U7IH0KLSAgICBib29sIGlzUG9pbnRlclR5cGVOYW1lTm9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fa2luZCA9PSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQb2ludGVyVHlwZTsg
fQotICAgIGJvb2wgaXNBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fa2luZCA9PSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVyZW5jZVR5cGU7IH0K
LSAgICBib29sIGlzQXJyYXlUeXBlTmFtZU5vZGUoKSBjb25zdCB7IHJldHVybiBtX2tpbmQgPT0g
QVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlUeXBlOyB9CisgICAgYm9vbCBpc1BvaW50ZXJU
eXBlTmFtZU5vZGUoKSBjb25zdCB7IHJldHVybiBtX2tpbmQgPT0gQVNUOjpVbm5hbWVkVHlwZTo6
S2luZDo6UG9pbnRlcjsgfQorICAgIGJvb2wgaXNBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fa2luZCA9PSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVJl
ZmVyZW5jZTsgfQorICAgIGJvb2wgaXNBcnJheVR5cGVOYW1lTm9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fa2luZCA9PSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheTsgfQogCiAgICAgQmFzZVR5
cGVOYW1lTm9kZSogcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KICAgICBNYW5nbGVkVHlw
ZU5hbWUgbWFuZ2xlZE5hbWUoKSBjb25zdCB7IHJldHVybiBtX21hbmdsZWROYW1lOyB9CkBAIC04
OSw3ICs4OSw3IEBAIGNsYXNzIEFycmF5VHlwZU5hbWVOb2RlIGZpbmFsIDogcHVibGljIEIKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBBcnJheVR5cGVOYW1lTm9k
ZShCYXNlVHlwZU5hbWVOb2RlKiBwYXJlbnQsIE1hbmdsZWRUeXBlTmFtZSYmIG1hbmdsZWROYW1l
LCB1bnNpZ25lZCBudW1FbGVtZW50cykKLSAgICAgICAgOiBCYXNlVHlwZU5hbWVOb2RlKHBhcmVu
dCwgV1RGTW92ZShtYW5nbGVkTmFtZSksIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5VHlw
ZSkKKyAgICAgICAgOiBCYXNlVHlwZU5hbWVOb2RlKHBhcmVudCwgV1RGTW92ZShtYW5nbGVkTmFt
ZSksIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5KQogICAgICAgICAsIG1fbnVtRWxlbWVu
dHMobnVtRWxlbWVudHMpCiAgICAgewogICAgIH0KQEAgLTEwNCw3ICsxMDQsNyBAQCBjbGFzcyBB
cnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZSBmaW5hbCA6CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgQXJyYXlSZWZlcmVuY2VUeXBlTmFtZU5vZGUoQmFzZVR5cGVO
YW1lTm9kZSogcGFyZW50LCBNYW5nbGVkVHlwZU5hbWUmJiBtYW5nbGVkTmFtZSwgQVNUOjpBZGRy
ZXNzU3BhY2UgYWRkcmVzc1NwYWNlKQotICAgICAgICA6IEJhc2VUeXBlTmFtZU5vZGUocGFyZW50
LCBXVEZNb3ZlKG1hbmdsZWROYW1lKSwgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlSZWZl
cmVuY2VUeXBlKQorICAgICAgICA6IEJhc2VUeXBlTmFtZU5vZGUocGFyZW50LCBXVEZNb3ZlKG1h
bmdsZWROYW1lKSwgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2UpCiAgICAg
ICAgICwgbV9hZGRyZXNzU3BhY2UoYWRkcmVzc1NwYWNlKQogICAgIHsKICAgICB9CkBAIC0xMTks
NyArMTE5LDcgQEAgY2xhc3MgUG9pbnRlclR5cGVOYW1lTm9kZSBmaW5hbCA6IHB1YmxpYwogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFBvaW50ZXJUeXBlTmFtZU5v
ZGUoQmFzZVR5cGVOYW1lTm9kZSogcGFyZW50LCBNYW5nbGVkVHlwZU5hbWUmJiBtYW5nbGVkTmFt
ZSwgQVNUOjpBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlKQotICAgICAgICA6IEJhc2VUeXBlTmFt
ZU5vZGUocGFyZW50LCBXVEZNb3ZlKG1hbmdsZWROYW1lKSwgQVNUOjpVbm5hbWVkVHlwZTo6S2lu
ZDo6UG9pbnRlclR5cGUpCisgICAgICAgIDogQmFzZVR5cGVOYW1lTm9kZShwYXJlbnQsIFdURk1v
dmUobWFuZ2xlZE5hbWUpLCBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQb2ludGVyKQogICAgICAg
ICAsIG1fYWRkcmVzc1NwYWNlKGFkZHJlc3NTcGFjZSkKICAgICB7CiAgICAgfQpAQCAtMjc0LDE4
ICsyNzQsMjAgQEAgc3RkOjp1bmlxdWVfcHRyPEJhc2VUeXBlTmFtZU5vZGU+IFR5cGVOYQogICAg
ICAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8QVNUOjpUeXBlUmVmZXJlbmNlPih1
bm5hbWVkVHlwZSk7CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlZmVyZW5jZVR5
cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCB0eXBlUmVmZXJlbmNl
LnJlc29sdmVkVHlwZSgpKTsKICAgICB9Ci0gICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5k
OjpQb2ludGVyVHlwZTogeworICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRl
cjogewogICAgICAgICBhdXRvJiBwb2ludGVyVHlwZSA9IGRvd25jYXN0PEFTVDo6UG9pbnRlclR5
cGU+KHVubmFtZWRUeXBlKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9pbnRl
clR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBwb2ludGVyVHlw
ZS5hZGRyZXNzU3BhY2UoKSk7CiAgICAgfQotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2lu
ZDo6QXJyYXlSZWZlcmVuY2VUeXBlOiB7CisgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5k
OjpBcnJheVJlZmVyZW5jZTogewogICAgICAgICBhdXRvJiBhcnJheVJlZmVyZW5jZVR5cGUgPSBk
b3duY2FzdDxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpOwogICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50
LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJheVJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNl
KCkpOwogICAgIH0KLSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5VHlwZTog
eworICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXk6IHsKICAgICAgICAgYXV0
byYgYXJyYXlUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRUeXBlKTsKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXJyYXlUeXBlTmFtZU5vZGU+KHBhcmVudCwg
Z2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgYXJyYXlUeXBlLm51bUVsZW1lbnRzKCkpOwogICAgIH0K
KyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IH0KIH0KIApAQCAtMjk0LDEyICsyOTYsMTQgQEAgc3RhdGljIEFTVDo6VW5uYW1lZFR5cGUqIHBh
cmVudChBU1Q6OlVubgogICAgIHN3aXRjaCAodW5uYW1lZFR5cGUua2luZCgpKSB7CiAgICAgY2Fz
ZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpUeXBlUmVmZXJlbmNlOgogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlBvaW50ZXJUeXBlOgor
ICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlcjoKICAgICAgICAgcmV0dXJu
ICZkb3duY2FzdDxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVHlwZSkuZWxlbWVudFR5cGUoKTsK
LSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5UmVmZXJlbmNlVHlwZToKKyAg
ICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5UmVmZXJlbmNlOgogICAgICAgICBy
ZXR1cm4gJmRvd25jYXN0PEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSkuZWxl
bWVudFR5cGUoKTsKLSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5VHlwZToK
KyAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5OgogICAgICAgICByZXR1cm4g
JmRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSkudHlwZSgpOworICAgIGRlZmF1
bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogfQogCkBA
IC0zNjEsMTMgKzM2NSwxMyBAQCB2b2lkIFR5cGVOYW1lcjo6ZW1pdFVubmFtZWRUeXBlRGVmaW5p
dGlvCiAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInR5cGVkZWYgIiwgbWFu
Z2xlZE5hbWVGb3JUeXBlKG5hbWVkVHlwZSksICcgJywgYmFzZVR5cGVOYW1lTm9kZS5tYW5nbGVk
TmFtZSgpLCAiO1xuIik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEFTVDo6VW5u
YW1lZFR5cGU6OktpbmQ6OlBvaW50ZXJUeXBlOiB7CisgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBl
OjpLaW5kOjpQb2ludGVyOiB7CiAgICAgICAgIGF1dG8mIHBvaW50ZXJUeXBlID0gZG93bmNhc3Q8
UG9pbnRlclR5cGVOYW1lTm9kZT4oYmFzZVR5cGVOYW1lTm9kZSk7CiAgICAgICAgIEFTU0VSVChi
YXNlVHlwZU5hbWVOb2RlLnBhcmVudCgpKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJs
ZUFwcGVuZCgidHlwZWRlZiAiLCB0b1N0cmluZyhwb2ludGVyVHlwZS5hZGRyZXNzU3BhY2UoKSks
ICcgJywgcG9pbnRlclR5cGUucGFyZW50KCktPm1hbmdsZWROYW1lKCksICIqICIsIHBvaW50ZXJU
eXBlLm1hbmdsZWROYW1lKCksICI7XG4iKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNh
c2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2VUeXBlOiB7CisgICAgY2Fz
ZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVyZW5jZTogewogICAgICAgICBhdXRv
JiBhcnJheVJlZmVyZW5jZVR5cGUgPSBkb3duY2FzdDxBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9k
ZT4oYmFzZVR5cGVOYW1lTm9kZSk7CiAgICAgICAgIEFTU0VSVChiYXNlVHlwZU5hbWVOb2RlLnBh
cmVudCgpKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKQEAgLTM3OCwx
MiArMzgyLDE0IEBAIHZvaWQgVHlwZU5hbWVyOjplbWl0VW5uYW1lZFR5cGVEZWZpbml0aW8KICAg
ICAgICAgKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlw
ZTo6S2luZDo6QXJyYXlUeXBlOiB7CisgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpB
cnJheTogewogICAgICAgICBhdXRvJiBhcnJheVR5cGUgPSBkb3duY2FzdDxBcnJheVR5cGVOYW1l
Tm9kZT4oYmFzZVR5cGVOYW1lTm9kZSk7CiAgICAgICAgIEFTU0VSVChiYXNlVHlwZU5hbWVOb2Rl
LnBhcmVudCgpKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgidHlwZWRl
ZiBhcnJheTwiLCBhcnJheVR5cGUucGFyZW50KCktPm1hbmdsZWROYW1lKCksICIsICIsIGFycmF5
VHlwZS5udW1FbGVtZW50cygpLCAiPiAiLCBhcnJheVR5cGUubWFuZ2xlZE5hbWUoKSwgIjtcbiIp
OwogICAgICAgICBicmVhazsKICAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKICAgICBlbWl0dGVkVW5uYW1lZFR5cGVzLmFk
ZCgmYmFzZVR5cGVOYW1lTm9kZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTIyMzEsNyArMjIzMSw2IEBACiAJCTdDODEzOUE4MUVENjI4NzQwMENFMjZFOCAvKiBKU0RP
TU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDODEzOUE1MUVENjI4MUQwMENFMjZFOCAvKiBKU0RPTU9wZXJh
dGlvblJldHVybmluZ1Byb21pc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3QzgxMzlBQTFFRDY2MDRCMDBDRTI2RTggLyogSlNET01DYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0M4MTM5QTkxRUQ2MkRGMjAwQ0UyNkU4IC8qIEpTRE9NQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3QzgzREU4NjFEMDRDQzVEMDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzgzREU4NTFEMDRDQkQ0MDBG
RUJDRjMgLyogU3ByaW5nU29sdmVyLmggKi87IH07Ci0JCTdDODVCMjAyMjJGQjA0ODUwMDMwNjg0
RiAvKiBXSExTTFVubmFtZWRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDODVCMjAxMjJGQjA0ODUwMDMwNjg0RiAvKiBXSExTTFVubmFtZWRU
eXBlLmNwcCAqLzsgfTsKIAkJN0M4RTM0QUQxRTRBMzNBRjAwNTRDRTIzIC8qIEpTRE9NQ29udmVy
dEFueS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4
RTM0OTIxRTRBMzM4RTAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEFueS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDOEUzNEFFMUU0QTMzQUYwMDU0
Q0UyMyAvKiBKU0RPTUNvbnZlcnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QzhFMzQ5MzFFNEEzMzhFMDA1NENFMjMgLyogSlNET01Db252ZXJ0
QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTdDOEUzNEFGMUU0QTMzQUYwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRCb29sZWFuLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzhFMzQ5NDFFNEEzMzhF
MDA1NENFMjMgLyogSlNET01Db252ZXJ0Qm9vbGVhbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04MzE1LDYgKzgzMTQsNyBAQAogCQk1MjEzMUU1
QTFDNEYxNTYxMDAzM0Y4MDIgLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjE1ODYyQzIyOTM3N0I3
MDA1OTI1RUYgLyogV0hMU0xBU1QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xBU1QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTIyQkFCOTYyMkU2QTM2MjAwQzU0Q0U5IC8qIFdITFNM
Q29kZUxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ29kZUxvY2F0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyMkQwN0EzMjJGQkFCNDMwMEI5MDVCRSAvKiBXSExT
TEV4cHJlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xFeHByZXNzaW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTIyREEzRDMyMjlFMUQzOTAwNDJEMTUxIC8q
IFdITFNMR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xHbG9i
YWxWYXJpYWJsZVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjJF
MUExNzIyOTdENkQ0MDBFNUQzNkEgLyogV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyMkUxQTE5MjI5N0Q2RDQwMEU1RDM2QSAv
KiBXSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQ
cmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNzA4OSw2ICsxNzA4OSw3IEBACiAJCQkJQzIxQkY3MjYyMUNEODlFMzAwMjI3OTc5IC8qIFdI
TFNMRW51bWVyYXRpb25NZW1iZXIuaCAqLywKIAkJCQlDMjFCRjcwMjIxQ0Q4OUM0MDAyMjc5Nzkg
LyogV0hMU0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaCAqLywKIAkJCQlDMjFCRjcwQzIxQ0Q4
OUNDMDAyMjc5NzkgLyogV0hMU0xFeHByZXNzaW9uLmggKi8sCisJCQkJNTIyRDA3QTMyMkZCQUI0
MzAwQjkwNUJFIC8qIFdITFNMRXhwcmVzc2lvbi5jcHAgKi8sCiAJCQkJQzIxQkY3MDAyMUNEODlD
MjAwMjI3OTc5IC8qIFdITFNMRmFsbHRocm91Z2guaCAqLywKIAkJCQlDMjFCRjczNTIxQ0Q4OUYy
MDAyMjc5NzkgLyogV0hMU0xGbG9hdExpdGVyYWwuaCAqLywKIAkJCQkxQ0I2OUIzODIxREYwM0Ux
MDA2RTg0NkEgLyogV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcCAqLywKQEAgLTMzNTI0LDcgKzMz
NTI1LDYgQEAKIAkJCQlGMTIxNzFGNTE2QThDRUQyMDAwMDUzQ0EgLyogV2ViVlRURWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1RDIxQTgwMjEzRUNFNURGMDBCQjcwNjQgLyogV2ViVlRU
UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIxMEI2OTgxMTQwQzE3NDAwMEJDMUMyNiAv
KiBXZWJWVFRUb2tlbml6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJN0M4NUIyMDIyMkZCMDQ4
NTAwMzA2ODRGIC8qIFdITFNMVW5uYW1lZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE0
ODMyQzIxODdGNjVDNzAwREE2M0E2IC8qIFdLVXRpbGl0aWVzLmMgaW4gU291cmNlcyAqLywKIAkJ
CQlBODMzQzdDQzBBMkNGMDc0MDBENTc2NjQgLyogWExpbmtOYW1lcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBODMzQzgwQzBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2Ny
aXB0TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDcgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXVEY6OlJlZkNvdW50ZWQ8V29ya2VyU2NyaXB0TG9h
ZGVyPjsKKyAgICBmcmllbmQgc3RydWN0IHN0ZDo6ZGVmYXVsdF9kZWxldGU8V29ya2VyU2NyaXB0
TG9hZGVyPjsKIAogICAgIFdvcmtlclNjcmlwdExvYWRlcigpOwogICAgIH5Xb3JrZXJTY3JpcHRM
b2FkZXIoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375929</attachid>
            <date>2019-08-09 10:14:21 -0700</date>
            <delta_ts>2019-08-09 10:19:02 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>166535</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDg0NjcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE5LTA4LTA5ICBTYWFtIEJhcmF0aSAgPHNiYXJh
dGlAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0gRGV2aXJ0dWFsaXplIHRoZSBBU1QKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDUyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgUmVmQ291
bnRlZCB1c2Ugc3RkOjpkZWZhdWx0X2RlbGV0ZSBpbnN0ZWFkIG9mIGV4cGxpY2l0bHkgY2FsbGlu
ZyBkZWxldGUuCisgICAgICAgIFRoaXMgYWxsb3dzIHVzZXMgb2YgUmVmQ291bnRlZCB0byBkZWZp
bmUgdGhlaXIgb3duIGN1c3RvbSBkZWxldGVyLgorCisgICAgICAgICogd3RmL1JlZkNvdW50ZWQu
aDoKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZDo6ZGVyZWYgY29uc3QpOgorICAgICAgICAqIHd0
Zi9VbmlxdWVSZWYuaDoKKyAgICAgICAgKFdURjo6VW5pcXVlUmVmOjpVbmlxdWVSZWYpOgorICAg
ICAgICAoV1RGOjpVbmlxdWVSZWY6Om1vdmVUb1VuaXF1ZVB0cik6CisKIDIwMTktMDgtMDggIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdGhyZWFkIHNhZmV0
eSBpc3N1ZSBpbiBBdWRpb1NhbXBsZURhdGFTb3VyY2UoKSBjb25zdHJ1Y3RvcgpJbmRleDogU291
cmNlL1dURi93dGYvUmVmQ291bnRlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Jl
ZkNvdW50ZWQuaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dURi93dGYvUmVmQ291bnRl
ZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsMTMgKzEzNiwxMyBAQCBpbmxpbmUgdm9pZCBhZG9w
dGVkKFJlZkNvdW50ZWRCYXNlKiBvYmplCiB9CiAjZW5kaWYKIAotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gY2xhc3MgUmVmQ291bnRlZCA6IHB1YmxpYyBSZWZDb3VudGVkQmFzZSB7Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBEZWxldGVyID0gc3RkOjpkZWZhdWx0X2RlbGV0ZTxUPj4gY2xh
c3MgUmVmQ291bnRlZCA6IHB1YmxpYyBSZWZDb3VudGVkQmFzZSB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoUmVmQ291bnRlZCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHZvaWQgZGVyZWYoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGRlcmVmQmFzZSgpKQot
ICAgICAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PGNvbnN0IFQqPih0aGlzKTsKKyAgICAgICAg
ICAgIERlbGV0ZXIoKShjb25zdF9jYXN0PFQqPihzdGF0aWNfY2FzdDxjb25zdCBUKj4odGhpcykp
KTsKICAgICB9CiAKIHByb3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCShyZXZpc2lvbiAyNDg0
MDQpCisrKyBTb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAkod29ya2luZyBjb3B5KQpAQCAtNDAs
MTAgKzQwLDExIEBAIFVuaXF1ZVJlZjxUPiBtYWtlVW5pcXVlUmVmKEFyZ3MmJi4uLiBhcmcKIAog
dGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNsYXNzIFVuaXF1ZVJlZiB7CisgICAgdXNpbmcgRGVsZXRl
ciA9IHN0ZDo6ZGVmYXVsdF9kZWxldGU8VD47CiBwdWJsaWM6CiAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFU+CiAgICAgVW5pcXVlUmVmKFVuaXF1ZVJlZjxVPiYmIG90aGVyKQotICAgICAgICA6IG1f
cmVmKFdURk1vdmUob3RoZXIubV9yZWYpKQorICAgICAgICA6IG1fcmVmKG90aGVyLm1fcmVmLnJl
bGVhc2UoKSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3JlZik7CiAgICAgfQpAQCAtNjAsMTkg
KzYxLDIwIEBAIHB1YmxpYzoKICAgICBvcGVyYXRvciBUJigpIHsgQVNTRVJUKG1fcmVmKTsgcmV0
dXJuICptX3JlZjsgfQogICAgIG9wZXJhdG9yIGNvbnN0IFQmKCkgY29uc3QgeyBBU1NFUlQobV9y
ZWYpOyByZXR1cm4gKm1fcmVmOyB9CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VD4gbW92ZVRvVW5p
cXVlUHRyKCkgeyByZXR1cm4gV1RGTW92ZShtX3JlZik7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
VCwgRGVsZXRlcj4gbW92ZVRvVW5pcXVlUHRyKCkgeyByZXR1cm4gV1RGTW92ZShtX3JlZik7IH0K
IAogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBmcmllbmQg
VW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uKTsKICAgICB0ZW1wbGF0ZTxjbGFz
cyBVPiBmcmllbmQgY2xhc3MgVW5pcXVlUmVmOwogCiAgICAgVW5pcXVlUmVmKFQmIG90aGVyKQot
ICAgICAgICA6IG1fcmVmKCZvdGhlcikKKyAgICAgICAgOiBtX3JlZigmb3RoZXIsIERlbGV0ZXIo
KSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3JlZik7CiAgICAgfQogCi0gICAgc3RkOjp1bmlx
dWVfcHRyPFQ+IG1fcmVmOworICAgIHN0ZDo6dW5pcXVlX3B0cjxULCBEZWxldGVyPiBtX3JlZjsK
KyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihtX3JlZikgPT0gc2l6ZW9mKHVpbnRwdHJfdCksICJE
b24ndCB1c2UgYSBzdGF0ZWZ1bCBkZWxldGVyLiIpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RG
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MDggQEAKKzIwMTktMDgtMDkgIFNhYW0g
QmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dITFNMXSBEZXZpcnR1YWxp
emUgdGhlIEFTVAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAwNTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBkZXZpcnR1YWxpemVzIHRoZSBBU1QgZm9yIFR5cGUsIEV4cHJlc3Npb24s
IGFuZCBTdGF0ZW1lbnQuCisgICAgICAgIFdlIG5vdyBoYXZlIGFuIGVudW0gd2hpY2ggcmVwcmVz
ZW50cyBhbGwgdGhlIGNvbmNyZXRlIHR5cGVzIGluIHRoZQorICAgICAgICB0aHJlZSBoaWVyYXJj
aGllcy4gRG9pbmcgZHluYW1pYyBkaXNwYXRjaCBpcyBpbXBsZW1lbnRlZCBhcyBhIHN3aXRjaAor
ICAgICAgICBvbiB0aGF0IHR5cGUgZW51bS4KKyAgICAgICAgCisgICAgICAgIFRoZSBpbnRlcmVz
dGluZyBwYXJ0IG9mIHRoaXMgcGF0Y2ggaXMgaG93IHRvIGhhbmRsZSBkZXN0cnVjdGlvbi4gV2Ug
ZG8KKyAgICAgICAgdGhpcyBieSBkZWZpbmluZyBhIGN1c3RvbSBkZWxldGVyIGZvciBhbGwgbm9k
ZXMgaW4gdGhlIEFTVC4gVGhpcyBlbnN1cmVzCisgICAgICAgIHRoYXQgd2hlbiB0aGV5J3JlIHVz
ZWQgaW5zaWRlIFVuaXF1ZVJlZiwgdW5pcXVlX3B0ciwgUmVmLCBSZWZQdHIsIHRoYXQKKyAgICAg
ICAgd2UgZG8gZHluYW1pYyBkaXNwYXRjaCB3aGVuIHdlIGRlbGV0ZSB0aGUgb2JqZWN0LiBUaGlz
IGFsbG93cyBlYWNoIGJhc2UKKyAgICAgICAgY2xhc3MgdG8gZGVmaW5lIGEgImRlc3Ryb3kiIG1l
dGhvZCB3aGljaCBkb2VzIGR5bmFtaWMgZGlzcGF0Y2ggb24gdHlwZQorICAgICAgICBhbmQgY2Fs
bHMgdGhlIGFwcHJvcHJpYXRlIGRlbGV0ZS4gV2UgYWxzbyBtYXJrIGFsbCBub24tY29uY3JldGUg
bm9kZXMKKyAgICAgICAgaW4gYWxsIHR5cGUgaGllcmFyY2hpZXMgd2l0aCBhIHByb3RlY3RlZCBk
ZXN0cnVjdG9yLCB3aGljaCBlbnN1cmVzIGl0J3MKKyAgICAgICAgbmV2ZXIgY2FsbGVkIGV4Y2Vw
dCBmcm9tIHdpdGhpbiB0aGUgY29uY3JldGUgY2hpbGQgY2xhc3Nlcy4gV2UgYWxsb3cKKyAgICAg
ICAgYWxsIGNvbmNyZXRlIGNsYXNzZXMgdG8gaGF2ZSBwdWJsaWMgZGVzdHJ1Y3RvcnMsIGFzIGl0
J3MgdmFsaWQgZm9yCisgICAgICAgIHRoZWlyIGRlc3RydWN0b3JzIHRvIGJlIGNhbGxlZCBleHBs
aWNpdGx5IHNpbmNlIHRoZXJlIGlzIG5vIG5lZWQgZm9yCisgICAgICAgIGR5bmFtaWMgZGlzcGF0
Y2ggaW4gc3VjaCBzY2VuYXJpb3MuIEFsbCBjb25jcmV0ZSBjbGFzc2VzIGFyZSBhbHNvIG1hcmtl
ZAorICAgICAgICBhcyBmaW5hbC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgYSAzbXMgc3Bl
ZWR1cCBvbiBjb21wdXRlX2JvaWRzLCB3aGljaCBpcyBhYm91dCBhIDEwJSBpbXByb3ZlbWVudAor
ICAgICAgICBpbiB0aGUgV0hMU0wgY29tcGlsZXIuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVR5cGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6QXNzaWdubWVudEV4cHJlc3Npb246OkFzc2lnbm1lbnRFeHByZXNz
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkFzc2lnbm1lbnRF
eHByZXNzaW9uOjpsZWZ0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkFzc2lnbm1lbnRFeHByZXNzaW9uOjpyaWdodCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbjo6dGFrZVJpZ2h0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCbG9jay5oOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QmxvY2s6OkJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OkJsb2NrOjpzdGF0ZW1lbnRzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCb29sZWFuTGl0ZXJhbC5oOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Qm9vbGVhbkxpdGVyYWw6OkJvb2xlYW5MaXRlcmFs
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkJvb2xlYW5MaXRlcmFs
Ojp2YWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpC
b29sZWFuTGl0ZXJhbDo6Y2xvbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpCcmVhazo6QnJlYWspOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTENhbGxFeHByZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpDYWxsRXhwcmVzc2lvbjo6Q2FsbEV4cHJlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6Q2FsbEV4cHJlc3Npb246OmFyZ3VtZW50cyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDYWxsRXhwcmVzc2lvbjo6bmFtZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDYWxsRXhwcmVzc2lvbjo6c2V0
Q2FzdERhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q2FsbEV4
cHJlc3Npb246OmlzQ2FzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpDYWxsRXhwcmVzc2lvbjo6Y2FzdFJldHVyblR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6Q2FsbEV4cHJlc3Npb246OmZ1bmN0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNhbGxFeHByZXNzaW9uOjpzZXRGdW5jdGlvbik6
IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29tbWFF
eHByZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDb21tYUV4cHJlc3Np
b246OkNvbW1hRXhwcmVzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpDb21tYUV4cHJlc3Npb246Omxpc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6Q29uc3RhbnRFeHByZXNzaW9uOjpDb25zdGFudEV4cHJlc3Npb24p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q29uc3RhbnRFeHByZXNz
aW9uOjppbnRlZ2VyTGl0ZXJhbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpDb25zdGFudEV4cHJlc3Npb246OnZpc2l0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbjo6dmlzaXQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q29uc3RhbnRFeHByZXNzaW9uOjpjbG9u
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDb25zdGFu
dEV4cHJlc3Npb246Om1hdGNoZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpDb250aW51ZTo6Q29udGludWUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTERlZmF1bHREZWxldGUuaDogQWRkZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb246OkRlcmVm
ZXJlbmNlRXhwcmVzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpEZXJlZmVyZW5jZUV4cHJlc3Npb246OnBvaW50ZXIpOiBEZWxldGVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29wLmg6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpEb1doaWxlTG9vcDo6RG9XaGlsZUxvb3ApOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RG9XaGlsZUxvb3A6OmJvZHkpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RG9XaGlsZUxvb3A6OmNvbmRpdGlvbmFsKTog
RGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb3RFeHBy
ZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpEb3RFeHByZXNzaW9uOjpE
b3RFeHByZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkRv
dEV4cHJlc3Npb246OmZpZWxkTmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudDo6RWZm
ZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50OjplZmZlY3RmdWxFeHByZXNz
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xF
bnVtZXJhdGlvbkRlZmluaXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVu
dW1lcmF0aW9uRGVmaW5pdGlvbjo6RW51bWVyYXRpb25EZWZpbml0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbjo6dHlwZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFbnVtZXJhdGlvbkRlZmlu
aXRpb246OmFkZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFbnVt
ZXJhdGlvbkRlZmluaXRpb246Om1lbWJlckJ5TmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb246OmVudW1lcmF0aW9uTWVtYmVy
cyk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWw6OndyYXApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsOjpsZWZ0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDo6cmlnaHQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsOjpjbG9uZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6OmVudW1lcmF0aW9uRGVmaW5pdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWw6OmVudW1lcmF0aW9uRGVmaW5pdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6OmVudW1lcmF0aW9u
TWVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbDo6ZW51bWVyYXRpb25NZW1iZXIgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsOjpzZXRF
bnVtZXJhdGlvbk1lbWJlcik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRXhwcmVzc2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6RXhwcmVzc2lvbjo6ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb246OmdldHRlckZ1bmN0aW9uTmFtZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb246
OnNldHRlckZ1bmN0aW9uTmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb246OmFuZGVyRnVuY3Rpb25OYW1lIGNvbnN0KToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjpFeHByZXNzaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmtpbmQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNBc3NpZ25tZW50RXhwcmVzc2lv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0Jv
b2xlYW5MaXRlcmFsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJl
c3Npb246OmlzQ2FsbEV4cHJlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6RXhwcmVzc2lvbjo6aXNDb21tYUV4cHJlc3Npb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNEZXJlZmVyZW5jZUV4cHJlc3Npb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNEb3RFeHBy
ZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246
OmlzR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNGbG9hdExpdGVyYWwgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNJbmRleEV4cHJlc3Npb24gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNJbnRlZ2VyTGl0ZXJh
bCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0xv
Z2ljYWxFeHByZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4
cHJlc3Npb246OmlzTG9naWNhbE5vdEV4cHJlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmlzTWFr
ZVBvaW50ZXJFeHByZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkV4cHJlc3Npb246OmlzTnVsbExpdGVyYWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNSZWFkTW9kaWZ5V3Jp
dGVFeHByZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJl
c3Npb246OmlzVGVybmFyeUV4cHJlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNVbnNpZ25lZEludGVnZXJMaXRlcmFsIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmlzVmFyaWFibGVSZWZlcmVu
Y2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6RXhwcmVzc2lvbjo6Y29kZUxvY2F0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OnVwZGF0ZUNvZGVMb2NhdGlvbik6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmFsbHRocm91Z2guaDoKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OkZhbGx0aHJvdWdoOjpGYWxsdGhyb3VnaCk6IERlbGV0ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpGbG9hdExpdGVyYWw6OkZsb2F0TGl0ZXJhbCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpGbG9hdExpdGVyYWw6OnR5
cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RmxvYXRMaXRlcmFs
Ojp2YWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpG
bG9hdExpdGVyYWw6OmNsb25lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OkZsb2F0TGl0ZXJhbFR5cGU6OkZsb2F0TGl0ZXJhbFR5cGUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZsb2F0TGl0ZXJhbFR5cGU6OnZhbHVlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZsb2F0TGl0ZXJh
bFR5cGU6OnByZWZlcnJlZFR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEZvckxvb3AuaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkZvckxvb3A6OkZvckxvb3ApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6Rm9yTG9vcDo6fkZvckxvb3ApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6Rm9yTG9vcDo6aW5pdGlhbGl6YXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6Rm9yTG9vcDo6Y29uZGl0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OkZvckxvb3A6OmluY3JlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpGb3JMb29wOjpib2R5KTogRGVsZXRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5o
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U6
Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlOjpzdHJ1Y3RGaWVsZCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZTo6
YmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
SWZTdGF0ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OklmU3RhdGVtZW50
OjpJZlN0YXRlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpJ
ZlN0YXRlbWVudDo6Y29uZGl0aW9uYWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6SWZTdGF0ZW1lbnQ6OmJvZHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6SWZTdGF0ZW1lbnQ6OmVsc2VCb2R5KTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbmRleEV4cHJlc3Npb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OkluZGV4RXhwcmVzc2lvbjo6SW5kZXhFeHByZXNzaW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkluZGV4RXhwcmVzc2lvbjo6
aW5kZXhFeHByZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkluZGV4RXhwcmVzc2lvbjo6dGFrZUluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6SW50ZWdlckxpdGVyYWw6OkludGVnZXJMaXRlcmFsKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkludGVnZXJMaXRlcmFsOjp0eXBlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkludGVnZXJMaXRlcmFsOjp2YWx1
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpJbnRlZ2Vy
TGl0ZXJhbDo6Y2xvbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGU6OkludGVnZXJMaXRlcmFsVHlwZSk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGU6OnZh
bHVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkludGVn
ZXJMaXRlcmFsVHlwZTo6cHJlZmVycmVkVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbEV4cHJlc3Npb24uaDoKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uOjpMb2dpY2FsRXhwcmVzc2lvbik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpMb2dpY2FsRXhwcmVzc2lv
bjo6dHlwZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpM
b2dpY2FsRXhwcmVzc2lvbjo6bGVmdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpMb2dpY2FsRXhwcmVzc2lvbjo6cmlnaHQpOiBEZWxldGVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpMb2dpY2FsTm90RXhwcmVzc2lvbjo6TG9naWNhbE5v
dEV4cHJlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TG9n
aWNhbE5vdEV4cHJlc3Npb246Om9wZXJhbmQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb246
Ok1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbjo6bGVmdFZhbHVlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok1ha2VBcnJheVJlZmVyZW5j
ZUV4cHJlc3Npb246Om1pZ2h0RXNjYXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbjo6TWFrZVBvaW50
ZXJFeHByZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok1h
a2VQb2ludGVyRXhwcmVzc2lvbjo6bGVmdFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbjo6bWlnaHRFc2NhcGUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVk
VHlwZS5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmFtZWRUeXBlOjpOYW1lZFR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmFtZWRUeXBlOjp1bmlmeU5vZGVJ
bXBsKToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpOYW1lZFR5cGU6OmlzVHlwZURlZmluaXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6TmFtZWRUeXBlOjppc1N0cnVjdHVyZURlZmluaXRpb24gY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmFtZWRUeXBlOjpp
c0VudW1lcmF0aW9uRGVmaW5pdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpOYW1lZFR5cGU6OmlzTmF0aXZlVHlwZURlY2xhcmF0aW9uIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hbWVkVHlwZTo6dW5pZnlO
b2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hbWVk
VHlwZTo6dW5pZnlOb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJh
dGlvbjo6dHlwZUFyZ3VtZW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OmlzSW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6aXNOdW1iZXIg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlw
ZURlY2xhcmF0aW9uOjppc0Zsb2F0aW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6aXNBdG9taWMgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0
aW9uOjppc1ZlY3RvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OmlzTWF0cml4IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6aXNPcGFx
dWVUeXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbjo6aXNUZXh0dXJlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6aXNUZXh0dXJlQXJy
YXkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uOjppc0RlcHRoVGV4dHVyZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OmlzV3JpdGFibGVU
ZXh0dXJlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbjo6dGV4dHVyZURpbWVuc2lvbiBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OmlzU2ln
bmVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbjo6c3RkOjpmdW5jdGlvbjxib29sIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6c3RkOjpm
dW5jdGlvbjxpbnQ2NF90IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6aXRlcmF0ZUFsbFZhbHVlcyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnNl
dElzSW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbjo6c2V0SXNOdW1iZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRJc0Zsb2F0aW5nKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6
c2V0SXNBdG9taWMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0
aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRJc1ZlY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnNldElzTWF0cml4KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlv
bjo6c2V0SXNPcGFxdWVUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6c2V0SXNUZXh0dXJlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6c2V0SXNUZXh0
dXJlQXJyYXkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uOjpzZXRJc0RlcHRoVGV4dHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnNldElzV3JpdGFibGVU
ZXh0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbjo6c2V0VGV4dHVyZURpbWVuc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnNldElzU2lnbmVkKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJh
dGlvbjo6c2V0Q2FuUmVwcmVzZW50SW50ZWdlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnNldENhblJlcHJlc2VudFVuc2ln
bmVkSW50ZWdlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb246OnNldENhblJlcHJlc2VudEZsb2F0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6c2V0U3VjY2Vz
c29yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbjo6c2V0Rm9ybWF0VmFsdWVGcm9tSW50ZWdlcik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnNldEZvcm1hdFZh
bHVlRnJvbVVuc2lnbmVkSW50ZWdlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnNldEl0ZXJhdGVBbGxWYWx1ZXMpOiBEZWxl
dGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRlcmFs
Lmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOdWxsTGl0ZXJhbDo6TnVsbExpdGVy
YWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TnVsbExpdGVyYWw6
OnR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TnVsbExpdGVy
YWw6OmNsb25lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xOdWxsTGl0ZXJhbFR5cGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xQb2ludGVyVHlwZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uOjpQcm9wZXJ0eUFjY2Vzc0V4
cHJlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRN
b2RpZnlXcml0ZUV4cHJlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJl
YWRNb2RpZnlXcml0ZUV4cHJlc3Npb246OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpzZXROZXdWYWx1ZUV4
cHJlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVhZE1v
ZGlmeVdyaXRlRXhwcmVzc2lvbjo6c2V0UmVzdWx0RXhwcmVzc2lvbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpvbGRW
YXJpYWJsZVJlZmVyZW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpuZXdWYXJpYWJsZVJlZmVyZW5jZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNz
aW9uOjpsZWZ0VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6b2xkVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6bmV3VmFsdWUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbjo6bmV3VmFsdWVFeHByZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246OnJlc3VsdEV4cHJlc3Np
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdy
aXRlRXhwcmVzc2lvbjo6dGFrZUxlZnRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjp0YWtlT2xkVmFsdWUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhw
cmVzc2lvbjo6dGFrZU5ld1ZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246OnRha2VOZXdWYWx1ZUV4cHJlc3Npb24p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbjo6dGFrZVJlc3VsdEV4cHJlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6UmVhZE1vZGlmeVdy
aXRlRXhwcmVzc2lvbik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMUmVmZXJlbmNlVHlwZS5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
UmVmZXJlbmNlVHlwZTo6UmVmZXJlbmNlVHlwZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMUmVzb2x2YWJsZVR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OlJlc29sdmFibGVUeXBlOjpSZXNvbHZhYmxlVHlwZSk6CisgICAgICAgICgpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVzb2x2YWJsZVR5cGU6OmlzRmxv
YXRMaXRlcmFsVHlwZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpSZXNvbHZhYmxlVHlwZTo6aXNJbnRlZ2VyTGl0ZXJhbFR5cGUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVzb2x2YWJsZVR5cGU6OmlzTnVsbExp
dGVyYWxUeXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OlJlc29sdmFibGVUeXBlOjppc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaDoK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJldHVybjo6UmV0dXJuKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJldHVybjo6dmFsdWUpOiBEZWxldGVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50OjpkZXN0cm95KToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6U3RhdGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6a2luZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6OmlzQmxvY2sgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojppc0JyZWFrIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNDb250aW51ZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6OmlzRG9XaGlsZUxvb3AgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojppc0VmZmVjdGZ1
bEV4cHJlc3Npb25TdGF0ZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6U3RhdGVtZW50Ojppc0ZhbGx0aHJvdWdoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNGb3JMb29wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNJZlN0YXRlbWVudCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6OmlzUmV0dXJuIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNTdGF0ZW1lbnRMaXN0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNTd2l0Y2hDYXNlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNTd2l0Y2hT
dGF0ZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50
Ojppc1ZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNXaGlsZUxvb3AgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojpjb2RlTG9jYXRpb24gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojp1cGRhdGVDb2RlTG9jYXRpb24p
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudExpc3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudExpc3Q6OlN0YXRlbWVu
dExpc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50
TGlzdDo6c3RhdGVtZW50cyk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbjo6U3RydWN0dXJlRGVmaW5pdGlvbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uOjpz
dHJ1Y3R1cmVFbGVtZW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpTdHJ1Y3R1cmVEZWZpbml0aW9uOjpmaW5kKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVFbGVtZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpTdHJ1Y3R1cmVFbGVtZW50OjpTdHJ1Y3R1cmVFbGVtZW50KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0cnVjdHVyZUVsZW1lbnQ6OmNv
ZGVMb2NhdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpTdHJ1Y3R1cmVFbGVtZW50Ojp0eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OlN0cnVjdHVyZUVsZW1lbnQ6Om5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6U3RydWN0dXJlRWxlbWVudDo6c2VtYW50aWMpOiBEZWxldGVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaENhc2UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN3aXRjaENhc2U6OlN3aXRjaENhc2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3dpdGNoQ2FzZTo6dmFsdWUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3dpdGNoQ2FzZTo6YmxvY2sp
OiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRj
aFN0YXRlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3dpdGNoU3RhdGVt
ZW50OjpTd2l0Y2hTdGF0ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6U3dpdGNoU3RhdGVtZW50Ojp2YWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpTd2l0Y2hTdGF0ZW1lbnQ6OnN3aXRjaENhc2VzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VGVybmFyeUV4cHJlc3Npb246OlRlcm5h
cnlFeHByZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlRl
cm5hcnlFeHByZXNzaW9uOjpwcmVkaWNhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6VGVybmFyeUV4cHJlc3Npb246OmJvZHlFeHByZXNzaW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlRlcm5hcnlFeHByZXNzaW9uOjplbHNlRXhw
cmVzc2lvbik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMVHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZTo6
ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlOjp1bmlmeU5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVzb2x2YWJsZVR5cGU6OmNhblJlc29s
dmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVzb2x2YWJsZVR5cGU6
OmNvbnZlcnNpb25Db3N0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlVu
bmFtZWRUeXBlOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMVHlwZS5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZTo6
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlOjpraW5kIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGU6OmlzVW5uYW1lZFR5cGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZTo6aXNOYW1lZFR5cGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZTo6aXNSZXNvbHZhYmxlVHlwZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlOjppc1R5cGVSZWZlcmVu
Y2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZTo6aXNQb2ludGVy
VHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlOjppc0FycmF5
UmVmZXJlbmNlVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBl
Ojppc0FycmF5VHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBl
Ojppc1JlZmVyZW5jZVR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
VHlwZTo6aXNUeXBlRGVmaW5pdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpUeXBlOjppc1N0cnVjdHVyZURlZmluaXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6VHlwZTo6aXNFbnVtZXJhdGlvbkRlZmluaXRpb24gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZTo6aXNOYXRpdmVUeXBlRGVjbGFyYXRpb24g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZTo6aXNGbG9hdExpdGVy
YWxUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGU6OmlzSW50
ZWdlckxpdGVyYWxUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5
cGU6OmlzTnVsbExpdGVyYWxUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OlR5cGU6OmlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZTo6dW5pZnlOb2RlIGNvbnN0KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlRGVmaW5pdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZURlZmluaXRpb246OlR5cGVEZWZpbml0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGVEZWZpbml0aW9uOjp0eXBl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBl
UmVmZXJlbmNlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5u
YW1lZFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGU6
Omhhc2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGU6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFVubmFtZWRUeXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbm5hbWVk
VHlwZTo6VW5uYW1lZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1l
ZFR5cGU6OnVuaWZ5Tm9kZUltcGwpOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OlVubmFtZWRUeXBlOjpraW5kIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlVubmFtZWRUeXBlOjppc1R5cGVSZWZlcmVuY2Ug
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5
cGU6OmlzUG9pbnRlclR5cGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6VW5uYW1lZFR5cGU6OmlzQXJyYXlSZWZlcmVuY2VUeXBlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlVubmFtZWRUeXBlOjppc0FycmF5VHlw
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbm5hbWVk
VHlwZTo6aXNSZWZlcmVuY2VUeXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OlVubmFtZWRUeXBlOjp1bmlmeU5vZGUgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGU6OnVuaWZ5Tm9kZSk6IERlbGV0
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbC5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOjp0eXBlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw6
OnZhbHVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlVu
c2lnbmVkSW50ZWdlckxpdGVyYWw6OmNsb25lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFs
VHlwZTo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmg6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZTo6dmFsdWUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbFR5cGU6OnByZWZlcnJlZFR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0
YXRlbWVudDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQ6OnZh
cmlhYmxlRGVjbGFyYXRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6VmFyaWFibGVSZWZlcmVuY2U6OlZhcmlhYmxlUmVmZXJlbmNlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlOjp3cmFwKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlZhcmlhYmxlUmVmZXJlbmNl
OjpuYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlZhcmlhYmxl
UmVmZXJlbmNlOjp2YXJpYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpWYXJpYWJsZVJlZmVyZW5jZTo6c2V0VmFyaWFibGUpOiBEZWxldGVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6V2hpbGVMb29wOjpXaGlsZUxvb3ApOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6V2hpbGVMb29wOjpjb25kaXRpb25hbCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpXaGlsZUxvb3A6OmJvZHkpOiBEZWxldGVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6QmFzZVR5cGVOYW1lTm9kZTo6aXNQ
b2ludGVyVHlwZU5hbWVOb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRh
bDo6QmFzZVR5cGVOYW1lTm9kZTo6aXNBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkJhc2VUeXBlTmFtZU5vZGU6OmlzQXJy
YXlUeXBlTmFtZU5vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpU
eXBlTmFtZXI6OmNyZWF0ZU5hbWVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRh
bDo6cGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6VHlwZU5hbWVyOjpl
bWl0VW5uYW1lZFR5cGVEZWZpbml0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6UGFyc2VyOjpwYXJz
ZVN1ZmZpeE9wZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQYXJzZXI6OmNvbXBs
ZXRlQXNzaWdubWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6UGFyc2VyOjpwYXJzZVBv
c3NpYmxlUHJlZml4KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBh
cmUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlc2VydmVWYXJp
YWJsZUxpZmV0aW1lcy5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xW
aXNpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpWaXNpdG9yOjp2aXNpdCk6Cisg
ICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisKIDIw
MTktMDgtMDcgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dI
TFNMXSBQcnVuZSB1bnJlYWNoYWJsZSBzdGRsaWIgZnVuY3Rpb25zIGFmdGVyIHRoZSBDaGVja2Vy
IHJ1bnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzQyLDYgKzM0Miw3IEBAIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlVHkKIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L01ldGFsL1dITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmNwcAogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFR5cGVBcmd1bWVudC5jcHAKK01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEV4cHJlc3Npb24uY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdElu
U2VtYW50aWMuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFu
dGljLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25z
dGFudFNlbWFudGljLmNwcApAQCAtMzUwLDkgKzM1MSwxMiBAQCBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xGbG9hdExpdGVyCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRl
Z2VyTGl0ZXJhbFR5cGUuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdWxsTGl0
ZXJhbFR5cGUuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVn
ZXJMaXRlcmFsVHlwZS5jcHAKK01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVu
dC5jcHAKK01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuY3BwCiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmNwcAogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmNwcAorTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMVW5uYW1lZFR5cGUuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUu
Y3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwCiBNb2R1
bGVzL3dlYmdwdS9XZWJHUFUuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCShyZXZpc2lvbiAyNDg0MDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE0OTQsNyArMTQ5NCw3IEBAIGF1dG8gUGFyc2VyOjpwYXJzZVN1ZmZpeE9w
ZXJhdG9yKFVuaXF1ZVIKICAgICB9CiAgICAgY2FzZSBUb2tlbjo6VHlwZTo6UGx1c1BsdXM6IHsK
ICAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZXZpb3VzLT5jb2RlTG9jYXRpb24oKSwg
KnN1ZmZpeCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gQVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHBy
ZXNzaW9uOjpjcmVhdGUobG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMpKTsKKyAgICAgICAgYXV0
byByZXN1bHQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4o
bG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMpKTsKICAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxB
U1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwogICAgICAgICBjYWxsQXJndW1lbnRzLmFw
cGVuZChyZXN1bHQtPm9sZFZhcmlhYmxlUmVmZXJlbmNlKCkpOwogICAgICAgICByZXN1bHQtPnNl
dE5ld1ZhbHVlRXhwcmVzc2lvbihtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxv
Y2F0aW9uLCAib3BlcmF0b3IrKyJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKSk7CkBAIC0x
NTA0LDcgKzE1MDQsNyBAQCBhdXRvIFBhcnNlcjo6cGFyc2VTdWZmaXhPcGVyYXRvcihVbmlxdWVS
CiAgICAgZGVmYXVsdDogewogICAgICAgICBBU1NFUlQoc3VmZml4LT50eXBlID09IFRva2VuOjpU
eXBlOjpNaW51c01pbnVzKTsKICAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZXZpb3Vz
LT5jb2RlTG9jYXRpb24oKSwgKnN1ZmZpeCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gQVNUOjpS
ZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpjcmVhdGUobG9jYXRpb24sIFdURk1vdmUocHJldmlv
dXMpKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6UmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMpKTsKICAgICAgICAg
VmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwogICAgICAg
ICBjYWxsQXJndW1lbnRzLmFwcGVuZChyZXN1bHQtPm9sZFZhcmlhYmxlUmVmZXJlbmNlKCkpOwog
ICAgICAgICByZXN1bHQtPnNldE5ld1ZhbHVlRXhwcmVzc2lvbihtYWtlVW5pcXVlUmVmPEFTVDo6
Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3ItLSJfc3RyLCBXVEZNb3ZlKGNhbGxB
cmd1bWVudHMpKSk7CkBAIC0xNjA2LDcgKzE2MDYsNyBAQCBhdXRvIFBhcnNlcjo6Y29tcGxldGVB
c3NpZ25tZW50KFVuaXF1ZVJlCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGF1dG8gcmVz
dWx0ID0gQVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpjcmVhdGUobG9jYXRpb24sIFdU
Rk1vdmUobGVmdCkpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlJlYWRN
b2RpZnlXcml0ZUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKGxlZnQpKTsKICAgICBWZWN0
b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7CiAgICAgY2FsbEFy
Z3VtZW50cy5hcHBlbmQocmVzdWx0LT5vbGRWYXJpYWJsZVJlZmVyZW5jZSgpKTsKICAgICBjYWxs
QXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpyaWdodCkpOwpAQCAtMTg5OCw3ICsxODk4LDcgQEAg
YXV0byBQYXJzZXI6OnBhcnNlUG9zc2libGVQcmVmaXgoYm9vbCAqaQogICAgICAgICBjYXNlIFRv
a2VuOjpUeXBlOjpQbHVzUGx1czogewogICAgICAgICAgICAgaWYgKGlzRWZmZWN0ZnVsKQogICAg
ICAgICAgICAgICAgICppc0VmZmVjdGZ1bCA9IHRydWU7Ci0gICAgICAgICAgICBhdXRvIHJlc3Vs
dCA9IEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6Y3JlYXRlKGxvY2F0aW9uLCBXVEZN
b3ZlKCpuZXh0KSk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWVSZWY8QVNU
OjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZSgqbmV4dCkpOwog
ICAgICAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1l
bnRzOwogICAgICAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQocmVzdWx0LT5vbGRWYXJpYWJs
ZVJlZmVyZW5jZSgpKTsKICAgICAgICAgICAgIHJlc3VsdC0+c2V0TmV3VmFsdWVFeHByZXNzaW9u
KG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvcisr
Il9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpKTsKQEAgLTE5MDgsNyArMTkwOCw3IEBAIGF1
dG8gUGFyc2VyOjpwYXJzZVBvc3NpYmxlUHJlZml4KGJvb2wgKmkKICAgICAgICAgY2FzZSBUb2tl
bjo6VHlwZTo6TWludXNNaW51czogewogICAgICAgICAgICAgaWYgKGlzRWZmZWN0ZnVsKQogICAg
ICAgICAgICAgICAgICppc0VmZmVjdGZ1bCA9IHRydWU7Ci0gICAgICAgICAgICBhdXRvIHJlc3Vs
dCA9IEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6Y3JlYXRlKGxvY2F0aW9uLCBXVEZN
b3ZlKCpuZXh0KSk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWVSZWY8QVNU
OjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZSgqbmV4dCkpOwog
ICAgICAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1l
bnRzOwogICAgICAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQocmVzdWx0LT5vbGRWYXJpYWJs
ZVJlZmVyZW5jZSgpKTsKICAgICAgICAgICAgIHJlc3VsdC0+c2V0TmV3VmFsdWVFeHByZXNzaW9u
KG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVyYXRvci0t
Il9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcAkocmV2aXNpb24g
MjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVw
YXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsOSArNjIsOSBAQCBuYW1lc3BhY2UgV0hMU0wg
ewogc3RhdGljIGNvbnN0ZXhwciBib29sIGR1bXBBU1RCZWZvcmVFYWNoUGFzcyA9IGZhbHNlOwog
c3RhdGljIGNvbnN0ZXhwciBib29sIGR1bXBBU1RBZnRlclBhcnNpbmcgPSBmYWxzZTsKIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBkdW1wQVNUQXRFbmQgPSBmYWxzZTsKLXN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBhbHdheXNEdW1wUGFzc0ZhaWx1cmVzID0gZmFsc2U7CitzdGF0aWMgY29uc3RleHByIGJv
b2wgYWx3YXlzRHVtcFBhc3NGYWlsdXJlcyA9IHRydWU7CiBzdGF0aWMgY29uc3RleHByIGJvb2wg
ZHVtcFBhc3NGYWlsdXJlID0gZHVtcEFTVEJlZm9yZUVhY2hQYXNzIHx8IGR1bXBBU1RBZnRlclBh
cnNpbmcgfHwgZHVtcEFTVEF0RW5kIHx8IGFsd2F5c0R1bXBQYXNzRmFpbHVyZXM7Ci1zdGF0aWMg
Y29uc3RleHByIGJvb2wgZHVtcFBoYXNlVGltZXMgPSBmYWxzZTsKK3N0YXRpYyBjb25zdGV4cHIg
Ym9vbCBkdW1wUGhhc2VUaW1lcyA9IHRydWU7CiAKIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBwYXJz
ZUZ1bGxTdGFuZGFyZExpYnJhcnkgPSBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXNl
cnZlVmFyaWFibGVMaWZldGltZXMuY3BwCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNyArMTU3LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgc3RydWN0VmFyaWFibGVEZWNsYXJhdGlvbnMuYXBwZW5kKFdURk1vdmUoc3RydWN0VmFyaWFi
bGVEZWNsYXJhdGlvbikpOwogICAgICAgICAgICAgYXV0byBzdHJ1Y3REZWNsYXJhdGlvblN0YXRl
bWVudCA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudD4o
ZnVuY3Rpb25EZWZpbml0aW9uLmNvZGVMb2NhdGlvbigpLCBXVEZNb3ZlKHN0cnVjdFZhcmlhYmxl
RGVjbGFyYXRpb25zKSk7CiAKLSAgICAgICAgICAgIGF1dG8gbWFrZVBvaW50ZXJFeHByZXNzaW9u
ID0gc3RkOjptYWtlX3VuaXF1ZTxBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbj4oZnVuY3Rpb25E
ZWZpbml0aW9uLmNvZGVMb2NhdGlvbigpLCBXVEZNb3ZlKHN0cnVjdFZhcmlhYmxlUmVmZXJlbmNl
KSwgQVNUOjpBZGRyZXNzRXNjYXBlTW9kZTo6RG9lc05vdEVzY2FwZSk7CisgICAgICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8QVNUOjpFeHByZXNzaW9uPiBtYWtlUG9pbnRlckV4cHJlc3Npb24obmV3
IEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uKGZ1bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRp
b24oKSwgV1RGTW92ZShzdHJ1Y3RWYXJpYWJsZVJlZmVyZW5jZSksIEFTVDo6QWRkcmVzc0VzY2Fw
ZU1vZGU6OkRvZXNOb3RFc2NhcGUpKTsKICAgICAgICAgICAgIG1ha2VQb2ludGVyRXhwcmVzc2lv
bi0+c2V0VHlwZShtX3BvaW50ZXJUb1N0cnVjdFR5cGUuY29weVJlZigpKTsKICAgICAgICAgICAg
IG1ha2VQb2ludGVyRXhwcmVzc2lvbi0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpSaWdodFZhbHVl
KCkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZp
c2l0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMVmlzaXRvci5jcHAJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwMywzNCArMzAzLDUwIEBAIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpTdGF0ZW1lbnRMaXN0
JiAKIAogdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlN0YXRlbWVudCYgc3RhdGVtZW50KQogewot
ICAgIGlmIChpczxBU1Q6OkJsb2NrPihzdGF0ZW1lbnQpKQorICAgIHN3aXRjaCAoc3RhdGVtZW50
LmtpbmQoKSkgeworICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OkJsb2NrOgogICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpCbG9jaz4oc3RhdGVtZW50KSk7Ci0g
ICAgZWxzZSBpZiAoaXM8QVNUOjpCcmVhaz4oc3RhdGVtZW50KSkKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6QnJlYWs6CiAgICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChkb3duY2FzdDxBU1Q6OkJyZWFrPihzdGF0ZW1lbnQpKTsKLSAgICBlbHNlIGlmIChp
czxBU1Q6OkNvbnRpbnVlPihzdGF0ZW1lbnQpKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFT
VDo6U3RhdGVtZW50OjpLaW5kOjpDb250aW51ZToKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGRvd25jYXN0PEFTVDo6Q29udGludWU+KHN0YXRlbWVudCkpOwotICAgIGVsc2UgaWYgKGlzPEFT
VDo6RG9XaGlsZUxvb3A+KHN0YXRlbWVudCkpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNU
OjpTdGF0ZW1lbnQ6OktpbmQ6OkRvV2hpbGVMb29wOgogICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoZG93bmNhc3Q8QVNUOjpEb1doaWxlTG9vcD4oc3RhdGVtZW50KSk7Ci0gICAgZWxzZSBpZiAo
aXM8QVNUOjpFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50PihzdGF0ZW1lbnQpKQorICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpFZmZlY3RmdWxFeHByZXNz
aW9uOgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpFZmZlY3RmdWxF
eHByZXNzaW9uU3RhdGVtZW50PihzdGF0ZW1lbnQpKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OkZh
bGx0aHJvdWdoPihzdGF0ZW1lbnQpKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6U3Rh
dGVtZW50OjpLaW5kOjpGYWxsdGhyb3VnaDoKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRv
d25jYXN0PEFTVDo6RmFsbHRocm91Z2g+KHN0YXRlbWVudCkpOwotICAgIGVsc2UgaWYgKGlzPEFT
VDo6Rm9yTG9vcD4oc3RhdGVtZW50KSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OlN0
YXRlbWVudDo6S2luZDo6Rm9yTG9vcDoKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25j
YXN0PEFTVDo6Rm9yTG9vcD4oc3RhdGVtZW50KSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpJZlN0
YXRlbWVudD4oc3RhdGVtZW50KSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OlN0YXRl
bWVudDo6S2luZDo6SWY6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6
OklmU3RhdGVtZW50PihzdGF0ZW1lbnQpKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OlJldHVybj4o
c3RhdGVtZW50KSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2lu
ZDo6UmV0dXJuOgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpSZXR1
cm4+KHN0YXRlbWVudCkpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6U3RhdGVtZW50TGlzdD4oc3Rh
dGVtZW50KSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6
U3RhdGVtZW50TGlzdDoKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6
U3RhdGVtZW50TGlzdD4oc3RhdGVtZW50KSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpTd2l0Y2hD
YXNlPihzdGF0ZW1lbnQpKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6U3RhdGVtZW50
OjpLaW5kOjpTd2l0Y2hDYXNlOgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8
QVNUOjpTd2l0Y2hDYXNlPihzdGF0ZW1lbnQpKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OlN3aXRj
aFN0YXRlbWVudD4oc3RhdGVtZW50KSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OlN0
YXRlbWVudDo6S2luZDo6U3dpdGNoOgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNh
c3Q8QVNUOjpTd2l0Y2hTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpOwotICAgIGVsc2UgaWYgKGlzPEFT
VDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpCisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OlZhcmlhYmxlRGVjbGFyYXRpb25z
OgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpWYXJpYWJsZURlY2xh
cmF0aW9uc1N0YXRlbWVudD4oc3RhdGVtZW50KSk7Ci0gICAgZWxzZQorICAgICAgICBicmVhazsK
KyAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpXaGlsZUxvb3A6CiAgICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OldoaWxlTG9vcD4oc3RhdGVtZW50KSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KIH0KIAogdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkJyZWFrJikK
QEAgLTM0OSw0NiArMzY1LDY4IEBAIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpEb1doaWxlTG9v
cCYgZG8KIAogdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24p
CiB7Ci0gICAgaWYgKGlzPEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKQor
ICAgIHN3aXRjaCAoZXhwcmVzc2lvbi5raW5kKCkpIHsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lv
bjo6S2luZDo6QXNzaWdubWVudDoKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0
PEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICBlbHNlIGlmIChp
czxBU1Q6OkJvb2xlYW5MaXRlcmFsPihleHByZXNzaW9uKSkKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkJvb2xlYW5MaXRlcmFsOgogICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpCb29sZWFuTGl0ZXJhbD4oZXhwcmVzc2lvbikp
OwotICAgIGVsc2UgaWYgKGlzPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKQorICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6Q2FsbDoKICAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6Q2FsbEV4cHJlc3Npb24+KGV4cHJl
c3Npb24pKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OkNvbW1hRXhwcmVzc2lvbj4oZXhwcmVzc2lv
bikpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpDb21t
YToKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6Q29tbWFFeHByZXNz
aW9uPihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpEZXJlZmVyZW5jZUV4cHJl
c3Npb24+KGV4cHJlc3Npb24pKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVz
c2lvbjo6S2luZDo6RGVyZWZlcmVuY2U6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3du
Y2FzdDxBU1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgIGVsc2Ug
aWYgKGlzPEFTVDo6RmxvYXRMaXRlcmFsPihleHByZXNzaW9uKSkKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkZsb2F0TGl0ZXJhbDoKICAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6RmxvYXRMaXRlcmFsPihleHByZXNzaW9uKSk7
Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbikpCisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpJbnRlZ2VyTGl0ZXJh
bDoKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6SW50ZWdlckxpdGVy
YWw+KGV4cHJlc3Npb24pKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OkxvZ2ljYWxFeHByZXNzaW9u
PihleHByZXNzaW9uKSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246
OktpbmQ6OkxvZ2ljYWw6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6
OkxvZ2ljYWxFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpM
b2dpY2FsTm90RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpCisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpMb2dpY2FsTm90OgogICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpMb2dpY2FsTm90RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikp
OwotICAgIGVsc2UgaWYgKGlzPEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbj4oZXhw
cmVzc2lvbikpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5k
OjpNYWtlQXJyYXlSZWZlcmVuY2U6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2Fz
dDxBU1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICBl
bHNlIGlmIChpczxBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpCisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpNYWtlUG9pbnRlcjoK
ICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6TWFrZVBvaW50ZXJFeHBy
ZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpOdWxsTGl0ZXJhbD4o
ZXhwcmVzc2lvbikpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpL
aW5kOjpOdWxsTGl0ZXJhbDoKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFT
VDo6TnVsbExpdGVyYWw+KGV4cHJlc3Npb24pKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OkRvdEV4
cHJlc3Npb24+KGV4cHJlc3Npb24pKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhw
cmVzc2lvbjo6S2luZDo6RG90OgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8
QVNUOjpEb3RFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpH
bG9iYWxWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lvbikpCisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZToKICAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6R2xvYmFsVmFyaWFibGVSZWZl
cmVuY2U+KGV4cHJlc3Npb24pKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OkluZGV4RXhwcmVzc2lv
bj4oZXhwcmVzc2lvbikpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9u
OjpLaW5kOjpJbmRleDoKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6
SW5kZXhFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpSZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9uPihleHByZXNzaW9uKSkKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OlJlYWRNb2RpZnlXcml0ZToKICAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4o
ZXhwcmVzc2lvbikpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6VGVybmFyeUV4cHJlc3Npb24+KGV4
cHJlc3Npb24pKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2lu
ZDo6VGVybmFyeToKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6VGVy
bmFyeUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OlVuc2ln
bmVkSW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pKQorICAgICAgICBicmVhazsKKyAgICBjYXNl
IEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDoKICAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbD4o
ZXhwcmVzc2lvbikpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsPihleHByZXNzaW9uKSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Np
b246OktpbmQ6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDoKICAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGRvd25jYXN0PEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPihleHByZXNzaW9u
KSk7Ci0gICAgZWxzZQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6
S2luZDo6VmFyaWFibGVSZWZlcmVuY2U6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3du
Y2FzdDxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KIH0KIAogdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mIGRv
dEV4cHJlc3Npb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaAkocmV2
aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdDb25jYXRlbmF0ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC00Niw3ICs0Nyw3IEBAIGNsYXNzIEFycmF5UmVmZXJlbmNlVHlw
ZSBmaW5hbCA6IHB1YmxpYyAKICAgICB1c2luZyBCYXNlID0gUmVmZXJlbmNlVHlwZTsKIAogICAg
IEFycmF5UmVmZXJlbmNlVHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIEFkZHJlc3NTcGFjZSBh
ZGRyZXNzU3BhY2UsIFJlZjxVbm5hbWVkVHlwZT4gZWxlbWVudFR5cGUpCi0gICAgICAgIDogQmFz
ZShsb2NhdGlvbiwgYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKGVsZW1lbnRUeXBlKSwgS2luZDo6QXJy
YXlSZWZlcmVuY2VUeXBlKQorICAgICAgICA6IEJhc2UobG9jYXRpb24sIGFkZHJlc3NTcGFjZSwg
V1RGTW92ZShlbGVtZW50VHlwZSksIEtpbmQ6OkFycmF5UmVmZXJlbmNlKQogICAgIHsKICAgICB9
CiBwdWJsaWM6CkBAIC01NSw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQXJyYXlSZWZlcmVuY2VUeXBlKGxvY2F0aW9uLCBhZGRyZXNzU3BhY2UsIFdURk1v
dmUoZWxlbWVudFR5cGUpKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+QXJyYXlSZWZlcmVuY2VU
eXBlKCkgPSBkZWZhdWx0OworICAgIH5BcnJheVJlZmVyZW5jZVR5cGUoKSA9IGRlZmF1bHQ7CiAK
ICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7CkBAIC02Nyw3ICs2OCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGFkZHJlc3NTcGFjZSgpID09IG90aGVyLmFkZHJlc3NTcGFjZSgp
ICYmIGVsZW1lbnRUeXBlKCkgPT0gb3RoZXIuZWxlbWVudFR5cGUoKTsKICAgICB9CiAKLSAgICBT
dHJpbmcgdG9TdHJpbmcoKSBjb25zdCBvdmVycmlkZQorICAgIFN0cmluZyB0b1N0cmluZygpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhlbGVtZW50VHlwZSgpLnRvU3Ry
aW5nKCksICJbXSIpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5oCShyZXZpc2lvbiAyNDg0
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJh
eVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBBcnJheVR5cGUg
ZmluYWwgOiBwdWJsaWMgVW5uYW1lZFR5CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXJyYXlUeXBlKTsKICAgICBBcnJheVR5cGUoQ29kZUxv
Y2F0aW9uIGxvY2F0aW9uLCBSZWY8VW5uYW1lZFR5cGU+IGVsZW1lbnRUeXBlLCB1bnNpZ25lZCBu
dW1FbGVtZW50cykKLSAgICAgICAgOiBVbm5hbWVkVHlwZShsb2NhdGlvbiwgS2luZDo6QXJyYXlU
eXBlKQorICAgICAgICA6IFVubmFtZWRUeXBlKGxvY2F0aW9uLCBLaW5kOjpBcnJheSkKICAgICAg
ICAgLCBtX2VsZW1lbnRUeXBlKFdURk1vdmUoZWxlbWVudFR5cGUpKQogICAgICAgICAsIG1fbnVt
RWxlbWVudHMobnVtRWxlbWVudHMpCiAgICAgewpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFycmF5VHlwZShsb2NhdGlvbiwgV1RGTW92ZShl
bGVtZW50VHlwZSksIG51bUVsZW1lbnRzKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+QXJyYXlU
eXBlKCkgPSBkZWZhdWx0OworICAgIH5BcnJheVR5cGUoKSA9IGRlZmF1bHQ7CiAKICAgICBjb25z
dCBVbm5hbWVkVHlwZSYgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudFR5cGU7IH0KICAg
ICBVbm5hbWVkVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fZWxlbWVudFR5cGU7IH0KQEAgLTc0LDcg
Kzc0LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbnVtRWxlbWVudHMoKSA9PSBvdGhlci5u
dW1FbGVtZW50cygpICYmIHR5cGUoKSA9PSBvdGhlci50eXBlKCk7CiAgICAgfQogCi0gICAgU3Ry
aW5nIHRvU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcodHlwZSgpLnRvU3RyaW5nKCksICdb
JywgbnVtRWxlbWVudHMoKSwgJ10nKTsKICAgICB9CkBAIC05MCw2ICs5MCw4IEBAIHByaXZhdGU6
CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKEFycmF5VHlwZSkKKwogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19XSExTTF9VTk5BTUVEX1RZUEUoQXJyYXlUeXBlLCBpc0FycmF5VHlwZSgpKQog
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaAkocmV2
aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTEgKzM3
LDExIEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBBc3Np
Z25tZW50RXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK2NsYXNzIEFzc2lnbm1lbnRF
eHByZXNzaW9uIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIEFzc2lnbm1lbnRFeHByZXNzaW9uKENvZGVMb2NhdGlv
biBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgbGVmdCwgVW5pcXVlUmVmPEV4cHJl
c3Npb24+JiYgcmlnaHQpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAg
OiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpBc3NpZ25tZW50KQogICAgICAgICAsIG1fbGVm
dChXVEZNb3ZlKGxlZnQpKQogICAgICAgICAsIG1fcmlnaHQoV1RGTW92ZShyaWdodCkpCiAgICAg
ewpAQCAtNTAsMTMgKzUwLDExIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAotICAgIHZpcnR1
YWwgfkFzc2lnbm1lbnRFeHByZXNzaW9uKCkgPSBkZWZhdWx0OworICAgIH5Bc3NpZ25tZW50RXhw
cmVzc2lvbigpID0gZGVmYXVsdDsKIAogICAgIEFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnN0IEFz
c2lnbm1lbnRFeHByZXNzaW9uJikgPSBkZWxldGU7CiAgICAgQXNzaWdubWVudEV4cHJlc3Npb24o
QXNzaWdubWVudEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc0Fzc2lnbm1l
bnRFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgRXhw
cmVzc2lvbiYgbGVmdCgpIHsgcmV0dXJuIG1fbGVmdDsgfQogICAgIEV4cHJlc3Npb24mIHJpZ2h0
KCkgeyByZXR1cm4gbV9yaWdodDsgfQogICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiB0YWtlUmln
aHQoKSB7IHJldHVybiBXVEZNb3ZlKG1fcmlnaHQpOyB9CkBAIC03NSw2ICs3Myw4IEBAIHByaXZh
dGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKEFzc2lnbm1lbnRFeHByZXNzaW9uKQor
CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oQXNzaWdubWVudEV4cHJl
c3Npb24sIGlzQXNzaWdubWVudEV4cHJlc3Npb24oKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCbG9jay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJsb2NrLmgJ
KHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDI0ICszOCwyMiBAQCBuYW1l
c3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgQmxvY2sgOiBwdWJsaWMg
U3RhdGVtZW50IHsKK2NsYXNzIEJsb2NrIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQmxvY2soQ29kZUxvY2F0aW9u
IGxvY2F0aW9uLCBTdGF0ZW1lbnRzJiYgc3RhdGVtZW50cykKLSAgICAgICAgOiBTdGF0ZW1lbnQo
bG9jYXRpb24pCisgICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpCbG9jaykKICAg
ICAgICAgLCBtX3N0YXRlbWVudHMoV1RGTW92ZShzdGF0ZW1lbnRzKSkKICAgICB7CiAgICAgfQog
Ci0gICAgdmlydHVhbCB+QmxvY2soKSA9IGRlZmF1bHQ7CisgICAgfkJsb2NrKCkgPSBkZWZhdWx0
OwogCiAgICAgQmxvY2soY29uc3QgQmxvY2smKSA9IGRlbGV0ZTsKICAgICBCbG9jayhCbG9jayYm
KSA9IGRlZmF1bHQ7CiAKICAgICBTdGF0ZW1lbnRzJiBzdGF0ZW1lbnRzKCkgeyByZXR1cm4gbV9z
dGF0ZW1lbnRzOyB9CiAKLSAgICBib29sIGlzQmxvY2soKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9Ci0KIHByaXZhdGU6CiAgICAgU3RhdGVtZW50cyBtX3N0YXRlbWVudHM7CiB9OwpA
QCAtNjYsNiArNjQsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShC
bG9jaykKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoQmxvY2ssIGlz
QmxvY2soKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xCb29sZWFuTGl0ZXJhbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJvb2xlYW5MaXRlcmFsLmgJKHJldmlz
aW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEJvb2xlYW5MaXRlcmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE2ICszNiwxNiBAQCBu
YW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgQm9vbGVhbkxpdGVy
YWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBCb29sZWFuTGl0ZXJhbCBmaW5hbCA6IHB1
YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBCb29sZWFuTGl0ZXJhbChDb2RlTG9jYXRpb24gbG9jYXRpb24sIGJvb2wgdmFsdWUpCi0g
ICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0
aW9uLCBLaW5kOjpCb29sZWFuTGl0ZXJhbCkKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAg
IHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5Cb29sZWFuTGl0ZXJhbCgpID0gZGVmYXVsdDsKKyAg
ICB+Qm9vbGVhbkxpdGVyYWwoKSA9IGRlZmF1bHQ7CiAKICAgICBCb29sZWFuTGl0ZXJhbChjb25z
dCBCb29sZWFuTGl0ZXJhbCYpID0gZGVsZXRlOwogICAgIEJvb2xlYW5MaXRlcmFsKEJvb2xlYW5M
aXRlcmFsJiYpID0gZGVmYXVsdDsKQEAgLTU1LDggKzU1LDYgQEAgcHVibGljOgogCiAgICAgYm9v
bCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAotICAgIGJvb2wgaXNCb29sZWFu
TGl0ZXJhbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIEJvb2xlYW5M
aXRlcmFsIGNsb25lKCkgY29uc3QKICAgICB7CiAgICAgICAgIEJvb2xlYW5MaXRlcmFsIHJlc3Vs
dChjb2RlTG9jYXRpb24oKSwgbV92YWx1ZSk7CkBAIC03NCw2ICs3Miw4IEBAIHByaXZhdGU6CiAK
IH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKEJvb2xlYW5MaXRlcmFsKQorCiBTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oQm9vbGVhbkxpdGVyYWwsIGlzQm9vbGVhbkxp
dGVyYWwoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xCcmVhay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDIxICszNywxOSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3Bh
Y2UgQVNUIHsKIAotY2xhc3MgQnJlYWsgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNzIEJyZWFr
IGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgQnJlYWsoQ29kZUxvY2F0aW9uIGxvY2F0aW9uKQotICAgICAgICA6IFN0
YXRlbWVudChsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OkJy
ZWFrKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5CcmVhaygpID0gZGVmYXVsdDsKKyAg
ICB+QnJlYWsoKSA9IGRlZmF1bHQ7CiAKICAgICBCcmVhayhjb25zdCBCcmVhayYpID0gZGVsZXRl
OwogICAgIEJyZWFrKEJyZWFrJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNCcmVhaygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogcHJpdmF0ZToKIH07CiAKQEAgLTYxLDYg
KzU5LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoQnJlYWspCisK
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKEJyZWFrLCBpc0JyZWFrKCkp
CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQ2FsbEV4cHJlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDYWxsRXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDg0
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDYWxs
RXhwcmVzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwyNyArNDAsMjUgQEAgbmFtZXNwYWNl
IEFTVCB7CiAKIGNsYXNzIE5hbWVkVHlwZTsKIAotY2xhc3MgQ2FsbEV4cHJlc3Npb24gOiBwdWJs
aWMgRXhwcmVzc2lvbiB7CitjbGFzcyBDYWxsRXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBFeHBy
ZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDYWxs
RXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmluZyYmIG5hbWUsIFZlY3RvcjxV
bmlxdWVSZWY8RXhwcmVzc2lvbj4+JiYgYXJndW1lbnRzKQotICAgICAgICA6IEV4cHJlc3Npb24o
bG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6Q2FsbCkKICAg
ICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKICAgICAgICAgLCBtX2FyZ3VtZW50cyhXVEZN
b3ZlKGFyZ3VtZW50cykpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfkNhbGxFeHByZXNz
aW9uKCkgPSBkZWZhdWx0OwotCiAgICAgQ2FsbEV4cHJlc3Npb24oY29uc3QgQ2FsbEV4cHJlc3Np
b24mKSA9IGRlbGV0ZTsKICAgICBDYWxsRXhwcmVzc2lvbihDYWxsRXhwcmVzc2lvbiYmKSA9IGRl
ZmF1bHQ7CiAKLSAgICBib29sIGlzQ2FsbEV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0KICAgICBWZWN0b3I8VW5pcXVlUmVmPEV4cHJlc3Npb24+PiYgYXJndW1l
bnRzKCkgeyByZXR1cm4gbV9hcmd1bWVudHM7IH0KIAogICAgIFN0cmluZyYgbmFtZSgpIHsgcmV0
dXJuIG1fbmFtZTsgfQogCisgICAgfkNhbGxFeHByZXNzaW9uKCkgPSBkZWZhdWx0OworCiAgICAg
dm9pZCBzZXRDYXN0RGF0YShOYW1lZFR5cGUmIG5hbWVkVHlwZSkKICAgICB7CiAgICAgICAgIG1f
Y2FzdFJldHVyblR5cGUgPSAmbmFtZWRUeXBlOwpAQCAtOTMsNiArOTEsOCBAQCBwcml2YXRlOgog
CiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShDYWxsRXhwcmVzc2lvbikKKwogU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKENhbGxFeHByZXNzaW9uLCBpc0NhbGxFeHBy
ZXNzaW9uKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMQ29tbWFFeHByZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29tbWFFeHByZXNzaW9uLmgJKHJl
dmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTENvbW1hRXhwcmVzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyMiArMzgsMjAg
QEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIENvbW1hRXhw
cmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK2NsYXNzIENvbW1hRXhwcmVzc2lvbiBmaW5h
bCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBDb21tYUV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBWZWN0b3I8
VW5pcXVlUmVmPEV4cHJlc3Npb24+PiYmIGxpc3QpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2Nh
dGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpDb21tYSkKICAgICAg
ICAgLCBtX2xpc3QoV1RGTW92ZShsaXN0KSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+
Q29tbWFFeHByZXNzaW9uKCkgPSBkZWZhdWx0OworICAgIH5Db21tYUV4cHJlc3Npb24oKSA9IGRl
ZmF1bHQ7CiAKICAgICBDb21tYUV4cHJlc3Npb24oY29uc3QgQ29tbWFFeHByZXNzaW9uJikgPSBk
ZWxldGU7CiAgICAgQ29tbWFFeHByZXNzaW9uKENvbW1hRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7
CiAKLSAgICBib29sIGlzQ29tbWFFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQotCiAgICAgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4mIGxpc3QoKSB7IHJl
dHVybiBtX2xpc3Q7IH0KIAogcHJpdmF0ZToKQEAgLTY2LDYgKzY0LDggQEAgcHJpdmF0ZToKIAog
fQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoQ29tbWFFeHByZXNzaW9uKQorCiBTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oQ29tbWFFeHByZXNzaW9uLCBpc0NvbW1hRXhw
cmVzc2lvbigpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lv
bi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDUs
NyArNDUsNyBAQCBuYW1lc3BhY2UgQVNUIHsKIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTU4IG1hY09TIFNpZXJyYSBkb2Vzbid0IHNlZW0gdG8g
c3VwcG9ydCBwdXR0aW5nIFZhcmlhbnRzIGluc2lkZSBWYXJpYW50cywKIC8vIHNvIHRoaXMgaXMg
YSB3cmFwcGVyIGNsYXNzIHRvIG1ha2Ugc3VyZSB0aGF0IGRvZXNuJ3QgaGFwcGVuLiBBcyBzb29u
IGFzIHdlIGRvbid0CiAvLyBoYXZlIHRvIHN1cHBvcnQgU2llcnJhLCB0aGlzIGNhbiBiZSBtaWdy
YXRlZCB0byBhIFZhcmlhbnQgcHJvcGVyLgotY2xhc3MgQ29uc3RhbnRFeHByZXNzaW9uIHsKK2Ns
YXNzIENvbnN0YW50RXhwcmVzc2lvbiBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgQ29uc3RhbnRFeHByZXNzaW9uKEludGVnZXJMaXRlcmFsJiYgaW50
ZWdlckxpdGVyYWwpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xDb250aW51ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDIxICszNywxOSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1l
c3BhY2UgQVNUIHsKIAotY2xhc3MgQ29udGludWUgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNz
IENvbnRpbnVlIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ29udGludWUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uKQot
ICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRp
b24sIEtpbmQ6OkNvbnRpbnVlKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5Db250aW51
ZSgpID0gZGVmYXVsdDsKKyAgICB+Q29udGludWUoKSA9IGRlZmF1bHQ7CiAKICAgICBDb250aW51
ZShjb25zdCBDb250aW51ZSYpID0gZGVsZXRlOwogICAgIENvbnRpbnVlKENvbnRpbnVlJiYpID0g
ZGVmYXVsdDsKIAotICAgIGJvb2wgaXNDb250aW51ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KLQogcHJpdmF0ZToKIH07CiAKQEAgLTYxLDYgKzU5LDggQEAgcHJpdmF0ZToKIAog
fQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoQ29udGludWUpCisKIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfV0hMU0xfU1RBVEVNRU5UKENvbnRpbnVlLCBpc0NvbnRpbnVlKCkpCiAKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVmYXVs
dERlbGV0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTERlZmF1bHREZWxldGUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEZWZhdWx0RGVsZXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQkdQVSkKKworI2RlZmluZSBERUZJTkVfREVGQVVMVF9ERUxFVEUodHlwZSkg
XAorICAgIG5hbWVzcGFjZSBzdGQgeyBcCisgICAgICAgIHRlbXBsYXRlPD4gXAorICAgICAgICBz
dHJ1Y3QgZGVmYXVsdF9kZWxldGU8V2ViQ29yZTo6V0hMU0w6OkFTVDo6dHlwZT4geyBcCisgICAg
ICAgICAgICB2b2lkIG9wZXJhdG9yKCkoV2ViQ29yZTo6V0hMU0w6OkFTVDo6dHlwZSogdmFsdWUp
IFwKKyAgICAgICAgICAgIHsgXAorICAgICAgICAgICAgICAgIFdlYkNvcmU6OldITFNMOjpBU1Q6
OnR5cGU6OmRlc3Ryb3koKnZhbHVlKTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH07IFwK
KyAgICB9IFwKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEZXJlZmVyZW5jZUV4cHJl
c3Npb24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDIyICszNywyMCBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsK
IAotY2xhc3MgRGVyZWZlcmVuY2VFeHByZXNzaW9uIDogcHVibGljIEV4cHJlc3Npb24geworY2xh
c3MgRGVyZWZlcmVuY2VFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERlcmVmZXJlbmNlRXhwcmVz
c2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIHBvaW50
ZXIpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9u
KGxvY2F0aW9uLCBLaW5kOjpEZXJlZmVyZW5jZSkKICAgICAgICAgLCBtX3BvaW50ZXIoV1RGTW92
ZShwb2ludGVyKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+RGVyZWZlcmVuY2VFeHBy
ZXNzaW9uKCkgPSBkZWZhdWx0OworICAgIH5EZXJlZmVyZW5jZUV4cHJlc3Npb24oKSA9IGRlZmF1
bHQ7CiAKICAgICBEZXJlZmVyZW5jZUV4cHJlc3Npb24oY29uc3QgRGVyZWZlcmVuY2VFeHByZXNz
aW9uJikgPSBkZWxldGU7CiAgICAgRGVyZWZlcmVuY2VFeHByZXNzaW9uKERlcmVmZXJlbmNlRXhw
cmVzc2lvbiYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzRGVyZWZlcmVuY2VFeHByZXNzaW9u
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgRXhwcmVzc2lvbiYgcG9p
bnRlcigpIHsgcmV0dXJuIG1fcG9pbnRlcjsgfQogCiBwcml2YXRlOgpAQCAtNjUsNiArNjMsOCBA
QCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShEZXJlZmVyZW5jZUV4cHJl
c3Npb24pCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihEZXJlZmVy
ZW5jZUV4cHJlc3Npb24sIGlzRGVyZWZlcmVuY2VFeHByZXNzaW9uKCkpCiAKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG9XaGlsZUxv
b3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xEb1doaWxlTG9vcC5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb1doaWxlTG9vcC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCwyMyArMzgsMjEgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFT
VCB7CiAKLWNsYXNzIERvV2hpbGVMb29wIDogcHVibGljIFN0YXRlbWVudCB7CitjbGFzcyBEb1do
aWxlTG9vcCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIERvV2hpbGVMb29wKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwg
VW5pcXVlUmVmPFN0YXRlbWVudD4mJiBib2R5LCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBjb25k
aXRpb25hbCkKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24pCisgICAgICAgIDogU3RhdGVt
ZW50KGxvY2F0aW9uLCBLaW5kOjpEb1doaWxlTG9vcCkKICAgICAgICAgLCBtX2JvZHkoV1RGTW92
ZShib2R5KSkKICAgICAgICAgLCBtX2NvbmRpdGlvbmFsKFdURk1vdmUoY29uZGl0aW9uYWwpKQog
ICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5Eb1doaWxlTG9vcCgpID0gZGVmYXVsdDsKKyAg
ICB+RG9XaGlsZUxvb3AoKSA9IGRlZmF1bHQ7CiAKICAgICBEb1doaWxlTG9vcChjb25zdCBEb1do
aWxlTG9vcCYpID0gZGVsZXRlOwogICAgIERvV2hpbGVMb29wKERvV2hpbGVMb29wJiYpID0gZGVm
YXVsdDsKIAotICAgIGJvb2wgaXNEb1doaWxlTG9vcCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KLQogICAgIFN0YXRlbWVudCYgYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQogICAg
IEV4cHJlc3Npb24mIGNvbmRpdGlvbmFsKCkgeyByZXR1cm4gbV9jb25kaXRpb25hbDsgfQogCkBA
IC02OSw2ICs2Nyw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKERv
V2hpbGVMb29wKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChEb1do
aWxlTG9vcCwgaXNEb1doaWxlTG9vcCgpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvdEV4cHJlc3Npb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb3RFeHBy
ZXNzaW9uLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTERvdEV4cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzgs
MzMgKzM4LDMxIEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFz
cyBEb3RFeHByZXNzaW9uIDogcHVibGljIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiB7CitjbGFz
cyBEb3RFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRG90RXhwcmVzc2lv
bihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGJhc2UsIFN0
cmluZyYmIGZpZWxkTmFtZSkKLSAgICAgICAgOiBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24obG9j
YXRpb24sIFdURk1vdmUoYmFzZSkpCisgICAgICAgIDogUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9u
KGxvY2F0aW9uLCBLaW5kOjpEb3QsIFdURk1vdmUoYmFzZSkpCiAgICAgICAgICwgbV9maWVsZE5h
bWUoV1RGTW92ZShmaWVsZE5hbWUpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5Eb3RF
eHByZXNzaW9uKCkgPSBkZWZhdWx0OworICAgIH5Eb3RFeHByZXNzaW9uKCkgPSBkZWZhdWx0Owog
CiAgICAgRG90RXhwcmVzc2lvbihjb25zdCBEb3RFeHByZXNzaW9uJikgPSBkZWxldGU7CiAgICAg
RG90RXhwcmVzc2lvbihEb3RFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNE
b3RFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgU3Ry
aW5nIGdldHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgU3RyaW5nIGdldHRl
ckZ1bmN0aW9uTmFtZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygi
b3BlcmF0b3IuIiwgbV9maWVsZE5hbWUpOwogICAgIH0KIAotICAgIFN0cmluZyBzZXR0ZXJGdW5j
dGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZQorICAgIFN0cmluZyBzZXR0ZXJGdW5jdGlvbk5hbWUo
KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIm9wZXJhdG9yLiIsIG1f
ZmllbGROYW1lLCAiPSIpOwogICAgIH0KIAotICAgIFN0cmluZyBhbmRlckZ1bmN0aW9uTmFtZSgp
IGNvbnN0IG92ZXJyaWRlCisgICAgU3RyaW5nIGFuZGVyRnVuY3Rpb25OYW1lKCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJvcGVyYXRvciYuIiwgbV9maWVsZE5hbWUp
OwogICAgIH0KQEAgLTgxLDYgKzc5LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVM
VF9ERUxFVEUoRG90RXhwcmVzc2lvbikKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9F
WFBSRVNTSU9OKERvdEV4cHJlc3Npb24sIGlzRG90RXhwcmVzc2lvbigpKQogCiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVmZmVjdGZ1
bEV4cHJlc3Npb25TdGF0ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmgJ
KHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzgsMjIgKzM4LDIwIEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1Qgewog
Ci1jbGFzcyBFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50IDogcHVibGljIFN0YXRlbWVudCB7
CitjbGFzcyBFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50IGZpbmFsIDogcHVibGljIFN0YXRl
bWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRWZmZWN0
ZnVsRXhwcmVzc2lvblN0YXRlbWVudChVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBlZmZlY3RmdWxF
eHByZXNzaW9uKQotICAgICAgICA6IFN0YXRlbWVudChlZmZlY3RmdWxFeHByZXNzaW9uLT5jb2Rl
TG9jYXRpb24oKSkKKyAgICAgICAgOiBTdGF0ZW1lbnQoZWZmZWN0ZnVsRXhwcmVzc2lvbi0+Y29k
ZUxvY2F0aW9uKCksIEtpbmQ6OkVmZmVjdGZ1bEV4cHJlc3Npb24pCiAgICAgICAgICwgbV9lZmZl
Y3RmdWxFeHByZXNzaW9uKFdURk1vdmUoZWZmZWN0ZnVsRXhwcmVzc2lvbikpCiAgICAgewogICAg
IH0KIAotICAgIHZpcnR1YWwgfkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoKSA9IGRlZmF1
bHQ7CisgICAgfkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoKSA9IGRlZmF1bHQ7CiAKICAg
ICBFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KGNvbnN0IEVmZmVjdGZ1bEV4cHJlc3Npb25T
dGF0ZW1lbnQmKSA9IGRlbGV0ZTsKICAgICBFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KEVm
ZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQmJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc0Vm
ZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9Ci0KICAgICBFeHByZXNzaW9uJiBlZmZlY3RmdWxFeHByZXNzaW9uKCkgeyByZXR1cm4gbV9l
ZmZlY3RmdWxFeHByZXNzaW9uOyB9CiAKIHByaXZhdGU6CkBAIC02Niw2ICs2NCw4IEBAIHByaXZh
dGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0
ZW1lbnQpCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKEVmZmVjdGZ1
bEV4cHJlc3Npb25TdGF0ZW1lbnQsIGlzRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpKQog
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCShy
ZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMjIg
KzQ1LDIwIEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBF
bnVtZXJhdGlvbkRlZmluaXRpb24gOiBwdWJsaWMgTmFtZWRUeXBlIHsKK2NsYXNzIEVudW1lcmF0
aW9uRGVmaW5pdGlvbiBmaW5hbCA6IHB1YmxpYyBOYW1lZFR5cGUgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbihDb2RlTG9j
YXRpb24gbG9jYXRpb24sIFN0cmluZyYmIG5hbWUsIFJlZjxVbm5hbWVkVHlwZT4gdHlwZSkKLSAg
ICAgICAgOiBOYW1lZFR5cGUobG9jYXRpb24sIFdURk1vdmUobmFtZSkpCisgICAgICAgIDogTmFt
ZWRUeXBlKEtpbmQ6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiwgbG9jYXRpb24sIFdURk1vdmUobmFt
ZSkpCiAgICAgICAgICwgbV90eXBlKFdURk1vdmUodHlwZSkpCiAgICAgewogICAgIH0KIAotICAg
IHZpcnR1YWwgfkVudW1lcmF0aW9uRGVmaW5pdGlvbigpID0gZGVmYXVsdDsKKyAgICB+RW51bWVy
YXRpb25EZWZpbml0aW9uKCkgPSBkZWZhdWx0OwogCiAgICAgRW51bWVyYXRpb25EZWZpbml0aW9u
KGNvbnN0IEVudW1lcmF0aW9uRGVmaW5pdGlvbiYpID0gZGVsZXRlOwogICAgIEVudW1lcmF0aW9u
RGVmaW5pdGlvbihFbnVtZXJhdGlvbkRlZmluaXRpb24mJikgPSBkZWZhdWx0OwogCi0gICAgYm9v
bCBpc0VudW1lcmF0aW9uRGVmaW5pdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KLQogICAgIFVubmFtZWRUeXBlJiB0eXBlKCkgeyByZXR1cm4gbV90eXBlOyB9CiAKICAgICBi
b29sIGFkZChFbnVtZXJhdGlvbk1lbWJlciYmIG1lbWJlcikKQEAgLTk2LDYgKzk0LDggQEAgcHJp
dmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoRW51bWVyYXRpb25EZWZpbml0aW9u
KQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX05BTUVEX1RZUEUoRW51bWVyYXRpb25E
ZWZpbml0aW9uLCBpc0VudW1lcmF0aW9uRGVmaW5pdGlvbigpKQogCiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oCShyZXZpc2lvbiAyNDg0
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWwuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTcgKzQwLDE3IEBA
IG5hbWVzcGFjZSBBU1QgewogY2xhc3MgRW51bWVyYXRpb25EZWZpbml0aW9uOwogY2xhc3MgRW51
bWVyYXRpb25NZW1iZXI7CiAKLWNsYXNzIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCA6IHB1Ymxp
YyBFeHByZXNzaW9uIHsKK2NsYXNzIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCBmaW5hbCA6IHB1
YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJp
bmcmJiBsZWZ0LCBTdHJpbmcmJiByaWdodCkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9u
KQorICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbCkKICAgICAgICAgLCBtX2xlZnQoV1RGTW92ZShsZWZ0KSkKICAgICAgICAgLCBtX3Jp
Z2h0KFdURk1vdmUocmlnaHQpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5FbnVtZXJh
dGlvbk1lbWJlckxpdGVyYWwoKSA9IGRlZmF1bHQ7CisgICAgfkVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbCgpID0gZGVmYXVsdDsKIAogICAgIGV4cGxpY2l0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJh
bChjb25zdCBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmKSA9IGRlbGV0ZTsKICAgICBFbnVtZXJh
dGlvbk1lbWJlckxpdGVyYWwoRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiYpID0gZGVmYXVsdDsK
QEAgLTU4LDggKzU4LDYgQEAgcHVibGljOgogICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYg
b3BlcmF0b3I9KGNvbnN0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYpID0gZGVsZXRlOwogICAg
IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgb3BlcmF0b3I9KEVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbCYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzRW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgc3RhdGljIEVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbCB3cmFwKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbGVm
dCwgU3RyaW5nJiYgcmlnaHQsIEVudW1lcmF0aW9uRGVmaW5pdGlvbiYgZW51bWVyYXRpb25EZWZp
bml0aW9uLCBFbnVtZXJhdGlvbk1lbWJlciYgZW51bWVyYXRpb25NZW1iZXIpCiAgICAgewogICAg
ICAgICBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwgcmVzdWx0KGxvY2F0aW9uLCBXVEZNb3ZlKGxl
ZnQpLCBXVEZNb3ZlKHJpZ2h0KSk7CkBAIC0xMTgsNiArMTE2LDggQEAgcHJpdmF0ZToKIAogfQog
CitERUZJTkVfREVGQVVMVF9ERUxFVEUoRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKQorCiBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oRW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsLCBpc0VudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCgpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEV4cHJlc3Npb24uY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldITFNMRXhwcmVzc2lvbi5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldI
TFNMQVNULmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKwor
bmFtZXNwYWNlIEFTVCB7CisKK3ZvaWQgRXhwcmVzc2lvbjo6ZGVzdHJveShFeHByZXNzaW9uJiBl
eHByZXNzaW9uKQoreworICAgIHN3aXRjaCAoZXhwcmVzc2lvbi5raW5kKCkpIHsKKyAgICBjYXNl
IEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6QXNzaWdubWVudDoKKyAgICAgICAgZGVsZXRlICZkb3du
Y2FzdDxBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPihleHByZXNzaW9uKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkJvb2xlYW5MaXRlcmFsOgorICAg
ICAgICBkZWxldGUgJmRvd25jYXN0PEFTVDo6Qm9vbGVhbkxpdGVyYWw+KGV4cHJlc3Npb24pOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6Q2FsbDoKKyAg
ICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OkNhbGxFeHByZXNzaW9uPihleHByZXNzaW9uKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkNvbW1hOgor
ICAgICAgICBkZWxldGUgJmRvd25jYXN0PEFTVDo6Q29tbWFFeHByZXNzaW9uPihleHByZXNzaW9u
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkRlcmVm
ZXJlbmNlOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PEFTVDo6RGVyZWZlcmVuY2VFeHByZXNz
aW9uPihleHByZXNzaW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Np
b246OktpbmQ6OkZsb2F0TGl0ZXJhbDoKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OkZs
b2F0TGl0ZXJhbD4oZXhwcmVzc2lvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpF
eHByZXNzaW9uOjpLaW5kOjpJbnRlZ2VyTGl0ZXJhbDoKKyAgICAgICAgZGVsZXRlICZkb3duY2Fz
dDxBU1Q6OkludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkxvZ2ljYWw6CisgICAgICAgIGRlbGV0ZSAmZG93
bmNhc3Q8QVNUOjpMb2dpY2FsRXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpMb2dpY2FsTm90OgorICAgICAgICBk
ZWxldGUgJmRvd25jYXN0PEFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb24+KGV4cHJlc3Npb24pOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6TWFrZUFycmF5
UmVmZXJlbmNlOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PEFTVDo6TWFrZUFycmF5UmVmZXJl
bmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNU
OjpFeHByZXNzaW9uOjpLaW5kOjpNYWtlUG9pbnRlcjoKKyAgICAgICAgZGVsZXRlICZkb3duY2Fz
dDxBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpOdWxsTGl0ZXJhbDoKKyAgICAgICAg
ZGVsZXRlICZkb3duY2FzdDxBU1Q6Ok51bGxMaXRlcmFsPihleHByZXNzaW9uKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkRvdDoKKyAgICAgICAgZGVs
ZXRlICZkb3duY2FzdDxBU1Q6OkRvdEV4cHJlc3Npb24+KGV4cHJlc3Npb24pOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6R2xvYmFsVmFyaWFibGVSZWZl
cmVuY2U6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpHbG9iYWxWYXJpYWJsZVJlZmVy
ZW5jZT4oZXhwcmVzc2lvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNz
aW9uOjpLaW5kOjpJbmRleDoKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OkluZGV4RXhw
cmVzc2lvbj4oZXhwcmVzc2lvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHBy
ZXNzaW9uOjpLaW5kOjpSZWFkTW9kaWZ5V3JpdGU6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8
QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPihleHByZXNzaW9uKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OlRlcm5hcnk6CisgICAgICAgIGRl
bGV0ZSAmZG93bmNhc3Q8QVNUOjpUZXJuYXJ5RXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpVbnNpZ25lZEludGVn
ZXJMaXRlcmFsOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PEFTVDo6VW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbD4oZXhwcmVzc2lvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHBy
ZXNzaW9uOjpLaW5kOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6CisgICAgICAgIGRlbGV0ZSAm
ZG93bmNhc3Q8QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw+KGV4cHJlc3Npb24pOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6VmFyaWFibGVSZWZl
cmVuY2U6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4o
ZXhwcmVzc2lvbik7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworU3RyaW5nIFByb3BlcnR5
QWNjZXNzRXhwcmVzc2lvbjo6Z2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3QKK3sKKyAgICBpZiAo
aXM8RG90RXhwcmVzc2lvbj4oKnRoaXMpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8RG90RXhw
cmVzc2lvbj4oKnRoaXMpLmdldHRlckZ1bmN0aW9uTmFtZSgpOworICAgIGlmIChpczxJbmRleEV4
cHJlc3Npb24+KCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEluZGV4RXhwcmVzc2lv
bj4oKnRoaXMpLmdldHRlckZ1bmN0aW9uTmFtZSgpOworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Cit9CisKK1N0cmluZyBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb246OnNldHRlckZ1
bmN0aW9uTmFtZSgpIGNvbnN0Cit7CisgICAgaWYgKGlzPERvdEV4cHJlc3Npb24+KCp0aGlzKSkK
KyAgICAgICAgcmV0dXJuIGRvd25jYXN0PERvdEV4cHJlc3Npb24+KCp0aGlzKS5zZXR0ZXJGdW5j
dGlvbk5hbWUoKTsKKyAgICBpZiAoaXM8SW5kZXhFeHByZXNzaW9uPigqdGhpcykpCisgICAgICAg
IHJldHVybiBkb3duY2FzdDxJbmRleEV4cHJlc3Npb24+KCp0aGlzKS5zZXR0ZXJGdW5jdGlvbk5h
bWUoKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitTdHJpbmcgUHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uOjphbmRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0Cit7CisgICAg
aWYgKGlzPERvdEV4cHJlc3Npb24+KCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PERv
dEV4cHJlc3Npb24+KCp0aGlzKS5hbmRlckZ1bmN0aW9uTmFtZSgpOworICAgIGlmIChpczxJbmRl
eEV4cHJlc3Npb24+KCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEluZGV4RXhwcmVz
c2lvbj4oKnRoaXMpLmFuZGVyRnVuY3Rpb25OYW1lKCk7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30gLy8gbmFtZXNwYWNlIFdI
TFNMCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVz
c2lvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5
LDcgQEAKIAogI2luY2x1ZGUgIldITFNMQWRkcmVzc1NwYWNlLmgiCiAjaW5jbHVkZSAiV0hMU0xD
b2RlTG9jYXRpb24uaCIKKyNpbmNsdWRlICJXSExTTERlZmF1bHREZWxldGUuaCIKICNpbmNsdWRl
ICJXSExTTFVubmFtZWRUeXBlLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KQEAgLTQyLDEzICs0Myw0MiBAQCBuYW1lc3BhY2UgQVNUIHsK
IAogY2xhc3MgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisKK3By
b3RlY3RlZDoKKyAgICB+RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKwogcHVibGljOgotICAgIEV4
cHJlc3Npb24oQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbikKLSAgICAgICAgOiBtX2NvZGVMb2Nh
dGlvbihjb2RlTG9jYXRpb24pCisKKyAgICBlbnVtIGNsYXNzIEtpbmQgOiB1aW50OF90IHsKKyAg
ICAgICAgQXNzaWdubWVudCwKKyAgICAgICAgQm9vbGVhbkxpdGVyYWwsCisgICAgICAgIENhbGws
CisgICAgICAgIENvbW1hLAorICAgICAgICBEZXJlZmVyZW5jZSwKKyAgICAgICAgRG90LAorICAg
ICAgICBHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSwKKyAgICAgICAgRmxvYXRMaXRlcmFsLAorICAg
ICAgICBJbmRleCwKKyAgICAgICAgSW50ZWdlckxpdGVyYWwsCisgICAgICAgIExvZ2ljYWwsCisg
ICAgICAgIExvZ2ljYWxOb3QsCisgICAgICAgIE1ha2VBcnJheVJlZmVyZW5jZSwKKyAgICAgICAg
TWFrZVBvaW50ZXIsCisgICAgICAgIE51bGxMaXRlcmFsLAorICAgICAgICBSZWFkTW9kaWZ5V3Jp
dGUsCisgICAgICAgIFRlcm5hcnksCisgICAgICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwsCisg
ICAgICAgIFZhcmlhYmxlUmVmZXJlbmNlLAorICAgICAgICBFbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwsCisgICAgfTsKKworICAgIEV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbiwg
S2luZCBraW5kKQorICAgICAgICA6IG1fa2luZChraW5kKQorICAgICAgICAsIG1fY29kZUxvY2F0
aW9uKGNvZGVMb2NhdGlvbi5zdGFydE9mZnNldCgpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIH5FeHByZXNzaW9uKCkgPSBkZWZhdWx0OworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koRXhw
cmVzc2lvbiYpOwogCiAgICAgRXhwcmVzc2lvbihjb25zdCBFeHByZXNzaW9uJikgPSBkZWxldGU7
CiAgICAgRXhwcmVzc2lvbihFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKQEAgLTkyLDMzICsxMjIs
MzUgQEAgcHVibGljOgogICAgICAgICAgICAgb3RoZXIuc2V0VHlwZUFubm90YXRpb24oVHlwZUFu
bm90YXRpb24oKnR5cGVBbm5vdGF0aW9uKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIGlz
QXNzaWdubWVudEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc0Jvb2xlYW5MaXRlcmFsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNDYWxsRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzQ29tbWFFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNEZXJlZmVyZW5jZUV4cHJlc3Npb24oKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0RvdEV4cHJlc3Npb24oKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0dsb2JhbFZhcmlhYmxlUmVmZXJl
bmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNGbG9hdExp
dGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0luZGV4
RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlz
SW50ZWdlckxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9v
bCBpc0xvZ2ljYWxFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNMb2dpY2FsTm90RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWFrZVBvaW50ZXJFeHByZXNz
aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNOdWxsTGl0
ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzUHJvcGVy
dHlBY2Nlc3NFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNUZXJuYXJ5RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVmFyaWFibGVSZWZlcmVu
Y2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0VudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgS2luZCBraW5k
KCkgY29uc3QgIHsgcmV0dXJuIG1fa2luZDsgfQorICAgIGJvb2wgaXNBc3NpZ25tZW50RXhwcmVz
c2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpBc3NpZ25tZW50OyB9CisgICAg
Ym9vbCBpc0Jvb2xlYW5MaXRlcmFsKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkJv
b2xlYW5MaXRlcmFsOyB9CisgICAgYm9vbCBpc0NhbGxFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1
cm4ga2luZCgpID09IEtpbmQ6OkNhbGw7IH0KKyAgICBib29sIGlzQ29tbWFFeHByZXNzaW9uKCkg
Y29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkNvbW1hOyB9CisgICAgYm9vbCBpc0RlcmVm
ZXJlbmNlRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpEZXJlZmVy
ZW5jZTsgfQorICAgIGJvb2wgaXNEb3RFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgp
ID09IEtpbmQ6OkRvdDsgfQorICAgIGJvb2wgaXNHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSgpIGNv
bnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZTsgfQor
ICAgIGJvb2wgaXNGbG9hdExpdGVyYWwoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6
RmxvYXRMaXRlcmFsOyB9CisgICAgYm9vbCBpc0luZGV4RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0
dXJuIGtpbmQoKSA9PSBLaW5kOjpJbmRleDsgfQorICAgIGJvb2wgaXNJbnRlZ2VyTGl0ZXJhbCgp
IGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpJbnRlZ2VyTGl0ZXJhbDsgfQorICAgIGJv
b2wgaXNMb2dpY2FsRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpM
b2dpY2FsOyB9CisgICAgYm9vbCBpc0xvZ2ljYWxOb3RFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1
cm4ga2luZCgpID09IEtpbmQ6OkxvZ2ljYWxOb3Q7IH0KKyAgICBib29sIGlzTWFrZUFycmF5UmVm
ZXJlbmNlRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpNYWtlQXJy
YXlSZWZlcmVuY2U7IH0KKyAgICBib29sIGlzTWFrZVBvaW50ZXJFeHByZXNzaW9uKCkgY29uc3Qg
eyByZXR1cm4ga2luZCgpID09IEtpbmQ6Ok1ha2VQb2ludGVyOyB9CisgICAgYm9vbCBpc051bGxM
aXRlcmFsKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6Ok51bGxMaXRlcmFsOyB9Cisg
ICAgYm9vbCBpc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGlzRG90
RXhwcmVzc2lvbigpIHx8IGlzSW5kZXhFeHByZXNzaW9uKCk7IH0KKyAgICBib29sIGlzUmVhZE1v
ZGlmeVdyaXRlRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpSZWFk
TW9kaWZ5V3JpdGU7IH0KKyAgICBib29sIGlzVGVybmFyeUV4cHJlc3Npb24oKSBjb25zdCB7IHJl
dHVybiBraW5kKCkgPT0gS2luZDo6VGVybmFyeTsgfQorICAgIGJvb2wgaXNVbnNpZ25lZEludGVn
ZXJMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlVuc2lnbmVkSW50ZWdl
ckxpdGVyYWw7IH0KKyAgICBib29sIGlzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVy
biBraW5kKCkgPT0gS2luZDo6VmFyaWFibGVSZWZlcmVuY2U7IH0KKyAgICBib29sIGlzRW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbDsgfQogCi0gICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fY29kZUxvY2F0aW9uOyB9Ci0gICAgdm9pZCB1cGRhdGVDb2RlTG9j
YXRpb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uKSB7IG1fY29kZUxvY2F0aW9uID0gbG9jYXRpb247
IH0KKyAgICBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gQ29kZUxv
Y2F0aW9uKG1fY29kZUxvY2F0aW9uLCBtX2NvZGVMb2NhdGlvbik7IH0KKyAgICB2b2lkIHVwZGF0
ZUNvZGVMb2NhdGlvbihDb2RlTG9jYXRpb24gbG9jYXRpb24pIHsgbV9jb2RlTG9jYXRpb24gPSBs
b2NhdGlvbi5zdGFydE9mZnNldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgQ29kZUxvY2F0aW9uIG1f
Y29kZUxvY2F0aW9uOworICAgIEtpbmQgbV9raW5kOworICAgIHVuc2lnbmVkIG1fY29kZUxvY2F0
aW9uOwogICAgIFJlZlB0cjxVbm5hbWVkVHlwZT4gbV90eXBlOwogICAgIE9wdGlvbmFsPFR5cGVB
bm5vdGF0aW9uPiBtX3R5cGVBbm5vdGF0aW9uOwogfTsKQEAgLTEyOSw2ICsxNjEsOCBAQCBwcml2
YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShFeHByZXNzaW9uKQorCiAjZGVmaW5l
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihUb1ZhbHVlVHlwZU5hbWUs
IHByZWRpY2F0ZSkgXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExT
TDo6QVNUOjpUb1ZhbHVlVHlwZU5hbWUpIFwKICAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3Qg
V2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikgeyByZXR1cm4gZXhw
cmVzc2lvbi5wcmVkaWNhdGU7IH0gXApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRmFsbHRocm91Z2guaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5oCShyZXZpc2lv
biAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xGYWxsdGhyb3VnaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywyMSArMzcsMTkgQEAgbmFtZXNw
YWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEZhbGx0aHJvdWdoIDogcHVi
bGljIFN0YXRlbWVudCB7CitjbGFzcyBGYWxsdGhyb3VnaCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1l
bnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEZhbGx0aHJv
dWdoKENvZGVMb2NhdGlvbiBsb2NhdGlvbikKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24p
CisgICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpGYWxsdGhyb3VnaCkKICAgICB7
CiAgICAgfQogCi0gICAgdmlydHVhbCB+RmFsbHRocm91Z2goKSA9IGRlZmF1bHQ7CisgICAgfkZh
bGx0aHJvdWdoKCkgPSBkZWZhdWx0OwogCiAgICAgRmFsbHRocm91Z2goY29uc3QgRmFsbHRocm91
Z2gmKSA9IGRlbGV0ZTsKICAgICBGYWxsdGhyb3VnaChGYWxsdGhyb3VnaCYmKSA9IGRlZmF1bHQ7
CiAKLSAgICBib29sIGlzRmFsbHRocm91Z2goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9Ci0KIHByaXZhdGU6CiB9OwogCkBAIC02MSw2ICs1OSw4IEBAIHByaXZhdGU6CiAKIH0KIAor
REVGSU5FX0RFRkFVTFRfREVMRVRFKEZhbGx0aHJvdWdoKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX1dITFNMX1NUQVRFTUVOVChGYWxsdGhyb3VnaCwgaXNGYWxsdGhyb3VnaCgpKQogCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZs
b2F0TGl0ZXJhbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbC5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWwuaAko
d29ya2luZyBjb3B5KQpAQCAtMzcsMTcgKzM3LDE3IEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5h
bWVzcGFjZSBBU1QgewogCi1jbGFzcyBGbG9hdExpdGVyYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7
CitjbGFzcyBGbG9hdExpdGVyYWwgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRmxvYXRMaXRlcmFsKENvZGVMb2Nh
dGlvbiBsb2NhdGlvbiwgZmxvYXQgdmFsdWUpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlv
bikKKyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpGbG9hdExpdGVyYWwpCiAg
ICAgICAgICwgbV90eXBlKGxvY2F0aW9uLCB2YWx1ZSkKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVl
KQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5GbG9hdExpdGVyYWwoKSA9IGRlZmF1bHQ7
CisgICAgfkZsb2F0TGl0ZXJhbCgpID0gZGVmYXVsdDsKIAogICAgIEZsb2F0TGl0ZXJhbChjb25z
dCBGbG9hdExpdGVyYWwmKSA9IGRlbGV0ZTsKICAgICBGbG9hdExpdGVyYWwoRmxvYXRMaXRlcmFs
JiYpID0gZGVmYXVsdDsKQEAgLTU4LDggKzU4LDYgQEAgcHVibGljOgogICAgIEZsb2F0TGl0ZXJh
bFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0KICAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAotICAgIGJvb2wgaXNGbG9hdExpdGVyYWwoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBGbG9hdExpdGVyYWwgY2xvbmUoKSBjb25z
dAogICAgIHsKICAgICAgICAgRmxvYXRMaXRlcmFsIHJlc3VsdChjb2RlTG9jYXRpb24oKSwgbV92
YWx1ZSk7CkBAIC04MSw2ICs3OSw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRf
REVMRVRFKEZsb2F0TGl0ZXJhbCkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBS
RVNTSU9OKEZsb2F0TGl0ZXJhbCwgaXNGbG9hdExpdGVyYWwoKSkKIAogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWxU
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDE3ICszOSwxMiBAQCBuYW1lc3BhY2UgV0hMU0wg
ewogbmFtZXNwYWNlIEFTVCB7CiAKIEZsb2F0TGl0ZXJhbFR5cGU6OkZsb2F0TGl0ZXJhbFR5cGUo
Q29kZUxvY2F0aW9uIGxvY2F0aW9uLCBmbG9hdCB2YWx1ZSkKLSAgICA6IG1fdmFsdWUodmFsdWUp
CisgICAgOiBSZXNvbHZhYmxlVHlwZShLaW5kOjpGbG9hdExpdGVyYWwpCisgICAgLCBtX3ZhbHVl
KHZhbHVlKQogICAgICwgbV9wcmVmZXJyZWRUeXBlKFR5cGVSZWZlcmVuY2U6OmNyZWF0ZShsb2Nh
dGlvbiwgImZsb2F0Il9zdHIsIFR5cGVBcmd1bWVudHMoKSkpCiB7CiB9CiAKLUZsb2F0TGl0ZXJh
bFR5cGU6On5GbG9hdExpdGVyYWxUeXBlKCkgPSBkZWZhdWx0OwotCi1GbG9hdExpdGVyYWxUeXBl
OjpGbG9hdExpdGVyYWxUeXBlKEZsb2F0TGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwotCi1GbG9h
dExpdGVyYWxUeXBlJiBGbG9hdExpdGVyYWxUeXBlOjpvcGVyYXRvcj0oRmxvYXRMaXRlcmFsVHlw
ZSYmKSA9IGRlZmF1bHQ7Ci0KIGJvb2wgRmxvYXRMaXRlcmFsVHlwZTo6Y2FuUmVzb2x2ZShjb25z
dCBUeXBlJiB0eXBlKSBjb25zdAogewogICAgIGlmICghaXM8TmFtZWRUeXBlPih0eXBlKSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0
ZXJhbFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMjcgKzQwLDI1IEBAIG5hbWVzcGFjZSBBU1Qgewog
CiBjbGFzcyBUeXBlUmVmZXJlbmNlOwogCi1jbGFzcyBGbG9hdExpdGVyYWxUeXBlIDogcHVibGlj
IFJlc29sdmFibGVUeXBlIHsKK2NsYXNzIEZsb2F0TGl0ZXJhbFR5cGUgZmluYWwgOiBwdWJsaWMg
UmVzb2x2YWJsZVR5cGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIEZsb2F0TGl0ZXJhbFR5cGUoQ29kZUxvY2F0aW9uLCBmbG9hdCB2YWx1ZSk7CiAKLSAgICB2
aXJ0dWFsIH5GbG9hdExpdGVyYWxUeXBlKCk7CisgICAgfkZsb2F0TGl0ZXJhbFR5cGUoKSA9IGRl
ZmF1bHQ7CiAKICAgICBGbG9hdExpdGVyYWxUeXBlKGNvbnN0IEZsb2F0TGl0ZXJhbFR5cGUmKSA9
IGRlbGV0ZTsKLSAgICBGbG9hdExpdGVyYWxUeXBlKEZsb2F0TGl0ZXJhbFR5cGUmJik7CisgICAg
RmxvYXRMaXRlcmFsVHlwZShGbG9hdExpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKIAogICAgIEZs
b2F0TGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShjb25zdCBGbG9hdExpdGVyYWxUeXBlJikgPSBkZWxl
dGU7Ci0gICAgRmxvYXRMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KEZsb2F0TGl0ZXJhbFR5cGUmJik7
Ci0KLSAgICBib29sIGlzRmxvYXRMaXRlcmFsVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KKyAgICBGbG9hdExpdGVyYWxUeXBlJiBvcGVyYXRvcj0oRmxvYXRMaXRlcmFsVHlw
ZSYmKSA9IGRlZmF1bHQ7CiAKICAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFs
dWU7IH0KIAogICAgIFR5cGVSZWZlcmVuY2UmIHByZWZlcnJlZFR5cGUoKSB7IHJldHVybiBtX3By
ZWZlcnJlZFR5cGU7IH0KIAotICAgIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBUeXBlJikgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUm
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNhblJlc29sdmUoY29uc3QgVHlwZSYpIGNvbnN0
OworICAgIHVuc2lnbmVkIGNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFtZWRUeXBlJikgY29uc3Q7
CiAKICAgICBGbG9hdExpdGVyYWxUeXBlIGNsb25lKCkgY29uc3Q7CiAKQEAgLTc3LDYgKzc1LDgg
QEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoRmxvYXRMaXRlcmFsVHlw
ZSkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9SRVNPTFZBQkxFX1RZUEUoRmxvYXRM
aXRlcmFsVHlwZSwgaXNGbG9hdExpdGVyYWxUeXBlKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRm9yTG9vcC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZvckxv
b3AuaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRm9yTG9vcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMSArNDIsMTEg
QEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEZvckxvb3Ag
OiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNzIEZvckxvb3AgZmluYWwgOiBwdWJsaWMgU3RhdGVt
ZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBGb3JMb29w
KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVmFyaWFudDxVbmlxdWVSZWY8U3RhdGVtZW50PiwgVW5p
cXVlUmVmPEV4cHJlc3Npb24+PiYmIGluaXRpYWxpemF0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8RXhw
cmVzc2lvbj4mJiBjb25kaXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIGluY3Jl
bWVudCwgVW5pcXVlUmVmPFN0YXRlbWVudD4mJiBib2R5KQotICAgICAgICA6IFN0YXRlbWVudChs
b2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OkZvckxvb3ApCiAg
ICAgICAgICwgbV9pbml0aWFsaXphdGlvbihXVEZNb3ZlKGluaXRpYWxpemF0aW9uKSkKICAgICAg
ICAgLCBtX2NvbmRpdGlvbihXVEZNb3ZlKGNvbmRpdGlvbikpCiAgICAgICAgICwgbV9pbmNyZW1l
bnQoV1RGTW92ZShpbmNyZW1lbnQpKQpAQCAtNTQsMTUgKzU0LDExIEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCi0gICAgdmlydHVhbCB+Rm9yTG9vcCgpCi0gICAgewotICAgIH0KKyAgICB+Rm9y
TG9vcCgpID0gZGVmYXVsdDsKIAogICAgIEZvckxvb3AoY29uc3QgRm9yTG9vcCYpID0gZGVsZXRl
OwogICAgIEZvckxvb3AoRm9yTG9vcCYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzRm9yTG9v
cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIFZhcmlhbnQ8VW5pcXVl
UmVmPFN0YXRlbWVudD4sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4mIGluaXRpYWxpemF0aW9uKCkg
eyByZXR1cm4gbV9pbml0aWFsaXphdGlvbjsgfQogICAgIEV4cHJlc3Npb24qIGNvbmRpdGlvbigp
IHsgcmV0dXJuIG1fY29uZGl0aW9uLmdldCgpOyB9CiAgICAgRXhwcmVzc2lvbiogaW5jcmVtZW50
KCkgeyByZXR1cm4gbV9pbmNyZW1lbnQuZ2V0KCk7IH0KQEAgLTgxLDYgKzc3LDggQEAgcHJpdmF0
ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoRm9yTG9vcCkKKwogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoRm9yTG9vcCwgaXNGb3JMb29wKCkpCiAKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMR2xv
YmFsVmFyaWFibGVSZWZlcmVuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5oCShyZXZp
c2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxOSAr
MzcsMTkgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEds
b2JhbFZhcmlhYmxlUmVmZXJlbmNlIDogcHVibGljIEV4cHJlc3Npb24geworY2xhc3MgR2xvYmFs
VmFyaWFibGVSZWZlcmVuY2UgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR2xvYmFsVmFyaWFibGVSZWZlcmVuY2Uo
Q29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBiYXNlLCBTdHJ1
Y3R1cmVFbGVtZW50KiBzdHJ1Y3RGaWVsZCkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9u
KQorICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6Okdsb2JhbFZhcmlhYmxlUmVm
ZXJlbmNlKQogICAgICAgICAsIG1fYmFzZShXVEZNb3ZlKGJhc2UpKQogICAgICAgICAsIG1fc3Ry
dWN0RmllbGQoKnN0cnVjdEZpZWxkKQogICAgIHsKICAgICAgICAgQVNTRVJUKHN0cnVjdEZpZWxk
KTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5HbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSgpID0gZGVm
YXVsdDsKLSAgICBib29sIGlzR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CisgICAgfkdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKCkgPSBkZWZh
dWx0OworICAgIAogICAgIFN0cnVjdHVyZUVsZW1lbnQmIHN0cnVjdEZpZWxkKCkgeyByZXR1cm4g
bV9zdHJ1Y3RGaWVsZDsgfQogCiAgICAgRXhwcmVzc2lvbiYgYmFzZSgpIHsgcmV0dXJuIG1fYmFz
ZS5nZXQoKTsgfQpAQCAtNjUsNiArNjUsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZB
VUxUX0RFTEVURShHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSkKKwogU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19XSExTTF9FWFBSRVNTSU9OKEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLCBpc0dsb2JhbFZh
cmlhYmxlUmVmZXJlbmNlKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSWZTdGF0ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJZlN0YXRlbWVudC5oCShy
ZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xJZlN0YXRlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyNCArMzksMjIgQEAg
bmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIElmU3RhdGVtZW50
IDogcHVibGljIFN0YXRlbWVudCB7CitjbGFzcyBJZlN0YXRlbWVudCBmaW5hbCA6IHB1YmxpYyBT
dGF0ZW1lbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIElm
U3RhdGVtZW50KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYg
Y29uZGl0aW9uYWwsIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+JiYgYm9keSwgc3RkOjp1bmlxdWVfcHRy
PFN0YXRlbWVudD4mJiBlbHNlQm9keSkKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24pCisg
ICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpJZikKICAgICAgICAgLCBtX2NvbmRp
dGlvbmFsKFdURk1vdmUoY29uZGl0aW9uYWwpKQogICAgICAgICAsIG1fYm9keShXVEZNb3ZlKGJv
ZHkpKQogICAgICAgICAsIG1fZWxzZUJvZHkoV1RGTW92ZShlbHNlQm9keSkpCiAgICAgewogICAg
IH0KIAotICAgIHZpcnR1YWwgfklmU3RhdGVtZW50KCkgPSBkZWZhdWx0OworICAgIH5JZlN0YXRl
bWVudCgpID0gZGVmYXVsdDsKIAogICAgIElmU3RhdGVtZW50KGNvbnN0IElmU3RhdGVtZW50Jikg
PSBkZWxldGU7CiAgICAgSWZTdGF0ZW1lbnQoSWZTdGF0ZW1lbnQmJikgPSBkZWZhdWx0OwogCi0g
ICAgYm9vbCBpc0lmU3RhdGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQot
CiAgICAgRXhwcmVzc2lvbiYgY29uZGl0aW9uYWwoKSB7IHJldHVybiBtX2NvbmRpdGlvbmFsOyB9
CiAgICAgU3RhdGVtZW50JiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9CiAgICAgU3RhdGVtZW50
KiBlbHNlQm9keSgpIHsgcmV0dXJuIG1fZWxzZUJvZHkuZ2V0KCk7IH0KQEAgLTczLDYgKzcxLDgg
QEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoSWZTdGF0ZW1lbnQpCisK
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKElmU3RhdGVtZW50LCBpc0lm
U3RhdGVtZW50KCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMSW5kZXhFeHByZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW5kZXhFeHByZXNzaW9uLmgJ
KHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEluZGV4RXhwcmVzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwzMyArMzgs
MzEgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEluZGV4
RXhwcmVzc2lvbiA6IHB1YmxpYyBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24geworY2xhc3MgSW5k
ZXhFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgSW5kZXhFeHByZXNzaW9u
KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgYmFzZSwgVW5p
cXVlUmVmPEV4cHJlc3Npb24+JiYgaW5kZXgpCi0gICAgICAgIDogUHJvcGVydHlBY2Nlc3NFeHBy
ZXNzaW9uKGxvY2F0aW9uLCBXVEZNb3ZlKGJhc2UpKQorICAgICAgICA6IFByb3BlcnR5QWNjZXNz
RXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6SW5kZXgsIFdURk1vdmUoYmFzZSkpCiAgICAgICAg
ICwgbV9pbmRleChXVEZNb3ZlKGluZGV4KSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+
SW5kZXhFeHByZXNzaW9uKCkgPSBkZWZhdWx0OworICAgIH5JbmRleEV4cHJlc3Npb24oKSA9IGRl
ZmF1bHQ7CiAKICAgICBJbmRleEV4cHJlc3Npb24oY29uc3QgSW5kZXhFeHByZXNzaW9uJikgPSBk
ZWxldGU7CiAgICAgSW5kZXhFeHByZXNzaW9uKEluZGV4RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7
CiAKLSAgICBib29sIGlzSW5kZXhFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQotCi0gICAgU3RyaW5nIGdldHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0IG92ZXJyaWRl
CisgICAgU3RyaW5nIGdldHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gIm9wZXJhdG9yW10iX3N0cjsKICAgICB9CiAKLSAgICBTdHJpbmcgc2V0dGVyRnVuY3Rp
b25OYW1lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJpbmcgc2V0dGVyRnVuY3Rpb25OYW1lKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAib3BlcmF0b3JbXT0iX3N0cjsKICAgICB9CiAK
LSAgICBTdHJpbmcgYW5kZXJGdW5jdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZQorICAgIFN0cmlu
ZyBhbmRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gIm9wZXJh
dG9yJltdIl9zdHI7CiAgICAgfQpAQCAtODIsNiArODAsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RF
RklORV9ERUZBVUxUX0RFTEVURShJbmRleEV4cHJlc3Npb24pCisKIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfV0hMU0xfRVhQUkVTU0lPTihJbmRleEV4cHJlc3Npb24sIGlzSW5kZXhFeHByZXNzaW9u
KCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMSW50ZWdlckxpdGVyYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oCShyZXZpc2lvbiAy
NDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJ
bnRlZ2VyTGl0ZXJhbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNyArMzcsMTcgQEAgbmFtZXNw
YWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEludGVnZXJMaXRlcmFsIDog
cHVibGljIEV4cHJlc3Npb24geworY2xhc3MgSW50ZWdlckxpdGVyYWwgZmluYWwgOiBwdWJsaWMg
RXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
SW50ZWdlckxpdGVyYWwoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBpbnQgdmFsdWUpCi0gICAgICAg
IDogRXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBL
aW5kOjpJbnRlZ2VyTGl0ZXJhbCkKICAgICAgICAgLCBtX3R5cGUobG9jYXRpb24sIHZhbHVlKQog
ICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfklu
dGVnZXJMaXRlcmFsKCkgPSBkZWZhdWx0OworICAgIH5JbnRlZ2VyTGl0ZXJhbCgpID0gZGVmYXVs
dDsKIAogICAgIEludGVnZXJMaXRlcmFsKGNvbnN0IEludGVnZXJMaXRlcmFsJikgPSBkZWxldGU7
CiAgICAgSW50ZWdlckxpdGVyYWwoSW50ZWdlckxpdGVyYWwmJikgPSBkZWZhdWx0OwpAQCAtNTgs
OCArNTgsNiBAQCBwdWJsaWM6CiAgICAgSW50ZWdlckxpdGVyYWxUeXBlJiB0eXBlKCkgeyByZXR1
cm4gbV90eXBlOyB9CiAgICAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQog
Ci0gICAgYm9vbCBpc0ludGVnZXJMaXRlcmFsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQotCiAgICAgSW50ZWdlckxpdGVyYWwgY2xvbmUoKSBjb25zdAogICAgIHsKICAgICAgICAg
SW50ZWdlckxpdGVyYWwgcmVzdWx0KGNvZGVMb2NhdGlvbigpLCBtX3ZhbHVlKTsKQEAgLTgzLDYg
KzgxLDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoSW50ZWdlckxp
dGVyYWwpCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihJbnRlZ2Vy
TGl0ZXJhbCwgaXNJbnRlZ2VyTGl0ZXJhbCgpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTcgKzQwLDEyIEBAIG5hbWVzcGFjZSBXSExTTCB7CiBu
YW1lc3BhY2UgQVNUIHsKIAogSW50ZWdlckxpdGVyYWxUeXBlOjpJbnRlZ2VyTGl0ZXJhbFR5cGUo
Q29kZUxvY2F0aW9uIGxvY2F0aW9uLCBpbnQgdmFsdWUpCi0gICAgOiBtX3ZhbHVlKHZhbHVlKQor
ICAgIDogUmVzb2x2YWJsZVR5cGUoS2luZDo6SW50ZWdlckxpdGVyYWwpCisgICAgLCBtX3ZhbHVl
KHZhbHVlKQogICAgICwgbV9wcmVmZXJyZWRUeXBlKFR5cGVSZWZlcmVuY2U6OmNyZWF0ZShsb2Nh
dGlvbiwgImludCJfc3RyLCBUeXBlQXJndW1lbnRzKCkpKQogewogfQogCi1JbnRlZ2VyTGl0ZXJh
bFR5cGU6On5JbnRlZ2VyTGl0ZXJhbFR5cGUoKSA9IGRlZmF1bHQ7Ci0KLUludGVnZXJMaXRlcmFs
VHlwZTo6SW50ZWdlckxpdGVyYWxUeXBlKEludGVnZXJMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7
Ci0KLUludGVnZXJMaXRlcmFsVHlwZSYgSW50ZWdlckxpdGVyYWxUeXBlOjpvcGVyYXRvcj0oSW50
ZWdlckxpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKLQogYm9vbCBJbnRlZ2VyTGl0ZXJhbFR5cGU6
OmNhblJlc29sdmUoY29uc3QgVHlwZSYgdHlwZSkgY29uc3QKIHsKICAgICBpZiAoIWlzPE5hbWVk
VHlwZT4odHlwZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaAkocmV2
aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDI3ICs0MCwy
NSBAQCBuYW1lc3BhY2UgQVNUIHsKIAogY2xhc3MgVHlwZVJlZmVyZW5jZTsKIAotY2xhc3MgSW50
ZWdlckxpdGVyYWxUeXBlIDogcHVibGljIFJlc29sdmFibGVUeXBlIHsKK2NsYXNzIEludGVnZXJM
aXRlcmFsVHlwZSBmaW5hbCA6IHB1YmxpYyBSZXNvbHZhYmxlVHlwZSB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgSW50ZWdlckxpdGVyYWxUeXBlKENvZGVMb2Nh
dGlvbiwgaW50IHZhbHVlKTsKIAotICAgIHZpcnR1YWwgfkludGVnZXJMaXRlcmFsVHlwZSgpOwor
ICAgIH5JbnRlZ2VyTGl0ZXJhbFR5cGUoKSA9IGRlZmF1bHQ7CiAKICAgICBJbnRlZ2VyTGl0ZXJh
bFR5cGUoY29uc3QgSW50ZWdlckxpdGVyYWxUeXBlJikgPSBkZWxldGU7Ci0gICAgSW50ZWdlckxp
dGVyYWxUeXBlKEludGVnZXJMaXRlcmFsVHlwZSYmKTsKKyAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUo
SW50ZWdlckxpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKIAogICAgIEludGVnZXJMaXRlcmFsVHlw
ZSYgb3BlcmF0b3I9KGNvbnN0IEludGVnZXJMaXRlcmFsVHlwZSYpID0gZGVsZXRlOwotICAgIElu
dGVnZXJMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KEludGVnZXJMaXRlcmFsVHlwZSYmKTsKLQotICAg
IGJvb2wgaXNJbnRlZ2VyTGl0ZXJhbFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CisgICAgSW50ZWdlckxpdGVyYWxUeXBlJiBvcGVyYXRvcj0oSW50ZWdlckxpdGVyYWxUeXBl
JiYpID0gZGVmYXVsdDsKIAogICAgIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7
IH0KIAogICAgIFR5cGVSZWZlcmVuY2UmIHByZWZlcnJlZFR5cGUoKSB7IHJldHVybiBtX3ByZWZl
cnJlZFR5cGU7IH0KIAotICAgIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBUeXBlJikgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGNhblJlc29sdmUoY29uc3QgVHlwZSYpIGNvbnN0Owor
ICAgIHVuc2lnbmVkIGNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFtZWRUeXBlJikgY29uc3Q7CiAK
ICAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUgY2xvbmUoKSBjb25zdDsKIApAQCAtNzcsNiArNzUsOCBA
QCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShJbnRlZ2VyTGl0ZXJhbFR5
cGUpCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfUkVTT0xWQUJMRV9UWVBFKEludGVn
ZXJMaXRlcmFsVHlwZSwgaXNJbnRlZ2VyTGl0ZXJhbFR5cGUoKSkKIAogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsRXhwcmVz
c2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTExvZ2ljYWxFeHByZXNzaW9uLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxFeHByZXNzaW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAog
bmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIExvZ2ljYWxFeHByZXNzaW9uIDogcHVibGljIEV4cHJl
c3Npb24geworY2xhc3MgTG9naWNhbEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lv
biB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFz
cyBUeXBlIDogdWludDhfdCB7CkBAIC00NiwyMiArNDYsMjAgQEAgcHVibGljOgogICAgIH07CiAK
ICAgICBMb2dpY2FsRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFR5cGUgdHlwZSwg
VW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgbGVmdCwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgcmln
aHQpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9u
KGxvY2F0aW9uLCBLaW5kOjpMb2dpY2FsKQogICAgICAgICAsIG1fdHlwZSh0eXBlKQogICAgICAg
ICAsIG1fbGVmdChXVEZNb3ZlKGxlZnQpKQogICAgICAgICAsIG1fcmlnaHQoV1RGTW92ZShyaWdo
dCkpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfkxvZ2ljYWxFeHByZXNzaW9uKCkgPSBk
ZWZhdWx0OworICAgIH5Mb2dpY2FsRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKIAogICAgIExvZ2lj
YWxFeHByZXNzaW9uKGNvbnN0IExvZ2ljYWxFeHByZXNzaW9uJikgPSBkZWxldGU7CiAgICAgTG9n
aWNhbEV4cHJlc3Npb24oTG9naWNhbEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwogCiAgICAgVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKLSAgICBib29sIGlzTG9naWNhbEV4
cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNz
aW9uJiBsZWZ0KCkgeyByZXR1cm4gbV9sZWZ0OyB9CiAgICAgRXhwcmVzc2lvbiYgcmlnaHQoKSB7
IHJldHVybiBtX3JpZ2h0OyB9CiAKQEAgLTc3LDYgKzc1LDggQEAgcHJpdmF0ZToKIAogfQogCitE
RUZJTkVfREVGQVVMVF9ERUxFVEUoTG9naWNhbEV4cHJlc3Npb24pCisKIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihMb2dpY2FsRXhwcmVzc2lvbiwgaXNMb2dpY2FsRXhw
cmVzc2lvbigpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5vdEV4cHJl
c3Npb24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpA
QCAtMzcsMjIgKzM3LDIwIEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1Qgewog
Ci1jbGFzcyBMb2dpY2FsTm90RXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK2NsYXNz
IExvZ2ljYWxOb3RFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIExvZ2ljYWxOb3RFeHByZXNzaW9u
KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgb3BlcmFuZCkK
LSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Npb24obG9j
YXRpb24sIEtpbmQ6OkxvZ2ljYWxOb3QpCiAgICAgICAgICwgbV9vcGVyYW5kKFdURk1vdmUob3Bl
cmFuZCkpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfkxvZ2ljYWxOb3RFeHByZXNzaW9u
KCkgPSBkZWZhdWx0OworICAgIH5Mb2dpY2FsTm90RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKIAog
ICAgIExvZ2ljYWxOb3RFeHByZXNzaW9uKGNvbnN0IExvZ2ljYWxOb3RFeHByZXNzaW9uJikgPSBk
ZWxldGU7CiAgICAgTG9naWNhbE5vdEV4cHJlc3Npb24oTG9naWNhbE5vdEV4cHJlc3Npb24mJikg
PSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc0xvZ2ljYWxOb3RFeHByZXNzaW9uKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgRXhwcmVzc2lvbiYgb3BlcmFuZCgpIHsgcmV0
dXJuIG1fb3BlcmFuZDsgfQogCiBwcml2YXRlOgpAQCAtNjUsNiArNjMsOCBAQCBwcml2YXRlOgog
CiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShMb2dpY2FsTm90RXhwcmVzc2lvbikKKwogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKExvZ2ljYWxOb3RFeHByZXNzaW9u
LCBpc0xvZ2ljYWxOb3RFeHByZXNzaW9uKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVz
c2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4NDA0
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFy
cmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyMyArMzgsMjEg
QEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIE1ha2VBcnJh
eVJlZmVyZW5jZUV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBNYWtlQXJy
YXlSZWZlcmVuY2VFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE1ha2VBcnJheVJlZmVyZW5jZUV4
cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBs
ZWZ0VmFsdWUsIEFkZHJlc3NFc2NhcGVNb2RlIGFkZHJlc3NFc2NhcGVNb2RlKQotICAgICAgICA6
IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2lu
ZDo6TWFrZUFycmF5UmVmZXJlbmNlKQogICAgICAgICAsIG1fbGVmdFZhbHVlKFdURk1vdmUobGVm
dFZhbHVlKSkKICAgICAgICAgLCBtX2FkZHJlc3NFc2NhcGVNb2RlKGFkZHJlc3NFc2NhcGVNb2Rl
KQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5NYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNz
aW9uKCkgPSBkZWZhdWx0OworICAgIH5NYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKCkgPSBk
ZWZhdWx0OwogCiAgICAgTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbihjb25zdCBNYWtlQXJy
YXlSZWZlcmVuY2VFeHByZXNzaW9uJikgPSBkZWxldGU7CiAgICAgTWFrZUFycmF5UmVmZXJlbmNl
RXhwcmVzc2lvbihNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKIAot
ICAgIGJvb2wgaXNNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgRXhwcmVzc2lvbiYgbGVmdFZhbHVlKCkgeyByZXR1cm4g
bV9sZWZ0VmFsdWU7IH0KIAogICAgIGJvb2wgbWlnaHRFc2NhcGUoKSBjb25zdCB7IHJldHVybiBt
X2FkZHJlc3NFc2NhcGVNb2RlID09IEFkZHJlc3NFc2NhcGVNb2RlOjpFc2NhcGVzOyB9CkBAIC03
MCw2ICs2OCw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKE1ha2VB
cnJheVJlZmVyZW5jZUV4cHJlc3Npb24pCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xf
RVhQUkVTU0lPTihNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLCBpc01ha2VBcnJheVJlZmVy
ZW5jZUV4cHJlc3Npb24oKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlUG9p
bnRlckV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDIzICszOCwyMSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3Bh
Y2UgQVNUIHsKIAotY2xhc3MgTWFrZVBvaW50ZXJFeHByZXNzaW9uIDogcHVibGljIEV4cHJlc3Np
b24geworY2xhc3MgTWFrZVBvaW50ZXJFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIEV4cHJlc3Np
b24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE1ha2VQb2lu
dGVyRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9u
PiYmIGxlZnRWYWx1ZSwgQWRkcmVzc0VzY2FwZU1vZGUgYWRkcmVzc0VzY2FwZU1vZGUpCi0gICAg
ICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9u
LCBLaW5kOjpNYWtlUG9pbnRlcikKICAgICAgICAgLCBtX2xlZnRWYWx1ZShXVEZNb3ZlKGxlZnRW
YWx1ZSkpCiAgICAgICAgICwgbV9hZGRyZXNzRXNjYXBlTW9kZShhZGRyZXNzRXNjYXBlTW9kZSkK
ICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+TWFrZVBvaW50ZXJFeHByZXNzaW9uKCkgPSBk
ZWZhdWx0OworICAgIH5NYWtlUG9pbnRlckV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CiAKICAgICBN
YWtlUG9pbnRlckV4cHJlc3Npb24oY29uc3QgTWFrZVBvaW50ZXJFeHByZXNzaW9uJikgPSBkZWxl
dGU7CiAgICAgTWFrZVBvaW50ZXJFeHByZXNzaW9uKE1ha2VQb2ludGVyRXhwcmVzc2lvbiYmKSA9
IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzTWFrZVBvaW50ZXJFeHByZXNzaW9uKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgRXhwcmVzc2lvbiYgbGVmdFZhbHVlKCkgeyBy
ZXR1cm4gbV9sZWZ0VmFsdWU7IH0KIAogICAgIGJvb2wgbWlnaHRFc2NhcGUoKSBjb25zdCB7IHJl
dHVybiBtX2FkZHJlc3NFc2NhcGVNb2RlID09IEFkZHJlc3NFc2NhcGVNb2RlOjpFc2NhcGVzOyB9
CkBAIC03MCw2ICs2OCw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRF
KE1ha2VQb2ludGVyRXhwcmVzc2lvbikKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9F
WFBSRVNTSU9OKE1ha2VQb2ludGVyRXhwcmVzc2lvbiwgaXNNYWtlUG9pbnRlckV4cHJlc3Npb24o
KSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xOYW1lZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYW1lZFR5cGUuaAkocmV2aXNpb24gMjQ4NDA0KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmFtZWRUeXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDM0ICs0MCwzMSBAQCBuYW1lc3BhY2UgQVNUIHsKIAogY2xh
c3MgTmFtZWRUeXBlIDogcHVibGljIFR5cGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworCitwcm90ZWN0ZWQ6CisgICAgfk5hbWVkVHlwZSgpID0gZGVmYXVsdDsKKwogcHVibGljOgot
ICAgIE5hbWVkVHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmluZyYmIG5hbWUpCi0gICAg
ICAgIDogbV9jb2RlTG9jYXRpb24obG9jYXRpb24pCisgICAgTmFtZWRUeXBlKEtpbmQga2luZCwg
Q29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1lKQorICAgICAgICA6IFR5cGUoa2lu
ZCkKKyAgICAgICAgLCBtX2NvZGVMb2NhdGlvbihsb2NhdGlvbi5zdGFydE9mZnNldCgpKQogICAg
ICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IH5OYW1lZFR5cGUoKSA9IGRlZmF1bHQ7Ci0KICAgICBOYW1lZFR5cGUoY29uc3QgTmFtZWRUeXBl
JikgPSBkZWxldGU7CiAgICAgTmFtZWRUeXBlKE5hbWVkVHlwZSYmKSA9IGRlZmF1bHQ7CiAKLSAg
ICBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlTG9jYXRp
b247IH0KLSAgICB2b2lkIHVwZGF0ZUNvZGVMb2NhdGlvbihDb2RlTG9jYXRpb24gbG9jYXRpb24p
IHsgbV9jb2RlTG9jYXRpb24gPSBsb2NhdGlvbjsgfQorICAgIENvZGVMb2NhdGlvbiBjb2RlTG9j
YXRpb24oKSBjb25zdCB7IHJldHVybiBDb2RlTG9jYXRpb24obV9jb2RlTG9jYXRpb24sIG1fY29k
ZUxvY2F0aW9uKTsgfQorICAgIHZvaWQgdXBkYXRlQ29kZUxvY2F0aW9uKENvZGVMb2NhdGlvbiBs
b2NhdGlvbikgeyBtX2NvZGVMb2NhdGlvbiA9IGxvY2F0aW9uLnN0YXJ0T2Zmc2V0KCk7IH0KIAog
ICAgIFN0cmluZyYgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQogCi0gICAgYm9vbCBpc05hbWVk
VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aXNUeXBlRGVmaW5pdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzU3RydWN0dXJlRGVmaW5pdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzRW51bWVyYXRpb25EZWZpbml0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNOYXRpdmVUeXBlRGVjbGFyYXRpb24oKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotCi0gICAgdmlydHVhbCBjb25zdCBUeXBlJiB1bmlmeU5vZGUoKSBj
b25zdCB7IHJldHVybiAqdGhpczsgfQotICAgIHZpcnR1YWwgVHlwZSYgdW5pZnlOb2RlKCkgeyBy
ZXR1cm4gKnRoaXM7IH0KIAogcHJpdmF0ZToKLSAgICBDb2RlTG9jYXRpb24gbV9jb2RlTG9jYXRp
b247CisgICAgZnJpZW5kIGNsYXNzIFR5cGU7CisgICAgVHlwZSYgdW5pZnlOb2RlSW1wbCgpIHsg
cmV0dXJuICp0aGlzOyB9CisgICAgdW5zaWduZWQgbV9jb2RlTG9jYXRpb247CiAgICAgU3RyaW5n
IG1fbmFtZTsKIH07CiAKQEAgLTc3LDYgKzc0LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVf
REVGQVVMVF9ERUxFVEUoTmFtZWRUeXBlKQorCiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfV0hMU0xfTkFNRURfVFlQRShUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExTTDo6QVNUOjpUb1ZhbHVlVHlwZU5h
bWUpIFwKICAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V0hMU0w6OkFTVDo6
TmFtZWRUeXBlJiB0eXBlKSB7IHJldHVybiB0eXBlLnByZWRpY2F0ZTsgfSBcCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVjbGFy
YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlVHlwZURl
Y2xhcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDIyICs0MCwyMCBAQCBuYW1lc3BhY2Ug
V0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgTmF0aXZlVHlwZURlY2xhcmF0aW9u
IDogcHVibGljIE5hbWVkVHlwZSB7CitjbGFzcyBOYXRpdmVUeXBlRGVjbGFyYXRpb24gZmluYWwg
OiBwdWJsaWMgTmFtZWRUeXBlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBOYXRpdmVUeXBlRGVjbGFyYXRpb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJp
bmcmJiBuYW1lLCBUeXBlQXJndW1lbnRzJiYgdHlwZUFyZ3VtZW50cykKLSAgICAgICAgOiBOYW1l
ZFR5cGUobG9jYXRpb24sIFdURk1vdmUobmFtZSkpCisgICAgICAgIDogTmFtZWRUeXBlKEtpbmQ6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiwgbG9jYXRpb24sIFdURk1vdmUobmFtZSkpCiAgICAgICAg
ICwgbV90eXBlQXJndW1lbnRzKFdURk1vdmUodHlwZUFyZ3VtZW50cykpCiAgICAgewogICAgIH0K
IAotICAgIHZpcnR1YWwgfk5hdGl2ZVR5cGVEZWNsYXJhdGlvbigpID0gZGVmYXVsdDsKKyAgICB+
TmF0aXZlVHlwZURlY2xhcmF0aW9uKCkgPSBkZWZhdWx0OwogCiAgICAgTmF0aXZlVHlwZURlY2xh
cmF0aW9uKGNvbnN0IE5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYpID0gZGVsZXRlOwogICAgIE5hdGl2
ZVR5cGVEZWNsYXJhdGlvbihOYXRpdmVUeXBlRGVjbGFyYXRpb24mJikgPSBkZWZhdWx0OwogCi0g
ICAgYm9vbCBpc05hdGl2ZVR5cGVEZWNsYXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KLQogICAgIFR5cGVBcmd1bWVudHMmIHR5cGVBcmd1bWVudHMoKSB7IHJldHVybiBt
X3R5cGVBcmd1bWVudHM7IH0KIAogICAgIGJvb2wgaXNJbnQoKSBjb25zdCB7IHJldHVybiBtX2lz
SW50OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xOdWxsTGl0ZXJhbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRlcmFsLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRlcmFsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDE1ICszNywxNSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBu
YW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgTnVsbExpdGVyYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7
CitjbGFzcyBOdWxsTGl0ZXJhbCBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBOdWxsTGl0ZXJhbChDb2RlTG9jYXRp
b24gbG9jYXRpb24pCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBF
eHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpOdWxsTGl0ZXJhbCkKICAgICB7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB+TnVsbExpdGVyYWwoKSA9IGRlZmF1bHQ7CisgICAgfk51bGxMaXRlcmFsKCkg
PSBkZWZhdWx0OwogCiAgICAgTnVsbExpdGVyYWwoY29uc3QgTnVsbExpdGVyYWwmKSA9IGRlbGV0
ZTsKICAgICBOdWxsTGl0ZXJhbChOdWxsTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CkBAIC01NSw4ICs1
NSw2IEBAIHB1YmxpYzoKIAogICAgIE51bGxMaXRlcmFsVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1f
dHlwZTsgfQogCi0gICAgYm9vbCBpc051bGxMaXRlcmFsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQotCiAgICAgTnVsbExpdGVyYWwgY2xvbmUoKSBjb25zdAogICAgIHsKICAgICAg
ICAgYXV0byByZXN1bHQgPSBOdWxsTGl0ZXJhbChjb2RlTG9jYXRpb24oKSk7CkBAIC03Niw2ICs3
NCw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKE51bGxMaXRlcmFs
KQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oTnVsbExpdGVyYWws
IGlzTnVsbExpdGVyYWwoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdWxsTGl0ZXJhbFR5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdWxsTGl0ZXJhbFR5
cGUuaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMTnVsbExpdGVyYWxUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEy
ICszNiwxNCBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3Mg
TnVsbExpdGVyYWxUeXBlIDogcHVibGljIFJlc29sdmFibGVUeXBlIHsKK2NsYXNzIE51bGxMaXRl
cmFsVHlwZSBmaW5hbCA6IHB1YmxpYyBSZXNvbHZhYmxlVHlwZSB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgTnVsbExpdGVyYWxUeXBlKCkgPSBkZWZhdWx0Owor
ICAgIE51bGxMaXRlcmFsVHlwZSgpCisgICAgICAgIDogUmVzb2x2YWJsZVR5cGUoS2luZDo6TnVs
bExpdGVyYWwpCisgICAgeyB9CiAKLSAgICB2aXJ0dWFsIH5OdWxsTGl0ZXJhbFR5cGUoKSA9IGRl
ZmF1bHQ7CisgICAgfk51bGxMaXRlcmFsVHlwZSgpID0gZGVmYXVsdDsKIAogICAgIE51bGxMaXRl
cmFsVHlwZShjb25zdCBOdWxsTGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKICAgICBOdWxsTGl0ZXJh
bFR5cGUoTnVsbExpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKQEAgLTQ5LDEwICs1MSw4IEBAIHB1
YmxpYzoKICAgICBOdWxsTGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShjb25zdCBOdWxsTGl0ZXJhbFR5
cGUmKSA9IGRlbGV0ZTsKICAgICBOdWxsTGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShOdWxsTGl0ZXJh
bFR5cGUmJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc051bGxMaXRlcmFsVHlwZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQotICAgIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBU
eXBlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29uc3Qg
VW5uYW1lZFR5cGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNhblJlc29sdmUoY29uc3Qg
VHlwZSYpIGNvbnN0OworICAgIHVuc2lnbmVkIGNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFtZWRU
eXBlJikgY29uc3Q7CiAKIHByaXZhdGU6CiB9OwpAQCAtNjMsNiArNjMsOCBAQCBwcml2YXRlOgog
CiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShOdWxsTGl0ZXJhbFR5cGUpCisKIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfV0hMU0xfUkVTT0xWQUJMRV9UWVBFKE51bGxMaXRlcmFsVHlwZSwgaXNO
dWxsTGl0ZXJhbFR5cGUoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQb2ludGVyVHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFBvaW50ZXJUeXBlLmgJKHJl
dmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFBvaW50ZXJUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25j
YXRlbmF0ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00NiwxNyArNDcsMTggQEAgY2xhc3MgUG9pbnRlclR5cGUgZmluYWwgOiBw
dWJsaWMgUmVmZXJlbgogICAgIHVzaW5nIEJhc2UgPSBSZWZlcmVuY2VUeXBlOwogCiAgICAgUG9p
bnRlclR5cGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNl
LCBSZWY8VW5uYW1lZFR5cGU+IGVsZW1lbnRUeXBlKQotICAgICAgICA6IEJhc2UobG9jYXRpb24s
IGFkZHJlc3NTcGFjZSwgV1RGTW92ZShlbGVtZW50VHlwZSksIEtpbmQ6OlBvaW50ZXJUeXBlKQor
ICAgICAgICA6IEJhc2UobG9jYXRpb24sIGFkZHJlc3NTcGFjZSwgV1RGTW92ZShlbGVtZW50VHlw
ZSksIEtpbmQ6OlBvaW50ZXIpCiAgICAgewogICAgIH0KIAogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8UG9pbnRlclR5cGU+IGNyZWF0ZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIEFkZHJlc3NTcGFj
ZSBhZGRyZXNzU3BhY2UsIFJlZjxVbm5hbWVkVHlwZT4gZWxlbWVudFR5cGUpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQb2ludGVyVHlwZShsb2NhdGlvbiwgYWRkcmVzc1Nw
YWNlLCBXVEZNb3ZlKGVsZW1lbnRUeXBlKSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGFkb3B0
UmVmKCpuZXcgUG9pbnRlclR5cGUobG9jYXRpb24sIGFkZHJlc3NTcGFjZSwgV1RGTW92ZShlbGVt
ZW50VHlwZSkpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IH5Qb2ludGVyVHlwZSgpID0gZGVmYXVsdDsKKyAgICB+UG9pbnRlclR5cGUoKSA9IGRlZmF1bHQ7
CiAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7CkBAIC02OCw3ICs3MCw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGFkZHJlc3NTcGFjZSgpID09IG90aGVyLmFkZHJlc3NTcGFj
ZSgpICYmIGVsZW1lbnRUeXBlKCkgPT0gb3RoZXIuZWxlbWVudFR5cGUoKTsKICAgICB9CiAKLSAg
ICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCBvdmVycmlkZQorICAgIFN0cmluZyB0b1N0cmluZygp
IGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhlbGVtZW50VHlwZSgpLnRv
U3RyaW5nKCksICcqJyk7CiAgICAgfQpAQCAtODAsNiArODIsOCBAQCBwdWJsaWM6CiAKIH0KIAor
REVGSU5FX0RFRkFVTFRfREVMRVRFKFBvaW50ZXJUeXBlKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX1dITFNMX1VOTkFNRURfVFlQRShQb2ludGVyVHlwZSwgaXNQb2ludGVyVHlwZSgpKQogCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5o
CShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAt
NDEsMjIgKzQxLDE4IEBAIG5hbWVzcGFjZSBBU1QgewogY2xhc3MgUHJvcGVydHlBY2Nlc3NFeHBy
ZXNzaW9uIDogcHVibGljIEV4cHJlc3Npb24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9j
YXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGJhc2UpCi0gICAgICAgIDogRXhwcmVzc2lv
bihsb2NhdGlvbikKKyAgICBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uLCBLaW5kIGtpbmQsIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGJhc2UpCisgICAgICAg
IDogRXhwcmVzc2lvbihsb2NhdGlvbiwga2luZCkKICAgICAgICAgLCBtX2Jhc2UoV1RGTW92ZShi
YXNlKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+UHJvcGVydHlBY2Nlc3NFeHByZXNz
aW9uKCkgPSBkZWZhdWx0OwotCiAgICAgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGNvbnN0IFBy
b3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYpID0gZGVsZXRlOwogICAgIFByb3BlcnR5QWNjZXNzRXhw
cmVzc2lvbihQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mJikgPSBkZWZhdWx0OwogCi0gICAgYm9v
bCBpc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KLQotICAgIHZpcnR1YWwgU3RyaW5nIGdldHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIFN0cmluZyBzZXR0ZXJGdW5jdGlvbk5hbWUoKSBjb25zdCA9IDA7Ci0g
ICAgdmlydHVhbCBTdHJpbmcgYW5kZXJGdW5jdGlvbk5hbWUoKSBjb25zdCA9IDA7CisgICAgU3Ry
aW5nIGdldHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0OworICAgIFN0cmluZyBzZXR0ZXJGdW5jdGlv
bk5hbWUoKSBjb25zdDsKKyAgICBTdHJpbmcgYW5kZXJGdW5jdGlvbk5hbWUoKSBjb25zdDsKIAog
ICAgIEZ1bmN0aW9uRGVjbGFyYXRpb24qIGdldHRlckZ1bmN0aW9uKCkgeyByZXR1cm4gbV9nZXR0
ZXJGdW5jdGlvbjsgfQogICAgIEZ1bmN0aW9uRGVjbGFyYXRpb24qIGFuZGVyRnVuY3Rpb24oKSB7
IHJldHVybiBtX2FuZGVyRnVuY3Rpb247IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9uLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Np
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNDksMTUgKzQ5LDE5IEBAIG5hbWVzcGFjZSBBU1Qgewog
ICogIDYuIEV2YWx1YXRlIG1fcmVzdWx0RXhwcmVzc2lvbgogICogIDcuIFJldHVybiB0aGUgcmVz
dWx0CiAgKi8KLWNsYXNzIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVz
c2lvbiB7CitjbGFzcyBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIEV4
cHJlc3Npb24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0
YXRpYyBVbmlxdWVSZWY8UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4gY3JlYXRlKENvZGVMb2Nh
dGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+IGxWYWx1ZSkKKyAgICBSZWFkTW9k
aWZ5V3JpdGVFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJl
c3Npb24+IGxlZnRWYWx1ZSkKKyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpS
ZWFkTW9kaWZ5V3JpdGUpCisgICAgICAgICwgbV9sZWZ0VmFsdWUoV1RGTW92ZShsZWZ0VmFsdWUp
KQorICAgICAgICAsIG1fb2xkVmFsdWUobWFrZVVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9u
Pihsb2NhdGlvbiwgUXVhbGlmaWVycygpLCBudWxscHRyLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVs
bHB0cikpCisgICAgICAgICwgbV9uZXdWYWx1ZShtYWtlVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFy
YXRpb24+KGxvY2F0aW9uLCBRdWFsaWZpZXJzKCksIG51bGxwdHIsIFN0cmluZygpLCBudWxscHRy
LCBudWxscHRyKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPFJlYWRNb2Rp
ZnlXcml0ZUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKGxWYWx1ZSkpOwogICAgIH0KIAot
ICAgIHZpcnR1YWwgflJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisKKyAg
ICB+UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKIAogICAgIFJlYWRNb2Rp
ZnlXcml0ZUV4cHJlc3Npb24oY29uc3QgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiYpID0gZGVs
ZXRlOwogICAgIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oUmVhZE1vZGlmeVdyaXRlRXhwcmVz
c2lvbiYmKSA9IGRlZmF1bHQ7CkBAIC04Miw4ICs4Niw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWVSZWY8VmFyaWFibGVSZWZlcmVuY2U+KFZhcmlhYmxlUmVmZXJlbmNlOjp3
cmFwKG1fbmV3VmFsdWUpKTsKICAgICB9CiAKLSAgICBib29sIGlzUmVhZE1vZGlmeVdyaXRlRXhw
cmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIEV4cHJlc3Np
b24mIGxlZnRWYWx1ZSgpIHsgcmV0dXJuIG1fbGVmdFZhbHVlOyB9CiAgICAgVmFyaWFibGVEZWNs
YXJhdGlvbiYgb2xkVmFsdWUoKSB7IHJldHVybiBtX29sZFZhbHVlOyB9CiAgICAgVmFyaWFibGVE
ZWNsYXJhdGlvbiYgbmV3VmFsdWUoKSB7IHJldHVybiBtX25ld1ZhbHVlOyB9CkBAIC0xMTQsMTYg
KzExNiw2IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdGVtcGxhdGU8Y2xhc3Mg
VSwgY2xhc3MuLi4gQXJncz4gZnJpZW5kIFVuaXF1ZVJlZjxVPiBXVEY6Om1ha2VVbmlxdWVSZWYo
QXJncyYmLi4uKTsKLQotICAgIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oQ29kZUxvY2F0aW9u
IGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbGVmdFZhbHVlKQotICAgICAgICA6IEV4
cHJlc3Npb24obG9jYXRpb24pCi0gICAgICAgICwgbV9sZWZ0VmFsdWUoV1RGTW92ZShsZWZ0VmFs
dWUpKQotICAgICAgICAsIG1fb2xkVmFsdWUobWFrZVVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0
aW9uPihsb2NhdGlvbiwgUXVhbGlmaWVycygpLCBudWxscHRyLCBTdHJpbmcoKSwgbnVsbHB0ciwg
bnVsbHB0cikpCi0gICAgICAgICwgbV9uZXdWYWx1ZShtYWtlVW5pcXVlUmVmPFZhcmlhYmxlRGVj
bGFyYXRpb24+KGxvY2F0aW9uLCBRdWFsaWZpZXJzKCksIG51bGxwdHIsIFN0cmluZygpLCBudWxs
cHRyLCBudWxscHRyKSkKLSAgICB7Ci0gICAgfQotCiAgICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+
IG1fbGVmdFZhbHVlOwogICAgIFVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9uPiBtX29sZFZh
bHVlOwogICAgIFVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9uPiBtX25ld1ZhbHVlOwpAQCAt
MTM3LDYgKzEyOSw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKFJl
YWRNb2RpZnlXcml0ZUV4cHJlc3Npb24pCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xf
RVhQUkVTU0lPTihSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLCBpc1JlYWRNb2RpZnlXcml0ZUV4
cHJlc3Npb24oKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xSZWZlcmVuY2VUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVmZXJlbmNlVHlwZS5oCShyZXZp
c2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xSZWZlcmVuY2VUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDEwIEBAIG5h
bWVzcGFjZSBBU1QgewogY2xhc3MgUmVmZXJlbmNlVHlwZSA6IHB1YmxpYyBVbm5hbWVkVHlwZSB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
UmVmZXJlbmNlVHlwZSk7CisKK3Byb3RlY3RlZDoKKyAgICB+UmVmZXJlbmNlVHlwZSgpID0gZGVm
YXVsdDsKKwogcHJvdGVjdGVkOgogICAgIFJlZmVyZW5jZVR5cGUoQ29kZUxvY2F0aW9uIGxvY2F0
aW9uLCBBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlLCBSZWY8VW5uYW1lZFR5cGU+IGVsZW1lbnRU
eXBlLCBLaW5kIGtpbmQpCiAgICAgICAgIDogVW5uYW1lZFR5cGUobG9jYXRpb24sIGtpbmQpCkBA
IC01MCw5ICs1NCw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgLCBtX2VsZW1lbnRUeXBlKFdURk1v
dmUoZWxlbWVudFR5cGUpKQogICAgIHsKICAgICB9Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+UmVm
ZXJlbmNlVHlwZSgpID0gZGVmYXVsdDsKIAorCitwdWJsaWM6CiAgICAgQWRkcmVzc1NwYWNlIGFk
ZHJlc3NTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWRkcmVzc1NwYWNlOyB9CiAgICAgY29uc3Qg
VW5uYW1lZFR5cGUmIGVsZW1lbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50VHlwZTsg
fQogICAgIFVubmFtZWRUeXBlJiBlbGVtZW50VHlwZSgpIHsgcmV0dXJuIG1fZWxlbWVudFR5cGU7
IH0KQEAgLTczLDYgKzc3LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxF
VEUoUmVmZXJlbmNlVHlwZSkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9VTk5BTUVE
X1RZUEUoUmVmZXJlbmNlVHlwZSwgaXNSZWZlcmVuY2VUeXBlKCkpCiAKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb2x2YWJsZVR5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xSZXNvbHZhYmxlVHlwZS5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvbHZhYmxlVHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCwxMCArNDAsMTUgQEAgbmFtZXNwYWNlIEFTVCB7CiAKIGNsYXNzIFJl
c29sdmFibGVUeXBlIDogcHVibGljIFR5cGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworCitwcm90ZWN0ZWQ6CisgICAgflJlc29sdmFibGVUeXBlKCkgPSBkZWZhdWx0OworCiBwdWJs
aWM6Ci0gICAgUmVzb2x2YWJsZVR5cGUoKSA9IGRlZmF1bHQ7CisgICAgUmVzb2x2YWJsZVR5cGUo
S2luZCBraW5kKQorICAgICAgICA6IFR5cGUoa2luZCkKKyAgICB7IH0KIAotICAgIHZpcnR1YWwg
flJlc29sdmFibGVUeXBlKCkgPSBkZWZhdWx0OwogCiAgICAgUmVzb2x2YWJsZVR5cGUoY29uc3Qg
UmVzb2x2YWJsZVR5cGUmKSA9IGRlbGV0ZTsKICAgICBSZXNvbHZhYmxlVHlwZShSZXNvbHZhYmxl
VHlwZSYmKSA9IGRlZmF1bHQ7CkBAIC01MSwxNCArNTYsOCBAQCBwdWJsaWM6CiAgICAgUmVzb2x2
YWJsZVR5cGUmIG9wZXJhdG9yPShjb25zdCBSZXNvbHZhYmxlVHlwZSYpID0gZGVsZXRlOwogICAg
IFJlc29sdmFibGVUeXBlJiBvcGVyYXRvcj0oUmVzb2x2YWJsZVR5cGUmJikgPSBkZWZhdWx0Owog
Ci0gICAgYm9vbCBpc1Jlc29sdmFibGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0Zsb2F0TGl0ZXJhbFR5cGUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0ludGVnZXJMaXRlcmFsVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTnVsbExpdGVyYWxUeXBlKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNVbnNpZ25lZEludGVn
ZXJMaXRlcmFsVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2aXJ0dWFsIGJv
b2wgY2FuUmVzb2x2ZShjb25zdCBUeXBlJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdW5zaWdu
ZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBjb25zdCA9IDA7CisgICAgYm9v
bCBjYW5SZXNvbHZlKGNvbnN0IFR5cGUmKSBjb25zdDsKKyAgICB1bnNpZ25lZCBjb252ZXJzaW9u
Q29zdChjb25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0OwogCiAgICAgY29uc3QgVW5uYW1lZFR5cGUq
IG1heWJlUmVzb2x2ZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZFR5cGUgPyAmKm1f
cmVzb2x2ZWRUeXBlIDogbnVsbHB0cjsgfQogICAgIGNvbnN0IFVubmFtZWRUeXBlJiByZXNvbHZl
ZFR5cGUoKSBjb25zdApAQCAtODksNiArODgsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9E
RUZBVUxUX0RFTEVURShSZXNvbHZhYmxlVHlwZSkKKwogI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dITFNMX1JFU09MVkFCTEVfVFlQRShUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkg
XAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExTTDo6QVNUOjpUb1Zh
bHVlVHlwZU5hbWUpIFwKICAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V0hM
U0w6OkFTVDo6UmVzb2x2YWJsZVR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGUucHJlZGljYXRlOyB9
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJl
dHVybi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFJldHVybi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaAkod29ya2luZyBjb3B5KQpAQCAt
MzksMjIgKzM5LDIwIEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1j
bGFzcyBSZXR1cm4gOiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNzIFJldHVybiBmaW5hbCA6IHB1
YmxpYyBTdGF0ZW1lbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIFJldHVybihDb2RlTG9jYXRpb24gbG9jYXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNz
aW9uPiYmIHZhbHVlKQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbikKKyAgICAgICAgOiBT
dGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OlJldHVybikKICAgICAgICAgLCBtX3ZhbHVlKFdURk1v
dmUodmFsdWUpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5SZXR1cm4oKSA9IGRlZmF1
bHQ7CisgICAgflJldHVybigpID0gZGVmYXVsdDsKIAogICAgIFJldHVybihjb25zdCBSZXR1cm4m
KSA9IGRlbGV0ZTsKICAgICBSZXR1cm4oUmV0dXJuJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wg
aXNSZXR1cm4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNz
aW9uKiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWUuZ2V0KCk7IH0KIAogcHJpdmF0ZToKQEAgLTY3
LDYgKzY1LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoUmV0dXJu
KQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChSZXR1cm4sIGlzUmV0
dXJuKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMU3RhdGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnQuY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgorCisjaWYgRU5BQkxF
KFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMQVNULmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK3ZvaWQgU3RhdGVtZW50
OjpkZXN0cm95KFN0YXRlbWVudCYgc3RhdGVtZW50KQoreworICAgIHN3aXRjaCAoc3RhdGVtZW50
LmtpbmQoKSkgeworICAgIGNhc2UgS2luZDo6QmxvY2s6CisgICAgICAgIGRlbGV0ZSAmZG93bmNh
c3Q8QVNUOjpCbG9jaz4oc3RhdGVtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5k
OjpCcmVhazoKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OkJyZWFrPihzdGF0ZW1lbnQp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6OkNvbnRpbnVlOgorICAgICAgICBkZWxl
dGUgJmRvd25jYXN0PEFTVDo6Q29udGludWU+KHN0YXRlbWVudCk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgS2luZDo6RG9XaGlsZUxvb3A6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNU
OjpEb1doaWxlTG9vcD4oc3RhdGVtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5k
OjpFZmZlY3RmdWxFeHByZXNzaW9uOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PEFTVDo6RWZm
ZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudD4oc3RhdGVtZW50KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBLaW5kOjpGYWxsdGhyb3VnaDoKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6
OkZhbGx0aHJvdWdoPihzdGF0ZW1lbnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6
OkZvckxvb3A6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpGb3JMb29wPihzdGF0ZW1l
bnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6OklmOgorICAgICAgICBkZWxldGUg
JmRvd25jYXN0PEFTVDo6SWZTdGF0ZW1lbnQ+KHN0YXRlbWVudCk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgS2luZDo6UmV0dXJuOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PEFTVDo6UmV0
dXJuPihzdGF0ZW1lbnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6OlN0YXRlbWVu
dExpc3Q6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpTdGF0ZW1lbnRMaXN0PihzdGF0
ZW1lbnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6OlN3aXRjaENhc2U6CisgICAg
ICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpTd2l0Y2hDYXNlPihzdGF0ZW1lbnQpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEtpbmQ6OlN3aXRjaDoKKyAgICAgICAgZGVsZXRlICZkb3duY2Fz
dDxBU1Q6OlN3aXRjaFN0YXRlbWVudD4oc3RhdGVtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBLaW5kOjpWYXJpYWJsZURlY2xhcmF0aW9uczoKKyAgICAgICAgZGVsZXRlICZkb3duY2Fz
dDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50PihzdGF0ZW1lbnQpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEtpbmQ6OldoaWxlTG9vcDoKKyAgICAgICAgZGVsZXRlICZkb3du
Y2FzdDxBU1Q6OldoaWxlTG9vcD4oc3RhdGVtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
fQorCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfSAvLyBuYW1lc3BhY2UgV0hMU0wKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5oCShyZXZpc2lv
biAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTdGF0ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJM
RShXRUJHUFUpCiAKICNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgorI2luY2x1ZGUgIldI
TFNMRGVmYXVsdERlbGV0ZS5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVk
ZSA8d3RmL1VuaXF1ZVJlZi5oPgogCkBAIC0zOSw0NyArNDAsNzMgQEAgbmFtZXNwYWNlIEFTVCB7
CiAKIGNsYXNzIFN0YXRlbWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisKK3By
b3RlY3RlZDoKKyAgICB+U3RhdGVtZW50KCkgPSBkZWZhdWx0OworCiBwdWJsaWM6Ci0gICAgU3Rh
dGVtZW50KENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24pCi0gICAgICAgIDogbV9jb2RlTG9jYXRp
b24oY29kZUxvY2F0aW9uKQorICAgIGVudW0gY2xhc3MgS2luZCA6IHVpbnQ4X3QgeworICAgICAg
ICBCbG9jaywKKyAgICAgICAgQnJlYWssCisgICAgICAgIENvbnRpbnVlLAorICAgICAgICBEb1do
aWxlTG9vcCwKKyAgICAgICAgRWZmZWN0ZnVsRXhwcmVzc2lvbiwKKyAgICAgICAgRmFsbHRocm91
Z2gsCisgICAgICAgIEZvckxvb3AsCisgICAgICAgIElmLAorICAgICAgICBSZXR1cm4sCisgICAg
ICAgIFN0YXRlbWVudExpc3QsCisgICAgICAgIFN3aXRjaENhc2UsCisgICAgICAgIFN3aXRjaCwK
KyAgICAgICAgVmFyaWFibGVEZWNsYXJhdGlvbnMsCisgICAgICAgIFdoaWxlTG9vcCwKKyAgICB9
OworICAgIFN0YXRlbWVudChDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uLCBLaW5kIGtpbmQpCisg
ICAgICAgIDogbV9jb2RlTG9jYXRpb24oY29kZUxvY2F0aW9uLnN0YXJ0T2Zmc2V0KCkpCisgICAg
ICAgICwgbV9raW5kKGtpbmQpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgflN0YXRlbWVu
dCgpID0gZGVmYXVsdDsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KFN0YXRlbWVudCYpOwogCiAg
ICAgU3RhdGVtZW50KGNvbnN0IFN0YXRlbWVudCYpID0gZGVsZXRlOwogICAgIFN0YXRlbWVudChT
dGF0ZW1lbnQmJikgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCBib29sIGlzQmxvY2soKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0JyZWFrKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNDb250aW51ZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRG9XaGlsZUxvb3AoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0VmZmVjdGZ1bEV4cHJlc3Npb25TdGF0
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0ZhbGx0
aHJvdWdoKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNGb3JM
b29wKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNJZlN0YXRl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzUmV0dXJu
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTdGF0ZW1lbnRM
aXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTd2l0Y2hD
YXNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTd2l0Y2hT
dGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Zh
cmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNXaGlsZUxvb3AoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAg
IEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQorCisgICAgYm9vbCBpc0Jsb2Nr
KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkJsb2NrOyB9CisgICAgYm9vbCBpc0Jy
ZWFrKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkJyZWFrOyB9CisgICAgYm9vbCBp
c0NvbnRpbnVlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkNvbnRpbnVlOyB9Cisg
ICAgYm9vbCBpc0RvV2hpbGVMb29wKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkRv
V2hpbGVMb29wOyB9CisgICAgYm9vbCBpc0VmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoKSBj
b25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6RWZmZWN0ZnVsRXhwcmVzc2lvbjsgfQorICAg
IGJvb2wgaXNGYWxsdGhyb3VnaCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpGYWxs
dGhyb3VnaDsgfQorICAgIGJvb2wgaXNGb3JMb29wKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09
IEtpbmQ6OkZvckxvb3A7IH0KKyAgICBib29sIGlzSWZTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVy
biBraW5kKCkgPT0gS2luZDo6SWY7IH0KKyAgICBib29sIGlzUmV0dXJuKCkgY29uc3QgeyByZXR1
cm4ga2luZCgpID09IEtpbmQ6OlJldHVybjsgfQorICAgIGJvb2wgaXNTdGF0ZW1lbnRMaXN0KCkg
Y29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlN0YXRlbWVudExpc3Q7IH0KKyAgICBib29s
IGlzU3dpdGNoQ2FzZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpTd2l0Y2hDYXNl
OyB9CisgICAgYm9vbCBpc1N3aXRjaFN0YXRlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9
PSBLaW5kOjpTd2l0Y2g7IH0KKyAgICBib29sIGlzVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1l
bnQoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6VmFyaWFibGVEZWNsYXJhdGlvbnM7
IH0KKyAgICBib29sIGlzV2hpbGVMb29wKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6
OldoaWxlTG9vcDsgfQogCi0gICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fY29kZUxvY2F0aW9uOyB9Ci0gICAgdm9pZCB1cGRhdGVDb2RlTG9jYXRpb24oQ29k
ZUxvY2F0aW9uIGxvY2F0aW9uKSB7IG1fY29kZUxvY2F0aW9uID0gbG9jYXRpb247IH0KKyAgICBD
b2RlTG9jYXRpb24gY29kZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gQ29kZUxvY2F0aW9uKG1f
Y29kZUxvY2F0aW9uLCBtX2NvZGVMb2NhdGlvbik7IH0KKyAgICB2b2lkIHVwZGF0ZUNvZGVMb2Nh
dGlvbihDb2RlTG9jYXRpb24gbG9jYXRpb24pIHsgbV9jb2RlTG9jYXRpb24gPSBsb2NhdGlvbi5z
dGFydE9mZnNldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgQ29kZUxvY2F0aW9uIG1fY29kZUxvY2F0
aW9uOworICAgIHVuc2lnbmVkIG1fY29kZUxvY2F0aW9uOworICAgIEtpbmQgbV9raW5kOwogfTsK
IAogdXNpbmcgU3RhdGVtZW50cyA9IFZlY3RvcjxVbmlxdWVSZWY8U3RhdGVtZW50Pj47CiAKLX0g
Ly8gbmFtZXNwYWNlIEFTVAorfQogCiB9CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKFN0
YXRlbWVudCkKKwogI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVO
VChUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19C
RUdJTihXZWJDb3JlOjpXSExTTDo6QVNUOjpUb1ZhbHVlVHlwZU5hbWUpIFwKICAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50JiBzdGF0ZW1l
bnQpIHsgcmV0dXJuIHN0YXRlbWVudC5wcmVkaWNhdGU7IH0gXApJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50TGlzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRl
bWVudExpc3QuaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCwyMSArMzgsMTkgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNs
YXNzIFN0YXRlbWVudExpc3QgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNzIFN0YXRlbWVudExp
c3QgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICB1c2luZyBCYXNlID0gU3RhdGVtZW50OwogcHVibGljOgogICAgIFN0YXRlbWVudExp
c3QoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdGF0ZW1lbnRzJiYgc3RhdGVtZW50cykKLSAgICAg
ICAgOiBCYXNlKGxvY2F0aW9uKQorICAgICAgICA6IEJhc2UobG9jYXRpb24sIEtpbmQ6OlN0YXRl
bWVudExpc3QpCiAgICAgICAgICwgbV9zdGF0ZW1lbnRzKFdURk1vdmUoc3RhdGVtZW50cykpCiAg
ICAgeyB9CiAKLSAgICB2aXJ0dWFsIH5TdGF0ZW1lbnRMaXN0KCkgPSBkZWZhdWx0OworICAgIH5T
dGF0ZW1lbnRMaXN0KCkgPSBkZWZhdWx0OwogCiAgICAgU3RhdGVtZW50cyYgc3RhdGVtZW50cygp
IHsgcmV0dXJuIG1fc3RhdGVtZW50czsgfQogCi0gICAgYm9vbCBpc1N0YXRlbWVudExpc3QoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KIHByaXZhdGU6CiAgICAgU3RhdGVtZW50
cyBtX3N0YXRlbWVudHM7CiB9OwpAQCAtNjMsNiArNjEsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RF
RklORV9ERUZBVUxUX0RFTEVURShTdGF0ZW1lbnRMaXN0KQorCiBTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX1dITFNMX1NUQVRFTUVOVChTdGF0ZW1lbnRMaXN0LCBpc1N0YXRlbWVudExpc3QoKSkKIAog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oCShyZXZpc2lv
biAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDIyICs0MCwyMCBA
QCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgU3RydWN0dXJl
RGVmaW5pdGlvbiA6IHB1YmxpYyBOYW1lZFR5cGUgeworY2xhc3MgU3RydWN0dXJlRGVmaW5pdGlv
biBmaW5hbCA6IHB1YmxpYyBOYW1lZFR5cGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIFN0cnVjdHVyZURlZmluaXRpb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9u
LCBTdHJpbmcmJiBuYW1lLCBTdHJ1Y3R1cmVFbGVtZW50cyYmIHN0cnVjdHVyZUVsZW1lbnRzKQot
ICAgICAgICA6IE5hbWVkVHlwZShsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSkKKyAgICAgICAgOiBO
YW1lZFR5cGUoS2luZDo6U3RydWN0dXJlRGVmaW5pdGlvbiwgbG9jYXRpb24sIFdURk1vdmUobmFt
ZSkpCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVFbGVtZW50cyhXVEZNb3ZlKHN0cnVjdHVyZUVsZW1l
bnRzKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+U3RydWN0dXJlRGVmaW5pdGlvbigp
ID0gZGVmYXVsdDsKKyAgICB+U3RydWN0dXJlRGVmaW5pdGlvbigpID0gZGVmYXVsdDsKIAogICAg
IFN0cnVjdHVyZURlZmluaXRpb24oY29uc3QgU3RydWN0dXJlRGVmaW5pdGlvbiYpID0gZGVsZXRl
OwogICAgIFN0cnVjdHVyZURlZmluaXRpb24oU3RydWN0dXJlRGVmaW5pdGlvbiYmKSA9IGRlZmF1
bHQ7CiAKLSAgICBib29sIGlzU3RydWN0dXJlRGVmaW5pdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KLQogICAgIFN0cnVjdHVyZUVsZW1lbnRzJiBzdHJ1Y3R1cmVFbGVtZW50
cygpIHsgcmV0dXJuIG1fc3RydWN0dXJlRWxlbWVudHM7IH0KICAgICBTdHJ1Y3R1cmVFbGVtZW50
KiBmaW5kKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB7CkBAIC03Nyw2ICs3NSw4IEBAIHByaXZh
dGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKFN0cnVjdHVyZURlZmluaXRpb24pCisK
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfTkFNRURfVFlQRShTdHJ1Y3R1cmVEZWZpbml0
aW9uLCBpc1N0cnVjdHVyZURlZmluaXRpb24oKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
U3RydWN0dXJlRWxlbWVudC5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFT
VCB7CiAKLWNsYXNzIFN0cnVjdHVyZUVsZW1lbnQgeworY2xhc3MgU3RydWN0dXJlRWxlbWVudCBm
aW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU3RydWN0
dXJlRWxlbWVudChDb2RlTG9jYXRpb24gbG9jYXRpb24sIFF1YWxpZmllcnMmJiBxdWFsaWZpZXJz
LCBSZWY8VW5uYW1lZFR5cGU+IHR5cGUsIFN0cmluZyYmIG5hbWUsIHN0ZDo6dW5pcXVlX3B0cjxT
ZW1hbnRpYz4mJiBzZW1hbnRpYykKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHsKICAg
ICB9CiAKLSAgICB2aXJ0dWFsIH5TdHJ1Y3R1cmVFbGVtZW50KCkgPSBkZWZhdWx0OworICAgIH5T
dHJ1Y3R1cmVFbGVtZW50KCkgPSBkZWZhdWx0OwogCiAgICAgU3RydWN0dXJlRWxlbWVudChjb25z
dCBTdHJ1Y3R1cmVFbGVtZW50JikgPSBkZWxldGU7CiAgICAgU3RydWN0dXJlRWxlbWVudChTdHJ1
Y3R1cmVFbGVtZW50JiYpID0gZGVmYXVsdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaENhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hDYXNlLmgJKHJldmlz
aW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFN3aXRjaENhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMjMgKzQwLDIxIEBAIG5hbWVz
cGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBTd2l0Y2hDYXNlIDogcHVi
bGljIFN0YXRlbWVudCB7CitjbGFzcyBTd2l0Y2hDYXNlIGZpbmFsIDogcHVibGljIFN0YXRlbWVu
dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU3dpdGNoQ2Fz
ZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIE9wdGlvbmFsPENvbnN0YW50RXhwcmVzc2lvbj4mJiB2
YWx1ZSwgQmxvY2smJiBibG9jaykKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24pCisgICAg
ICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpTd2l0Y2hDYXNlKQogICAgICAgICAsIG1f
dmFsdWUoV1RGTW92ZSh2YWx1ZSkpCiAgICAgICAgICwgbV9ibG9jayhXVEZNb3ZlKGJsb2NrKSkK
ICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+U3dpdGNoQ2FzZSgpID0gZGVmYXVsdDsKKyAg
ICB+U3dpdGNoQ2FzZSgpID0gZGVmYXVsdDsKIAogICAgIFN3aXRjaENhc2UoY29uc3QgU3dpdGNo
Q2FzZSYpID0gZGVsZXRlOwogICAgIFN3aXRjaENhc2UoU3dpdGNoQ2FzZSYmKSA9IGRlZmF1bHQ7
CiAKLSAgICBib29sIGlzU3dpdGNoQ2FzZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KLQogICAgIE9wdGlvbmFsPENvbnN0YW50RXhwcmVzc2lvbj4mIHZhbHVlKCkgeyByZXR1cm4g
bV92YWx1ZTsgfQogICAgIEJsb2NrJiBibG9jaygpIHsgcmV0dXJuIG1fYmxvY2s7IH0KIApAQCAt
NzEsNiArNjksOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShTd2l0
Y2hDYXNlKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChTd2l0Y2hD
YXNlLCBpc1N3aXRjaENhc2UoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hTdGF0
ZW1lbnQuaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoU3RhdGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDIzICszOSwyMSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xh
c3MgU3dpdGNoU3RhdGVtZW50IDogcHVibGljIFN0YXRlbWVudCB7CitjbGFzcyBTd2l0Y2hTdGF0
ZW1lbnQgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBTd2l0Y2hTdGF0ZW1lbnQoQ29kZUxvY2F0aW9uIGxvY2F0aW9u
LCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiB2YWx1ZSwgVmVjdG9yPFN3aXRjaENhc2U+JiYgc3dp
dGNoQ2FzZXMpCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uKQorICAgICAgICA6IFN0YXRl
bWVudChsb2NhdGlvbiwgS2luZDo6U3dpdGNoKQogICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2
YWx1ZSkpCiAgICAgICAgICwgbV9zd2l0Y2hDYXNlcyhXVEZNb3ZlKHN3aXRjaENhc2VzKSkKICAg
ICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+U3dpdGNoU3RhdGVtZW50KCkgPSBkZWZhdWx0Owor
ICAgIH5Td2l0Y2hTdGF0ZW1lbnQoKSA9IGRlZmF1bHQ7CiAKICAgICBTd2l0Y2hTdGF0ZW1lbnQo
Y29uc3QgU3dpdGNoU3RhdGVtZW50JikgPSBkZWxldGU7CiAgICAgU3dpdGNoU3RhdGVtZW50KFN3
aXRjaFN0YXRlbWVudCYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzU3dpdGNoU3RhdGVtZW50
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgRXhwcmVzc2lvbiYgdmFs
dWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgVmVjdG9yPFN3aXRjaENhc2U+JiBzd2l0Y2hD
YXNlcygpIHsgcmV0dXJuIG1fc3dpdGNoQ2FzZXM7IH0KIApAQCAtNzAsNiArNjgsOCBAQCBwcml2
YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShTd2l0Y2hTdGF0ZW1lbnQpCisKIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKFN3aXRjaFN0YXRlbWVudCwgaXNT
d2l0Y2hTdGF0ZW1lbnQoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFRlcm5hcnlFeHBy
ZXNzaW9uLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDI0ICszNywyMiBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAot
Y2xhc3MgVGVybmFyeUV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBUZXJu
YXJ5RXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBUZXJuYXJ5RXhwcmVzc2lvbihDb2RlTG9jYXRp
b24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIHByZWRpY2F0ZSwgVW5pcXVlUmVm
PEV4cHJlc3Npb24+JiYgYm9keUV4cHJlc3Npb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGVs
c2VFeHByZXNzaW9uKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgICAgIDog
RXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6VGVybmFyeSkKICAgICAgICAgLCBtX3ByZWRpY2F0
ZShXVEZNb3ZlKHByZWRpY2F0ZSkpCiAgICAgICAgICwgbV9ib2R5RXhwcmVzc2lvbihXVEZNb3Zl
KGJvZHlFeHByZXNzaW9uKSkKICAgICAgICAgLCBtX2Vsc2VFeHByZXNzaW9uKFdURk1vdmUoZWxz
ZUV4cHJlc3Npb24pKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5UZXJuYXJ5RXhwcmVz
c2lvbigpID0gZGVmYXVsdDsKKyAgICB+VGVybmFyeUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CiAK
ICAgICBUZXJuYXJ5RXhwcmVzc2lvbihjb25zdCBUZXJuYXJ5RXhwcmVzc2lvbiYpID0gZGVsZXRl
OwogICAgIFRlcm5hcnlFeHByZXNzaW9uKFRlcm5hcnlFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsK
IAotICAgIGJvb2wgaXNUZXJuYXJ5RXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KLQogICAgIEV4cHJlc3Npb24mIHByZWRpY2F0ZSgpIHsgcmV0dXJuIG1fcHJlZGlj
YXRlOyB9CiAgICAgRXhwcmVzc2lvbiYgYm9keUV4cHJlc3Npb24oKSB7IHJldHVybiBtX2JvZHlF
eHByZXNzaW9uOyB9CiAgICAgRXhwcmVzc2lvbiYgZWxzZUV4cHJlc3Npb24oKSB7IHJldHVybiBt
X2Vsc2VFeHByZXNzaW9uOyB9CkBAIC03MSw2ICs2OSw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVG
SU5FX0RFRkFVTFRfREVMRVRFKFRlcm5hcnlFeHByZXNzaW9uKQorCiBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dITFNMX0VYUFJFU1NJT04oVGVybmFyeUV4cHJlc3Npb24sIGlzVGVybmFyeUV4cHJl
c3Npb24oKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDE2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXSExTTFR5cGUuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNs
dWRlICJXSExTTEFTVC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExT
TCB7CisKK25hbWVzcGFjZSBBU1QgeworCit2b2lkIFR5cGU6OmRlc3Ryb3koVHlwZSYgdHlwZSkK
K3sKKyAgICBzd2l0Y2ggKHR5cGUua2luZCgpKSB7CisgICAgY2FzZSBLaW5kOjpUeXBlUmVmZXJl
bmNlOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KHR5cGUpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6OlBvaW50ZXI6CisgICAgICAgIGRlbGV0ZSAmZG93
bmNhc3Q8UG9pbnRlclR5cGU+KHR5cGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6
OkFycmF5UmVmZXJlbmNlOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PEFycmF5UmVmZXJlbmNl
VHlwZT4odHlwZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6QXJyYXk6CisgICAg
ICAgIGRlbGV0ZSAmZG93bmNhc3Q8QXJyYXlUeXBlPih0eXBlKTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIEtpbmQ6OlR5cGVEZWZpbml0aW9uOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0
PFR5cGVEZWZpbml0aW9uPih0eXBlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpT
dHJ1Y3R1cmVEZWZpbml0aW9uOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PFN0cnVjdHVyZURl
ZmluaXRpb24+KHR5cGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6OkVudW1lcmF0
aW9uRGVmaW5pdGlvbjoKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxFbnVtZXJhdGlvbkRlZmlu
aXRpb24+KHR5cGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbjoKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRp
b24+KHR5cGUpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgS2luZDo6RmxvYXRMaXRlcmFs
OgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PEZsb2F0TGl0ZXJhbFR5cGU+KHR5cGUpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6OkludGVnZXJMaXRlcmFsOgorICAgICAgICBkZWxl
dGUgJmRvd25jYXN0PEludGVnZXJMaXRlcmFsVHlwZT4odHlwZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgS2luZDo6TnVsbExpdGVyYWw6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8TnVs
bExpdGVyYWxUeXBlPih0eXBlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpVbnNp
Z25lZEludGVnZXJMaXRlcmFsOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PFVuc2lnbmVkSW50
ZWdlckxpdGVyYWxUeXBlPih0eXBlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitUeXBl
JiBUeXBlOjp1bmlmeU5vZGUoKQoreworICAgIHN3aXRjaCAoa2luZCgpKSB7CisgICAgY2FzZSBL
aW5kOjpUeXBlUmVmZXJlbmNlOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8VHlwZVJlZmVyZW5j
ZT4oKnRoaXMpLnVuaWZ5Tm9kZUltcGwoKTsKKyAgICBjYXNlIEtpbmQ6OlBvaW50ZXI6CisgICAg
ICAgIHJldHVybiBkb3duY2FzdDxQb2ludGVyVHlwZT4oKnRoaXMpLnVuaWZ5Tm9kZUltcGwoKTsK
KyAgICBjYXNlIEtpbmQ6OkFycmF5UmVmZXJlbmNlOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8
QXJyYXlSZWZlcmVuY2VUeXBlPigqdGhpcykudW5pZnlOb2RlSW1wbCgpOworICAgIGNhc2UgS2lu
ZDo6QXJyYXk6CisgICAgICAgIHJldHVybiBkb3duY2FzdDxBcnJheVR5cGU+KCp0aGlzKS51bmlm
eU5vZGVJbXBsKCk7CisKKyAgICBjYXNlIEtpbmQ6OlR5cGVEZWZpbml0aW9uOgorICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8VHlwZURlZmluaXRpb24+KCp0aGlzKS51bmlmeU5vZGVJbXBsKCk7Cisg
ICAgY2FzZSBLaW5kOjpTdHJ1Y3R1cmVEZWZpbml0aW9uOgorICAgICAgICByZXR1cm4gZG93bmNh
c3Q8U3RydWN0dXJlRGVmaW5pdGlvbj4oKnRoaXMpLnVuaWZ5Tm9kZUltcGwoKTsKKyAgICBjYXNl
IEtpbmQ6OkVudW1lcmF0aW9uRGVmaW5pdGlvbjoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEVu
dW1lcmF0aW9uRGVmaW5pdGlvbj4oKnRoaXMpLnVuaWZ5Tm9kZUltcGwoKTsKKyAgICBjYXNlIEtp
bmQ6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PE5hdGl2
ZVR5cGVEZWNsYXJhdGlvbj4oKnRoaXMpLnVuaWZ5Tm9kZUltcGwoKTsKKworICAgIGRlZmF1bHQ6
IAorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworYm9v
bCBSZXNvbHZhYmxlVHlwZTo6Y2FuUmVzb2x2ZShjb25zdCBUeXBlJiB0eXBlKSBjb25zdAorewor
ICAgIHN3aXRjaCAoa2luZCgpKSB7CisgICAgY2FzZSBLaW5kOjpGbG9hdExpdGVyYWw6CisgICAg
ICAgIHJldHVybiBkb3duY2FzdDxGbG9hdExpdGVyYWxUeXBlPigqdGhpcykuY2FuUmVzb2x2ZSh0
eXBlKTsKKyAgICBjYXNlIEtpbmQ6OkludGVnZXJMaXRlcmFsOgorICAgICAgICByZXR1cm4gZG93
bmNhc3Q8SW50ZWdlckxpdGVyYWxUeXBlPigqdGhpcykuY2FuUmVzb2x2ZSh0eXBlKTsKKyAgICBj
YXNlIEtpbmQ6Ok51bGxMaXRlcmFsOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8TnVsbExpdGVy
YWxUeXBlPigqdGhpcykuY2FuUmVzb2x2ZSh0eXBlKTsKKyAgICBjYXNlIEtpbmQ6OlVuc2lnbmVk
SW50ZWdlckxpdGVyYWw6CisgICAgICAgIHJldHVybiBkb3duY2FzdDxVbnNpZ25lZEludGVnZXJM
aXRlcmFsVHlwZT4oKnRoaXMpLmNhblJlc29sdmUodHlwZSk7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIFJl
c29sdmFibGVUeXBlOjpjb252ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYgdHlwZSkgY29u
c3QKK3sKKyAgICBzd2l0Y2ggKGtpbmQoKSkgeworICAgIGNhc2UgS2luZDo6RmxvYXRMaXRlcmFs
OgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8RmxvYXRMaXRlcmFsVHlwZT4oKnRoaXMpLmNvbnZl
cnNpb25Db3N0KHR5cGUpOworICAgIGNhc2UgS2luZDo6SW50ZWdlckxpdGVyYWw6CisgICAgICAg
IHJldHVybiBkb3duY2FzdDxJbnRlZ2VyTGl0ZXJhbFR5cGU+KCp0aGlzKS5jb252ZXJzaW9uQ29z
dCh0eXBlKTsKKyAgICBjYXNlIEtpbmQ6Ok51bGxMaXRlcmFsOgorICAgICAgICByZXR1cm4gZG93
bmNhc3Q8TnVsbExpdGVyYWxUeXBlPigqdGhpcykuY29udmVyc2lvbkNvc3QodHlwZSk7CisgICAg
Y2FzZSBLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOgorICAgICAgICByZXR1cm4gZG93bmNh
c3Q8VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU+KCp0aGlzKS5jb252ZXJzaW9uQ29zdCh0eXBl
KTsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KK30KKworU3RyaW5nIFVubmFtZWRUeXBlOjp0b1N0cmluZygpIGNvbnN0Cit7CisgICAg
c3dpdGNoIChraW5kKCkpIHsKKyAgICBjYXNlIEtpbmQ6OlR5cGVSZWZlcmVuY2U6CisgICAgICAg
IHJldHVybiBkb3duY2FzdDxUeXBlUmVmZXJlbmNlPigqdGhpcykudG9TdHJpbmcoKTsKKyAgICBj
YXNlIEtpbmQ6OlBvaW50ZXI6CisgICAgICAgIHJldHVybiBkb3duY2FzdDxQb2ludGVyVHlwZT4o
KnRoaXMpLnRvU3RyaW5nKCk7CisgICAgY2FzZSBLaW5kOjpBcnJheVJlZmVyZW5jZToKKyAgICAg
ICAgcmV0dXJuIGRvd25jYXN0PEFycmF5UmVmZXJlbmNlVHlwZT4oKnRoaXMpLnRvU3RyaW5nKCk7
CisgICAgY2FzZSBLaW5kOjpBcnJheToKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFycmF5VHlw
ZT4oKnRoaXMpLnRvU3RyaW5nKCk7CisgICAgZGVmYXVsdDogCisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCit9CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9
IC8vIG5hbWVzcGFjZSBXSExTTAorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFR5cGUuaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3
IEBACiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCisjaW5jbHVkZSAiV0hMU0xEZWZhdWx0RGVsZXRl
LmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNhc3Rz
Lmg+CiAKQEAgLTM4LDEwICszOSwzMyBAQCBuYW1lc3BhY2UgQVNUIHsKIAogY2xhc3MgVHlwZSB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgVHlwZSgpID0gZGVm
YXVsdDsKIAotICAgIHZpcnR1YWwgflR5cGUoKSA9IGRlZmF1bHQ7Citwcm90ZWN0ZWQ6CisgICAg
flR5cGUoKSA9IGRlZmF1bHQ7CisKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIEtpbmQgOiB1aW50
OF90IHsKKyAgICAgICAgLy8gVW5uYW1lZFR5cGVzCisgICAgICAgIFR5cGVSZWZlcmVuY2UsCisg
ICAgICAgIFBvaW50ZXIsCisgICAgICAgIEFycmF5UmVmZXJlbmNlLAorICAgICAgICBBcnJheSwK
KyAgICAgICAgLy8gTmFtZWRUeXBlcworICAgICAgICBUeXBlRGVmaW5pdGlvbiwKKyAgICAgICAg
U3RydWN0dXJlRGVmaW5pdGlvbiwKKyAgICAgICAgRW51bWVyYXRpb25EZWZpbml0aW9uLAorICAg
ICAgICBOYXRpdmVUeXBlRGVjbGFyYXRpb24sCisgICAgICAgIC8vIFJlc29sdmFibGVUeXBlcwor
ICAgICAgICBGbG9hdExpdGVyYWwsCisgICAgICAgIEludGVnZXJMaXRlcmFsLAorICAgICAgICBO
dWxsTGl0ZXJhbCwKKyAgICAgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCwKKyAgICB9OworCisg
ICAgVHlwZShLaW5kIGtpbmQpCisgICAgICAgIDogbV9raW5kKGtpbmQpCisgICAgeyB9CisgICAg
c3RhdGljIHZvaWQgZGVzdHJveShUeXBlJik7CiAKICAgICBleHBsaWNpdCBUeXBlKGNvbnN0IFR5
cGUmKSA9IGRlbGV0ZTsKICAgICBUeXBlKFR5cGUmJikgPSBkZWZhdWx0OwpAQCAtNDksMTEgKzcz
LDM2IEBAIHB1YmxpYzoKICAgICBUeXBlJiBvcGVyYXRvcj0oY29uc3QgVHlwZSYpID0gZGVsZXRl
OwogICAgIFR5cGUmIG9wZXJhdG9yPShUeXBlJiYpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwg
Ym9vbCBpc05hbWVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzVW5uYW1lZFR5cGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBpc1Jlc29sdmFibGVUeXBlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBLaW5k
IGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KKworICAgIGJvb2wgaXNVbm5hbWVkVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA+PSBLaW5kOjpUeXBlUmVmZXJlbmNlICYmIGtpbmQo
KSA8PSBLaW5kOjpBcnJheTsgfQorICAgIGJvb2wgaXNOYW1lZFR5cGUoKSBjb25zdCB7IHJldHVy
biBraW5kKCkgPj0gS2luZDo6VHlwZURlZmluaXRpb24gJiYga2luZCgpIDw9IEtpbmQ6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbjsgfQorICAgIGJvb2wgaXNSZXNvbHZhYmxlVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIGtpbmQoKSA+PSBLaW5kOjpGbG9hdExpdGVyYWwgJiYga2luZCgpIDw9IEtpbmQ6OlVu
c2lnbmVkSW50ZWdlckxpdGVyYWw7IH0KKworICAgIGJvb2wgaXNUeXBlUmVmZXJlbmNlKCkgY29u
c3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlR5cGVSZWZlcmVuY2U7IH0KKyAgICBib29sIGlz
UG9pbnRlclR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6UG9pbnRlcjsgfQor
ICAgIGJvb2wgaXNBcnJheVJlZmVyZW5jZVR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0g
S2luZDo6QXJyYXlSZWZlcmVuY2U7IH0KKyAgICBib29sIGlzQXJyYXlUeXBlKCkgY29uc3QgeyBy
ZXR1cm4ga2luZCgpID09IEtpbmQ6OkFycmF5OyB9CisgICAgYm9vbCBpc1JlZmVyZW5jZVR5cGUo
KSBjb25zdCB7IHJldHVybiBpc1BvaW50ZXJUeXBlKCkgfHwgaXNBcnJheVJlZmVyZW5jZVR5cGUo
KTsgfQorCisgICAgYm9vbCBpc1R5cGVEZWZpbml0aW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgp
ID09IEtpbmQ6OlR5cGVEZWZpbml0aW9uOyB9CisgICAgYm9vbCBpc1N0cnVjdHVyZURlZmluaXRp
b24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6U3RydWN0dXJlRGVmaW5pdGlvbjsg
fQorICAgIGJvb2wgaXNFbnVtZXJhdGlvbkRlZmluaXRpb24oKSBjb25zdCB7IHJldHVybiBraW5k
KCkgPT0gS2luZDo6RW51bWVyYXRpb25EZWZpbml0aW9uOyB9CisgICAgYm9vbCBpc05hdGl2ZVR5
cGVEZWNsYXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb247IH0KKworICAgIGJvb2wgaXNGbG9hdExpdGVyYWxUeXBlKCkgY29uc3QgeyBy
ZXR1cm4ga2luZCgpID09IEtpbmQ6OkZsb2F0TGl0ZXJhbDsgfQorICAgIGJvb2wgaXNJbnRlZ2Vy
TGl0ZXJhbFR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6SW50ZWdlckxpdGVy
YWw7IH0KKyAgICBib29sIGlzTnVsbExpdGVyYWxUeXBlKCkgY29uc3QgeyByZXR1cm4ga2luZCgp
ID09IEtpbmQ6Ok51bGxMaXRlcmFsOyB9CisgICAgYm9vbCBpc1Vuc2lnbmVkSW50ZWdlckxpdGVy
YWxUeXBlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlVuc2lnbmVkSW50ZWdlckxp
dGVyYWw7IH0KKworICAgIFR5cGUmIHVuaWZ5Tm9kZSgpOworICAgIGNvbnN0IFR5cGUmIHVuaWZ5
Tm9kZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxUeXBlKj4odGhp
cyktPnVuaWZ5Tm9kZSgpOworICAgIH0KIAogcHJpdmF0ZToKKyAgICBLaW5kIG1fa2luZDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIEFTVApAQCAtNjIsOSArMTExLDEyIEBAIHByaXZhdGU6CiAKIH0K
IAorREVGSU5FX0RFRkFVTFRfREVMRVRFKFR5cGUpCisKICNkZWZpbmUgU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XSExTTF9UWVBFKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCiBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldITFNMOjpBU1Q6OlRvVmFsdWVUeXBlTmFt
ZSkgXAogICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXSExTTDo6QVNUOjpU
eXBlJiB0eXBlKSB7IHJldHVybiB0eXBlLnByZWRpY2F0ZTsgfSBcCiBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0VORCgpCiAKKwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlRGVmaW5pdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVEZWZpbml0aW9uLmgJ
KHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFR5cGVEZWZpbml0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDM1ICs0MCwy
OSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgVHlwZURl
ZmluaXRpb24gOiBwdWJsaWMgTmFtZWRUeXBlIHsKK2NsYXNzIFR5cGVEZWZpbml0aW9uIGZpbmFs
IDogcHVibGljIE5hbWVkVHlwZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgVHlwZURlZmluaXRpb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBu
YW1lLCBSZWY8VW5uYW1lZFR5cGU+IHR5cGUpCi0gICAgICAgIDogTmFtZWRUeXBlKGxvY2F0aW9u
LCBXVEZNb3ZlKG5hbWUpKQorICAgICAgICA6IE5hbWVkVHlwZShLaW5kOjpUeXBlRGVmaW5pdGlv
biwgbG9jYXRpb24sIFdURk1vdmUobmFtZSkpCiAgICAgICAgICwgbV90eXBlKFdURk1vdmUodHlw
ZSkpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgflR5cGVEZWZpbml0aW9uKCkgPSBkZWZh
dWx0OworICAgIH5UeXBlRGVmaW5pdGlvbigpID0gZGVmYXVsdDsKIAogICAgIFR5cGVEZWZpbml0
aW9uKGNvbnN0IFR5cGVEZWZpbml0aW9uJikgPSBkZWxldGU7CiAgICAgVHlwZURlZmluaXRpb24o
VHlwZURlZmluaXRpb24mJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc1R5cGVEZWZpbml0aW9u
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgVW5uYW1lZFR5cGUmIHR5
cGUoKSB7IHJldHVybiBtX3R5cGU7IH0KIAotICAgIGNvbnN0IFR5cGUmIHVuaWZ5Tm9kZSgpIGNv
bnN0IG92ZXJyaWRlCi0gICAgewotICAgICAgICByZXR1cm4gbV90eXBlLT51bmlmeU5vZGUoKTsK
LSAgICB9Ci0KLSAgICBUeXBlJiB1bmlmeU5vZGUoKSBvdmVycmlkZQorcHJpdmF0ZToKKyAgICBm
cmllbmQgY2xhc3MgVHlwZTsKKyAgICBUeXBlJiB1bmlmeU5vZGVJbXBsKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBtX3R5cGUtPnVuaWZ5Tm9kZSgpOwogICAgIH0KIAotcHJpdmF0ZToKICAgICBS
ZWY8VW5uYW1lZFR5cGU+IG1fdHlwZTsKIH07CiAKQEAgLTc4LDYgKzcyLDggQEAgcHJpdmF0ZToK
IAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoVHlwZURlZmluaXRpb24pCisKIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfV0hMU0xfTkFNRURfVFlQRShUeXBlRGVmaW5pdGlvbiwgaXNUeXBlRGVm
aW5pdGlvbigpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmgJKHJldmlz
aW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFR5cGVSZWZlcmVuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqIG5ldyBUeXBlUmVmZXJlbmNlKGxvY2F0aW9u
LCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHR5cGVBcmd1bWVudHMpKSk7CiAgICAgfQogCi0gICAg
dmlydHVhbCB+VHlwZVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKKyAgICB+VHlwZVJlZmVyZW5jZSgp
ID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyBSZWY8VHlwZVJlZmVyZW5jZT4gd3JhcChDb2RlTG9j
YXRpb24sIE5hbWVkVHlwZSYgcmVzb2x2ZWRUeXBlKTsKIApAQCAtNzIsMTggKzcyLDYgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gKm1fcmVzb2x2ZWRUeXBlOwogICAgIH0KIAotICAgIGNvbnN0
IFR5cGUmIHVuaWZ5Tm9kZSgpIGNvbnN0IG92ZXJyaWRlCi0gICAgewotICAgICAgICBBU1NFUlQo
bV9yZXNvbHZlZFR5cGUpOwotICAgICAgICByZXR1cm4gbV9yZXNvbHZlZFR5cGUtPnVuaWZ5Tm9k
ZSgpOwotICAgIH0KLQotICAgIFR5cGUmIHVuaWZ5Tm9kZSgpIG92ZXJyaWRlCi0gICAgewotICAg
ICAgICBBU1NFUlQobV9yZXNvbHZlZFR5cGUpOwotICAgICAgICByZXR1cm4gbV9yZXNvbHZlZFR5
cGUtPnVuaWZ5Tm9kZSgpOwotICAgIH0KLQogICAgIHZvaWQgc2V0UmVzb2x2ZWRUeXBlKE5hbWVk
VHlwZSYgcmVzb2x2ZWRUeXBlKQogICAgIHsKICAgICAgICAgbV9yZXNvbHZlZFR5cGUgPSAmcmVz
b2x2ZWRUeXBlOwpAQCAtMTAzLDEzICs5MSwyMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAm
dW5pZnlOb2RlKCkgPT0gJm90aGVyLnVuaWZ5Tm9kZSgpOwogICAgIH0KIAotICAgIFN0cmluZyB0
b1N0cmluZygpIGNvbnN0IG92ZXJyaWRlCisgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QKICAg
ICB7CiAgICAgICAgIEFTU0VSVChtX3Jlc29sdmVkVHlwZSk7CiAgICAgICAgIHJldHVybiBtX3Jl
c29sdmVkVHlwZS0+bmFtZSgpOwogICAgIH0KIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3Mg
VHlwZTsKKyAgICBUeXBlJiB1bmlmeU5vZGVJbXBsKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X3Jlc29sdmVkVHlwZSk7CisgICAgICAgIHJldHVybiBtX3Jlc29sdmVkVHlwZS0+dW5pZnlOb2Rl
KCk7CisgICAgfQorCiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBUeXBlQXJndW1lbnRzIG1fdHlw
ZUFyZ3VtZW50czsKICAgICBOYW1lZFR5cGUqIG1fcmVzb2x2ZWRUeXBlIHsgbnVsbHB0ciB9OwpA
QCAtMTIxLDYgKzExNiw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRF
KFR5cGVSZWZlcmVuY2UpCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVU5OQU1FRF9U
WVBFKFR5cGVSZWZlcmVuY2UsIGlzVHlwZVJlZmVyZW5jZSgpKQogCiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xVbm5hbWVkVHlwZS5jcHAJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDEsMzIgKzQxLDM2IEBAIG5hbWVzcGFjZSBBU1QgewogCiB1bnNpZ25lZCBVbm5h
bWVkVHlwZTo6aGFzaCgpIGNvbnN0CiB7Ci0gICAgc3dpdGNoIChtX2tpbmQpIHsKKyAgICBzd2l0
Y2ggKGtpbmQoKSkgewogICAgIGNhc2UgS2luZDo6VHlwZVJlZmVyZW5jZToKICAgICAgICAgcmV0
dXJuIGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KCp0aGlzKS5oYXNoKCk7Ci0gICAgY2FzZSBLaW5k
OjpQb2ludGVyVHlwZToKKyAgICBjYXNlIEtpbmQ6OlBvaW50ZXI6CiAgICAgICAgIHJldHVybiBk
b3duY2FzdDxQb2ludGVyVHlwZT4oKnRoaXMpLmhhc2goKTsKLSAgICBjYXNlIEtpbmQ6OkFycmF5
UmVmZXJlbmNlVHlwZToKKyAgICBjYXNlIEtpbmQ6OkFycmF5UmVmZXJlbmNlOgogICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8QXJyYXlSZWZlcmVuY2VUeXBlPigqdGhpcykuaGFzaCgpOwotICAgIGNh
c2UgS2luZDo6QXJyYXlUeXBlOgorICAgIGNhc2UgS2luZDo6QXJyYXk6CiAgICAgICAgIHJldHVy
biBkb3duY2FzdDxBcnJheVR5cGU+KCp0aGlzKS5oYXNoKCk7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9CiAKIGJvb2wgVW5uYW1l
ZFR5cGU6Om9wZXJhdG9yPT0oY29uc3QgVW5uYW1lZFR5cGUmIG90aGVyKSBjb25zdAogewotICAg
IGlmIChvdGhlci5tX2tpbmQgIT0gbV9raW5kKQorICAgIGlmIChvdGhlci5raW5kKCkgIT0ga2lu
ZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzd2l0Y2ggKG1fa2luZCkgeworICAg
IHN3aXRjaCAoa2luZCgpKSB7CiAgICAgY2FzZSBLaW5kOjpUeXBlUmVmZXJlbmNlOgogICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8VHlwZVJlZmVyZW5jZT4oKnRoaXMpID09IGRvd25jYXN0PFR5cGVS
ZWZlcmVuY2U+KG90aGVyKTsKLSAgICBjYXNlIEtpbmQ6OlBvaW50ZXJUeXBlOgorICAgIGNhc2Ug
S2luZDo6UG9pbnRlcjoKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFBvaW50ZXJUeXBlPigqdGhp
cykgPT0gZG93bmNhc3Q8UG9pbnRlclR5cGU+KG90aGVyKTsKLSAgICBjYXNlIEtpbmQ6OkFycmF5
UmVmZXJlbmNlVHlwZToKKyAgICBjYXNlIEtpbmQ6OkFycmF5UmVmZXJlbmNlOgogICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8QXJyYXlSZWZlcmVuY2VUeXBlPigqdGhpcykgPT0gZG93bmNhc3Q8QXJy
YXlSZWZlcmVuY2VUeXBlPihvdGhlcik7Ci0gICAgY2FzZSBLaW5kOjpBcnJheVR5cGU6CisgICAg
Y2FzZSBLaW5kOjpBcnJheToKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFycmF5VHlwZT4oKnRo
aXMpID09IGRvd25jYXN0PEFycmF5VHlwZT4ob3RoZXIpOworICAgIGRlZmF1bHQ6CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVu
bmFtZWRUeXBlLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDQzICs0NSwyMyBAQCBjbGFzcyBVbm5hbWVkVHlwZSA6IHB1YmxpYyBUeXBlLCBwdWJsaWMgCiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVW5u
YW1lZFR5cGUpOwogcHVibGljOgotICAgIGVudW0gY2xhc3MgS2luZCB7Ci0gICAgICAgIFR5cGVS
ZWZlcmVuY2UsCi0gICAgICAgIFBvaW50ZXJUeXBlLAotICAgICAgICBBcnJheVJlZmVyZW5jZVR5
cGUsCi0gICAgICAgIEFycmF5VHlwZQotICAgIH07Ci0KICAgICBVbm5hbWVkVHlwZShDb2RlTG9j
YXRpb24gbG9jYXRpb24sIEtpbmQga2luZCkKLSAgICAgICAgOiBtX2NvZGVMb2NhdGlvbihsb2Nh
dGlvbikKLSAgICAgICAgLCBtX2tpbmQoa2luZCkKKyAgICAgICAgOiBUeXBlKGtpbmQpCisgICAg
ICAgICwgbV9jb2RlTG9jYXRpb24obG9jYXRpb24uc3RhcnRPZmZzZXQoKSkKICAgICB7CiAgICAg
fQogCi0gICAgdmlydHVhbCB+VW5uYW1lZFR5cGUoKSA9IGRlZmF1bHQ7Ci0KLSAgICBib29sIGlz
VW5uYW1lZFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBLaW5k
IGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KLSAgICBib29sIGlzVHlwZVJlZmVyZW5j
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpUeXBlUmVmZXJlbmNlOyB9Ci0gICAg
Ym9vbCBpc1BvaW50ZXJUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9raW5kID09IEtpbmQ6OlBvaW50
ZXJUeXBlOyB9Ci0gICAgYm9vbCBpc0FycmF5UmVmZXJlbmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fa2luZCA9PSBLaW5kOjpBcnJheVJlZmVyZW5jZVR5cGU7IH0KLSAgICBib29sIGlzQXJyYXlU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9raW5kID09IEtpbmQ6OkFycmF5VHlwZTsgfQotICAgIGJv
b2wgaXNSZWZlcmVuY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gaXNQb2ludGVyVHlwZSgpIHx8IGlz
QXJyYXlSZWZlcmVuY2VUeXBlKCk7IH0KLQotICAgIHZpcnR1YWwgY29uc3QgVHlwZSYgdW5pZnlO
b2RlKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KLSAgICB2aXJ0dWFsIFR5cGUmIHVuaWZ5Tm9k
ZSgpIHsgcmV0dXJuICp0aGlzOyB9Ci0KICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFVubmFtZWRUeXBlJikgY29uc3Q7CiAKLSAgICB2aXJ0dWFs
IFN0cmluZyB0b1N0cmluZygpIGNvbnN0ID0gMDsKKyAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25z
dDsKIAotICAgIGNvbnN0IENvZGVMb2NhdGlvbiYgY29kZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9jb2RlTG9jYXRpb247IH0KKyAgICBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gQ29kZUxvY2F0aW9uKG1fY29kZUxvY2F0aW9uLCBtX2NvZGVMb2NhdGlvbik7
IH0KIAogcHJpdmF0ZToKLSAgICBDb2RlTG9jYXRpb24gbV9jb2RlTG9jYXRpb247Ci0gICAgS2lu
ZCBtX2tpbmQ7CisgICAgZnJpZW5kIGNsYXNzIFR5cGU7CisgICAgVHlwZSYgdW5pZnlOb2RlSW1w
bCgpIHsgcmV0dXJuICp0aGlzOyB9CisgICAgdW5zaWduZWQgbV9jb2RlTG9jYXRpb247CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBBU1QKQEAgLTkwLDYgKzcwLDggQEAgcHJpdmF0ZToKIAogfQogCitE
RUZJTkVfREVGQVVMVF9ERUxFVEUoVW5uYW1lZFR5cGUpCisKICNkZWZpbmUgU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19XSExTTF9VTk5BTUVEX1RZUEUoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUp
IFwKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V0hMU0w6OkFTVDo6VG9W
YWx1ZVR5cGVOYW1lKSBcCiAgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OldI
TFNMOjpBU1Q6OlVubmFtZWRUeXBlJiB0eXBlKSB7IHJldHVybiB0eXBlLnByZWRpY2F0ZTsgfSBc
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNp
Z25lZEludGVnZXJMaXRlcmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5oCShyZXZpc2lv
biAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDE3ICszNywx
NyBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK2NsYXNzIFVuc2lnbmVkSW50
ZWdlckxpdGVyYWwgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbChDb2RlTG9j
YXRpb24gbG9jYXRpb24sIHVuc2lnbmVkIHZhbHVlKQotICAgICAgICA6IEV4cHJlc3Npb24obG9j
YXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6VW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbCkKICAgICAgICAgLCBtX3R5cGUobG9jYXRpb24sIHZhbHVlKQogICAgICAgICAs
IG1fdmFsdWUodmFsdWUpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgflVuc2lnbmVkSW50
ZWdlckxpdGVyYWwoKSA9IGRlZmF1bHQ7CisgICAgflVuc2lnbmVkSW50ZWdlckxpdGVyYWwoKSA9
IGRlZmF1bHQ7CiAKICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsKGNvbnN0IFVuc2lnbmVkSW50
ZWdlckxpdGVyYWwmKSA9IGRlbGV0ZTsKICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsKFVuc2ln
bmVkSW50ZWdlckxpdGVyYWwmJikgPSBkZWZhdWx0OwpAQCAtNTgsOCArNTgsNiBAQCBwdWJsaWM6
CiAgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX3R5cGU7
IH0KICAgICB1bnNpZ25lZCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAotICAg
IGJvb2wgaXNVbnNpZ25lZEludGVnZXJMaXRlcmFsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQotCiAgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCBjbG9uZSgpIGNvbnN0CiAgICAg
ewogICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsIHJlc3VsdChjb2RlTG9jYXRpb24oKSwg
bV92YWx1ZSk7CkBAIC04Myw2ICs4MSw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFV
TFRfREVMRVRFKFVuc2lnbmVkSW50ZWdlckxpdGVyYWwpCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfV0hMU0xfRVhQUkVTU0lPTihVbnNpZ25lZEludGVnZXJMaXRlcmFsLCBpc1Vuc2lnbmVkSW50
ZWdlckxpdGVyYWwoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRl
cmFsVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDE3ICs0MSwxMiBAQCBuYW1lc3BhY2Ug
V0hMU0wgewogbmFtZXNwYWNlIEFTVCB7CiAKIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlOjpV
bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIHVuc2lnbmVk
IHZhbHVlKQotICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICA6IFJlc29sdmFibGVUeXBlKEtpbmQ6
OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwpCisgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgICwgbV9w
cmVmZXJyZWRUeXBlKFR5cGVSZWZlcmVuY2U6OmNyZWF0ZShsb2NhdGlvbiwgInVpbnQiX3N0ciwg
VHlwZUFyZ3VtZW50cygpKSkKIHsKIH0KIAotVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU6On5V
bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSgpID0gZGVmYXVsdDsKLQotVW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbFR5cGU6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKFVuc2lnbmVkSW50ZWdlckxp
dGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKLQotVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmIFVu
c2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlOjpvcGVyYXRvcj0oVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bFR5cGUmJikgPSBkZWZhdWx0OwotCiBib29sIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlOjpj
YW5SZXNvbHZlKGNvbnN0IFR5cGUmIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFpczxOYW1lZFR5
cGU+KHR5cGUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRl
cmFsVHlwZS5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MCwyNyArNDAsMjUgQEAgbmFtZXNwYWNlIEFTVCB7CiAKIGNsYXNzIFR5cGVS
ZWZlcmVuY2U7CiAKLWNsYXNzIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlIDogcHVibGljIFJl
c29sdmFibGVUeXBlIHsKK2NsYXNzIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlIGZpbmFsIDog
cHVibGljIFJlc29sdmFibGVUeXBlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZShDb2RlTG9jYXRpb24sIHVuc2ln
bmVkIHZhbHVlKTsKIAotICAgIHZpcnR1YWwgflVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKCk7
CisgICAgflVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKCkgPSBkZWZhdWx0OwogCiAgICAgVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoY29uc3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUm
KSA9IGRlbGV0ZTsKLSAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZShVbnNpZ25lZEludGVn
ZXJMaXRlcmFsVHlwZSYmKTsKKyAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZShVbnNpZ25l
ZEludGVnZXJMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7CiAKICAgICBVbnNpZ25lZEludGVnZXJM
aXRlcmFsVHlwZSYgb3BlcmF0b3I9KGNvbnN0IFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJikg
PSBkZWxldGU7Ci0gICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShVbnNp
Z25lZEludGVnZXJMaXRlcmFsVHlwZSYmKTsKLQotICAgIGJvb2wgaXNVbnNpZ25lZEludGVnZXJM
aXRlcmFsVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBVbnNpZ25l
ZEludGVnZXJMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBl
JiYpID0gZGVmYXVsdDsKIAogICAgIHVuc2lnbmVkIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92
YWx1ZTsgfQogCiAgICAgVHlwZVJlZmVyZW5jZSYgcHJlZmVycmVkVHlwZSgpIHsgcmV0dXJuIG1f
cHJlZmVycmVkVHlwZTsgfQogCi0gICAgYm9vbCBjYW5SZXNvbHZlKGNvbnN0IFR5cGUmKSBjb25z
dCBvdmVycmlkZTsKLSAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVkVHlw
ZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBUeXBlJikgY29u
c3Q7CisgICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBjb25z
dDsKIAogICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlIGNsb25lKCkgY29uc3Q7CiAKQEAg
LTc3LDYgKzc1LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUpCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xf
UkVTT0xWQUJMRV9UWVBFKFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLCBpc1Vuc2lnbmVkSW50
ZWdlckxpdGVyYWxUeXBlKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xh
cmF0aW9uc1N0YXRlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyMiArMzksMjAgQEAgbmFt
ZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIFZhcmlhYmxlRGVjbGFy
YXRpb25zU3RhdGVtZW50IDogcHVibGljIFN0YXRlbWVudCB7CitjbGFzcyBWYXJpYWJsZURlY2xh
cmF0aW9uc1N0YXRlbWVudCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVt
ZW50KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVmFyaWFibGVEZWNsYXJhdGlvbnMmJiB2YXJpYWJs
ZURlY2xhcmF0aW9ucykKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24pCisgICAgICAgIDog
U3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpWYXJpYWJsZURlY2xhcmF0aW9ucykKICAgICAgICAg
LCBtX3ZhcmlhYmxlRGVjbGFyYXRpb25zKFdURk1vdmUodmFyaWFibGVEZWNsYXJhdGlvbnMpKQog
ICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5WYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVu
dCgpID0gZGVmYXVsdDsKKyAgICB+VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoKSA9IGRl
ZmF1bHQ7CiAKICAgICBWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudChjb25zdCBWYXJpYWJs
ZURlY2xhcmF0aW9uc1N0YXRlbWVudCYpID0gZGVsZXRlOwogICAgIFZhcmlhYmxlRGVjbGFyYXRp
b25zU3RhdGVtZW50KFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50JiYpID0gZGVmYXVsdDsK
IAotICAgIGJvb2wgaXNWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIFZlY3RvcjxVbmlxdWVSZWY8VmFyaWFibGVEZWNs
YXJhdGlvbj4+JiB2YXJpYWJsZURlY2xhcmF0aW9ucygpIHsgcmV0dXJuIG1fdmFyaWFibGVEZWNs
YXJhdGlvbnM7IH0KIAogcHJpdmF0ZToKQEAgLTY3LDYgKzY1LDggQEAgcHJpdmF0ZToKIAogfQog
CitERUZJTkVfREVGQVVMVF9ERUxFVEUoVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQpCisK
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKFZhcmlhYmxlRGVjbGFyYXRp
b25zU3RhdGVtZW50LCBpc1ZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KCkpCiAKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFy
aWFibGVSZWZlcmVuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oCShyZXZpc2lvbiAyNDg0MDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJs
ZVJlZmVyZW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNiArMzgsMTYgQEAgbmFtZXNwYWNl
IFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIFZhcmlhYmxlUmVmZXJlbmNlIDog
cHVibGljIEV4cHJlc3Npb24geworY2xhc3MgVmFyaWFibGVSZWZlcmVuY2UgZmluYWwgOiBwdWJs
aWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgVmFyaWFibGVSZWZlcmVuY2UoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1l
KQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihs
b2NhdGlvbiwgS2luZDo6VmFyaWFibGVSZWZlcmVuY2UpCiAgICAgICAgICwgbV9uYW1lKFdURk1v
dmUobmFtZSkpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgflZhcmlhYmxlUmVmZXJlbmNl
KCkgPSBkZWZhdWx0OworICAgIH5WYXJpYWJsZVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKIAogICAg
IFZhcmlhYmxlUmVmZXJlbmNlKGNvbnN0IFZhcmlhYmxlUmVmZXJlbmNlJikgPSBkZWxldGU7CiAg
ICAgVmFyaWFibGVSZWZlcmVuY2UoVmFyaWFibGVSZWZlcmVuY2UmJikgPSBkZWZhdWx0OwpAQCAt
NjAsOCArNjAsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0g
ICAgYm9vbCBpc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQotCiAgICAgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9CiAKICAgICBWYXJp
YWJsZURlY2xhcmF0aW9uKiB2YXJpYWJsZSgpIHsgcmV0dXJuIG1fdmFyaWFibGU7IH0KQEAgLTcz
LDcgKzcxLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFZhcmlhYmxlUmVmZXJlbmNlKENv
ZGVMb2NhdGlvbiBsb2NhdGlvbikKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAg
ICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OlZhcmlhYmxlUmVmZXJlbmNlKQogICAg
IHsKICAgICB9CiAKQEAgLTg3LDYgKzg1LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVG
QVVMVF9ERUxFVEUoVmFyaWFibGVSZWZlcmVuY2UpCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
V0hMU0xfRVhQUkVTU0lPTihWYXJpYWJsZVJlZmVyZW5jZSwgaXNWYXJpYWJsZVJlZmVyZW5jZSgp
KQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFdoaWxlTG9vcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xXaGlsZUxvb3AuaAko
d29ya2luZyBjb3B5KQpAQCAtMzgsMjMgKzM4LDIxIEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5h
bWVzcGFjZSBBU1QgewogCi1jbGFzcyBXaGlsZUxvb3AgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2Ns
YXNzIFdoaWxlTG9vcCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdoaWxlTG9vcChDb2RlTG9jYXRpb24gbG9jYXRp
b24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGNvbmRpdGlvbmFsLCBVbmlxdWVSZWY8U3RhdGVt
ZW50PiYmIGJvZHkpCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uKQorICAgICAgICA6IFN0
YXRlbWVudChsb2NhdGlvbiwgS2luZDo6V2hpbGVMb29wKQogICAgICAgICAsIG1fY29uZGl0aW9u
YWwoV1RGTW92ZShjb25kaXRpb25hbCkpCiAgICAgICAgICwgbV9ib2R5KFdURk1vdmUoYm9keSkp
CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfldoaWxlTG9vcCgpID0gZGVmYXVsdDsKKyAg
ICB+V2hpbGVMb29wKCkgPSBkZWZhdWx0OwogCiAgICAgV2hpbGVMb29wKGNvbnN0IFdoaWxlTG9v
cCYpID0gZGVsZXRlOwogICAgIFdoaWxlTG9vcChXaGlsZUxvb3AmJikgPSBkZWZhdWx0OwogCi0g
ICAgYm9vbCBpc1doaWxlTG9vcCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQog
ICAgIEV4cHJlc3Npb24mIGNvbmRpdGlvbmFsKCkgeyByZXR1cm4gbV9jb25kaXRpb25hbDsgfQog
ICAgIFN0YXRlbWVudCYgYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQogCkBAIC02OSw2ICs2Nyw4
IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKFdoaWxlTG9vcCkKKwog
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoV2hpbGVMb29wLCBpc1doaWxl
TG9vcCgpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAJKHJldmlzaW9u
IDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMVHlwZU5hbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsOSArNzIsOSBAQCBwdWJsaWM6
CiAgICAgCiAgICAgQVNUOjpVbm5hbWVkVHlwZTo6S2luZCBraW5kKCkgeyByZXR1cm4gbV9raW5k
OyB9CiAgICAgYm9vbCBpc1JlZmVyZW5jZVR5cGVOYW1lTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
a2luZCA9PSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpUeXBlUmVmZXJlbmNlOyB9Ci0gICAgYm9v
bCBpc1BvaW50ZXJUeXBlTmFtZU5vZGUoKSBjb25zdCB7IHJldHVybiBtX2tpbmQgPT0gQVNUOjpV
bm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlclR5cGU7IH0KLSAgICBib29sIGlzQXJyYXlSZWZlcmVu
Y2VUeXBlTmFtZU5vZGUoKSBjb25zdCB7IHJldHVybiBtX2tpbmQgPT0gQVNUOjpVbm5hbWVkVHlw
ZTo6S2luZDo6QXJyYXlSZWZlcmVuY2VUeXBlOyB9Ci0gICAgYm9vbCBpc0FycmF5VHlwZU5hbWVO
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9raW5kID09IEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFy
cmF5VHlwZTsgfQorICAgIGJvb2wgaXNQb2ludGVyVHlwZU5hbWVOb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9raW5kID09IEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlBvaW50ZXI7IH0KKyAgICBib29s
IGlzQXJyYXlSZWZlcmVuY2VUeXBlTmFtZU5vZGUoKSBjb25zdCB7IHJldHVybiBtX2tpbmQgPT0g
QVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2U7IH0KKyAgICBib29sIGlzQXJy
YXlUeXBlTmFtZU5vZGUoKSBjb25zdCB7IHJldHVybiBtX2tpbmQgPT0gQVNUOjpVbm5hbWVkVHlw
ZTo6S2luZDo6QXJyYXk7IH0KIAogICAgIEJhc2VUeXBlTmFtZU5vZGUqIHBhcmVudCgpIHsgcmV0
dXJuIG1fcGFyZW50OyB9CiAgICAgTWFuZ2xlZFR5cGVOYW1lIG1hbmdsZWROYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9tYW5nbGVkTmFtZTsgfQpAQCAtODksNyArODksNyBAQCBjbGFzcyBBcnJheVR5
cGVOYW1lTm9kZSBmaW5hbCA6IHB1YmxpYyBCCiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgQXJyYXlUeXBlTmFtZU5vZGUoQmFzZVR5cGVOYW1lTm9kZSogcGFyZW50
LCBNYW5nbGVkVHlwZU5hbWUmJiBtYW5nbGVkTmFtZSwgdW5zaWduZWQgbnVtRWxlbWVudHMpCi0g
ICAgICAgIDogQmFzZVR5cGVOYW1lTm9kZShwYXJlbnQsIFdURk1vdmUobWFuZ2xlZE5hbWUpLCBB
U1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVR5cGUpCisgICAgICAgIDogQmFzZVR5cGVOYW1l
Tm9kZShwYXJlbnQsIFdURk1vdmUobWFuZ2xlZE5hbWUpLCBBU1Q6OlVubmFtZWRUeXBlOjpLaW5k
OjpBcnJheSkKICAgICAgICAgLCBtX251bUVsZW1lbnRzKG51bUVsZW1lbnRzKQogICAgIHsKICAg
ICB9CkBAIC0xMDQsNyArMTA0LDcgQEAgY2xhc3MgQXJyYXlSZWZlcmVuY2VUeXBlTmFtZU5vZGUg
ZmluYWwgOgogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEFycmF5
UmVmZXJlbmNlVHlwZU5hbWVOb2RlKEJhc2VUeXBlTmFtZU5vZGUqIHBhcmVudCwgTWFuZ2xlZFR5
cGVOYW1lJiYgbWFuZ2xlZE5hbWUsIEFTVDo6QWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFjZSkKLSAg
ICAgICAgOiBCYXNlVHlwZU5hbWVOb2RlKHBhcmVudCwgV1RGTW92ZShtYW5nbGVkTmFtZSksIEFT
VDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5UmVmZXJlbmNlVHlwZSkKKyAgICAgICAgOiBCYXNl
VHlwZU5hbWVOb2RlKHBhcmVudCwgV1RGTW92ZShtYW5nbGVkTmFtZSksIEFTVDo6VW5uYW1lZFR5
cGU6OktpbmQ6OkFycmF5UmVmZXJlbmNlKQogICAgICAgICAsIG1fYWRkcmVzc1NwYWNlKGFkZHJl
c3NTcGFjZSkKICAgICB7CiAgICAgfQpAQCAtMTE5LDcgKzExOSw3IEBAIGNsYXNzIFBvaW50ZXJU
eXBlTmFtZU5vZGUgZmluYWwgOiBwdWJsaWMKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBQb2ludGVyVHlwZU5hbWVOb2RlKEJhc2VUeXBlTmFtZU5vZGUqIHBhcmVu
dCwgTWFuZ2xlZFR5cGVOYW1lJiYgbWFuZ2xlZE5hbWUsIEFTVDo6QWRkcmVzc1NwYWNlIGFkZHJl
c3NTcGFjZSkKLSAgICAgICAgOiBCYXNlVHlwZU5hbWVOb2RlKHBhcmVudCwgV1RGTW92ZShtYW5n
bGVkTmFtZSksIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlBvaW50ZXJUeXBlKQorICAgICAgICA6
IEJhc2VUeXBlTmFtZU5vZGUocGFyZW50LCBXVEZNb3ZlKG1hbmdsZWROYW1lKSwgQVNUOjpVbm5h
bWVkVHlwZTo6S2luZDo6UG9pbnRlcikKICAgICAgICAgLCBtX2FkZHJlc3NTcGFjZShhZGRyZXNz
U3BhY2UpCiAgICAgewogICAgIH0KQEAgLTI3NCwxOCArMjc0LDIwIEBAIHN0ZDo6dW5pcXVlX3B0
cjxCYXNlVHlwZU5hbWVOb2RlPiBUeXBlTmEKICAgICAgICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9
IGRvd25jYXN0PEFTVDo6VHlwZVJlZmVyZW5jZT4odW5uYW1lZFR5cGUpOwogICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSZWZlcmVuY2VUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJh
dGVOZXh0VHlwZU5hbWUoKSwgdHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7CiAgICAgfQot
ICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlclR5cGU6IHsKKyAgICBjYXNl
IEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlBvaW50ZXI6IHsKICAgICAgICAgYXV0byYgcG9pbnRl
clR5cGUgPSBkb3duY2FzdDxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVHlwZSk7CiAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBvaW50ZXJUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2Vu
ZXJhdGVOZXh0VHlwZU5hbWUoKSwgcG9pbnRlclR5cGUuYWRkcmVzc1NwYWNlKCkpOwogICAgIH0K
LSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5UmVmZXJlbmNlVHlwZTogewor
ICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2U6IHsKICAgICAg
ICAgYXV0byYgYXJyYXlSZWZlcmVuY2VUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVJlZmVyZW5j
ZVR5cGU+KHVubmFtZWRUeXBlKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXJy
YXlSZWZlcmVuY2VUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwg
YXJyYXlSZWZlcmVuY2VUeXBlLmFkZHJlc3NTcGFjZSgpKTsKICAgICB9Ci0gICAgY2FzZSBBU1Q6
OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVR5cGU6IHsKKyAgICBjYXNlIEFTVDo6VW5uYW1lZFR5
cGU6OktpbmQ6OkFycmF5OiB7CiAgICAgICAgIGF1dG8mIGFycmF5VHlwZSA9IGRvd25jYXN0PEFT
VDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSk7CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEFycmF5VHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIGFy
cmF5VHlwZS5udW1FbGVtZW50cygpKTsKICAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9CiAKQEAgLTI5NCwxMiArMjk2LDE0
IEBAIHN0YXRpYyBBU1Q6OlVubmFtZWRUeXBlKiBwYXJlbnQoQVNUOjpVbm4KICAgICBzd2l0Y2gg
KHVubmFtZWRUeXBlLmtpbmQoKSkgewogICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6
VHlwZVJlZmVyZW5jZToKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY2FzZSBBU1Q6OlVu
bmFtZWRUeXBlOjpLaW5kOjpQb2ludGVyVHlwZToKKyAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6
OktpbmQ6OlBvaW50ZXI6CiAgICAgICAgIHJldHVybiAmZG93bmNhc3Q8QVNUOjpQb2ludGVyVHlw
ZT4odW5uYW1lZFR5cGUpLmVsZW1lbnRUeXBlKCk7Ci0gICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBl
OjpLaW5kOjpBcnJheVJlZmVyZW5jZVR5cGU6CisgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpL
aW5kOjpBcnJheVJlZmVyZW5jZToKICAgICAgICAgcmV0dXJuICZkb3duY2FzdDxBU1Q6OkFycmF5
UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpLmVsZW1lbnRUeXBlKCk7Ci0gICAgY2FzZSBBU1Q6
OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVR5cGU6CisgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBl
OjpLaW5kOjpBcnJheToKICAgICAgICAgcmV0dXJuICZkb3duY2FzdDxBU1Q6OkFycmF5VHlwZT4o
dW5uYW1lZFR5cGUpLnR5cGUoKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIH0KIApAQCAtMzYxLDEzICszNjUsMTMgQEAgdm9pZCBU
eXBlTmFtZXI6OmVtaXRVbm5hbWVkVHlwZURlZmluaXRpbwogICAgICAgICBzdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKCJ0eXBlZGVmICIsIG1hbmdsZWROYW1lRm9yVHlwZShuYW1lZFR5cGUp
LCAnICcsIGJhc2VUeXBlTmFtZU5vZGUubWFuZ2xlZE5hbWUoKSwgIjtcbiIpOwogICAgICAgICBi
cmVhazsKICAgICB9Ci0gICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQb2ludGVyVHlw
ZTogeworICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlcjogewogICAgICAg
ICBhdXRvJiBwb2ludGVyVHlwZSA9IGRvd25jYXN0PFBvaW50ZXJUeXBlTmFtZU5vZGU+KGJhc2VU
eXBlTmFtZU5vZGUpOwogICAgICAgICBBU1NFUlQoYmFzZVR5cGVOYW1lTm9kZS5wYXJlbnQoKSk7
CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInR5cGVkZWYgIiwgdG9TdHJp
bmcocG9pbnRlclR5cGUuYWRkcmVzc1NwYWNlKCkpLCAnICcsIHBvaW50ZXJUeXBlLnBhcmVudCgp
LT5tYW5nbGVkTmFtZSgpLCAiKiAiLCBwb2ludGVyVHlwZS5tYW5nbGVkTmFtZSgpLCAiO1xuIik7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6
OkFycmF5UmVmZXJlbmNlVHlwZTogeworICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6
QXJyYXlSZWZlcmVuY2U6IHsKICAgICAgICAgYXV0byYgYXJyYXlSZWZlcmVuY2VUeXBlID0gZG93
bmNhc3Q8QXJyYXlSZWZlcmVuY2VUeXBlTmFtZU5vZGU+KGJhc2VUeXBlTmFtZU5vZGUpOwogICAg
ICAgICBBU1NFUlQoYmFzZVR5cGVOYW1lTm9kZS5wYXJlbnQoKSk7CiAgICAgICAgIHN0cmluZ0J1
aWxkZXIuZmxleGlibGVBcHBlbmQoCkBAIC0zNzgsMTIgKzM4MiwxNCBAQCB2b2lkIFR5cGVOYW1l
cjo6ZW1pdFVubmFtZWRUeXBlRGVmaW5pdGlvCiAgICAgICAgICk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KLSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5VHlwZTogeworICAg
IGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXk6IHsKICAgICAgICAgYXV0byYgYXJy
YXlUeXBlID0gZG93bmNhc3Q8QXJyYXlUeXBlTmFtZU5vZGU+KGJhc2VUeXBlTmFtZU5vZGUpOwog
ICAgICAgICBBU1NFUlQoYmFzZVR5cGVOYW1lTm9kZS5wYXJlbnQoKSk7CiAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInR5cGVkZWYgYXJyYXk8IiwgYXJyYXlUeXBlLnBhcmVu
dCgpLT5tYW5nbGVkTmFtZSgpLCAiLCAiLCBhcnJheVR5cGUubnVtRWxlbWVudHMoKSwgIj4gIiwg
YXJyYXlUeXBlLm1hbmdsZWROYW1lKCksICI7XG4iKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQor
ICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
fQogCiAgICAgZW1pdHRlZFVubmFtZWRUeXBlcy5hZGQoJmJhc2VUeXBlTmFtZU5vZGUpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMxLDcgKzIyMzEsNiBAQAogCQk3
QzgxMzlBODFFRDYyODc0MDBDRTI2RTggLyogSlNET01PcGVyYXRpb25SZXR1cm5pbmdQcm9taXNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzgxMzlB
NTFFRDYyODFEMDBDRTI2RTggLyogSlNET01PcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0M4MTM5QUEx
RUQ2NjA0QjAwQ0UyNkU4IC8qIEpTRE9NQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODEzOUE5MUVENjJERjIw
MENFMjZFOCAvKiBKU0RPTUNhc3RlZFRoaXNFcnJvckJlaGF2aW9yLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0M4M0RFODYxRDA0Q0M1RDAwRkVC
Q0YzIC8qIFNwcmluZ1NvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0M4M0RFODUxRDA0Q0JENDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZlci5oICov
OyB9OwotCQk3Qzg1QjIwMjIyRkIwNDg1MDAzMDY4NEYgLyogV0hMU0xVbm5hbWVkVHlwZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg1QjIwMTIy
RkIwNDg1MDAzMDY4NEYgLyogV0hMU0xVbm5hbWVkVHlwZS5jcHAgKi87IH07CiAJCTdDOEUzNEFE
MUU0QTMzQUYwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRBbnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOEUzNDkyMUU0QTMzOEUwMDU0Q0UyMyAvKiBK
U0RPTUNvbnZlcnRBbnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3QzhFMzRBRTFFNEEzM0FGMDA1NENFMjMgLyogSlNET01Db252ZXJ0QmFzZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4RTM0OTMx
RTRBMzM4RTAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzhFMzRBRjFFNEEzM0FGMDA1NENFMjMg
LyogSlNET01Db252ZXJ0Qm9vbGVhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0M4RTM0OTQxRTRBMzM4RTAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEJv
b2xlYW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtODMxNSw2ICs4MzE0LDcgQEAKIAkJNTIxMzFFNUExQzRGMTU2MTAwMzNGODAyIC8qIFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTIxNTg2MkMyMjkzNzdCNzAwNTkyNUVGIC8qIFdITFNMQVNULmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMQVNULmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUy
MkJBQjk2MjJFNkEzNjIwMEM1NENFOSAvKiBXSExTTENvZGVMb2NhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTENvZGVMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MjJEMDdBMzIyRkJBQjQzMDBCOTA1QkUgLyogV0hMU0xFeHByZXNzaW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdITFNMRXhwcmVzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUyMkRBM0QzMjI5RTFEMzkwMDQyRDE1MSAvKiBXSExTTEdsb2JhbFZhcmlhYmxlUmVmZXJl
bmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTIyRTFBMTcyMjk3RDZENDAwRTVEMzZBIC8qIFdI
TFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExT
TFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MjJFMUExOTIyOTdENkQ0MDBFNUQzNkEgLyogV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlm
ZXRpbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODMyNyw2ICs4MzI3LDcgQEAKIAkJNTJC
MEQ0QkQxQzU3RkQxRTAwNzdDRTUzIC8qIFBsYXRmb3JtVmlldy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTJCMEQ0QkYxQzU3RkQ2NjAwNzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9i
c2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvRnVsbHNjcmVl
bkNoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQjBENEMx
MUM1N0ZGOTEwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyQ0IxMURCMjJGRERCMkUwMDlGMEE2NCAv
KiBXSExTTERlZmF1bHREZWxldGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xEZWZhdWx0RGVsZXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRDVBMThEMUM1NDU5MDMwMERFMzRB
MyAvKiBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJENUExOEUxQzU0NTkwMzAwREUzNEEz
IC8qIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MkQ1QTFBNDFDNTc0ODg5MDBERTM0QTMgLyogVmlkZW9G
dWxsc2NyZWVuTW9kZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9G
dWxsc2NyZWVuTW9kZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MDgwLDYg
KzE3MDgxLDcgQEAKIAkJCQlDMjFCRjcwNjIxQ0Q4OUM3MDAyMjc5NzkgLyogV0hMU0xDb21tYUV4
cHJlc3Npb24uaCAqLywKIAkJCQlDMjFCRjczMzIxQ0Q4OUYwMDAyMjc5NzkgLyogV0hMU0xDb25z
dGFudEV4cHJlc3Npb24uaCAqLywKIAkJCQlDMjFCRjZGNTIxQ0Q4OUI1MDAyMjc5NzkgLyogV0hM
U0xDb250aW51ZS5oICovLAorCQkJCTUyQ0IxMURCMjJGRERCMkUwMDlGMEE2NCAvKiBXSExTTERl
ZmF1bHREZWxldGUuaCAqLywKIAkJCQlDMjFCRjcwMTIxQ0Q4OUM0MDAyMjc5NzkgLyogV0hMU0xE
ZXJlZmVyZW5jZUV4cHJlc3Npb24uaCAqLywKIAkJCQlDMjFCRjcxODIxQ0Q4OUQ3MDAyMjc5Nzkg
LyogV0hMU0xEb3RFeHByZXNzaW9uLmggKi8sCiAJCQkJQzIxQkY2RkIyMUNEODlCRTAwMjI3OTc5
IC8qIFdITFNMRG9XaGlsZUxvb3AuaCAqLywKQEAgLTE3MDg5LDYgKzE3MDkxLDcgQEAKIAkJCQlD
MjFCRjcyNjIxQ0Q4OUUzMDAyMjc5NzkgLyogV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oICovLAog
CQkJCUMyMUJGNzAyMjFDRDg5QzQwMDIyNzk3OSAvKiBXSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbC5oICovLAogCQkJCUMyMUJGNzBDMjFDRDg5Q0MwMDIyNzk3OSAvKiBXSExTTEV4cHJlc3Np
b24uaCAqLywKKwkJCQk1MjJEMDdBMzIyRkJBQjQzMDBCOTA1QkUgLyogV0hMU0xFeHByZXNzaW9u
LmNwcCAqLywKIAkJCQlDMjFCRjcwMDIxQ0Q4OUMyMDAyMjc5NzkgLyogV0hMU0xGYWxsdGhyb3Vn
aC5oICovLAogCQkJCUMyMUJGNzM1MjFDRDg5RjIwMDIyNzk3OSAvKiBXSExTTEZsb2F0TGl0ZXJh
bC5oICovLAogCQkJCTFDQjY5QjM4MjFERjAzRTEwMDZFODQ2QSAvKiBXSExTTEZsb2F0TGl0ZXJh
bFR5cGUuY3BwICovLApAQCAtMzM1MjQsNyArMzM1MjcsNiBAQAogCQkJCUYxMjE3MUY1MTZBOENF
RDIwMDAwNTNDQSAvKiBXZWJWVFRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVEMjFB
ODAyMTNFQ0U1REYwMEJCNzA2NCAvKiBXZWJWVFRQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjEwQjY5ODExNDBDMTc0MDAwQkMxQzI2IC8qIFdlYlZUVFRva2VuaXplci5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQk3Qzg1QjIwMjIyRkIwNDg1MDAzMDY4NEYgLyogV0hMU0xVbm5hbWVkVHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTQ4MzJDMjE4N0Y2NUM3MDBEQTYzQTYgLyogV0tV
dGlsaXRpZXMuYyBpbiBTb3VyY2VzICovLAogCQkJCUE4MzNDN0NDMEEyQ0YwNzQwMEQ1NzY2NCAv
KiBYTGlua05hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MzNDODBDMEEyQ0YyNTYwMEQ1
NzY2NCAvKiBYTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNzksNiArNzksNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdU
Rjo6UmVmQ291bnRlZDxXb3JrZXJTY3JpcHRMb2FkZXI+OworICAgIGZyaWVuZCBzdHJ1Y3Qgc3Rk
OjpkZWZhdWx0X2RlbGV0ZTxXb3JrZXJTY3JpcHRMb2FkZXI+OwogCiAgICAgV29ya2VyU2NyaXB0
TG9hZGVyKCk7CiAgICAgfldvcmtlclNjcmlwdExvYWRlcigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375930</attachid>
            <date>2019-08-09 10:19:02 -0700</date>
            <delta_ts>2019-08-09 14:08:46 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>165631</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDg0NjcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE5LTA4LTA5ICBTYWFtIEJhcmF0aSAgPHNiYXJh
dGlAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0gRGV2aXJ0dWFsaXplIHRoZSBBU1QKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDUyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgUmVmQ291
bnRlZCB1c2Ugc3RkOjpkZWZhdWx0X2RlbGV0ZSBpbnN0ZWFkIG9mIGV4cGxpY2l0bHkgY2FsbGlu
ZyBkZWxldGUuCisgICAgICAgIFRoaXMgYWxsb3dzIHVzZXMgb2YgUmVmQ291bnRlZCB0byBkZWZp
bmUgdGhlaXIgb3duIGN1c3RvbSBkZWxldGVyLgorCisgICAgICAgICogd3RmL1JlZkNvdW50ZWQu
aDoKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZDo6ZGVyZWYgY29uc3QpOgorICAgICAgICAqIHd0
Zi9VbmlxdWVSZWYuaDoKKyAgICAgICAgKFdURjo6VW5pcXVlUmVmOjpVbmlxdWVSZWYpOgorICAg
ICAgICAoV1RGOjpVbmlxdWVSZWY6Om1vdmVUb1VuaXF1ZVB0cik6CisKIDIwMTktMDgtMDggIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdGhyZWFkIHNhZmV0
eSBpc3N1ZSBpbiBBdWRpb1NhbXBsZURhdGFTb3VyY2UoKSBjb25zdHJ1Y3RvcgpJbmRleDogU291
cmNlL1dURi93dGYvUmVmQ291bnRlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Jl
ZkNvdW50ZWQuaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dURi93dGYvUmVmQ291bnRl
ZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsMTMgKzEzNiwxMyBAQCBpbmxpbmUgdm9pZCBhZG9w
dGVkKFJlZkNvdW50ZWRCYXNlKiBvYmplCiB9CiAjZW5kaWYKIAotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gY2xhc3MgUmVmQ291bnRlZCA6IHB1YmxpYyBSZWZDb3VudGVkQmFzZSB7Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBEZWxldGVyID0gc3RkOjpkZWZhdWx0X2RlbGV0ZTxUPj4gY2xh
c3MgUmVmQ291bnRlZCA6IHB1YmxpYyBSZWZDb3VudGVkQmFzZSB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoUmVmQ291bnRlZCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHZvaWQgZGVyZWYoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGRlcmVmQmFzZSgpKQot
ICAgICAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PGNvbnN0IFQqPih0aGlzKTsKKyAgICAgICAg
ICAgIERlbGV0ZXIoKShjb25zdF9jYXN0PFQqPihzdGF0aWNfY2FzdDxjb25zdCBUKj4odGhpcykp
KTsKICAgICB9CiAKIHByb3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCShyZXZpc2lvbiAyNDg0
MDQpCisrKyBTb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAkod29ya2luZyBjb3B5KQpAQCAtNDAs
MTAgKzQwLDExIEBAIFVuaXF1ZVJlZjxUPiBtYWtlVW5pcXVlUmVmKEFyZ3MmJi4uLiBhcmcKIAog
dGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNsYXNzIFVuaXF1ZVJlZiB7CisgICAgdXNpbmcgRGVsZXRl
ciA9IHN0ZDo6ZGVmYXVsdF9kZWxldGU8VD47CiBwdWJsaWM6CiAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFU+CiAgICAgVW5pcXVlUmVmKFVuaXF1ZVJlZjxVPiYmIG90aGVyKQotICAgICAgICA6IG1f
cmVmKFdURk1vdmUob3RoZXIubV9yZWYpKQorICAgICAgICA6IG1fcmVmKG90aGVyLm1fcmVmLnJl
bGVhc2UoKSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3JlZik7CiAgICAgfQpAQCAtNjAsMTkg
KzYxLDIwIEBAIHB1YmxpYzoKICAgICBvcGVyYXRvciBUJigpIHsgQVNTRVJUKG1fcmVmKTsgcmV0
dXJuICptX3JlZjsgfQogICAgIG9wZXJhdG9yIGNvbnN0IFQmKCkgY29uc3QgeyBBU1NFUlQobV9y
ZWYpOyByZXR1cm4gKm1fcmVmOyB9CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VD4gbW92ZVRvVW5p
cXVlUHRyKCkgeyByZXR1cm4gV1RGTW92ZShtX3JlZik7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
VCwgRGVsZXRlcj4gbW92ZVRvVW5pcXVlUHRyKCkgeyByZXR1cm4gV1RGTW92ZShtX3JlZik7IH0K
IAogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBmcmllbmQg
VW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uKTsKICAgICB0ZW1wbGF0ZTxjbGFz
cyBVPiBmcmllbmQgY2xhc3MgVW5pcXVlUmVmOwogCiAgICAgVW5pcXVlUmVmKFQmIG90aGVyKQot
ICAgICAgICA6IG1fcmVmKCZvdGhlcikKKyAgICAgICAgOiBtX3JlZigmb3RoZXIsIERlbGV0ZXIo
KSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3JlZik7CiAgICAgfQogCi0gICAgc3RkOjp1bmlx
dWVfcHRyPFQ+IG1fcmVmOworICAgIHN0ZDo6dW5pcXVlX3B0cjxULCBEZWxldGVyPiBtX3JlZjsK
KyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihtX3JlZikgPT0gc2l6ZW9mKHVpbnRwdHJfdCksICJE
b24ndCB1c2UgYSBzdGF0ZWZ1bCBkZWxldGVyLiIpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RG
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MDcgQEAKKzIwMTktMDgtMDkgIFNhYW0g
QmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dITFNMXSBEZXZpcnR1YWxp
emUgdGhlIEFTVAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAwNTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBkZXZpcnR1YWxpemVzIHRoZSBBU1QgZm9yIFR5cGUsIEV4cHJlc3Npb24s
IGFuZCBTdGF0ZW1lbnQuCisgICAgICAgIFdlIG5vdyBoYXZlIGFuIGVudW0gd2hpY2ggcmVwcmVz
ZW50cyBhbGwgdGhlIGNvbmNyZXRlIHR5cGVzIGluIHRoZQorICAgICAgICB0aHJlZSBoaWVyYXJj
aGllcy4gRG9pbmcgZHluYW1pYyBkaXNwYXRjaCBpcyBpbXBsZW1lbnRlZCBhcyBhIHN3aXRjaAor
ICAgICAgICBvbiB0aGF0IHR5cGUgZW51bS4KKyAgICAgICAgCisgICAgICAgIFRoZSBpbnRlcmVz
dGluZyBwYXJ0IG9mIHRoaXMgcGF0Y2ggaXMgaG93IHRvIGhhbmRsZSBkZXN0cnVjdGlvbi4gV2Ug
ZG8KKyAgICAgICAgdGhpcyBieSBkZWZpbmluZyBhIGN1c3RvbSBkZWxldGVyIGZvciBhbGwgbm9k
ZXMgaW4gdGhlIEFTVC4gVGhpcyBlbnN1cmVzCisgICAgICAgIHRoYXQgd2hlbiB0aGV5J3JlIHVz
ZWQgaW5zaWRlIFVuaXF1ZVJlZiwgdW5pcXVlX3B0ciwgUmVmLCBSZWZQdHIsIHRoYXQKKyAgICAg
ICAgd2UgZG8gZHluYW1pYyBkaXNwYXRjaCB3aGVuIHdlIGRlbGV0ZSB0aGUgb2JqZWN0LiBUaGlz
IGFsbG93cyBlYWNoIGJhc2UKKyAgICAgICAgY2xhc3MgdG8gZGVmaW5lIGEgImRlc3Ryb3kiIG1l
dGhvZCB3aGljaCBkb2VzIGR5bmFtaWMgZGlzcGF0Y2ggb24gdHlwZQorICAgICAgICBhbmQgY2Fs
bHMgdGhlIGFwcHJvcHJpYXRlIGRlbGV0ZS4gV2UgYWxzbyBtYXJrIGFsbCBub24tY29uY3JldGUg
bm9kZXMKKyAgICAgICAgaW4gYWxsIHR5cGUgaGllcmFyY2hpZXMgd2l0aCBhIHByb3RlY3RlZCBk
ZXN0cnVjdG9yLCB3aGljaCBlbnN1cmVzIGl0J3MKKyAgICAgICAgbmV2ZXIgY2FsbGVkIGV4Y2Vw
dCBmcm9tIHdpdGhpbiB0aGUgY29uY3JldGUgY2hpbGQgY2xhc3Nlcy4gV2UgYWxsb3cKKyAgICAg
ICAgYWxsIGNvbmNyZXRlIGNsYXNzZXMgdG8gaGF2ZSBwdWJsaWMgZGVzdHJ1Y3RvcnMsIGFzIGl0
J3MgdmFsaWQgZm9yCisgICAgICAgIHRoZWlyIGRlc3RydWN0b3JzIHRvIGJlIGNhbGxlZCBleHBs
aWNpdGx5IHNpbmNlIHRoZXJlIGlzIG5vIG5lZWQgZm9yCisgICAgICAgIGR5bmFtaWMgZGlzcGF0
Y2ggaW4gc3VjaCBzY2VuYXJpb3MuIEFsbCBjb25jcmV0ZSBjbGFzc2VzIGFyZSBhbHNvIG1hcmtl
ZAorICAgICAgICBhcyBmaW5hbC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgYSAzbXMgc3Bl
ZWR1cCBvbiBjb21wdXRlX2JvaWRzLCB3aGljaCBpcyBhYm91dCBhIDEwJSBpbXByb3ZlbWVudAor
ICAgICAgICBpbiB0aGUgV0hMU0wgY29tcGlsZXIuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVR5cGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6QXNzaWdubWVudEV4cHJlc3Npb246OkFzc2lnbm1lbnRFeHByZXNz
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkFzc2lnbm1lbnRF
eHByZXNzaW9uOjpsZWZ0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkFzc2lnbm1lbnRFeHByZXNzaW9uOjpyaWdodCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbjo6dGFrZVJpZ2h0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCbG9jay5oOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QmxvY2s6OkJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OkJsb2NrOjpzdGF0ZW1lbnRzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCb29sZWFuTGl0ZXJhbC5oOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Qm9vbGVhbkxpdGVyYWw6OkJvb2xlYW5MaXRlcmFs
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkJvb2xlYW5MaXRlcmFs
Ojp2YWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpC
b29sZWFuTGl0ZXJhbDo6Y2xvbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpCcmVhazo6QnJlYWspOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTENhbGxFeHByZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpDYWxsRXhwcmVzc2lvbjo6Q2FsbEV4cHJlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6Q2FsbEV4cHJlc3Npb246OmFyZ3VtZW50cyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDYWxsRXhwcmVzc2lvbjo6bmFtZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDYWxsRXhwcmVzc2lvbjo6c2V0
Q2FzdERhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q2FsbEV4
cHJlc3Npb246OmlzQ2FzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpDYWxsRXhwcmVzc2lvbjo6Y2FzdFJldHVyblR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6Q2FsbEV4cHJlc3Npb246OmZ1bmN0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNhbGxFeHByZXNzaW9uOjpzZXRGdW5jdGlvbik6
IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29tbWFF
eHByZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDb21tYUV4cHJlc3Np
b246OkNvbW1hRXhwcmVzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpDb21tYUV4cHJlc3Npb246Omxpc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6Q29uc3RhbnRFeHByZXNzaW9uOjpDb25zdGFudEV4cHJlc3Npb24p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q29uc3RhbnRFeHByZXNz
aW9uOjppbnRlZ2VyTGl0ZXJhbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpDb25zdGFudEV4cHJlc3Npb246OnZpc2l0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbjo6dmlzaXQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q29uc3RhbnRFeHByZXNzaW9uOjpjbG9u
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDb25zdGFu
dEV4cHJlc3Npb246Om1hdGNoZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpDb250aW51ZTo6Q29udGludWUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTERlZmF1bHREZWxldGUuaDogQWRkZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb246OkRlcmVm
ZXJlbmNlRXhwcmVzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpEZXJlZmVyZW5jZUV4cHJlc3Npb246OnBvaW50ZXIpOiBEZWxldGVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29wLmg6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpEb1doaWxlTG9vcDo6RG9XaGlsZUxvb3ApOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RG9XaGlsZUxvb3A6OmJvZHkpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RG9XaGlsZUxvb3A6OmNvbmRpdGlvbmFsKTog
RGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb3RFeHBy
ZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpEb3RFeHByZXNzaW9uOjpE
b3RFeHByZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkRv
dEV4cHJlc3Npb246OmZpZWxkTmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudDo6RWZm
ZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50OjplZmZlY3RmdWxFeHByZXNz
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xF
bnVtZXJhdGlvbkRlZmluaXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVu
dW1lcmF0aW9uRGVmaW5pdGlvbjo6RW51bWVyYXRpb25EZWZpbml0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbjo6dHlwZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFbnVtZXJhdGlvbkRlZmlu
aXRpb246OmFkZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFbnVt
ZXJhdGlvbkRlZmluaXRpb246Om1lbWJlckJ5TmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb246OmVudW1lcmF0aW9uTWVtYmVy
cyk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWw6OndyYXApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsOjpsZWZ0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDo6cmlnaHQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsOjpjbG9uZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6OmVudW1lcmF0aW9uRGVmaW5pdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWw6OmVudW1lcmF0aW9uRGVmaW5pdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6OmVudW1lcmF0aW9u
TWVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbDo6ZW51bWVyYXRpb25NZW1iZXIgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsOjpzZXRF
bnVtZXJhdGlvbk1lbWJlcik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRXhwcmVzc2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6RXhwcmVzc2lvbjo6ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb246OmdldHRlckZ1bmN0aW9uTmFtZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb246
OnNldHRlckZ1bmN0aW9uTmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb246OmFuZGVyRnVuY3Rpb25OYW1lIGNvbnN0KToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjpFeHByZXNzaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmtpbmQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNBc3NpZ25tZW50RXhwcmVzc2lv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0Jv
b2xlYW5MaXRlcmFsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJl
c3Npb246OmlzQ2FsbEV4cHJlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6RXhwcmVzc2lvbjo6aXNDb21tYUV4cHJlc3Npb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNEZXJlZmVyZW5jZUV4cHJlc3Npb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNEb3RFeHBy
ZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246
OmlzR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNGbG9hdExpdGVyYWwgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNJbmRleEV4cHJlc3Npb24gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNJbnRlZ2VyTGl0ZXJh
bCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0xv
Z2ljYWxFeHByZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4
cHJlc3Npb246OmlzTG9naWNhbE5vdEV4cHJlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmlzTWFr
ZVBvaW50ZXJFeHByZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkV4cHJlc3Npb246OmlzTnVsbExpdGVyYWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNSZWFkTW9kaWZ5V3Jp
dGVFeHByZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJl
c3Npb246OmlzVGVybmFyeUV4cHJlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNVbnNpZ25lZEludGVnZXJMaXRlcmFsIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmlzVmFyaWFibGVSZWZlcmVu
Y2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6RXhwcmVzc2lvbjo6Y29kZUxvY2F0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OnVwZGF0ZUNvZGVMb2NhdGlvbik6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmFsbHRocm91Z2guaDoKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OkZhbGx0aHJvdWdoOjpGYWxsdGhyb3VnaCk6IERlbGV0ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpGbG9hdExpdGVyYWw6OkZsb2F0TGl0ZXJhbCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpGbG9hdExpdGVyYWw6OnR5
cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RmxvYXRMaXRlcmFs
Ojp2YWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpG
bG9hdExpdGVyYWw6OmNsb25lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OkZsb2F0TGl0ZXJhbFR5cGU6OkZsb2F0TGl0ZXJhbFR5cGUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZsb2F0TGl0ZXJhbFR5cGU6OnZhbHVlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZsb2F0TGl0ZXJh
bFR5cGU6OnByZWZlcnJlZFR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEZvckxvb3AuaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkZvckxvb3A6OkZvckxvb3ApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6Rm9yTG9vcDo6fkZvckxvb3ApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6Rm9yTG9vcDo6aW5pdGlhbGl6YXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6Rm9yTG9vcDo6Y29uZGl0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OkZvckxvb3A6OmluY3JlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpGb3JMb29wOjpib2R5KTogRGVsZXRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5o
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U6
Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlOjpzdHJ1Y3RGaWVsZCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZTo6
YmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
SWZTdGF0ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OklmU3RhdGVtZW50
OjpJZlN0YXRlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpJ
ZlN0YXRlbWVudDo6Y29uZGl0aW9uYWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6SWZTdGF0ZW1lbnQ6OmJvZHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6SWZTdGF0ZW1lbnQ6OmVsc2VCb2R5KTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbmRleEV4cHJlc3Npb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OkluZGV4RXhwcmVzc2lvbjo6SW5kZXhFeHByZXNzaW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkluZGV4RXhwcmVzc2lvbjo6
aW5kZXhFeHByZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkluZGV4RXhwcmVzc2lvbjo6dGFrZUluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6SW50ZWdlckxpdGVyYWw6OkludGVnZXJMaXRlcmFsKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkludGVnZXJMaXRlcmFsOjp0eXBlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkludGVnZXJMaXRlcmFsOjp2YWx1
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpJbnRlZ2Vy
TGl0ZXJhbDo6Y2xvbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGU6OkludGVnZXJMaXRlcmFsVHlwZSk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGU6OnZh
bHVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkludGVn
ZXJMaXRlcmFsVHlwZTo6cHJlZmVycmVkVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbEV4cHJlc3Npb24uaDoKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uOjpMb2dpY2FsRXhwcmVzc2lvbik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpMb2dpY2FsRXhwcmVzc2lv
bjo6dHlwZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpM
b2dpY2FsRXhwcmVzc2lvbjo6bGVmdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpMb2dpY2FsRXhwcmVzc2lvbjo6cmlnaHQpOiBEZWxldGVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpMb2dpY2FsTm90RXhwcmVzc2lvbjo6TG9naWNhbE5v
dEV4cHJlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TG9n
aWNhbE5vdEV4cHJlc3Npb246Om9wZXJhbmQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb246
Ok1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbjo6bGVmdFZhbHVlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok1ha2VBcnJheVJlZmVyZW5j
ZUV4cHJlc3Npb246Om1pZ2h0RXNjYXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbjo6TWFrZVBvaW50
ZXJFeHByZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok1h
a2VQb2ludGVyRXhwcmVzc2lvbjo6bGVmdFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbjo6bWlnaHRFc2NhcGUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVk
VHlwZS5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmFtZWRUeXBlOjpOYW1lZFR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmFtZWRUeXBlOjp1bmlmeU5vZGVJ
bXBsKToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpOYW1lZFR5cGU6OmlzVHlwZURlZmluaXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6TmFtZWRUeXBlOjppc1N0cnVjdHVyZURlZmluaXRpb24gY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmFtZWRUeXBlOjpp
c0VudW1lcmF0aW9uRGVmaW5pdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpOYW1lZFR5cGU6OmlzTmF0aXZlVHlwZURlY2xhcmF0aW9uIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hbWVkVHlwZTo6dW5pZnlO
b2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hbWVk
VHlwZTo6dW5pZnlOb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJh
dGlvbjo6dHlwZUFyZ3VtZW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OmlzSW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6aXNOdW1iZXIg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlw
ZURlY2xhcmF0aW9uOjppc0Zsb2F0aW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6aXNBdG9taWMgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0
aW9uOjppc1ZlY3RvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OmlzTWF0cml4IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6aXNPcGFx
dWVUeXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbjo6aXNUZXh0dXJlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6aXNUZXh0dXJlQXJy
YXkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uOjppc0RlcHRoVGV4dHVyZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OmlzV3JpdGFibGVU
ZXh0dXJlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbjo6dGV4dHVyZURpbWVuc2lvbiBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OmlzU2ln
bmVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbjo6c3RkOjpmdW5jdGlvbjxib29sIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6c3RkOjpm
dW5jdGlvbjxpbnQ2NF90IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6aXRlcmF0ZUFsbFZhbHVlcyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnNl
dElzSW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbjo6c2V0SXNOdW1iZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRJc0Zsb2F0aW5nKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6
c2V0SXNBdG9taWMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0
aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRJc1ZlY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnNldElzTWF0cml4KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlv
bjo6c2V0SXNPcGFxdWVUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6c2V0SXNUZXh0dXJlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6c2V0SXNUZXh0
dXJlQXJyYXkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uOjpzZXRJc0RlcHRoVGV4dHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnNldElzV3JpdGFibGVU
ZXh0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbjo6c2V0VGV4dHVyZURpbWVuc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnNldElzU2lnbmVkKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJh
dGlvbjo6c2V0Q2FuUmVwcmVzZW50SW50ZWdlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnNldENhblJlcHJlc2VudFVuc2ln
bmVkSW50ZWdlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb246OnNldENhblJlcHJlc2VudEZsb2F0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6c2V0U3VjY2Vz
c29yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbjo6c2V0Rm9ybWF0VmFsdWVGcm9tSW50ZWdlcik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnNldEZvcm1hdFZh
bHVlRnJvbVVuc2lnbmVkSW50ZWdlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnNldEl0ZXJhdGVBbGxWYWx1ZXMpOiBEZWxl
dGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRlcmFs
Lmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOdWxsTGl0ZXJhbDo6TnVsbExpdGVy
YWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TnVsbExpdGVyYWw6
OnR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TnVsbExpdGVy
YWw6OmNsb25lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xOdWxsTGl0ZXJhbFR5cGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xQb2ludGVyVHlwZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uOjpQcm9wZXJ0eUFjY2Vzc0V4
cHJlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRN
b2RpZnlXcml0ZUV4cHJlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJl
YWRNb2RpZnlXcml0ZUV4cHJlc3Npb246OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpzZXROZXdWYWx1ZUV4
cHJlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVhZE1v
ZGlmeVdyaXRlRXhwcmVzc2lvbjo6c2V0UmVzdWx0RXhwcmVzc2lvbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpvbGRW
YXJpYWJsZVJlZmVyZW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpuZXdWYXJpYWJsZVJlZmVyZW5jZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNz
aW9uOjpsZWZ0VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6b2xkVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6bmV3VmFsdWUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbjo6bmV3VmFsdWVFeHByZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246OnJlc3VsdEV4cHJlc3Np
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdy
aXRlRXhwcmVzc2lvbjo6dGFrZUxlZnRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjp0YWtlT2xkVmFsdWUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhw
cmVzc2lvbjo6dGFrZU5ld1ZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246OnRha2VOZXdWYWx1ZUV4cHJlc3Npb24p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbjo6dGFrZVJlc3VsdEV4cHJlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6UmVhZE1vZGlmeVdy
aXRlRXhwcmVzc2lvbik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMUmVmZXJlbmNlVHlwZS5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
UmVmZXJlbmNlVHlwZTo6UmVmZXJlbmNlVHlwZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMUmVzb2x2YWJsZVR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OlJlc29sdmFibGVUeXBlOjpSZXNvbHZhYmxlVHlwZSk6CisgICAgICAgICgpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVzb2x2YWJsZVR5cGU6OmlzRmxv
YXRMaXRlcmFsVHlwZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpSZXNvbHZhYmxlVHlwZTo6aXNJbnRlZ2VyTGl0ZXJhbFR5cGUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVzb2x2YWJsZVR5cGU6OmlzTnVsbExp
dGVyYWxUeXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OlJlc29sdmFibGVUeXBlOjppc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaDoK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJldHVybjo6UmV0dXJuKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJldHVybjo6dmFsdWUpOiBEZWxldGVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50OjpkZXN0cm95KToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6U3RhdGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6a2luZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6OmlzQmxvY2sgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojppc0JyZWFrIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNDb250aW51ZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6OmlzRG9XaGlsZUxvb3AgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojppc0VmZmVjdGZ1
bEV4cHJlc3Npb25TdGF0ZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6U3RhdGVtZW50Ojppc0ZhbGx0aHJvdWdoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNGb3JMb29wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNJZlN0YXRlbWVudCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6OmlzUmV0dXJuIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNTdGF0ZW1lbnRMaXN0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNTd2l0Y2hDYXNlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNTd2l0Y2hT
dGF0ZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50
Ojppc1ZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNXaGlsZUxvb3AgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojpjb2RlTG9jYXRpb24gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojp1cGRhdGVDb2RlTG9jYXRpb24p
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudExpc3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudExpc3Q6OlN0YXRlbWVu
dExpc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50
TGlzdDo6c3RhdGVtZW50cyk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbjo6U3RydWN0dXJlRGVmaW5pdGlvbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uOjpz
dHJ1Y3R1cmVFbGVtZW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpTdHJ1Y3R1cmVEZWZpbml0aW9uOjpmaW5kKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVFbGVtZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpTdHJ1Y3R1cmVFbGVtZW50OjpTdHJ1Y3R1cmVFbGVtZW50KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0cnVjdHVyZUVsZW1lbnQ6OmNv
ZGVMb2NhdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpTdHJ1Y3R1cmVFbGVtZW50Ojp0eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OlN0cnVjdHVyZUVsZW1lbnQ6Om5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6U3RydWN0dXJlRWxlbWVudDo6c2VtYW50aWMpOiBEZWxldGVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaENhc2UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN3aXRjaENhc2U6OlN3aXRjaENhc2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3dpdGNoQ2FzZTo6dmFsdWUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3dpdGNoQ2FzZTo6YmxvY2sp
OiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRj
aFN0YXRlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3dpdGNoU3RhdGVt
ZW50OjpTd2l0Y2hTdGF0ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6U3dpdGNoU3RhdGVtZW50Ojp2YWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpTd2l0Y2hTdGF0ZW1lbnQ6OnN3aXRjaENhc2VzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VGVybmFyeUV4cHJlc3Npb246OlRlcm5h
cnlFeHByZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlRl
cm5hcnlFeHByZXNzaW9uOjpwcmVkaWNhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6VGVybmFyeUV4cHJlc3Npb246OmJvZHlFeHByZXNzaW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlRlcm5hcnlFeHByZXNzaW9uOjplbHNlRXhw
cmVzc2lvbik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMVHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZTo6
ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlOjp1bmlmeU5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVzb2x2YWJsZVR5cGU6OmNhblJlc29s
dmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVzb2x2YWJsZVR5cGU6
OmNvbnZlcnNpb25Db3N0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlVu
bmFtZWRUeXBlOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMVHlwZS5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZTo6
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlOjpraW5kIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGU6OmlzVW5uYW1lZFR5cGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZTo6aXNOYW1lZFR5cGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZTo6aXNSZXNvbHZhYmxlVHlwZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlOjppc1R5cGVSZWZlcmVu
Y2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZTo6aXNQb2ludGVy
VHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlOjppc0FycmF5
UmVmZXJlbmNlVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBl
Ojppc0FycmF5VHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBl
Ojppc1JlZmVyZW5jZVR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
VHlwZTo6aXNUeXBlRGVmaW5pdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpUeXBlOjppc1N0cnVjdHVyZURlZmluaXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6VHlwZTo6aXNFbnVtZXJhdGlvbkRlZmluaXRpb24gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZTo6aXNOYXRpdmVUeXBlRGVjbGFyYXRpb24g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZTo6aXNGbG9hdExpdGVy
YWxUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGU6OmlzSW50
ZWdlckxpdGVyYWxUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5
cGU6OmlzTnVsbExpdGVyYWxUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OlR5cGU6OmlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZTo6dW5pZnlOb2RlIGNvbnN0KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlRGVmaW5pdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZURlZmluaXRpb246OlR5cGVEZWZpbml0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGVEZWZpbml0aW9uOjp0eXBl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBl
UmVmZXJlbmNlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5u
YW1lZFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGU6
Omhhc2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGU6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFVubmFtZWRUeXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbm5hbWVk
VHlwZTo6VW5uYW1lZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1l
ZFR5cGU6OnVuaWZ5Tm9kZUltcGwpOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OlVubmFtZWRUeXBlOjpraW5kIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlVubmFtZWRUeXBlOjppc1R5cGVSZWZlcmVuY2Ug
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5
cGU6OmlzUG9pbnRlclR5cGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6VW5uYW1lZFR5cGU6OmlzQXJyYXlSZWZlcmVuY2VUeXBlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlVubmFtZWRUeXBlOjppc0FycmF5VHlw
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbm5hbWVk
VHlwZTo6aXNSZWZlcmVuY2VUeXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OlVubmFtZWRUeXBlOjp1bmlmeU5vZGUgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGU6OnVuaWZ5Tm9kZSk6IERlbGV0
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbC5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOjp0eXBlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw6
OnZhbHVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlVu
c2lnbmVkSW50ZWdlckxpdGVyYWw6OmNsb25lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFs
VHlwZTo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmg6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZTo6dmFsdWUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbFR5cGU6OnByZWZlcnJlZFR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0
YXRlbWVudDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQ6OnZh
cmlhYmxlRGVjbGFyYXRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6VmFyaWFibGVSZWZlcmVuY2U6OlZhcmlhYmxlUmVmZXJlbmNlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlOjp3cmFwKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlZhcmlhYmxlUmVmZXJlbmNl
OjpuYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlZhcmlhYmxl
UmVmZXJlbmNlOjp2YXJpYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpWYXJpYWJsZVJlZmVyZW5jZTo6c2V0VmFyaWFibGUpOiBEZWxldGVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6V2hpbGVMb29wOjpXaGlsZUxvb3ApOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6V2hpbGVMb29wOjpjb25kaXRpb25hbCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpXaGlsZUxvb3A6OmJvZHkpOiBEZWxldGVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6QmFzZVR5cGVOYW1lTm9kZTo6aXNQ
b2ludGVyVHlwZU5hbWVOb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRh
bDo6QmFzZVR5cGVOYW1lTm9kZTo6aXNBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkJhc2VUeXBlTmFtZU5vZGU6OmlzQXJy
YXlUeXBlTmFtZU5vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpU
eXBlTmFtZXI6OmNyZWF0ZU5hbWVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRh
bDo6cGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6VHlwZU5hbWVyOjpl
bWl0VW5uYW1lZFR5cGVEZWZpbml0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6UGFyc2VyOjpwYXJz
ZVN1ZmZpeE9wZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQYXJzZXI6OmNvbXBs
ZXRlQXNzaWdubWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6UGFyc2VyOjpwYXJzZVBv
c3NpYmxlUHJlZml4KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXNl
cnZlVmFyaWFibGVMaWZldGltZXMuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMVmlzaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6VmlzaXRvcjo6dmlz
aXQpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5o
OgorCiAyMDE5LTA4LTA3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtXSExTTF0gUHJ1bmUgdW5yZWFjaGFibGUgc3RkbGliIGZ1bmN0aW9ucyBhZnRlciB0aGUg
Q2hlY2tlciBydW5zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM0Miw2ICszNDIsNyBA
QCBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZVR5CiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9NZXRhbC9XSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5jcHAKIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuY3BwCiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xFeHByZXNzaW9uLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
QnVpbHRJblNlbWFudGljLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3Vy
Y2VTZW1hbnRpYy5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0
aW9uQ29uc3RhbnRTZW1hbnRpYy5jcHAKQEAgLTM1MCw5ICszNTEsMTIgQEAgTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcgogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
TnVsbExpdGVyYWxUeXBlLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xT
dGF0ZW1lbnQuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlLmNwcAogTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZVJlZmVyZW5jZS5jcHAKIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmNwcAogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5jcHAKK01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFVubmFtZWRUeXBlLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQ
cmVwYXJlLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmNw
cAogTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcAkocmV2aXNpb24gMjQ4NDA0
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDk0LDcgKzE0OTQsNyBAQCBhdXRvIFBhcnNlcjo6cGFyc2VT
dWZmaXhPcGVyYXRvcihVbmlxdWVSCiAgICAgfQogICAgIGNhc2UgVG9rZW46OlR5cGU6OlBsdXNQ
bHVzOiB7CiAgICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihwcmV2aW91cy0+Y29kZUxvY2F0
aW9uKCksICpzdWZmaXgpOwotICAgICAgICBhdXRvIHJlc3VsdCA9IEFTVDo6UmVhZE1vZGlmeVdy
aXRlRXhwcmVzc2lvbjo6Y3JlYXRlKGxvY2F0aW9uLCBXVEZNb3ZlKHByZXZpb3VzKSk7CisgICAg
ICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKHByZXZpb3VzKSk7CiAgICAgICAgIFZlY3RvcjxVbmlx
dWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FsbEFyZ3VtZW50czsKICAgICAgICAgY2FsbEFyZ3Vt
ZW50cy5hcHBlbmQocmVzdWx0LT5vbGRWYXJpYWJsZVJlZmVyZW5jZSgpKTsKICAgICAgICAgcmVz
dWx0LT5zZXROZXdWYWx1ZUV4cHJlc3Npb24obWFrZVVuaXF1ZVJlZjxBU1Q6OkNhbGxFeHByZXNz
aW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yKysiX3N0ciwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSkp
OwpAQCAtMTUwNCw3ICsxNTA0LDcgQEAgYXV0byBQYXJzZXI6OnBhcnNlU3VmZml4T3BlcmF0b3Io
VW5pcXVlUgogICAgIGRlZmF1bHQ6IHsKICAgICAgICAgQVNTRVJUKHN1ZmZpeC0+dHlwZSA9PSBU
b2tlbjo6VHlwZTo6TWludXNNaW51cyk7CiAgICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihw
cmV2aW91cy0+Y29kZUxvY2F0aW9uKCksICpzdWZmaXgpOwotICAgICAgICBhdXRvIHJlc3VsdCA9
IEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6Y3JlYXRlKGxvY2F0aW9uLCBXVEZNb3Zl
KHByZXZpb3VzKSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlJl
YWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKHByZXZpb3VzKSk7CiAg
ICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2FsbEFyZ3VtZW50czsK
ICAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQocmVzdWx0LT5vbGRWYXJpYWJsZVJlZmVyZW5j
ZSgpKTsKICAgICAgICAgcmVzdWx0LT5zZXROZXdWYWx1ZUV4cHJlc3Npb24obWFrZVVuaXF1ZVJl
ZjxBU1Q6OkNhbGxFeHByZXNzaW9uPihsb2NhdGlvbiwgIm9wZXJhdG9yLS0iX3N0ciwgV1RGTW92
ZShjYWxsQXJndW1lbnRzKSkpOwpAQCAtMTYwNiw3ICsxNjA2LDcgQEAgYXV0byBQYXJzZXI6OmNv
bXBsZXRlQXNzaWdubWVudChVbmlxdWVSZQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBh
dXRvIHJlc3VsdCA9IEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6Y3JlYXRlKGxvY2F0
aW9uLCBXVEZNb3ZlKGxlZnQpKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWVSZWY8QVNU
OjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShsZWZ0KSk7CiAg
ICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwogICAg
IGNhbGxBcmd1bWVudHMuYXBwZW5kKHJlc3VsdC0+b2xkVmFyaWFibGVSZWZlcmVuY2UoKSk7CiAg
ICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQoV1RGTW92ZSgqcmlnaHQpKTsKQEAgLTE4OTgsNyArMTg5
OCw3IEBAIGF1dG8gUGFyc2VyOjpwYXJzZVBvc3NpYmxlUHJlZml4KGJvb2wgKmkKICAgICAgICAg
Y2FzZSBUb2tlbjo6VHlwZTo6UGx1c1BsdXM6IHsKICAgICAgICAgICAgIGlmIChpc0VmZmVjdGZ1
bCkKICAgICAgICAgICAgICAgICAqaXNFZmZlY3RmdWwgPSB0cnVlOwotICAgICAgICAgICAgYXV0
byByZXN1bHQgPSBBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246OmNyZWF0ZShsb2NhdGlv
biwgV1RGTW92ZSgqbmV4dCkpOworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVl
UmVmPEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUoKm5l
eHQpKTsKICAgICAgICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2Fs
bEFyZ3VtZW50czsKICAgICAgICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKHJlc3VsdC0+b2xk
VmFyaWFibGVSZWZlcmVuY2UoKSk7CiAgICAgICAgICAgICByZXN1bHQtPnNldE5ld1ZhbHVlRXhw
cmVzc2lvbihtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3Bl
cmF0b3IrKyJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKSk7CkBAIC0xOTA4LDcgKzE5MDgs
NyBAQCBhdXRvIFBhcnNlcjo6cGFyc2VQb3NzaWJsZVByZWZpeChib29sICppCiAgICAgICAgIGNh
c2UgVG9rZW46OlR5cGU6Ok1pbnVzTWludXM6IHsKICAgICAgICAgICAgIGlmIChpc0VmZmVjdGZ1
bCkKICAgICAgICAgICAgICAgICAqaXNFZmZlY3RmdWwgPSB0cnVlOwotICAgICAgICAgICAgYXV0
byByZXN1bHQgPSBBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246OmNyZWF0ZShsb2NhdGlv
biwgV1RGTW92ZSgqbmV4dCkpOworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVl
UmVmPEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUoKm5l
eHQpKTsKICAgICAgICAgICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPj4gY2Fs
bEFyZ3VtZW50czsKICAgICAgICAgICAgIGNhbGxBcmd1bWVudHMuYXBwZW5kKHJlc3VsdC0+b2xk
VmFyaWFibGVSZWZlcmVuY2UoKSk7CiAgICAgICAgICAgICByZXN1bHQtPnNldE5ld1ZhbHVlRXhw
cmVzc2lvbihtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3Bl
cmF0b3ItLSJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHAJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlc2VydmVWYXJpYWJsZUxp
ZmV0aW1lcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBzdHJ1Y3RWYXJpYWJsZURlY2xhcmF0aW9ucy5hcHBlbmQoV1RGTW92ZShzdHJ1
Y3RWYXJpYWJsZURlY2xhcmF0aW9uKSk7CiAgICAgICAgICAgICBhdXRvIHN0cnVjdERlY2xhcmF0
aW9uU3RhdGVtZW50ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3Rh
dGVtZW50PihmdW5jdGlvbkRlZmluaXRpb24uY29kZUxvY2F0aW9uKCksIFdURk1vdmUoc3RydWN0
VmFyaWFibGVEZWNsYXJhdGlvbnMpKTsKIAotICAgICAgICAgICAgYXV0byBtYWtlUG9pbnRlckV4
cHJlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uPihm
dW5jdGlvbkRlZmluaXRpb24uY29kZUxvY2F0aW9uKCksIFdURk1vdmUoc3RydWN0VmFyaWFibGVS
ZWZlcmVuY2UpLCBBU1Q6OkFkZHJlc3NFc2NhcGVNb2RlOjpEb2VzTm90RXNjYXBlKTsKKyAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBU1Q6OkV4cHJlc3Npb24+IG1ha2VQb2ludGVyRXhwcmVz
c2lvbihuZXcgQVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24oZnVuY3Rpb25EZWZpbml0aW9uLmNv
ZGVMb2NhdGlvbigpLCBXVEZNb3ZlKHN0cnVjdFZhcmlhYmxlUmVmZXJlbmNlKSwgQVNUOjpBZGRy
ZXNzRXNjYXBlTW9kZTo6RG9lc05vdEVzY2FwZSkpOwogICAgICAgICAgICAgbWFrZVBvaW50ZXJF
eHByZXNzaW9uLT5zZXRUeXBlKG1fcG9pbnRlclRvU3RydWN0VHlwZS5jb3B5UmVmKCkpOwogICAg
ICAgICAgICAgbWFrZVBvaW50ZXJFeHByZXNzaW9uLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OlJp
Z2h0VmFsdWUoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMVmlzaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmNwcAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAzLDM0ICszMDMsNTAgQEAgdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlN0YXRl
bWVudExpc3QmIAogCiB2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6U3RhdGVtZW50JiBzdGF0ZW1l
bnQpCiB7Ci0gICAgaWYgKGlzPEFTVDo6QmxvY2s+KHN0YXRlbWVudCkpCisgICAgc3dpdGNoIChz
dGF0ZW1lbnQua2luZCgpKSB7CisgICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6QmxvY2s6
CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkJsb2NrPihzdGF0ZW1l
bnQpKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OkJyZWFrPihzdGF0ZW1lbnQpKQorICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpCcmVhazoKICAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6QnJlYWs+KHN0YXRlbWVudCkpOwotICAgIGVs
c2UgaWYgKGlzPEFTVDo6Q29udGludWU+KHN0YXRlbWVudCkpCisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OkNvbnRpbnVlOgogICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpDb250aW51ZT4oc3RhdGVtZW50KSk7Ci0gICAgZWxzZSBp
ZiAoaXM8QVNUOjpEb1doaWxlTG9vcD4oc3RhdGVtZW50KSkKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6RG9XaGlsZUxvb3A6CiAgICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkRvV2hpbGVMb29wPihzdGF0ZW1lbnQpKTsKLSAgICBl
bHNlIGlmIChpczxBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ+KHN0YXRlbWVudCkp
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OkVmZmVjdGZ1
bEV4cHJlc3Npb246CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkVm
ZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ+KHN0YXRlbWVudCkpOwotICAgIGVsc2UgaWYgKGlz
PEFTVDo6RmFsbHRocm91Z2g+KHN0YXRlbWVudCkpCisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
QVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OkZhbGx0aHJvdWdoOgogICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoZG93bmNhc3Q8QVNUOjpGYWxsdGhyb3VnaD4oc3RhdGVtZW50KSk7Ci0gICAgZWxzZSBp
ZiAoaXM8QVNUOjpGb3JMb29wPihzdGF0ZW1lbnQpKQorICAgICAgICBicmVhazsKKyAgICBjYXNl
IEFTVDo6U3RhdGVtZW50OjpLaW5kOjpGb3JMb29wOgogICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoZG93bmNhc3Q8QVNUOjpGb3JMb29wPihzdGF0ZW1lbnQpKTsKLSAgICBlbHNlIGlmIChpczxB
U1Q6OklmU3RhdGVtZW50PihzdGF0ZW1lbnQpKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFT
VDo6U3RhdGVtZW50OjpLaW5kOjpJZjoKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25j
YXN0PEFTVDo6SWZTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6
UmV0dXJuPihzdGF0ZW1lbnQpKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6U3RhdGVt
ZW50OjpLaW5kOjpSZXR1cm46CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxB
U1Q6OlJldHVybj4oc3RhdGVtZW50KSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpTdGF0ZW1lbnRM
aXN0PihzdGF0ZW1lbnQpKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6U3RhdGVtZW50
OjpLaW5kOjpTdGF0ZW1lbnRMaXN0OgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNh
c3Q8QVNUOjpTdGF0ZW1lbnRMaXN0PihzdGF0ZW1lbnQpKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6
OlN3aXRjaENhc2U+KHN0YXRlbWVudCkpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpT
dGF0ZW1lbnQ6OktpbmQ6OlN3aXRjaENhc2U6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChk
b3duY2FzdDxBU1Q6OlN3aXRjaENhc2U+KHN0YXRlbWVudCkpOwotICAgIGVsc2UgaWYgKGlzPEFT
VDo6U3dpdGNoU3RhdGVtZW50PihzdGF0ZW1lbnQpKQorICAgICAgICBicmVhazsKKyAgICBjYXNl
IEFTVDo6U3RhdGVtZW50OjpLaW5kOjpTd2l0Y2g6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChkb3duY2FzdDxBU1Q6OlN3aXRjaFN0YXRlbWVudD4oc3RhdGVtZW50KSk7Ci0gICAgZWxzZSBp
ZiAoaXM8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudD4oc3RhdGVtZW50KSkKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6VmFyaWFibGVEZWNs
YXJhdGlvbnM6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlZhcmlh
YmxlRGVjbGFyYXRpb25zU3RhdGVtZW50PihzdGF0ZW1lbnQpKTsKLSAgICBlbHNlCisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OldoaWxlTG9vcDoKICAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6V2hpbGVMb29wPihzdGF0ZW1lbnQp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogfQogCiB2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6
QnJlYWsmKQpAQCAtMzQ5LDQ2ICszNjUsNjggQEAgdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkRv
V2hpbGVMb29wJiBkbwogCiB2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RXhwcmVzc2lvbiYgZXhw
cmVzc2lvbikKIHsKLSAgICBpZiAoaXM8QVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbj4oZXhwcmVz
c2lvbikpCisgICAgc3dpdGNoIChleHByZXNzaW9uLmtpbmQoKSkgeworICAgIGNhc2UgQVNUOjpF
eHByZXNzaW9uOjpLaW5kOjpBc3NpZ25tZW50OgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
ZG93bmNhc3Q8QVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgIGVs
c2UgaWYgKGlzPEFTVDo6Qm9vbGVhbkxpdGVyYWw+KGV4cHJlc3Npb24pKQorICAgICAgICBicmVh
azsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6Qm9vbGVhbkxpdGVyYWw6CiAgICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkJvb2xlYW5MaXRlcmFsPihleHBy
ZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpDYWxsRXhwcmVzc2lvbj4oZXhwcmVzc2lv
bikpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpDYWxs
OgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpDYWxsRXhwcmVzc2lv
bj4oZXhwcmVzc2lvbikpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6Q29tbWFFeHByZXNzaW9uPihl
eHByZXNzaW9uKSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246Oktp
bmQ6OkNvbW1hOgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpDb21t
YUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OkRlcmVmZXJl
bmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNU
OjpFeHByZXNzaW9uOjpLaW5kOjpEZXJlZmVyZW5jZToKICAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KGRvd25jYXN0PEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0g
ICAgZWxzZSBpZiAoaXM8QVNUOjpGbG9hdExpdGVyYWw+KGV4cHJlc3Npb24pKQorICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6RmxvYXRMaXRlcmFsOgogICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpGbG9hdExpdGVyYWw+KGV4cHJl
c3Npb24pKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OkludGVnZXJMaXRlcmFsPihleHByZXNzaW9u
KSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkludGVn
ZXJMaXRlcmFsOgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpJbnRl
Z2VyTGl0ZXJhbD4oZXhwcmVzc2lvbikpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6TG9naWNhbEV4
cHJlc3Npb24+KGV4cHJlc3Npb24pKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhw
cmVzc2lvbjo6S2luZDo6TG9naWNhbDoKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25j
YXN0PEFTVDo6TG9naWNhbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICBlbHNlIGlmIChp
czxBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uPihleHByZXNzaW9uKSkKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkxvZ2ljYWxOb3Q6CiAgICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uPihleHBy
ZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNz
aW9uPihleHByZXNzaW9uKSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Np
b246OktpbmQ6Ok1ha2VBcnJheVJlZmVyZW5jZToKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGRvd25jYXN0PEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikp
OwotICAgIGVsc2UgaWYgKGlzPEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uPihleHByZXNzaW9u
KSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6Ok1ha2VQ
b2ludGVyOgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpNYWtlUG9p
bnRlckV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6Ok51bGxM
aXRlcmFsPihleHByZXNzaW9uKSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJl
c3Npb246OktpbmQ6Ok51bGxMaXRlcmFsOgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93
bmNhc3Q8QVNUOjpOdWxsTGl0ZXJhbD4oZXhwcmVzc2lvbikpOwotICAgIGVsc2UgaWYgKGlzPEFT
VDo6RG90RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpCisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
QVNUOjpFeHByZXNzaW9uOjpLaW5kOjpEb3Q6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChk
b3duY2FzdDxBU1Q6OkRvdEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICBlbHNlIGlmIChp
czxBU1Q6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKSkKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6Okdsb2JhbFZhcmlhYmxlUmVmZXJl
bmNlOgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpHbG9iYWxWYXJp
YWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lvbikpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6SW5kZXhF
eHByZXNzaW9uPihleHByZXNzaW9uKSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4
cHJlc3Npb246OktpbmQ6OkluZGV4OgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNh
c3Q8QVNUOjpJbmRleEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICBlbHNlIGlmIChpczxB
U1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKQorICAgICAgICBicmVh
azsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6UmVhZE1vZGlmeVdyaXRlOgogICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHBy
ZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpUZXJuYXJ5RXhwcmVz
c2lvbj4oZXhwcmVzc2lvbikpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNz
aW9uOjpLaW5kOjpUZXJuYXJ5OgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8
QVNUOjpUZXJuYXJ5RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgIGVsc2UgaWYgKGlzPEFT
VDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbikpCisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOgog
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpVbnNpZ25lZEludGVnZXJM
aXRlcmFsPihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpFbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWw+KGV4cHJlc3Npb24pKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6
RXhwcmVzc2lvbjo6S2luZDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsOgogICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw+KGV4
cHJlc3Npb24pKTsKLSAgICBlbHNlCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHBy
ZXNzaW9uOjpLaW5kOjpWYXJpYWJsZVJlZmVyZW5jZToKICAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KGRvd25jYXN0PEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+KGV4cHJlc3Npb24pKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQogfQogCiB2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RG90RXhwcmVz
c2lvbiYgZG90RXhwcmVzc2lvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5UmVmZXJlbmNlVHlw
ZS5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ2LDcgKzQ3LDcgQEAgY2xhc3MgQXJyYXlSZWZl
cmVuY2VUeXBlIGZpbmFsIDogcHVibGljIAogICAgIHVzaW5nIEJhc2UgPSBSZWZlcmVuY2VUeXBl
OwogCiAgICAgQXJyYXlSZWZlcmVuY2VUeXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgQWRkcmVz
c1NwYWNlIGFkZHJlc3NTcGFjZSwgUmVmPFVubmFtZWRUeXBlPiBlbGVtZW50VHlwZSkKLSAgICAg
ICAgOiBCYXNlKGxvY2F0aW9uLCBhZGRyZXNzU3BhY2UsIFdURk1vdmUoZWxlbWVudFR5cGUpLCBL
aW5kOjpBcnJheVJlZmVyZW5jZVR5cGUpCisgICAgICAgIDogQmFzZShsb2NhdGlvbiwgYWRkcmVz
c1NwYWNlLCBXVEZNb3ZlKGVsZW1lbnRUeXBlKSwgS2luZDo6QXJyYXlSZWZlcmVuY2UpCiAgICAg
ewogICAgIH0KIHB1YmxpYzoKQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBBcnJheVJlZmVyZW5jZVR5cGUobG9jYXRpb24sIGFkZHJlc3NTcGFj
ZSwgV1RGTW92ZShlbGVtZW50VHlwZSkpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5BcnJheVJl
ZmVyZW5jZVR5cGUoKSA9IGRlZmF1bHQ7CisgICAgfkFycmF5UmVmZXJlbmNlVHlwZSgpID0gZGVm
YXVsdDsKIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKQEAgLTY3LDcgKzY4LDcg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRkcmVzc1NwYWNlKCkgPT0gb3RoZXIuYWRkcmVz
c1NwYWNlKCkgJiYgZWxlbWVudFR5cGUoKSA9PSBvdGhlci5lbGVtZW50VHlwZSgpOwogICAgIH0K
IAotICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IG92ZXJyaWRlCisgICAgU3RyaW5nIHRvU3Ry
aW5nKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKGVsZW1lbnRUeXBl
KCkudG9TdHJpbmcoKSwgIltdIik7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlUeXBlLmgJKHJldmlz
aW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEFycmF5VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEFy
cmF5VHlwZSBmaW5hbCA6IHB1YmxpYyBVbm5hbWVkVHkKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBcnJheVR5cGUpOwogICAgIEFycmF5VHlw
ZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIFJlZjxVbm5hbWVkVHlwZT4gZWxlbWVudFR5cGUsIHVu
c2lnbmVkIG51bUVsZW1lbnRzKQotICAgICAgICA6IFVubmFtZWRUeXBlKGxvY2F0aW9uLCBLaW5k
OjpBcnJheVR5cGUpCisgICAgICAgIDogVW5uYW1lZFR5cGUobG9jYXRpb24sIEtpbmQ6OkFycmF5
KQogICAgICAgICAsIG1fZWxlbWVudFR5cGUoV1RGTW92ZShlbGVtZW50VHlwZSkpCiAgICAgICAg
ICwgbV9udW1FbGVtZW50cyhudW1FbGVtZW50cykKICAgICB7CkBAIC01OCw3ICs1OCw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXJyYXlUeXBlKGxvY2F0aW9uLCBX
VEZNb3ZlKGVsZW1lbnRUeXBlKSwgbnVtRWxlbWVudHMpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IH5BcnJheVR5cGUoKSA9IGRlZmF1bHQ7CisgICAgfkFycmF5VHlwZSgpID0gZGVmYXVsdDsKIAog
ICAgIGNvbnN0IFVubmFtZWRUeXBlJiB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50VHlw
ZTsgfQogICAgIFVubmFtZWRUeXBlJiB0eXBlKCkgeyByZXR1cm4gbV9lbGVtZW50VHlwZTsgfQpA
QCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBudW1FbGVtZW50cygpID09
IG90aGVyLm51bUVsZW1lbnRzKCkgJiYgdHlwZSgpID09IG90aGVyLnR5cGUoKTsKICAgICB9CiAK
LSAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCBvdmVycmlkZQorICAgIFN0cmluZyB0b1N0cmlu
ZygpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbWFrZVN0cmluZyh0eXBlKCkudG9TdHJp
bmcoKSwgJ1snLCBudW1FbGVtZW50cygpLCAnXScpOwogICAgIH0KQEAgLTkwLDYgKzkwLDggQEAg
cHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoQXJyYXlUeXBlKQorCiBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1VOTkFNRURfVFlQRShBcnJheVR5cGUsIGlzQXJyYXlU
eXBlKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lv
bi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NywxMSArMzcsMTEgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNs
YXNzIEFzc2lnbm1lbnRFeHByZXNzaW9uIDogcHVibGljIEV4cHJlc3Npb24geworY2xhc3MgQXNz
aWdubWVudEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQXNzaWdubWVudEV4cHJlc3Npb24oQ29k
ZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBsZWZ0LCBVbmlxdWVS
ZWY8RXhwcmVzc2lvbj4mJiByaWdodCkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQor
ICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkFzc2lnbm1lbnQpCiAgICAgICAg
ICwgbV9sZWZ0KFdURk1vdmUobGVmdCkpCiAgICAgICAgICwgbV9yaWdodChXVEZNb3ZlKHJpZ2h0
KSkKICAgICB7CkBAIC01MCwxMyArNTAsMTEgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCi0g
ICAgdmlydHVhbCB+QXNzaWdubWVudEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfkFzc2ln
bm1lbnRFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwogCiAgICAgQXNzaWdubWVudEV4cHJlc3Npb24o
Y29uc3QgQXNzaWdubWVudEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBBc3NpZ25tZW50RXhw
cmVzc2lvbihBc3NpZ25tZW50RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlz
QXNzaWdubWVudEV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0K
ICAgICBFeHByZXNzaW9uJiBsZWZ0KCkgeyByZXR1cm4gbV9sZWZ0OyB9CiAgICAgRXhwcmVzc2lv
biYgcmlnaHQoKSB7IHJldHVybiBtX3JpZ2h0OyB9CiAgICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+
IHRha2VSaWdodCgpIHsgcmV0dXJuIFdURk1vdmUobV9yaWdodCk7IH0KQEAgLTc1LDYgKzczLDgg
QEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoQXNzaWdubWVudEV4cHJl
c3Npb24pCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihBc3NpZ25t
ZW50RXhwcmVzc2lvbiwgaXNBc3NpZ25tZW50RXhwcmVzc2lvbigpKQogCiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJsb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
QmxvY2suaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjQgKzM4LDIy
IEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBCbG9jayA6
IHB1YmxpYyBTdGF0ZW1lbnQgeworY2xhc3MgQmxvY2sgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBCbG9jayhDb2Rl
TG9jYXRpb24gbG9jYXRpb24sIFN0YXRlbWVudHMmJiBzdGF0ZW1lbnRzKQotICAgICAgICA6IFN0
YXRlbWVudChsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OkJs
b2NrKQogICAgICAgICAsIG1fc3RhdGVtZW50cyhXVEZNb3ZlKHN0YXRlbWVudHMpKQogICAgIHsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIH5CbG9jaygpID0gZGVmYXVsdDsKKyAgICB+QmxvY2soKSA9
IGRlZmF1bHQ7CiAKICAgICBCbG9jayhjb25zdCBCbG9jayYpID0gZGVsZXRlOwogICAgIEJsb2Nr
KEJsb2NrJiYpID0gZGVmYXVsdDsKIAogICAgIFN0YXRlbWVudHMmIHN0YXRlbWVudHMoKSB7IHJl
dHVybiBtX3N0YXRlbWVudHM7IH0KIAotICAgIGJvb2wgaXNCbG9jaygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLQogcHJpdmF0ZToKICAgICBTdGF0ZW1lbnRzIG1fc3RhdGVtZW50
czsKIH07CkBAIC02Niw2ICs2NCw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRf
REVMRVRFKEJsb2NrKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChC
bG9jaywgaXNCbG9jaygpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEJvb2xlYW5MaXRlcmFsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQm9vbGVhbkxpdGVyYWwu
aAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQm9vbGVhbkxpdGVyYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTYgKzM2
LDE2IEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBCb29s
ZWFuTGl0ZXJhbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK2NsYXNzIEJvb2xlYW5MaXRlcmFsIGZp
bmFsIDogcHVibGljIEV4cHJlc3Npb24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIEJvb2xlYW5MaXRlcmFsKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgYm9vbCB2
YWx1ZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Np
b24obG9jYXRpb24sIEtpbmQ6OkJvb2xlYW5MaXRlcmFsKQogICAgICAgICAsIG1fdmFsdWUodmFs
dWUpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfkJvb2xlYW5MaXRlcmFsKCkgPSBkZWZh
dWx0OworICAgIH5Cb29sZWFuTGl0ZXJhbCgpID0gZGVmYXVsdDsKIAogICAgIEJvb2xlYW5MaXRl
cmFsKGNvbnN0IEJvb2xlYW5MaXRlcmFsJikgPSBkZWxldGU7CiAgICAgQm9vbGVhbkxpdGVyYWwo
Qm9vbGVhbkxpdGVyYWwmJikgPSBkZWZhdWx0OwpAQCAtNTUsOCArNTUsNiBAQCBwdWJsaWM6CiAK
ICAgICBib29sIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCi0gICAgYm9vbCBp
c0Jvb2xlYW5MaXRlcmFsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAg
Qm9vbGVhbkxpdGVyYWwgY2xvbmUoKSBjb25zdAogICAgIHsKICAgICAgICAgQm9vbGVhbkxpdGVy
YWwgcmVzdWx0KGNvZGVMb2NhdGlvbigpLCBtX3ZhbHVlKTsKQEAgLTc0LDYgKzcyLDggQEAgcHJp
dmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoQm9vbGVhbkxpdGVyYWwpCisKIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihCb29sZWFuTGl0ZXJhbCwgaXNC
b29sZWFuTGl0ZXJhbCgpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnJlYWsuaAkocmV2aXNpb24gMjQ4NDA0
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnJlYWsu
aAkod29ya2luZyBjb3B5KQpAQCAtMzcsMjEgKzM3LDE5IEBAIG5hbWVzcGFjZSBXSExTTCB7CiAK
IG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBCcmVhayA6IHB1YmxpYyBTdGF0ZW1lbnQgeworY2xh
c3MgQnJlYWsgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBCcmVhayhDb2RlTG9jYXRpb24gbG9jYXRpb24pCi0gICAg
ICAgIDogU3RhdGVtZW50KGxvY2F0aW9uKQorICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwg
S2luZDo6QnJlYWspCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfkJyZWFrKCkgPSBkZWZh
dWx0OworICAgIH5CcmVhaygpID0gZGVmYXVsdDsKIAogICAgIEJyZWFrKGNvbnN0IEJyZWFrJikg
PSBkZWxldGU7CiAgICAgQnJlYWsoQnJlYWsmJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc0Jy
ZWFrKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiBwcml2YXRlOgogfTsKIApA
QCAtNjEsNiArNTksOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShC
cmVhaykKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoQnJlYWssIGlz
QnJlYWsoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xDYWxsRXhwcmVzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENhbGxFeHByZXNzaW9uLmgJKHJldmlz
aW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTENhbGxFeHByZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDI3ICs0MCwyNSBAQCBu
YW1lc3BhY2UgQVNUIHsKIAogY2xhc3MgTmFtZWRUeXBlOwogCi1jbGFzcyBDYWxsRXhwcmVzc2lv
biA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK2NsYXNzIENhbGxFeHByZXNzaW9uIGZpbmFsIDogcHVi
bGljIEV4cHJlc3Npb24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIENhbGxFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSwg
VmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4mJiBhcmd1bWVudHMpCi0gICAgICAgIDogRXhw
cmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpD
YWxsKQogICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQogICAgICAgICAsIG1fYXJndW1l
bnRzKFdURk1vdmUoYXJndW1lbnRzKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+Q2Fs
bEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7Ci0KICAgICBDYWxsRXhwcmVzc2lvbihjb25zdCBDYWxs
RXhwcmVzc2lvbiYpID0gZGVsZXRlOwogICAgIENhbGxFeHByZXNzaW9uKENhbGxFeHByZXNzaW9u
JiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNDYWxsRXhwcmVzc2lvbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+
JiBhcmd1bWVudHMoKSB7IHJldHVybiBtX2FyZ3VtZW50czsgfQogCiAgICAgU3RyaW5nJiBuYW1l
KCkgeyByZXR1cm4gbV9uYW1lOyB9CiAKKyAgICB+Q2FsbEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7
CisKICAgICB2b2lkIHNldENhc3REYXRhKE5hbWVkVHlwZSYgbmFtZWRUeXBlKQogICAgIHsKICAg
ICAgICAgbV9jYXN0UmV0dXJuVHlwZSA9ICZuYW1lZFR5cGU7CkBAIC05Myw2ICs5MSw4IEBAIHBy
aXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKENhbGxFeHByZXNzaW9uKQorCiBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oQ2FsbEV4cHJlc3Npb24sIGlz
Q2FsbEV4cHJlc3Npb24oKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb21tYUV4cHJlc3Npb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb21tYUV4cHJlc3Np
b24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMQ29tbWFFeHByZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDIy
ICszOCwyMCBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3Mg
Q29tbWFFeHByZXNzaW9uIDogcHVibGljIEV4cHJlc3Npb24geworY2xhc3MgQ29tbWFFeHByZXNz
aW9uIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIENvbW1hRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24s
IFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiYgbGlzdCkKLSAgICAgICAgOiBFeHByZXNz
aW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkNvbW1h
KQogICAgICAgICAsIG1fbGlzdChXVEZNb3ZlKGxpc3QpKQogICAgIHsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIH5Db21tYUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfkNvbW1hRXhwcmVzc2lv
bigpID0gZGVmYXVsdDsKIAogICAgIENvbW1hRXhwcmVzc2lvbihjb25zdCBDb21tYUV4cHJlc3Np
b24mKSA9IGRlbGV0ZTsKICAgICBDb21tYUV4cHJlc3Npb24oQ29tbWFFeHByZXNzaW9uJiYpID0g
ZGVmYXVsdDsKIAotICAgIGJvb2wgaXNDb21tYUV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9Ci0KICAgICBWZWN0b3I8VW5pcXVlUmVmPEV4cHJlc3Npb24+PiYgbGlz
dCgpIHsgcmV0dXJuIG1fbGlzdDsgfQogCiBwcml2YXRlOgpAQCAtNjYsNiArNjQsOCBAQCBwcml2
YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShDb21tYUV4cHJlc3Npb24pCisKIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihDb21tYUV4cHJlc3Npb24sIGlz
Q29tbWFFeHByZXNzaW9uKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRF
eHByZXNzaW9uLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBBU1QgewogLy8gRklYTUU6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNTggbWFjT1MgU2llcnJhIGRvZXNuJ3Qg
c2VlbSB0byBzdXBwb3J0IHB1dHRpbmcgVmFyaWFudHMgaW5zaWRlIFZhcmlhbnRzLAogLy8gc28g
dGhpcyBpcyBhIHdyYXBwZXIgY2xhc3MgdG8gbWFrZSBzdXJlIHRoYXQgZG9lc24ndCBoYXBwZW4u
IEFzIHNvb24gYXMgd2UgZG9uJ3QKIC8vIGhhdmUgdG8gc3VwcG9ydCBTaWVycmEsIHRoaXMgY2Fu
IGJlIG1pZ3JhdGVkIHRvIGEgVmFyaWFudCBwcm9wZXIuCi1jbGFzcyBDb25zdGFudEV4cHJlc3Np
b24geworY2xhc3MgQ29uc3RhbnRFeHByZXNzaW9uIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDb25zdGFudEV4cHJlc3Npb24oSW50ZWdlckxpdGVy
YWwmJiBpbnRlZ2VyTGl0ZXJhbCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29udGludWUuaAkocmV2aXNpb24gMjQ4NDA0
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29udGlu
dWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMjEgKzM3LDE5IEBAIG5hbWVzcGFjZSBXSExTTCB7
CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBDb250aW51ZSA6IHB1YmxpYyBTdGF0ZW1lbnQg
eworY2xhc3MgQ29udGludWUgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDb250aW51ZShDb2RlTG9jYXRpb24gbG9j
YXRpb24pCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uKQorICAgICAgICA6IFN0YXRlbWVu
dChsb2NhdGlvbiwgS2luZDo6Q29udGludWUpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwg
fkNvbnRpbnVlKCkgPSBkZWZhdWx0OworICAgIH5Db250aW51ZSgpID0gZGVmYXVsdDsKIAogICAg
IENvbnRpbnVlKGNvbnN0IENvbnRpbnVlJikgPSBkZWxldGU7CiAgICAgQ29udGludWUoQ29udGlu
dWUmJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc0NvbnRpbnVlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQotCiBwcml2YXRlOgogfTsKIApAQCAtNjEsNiArNTksOCBAQCBwcml2
YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShDb250aW51ZSkKKwogU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoQ29udGludWUsIGlzQ29udGludWUoKSkKIAog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xEZWZhdWx0RGVsZXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVmYXVsdERlbGV0ZS5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlZmF1bHREZWxldGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjZGVmaW5lIERFRklORV9ERUZBVUxUX0RFTEVU
RSh0eXBlKSBcCisgICAgbmFtZXNwYWNlIHN0ZCB7IFwKKyAgICAgICAgdGVtcGxhdGU8PiBcCisg
ICAgICAgIHN0cnVjdCBkZWZhdWx0X2RlbGV0ZTxXZWJDb3JlOjpXSExTTDo6QVNUOjp0eXBlPiB7
IFwKKyAgICAgICAgICAgIHZvaWQgb3BlcmF0b3IoKShXZWJDb3JlOjpXSExTTDo6QVNUOjp0eXBl
KiB2YWx1ZSkgXAorICAgICAgICAgICAgeyBcCisgICAgICAgICAgICAgICAgV2ViQ29yZTo6V0hM
U0w6OkFTVDo6dHlwZTo6ZGVzdHJveSgqdmFsdWUpOyBcCisgICAgICAgICAgICB9IFwKKyAgICAg
ICAgfTsgXAorICAgIH0gXAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlcmVmZXJl
bmNlRXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsMjIgKzM3LDIwIEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFj
ZSBBU1QgewogCi1jbGFzcyBEZXJlZmVyZW5jZUV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lv
biB7CitjbGFzcyBEZXJlZmVyZW5jZUV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lv
biB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRGVyZWZlcmVu
Y2VFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+
JiYgcG9pbnRlcikKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4
cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkRlcmVmZXJlbmNlKQogICAgICAgICAsIG1fcG9pbnRl
cihXVEZNb3ZlKHBvaW50ZXIpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5EZXJlZmVy
ZW5jZUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfkRlcmVmZXJlbmNlRXhwcmVzc2lvbigp
ID0gZGVmYXVsdDsKIAogICAgIERlcmVmZXJlbmNlRXhwcmVzc2lvbihjb25zdCBEZXJlZmVyZW5j
ZUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBEZXJlZmVyZW5jZUV4cHJlc3Npb24oRGVyZWZl
cmVuY2VFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNEZXJlZmVyZW5jZUV4
cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNz
aW9uJiBwb2ludGVyKCkgeyByZXR1cm4gbV9wb2ludGVyOyB9CiAKIHByaXZhdGU6CkBAIC02NSw2
ICs2Myw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKERlcmVmZXJl
bmNlRXhwcmVzc2lvbikKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9O
KERlcmVmZXJlbmNlRXhwcmVzc2lvbiwgaXNEZXJlZmVyZW5jZUV4cHJlc3Npb24oKSkKIAogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xE
b1doaWxlTG9vcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29wLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29wLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDIzICszOCwyMSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1l
c3BhY2UgQVNUIHsKIAotY2xhc3MgRG9XaGlsZUxvb3AgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2Ns
YXNzIERvV2hpbGVMb29wIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRG9XaGlsZUxvb3AoQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uLCBVbmlxdWVSZWY8U3RhdGVtZW50PiYmIGJvZHksIFVuaXF1ZVJlZjxFeHByZXNzaW9u
PiYmIGNvbmRpdGlvbmFsKQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbikKKyAgICAgICAg
OiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OkRvV2hpbGVMb29wKQogICAgICAgICAsIG1fYm9k
eShXVEZNb3ZlKGJvZHkpKQogICAgICAgICAsIG1fY29uZGl0aW9uYWwoV1RGTW92ZShjb25kaXRp
b25hbCkpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfkRvV2hpbGVMb29wKCkgPSBkZWZh
dWx0OworICAgIH5Eb1doaWxlTG9vcCgpID0gZGVmYXVsdDsKIAogICAgIERvV2hpbGVMb29wKGNv
bnN0IERvV2hpbGVMb29wJikgPSBkZWxldGU7CiAgICAgRG9XaGlsZUxvb3AoRG9XaGlsZUxvb3Am
JikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc0RvV2hpbGVMb29wKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgU3RhdGVtZW50JiBib2R5KCkgeyByZXR1cm4gbV9ib2R5
OyB9CiAgICAgRXhwcmVzc2lvbiYgY29uZGl0aW9uYWwoKSB7IHJldHVybiBtX2NvbmRpdGlvbmFs
OyB9CiAKQEAgLTY5LDYgKzY3LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9E
RUxFVEUoRG9XaGlsZUxvb3ApCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVN
RU5UKERvV2hpbGVMb29wLCBpc0RvV2hpbGVMb29wKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG90RXhwcmVzc2lvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TERvdEV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG90RXhwcmVzc2lvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCwzMyArMzgsMzEgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7
CiAKLWNsYXNzIERvdEV4cHJlc3Npb24gOiBwdWJsaWMgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9u
IHsKK2NsYXNzIERvdEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgUHJvcGVydHlBY2Nlc3NFeHBy
ZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBEb3RF
eHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYg
YmFzZSwgU3RyaW5nJiYgZmllbGROYW1lKQotICAgICAgICA6IFByb3BlcnR5QWNjZXNzRXhwcmVz
c2lvbihsb2NhdGlvbiwgV1RGTW92ZShiYXNlKSkKKyAgICAgICAgOiBQcm9wZXJ0eUFjY2Vzc0V4
cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkRvdCwgV1RGTW92ZShiYXNlKSkKICAgICAgICAgLCBt
X2ZpZWxkTmFtZShXVEZNb3ZlKGZpZWxkTmFtZSkpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1
YWwgfkRvdEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfkRvdEV4cHJlc3Npb24oKSA9IGRl
ZmF1bHQ7CiAKICAgICBEb3RFeHByZXNzaW9uKGNvbnN0IERvdEV4cHJlc3Npb24mKSA9IGRlbGV0
ZTsKICAgICBEb3RFeHByZXNzaW9uKERvdEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwogCi0gICAg
Ym9vbCBpc0RvdEV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0K
LSAgICBTdHJpbmcgZ2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJp
bmcgZ2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtYWtl
U3RyaW5nKCJvcGVyYXRvci4iLCBtX2ZpZWxkTmFtZSk7CiAgICAgfQogCi0gICAgU3RyaW5nIHNl
dHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgU3RyaW5nIHNldHRlckZ1bmN0
aW9uTmFtZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygib3BlcmF0
b3IuIiwgbV9maWVsZE5hbWUsICI9Iik7CiAgICAgfQogCi0gICAgU3RyaW5nIGFuZGVyRnVuY3Rp
b25OYW1lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJpbmcgYW5kZXJGdW5jdGlvbk5hbWUoKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIm9wZXJhdG9yJi4iLCBtX2Zp
ZWxkTmFtZSk7CiAgICAgfQpAQCAtODEsNiArNzksOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklO
RV9ERUZBVUxUX0RFTEVURShEb3RFeHByZXNzaW9uKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X1dITFNMX0VYUFJFU1NJT04oRG90RXhwcmVzc2lvbiwgaXNEb3RFeHByZXNzaW9uKCkpCiAKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0
ZW1lbnQuaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCwyMiArMzgsMjAgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNl
IEFTVCB7CiAKLWNsYXNzIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQgOiBwdWJsaWMgU3Rh
dGVtZW50IHsKK2NsYXNzIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQgZmluYWwgOiBwdWJs
aWMgU3RhdGVtZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGVm
ZmVjdGZ1bEV4cHJlc3Npb24pCi0gICAgICAgIDogU3RhdGVtZW50KGVmZmVjdGZ1bEV4cHJlc3Np
b24tPmNvZGVMb2NhdGlvbigpKQorICAgICAgICA6IFN0YXRlbWVudChlZmZlY3RmdWxFeHByZXNz
aW9uLT5jb2RlTG9jYXRpb24oKSwgS2luZDo6RWZmZWN0ZnVsRXhwcmVzc2lvbikKICAgICAgICAg
LCBtX2VmZmVjdGZ1bEV4cHJlc3Npb24oV1RGTW92ZShlZmZlY3RmdWxFeHByZXNzaW9uKSkKICAg
ICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgp
ID0gZGVmYXVsdDsKKyAgICB+RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpID0gZGVmYXVs
dDsKIAogICAgIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoY29uc3QgRWZmZWN0ZnVsRXhw
cmVzc2lvblN0YXRlbWVudCYpID0gZGVsZXRlOwogICAgIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0
ZW1lbnQoRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYmKSA9IGRlZmF1bHQ7CiAKLSAgICBi
b29sIGlzRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KLQogICAgIEV4cHJlc3Npb24mIGVmZmVjdGZ1bEV4cHJlc3Npb24oKSB7IHJl
dHVybiBtX2VmZmVjdGZ1bEV4cHJlc3Npb247IH0KIAogcHJpdmF0ZToKQEAgLTY2LDYgKzY0LDgg
QEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoRWZmZWN0ZnVsRXhwcmVz
c2lvblN0YXRlbWVudCkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQo
RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCwgaXNFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVt
ZW50KCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0
aW9uLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NSwyMiArNDUsMjAgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAK
LWNsYXNzIEVudW1lcmF0aW9uRGVmaW5pdGlvbiA6IHB1YmxpYyBOYW1lZFR5cGUgeworY2xhc3Mg
RW51bWVyYXRpb25EZWZpbml0aW9uIGZpbmFsIDogcHVibGljIE5hbWVkVHlwZSB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRW51bWVyYXRpb25EZWZpbml0aW9u
KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSwgUmVmPFVubmFtZWRUeXBlPiB0
eXBlKQotICAgICAgICA6IE5hbWVkVHlwZShsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSkKKyAgICAg
ICAgOiBOYW1lZFR5cGUoS2luZDo6RW51bWVyYXRpb25EZWZpbml0aW9uLCBsb2NhdGlvbiwgV1RG
TW92ZShuYW1lKSkKICAgICAgICAgLCBtX3R5cGUoV1RGTW92ZSh0eXBlKSkKICAgICB7CiAgICAg
fQogCi0gICAgdmlydHVhbCB+RW51bWVyYXRpb25EZWZpbml0aW9uKCkgPSBkZWZhdWx0OworICAg
IH5FbnVtZXJhdGlvbkRlZmluaXRpb24oKSA9IGRlZmF1bHQ7CiAKICAgICBFbnVtZXJhdGlvbkRl
ZmluaXRpb24oY29uc3QgRW51bWVyYXRpb25EZWZpbml0aW9uJikgPSBkZWxldGU7CiAgICAgRW51
bWVyYXRpb25EZWZpbml0aW9uKEVudW1lcmF0aW9uRGVmaW5pdGlvbiYmKSA9IGRlZmF1bHQ7CiAK
LSAgICBib29sIGlzRW51bWVyYXRpb25EZWZpbml0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQotCiAgICAgVW5uYW1lZFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0K
IAogICAgIGJvb2wgYWRkKEVudW1lcmF0aW9uTWVtYmVyJiYgbWVtYmVyKQpAQCAtOTYsNiArOTQs
OCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShFbnVtZXJhdGlvbkRl
ZmluaXRpb24pCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfTkFNRURfVFlQRShFbnVt
ZXJhdGlvbkRlZmluaXRpb24sIGlzRW51bWVyYXRpb25EZWZpbml0aW9uKCkpCiAKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmgJKHJldmlz
aW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxNyAr
NDAsMTcgQEAgbmFtZXNwYWNlIEFTVCB7CiBjbGFzcyBFbnVtZXJhdGlvbkRlZmluaXRpb247CiBj
bGFzcyBFbnVtZXJhdGlvbk1lbWJlcjsKIAotY2xhc3MgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
IDogcHVibGljIEV4cHJlc3Npb24geworY2xhc3MgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsIGZp
bmFsIDogcHVibGljIEV4cHJlc3Npb24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbChDb2RlTG9jYXRpb24gbG9jYXRp
b24sIFN0cmluZyYmIGxlZnQsIFN0cmluZyYmIHJpZ2h0KQotICAgICAgICA6IEV4cHJlc3Npb24o
bG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6RW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsKQogICAgICAgICAsIG1fbGVmdChXVEZNb3ZlKGxlZnQpKQogICAgICAg
ICAsIG1fcmlnaHQoV1RGTW92ZShyaWdodCkpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwg
fkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCgpID0gZGVmYXVsdDsKKyAgICB+RW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsKCkgPSBkZWZhdWx0OwogCiAgICAgZXhwbGljaXQgRW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsKGNvbnN0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYpID0gZGVsZXRlOwogICAg
IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbChFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmJikgPSBk
ZWZhdWx0OwpAQCAtNTgsOCArNTgsNiBAQCBwdWJsaWM6CiAgICAgRW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsJiBvcGVyYXRvcj0oY29uc3QgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJikgPSBkZWxl
dGU7CiAgICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBvcGVyYXRvcj0oRW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNFbnVtZXJhdGlvbk1lbWJl
ckxpdGVyYWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBzdGF0aWMg
RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsIHdyYXAoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJp
bmcmJiBsZWZ0LCBTdHJpbmcmJiByaWdodCwgRW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJh
dGlvbkRlZmluaXRpb24sIEVudW1lcmF0aW9uTWVtYmVyJiBlbnVtZXJhdGlvbk1lbWJlcikKICAg
ICB7CiAgICAgICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCByZXN1bHQobG9jYXRpb24sIFdU
Rk1vdmUobGVmdCksIFdURk1vdmUocmlnaHQpKTsKQEAgLTExOCw2ICsxMTYsOCBAQCBwcml2YXRl
OgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwp
CisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihFbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwsIGlzRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKCkpCiAKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRXhwcmVzc2lvbi5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5j
bHVkZSAiV0hMU0xBU1QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hM
U0wgeworCituYW1lc3BhY2UgQVNUIHsKKwordm9pZCBFeHByZXNzaW9uOjpkZXN0cm95KEV4cHJl
c3Npb24mIGV4cHJlc3Npb24pCit7CisgICAgc3dpdGNoIChleHByZXNzaW9uLmtpbmQoKSkgewor
ICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpBc3NpZ25tZW50OgorICAgICAgICBkZWxl
dGUgJmRvd25jYXN0PEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24+KGV4cHJlc3Npb24pOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6Qm9vbGVhbkxpdGVy
YWw6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpCb29sZWFuTGl0ZXJhbD4oZXhwcmVz
c2lvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpD
YWxsOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PEFTVDo6Q2FsbEV4cHJlc3Npb24+KGV4cHJl
c3Npb24pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6
Q29tbWE6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpDb21tYUV4cHJlc3Npb24+KGV4
cHJlc3Npb24pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2lu
ZDo6RGVyZWZlcmVuY2U6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpEZXJlZmVyZW5j
ZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6
RXhwcmVzc2lvbjo6S2luZDo6RmxvYXRMaXRlcmFsOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0
PEFTVDo6RmxvYXRMaXRlcmFsPihleHByZXNzaW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkludGVnZXJMaXRlcmFsOgorICAgICAgICBkZWxldGUg
JmRvd25jYXN0PEFTVDo6SW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6TG9naWNhbDoKKyAgICAgICAgZGVs
ZXRlICZkb3duY2FzdDxBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uPihleHByZXNzaW9uKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkxvZ2ljYWxOb3Q6Cisg
ICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpMb2dpY2FsTm90RXhwcmVzc2lvbj4oZXhwcmVz
c2lvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpN
YWtlQXJyYXlSZWZlcmVuY2U6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpNYWtlQXJy
YXlSZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6Ok1ha2VQb2ludGVyOgorICAgICAgICBkZWxldGUg
JmRvd25jYXN0PEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uPihleHByZXNzaW9uKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6Ok51bGxMaXRlcmFsOgor
ICAgICAgICBkZWxldGUgJmRvd25jYXN0PEFTVDo6TnVsbExpdGVyYWw+KGV4cHJlc3Npb24pOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6RG90OgorICAg
ICAgICBkZWxldGUgJmRvd25jYXN0PEFTVDo6RG90RXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpHbG9iYWxWYXJp
YWJsZVJlZmVyZW5jZToKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6Okdsb2JhbFZhcmlh
YmxlUmVmZXJlbmNlPihleHByZXNzaW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6
OkV4cHJlc3Npb246OktpbmQ6OkluZGV4OgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PEFTVDo6
SW5kZXhFeHByZXNzaW9uPihleHByZXNzaW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBB
U1Q6OkV4cHJlc3Npb246OktpbmQ6OlJlYWRNb2RpZnlXcml0ZToKKyAgICAgICAgZGVsZXRlICZk
b3duY2FzdDxBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6VGVybmFyeToKKyAg
ICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OlRlcm5hcnlFeHByZXNzaW9uPihleHByZXNzaW9u
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OlVuc2ln
bmVkSW50ZWdlckxpdGVyYWw6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpVbnNpZ25l
ZEludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBB
U1Q6OkV4cHJlc3Npb246OktpbmQ6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDoKKyAgICAgICAg
ZGVsZXRlICZkb3duY2FzdDxBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbD4oZXhwcmVzc2lv
bik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpWYXJp
YWJsZVJlZmVyZW5jZToKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OlZhcmlhYmxlUmVm
ZXJlbmNlPihleHByZXNzaW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitTdHJpbmcg
UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uOjpnZXR0ZXJGdW5jdGlvbk5hbWUoKSBjb25zdAorewor
ICAgIGlmIChpczxEb3RFeHByZXNzaW9uPigqdGhpcykpCisgICAgICAgIHJldHVybiBkb3duY2Fz
dDxEb3RFeHByZXNzaW9uPigqdGhpcykuZ2V0dGVyRnVuY3Rpb25OYW1lKCk7CisgICAgaWYgKGlz
PEluZGV4RXhwcmVzc2lvbj4oKnRoaXMpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8SW5kZXhF
eHByZXNzaW9uPigqdGhpcykuZ2V0dGVyRnVuY3Rpb25OYW1lKCk7CisgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKK30KKworU3RyaW5nIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbjo6
c2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3QKK3sKKyAgICBpZiAoaXM8RG90RXhwcmVzc2lvbj4o
KnRoaXMpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8RG90RXhwcmVzc2lvbj4oKnRoaXMpLnNl
dHRlckZ1bmN0aW9uTmFtZSgpOworICAgIGlmIChpczxJbmRleEV4cHJlc3Npb24+KCp0aGlzKSkK
KyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEluZGV4RXhwcmVzc2lvbj4oKnRoaXMpLnNldHRlckZ1
bmN0aW9uTmFtZSgpOworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK1N0
cmluZyBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb246OmFuZGVyRnVuY3Rpb25OYW1lKCkgY29uc3QK
K3sKKyAgICBpZiAoaXM8RG90RXhwcmVzc2lvbj4oKnRoaXMpKQorICAgICAgICByZXR1cm4gZG93
bmNhc3Q8RG90RXhwcmVzc2lvbj4oKnRoaXMpLmFuZGVyRnVuY3Rpb25OYW1lKCk7CisgICAgaWYg
KGlzPEluZGV4RXhwcmVzc2lvbj4oKnRoaXMpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8SW5k
ZXhFeHByZXNzaW9uPigqdGhpcykuYW5kZXJGdW5jdGlvbk5hbWUoKTsKKyAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfSAvLyBuYW1l
c3BhY2UgV0hMU0wKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xFeHByZXNzaW9uLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAt
MjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiV0hMU0xBZGRyZXNzU3BhY2UuaCIKICNpbmNsdWRl
ICJXSExTTENvZGVMb2NhdGlvbi5oIgorI2luY2x1ZGUgIldITFNMRGVmYXVsdERlbGV0ZS5oIgog
I2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtNDIsMTMgKzQzLDQyIEBAIG5hbWVzcGFj
ZSBBU1QgewogCiBjbGFzcyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKKworcHJvdGVjdGVkOgorICAgIH5FeHByZXNzaW9uKCkgPSBkZWZhdWx0OworCiBwdWJsaWM6
Ci0gICAgRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uKQotICAgICAgICA6IG1f
Y29kZUxvY2F0aW9uKGNvZGVMb2NhdGlvbikKKworICAgIGVudW0gY2xhc3MgS2luZCA6IHVpbnQ4
X3QgeworICAgICAgICBBc3NpZ25tZW50LAorICAgICAgICBCb29sZWFuTGl0ZXJhbCwKKyAgICAg
ICAgQ2FsbCwKKyAgICAgICAgQ29tbWEsCisgICAgICAgIERlcmVmZXJlbmNlLAorICAgICAgICBE
b3QsCisgICAgICAgIEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLAorICAgICAgICBGbG9hdExpdGVy
YWwsCisgICAgICAgIEluZGV4LAorICAgICAgICBJbnRlZ2VyTGl0ZXJhbCwKKyAgICAgICAgTG9n
aWNhbCwKKyAgICAgICAgTG9naWNhbE5vdCwKKyAgICAgICAgTWFrZUFycmF5UmVmZXJlbmNlLAor
ICAgICAgICBNYWtlUG9pbnRlciwKKyAgICAgICAgTnVsbExpdGVyYWwsCisgICAgICAgIFJlYWRN
b2RpZnlXcml0ZSwKKyAgICAgICAgVGVybmFyeSwKKyAgICAgICAgVW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbCwKKyAgICAgICAgVmFyaWFibGVSZWZlcmVuY2UsCisgICAgICAgIEVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbCwKKyAgICB9OworCisgICAgRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gY29kZUxv
Y2F0aW9uLCBLaW5kIGtpbmQpCisgICAgICAgIDogbV9raW5kKGtpbmQpCisgICAgICAgICwgbV9j
b2RlTG9jYXRpb24oY29kZUxvY2F0aW9uLnN0YXJ0T2Zmc2V0KCkpCiAgICAgewogICAgIH0KIAot
ICAgIHZpcnR1YWwgfkV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgc3RhdGljIHZvaWQgZGVz
dHJveShFeHByZXNzaW9uJik7CiAKICAgICBFeHByZXNzaW9uKGNvbnN0IEV4cHJlc3Npb24mKSA9
IGRlbGV0ZTsKICAgICBFeHByZXNzaW9uKEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwpAQCAtOTIs
MzMgKzEyMiwzNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvdGhlci5zZXRUeXBlQW5ub3RhdGlv
bihUeXBlQW5ub3RhdGlvbigqdHlwZUFubm90YXRpb24pKTsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IGJvb2wgaXNBc3NpZ25tZW50RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzQm9vbGVhbkxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBpc0NhbGxFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNDb21tYUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0RlcmVmZXJlbmNlRXhwcmVzc2lvbigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRG90RXhwcmVzc2lvbigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzR2xvYmFsVmFyaWFi
bGVSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBp
c0Zsb2F0TGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29s
IGlzSW5kZXhFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNJbnRlZ2VyTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzTG9naWNhbEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpc0xvZ2ljYWxOb3RFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9u
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYWtlUG9pbnRl
ckV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBp
c051bGxMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc1JlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Rlcm5hcnlFeHByZXNzaW9uKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNVbnNpZ25lZEludGVnZXJMaXRl
cmFsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNWYXJpYWJs
ZVJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlz
RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBL
aW5kIGtpbmQoKSBjb25zdCAgeyByZXR1cm4gbV9raW5kOyB9CisgICAgYm9vbCBpc0Fzc2lnbm1l
bnRFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkFzc2lnbm1lbnQ7
IH0KKyAgICBib29sIGlzQm9vbGVhbkxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0g
S2luZDo6Qm9vbGVhbkxpdGVyYWw7IH0KKyAgICBib29sIGlzQ2FsbEV4cHJlc3Npb24oKSBjb25z
dCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6Q2FsbDsgfQorICAgIGJvb2wgaXNDb21tYUV4cHJl
c3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6Q29tbWE7IH0KKyAgICBib29s
IGlzRGVyZWZlcmVuY2VFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6
OkRlcmVmZXJlbmNlOyB9CisgICAgYm9vbCBpc0RvdEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVy
biBraW5kKCkgPT0gS2luZDo6RG90OyB9CisgICAgYm9vbCBpc0dsb2JhbFZhcmlhYmxlUmVmZXJl
bmNlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6Okdsb2JhbFZhcmlhYmxlUmVmZXJl
bmNlOyB9CisgICAgYm9vbCBpc0Zsb2F0TGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9
PSBLaW5kOjpGbG9hdExpdGVyYWw7IH0KKyAgICBib29sIGlzSW5kZXhFeHByZXNzaW9uKCkgY29u
c3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkluZGV4OyB9CisgICAgYm9vbCBpc0ludGVnZXJM
aXRlcmFsKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkludGVnZXJMaXRlcmFsOyB9
CisgICAgYm9vbCBpc0xvZ2ljYWxFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09
IEtpbmQ6OkxvZ2ljYWw7IH0KKyAgICBib29sIGlzTG9naWNhbE5vdEV4cHJlc3Npb24oKSBjb25z
dCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6TG9naWNhbE5vdDsgfQorICAgIGJvb2wgaXNNYWtl
QXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6
Ok1ha2VBcnJheVJlZmVyZW5jZTsgfQorICAgIGJvb2wgaXNNYWtlUG9pbnRlckV4cHJlc3Npb24o
KSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6TWFrZVBvaW50ZXI7IH0KKyAgICBib29s
IGlzTnVsbExpdGVyYWwoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6TnVsbExpdGVy
YWw7IH0KKyAgICBib29sIGlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1
cm4gaXNEb3RFeHByZXNzaW9uKCkgfHwgaXNJbmRleEV4cHJlc3Npb24oKTsgfQorICAgIGJvb2wg
aXNSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtp
bmQ6OlJlYWRNb2RpZnlXcml0ZTsgfQorICAgIGJvb2wgaXNUZXJuYXJ5RXhwcmVzc2lvbigpIGNv
bnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpUZXJuYXJ5OyB9CisgICAgYm9vbCBpc1Vuc2ln
bmVkSW50ZWdlckxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6VW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbDsgfQorICAgIGJvb2wgaXNWYXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0
IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpWYXJpYWJsZVJlZmVyZW5jZTsgfQorICAgIGJvb2wg
aXNFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2lu
ZDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsOyB9CiAKLSAgICBDb2RlTG9jYXRpb24gY29kZUxv
Y2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlTG9jYXRpb247IH0KLSAgICB2b2lkIHVwZGF0
ZUNvZGVMb2NhdGlvbihDb2RlTG9jYXRpb24gbG9jYXRpb24pIHsgbV9jb2RlTG9jYXRpb24gPSBs
b2NhdGlvbjsgfQorICAgIENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24oKSBjb25zdCB7IHJldHVy
biBDb2RlTG9jYXRpb24obV9jb2RlTG9jYXRpb24sIG1fY29kZUxvY2F0aW9uKTsgfQorICAgIHZv
aWQgdXBkYXRlQ29kZUxvY2F0aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbikgeyBtX2NvZGVMb2Nh
dGlvbiA9IGxvY2F0aW9uLnN0YXJ0T2Zmc2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBDb2RlTG9j
YXRpb24gbV9jb2RlTG9jYXRpb247CisgICAgS2luZCBtX2tpbmQ7CisgICAgdW5zaWduZWQgbV9j
b2RlTG9jYXRpb247CiAgICAgUmVmUHRyPFVubmFtZWRUeXBlPiBtX3R5cGU7CiAgICAgT3B0aW9u
YWw8VHlwZUFubm90YXRpb24+IG1fdHlwZUFubm90YXRpb247CiB9OwpAQCAtMTI5LDYgKzE2MSw4
IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKEV4cHJlc3Npb24pCisK
ICNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFRvVmFsdWVU
eXBlTmFtZSwgcHJlZGljYXRlKSBcCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNv
cmU6OldITFNMOjpBU1Q6OlRvVmFsdWVUeXBlTmFtZSkgXAogICAgIHN0YXRpYyBib29sIGlzVHlw
ZShjb25zdCBXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uKSB7IHJl
dHVybiBleHByZXNzaW9uLnByZWRpY2F0ZTsgfSBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZhbGx0aHJvdWdoLmgJ
KHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEZhbGx0aHJvdWdoLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDIxICszNywxOSBA
QCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgRmFsbHRocm91
Z2ggOiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNzIEZhbGx0aHJvdWdoIGZpbmFsIDogcHVibGlj
IFN0YXRlbWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
RmFsbHRocm91Z2goQ29kZUxvY2F0aW9uIGxvY2F0aW9uKQotICAgICAgICA6IFN0YXRlbWVudChs
b2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OkZhbGx0aHJvdWdo
KQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5GYWxsdGhyb3VnaCgpID0gZGVmYXVsdDsK
KyAgICB+RmFsbHRocm91Z2goKSA9IGRlZmF1bHQ7CiAKICAgICBGYWxsdGhyb3VnaChjb25zdCBG
YWxsdGhyb3VnaCYpID0gZGVsZXRlOwogICAgIEZhbGx0aHJvdWdoKEZhbGx0aHJvdWdoJiYpID0g
ZGVmYXVsdDsKIAotICAgIGJvb2wgaXNGYWxsdGhyb3VnaCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KLQogcHJpdmF0ZToKIH07CiAKQEAgLTYxLDYgKzU5LDggQEAgcHJpdmF0ZToK
IAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoRmFsbHRocm91Z2gpCisKIFNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKEZhbGx0aHJvdWdoLCBpc0ZhbGx0aHJvdWdoKCkp
CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRmxvYXRMaXRlcmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsLmgJKHJldmlzaW9uIDI0ODQwNCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0
ZXJhbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNyArMzcsMTcgQEAgbmFtZXNwYWNlIFdITFNM
IHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEZsb2F0TGl0ZXJhbCA6IHB1YmxpYyBFeHBy
ZXNzaW9uIHsKK2NsYXNzIEZsb2F0TGl0ZXJhbCBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBGbG9hdExpdGVyYWwo
Q29kZUxvY2F0aW9uIGxvY2F0aW9uLCBmbG9hdCB2YWx1ZSkKLSAgICAgICAgOiBFeHByZXNzaW9u
KGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkZsb2F0TGl0
ZXJhbCkKICAgICAgICAgLCBtX3R5cGUobG9jYXRpb24sIHZhbHVlKQogICAgICAgICAsIG1fdmFs
dWUodmFsdWUpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfkZsb2F0TGl0ZXJhbCgpID0g
ZGVmYXVsdDsKKyAgICB+RmxvYXRMaXRlcmFsKCkgPSBkZWZhdWx0OwogCiAgICAgRmxvYXRMaXRl
cmFsKGNvbnN0IEZsb2F0TGl0ZXJhbCYpID0gZGVsZXRlOwogICAgIEZsb2F0TGl0ZXJhbChGbG9h
dExpdGVyYWwmJikgPSBkZWZhdWx0OwpAQCAtNTgsOCArNTgsNiBAQCBwdWJsaWM6CiAgICAgRmxv
YXRMaXRlcmFsVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIGZsb2F0IHZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCi0gICAgYm9vbCBpc0Zsb2F0TGl0ZXJhbCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIEZsb2F0TGl0ZXJhbCBjbG9u
ZSgpIGNvbnN0CiAgICAgewogICAgICAgICBGbG9hdExpdGVyYWwgcmVzdWx0KGNvZGVMb2NhdGlv
bigpLCBtX3ZhbHVlKTsKQEAgLTgxLDYgKzc5LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVf
REVGQVVMVF9ERUxFVEUoRmxvYXRMaXRlcmFsKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dI
TFNMX0VYUFJFU1NJT04oRmxvYXRMaXRlcmFsLCBpc0Zsb2F0TGl0ZXJhbCgpKQogCiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0
TGl0ZXJhbFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuY3BwCShyZXZpc2lvbiAyNDg0MDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExp
dGVyYWxUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTcgKzM5LDEyIEBAIG5hbWVzcGFj
ZSBXSExTTCB7CiBuYW1lc3BhY2UgQVNUIHsKIAogRmxvYXRMaXRlcmFsVHlwZTo6RmxvYXRMaXRl
cmFsVHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIGZsb2F0IHZhbHVlKQotICAgIDogbV92YWx1
ZSh2YWx1ZSkKKyAgICA6IFJlc29sdmFibGVUeXBlKEtpbmQ6OkZsb2F0TGl0ZXJhbCkKKyAgICAs
IG1fdmFsdWUodmFsdWUpCiAgICAgLCBtX3ByZWZlcnJlZFR5cGUoVHlwZVJlZmVyZW5jZTo6Y3Jl
YXRlKGxvY2F0aW9uLCAiZmxvYXQiX3N0ciwgVHlwZUFyZ3VtZW50cygpKSkKIHsKIH0KIAotRmxv
YXRMaXRlcmFsVHlwZTo6fkZsb2F0TGl0ZXJhbFR5cGUoKSA9IGRlZmF1bHQ7Ci0KLUZsb2F0TGl0
ZXJhbFR5cGU6OkZsb2F0TGl0ZXJhbFR5cGUoRmxvYXRMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7
Ci0KLUZsb2F0TGl0ZXJhbFR5cGUmIEZsb2F0TGl0ZXJhbFR5cGU6Om9wZXJhdG9yPShGbG9hdExp
dGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKLQogYm9vbCBGbG9hdExpdGVyYWxUeXBlOjpjYW5SZXNv
bHZlKGNvbnN0IFR5cGUmIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFpczxOYW1lZFR5cGU+KHR5
cGUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
RmxvYXRMaXRlcmFsVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuaAkocmV2aXNpb24gMjQ4NDA0
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRM
aXRlcmFsVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwyNyArNDAsMjUgQEAgbmFtZXNwYWNl
IEFTVCB7CiAKIGNsYXNzIFR5cGVSZWZlcmVuY2U7CiAKLWNsYXNzIEZsb2F0TGl0ZXJhbFR5cGUg
OiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUgeworY2xhc3MgRmxvYXRMaXRlcmFsVHlwZSBmaW5hbCA6
IHB1YmxpYyBSZXNvbHZhYmxlVHlwZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgRmxvYXRMaXRlcmFsVHlwZShDb2RlTG9jYXRpb24sIGZsb2F0IHZhbHVlKTsK
IAotICAgIHZpcnR1YWwgfkZsb2F0TGl0ZXJhbFR5cGUoKTsKKyAgICB+RmxvYXRMaXRlcmFsVHlw
ZSgpID0gZGVmYXVsdDsKIAogICAgIEZsb2F0TGl0ZXJhbFR5cGUoY29uc3QgRmxvYXRMaXRlcmFs
VHlwZSYpID0gZGVsZXRlOwotICAgIEZsb2F0TGl0ZXJhbFR5cGUoRmxvYXRMaXRlcmFsVHlwZSYm
KTsKKyAgICBGbG9hdExpdGVyYWxUeXBlKEZsb2F0TGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0Owog
CiAgICAgRmxvYXRMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KGNvbnN0IEZsb2F0TGl0ZXJhbFR5cGUm
KSA9IGRlbGV0ZTsKLSAgICBGbG9hdExpdGVyYWxUeXBlJiBvcGVyYXRvcj0oRmxvYXRMaXRlcmFs
VHlwZSYmKTsKLQotICAgIGJvb2wgaXNGbG9hdExpdGVyYWxUeXBlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIEZsb2F0TGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShGbG9hdExp
dGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKIAogICAgIGZsb2F0IHZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV92YWx1ZTsgfQogCiAgICAgVHlwZVJlZmVyZW5jZSYgcHJlZmVycmVkVHlwZSgpIHsgcmV0
dXJuIG1fcHJlZmVycmVkVHlwZTsgfQogCi0gICAgYm9vbCBjYW5SZXNvbHZlKGNvbnN0IFR5cGUm
KSBjb25zdCBvdmVycmlkZTsKLSAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChjb25zdCBVbm5h
bWVkVHlwZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBUeXBl
JikgY29uc3Q7CisgICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUm
KSBjb25zdDsKIAogICAgIEZsb2F0TGl0ZXJhbFR5cGUgY2xvbmUoKSBjb25zdDsKIApAQCAtNzcs
NiArNzUsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShGbG9hdExp
dGVyYWxUeXBlKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1JFU09MVkFCTEVfVFlQ
RShGbG9hdExpdGVyYWxUeXBlLCBpc0Zsb2F0TGl0ZXJhbFR5cGUoKSkKIAogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JMb29wLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMRm9yTG9vcC5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JMb29wLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEx
ICs0MiwxMSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3Mg
Rm9yTG9vcCA6IHB1YmxpYyBTdGF0ZW1lbnQgeworY2xhc3MgRm9yTG9vcCBmaW5hbCA6IHB1Ymxp
YyBTdGF0ZW1lbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IEZvckxvb3AoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBWYXJpYW50PFVuaXF1ZVJlZjxTdGF0ZW1l
bnQ+LCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiYgaW5pdGlhbGl6YXRpb24sIHN0ZDo6dW5pcXVl
X3B0cjxFeHByZXNzaW9uPiYmIGNvbmRpdGlvbiwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+
JiYgaW5jcmVtZW50LCBVbmlxdWVSZWY8U3RhdGVtZW50PiYmIGJvZHkpCi0gICAgICAgIDogU3Rh
dGVtZW50KGxvY2F0aW9uKQorICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6Rm9y
TG9vcCkKICAgICAgICAgLCBtX2luaXRpYWxpemF0aW9uKFdURk1vdmUoaW5pdGlhbGl6YXRpb24p
KQogICAgICAgICAsIG1fY29uZGl0aW9uKFdURk1vdmUoY29uZGl0aW9uKSkKICAgICAgICAgLCBt
X2luY3JlbWVudChXVEZNb3ZlKGluY3JlbWVudCkpCkBAIC01NCwxNSArNTQsMTEgQEAgcHVibGlj
OgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5Gb3JMb29wKCkKLSAgICB7Ci0gICAgfQor
ICAgIH5Gb3JMb29wKCkgPSBkZWZhdWx0OwogCiAgICAgRm9yTG9vcChjb25zdCBGb3JMb29wJikg
PSBkZWxldGU7CiAgICAgRm9yTG9vcChGb3JMb29wJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wg
aXNGb3JMb29wKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgVmFyaWFu
dDxVbmlxdWVSZWY8U3RhdGVtZW50PiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+PiYgaW5pdGlhbGl6
YXRpb24oKSB7IHJldHVybiBtX2luaXRpYWxpemF0aW9uOyB9CiAgICAgRXhwcmVzc2lvbiogY29u
ZGl0aW9uKCkgeyByZXR1cm4gbV9jb25kaXRpb24uZ2V0KCk7IH0KICAgICBFeHByZXNzaW9uKiBp
bmNyZW1lbnQoKSB7IHJldHVybiBtX2luY3JlbWVudC5nZXQoKTsgfQpAQCAtODEsNiArNzcsOCBA
QCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShGb3JMb29wKQorCiBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChGb3JMb29wLCBpc0Zvckxvb3AoKSkK
IAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNl
LmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDE5ICszNywxOSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAot
Y2xhc3MgR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFz
cyBHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHbG9iYWxWYXJpYWJsZVJl
ZmVyZW5jZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGJh
c2UsIFN0cnVjdHVyZUVsZW1lbnQqIHN0cnVjdEZpZWxkKQotICAgICAgICA6IEV4cHJlc3Npb24o
bG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6R2xvYmFsVmFy
aWFibGVSZWZlcmVuY2UpCiAgICAgICAgICwgbV9iYXNlKFdURk1vdmUoYmFzZSkpCiAgICAgICAg
ICwgbV9zdHJ1Y3RGaWVsZCgqc3RydWN0RmllbGQpCiAgICAgewogICAgICAgICBBU1NFUlQoc3Ry
dWN0RmllbGQpOwogICAgIH0KIAotICAgIHZpcnR1YWwgfkdsb2JhbFZhcmlhYmxlUmVmZXJlbmNl
KCkgPSBkZWZhdWx0OwotICAgIGJvb2wgaXNHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB+R2xvYmFsVmFyaWFibGVSZWZlcmVuY2Uo
KSA9IGRlZmF1bHQ7CisgICAgCiAgICAgU3RydWN0dXJlRWxlbWVudCYgc3RydWN0RmllbGQoKSB7
IHJldHVybiBtX3N0cnVjdEZpZWxkOyB9CiAKICAgICBFeHByZXNzaW9uJiBiYXNlKCkgeyByZXR1
cm4gbV9iYXNlLmdldCgpOyB9CkBAIC02NSw2ICs2NSw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVG
SU5FX0RFRkFVTFRfREVMRVRFKEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKQorCiBTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UsIGlz
R2xvYmFsVmFyaWFibGVSZWZlcmVuY2UoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJZlN0YXRlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTElmU3RhdGVt
ZW50LmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTElmU3RhdGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDI0ICsz
OSwyMiBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgSWZT
dGF0ZW1lbnQgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNzIElmU3RhdGVtZW50IGZpbmFsIDog
cHVibGljIFN0YXRlbWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgSWZTdGF0ZW1lbnQoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVz
c2lvbj4mJiBjb25kaXRpb25hbCwgVW5pcXVlUmVmPFN0YXRlbWVudD4mJiBib2R5LCBzdGQ6OnVu
aXF1ZV9wdHI8U3RhdGVtZW50PiYmIGVsc2VCb2R5KQotICAgICAgICA6IFN0YXRlbWVudChsb2Nh
dGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OklmKQogICAgICAgICAs
IG1fY29uZGl0aW9uYWwoV1RGTW92ZShjb25kaXRpb25hbCkpCiAgICAgICAgICwgbV9ib2R5KFdU
Rk1vdmUoYm9keSkpCiAgICAgICAgICwgbV9lbHNlQm9keShXVEZNb3ZlKGVsc2VCb2R5KSkKICAg
ICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+SWZTdGF0ZW1lbnQoKSA9IGRlZmF1bHQ7CisgICAg
fklmU3RhdGVtZW50KCkgPSBkZWZhdWx0OwogCiAgICAgSWZTdGF0ZW1lbnQoY29uc3QgSWZTdGF0
ZW1lbnQmKSA9IGRlbGV0ZTsKICAgICBJZlN0YXRlbWVudChJZlN0YXRlbWVudCYmKSA9IGRlZmF1
bHQ7CiAKLSAgICBib29sIGlzSWZTdGF0ZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9Ci0KICAgICBFeHByZXNzaW9uJiBjb25kaXRpb25hbCgpIHsgcmV0dXJuIG1fY29uZGl0
aW9uYWw7IH0KICAgICBTdGF0ZW1lbnQmIGJvZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KICAgICBT
dGF0ZW1lbnQqIGVsc2VCb2R5KCkgeyByZXR1cm4gbV9lbHNlQm9keS5nZXQoKTsgfQpAQCAtNzMs
NiArNzEsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShJZlN0YXRl
bWVudCkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoSWZTdGF0ZW1l
bnQsIGlzSWZTdGF0ZW1lbnQoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbmRleEV4cHJlc3Npb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbmRleEV4cHJl
c3Npb24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMSW5kZXhFeHByZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDMzICszOCwzMSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xh
c3MgSW5kZXhFeHByZXNzaW9uIDogcHVibGljIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiB7Citj
bGFzcyBJbmRleEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgUHJvcGVydHlBY2Nlc3NFeHByZXNz
aW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBJbmRleEV4
cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBi
YXNlLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBpbmRleCkKLSAgICAgICAgOiBQcm9wZXJ0eUFj
Y2Vzc0V4cHJlc3Npb24obG9jYXRpb24sIFdURk1vdmUoYmFzZSkpCisgICAgICAgIDogUHJvcGVy
dHlBY2Nlc3NFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpJbmRleCwgV1RGTW92ZShiYXNlKSkK
ICAgICAgICAgLCBtX2luZGV4KFdURk1vdmUoaW5kZXgpKQogICAgIHsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIH5JbmRleEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfkluZGV4RXhwcmVzc2lv
bigpID0gZGVmYXVsdDsKIAogICAgIEluZGV4RXhwcmVzc2lvbihjb25zdCBJbmRleEV4cHJlc3Np
b24mKSA9IGRlbGV0ZTsKICAgICBJbmRleEV4cHJlc3Npb24oSW5kZXhFeHByZXNzaW9uJiYpID0g
ZGVmYXVsdDsKIAotICAgIGJvb2wgaXNJbmRleEV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9Ci0KLSAgICBTdHJpbmcgZ2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3Qg
b3ZlcnJpZGUKKyAgICBTdHJpbmcgZ2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiAib3BlcmF0b3JbXSJfc3RyOwogICAgIH0KIAotICAgIFN0cmluZyBzZXR0
ZXJGdW5jdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZQorICAgIFN0cmluZyBzZXR0ZXJGdW5jdGlv
bk5hbWUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICJvcGVyYXRvcltdPSJfc3RyOwog
ICAgIH0KIAotICAgIFN0cmluZyBhbmRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0IG92ZXJyaWRlCisg
ICAgU3RyaW5nIGFuZGVyRnVuY3Rpb25OYW1lKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biAib3BlcmF0b3ImW10iX3N0cjsKICAgICB9CkBAIC04Miw2ICs4MCw4IEBAIHByaXZhdGU6CiAK
IH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKEluZGV4RXhwcmVzc2lvbikKKwogU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEluZGV4RXhwcmVzc2lvbiwgaXNJbmRleEV4
cHJlc3Npb24oKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmgJKHJl
dmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEludGVnZXJMaXRlcmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDE3ICszNywxNyBA
QCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgSW50ZWdlckxp
dGVyYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBJbnRlZ2VyTGl0ZXJhbCBmaW5hbCA6
IHB1YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBJbnRlZ2VyTGl0ZXJhbChDb2RlTG9jYXRpb24gbG9jYXRpb24sIGludCB2YWx1ZSkK
LSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Npb24obG9j
YXRpb24sIEtpbmQ6OkludGVnZXJMaXRlcmFsKQogICAgICAgICAsIG1fdHlwZShsb2NhdGlvbiwg
dmFsdWUpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAgfQogCi0gICAgdmly
dHVhbCB+SW50ZWdlckxpdGVyYWwoKSA9IGRlZmF1bHQ7CisgICAgfkludGVnZXJMaXRlcmFsKCkg
PSBkZWZhdWx0OwogCiAgICAgSW50ZWdlckxpdGVyYWwoY29uc3QgSW50ZWdlckxpdGVyYWwmKSA9
IGRlbGV0ZTsKICAgICBJbnRlZ2VyTGl0ZXJhbChJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7
CkBAIC01OCw4ICs1OCw2IEBAIHB1YmxpYzoKICAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUmIHR5cGUo
KSB7IHJldHVybiBtX3R5cGU7IH0KICAgICBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlOyB9CiAKLSAgICBib29sIGlzSW50ZWdlckxpdGVyYWwoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0KICAgICBJbnRlZ2VyTGl0ZXJhbCBjbG9uZSgpIGNvbnN0CiAgICAgewog
ICAgICAgICBJbnRlZ2VyTGl0ZXJhbCByZXN1bHQoY29kZUxvY2F0aW9uKCksIG1fdmFsdWUpOwpA
QCAtODMsNiArODEsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShJ
bnRlZ2VyTGl0ZXJhbCkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9O
KEludGVnZXJMaXRlcmFsLCBpc0ludGVnZXJMaXRlcmFsKCkpCiAKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxU
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwCShyZXZpc2lvbiAyNDg0MDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJh
bFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxNyArNDAsMTIgQEAgbmFtZXNwYWNlIFdI
TFNMIHsKIG5hbWVzcGFjZSBBU1QgewogCiBJbnRlZ2VyTGl0ZXJhbFR5cGU6OkludGVnZXJMaXRl
cmFsVHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIGludCB2YWx1ZSkKLSAgICA6IG1fdmFsdWUo
dmFsdWUpCisgICAgOiBSZXNvbHZhYmxlVHlwZShLaW5kOjpJbnRlZ2VyTGl0ZXJhbCkKKyAgICAs
IG1fdmFsdWUodmFsdWUpCiAgICAgLCBtX3ByZWZlcnJlZFR5cGUoVHlwZVJlZmVyZW5jZTo6Y3Jl
YXRlKGxvY2F0aW9uLCAiaW50Il9zdHIsIFR5cGVBcmd1bWVudHMoKSkpCiB7CiB9CiAKLUludGVn
ZXJMaXRlcmFsVHlwZTo6fkludGVnZXJMaXRlcmFsVHlwZSgpID0gZGVmYXVsdDsKLQotSW50ZWdl
ckxpdGVyYWxUeXBlOjpJbnRlZ2VyTGl0ZXJhbFR5cGUoSW50ZWdlckxpdGVyYWxUeXBlJiYpID0g
ZGVmYXVsdDsKLQotSW50ZWdlckxpdGVyYWxUeXBlJiBJbnRlZ2VyTGl0ZXJhbFR5cGU6Om9wZXJh
dG9yPShJbnRlZ2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwotCiBib29sIEludGVnZXJMaXRl
cmFsVHlwZTo6Y2FuUmVzb2x2ZShjb25zdCBUeXBlJiB0eXBlKSBjb25zdAogewogICAgIGlmICgh
aXM8TmFtZWRUeXBlPih0eXBlKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlw
ZS5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAs
MjcgKzQwLDI1IEBAIG5hbWVzcGFjZSBBU1QgewogCiBjbGFzcyBUeXBlUmVmZXJlbmNlOwogCi1j
bGFzcyBJbnRlZ2VyTGl0ZXJhbFR5cGUgOiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUgeworY2xhc3Mg
SW50ZWdlckxpdGVyYWxUeXBlIGZpbmFsIDogcHVibGljIFJlc29sdmFibGVUeXBlIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUo
Q29kZUxvY2F0aW9uLCBpbnQgdmFsdWUpOwogCi0gICAgdmlydHVhbCB+SW50ZWdlckxpdGVyYWxU
eXBlKCk7CisgICAgfkludGVnZXJMaXRlcmFsVHlwZSgpID0gZGVmYXVsdDsKIAogICAgIEludGVn
ZXJMaXRlcmFsVHlwZShjb25zdCBJbnRlZ2VyTGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBJ
bnRlZ2VyTGl0ZXJhbFR5cGUoSW50ZWdlckxpdGVyYWxUeXBlJiYpOworICAgIEludGVnZXJMaXRl
cmFsVHlwZShJbnRlZ2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwogCiAgICAgSW50ZWdlckxp
dGVyYWxUeXBlJiBvcGVyYXRvcj0oY29uc3QgSW50ZWdlckxpdGVyYWxUeXBlJikgPSBkZWxldGU7
Ci0gICAgSW50ZWdlckxpdGVyYWxUeXBlJiBvcGVyYXRvcj0oSW50ZWdlckxpdGVyYWxUeXBlJiYp
OwotCi0gICAgYm9vbCBpc0ludGVnZXJMaXRlcmFsVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KKyAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShJbnRlZ2VyTGl0
ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwogCiAgICAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV92YWx1ZTsgfQogCiAgICAgVHlwZVJlZmVyZW5jZSYgcHJlZmVycmVkVHlwZSgpIHsgcmV0dXJu
IG1fcHJlZmVycmVkVHlwZTsgfQogCi0gICAgYm9vbCBjYW5SZXNvbHZlKGNvbnN0IFR5cGUmKSBj
b25zdCBvdmVycmlkZTsKLSAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVk
VHlwZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBUeXBlJikg
Y29uc3Q7CisgICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBj
b25zdDsKIAogICAgIEludGVnZXJMaXRlcmFsVHlwZSBjbG9uZSgpIGNvbnN0OwogCkBAIC03Nyw2
ICs3NSw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKEludGVnZXJM
aXRlcmFsVHlwZSkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9SRVNPTFZBQkxFX1RZ
UEUoSW50ZWdlckxpdGVyYWxUeXBlLCBpc0ludGVnZXJMaXRlcmFsVHlwZSgpKQogCiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2lj
YWxFeHByZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbEV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4NDA0KQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbEV4
cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV0hM
U0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgTG9naWNhbEV4cHJlc3Npb24gOiBwdWJs
aWMgRXhwcmVzc2lvbiB7CitjbGFzcyBMb2dpY2FsRXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBF
eHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBl
bnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsKQEAgLTQ2LDIyICs0NiwyMCBAQCBwdWJsaWM6CiAg
ICAgfTsKIAogICAgIExvZ2ljYWxFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVHlw
ZSB0eXBlLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBsZWZ0LCBVbmlxdWVSZWY8RXhwcmVzc2lv
bj4mJiByaWdodCkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4
cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkxvZ2ljYWwpCiAgICAgICAgICwgbV90eXBlKHR5cGUp
CiAgICAgICAgICwgbV9sZWZ0KFdURk1vdmUobGVmdCkpCiAgICAgICAgICwgbV9yaWdodChXVEZN
b3ZlKHJpZ2h0KSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+TG9naWNhbEV4cHJlc3Np
b24oKSA9IGRlZmF1bHQ7CisgICAgfkxvZ2ljYWxFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwogCiAg
ICAgTG9naWNhbEV4cHJlc3Npb24oY29uc3QgTG9naWNhbEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsK
ICAgICBMb2dpY2FsRXhwcmVzc2lvbihMb2dpY2FsRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CiAK
ICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAotICAgIGJvb2wgaXNM
b2dpY2FsRXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAg
IEV4cHJlc3Npb24mIGxlZnQoKSB7IHJldHVybiBtX2xlZnQ7IH0KICAgICBFeHByZXNzaW9uJiBy
aWdodCgpIHsgcmV0dXJuIG1fcmlnaHQ7IH0KIApAQCAtNzcsNiArNzUsOCBAQCBwcml2YXRlOgog
CiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShMb2dpY2FsRXhwcmVzc2lvbikKKwogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKExvZ2ljYWxFeHByZXNzaW9uLCBpc0xv
Z2ljYWxFeHByZXNzaW9uKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2Fs
Tm90RXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNywyMiArMzcsMjAgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNl
IEFTVCB7CiAKLWNsYXNzIExvZ2ljYWxOb3RFeHByZXNzaW9uIDogcHVibGljIEV4cHJlc3Npb24g
eworY2xhc3MgTG9naWNhbE5vdEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTG9naWNhbE5vdEV4
cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBv
cGVyYW5kKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVz
c2lvbihsb2NhdGlvbiwgS2luZDo6TG9naWNhbE5vdCkKICAgICAgICAgLCBtX29wZXJhbmQoV1RG
TW92ZShvcGVyYW5kKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+TG9naWNhbE5vdEV4
cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfkxvZ2ljYWxOb3RFeHByZXNzaW9uKCkgPSBkZWZh
dWx0OwogCiAgICAgTG9naWNhbE5vdEV4cHJlc3Npb24oY29uc3QgTG9naWNhbE5vdEV4cHJlc3Np
b24mKSA9IGRlbGV0ZTsKICAgICBMb2dpY2FsTm90RXhwcmVzc2lvbihMb2dpY2FsTm90RXhwcmVz
c2lvbiYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzTG9naWNhbE5vdEV4cHJlc3Npb24oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNzaW9uJiBvcGVyYW5k
KCkgeyByZXR1cm4gbV9vcGVyYW5kOyB9CiAKIHByaXZhdGU6CkBAIC02NSw2ICs2Myw4IEBAIHBy
aXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKExvZ2ljYWxOb3RFeHByZXNzaW9u
KQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oTG9naWNhbE5vdEV4
cHJlc3Npb24sIGlzTG9naWNhbE5vdEV4cHJlc3Npb24oKSkKIAogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlQXJyYXlSZWZlcmVu
Y2VFeHByZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oCShyZXZpc2lv
biAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDIz
ICszOCwyMSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3Mg
TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK2NsYXNz
IE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTWFrZUFycmF5UmVm
ZXJlbmNlRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNz
aW9uPiYmIGxlZnRWYWx1ZSwgQWRkcmVzc0VzY2FwZU1vZGUgYWRkcmVzc0VzY2FwZU1vZGUpCi0g
ICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0
aW9uLCBLaW5kOjpNYWtlQXJyYXlSZWZlcmVuY2UpCiAgICAgICAgICwgbV9sZWZ0VmFsdWUoV1RG
TW92ZShsZWZ0VmFsdWUpKQogICAgICAgICAsIG1fYWRkcmVzc0VzY2FwZU1vZGUoYWRkcmVzc0Vz
Y2FwZU1vZGUpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfk1ha2VBcnJheVJlZmVyZW5j
ZUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfk1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Np
b24oKSA9IGRlZmF1bHQ7CiAKICAgICBNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKGNvbnN0
IE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBNYWtlQXJyYXlS
ZWZlcmVuY2VFeHByZXNzaW9uKE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mJikgPSBkZWZh
dWx0OwogCi0gICAgYm9vbCBpc01ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNzaW9uJiBsZWZ0VmFsdWUoKSB7
IHJldHVybiBtX2xlZnRWYWx1ZTsgfQogCiAgICAgYm9vbCBtaWdodEVzY2FwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYWRkcmVzc0VzY2FwZU1vZGUgPT0gQWRkcmVzc0VzY2FwZU1vZGU6OkVzY2FwZXM7
IH0KQEAgLTcwLDYgKzY4LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxF
VEUoTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbikKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19XSExTTF9FWFBSRVNTSU9OKE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24sIGlzTWFrZUFy
cmF5UmVmZXJlbmNlRXhwcmVzc2lvbigpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjMgKzM4LDIxIEBAIG5hbWVzcGFjZSBXSExTTCB7CiAK
IG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBNYWtlUG9pbnRlckV4cHJlc3Npb24gOiBwdWJsaWMg
RXhwcmVzc2lvbiB7CitjbGFzcyBNYWtlUG9pbnRlckV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMg
RXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
TWFrZVBvaW50ZXJFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4
cHJlc3Npb24+JiYgbGVmdFZhbHVlLCBBZGRyZXNzRXNjYXBlTW9kZSBhZGRyZXNzRXNjYXBlTW9k
ZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Npb24o
bG9jYXRpb24sIEtpbmQ6Ok1ha2VQb2ludGVyKQogICAgICAgICAsIG1fbGVmdFZhbHVlKFdURk1v
dmUobGVmdFZhbHVlKSkKICAgICAgICAgLCBtX2FkZHJlc3NFc2NhcGVNb2RlKGFkZHJlc3NFc2Nh
cGVNb2RlKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5NYWtlUG9pbnRlckV4cHJlc3Np
b24oKSA9IGRlZmF1bHQ7CisgICAgfk1ha2VQb2ludGVyRXhwcmVzc2lvbigpID0gZGVmYXVsdDsK
IAogICAgIE1ha2VQb2ludGVyRXhwcmVzc2lvbihjb25zdCBNYWtlUG9pbnRlckV4cHJlc3Npb24m
KSA9IGRlbGV0ZTsKICAgICBNYWtlUG9pbnRlckV4cHJlc3Npb24oTWFrZVBvaW50ZXJFeHByZXNz
aW9uJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNNYWtlUG9pbnRlckV4cHJlc3Npb24oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNzaW9uJiBsZWZ0VmFs
dWUoKSB7IHJldHVybiBtX2xlZnRWYWx1ZTsgfQogCiAgICAgYm9vbCBtaWdodEVzY2FwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYWRkcmVzc0VzY2FwZU1vZGUgPT0gQWRkcmVzc0VzY2FwZU1vZGU6OkVz
Y2FwZXM7IH0KQEAgLTcwLDYgKzY4LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVM
VF9ERUxFVEUoTWFrZVBvaW50ZXJFeHByZXNzaW9uKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X1dITFNMX0VYUFJFU1NJT04oTWFrZVBvaW50ZXJFeHByZXNzaW9uLCBpc01ha2VQb2ludGVyRXhw
cmVzc2lvbigpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTE5hbWVkVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVkVHlwZS5oCShyZXZpc2lvbiAyNDg0
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYW1l
ZFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMzQgKzQwLDMxIEBAIG5hbWVzcGFjZSBBU1Qg
ewogCiBjbGFzcyBOYW1lZFR5cGUgOiBwdWJsaWMgVHlwZSB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CisKK3Byb3RlY3RlZDoKKyAgICB+TmFtZWRUeXBlKCkgPSBkZWZhdWx0OworCiBw
dWJsaWM6Ci0gICAgTmFtZWRUeXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFt
ZSkKLSAgICAgICAgOiBtX2NvZGVMb2NhdGlvbihsb2NhdGlvbikKKyAgICBOYW1lZFR5cGUoS2lu
ZCBraW5kLCBDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmluZyYmIG5hbWUpCisgICAgICAgIDog
VHlwZShraW5kKQorICAgICAgICAsIG1fY29kZUxvY2F0aW9uKGxvY2F0aW9uLnN0YXJ0T2Zmc2V0
KCkpCiAgICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCiAgICAgewogICAgIH0KIAotICAg
IHZpcnR1YWwgfk5hbWVkVHlwZSgpID0gZGVmYXVsdDsKLQogICAgIE5hbWVkVHlwZShjb25zdCBO
YW1lZFR5cGUmKSA9IGRlbGV0ZTsKICAgICBOYW1lZFR5cGUoTmFtZWRUeXBlJiYpID0gZGVmYXVs
dDsKIAotICAgIENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Nv
ZGVMb2NhdGlvbjsgfQotICAgIHZvaWQgdXBkYXRlQ29kZUxvY2F0aW9uKENvZGVMb2NhdGlvbiBs
b2NhdGlvbikgeyBtX2NvZGVMb2NhdGlvbiA9IGxvY2F0aW9uOyB9CisgICAgQ29kZUxvY2F0aW9u
IGNvZGVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIENvZGVMb2NhdGlvbihtX2NvZGVMb2NhdGlv
biwgbV9jb2RlTG9jYXRpb24pOyB9CisgICAgdm9pZCB1cGRhdGVDb2RlTG9jYXRpb24oQ29kZUxv
Y2F0aW9uIGxvY2F0aW9uKSB7IG1fY29kZUxvY2F0aW9uID0gbG9jYXRpb24uc3RhcnRPZmZzZXQo
KTsgfQogCiAgICAgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9CiAKLSAgICBib29s
IGlzTmFtZWRUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc1R5cGVEZWZpbml0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNTdHJ1Y3R1cmVEZWZpbml0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNFbnVtZXJhdGlvbkRlZmluaXRpb24oKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZVR5cGVEZWNsYXJhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IFR5cGUmIHVuaWZ5
Tm9kZSgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9Ci0gICAgdmlydHVhbCBUeXBlJiB1bmlmeU5v
ZGUoKSB7IHJldHVybiAqdGhpczsgfQogCiBwcml2YXRlOgotICAgIENvZGVMb2NhdGlvbiBtX2Nv
ZGVMb2NhdGlvbjsKKyAgICBmcmllbmQgY2xhc3MgVHlwZTsKKyAgICBUeXBlJiB1bmlmeU5vZGVJ
bXBsKCkgeyByZXR1cm4gKnRoaXM7IH0KKyAgICB1bnNpZ25lZCBtX2NvZGVMb2NhdGlvbjsKICAg
ICBTdHJpbmcgbV9uYW1lOwogfTsKIApAQCAtNzcsNiArNzQsOCBAQCBwcml2YXRlOgogCiB9CiAK
K0RFRklORV9ERUZBVUxUX0RFTEVURShOYW1lZFR5cGUpCisKICNkZWZpbmUgU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19XSExTTF9OQU1FRF9UWVBFKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBc
CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldITFNMOjpBU1Q6OlRvVmFs
dWVUeXBlTmFtZSkgXAogICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXSExT
TDo6QVNUOjpOYW1lZFR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGUucHJlZGljYXRlOyB9IFwKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oCShyZXZpc2lvbiAyNDg0
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRp
dmVUeXBlRGVjbGFyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMjIgKzQwLDIwIEBAIG5h
bWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBOYXRpdmVUeXBlRGVj
bGFyYXRpb24gOiBwdWJsaWMgTmFtZWRUeXBlIHsKK2NsYXNzIE5hdGl2ZVR5cGVEZWNsYXJhdGlv
biBmaW5hbCA6IHB1YmxpYyBOYW1lZFR5cGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbihDb2RlTG9jYXRpb24gbG9jYXRp
b24sIFN0cmluZyYmIG5hbWUsIFR5cGVBcmd1bWVudHMmJiB0eXBlQXJndW1lbnRzKQotICAgICAg
ICA6IE5hbWVkVHlwZShsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSkKKyAgICAgICAgOiBOYW1lZFR5
cGUoS2luZDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uLCBsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSkK
ICAgICAgICAgLCBtX3R5cGVBcmd1bWVudHMoV1RGTW92ZSh0eXBlQXJndW1lbnRzKSkKICAgICB7
CiAgICAgfQogCi0gICAgdmlydHVhbCB+TmF0aXZlVHlwZURlY2xhcmF0aW9uKCkgPSBkZWZhdWx0
OworICAgIH5OYXRpdmVUeXBlRGVjbGFyYXRpb24oKSA9IGRlZmF1bHQ7CiAKICAgICBOYXRpdmVU
eXBlRGVjbGFyYXRpb24oY29uc3QgTmF0aXZlVHlwZURlY2xhcmF0aW9uJikgPSBkZWxldGU7CiAg
ICAgTmF0aXZlVHlwZURlY2xhcmF0aW9uKE5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYmKSA9IGRlZmF1
bHQ7CiAKLSAgICBib29sIGlzTmF0aXZlVHlwZURlY2xhcmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgVHlwZUFyZ3VtZW50cyYgdHlwZUFyZ3VtZW50cygpIHsg
cmV0dXJuIG1fdHlwZUFyZ3VtZW50czsgfQogCiAgICAgYm9vbCBpc0ludCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNJbnQ7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTE51bGxMaXRlcmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVsbExpdGVyYWwuaAkocmV2aXNpb24gMjQ4NDA0
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVsbExp
dGVyYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTUgKzM3LDE1IEBAIG5hbWVzcGFjZSBXSExT
TCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBOdWxsTGl0ZXJhbCA6IHB1YmxpYyBFeHBy
ZXNzaW9uIHsKK2NsYXNzIE51bGxMaXRlcmFsIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE51bGxMaXRlcmFsKENv
ZGVMb2NhdGlvbiBsb2NhdGlvbikKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAg
ICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6Ok51bGxMaXRlcmFsKQogICAgIHsKICAg
ICB9CiAKLSAgICB2aXJ0dWFsIH5OdWxsTGl0ZXJhbCgpID0gZGVmYXVsdDsKKyAgICB+TnVsbExp
dGVyYWwoKSA9IGRlZmF1bHQ7CiAKICAgICBOdWxsTGl0ZXJhbChjb25zdCBOdWxsTGl0ZXJhbCYp
ID0gZGVsZXRlOwogICAgIE51bGxMaXRlcmFsKE51bGxMaXRlcmFsJiYpID0gZGVmYXVsdDsKQEAg
LTU1LDggKzU1LDYgQEAgcHVibGljOgogCiAgICAgTnVsbExpdGVyYWxUeXBlJiB0eXBlKCkgeyBy
ZXR1cm4gbV90eXBlOyB9CiAKLSAgICBib29sIGlzTnVsbExpdGVyYWwoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBOdWxsTGl0ZXJhbCBjbG9uZSgpIGNvbnN0CiAgICAg
ewogICAgICAgICBhdXRvIHJlc3VsdCA9IE51bGxMaXRlcmFsKGNvZGVMb2NhdGlvbigpKTsKQEAg
LTc2LDYgKzc0LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoTnVs
bExpdGVyYWwpCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihOdWxs
TGl0ZXJhbCwgaXNOdWxsTGl0ZXJhbCgpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRlcmFsVHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxM
aXRlcmFsVHlwZS5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdWxsTGl0ZXJhbFR5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzYsMTIgKzM2LDE0IEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1Qgewog
Ci1jbGFzcyBOdWxsTGl0ZXJhbFR5cGUgOiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUgeworY2xhc3Mg
TnVsbExpdGVyYWxUeXBlIGZpbmFsIDogcHVibGljIFJlc29sdmFibGVUeXBlIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBOdWxsTGl0ZXJhbFR5cGUoKSA9IGRl
ZmF1bHQ7CisgICAgTnVsbExpdGVyYWxUeXBlKCkKKyAgICAgICAgOiBSZXNvbHZhYmxlVHlwZShL
aW5kOjpOdWxsTGl0ZXJhbCkKKyAgICB7IH0KIAotICAgIHZpcnR1YWwgfk51bGxMaXRlcmFsVHlw
ZSgpID0gZGVmYXVsdDsKKyAgICB+TnVsbExpdGVyYWxUeXBlKCkgPSBkZWZhdWx0OwogCiAgICAg
TnVsbExpdGVyYWxUeXBlKGNvbnN0IE51bGxMaXRlcmFsVHlwZSYpID0gZGVsZXRlOwogICAgIE51
bGxMaXRlcmFsVHlwZShOdWxsTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwpAQCAtNDksMTAgKzUx
LDggQEAgcHVibGljOgogICAgIE51bGxMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KGNvbnN0IE51bGxM
aXRlcmFsVHlwZSYpID0gZGVsZXRlOwogICAgIE51bGxMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KE51
bGxMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzTnVsbExpdGVyYWxUeXBl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgYm9vbCBjYW5SZXNvbHZl
KGNvbnN0IFR5cGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29z
dChjb25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY2FuUmVzb2x2
ZShjb25zdCBUeXBlJikgY29uc3Q7CisgICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29uc3Qg
VW5uYW1lZFR5cGUmKSBjb25zdDsKIAogcHJpdmF0ZToKIH07CkBAIC02Myw2ICs2Myw4IEBAIHBy
aXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKE51bGxMaXRlcmFsVHlwZSkKKwog
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9SRVNPTFZBQkxFX1RZUEUoTnVsbExpdGVyYWxU
eXBlLCBpc051bGxMaXRlcmFsVHlwZSgpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFBvaW50ZXJUeXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUG9pbnRlclR5
cGUuaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMUG9pbnRlclR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0NvbmNhdGVuYXRlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ2LDE3ICs0NywxOCBAQCBjbGFzcyBQb2ludGVyVHlwZSBm
aW5hbCA6IHB1YmxpYyBSZWZlcmVuCiAgICAgdXNpbmcgQmFzZSA9IFJlZmVyZW5jZVR5cGU7CiAK
ICAgICBQb2ludGVyVHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIEFkZHJlc3NTcGFjZSBhZGRy
ZXNzU3BhY2UsIFJlZjxVbm5hbWVkVHlwZT4gZWxlbWVudFR5cGUpCi0gICAgICAgIDogQmFzZShs
b2NhdGlvbiwgYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKGVsZW1lbnRUeXBlKSwgS2luZDo6UG9pbnRl
clR5cGUpCisgICAgICAgIDogQmFzZShsb2NhdGlvbiwgYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKGVs
ZW1lbnRUeXBlKSwgS2luZDo6UG9pbnRlcikKICAgICB7CiAgICAgfQogCiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxQb2ludGVyVHlwZT4gY3JlYXRlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgQWRk
cmVzc1NwYWNlIGFkZHJlc3NTcGFjZSwgUmVmPFVubmFtZWRUeXBlPiBlbGVtZW50VHlwZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBvaW50ZXJUeXBlKGxvY2F0aW9uLCBh
ZGRyZXNzU3BhY2UsIFdURk1vdmUoZWxlbWVudFR5cGUpKSk7CisgICAgICAgIGF1dG8gcmVzdWx0
ID0gYWRvcHRSZWYoKm5ldyBQb2ludGVyVHlwZShsb2NhdGlvbiwgYWRkcmVzc1NwYWNlLCBXVEZN
b3ZlKGVsZW1lbnRUeXBlKSkpOworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAg
IHZpcnR1YWwgflBvaW50ZXJUeXBlKCkgPSBkZWZhdWx0OworICAgIH5Qb2ludGVyVHlwZSgpID0g
ZGVmYXVsdDsKIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKQEAgLTY4LDcgKzcw
LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRkcmVzc1NwYWNlKCkgPT0gb3RoZXIuYWRk
cmVzc1NwYWNlKCkgJiYgZWxlbWVudFR5cGUoKSA9PSBvdGhlci5lbGVtZW50VHlwZSgpOwogICAg
IH0KIAotICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IG92ZXJyaWRlCisgICAgU3RyaW5nIHRv
U3RyaW5nKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKGVsZW1lbnRU
eXBlKCkudG9TdHJpbmcoKSwgJyonKTsKICAgICB9CkBAIC04MCw2ICs4Miw4IEBAIHB1YmxpYzoK
IAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoUG9pbnRlclR5cGUpCisKIFNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfV0hMU0xfVU5OQU1FRF9UWVBFKFBvaW50ZXJUeXBlLCBpc1BvaW50ZXJUeXBl
KCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUHJvcGVydHlBY2Nlc3NFeHBy
ZXNzaW9uLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MSwyMiArNDEsMTggQEAgbmFtZXNwYWNlIEFTVCB7CiBjbGFzcyBQcm9wZXJ0eUFj
Y2Vzc0V4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKENvZGVMb2Nh
dGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgYmFzZSkKLSAgICAgICAgOiBF
eHByZXNzaW9uKGxvY2F0aW9uKQorICAgIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihDb2RlTG9j
YXRpb24gbG9jYXRpb24sIEtpbmQga2luZCwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgYmFzZSkK
KyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBraW5kKQogICAgICAgICAsIG1fYmFzZShX
VEZNb3ZlKGJhc2UpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5Qcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb24oKSA9IGRlZmF1bHQ7Ci0KICAgICBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24o
Y29uc3QgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJikgPSBkZWxldGU7CiAgICAgUHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uKFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CiAK
LSAgICBib29sIGlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQotCi0gICAgdmlydHVhbCBTdHJpbmcgZ2V0dGVyRnVuY3Rpb25OYW1lKCkg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIHNldHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyBhbmRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0ID0gMDsK
KyAgICBTdHJpbmcgZ2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3Q7CisgICAgU3RyaW5nIHNldHRl
ckZ1bmN0aW9uTmFtZSgpIGNvbnN0OworICAgIFN0cmluZyBhbmRlckZ1bmN0aW9uTmFtZSgpIGNv
bnN0OwogCiAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbiogZ2V0dGVyRnVuY3Rpb24oKSB7IHJldHVy
biBtX2dldHRlckZ1bmN0aW9uOyB9CiAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbiogYW5kZXJGdW5j
dGlvbigpIHsgcmV0dXJuIG1fYW5kZXJGdW5jdGlvbjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSwxNSArNDksMTkgQEAgbmFtZXNwYWNl
IEFTVCB7CiAgKiAgNi4gRXZhbHVhdGUgbV9yZXN1bHRFeHByZXNzaW9uCiAgKiAgNy4gUmV0dXJu
IHRoZSByZXN1bHQKICAqLwotY2xhc3MgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiA6IHB1Ymxp
YyBFeHByZXNzaW9uIHsKK2NsYXNzIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24gZmluYWwgOiBw
dWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFVuaXF1ZVJlZjxSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPiBjcmVhdGUo
Q29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbFZhbHVlKQorICAg
IFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVS
ZWY8RXhwcmVzc2lvbj4gbGVmdFZhbHVlKQorICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24s
IEtpbmQ6OlJlYWRNb2RpZnlXcml0ZSkKKyAgICAgICAgLCBtX2xlZnRWYWx1ZShXVEZNb3ZlKGxl
ZnRWYWx1ZSkpCisgICAgICAgICwgbV9vbGRWYWx1ZShtYWtlVW5pcXVlUmVmPFZhcmlhYmxlRGVj
bGFyYXRpb24+KGxvY2F0aW9uLCBRdWFsaWZpZXJzKCksIG51bGxwdHIsIFN0cmluZygpLCBudWxs
cHRyLCBudWxscHRyKSkKKyAgICAgICAgLCBtX25ld1ZhbHVlKG1ha2VVbmlxdWVSZWY8VmFyaWFi
bGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIFF1YWxpZmllcnMoKSwgbnVsbHB0ciwgU3RyaW5nKCks
IG51bGxwdHIsIG51bGxwdHIpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8
UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUobFZhbHVlKSk7CiAg
ICAgfQogCi0gICAgdmlydHVhbCB+UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbigpID0gZGVmYXVs
dDsKKworICAgIH5SZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwogCiAgICAg
UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbihjb25zdCBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9u
JikgPSBkZWxldGU7CiAgICAgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbihSZWFkTW9kaWZ5V3Jp
dGVFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKQEAgLTgyLDggKzg2LDYgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxWYXJpYWJsZVJlZmVyZW5jZT4oVmFyaWFibGVSZWZl
cmVuY2U6OndyYXAobV9uZXdWYWx1ZSkpOwogICAgIH0KIAotICAgIGJvb2wgaXNSZWFkTW9kaWZ5
V3JpdGVFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAg
RXhwcmVzc2lvbiYgbGVmdFZhbHVlKCkgeyByZXR1cm4gbV9sZWZ0VmFsdWU7IH0KICAgICBWYXJp
YWJsZURlY2xhcmF0aW9uJiBvbGRWYWx1ZSgpIHsgcmV0dXJuIG1fb2xkVmFsdWU7IH0KICAgICBW
YXJpYWJsZURlY2xhcmF0aW9uJiBuZXdWYWx1ZSgpIHsgcmV0dXJuIG1fbmV3VmFsdWU7IH0KQEAg
LTExNCwxNiArMTE2LDYgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB0ZW1wbGF0
ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBmcmllbmQgVW5pcXVlUmVmPFU+IFdURjo6bWFrZVVu
aXF1ZVJlZihBcmdzJiYuLi4pOwotCi0gICAgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbihDb2Rl
TG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBsZWZ0VmFsdWUpCi0gICAg
ICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbikKLSAgICAgICAgLCBtX2xlZnRWYWx1ZShXVEZNb3Zl
KGxlZnRWYWx1ZSkpCi0gICAgICAgICwgbV9vbGRWYWx1ZShtYWtlVW5pcXVlUmVmPFZhcmlhYmxl
RGVjbGFyYXRpb24+KGxvY2F0aW9uLCBRdWFsaWZpZXJzKCksIG51bGxwdHIsIFN0cmluZygpLCBu
dWxscHRyLCBudWxscHRyKSkKLSAgICAgICAgLCBtX25ld1ZhbHVlKG1ha2VVbmlxdWVSZWY8VmFy
aWFibGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIFF1YWxpZmllcnMoKSwgbnVsbHB0ciwgU3RyaW5n
KCksIG51bGxwdHIsIG51bGxwdHIpKQotICAgIHsKLSAgICB9Ci0KICAgICBVbmlxdWVSZWY8RXhw
cmVzc2lvbj4gbV9sZWZ0VmFsdWU7CiAgICAgVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+
IG1fb2xkVmFsdWU7CiAgICAgVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+IG1fbmV3VmFs
dWU7CkBAIC0xMzcsNiArMTI5LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9E
RUxFVEUoUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbikKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19XSExTTF9FWFBSRVNTSU9OKFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24sIGlzUmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbigpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlZmVyZW5jZVR5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWZlcmVuY2VUeXBl
LmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFJlZmVyZW5jZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMs
MTAgQEAgbmFtZXNwYWNlIEFTVCB7CiBjbGFzcyBSZWZlcmVuY2VUeXBlIDogcHVibGljIFVubmFt
ZWRUeXBlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShSZWZlcmVuY2VUeXBlKTsKKworcHJvdGVjdGVkOgorICAgIH5SZWZlcmVuY2VUeXBl
KCkgPSBkZWZhdWx0OworCiBwcm90ZWN0ZWQ6CiAgICAgUmVmZXJlbmNlVHlwZShDb2RlTG9jYXRp
b24gbG9jYXRpb24sIEFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2UsIFJlZjxVbm5hbWVkVHlwZT4g
ZWxlbWVudFR5cGUsIEtpbmQga2luZCkKICAgICAgICAgOiBVbm5hbWVkVHlwZShsb2NhdGlvbiwg
a2luZCkKQEAgLTUwLDkgKzU0LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICAsIG1fZWxlbWVudFR5
cGUoV1RGTW92ZShlbGVtZW50VHlwZSkpCiAgICAgewogICAgIH0KLXB1YmxpYzoKLSAgICB2aXJ0
dWFsIH5SZWZlcmVuY2VUeXBlKCkgPSBkZWZhdWx0OwogCisKK3B1YmxpYzoKICAgICBBZGRyZXNz
U3BhY2UgYWRkcmVzc1NwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9hZGRyZXNzU3BhY2U7IH0KICAg
ICBjb25zdCBVbm5hbWVkVHlwZSYgZWxlbWVudFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2VsZW1l
bnRUeXBlOyB9CiAgICAgVW5uYW1lZFR5cGUmIGVsZW1lbnRUeXBlKCkgeyByZXR1cm4gbV9lbGVt
ZW50VHlwZTsgfQpAQCAtNzMsNiArNzcsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZB
VUxUX0RFTEVURShSZWZlcmVuY2VUeXBlKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNM
X1VOTkFNRURfVFlQRShSZWZlcmVuY2VUeXBlLCBpc1JlZmVyZW5jZVR5cGUoKSkKIAogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNv
bHZhYmxlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFJlc29sdmFibGVUeXBlLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc29sdmFibGVUeXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDEwICs0MCwxNSBAQCBuYW1lc3BhY2UgQVNUIHsKIAog
Y2xhc3MgUmVzb2x2YWJsZVR5cGUgOiBwdWJsaWMgVHlwZSB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CisKK3Byb3RlY3RlZDoKKyAgICB+UmVzb2x2YWJsZVR5cGUoKSA9IGRlZmF1bHQ7
CisKIHB1YmxpYzoKLSAgICBSZXNvbHZhYmxlVHlwZSgpID0gZGVmYXVsdDsKKyAgICBSZXNvbHZh
YmxlVHlwZShLaW5kIGtpbmQpCisgICAgICAgIDogVHlwZShraW5kKQorICAgIHsgfQogCi0gICAg
dmlydHVhbCB+UmVzb2x2YWJsZVR5cGUoKSA9IGRlZmF1bHQ7CiAKICAgICBSZXNvbHZhYmxlVHlw
ZShjb25zdCBSZXNvbHZhYmxlVHlwZSYpID0gZGVsZXRlOwogICAgIFJlc29sdmFibGVUeXBlKFJl
c29sdmFibGVUeXBlJiYpID0gZGVmYXVsdDsKQEAgLTUxLDE0ICs1Niw4IEBAIHB1YmxpYzoKICAg
ICBSZXNvbHZhYmxlVHlwZSYgb3BlcmF0b3I9KGNvbnN0IFJlc29sdmFibGVUeXBlJikgPSBkZWxl
dGU7CiAgICAgUmVzb2x2YWJsZVR5cGUmIG9wZXJhdG9yPShSZXNvbHZhYmxlVHlwZSYmKSA9IGRl
ZmF1bHQ7CiAKLSAgICBib29sIGlzUmVzb2x2YWJsZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRmxvYXRMaXRlcmFsVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzSW50ZWdlckxpdGVyYWxUeXBl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNOdWxsTGl0ZXJh
bFR5cGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Vuc2ln
bmVkSW50ZWdlckxpdGVyYWxUeXBlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZp
cnR1YWwgYm9vbCBjYW5SZXNvbHZlKGNvbnN0IFR5cGUmKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0ID0gMDsK
KyAgICBib29sIGNhblJlc29sdmUoY29uc3QgVHlwZSYpIGNvbnN0OworICAgIHVuc2lnbmVkIGNv
bnZlcnNpb25Db3N0KGNvbnN0IFVubmFtZWRUeXBlJikgY29uc3Q7CiAKICAgICBjb25zdCBVbm5h
bWVkVHlwZSogbWF5YmVSZXNvbHZlZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkVHlw
ZSA/ICYqbV9yZXNvbHZlZFR5cGUgOiBudWxscHRyOyB9CiAgICAgY29uc3QgVW5uYW1lZFR5cGUm
IHJlc29sdmVkVHlwZSgpIGNvbnN0CkBAIC04OSw2ICs4OCw4IEBAIHByaXZhdGU6CiAKIH0KIAor
REVGSU5FX0RFRkFVTFRfREVMRVRFKFJlc29sdmFibGVUeXBlKQorCiAjZGVmaW5lIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfV0hMU0xfUkVTT0xWQUJMRV9UWVBFKFRvVmFsdWVUeXBlTmFtZSwgcHJl
ZGljYXRlKSBcCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldITFNMOjpB
U1Q6OlRvVmFsdWVUeXBlTmFtZSkgXAogICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJD
b3JlOjpXSExTTDo6QVNUOjpSZXNvbHZhYmxlVHlwZSYgdHlwZSkgeyByZXR1cm4gdHlwZS5wcmVk
aWNhdGU7IH0gXApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMUmV0dXJuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMUmV0dXJuLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJldHVybi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSwyMiArMzksMjAgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFT
VCB7CiAKLWNsYXNzIFJldHVybiA6IHB1YmxpYyBTdGF0ZW1lbnQgeworY2xhc3MgUmV0dXJuIGZp
bmFsIDogcHVibGljIFN0YXRlbWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgUmV0dXJuKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgc3RkOjp1bmlxdWVfcHRy
PEV4cHJlc3Npb24+JiYgdmFsdWUpCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uKQorICAg
ICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6UmV0dXJuKQogICAgICAgICAsIG1fdmFs
dWUoV1RGTW92ZSh2YWx1ZSkpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgflJldHVybigp
ID0gZGVmYXVsdDsKKyAgICB+UmV0dXJuKCkgPSBkZWZhdWx0OwogCiAgICAgUmV0dXJuKGNvbnN0
IFJldHVybiYpID0gZGVsZXRlOwogICAgIFJldHVybihSZXR1cm4mJikgPSBkZWZhdWx0OwogCi0g
ICAgYm9vbCBpc1JldHVybigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAg
IEV4cHJlc3Npb24qIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZS5nZXQoKTsgfQogCiBwcml2YXRl
OgpAQCAtNjcsNiArNjUsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVU
RShSZXR1cm4pCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKFJldHVy
biwgaXNSZXR1cm4oKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5jcHAJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
U3RhdGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCisKKyNp
ZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xBU1QuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKwordm9pZCBT
dGF0ZW1lbnQ6OmRlc3Ryb3koU3RhdGVtZW50JiBzdGF0ZW1lbnQpCit7CisgICAgc3dpdGNoIChz
dGF0ZW1lbnQua2luZCgpKSB7CisgICAgY2FzZSBLaW5kOjpCbG9jazoKKyAgICAgICAgZGVsZXRl
ICZkb3duY2FzdDxBU1Q6OkJsb2NrPihzdGF0ZW1lbnQpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEtpbmQ6OkJyZWFrOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PEFTVDo6QnJlYWs+KHN0
YXRlbWVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6Q29udGludWU6CisgICAg
ICAgIGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpDb250aW51ZT4oc3RhdGVtZW50KTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBLaW5kOjpEb1doaWxlTG9vcDoKKyAgICAgICAgZGVsZXRlICZkb3du
Y2FzdDxBU1Q6OkRvV2hpbGVMb29wPihzdGF0ZW1lbnQpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEtpbmQ6OkVmZmVjdGZ1bEV4cHJlc3Npb246CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8
QVNUOjpFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50PihzdGF0ZW1lbnQpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEtpbmQ6OkZhbGx0aHJvdWdoOgorICAgICAgICBkZWxldGUgJmRvd25j
YXN0PEFTVDo6RmFsbHRocm91Z2g+KHN0YXRlbWVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgS2luZDo6Rm9yTG9vcDoKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OkZvckxvb3A+
KHN0YXRlbWVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6SWY6CisgICAgICAg
IGRlbGV0ZSAmZG93bmNhc3Q8QVNUOjpJZlN0YXRlbWVudD4oc3RhdGVtZW50KTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBLaW5kOjpSZXR1cm46CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8
QVNUOjpSZXR1cm4+KHN0YXRlbWVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6
U3RhdGVtZW50TGlzdDoKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OlN0YXRlbWVudExp
c3Q+KHN0YXRlbWVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6U3dpdGNoQ2Fz
ZToKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBU1Q6OlN3aXRjaENhc2U+KHN0YXRlbWVudCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6U3dpdGNoOgorICAgICAgICBkZWxldGUg
JmRvd25jYXN0PEFTVDo6U3dpdGNoU3RhdGVtZW50PihzdGF0ZW1lbnQpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEtpbmQ6OlZhcmlhYmxlRGVjbGFyYXRpb25zOgorICAgICAgICBkZWxldGUg
JmRvd25jYXN0PEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQ+KHN0YXRlbWVudCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6V2hpbGVMb29wOgorICAgICAgICBkZWxl
dGUgJmRvd25jYXN0PEFTVDo6V2hpbGVMb29wPihzdGF0ZW1lbnQpOworICAgICAgICBicmVhazsK
KyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9IC8vIG5hbWVzcGFjZSBXSExTTAor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50LmgJ
KHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFN0YXRlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKFdFQkdQVSkKIAogI2luY2x1ZGUgIldITFNMQ29kZUxvY2F0aW9uLmgiCisjaW5j
bHVkZSAiV0hMU0xEZWZhdWx0RGVsZXRlLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
ICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKQEAgLTM5LDQ3ICs0MCw3MyBAQCBuYW1lc3Bh
Y2UgQVNUIHsKIAogY2xhc3MgU3RhdGVtZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKKworcHJvdGVjdGVkOgorICAgIH5TdGF0ZW1lbnQoKSA9IGRlZmF1bHQ7CisKIHB1YmxpYzoK
LSAgICBTdGF0ZW1lbnQoQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbikKLSAgICAgICAgOiBtX2Nv
ZGVMb2NhdGlvbihjb2RlTG9jYXRpb24pCisgICAgZW51bSBjbGFzcyBLaW5kIDogdWludDhfdCB7
CisgICAgICAgIEJsb2NrLAorICAgICAgICBCcmVhaywKKyAgICAgICAgQ29udGludWUsCisgICAg
ICAgIERvV2hpbGVMb29wLAorICAgICAgICBFZmZlY3RmdWxFeHByZXNzaW9uLAorICAgICAgICBG
YWxsdGhyb3VnaCwKKyAgICAgICAgRm9yTG9vcCwKKyAgICAgICAgSWYsCisgICAgICAgIFJldHVy
biwKKyAgICAgICAgU3RhdGVtZW50TGlzdCwKKyAgICAgICAgU3dpdGNoQ2FzZSwKKyAgICAgICAg
U3dpdGNoLAorICAgICAgICBWYXJpYWJsZURlY2xhcmF0aW9ucywKKyAgICAgICAgV2hpbGVMb29w
LAorICAgIH07CisgICAgU3RhdGVtZW50KENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24sIEtpbmQg
a2luZCkKKyAgICAgICAgOiBtX2NvZGVMb2NhdGlvbihjb2RlTG9jYXRpb24uc3RhcnRPZmZzZXQo
KSkKKyAgICAgICAgLCBtX2tpbmQoa2luZCkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+
U3RhdGVtZW50KCkgPSBkZWZhdWx0OworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koU3RhdGVtZW50
Jik7CiAKICAgICBTdGF0ZW1lbnQoY29uc3QgU3RhdGVtZW50JikgPSBkZWxldGU7CiAgICAgU3Rh
dGVtZW50KFN0YXRlbWVudCYmKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNCbG9j
aygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQnJlYWsoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRpbnVlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNEb1doaWxlTG9vcCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRWZmZWN0ZnVsRXhwcmVz
c2lvblN0YXRlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29s
IGlzRmFsbHRocm91Z2goKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9v
bCBpc0Zvckxvb3AoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBp
c0lmU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aXNSZXR1cm4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1N0
YXRlbWVudExpc3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBp
c1N3aXRjaENhc2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBp
c1N3aXRjaFN0YXRlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1doaWxlTG9vcCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CisKKyAgICBib29s
IGlzQmxvY2soKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6QmxvY2s7IH0KKyAgICBi
b29sIGlzQnJlYWsoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6QnJlYWs7IH0KKyAg
ICBib29sIGlzQ29udGludWUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6Q29udGlu
dWU7IH0KKyAgICBib29sIGlzRG9XaGlsZUxvb3AoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0g
S2luZDo6RG9XaGlsZUxvb3A7IH0KKyAgICBib29sIGlzRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpFZmZlY3RmdWxFeHByZXNzaW9u
OyB9CisgICAgYm9vbCBpc0ZhbGx0aHJvdWdoKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtp
bmQ6OkZhbGx0aHJvdWdoOyB9CisgICAgYm9vbCBpc0Zvckxvb3AoKSBjb25zdCB7IHJldHVybiBr
aW5kKCkgPT0gS2luZDo6Rm9yTG9vcDsgfQorICAgIGJvb2wgaXNJZlN0YXRlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpJZjsgfQorICAgIGJvb2wgaXNSZXR1cm4oKSBjb25z
dCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6UmV0dXJuOyB9CisgICAgYm9vbCBpc1N0YXRlbWVu
dExpc3QoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6U3RhdGVtZW50TGlzdDsgfQor
ICAgIGJvb2wgaXNTd2l0Y2hDYXNlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OlN3
aXRjaENhc2U7IH0KKyAgICBib29sIGlzU3dpdGNoU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4g
a2luZCgpID09IEtpbmQ6OlN3aXRjaDsgfQorICAgIGJvb2wgaXNWYXJpYWJsZURlY2xhcmF0aW9u
c1N0YXRlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpWYXJpYWJsZURlY2xh
cmF0aW9uczsgfQorICAgIGJvb2wgaXNXaGlsZUxvb3AoKSBjb25zdCB7IHJldHVybiBraW5kKCkg
PT0gS2luZDo6V2hpbGVMb29wOyB9CiAKLSAgICBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2RlTG9jYXRpb247IH0KLSAgICB2b2lkIHVwZGF0ZUNvZGVMb2Nh
dGlvbihDb2RlTG9jYXRpb24gbG9jYXRpb24pIHsgbV9jb2RlTG9jYXRpb24gPSBsb2NhdGlvbjsg
fQorICAgIENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBDb2RlTG9j
YXRpb24obV9jb2RlTG9jYXRpb24sIG1fY29kZUxvY2F0aW9uKTsgfQorICAgIHZvaWQgdXBkYXRl
Q29kZUxvY2F0aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbikgeyBtX2NvZGVMb2NhdGlvbiA9IGxv
Y2F0aW9uLnN0YXJ0T2Zmc2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBDb2RlTG9jYXRpb24gbV9j
b2RlTG9jYXRpb247CisgICAgdW5zaWduZWQgbV9jb2RlTG9jYXRpb247CisgICAgS2luZCBtX2tp
bmQ7CiB9OwogCiB1c2luZyBTdGF0ZW1lbnRzID0gVmVjdG9yPFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+
PjsKIAotfSAvLyBuYW1lc3BhY2UgQVNUCit9CiAKIH0KIAogfQogCitERUZJTkVfREVGQVVMVF9E
RUxFVEUoU3RhdGVtZW50KQorCiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xf
U1RBVEVNRU5UKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCiBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKFdlYkNvcmU6OldITFNMOjpBU1Q6OlRvVmFsdWVUeXBlTmFtZSkgXAogICAg
IHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQm
IHN0YXRlbWVudCkgeyByZXR1cm4gc3RhdGVtZW50LnByZWRpY2F0ZTsgfSBcCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnRMaXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMU3RhdGVtZW50TGlzdC5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnRMaXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDIxICszOCwxOSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNU
IHsKIAotY2xhc3MgU3RhdGVtZW50TGlzdCA6IHB1YmxpYyBTdGF0ZW1lbnQgeworY2xhc3MgU3Rh
dGVtZW50TGlzdCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIHVzaW5nIEJhc2UgPSBTdGF0ZW1lbnQ7CiBwdWJsaWM6CiAgICAgU3Rh
dGVtZW50TGlzdChDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0YXRlbWVudHMmJiBzdGF0ZW1lbnRz
KQotICAgICAgICA6IEJhc2UobG9jYXRpb24pCisgICAgICAgIDogQmFzZShsb2NhdGlvbiwgS2lu
ZDo6U3RhdGVtZW50TGlzdCkKICAgICAgICAgLCBtX3N0YXRlbWVudHMoV1RGTW92ZShzdGF0ZW1l
bnRzKSkKICAgICB7IH0KIAotICAgIHZpcnR1YWwgflN0YXRlbWVudExpc3QoKSA9IGRlZmF1bHQ7
CisgICAgflN0YXRlbWVudExpc3QoKSA9IGRlZmF1bHQ7CiAKICAgICBTdGF0ZW1lbnRzJiBzdGF0
ZW1lbnRzKCkgeyByZXR1cm4gbV9zdGF0ZW1lbnRzOyB9CiAKLSAgICBib29sIGlzU3RhdGVtZW50
TGlzdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogcHJpdmF0ZToKICAgICBT
dGF0ZW1lbnRzIG1fc3RhdGVtZW50czsKIH07CkBAIC02Myw2ICs2MSw4IEBAIHByaXZhdGU6CiAK
IH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKFN0YXRlbWVudExpc3QpCisKIFNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKFN0YXRlbWVudExpc3QsIGlzU3RhdGVtZW50TGlz
dCgpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFN0cnVjdHVyZURlZmluaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgJ
KHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFN0cnVjdHVyZURlZmluaXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMjIg
KzQwLDIwIEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBT
dHJ1Y3R1cmVEZWZpbml0aW9uIDogcHVibGljIE5hbWVkVHlwZSB7CitjbGFzcyBTdHJ1Y3R1cmVE
ZWZpbml0aW9uIGZpbmFsIDogcHVibGljIE5hbWVkVHlwZSB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU3RydWN0dXJlRGVmaW5pdGlvbihDb2RlTG9jYXRpb24g
bG9jYXRpb24sIFN0cmluZyYmIG5hbWUsIFN0cnVjdHVyZUVsZW1lbnRzJiYgc3RydWN0dXJlRWxl
bWVudHMpCi0gICAgICAgIDogTmFtZWRUeXBlKGxvY2F0aW9uLCBXVEZNb3ZlKG5hbWUpKQorICAg
ICAgICA6IE5hbWVkVHlwZShLaW5kOjpTdHJ1Y3R1cmVEZWZpbml0aW9uLCBsb2NhdGlvbiwgV1RG
TW92ZShuYW1lKSkKICAgICAgICAgLCBtX3N0cnVjdHVyZUVsZW1lbnRzKFdURk1vdmUoc3RydWN0
dXJlRWxlbWVudHMpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5TdHJ1Y3R1cmVEZWZp
bml0aW9uKCkgPSBkZWZhdWx0OworICAgIH5TdHJ1Y3R1cmVEZWZpbml0aW9uKCkgPSBkZWZhdWx0
OwogCiAgICAgU3RydWN0dXJlRGVmaW5pdGlvbihjb25zdCBTdHJ1Y3R1cmVEZWZpbml0aW9uJikg
PSBkZWxldGU7CiAgICAgU3RydWN0dXJlRGVmaW5pdGlvbihTdHJ1Y3R1cmVEZWZpbml0aW9uJiYp
ID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNTdHJ1Y3R1cmVEZWZpbml0aW9uKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgU3RydWN0dXJlRWxlbWVudHMmIHN0cnVjdHVy
ZUVsZW1lbnRzKCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmVFbGVtZW50czsgfQogICAgIFN0cnVjdHVy
ZUVsZW1lbnQqIGZpbmQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHsKQEAgLTc3LDYgKzc1LDgg
QEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoU3RydWN0dXJlRGVmaW5p
dGlvbikKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9OQU1FRF9UWVBFKFN0cnVjdHVy
ZURlZmluaXRpb24sIGlzU3RydWN0dXJlRGVmaW5pdGlvbigpKQogCiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZUVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1l
c3BhY2UgQVNUIHsKIAotY2xhc3MgU3RydWN0dXJlRWxlbWVudCB7CitjbGFzcyBTdHJ1Y3R1cmVF
bGVtZW50IGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBTdHJ1Y3R1cmVFbGVtZW50KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgUXVhbGlmaWVycyYmIHF1
YWxpZmllcnMsIFJlZjxVbm5hbWVkVHlwZT4gdHlwZSwgU3RyaW5nJiYgbmFtZSwgc3RkOjp1bmlx
dWVfcHRyPFNlbWFudGljPiYmIHNlbWFudGljKQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgflN0cnVjdHVyZUVsZW1lbnQoKSA9IGRlZmF1bHQ7
CisgICAgflN0cnVjdHVyZUVsZW1lbnQoKSA9IGRlZmF1bHQ7CiAKICAgICBTdHJ1Y3R1cmVFbGVt
ZW50KGNvbnN0IFN0cnVjdHVyZUVsZW1lbnQmKSA9IGRlbGV0ZTsKICAgICBTdHJ1Y3R1cmVFbGVt
ZW50KFN0cnVjdHVyZUVsZW1lbnQmJikgPSBkZWZhdWx0OwpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoQ2FzZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaENhc2Uu
aAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMU3dpdGNoQ2FzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwyMyArNDAsMjEg
QEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIFN3aXRjaENh
c2UgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNzIFN3aXRjaENhc2UgZmluYWwgOiBwdWJsaWMg
U3RhdGVtZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBT
d2l0Y2hDYXNlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgT3B0aW9uYWw8Q29uc3RhbnRFeHByZXNz
aW9uPiYmIHZhbHVlLCBCbG9jayYmIGJsb2NrKQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlv
bikKKyAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OlN3aXRjaENhc2UpCiAgICAg
ICAgICwgbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkKICAgICAgICAgLCBtX2Jsb2NrKFdURk1vdmUo
YmxvY2spKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5Td2l0Y2hDYXNlKCkgPSBkZWZh
dWx0OworICAgIH5Td2l0Y2hDYXNlKCkgPSBkZWZhdWx0OwogCiAgICAgU3dpdGNoQ2FzZShjb25z
dCBTd2l0Y2hDYXNlJikgPSBkZWxldGU7CiAgICAgU3dpdGNoQ2FzZShTd2l0Y2hDYXNlJiYpID0g
ZGVmYXVsdDsKIAotICAgIGJvb2wgaXNTd2l0Y2hDYXNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQotCiAgICAgT3B0aW9uYWw8Q29uc3RhbnRFeHByZXNzaW9uPiYgdmFsdWUoKSB7
IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgQmxvY2smIGJsb2NrKCkgeyByZXR1cm4gbV9ibG9jazsg
fQogCkBAIC03MSw2ICs2OSw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVM
RVRFKFN3aXRjaENhc2UpCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5U
KFN3aXRjaENhc2UsIGlzU3dpdGNoQ2FzZSgpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaFN0YXRlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3
aXRjaFN0YXRlbWVudC5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzksMjMgKzM5LDIxIEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1Qg
ewogCi1jbGFzcyBTd2l0Y2hTdGF0ZW1lbnQgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNzIFN3
aXRjaFN0YXRlbWVudCBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFN3aXRjaFN0YXRlbWVudChDb2RlTG9jYXRpb24g
bG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIHZhbHVlLCBWZWN0b3I8U3dpdGNoQ2Fz
ZT4mJiBzd2l0Y2hDYXNlcykKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24pCisgICAgICAg
IDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpTd2l0Y2gpCiAgICAgICAgICwgbV92YWx1ZShX
VEZNb3ZlKHZhbHVlKSkKICAgICAgICAgLCBtX3N3aXRjaENhc2VzKFdURk1vdmUoc3dpdGNoQ2Fz
ZXMpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5Td2l0Y2hTdGF0ZW1lbnQoKSA9IGRl
ZmF1bHQ7CisgICAgflN3aXRjaFN0YXRlbWVudCgpID0gZGVmYXVsdDsKIAogICAgIFN3aXRjaFN0
YXRlbWVudChjb25zdCBTd2l0Y2hTdGF0ZW1lbnQmKSA9IGRlbGV0ZTsKICAgICBTd2l0Y2hTdGF0
ZW1lbnQoU3dpdGNoU3RhdGVtZW50JiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNTd2l0Y2hT
dGF0ZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNz
aW9uJiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICBWZWN0b3I8U3dpdGNoQ2FzZT4m
IHN3aXRjaENhc2VzKCkgeyByZXR1cm4gbV9zd2l0Y2hDYXNlczsgfQogCkBAIC03MCw2ICs2OCw4
IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKFN3aXRjaFN0YXRlbWVu
dCkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoU3dpdGNoU3RhdGVt
ZW50LCBpc1N3aXRjaFN0YXRlbWVudCgpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVGVy
bmFyeUV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVGVybmFyeUV4cHJlc3Npb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMzcsMjQgKzM3LDIyIEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBB
U1QgewogCi1jbGFzcyBUZXJuYXJ5RXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK2Ns
YXNzIFRlcm5hcnlFeHByZXNzaW9uIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFRlcm5hcnlFeHByZXNzaW9uKENv
ZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgcHJlZGljYXRlLCBV
bmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBib2R5RXhwcmVzc2lvbiwgVW5pcXVlUmVmPEV4cHJlc3Np
b24+JiYgZWxzZUV4cHJlc3Npb24pCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbikKKyAg
ICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpUZXJuYXJ5KQogICAgICAgICAsIG1f
cHJlZGljYXRlKFdURk1vdmUocHJlZGljYXRlKSkKICAgICAgICAgLCBtX2JvZHlFeHByZXNzaW9u
KFdURk1vdmUoYm9keUV4cHJlc3Npb24pKQogICAgICAgICAsIG1fZWxzZUV4cHJlc3Npb24oV1RG
TW92ZShlbHNlRXhwcmVzc2lvbikpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgflRlcm5h
cnlFeHByZXNzaW9uKCkgPSBkZWZhdWx0OworICAgIH5UZXJuYXJ5RXhwcmVzc2lvbigpID0gZGVm
YXVsdDsKIAogICAgIFRlcm5hcnlFeHByZXNzaW9uKGNvbnN0IFRlcm5hcnlFeHByZXNzaW9uJikg
PSBkZWxldGU7CiAgICAgVGVybmFyeUV4cHJlc3Npb24oVGVybmFyeUV4cHJlc3Npb24mJikgPSBk
ZWZhdWx0OwogCi0gICAgYm9vbCBpc1Rlcm5hcnlFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgRXhwcmVzc2lvbiYgcHJlZGljYXRlKCkgeyByZXR1cm4g
bV9wcmVkaWNhdGU7IH0KICAgICBFeHByZXNzaW9uJiBib2R5RXhwcmVzc2lvbigpIHsgcmV0dXJu
IG1fYm9keUV4cHJlc3Npb247IH0KICAgICBFeHByZXNzaW9uJiBlbHNlRXhwcmVzc2lvbigpIHsg
cmV0dXJuIG1fZWxzZUV4cHJlc3Npb247IH0KQEAgLTcxLDYgKzY5LDggQEAgcHJpdmF0ZToKIAog
fQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoVGVybmFyeUV4cHJlc3Npb24pCisKIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihUZXJuYXJ5RXhwcmVzc2lvbiwgaXNUZXJu
YXJ5RXhwcmVzc2lvbigpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldITFNMVHlwZS5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkK
KworI2luY2x1ZGUgIldITFNMQVNULmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNw
YWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK3ZvaWQgVHlwZTo6ZGVzdHJveShUeXBl
JiB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZS5raW5kKCkpIHsKKyAgICBjYXNlIEtpbmQ6OlR5
cGVSZWZlcmVuY2U6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8VHlwZVJlZmVyZW5jZT4odHlw
ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6UG9pbnRlcjoKKyAgICAgICAgZGVs
ZXRlICZkb3duY2FzdDxQb2ludGVyVHlwZT4odHlwZSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgS2luZDo6QXJyYXlSZWZlcmVuY2U6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QXJyYXlS
ZWZlcmVuY2VUeXBlPih0eXBlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpBcnJh
eToKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxBcnJheVR5cGU+KHR5cGUpOworICAgICAgICBi
cmVhazsKKworICAgIGNhc2UgS2luZDo6VHlwZURlZmluaXRpb246CisgICAgICAgIGRlbGV0ZSAm
ZG93bmNhc3Q8VHlwZURlZmluaXRpb24+KHR5cGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEtpbmQ6OlN0cnVjdHVyZURlZmluaXRpb246CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8U3Ry
dWN0dXJlRGVmaW5pdGlvbj4odHlwZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6
RW51bWVyYXRpb25EZWZpbml0aW9uOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PEVudW1lcmF0
aW9uRGVmaW5pdGlvbj4odHlwZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6TmF0
aXZlVHlwZURlY2xhcmF0aW9uOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PE5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbj4odHlwZSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBLaW5kOjpGbG9h
dExpdGVyYWw6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8RmxvYXRMaXRlcmFsVHlwZT4odHlw
ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6SW50ZWdlckxpdGVyYWw6CisgICAg
ICAgIGRlbGV0ZSAmZG93bmNhc3Q8SW50ZWdlckxpdGVyYWxUeXBlPih0eXBlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBLaW5kOjpOdWxsTGl0ZXJhbDoKKyAgICAgICAgZGVsZXRlICZkb3du
Y2FzdDxOdWxsTGl0ZXJhbFR5cGU+KHR5cGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtp
bmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8VW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU+KHR5cGUpOworICAgICAgICBicmVhazsKKyAgICB9Cit9
CisKK1R5cGUmIFR5cGU6OnVuaWZ5Tm9kZSgpCit7CisgICAgc3dpdGNoIChraW5kKCkpIHsKKyAg
ICBjYXNlIEtpbmQ6OlR5cGVSZWZlcmVuY2U6CisgICAgICAgIHJldHVybiBkb3duY2FzdDxUeXBl
UmVmZXJlbmNlPigqdGhpcykudW5pZnlOb2RlSW1wbCgpOworICAgIGNhc2UgS2luZDo6UG9pbnRl
cjoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFBvaW50ZXJUeXBlPigqdGhpcykudW5pZnlOb2Rl
SW1wbCgpOworICAgIGNhc2UgS2luZDo6QXJyYXlSZWZlcmVuY2U6CisgICAgICAgIHJldHVybiBk
b3duY2FzdDxBcnJheVJlZmVyZW5jZVR5cGU+KCp0aGlzKS51bmlmeU5vZGVJbXBsKCk7CisgICAg
Y2FzZSBLaW5kOjpBcnJheToKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFycmF5VHlwZT4oKnRo
aXMpLnVuaWZ5Tm9kZUltcGwoKTsKKworICAgIGNhc2UgS2luZDo6VHlwZURlZmluaXRpb246Cisg
ICAgICAgIHJldHVybiBkb3duY2FzdDxUeXBlRGVmaW5pdGlvbj4oKnRoaXMpLnVuaWZ5Tm9kZUlt
cGwoKTsKKyAgICBjYXNlIEtpbmQ6OlN0cnVjdHVyZURlZmluaXRpb246CisgICAgICAgIHJldHVy
biBkb3duY2FzdDxTdHJ1Y3R1cmVEZWZpbml0aW9uPigqdGhpcykudW5pZnlOb2RlSW1wbCgpOwor
ICAgIGNhc2UgS2luZDo6RW51bWVyYXRpb25EZWZpbml0aW9uOgorICAgICAgICByZXR1cm4gZG93
bmNhc3Q8RW51bWVyYXRpb25EZWZpbml0aW9uPigqdGhpcykudW5pZnlOb2RlSW1wbCgpOworICAg
IGNhc2UgS2luZDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOgorICAgICAgICByZXR1cm4gZG93bmNh
c3Q8TmF0aXZlVHlwZURlY2xhcmF0aW9uPigqdGhpcykudW5pZnlOb2RlSW1wbCgpOworCisgICAg
ZGVmYXVsdDogCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQor
fQorCitib29sIFJlc29sdmFibGVUeXBlOjpjYW5SZXNvbHZlKGNvbnN0IFR5cGUmIHR5cGUpIGNv
bnN0Cit7CisgICAgc3dpdGNoIChraW5kKCkpIHsKKyAgICBjYXNlIEtpbmQ6OkZsb2F0TGl0ZXJh
bDoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEZsb2F0TGl0ZXJhbFR5cGU+KCp0aGlzKS5jYW5S
ZXNvbHZlKHR5cGUpOworICAgIGNhc2UgS2luZDo6SW50ZWdlckxpdGVyYWw6CisgICAgICAgIHJl
dHVybiBkb3duY2FzdDxJbnRlZ2VyTGl0ZXJhbFR5cGU+KCp0aGlzKS5jYW5SZXNvbHZlKHR5cGUp
OworICAgIGNhc2UgS2luZDo6TnVsbExpdGVyYWw6CisgICAgICAgIHJldHVybiBkb3duY2FzdDxO
dWxsTGl0ZXJhbFR5cGU+KCp0aGlzKS5jYW5SZXNvbHZlKHR5cGUpOworICAgIGNhc2UgS2luZDo6
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFVuc2lnbmVk
SW50ZWdlckxpdGVyYWxUeXBlPigqdGhpcykuY2FuUmVzb2x2ZSh0eXBlKTsKKyAgICBkZWZhdWx0
OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKwordW5z
aWduZWQgUmVzb2x2YWJsZVR5cGU6OmNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFtZWRUeXBlJiB0
eXBlKSBjb25zdAoreworICAgIHN3aXRjaCAoa2luZCgpKSB7CisgICAgY2FzZSBLaW5kOjpGbG9h
dExpdGVyYWw6CisgICAgICAgIHJldHVybiBkb3duY2FzdDxGbG9hdExpdGVyYWxUeXBlPigqdGhp
cykuY29udmVyc2lvbkNvc3QodHlwZSk7CisgICAgY2FzZSBLaW5kOjpJbnRlZ2VyTGl0ZXJhbDoK
KyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEludGVnZXJMaXRlcmFsVHlwZT4oKnRoaXMpLmNvbnZl
cnNpb25Db3N0KHR5cGUpOworICAgIGNhc2UgS2luZDo6TnVsbExpdGVyYWw6CisgICAgICAgIHJl
dHVybiBkb3duY2FzdDxOdWxsTGl0ZXJhbFR5cGU+KCp0aGlzKS5jb252ZXJzaW9uQ29zdCh0eXBl
KTsKKyAgICBjYXNlIEtpbmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw6CisgICAgICAgIHJldHVy
biBkb3duY2FzdDxVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZT4oKnRoaXMpLmNvbnZlcnNpb25D
b3N0KHR5cGUpOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfQorfQorCitTdHJpbmcgVW5uYW1lZFR5cGU6OnRvU3RyaW5nKCkgY29uc3QK
K3sKKyAgICBzd2l0Y2ggKGtpbmQoKSkgeworICAgIGNhc2UgS2luZDo6VHlwZVJlZmVyZW5jZToK
KyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KCp0aGlzKS50b1N0cmluZygp
OworICAgIGNhc2UgS2luZDo6UG9pbnRlcjoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFBvaW50
ZXJUeXBlPigqdGhpcykudG9TdHJpbmcoKTsKKyAgICBjYXNlIEtpbmQ6OkFycmF5UmVmZXJlbmNl
OgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8QXJyYXlSZWZlcmVuY2VUeXBlPigqdGhpcykudG9T
dHJpbmcoKTsKKyAgICBjYXNlIEtpbmQ6OkFycmF5OgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8
QXJyYXlUeXBlPigqdGhpcykudG9TdHJpbmcoKTsKKyAgICBkZWZhdWx0OiAKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKK30KKworfSAvLyBuYW1lc3BhY2Ug
QVNUCisKK30gLy8gbmFtZXNwYWNlIFdITFNMCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMVHlwZS5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAKKyNpbmNsdWRlICJXSExTTERlZmF1
bHREZWxldGUuaCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9U
eXBlQ2FzdHMuaD4KIApAQCAtMzgsMTAgKzM5LDMzIEBAIG5hbWVzcGFjZSBBU1QgewogCiBjbGFz
cyBUeXBlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBUeXBl
KCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB+VHlwZSgpID0gZGVmYXVsdDsKK3Byb3RlY3Rl
ZDoKKyAgICB+VHlwZSgpID0gZGVmYXVsdDsKKworcHVibGljOgorICAgIGVudW0gY2xhc3MgS2lu
ZCA6IHVpbnQ4X3QgeworICAgICAgICAvLyBVbm5hbWVkVHlwZXMKKyAgICAgICAgVHlwZVJlZmVy
ZW5jZSwKKyAgICAgICAgUG9pbnRlciwKKyAgICAgICAgQXJyYXlSZWZlcmVuY2UsCisgICAgICAg
IEFycmF5LAorICAgICAgICAvLyBOYW1lZFR5cGVzCisgICAgICAgIFR5cGVEZWZpbml0aW9uLAor
ICAgICAgICBTdHJ1Y3R1cmVEZWZpbml0aW9uLAorICAgICAgICBFbnVtZXJhdGlvbkRlZmluaXRp
b24sCisgICAgICAgIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbiwKKyAgICAgICAgLy8gUmVzb2x2YWJs
ZVR5cGVzCisgICAgICAgIEZsb2F0TGl0ZXJhbCwKKyAgICAgICAgSW50ZWdlckxpdGVyYWwsCisg
ICAgICAgIE51bGxMaXRlcmFsLAorICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsLAorICAg
IH07CisKKyAgICBUeXBlKEtpbmQga2luZCkKKyAgICAgICAgOiBtX2tpbmQoa2luZCkKKyAgICB7
IH0KKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KFR5cGUmKTsKIAogICAgIGV4cGxpY2l0IFR5cGUo
Y29uc3QgVHlwZSYpID0gZGVsZXRlOwogICAgIFR5cGUoVHlwZSYmKSA9IGRlZmF1bHQ7CkBAIC00
OSwxMSArNzMsMzYgQEAgcHVibGljOgogICAgIFR5cGUmIG9wZXJhdG9yPShjb25zdCBUeXBlJikg
PSBkZWxldGU7CiAgICAgVHlwZSYgb3BlcmF0b3I9KFR5cGUmJikgPSBkZWZhdWx0OwogCi0gICAg
dmlydHVhbCBib29sIGlzTmFtZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNVbm5hbWVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzUmVzb2x2YWJsZVR5cGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQorCisgICAgYm9vbCBpc1Vu
bmFtZWRUeXBlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID49IEtpbmQ6OlR5cGVSZWZlcmVuY2Ug
JiYga2luZCgpIDw9IEtpbmQ6OkFycmF5OyB9CisgICAgYm9vbCBpc05hbWVkVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIGtpbmQoKSA+PSBLaW5kOjpUeXBlRGVmaW5pdGlvbiAmJiBraW5kKCkgPD0gS2lu
ZDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOyB9CisgICAgYm9vbCBpc1Jlc29sdmFibGVUeXBlKCkg
Y29uc3QgeyByZXR1cm4ga2luZCgpID49IEtpbmQ6OkZsb2F0TGl0ZXJhbCAmJiBraW5kKCkgPD0g
S2luZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDsgfQorCisgICAgYm9vbCBpc1R5cGVSZWZlcmVu
Y2UoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6VHlwZVJlZmVyZW5jZTsgfQorICAg
IGJvb2wgaXNQb2ludGVyVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpQb2lu
dGVyOyB9CisgICAgYm9vbCBpc0FycmF5UmVmZXJlbmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtp
bmQoKSA9PSBLaW5kOjpBcnJheVJlZmVyZW5jZTsgfQorICAgIGJvb2wgaXNBcnJheVR5cGUoKSBj
b25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6QXJyYXk7IH0KKyAgICBib29sIGlzUmVmZXJl
bmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGlzUG9pbnRlclR5cGUoKSB8fCBpc0FycmF5UmVmZXJl
bmNlVHlwZSgpOyB9CisKKyAgICBib29sIGlzVHlwZURlZmluaXRpb24oKSBjb25zdCB7IHJldHVy
biBraW5kKCkgPT0gS2luZDo6VHlwZURlZmluaXRpb247IH0KKyAgICBib29sIGlzU3RydWN0dXJl
RGVmaW5pdGlvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpTdHJ1Y3R1cmVEZWZp
bml0aW9uOyB9CisgICAgYm9vbCBpc0VudW1lcmF0aW9uRGVmaW5pdGlvbigpIGNvbnN0IHsgcmV0
dXJuIGtpbmQoKSA9PSBLaW5kOjpFbnVtZXJhdGlvbkRlZmluaXRpb247IH0KKyAgICBib29sIGlz
TmF0aXZlVHlwZURlY2xhcmF0aW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbjsgfQorCisgICAgYm9vbCBpc0Zsb2F0TGl0ZXJhbFR5cGUoKSBj
b25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6RmxvYXRMaXRlcmFsOyB9CisgICAgYm9vbCBp
c0ludGVnZXJMaXRlcmFsVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpJbnRl
Z2VyTGl0ZXJhbDsgfQorICAgIGJvb2wgaXNOdWxsTGl0ZXJhbFR5cGUoKSBjb25zdCB7IHJldHVy
biBraW5kKCkgPT0gS2luZDo6TnVsbExpdGVyYWw7IH0KKyAgICBib29sIGlzVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6VW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbDsgfQorCisgICAgVHlwZSYgdW5pZnlOb2RlKCk7CisgICAgY29uc3QgVHlw
ZSYgdW5pZnlOb2RlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjb25zdF9jYXN0PFR5
cGUqPih0aGlzKS0+dW5pZnlOb2RlKCk7CisgICAgfQogCiBwcml2YXRlOgorICAgIEtpbmQgbV9r
aW5kOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVNUCkBAIC02Miw5ICsxMTEsMTIgQEAgcHJpdmF0
ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoVHlwZSkKKwogI2RlZmluZSBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwK
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V0hMU0w6OkFTVDo6VG9WYWx1
ZVR5cGVOYW1lKSBcCiAgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OldITFNM
OjpBU1Q6OlR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGUucHJlZGljYXRlOyB9IFwKIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRU5EKCkKIAorCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVEZWZpbml0aW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZURlZmlu
aXRpb24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMVHlwZURlZmluaXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDAs
MzUgKzQwLDI5IEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFz
cyBUeXBlRGVmaW5pdGlvbiA6IHB1YmxpYyBOYW1lZFR5cGUgeworY2xhc3MgVHlwZURlZmluaXRp
b24gZmluYWwgOiBwdWJsaWMgTmFtZWRUeXBlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBUeXBlRGVmaW5pdGlvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0
cmluZyYmIG5hbWUsIFJlZjxVbm5hbWVkVHlwZT4gdHlwZSkKLSAgICAgICAgOiBOYW1lZFR5cGUo
bG9jYXRpb24sIFdURk1vdmUobmFtZSkpCisgICAgICAgIDogTmFtZWRUeXBlKEtpbmQ6OlR5cGVE
ZWZpbml0aW9uLCBsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSkKICAgICAgICAgLCBtX3R5cGUoV1RG
TW92ZSh0eXBlKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+VHlwZURlZmluaXRpb24o
KSA9IGRlZmF1bHQ7CisgICAgflR5cGVEZWZpbml0aW9uKCkgPSBkZWZhdWx0OwogCiAgICAgVHlw
ZURlZmluaXRpb24oY29uc3QgVHlwZURlZmluaXRpb24mKSA9IGRlbGV0ZTsKICAgICBUeXBlRGVm
aW5pdGlvbihUeXBlRGVmaW5pdGlvbiYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzVHlwZURl
ZmluaXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBVbm5hbWVk
VHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQogCi0gICAgY29uc3QgVHlwZSYgdW5pZnlO
b2RlKCkgY29uc3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3R5cGUtPnVuaWZ5
Tm9kZSgpOwotICAgIH0KLQotICAgIFR5cGUmIHVuaWZ5Tm9kZSgpIG92ZXJyaWRlCitwcml2YXRl
OgorICAgIGZyaWVuZCBjbGFzcyBUeXBlOworICAgIFR5cGUmIHVuaWZ5Tm9kZUltcGwoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIG1fdHlwZS0+dW5pZnlOb2RlKCk7CiAgICAgfQogCi1wcml2YXRl
OgogICAgIFJlZjxVbm5hbWVkVHlwZT4gbV90eXBlOwogfTsKIApAQCAtNzgsNiArNzIsOCBAQCBw
cml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShUeXBlRGVmaW5pdGlvbikKKwog
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9OQU1FRF9UWVBFKFR5cGVEZWZpbml0aW9uLCBp
c1R5cGVEZWZpbml0aW9uKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZVJlZmVyZW5jZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2Uu
aAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMVHlwZVJlZmVyZW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCogbmV3IFR5cGVSZWZlcmVuY2Uo
bG9jYXRpb24sIFdURk1vdmUobmFtZSksIFdURk1vdmUodHlwZUFyZ3VtZW50cykpKTsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIH5UeXBlUmVmZXJlbmNlKCkgPSBkZWZhdWx0OworICAgIH5UeXBlUmVm
ZXJlbmNlKCkgPSBkZWZhdWx0OwogCiAgICAgc3RhdGljIFJlZjxUeXBlUmVmZXJlbmNlPiB3cmFw
KENvZGVMb2NhdGlvbiwgTmFtZWRUeXBlJiByZXNvbHZlZFR5cGUpOwogCkBAIC03MiwxOCArNzIs
NiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqbV9yZXNvbHZlZFR5cGU7CiAgICAgfQogCi0g
ICAgY29uc3QgVHlwZSYgdW5pZnlOb2RlKCkgY29uc3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChtX3Jlc29sdmVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBtX3Jlc29sdmVkVHlwZS0+
dW5pZnlOb2RlKCk7Ci0gICAgfQotCi0gICAgVHlwZSYgdW5pZnlOb2RlKCkgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX3Jlc29sdmVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBtX3Jl
c29sdmVkVHlwZS0+dW5pZnlOb2RlKCk7Ci0gICAgfQotCiAgICAgdm9pZCBzZXRSZXNvbHZlZFR5
cGUoTmFtZWRUeXBlJiByZXNvbHZlZFR5cGUpCiAgICAgewogICAgICAgICBtX3Jlc29sdmVkVHlw
ZSA9ICZyZXNvbHZlZFR5cGU7CkBAIC0xMDMsMTMgKzkxLDIwIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuICZ1bmlmeU5vZGUoKSA9PSAmb3RoZXIudW5pZnlOb2RlKCk7CiAgICAgfQogCi0gICAg
U3RyaW5nIHRvU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJpbmcgdG9TdHJpbmcoKSBj
b25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKG1fcmVzb2x2ZWRUeXBlKTsKICAgICAgICAgcmV0
dXJuIG1fcmVzb2x2ZWRUeXBlLT5uYW1lKCk7CiAgICAgfQogCiBwcml2YXRlOgorICAgIGZyaWVu
ZCBjbGFzcyBUeXBlOworICAgIFR5cGUmIHVuaWZ5Tm9kZUltcGwoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKG1fcmVzb2x2ZWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIG1fcmVzb2x2ZWRUeXBlLT51
bmlmeU5vZGUoKTsKKyAgICB9CisKICAgICBTdHJpbmcgbV9uYW1lOwogICAgIFR5cGVBcmd1bWVu
dHMgbV90eXBlQXJndW1lbnRzOwogICAgIE5hbWVkVHlwZSogbV9yZXNvbHZlZFR5cGUgeyBudWxs
cHRyIH07CkBAIC0xMjEsNiArMTE2LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVM
VF9ERUxFVEUoVHlwZVJlZmVyZW5jZSkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9V
Tk5BTUVEX1RZUEUoVHlwZVJlZmVyZW5jZSwgaXNUeXBlUmVmZXJlbmNlKCkpCiAKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1l
ZFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFVubmFtZWRUeXBlLmNwcAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MSwzMiArNDEsMzYgQEAgbmFtZXNwYWNlIEFTVCB7CiAKIHVuc2ln
bmVkIFVubmFtZWRUeXBlOjpoYXNoKCkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKG1fa2luZCkgewor
ICAgIHN3aXRjaCAoa2luZCgpKSB7CiAgICAgY2FzZSBLaW5kOjpUeXBlUmVmZXJlbmNlOgogICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8VHlwZVJlZmVyZW5jZT4oKnRoaXMpLmhhc2goKTsKLSAgICBj
YXNlIEtpbmQ6OlBvaW50ZXJUeXBlOgorICAgIGNhc2UgS2luZDo6UG9pbnRlcjoKICAgICAgICAg
cmV0dXJuIGRvd25jYXN0PFBvaW50ZXJUeXBlPigqdGhpcykuaGFzaCgpOwotICAgIGNhc2UgS2lu
ZDo6QXJyYXlSZWZlcmVuY2VUeXBlOgorICAgIGNhc2UgS2luZDo6QXJyYXlSZWZlcmVuY2U6CiAg
ICAgICAgIHJldHVybiBkb3duY2FzdDxBcnJheVJlZmVyZW5jZVR5cGU+KCp0aGlzKS5oYXNoKCk7
Ci0gICAgY2FzZSBLaW5kOjpBcnJheVR5cGU6CisgICAgY2FzZSBLaW5kOjpBcnJheToKICAgICAg
ICAgcmV0dXJuIGRvd25jYXN0PEFycmF5VHlwZT4oKnRoaXMpLmhhc2goKTsKKyAgICBkZWZhdWx0
OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIH0KIAogYm9v
bCBVbm5hbWVkVHlwZTo6b3BlcmF0b3I9PShjb25zdCBVbm5hbWVkVHlwZSYgb3RoZXIpIGNvbnN0
CiB7Ci0gICAgaWYgKG90aGVyLm1fa2luZCAhPSBtX2tpbmQpCisgICAgaWYgKG90aGVyLmtpbmQo
KSAhPSBraW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN3aXRjaCAobV9raW5k
KSB7CisgICAgc3dpdGNoIChraW5kKCkpIHsKICAgICBjYXNlIEtpbmQ6OlR5cGVSZWZlcmVuY2U6
CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxUeXBlUmVmZXJlbmNlPigqdGhpcykgPT0gZG93bmNh
c3Q8VHlwZVJlZmVyZW5jZT4ob3RoZXIpOwotICAgIGNhc2UgS2luZDo6UG9pbnRlclR5cGU6Cisg
ICAgY2FzZSBLaW5kOjpQb2ludGVyOgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8UG9pbnRlclR5
cGU+KCp0aGlzKSA9PSBkb3duY2FzdDxQb2ludGVyVHlwZT4ob3RoZXIpOwotICAgIGNhc2UgS2lu
ZDo6QXJyYXlSZWZlcmVuY2VUeXBlOgorICAgIGNhc2UgS2luZDo6QXJyYXlSZWZlcmVuY2U6CiAg
ICAgICAgIHJldHVybiBkb3duY2FzdDxBcnJheVJlZmVyZW5jZVR5cGU+KCp0aGlzKSA9PSBkb3du
Y2FzdDxBcnJheVJlZmVyZW5jZVR5cGU+KG90aGVyKTsKLSAgICBjYXNlIEtpbmQ6OkFycmF5VHlw
ZToKKyAgICBjYXNlIEtpbmQ6OkFycmF5OgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8QXJyYXlU
eXBlPigqdGhpcykgPT0gZG93bmNhc3Q8QXJyYXlUeXBlPihvdGhlcik7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMVW5uYW1lZFR5cGUuaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNDUsNDMgKzQ1LDIzIEBAIGNsYXNzIFVubmFtZWRUeXBlIDogcHVibGljIFR5cGUsIHB1
YmxpYyAKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShVbm5hbWVkVHlwZSk7CiBwdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBLaW5kIHsKLSAgICAg
ICAgVHlwZVJlZmVyZW5jZSwKLSAgICAgICAgUG9pbnRlclR5cGUsCi0gICAgICAgIEFycmF5UmVm
ZXJlbmNlVHlwZSwKLSAgICAgICAgQXJyYXlUeXBlCi0gICAgfTsKLQogICAgIFVubmFtZWRUeXBl
KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgS2luZCBraW5kKQotICAgICAgICA6IG1fY29kZUxvY2F0
aW9uKGxvY2F0aW9uKQotICAgICAgICAsIG1fa2luZChraW5kKQorICAgICAgICA6IFR5cGUoa2lu
ZCkKKyAgICAgICAgLCBtX2NvZGVMb2NhdGlvbihsb2NhdGlvbi5zdGFydE9mZnNldCgpKQogICAg
IHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5Vbm5hbWVkVHlwZSgpID0gZGVmYXVsdDsKLQotICAg
IGJvb2wgaXNVbm5hbWVkVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQot
ICAgIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQotICAgIGJvb2wgaXNUeXBl
UmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4gbV9raW5kID09IEtpbmQ6OlR5cGVSZWZlcmVuY2U7
IH0KLSAgICBib29sIGlzUG9pbnRlclR5cGUoKSBjb25zdCB7IHJldHVybiBtX2tpbmQgPT0gS2lu
ZDo6UG9pbnRlclR5cGU7IH0KLSAgICBib29sIGlzQXJyYXlSZWZlcmVuY2VUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9raW5kID09IEtpbmQ6OkFycmF5UmVmZXJlbmNlVHlwZTsgfQotICAgIGJvb2wg
aXNBcnJheVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2tpbmQgPT0gS2luZDo6QXJyYXlUeXBlOyB9
Ci0gICAgYm9vbCBpc1JlZmVyZW5jZVR5cGUoKSBjb25zdCB7IHJldHVybiBpc1BvaW50ZXJUeXBl
KCkgfHwgaXNBcnJheVJlZmVyZW5jZVR5cGUoKTsgfQotCi0gICAgdmlydHVhbCBjb25zdCBUeXBl
JiB1bmlmeU5vZGUoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQotICAgIHZpcnR1YWwgVHlwZSYg
dW5pZnlOb2RlKCkgeyByZXR1cm4gKnRoaXM7IH0KLQogICAgIHVuc2lnbmVkIGhhc2goKSBjb25z
dDsKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVW5uYW1lZFR5cGUmKSBjb25zdDsKIAotICAg
IHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgPSAwOworICAgIFN0cmluZyB0b1N0cmlu
ZygpIGNvbnN0OwogCi0gICAgY29uc3QgQ29kZUxvY2F0aW9uJiBjb2RlTG9jYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX2NvZGVMb2NhdGlvbjsgfQorICAgIENvZGVMb2NhdGlvbiBjb2RlTG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBDb2RlTG9jYXRpb24obV9jb2RlTG9jYXRpb24sIG1fY29kZUxv
Y2F0aW9uKTsgfQogCiBwcml2YXRlOgotICAgIENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsK
LSAgICBLaW5kIG1fa2luZDsKKyAgICBmcmllbmQgY2xhc3MgVHlwZTsKKyAgICBUeXBlJiB1bmlm
eU5vZGVJbXBsKCkgeyByZXR1cm4gKnRoaXM7IH0KKyAgICB1bnNpZ25lZCBtX2NvZGVMb2NhdGlv
bjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFTVApAQCAtOTAsNiArNzAsOCBAQCBwcml2YXRlOgog
CiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShVbm5hbWVkVHlwZSkKKwogI2RlZmluZSBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1VOTkFNRURfVFlQRShUb1ZhbHVlVHlwZU5hbWUsIHBy
ZWRpY2F0ZSkgXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExTTDo6
QVNUOjpUb1ZhbHVlVHlwZU5hbWUpIFwKICAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGUucHJlZGlj
YXRlOyB9IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgJ
KHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMzcs
MTcgKzM3LDE3IEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFz
cyBVbnNpZ25lZEludGVnZXJMaXRlcmFsIDogcHVibGljIEV4cHJlc3Npb24geworY2xhc3MgVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbCBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFs
KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgdW5zaWduZWQgdmFsdWUpCi0gICAgICAgIDogRXhwcmVz
c2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpVbnNp
Z25lZEludGVnZXJMaXRlcmFsKQogICAgICAgICAsIG1fdHlwZShsb2NhdGlvbiwgdmFsdWUpCiAg
ICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+VW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbCgpID0gZGVmYXVsdDsKKyAgICB+VW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbCgpID0gZGVmYXVsdDsKIAogICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwoY29uc3QgVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbCYpID0gZGVsZXRlOwogICAgIFVuc2lnbmVkSW50ZWdlckxpdGVy
YWwoVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CkBAIC01OCw4ICs1OCw2IEBA
IHB1YmxpYzoKICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYgdHlwZSgpIHsgcmV0dXJu
IG1fdHlwZTsgfQogICAgIHVuc2lnbmVkIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsg
fQogCi0gICAgYm9vbCBpc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWwoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9Ci0KICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsIGNsb25lKCkgY29u
c3QKICAgICB7CiAgICAgICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwgcmVzdWx0KGNvZGVMb2Nh
dGlvbigpLCBtX3ZhbHVlKTsKQEAgLTgzLDYgKzgxLDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJ
TkVfREVGQVVMVF9ERUxFVEUoVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkKKwogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFVuc2lnbmVkSW50ZWdlckxpdGVyYWwsIGlzVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbCgpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5jcHAJKHJldmlzaW9uIDI0ODQwNCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50
ZWdlckxpdGVyYWxUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTcgKzQxLDEyIEBAIG5h
bWVzcGFjZSBXSExTTCB7CiBuYW1lc3BhY2UgQVNUIHsKIAogVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bFR5cGU6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwg
dW5zaWduZWQgdmFsdWUpCi0gICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIDogUmVzb2x2YWJsZVR5
cGUoS2luZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkKKyAgICAsIG1fdmFsdWUodmFsdWUpCiAg
ICAgLCBtX3ByZWZlcnJlZFR5cGUoVHlwZVJlZmVyZW5jZTo6Y3JlYXRlKGxvY2F0aW9uLCAidWlu
dCJfc3RyLCBUeXBlQXJndW1lbnRzKCkpKQogewogfQogCi1VbnNpZ25lZEludGVnZXJMaXRlcmFs
VHlwZTo6flVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKCkgPSBkZWZhdWx0OwotCi1VbnNpZ25l
ZEludGVnZXJMaXRlcmFsVHlwZTo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwotCi1VbnNpZ25lZEludGVnZXJMaXRlcmFs
VHlwZSYgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU6Om9wZXJhdG9yPShVbnNpZ25lZEludGVn
ZXJMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7Ci0KIGJvb2wgVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bFR5cGU6OmNhblJlc29sdmUoY29uc3QgVHlwZSYgdHlwZSkgY29uc3QKIHsKICAgICBpZiAoIWlz
PE5hbWVkVHlwZT4odHlwZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50
ZWdlckxpdGVyYWxUeXBlLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDI3ICs0MCwyNSBAQCBuYW1lc3BhY2UgQVNUIHsKIAogY2xh
c3MgVHlwZVJlZmVyZW5jZTsKIAotY2xhc3MgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUgOiBw
dWJsaWMgUmVzb2x2YWJsZVR5cGUgeworY2xhc3MgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUg
ZmluYWwgOiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKENvZGVMb2NhdGlv
biwgdW5zaWduZWQgdmFsdWUpOwogCi0gICAgdmlydHVhbCB+VW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bFR5cGUoKTsKKyAgICB+VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoKSA9IGRlZmF1bHQ7CiAK
ICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZShjb25zdCBVbnNpZ25lZEludGVnZXJMaXRl
cmFsVHlwZSYpID0gZGVsZXRlOwotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKFVuc2ln
bmVkSW50ZWdlckxpdGVyYWxUeXBlJiYpOworICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBl
KFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKIAogICAgIFVuc2lnbmVk
SW50ZWdlckxpdGVyYWxUeXBlJiBvcGVyYXRvcj0oY29uc3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYgb3BlcmF0
b3I9KFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiYpOwotCi0gICAgYm9vbCBpc1Vuc2lnbmVk
SW50ZWdlckxpdGVyYWxUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiBvcGVyYXRvcj0oVW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwogCiAgICAgdW5zaWduZWQgdmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlOyB9CiAKICAgICBUeXBlUmVmZXJlbmNlJiBwcmVmZXJyZWRUeXBlKCkgeyBy
ZXR1cm4gbV9wcmVmZXJyZWRUeXBlOyB9CiAKLSAgICBib29sIGNhblJlc29sdmUoY29uc3QgVHlw
ZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHVuc2lnbmVkIGNvbnZlcnNpb25Db3N0KGNvbnN0IFVu
bmFtZWRUeXBlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5SZXNvbHZlKGNvbnN0IFR5
cGUmKSBjb25zdDsKKyAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVkVHlw
ZSYpIGNvbnN0OwogCiAgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUgY2xvbmUoKSBjb25z
dDsKIApAQCAtNzcsNiArNzUsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RF
TEVURShVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19XSExTTF9SRVNPTFZBQkxFX1RZUEUoVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUsIGlzVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgJKHJldmlzaW9uIDI0ODQw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlh
YmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDIyICszOSwy
MCBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgVmFyaWFi
bGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNzIFZhcmlh
YmxlRGVjbGFyYXRpb25zU3RhdGVtZW50IGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVmFyaWFibGVEZWNsYXJhdGlv
bnNTdGF0ZW1lbnQoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBWYXJpYWJsZURlY2xhcmF0aW9ucyYm
IHZhcmlhYmxlRGVjbGFyYXRpb25zKQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbikKKyAg
ICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OlZhcmlhYmxlRGVjbGFyYXRpb25zKQog
ICAgICAgICAsIG1fdmFyaWFibGVEZWNsYXJhdGlvbnMoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0
aW9ucykpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgflZhcmlhYmxlRGVjbGFyYXRpb25z
U3RhdGVtZW50KCkgPSBkZWZhdWx0OworICAgIH5WYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVu
dCgpID0gZGVmYXVsdDsKIAogICAgIFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KGNvbnN0
IFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50JikgPSBkZWxldGU7CiAgICAgVmFyaWFibGVE
ZWNsYXJhdGlvbnNTdGF0ZW1lbnQoVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQmJikgPSBk
ZWZhdWx0OwogCi0gICAgYm9vbCBpc1ZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgVmVjdG9yPFVuaXF1ZVJlZjxWYXJp
YWJsZURlY2xhcmF0aW9uPj4mIHZhcmlhYmxlRGVjbGFyYXRpb25zKCkgeyByZXR1cm4gbV92YXJp
YWJsZURlY2xhcmF0aW9uczsgfQogCiBwcml2YXRlOgpAQCAtNjcsNiArNjUsOCBAQCBwcml2YXRl
OgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRl
bWVudCkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoVmFyaWFibGVE
ZWNsYXJhdGlvbnNTdGF0ZW1lbnQsIGlzVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoKSkK
IAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlUmVmZXJlbmNlLmgJKHJldmlzaW9u
IDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFZhcmlhYmxlUmVmZXJlbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE2ICszOCwxNiBAQCBu
YW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgVmFyaWFibGVSZWZl
cmVuY2UgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBWYXJpYWJsZVJlZmVyZW5jZSBmaW5h
bCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBWYXJpYWJsZVJlZmVyZW5jZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmlu
ZyYmIG5hbWUpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBFeHBy
ZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpWYXJpYWJsZVJlZmVyZW5jZSkKICAgICAgICAgLCBtX25h
bWUoV1RGTW92ZShuYW1lKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+VmFyaWFibGVS
ZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CisgICAgflZhcmlhYmxlUmVmZXJlbmNlKCkgPSBkZWZhdWx0
OwogCiAgICAgVmFyaWFibGVSZWZlcmVuY2UoY29uc3QgVmFyaWFibGVSZWZlcmVuY2UmKSA9IGRl
bGV0ZTsKICAgICBWYXJpYWJsZVJlZmVyZW5jZShWYXJpYWJsZVJlZmVyZW5jZSYmKSA9IGRlZmF1
bHQ7CkBAIC02MCw4ICs2MCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKLSAgICBib29sIGlzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0KICAgICBTdHJpbmcmIG5hbWUoKSB7IHJldHVybiBtX25hbWU7IH0KIAog
ICAgIFZhcmlhYmxlRGVjbGFyYXRpb24qIHZhcmlhYmxlKCkgeyByZXR1cm4gbV92YXJpYWJsZTsg
fQpAQCAtNzMsNyArNzEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgVmFyaWFibGVSZWZl
cmVuY2UoQ29kZUxvY2F0aW9uIGxvY2F0aW9uKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRp
b24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6VmFyaWFibGVSZWZlcmVu
Y2UpCiAgICAgewogICAgIH0KIApAQCAtODcsNiArODUsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RF
RklORV9ERUZBVUxUX0RFTEVURShWYXJpYWJsZVJlZmVyZW5jZSkKKwogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFZhcmlhYmxlUmVmZXJlbmNlLCBpc1ZhcmlhYmxlUmVm
ZXJlbmNlKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmgJKHJldmlzaW9uIDI0ODQw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxl
TG9vcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyMyArMzgsMjEgQEAgbmFtZXNwYWNlIFdITFNM
IHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIFdoaWxlTG9vcCA6IHB1YmxpYyBTdGF0ZW1l
bnQgeworY2xhc3MgV2hpbGVMb29wIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2hpbGVMb29wKENvZGVMb2NhdGlv
biBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgY29uZGl0aW9uYWwsIFVuaXF1ZVJl
ZjxTdGF0ZW1lbnQ+JiYgYm9keSkKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24pCisgICAg
ICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpXaGlsZUxvb3ApCiAgICAgICAgICwgbV9j
b25kaXRpb25hbChXVEZNb3ZlKGNvbmRpdGlvbmFsKSkKICAgICAgICAgLCBtX2JvZHkoV1RGTW92
ZShib2R5KSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+V2hpbGVMb29wKCkgPSBkZWZh
dWx0OworICAgIH5XaGlsZUxvb3AoKSA9IGRlZmF1bHQ7CiAKICAgICBXaGlsZUxvb3AoY29uc3Qg
V2hpbGVMb29wJikgPSBkZWxldGU7CiAgICAgV2hpbGVMb29wKFdoaWxlTG9vcCYmKSA9IGRlZmF1
bHQ7CiAKLSAgICBib29sIGlzV2hpbGVMb29wKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQotCiAgICAgRXhwcmVzc2lvbiYgY29uZGl0aW9uYWwoKSB7IHJldHVybiBtX2NvbmRpdGlv
bmFsOyB9CiAgICAgU3RhdGVtZW50JiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9CiAKQEAgLTY5
LDYgKzY3LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoV2hpbGVM
b29wKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChXaGlsZUxvb3As
IGlzV2hpbGVMb29wKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcAko
cmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
TWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw5ICs3Miw5IEBA
IHB1YmxpYzoKICAgICAKICAgICBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kIGtpbmQoKSB7IHJldHVy
biBtX2tpbmQ7IH0KICAgICBib29sIGlzUmVmZXJlbmNlVHlwZU5hbWVOb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9raW5kID09IEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlR5cGVSZWZlcmVuY2U7IH0K
LSAgICBib29sIGlzUG9pbnRlclR5cGVOYW1lTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCA9
PSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQb2ludGVyVHlwZTsgfQotICAgIGJvb2wgaXNBcnJh
eVJlZmVyZW5jZVR5cGVOYW1lTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCA9PSBBU1Q6OlVu
bmFtZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVyZW5jZVR5cGU7IH0KLSAgICBib29sIGlzQXJyYXlU
eXBlTmFtZU5vZGUoKSBjb25zdCB7IHJldHVybiBtX2tpbmQgPT0gQVNUOjpVbm5hbWVkVHlwZTo6
S2luZDo6QXJyYXlUeXBlOyB9CisgICAgYm9vbCBpc1BvaW50ZXJUeXBlTmFtZU5vZGUoKSBjb25z
dCB7IHJldHVybiBtX2tpbmQgPT0gQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlcjsgfQor
ICAgIGJvb2wgaXNBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
a2luZCA9PSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVyZW5jZTsgfQorICAgIGJv
b2wgaXNBcnJheVR5cGVOYW1lTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCA9PSBBU1Q6OlVu
bmFtZWRUeXBlOjpLaW5kOjpBcnJheTsgfQogCiAgICAgQmFzZVR5cGVOYW1lTm9kZSogcGFyZW50
KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KICAgICBNYW5nbGVkVHlwZU5hbWUgbWFuZ2xlZE5hbWUo
KSBjb25zdCB7IHJldHVybiBtX21hbmdsZWROYW1lOyB9CkBAIC04OSw3ICs4OSw3IEBAIGNsYXNz
IEFycmF5VHlwZU5hbWVOb2RlIGZpbmFsIDogcHVibGljIEIKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBBcnJheVR5cGVOYW1lTm9kZShCYXNlVHlwZU5hbWVOb2Rl
KiBwYXJlbnQsIE1hbmdsZWRUeXBlTmFtZSYmIG1hbmdsZWROYW1lLCB1bnNpZ25lZCBudW1FbGVt
ZW50cykKLSAgICAgICAgOiBCYXNlVHlwZU5hbWVOb2RlKHBhcmVudCwgV1RGTW92ZShtYW5nbGVk
TmFtZSksIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5VHlwZSkKKyAgICAgICAgOiBCYXNl
VHlwZU5hbWVOb2RlKHBhcmVudCwgV1RGTW92ZShtYW5nbGVkTmFtZSksIEFTVDo6VW5uYW1lZFR5
cGU6OktpbmQ6OkFycmF5KQogICAgICAgICAsIG1fbnVtRWxlbWVudHMobnVtRWxlbWVudHMpCiAg
ICAgewogICAgIH0KQEAgLTEwNCw3ICsxMDQsNyBAQCBjbGFzcyBBcnJheVJlZmVyZW5jZVR5cGVO
YW1lTm9kZSBmaW5hbCA6CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgQXJyYXlSZWZlcmVuY2VUeXBlTmFtZU5vZGUoQmFzZVR5cGVOYW1lTm9kZSogcGFyZW50LCBN
YW5nbGVkVHlwZU5hbWUmJiBtYW5nbGVkTmFtZSwgQVNUOjpBZGRyZXNzU3BhY2UgYWRkcmVzc1Nw
YWNlKQotICAgICAgICA6IEJhc2VUeXBlTmFtZU5vZGUocGFyZW50LCBXVEZNb3ZlKG1hbmdsZWRO
YW1lKSwgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2VUeXBlKQorICAgICAg
ICA6IEJhc2VUeXBlTmFtZU5vZGUocGFyZW50LCBXVEZNb3ZlKG1hbmdsZWROYW1lKSwgQVNUOjpV
bm5hbWVkVHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2UpCiAgICAgICAgICwgbV9hZGRyZXNzU3Bh
Y2UoYWRkcmVzc1NwYWNlKQogICAgIHsKICAgICB9CkBAIC0xMTksNyArMTE5LDcgQEAgY2xhc3Mg
UG9pbnRlclR5cGVOYW1lTm9kZSBmaW5hbCA6IHB1YmxpYwogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFBvaW50ZXJUeXBlTmFtZU5vZGUoQmFzZVR5cGVOYW1lTm9k
ZSogcGFyZW50LCBNYW5nbGVkVHlwZU5hbWUmJiBtYW5nbGVkTmFtZSwgQVNUOjpBZGRyZXNzU3Bh
Y2UgYWRkcmVzc1NwYWNlKQotICAgICAgICA6IEJhc2VUeXBlTmFtZU5vZGUocGFyZW50LCBXVEZN
b3ZlKG1hbmdsZWROYW1lKSwgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlclR5cGUpCisg
ICAgICAgIDogQmFzZVR5cGVOYW1lTm9kZShwYXJlbnQsIFdURk1vdmUobWFuZ2xlZE5hbWUpLCBB
U1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQb2ludGVyKQogICAgICAgICAsIG1fYWRkcmVzc1NwYWNl
KGFkZHJlc3NTcGFjZSkKICAgICB7CiAgICAgfQpAQCAtMjc0LDE4ICsyNzQsMjAgQEAgc3RkOjp1
bmlxdWVfcHRyPEJhc2VUeXBlTmFtZU5vZGU+IFR5cGVOYQogICAgICAgICBhdXRvJiB0eXBlUmVm
ZXJlbmNlID0gZG93bmNhc3Q8QVNUOjpUeXBlUmVmZXJlbmNlPih1bm5hbWVkVHlwZSk7CiAgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlZmVyZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50
LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCB0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsK
ICAgICB9Ci0gICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQb2ludGVyVHlwZTogewor
ICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlcjogewogICAgICAgICBhdXRv
JiBwb2ludGVyVHlwZSA9IGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KHVubmFtZWRUeXBlKTsK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9pbnRlclR5cGVOYW1lTm9kZT4ocGFy
ZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBwb2ludGVyVHlwZS5hZGRyZXNzU3BhY2UoKSk7
CiAgICAgfQotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2VU
eXBlOiB7CisgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVyZW5jZTog
ewogICAgICAgICBhdXRvJiBhcnJheVJlZmVyZW5jZVR5cGUgPSBkb3duY2FzdDxBU1Q6OkFycmF5
UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpOwogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBl
TmFtZSgpLCBhcnJheVJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkpOwogICAgIH0KLSAgICBj
YXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5VHlwZTogeworICAgIGNhc2UgQVNUOjpV
bm5hbWVkVHlwZTo6S2luZDo6QXJyYXk6IHsKICAgICAgICAgYXV0byYgYXJyYXlUeXBlID0gZG93
bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRUeXBlKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8QXJyYXlUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5h
bWUoKSwgYXJyYXlUeXBlLm51bUVsZW1lbnRzKCkpOwogICAgIH0KKyAgICBkZWZhdWx0OgorICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIH0KIApAQCAtMjk0LDEy
ICsyOTYsMTQgQEAgc3RhdGljIEFTVDo6VW5uYW1lZFR5cGUqIHBhcmVudChBU1Q6OlVubgogICAg
IHN3aXRjaCAodW5uYW1lZFR5cGUua2luZCgpKSB7CiAgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBl
OjpLaW5kOjpUeXBlUmVmZXJlbmNlOgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjYXNl
IEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlBvaW50ZXJUeXBlOgorICAgIGNhc2UgQVNUOjpVbm5h
bWVkVHlwZTo6S2luZDo6UG9pbnRlcjoKICAgICAgICAgcmV0dXJuICZkb3duY2FzdDxBU1Q6OlBv
aW50ZXJUeXBlPih1bm5hbWVkVHlwZSkuZWxlbWVudFR5cGUoKTsKLSAgICBjYXNlIEFTVDo6VW5u
YW1lZFR5cGU6OktpbmQ6OkFycmF5UmVmZXJlbmNlVHlwZToKKyAgICBjYXNlIEFTVDo6VW5uYW1l
ZFR5cGU6OktpbmQ6OkFycmF5UmVmZXJlbmNlOgogICAgICAgICByZXR1cm4gJmRvd25jYXN0PEFT
VDo6QXJyYXlSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSkuZWxlbWVudFR5cGUoKTsKLSAgICBj
YXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5VHlwZToKKyAgICBjYXNlIEFTVDo6VW5u
YW1lZFR5cGU6OktpbmQ6OkFycmF5OgogICAgICAgICByZXR1cm4gJmRvd25jYXN0PEFTVDo6QXJy
YXlUeXBlPih1bm5hbWVkVHlwZSkudHlwZSgpOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogfQogCkBAIC0zNjEsMTMgKzM2NSwxMyBA
QCB2b2lkIFR5cGVOYW1lcjo6ZW1pdFVubmFtZWRUeXBlRGVmaW5pdGlvCiAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInR5cGVkZWYgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKG5h
bWVkVHlwZSksICcgJywgYmFzZVR5cGVOYW1lTm9kZS5tYW5nbGVkTmFtZSgpLCAiO1xuIik7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlBv
aW50ZXJUeXBlOiB7CisgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQb2ludGVyOiB7
CiAgICAgICAgIGF1dG8mIHBvaW50ZXJUeXBlID0gZG93bmNhc3Q8UG9pbnRlclR5cGVOYW1lTm9k
ZT4oYmFzZVR5cGVOYW1lTm9kZSk7CiAgICAgICAgIEFTU0VSVChiYXNlVHlwZU5hbWVOb2RlLnBh
cmVudCgpKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgidHlwZWRlZiAi
LCB0b1N0cmluZyhwb2ludGVyVHlwZS5hZGRyZXNzU3BhY2UoKSksICcgJywgcG9pbnRlclR5cGUu
cGFyZW50KCktPm1hbmdsZWROYW1lKCksICIqICIsIHBvaW50ZXJUeXBlLm1hbmdsZWROYW1lKCks
ICI7XG4iKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlw
ZTo6S2luZDo6QXJyYXlSZWZlcmVuY2VUeXBlOiB7CisgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBl
OjpLaW5kOjpBcnJheVJlZmVyZW5jZTogewogICAgICAgICBhdXRvJiBhcnJheVJlZmVyZW5jZVR5
cGUgPSBkb3duY2FzdDxBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZT4oYmFzZVR5cGVOYW1lTm9k
ZSk7CiAgICAgICAgIEFTU0VSVChiYXNlVHlwZU5hbWVOb2RlLnBhcmVudCgpKTsKICAgICAgICAg
c3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKQEAgLTM3OCwxMiArMzgyLDE0IEBAIHZvaWQg
VHlwZU5hbWVyOjplbWl0VW5uYW1lZFR5cGVEZWZpbml0aW8KICAgICAgICAgKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlUeXBl
OiB7CisgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheTogewogICAgICAgICBh
dXRvJiBhcnJheVR5cGUgPSBkb3duY2FzdDxBcnJheVR5cGVOYW1lTm9kZT4oYmFzZVR5cGVOYW1l
Tm9kZSk7CiAgICAgICAgIEFTU0VSVChiYXNlVHlwZU5hbWVOb2RlLnBhcmVudCgpKTsKICAgICAg
ICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgidHlwZWRlZiBhcnJheTwiLCBhcnJheVR5
cGUucGFyZW50KCktPm1hbmdsZWROYW1lKCksICIsICIsIGFycmF5VHlwZS5udW1FbGVtZW50cygp
LCAiPiAiLCBhcnJheVR5cGUubWFuZ2xlZE5hbWUoKSwgIjtcbiIpOwogICAgICAgICBicmVhazsK
ICAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICB9CiAKICAgICBlbWl0dGVkVW5uYW1lZFR5cGVzLmFkZCgmYmFzZVR5cGVOYW1lTm9k
ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIyMzEsNyArMjIzMSw2
IEBACiAJCTdDODEzOUE4MUVENjI4NzQwMENFMjZFOCAvKiBKU0RPTU9wZXJhdGlvblJldHVybmlu
Z1Byb21pc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDODEzOUE1MUVENjI4MUQwMENFMjZFOCAvKiBKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21p
c2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
QzgxMzlBQTFFRDY2MDRCMDBDRTI2RTggLyogSlNET01DYXN0ZWRUaGlzRXJyb3JCZWhhdmlvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4MTM5QTkx
RUQ2MkRGMjAwQ0UyNkU4IC8qIEpTRE9NQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzgzREU4NjFEMDRD
QzVEMDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzgzREU4NTFEMDRDQkQ0MDBGRUJDRjMgLyogU3ByaW5nU29s
dmVyLmggKi87IH07Ci0JCTdDODVCMjAyMjJGQjA0ODUwMDMwNjg0RiAvKiBXSExTTFVubmFtZWRU
eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
ODVCMjAxMjJGQjA0ODUwMDMwNjg0RiAvKiBXSExTTFVubmFtZWRUeXBlLmNwcCAqLzsgfTsKIAkJ
N0M4RTM0QUQxRTRBMzNBRjAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEFueS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4RTM0OTIxRTRBMzM4RTAwNTRD
RTIzIC8qIEpTRE9NQ29udmVydEFueS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTdDOEUzNEFFMUU0QTMzQUYwMDU0Q0UyMyAvKiBKU0RPTUNvbnZl
cnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzhFMzQ5MzFFNEEzMzhFMDA1NENFMjMgLyogSlNET01Db252ZXJ0QmFzZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDOEUzNEFGMUU0QTMzQUYw
MDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRCb29sZWFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzhFMzQ5NDFFNEEzMzhFMDA1NENFMjMgLyogSlNET01D
b252ZXJ0Qm9vbGVhbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC04MzE1LDYgKzgzMTQsNyBAQAogCQk1MjEzMUU1QTFDNEYxNTYxMDAzM0Y4MDIg
LyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MjE1ODYyQzIyOTM3N0I3MDA1OTI1RUYgLyogV0hMU0xB
U1QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xBU1QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTIyQkFCOTYyMkU2QTM2MjAwQzU0Q0U5IC8qIFdITFNMQ29kZUxvY2F0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMQ29kZUxvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUyMkQwN0EzMjJGQkFCNDMwMEI5MDVCRSAvKiBXSExTTEV4cHJlc3Npb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xFeHByZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTIyREEzRDMyMjlFMUQzOTAwNDJEMTUxIC8qIFdITFNMR2xvYmFsVmFyaWFi
bGVSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5j
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjJFMUExNzIyOTdENkQ0MDBFNUQz
NkEgLyogV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUyMkUxQTE5MjI5N0Q2RDQwMEU1RDM2QSAvKiBXSExTTFByZXNlcnZlVmFy
aWFibGVMaWZldGltZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlm
ZXRpbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MzI3LDYgKzgzMjcsNyBA
QAogCQk1MkIwRDRCRDFDNTdGRDFFMDA3N0NFNTMgLyogUGxhdGZvcm1WaWV3LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtVmlldy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MkIwRDRCRjFDNTdGRDY2MDA3N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9G
dWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTJCMEQ0QzExQzU3RkY5MTAwNzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJDQjExREIyMkZEREIyRTAw
OUYwQTY0IC8qIFdITFNMRGVmYXVsdERlbGV0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTERlZmF1
bHREZWxldGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJENUExOEQxQzU0NTkw
MzAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFn
ZXJPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkQ1QTE4RTFDNTQ1OTAz
MDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRDVBMUE0MUM1NzQ4ODkwMERFMzRBMyAv
KiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTcwODAsNiArMTcwODEsNyBAQAogCQkJCUMyMUJGNzA2MjFDRDg5QzcwMDIyNzk3OSAvKiBXSExT
TENvbW1hRXhwcmVzc2lvbi5oICovLAogCQkJCUMyMUJGNzMzMjFDRDg5RjAwMDIyNzk3OSAvKiBX
SExTTENvbnN0YW50RXhwcmVzc2lvbi5oICovLAogCQkJCUMyMUJGNkY1MjFDRDg5QjUwMDIyNzk3
OSAvKiBXSExTTENvbnRpbnVlLmggKi8sCisJCQkJNTJDQjExREIyMkZEREIyRTAwOUYwQTY0IC8q
IFdITFNMRGVmYXVsdERlbGV0ZS5oICovLAogCQkJCUMyMUJGNzAxMjFDRDg5QzQwMDIyNzk3OSAv
KiBXSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oICovLAogCQkJCUMyMUJGNzE4MjFDRDg5RDcw
MDIyNzk3OSAvKiBXSExTTERvdEV4cHJlc3Npb24uaCAqLywKIAkJCQlDMjFCRjZGQjIxQ0Q4OUJF
MDAyMjc5NzkgLyogV0hMU0xEb1doaWxlTG9vcC5oICovLApAQCAtMTcwODksNiArMTcwOTEsNyBA
QAogCQkJCUMyMUJGNzI2MjFDRDg5RTMwMDIyNzk3OSAvKiBXSExTTEVudW1lcmF0aW9uTWVtYmVy
LmggKi8sCiAJCQkJQzIxQkY3MDIyMUNEODlDNDAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsLmggKi8sCiAJCQkJQzIxQkY3MEMyMUNEODlDQzAwMjI3OTc5IC8qIFdITFNM
RXhwcmVzc2lvbi5oICovLAorCQkJCTUyMkQwN0EzMjJGQkFCNDMwMEI5MDVCRSAvKiBXSExTTEV4
cHJlc3Npb24uY3BwICovLAogCQkJCUMyMUJGNzAwMjFDRDg5QzIwMDIyNzk3OSAvKiBXSExTTEZh
bGx0aHJvdWdoLmggKi8sCiAJCQkJQzIxQkY3MzUyMUNEODlGMjAwMjI3OTc5IC8qIFdITFNMRmxv
YXRMaXRlcmFsLmggKi8sCiAJCQkJMUNCNjlCMzgyMURGMDNFMTAwNkU4NDZBIC8qIFdITFNMRmxv
YXRMaXRlcmFsVHlwZS5jcHAgKi8sCkBAIC0zMzUyNCw3ICszMzUyNyw2IEBACiAJCQkJRjEyMTcx
RjUxNkE4Q0VEMjAwMDA1M0NBIC8qIFdlYlZUVEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNUQyMUE4MDIxM0VDRTVERjAwQkI3MDY0IC8qIFdlYlZUVFBhcnNlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCMTBCNjk4MTE0MEMxNzQwMDBCQzFDMjYgLyogV2ViVlRUVG9rZW5pemVyLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTdDODVCMjAyMjJGQjA0ODUwMDMwNjg0RiAvKiBXSExTTFVu
bmFtZWRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDgzMkMyMTg3RjY1QzcwMERBNjNB
NiAvKiBXS1V0aWxpdGllcy5jIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M3Q0MwQTJDRjA3NDAw
RDU3NjY0IC8qIFhMaW5rTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M4MEMwQTJD
RjI1NjAwRDU3NjY0IC8qIFhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCShyZXZpc2lvbiAyNDg0MDQp
CisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC03OSw2ICs3OSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgV1RGOjpSZWZDb3VudGVkPFdvcmtlclNjcmlwdExvYWRlcj47CisgICAgZnJpZW5kIHN0
cnVjdCBzdGQ6OmRlZmF1bHRfZGVsZXRlPFdvcmtlclNjcmlwdExvYWRlcj47CiAKICAgICBXb3Jr
ZXJTY3JpcHRMb2FkZXIoKTsKICAgICB+V29ya2VyU2NyaXB0TG9hZGVyKCk7Cg==
</data>
<flag name="commit-queue"
          id="391714"
          type_id="3"
          status="-"
          setter="ews-watchlist"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375951</attachid>
            <date>2019-08-09 14:08:46 -0700</date>
            <delta_ts>2019-08-09 14:45:53 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>171337</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDg0NjcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE5LTA4LTA5ICBTYWFtIEJhcmF0aSAgPHNiYXJh
dGlAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0gRGV2aXJ0dWFsaXplIHRoZSBBU1QKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDUyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgUmVmQ291
bnRlZCB1c2Ugc3RkOjpkZWZhdWx0X2RlbGV0ZSBpbnN0ZWFkIG9mIGV4cGxpY2l0bHkgY2FsbGlu
ZyBkZWxldGUuCisgICAgICAgIFRoaXMgYWxsb3dzIHVzZXMgb2YgUmVmQ291bnRlZCB0byBkZWZp
bmUgdGhlaXIgb3duIGN1c3RvbSBkZWxldGVyLgorCisgICAgICAgICogd3RmL1JlZkNvdW50ZWQu
aDoKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZDo6ZGVyZWYgY29uc3QpOgorICAgICAgICAqIHd0
Zi9VbmlxdWVSZWYuaDoKKyAgICAgICAgKFdURjo6VW5pcXVlUmVmOjpVbmlxdWVSZWYpOgorICAg
ICAgICAoV1RGOjpVbmlxdWVSZWY6Om1vdmVUb1VuaXF1ZVB0cik6CisKIDIwMTktMDgtMDggIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdGhyZWFkIHNhZmV0
eSBpc3N1ZSBpbiBBdWRpb1NhbXBsZURhdGFTb3VyY2UoKSBjb25zdHJ1Y3RvcgpJbmRleDogU291
cmNlL1dURi93dGYvUmVmQ291bnRlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Jl
ZkNvdW50ZWQuaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dURi93dGYvUmVmQ291bnRl
ZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsMTMgKzEzNiwxMyBAQCBpbmxpbmUgdm9pZCBhZG9w
dGVkKFJlZkNvdW50ZWRCYXNlKiBvYmplCiB9CiAjZW5kaWYKIAotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gY2xhc3MgUmVmQ291bnRlZCA6IHB1YmxpYyBSZWZDb3VudGVkQmFzZSB7Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBEZWxldGVyID0gc3RkOjpkZWZhdWx0X2RlbGV0ZTxUPj4gY2xh
c3MgUmVmQ291bnRlZCA6IHB1YmxpYyBSZWZDb3VudGVkQmFzZSB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoUmVmQ291bnRlZCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHZvaWQgZGVyZWYoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGRlcmVmQmFzZSgpKQot
ICAgICAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PGNvbnN0IFQqPih0aGlzKTsKKyAgICAgICAg
ICAgIERlbGV0ZXIoKShjb25zdF9jYXN0PFQqPihzdGF0aWNfY2FzdDxjb25zdCBUKj4odGhpcykp
KTsKICAgICB9CiAKIHByb3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCShyZXZpc2lvbiAyNDg0
MDQpCisrKyBTb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAkod29ya2luZyBjb3B5KQpAQCAtNDAs
MTAgKzQwLDExIEBAIFVuaXF1ZVJlZjxUPiBtYWtlVW5pcXVlUmVmKEFyZ3MmJi4uLiBhcmcKIAog
dGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNsYXNzIFVuaXF1ZVJlZiB7CisgICAgdXNpbmcgRGVsZXRl
ciA9IHN0ZDo6ZGVmYXVsdF9kZWxldGU8VD47CiBwdWJsaWM6CiAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFU+CiAgICAgVW5pcXVlUmVmKFVuaXF1ZVJlZjxVPiYmIG90aGVyKQotICAgICAgICA6IG1f
cmVmKFdURk1vdmUob3RoZXIubV9yZWYpKQorICAgICAgICA6IG1fcmVmKG90aGVyLm1fcmVmLnJl
bGVhc2UoKSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3JlZik7CiAgICAgfQpAQCAtNjAsMTkg
KzYxLDIwIEBAIHB1YmxpYzoKICAgICBvcGVyYXRvciBUJigpIHsgQVNTRVJUKG1fcmVmKTsgcmV0
dXJuICptX3JlZjsgfQogICAgIG9wZXJhdG9yIGNvbnN0IFQmKCkgY29uc3QgeyBBU1NFUlQobV9y
ZWYpOyByZXR1cm4gKm1fcmVmOyB9CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VD4gbW92ZVRvVW5p
cXVlUHRyKCkgeyByZXR1cm4gV1RGTW92ZShtX3JlZik7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
VCwgRGVsZXRlcj4gbW92ZVRvVW5pcXVlUHRyKCkgeyByZXR1cm4gV1RGTW92ZShtX3JlZik7IH0K
IAogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBmcmllbmQg
VW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uKTsKICAgICB0ZW1wbGF0ZTxjbGFz
cyBVPiBmcmllbmQgY2xhc3MgVW5pcXVlUmVmOwogCiAgICAgVW5pcXVlUmVmKFQmIG90aGVyKQot
ICAgICAgICA6IG1fcmVmKCZvdGhlcikKKyAgICAgICAgOiBtX3JlZigmb3RoZXIsIERlbGV0ZXIo
KSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3JlZik7CiAgICAgfQogCi0gICAgc3RkOjp1bmlx
dWVfcHRyPFQ+IG1fcmVmOworICAgIHN0ZDo6dW5pcXVlX3B0cjxULCBEZWxldGVyPiBtX3JlZjsK
KyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihtX3JlZikgPT0gc2l6ZW9mKHVpbnRwdHJfdCksICJE
b24ndCB3cml0ZSBzdGF0ZWZ1bCBkZWxldGVycyIpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RG
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MDcgQEAKKzIwMTktMDgtMDkgIFNhYW0g
QmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dITFNMXSBEZXZpcnR1YWxp
emUgdGhlIEFTVAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAwNTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBkZXZpcnR1YWxpemVzIHRoZSBBU1QgZm9yIFR5cGUsIEV4cHJlc3Npb24s
IGFuZCBTdGF0ZW1lbnQuCisgICAgICAgIFdlIG5vdyBoYXZlIGFuIGVudW0gd2hpY2ggcmVwcmVz
ZW50cyBhbGwgdGhlIGNvbmNyZXRlIHR5cGVzIGluIHRoZQorICAgICAgICB0aHJlZSBoaWVyYXJj
aGllcy4gRG9pbmcgZHluYW1pYyBkaXNwYXRjaCBpcyBpbXBsZW1lbnRlZCBhcyBhIHN3aXRjaAor
ICAgICAgICBvbiB0aGF0IHR5cGUgZW51bS4KKyAgICAgICAgCisgICAgICAgIFRoZSBpbnRlcmVz
dGluZyBwYXJ0IG9mIHRoaXMgcGF0Y2ggaXMgaG93IHRvIGhhbmRsZSBkZXN0cnVjdGlvbi4gV2Ug
ZG8KKyAgICAgICAgdGhpcyBieSBkZWZpbmluZyBhIGN1c3RvbSBkZWxldGVyIGZvciBhbGwgbm9k
ZXMgaW4gdGhlIEFTVC4gVGhpcyBlbnN1cmVzCisgICAgICAgIHRoYXQgd2hlbiB0aGV5J3JlIHVz
ZWQgaW5zaWRlIFVuaXF1ZVJlZiwgdW5pcXVlX3B0ciwgUmVmLCBhbmQgUmVmUHRyLAorICAgICAg
ICB3ZSBkbyBkeW5hbWljIGRpc3BhdGNoIHdoZW4gd2UgZGVsZXRlIHRoZSBvYmplY3QuIFRoaXMg
YWxsb3dzIGVhY2ggYmFzZQorICAgICAgICBjbGFzcyB0byBkZWZpbmUgYSAiZGVzdHJveSIgbWV0
aG9kIHdoaWNoIGRvZXMgZHluYW1pYyBkaXNwYXRjaCBvbiB0eXBlCisgICAgICAgIGFuZCBjYWxs
cyB0aGUgYXBwcm9wcmlhdGUgZGVsZXRlLiBXZSBhbHNvIG1hcmsgYWxsIG5vbi1jb25jcmV0ZSBu
b2RlcworICAgICAgICBpbiBhbGwgdHlwZSBoaWVyYXJjaGllcyB3aXRoIGEgcHJvdGVjdGVkIGRl
c3RydWN0b3IsIHdoaWNoIGVuc3VyZXMgaXQncworICAgICAgICBuZXZlciBjYWxsZWQgZXhjZXB0
IGZyb20gd2l0aGluIHRoZSBjb25jcmV0ZSBjaGlsZCBjbGFzc2VzLiBXZSBhbGxvdworICAgICAg
ICBhbGwgY29uY3JldGUgY2xhc3NlcyB0byBoYXZlIHB1YmxpYyBkZXN0cnVjdG9ycywgYXMgaXQn
cyB2YWxpZCBmb3IKKyAgICAgICAgdGhlaXIgZGVzdHJ1Y3RvcnMgdG8gYmUgY2FsbGVkIGV4cGxp
Y2l0bHkgc2luY2UgdGhlcmUgaXMgbm8gbmVlZCBmb3IKKyAgICAgICAgZHluYW1pYyBkaXNwYXRj
aCBpbiBzdWNoIHNjZW5hcmlvcy4gQWxsIGNvbmNyZXRlIGNsYXNzZXMgYXJlIGFsc28gbWFya2Vk
CisgICAgICAgIGFzIGZpbmFsLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBhIDNtcyBzcGVl
ZHVwIG9uIGNvbXB1dGVfYm9pZHMsIHdoaWNoIGlzIGFib3V0IGEgMTAlIGltcHJvdmVtZW50Cisg
ICAgICAgIGluIHRoZSBXSExTTCBjb21waWxlci4KKworICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbjo6QXNzaWdubWVudEV4cHJlc3Np
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QXNzaWdubWVudEV4
cHJlc3Npb246OmxlZnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
QXNzaWdubWVudEV4cHJlc3Npb246OnJpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uOjp0YWtlUmlnaHQpOiBEZWxldGVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJsb2NrLmg6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpCbG9jazo6QmxvY2spOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6QmxvY2s6OnN0YXRlbWVudHMpOiBEZWxldGVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJvb2xlYW5MaXRlcmFsLmg6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpCb29sZWFuTGl0ZXJhbDo6Qm9vbGVhbkxpdGVyYWwp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Qm9vbGVhbkxpdGVyYWw6
OnZhbHVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkJv
b2xlYW5MaXRlcmFsOjpjbG9uZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQnJlYWsuaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OkJyZWFrOjpCcmVhayk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQ2FsbEV4cHJlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OkNhbGxFeHByZXNzaW9uOjpDYWxsRXhwcmVzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpDYWxsRXhwcmVzc2lvbjo6YXJndW1lbnRzKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNhbGxFeHByZXNzaW9uOjpuYW1lKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNhbGxFeHByZXNzaW9uOjpzZXRD
YXN0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDYWxsRXhw
cmVzc2lvbjo6aXNDYXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkNhbGxFeHByZXNzaW9uOjpjYXN0UmV0dXJuVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpDYWxsRXhwcmVzc2lvbjo6ZnVuY3Rpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q2FsbEV4cHJlc3Npb246OnNldEZ1bmN0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb21tYUV4
cHJlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNvbW1hRXhwcmVzc2lv
bjo6Q29tbWFFeHByZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OkNvbW1hRXhwcmVzc2lvbjo6bGlzdCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpDb25zdGFudEV4cHJlc3Npb246OkNvbnN0YW50RXhwcmVzc2lvbik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDb25zdGFudEV4cHJlc3Np
b246OmludGVnZXJMaXRlcmFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OkNvbnN0YW50RXhwcmVzc2lvbjo6dmlzaXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6Q29uc3RhbnRFeHByZXNzaW9uOjp2aXNpdCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDb25zdGFudEV4cHJlc3Npb246OmNsb25l
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNvbnN0YW50
RXhwcmVzc2lvbjo6bWF0Y2hlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29udGludWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OkNvbnRpbnVlOjpDb250aW51ZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVmYXVsdERlbGV0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lvbjo6RGVyZWZl
cmVuY2VFeHByZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkRlcmVmZXJlbmNlRXhwcmVzc2lvbjo6cG9pbnRlcik6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG9XaGlsZUxvb3AuaDoKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OkRvV2hpbGVMb29wOjpEb1doaWxlTG9vcCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpEb1doaWxlTG9vcDo6Ym9keSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpEb1doaWxlTG9vcDo6Y29uZGl0aW9uYWwpOiBE
ZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvdEV4cHJl
c3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkRvdEV4cHJlc3Npb246OkRv
dEV4cHJlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RG90
RXhwcmVzc2lvbjo6ZmllbGROYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50OjpFZmZl
Y3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ6OmVmZmVjdGZ1bEV4cHJlc3Np
b24pOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVu
dW1lcmF0aW9uRGVmaW5pdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RW51
bWVyYXRpb25EZWZpbml0aW9uOjpFbnVtZXJhdGlvbkRlZmluaXRpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uOjp0eXBlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1lcmF0aW9uRGVmaW5p
dGlvbjo6YWRkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1l
cmF0aW9uRGVmaW5pdGlvbjo6bWVtYmVyQnlOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbjo6ZW51bWVyYXRpb25NZW1iZXJz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVu
dW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJh
bDo6d3JhcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFbnVtZXJh
dGlvbk1lbWJlckxpdGVyYWw6OmxlZnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsOjpyaWdodCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWw6OmNsb25lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDo6ZW51bWVyYXRpb25EZWZpbml0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbDo6ZW51bWVyYXRpb25EZWZpbml0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDo6ZW51bWVyYXRpb25N
ZW1iZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsOjplbnVtZXJhdGlvbk1lbWJlciBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6OnNldEVu
dW1lcmF0aW9uTWVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xFeHByZXNzaW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpFeHByZXNzaW9uOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbjo6Z2V0dGVyRnVuY3Rpb25OYW1lIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbjo6
c2V0dGVyRnVuY3Rpb25OYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbjo6YW5kZXJGdW5jdGlvbk5hbWUgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OkV4cHJlc3Npb24pOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6a2luZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0Fzc2lnbm1lbnRFeHByZXNzaW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmlzQm9v
bGVhbkxpdGVyYWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVz
c2lvbjo6aXNDYWxsRXhwcmVzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpFeHByZXNzaW9uOjppc0NvbW1hRXhwcmVzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0RlcmVmZXJlbmNlRXhwcmVzc2lvbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0RvdEV4cHJl
c3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6
aXNHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpFeHByZXNzaW9uOjppc0Zsb2F0TGl0ZXJhbCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0luZGV4RXhwcmVzc2lvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0ludGVnZXJMaXRlcmFs
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmlzTG9n
aWNhbEV4cHJlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhw
cmVzc2lvbjo6aXNMb2dpY2FsTm90RXhwcmVzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc01ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNNYWtl
UG9pbnRlckV4cHJlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
RXhwcmVzc2lvbjo6aXNOdWxsTGl0ZXJhbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpFeHByZXNzaW9uOjppc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc1JlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVz
c2lvbjo6aXNUZXJuYXJ5RXhwcmVzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpFeHByZXNzaW9uOjppc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWwgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNWYXJpYWJsZVJlZmVyZW5j
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0Vu
dW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpFeHByZXNzaW9uOjpjb2RlTG9jYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6dXBkYXRlQ29kZUxvY2F0aW9uKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5oOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6RmFsbHRocm91Z2g6OkZhbGx0aHJvdWdoKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWwuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZsb2F0TGl0ZXJhbDo6RmxvYXRMaXRlcmFsKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZsb2F0TGl0ZXJhbDo6dHlw
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpGbG9hdExpdGVyYWw6
OnZhbHVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZs
b2F0TGl0ZXJhbDo6Y2xvbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6RmxvYXRMaXRlcmFsVHlwZTo6RmxvYXRMaXRlcmFsVHlwZSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RmxvYXRMaXRlcmFsVHlwZTo6dmFsdWUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RmxvYXRMaXRlcmFs
VHlwZTo6cHJlZmVycmVkVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRm9yTG9vcC5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
Rm9yTG9vcDo6Rm9yTG9vcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpGb3JMb29wOjp+Rm9yTG9vcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpGb3JMb29wOjppbml0aWFsaXphdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpGb3JMb29wOjpjb25kaXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6Rm9yTG9vcDo6aW5jcmVtZW50KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OkZvckxvb3A6OmJvZHkpOiBEZWxldGVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZTo6
R2xvYmFsVmFyaWFibGVSZWZlcmVuY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U6OnN0cnVjdEZpZWxkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlOjpi
YXNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJ
ZlN0YXRlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6SWZTdGF0ZW1lbnQ6
OklmU3RhdGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Oklm
U3RhdGVtZW50Ojpjb25kaXRpb25hbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpJZlN0YXRlbWVudDo6Ym9keSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpJZlN0YXRlbWVudDo6ZWxzZUJvZHkpOiBEZWxldGVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEluZGV4RXhwcmVzc2lvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6SW5kZXhFeHByZXNzaW9uOjpJbmRleEV4cHJlc3Npb24pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6SW5kZXhFeHByZXNzaW9uOjpp
bmRleEV4cHJlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
SW5kZXhFeHByZXNzaW9uOjp0YWtlSW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmg6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpJbnRlZ2VyTGl0ZXJhbDo6SW50ZWdlckxpdGVyYWwpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6SW50ZWdlckxpdGVyYWw6OnR5cGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6SW50ZWdlckxpdGVyYWw6OnZhbHVl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkludGVnZXJM
aXRlcmFsOjpjbG9uZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OkludGVnZXJMaXRlcmFsVHlwZTo6SW50ZWdlckxpdGVyYWxUeXBlKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkludGVnZXJMaXRlcmFsVHlwZTo6dmFs
dWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6SW50ZWdl
ckxpdGVyYWxUeXBlOjpwcmVmZXJyZWRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6TG9naWNhbEV4cHJlc3Npb246OkxvZ2ljYWxFeHByZXNzaW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkxvZ2ljYWxFeHByZXNzaW9u
Ojp0eXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Okxv
Z2ljYWxFeHByZXNzaW9uOjpsZWZ0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uOjpyaWdodCk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uOjpMb2dpY2FsTm90
RXhwcmVzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpMb2dp
Y2FsTm90RXhwcmVzc2lvbjo6b3BlcmFuZCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbjo6
TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uOjpsZWZ0VmFsdWUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TWFrZUFycmF5UmVmZXJlbmNl
RXhwcmVzc2lvbjo6bWlnaHRFc2NhcGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uOjpNYWtlUG9pbnRl
ckV4cHJlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TWFr
ZVBvaW50ZXJFeHByZXNzaW9uOjpsZWZ0VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uOjptaWdodEVzY2FwZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmFtZWRU
eXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYW1lZFR5cGU6Ok5hbWVkVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYW1lZFR5cGU6OnVuaWZ5Tm9kZUlt
cGwpOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
Ok5hbWVkVHlwZTo6aXNUeXBlRGVmaW5pdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpOYW1lZFR5cGU6OmlzU3RydWN0dXJlRGVmaW5pdGlvbiBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYW1lZFR5cGU6Omlz
RW51bWVyYXRpb25EZWZpbml0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6Ok5hbWVkVHlwZTo6aXNOYXRpdmVUeXBlRGVjbGFyYXRpb24gY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmFtZWRUeXBlOjp1bmlmeU5v
ZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmFtZWRU
eXBlOjp1bmlmeU5vZGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0
aW9uOjp0eXBlQXJndW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6aXNJbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjppc051bWJlciBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb246OmlzRmxvYXRpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjppc0F0b21pYyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRp
b246OmlzVmVjdG9yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6aXNNYXRyaXggY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjppc09wYXF1
ZVR5cGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0
aXZlVHlwZURlY2xhcmF0aW9uOjppc1RleHR1cmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjppc1RleHR1cmVBcnJh
eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVU
eXBlRGVjbGFyYXRpb246OmlzRGVwdGhUZXh0dXJlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6aXNXcml0YWJsZVRl
eHR1cmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0
aXZlVHlwZURlY2xhcmF0aW9uOjp0ZXh0dXJlRGltZW5zaW9uIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6aXNTaWdu
ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uOjpzdGQ6OmZ1bmN0aW9uPGJvb2wgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzdGQ6OmZ1
bmN0aW9uPGludDY0X3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjppdGVyYXRlQWxsVmFsdWVzKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6c2V0
SXNJbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlw
ZURlY2xhcmF0aW9uOjpzZXRJc051bWJlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnNldElzRmxvYXRpbmcpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpz
ZXRJc0F0b21pYyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb246OnNldElzVmVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6c2V0SXNNYXRyaXgpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9u
OjpzZXRJc09wYXF1ZVR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRJc1RleHR1cmUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRJc1RleHR1
cmVBcnJheSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVU
eXBlRGVjbGFyYXRpb246OnNldElzRGVwdGhUZXh0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6c2V0SXNXcml0YWJsZVRl
eHR1cmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlw
ZURlY2xhcmF0aW9uOjpzZXRUZXh0dXJlRGltZW5zaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6c2V0SXNTaWduZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0
aW9uOjpzZXRDYW5SZXByZXNlbnRJbnRlZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6c2V0Q2FuUmVwcmVzZW50VW5zaWdu
ZWRJbnRlZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbjo6c2V0Q2FuUmVwcmVzZW50RmxvYXQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRTdWNjZXNz
b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURl
Y2xhcmF0aW9uOjpzZXRGb3JtYXRWYWx1ZUZyb21JbnRlZ2VyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6c2V0Rm9ybWF0VmFs
dWVGcm9tVW5zaWduZWRJbnRlZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6c2V0SXRlcmF0ZUFsbFZhbHVlcyk6IERlbGV0
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVsbExpdGVyYWwu
aDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok51bGxMaXRlcmFsOjpOdWxsTGl0ZXJh
bCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOdWxsTGl0ZXJhbDo6
dHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOdWxsTGl0ZXJh
bDo6Y2xvbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTE51bGxMaXRlcmFsVHlwZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFBvaW50ZXJUeXBlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb246OlByb3BlcnR5QWNjZXNzRXhw
cmVzc2lvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1v
ZGlmeVdyaXRlRXhwcmVzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246OnNldE5ld1ZhbHVlRXhw
cmVzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFkTW9k
aWZ5V3JpdGVFeHByZXNzaW9uOjpzZXRSZXN1bHRFeHByZXNzaW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246Om9sZFZh
cmlhYmxlUmVmZXJlbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246Om5ld1ZhcmlhYmxlUmVmZXJlbmNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Np
b246OmxlZnRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpS
ZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpvbGRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpuZXdWYWx1ZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVF
eHByZXNzaW9uOjpuZXdWYWx1ZUV4cHJlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6cmVzdWx0RXhwcmVzc2lv
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3Jp
dGVFeHByZXNzaW9uOjp0YWtlTGVmdFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246OnRha2VPbGRWYWx1ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHBy
ZXNzaW9uOjp0YWtlTmV3VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6dGFrZU5ld1ZhbHVlRXhwcmVzc2lvbik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVF
eHByZXNzaW9uOjp0YWtlUmVzdWx0RXhwcmVzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpSZWFkTW9kaWZ5V3Jp
dGVFeHByZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xSZWZlcmVuY2VUeXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpS
ZWZlcmVuY2VUeXBlOjpSZWZlcmVuY2VUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xSZXNvbHZhYmxlVHlwZS5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6UmVzb2x2YWJsZVR5cGU6OlJlc29sdmFibGVUeXBlKToKKyAgICAgICAgKCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZXNvbHZhYmxlVHlwZTo6aXNGbG9h
dExpdGVyYWxUeXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OlJlc29sdmFibGVUeXBlOjppc0ludGVnZXJMaXRlcmFsVHlwZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZXNvbHZhYmxlVHlwZTo6aXNOdWxsTGl0
ZXJhbFR5cGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
UmVzb2x2YWJsZVR5cGU6OmlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJldHVybi5oOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmV0dXJuOjpSZXR1cm4pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmV0dXJuOjp2YWx1ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50LmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6OmRlc3Ryb3kpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50OjpTdGF0ZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50OjpraW5kIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNCbG9jayBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6OmlzQnJlYWsgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojppc0NvbnRpbnVlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNEb1doaWxlTG9vcCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6OmlzRWZmZWN0ZnVs
RXhwcmVzc2lvblN0YXRlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpTdGF0ZW1lbnQ6OmlzRmFsbHRocm91Z2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6U3RhdGVtZW50Ojppc0Zvckxvb3AgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojppc0lmU3RhdGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNSZXR1cm4gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojppc1N0YXRlbWVudExpc3QgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojppc1N3aXRjaENhc2UgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojppc1N3aXRjaFN0
YXRlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6
OmlzVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojppc1doaWxlTG9vcCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6OmNvZGVMb2NhdGlvbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6OnVwZGF0ZUNvZGVMb2NhdGlvbik6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50TGlzdC5o
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50TGlzdDo6U3RhdGVtZW50
TGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnRM
aXN0OjpzdGF0ZW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uOjpTdHJ1Y3R1cmVEZWZpbml0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0cnVjdHVyZURlZmluaXRpb246OnN0
cnVjdHVyZUVsZW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OlN0cnVjdHVyZURlZmluaXRpb246OmZpbmQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OlN0cnVjdHVyZUVsZW1lbnQ6OlN0cnVjdHVyZUVsZW1lbnQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RydWN0dXJlRWxlbWVudDo6Y29k
ZUxvY2F0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OlN0cnVjdHVyZUVsZW1lbnQ6OnR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6U3RydWN0dXJlRWxlbWVudDo6bmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpTdHJ1Y3R1cmVFbGVtZW50OjpzZW1hbnRpYyk6IERlbGV0ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoQ2FzZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3dpdGNoQ2FzZTo6U3dpdGNoQ2FzZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTd2l0Y2hDYXNlOjp2YWx1ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTd2l0Y2hDYXNlOjpibG9jayk6
IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNo
U3RhdGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTd2l0Y2hTdGF0ZW1l
bnQ6OlN3aXRjaFN0YXRlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpTd2l0Y2hTdGF0ZW1lbnQ6OnZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OlN3aXRjaFN0YXRlbWVudDo6c3dpdGNoQ2FzZXMpOiBEZWxldGVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUZXJuYXJ5RXhwcmVzc2lvbjo6VGVybmFy
eUV4cHJlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VGVy
bmFyeUV4cHJlc3Npb246OnByZWRpY2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpUZXJuYXJ5RXhwcmVzc2lvbjo6Ym9keUV4cHJlc3Npb24pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VGVybmFyeUV4cHJlc3Npb246OmVsc2VFeHBy
ZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xUeXBlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlOjpk
ZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGU6OnVuaWZ5Tm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZXNvbHZhYmxlVHlwZTo6Y2FuUmVzb2x2
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZXNvbHZhYmxlVHlwZTo6
Y29udmVyc2lvbkNvc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5u
YW1lZFR5cGU6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xUeXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlOjpU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGU6OmtpbmQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZTo6aXNVbm5hbWVkVHlwZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlOjppc05hbWVkVHlwZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlOjppc1Jlc29sdmFibGVUeXBlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGU6OmlzVHlwZVJlZmVyZW5j
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlOjppc1BvaW50ZXJU
eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGU6OmlzQXJyYXlS
ZWZlcmVuY2VUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGU6
OmlzQXJyYXlUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGU6
OmlzUmVmZXJlbmNlVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpU
eXBlOjppc1R5cGVEZWZpbml0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OlR5cGU6OmlzU3RydWN0dXJlRGVmaW5pdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpUeXBlOjppc0VudW1lcmF0aW9uRGVmaW5pdGlvbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlOjppc05hdGl2ZVR5cGVEZWNsYXJhdGlvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlOjppc0Zsb2F0TGl0ZXJh
bFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZTo6aXNJbnRl
Z2VyTGl0ZXJhbFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlw
ZTo6aXNOdWxsTGl0ZXJhbFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6VHlwZTo6aXNVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlOjp1bmlmeU5vZGUgY29uc3QpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVEZWZpbml0aW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlRGVmaW5pdGlvbjo6VHlwZURlZmluaXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZURlZmluaXRpb246OnR5cGUp
OiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVS
ZWZlcmVuY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5h
bWVkVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbm5hbWVkVHlwZTo6
aGFzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbm5hbWVkVHlwZTo6
b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMVW5uYW1lZFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlVubmFtZWRU
eXBlOjpVbm5hbWVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbm5hbWVk
VHlwZTo6dW5pZnlOb2RlSW1wbCk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGU6OmtpbmQgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGU6OmlzVHlwZVJlZmVyZW5jZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbm5hbWVkVHlw
ZTo6aXNQb2ludGVyVHlwZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpVbm5hbWVkVHlwZTo6aXNBcnJheVJlZmVyZW5jZVR5cGUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGU6OmlzQXJyYXlUeXBl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlVubmFtZWRU
eXBlOjppc1JlZmVyZW5jZVR5cGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGU6OnVuaWZ5Tm9kZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbm5hbWVkVHlwZTo6dW5pZnlOb2RlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVn
ZXJMaXRlcmFsLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbnNpZ25lZEludGVn
ZXJMaXRlcmFsOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw6OnR5cGUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDo6
dmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbDo6Y2xvbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxU
eXBlOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlOjp2YWx1ZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbnNpZ25lZElu
dGVnZXJMaXRlcmFsVHlwZTo6cHJlZmVycmVkVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3Rh
dGVtZW50OjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudDo6dmFy
aWFibGVEZWNsYXJhdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFZhcmlhYmxlUmVmZXJlbmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpWYXJpYWJsZVJlZmVyZW5jZTo6VmFyaWFibGVSZWZlcmVuY2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VmFyaWFibGVSZWZlcmVuY2U6OndyYXApOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VmFyaWFibGVSZWZlcmVuY2U6
Om5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VmFyaWFibGVS
ZWZlcmVuY2U6OnZhcmlhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OlZhcmlhYmxlUmVmZXJlbmNlOjpzZXRWYXJpYWJsZSk6IERlbGV0ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmg6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpXaGlsZUxvb3A6OldoaWxlTG9vcCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpXaGlsZUxvb3A6OmNvbmRpdGlvbmFsKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OldoaWxlTG9vcDo6Ym9keSk6IERlbGV0ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpCYXNlVHlwZU5hbWVOb2RlOjppc1Bv
aW50ZXJUeXBlTmFtZU5vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFs
OjpCYXNlVHlwZU5hbWVOb2RlOjppc0FycmF5UmVmZXJlbmNlVHlwZU5hbWVOb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6QmFzZVR5cGVOYW1lTm9kZTo6aXNBcnJh
eVR5cGVOYW1lTm9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OlR5
cGVOYW1lcjo6Y3JlYXRlTmFtZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFs
OjpwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpUeXBlTmFtZXI6OmVt
aXRVbm5hbWVkVHlwZURlZmluaXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQYXJzZXI6OnBhcnNl
U3VmZml4T3BlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlBhcnNlcjo6Y29tcGxl
dGVBc3NpZ25tZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQYXJzZXI6OnBhcnNlUG9z
c2libGVQcmVmaXgpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlc2Vy
dmVWYXJpYWJsZUxpZmV0aW1lcy5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xWaXNpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpWaXNpdG9yOjp2aXNp
dCk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6
CisKIDIwMTktMDgtMDcgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW1dITFNMXSBQcnVuZSB1bnJlYWNoYWJsZSBzdGRsaWIgZnVuY3Rpb25zIGFmdGVyIHRoZSBD
aGVja2VyIHJ1bnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzQyLDYgKzM0Miw3IEBA
IE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlVHkKIE1vZHVsZXMvd2ViZ3B1
L1dITFNML01ldGFsL1dITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmNwcAogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5jcHAKIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFR5cGVBcmd1bWVudC5jcHAKK01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEV4cHJlc3Npb24uY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xC
dWlsdEluU2VtYW50aWMuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJj
ZVNlbWFudGljLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRp
b25Db25zdGFudFNlbWFudGljLmNwcApAQCAtMzUwLDkgKzM1MSwxMiBAQCBNb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xO
dWxsTGl0ZXJhbFR5cGUuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25l
ZEludGVnZXJMaXRlcmFsVHlwZS5jcHAKK01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0
YXRlbWVudC5jcHAKK01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuY3BwCiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmNwcAogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmNwcAorTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBy
ZXBhcmUuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb3BlcnR5UmVzb2x2ZXIuY3Bw
CiBNb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCShyZXZpc2lvbiAyNDg0MDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE0OTQsNyArMTQ5NCw3IEBAIGF1dG8gUGFyc2VyOjpwYXJzZVN1
ZmZpeE9wZXJhdG9yKFVuaXF1ZVIKICAgICB9CiAgICAgY2FzZSBUb2tlbjo6VHlwZTo6UGx1c1Bs
dXM6IHsKICAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZXZpb3VzLT5jb2RlTG9jYXRp
b24oKSwgKnN1ZmZpeCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gQVNUOjpSZWFkTW9kaWZ5V3Jp
dGVFeHByZXNzaW9uOjpjcmVhdGUobG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMpKTsKKyAgICAg
ICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVz
c2lvbj4obG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMpKTsKICAgICAgICAgVmVjdG9yPFVuaXF1
ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwogICAgICAgICBjYWxsQXJndW1l
bnRzLmFwcGVuZChyZXN1bHQtPm9sZFZhcmlhYmxlUmVmZXJlbmNlKCkpOwogICAgICAgICByZXN1
bHQtPnNldE5ld1ZhbHVlRXhwcmVzc2lvbihtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJlc3Np
b24+KGxvY2F0aW9uLCAib3BlcmF0b3IrKyJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMpKSk7
CkBAIC0xNTA0LDcgKzE1MDQsNyBAQCBhdXRvIFBhcnNlcjo6cGFyc2VTdWZmaXhPcGVyYXRvcihV
bmlxdWVSCiAgICAgZGVmYXVsdDogewogICAgICAgICBBU1NFUlQoc3VmZml4LT50eXBlID09IFRv
a2VuOjpUeXBlOjpNaW51c01pbnVzKTsKICAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHBy
ZXZpb3VzLT5jb2RlTG9jYXRpb24oKSwgKnN1ZmZpeCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0g
QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpjcmVhdGUobG9jYXRpb24sIFdURk1vdmUo
cHJldmlvdXMpKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6UmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMpKTsKICAg
ICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwog
ICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChyZXN1bHQtPm9sZFZhcmlhYmxlUmVmZXJlbmNl
KCkpOwogICAgICAgICByZXN1bHQtPnNldE5ld1ZhbHVlRXhwcmVzc2lvbihtYWtlVW5pcXVlUmVm
PEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3ItLSJfc3RyLCBXVEZNb3Zl
KGNhbGxBcmd1bWVudHMpKSk7CkBAIC0xNjA2LDcgKzE2MDYsNyBAQCBhdXRvIFBhcnNlcjo6Y29t
cGxldGVBc3NpZ25tZW50KFVuaXF1ZVJlCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGF1
dG8gcmVzdWx0ID0gQVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpjcmVhdGUobG9jYXRp
b24sIFdURk1vdmUobGVmdCkpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6
OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKGxlZnQpKTsKICAg
ICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7CiAgICAg
Y2FsbEFyZ3VtZW50cy5hcHBlbmQocmVzdWx0LT5vbGRWYXJpYWJsZVJlZmVyZW5jZSgpKTsKICAg
ICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpyaWdodCkpOwpAQCAtMTg5OCw3ICsxODk4
LDcgQEAgYXV0byBQYXJzZXI6OnBhcnNlUG9zc2libGVQcmVmaXgoYm9vbCAqaQogICAgICAgICBj
YXNlIFRva2VuOjpUeXBlOjpQbHVzUGx1czogewogICAgICAgICAgICAgaWYgKGlzRWZmZWN0ZnVs
KQogICAgICAgICAgICAgICAgICppc0VmZmVjdGZ1bCA9IHRydWU7Ci0gICAgICAgICAgICBhdXRv
IHJlc3VsdCA9IEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6Y3JlYXRlKGxvY2F0aW9u
LCBXVEZNb3ZlKCpuZXh0KSk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWVS
ZWY8QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZSgqbmV4
dCkpOwogICAgICAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxs
QXJndW1lbnRzOwogICAgICAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQocmVzdWx0LT5vbGRW
YXJpYWJsZVJlZmVyZW5jZSgpKTsKICAgICAgICAgICAgIHJlc3VsdC0+c2V0TmV3VmFsdWVFeHBy
ZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVy
YXRvcisrIl9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpKTsKQEAgLTE5MDgsNyArMTkwOCw3
IEBAIGF1dG8gUGFyc2VyOjpwYXJzZVBvc3NpYmxlUHJlZml4KGJvb2wgKmkKICAgICAgICAgY2Fz
ZSBUb2tlbjo6VHlwZTo6TWludXNNaW51czogewogICAgICAgICAgICAgaWYgKGlzRWZmZWN0ZnVs
KQogICAgICAgICAgICAgICAgICppc0VmZmVjdGZ1bCA9IHRydWU7Ci0gICAgICAgICAgICBhdXRv
IHJlc3VsdCA9IEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6Y3JlYXRlKGxvY2F0aW9u
LCBXVEZNb3ZlKCpuZXh0KSk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWVS
ZWY8QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZSgqbmV4
dCkpOwogICAgICAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxs
QXJndW1lbnRzOwogICAgICAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQocmVzdWx0LT5vbGRW
YXJpYWJsZVJlZmVyZW5jZSgpKTsKICAgICAgICAgICAgIHJlc3VsdC0+c2V0TmV3VmFsdWVFeHBy
ZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJvcGVy
YXRvci0tIl9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlm
ZXRpbWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDcgKzE1Nyw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHN0cnVjdFZhcmlhYmxlRGVjbGFyYXRpb25zLmFwcGVuZChXVEZNb3ZlKHN0cnVj
dFZhcmlhYmxlRGVjbGFyYXRpb24pKTsKICAgICAgICAgICAgIGF1dG8gc3RydWN0RGVjbGFyYXRp
b25TdGF0ZW1lbnQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0
ZW1lbnQ+KGZ1bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSwgV1RGTW92ZShzdHJ1Y3RW
YXJpYWJsZURlY2xhcmF0aW9ucykpOwogCi0gICAgICAgICAgICBhdXRvIG1ha2VQb2ludGVyRXhw
cmVzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24+KGZ1
bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSwgV1RGTW92ZShzdHJ1Y3RWYXJpYWJsZVJl
ZmVyZW5jZSksIEFTVDo6QWRkcmVzc0VzY2FwZU1vZGU6OkRvZXNOb3RFc2NhcGUpOworICAgICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPEFTVDo6RXhwcmVzc2lvbj4gbWFrZVBvaW50ZXJFeHByZXNz
aW9uKG5ldyBBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbihmdW5jdGlvbkRlZmluaXRpb24uY29k
ZUxvY2F0aW9uKCksIFdURk1vdmUoc3RydWN0VmFyaWFibGVSZWZlcmVuY2UpLCBBU1Q6OkFkZHJl
c3NFc2NhcGVNb2RlOjpEb2VzTm90RXNjYXBlKSk7CiAgICAgICAgICAgICBtYWtlUG9pbnRlckV4
cHJlc3Npb24tPnNldFR5cGUobV9wb2ludGVyVG9TdHJ1Y3RUeXBlLmNvcHlSZWYoKSk7CiAgICAg
ICAgICAgICBtYWtlUG9pbnRlckV4cHJlc3Npb24tPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6Umln
aHRWYWx1ZSgpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xWaXNpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFZpc2l0b3IuY3BwCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMDMsMzQgKzMwMyw1MCBAQCB2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6U3RhdGVt
ZW50TGlzdCYgCiAKIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpTdGF0ZW1lbnQmIHN0YXRlbWVu
dCkKIHsKLSAgICBpZiAoaXM8QVNUOjpCbG9jaz4oc3RhdGVtZW50KSkKKyAgICBzd2l0Y2ggKHN0
YXRlbWVudC5raW5kKCkpIHsKKyAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpCbG9jazoK
ICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6QmxvY2s+KHN0YXRlbWVu
dCkpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6QnJlYWs+KHN0YXRlbWVudCkpCisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OkJyZWFrOgogICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpCcmVhaz4oc3RhdGVtZW50KSk7Ci0gICAgZWxz
ZSBpZiAoaXM8QVNUOjpDb250aW51ZT4oc3RhdGVtZW50KSkKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6Q29udGludWU6CiAgICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChkb3duY2FzdDxBU1Q6OkNvbnRpbnVlPihzdGF0ZW1lbnQpKTsKLSAgICBlbHNlIGlm
IChpczxBU1Q6OkRvV2hpbGVMb29wPihzdGF0ZW1lbnQpKQorICAgICAgICBicmVhazsKKyAgICBj
YXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpEb1doaWxlTG9vcDoKICAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6RG9XaGlsZUxvb3A+KHN0YXRlbWVudCkpOwotICAgIGVs
c2UgaWYgKGlzPEFTVDo6RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudD4oc3RhdGVtZW50KSkK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6RWZmZWN0ZnVs
RXhwcmVzc2lvbjoKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6RWZm
ZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudD4oc3RhdGVtZW50KSk7Ci0gICAgZWxzZSBpZiAoaXM8
QVNUOjpGYWxsdGhyb3VnaD4oc3RhdGVtZW50KSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBB
U1Q6OlN0YXRlbWVudDo6S2luZDo6RmFsbHRocm91Z2g6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChkb3duY2FzdDxBU1Q6OkZhbGx0aHJvdWdoPihzdGF0ZW1lbnQpKTsKLSAgICBlbHNlIGlm
IChpczxBU1Q6OkZvckxvb3A+KHN0YXRlbWVudCkpCisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
QVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OkZvckxvb3A6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChkb3duY2FzdDxBU1Q6OkZvckxvb3A+KHN0YXRlbWVudCkpOwotICAgIGVsc2UgaWYgKGlzPEFT
VDo6SWZTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNU
OjpTdGF0ZW1lbnQ6OktpbmQ6OklmOgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNh
c3Q8QVNUOjpJZlN0YXRlbWVudD4oc3RhdGVtZW50KSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpS
ZXR1cm4+KHN0YXRlbWVudCkpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpTdGF0ZW1l
bnQ6OktpbmQ6OlJldHVybjoKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFT
VDo6UmV0dXJuPihzdGF0ZW1lbnQpKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OlN0YXRlbWVudExp
c3Q+KHN0YXRlbWVudCkpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6
OktpbmQ6OlN0YXRlbWVudExpc3Q6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2Fz
dDxBU1Q6OlN0YXRlbWVudExpc3Q+KHN0YXRlbWVudCkpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6
U3dpdGNoQ2FzZT4oc3RhdGVtZW50KSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OlN0
YXRlbWVudDo6S2luZDo6U3dpdGNoQ2FzZToKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRv
d25jYXN0PEFTVDo6U3dpdGNoQ2FzZT4oc3RhdGVtZW50KSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNU
OjpTd2l0Y2hTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpCisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
QVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OlN3aXRjaDoKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGRvd25jYXN0PEFTVDo6U3dpdGNoU3RhdGVtZW50PihzdGF0ZW1lbnQpKTsKLSAgICBlbHNlIGlm
IChpczxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50PihzdGF0ZW1lbnQpKQorICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpWYXJpYWJsZURlY2xh
cmF0aW9uczoKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6VmFyaWFi
bGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpOwotICAgIGVsc2UKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6V2hpbGVMb29wOgogICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpXaGlsZUxvb3A+KHN0YXRlbWVudCkp
OworICAgICAgICBicmVhazsKKyAgICB9CiB9CiAKIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpC
cmVhayYpCkBAIC0zNDksNDYgKzM2NSw2OCBAQCB2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RG9X
aGlsZUxvb3AmIGRvCiAKIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpFeHByZXNzaW9uJiBleHBy
ZXNzaW9uKQogewotICAgIGlmIChpczxBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPihleHByZXNz
aW9uKSkKKyAgICBzd2l0Y2ggKGV4cHJlc3Npb24ua2luZCgpKSB7CisgICAgY2FzZSBBU1Q6OkV4
cHJlc3Npb246OktpbmQ6OkFzc2lnbm1lbnQ6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChk
b3duY2FzdDxBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgZWxz
ZSBpZiAoaXM8QVNUOjpCb29sZWFuTGl0ZXJhbD4oZXhwcmVzc2lvbikpCisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpCb29sZWFuTGl0ZXJhbDoKICAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6Qm9vbGVhbkxpdGVyYWw+KGV4cHJl
c3Npb24pKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OkNhbGxFeHByZXNzaW9uPihleHByZXNzaW9u
KSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkNhbGw6
CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkNhbGxFeHByZXNzaW9u
PihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpDb21tYUV4cHJlc3Npb24+KGV4
cHJlc3Npb24pKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2lu
ZDo6Q29tbWE6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkNvbW1h
RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6RGVyZWZlcmVu
Y2VFeHByZXNzaW9uPihleHByZXNzaW9uKSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6
OkV4cHJlc3Npb246OktpbmQ6OkRlcmVmZXJlbmNlOgogICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoZG93bmNhc3Q8QVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAg
ICBlbHNlIGlmIChpczxBU1Q6OkZsb2F0TGl0ZXJhbD4oZXhwcmVzc2lvbikpCisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpGbG9hdExpdGVyYWw6CiAgICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkZsb2F0TGl0ZXJhbD4oZXhwcmVz
c2lvbikpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6SW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24p
KQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6SW50ZWdl
ckxpdGVyYWw6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkludGVn
ZXJMaXRlcmFsPihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpMb2dpY2FsRXhw
cmVzc2lvbj4oZXhwcmVzc2lvbikpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHBy
ZXNzaW9uOjpLaW5kOjpMb2dpY2FsOgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNh
c3Q8QVNUOjpMb2dpY2FsRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgIGVsc2UgaWYgKGlz
PEFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKQorICAgICAgICBicmVhazsK
KyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6TG9naWNhbE5vdDoKICAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb24+KGV4cHJl
c3Npb24pKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Np
b24+KGV4cHJlc3Npb24pKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lv
bjo6S2luZDo6TWFrZUFycmF5UmVmZXJlbmNlOgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
ZG93bmNhc3Q8QVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKSk7
Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24+KGV4cHJlc3Npb24p
KQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6TWFrZVBv
aW50ZXI6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6Ok1ha2VQb2lu
dGVyRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6TnVsbExp
dGVyYWw+KGV4cHJlc3Npb24pKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVz
c2lvbjo6S2luZDo6TnVsbExpdGVyYWw6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3du
Y2FzdDxBU1Q6Ok51bGxMaXRlcmFsPihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNU
OjpEb3RFeHByZXNzaW9uPihleHByZXNzaW9uKSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBB
U1Q6OkV4cHJlc3Npb246OktpbmQ6OkRvdDoKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRv
d25jYXN0PEFTVDo6RG90RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgIGVsc2UgaWYgKGlz
PEFTVDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U+KGV4cHJlc3Npb24pKQorICAgICAgICBicmVh
azsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6R2xvYmFsVmFyaWFibGVSZWZlcmVu
Y2U6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6Okdsb2JhbFZhcmlh
YmxlUmVmZXJlbmNlPihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpJbmRleEV4
cHJlc3Npb24+KGV4cHJlc3Npb24pKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhw
cmVzc2lvbjo6S2luZDo6SW5kZXg6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2Fz
dDxBU1Q6OkluZGV4RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgIGVsc2UgaWYgKGlzPEFT
VDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpCisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpSZWFkTW9kaWZ5V3JpdGU6CiAgICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OlRlcm5hcnlFeHByZXNz
aW9uPihleHByZXNzaW9uKSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Np
b246OktpbmQ6OlRlcm5hcnk6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxB
U1Q6OlRlcm5hcnlFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNU
OjpVbnNpZ25lZEludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKSkKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw6CiAg
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlVuc2lnbmVkSW50ZWdlckxp
dGVyYWw+KGV4cHJlc3Npb24pKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OkVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbD4oZXhwcmVzc2lvbikpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpF
eHByZXNzaW9uOjpLaW5kOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6CiAgICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbD4oZXhw
cmVzc2lvbikpOwotICAgIGVsc2UKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJl
c3Npb246OktpbmQ6OlZhcmlhYmxlUmVmZXJlbmNlOgogICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoZG93bmNhc3Q8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lvbikpOworICAgICAg
ICBicmVhazsKKyAgICB9CiB9CiAKIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpEb3RFeHByZXNz
aW9uJiBkb3RFeHByZXNzaW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlSZWZlcmVuY2VUeXBl
LmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2
ICszMiw3IEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsNyArNDcsNyBAQCBjbGFzcyBBcnJheVJlZmVy
ZW5jZVR5cGUgZmluYWwgOiBwdWJsaWMgCiAgICAgdXNpbmcgQmFzZSA9IFJlZmVyZW5jZVR5cGU7
CiAKICAgICBBcnJheVJlZmVyZW5jZVR5cGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBBZGRyZXNz
U3BhY2UgYWRkcmVzc1NwYWNlLCBSZWY8VW5uYW1lZFR5cGU+IGVsZW1lbnRUeXBlKQotICAgICAg
ICA6IEJhc2UobG9jYXRpb24sIGFkZHJlc3NTcGFjZSwgV1RGTW92ZShlbGVtZW50VHlwZSksIEtp
bmQ6OkFycmF5UmVmZXJlbmNlVHlwZSkKKyAgICAgICAgOiBCYXNlKGxvY2F0aW9uLCBhZGRyZXNz
U3BhY2UsIFdURk1vdmUoZWxlbWVudFR5cGUpLCBLaW5kOjpBcnJheVJlZmVyZW5jZSkKICAgICB7
CiAgICAgfQogcHVibGljOgpAQCAtNTUsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEFycmF5UmVmZXJlbmNlVHlwZShsb2NhdGlvbiwgYWRkcmVzc1NwYWNl
LCBXVEZNb3ZlKGVsZW1lbnRUeXBlKSkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgfkFycmF5UmVm
ZXJlbmNlVHlwZSgpID0gZGVmYXVsdDsKKyAgICB+QXJyYXlSZWZlcmVuY2VUeXBlKCkgPSBkZWZh
dWx0OwogCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICAgewpAQCAtNjcsNyArNjgsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZGRyZXNzU3BhY2UoKSA9PSBvdGhlci5hZGRyZXNz
U3BhY2UoKSAmJiBlbGVtZW50VHlwZSgpID09IG90aGVyLmVsZW1lbnRUeXBlKCk7CiAgICAgfQog
Ci0gICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJpbmcgdG9TdHJp
bmcoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoZWxlbWVudFR5cGUo
KS50b1N0cmluZygpLCAiW10iKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVR5cGUuaAkocmV2aXNp
b24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMQXJyYXlUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgQXJy
YXlUeXBlIGZpbmFsIDogcHVibGljIFVubmFtZWRUeQogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFycmF5VHlwZSk7CiAgICAgQXJyYXlUeXBl
KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgUmVmPFVubmFtZWRUeXBlPiBlbGVtZW50VHlwZSwgdW5z
aWduZWQgbnVtRWxlbWVudHMpCi0gICAgICAgIDogVW5uYW1lZFR5cGUobG9jYXRpb24sIEtpbmQ6
OkFycmF5VHlwZSkKKyAgICAgICAgOiBVbm5hbWVkVHlwZShsb2NhdGlvbiwgS2luZDo6QXJyYXkp
CiAgICAgICAgICwgbV9lbGVtZW50VHlwZShXVEZNb3ZlKGVsZW1lbnRUeXBlKSkKICAgICAgICAg
LCBtX251bUVsZW1lbnRzKG51bUVsZW1lbnRzKQogICAgIHsKQEAgLTU4LDcgKzU4LDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcnJheVR5cGUobG9jYXRpb24sIFdU
Rk1vdmUoZWxlbWVudFR5cGUpLCBudW1FbGVtZW50cykpOwogICAgIH0KIAotICAgIHZpcnR1YWwg
fkFycmF5VHlwZSgpID0gZGVmYXVsdDsKKyAgICB+QXJyYXlUeXBlKCkgPSBkZWZhdWx0OwogCiAg
ICAgY29uc3QgVW5uYW1lZFR5cGUmIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRUeXBl
OyB9CiAgICAgVW5uYW1lZFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX2VsZW1lbnRUeXBlOyB9CkBA
IC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG51bUVsZW1lbnRzKCkgPT0g
b3RoZXIubnVtRWxlbWVudHMoKSAmJiB0eXBlKCkgPT0gb3RoZXIudHlwZSgpOwogICAgIH0KIAot
ICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IG92ZXJyaWRlCisgICAgU3RyaW5nIHRvU3RyaW5n
KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHR5cGUoKS50b1N0cmlu
ZygpLCAnWycsIG51bUVsZW1lbnRzKCksICddJyk7CiAgICAgfQpAQCAtOTAsNiArOTAsOCBAQCBw
cml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShBcnJheVR5cGUpCisKIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVU5OQU1FRF9UWVBFKEFycmF5VHlwZSwgaXNBcnJheVR5
cGUoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFzc2lnbm1lbnRFeHByZXNzaW9u
LmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDExICszNywxMSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xh
c3MgQXNzaWdubWVudEV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBBc3Np
Z25tZW50RXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBBc3NpZ25tZW50RXhwcmVzc2lvbihDb2Rl
TG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGxlZnQsIFVuaXF1ZVJl
ZjxFeHByZXNzaW9uPiYmIHJpZ2h0KQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24pCisg
ICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6QXNzaWdubWVudCkKICAgICAgICAg
LCBtX2xlZnQoV1RGTW92ZShsZWZ0KSkKICAgICAgICAgLCBtX3JpZ2h0KFdURk1vdmUocmlnaHQp
KQogICAgIHsKQEAgLTUwLDEzICs1MCwxMSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSAg
ICB2aXJ0dWFsIH5Bc3NpZ25tZW50RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKyAgICB+QXNzaWdu
bWVudEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CiAKICAgICBBc3NpZ25tZW50RXhwcmVzc2lvbihj
b25zdCBBc3NpZ25tZW50RXhwcmVzc2lvbiYpID0gZGVsZXRlOwogICAgIEFzc2lnbm1lbnRFeHBy
ZXNzaW9uKEFzc2lnbm1lbnRFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNB
c3NpZ25tZW50RXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQog
ICAgIEV4cHJlc3Npb24mIGxlZnQoKSB7IHJldHVybiBtX2xlZnQ7IH0KICAgICBFeHByZXNzaW9u
JiByaWdodCgpIHsgcmV0dXJuIG1fcmlnaHQ7IH0KICAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4g
dGFrZVJpZ2h0KCkgeyByZXR1cm4gV1RGTW92ZShtX3JpZ2h0KTsgfQpAQCAtNzUsNiArNzMsOCBA
QCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShBc3NpZ25tZW50RXhwcmVz
c2lvbikKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEFzc2lnbm1l
bnRFeHByZXNzaW9uLCBpc0Fzc2lnbm1lbnRFeHByZXNzaW9uKCkpCiAKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmxvY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xC
bG9jay5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyNCArMzgsMjIg
QEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEJsb2NrIDog
cHVibGljIFN0YXRlbWVudCB7CitjbGFzcyBCbG9jayBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEJsb2NrKENvZGVM
b2NhdGlvbiBsb2NhdGlvbiwgU3RhdGVtZW50cyYmIHN0YXRlbWVudHMpCi0gICAgICAgIDogU3Rh
dGVtZW50KGxvY2F0aW9uKQorICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6Qmxv
Y2spCiAgICAgICAgICwgbV9zdGF0ZW1lbnRzKFdURk1vdmUoc3RhdGVtZW50cykpCiAgICAgewog
ICAgIH0KIAotICAgIHZpcnR1YWwgfkJsb2NrKCkgPSBkZWZhdWx0OworICAgIH5CbG9jaygpID0g
ZGVmYXVsdDsKIAogICAgIEJsb2NrKGNvbnN0IEJsb2NrJikgPSBkZWxldGU7CiAgICAgQmxvY2so
QmxvY2smJikgPSBkZWZhdWx0OwogCiAgICAgU3RhdGVtZW50cyYgc3RhdGVtZW50cygpIHsgcmV0
dXJuIG1fc3RhdGVtZW50czsgfQogCi0gICAgYm9vbCBpc0Jsb2NrKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQotCiBwcml2YXRlOgogICAgIFN0YXRlbWVudHMgbV9zdGF0ZW1lbnRz
OwogfTsKQEAgLTY2LDYgKzY0LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9E
RUxFVEUoQmxvY2spCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKEJs
b2NrLCBpc0Jsb2NrKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQm9vbGVhbkxpdGVyYWwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCb29sZWFuTGl0ZXJhbC5o
CShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xCb29sZWFuTGl0ZXJhbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNiArMzYs
MTYgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEJvb2xl
YW5MaXRlcmFsIDogcHVibGljIEV4cHJlc3Npb24geworY2xhc3MgQm9vbGVhbkxpdGVyYWwgZmlu
YWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgQm9vbGVhbkxpdGVyYWwoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBib29sIHZh
bHVlKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lv
bihsb2NhdGlvbiwgS2luZDo6Qm9vbGVhbkxpdGVyYWwpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1
ZSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+Qm9vbGVhbkxpdGVyYWwoKSA9IGRlZmF1
bHQ7CisgICAgfkJvb2xlYW5MaXRlcmFsKCkgPSBkZWZhdWx0OwogCiAgICAgQm9vbGVhbkxpdGVy
YWwoY29uc3QgQm9vbGVhbkxpdGVyYWwmKSA9IGRlbGV0ZTsKICAgICBCb29sZWFuTGl0ZXJhbChC
b29sZWFuTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CkBAIC01NSw4ICs1NSw2IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKLSAgICBib29sIGlz
Qm9vbGVhbkxpdGVyYWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBC
b29sZWFuTGl0ZXJhbCBjbG9uZSgpIGNvbnN0CiAgICAgewogICAgICAgICBCb29sZWFuTGl0ZXJh
bCByZXN1bHQoY29kZUxvY2F0aW9uKCksIG1fdmFsdWUpOwpAQCAtNzQsNiArNzIsOCBAQCBwcml2
YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShCb29sZWFuTGl0ZXJhbCkKKwogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEJvb2xlYW5MaXRlcmFsLCBpc0Jv
b2xlYW5MaXRlcmFsKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQnJlYWsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCcmVhay5oCShyZXZpc2lvbiAyNDg0MDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCcmVhay5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNywyMSArMzcsMTkgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAog
bmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEJyZWFrIDogcHVibGljIFN0YXRlbWVudCB7CitjbGFz
cyBCcmVhayBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIEJyZWFrKENvZGVMb2NhdGlvbiBsb2NhdGlvbikKLSAgICAg
ICAgOiBTdGF0ZW1lbnQobG9jYXRpb24pCisgICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBL
aW5kOjpCcmVhaykKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+QnJlYWsoKSA9IGRlZmF1
bHQ7CisgICAgfkJyZWFrKCkgPSBkZWZhdWx0OwogCiAgICAgQnJlYWsoY29uc3QgQnJlYWsmKSA9
IGRlbGV0ZTsKICAgICBCcmVhayhCcmVhayYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzQnJl
YWsoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KIHByaXZhdGU6CiB9OwogCkBA
IC02MSw2ICs1OSw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKEJy
ZWFrKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChCcmVhaywgaXNC
cmVhaygpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTENhbGxFeHByZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ2FsbEV4cHJlc3Npb24uaAkocmV2aXNp
b24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMQ2FsbEV4cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMjcgKzQwLDI1IEBAIG5h
bWVzcGFjZSBBU1QgewogCiBjbGFzcyBOYW1lZFR5cGU7CiAKLWNsYXNzIENhbGxFeHByZXNzaW9u
IDogcHVibGljIEV4cHJlc3Npb24geworY2xhc3MgQ2FsbEV4cHJlc3Npb24gZmluYWwgOiBwdWJs
aWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgQ2FsbEV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1lLCBW
ZWN0b3I8VW5pcXVlUmVmPEV4cHJlc3Npb24+PiYmIGFyZ3VtZW50cykKLSAgICAgICAgOiBFeHBy
ZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkNh
bGwpCiAgICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCiAgICAgICAgICwgbV9hcmd1bWVu
dHMoV1RGTW92ZShhcmd1bWVudHMpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5DYWxs
RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKLQogICAgIENhbGxFeHByZXNzaW9uKGNvbnN0IENhbGxF
eHByZXNzaW9uJikgPSBkZWxldGU7CiAgICAgQ2FsbEV4cHJlc3Npb24oQ2FsbEV4cHJlc3Npb24m
JikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc0NhbGxFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4m
IGFyZ3VtZW50cygpIHsgcmV0dXJuIG1fYXJndW1lbnRzOyB9CiAKICAgICBTdHJpbmcmIG5hbWUo
KSB7IHJldHVybiBtX25hbWU7IH0KIAorICAgIH5DYWxsRXhwcmVzc2lvbigpID0gZGVmYXVsdDsK
KwogICAgIHZvaWQgc2V0Q2FzdERhdGEoTmFtZWRUeXBlJiBuYW1lZFR5cGUpCiAgICAgewogICAg
ICAgICBtX2Nhc3RSZXR1cm5UeXBlID0gJm5hbWVkVHlwZTsKQEAgLTkzLDYgKzkxLDggQEAgcHJp
dmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoQ2FsbEV4cHJlc3Npb24pCisKIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihDYWxsRXhwcmVzc2lvbiwgaXND
YWxsRXhwcmVzc2lvbigpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVzc2lvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVzc2lv
bi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xDb21tYUV4cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjIg
KzM4LDIwIEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBD
b21tYUV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBDb21tYUV4cHJlc3Np
b24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgQ29tbWFFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwg
VmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4mJiBsaXN0KQotICAgICAgICA6IEV4cHJlc3Np
b24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6Q29tbWEp
CiAgICAgICAgICwgbV9saXN0KFdURk1vdmUobGlzdCkpCiAgICAgewogICAgIH0KIAotICAgIHZp
cnR1YWwgfkNvbW1hRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKyAgICB+Q29tbWFFeHByZXNzaW9u
KCkgPSBkZWZhdWx0OwogCiAgICAgQ29tbWFFeHByZXNzaW9uKGNvbnN0IENvbW1hRXhwcmVzc2lv
biYpID0gZGVsZXRlOwogICAgIENvbW1hRXhwcmVzc2lvbihDb21tYUV4cHJlc3Npb24mJikgPSBk
ZWZhdWx0OwogCi0gICAgYm9vbCBpc0NvbW1hRXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KLQogICAgIFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiBsaXN0
KCkgeyByZXR1cm4gbV9saXN0OyB9CiAKIHByaXZhdGU6CkBAIC02Niw2ICs2NCw4IEBAIHByaXZh
dGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKENvbW1hRXhwcmVzc2lvbikKKwogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKENvbW1hRXhwcmVzc2lvbiwgaXND
b21tYUV4cHJlc3Npb24oKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb25zdGFudEV4
cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIEFTVCB7CiAvLyBGSVhNRTogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE1OCBtYWNPUyBTaWVycmEgZG9lc24ndCBz
ZWVtIHRvIHN1cHBvcnQgcHV0dGluZyBWYXJpYW50cyBpbnNpZGUgVmFyaWFudHMsCiAvLyBzbyB0
aGlzIGlzIGEgd3JhcHBlciBjbGFzcyB0byBtYWtlIHN1cmUgdGhhdCBkb2Vzbid0IGhhcHBlbi4g
QXMgc29vbiBhcyB3ZSBkb24ndAogLy8gaGF2ZSB0byBzdXBwb3J0IFNpZXJyYSwgdGhpcyBjYW4g
YmUgbWlncmF0ZWQgdG8gYSBWYXJpYW50IHByb3Blci4KLWNsYXNzIENvbnN0YW50RXhwcmVzc2lv
biB7CitjbGFzcyBDb25zdGFudEV4cHJlc3Npb24gZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIENvbnN0YW50RXhwcmVzc2lvbihJbnRlZ2VyTGl0ZXJh
bCYmIGludGVnZXJMaXRlcmFsKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMQ29udGludWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb250aW51ZS5oCShyZXZpc2lvbiAyNDg0MDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb250aW51
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywyMSArMzcsMTkgQEAgbmFtZXNwYWNlIFdITFNMIHsK
IAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIENvbnRpbnVlIDogcHVibGljIFN0YXRlbWVudCB7
CitjbGFzcyBDb250aW51ZSBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENvbnRpbnVlKENvZGVMb2NhdGlvbiBsb2Nh
dGlvbikKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24pCisgICAgICAgIDogU3RhdGVtZW50
KGxvY2F0aW9uLCBLaW5kOjpDb250aW51ZSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+
Q29udGludWUoKSA9IGRlZmF1bHQ7CisgICAgfkNvbnRpbnVlKCkgPSBkZWZhdWx0OwogCiAgICAg
Q29udGludWUoY29uc3QgQ29udGludWUmKSA9IGRlbGV0ZTsKICAgICBDb250aW51ZShDb250aW51
ZSYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzQ29udGludWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9Ci0KIHByaXZhdGU6CiB9OwogCkBAIC02MSw2ICs1OSw4IEBAIHByaXZh
dGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKENvbnRpbnVlKQorCiBTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChDb250aW51ZSwgaXNDb250aW51ZSgpKQogCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TERlZmF1bHREZWxldGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xEZWZhdWx0RGVsZXRlLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVmYXVsdERlbGV0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworI2Rl
ZmluZSBERUZJTkVfREVGQVVMVF9ERUxFVEUodHlwZSkgXAorICAgIG5hbWVzcGFjZSBzdGQgeyBc
CisgICAgICAgIHRlbXBsYXRlPD4gXAorICAgICAgICBzdHJ1Y3QgZGVmYXVsdF9kZWxldGU8V2Vi
Q29yZTo6V0hMU0w6OkFTVDo6dHlwZT4geyBcCisgICAgICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gXAorICAgICAgICAgICAgdm9pZCBjYWxsRGVsZXRlKFQqIHQpIFwKKyAgICAgICAgICAg
IHsgXAorICAgICAgICAgICAgICAgIGRlbGV0ZSB0OyBcCisgICAgICAgICAgICB9IFwKKyAgICAg
ICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBcCisgICAgICAgICAgICB2b2lkIGNhbGxEZXN0
cm95KFQqIHQpIFwKKyAgICAgICAgICAgIHsgXAorICAgICAgICAgICAgICAgIFdlYkNvcmU6OldI
TFNMOjpBU1Q6OnR5cGU6OmRlc3Ryb3koKnQpOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAg
ICAgIGNvbnN0ZXhwciB2b2lkIG9wZXJhdG9yKCkoV2ViQ29yZTo6V0hMU0w6OkFTVDo6dHlwZSog
dmFsdWUpIFwKKyAgICAgICAgICAgIHsgXAorICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19maW5hbDxXZWJDb3JlOjpXSExTTDo6QVNUOjp0eXBlPjo6dmFsdWUpIFwKKyAgICAg
ICAgICAgICAgICAgICAgY2FsbERlbGV0ZSh2YWx1ZSk7IFwKKyAgICAgICAgICAgICAgICBlbHNl
IFwKKyAgICAgICAgICAgICAgICAgICAgY2FsbERlc3Ryb3kodmFsdWUpOyBcCisgICAgICAgICAg
ICB9IFwKKyAgICAgICAgfTsgXAorICAgIH0gXAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Np
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMjIgKzM3LDIwIEBAIG5hbWVzcGFjZSBXSExTTCB7
CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBEZXJlZmVyZW5jZUV4cHJlc3Npb24gOiBwdWJs
aWMgRXhwcmVzc2lvbiB7CitjbGFzcyBEZXJlZmVyZW5jZUV4cHJlc3Npb24gZmluYWwgOiBwdWJs
aWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgRGVyZWZlcmVuY2VFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVm
PEV4cHJlc3Npb24+JiYgcG9pbnRlcikKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQor
ICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkRlcmVmZXJlbmNlKQogICAgICAg
ICAsIG1fcG9pbnRlcihXVEZNb3ZlKHBvaW50ZXIpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIH5EZXJlZmVyZW5jZUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfkRlcmVmZXJlbmNl
RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKIAogICAgIERlcmVmZXJlbmNlRXhwcmVzc2lvbihjb25z
dCBEZXJlZmVyZW5jZUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBEZXJlZmVyZW5jZUV4cHJl
c3Npb24oRGVyZWZlcmVuY2VFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNE
ZXJlZmVyZW5jZUV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0K
ICAgICBFeHByZXNzaW9uJiBwb2ludGVyKCkgeyByZXR1cm4gbV9wb2ludGVyOyB9CiAKIHByaXZh
dGU6CkBAIC02NSw2ICs2Myw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVM
RVRFKERlcmVmZXJlbmNlRXhwcmVzc2lvbikKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExT
TF9FWFBSRVNTSU9OKERlcmVmZXJlbmNlRXhwcmVzc2lvbiwgaXNEZXJlZmVyZW5jZUV4cHJlc3Np
b24oKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xEb1doaWxlTG9vcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29wLmgJKHJldmlzaW9uIDI0ODQw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hp
bGVMb29wLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDIzICszOCwyMSBAQCBuYW1lc3BhY2UgV0hM
U0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgRG9XaGlsZUxvb3AgOiBwdWJsaWMgU3Rh
dGVtZW50IHsKK2NsYXNzIERvV2hpbGVMb29wIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRG9XaGlsZUxvb3AoQ29k
ZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8U3RhdGVtZW50PiYmIGJvZHksIFVuaXF1ZVJl
ZjxFeHByZXNzaW9uPiYmIGNvbmRpdGlvbmFsKQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlv
bikKKyAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OkRvV2hpbGVMb29wKQogICAg
ICAgICAsIG1fYm9keShXVEZNb3ZlKGJvZHkpKQogICAgICAgICAsIG1fY29uZGl0aW9uYWwoV1RG
TW92ZShjb25kaXRpb25hbCkpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfkRvV2hpbGVM
b29wKCkgPSBkZWZhdWx0OworICAgIH5Eb1doaWxlTG9vcCgpID0gZGVmYXVsdDsKIAogICAgIERv
V2hpbGVMb29wKGNvbnN0IERvV2hpbGVMb29wJikgPSBkZWxldGU7CiAgICAgRG9XaGlsZUxvb3Ao
RG9XaGlsZUxvb3AmJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc0RvV2hpbGVMb29wKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgU3RhdGVtZW50JiBib2R5KCkgeyBy
ZXR1cm4gbV9ib2R5OyB9CiAgICAgRXhwcmVzc2lvbiYgY29uZGl0aW9uYWwoKSB7IHJldHVybiBt
X2NvbmRpdGlvbmFsOyB9CiAKQEAgLTY5LDYgKzY3LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJ
TkVfREVGQVVMVF9ERUxFVEUoRG9XaGlsZUxvb3ApCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
V0hMU0xfU1RBVEVNRU5UKERvV2hpbGVMb29wLCBpc0RvV2hpbGVMb29wKCkpCiAKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG90RXhw
cmVzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTERvdEV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG90RXhwcmVzc2lvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCwzMyArMzgsMzEgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFt
ZXNwYWNlIEFTVCB7CiAKLWNsYXNzIERvdEV4cHJlc3Npb24gOiBwdWJsaWMgUHJvcGVydHlBY2Nl
c3NFeHByZXNzaW9uIHsKK2NsYXNzIERvdEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgUHJvcGVy
dHlBY2Nlc3NFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBEb3RFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4
cHJlc3Npb24+JiYgYmFzZSwgU3RyaW5nJiYgZmllbGROYW1lKQotICAgICAgICA6IFByb3BlcnR5
QWNjZXNzRXhwcmVzc2lvbihsb2NhdGlvbiwgV1RGTW92ZShiYXNlKSkKKyAgICAgICAgOiBQcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkRvdCwgV1RGTW92ZShiYXNlKSkK
ICAgICAgICAgLCBtX2ZpZWxkTmFtZShXVEZNb3ZlKGZpZWxkTmFtZSkpCiAgICAgewogICAgIH0K
IAotICAgIHZpcnR1YWwgfkRvdEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfkRvdEV4cHJl
c3Npb24oKSA9IGRlZmF1bHQ7CiAKICAgICBEb3RFeHByZXNzaW9uKGNvbnN0IERvdEV4cHJlc3Np
b24mKSA9IGRlbGV0ZTsKICAgICBEb3RFeHByZXNzaW9uKERvdEV4cHJlc3Npb24mJikgPSBkZWZh
dWx0OwogCi0gICAgYm9vbCBpc0RvdEV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9Ci0KLSAgICBTdHJpbmcgZ2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUKKyAgICBTdHJpbmcgZ2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiBtYWtlU3RyaW5nKCJvcGVyYXRvci4iLCBtX2ZpZWxkTmFtZSk7CiAgICAgfQogCi0g
ICAgU3RyaW5nIHNldHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgU3RyaW5n
IHNldHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbWFrZVN0
cmluZygib3BlcmF0b3IuIiwgbV9maWVsZE5hbWUsICI9Iik7CiAgICAgfQogCi0gICAgU3RyaW5n
IGFuZGVyRnVuY3Rpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJpbmcgYW5kZXJGdW5j
dGlvbk5hbWUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIm9wZXJh
dG9yJi4iLCBtX2ZpZWxkTmFtZSk7CiAgICAgfQpAQCAtODEsNiArNzksOCBAQCBwcml2YXRlOgog
CiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShEb3RFeHByZXNzaW9uKQorCiBTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oRG90RXhwcmVzc2lvbiwgaXNEb3RFeHByZXNz
aW9uKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVmZmVjdGZ1bEV4
cHJlc3Npb25TdGF0ZW1lbnQuaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyMiArMzgsMjAgQEAgbmFtZXNwYWNlIFdITFNMIHsK
IAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQg
OiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNzIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQg
ZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KFVuaXF1ZVJlZjxFeHBy
ZXNzaW9uPiYmIGVmZmVjdGZ1bEV4cHJlc3Npb24pCi0gICAgICAgIDogU3RhdGVtZW50KGVmZmVj
dGZ1bEV4cHJlc3Npb24tPmNvZGVMb2NhdGlvbigpKQorICAgICAgICA6IFN0YXRlbWVudChlZmZl
Y3RmdWxFeHByZXNzaW9uLT5jb2RlTG9jYXRpb24oKSwgS2luZDo6RWZmZWN0ZnVsRXhwcmVzc2lv
bikKICAgICAgICAgLCBtX2VmZmVjdGZ1bEV4cHJlc3Npb24oV1RGTW92ZShlZmZlY3RmdWxFeHBy
ZXNzaW9uKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+RWZmZWN0ZnVsRXhwcmVzc2lv
blN0YXRlbWVudCgpID0gZGVmYXVsdDsKKyAgICB+RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVu
dCgpID0gZGVmYXVsdDsKIAogICAgIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoY29uc3Qg
RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYpID0gZGVsZXRlOwogICAgIEVmZmVjdGZ1bEV4
cHJlc3Npb25TdGF0ZW1lbnQoRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYmKSA9IGRlZmF1
bHQ7CiAKLSAgICBib29sIGlzRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIEV4cHJlc3Npb24mIGVmZmVjdGZ1bEV4cHJl
c3Npb24oKSB7IHJldHVybiBtX2VmZmVjdGZ1bEV4cHJlc3Npb247IH0KIAogcHJpdmF0ZToKQEAg
LTY2LDYgKzY0LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoRWZm
ZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExT
TF9TVEFURU1FTlQoRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCwgaXNFZmZlY3RmdWxFeHBy
ZXNzaW9uU3RhdGVtZW50KCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVy
YXRpb25EZWZpbml0aW9uLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSwyMiArNDUsMjAgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNw
YWNlIEFTVCB7CiAKLWNsYXNzIEVudW1lcmF0aW9uRGVmaW5pdGlvbiA6IHB1YmxpYyBOYW1lZFR5
cGUgeworY2xhc3MgRW51bWVyYXRpb25EZWZpbml0aW9uIGZpbmFsIDogcHVibGljIE5hbWVkVHlw
ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRW51bWVyYXRp
b25EZWZpbml0aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSwgUmVmPFVu
bmFtZWRUeXBlPiB0eXBlKQotICAgICAgICA6IE5hbWVkVHlwZShsb2NhdGlvbiwgV1RGTW92ZShu
YW1lKSkKKyAgICAgICAgOiBOYW1lZFR5cGUoS2luZDo6RW51bWVyYXRpb25EZWZpbml0aW9uLCBs
b2NhdGlvbiwgV1RGTW92ZShuYW1lKSkKICAgICAgICAgLCBtX3R5cGUoV1RGTW92ZSh0eXBlKSkK
ICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+RW51bWVyYXRpb25EZWZpbml0aW9uKCkgPSBk
ZWZhdWx0OworICAgIH5FbnVtZXJhdGlvbkRlZmluaXRpb24oKSA9IGRlZmF1bHQ7CiAKICAgICBF
bnVtZXJhdGlvbkRlZmluaXRpb24oY29uc3QgRW51bWVyYXRpb25EZWZpbml0aW9uJikgPSBkZWxl
dGU7CiAgICAgRW51bWVyYXRpb25EZWZpbml0aW9uKEVudW1lcmF0aW9uRGVmaW5pdGlvbiYmKSA9
IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzRW51bWVyYXRpb25EZWZpbml0aW9uKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgVW5uYW1lZFR5cGUmIHR5cGUoKSB7IHJldHVy
biBtX3R5cGU7IH0KIAogICAgIGJvb2wgYWRkKEVudW1lcmF0aW9uTWVtYmVyJiYgbWVtYmVyKQpA
QCAtOTYsNiArOTQsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShF
bnVtZXJhdGlvbkRlZmluaXRpb24pCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfTkFN
RURfVFlQRShFbnVtZXJhdGlvbkRlZmluaXRpb24sIGlzRW51bWVyYXRpb25EZWZpbml0aW9uKCkp
CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MCwxNyArNDAsMTcgQEAgbmFtZXNwYWNlIEFTVCB7CiBjbGFzcyBFbnVtZXJhdGlvbkRl
ZmluaXRpb247CiBjbGFzcyBFbnVtZXJhdGlvbk1lbWJlcjsKIAotY2xhc3MgRW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsIDogcHVibGljIEV4cHJlc3Npb24geworY2xhc3MgRW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbChDb2RlTG9j
YXRpb24gbG9jYXRpb24sIFN0cmluZyYmIGxlZnQsIFN0cmluZyYmIHJpZ2h0KQotICAgICAgICA6
IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2lu
ZDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKQogICAgICAgICAsIG1fbGVmdChXVEZNb3ZlKGxl
ZnQpKQogICAgICAgICAsIG1fcmlnaHQoV1RGTW92ZShyaWdodCkpCiAgICAgewogICAgIH0KIAot
ICAgIHZpcnR1YWwgfkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCgpID0gZGVmYXVsdDsKKyAgICB+
RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKCkgPSBkZWZhdWx0OwogCiAgICAgZXhwbGljaXQgRW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsKGNvbnN0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYpID0g
ZGVsZXRlOwogICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbChFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWwmJikgPSBkZWZhdWx0OwpAQCAtNTgsOCArNTgsNiBAQCBwdWJsaWM6CiAgICAgRW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsJiBvcGVyYXRvcj0oY29uc3QgRW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsJikgPSBkZWxldGU7CiAgICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBvcGVyYXRvcj0o
RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNFbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0K
ICAgICBzdGF0aWMgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsIHdyYXAoQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uLCBTdHJpbmcmJiBsZWZ0LCBTdHJpbmcmJiByaWdodCwgRW51bWVyYXRpb25EZWZpbml0
aW9uJiBlbnVtZXJhdGlvbkRlZmluaXRpb24sIEVudW1lcmF0aW9uTWVtYmVyJiBlbnVtZXJhdGlv
bk1lbWJlcikKICAgICB7CiAgICAgICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCByZXN1bHQo
bG9jYXRpb24sIFdURk1vdmUobGVmdCksIFdURk1vdmUocmlnaHQpKTsKQEAgLTExOCw2ICsxMTYs
OCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShFbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwpCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwsIGlzRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKCkpCiAK
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMRXhwcmVzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisKKyNpZiBFTkFCTEUoV0VC
R1BVKQorCisjaW5jbHVkZSAiV0hMU0xBU1QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitu
YW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKwordm9pZCBFeHByZXNzaW9uOjpk
ZXN0cm95KEV4cHJlc3Npb24mIGV4cHJlc3Npb24pCit7CisgICAgc3dpdGNoIChleHByZXNzaW9u
LmtpbmQoKSkgeworICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6QXNzaWdubWVudDoKKyAgICAg
ICAgZGVsZXRlICZkb3duY2FzdDxBc3NpZ25tZW50RXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6Qm9vbGVhbkxpdGVyYWw6
CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8Qm9vbGVhbkxpdGVyYWw+KGV4cHJlc3Npb24pOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkNhbGw6CisgICAgICAg
IGRlbGV0ZSAmZG93bmNhc3Q8Q2FsbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkNvbW1hOgorICAgICAgICBkZWxldGUg
JmRvd25jYXN0PENvbW1hRXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6RGVyZWZlcmVuY2U6CisgICAgICAgIGRlbGV0ZSAm
ZG93bmNhc3Q8RGVyZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpGbG9hdExpdGVyYWw6CisgICAgICAgIGRl
bGV0ZSAmZG93bmNhc3Q8RmxvYXRMaXRlcmFsPihleHByZXNzaW9uKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpJbnRlZ2VyTGl0ZXJhbDoKKyAgICAgICAgZGVs
ZXRlICZkb3duY2FzdDxJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6TG9naWNhbDoKKyAgICAgICAgZGVsZXRlICZk
b3duY2FzdDxMb2dpY2FsRXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6TG9naWNhbE5vdDoKKyAgICAgICAgZGVsZXRlICZk
b3duY2FzdDxMb2dpY2FsTm90RXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6TWFrZUFycmF5UmVmZXJlbmNlOgorICAgICAg
ICBkZWxldGUgJmRvd25jYXN0PE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24+KGV4cHJlc3Np
b24pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6Ok1ha2VQb2lu
dGVyOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PE1ha2VQb2ludGVyRXhwcmVzc2lvbj4oZXhw
cmVzc2lvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6TnVs
bExpdGVyYWw6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8TnVsbExpdGVyYWw+KGV4cHJlc3Np
b24pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkRvdDoKKyAg
ICAgICAgZGVsZXRlICZkb3duY2FzdDxEb3RFeHByZXNzaW9uPihleHByZXNzaW9uKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpHbG9iYWxWYXJpYWJsZVJlZmVy
ZW5jZToKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZT4o
ZXhwcmVzc2lvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6
SW5kZXg6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8SW5kZXhFeHByZXNzaW9uPihleHByZXNz
aW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpSZWFkTW9k
aWZ5V3JpdGU6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8UmVhZE1vZGlmeVdyaXRlRXhwcmVz
c2lvbj4oZXhwcmVzc2lvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXhwcmVzc2lvbjo6
S2luZDo6VGVybmFyeToKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxUZXJuYXJ5RXhwcmVzc2lv
bj4oZXhwcmVzc2lvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXhwcmVzc2lvbjo6S2lu
ZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDoKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxVbnNp
Z25lZEludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBFeHByZXNzaW9uOjpLaW5kOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6CisgICAgICAgIGRl
bGV0ZSAmZG93bmNhc3Q8RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPihleHByZXNzaW9uKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpWYXJpYWJsZVJlZmVyZW5j
ZToKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lv
bik7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBFeHByZXNzaW9uOjpkZXN0cnVj
dChFeHByZXNzaW9uJiBleHByZXNzaW9uKQoreworICAgIHN3aXRjaCAoZXhwcmVzc2lvbi5raW5k
KCkpIHsKKyAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkFzc2lnbm1lbnQ6CisgICAgICAgIGRv
d25jYXN0PEFzc2lnbm1lbnRFeHByZXNzaW9uPihleHByZXNzaW9uKS5+QXNzaWdubWVudEV4cHJl
c3Npb24oKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpCb29s
ZWFuTGl0ZXJhbDoKKyAgICAgICAgZG93bmNhc3Q8Qm9vbGVhbkxpdGVyYWw+KGV4cHJlc3Npb24p
Ln5Cb29sZWFuTGl0ZXJhbCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEV4cHJlc3Npb246
OktpbmQ6OkNhbGw6CisgICAgICAgIGRvd25jYXN0PENhbGxFeHByZXNzaW9uPihleHByZXNzaW9u
KS5+Q2FsbEV4cHJlc3Npb24oKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHByZXNzaW9u
OjpLaW5kOjpDb21tYToKKyAgICAgICAgZG93bmNhc3Q8Q29tbWFFeHByZXNzaW9uPihleHByZXNz
aW9uKS5+Q29tbWFFeHByZXNzaW9uKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXhwcmVz
c2lvbjo6S2luZDo6RGVyZWZlcmVuY2U6CisgICAgICAgIGRvd25jYXN0PERlcmVmZXJlbmNlRXhw
cmVzc2lvbj4oZXhwcmVzc2lvbikufkRlcmVmZXJlbmNlRXhwcmVzc2lvbigpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkZsb2F0TGl0ZXJhbDoKKyAgICAgICAg
ZG93bmNhc3Q8RmxvYXRMaXRlcmFsPihleHByZXNzaW9uKS5+RmxvYXRMaXRlcmFsKCk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6SW50ZWdlckxpdGVyYWw6Cisg
ICAgICAgIGRvd25jYXN0PEludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKS5+SW50ZWdlckxpdGVy
YWwoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpMb2dpY2Fs
OgorICAgICAgICBkb3duY2FzdDxMb2dpY2FsRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikufkxvZ2lj
YWxFeHByZXNzaW9uKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXhwcmVzc2lvbjo6S2lu
ZDo6TG9naWNhbE5vdDoKKyAgICAgICAgZG93bmNhc3Q8TG9naWNhbE5vdEV4cHJlc3Npb24+KGV4
cHJlc3Npb24pLn5Mb2dpY2FsTm90RXhwcmVzc2lvbigpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEV4cHJlc3Npb246OktpbmQ6Ok1ha2VBcnJheVJlZmVyZW5jZToKKyAgICAgICAgZG93bmNh
c3Q8TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikufk1ha2VBcnJheVJl
ZmVyZW5jZUV4cHJlc3Npb24oKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHByZXNzaW9u
OjpLaW5kOjpNYWtlUG9pbnRlcjoKKyAgICAgICAgZG93bmNhc3Q8TWFrZVBvaW50ZXJFeHByZXNz
aW9uPihleHByZXNzaW9uKS5+TWFrZVBvaW50ZXJFeHByZXNzaW9uKCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6TnVsbExpdGVyYWw6CisgICAgICAgIGRvd25j
YXN0PE51bGxMaXRlcmFsPihleHByZXNzaW9uKS5+TnVsbExpdGVyYWwoKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpEb3Q6CisgICAgICAgIGRvd25jYXN0PERv
dEV4cHJlc3Npb24+KGV4cHJlc3Npb24pLn5Eb3RFeHByZXNzaW9uKCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U6Cisg
ICAgICAgIGRvd25jYXN0PEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKS5+R2xv
YmFsVmFyaWFibGVSZWZlcmVuY2UoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHByZXNz
aW9uOjpLaW5kOjpJbmRleDoKKyAgICAgICAgZG93bmNhc3Q8SW5kZXhFeHByZXNzaW9uPihleHBy
ZXNzaW9uKS5+SW5kZXhFeHByZXNzaW9uKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXhw
cmVzc2lvbjo6S2luZDo6UmVhZE1vZGlmeVdyaXRlOgorICAgICAgICBkb3duY2FzdDxSZWFkTW9k
aWZ5V3JpdGVFeHByZXNzaW9uPihleHByZXNzaW9uKS5+UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lv
bigpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OlRlcm5hcnk6
CisgICAgICAgIGRvd25jYXN0PFRlcm5hcnlFeHByZXNzaW9uPihleHByZXNzaW9uKS5+VGVybmFy
eUV4cHJlc3Npb24oKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHByZXNzaW9uOjpLaW5k
OjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOgorICAgICAgICBkb3duY2FzdDxVbnNpZ25lZEludGVn
ZXJMaXRlcmFsPihleHByZXNzaW9uKS5+VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbDoKKyAgICAgICAgZG93bmNhc3Q8RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPihleHByZXNz
aW9uKS5+RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKCk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgRXhwcmVzc2lvbjo6S2luZDo6VmFyaWFibGVSZWZlcmVuY2U6CisgICAgICAgIGRvd25jYXN0
PFZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKS5+VmFyaWFibGVSZWZlcmVuY2UoKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorfQorCitTdHJpbmcgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9u
OjpnZXR0ZXJGdW5jdGlvbk5hbWUoKSBjb25zdAoreworICAgIGlmIChpczxEb3RFeHByZXNzaW9u
PigqdGhpcykpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxEb3RFeHByZXNzaW9uPigqdGhpcyku
Z2V0dGVyRnVuY3Rpb25OYW1lKCk7CisgICAgaWYgKGlzPEluZGV4RXhwcmVzc2lvbj4oKnRoaXMp
KQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8SW5kZXhFeHByZXNzaW9uPigqdGhpcykuZ2V0dGVy
RnVuY3Rpb25OYW1lKCk7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwor
U3RyaW5nIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbjo6c2V0dGVyRnVuY3Rpb25OYW1lKCkgY29u
c3QKK3sKKyAgICBpZiAoaXM8RG90RXhwcmVzc2lvbj4oKnRoaXMpKQorICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8RG90RXhwcmVzc2lvbj4oKnRoaXMpLnNldHRlckZ1bmN0aW9uTmFtZSgpOworICAg
IGlmIChpczxJbmRleEV4cHJlc3Npb24+KCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0
PEluZGV4RXhwcmVzc2lvbj4oKnRoaXMpLnNldHRlckZ1bmN0aW9uTmFtZSgpOworICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK1N0cmluZyBQcm9wZXJ0eUFjY2Vzc0V4cHJl
c3Npb246OmFuZGVyRnVuY3Rpb25OYW1lKCkgY29uc3QKK3sKKyAgICBpZiAoaXM8RG90RXhwcmVz
c2lvbj4oKnRoaXMpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8RG90RXhwcmVzc2lvbj4oKnRo
aXMpLmFuZGVyRnVuY3Rpb25OYW1lKCk7CisgICAgaWYgKGlzPEluZGV4RXhwcmVzc2lvbj4oKnRo
aXMpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8SW5kZXhFeHByZXNzaW9uPigqdGhpcykuYW5k
ZXJGdW5jdGlvbk5hbWUoKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBBU1QKKworfSAvLyBuYW1lc3BhY2UgV0hMU0wKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmgJKHJldmlzaW9u
IDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEV4cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVk
ZSAiV0hMU0xBZGRyZXNzU3BhY2UuaCIKICNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5oIgor
I2luY2x1ZGUgIldITFNMRGVmYXVsdERlbGV0ZS5oIgogI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5
cGUuaCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgpAQCAtNDIsMTMgKzQzLDQzIEBAIG5hbWVzcGFjZSBBU1QgewogCiBjbGFzcyBFeHByZXNz
aW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKworcHJvdGVjdGVkOgorICAgIH5F
eHByZXNzaW9uKCkgPSBkZWZhdWx0OworCiBwdWJsaWM6Ci0gICAgRXhwcmVzc2lvbihDb2RlTG9j
YXRpb24gY29kZUxvY2F0aW9uKQorCisgICAgZW51bSBjbGFzcyBLaW5kIDogdWludDhfdCB7Cisg
ICAgICAgIEFzc2lnbm1lbnQsCisgICAgICAgIEJvb2xlYW5MaXRlcmFsLAorICAgICAgICBDYWxs
LAorICAgICAgICBDb21tYSwKKyAgICAgICAgRGVyZWZlcmVuY2UsCisgICAgICAgIERvdCwKKyAg
ICAgICAgR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UsCisgICAgICAgIEZsb2F0TGl0ZXJhbCwKKyAg
ICAgICAgSW5kZXgsCisgICAgICAgIEludGVnZXJMaXRlcmFsLAorICAgICAgICBMb2dpY2FsLAor
ICAgICAgICBMb2dpY2FsTm90LAorICAgICAgICBNYWtlQXJyYXlSZWZlcmVuY2UsCisgICAgICAg
IE1ha2VQb2ludGVyLAorICAgICAgICBOdWxsTGl0ZXJhbCwKKyAgICAgICAgUmVhZE1vZGlmeVdy
aXRlLAorICAgICAgICBUZXJuYXJ5LAorICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsLAor
ICAgICAgICBWYXJpYWJsZVJlZmVyZW5jZSwKKyAgICAgICAgRW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsLAorICAgIH07CisKKyAgICBFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBjb2RlTG9jYXRpb24s
IEtpbmQga2luZCkKICAgICAgICAgOiBtX2NvZGVMb2NhdGlvbihjb2RlTG9jYXRpb24pCisgICAg
ICAgICwgbV9raW5kKGtpbmQpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfkV4cHJlc3Np
b24oKSA9IGRlZmF1bHQ7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShFeHByZXNzaW9uJik7Cisg
ICAgc3RhdGljIHZvaWQgZGVzdHJ1Y3QoRXhwcmVzc2lvbiYpOwogCiAgICAgRXhwcmVzc2lvbihj
b25zdCBFeHByZXNzaW9uJikgPSBkZWxldGU7CiAgICAgRXhwcmVzc2lvbihFeHByZXNzaW9uJiYp
ID0gZGVmYXVsdDsKQEAgLTkyLDI3ICsxMjMsMjggQEAgcHVibGljOgogICAgICAgICAgICAgb3Ro
ZXIuc2V0VHlwZUFubm90YXRpb24oVHlwZUFubm90YXRpb24oKnR5cGVBbm5vdGF0aW9uKSk7CiAg
ICAgfQogCi0gICAgdmlydHVhbCBib29sIGlzQXNzaWdubWVudEV4cHJlc3Npb24oKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0Jvb2xlYW5MaXRlcmFsKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNDYWxsRXhwcmVzc2lvbigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQ29tbWFFeHByZXNz
aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNEZXJlZmVy
ZW5jZUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9v
bCBpc0RvdEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBpc0dsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNGbG9hdExpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBpc0luZGV4RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzSW50ZWdlckxpdGVyYWwoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0xvZ2ljYWxFeHByZXNzaW9uKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNMb2dpY2FsTm90RXhwcmVzc2lv
bigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWFrZUFycmF5
UmVmZXJlbmNlRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzTWFrZVBvaW50ZXJFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNOdWxsTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFkTW9kaWZ5V3JpdGVFeHByZXNz
aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNUZXJuYXJ5
RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlz
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpc0VudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgS2luZCBraW5kKCkgY29uc3QgIHsgcmV0dXJuIG1fa2luZDsgfQor
ICAgIGJvb2wgaXNBc3NpZ25tZW50RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9
PSBLaW5kOjpBc3NpZ25tZW50OyB9CisgICAgYm9vbCBpc0Jvb2xlYW5MaXRlcmFsKCkgY29uc3Qg
eyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkJvb2xlYW5MaXRlcmFsOyB9CisgICAgYm9vbCBpc0Nh
bGxFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkNhbGw7IH0KKyAg
ICBib29sIGlzQ29tbWFFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6
OkNvbW1hOyB9CisgICAgYm9vbCBpc0RlcmVmZXJlbmNlRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0
dXJuIGtpbmQoKSA9PSBLaW5kOjpEZXJlZmVyZW5jZTsgfQorICAgIGJvb2wgaXNEb3RFeHByZXNz
aW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkRvdDsgfQorICAgIGJvb2wgaXNH
bG9iYWxWYXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpH
bG9iYWxWYXJpYWJsZVJlZmVyZW5jZTsgfQorICAgIGJvb2wgaXNGbG9hdExpdGVyYWwoKSBjb25z
dCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6RmxvYXRMaXRlcmFsOyB9CisgICAgYm9vbCBpc0lu
ZGV4RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpJbmRleDsgfQor
ICAgIGJvb2wgaXNJbnRlZ2VyTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5k
OjpJbnRlZ2VyTGl0ZXJhbDsgfQorICAgIGJvb2wgaXNMb2dpY2FsRXhwcmVzc2lvbigpIGNvbnN0
IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpMb2dpY2FsOyB9CisgICAgYm9vbCBpc0xvZ2ljYWxO
b3RFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkxvZ2ljYWxOb3Q7
IH0KKyAgICBib29sIGlzTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0
dXJuIGtpbmQoKSA9PSBLaW5kOjpNYWtlQXJyYXlSZWZlcmVuY2U7IH0KKyAgICBib29sIGlzTWFr
ZVBvaW50ZXJFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6Ok1ha2VQ
b2ludGVyOyB9CisgICAgYm9vbCBpc051bGxMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4ga2luZCgp
ID09IEtpbmQ6Ok51bGxMaXRlcmFsOyB9CisgICAgYm9vbCBpc1Byb3BlcnR5QWNjZXNzRXhwcmVz
c2lvbigpIGNvbnN0IHsgcmV0dXJuIGlzRG90RXhwcmVzc2lvbigpIHx8IGlzSW5kZXhFeHByZXNz
aW9uKCk7IH0KKyAgICBib29sIGlzUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbigpIGNvbnN0IHsg
cmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpSZWFkTW9kaWZ5V3JpdGU7IH0KKyAgICBib29sIGlzVGVy
bmFyeUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6VGVybmFyeTsg
fQorICAgIGJvb2wgaXNVbnNpZ25lZEludGVnZXJMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4ga2lu
ZCgpID09IEtpbmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw7IH0KKyAgICBib29sIGlzVmFyaWFi
bGVSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6VmFyaWFibGVSZWZl
cmVuY2U7IH0KKyAgICBib29sIGlzRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKCkgY29uc3QgeyBy
ZXR1cm4ga2luZCgpID09IEtpbmQ6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDsgfQogCiAgICAg
Q29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUxvY2F0aW9u
OyB9CiAgICAgdm9pZCB1cGRhdGVDb2RlTG9jYXRpb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uKSB7
IG1fY29kZUxvY2F0aW9uID0gbG9jYXRpb247IH0KQEAgLTEyMSw2ICsxNTMsNyBAQCBwcml2YXRl
OgogICAgIENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKICAgICBSZWZQdHI8VW5uYW1lZFR5
cGU+IG1fdHlwZTsKICAgICBPcHRpb25hbDxUeXBlQW5ub3RhdGlvbj4gbV90eXBlQW5ub3RhdGlv
bjsKKyAgICBLaW5kIG1fa2luZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFTVApAQCAtMTI5LDYg
KzE2Miw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKEV4cHJlc3Np
b24pCisKICNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFRv
VmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lO
KFdlYkNvcmU6OldITFNMOjpBU1Q6OlRvVmFsdWVUeXBlTmFtZSkgXAogICAgIHN0YXRpYyBib29s
IGlzVHlwZShjb25zdCBXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9u
KSB7IHJldHVybiBleHByZXNzaW9uLnByZWRpY2F0ZTsgfSBcCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZhbGx0aHJv
dWdoLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEZhbGx0aHJvdWdoLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDIxICsz
NywxOSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgRmFs
bHRocm91Z2ggOiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNzIEZhbGx0aHJvdWdoIGZpbmFsIDog
cHVibGljIFN0YXRlbWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgRmFsbHRocm91Z2goQ29kZUxvY2F0aW9uIGxvY2F0aW9uKQotICAgICAgICA6IFN0YXRl
bWVudChsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OkZhbGx0
aHJvdWdoKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5GYWxsdGhyb3VnaCgpID0gZGVm
YXVsdDsKKyAgICB+RmFsbHRocm91Z2goKSA9IGRlZmF1bHQ7CiAKICAgICBGYWxsdGhyb3VnaChj
b25zdCBGYWxsdGhyb3VnaCYpID0gZGVsZXRlOwogICAgIEZhbGx0aHJvdWdoKEZhbGx0aHJvdWdo
JiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNGYWxsdGhyb3VnaCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLQogcHJpdmF0ZToKIH07CiAKQEAgLTYxLDYgKzU5LDggQEAgcHJp
dmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoRmFsbHRocm91Z2gpCisKIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKEZhbGx0aHJvdWdoLCBpc0ZhbGx0aHJv
dWdoKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsLmgJKHJldmlzaW9uIDI0
ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZs
b2F0TGl0ZXJhbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNyArMzcsMTcgQEAgbmFtZXNwYWNl
IFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEZsb2F0TGl0ZXJhbCA6IHB1Ymxp
YyBFeHByZXNzaW9uIHsKK2NsYXNzIEZsb2F0TGl0ZXJhbCBmaW5hbCA6IHB1YmxpYyBFeHByZXNz
aW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBGbG9hdExp
dGVyYWwoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBmbG9hdCB2YWx1ZSkKLSAgICAgICAgOiBFeHBy
ZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkZs
b2F0TGl0ZXJhbCkKICAgICAgICAgLCBtX3R5cGUobG9jYXRpb24sIHZhbHVlKQogICAgICAgICAs
IG1fdmFsdWUodmFsdWUpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfkZsb2F0TGl0ZXJh
bCgpID0gZGVmYXVsdDsKKyAgICB+RmxvYXRMaXRlcmFsKCkgPSBkZWZhdWx0OwogCiAgICAgRmxv
YXRMaXRlcmFsKGNvbnN0IEZsb2F0TGl0ZXJhbCYpID0gZGVsZXRlOwogICAgIEZsb2F0TGl0ZXJh
bChGbG9hdExpdGVyYWwmJikgPSBkZWZhdWx0OwpAQCAtNTgsOCArNTgsNiBAQCBwdWJsaWM6CiAg
ICAgRmxvYXRMaXRlcmFsVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIGZsb2F0
IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCi0gICAgYm9vbCBpc0Zsb2F0TGl0
ZXJhbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIEZsb2F0TGl0ZXJh
bCBjbG9uZSgpIGNvbnN0CiAgICAgewogICAgICAgICBGbG9hdExpdGVyYWwgcmVzdWx0KGNvZGVM
b2NhdGlvbigpLCBtX3ZhbHVlKTsKQEAgLTgxLDYgKzc5LDggQEAgcHJpdmF0ZToKIAogfQogCitE
RUZJTkVfREVGQVVMVF9ERUxFVEUoRmxvYXRMaXRlcmFsKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX1dITFNMX0VYUFJFU1NJT04oRmxvYXRMaXRlcmFsLCBpc0Zsb2F0TGl0ZXJhbCgpKQogCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEZsb2F0TGl0ZXJhbFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuY3BwCShyZXZpc2lvbiAy
NDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xG
bG9hdExpdGVyYWxUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTcgKzM5LDEyIEBAIG5h
bWVzcGFjZSBXSExTTCB7CiBuYW1lc3BhY2UgQVNUIHsKIAogRmxvYXRMaXRlcmFsVHlwZTo6Rmxv
YXRMaXRlcmFsVHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIGZsb2F0IHZhbHVlKQotICAgIDog
bV92YWx1ZSh2YWx1ZSkKKyAgICA6IFJlc29sdmFibGVUeXBlKEtpbmQ6OkZsb2F0TGl0ZXJhbCkK
KyAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgLCBtX3ByZWZlcnJlZFR5cGUoVHlwZVJlZmVyZW5j
ZTo6Y3JlYXRlKGxvY2F0aW9uLCAiZmxvYXQiX3N0ciwgVHlwZUFyZ3VtZW50cygpKSkKIHsKIH0K
IAotRmxvYXRMaXRlcmFsVHlwZTo6fkZsb2F0TGl0ZXJhbFR5cGUoKSA9IGRlZmF1bHQ7Ci0KLUZs
b2F0TGl0ZXJhbFR5cGU6OkZsb2F0TGl0ZXJhbFR5cGUoRmxvYXRMaXRlcmFsVHlwZSYmKSA9IGRl
ZmF1bHQ7Ci0KLUZsb2F0TGl0ZXJhbFR5cGUmIEZsb2F0TGl0ZXJhbFR5cGU6Om9wZXJhdG9yPShG
bG9hdExpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKLQogYm9vbCBGbG9hdExpdGVyYWxUeXBlOjpj
YW5SZXNvbHZlKGNvbnN0IFR5cGUmIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFpczxOYW1lZFR5
cGU+KHR5cGUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRmxvYXRMaXRlcmFsVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuaAkocmV2aXNpb24g
MjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
RmxvYXRMaXRlcmFsVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwyNyArNDAsMjUgQEAgbmFt
ZXNwYWNlIEFTVCB7CiAKIGNsYXNzIFR5cGVSZWZlcmVuY2U7CiAKLWNsYXNzIEZsb2F0TGl0ZXJh
bFR5cGUgOiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUgeworY2xhc3MgRmxvYXRMaXRlcmFsVHlwZSBm
aW5hbCA6IHB1YmxpYyBSZXNvbHZhYmxlVHlwZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgRmxvYXRMaXRlcmFsVHlwZShDb2RlTG9jYXRpb24sIGZsb2F0IHZh
bHVlKTsKIAotICAgIHZpcnR1YWwgfkZsb2F0TGl0ZXJhbFR5cGUoKTsKKyAgICB+RmxvYXRMaXRl
cmFsVHlwZSgpID0gZGVmYXVsdDsKIAogICAgIEZsb2F0TGl0ZXJhbFR5cGUoY29uc3QgRmxvYXRM
aXRlcmFsVHlwZSYpID0gZGVsZXRlOwotICAgIEZsb2F0TGl0ZXJhbFR5cGUoRmxvYXRMaXRlcmFs
VHlwZSYmKTsKKyAgICBGbG9hdExpdGVyYWxUeXBlKEZsb2F0TGl0ZXJhbFR5cGUmJikgPSBkZWZh
dWx0OwogCiAgICAgRmxvYXRMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KGNvbnN0IEZsb2F0TGl0ZXJh
bFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBGbG9hdExpdGVyYWxUeXBlJiBvcGVyYXRvcj0oRmxvYXRM
aXRlcmFsVHlwZSYmKTsKLQotICAgIGJvb2wgaXNGbG9hdExpdGVyYWxUeXBlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIEZsb2F0TGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShG
bG9hdExpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKIAogICAgIGZsb2F0IHZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZTsgfQogCiAgICAgVHlwZVJlZmVyZW5jZSYgcHJlZmVycmVkVHlwZSgp
IHsgcmV0dXJuIG1fcHJlZmVycmVkVHlwZTsgfQogCi0gICAgYm9vbCBjYW5SZXNvbHZlKGNvbnN0
IFR5cGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChjb25z
dCBVbm5hbWVkVHlwZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY2FuUmVzb2x2ZShjb25z
dCBUeXBlJikgY29uc3Q7CisgICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1l
ZFR5cGUmKSBjb25zdDsKIAogICAgIEZsb2F0TGl0ZXJhbFR5cGUgY2xvbmUoKSBjb25zdDsKIApA
QCAtNzcsNiArNzUsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShG
bG9hdExpdGVyYWxUeXBlKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1JFU09MVkFC
TEVfVFlQRShGbG9hdExpdGVyYWxUeXBlLCBpc0Zsb2F0TGl0ZXJhbFR5cGUoKSkKIAogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JM
b29wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRm9yTG9vcC5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JMb29wLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDExICs0MiwxMSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAot
Y2xhc3MgRm9yTG9vcCA6IHB1YmxpYyBTdGF0ZW1lbnQgeworY2xhc3MgRm9yTG9vcCBmaW5hbCA6
IHB1YmxpYyBTdGF0ZW1lbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIEZvckxvb3AoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBWYXJpYW50PFVuaXF1ZVJlZjxT
dGF0ZW1lbnQ+LCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiYgaW5pdGlhbGl6YXRpb24sIHN0ZDo6
dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIGNvbmRpdGlvbiwgc3RkOjp1bmlxdWVfcHRyPEV4cHJl
c3Npb24+JiYgaW5jcmVtZW50LCBVbmlxdWVSZWY8U3RhdGVtZW50PiYmIGJvZHkpCi0gICAgICAg
IDogU3RhdGVtZW50KGxvY2F0aW9uKQorICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2lu
ZDo6Rm9yTG9vcCkKICAgICAgICAgLCBtX2luaXRpYWxpemF0aW9uKFdURk1vdmUoaW5pdGlhbGl6
YXRpb24pKQogICAgICAgICAsIG1fY29uZGl0aW9uKFdURk1vdmUoY29uZGl0aW9uKSkKICAgICAg
ICAgLCBtX2luY3JlbWVudChXVEZNb3ZlKGluY3JlbWVudCkpCkBAIC01NCwxNSArNTQsMTEgQEAg
cHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5Gb3JMb29wKCkKLSAgICB7Ci0g
ICAgfQorICAgIH5Gb3JMb29wKCkgPSBkZWZhdWx0OwogCiAgICAgRm9yTG9vcChjb25zdCBGb3JM
b29wJikgPSBkZWxldGU7CiAgICAgRm9yTG9vcChGb3JMb29wJiYpID0gZGVmYXVsdDsKIAotICAg
IGJvb2wgaXNGb3JMb29wKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAg
VmFyaWFudDxVbmlxdWVSZWY8U3RhdGVtZW50PiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+PiYgaW5p
dGlhbGl6YXRpb24oKSB7IHJldHVybiBtX2luaXRpYWxpemF0aW9uOyB9CiAgICAgRXhwcmVzc2lv
biogY29uZGl0aW9uKCkgeyByZXR1cm4gbV9jb25kaXRpb24uZ2V0KCk7IH0KICAgICBFeHByZXNz
aW9uKiBpbmNyZW1lbnQoKSB7IHJldHVybiBtX2luY3JlbWVudC5nZXQoKTsgfQpAQCAtODEsNiAr
NzcsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShGb3JMb29wKQor
CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChGb3JMb29wLCBpc0Zvckxv
b3AoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEdsb2JhbFZhcmlhYmxlUmVm
ZXJlbmNlLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDE5ICszNywxOSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNU
IHsKIAotY2xhc3MgR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UgOiBwdWJsaWMgRXhwcmVzc2lvbiB7
CitjbGFzcyBHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9u
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHbG9iYWxWYXJp
YWJsZVJlZmVyZW5jZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9u
PiYmIGJhc2UsIFN0cnVjdHVyZUVsZW1lbnQqIHN0cnVjdEZpZWxkKQotICAgICAgICA6IEV4cHJl
c3Npb24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6R2xv
YmFsVmFyaWFibGVSZWZlcmVuY2UpCiAgICAgICAgICwgbV9iYXNlKFdURk1vdmUoYmFzZSkpCiAg
ICAgICAgICwgbV9zdHJ1Y3RGaWVsZCgqc3RydWN0RmllbGQpCiAgICAgewogICAgICAgICBBU1NF
UlQoc3RydWN0RmllbGQpOwogICAgIH0KIAotICAgIHZpcnR1YWwgfkdsb2JhbFZhcmlhYmxlUmVm
ZXJlbmNlKCkgPSBkZWZhdWx0OwotICAgIGJvb2wgaXNHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB+R2xvYmFsVmFyaWFibGVSZWZl
cmVuY2UoKSA9IGRlZmF1bHQ7CisgICAgCiAgICAgU3RydWN0dXJlRWxlbWVudCYgc3RydWN0Rmll
bGQoKSB7IHJldHVybiBtX3N0cnVjdEZpZWxkOyB9CiAKICAgICBFeHByZXNzaW9uJiBiYXNlKCkg
eyByZXR1cm4gbV9iYXNlLmdldCgpOyB9CkBAIC02NSw2ICs2NSw4IEBAIHByaXZhdGU6CiAKIH0K
IAorREVGSU5FX0RFRkFVTFRfREVMRVRFKEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKQorCiBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oR2xvYmFsVmFyaWFibGVSZWZlcmVu
Y2UsIGlzR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJZlN0YXRlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTElm
U3RhdGVtZW50LmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTElmU3RhdGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDI0ICszOSwyMiBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xh
c3MgSWZTdGF0ZW1lbnQgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNzIElmU3RhdGVtZW50IGZp
bmFsIDogcHVibGljIFN0YXRlbWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgSWZTdGF0ZW1lbnQoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8
RXhwcmVzc2lvbj4mJiBjb25kaXRpb25hbCwgVW5pcXVlUmVmPFN0YXRlbWVudD4mJiBib2R5LCBz
dGQ6OnVuaXF1ZV9wdHI8U3RhdGVtZW50PiYmIGVsc2VCb2R5KQotICAgICAgICA6IFN0YXRlbWVu
dChsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OklmKQogICAg
ICAgICAsIG1fY29uZGl0aW9uYWwoV1RGTW92ZShjb25kaXRpb25hbCkpCiAgICAgICAgICwgbV9i
b2R5KFdURk1vdmUoYm9keSkpCiAgICAgICAgICwgbV9lbHNlQm9keShXVEZNb3ZlKGVsc2VCb2R5
KSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+SWZTdGF0ZW1lbnQoKSA9IGRlZmF1bHQ7
CisgICAgfklmU3RhdGVtZW50KCkgPSBkZWZhdWx0OwogCiAgICAgSWZTdGF0ZW1lbnQoY29uc3Qg
SWZTdGF0ZW1lbnQmKSA9IGRlbGV0ZTsKICAgICBJZlN0YXRlbWVudChJZlN0YXRlbWVudCYmKSA9
IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzSWZTdGF0ZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNzaW9uJiBjb25kaXRpb25hbCgpIHsgcmV0dXJuIG1f
Y29uZGl0aW9uYWw7IH0KICAgICBTdGF0ZW1lbnQmIGJvZHkoKSB7IHJldHVybiBtX2JvZHk7IH0K
ICAgICBTdGF0ZW1lbnQqIGVsc2VCb2R5KCkgeyByZXR1cm4gbV9lbHNlQm9keS5nZXQoKTsgfQpA
QCAtNzMsNiArNzEsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShJ
ZlN0YXRlbWVudCkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoSWZT
dGF0ZW1lbnQsIGlzSWZTdGF0ZW1lbnQoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbmRleEV4cHJlc3Npb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbmRl
eEV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW5kZXhFeHByZXNzaW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDMzICszOCwzMSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsK
IAotY2xhc3MgSW5kZXhFeHByZXNzaW9uIDogcHVibGljIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
biB7CitjbGFzcyBJbmRleEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgUHJvcGVydHlBY2Nlc3NF
eHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBJ
bmRleEV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lv
bj4mJiBiYXNlLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBpbmRleCkKLSAgICAgICAgOiBQcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24obG9jYXRpb24sIFdURk1vdmUoYmFzZSkpCisgICAgICAgIDog
UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpJbmRleCwgV1RGTW92ZShi
YXNlKSkKICAgICAgICAgLCBtX2luZGV4KFdURk1vdmUoaW5kZXgpKQogICAgIHsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIH5JbmRleEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfkluZGV4RXhw
cmVzc2lvbigpID0gZGVmYXVsdDsKIAogICAgIEluZGV4RXhwcmVzc2lvbihjb25zdCBJbmRleEV4
cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBJbmRleEV4cHJlc3Npb24oSW5kZXhFeHByZXNzaW9u
JiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNJbmRleEV4cHJlc3Npb24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBTdHJpbmcgZ2V0dGVyRnVuY3Rpb25OYW1lKCkg
Y29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJpbmcgZ2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiAib3BlcmF0b3JbXSJfc3RyOwogICAgIH0KIAotICAgIFN0cmlu
ZyBzZXR0ZXJGdW5jdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZQorICAgIFN0cmluZyBzZXR0ZXJG
dW5jdGlvbk5hbWUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICJvcGVyYXRvcltdPSJf
c3RyOwogICAgIH0KIAotICAgIFN0cmluZyBhbmRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0IG92ZXJy
aWRlCisgICAgU3RyaW5nIGFuZGVyRnVuY3Rpb25OYW1lKCkgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiAib3BlcmF0b3ImW10iX3N0cjsKICAgICB9CkBAIC04Miw2ICs4MCw4IEBAIHByaXZh
dGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKEluZGV4RXhwcmVzc2lvbikKKwogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEluZGV4RXhwcmVzc2lvbiwgaXNJ
bmRleEV4cHJlc3Npb24oKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFs
LmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDE3ICsz
NywxNyBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgSW50
ZWdlckxpdGVyYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBJbnRlZ2VyTGl0ZXJhbCBm
aW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBJbnRlZ2VyTGl0ZXJhbChDb2RlTG9jYXRpb24gbG9jYXRpb24sIGludCB2
YWx1ZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Np
b24obG9jYXRpb24sIEtpbmQ6OkludGVnZXJMaXRlcmFsKQogICAgICAgICAsIG1fdHlwZShsb2Nh
dGlvbiwgdmFsdWUpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB+SW50ZWdlckxpdGVyYWwoKSA9IGRlZmF1bHQ7CisgICAgfkludGVnZXJMaXRl
cmFsKCkgPSBkZWZhdWx0OwogCiAgICAgSW50ZWdlckxpdGVyYWwoY29uc3QgSW50ZWdlckxpdGVy
YWwmKSA9IGRlbGV0ZTsKICAgICBJbnRlZ2VyTGl0ZXJhbChJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRl
ZmF1bHQ7CkBAIC01OCw4ICs1OCw2IEBAIHB1YmxpYzoKICAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUm
IHR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0KICAgICBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlOyB9CiAKLSAgICBib29sIGlzSW50ZWdlckxpdGVyYWwoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBJbnRlZ2VyTGl0ZXJhbCBjbG9uZSgpIGNvbnN0CiAg
ICAgewogICAgICAgICBJbnRlZ2VyTGl0ZXJhbCByZXN1bHQoY29kZUxvY2F0aW9uKCksIG1fdmFs
dWUpOwpAQCAtODMsNiArODEsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RF
TEVURShJbnRlZ2VyTGl0ZXJhbCkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBS
RVNTSU9OKEludGVnZXJMaXRlcmFsLCBpc0ludGVnZXJMaXRlcmFsKCkpCiAKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxp
dGVyYWxUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwCShyZXZpc2lvbiAyNDg0MDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2Vy
TGl0ZXJhbFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxNyArNDAsMTIgQEAgbmFtZXNw
YWNlIFdITFNMIHsKIG5hbWVzcGFjZSBBU1QgewogCiBJbnRlZ2VyTGl0ZXJhbFR5cGU6OkludGVn
ZXJMaXRlcmFsVHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIGludCB2YWx1ZSkKLSAgICA6IG1f
dmFsdWUodmFsdWUpCisgICAgOiBSZXNvbHZhYmxlVHlwZShLaW5kOjpJbnRlZ2VyTGl0ZXJhbCkK
KyAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgLCBtX3ByZWZlcnJlZFR5cGUoVHlwZVJlZmVyZW5j
ZTo6Y3JlYXRlKGxvY2F0aW9uLCAiaW50Il9zdHIsIFR5cGVBcmd1bWVudHMoKSkpCiB7CiB9CiAK
LUludGVnZXJMaXRlcmFsVHlwZTo6fkludGVnZXJMaXRlcmFsVHlwZSgpID0gZGVmYXVsdDsKLQot
SW50ZWdlckxpdGVyYWxUeXBlOjpJbnRlZ2VyTGl0ZXJhbFR5cGUoSW50ZWdlckxpdGVyYWxUeXBl
JiYpID0gZGVmYXVsdDsKLQotSW50ZWdlckxpdGVyYWxUeXBlJiBJbnRlZ2VyTGl0ZXJhbFR5cGU6
Om9wZXJhdG9yPShJbnRlZ2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwotCiBib29sIEludGVn
ZXJMaXRlcmFsVHlwZTo6Y2FuUmVzb2x2ZShjb25zdCBUeXBlJiB0eXBlKSBjb25zdAogewogICAg
IGlmICghaXM8TmFtZWRUeXBlPih0eXBlKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRl
cmFsVHlwZS5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNDAsMjcgKzQwLDI1IEBAIG5hbWVzcGFjZSBBU1QgewogCiBjbGFzcyBUeXBlUmVmZXJlbmNl
OwogCi1jbGFzcyBJbnRlZ2VyTGl0ZXJhbFR5cGUgOiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUgewor
Y2xhc3MgSW50ZWdlckxpdGVyYWxUeXBlIGZpbmFsIDogcHVibGljIFJlc29sdmFibGVUeXBlIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBJbnRlZ2VyTGl0ZXJh
bFR5cGUoQ29kZUxvY2F0aW9uLCBpbnQgdmFsdWUpOwogCi0gICAgdmlydHVhbCB+SW50ZWdlckxp
dGVyYWxUeXBlKCk7CisgICAgfkludGVnZXJMaXRlcmFsVHlwZSgpID0gZGVmYXVsdDsKIAogICAg
IEludGVnZXJMaXRlcmFsVHlwZShjb25zdCBJbnRlZ2VyTGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsK
LSAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUoSW50ZWdlckxpdGVyYWxUeXBlJiYpOworICAgIEludGVn
ZXJMaXRlcmFsVHlwZShJbnRlZ2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwogCiAgICAgSW50
ZWdlckxpdGVyYWxUeXBlJiBvcGVyYXRvcj0oY29uc3QgSW50ZWdlckxpdGVyYWxUeXBlJikgPSBk
ZWxldGU7Ci0gICAgSW50ZWdlckxpdGVyYWxUeXBlJiBvcGVyYXRvcj0oSW50ZWdlckxpdGVyYWxU
eXBlJiYpOwotCi0gICAgYm9vbCBpc0ludGVnZXJMaXRlcmFsVHlwZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KKyAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShJbnRl
Z2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwogCiAgICAgaW50IHZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZTsgfQogCiAgICAgVHlwZVJlZmVyZW5jZSYgcHJlZmVycmVkVHlwZSgpIHsg
cmV0dXJuIG1fcHJlZmVycmVkVHlwZTsgfQogCi0gICAgYm9vbCBjYW5SZXNvbHZlKGNvbnN0IFR5
cGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChjb25zdCBV
bm5hbWVkVHlwZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBU
eXBlJikgY29uc3Q7CisgICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5
cGUmKSBjb25zdDsKIAogICAgIEludGVnZXJMaXRlcmFsVHlwZSBjbG9uZSgpIGNvbnN0OwogCkBA
IC03Nyw2ICs3NSw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKElu
dGVnZXJMaXRlcmFsVHlwZSkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9SRVNPTFZB
QkxFX1RZUEUoSW50ZWdlckxpdGVyYWxUeXBlLCBpc0ludGVnZXJMaXRlcmFsVHlwZSgpKQogCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TExvZ2ljYWxFeHByZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbEV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4
NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9n
aWNhbEV4cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3Bh
Y2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgTG9naWNhbEV4cHJlc3Npb24g
OiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBMb2dpY2FsRXhwcmVzc2lvbiBmaW5hbCA6IHB1
YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsKQEAgLTQ2LDIyICs0NiwyMCBAQCBwdWJs
aWM6CiAgICAgfTsKIAogICAgIExvZ2ljYWxFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlv
biwgVHlwZSB0eXBlLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBsZWZ0LCBVbmlxdWVSZWY8RXhw
cmVzc2lvbj4mJiByaWdodCkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAg
ICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkxvZ2ljYWwpCiAgICAgICAgICwgbV90eXBl
KHR5cGUpCiAgICAgICAgICwgbV9sZWZ0KFdURk1vdmUobGVmdCkpCiAgICAgICAgICwgbV9yaWdo
dChXVEZNb3ZlKHJpZ2h0KSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+TG9naWNhbEV4
cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfkxvZ2ljYWxFeHByZXNzaW9uKCkgPSBkZWZhdWx0
OwogCiAgICAgTG9naWNhbEV4cHJlc3Npb24oY29uc3QgTG9naWNhbEV4cHJlc3Npb24mKSA9IGRl
bGV0ZTsKICAgICBMb2dpY2FsRXhwcmVzc2lvbihMb2dpY2FsRXhwcmVzc2lvbiYmKSA9IGRlZmF1
bHQ7CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAotICAgIGJv
b2wgaXNMb2dpY2FsRXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
LQogICAgIEV4cHJlc3Npb24mIGxlZnQoKSB7IHJldHVybiBtX2xlZnQ7IH0KICAgICBFeHByZXNz
aW9uJiByaWdodCgpIHsgcmV0dXJuIG1fcmlnaHQ7IH0KIApAQCAtNzcsNiArNzUsOCBAQCBwcml2
YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShMb2dpY2FsRXhwcmVzc2lvbikKKwog
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKExvZ2ljYWxFeHByZXNzaW9u
LCBpc0xvZ2ljYWxFeHByZXNzaW9uKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xM
b2dpY2FsTm90RXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNywyMiArMzcsMjAgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFt
ZXNwYWNlIEFTVCB7CiAKLWNsYXNzIExvZ2ljYWxOb3RFeHByZXNzaW9uIDogcHVibGljIEV4cHJl
c3Npb24geworY2xhc3MgTG9naWNhbE5vdEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVz
c2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTG9naWNh
bE5vdEV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lv
bj4mJiBvcGVyYW5kKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgICAgIDog
RXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6TG9naWNhbE5vdCkKICAgICAgICAgLCBtX29wZXJh
bmQoV1RGTW92ZShvcGVyYW5kKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+TG9naWNh
bE5vdEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfkxvZ2ljYWxOb3RFeHByZXNzaW9uKCkg
PSBkZWZhdWx0OwogCiAgICAgTG9naWNhbE5vdEV4cHJlc3Npb24oY29uc3QgTG9naWNhbE5vdEV4
cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBMb2dpY2FsTm90RXhwcmVzc2lvbihMb2dpY2FsTm90
RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzTG9naWNhbE5vdEV4cHJlc3Np
b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNzaW9uJiBv
cGVyYW5kKCkgeyByZXR1cm4gbV9vcGVyYW5kOyB9CiAKIHByaXZhdGU6CkBAIC02NSw2ICs2Myw4
IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKExvZ2ljYWxOb3RFeHBy
ZXNzaW9uKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oTG9naWNh
bE5vdEV4cHJlc3Npb24sIGlzTG9naWNhbE5vdEV4cHJlc3Npb24oKSkKIAogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlQXJyYXlS
ZWZlcmVuY2VFeHByZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oCShy
ZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDIzICszOCwyMSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAot
Y2xhc3MgTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsK
K2NsYXNzIE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVz
c2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTWFrZUFy
cmF5UmVmZXJlbmNlRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxF
eHByZXNzaW9uPiYmIGxlZnRWYWx1ZSwgQWRkcmVzc0VzY2FwZU1vZGUgYWRkcmVzc0VzY2FwZU1v
ZGUpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9u
KGxvY2F0aW9uLCBLaW5kOjpNYWtlQXJyYXlSZWZlcmVuY2UpCiAgICAgICAgICwgbV9sZWZ0VmFs
dWUoV1RGTW92ZShsZWZ0VmFsdWUpKQogICAgICAgICAsIG1fYWRkcmVzc0VzY2FwZU1vZGUoYWRk
cmVzc0VzY2FwZU1vZGUpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfk1ha2VBcnJheVJl
ZmVyZW5jZUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfk1ha2VBcnJheVJlZmVyZW5jZUV4
cHJlc3Npb24oKSA9IGRlZmF1bHQ7CiAKICAgICBNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9u
KGNvbnN0IE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBNYWtl
QXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mJikg
PSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc01ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNzaW9uJiBsZWZ0VmFs
dWUoKSB7IHJldHVybiBtX2xlZnRWYWx1ZTsgfQogCiAgICAgYm9vbCBtaWdodEVzY2FwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYWRkcmVzc0VzY2FwZU1vZGUgPT0gQWRkcmVzc0VzY2FwZU1vZGU6OkVz
Y2FwZXM7IH0KQEAgLTcwLDYgKzY4LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVM
VF9ERUxFVEUoTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbikKKwogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24sIGlz
TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbigpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlUG9pbnRlckV4cHJl
c3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjMgKzM4LDIxIEBAIG5hbWVzcGFjZSBXSExT
TCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBNYWtlUG9pbnRlckV4cHJlc3Npb24gOiBw
dWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBNYWtlUG9pbnRlckV4cHJlc3Npb24gZmluYWwgOiBw
dWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgTWFrZVBvaW50ZXJFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVl
UmVmPEV4cHJlc3Npb24+JiYgbGVmdFZhbHVlLCBBZGRyZXNzRXNjYXBlTW9kZSBhZGRyZXNzRXNj
YXBlTW9kZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJl
c3Npb24obG9jYXRpb24sIEtpbmQ6Ok1ha2VQb2ludGVyKQogICAgICAgICAsIG1fbGVmdFZhbHVl
KFdURk1vdmUobGVmdFZhbHVlKSkKICAgICAgICAgLCBtX2FkZHJlc3NFc2NhcGVNb2RlKGFkZHJl
c3NFc2NhcGVNb2RlKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5NYWtlUG9pbnRlckV4
cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfk1ha2VQb2ludGVyRXhwcmVzc2lvbigpID0gZGVm
YXVsdDsKIAogICAgIE1ha2VQb2ludGVyRXhwcmVzc2lvbihjb25zdCBNYWtlUG9pbnRlckV4cHJl
c3Npb24mKSA9IGRlbGV0ZTsKICAgICBNYWtlUG9pbnRlckV4cHJlc3Npb24oTWFrZVBvaW50ZXJF
eHByZXNzaW9uJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNNYWtlUG9pbnRlckV4cHJlc3Np
b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNzaW9uJiBs
ZWZ0VmFsdWUoKSB7IHJldHVybiBtX2xlZnRWYWx1ZTsgfQogCiAgICAgYm9vbCBtaWdodEVzY2Fw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWRkcmVzc0VzY2FwZU1vZGUgPT0gQWRkcmVzc0VzY2FwZU1v
ZGU6OkVzY2FwZXM7IH0KQEAgLTcwLDYgKzY4LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVf
REVGQVVMVF9ERUxFVEUoTWFrZVBvaW50ZXJFeHByZXNzaW9uKQorCiBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dITFNMX0VYUFJFU1NJT04oTWFrZVBvaW50ZXJFeHByZXNzaW9uLCBpc01ha2VQb2lu
dGVyRXhwcmVzc2lvbigpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVkVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVkVHlwZS5oCShyZXZpc2lv
biAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xOYW1lZFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTUgKzQwLDE4IEBAIG5hbWVzcGFj
ZSBBU1QgewogCiBjbGFzcyBOYW1lZFR5cGUgOiBwdWJsaWMgVHlwZSB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CisKK3Byb3RlY3RlZDoKKyAgICB+TmFtZWRUeXBlKCkgPSBkZWZhdWx0
OworCiBwdWJsaWM6Ci0gICAgTmFtZWRUeXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5n
JiYgbmFtZSkKLSAgICAgICAgOiBtX2NvZGVMb2NhdGlvbihsb2NhdGlvbikKKyAgICBOYW1lZFR5
cGUoS2luZCBraW5kLCBDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmluZyYmIG5hbWUpCisgICAg
ICAgIDogVHlwZShraW5kKQorICAgICAgICAsIG1fY29kZUxvY2F0aW9uKGxvY2F0aW9uKQogICAg
ICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IH5OYW1lZFR5cGUoKSA9IGRlZmF1bHQ7Ci0KICAgICBOYW1lZFR5cGUoY29uc3QgTmFtZWRUeXBl
JikgPSBkZWxldGU7CiAgICAgTmFtZWRUeXBlKE5hbWVkVHlwZSYmKSA9IGRlZmF1bHQ7CiAKQEAg
LTU3LDE2ICs2MCwxMCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcmIG5hbWUoKSB7IHJldHVybiBt
X25hbWU7IH0KIAotICAgIGJvb2wgaXNOYW1lZFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVHlwZURlZmluaXRpb24oKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1N0cnVjdHVyZURlZmluaXRpb24oKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0VudW1lcmF0aW9uRGVm
aW5pdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTmF0
aXZlVHlwZURlY2xhcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1
YWwgY29uc3QgVHlwZSYgdW5pZnlOb2RlKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KLSAgICB2
aXJ0dWFsIFR5cGUmIHVuaWZ5Tm9kZSgpIHsgcmV0dXJuICp0aGlzOyB9CiAKIHByaXZhdGU6Cisg
ICAgZnJpZW5kIGNsYXNzIFR5cGU7CisgICAgVHlwZSYgdW5pZnlOb2RlSW1wbCgpIHsgcmV0dXJu
ICp0aGlzOyB9CiAgICAgQ29kZUxvY2F0aW9uIG1fY29kZUxvY2F0aW9uOwogICAgIFN0cmluZyBt
X25hbWU7CiB9OwpAQCAtNzcsNiArNzQsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZB
VUxUX0RFTEVURShOYW1lZFR5cGUpCisKICNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19X
SExTTF9OQU1FRF9UWVBFKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCiBTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldITFNMOjpBU1Q6OlRvVmFsdWVUeXBlTmFtZSkg
XAogICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXSExTTDo6QVNUOjpOYW1l
ZFR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGUucHJlZGljYXRlOyB9IFwKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVjbGFy
YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMjIgKzQwLDIwIEBAIG5hbWVzcGFjZSBXSExT
TCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBOYXRpdmVUeXBlRGVjbGFyYXRpb24gOiBw
dWJsaWMgTmFtZWRUeXBlIHsKK2NsYXNzIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbiBmaW5hbCA6IHB1
YmxpYyBOYW1lZFR5cGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmluZyYm
IG5hbWUsIFR5cGVBcmd1bWVudHMmJiB0eXBlQXJndW1lbnRzKQotICAgICAgICA6IE5hbWVkVHlw
ZShsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSkKKyAgICAgICAgOiBOYW1lZFR5cGUoS2luZDo6TmF0
aXZlVHlwZURlY2xhcmF0aW9uLCBsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSkKICAgICAgICAgLCBt
X3R5cGVBcmd1bWVudHMoV1RGTW92ZSh0eXBlQXJndW1lbnRzKSkKICAgICB7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB+TmF0aXZlVHlwZURlY2xhcmF0aW9uKCkgPSBkZWZhdWx0OworICAgIH5OYXRp
dmVUeXBlRGVjbGFyYXRpb24oKSA9IGRlZmF1bHQ7CiAKICAgICBOYXRpdmVUeXBlRGVjbGFyYXRp
b24oY29uc3QgTmF0aXZlVHlwZURlY2xhcmF0aW9uJikgPSBkZWxldGU7CiAgICAgTmF0aXZlVHlw
ZURlY2xhcmF0aW9uKE5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYmKSA9IGRlZmF1bHQ7CiAKLSAgICBi
b29sIGlzTmF0aXZlVHlwZURlY2xhcmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQotCiAgICAgVHlwZUFyZ3VtZW50cyYgdHlwZUFyZ3VtZW50cygpIHsgcmV0dXJuIG1fdHlw
ZUFyZ3VtZW50czsgfQogCiAgICAgYm9vbCBpc0ludCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbnQ7
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51
bGxMaXRlcmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMTnVsbExpdGVyYWwuaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVsbExpdGVyYWwuaAkod29y
a2luZyBjb3B5KQpAQCAtMzcsMTUgKzM3LDE1IEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVz
cGFjZSBBU1QgewogCi1jbGFzcyBOdWxsTGl0ZXJhbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK2Ns
YXNzIE51bGxMaXRlcmFsIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE51bGxMaXRlcmFsKENvZGVMb2NhdGlvbiBs
b2NhdGlvbikKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJl
c3Npb24obG9jYXRpb24sIEtpbmQ6Ok51bGxMaXRlcmFsKQogICAgIHsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIH5OdWxsTGl0ZXJhbCgpID0gZGVmYXVsdDsKKyAgICB+TnVsbExpdGVyYWwoKSA9IGRl
ZmF1bHQ7CiAKICAgICBOdWxsTGl0ZXJhbChjb25zdCBOdWxsTGl0ZXJhbCYpID0gZGVsZXRlOwog
ICAgIE51bGxMaXRlcmFsKE51bGxMaXRlcmFsJiYpID0gZGVmYXVsdDsKQEAgLTU1LDggKzU1LDYg
QEAgcHVibGljOgogCiAgICAgTnVsbExpdGVyYWxUeXBlJiB0eXBlKCkgeyByZXR1cm4gbV90eXBl
OyB9CiAKLSAgICBib29sIGlzTnVsbExpdGVyYWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9Ci0KICAgICBOdWxsTGl0ZXJhbCBjbG9uZSgpIGNvbnN0CiAgICAgewogICAgICAgICBh
dXRvIHJlc3VsdCA9IE51bGxMaXRlcmFsKGNvZGVMb2NhdGlvbigpKTsKQEAgLTc2LDYgKzc0LDgg
QEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoTnVsbExpdGVyYWwpCisK
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihOdWxsTGl0ZXJhbCwgaXNO
dWxsTGl0ZXJhbCgpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRlcmFsVHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRlcmFsVHlwZS5o
CShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xOdWxsTGl0ZXJhbFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTIgKzM2
LDE0IEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBOdWxs
TGl0ZXJhbFR5cGUgOiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUgeworY2xhc3MgTnVsbExpdGVyYWxU
eXBlIGZpbmFsIDogcHVibGljIFJlc29sdmFibGVUeXBlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBOdWxsTGl0ZXJhbFR5cGUoKSA9IGRlZmF1bHQ7CisgICAg
TnVsbExpdGVyYWxUeXBlKCkKKyAgICAgICAgOiBSZXNvbHZhYmxlVHlwZShLaW5kOjpOdWxsTGl0
ZXJhbCkKKyAgICB7IH0KIAotICAgIHZpcnR1YWwgfk51bGxMaXRlcmFsVHlwZSgpID0gZGVmYXVs
dDsKKyAgICB+TnVsbExpdGVyYWxUeXBlKCkgPSBkZWZhdWx0OwogCiAgICAgTnVsbExpdGVyYWxU
eXBlKGNvbnN0IE51bGxMaXRlcmFsVHlwZSYpID0gZGVsZXRlOwogICAgIE51bGxMaXRlcmFsVHlw
ZShOdWxsTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwpAQCAtNDksMTAgKzUxLDggQEAgcHVibGlj
OgogICAgIE51bGxMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KGNvbnN0IE51bGxMaXRlcmFsVHlwZSYp
ID0gZGVsZXRlOwogICAgIE51bGxMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KE51bGxMaXRlcmFsVHlw
ZSYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzTnVsbExpdGVyYWxUeXBlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgYm9vbCBjYW5SZXNvbHZlKGNvbnN0IFR5cGUm
KSBjb25zdCBvdmVycmlkZTsKLSAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChjb25zdCBVbm5h
bWVkVHlwZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBUeXBl
JikgY29uc3Q7CisgICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUm
KSBjb25zdDsKIAogcHJpdmF0ZToKIH07CkBAIC02Myw2ICs2Myw4IEBAIHByaXZhdGU6CiAKIH0K
IAorREVGSU5FX0RFRkFVTFRfREVMRVRFKE51bGxMaXRlcmFsVHlwZSkKKwogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19XSExTTF9SRVNPTFZBQkxFX1RZUEUoTnVsbExpdGVyYWxUeXBlLCBpc051bGxM
aXRlcmFsVHlwZSgpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFBvaW50ZXJUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUG9pbnRlclR5cGUuaAkocmV2aXNp
b24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMUG9pbnRlclR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVu
YXRlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQ2LDE3ICs0NywxOCBAQCBjbGFzcyBQb2ludGVyVHlwZSBmaW5hbCA6IHB1Ymxp
YyBSZWZlcmVuCiAgICAgdXNpbmcgQmFzZSA9IFJlZmVyZW5jZVR5cGU7CiAKICAgICBQb2ludGVy
VHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIEFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2UsIFJl
ZjxVbm5hbWVkVHlwZT4gZWxlbWVudFR5cGUpCi0gICAgICAgIDogQmFzZShsb2NhdGlvbiwgYWRk
cmVzc1NwYWNlLCBXVEZNb3ZlKGVsZW1lbnRUeXBlKSwgS2luZDo6UG9pbnRlclR5cGUpCisgICAg
ICAgIDogQmFzZShsb2NhdGlvbiwgYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKGVsZW1lbnRUeXBlKSwg
S2luZDo6UG9pbnRlcikKICAgICB7CiAgICAgfQogCiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxQ
b2ludGVyVHlwZT4gY3JlYXRlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgQWRkcmVzc1NwYWNlIGFk
ZHJlc3NTcGFjZSwgUmVmPFVubmFtZWRUeXBlPiBlbGVtZW50VHlwZSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFBvaW50ZXJUeXBlKGxvY2F0aW9uLCBhZGRyZXNzU3BhY2Us
IFdURk1vdmUoZWxlbWVudFR5cGUpKSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYo
Km5ldyBQb2ludGVyVHlwZShsb2NhdGlvbiwgYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKGVsZW1lbnRU
eXBlKSkpOworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHZpcnR1YWwgflBv
aW50ZXJUeXBlKCkgPSBkZWZhdWx0OworICAgIH5Qb2ludGVyVHlwZSgpID0gZGVmYXVsdDsKIAog
ICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKQEAgLTY4LDcgKzcwLDcgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gYWRkcmVzc1NwYWNlKCkgPT0gb3RoZXIuYWRkcmVzc1NwYWNlKCkg
JiYgZWxlbWVudFR5cGUoKSA9PSBvdGhlci5lbGVtZW50VHlwZSgpOwogICAgIH0KIAotICAgIFN0
cmluZyB0b1N0cmluZygpIGNvbnN0IG92ZXJyaWRlCisgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKGVsZW1lbnRUeXBlKCkudG9TdHJp
bmcoKSwgJyonKTsKICAgICB9CkBAIC04MCw2ICs4Miw4IEBAIHB1YmxpYzoKIAogfQogCitERUZJ
TkVfREVGQVVMVF9ERUxFVEUoUG9pbnRlclR5cGUpCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
V0hMU0xfVU5OQU1FRF9UWVBFKFBvaW50ZXJUeXBlLCBpc1BvaW50ZXJUeXBlKCkpCiAKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgJKHJl
dmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwy
MyArNDAsMjIgQEAgbmFtZXNwYWNlIEFTVCB7CiAKIGNsYXNzIFByb3BlcnR5QWNjZXNzRXhwcmVz
c2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K3Byb3RlY3RlZDoKKyAgICB+UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKCkgPSBkZWZhdWx0Owor
CiBwdWJsaWM6Ci0gICAgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2Nh
dGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgYmFzZSkKLSAgICAgICAgOiBFeHByZXNzaW9u
KGxvY2F0aW9uKQorICAgIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9j
YXRpb24sIEtpbmQga2luZCwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgYmFzZSkKKyAgICAgICAg
OiBFeHByZXNzaW9uKGxvY2F0aW9uLCBraW5kKQogICAgICAgICAsIG1fYmFzZShXVEZNb3ZlKGJh
c2UpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5Qcm9wZXJ0eUFjY2Vzc0V4cHJlc3Np
b24oKSA9IGRlZmF1bHQ7Ci0KICAgICBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oY29uc3QgUHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uJikgPSBkZWxldGU7CiAgICAgUHJvcGVydHlBY2Nlc3NFeHBy
ZXNzaW9uKFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29s
IGlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQotCi0gICAgdmlydHVhbCBTdHJpbmcgZ2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3QgPSAw
OwotICAgIHZpcnR1YWwgU3RyaW5nIHNldHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0ID0gMDsKLSAg
ICB2aXJ0dWFsIFN0cmluZyBhbmRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0ID0gMDsKKyAgICBTdHJp
bmcgZ2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3Q7CisgICAgU3RyaW5nIHNldHRlckZ1bmN0aW9u
TmFtZSgpIGNvbnN0OworICAgIFN0cmluZyBhbmRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0OwogCiAg
ICAgRnVuY3Rpb25EZWNsYXJhdGlvbiogZ2V0dGVyRnVuY3Rpb24oKSB7IHJldHVybiBtX2dldHRl
ckZ1bmN0aW9uOyB9CiAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbiogYW5kZXJGdW5jdGlvbigpIHsg
cmV0dXJuIG1fYW5kZXJGdW5jdGlvbjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRN
b2RpZnlXcml0ZUV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSwxNSArNDksMTkgQEAgbmFtZXNwYWNlIEFTVCB7CiAg
KiAgNi4gRXZhbHVhdGUgbV9yZXN1bHRFeHByZXNzaW9uCiAgKiAgNy4gUmV0dXJuIHRoZSByZXN1
bHQKICAqLwotY2xhc3MgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNz
aW9uIHsKK2NsYXNzIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhw
cmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFVuaXF1ZVJlZjxSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPiBjcmVhdGUoQ29kZUxvY2F0
aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbFZhbHVlKQorICAgIFJlYWRNb2Rp
ZnlXcml0ZUV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVz
c2lvbj4gbGVmdFZhbHVlKQorICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OlJl
YWRNb2RpZnlXcml0ZSkKKyAgICAgICAgLCBtX2xlZnRWYWx1ZShXVEZNb3ZlKGxlZnRWYWx1ZSkp
CisgICAgICAgICwgbV9vbGRWYWx1ZShtYWtlVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+
KGxvY2F0aW9uLCBRdWFsaWZpZXJzKCksIG51bGxwdHIsIFN0cmluZygpLCBudWxscHRyLCBudWxs
cHRyKSkKKyAgICAgICAgLCBtX25ld1ZhbHVlKG1ha2VVbmlxdWVSZWY8VmFyaWFibGVEZWNsYXJh
dGlvbj4obG9jYXRpb24sIFF1YWxpZmllcnMoKSwgbnVsbHB0ciwgU3RyaW5nKCksIG51bGxwdHIs
IG51bGxwdHIpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8UmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUobFZhbHVlKSk7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB+UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKworICAg
IH5SZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwogCiAgICAgUmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbihjb25zdCBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uJikgPSBkZWxl
dGU7CiAgICAgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbihSZWFkTW9kaWZ5V3JpdGVFeHByZXNz
aW9uJiYpID0gZGVmYXVsdDsKQEAgLTgyLDggKzg2LDYgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZVJlZjxWYXJpYWJsZVJlZmVyZW5jZT4oVmFyaWFibGVSZWZlcmVuY2U6Ondy
YXAobV9uZXdWYWx1ZSkpOwogICAgIH0KIAotICAgIGJvb2wgaXNSZWFkTW9kaWZ5V3JpdGVFeHBy
ZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgRXhwcmVzc2lv
biYgbGVmdFZhbHVlKCkgeyByZXR1cm4gbV9sZWZ0VmFsdWU7IH0KICAgICBWYXJpYWJsZURlY2xh
cmF0aW9uJiBvbGRWYWx1ZSgpIHsgcmV0dXJuIG1fb2xkVmFsdWU7IH0KICAgICBWYXJpYWJsZURl
Y2xhcmF0aW9uJiBuZXdWYWx1ZSgpIHsgcmV0dXJuIG1fbmV3VmFsdWU7IH0KQEAgLTExNCwxNiAr
MTE2LDYgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZTxjbGFzcyBV
LCBjbGFzcy4uLiBBcmdzPiBmcmllbmQgVW5pcXVlUmVmPFU+IFdURjo6bWFrZVVuaXF1ZVJlZihB
cmdzJiYuLi4pOwotCi0gICAgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbihDb2RlTG9jYXRpb24g
bG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBsZWZ0VmFsdWUpCi0gICAgICAgIDogRXhw
cmVzc2lvbihsb2NhdGlvbikKLSAgICAgICAgLCBtX2xlZnRWYWx1ZShXVEZNb3ZlKGxlZnRWYWx1
ZSkpCi0gICAgICAgICwgbV9vbGRWYWx1ZShtYWtlVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRp
b24+KGxvY2F0aW9uLCBRdWFsaWZpZXJzKCksIG51bGxwdHIsIFN0cmluZygpLCBudWxscHRyLCBu
dWxscHRyKSkKLSAgICAgICAgLCBtX25ld1ZhbHVlKG1ha2VVbmlxdWVSZWY8VmFyaWFibGVEZWNs
YXJhdGlvbj4obG9jYXRpb24sIFF1YWxpZmllcnMoKSwgbnVsbHB0ciwgU3RyaW5nKCksIG51bGxw
dHIsIG51bGxwdHIpKQotICAgIHsKLSAgICB9Ci0KICAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4g
bV9sZWZ0VmFsdWU7CiAgICAgVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+IG1fb2xkVmFs
dWU7CiAgICAgVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+IG1fbmV3VmFsdWU7CkBAIC0x
MzcsNiArMTI5LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoUmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbikKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9F
WFBSRVNTSU9OKFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24sIGlzUmVhZE1vZGlmeVdyaXRlRXhw
cmVzc2lvbigpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFJlZmVyZW5jZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWZlcmVuY2VUeXBlLmgJKHJldmlz
aW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFJlZmVyZW5jZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsMTAgQEAgbmFt
ZXNwYWNlIEFTVCB7CiBjbGFzcyBSZWZlcmVuY2VUeXBlIDogcHVibGljIFVubmFtZWRUeXBlIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShS
ZWZlcmVuY2VUeXBlKTsKKworcHJvdGVjdGVkOgorICAgIH5SZWZlcmVuY2VUeXBlKCkgPSBkZWZh
dWx0OworCiBwcm90ZWN0ZWQ6CiAgICAgUmVmZXJlbmNlVHlwZShDb2RlTG9jYXRpb24gbG9jYXRp
b24sIEFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2UsIFJlZjxVbm5hbWVkVHlwZT4gZWxlbWVudFR5
cGUsIEtpbmQga2luZCkKICAgICAgICAgOiBVbm5hbWVkVHlwZShsb2NhdGlvbiwga2luZCkKQEAg
LTUwLDkgKzU0LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICAsIG1fZWxlbWVudFR5cGUoV1RGTW92
ZShlbGVtZW50VHlwZSkpCiAgICAgewogICAgIH0KLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5SZWZl
cmVuY2VUeXBlKCkgPSBkZWZhdWx0OwogCisKK3B1YmxpYzoKICAgICBBZGRyZXNzU3BhY2UgYWRk
cmVzc1NwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9hZGRyZXNzU3BhY2U7IH0KICAgICBjb25zdCBV
bm5hbWVkVHlwZSYgZWxlbWVudFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRUeXBlOyB9
CiAgICAgVW5uYW1lZFR5cGUmIGVsZW1lbnRUeXBlKCkgeyByZXR1cm4gbV9lbGVtZW50VHlwZTsg
fQpAQCAtNzMsNiArNzcsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVU
RShSZWZlcmVuY2VUeXBlKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1VOTkFNRURf
VFlQRShSZWZlcmVuY2VUeXBlLCBpc1JlZmVyZW5jZVR5cGUoKSkKIAogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXBsYWNlV2l0aC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFJlcGxhY2VXaXRoLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlcGxhY2VXaXRoLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDcgKzM4LDcgQEAgQUxXQVlTX0lOTElORSBOZXcqIHJlcGxhY2VXaXRoKE9sZCYgb2xk
LAogewogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE5ldykgPD0gc2l6ZW9mKE9sZCksICJUaGlz
IGlzIG5lZWRlZCBmb3IgdGhlIHBsYWNlbWVudCBuZXcgYmVsb3cgdG8gbm90IG92ZXJ3cml0ZSB1
bm93bmVkIG1lbW9yeS4iKTsKICAgICB2b2lkKiBsb2NhdGlvbiA9ICZvbGQ7Ci0gICAgb2xkLn5P
bGQoKTsKKyAgICBPbGQ6OmRlc3RydWN0KG9sZCk7CiAgICAgcmV0dXJuIG5ldyAobG9jYXRpb24p
IE5ldyhzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvbHZhYmxlVHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJl
c29sdmFibGVUeXBlLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc29sdmFibGVUeXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDEwICs0MCwxNSBAQCBuYW1lc3BhY2UgQVNUIHsKIAogY2xhc3MgUmVzb2x2YWJsZVR5
cGUgOiBwdWJsaWMgVHlwZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisKK3Byb3Rl
Y3RlZDoKKyAgICB+UmVzb2x2YWJsZVR5cGUoKSA9IGRlZmF1bHQ7CisKIHB1YmxpYzoKLSAgICBS
ZXNvbHZhYmxlVHlwZSgpID0gZGVmYXVsdDsKKyAgICBSZXNvbHZhYmxlVHlwZShLaW5kIGtpbmQp
CisgICAgICAgIDogVHlwZShraW5kKQorICAgIHsgfQogCi0gICAgdmlydHVhbCB+UmVzb2x2YWJs
ZVR5cGUoKSA9IGRlZmF1bHQ7CiAKICAgICBSZXNvbHZhYmxlVHlwZShjb25zdCBSZXNvbHZhYmxl
VHlwZSYpID0gZGVsZXRlOwogICAgIFJlc29sdmFibGVUeXBlKFJlc29sdmFibGVUeXBlJiYpID0g
ZGVmYXVsdDsKQEAgLTUxLDE0ICs1Niw4IEBAIHB1YmxpYzoKICAgICBSZXNvbHZhYmxlVHlwZSYg
b3BlcmF0b3I9KGNvbnN0IFJlc29sdmFibGVUeXBlJikgPSBkZWxldGU7CiAgICAgUmVzb2x2YWJs
ZVR5cGUmIG9wZXJhdG9yPShSZXNvbHZhYmxlVHlwZSYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29s
IGlzUmVzb2x2YWJsZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzRmxvYXRMaXRlcmFsVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzSW50ZWdlckxpdGVyYWxUeXBlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNOdWxsTGl0ZXJhbFR5cGUoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWxU
eXBlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBjYW5SZXNv
bHZlKGNvbnN0IFR5cGUmKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBjb252ZXJz
aW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0ID0gMDsKKyAgICBib29sIGNhblJlc29s
dmUoY29uc3QgVHlwZSYpIGNvbnN0OworICAgIHVuc2lnbmVkIGNvbnZlcnNpb25Db3N0KGNvbnN0
IFVubmFtZWRUeXBlJikgY29uc3Q7CiAKICAgICBjb25zdCBVbm5hbWVkVHlwZSogbWF5YmVSZXNv
bHZlZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkVHlwZSA/ICYqbV9yZXNvbHZlZFR5
cGUgOiBudWxscHRyOyB9CiAgICAgY29uc3QgVW5uYW1lZFR5cGUmIHJlc29sdmVkVHlwZSgpIGNv
bnN0CkBAIC04OSw2ICs4OCw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVM
RVRFKFJlc29sdmFibGVUeXBlKQorCiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hM
U0xfUkVTT0xWQUJMRV9UWVBFKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCiBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldITFNMOjpBU1Q6OlRvVmFsdWVUeXBlTmFt
ZSkgXAogICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXSExTTDo6QVNUOjpS
ZXNvbHZhYmxlVHlwZSYgdHlwZSkgeyByZXR1cm4gdHlwZS5wcmVkaWNhdGU7IH0gXApJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmV0dXJuLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
UmV0dXJuLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFJldHVybi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyMiArMzks
MjAgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIFJldHVy
biA6IHB1YmxpYyBTdGF0ZW1lbnQgeworY2xhc3MgUmV0dXJuIGZpbmFsIDogcHVibGljIFN0YXRl
bWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUmV0dXJu
KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+JiYgdmFs
dWUpCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uKQorICAgICAgICA6IFN0YXRlbWVudChs
b2NhdGlvbiwgS2luZDo6UmV0dXJuKQogICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkp
CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgflJldHVybigpID0gZGVmYXVsdDsKKyAgICB+
UmV0dXJuKCkgPSBkZWZhdWx0OwogCiAgICAgUmV0dXJuKGNvbnN0IFJldHVybiYpID0gZGVsZXRl
OwogICAgIFJldHVybihSZXR1cm4mJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc1JldHVybigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIEV4cHJlc3Npb24qIHZhbHVl
KCkgeyByZXR1cm4gbV92YWx1ZS5nZXQoKTsgfQogCiBwcml2YXRlOgpAQCAtNjcsNiArNjUsOCBA
QCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShSZXR1cm4pCisKIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKFJldHVybiwgaXNSZXR1cm4oKSkKIAog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTdGF0ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkK
KworI2luY2x1ZGUgIldITFNMQVNULmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNw
YWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK3ZvaWQgU3RhdGVtZW50OjpkZXN0cm95
KFN0YXRlbWVudCYgc3RhdGVtZW50KQoreworICAgIHN3aXRjaCAoc3RhdGVtZW50LmtpbmQoKSkg
eworICAgIGNhc2UgS2luZDo6QmxvY2s6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QmxvY2s+
KHN0YXRlbWVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6QnJlYWs6CisgICAg
ICAgIGRlbGV0ZSAmZG93bmNhc3Q8QnJlYWs+KHN0YXRlbWVudCk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgS2luZDo6Q29udGludWU6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8Q29udGlu
dWU+KHN0YXRlbWVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6RG9XaGlsZUxv
b3A6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8RG9XaGlsZUxvb3A+KHN0YXRlbWVudCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6RWZmZWN0ZnVsRXhwcmVzc2lvbjoKKyAgICAg
ICAgZGVsZXRlICZkb3duY2FzdDxFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50PihzdGF0ZW1l
bnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6OkZhbGx0aHJvdWdoOgorICAgICAg
ICBkZWxldGUgJmRvd25jYXN0PEZhbGx0aHJvdWdoPihzdGF0ZW1lbnQpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEtpbmQ6OkZvckxvb3A6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8Rm9y
TG9vcD4oc3RhdGVtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpJZjoKKyAg
ICAgICAgZGVsZXRlICZkb3duY2FzdDxJZlN0YXRlbWVudD4oc3RhdGVtZW50KTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBLaW5kOjpSZXR1cm46CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8
UmV0dXJuPihzdGF0ZW1lbnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6OlN0YXRl
bWVudExpc3Q6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8U3RhdGVtZW50TGlzdD4oc3RhdGVt
ZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpTd2l0Y2hDYXNlOgorICAgICAg
ICBkZWxldGUgJmRvd25jYXN0PFN3aXRjaENhc2U+KHN0YXRlbWVudCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgS2luZDo6U3dpdGNoOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PFN3aXRj
aFN0YXRlbWVudD4oc3RhdGVtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpW
YXJpYWJsZURlY2xhcmF0aW9uczoKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxWYXJpYWJsZURl
Y2xhcmF0aW9uc1N0YXRlbWVudD4oc3RhdGVtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBLaW5kOjpXaGlsZUxvb3A6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8V2hpbGVMb29wPihz
dGF0ZW1lbnQpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgU3RhdGVtZW50Ojpk
ZXN0cnVjdChTdGF0ZW1lbnQmIHN0YXRlbWVudCkKK3sKKyAgICBzd2l0Y2ggKHN0YXRlbWVudC5r
aW5kKCkpIHsKKyAgICBjYXNlIEtpbmQ6OkJsb2NrOgorICAgICAgICBkb3duY2FzdDxCbG9jaz4o
c3RhdGVtZW50KS5+QmxvY2soKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpCcmVh
azoKKyAgICAgICAgZG93bmNhc3Q8QnJlYWs+KHN0YXRlbWVudCkufkJyZWFrKCk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgS2luZDo6Q29udGludWU6CisgICAgICAgIGRvd25jYXN0PENvbnRp
bnVlPihzdGF0ZW1lbnQpLn5Db250aW51ZSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtp
bmQ6OkRvV2hpbGVMb29wOgorICAgICAgICBkb3duY2FzdDxEb1doaWxlTG9vcD4oc3RhdGVtZW50
KS5+RG9XaGlsZUxvb3AoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpFZmZlY3Rm
dWxFeHByZXNzaW9uOgorICAgICAgICBkb3duY2FzdDxFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVt
ZW50PihzdGF0ZW1lbnQpLn5FZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KCk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgS2luZDo6RmFsbHRocm91Z2g6CisgICAgICAgIGRvd25jYXN0PEZh
bGx0aHJvdWdoPihzdGF0ZW1lbnQpLn5GYWxsdGhyb3VnaCgpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEtpbmQ6OkZvckxvb3A6CisgICAgICAgIGRvd25jYXN0PEZvckxvb3A+KHN0YXRlbWVu
dCkufkZvckxvb3AoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpJZjoKKyAgICAg
ICAgZG93bmNhc3Q8SWZTdGF0ZW1lbnQ+KHN0YXRlbWVudCkufklmU3RhdGVtZW50KCk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6UmV0dXJuOgorICAgICAgICBkb3duY2FzdDxSZXR1
cm4+KHN0YXRlbWVudCkuflJldHVybigpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6
OlN0YXRlbWVudExpc3Q6CisgICAgICAgIGRvd25jYXN0PFN0YXRlbWVudExpc3Q+KHN0YXRlbWVu
dCkuflN0YXRlbWVudExpc3QoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpTd2l0
Y2hDYXNlOgorICAgICAgICBkb3duY2FzdDxTd2l0Y2hDYXNlPihzdGF0ZW1lbnQpLn5Td2l0Y2hD
YXNlKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6U3dpdGNoOgorICAgICAgICBk
b3duY2FzdDxTd2l0Y2hTdGF0ZW1lbnQ+KHN0YXRlbWVudCkuflN3aXRjaFN0YXRlbWVudCgpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6OlZhcmlhYmxlRGVjbGFyYXRpb25zOgorICAg
ICAgICBkb3duY2FzdDxWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudD4oc3RhdGVtZW50KS5+
VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBLaW5kOjpXaGlsZUxvb3A6CisgICAgICAgIGRvd25jYXN0PFdoaWxlTG9vcD4oc3RhdGVtZW50
KS5+V2hpbGVMb29wKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworfSAvLyBuYW1lc3Bh
Y2UgQVNUCisKK30gLy8gbmFtZXNwYWNlIFdITFNMCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xTdGF0ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnQuaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoV0VCR1BVKQogCiAjaW5j
bHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKKyNpbmNsdWRlICJXSExTTERlZmF1bHREZWxldGUu
aCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KIApAQCAtMzksNDcgKzQwLDc0IEBAIG5hbWVzcGFjZSBBU1QgewogCiBjbGFzcyBTdGF0ZW1l
bnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCitwcm90ZWN0ZWQ6CisgICAgflN0
YXRlbWVudCgpID0gZGVmYXVsdDsKKwogcHVibGljOgotICAgIFN0YXRlbWVudChDb2RlTG9jYXRp
b24gY29kZUxvY2F0aW9uKQorICAgIGVudW0gY2xhc3MgS2luZCA6IHVpbnQ4X3QgeworICAgICAg
ICBCbG9jaywKKyAgICAgICAgQnJlYWssCisgICAgICAgIENvbnRpbnVlLAorICAgICAgICBEb1do
aWxlTG9vcCwKKyAgICAgICAgRWZmZWN0ZnVsRXhwcmVzc2lvbiwKKyAgICAgICAgRmFsbHRocm91
Z2gsCisgICAgICAgIEZvckxvb3AsCisgICAgICAgIElmLAorICAgICAgICBSZXR1cm4sCisgICAg
ICAgIFN0YXRlbWVudExpc3QsCisgICAgICAgIFN3aXRjaENhc2UsCisgICAgICAgIFN3aXRjaCwK
KyAgICAgICAgVmFyaWFibGVEZWNsYXJhdGlvbnMsCisgICAgICAgIFdoaWxlTG9vcCwKKyAgICB9
OworICAgIFN0YXRlbWVudChDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uLCBLaW5kIGtpbmQpCiAg
ICAgICAgIDogbV9jb2RlTG9jYXRpb24oY29kZUxvY2F0aW9uKQorICAgICAgICAsIG1fa2luZChr
aW5kKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5TdGF0ZW1lbnQoKSA9IGRlZmF1bHQ7
CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShTdGF0ZW1lbnQmKTsKKyAgICBzdGF0aWMgdm9pZCBk
ZXN0cnVjdChTdGF0ZW1lbnQmKTsKIAogICAgIFN0YXRlbWVudChjb25zdCBTdGF0ZW1lbnQmKSA9
IGRlbGV0ZTsKICAgICBTdGF0ZW1lbnQoU3RhdGVtZW50JiYpID0gZGVmYXVsdDsKIAotICAgIHZp
cnR1YWwgYm9vbCBpc0Jsb2NrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNCcmVhaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29s
IGlzQ29udGludWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBp
c0RvV2hpbGVMb29wKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aXNFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNGYWxsdGhyb3VnaCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzRm9yTG9vcCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzSWZTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpc1JldHVybigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzU3RhdGVtZW50TGlzdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzU3dpdGNoQ2FzZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzU3dpdGNoU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzV2hpbGVMb29wKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tp
bmQ7IH0KKworICAgIGJvb2wgaXNCbG9jaygpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5k
OjpCbG9jazsgfQorICAgIGJvb2wgaXNCcmVhaygpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBL
aW5kOjpCcmVhazsgfQorICAgIGJvb2wgaXNDb250aW51ZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQo
KSA9PSBLaW5kOjpDb250aW51ZTsgfQorICAgIGJvb2wgaXNEb1doaWxlTG9vcCgpIGNvbnN0IHsg
cmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpEb1doaWxlTG9vcDsgfQorICAgIGJvb2wgaXNFZmZlY3Rm
dWxFeHByZXNzaW9uU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkVm
ZmVjdGZ1bEV4cHJlc3Npb247IH0KKyAgICBib29sIGlzRmFsbHRocm91Z2goKSBjb25zdCB7IHJl
dHVybiBraW5kKCkgPT0gS2luZDo6RmFsbHRocm91Z2g7IH0KKyAgICBib29sIGlzRm9yTG9vcCgp
IGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpGb3JMb29wOyB9CisgICAgYm9vbCBpc0lm
U3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OklmOyB9CisgICAgYm9v
bCBpc1JldHVybigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpSZXR1cm47IH0KKyAg
ICBib29sIGlzU3RhdGVtZW50TGlzdCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpT
dGF0ZW1lbnRMaXN0OyB9CisgICAgYm9vbCBpc1N3aXRjaENhc2UoKSBjb25zdCB7IHJldHVybiBr
aW5kKCkgPT0gS2luZDo6U3dpdGNoQ2FzZTsgfQorICAgIGJvb2wgaXNTd2l0Y2hTdGF0ZW1lbnQo
KSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6U3dpdGNoOyB9CisgICAgYm9vbCBpc1Zh
cmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtp
bmQ6OlZhcmlhYmxlRGVjbGFyYXRpb25zOyB9CisgICAgYm9vbCBpc1doaWxlTG9vcCgpIGNvbnN0
IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpXaGlsZUxvb3A7IH0KIAogICAgIENvZGVMb2NhdGlv
biBjb2RlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvZGVMb2NhdGlvbjsgfQogICAgIHZv
aWQgdXBkYXRlQ29kZUxvY2F0aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbikgeyBtX2NvZGVMb2Nh
dGlvbiA9IGxvY2F0aW9uOyB9CiAKIHByaXZhdGU6CiAgICAgQ29kZUxvY2F0aW9uIG1fY29kZUxv
Y2F0aW9uOworICAgIEtpbmQgbV9raW5kOwogfTsKIAogdXNpbmcgU3RhdGVtZW50cyA9IFZlY3Rv
cjxVbmlxdWVSZWY8U3RhdGVtZW50Pj47CiAKLX0gLy8gbmFtZXNwYWNlIEFTVAorfQogCiB9CiAK
IH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKFN0YXRlbWVudCkKKwogI2RlZmluZSBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0
ZSkgXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExTTDo6QVNUOjpU
b1ZhbHVlVHlwZU5hbWUpIFwKICAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6
V0hMU0w6OkFTVDo6U3RhdGVtZW50JiBzdGF0ZW1lbnQpIHsgcmV0dXJuIHN0YXRlbWVudC5wcmVk
aWNhdGU7IH0gXApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMU3RhdGVtZW50TGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudExpc3QuaAkocmV2aXNpb24gMjQ4NDA0
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVt
ZW50TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyMSArMzgsMTkgQEAgbmFtZXNwYWNlIFdI
TFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIFN0YXRlbWVudExpc3QgOiBwdWJsaWMg
U3RhdGVtZW50IHsKK2NsYXNzIFN0YXRlbWVudExpc3QgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICB1c2luZyBCYXNlID0gU3RhdGVt
ZW50OwogcHVibGljOgogICAgIFN0YXRlbWVudExpc3QoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBT
dGF0ZW1lbnRzJiYgc3RhdGVtZW50cykKLSAgICAgICAgOiBCYXNlKGxvY2F0aW9uKQorICAgICAg
ICA6IEJhc2UobG9jYXRpb24sIEtpbmQ6OlN0YXRlbWVudExpc3QpCiAgICAgICAgICwgbV9zdGF0
ZW1lbnRzKFdURk1vdmUoc3RhdGVtZW50cykpCiAgICAgeyB9CiAKLSAgICB2aXJ0dWFsIH5TdGF0
ZW1lbnRMaXN0KCkgPSBkZWZhdWx0OworICAgIH5TdGF0ZW1lbnRMaXN0KCkgPSBkZWZhdWx0Owog
CiAgICAgU3RhdGVtZW50cyYgc3RhdGVtZW50cygpIHsgcmV0dXJuIG1fc3RhdGVtZW50czsgfQog
Ci0gICAgYm9vbCBpc1N0YXRlbWVudExpc3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9Ci0KIHByaXZhdGU6CiAgICAgU3RhdGVtZW50cyBtX3N0YXRlbWVudHM7CiB9OwpAQCAtNjMs
NiArNjEsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShTdGF0ZW1l
bnRMaXN0KQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChTdGF0ZW1l
bnRMaXN0LCBpc1N0YXRlbWVudExpc3QoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
U3RydWN0dXJlRGVmaW5pdGlvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDIyICs0MCwyMCBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1l
c3BhY2UgQVNUIHsKIAotY2xhc3MgU3RydWN0dXJlRGVmaW5pdGlvbiA6IHB1YmxpYyBOYW1lZFR5
cGUgeworY2xhc3MgU3RydWN0dXJlRGVmaW5pdGlvbiBmaW5hbCA6IHB1YmxpYyBOYW1lZFR5cGUg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFN0cnVjdHVyZURl
ZmluaXRpb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1lLCBTdHJ1Y3R1cmVF
bGVtZW50cyYmIHN0cnVjdHVyZUVsZW1lbnRzKQotICAgICAgICA6IE5hbWVkVHlwZShsb2NhdGlv
biwgV1RGTW92ZShuYW1lKSkKKyAgICAgICAgOiBOYW1lZFR5cGUoS2luZDo6U3RydWN0dXJlRGVm
aW5pdGlvbiwgbG9jYXRpb24sIFdURk1vdmUobmFtZSkpCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVF
bGVtZW50cyhXVEZNb3ZlKHN0cnVjdHVyZUVsZW1lbnRzKSkKICAgICB7CiAgICAgfQogCi0gICAg
dmlydHVhbCB+U3RydWN0dXJlRGVmaW5pdGlvbigpID0gZGVmYXVsdDsKKyAgICB+U3RydWN0dXJl
RGVmaW5pdGlvbigpID0gZGVmYXVsdDsKIAogICAgIFN0cnVjdHVyZURlZmluaXRpb24oY29uc3Qg
U3RydWN0dXJlRGVmaW5pdGlvbiYpID0gZGVsZXRlOwogICAgIFN0cnVjdHVyZURlZmluaXRpb24o
U3RydWN0dXJlRGVmaW5pdGlvbiYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzU3RydWN0dXJl
RGVmaW5pdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIFN0cnVj
dHVyZUVsZW1lbnRzJiBzdHJ1Y3R1cmVFbGVtZW50cygpIHsgcmV0dXJuIG1fc3RydWN0dXJlRWxl
bWVudHM7IH0KICAgICBTdHJ1Y3R1cmVFbGVtZW50KiBmaW5kKGNvbnN0IFN0cmluZyYgbmFtZSkK
ICAgICB7CkBAIC03Nyw2ICs3NSw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRf
REVMRVRFKFN0cnVjdHVyZURlZmluaXRpb24pCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hM
U0xfTkFNRURfVFlQRShTdHJ1Y3R1cmVEZWZpbml0aW9uLCBpc1N0cnVjdHVyZURlZmluaXRpb24o
KSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJlRWxlbWVudC5oCShyZXZpc2lv
biAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTdHJ1Y3R1cmVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgbmFt
ZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIFN0cnVjdHVyZUVsZW1l
bnQgeworY2xhc3MgU3RydWN0dXJlRWxlbWVudCBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU3RydWN0dXJlRWxlbWVudChDb2RlTG9jYXRpb24gbG9j
YXRpb24sIFF1YWxpZmllcnMmJiBxdWFsaWZpZXJzLCBSZWY8VW5uYW1lZFR5cGU+IHR5cGUsIFN0
cmluZyYmIG5hbWUsIHN0ZDo6dW5pcXVlX3B0cjxTZW1hbnRpYz4mJiBzZW1hbnRpYykKQEAgLTUy
LDcgKzUyLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5TdHJ1Y3R1
cmVFbGVtZW50KCkgPSBkZWZhdWx0OworICAgIH5TdHJ1Y3R1cmVFbGVtZW50KCkgPSBkZWZhdWx0
OwogCiAgICAgU3RydWN0dXJlRWxlbWVudChjb25zdCBTdHJ1Y3R1cmVFbGVtZW50JikgPSBkZWxl
dGU7CiAgICAgU3RydWN0dXJlRWxlbWVudChTdHJ1Y3R1cmVFbGVtZW50JiYpID0gZGVmYXVsdDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRj
aENhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTd2l0Y2hDYXNlLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaENhc2UuaAkod29ya2luZyBj
b3B5KQpAQCAtNDAsMjMgKzQwLDIxIEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBB
U1QgewogCi1jbGFzcyBTd2l0Y2hDYXNlIDogcHVibGljIFN0YXRlbWVudCB7CitjbGFzcyBTd2l0
Y2hDYXNlIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgU3dpdGNoQ2FzZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIE9w
dGlvbmFsPENvbnN0YW50RXhwcmVzc2lvbj4mJiB2YWx1ZSwgQmxvY2smJiBibG9jaykKLSAgICAg
ICAgOiBTdGF0ZW1lbnQobG9jYXRpb24pCisgICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBL
aW5kOjpTd2l0Y2hDYXNlKQogICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkpCiAgICAg
ICAgICwgbV9ibG9jayhXVEZNb3ZlKGJsb2NrKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVh
bCB+U3dpdGNoQ2FzZSgpID0gZGVmYXVsdDsKKyAgICB+U3dpdGNoQ2FzZSgpID0gZGVmYXVsdDsK
IAogICAgIFN3aXRjaENhc2UoY29uc3QgU3dpdGNoQ2FzZSYpID0gZGVsZXRlOwogICAgIFN3aXRj
aENhc2UoU3dpdGNoQ2FzZSYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzU3dpdGNoQ2FzZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIE9wdGlvbmFsPENvbnN0YW50
RXhwcmVzc2lvbj4mIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgIEJsb2NrJiBibG9j
aygpIHsgcmV0dXJuIG1fYmxvY2s7IH0KIApAQCAtNzEsNiArNjksOCBAQCBwcml2YXRlOgogCiB9
CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShTd2l0Y2hDYXNlKQorCiBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dITFNMX1NUQVRFTUVOVChTd2l0Y2hDYXNlLCBpc1N3aXRjaENhc2UoKSkKIAogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xT
d2l0Y2hTdGF0ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaAkocmV2aXNpb24gMjQ4NDA0KQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoU3Rh
dGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDIzICszOSwyMSBAQCBuYW1lc3BhY2UgV0hM
U0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgU3dpdGNoU3RhdGVtZW50IDogcHVibGlj
IFN0YXRlbWVudCB7CitjbGFzcyBTd2l0Y2hTdGF0ZW1lbnQgZmluYWwgOiBwdWJsaWMgU3RhdGVt
ZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTd2l0Y2hT
dGF0ZW1lbnQoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiB2
YWx1ZSwgVmVjdG9yPFN3aXRjaENhc2U+JiYgc3dpdGNoQ2FzZXMpCi0gICAgICAgIDogU3RhdGVt
ZW50KGxvY2F0aW9uKQorICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6U3dpdGNo
KQogICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkpCiAgICAgICAgICwgbV9zd2l0Y2hD
YXNlcyhXVEZNb3ZlKHN3aXRjaENhc2VzKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+
U3dpdGNoU3RhdGVtZW50KCkgPSBkZWZhdWx0OworICAgIH5Td2l0Y2hTdGF0ZW1lbnQoKSA9IGRl
ZmF1bHQ7CiAKICAgICBTd2l0Y2hTdGF0ZW1lbnQoY29uc3QgU3dpdGNoU3RhdGVtZW50JikgPSBk
ZWxldGU7CiAgICAgU3dpdGNoU3RhdGVtZW50KFN3aXRjaFN0YXRlbWVudCYmKSA9IGRlZmF1bHQ7
CiAKLSAgICBib29sIGlzU3dpdGNoU3RhdGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQotCiAgICAgRXhwcmVzc2lvbiYgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CiAg
ICAgVmVjdG9yPFN3aXRjaENhc2U+JiBzd2l0Y2hDYXNlcygpIHsgcmV0dXJuIG1fc3dpdGNoQ2Fz
ZXM7IH0KIApAQCAtNzAsNiArNjgsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxU
X0RFTEVURShTd2l0Y2hTdGF0ZW1lbnQpCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xf
U1RBVEVNRU5UKFN3aXRjaFN0YXRlbWVudCwgaXNTd2l0Y2hTdGF0ZW1lbnQoKSkKIAogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUZXJu
YXJ5RXhwcmVzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmgJKHJldmlzaW9uIDI0ODQwNCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFRlcm5hcnlF
eHByZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDI0ICszNywyMiBAQCBuYW1lc3BhY2Ug
V0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgVGVybmFyeUV4cHJlc3Npb24gOiBw
dWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBUZXJuYXJ5RXhwcmVzc2lvbiBmaW5hbCA6IHB1Ymxp
YyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBUZXJuYXJ5RXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHBy
ZXNzaW9uPiYmIHByZWRpY2F0ZSwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgYm9keUV4cHJlc3Np
b24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGVsc2VFeHByZXNzaW9uKQotICAgICAgICA6IEV4
cHJlc3Npb24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6
VGVybmFyeSkKICAgICAgICAgLCBtX3ByZWRpY2F0ZShXVEZNb3ZlKHByZWRpY2F0ZSkpCiAgICAg
ICAgICwgbV9ib2R5RXhwcmVzc2lvbihXVEZNb3ZlKGJvZHlFeHByZXNzaW9uKSkKICAgICAgICAg
LCBtX2Vsc2VFeHByZXNzaW9uKFdURk1vdmUoZWxzZUV4cHJlc3Npb24pKQogICAgIHsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIH5UZXJuYXJ5RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKyAgICB+VGVy
bmFyeUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CiAKICAgICBUZXJuYXJ5RXhwcmVzc2lvbihjb25z
dCBUZXJuYXJ5RXhwcmVzc2lvbiYpID0gZGVsZXRlOwogICAgIFRlcm5hcnlFeHByZXNzaW9uKFRl
cm5hcnlFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNUZXJuYXJ5RXhwcmVz
c2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIEV4cHJlc3Npb24m
IHByZWRpY2F0ZSgpIHsgcmV0dXJuIG1fcHJlZGljYXRlOyB9CiAgICAgRXhwcmVzc2lvbiYgYm9k
eUV4cHJlc3Npb24oKSB7IHJldHVybiBtX2JvZHlFeHByZXNzaW9uOyB9CiAgICAgRXhwcmVzc2lv
biYgZWxzZUV4cHJlc3Npb24oKSB7IHJldHVybiBtX2Vsc2VFeHByZXNzaW9uOyB9CkBAIC03MSw2
ICs2OSw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKFRlcm5hcnlF
eHByZXNzaW9uKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oVGVy
bmFyeUV4cHJlc3Npb24sIGlzVGVybmFyeUV4cHJlc3Npb24oKSkKIAogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xU
eXBlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwOCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXSExTTFR5cGUuaCIK
KworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEFTVC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCit2
b2lkIFR5cGU6OmRlc3Ryb3koVHlwZSYgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUua2luZCgp
KSB7CisgICAgY2FzZSBLaW5kOjpUeXBlUmVmZXJlbmNlOgorICAgICAgICBkZWxldGUgJmRvd25j
YXN0PFR5cGVSZWZlcmVuY2U+KHR5cGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6
OlBvaW50ZXI6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8UG9pbnRlclR5cGU+KHR5cGUpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6OkFycmF5UmVmZXJlbmNlOgorICAgICAgICBk
ZWxldGUgJmRvd25jYXN0PEFycmF5UmVmZXJlbmNlVHlwZT4odHlwZSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgS2luZDo6QXJyYXk6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QXJyYXlU
eXBlPih0eXBlKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEtpbmQ6OlR5cGVEZWZpbml0
aW9uOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PFR5cGVEZWZpbml0aW9uPih0eXBlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpTdHJ1Y3R1cmVEZWZpbml0aW9uOgorICAgICAg
ICBkZWxldGUgJmRvd25jYXN0PFN0cnVjdHVyZURlZmluaXRpb24+KHR5cGUpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEtpbmQ6OkVudW1lcmF0aW9uRGVmaW5pdGlvbjoKKyAgICAgICAgZGVs
ZXRlICZkb3duY2FzdDxFbnVtZXJhdGlvbkRlZmluaXRpb24+KHR5cGUpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEtpbmQ6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjoKKyAgICAgICAgZGVsZXRl
ICZkb3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGUpOworICAgICAgICBicmVhazsK
KworICAgIGNhc2UgS2luZDo6RmxvYXRMaXRlcmFsOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0
PEZsb2F0TGl0ZXJhbFR5cGU+KHR5cGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6
OkludGVnZXJMaXRlcmFsOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PEludGVnZXJMaXRlcmFs
VHlwZT4odHlwZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6TnVsbExpdGVyYWw6
CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8TnVsbExpdGVyYWxUeXBlPih0eXBlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOgorICAgICAg
ICBkZWxldGUgJmRvd25jYXN0PFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlPih0eXBlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lkIFR5cGU6OmRlc3RydWN0KFR5cGUmIHR5cGUp
Cit7CisgICAgc3dpdGNoICh0eXBlLmtpbmQoKSkgeworICAgIGNhc2UgS2luZDo6VHlwZVJlZmVy
ZW5jZToKKyAgICAgICAgZG93bmNhc3Q8VHlwZVJlZmVyZW5jZT4odHlwZSkuflR5cGVSZWZlcmVu
Y2UoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpQb2ludGVyOgorICAgICAgICBk
b3duY2FzdDxQb2ludGVyVHlwZT4odHlwZSkuflBvaW50ZXJUeXBlKCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgS2luZDo6QXJyYXlSZWZlcmVuY2U6CisgICAgICAgIGRvd25jYXN0PEFycmF5
UmVmZXJlbmNlVHlwZT4odHlwZSkufkFycmF5UmVmZXJlbmNlVHlwZSgpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEtpbmQ6OkFycmF5OgorICAgICAgICBkb3duY2FzdDxBcnJheVR5cGU+KHR5
cGUpLn5BcnJheVR5cGUoKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEtpbmQ6OlR5cGVE
ZWZpbml0aW9uOgorICAgICAgICBkb3duY2FzdDxUeXBlRGVmaW5pdGlvbj4odHlwZSkuflR5cGVE
ZWZpbml0aW9uKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6U3RydWN0dXJlRGVm
aW5pdGlvbjoKKyAgICAgICAgZG93bmNhc3Q8U3RydWN0dXJlRGVmaW5pdGlvbj4odHlwZSkuflN0
cnVjdHVyZURlZmluaXRpb24oKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpFbnVt
ZXJhdGlvbkRlZmluaXRpb246CisgICAgICAgIGRvd25jYXN0PEVudW1lcmF0aW9uRGVmaW5pdGlv
bj4odHlwZSkufkVudW1lcmF0aW9uRGVmaW5pdGlvbigpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEtpbmQ6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjoKKyAgICAgICAgZG93bmNhc3Q8TmF0aXZl
VHlwZURlY2xhcmF0aW9uPih0eXBlKS5+TmF0aXZlVHlwZURlY2xhcmF0aW9uKCk7CisgICAgICAg
IGJyZWFrOworCisgICAgY2FzZSBLaW5kOjpGbG9hdExpdGVyYWw6CisgICAgICAgIGRvd25jYXN0
PEZsb2F0TGl0ZXJhbFR5cGU+KHR5cGUpLn5GbG9hdExpdGVyYWxUeXBlKCk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgS2luZDo6SW50ZWdlckxpdGVyYWw6CisgICAgICAgIGRvd25jYXN0PElu
dGVnZXJMaXRlcmFsVHlwZT4odHlwZSkufkludGVnZXJMaXRlcmFsVHlwZSgpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEtpbmQ6Ok51bGxMaXRlcmFsOgorICAgICAgICBkb3duY2FzdDxOdWxs
TGl0ZXJhbFR5cGU+KHR5cGUpLn5OdWxsTGl0ZXJhbFR5cGUoKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOgorICAgICAgICBkb3duY2FzdDxV
bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZT4odHlwZSkuflVuc2lnbmVkSW50ZWdlckxpdGVyYWxU
eXBlKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworVHlwZSYgVHlwZTo6dW5pZnlOb2Rl
KCkKK3sKKyAgICBzd2l0Y2ggKGtpbmQoKSkgeworICAgIGNhc2UgS2luZDo6VHlwZVJlZmVyZW5j
ZToKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KCp0aGlzKS51bmlmeU5v
ZGVJbXBsKCk7CisgICAgY2FzZSBLaW5kOjpQb2ludGVyOgorICAgICAgICByZXR1cm4gZG93bmNh
c3Q8UG9pbnRlclR5cGU+KCp0aGlzKS51bmlmeU5vZGVJbXBsKCk7CisgICAgY2FzZSBLaW5kOjpB
cnJheVJlZmVyZW5jZToKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFycmF5UmVmZXJlbmNlVHlw
ZT4oKnRoaXMpLnVuaWZ5Tm9kZUltcGwoKTsKKyAgICBjYXNlIEtpbmQ6OkFycmF5OgorICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8QXJyYXlUeXBlPigqdGhpcykudW5pZnlOb2RlSW1wbCgpOworCisg
ICAgY2FzZSBLaW5kOjpUeXBlRGVmaW5pdGlvbjoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFR5
cGVEZWZpbml0aW9uPigqdGhpcykudW5pZnlOb2RlSW1wbCgpOworICAgIGNhc2UgS2luZDo6U3Ry
dWN0dXJlRGVmaW5pdGlvbjoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFN0cnVjdHVyZURlZmlu
aXRpb24+KCp0aGlzKS51bmlmeU5vZGVJbXBsKCk7CisgICAgY2FzZSBLaW5kOjpFbnVtZXJhdGlv
bkRlZmluaXRpb246CisgICAgICAgIHJldHVybiBkb3duY2FzdDxFbnVtZXJhdGlvbkRlZmluaXRp
b24+KCp0aGlzKS51bmlmeU5vZGVJbXBsKCk7CisgICAgY2FzZSBLaW5kOjpOYXRpdmVUeXBlRGVj
bGFyYXRpb246CisgICAgICAgIHJldHVybiBkb3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRpb24+
KCp0aGlzKS51bmlmeU5vZGVJbXBsKCk7CisKKyAgICBkZWZhdWx0OiAKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK2Jvb2wgUmVzb2x2YWJsZVR5cGU6
OmNhblJlc29sdmUoY29uc3QgVHlwZSYgdHlwZSkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKGtpbmQo
KSkgeworICAgIGNhc2UgS2luZDo6RmxvYXRMaXRlcmFsOgorICAgICAgICByZXR1cm4gZG93bmNh
c3Q8RmxvYXRMaXRlcmFsVHlwZT4oKnRoaXMpLmNhblJlc29sdmUodHlwZSk7CisgICAgY2FzZSBL
aW5kOjpJbnRlZ2VyTGl0ZXJhbDoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEludGVnZXJMaXRl
cmFsVHlwZT4oKnRoaXMpLmNhblJlc29sdmUodHlwZSk7CisgICAgY2FzZSBLaW5kOjpOdWxsTGl0
ZXJhbDoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PE51bGxMaXRlcmFsVHlwZT4oKnRoaXMpLmNh
blJlc29sdmUodHlwZSk7CisgICAgY2FzZSBLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOgor
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU+KCp0aGlz
KS5jYW5SZXNvbHZlKHR5cGUpOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCit1bnNpZ25lZCBSZXNvbHZhYmxlVHlwZTo6Y29u
dmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmIHR5cGUpIGNvbnN0Cit7CisgICAgc3dpdGNo
IChraW5kKCkpIHsKKyAgICBjYXNlIEtpbmQ6OkZsb2F0TGl0ZXJhbDoKKyAgICAgICAgcmV0dXJu
IGRvd25jYXN0PEZsb2F0TGl0ZXJhbFR5cGU+KCp0aGlzKS5jb252ZXJzaW9uQ29zdCh0eXBlKTsK
KyAgICBjYXNlIEtpbmQ6OkludGVnZXJMaXRlcmFsOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8
SW50ZWdlckxpdGVyYWxUeXBlPigqdGhpcykuY29udmVyc2lvbkNvc3QodHlwZSk7CisgICAgY2Fz
ZSBLaW5kOjpOdWxsTGl0ZXJhbDoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PE51bGxMaXRlcmFs
VHlwZT4oKnRoaXMpLmNvbnZlcnNpb25Db3N0KHR5cGUpOworICAgIGNhc2UgS2luZDo6VW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbDoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFVuc2lnbmVkSW50ZWdl
ckxpdGVyYWxUeXBlPigqdGhpcykuY29udmVyc2lvbkNvc3QodHlwZSk7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK1N0cmlu
ZyBVbm5hbWVkVHlwZTo6dG9TdHJpbmcoKSBjb25zdAoreworICAgIHN3aXRjaCAoa2luZCgpKSB7
CisgICAgY2FzZSBLaW5kOjpUeXBlUmVmZXJlbmNlOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8
VHlwZVJlZmVyZW5jZT4oKnRoaXMpLnRvU3RyaW5nKCk7CisgICAgY2FzZSBLaW5kOjpQb2ludGVy
OgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8UG9pbnRlclR5cGU+KCp0aGlzKS50b1N0cmluZygp
OworICAgIGNhc2UgS2luZDo6QXJyYXlSZWZlcmVuY2U6CisgICAgICAgIHJldHVybiBkb3duY2Fz
dDxBcnJheVJlZmVyZW5jZVR5cGU+KCp0aGlzKS50b1N0cmluZygpOworICAgIGNhc2UgS2luZDo6
QXJyYXk6CisgICAgICAgIHJldHVybiBkb3duY2FzdDxBcnJheVR5cGU+KCp0aGlzKS50b1N0cmlu
ZygpOworICAgIGRlZmF1bHQ6IAorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIH0KKworfQorCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfSAvLyBuYW1lc3BhY2UgV0hM
U0wKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlLmgJKHJldmlz
aW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxF
KFdFQkdQVSkKIAorI2luY2x1ZGUgIldITFNMRGVmYXVsdERlbGV0ZS5oIgogI2luY2x1ZGUgPHd0
Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogCkBAIC0zOCwxMCAr
MzksMzQgQEAgbmFtZXNwYWNlIEFTVCB7CiAKIGNsYXNzIFR5cGUgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFR5cGUoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0
dWFsIH5UeXBlKCkgPSBkZWZhdWx0OworcHJvdGVjdGVkOgorICAgIH5UeXBlKCkgPSBkZWZhdWx0
OworCitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBLaW5kIDogdWludDhfdCB7CisgICAgICAgIC8v
IFVubmFtZWRUeXBlcworICAgICAgICBUeXBlUmVmZXJlbmNlLAorICAgICAgICBQb2ludGVyLAor
ICAgICAgICBBcnJheVJlZmVyZW5jZSwKKyAgICAgICAgQXJyYXksCisgICAgICAgIC8vIE5hbWVk
VHlwZXMKKyAgICAgICAgVHlwZURlZmluaXRpb24sCisgICAgICAgIFN0cnVjdHVyZURlZmluaXRp
b24sCisgICAgICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbiwKKyAgICAgICAgTmF0aXZlVHlwZURl
Y2xhcmF0aW9uLAorICAgICAgICAvLyBSZXNvbHZhYmxlVHlwZXMKKyAgICAgICAgRmxvYXRMaXRl
cmFsLAorICAgICAgICBJbnRlZ2VyTGl0ZXJhbCwKKyAgICAgICAgTnVsbExpdGVyYWwsCisgICAg
ICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwsCisgICAgfTsKKworICAgIFR5cGUoS2luZCBraW5k
KQorICAgICAgICA6IG1fa2luZChraW5kKQorICAgIHsgfQorICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koVHlwZSYpOworICAgIHN0YXRpYyB2b2lkIGRlc3RydWN0KFR5cGUmKTsKIAogICAgIGV4cGxp
Y2l0IFR5cGUoY29uc3QgVHlwZSYpID0gZGVsZXRlOwogICAgIFR5cGUoVHlwZSYmKSA9IGRlZmF1
bHQ7CkBAIC00OSwxMSArNzQsMzYgQEAgcHVibGljOgogICAgIFR5cGUmIG9wZXJhdG9yPShjb25z
dCBUeXBlJikgPSBkZWxldGU7CiAgICAgVHlwZSYgb3BlcmF0b3I9KFR5cGUmJikgPSBkZWZhdWx0
OwogCi0gICAgdmlydHVhbCBib29sIGlzTmFtZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNVbm5hbWVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzUmVzb2x2YWJsZVR5cGUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQorCisgICAg
Ym9vbCBpc1VubmFtZWRUeXBlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID49IEtpbmQ6OlR5cGVS
ZWZlcmVuY2UgJiYga2luZCgpIDw9IEtpbmQ6OkFycmF5OyB9CisgICAgYm9vbCBpc05hbWVkVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA+PSBLaW5kOjpUeXBlRGVmaW5pdGlvbiAmJiBraW5k
KCkgPD0gS2luZDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOyB9CisgICAgYm9vbCBpc1Jlc29sdmFi
bGVUeXBlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID49IEtpbmQ6OkZsb2F0TGl0ZXJhbCAmJiBr
aW5kKCkgPD0gS2luZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDsgfQorCisgICAgYm9vbCBpc1R5
cGVSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6VHlwZVJlZmVyZW5j
ZTsgfQorICAgIGJvb2wgaXNQb2ludGVyVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBL
aW5kOjpQb2ludGVyOyB9CisgICAgYm9vbCBpc0FycmF5UmVmZXJlbmNlVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpBcnJheVJlZmVyZW5jZTsgfQorICAgIGJvb2wgaXNBcnJh
eVR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6QXJyYXk7IH0KKyAgICBib29s
IGlzUmVmZXJlbmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGlzUG9pbnRlclR5cGUoKSB8fCBpc0Fy
cmF5UmVmZXJlbmNlVHlwZSgpOyB9CisKKyAgICBib29sIGlzVHlwZURlZmluaXRpb24oKSBjb25z
dCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6VHlwZURlZmluaXRpb247IH0KKyAgICBib29sIGlz
U3RydWN0dXJlRGVmaW5pdGlvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpTdHJ1
Y3R1cmVEZWZpbml0aW9uOyB9CisgICAgYm9vbCBpc0VudW1lcmF0aW9uRGVmaW5pdGlvbigpIGNv
bnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpFbnVtZXJhdGlvbkRlZmluaXRpb247IH0KKyAg
ICBib29sIGlzTmF0aXZlVHlwZURlY2xhcmF0aW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09
IEtpbmQ6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsgfQorCisgICAgYm9vbCBpc0Zsb2F0TGl0ZXJh
bFR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6RmxvYXRMaXRlcmFsOyB9Cisg
ICAgYm9vbCBpc0ludGVnZXJMaXRlcmFsVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBL
aW5kOjpJbnRlZ2VyTGl0ZXJhbDsgfQorICAgIGJvb2wgaXNOdWxsTGl0ZXJhbFR5cGUoKSBjb25z
dCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6TnVsbExpdGVyYWw7IH0KKyAgICBib29sIGlzVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDsgfQorCisgICAgVHlwZSYgdW5pZnlOb2RlKCk7CisgICAg
Y29uc3QgVHlwZSYgdW5pZnlOb2RlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjb25z
dF9jYXN0PFR5cGUqPih0aGlzKS0+dW5pZnlOb2RlKCk7CisgICAgfQogCiBwcml2YXRlOgorICAg
IEtpbmQgbV9raW5kOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVNUCkBAIC02Miw2ICsxMTIsOCBA
QCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShUeXBlKQorCiAjZGVmaW5l
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQRShUb1ZhbHVlVHlwZU5hbWUsIHByZWRp
Y2F0ZSkgXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExTTDo6QVNU
OjpUb1ZhbHVlVHlwZU5hbWUpIFwKICAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6VHlwZSYgdHlwZSkgeyByZXR1cm4gdHlwZS5wcmVkaWNhdGU7IH0gXApJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZURl
ZmluaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xUeXBlRGVmaW5pdGlvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlRGVmaW5pdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MCwzNSArNDAsMjkgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAog
bmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIFR5cGVEZWZpbml0aW9uIDogcHVibGljIE5hbWVkVHlw
ZSB7CitjbGFzcyBUeXBlRGVmaW5pdGlvbiBmaW5hbCA6IHB1YmxpYyBOYW1lZFR5cGUgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFR5cGVEZWZpbml0aW9uKENv
ZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSwgUmVmPFVubmFtZWRUeXBlPiB0eXBl
KQotICAgICAgICA6IE5hbWVkVHlwZShsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSkKKyAgICAgICAg
OiBOYW1lZFR5cGUoS2luZDo6VHlwZURlZmluaXRpb24sIGxvY2F0aW9uLCBXVEZNb3ZlKG5hbWUp
KQogICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQogICAgIHsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIH5UeXBlRGVmaW5pdGlvbigpID0gZGVmYXVsdDsKKyAgICB+VHlwZURlZmluaXRpb24o
KSA9IGRlZmF1bHQ7CiAKICAgICBUeXBlRGVmaW5pdGlvbihjb25zdCBUeXBlRGVmaW5pdGlvbiYp
ID0gZGVsZXRlOwogICAgIFR5cGVEZWZpbml0aW9uKFR5cGVEZWZpbml0aW9uJiYpID0gZGVmYXVs
dDsKIAotICAgIGJvb2wgaXNUeXBlRGVmaW5pdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KLQogICAgIFVubmFtZWRUeXBlJiB0eXBlKCkgeyByZXR1cm4gbV90eXBlOyB9CiAK
LSAgICBjb25zdCBUeXBlJiB1bmlmeU5vZGUoKSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fdHlwZS0+dW5pZnlOb2RlKCk7Ci0gICAgfQotCi0gICAgVHlwZSYgdW5pZnlO
b2RlKCkgb3ZlcnJpZGUKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFR5cGU7CisgICAgVHlw
ZSYgdW5pZnlOb2RlSW1wbCgpCiAgICAgewogICAgICAgICByZXR1cm4gbV90eXBlLT51bmlmeU5v
ZGUoKTsKICAgICB9CiAKLXByaXZhdGU6CiAgICAgUmVmPFVubmFtZWRUeXBlPiBtX3R5cGU7CiB9
OwogCkBAIC03OCw2ICs3Miw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVM
RVRFKFR5cGVEZWZpbml0aW9uKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX05BTUVE
X1RZUEUoVHlwZURlZmluaXRpb24sIGlzVHlwZURlZmluaXRpb24oKSkKIAogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJl
bmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMVHlwZVJlZmVyZW5jZS5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKiBuZXcgVHlwZVJlZmVyZW5jZShsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZSh0
eXBlQXJndW1lbnRzKSkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgflR5cGVSZWZlcmVuY2UoKSA9
IGRlZmF1bHQ7CisgICAgflR5cGVSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CiAKICAgICBzdGF0aWMg
UmVmPFR5cGVSZWZlcmVuY2U+IHdyYXAoQ29kZUxvY2F0aW9uLCBOYW1lZFR5cGUmIHJlc29sdmVk
VHlwZSk7CiAKQEAgLTcyLDE4ICs3Miw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICptX3Jl
c29sdmVkVHlwZTsKICAgICB9CiAKLSAgICBjb25zdCBUeXBlJiB1bmlmeU5vZGUoKSBjb25zdCBv
dmVycmlkZQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcmVzb2x2ZWRUeXBlKTsKLSAgICAgICAg
cmV0dXJuIG1fcmVzb2x2ZWRUeXBlLT51bmlmeU5vZGUoKTsKLSAgICB9Ci0KLSAgICBUeXBlJiB1
bmlmeU5vZGUoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcmVzb2x2ZWRUeXBl
KTsKLSAgICAgICAgcmV0dXJuIG1fcmVzb2x2ZWRUeXBlLT51bmlmeU5vZGUoKTsKLSAgICB9Ci0K
ICAgICB2b2lkIHNldFJlc29sdmVkVHlwZShOYW1lZFR5cGUmIHJlc29sdmVkVHlwZSkKICAgICB7
CiAgICAgICAgIG1fcmVzb2x2ZWRUeXBlID0gJnJlc29sdmVkVHlwZTsKQEAgLTEwMywxMyArOTEs
MjAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gJnVuaWZ5Tm9kZSgpID09ICZvdGhlci51bmlm
eU5vZGUoKTsKICAgICB9CiAKLSAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCBvdmVycmlkZQor
ICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQobV9yZXNv
bHZlZFR5cGUpOwogICAgICAgICByZXR1cm4gbV9yZXNvbHZlZFR5cGUtPm5hbWUoKTsKICAgICB9
CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFR5cGU7CisgICAgVHlwZSYgdW5pZnlOb2Rl
SW1wbCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9yZXNvbHZlZFR5cGUpOworICAgICAgICBy
ZXR1cm4gbV9yZXNvbHZlZFR5cGUtPnVuaWZ5Tm9kZSgpOworICAgIH0KKwogICAgIFN0cmluZyBt
X25hbWU7CiAgICAgVHlwZUFyZ3VtZW50cyBtX3R5cGVBcmd1bWVudHM7CiAgICAgTmFtZWRUeXBl
KiBtX3Jlc29sdmVkVHlwZSB7IG51bGxwdHIgfTsKQEAgLTEyMSw2ICsxMTYsOCBAQCBwcml2YXRl
OgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShUeXBlUmVmZXJlbmNlKQorCiBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX1dITFNMX1VOTkFNRURfVFlQRShUeXBlUmVmZXJlbmNlLCBpc1R5cGVS
ZWZlcmVuY2UoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuY3BwCShyZXZp
c2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xVbm5hbWVkVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDMyICs0MSwzNiBAQCBu
YW1lc3BhY2UgQVNUIHsKIAogdW5zaWduZWQgVW5uYW1lZFR5cGU6Omhhc2goKSBjb25zdAogewot
ICAgIHN3aXRjaCAobV9raW5kKSB7CisgICAgc3dpdGNoIChraW5kKCkpIHsKICAgICBjYXNlIEtp
bmQ6OlR5cGVSZWZlcmVuY2U6CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxUeXBlUmVmZXJlbmNl
PigqdGhpcykuaGFzaCgpOwotICAgIGNhc2UgS2luZDo6UG9pbnRlclR5cGU6CisgICAgY2FzZSBL
aW5kOjpQb2ludGVyOgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8UG9pbnRlclR5cGU+KCp0aGlz
KS5oYXNoKCk7Ci0gICAgY2FzZSBLaW5kOjpBcnJheVJlZmVyZW5jZVR5cGU6CisgICAgY2FzZSBL
aW5kOjpBcnJheVJlZmVyZW5jZToKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFycmF5UmVmZXJl
bmNlVHlwZT4oKnRoaXMpLmhhc2goKTsKLSAgICBjYXNlIEtpbmQ6OkFycmF5VHlwZToKKyAgICBj
YXNlIEtpbmQ6OkFycmF5OgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8QXJyYXlUeXBlPigqdGhp
cykuaGFzaCgpOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgfQogfQogCiBib29sIFVubmFtZWRUeXBlOjpvcGVyYXRvcj09KGNvbnN0IFVu
bmFtZWRUeXBlJiBvdGhlcikgY29uc3QKIHsKLSAgICBpZiAob3RoZXIubV9raW5kICE9IG1fa2lu
ZCkKKyAgICBpZiAob3RoZXIua2luZCgpICE9IGtpbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgc3dpdGNoIChtX2tpbmQpIHsKKyAgICBzd2l0Y2ggKGtpbmQoKSkgewogICAgIGNh
c2UgS2luZDo6VHlwZVJlZmVyZW5jZToKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFR5cGVSZWZl
cmVuY2U+KCp0aGlzKSA9PSBkb3duY2FzdDxUeXBlUmVmZXJlbmNlPihvdGhlcik7Ci0gICAgY2Fz
ZSBLaW5kOjpQb2ludGVyVHlwZToKKyAgICBjYXNlIEtpbmQ6OlBvaW50ZXI6CiAgICAgICAgIHJl
dHVybiBkb3duY2FzdDxQb2ludGVyVHlwZT4oKnRoaXMpID09IGRvd25jYXN0PFBvaW50ZXJUeXBl
PihvdGhlcik7Ci0gICAgY2FzZSBLaW5kOjpBcnJheVJlZmVyZW5jZVR5cGU6CisgICAgY2FzZSBL
aW5kOjpBcnJheVJlZmVyZW5jZToKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFycmF5UmVmZXJl
bmNlVHlwZT4oKnRoaXMpID09IGRvd25jYXN0PEFycmF5UmVmZXJlbmNlVHlwZT4ob3RoZXIpOwot
ICAgIGNhc2UgS2luZDo6QXJyYXlUeXBlOgorICAgIGNhc2UgS2luZDo6QXJyYXk6CiAgICAgICAg
IHJldHVybiBkb3duY2FzdDxBcnJheVR5cGU+KCp0aGlzKSA9PSBkb3duY2FzdDxBcnJheVR5cGU+
KG90aGVyKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZS5oCShyZXZpc2lvbiAyNDg0
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5h
bWVkVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw0MyArNDUsMjMgQEAgY2xhc3MgVW5uYW1l
ZFR5cGUgOiBwdWJsaWMgVHlwZSwgcHVibGljIAogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVubmFtZWRUeXBlKTsKIHB1YmxpYzoKLSAgICBl
bnVtIGNsYXNzIEtpbmQgewotICAgICAgICBUeXBlUmVmZXJlbmNlLAotICAgICAgICBQb2ludGVy
VHlwZSwKLSAgICAgICAgQXJyYXlSZWZlcmVuY2VUeXBlLAotICAgICAgICBBcnJheVR5cGUKLSAg
ICB9OwotCiAgICAgVW5uYW1lZFR5cGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBLaW5kIGtpbmQp
Ci0gICAgICAgIDogbV9jb2RlTG9jYXRpb24obG9jYXRpb24pCi0gICAgICAgICwgbV9raW5kKGtp
bmQpCisgICAgICAgIDogVHlwZShraW5kKQorICAgICAgICAsIG1fY29kZUxvY2F0aW9uKGxvY2F0
aW9uKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5Vbm5hbWVkVHlwZSgpID0gZGVmYXVs
dDsKLQotICAgIGJvb2wgaXNVbm5hbWVkVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KLQotICAgIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQotICAgIGJv
b2wgaXNUeXBlUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4gbV9raW5kID09IEtpbmQ6OlR5cGVS
ZWZlcmVuY2U7IH0KLSAgICBib29sIGlzUG9pbnRlclR5cGUoKSBjb25zdCB7IHJldHVybiBtX2tp
bmQgPT0gS2luZDo6UG9pbnRlclR5cGU7IH0KLSAgICBib29sIGlzQXJyYXlSZWZlcmVuY2VUeXBl
KCkgY29uc3QgeyByZXR1cm4gbV9raW5kID09IEtpbmQ6OkFycmF5UmVmZXJlbmNlVHlwZTsgfQot
ICAgIGJvb2wgaXNBcnJheVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2tpbmQgPT0gS2luZDo6QXJy
YXlUeXBlOyB9Ci0gICAgYm9vbCBpc1JlZmVyZW5jZVR5cGUoKSBjb25zdCB7IHJldHVybiBpc1Bv
aW50ZXJUeXBlKCkgfHwgaXNBcnJheVJlZmVyZW5jZVR5cGUoKTsgfQotCi0gICAgdmlydHVhbCBj
b25zdCBUeXBlJiB1bmlmeU5vZGUoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQotICAgIHZpcnR1
YWwgVHlwZSYgdW5pZnlOb2RlKCkgeyByZXR1cm4gKnRoaXM7IH0KLQogICAgIHVuc2lnbmVkIGhh
c2goKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVW5uYW1lZFR5cGUmKSBjb25z
dDsKIAotICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgPSAwOworICAgIFN0cmlu
ZyB0b1N0cmluZygpIGNvbnN0OwogCi0gICAgY29uc3QgQ29kZUxvY2F0aW9uJiBjb2RlTG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2NvZGVMb2NhdGlvbjsgfQorICAgIENvZGVMb2NhdGlvbiBj
b2RlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvZGVMb2NhdGlvbjsgfQogCiBwcml2YXRl
OgorICAgIGZyaWVuZCBjbGFzcyBUeXBlOworICAgIFR5cGUmIHVuaWZ5Tm9kZUltcGwoKSB7IHJl
dHVybiAqdGhpczsgfQogICAgIENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKLSAgICBLaW5k
IG1fa2luZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFTVApAQCAtOTAsNiArNzAsOCBAQCBwcml2
YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShVbm5hbWVkVHlwZSkKKwogI2RlZmlu
ZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1VOTkFNRURfVFlQRShUb1ZhbHVlVHlwZU5h
bWUsIHByZWRpY2F0ZSkgXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpX
SExTTDo6QVNUOjpUb1ZhbHVlVHlwZU5hbWUpIFwKICAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29u
c3QgV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGUu
cHJlZGljYXRlOyB9IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRl
cmFsLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaAkod29ya2luZyBjb3B5KQpA
QCAtMzcsMTcgKzM3LDE3IEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1Qgewog
Ci1jbGFzcyBVbnNpZ25lZEludGVnZXJMaXRlcmFsIDogcHVibGljIEV4cHJlc3Npb24geworY2xh
c3MgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBVbnNpZ25lZEludGVnZXJM
aXRlcmFsKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgdW5zaWduZWQgdmFsdWUpCi0gICAgICAgIDog
RXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5k
OjpVbnNpZ25lZEludGVnZXJMaXRlcmFsKQogICAgICAgICAsIG1fdHlwZShsb2NhdGlvbiwgdmFs
dWUpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVh
bCB+VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpID0gZGVmYXVsdDsKKyAgICB+VW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbCgpID0gZGVmYXVsdDsKIAogICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwoY29u
c3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYpID0gZGVsZXRlOwogICAgIFVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwoVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CkBAIC01OCw4ICs1
OCw2IEBAIHB1YmxpYzoKICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYgdHlwZSgpIHsg
cmV0dXJuIG1fdHlwZTsgfQogICAgIHVuc2lnbmVkIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92
YWx1ZTsgfQogCi0gICAgYm9vbCBpc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWwoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsIGNsb25l
KCkgY29uc3QKICAgICB7CiAgICAgICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwgcmVzdWx0KGNv
ZGVMb2NhdGlvbigpLCBtX3ZhbHVlKTsKQEAgLTgzLDYgKzgxLDggQEAgcHJpdmF0ZToKIAogfQog
CitERUZJTkVfREVGQVVMVF9ERUxFVEUoVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkKKwogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFVuc2lnbmVkSW50ZWdlckxpdGVyYWws
IGlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxU
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5jcHAJKHJldmlzaW9uIDI0ODQw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2ln
bmVkSW50ZWdlckxpdGVyYWxUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTcgKzQxLDEy
IEBAIG5hbWVzcGFjZSBXSExTTCB7CiBuYW1lc3BhY2UgQVNUIHsKIAogVW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbFR5cGU6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKENvZGVMb2NhdGlvbiBsb2Nh
dGlvbiwgdW5zaWduZWQgdmFsdWUpCi0gICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIDogUmVzb2x2
YWJsZVR5cGUoS2luZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkKKyAgICAsIG1fdmFsdWUodmFs
dWUpCiAgICAgLCBtX3ByZWZlcnJlZFR5cGUoVHlwZVJlZmVyZW5jZTo6Y3JlYXRlKGxvY2F0aW9u
LCAidWludCJfc3RyLCBUeXBlQXJndW1lbnRzKCkpKQogewogfQogCi1VbnNpZ25lZEludGVnZXJM
aXRlcmFsVHlwZTo6flVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKCkgPSBkZWZhdWx0OwotCi1V
bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZTo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwotCi1VbnNpZ25lZEludGVnZXJM
aXRlcmFsVHlwZSYgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU6Om9wZXJhdG9yPShVbnNpZ25l
ZEludGVnZXJMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7Ci0KIGJvb2wgVW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbFR5cGU6OmNhblJlc29sdmUoY29uc3QgVHlwZSYgdHlwZSkgY29uc3QKIHsKICAgICBp
ZiAoIWlzPE5hbWVkVHlwZT4odHlwZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2ln
bmVkSW50ZWdlckxpdGVyYWxUeXBlLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxU
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDI3ICs0MCwyNSBAQCBuYW1lc3BhY2UgQVNUIHsK
IAogY2xhc3MgVHlwZVJlZmVyZW5jZTsKIAotY2xhc3MgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5
cGUgOiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUgeworY2xhc3MgVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bFR5cGUgZmluYWwgOiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKENvZGVM
b2NhdGlvbiwgdW5zaWduZWQgdmFsdWUpOwogCi0gICAgdmlydHVhbCB+VW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbFR5cGUoKTsKKyAgICB+VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoKSA9IGRlZmF1
bHQ7CiAKICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZShjb25zdCBVbnNpZ25lZEludGVn
ZXJMaXRlcmFsVHlwZSYpID0gZGVsZXRlOwotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBl
KFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiYpOworICAgIFVuc2lnbmVkSW50ZWdlckxpdGVy
YWxUeXBlKFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKIAogICAgIFVu
c2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiBvcGVyYXRvcj0oY29uc3QgVW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYg
b3BlcmF0b3I9KFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiYpOwotCi0gICAgYm9vbCBpc1Vu
c2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiBvcGVyYXRvcj0oVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwogCiAgICAgdW5zaWduZWQgdmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKICAgICBUeXBlUmVmZXJlbmNlJiBwcmVmZXJyZWRUeXBl
KCkgeyByZXR1cm4gbV9wcmVmZXJyZWRUeXBlOyB9CiAKLSAgICBib29sIGNhblJlc29sdmUoY29u
c3QgVHlwZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHVuc2lnbmVkIGNvbnZlcnNpb25Db3N0KGNv
bnN0IFVubmFtZWRUeXBlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5SZXNvbHZlKGNv
bnN0IFR5cGUmKSBjb25zdDsKKyAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChjb25zdCBVbm5h
bWVkVHlwZSYpIGNvbnN0OwogCiAgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUgY2xvbmUo
KSBjb25zdDsKIApAQCAtNzcsNiArNzUsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZB
VUxUX0RFTEVURShVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSkKKwogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XSExTTF9SRVNPTFZBQkxFX1RZUEUoVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUs
IGlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9u
c1N0YXRlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgJKHJldmlzaW9u
IDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDIy
ICszOSwyMCBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3Mg
VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNz
IFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50IGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVmFyaWFibGVEZWNs
YXJhdGlvbnNTdGF0ZW1lbnQoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBWYXJpYWJsZURlY2xhcmF0
aW9ucyYmIHZhcmlhYmxlRGVjbGFyYXRpb25zKQotICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlv
bikKKyAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OlZhcmlhYmxlRGVjbGFyYXRp
b25zKQogICAgICAgICAsIG1fdmFyaWFibGVEZWNsYXJhdGlvbnMoV1RGTW92ZSh2YXJpYWJsZURl
Y2xhcmF0aW9ucykpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgflZhcmlhYmxlRGVjbGFy
YXRpb25zU3RhdGVtZW50KCkgPSBkZWZhdWx0OworICAgIH5WYXJpYWJsZURlY2xhcmF0aW9uc1N0
YXRlbWVudCgpID0gZGVmYXVsdDsKIAogICAgIFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50
KGNvbnN0IFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50JikgPSBkZWxldGU7CiAgICAgVmFy
aWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQm
JikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc1ZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgVmVjdG9yPFVuaXF1ZVJl
ZjxWYXJpYWJsZURlY2xhcmF0aW9uPj4mIHZhcmlhYmxlRGVjbGFyYXRpb25zKCkgeyByZXR1cm4g
bV92YXJpYWJsZURlY2xhcmF0aW9uczsgfQogCiBwcml2YXRlOgpAQCAtNjcsNiArNjUsOCBAQCBw
cml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShWYXJpYWJsZURlY2xhcmF0aW9u
c1N0YXRlbWVudCkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoVmFy
aWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQsIGlzVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1l
bnQoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlUmVmZXJlbmNlLmgJKHJl
dmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFZhcmlhYmxlUmVmZXJlbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE2ICszOCwx
NiBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgVmFyaWFi
bGVSZWZlcmVuY2UgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBWYXJpYWJsZVJlZmVyZW5j
ZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBWYXJpYWJsZVJlZmVyZW5jZShDb2RlTG9jYXRpb24gbG9jYXRpb24s
IFN0cmluZyYmIG5hbWUpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAg
OiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpWYXJpYWJsZVJlZmVyZW5jZSkKICAgICAgICAg
LCBtX25hbWUoV1RGTW92ZShuYW1lKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+VmFy
aWFibGVSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CisgICAgflZhcmlhYmxlUmVmZXJlbmNlKCkgPSBk
ZWZhdWx0OwogCiAgICAgVmFyaWFibGVSZWZlcmVuY2UoY29uc3QgVmFyaWFibGVSZWZlcmVuY2Um
KSA9IGRlbGV0ZTsKICAgICBWYXJpYWJsZVJlZmVyZW5jZShWYXJpYWJsZVJlZmVyZW5jZSYmKSA9
IGRlZmF1bHQ7CkBAIC02MCw4ICs2MCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAKLSAgICBib29sIGlzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBTdHJpbmcmIG5hbWUoKSB7IHJldHVybiBtX25hbWU7
IH0KIAogICAgIFZhcmlhYmxlRGVjbGFyYXRpb24qIHZhcmlhYmxlKCkgeyByZXR1cm4gbV92YXJp
YWJsZTsgfQpAQCAtNzMsNyArNzEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgVmFyaWFi
bGVSZWZlcmVuY2UoQ29kZUxvY2F0aW9uIGxvY2F0aW9uKQotICAgICAgICA6IEV4cHJlc3Npb24o
bG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6VmFyaWFibGVS
ZWZlcmVuY2UpCiAgICAgewogICAgIH0KIApAQCAtODcsNiArODUsOCBAQCBwcml2YXRlOgogCiB9
CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShWYXJpYWJsZVJlZmVyZW5jZSkKKwogU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFZhcmlhYmxlUmVmZXJlbmNlLCBpc1Zhcmlh
YmxlUmVmZXJlbmNlKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmgJKHJldmlzaW9u
IDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFdoaWxlTG9vcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyMyArMzgsMjEgQEAgbmFtZXNwYWNl
IFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIFdoaWxlTG9vcCA6IHB1YmxpYyBT
dGF0ZW1lbnQgeworY2xhc3MgV2hpbGVMb29wIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2hpbGVMb29wKENvZGVM
b2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgY29uZGl0aW9uYWwsIFVu
aXF1ZVJlZjxTdGF0ZW1lbnQ+JiYgYm9keSkKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24p
CisgICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpXaGlsZUxvb3ApCiAgICAgICAg
ICwgbV9jb25kaXRpb25hbChXVEZNb3ZlKGNvbmRpdGlvbmFsKSkKICAgICAgICAgLCBtX2JvZHko
V1RGTW92ZShib2R5KSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+V2hpbGVMb29wKCkg
PSBkZWZhdWx0OworICAgIH5XaGlsZUxvb3AoKSA9IGRlZmF1bHQ7CiAKICAgICBXaGlsZUxvb3Ao
Y29uc3QgV2hpbGVMb29wJikgPSBkZWxldGU7CiAgICAgV2hpbGVMb29wKFdoaWxlTG9vcCYmKSA9
IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzV2hpbGVMb29wKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQotCiAgICAgRXhwcmVzc2lvbiYgY29uZGl0aW9uYWwoKSB7IHJldHVybiBtX2Nv
bmRpdGlvbmFsOyB9CiAgICAgU3RhdGVtZW50JiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9CiAK
QEAgLTY5LDYgKzY3LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUo
V2hpbGVMb29wKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChXaGls
ZUxvb3AsIGlzV2hpbGVMb29wKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVy
LmNwcAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw5ICs3
Miw5IEBAIHB1YmxpYzoKICAgICAKICAgICBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kIGtpbmQoKSB7
IHJldHVybiBtX2tpbmQ7IH0KICAgICBib29sIGlzUmVmZXJlbmNlVHlwZU5hbWVOb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9raW5kID09IEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlR5cGVSZWZlcmVu
Y2U7IH0KLSAgICBib29sIGlzUG9pbnRlclR5cGVOYW1lTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
a2luZCA9PSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQb2ludGVyVHlwZTsgfQotICAgIGJvb2wg
aXNBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCA9PSBB
U1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVyZW5jZVR5cGU7IH0KLSAgICBib29sIGlz
QXJyYXlUeXBlTmFtZU5vZGUoKSBjb25zdCB7IHJldHVybiBtX2tpbmQgPT0gQVNUOjpVbm5hbWVk
VHlwZTo6S2luZDo6QXJyYXlUeXBlOyB9CisgICAgYm9vbCBpc1BvaW50ZXJUeXBlTmFtZU5vZGUo
KSBjb25zdCB7IHJldHVybiBtX2tpbmQgPT0gQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRl
cjsgfQorICAgIGJvb2wgaXNBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fa2luZCA9PSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVyZW5jZTsgfQor
ICAgIGJvb2wgaXNBcnJheVR5cGVOYW1lTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCA9PSBB
U1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheTsgfQogCiAgICAgQmFzZVR5cGVOYW1lTm9kZSog
cGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KICAgICBNYW5nbGVkVHlwZU5hbWUgbWFuZ2xl
ZE5hbWUoKSBjb25zdCB7IHJldHVybiBtX21hbmdsZWROYW1lOyB9CkBAIC04OSw3ICs4OSw3IEBA
IGNsYXNzIEFycmF5VHlwZU5hbWVOb2RlIGZpbmFsIDogcHVibGljIEIKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBBcnJheVR5cGVOYW1lTm9kZShCYXNlVHlwZU5h
bWVOb2RlKiBwYXJlbnQsIE1hbmdsZWRUeXBlTmFtZSYmIG1hbmdsZWROYW1lLCB1bnNpZ25lZCBu
dW1FbGVtZW50cykKLSAgICAgICAgOiBCYXNlVHlwZU5hbWVOb2RlKHBhcmVudCwgV1RGTW92ZSht
YW5nbGVkTmFtZSksIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5VHlwZSkKKyAgICAgICAg
OiBCYXNlVHlwZU5hbWVOb2RlKHBhcmVudCwgV1RGTW92ZShtYW5nbGVkTmFtZSksIEFTVDo6VW5u
YW1lZFR5cGU6OktpbmQ6OkFycmF5KQogICAgICAgICAsIG1fbnVtRWxlbWVudHMobnVtRWxlbWVu
dHMpCiAgICAgewogICAgIH0KQEAgLTEwNCw3ICsxMDQsNyBAQCBjbGFzcyBBcnJheVJlZmVyZW5j
ZVR5cGVOYW1lTm9kZSBmaW5hbCA6CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgQXJyYXlSZWZlcmVuY2VUeXBlTmFtZU5vZGUoQmFzZVR5cGVOYW1lTm9kZSogcGFy
ZW50LCBNYW5nbGVkVHlwZU5hbWUmJiBtYW5nbGVkTmFtZSwgQVNUOjpBZGRyZXNzU3BhY2UgYWRk
cmVzc1NwYWNlKQotICAgICAgICA6IEJhc2VUeXBlTmFtZU5vZGUocGFyZW50LCBXVEZNb3ZlKG1h
bmdsZWROYW1lKSwgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2VUeXBlKQor
ICAgICAgICA6IEJhc2VUeXBlTmFtZU5vZGUocGFyZW50LCBXVEZNb3ZlKG1hbmdsZWROYW1lKSwg
QVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2UpCiAgICAgICAgICwgbV9hZGRy
ZXNzU3BhY2UoYWRkcmVzc1NwYWNlKQogICAgIHsKICAgICB9CkBAIC0xMTksNyArMTE5LDcgQEAg
Y2xhc3MgUG9pbnRlclR5cGVOYW1lTm9kZSBmaW5hbCA6IHB1YmxpYwogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFBvaW50ZXJUeXBlTmFtZU5vZGUoQmFzZVR5cGVO
YW1lTm9kZSogcGFyZW50LCBNYW5nbGVkVHlwZU5hbWUmJiBtYW5nbGVkTmFtZSwgQVNUOjpBZGRy
ZXNzU3BhY2UgYWRkcmVzc1NwYWNlKQotICAgICAgICA6IEJhc2VUeXBlTmFtZU5vZGUocGFyZW50
LCBXVEZNb3ZlKG1hbmdsZWROYW1lKSwgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlclR5
cGUpCisgICAgICAgIDogQmFzZVR5cGVOYW1lTm9kZShwYXJlbnQsIFdURk1vdmUobWFuZ2xlZE5h
bWUpLCBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQb2ludGVyKQogICAgICAgICAsIG1fYWRkcmVz
c1NwYWNlKGFkZHJlc3NTcGFjZSkKICAgICB7CiAgICAgfQpAQCAtMjc0LDE4ICsyNzQsMjAgQEAg
c3RkOjp1bmlxdWVfcHRyPEJhc2VUeXBlTmFtZU5vZGU+IFR5cGVOYQogICAgICAgICBhdXRvJiB0
eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8QVNUOjpUeXBlUmVmZXJlbmNlPih1bm5hbWVkVHlwZSk7
CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlZmVyZW5jZVR5cGVOYW1lTm9kZT4o
cGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCB0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlw
ZSgpKTsKICAgICB9Ci0gICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQb2ludGVyVHlw
ZTogeworICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlcjogewogICAgICAg
ICBhdXRvJiBwb2ludGVyVHlwZSA9IGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KHVubmFtZWRU
eXBlKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9pbnRlclR5cGVOYW1lTm9k
ZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBwb2ludGVyVHlwZS5hZGRyZXNzU3Bh
Y2UoKSk7CiAgICAgfQotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlSZWZl
cmVuY2VUeXBlOiB7CisgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVy
ZW5jZTogewogICAgICAgICBhdXRvJiBhcnJheVJlZmVyZW5jZVR5cGUgPSBkb3duY2FzdDxBU1Q6
OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpOwogICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5l
eHRUeXBlTmFtZSgpLCBhcnJheVJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkpOwogICAgIH0K
LSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5VHlwZTogeworICAgIGNhc2Ug
QVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXk6IHsKICAgICAgICAgYXV0byYgYXJyYXlUeXBl
ID0gZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRUeXBlKTsKICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8QXJyYXlUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0
VHlwZU5hbWUoKSwgYXJyYXlUeXBlLm51bUVsZW1lbnRzKCkpOwogICAgIH0KKyAgICBkZWZhdWx0
OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIH0KIApAQCAt
Mjk0LDEyICsyOTYsMTQgQEAgc3RhdGljIEFTVDo6VW5uYW1lZFR5cGUqIHBhcmVudChBU1Q6OlVu
bgogICAgIHN3aXRjaCAodW5uYW1lZFR5cGUua2luZCgpKSB7CiAgICAgY2FzZSBBU1Q6OlVubmFt
ZWRUeXBlOjpLaW5kOjpUeXBlUmVmZXJlbmNlOgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlBvaW50ZXJUeXBlOgorICAgIGNhc2UgQVNU
OjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlcjoKICAgICAgICAgcmV0dXJuICZkb3duY2FzdDxB
U1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVHlwZSkuZWxlbWVudFR5cGUoKTsKLSAgICBjYXNlIEFT
VDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5UmVmZXJlbmNlVHlwZToKKyAgICBjYXNlIEFTVDo6
VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5UmVmZXJlbmNlOgogICAgICAgICByZXR1cm4gJmRvd25j
YXN0PEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSkuZWxlbWVudFR5cGUoKTsK
LSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5VHlwZToKKyAgICBjYXNlIEFT
VDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5OgogICAgICAgICByZXR1cm4gJmRvd25jYXN0PEFT
VDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSkudHlwZSgpOworICAgIGRlZmF1bHQ6CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogfQogCkBAIC0zNjEsMTMgKzM2
NSwxMyBAQCB2b2lkIFR5cGVOYW1lcjo6ZW1pdFVubmFtZWRUeXBlRGVmaW5pdGlvCiAgICAgICAg
IHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInR5cGVkZWYgIiwgbWFuZ2xlZE5hbWVGb3JU
eXBlKG5hbWVkVHlwZSksICcgJywgYmFzZVR5cGVOYW1lTm9kZS5tYW5nbGVkTmFtZSgpLCAiO1xu
Iik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6Oktp
bmQ6OlBvaW50ZXJUeXBlOiB7CisgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQb2lu
dGVyOiB7CiAgICAgICAgIGF1dG8mIHBvaW50ZXJUeXBlID0gZG93bmNhc3Q8UG9pbnRlclR5cGVO
YW1lTm9kZT4oYmFzZVR5cGVOYW1lTm9kZSk7CiAgICAgICAgIEFTU0VSVChiYXNlVHlwZU5hbWVO
b2RlLnBhcmVudCgpKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgidHlw
ZWRlZiAiLCB0b1N0cmluZyhwb2ludGVyVHlwZS5hZGRyZXNzU3BhY2UoKSksICcgJywgcG9pbnRl
clR5cGUucGFyZW50KCktPm1hbmdsZWROYW1lKCksICIqICIsIHBvaW50ZXJUeXBlLm1hbmdsZWRO
YW1lKCksICI7XG4iKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgQVNUOjpVbm5h
bWVkVHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2VUeXBlOiB7CisgICAgY2FzZSBBU1Q6OlVubmFt
ZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVyZW5jZTogewogICAgICAgICBhdXRvJiBhcnJheVJlZmVy
ZW5jZVR5cGUgPSBkb3duY2FzdDxBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZT4oYmFzZVR5cGVO
YW1lTm9kZSk7CiAgICAgICAgIEFTU0VSVChiYXNlVHlwZU5hbWVOb2RlLnBhcmVudCgpKTsKICAg
ICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKQEAgLTM3OCwxMiArMzgyLDE0IEBA
IHZvaWQgVHlwZU5hbWVyOjplbWl0VW5uYW1lZFR5cGVEZWZpbml0aW8KICAgICAgICAgKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJy
YXlUeXBlOiB7CisgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheTogewogICAg
ICAgICBhdXRvJiBhcnJheVR5cGUgPSBkb3duY2FzdDxBcnJheVR5cGVOYW1lTm9kZT4oYmFzZVR5
cGVOYW1lTm9kZSk7CiAgICAgICAgIEFTU0VSVChiYXNlVHlwZU5hbWVOb2RlLnBhcmVudCgpKTsK
ICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgidHlwZWRlZiBhcnJheTwiLCBh
cnJheVR5cGUucGFyZW50KCktPm1hbmdsZWROYW1lKCksICIsICIsIGFycmF5VHlwZS5udW1FbGVt
ZW50cygpLCAiPiAiLCBhcnJheVR5cGUubWFuZ2xlZE5hbWUoKSwgIjtcbiIpOwogICAgICAgICBi
cmVhazsKICAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9CiAKICAgICBlbWl0dGVkVW5uYW1lZFR5cGVzLmFkZCgmYmFzZVR5cGVO
YW1lTm9kZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIyMzEsNyAr
MjIzMSw2IEBACiAJCTdDODEzOUE4MUVENjI4NzQwMENFMjZFOCAvKiBKU0RPTU9wZXJhdGlvblJl
dHVybmluZ1Byb21pc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDODEzOUE1MUVENjI4MUQwMENFMjZFOCAvKiBKU0RPTU9wZXJhdGlvblJldHVybmlu
Z1Byb21pc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3QzgxMzlBQTFFRDY2MDRCMDBDRTI2RTggLyogSlNET01DYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4
MTM5QTkxRUQ2MkRGMjAwQ0UyNkU4IC8qIEpTRE9NQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzgzREU4
NjFEMDRDQzVEMDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzgzREU4NTFEMDRDQkQ0MDBGRUJDRjMgLyogU3By
aW5nU29sdmVyLmggKi87IH07Ci0JCTdDODVCMjAyMjJGQjA0ODUwMDMwNjg0RiAvKiBXSExTTFVu
bmFtZWRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDODVCMjAxMjJGQjA0ODUwMDMwNjg0RiAvKiBXSExTTFVubmFtZWRUeXBlLmNwcCAqLzsg
fTsKIAkJN0M4RTM0QUQxRTRBMzNBRjAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEFueS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4RTM0OTIxRTRBMzM4
RTAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEFueS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDOEUzNEFFMUU0QTMzQUYwMDU0Q0UyMyAvKiBKU0RP
TUNvbnZlcnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzhFMzQ5MzFFNEEzMzhFMDA1NENFMjMgLyogSlNET01Db252ZXJ0QmFzZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDOEUzNEFGMUU0
QTMzQUYwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRCb29sZWFuLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzhFMzQ5NDFFNEEzMzhFMDA1NENFMjMgLyog
SlNET01Db252ZXJ0Qm9vbGVhbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC04MzE1LDYgKzgzMTQsNyBAQAogCQk1MjEzMUU1QTFDNEYxNTYxMDAz
M0Y4MDIgLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjE1ODYyQzIyOTM3N0I3MDA1OTI1RUYgLyog
V0hMU0xBU1QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xBU1QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTIyQkFCOTYyMkU2QTM2MjAwQzU0Q0U5IC8qIFdITFNMQ29kZUxvY2F0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ29kZUxvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUyMkQwN0EzMjJGQkFCNDMwMEI5MDVCRSAvKiBXSExTTEV4cHJlc3Npb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xFeHByZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTIyREEzRDMyMjlFMUQzOTAwNDJEMTUxIC8qIFdITFNMR2xvYmFs
VmFyaWFibGVSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xHbG9iYWxWYXJpYWJsZVJl
ZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjJFMUExNzIyOTdENkQ0
MDBFNUQzNkEgLyogV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUyMkUxQTE5MjI5N0Q2RDQwMEU1RDM2QSAvKiBXSExTTFByZXNl
cnZlVmFyaWFibGVMaWZldGltZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQcmVzZXJ2ZVZhcmlh
YmxlTGlmZXRpbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MzI3LDYgKzgz
MjcsNyBAQAogCQk1MkIwRDRCRDFDNTdGRDFFMDA3N0NFNTMgLyogUGxhdGZvcm1WaWV3LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtVmlldy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MkIwRDRCRjFDNTdGRDY2MDA3N0NFNTMgLyogVmlkZW9GdWxs
c2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTJCMEQ0QzExQzU3RkY5MTAwNzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJDQjExREIyMkZE
REIyRTAwOUYwQTY0IC8qIFdITFNMRGVmYXVsdERlbGV0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TERlZmF1bHREZWxldGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJENUExOEQx
QzU0NTkwMzAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5MYXll
ck1hbmFnZXJPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkQ1QTE4RTFD
NTQ1OTAzMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJP
YmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRDVBMUE0MUM1NzQ4ODkwMERF
MzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTcwODAsNiArMTcwODEsNyBAQAogCQkJCUMyMUJGNzA2MjFDRDg5QzcwMDIyNzk3OSAv
KiBXSExTTENvbW1hRXhwcmVzc2lvbi5oICovLAogCQkJCUMyMUJGNzMzMjFDRDg5RjAwMDIyNzk3
OSAvKiBXSExTTENvbnN0YW50RXhwcmVzc2lvbi5oICovLAogCQkJCUMyMUJGNkY1MjFDRDg5QjUw
MDIyNzk3OSAvKiBXSExTTENvbnRpbnVlLmggKi8sCisJCQkJNTJDQjExREIyMkZEREIyRTAwOUYw
QTY0IC8qIFdITFNMRGVmYXVsdERlbGV0ZS5oICovLAogCQkJCUMyMUJGNzAxMjFDRDg5QzQwMDIy
Nzk3OSAvKiBXSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oICovLAogCQkJCUMyMUJGNzE4MjFD
RDg5RDcwMDIyNzk3OSAvKiBXSExTTERvdEV4cHJlc3Npb24uaCAqLywKIAkJCQlDMjFCRjZGQjIx
Q0Q4OUJFMDAyMjc5NzkgLyogV0hMU0xEb1doaWxlTG9vcC5oICovLApAQCAtMTcwODksNiArMTcw
OTEsNyBAQAogCQkJCUMyMUJGNzI2MjFDRDg5RTMwMDIyNzk3OSAvKiBXSExTTEVudW1lcmF0aW9u
TWVtYmVyLmggKi8sCiAJCQkJQzIxQkY3MDIyMUNEODlDNDAwMjI3OTc5IC8qIFdITFNMRW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsLmggKi8sCiAJCQkJQzIxQkY3MEMyMUNEODlDQzAwMjI3OTc5IC8q
IFdITFNMRXhwcmVzc2lvbi5oICovLAorCQkJCTUyMkQwN0EzMjJGQkFCNDMwMEI5MDVCRSAvKiBX
SExTTEV4cHJlc3Npb24uY3BwICovLAogCQkJCUMyMUJGNzAwMjFDRDg5QzIwMDIyNzk3OSAvKiBX
SExTTEZhbGx0aHJvdWdoLmggKi8sCiAJCQkJQzIxQkY3MzUyMUNEODlGMjAwMjI3OTc5IC8qIFdI
TFNMRmxvYXRMaXRlcmFsLmggKi8sCiAJCQkJMUNCNjlCMzgyMURGMDNFMTAwNkU4NDZBIC8qIFdI
TFNMRmxvYXRMaXRlcmFsVHlwZS5jcHAgKi8sCkBAIC0zMzUyNCw3ICszMzUyNyw2IEBACiAJCQkJ
RjEyMTcxRjUxNkE4Q0VEMjAwMDA1M0NBIC8qIFdlYlZUVEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUQyMUE4MDIxM0VDRTVERjAwQkI3MDY0IC8qIFdlYlZUVFBhcnNlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMTBCNjk4MTE0MEMxNzQwMDBCQzFDMjYgLyogV2ViVlRUVG9rZW5p
emVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDODVCMjAyMjJGQjA0ODUwMDMwNjg0RiAvKiBX
SExTTFVubmFtZWRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDgzMkMyMTg3RjY1Qzcw
MERBNjNBNiAvKiBXS1V0aWxpdGllcy5jIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M3Q0MwQTJD
RjA3NDAwRDU3NjY0IC8qIFhMaW5rTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M4
MEMwQTJDRjI1NjAwRDU3NjY0IC8qIFhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDog
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCShyZXZpc2lvbiAy
NDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgV1RGOjpSZWZDb3VudGVkPFdvcmtlclNjcmlwdExvYWRlcj47CisgICAgZnJp
ZW5kIHN0cnVjdCBzdGQ6OmRlZmF1bHRfZGVsZXRlPFdvcmtlclNjcmlwdExvYWRlcj47CiAKICAg
ICBXb3JrZXJTY3JpcHRMb2FkZXIoKTsKICAgICB+V29ya2VyU2NyaXB0TG9hZGVyKCk7Cg==
</data>
<flag name="review"
          id="391726"
          type_id="1"
          status="+"
          setter="rmorisset"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375963</attachid>
            <date>2019-08-09 14:45:53 -0700</date>
            <delta_ts>2019-08-09 16:30:36 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>170428</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDg0NjcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE5LTA4LTA5ICBTYWFtIEJhcmF0aSAgPHNiYXJh
dGlAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0gRGV2aXJ0dWFsaXplIHRoZSBBU1QKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDUyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFJvYmluIE1vcmlzc2V0LgorCisgICAgICAgIE1ha2UgUmVmQ291
bnRlZCB1c2Ugc3RkOjpkZWZhdWx0X2RlbGV0ZSBpbnN0ZWFkIG9mIGV4cGxpY2l0bHkgY2FsbGlu
ZyBkZWxldGUuCisgICAgICAgIFRoaXMgYWxsb3dzIHVzZXMgb2YgUmVmQ291bnRlZCB0byBkZWZp
bmUgdGhlaXIgb3duIGN1c3RvbSBkZWxldGVyLgorCisgICAgICAgICogd3RmL1JlZkNvdW50ZWQu
aDoKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZDo6ZGVyZWYgY29uc3QpOgorICAgICAgICAqIHd0
Zi9VbmlxdWVSZWYuaDoKKyAgICAgICAgKFdURjo6VW5pcXVlUmVmOjpVbmlxdWVSZWYpOgorCiAy
MDE5LTA4LTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRml4
IHRocmVhZCBzYWZldHkgaXNzdWUgaW4gQXVkaW9TYW1wbGVEYXRhU291cmNlKCkgY29uc3RydWN0
b3IKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9SZWZDb3VudGVkLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XVEYv
d3RmL1JlZkNvdW50ZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDEzICsxMzYsMTMgQEAgaW5s
aW5lIHZvaWQgYWRvcHRlZChSZWZDb3VudGVkQmFzZSogb2JqZQogfQogI2VuZGlmCiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFJlZkNvdW50ZWQgOiBwdWJsaWMgUmVmQ291bnRlZEJhc2Ug
ewordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRGVsZXRlciA9IHN0ZDo6ZGVmYXVsdF9k
ZWxldGU8VD4+IGNsYXNzIFJlZkNvdW50ZWQgOiBwdWJsaWMgUmVmQ291bnRlZEJhc2UgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFJlZkNvdW50ZWQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICB2b2lkIGRlcmVmKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChk
ZXJlZkJhc2UoKSkKLSAgICAgICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxjb25zdCBUKj4odGhp
cyk7CisgICAgICAgICAgICBEZWxldGVyKCkoY29uc3RfY2FzdDxUKj4oc3RhdGljX2Nhc3Q8Y29u
c3QgVCo+KHRoaXMpKSk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9VbmlxdWVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAko
cmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgVW5pcXVlUmVmIHsKIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KICAgICBVbmlxdWVSZWYoVW5pcXVlUmVmPFU+JiYgb3RoZXIp
Ci0gICAgICAgIDogbV9yZWYoV1RGTW92ZShvdGhlci5tX3JlZikpCisgICAgICAgIDogbV9yZWYo
b3RoZXIubV9yZWYucmVsZWFzZSgpKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fcmVmKTsKICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MDcgQEAKKzIwMTktMDgtMDkgIFNh
YW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dITFNMXSBEZXZpcnR1
YWxpemUgdGhlIEFTVAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAwNTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUm9iaW4gTW9yaXNzZXQuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBkZXZpcnR1YWxpemVzIHRoZSBBU1QgZm9yIFR5cGUsIEV4cHJlc3Np
b24sIGFuZCBTdGF0ZW1lbnQuCisgICAgICAgIFdlIG5vdyBoYXZlIGFuIGVudW0gd2hpY2ggcmVw
cmVzZW50cyBhbGwgdGhlIGNvbmNyZXRlIHR5cGVzIGluIHRoZQorICAgICAgICB0aHJlZSBoaWVy
YXJjaGllcy4gRG9pbmcgZHluYW1pYyBkaXNwYXRjaCBpcyBpbXBsZW1lbnRlZCBhcyBhIHN3aXRj
aAorICAgICAgICBvbiB0aGF0IHR5cGUgZW51bS4KKyAgICAgICAgCisgICAgICAgIFRoZSBpbnRl
cmVzdGluZyBwYXJ0IG9mIHRoaXMgcGF0Y2ggaXMgaG93IHRvIGhhbmRsZSBkZXN0cnVjdGlvbi4g
V2UgZG8KKyAgICAgICAgdGhpcyBieSBkZWZpbmluZyBhIGN1c3RvbSBkZWxldGVyIGZvciBhbGwg
bm9kZXMgaW4gdGhlIEFTVC4gVGhpcyBlbnN1cmVzCisgICAgICAgIHRoYXQgd2hlbiB0aGV5J3Jl
IHVzZWQgaW5zaWRlIFVuaXF1ZVJlZiwgdW5pcXVlX3B0ciwgUmVmLCBhbmQgUmVmUHRyLAorICAg
ICAgICB3ZSBkbyBkeW5hbWljIGRpc3BhdGNoIHdoZW4gd2UgZGVsZXRlIHRoZSBvYmplY3QuIFRo
aXMgYWxsb3dzIGVhY2ggYmFzZQorICAgICAgICBjbGFzcyB0byBkZWZpbmUgYSAiZGVzdHJveSIg
bWV0aG9kIHdoaWNoIGRvZXMgZHluYW1pYyBkaXNwYXRjaCBvbiB0eXBlCisgICAgICAgIGFuZCBj
YWxscyB0aGUgYXBwcm9wcmlhdGUgZGVsZXRlLiBXZSBhbHNvIG1hcmsgYWxsIG5vbi1jb25jcmV0
ZSBub2RlcworICAgICAgICBpbiBhbGwgdHlwZSBoaWVyYXJjaGllcyB3aXRoIGEgcHJvdGVjdGVk
IGRlc3RydWN0b3IsIHdoaWNoIGVuc3VyZXMgaXQncworICAgICAgICBuZXZlciBjYWxsZWQgZXhj
ZXB0IGZyb20gd2l0aGluIHRoZSBjb25jcmV0ZSBjaGlsZCBjbGFzc2VzLiBXZSBhbGxvdworICAg
ICAgICBhbGwgY29uY3JldGUgY2xhc3NlcyB0byBoYXZlIHB1YmxpYyBkZXN0cnVjdG9ycywgYXMg
aXQncyB2YWxpZCBmb3IKKyAgICAgICAgdGhlaXIgZGVzdHJ1Y3RvcnMgdG8gYmUgY2FsbGVkIGV4
cGxpY2l0bHkgc2luY2UgdGhlcmUgaXMgbm8gbmVlZCBmb3IKKyAgICAgICAgZHluYW1pYyBkaXNw
YXRjaCBpbiBzdWNoIHNjZW5hcmlvcy4gQWxsIGNvbmNyZXRlIGNsYXNzZXMgYXJlIGFsc28gbWFy
a2VkCisgICAgICAgIGFzIGZpbmFsLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBhIDNtcyBz
cGVlZHVwIG9uIGNvbXB1dGVfYm9pZHMsIHdoaWNoIGlzIGFib3V0IGEgMTAlIGltcHJvdmVtZW50
CisgICAgICAgIGluIHRoZSBXSExTTCBjb21waWxlci4KKworICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5oOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbjo6QXNzaWdubWVudEV4cHJl
c3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QXNzaWdubWVu
dEV4cHJlc3Npb246OmxlZnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6QXNzaWdubWVudEV4cHJlc3Npb246OnJpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uOjp0YWtlUmlnaHQpOiBEZWxldGVk
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJsb2NrLmg6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpCbG9jazo6QmxvY2spOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QmxvY2s6OnN0YXRlbWVudHMpOiBEZWxldGVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJvb2xlYW5MaXRlcmFsLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpCb29sZWFuTGl0ZXJhbDo6Qm9vbGVhbkxpdGVy
YWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Qm9vbGVhbkxpdGVy
YWw6OnZhbHVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkJvb2xlYW5MaXRlcmFsOjpjbG9uZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnJlYWsuaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OkJyZWFrOjpCcmVhayk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMQ2FsbEV4cHJlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OkNhbGxFeHByZXNzaW9uOjpDYWxsRXhwcmVzc2lvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpDYWxsRXhwcmVzc2lvbjo6YXJndW1lbnRzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNhbGxFeHByZXNzaW9uOjpuYW1lKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNhbGxFeHByZXNzaW9uOjpz
ZXRDYXN0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDYWxs
RXhwcmVzc2lvbjo6aXNDYXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OkNhbGxFeHByZXNzaW9uOjpjYXN0UmV0dXJuVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpDYWxsRXhwcmVzc2lvbjo6ZnVuY3Rpb24pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q2FsbEV4cHJlc3Npb246OnNldEZ1bmN0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb21t
YUV4cHJlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNvbW1hRXhwcmVz
c2lvbjo6Q29tbWFFeHByZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OkNvbW1hRXhwcmVzc2lvbjo6bGlzdCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpDb25zdGFudEV4cHJlc3Npb246OkNvbnN0YW50RXhwcmVzc2lv
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDb25zdGFudEV4cHJl
c3Npb246OmludGVnZXJMaXRlcmFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbjo6dmlzaXQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6Q29uc3RhbnRFeHByZXNzaW9uOjp2aXNpdCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDb25zdGFudEV4cHJlc3Npb246OmNs
b25lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNvbnN0
YW50RXhwcmVzc2lvbjo6bWF0Y2hlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29udGludWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OkNvbnRpbnVlOjpDb250aW51ZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVmYXVsdERlbGV0ZS5oOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lvbjo6RGVy
ZWZlcmVuY2VFeHByZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lvbjo6cG9pbnRlcik6IERlbGV0ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG9XaGlsZUxvb3AuaDoKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OkRvV2hpbGVMb29wOjpEb1doaWxlTG9vcCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpEb1doaWxlTG9vcDo6Ym9keSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpEb1doaWxlTG9vcDo6Y29uZGl0aW9uYWwp
OiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvdEV4
cHJlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkRvdEV4cHJlc3Npb246
OkRvdEV4cHJlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
RG90RXhwcmVzc2lvbjo6ZmllbGROYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50OjpF
ZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ6OmVmZmVjdGZ1bEV4cHJl
c3Npb24pOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
RW51bWVyYXRpb25EZWZpbml0aW9uOjpFbnVtZXJhdGlvbkRlZmluaXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uOjp0eXBl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1lcmF0aW9uRGVm
aW5pdGlvbjo6YWRkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVu
dW1lcmF0aW9uRGVmaW5pdGlvbjo6bWVtYmVyQnlOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbjo6ZW51bWVyYXRpb25NZW1i
ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbDo6d3JhcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWw6OmxlZnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsOjpyaWdodCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFbnVtZXJhdGlvbk1lbWJl
ckxpdGVyYWw6OmNsb25lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDo6ZW51bWVyYXRpb25EZWZpbml0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbDo6ZW51bWVyYXRpb25EZWZpbml0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDo6ZW51bWVyYXRp
b25NZW1iZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsOjplbnVtZXJhdGlvbk1lbWJlciBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6OnNl
dEVudW1lcmF0aW9uTWVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpFeHByZXNzaW9uOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbjo6Z2V0dGVyRnVuY3Rpb25OYW1lIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
bjo6c2V0dGVyRnVuY3Rpb25OYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbjo6YW5kZXJGdW5jdGlvbk5hbWUgY29uc3QpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OkV4cHJlc3Npb24pOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6a2luZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0Fzc2lnbm1lbnRFeHByZXNz
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246Omlz
Qm9vbGVhbkxpdGVyYWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhw
cmVzc2lvbjo6aXNDYWxsRXhwcmVzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpFeHByZXNzaW9uOjppc0NvbW1hRXhwcmVzc2lvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0RlcmVmZXJlbmNlRXhwcmVzc2lvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0RvdEV4
cHJlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lv
bjo6aXNHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0Zsb2F0TGl0ZXJhbCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0luZGV4RXhwcmVzc2lvbiBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0ludGVnZXJMaXRl
cmFsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246Omlz
TG9naWNhbEV4cHJlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
RXhwcmVzc2lvbjo6aXNMb2dpY2FsTm90RXhwcmVzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc01ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Np
b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNN
YWtlUG9pbnRlckV4cHJlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6RXhwcmVzc2lvbjo6aXNOdWxsTGl0ZXJhbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpFeHByZXNzaW9uOjppc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc1JlYWRNb2RpZnlX
cml0ZUV4cHJlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhw
cmVzc2lvbjo6aXNUZXJuYXJ5RXhwcmVzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpFeHByZXNzaW9uOjppc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWwgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNWYXJpYWJsZVJlZmVy
ZW5jZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjpp
c0VudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpFeHByZXNzaW9uOjpjb2RlTG9jYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6dXBkYXRlQ29kZUxvY2F0aW9uKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5oOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6RmFsbHRocm91Z2g6OkZhbGx0aHJvdWdoKTogRGVsZXRlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWwuaDoK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZsb2F0TGl0ZXJhbDo6RmxvYXRMaXRlcmFs
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZsb2F0TGl0ZXJhbDo6
dHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpGbG9hdExpdGVy
YWw6OnZhbHVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkZsb2F0TGl0ZXJhbDo6Y2xvbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6RmxvYXRMaXRlcmFsVHlwZTo6RmxvYXRMaXRlcmFsVHlwZSk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5o
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RmxvYXRMaXRlcmFsVHlwZTo6dmFsdWUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RmxvYXRMaXRl
cmFsVHlwZTo6cHJlZmVycmVkVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRm9yTG9vcC5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6Rm9yTG9vcDo6Rm9yTG9vcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpGb3JMb29wOjp+Rm9yTG9vcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpGb3JMb29wOjppbml0aWFsaXphdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpGb3JMb29wOjpjb25kaXRpb24pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6Rm9yTG9vcDo6aW5jcmVtZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZvckxvb3A6OmJvZHkpOiBEZWxldGVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5j
ZTo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U6OnN0cnVjdEZpZWxkKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Okdsb2JhbFZhcmlhYmxlUmVmZXJlbmNl
OjpiYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xJZlN0YXRlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6SWZTdGF0ZW1l
bnQ6OklmU3RhdGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OklmU3RhdGVtZW50Ojpjb25kaXRpb25hbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpJZlN0YXRlbWVudDo6Ym9keSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpJZlN0YXRlbWVudDo6ZWxzZUJvZHkpOiBEZWxldGVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEluZGV4RXhwcmVzc2lvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6SW5kZXhFeHByZXNzaW9uOjpJbmRleEV4cHJlc3Npb24p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6SW5kZXhFeHByZXNzaW9u
OjppbmRleEV4cHJlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6SW5kZXhFeHByZXNzaW9uOjp0YWtlSW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmg6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpJbnRlZ2VyTGl0ZXJhbDo6SW50ZWdlckxpdGVyYWwpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6SW50ZWdlckxpdGVyYWw6OnR5cGUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6SW50ZWdlckxpdGVyYWw6OnZh
bHVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkludGVn
ZXJMaXRlcmFsOjpjbG9uZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OkludGVnZXJMaXRlcmFsVHlwZTo6SW50ZWdlckxpdGVyYWxUeXBlKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5
cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkludGVnZXJMaXRlcmFsVHlwZTo6
dmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6SW50
ZWdlckxpdGVyYWxUeXBlOjpwcmVmZXJyZWRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6TG9naWNhbEV4cHJlc3Npb246OkxvZ2ljYWxFeHByZXNzaW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkxvZ2ljYWxFeHByZXNz
aW9uOjp0eXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkxvZ2ljYWxFeHByZXNzaW9uOjpsZWZ0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uOjpyaWdodCk6IERlbGV0ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uOjpMb2dpY2Fs
Tm90RXhwcmVzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpM
b2dpY2FsTm90RXhwcmVzc2lvbjo6b3BlcmFuZCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lv
bjo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uOjpsZWZ0VmFsdWUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TWFrZUFycmF5UmVmZXJl
bmNlRXhwcmVzc2lvbjo6bWlnaHRFc2NhcGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uOjpNYWtlUG9p
bnRlckV4cHJlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
TWFrZVBvaW50ZXJFeHByZXNzaW9uOjpsZWZ0VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uOjptaWdodEVzY2FwZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmFt
ZWRUeXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYW1lZFR5cGU6Ok5hbWVk
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYW1lZFR5cGU6OnVuaWZ5Tm9k
ZUltcGwpOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6Ok5hbWVkVHlwZTo6aXNUeXBlRGVmaW5pdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYW1lZFR5cGU6OmlzU3RydWN0dXJlRGVmaW5pdGlvbiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYW1lZFR5cGU6
OmlzRW51bWVyYXRpb25EZWZpbml0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6Ok5hbWVkVHlwZTo6aXNOYXRpdmVUeXBlRGVjbGFyYXRpb24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmFtZWRUeXBlOjp1bmlm
eU5vZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmFt
ZWRUeXBlOjp1bmlmeU5vZGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uOjp0eXBlQXJndW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6aXNJbnQgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjppc051bWJl
ciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVU
eXBlRGVjbGFyYXRpb246OmlzRmxvYXRpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjppc0F0b21pYyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFy
YXRpb246OmlzVmVjdG9yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6aXNNYXRyaXggY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjppc09w
YXF1ZVR5cGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
TmF0aXZlVHlwZURlY2xhcmF0aW9uOjppc1RleHR1cmUgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjppc1RleHR1cmVB
cnJheSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb246OmlzRGVwdGhUZXh0dXJlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6aXNXcml0YWJs
ZVRleHR1cmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
TmF0aXZlVHlwZURlY2xhcmF0aW9uOjp0ZXh0dXJlRGltZW5zaW9uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6aXNT
aWduZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0
aXZlVHlwZURlY2xhcmF0aW9uOjpzdGQ6OmZ1bmN0aW9uPGJvb2wgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzdGQ6
OmZ1bmN0aW9uPGludDY0X3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjppdGVyYXRlQWxsVmFsdWVzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6
c2V0SXNJbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uOjpzZXRJc051bWJlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnNldElzRmxvYXRpbmcpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9u
OjpzZXRJc0F0b21pYyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb246OnNldElzVmVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6c2V0SXNNYXRyaXgpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0
aW9uOjpzZXRJc09wYXF1ZVR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRJc1RleHR1cmUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRJc1Rl
eHR1cmVBcnJheSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRp
dmVUeXBlRGVjbGFyYXRpb246OnNldElzRGVwdGhUZXh0dXJlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6c2V0SXNXcml0YWJs
ZVRleHR1cmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uOjpzZXRUZXh0dXJlRGltZW5zaW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6c2V0SXNTaWduZWQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uOjpzZXRDYW5SZXByZXNlbnRJbnRlZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6c2V0Q2FuUmVwcmVzZW50VW5z
aWduZWRJbnRlZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbjo6c2V0Q2FuUmVwcmVzZW50RmxvYXQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRTdWNj
ZXNzb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlw
ZURlY2xhcmF0aW9uOjpzZXRGb3JtYXRWYWx1ZUZyb21JbnRlZ2VyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6c2V0Rm9ybWF0
VmFsdWVGcm9tVW5zaWduZWRJbnRlZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6c2V0SXRlcmF0ZUFsbFZhbHVlcyk6IERl
bGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVsbExpdGVy
YWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok51bGxMaXRlcmFsOjpOdWxsTGl0
ZXJhbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOdWxsTGl0ZXJh
bDo6dHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOdWxsTGl0
ZXJhbDo6Y2xvbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTE51bGxMaXRlcmFsVHlwZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFBvaW50ZXJUeXBlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb246OlByb3BlcnR5QWNjZXNz
RXhwcmVzc2lvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246OnNldE5ld1ZhbHVl
RXhwcmVzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpzZXRSZXN1bHRFeHByZXNzaW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246Om9s
ZFZhcmlhYmxlUmVmZXJlbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246Om5ld1ZhcmlhYmxlUmVmZXJlbmNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb246OmxlZnRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpvbGRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpuZXdWYWx1
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3Jp
dGVFeHByZXNzaW9uOjpuZXdWYWx1ZUV4cHJlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6cmVzdWx0RXhwcmVz
c2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5
V3JpdGVFeHByZXNzaW9uOjp0YWtlTGVmdFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246OnRha2VPbGRWYWx1ZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVF
eHByZXNzaW9uOjp0YWtlTmV3VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6dGFrZU5ld1ZhbHVlRXhwcmVzc2lv
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3Jp
dGVFeHByZXNzaW9uOjp0YWtlUmVzdWx0RXhwcmVzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpSZWFkTW9kaWZ5
V3JpdGVFeHByZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xSZWZlcmVuY2VUeXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpSZWZlcmVuY2VUeXBlOjpSZWZlcmVuY2VUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xSZXNvbHZhYmxlVHlwZS5oOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6UmVzb2x2YWJsZVR5cGU6OlJlc29sdmFibGVUeXBlKToKKyAgICAgICAgKCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZXNvbHZhYmxlVHlwZTo6aXNG
bG9hdExpdGVyYWxUeXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OlJlc29sdmFibGVUeXBlOjppc0ludGVnZXJMaXRlcmFsVHlwZSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZXNvbHZhYmxlVHlwZTo6aXNOdWxs
TGl0ZXJhbFR5cGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6UmVzb2x2YWJsZVR5cGU6OmlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJldHVybi5o
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmV0dXJuOjpSZXR1cm4pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmV0dXJuOjp2YWx1ZSk6IERlbGV0ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6OmRlc3Ryb3kp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50OjpTdGF0ZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50OjpraW5kIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNCbG9jayBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6OmlzQnJlYWsgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojppc0NvbnRpbnVlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNEb1doaWxlTG9vcCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6OmlzRWZmZWN0
ZnVsRXhwcmVzc2lvblN0YXRlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpTdGF0ZW1lbnQ6OmlzRmFsbHRocm91Z2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojppc0Zvckxvb3AgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojppc0lmU3RhdGVtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNSZXR1cm4gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojppc1N0YXRlbWVudExpc3QgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojppc1N3aXRjaENhc2Ug
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojppc1N3aXRj
aFN0YXRlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1l
bnQ6OmlzVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojppc1doaWxlTG9vcCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6OmNvZGVMb2NhdGlvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6OnVwZGF0ZUNvZGVMb2NhdGlv
bik6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50TGlz
dC5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50TGlzdDo6U3RhdGVt
ZW50TGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1l
bnRMaXN0OjpzdGF0ZW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uOjpTdHJ1Y3R1cmVEZWZpbml0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0cnVjdHVyZURlZmluaXRpb246
OnN0cnVjdHVyZUVsZW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OlN0cnVjdHVyZURlZmluaXRpb246OmZpbmQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZUVsZW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OlN0cnVjdHVyZUVsZW1lbnQ6OlN0cnVjdHVyZUVsZW1lbnQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RydWN0dXJlRWxlbWVudDo6
Y29kZUxvY2F0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OlN0cnVjdHVyZUVsZW1lbnQ6OnR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6U3RydWN0dXJlRWxlbWVudDo6bmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpTdHJ1Y3R1cmVFbGVtZW50OjpzZW1hbnRpYyk6IERlbGV0ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoQ2FzZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3dpdGNoQ2FzZTo6U3dpdGNoQ2FzZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTd2l0Y2hDYXNlOjp2YWx1ZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTd2l0Y2hDYXNlOjpibG9j
ayk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dp
dGNoU3RhdGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTd2l0Y2hTdGF0
ZW1lbnQ6OlN3aXRjaFN0YXRlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpTd2l0Y2hTdGF0ZW1lbnQ6OnZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OlN3aXRjaFN0YXRlbWVudDo6c3dpdGNoQ2FzZXMpOiBEZWxldGVkLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9u
Lmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUZXJuYXJ5RXhwcmVzc2lvbjo6VGVy
bmFyeUV4cHJlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
VGVybmFyeUV4cHJlc3Npb246OnByZWRpY2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpUZXJuYXJ5RXhwcmVzc2lvbjo6Ym9keUV4cHJlc3Npb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VGVybmFyeUV4cHJlc3Npb246OmVsc2VF
eHByZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xUeXBlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBl
OjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGU6OnVuaWZ5Tm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZXNvbHZhYmxlVHlwZTo6Y2FuUmVz
b2x2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZXNvbHZhYmxlVHlw
ZTo6Y29udmVyc2lvbkNvc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
VW5uYW1lZFR5cGU6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xUeXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBl
OjpUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGU6OmtpbmQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZTo6aXNVbm5hbWVkVHlwZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlOjppc05hbWVkVHlwZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlOjppc1Jlc29sdmFibGVUeXBl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGU6OmlzVHlwZVJlZmVy
ZW5jZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlOjppc1BvaW50
ZXJUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGU6OmlzQXJy
YXlSZWZlcmVuY2VUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5
cGU6OmlzQXJyYXlUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5
cGU6OmlzUmVmZXJlbmNlVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpUeXBlOjppc1R5cGVEZWZpbml0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OlR5cGU6OmlzU3RydWN0dXJlRGVmaW5pdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpUeXBlOjppc0VudW1lcmF0aW9uRGVmaW5pdGlvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlOjppc05hdGl2ZVR5cGVEZWNsYXJhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlOjppc0Zsb2F0TGl0
ZXJhbFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZTo6aXNJ
bnRlZ2VyTGl0ZXJhbFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
VHlwZTo6aXNOdWxsTGl0ZXJhbFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6VHlwZTo6aXNVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlOjp1bmlmeU5vZGUgY29uc3QpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVEZWZpbml0aW9uLmg6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlRGVmaW5pdGlvbjo6VHlwZURlZmluaXRpb24pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZURlZmluaXRpb246OnR5
cGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5
cGVSZWZlcmVuY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xV
bm5hbWVkVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbm5hbWVkVHlw
ZTo6aGFzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbm5hbWVkVHlw
ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMVW5uYW1lZFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlVubmFt
ZWRUeXBlOjpVbm5hbWVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbm5h
bWVkVHlwZTo6dW5pZnlOb2RlSW1wbCk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGU6OmtpbmQgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGU6OmlzVHlwZVJlZmVyZW5j
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbm5hbWVk
VHlwZTo6aXNQb2ludGVyVHlwZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpVbm5hbWVkVHlwZTo6aXNBcnJheVJlZmVyZW5jZVR5cGUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGU6OmlzQXJyYXlU
eXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlVubmFt
ZWRUeXBlOjppc1JlZmVyZW5jZVR5cGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGU6OnVuaWZ5Tm9kZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbm5hbWVkVHlwZTo6dW5pZnlOb2RlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZElu
dGVnZXJMaXRlcmFsLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbnNpZ25lZElu
dGVnZXJMaXRlcmFsOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw6OnR5cGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bDo6dmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDo6Y2xvbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVy
YWxUeXBlOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlOjp2YWx1
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbnNpZ25l
ZEludGVnZXJMaXRlcmFsVHlwZTo6cHJlZmVycmVkVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25z
U3RhdGVtZW50OjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudDo6
dmFyaWFibGVEZWNsYXJhdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFZhcmlhYmxlUmVmZXJlbmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpWYXJpYWJsZVJlZmVyZW5jZTo6VmFyaWFibGVSZWZlcmVuY2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VmFyaWFibGVSZWZlcmVuY2U6OndyYXAp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VmFyaWFibGVSZWZlcmVu
Y2U6Om5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VmFyaWFi
bGVSZWZlcmVuY2U6OnZhcmlhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlOjpzZXRWYXJpYWJsZSk6IERlbGV0ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmg6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpXaGlsZUxvb3A6OldoaWxlTG9vcCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpXaGlsZUxvb3A6OmNvbmRpdGlvbmFsKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OldoaWxlTG9vcDo6Ym9keSk6IERlbGV0
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpCYXNlVHlwZU5hbWVOb2RlOjpp
c1BvaW50ZXJUeXBlTmFtZU5vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1l
dGFsOjpCYXNlVHlwZU5hbWVOb2RlOjppc0FycmF5UmVmZXJlbmNlVHlwZU5hbWVOb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6QmFzZVR5cGVOYW1lTm9kZTo6aXNB
cnJheVR5cGVOYW1lTm9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6
OlR5cGVOYW1lcjo6Y3JlYXRlTmFtZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1l
dGFsOjpwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpUeXBlTmFtZXI6
OmVtaXRVbm5hbWVkVHlwZURlZmluaXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQYXJzZXI6OnBh
cnNlU3VmZml4T3BlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlBhcnNlcjo6Y29t
cGxldGVBc3NpZ25tZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQYXJzZXI6OnBhcnNl
UG9zc2libGVQcmVmaXgpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJl
c2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xWaXNpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpWaXNpdG9yOjp2
aXNpdCk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
Lmg6CisKIDIwMTktMDgtMDcgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dITFNMXSBQcnVuZSB1bnJlYWNoYWJsZSBzdGRsaWIgZnVuY3Rpb25zIGFmdGVyIHRo
ZSBDaGVja2VyIHJ1bnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNDg0MDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzQyLDYgKzM0Miw3
IEBAIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlVHkKIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML01ldGFsL1dITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmNwcAogTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5jcHAKIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVBcmd1bWVudC5jcHAKK01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEV4cHJlc3Npb24uY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xCdWlsdEluU2VtYW50aWMuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNv
dXJjZVNlbWFudGljLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6
YXRpb25Db25zdGFudFNlbWFudGljLmNwcApAQCAtMzUwLDkgKzM1MSwxMiBAQCBNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xOdWxsTGl0ZXJhbFR5cGUuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNp
Z25lZEludGVnZXJMaXRlcmFsVHlwZS5jcHAKK01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFN0YXRlbWVudC5jcHAKK01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuY3BwCiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmNwcAogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuY3BwCiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmNwcAorTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFByZXBhcmUuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb3BlcnR5UmVzb2x2ZXIu
Y3BwCiBNb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCShyZXZpc2lvbiAyNDg0
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OTQsNyArMTQ5NCw3IEBAIGF1dG8gUGFyc2VyOjpwYXJz
ZVN1ZmZpeE9wZXJhdG9yKFVuaXF1ZVIKICAgICB9CiAgICAgY2FzZSBUb2tlbjo6VHlwZTo6UGx1
c1BsdXM6IHsKICAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZXZpb3VzLT5jb2RlTG9j
YXRpb24oKSwgKnN1ZmZpeCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gQVNUOjpSZWFkTW9kaWZ5
V3JpdGVFeHByZXNzaW9uOjpjcmVhdGUobG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMpKTsKKyAg
ICAgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhw
cmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMpKTsKICAgICAgICAgVmVjdG9yPFVu
aXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRzOwogICAgICAgICBjYWxsQXJn
dW1lbnRzLmFwcGVuZChyZXN1bHQtPm9sZFZhcmlhYmxlUmVmZXJlbmNlKCkpOwogICAgICAgICBy
ZXN1bHQtPnNldE5ld1ZhbHVlRXhwcmVzc2lvbihtYWtlVW5pcXVlUmVmPEFTVDo6Q2FsbEV4cHJl
c3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3IrKyJfc3RyLCBXVEZNb3ZlKGNhbGxBcmd1bWVudHMp
KSk7CkBAIC0xNTA0LDcgKzE1MDQsNyBAQCBhdXRvIFBhcnNlcjo6cGFyc2VTdWZmaXhPcGVyYXRv
cihVbmlxdWVSCiAgICAgZGVmYXVsdDogewogICAgICAgICBBU1NFUlQoc3VmZml4LT50eXBlID09
IFRva2VuOjpUeXBlOjpNaW51c01pbnVzKTsKICAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9u
KHByZXZpb3VzLT5jb2RlTG9jYXRpb24oKSwgKnN1ZmZpeCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0
ID0gQVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpjcmVhdGUobG9jYXRpb24sIFdURk1v
dmUocHJldmlvdXMpKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6
UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMpKTsK
ICAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBjYWxsQXJndW1lbnRz
OwogICAgICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChyZXN1bHQtPm9sZFZhcmlhYmxlUmVmZXJl
bmNlKCkpOwogICAgICAgICByZXN1bHQtPnNldE5ld1ZhbHVlRXhwcmVzc2lvbihtYWtlVW5pcXVl
UmVmPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGxvY2F0aW9uLCAib3BlcmF0b3ItLSJfc3RyLCBXVEZN
b3ZlKGNhbGxBcmd1bWVudHMpKSk7CkBAIC0xNjA2LDcgKzE2MDYsNyBAQCBhdXRvIFBhcnNlcjo6
Y29tcGxldGVBc3NpZ25tZW50KFVuaXF1ZVJlCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAg
IGF1dG8gcmVzdWx0ID0gQVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpjcmVhdGUobG9j
YXRpb24sIFdURk1vdmUobGVmdCkpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZVJlZjxB
U1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+KGxvY2F0aW9uLCBXVEZNb3ZlKGxlZnQpKTsK
ICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4+IGNhbGxBcmd1bWVudHM7CiAg
ICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQocmVzdWx0LT5vbGRWYXJpYWJsZVJlZmVyZW5jZSgpKTsK
ICAgICBjYWxsQXJndW1lbnRzLmFwcGVuZChXVEZNb3ZlKCpyaWdodCkpOwpAQCAtMTg5OCw3ICsx
ODk4LDcgQEAgYXV0byBQYXJzZXI6OnBhcnNlUG9zc2libGVQcmVmaXgoYm9vbCAqaQogICAgICAg
ICBjYXNlIFRva2VuOjpUeXBlOjpQbHVzUGx1czogewogICAgICAgICAgICAgaWYgKGlzRWZmZWN0
ZnVsKQogICAgICAgICAgICAgICAgICppc0VmZmVjdGZ1bCA9IHRydWU7Ci0gICAgICAgICAgICBh
dXRvIHJlc3VsdCA9IEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6Y3JlYXRlKGxvY2F0
aW9uLCBXVEZNb3ZlKCpuZXh0KSk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlx
dWVSZWY8QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZSgq
bmV4dCkpOwogICAgICAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBj
YWxsQXJndW1lbnRzOwogICAgICAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQocmVzdWx0LT5v
bGRWYXJpYWJsZVJlZmVyZW5jZSgpKTsKICAgICAgICAgICAgIHJlc3VsdC0+c2V0TmV3VmFsdWVF
eHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJv
cGVyYXRvcisrIl9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpKTsKQEAgLTE5MDgsNyArMTkw
OCw3IEBAIGF1dG8gUGFyc2VyOjpwYXJzZVBvc3NpYmxlUHJlZml4KGJvb2wgKmkKICAgICAgICAg
Y2FzZSBUb2tlbjo6VHlwZTo6TWludXNNaW51czogewogICAgICAgICAgICAgaWYgKGlzRWZmZWN0
ZnVsKQogICAgICAgICAgICAgICAgICppc0VmZmVjdGZ1bCA9IHRydWU7Ci0gICAgICAgICAgICBh
dXRvIHJlc3VsdCA9IEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6Y3JlYXRlKGxvY2F0
aW9uLCBXVEZNb3ZlKCpuZXh0KSk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlx
dWVSZWY8QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZSgq
bmV4dCkpOwogICAgICAgICAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBj
YWxsQXJndW1lbnRzOwogICAgICAgICAgICAgY2FsbEFyZ3VtZW50cy5hcHBlbmQocmVzdWx0LT5v
bGRWYXJpYWJsZVJlZmVyZW5jZSgpKTsKICAgICAgICAgICAgIHJlc3VsdC0+c2V0TmV3VmFsdWVF
eHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpDYWxsRXhwcmVzc2lvbj4obG9jYXRpb24sICJv
cGVyYXRvci0tIl9zdHIsIFdURk1vdmUoY2FsbEFyZ3VtZW50cykpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1l
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcAkocmV2aXNpb24gMjQ4NDA0KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVzZXJ2ZVZhcmlhYmxl
TGlmZXRpbWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDcgKzE1Nyw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIHN0cnVjdFZhcmlhYmxlRGVjbGFyYXRpb25zLmFwcGVuZChXVEZNb3ZlKHN0
cnVjdFZhcmlhYmxlRGVjbGFyYXRpb24pKTsKICAgICAgICAgICAgIGF1dG8gc3RydWN0RGVjbGFy
YXRpb25TdGF0ZW1lbnQgPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNT
dGF0ZW1lbnQ+KGZ1bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSwgV1RGTW92ZShzdHJ1
Y3RWYXJpYWJsZURlY2xhcmF0aW9ucykpOwogCi0gICAgICAgICAgICBhdXRvIG1ha2VQb2ludGVy
RXhwcmVzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24+
KGZ1bmN0aW9uRGVmaW5pdGlvbi5jb2RlTG9jYXRpb24oKSwgV1RGTW92ZShzdHJ1Y3RWYXJpYWJs
ZVJlZmVyZW5jZSksIEFTVDo6QWRkcmVzc0VzY2FwZU1vZGU6OkRvZXNOb3RFc2NhcGUpOworICAg
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFTVDo6RXhwcmVzc2lvbj4gbWFrZVBvaW50ZXJFeHBy
ZXNzaW9uKG5ldyBBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbihmdW5jdGlvbkRlZmluaXRpb24u
Y29kZUxvY2F0aW9uKCksIFdURk1vdmUoc3RydWN0VmFyaWFibGVSZWZlcmVuY2UpLCBBU1Q6OkFk
ZHJlc3NFc2NhcGVNb2RlOjpEb2VzTm90RXNjYXBlKSk7CiAgICAgICAgICAgICBtYWtlUG9pbnRl
ckV4cHJlc3Npb24tPnNldFR5cGUobV9wb2ludGVyVG9TdHJ1Y3RUeXBlLmNvcHlSZWYoKSk7CiAg
ICAgICAgICAgICBtYWtlUG9pbnRlckV4cHJlc3Npb24tPnNldFR5cGVBbm5vdGF0aW9uKEFTVDo6
UmlnaHRWYWx1ZSgpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xWaXNpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuY3BwCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMDMsMzQgKzMwMyw1MCBAQCB2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6U3Rh
dGVtZW50TGlzdCYgCiAKIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpTdGF0ZW1lbnQmIHN0YXRl
bWVudCkKIHsKLSAgICBpZiAoaXM8QVNUOjpCbG9jaz4oc3RhdGVtZW50KSkKKyAgICBzd2l0Y2gg
KHN0YXRlbWVudC5raW5kKCkpIHsKKyAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpCbG9j
azoKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6QmxvY2s+KHN0YXRl
bWVudCkpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6QnJlYWs+KHN0YXRlbWVudCkpCisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OkJyZWFrOgogICAgICAgICBj
aGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpCcmVhaz4oc3RhdGVtZW50KSk7Ci0gICAg
ZWxzZSBpZiAoaXM8QVNUOjpDb250aW51ZT4oc3RhdGVtZW50KSkKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6Q29udGludWU6CiAgICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkNvbnRpbnVlPihzdGF0ZW1lbnQpKTsKLSAgICBlbHNl
IGlmIChpczxBU1Q6OkRvV2hpbGVMb29wPihzdGF0ZW1lbnQpKQorICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpEb1doaWxlTG9vcDoKICAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6RG9XaGlsZUxvb3A+KHN0YXRlbWVudCkpOwotICAg
IGVsc2UgaWYgKGlzPEFTVDo6RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudD4oc3RhdGVtZW50
KSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6RWZmZWN0
ZnVsRXhwcmVzc2lvbjoKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6
RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudD4oc3RhdGVtZW50KSk7Ci0gICAgZWxzZSBpZiAo
aXM8QVNUOjpGYWxsdGhyb3VnaD4oc3RhdGVtZW50KSkKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6RmFsbHRocm91Z2g6CiAgICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChkb3duY2FzdDxBU1Q6OkZhbGx0aHJvdWdoPihzdGF0ZW1lbnQpKTsKLSAgICBlbHNl
IGlmIChpczxBU1Q6OkZvckxvb3A+KHN0YXRlbWVudCkpCisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OkZvckxvb3A6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChkb3duY2FzdDxBU1Q6OkZvckxvb3A+KHN0YXRlbWVudCkpOwotICAgIGVsc2UgaWYgKGlz
PEFTVDo6SWZTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpCisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
QVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OklmOgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93
bmNhc3Q8QVNUOjpJZlN0YXRlbWVudD4oc3RhdGVtZW50KSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNU
OjpSZXR1cm4+KHN0YXRlbWVudCkpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpTdGF0
ZW1lbnQ6OktpbmQ6OlJldHVybjoKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0
PEFTVDo6UmV0dXJuPihzdGF0ZW1lbnQpKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OlN0YXRlbWVu
dExpc3Q+KHN0YXRlbWVudCkpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpTdGF0ZW1l
bnQ6OktpbmQ6OlN0YXRlbWVudExpc3Q6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3du
Y2FzdDxBU1Q6OlN0YXRlbWVudExpc3Q+KHN0YXRlbWVudCkpOwotICAgIGVsc2UgaWYgKGlzPEFT
VDo6U3dpdGNoQ2FzZT4oc3RhdGVtZW50KSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6
OlN0YXRlbWVudDo6S2luZDo6U3dpdGNoQ2FzZToKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGRvd25jYXN0PEFTVDo6U3dpdGNoQ2FzZT4oc3RhdGVtZW50KSk7Ci0gICAgZWxzZSBpZiAoaXM8
QVNUOjpTd2l0Y2hTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpCisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQVNUOjpTdGF0ZW1lbnQ6OktpbmQ6OlN3aXRjaDoKICAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KGRvd25jYXN0PEFTVDo6U3dpdGNoU3RhdGVtZW50PihzdGF0ZW1lbnQpKTsKLSAgICBlbHNl
IGlmIChpczxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50PihzdGF0ZW1lbnQpKQor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6U3RhdGVtZW50OjpLaW5kOjpWYXJpYWJsZURl
Y2xhcmF0aW9uczoKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6VmFy
aWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpOwotICAgIGVsc2UKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OlN0YXRlbWVudDo6S2luZDo6V2hpbGVMb29wOgogICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpXaGlsZUxvb3A+KHN0YXRlbWVu
dCkpOworICAgICAgICBicmVhazsKKyAgICB9CiB9CiAKIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNU
OjpCcmVhayYpCkBAIC0zNDksNDYgKzM2NSw2OCBAQCB2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6
RG9XaGlsZUxvb3AmIGRvCiAKIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpFeHByZXNzaW9uJiBl
eHByZXNzaW9uKQogewotICAgIGlmIChpczxBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPihleHBy
ZXNzaW9uKSkKKyAgICBzd2l0Y2ggKGV4cHJlc3Npb24ua2luZCgpKSB7CisgICAgY2FzZSBBU1Q6
OkV4cHJlc3Npb246OktpbmQ6OkFzc2lnbm1lbnQ6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChkb3duY2FzdDxBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAg
ZWxzZSBpZiAoaXM8QVNUOjpCb29sZWFuTGl0ZXJhbD4oZXhwcmVzc2lvbikpCisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpCb29sZWFuTGl0ZXJhbDoKICAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6Qm9vbGVhbkxpdGVyYWw+KGV4
cHJlc3Npb24pKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OkNhbGxFeHByZXNzaW9uPihleHByZXNz
aW9uKSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkNh
bGw6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkNhbGxFeHByZXNz
aW9uPihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpDb21tYUV4cHJlc3Npb24+
KGV4cHJlc3Npb24pKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6
S2luZDo6Q29tbWE6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkNv
bW1hRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6RGVyZWZl
cmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBB
U1Q6OkV4cHJlc3Npb246OktpbmQ6OkRlcmVmZXJlbmNlOgogICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoZG93bmNhc3Q8QVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsK
LSAgICBlbHNlIGlmIChpczxBU1Q6OkZsb2F0TGl0ZXJhbD4oZXhwcmVzc2lvbikpCisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpGbG9hdExpdGVyYWw6CiAg
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkZsb2F0TGl0ZXJhbD4oZXhw
cmVzc2lvbikpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6SW50ZWdlckxpdGVyYWw+KGV4cHJlc3Np
b24pKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6SW50
ZWdlckxpdGVyYWw6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6Oklu
dGVnZXJMaXRlcmFsPihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpMb2dpY2Fs
RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNUOjpF
eHByZXNzaW9uOjpLaW5kOjpMb2dpY2FsOgogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93
bmNhc3Q8QVNUOjpMb2dpY2FsRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgIGVsc2UgaWYg
KGlzPEFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKQorICAgICAgICBicmVh
azsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6TG9naWNhbE5vdDoKICAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb24+KGV4
cHJlc3Npb24pKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4cHJl
c3Npb24+KGV4cHJlc3Npb24pKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVz
c2lvbjo6S2luZDo6TWFrZUFycmF5UmVmZXJlbmNlOgogICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoZG93bmNhc3Q8QVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9u
KSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24+KGV4cHJlc3Np
b24pKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6TWFr
ZVBvaW50ZXI6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6Ok1ha2VQ
b2ludGVyRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgIGVsc2UgaWYgKGlzPEFTVDo6TnVs
bExpdGVyYWw+KGV4cHJlc3Npb24pKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6RXhw
cmVzc2lvbjo6S2luZDo6TnVsbExpdGVyYWw6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChk
b3duY2FzdDxBU1Q6Ok51bGxMaXRlcmFsPihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8
QVNUOjpEb3RFeHByZXNzaW9uPihleHByZXNzaW9uKSkKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OkRvdDoKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGRvd25jYXN0PEFTVDo6RG90RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgIGVsc2UgaWYg
KGlzPEFTVDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U+KGV4cHJlc3Npb24pKQorICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEFTVDo6RXhwcmVzc2lvbjo6S2luZDo6R2xvYmFsVmFyaWFibGVSZWZl
cmVuY2U6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6Okdsb2JhbFZh
cmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8QVNUOjpJbmRl
eEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6
RXhwcmVzc2lvbjo6S2luZDo6SW5kZXg6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3du
Y2FzdDxBU1Q6OkluZGV4RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwotICAgIGVsc2UgaWYgKGlz
PEFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpCisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQVNUOjpFeHByZXNzaW9uOjpLaW5kOjpSZWFkTW9kaWZ5V3JpdGU6CiAg
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4
cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OlRlcm5hcnlFeHBy
ZXNzaW9uPihleHByZXNzaW9uKSkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4cHJl
c3Npb246OktpbmQ6OlRlcm5hcnk6CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2Fz
dDxBU1Q6OlRlcm5hcnlFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSBpZiAoaXM8
QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKSkKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBBU1Q6OkV4cHJlc3Npb246OktpbmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw6
CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlVuc2lnbmVkSW50ZWdl
ckxpdGVyYWw+KGV4cHJlc3Npb24pKTsKLSAgICBlbHNlIGlmIChpczxBU1Q6OkVudW1lcmF0aW9u
TWVtYmVyTGl0ZXJhbD4oZXhwcmVzc2lvbikpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVNU
OjpFeHByZXNzaW9uOjpLaW5kOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6CiAgICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbD4o
ZXhwcmVzc2lvbikpOwotICAgIGVsc2UKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBU1Q6OkV4
cHJlc3Npb246OktpbmQ6OlZhcmlhYmxlUmVmZXJlbmNlOgogICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoZG93bmNhc3Q8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lvbikpOworICAg
ICAgICBicmVhazsKKyAgICB9CiB9CiAKIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpEb3RFeHBy
ZXNzaW9uJiBkb3RFeHByZXNzaW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlSZWZlcmVuY2VU
eXBlLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsNyArNDcsNyBAQCBjbGFzcyBBcnJheVJl
ZmVyZW5jZVR5cGUgZmluYWwgOiBwdWJsaWMgCiAgICAgdXNpbmcgQmFzZSA9IFJlZmVyZW5jZVR5
cGU7CiAKICAgICBBcnJheVJlZmVyZW5jZVR5cGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBBZGRy
ZXNzU3BhY2UgYWRkcmVzc1NwYWNlLCBSZWY8VW5uYW1lZFR5cGU+IGVsZW1lbnRUeXBlKQotICAg
ICAgICA6IEJhc2UobG9jYXRpb24sIGFkZHJlc3NTcGFjZSwgV1RGTW92ZShlbGVtZW50VHlwZSks
IEtpbmQ6OkFycmF5UmVmZXJlbmNlVHlwZSkKKyAgICAgICAgOiBCYXNlKGxvY2F0aW9uLCBhZGRy
ZXNzU3BhY2UsIFdURk1vdmUoZWxlbWVudFR5cGUpLCBLaW5kOjpBcnJheVJlZmVyZW5jZSkKICAg
ICB7CiAgICAgfQogcHVibGljOgpAQCAtNTUsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEFycmF5UmVmZXJlbmNlVHlwZShsb2NhdGlvbiwgYWRkcmVzc1Nw
YWNlLCBXVEZNb3ZlKGVsZW1lbnRUeXBlKSkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgfkFycmF5
UmVmZXJlbmNlVHlwZSgpID0gZGVmYXVsdDsKKyAgICB+QXJyYXlSZWZlcmVuY2VUeXBlKCkgPSBk
ZWZhdWx0OwogCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICAgewpAQCAtNjcsNyArNjgs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZGRyZXNzU3BhY2UoKSA9PSBvdGhlci5hZGRy
ZXNzU3BhY2UoKSAmJiBlbGVtZW50VHlwZSgpID09IG90aGVyLmVsZW1lbnRUeXBlKCk7CiAgICAg
fQogCi0gICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJpbmcgdG9T
dHJpbmcoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoZWxlbWVudFR5
cGUoKS50b1N0cmluZygpLCAiW10iKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVR5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVR5cGUuaAkocmV2
aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQXJyYXlUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3Mg
QXJyYXlUeXBlIGZpbmFsIDogcHVibGljIFVubmFtZWRUeQogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFycmF5VHlwZSk7CiAgICAgQXJyYXlU
eXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgUmVmPFVubmFtZWRUeXBlPiBlbGVtZW50VHlwZSwg
dW5zaWduZWQgbnVtRWxlbWVudHMpCi0gICAgICAgIDogVW5uYW1lZFR5cGUobG9jYXRpb24sIEtp
bmQ6OkFycmF5VHlwZSkKKyAgICAgICAgOiBVbm5hbWVkVHlwZShsb2NhdGlvbiwgS2luZDo6QXJy
YXkpCiAgICAgICAgICwgbV9lbGVtZW50VHlwZShXVEZNb3ZlKGVsZW1lbnRUeXBlKSkKICAgICAg
ICAgLCBtX251bUVsZW1lbnRzKG51bUVsZW1lbnRzKQogICAgIHsKQEAgLTU4LDcgKzU4LDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcnJheVR5cGUobG9jYXRpb24s
IFdURk1vdmUoZWxlbWVudFR5cGUpLCBudW1FbGVtZW50cykpOwogICAgIH0KIAotICAgIHZpcnR1
YWwgfkFycmF5VHlwZSgpID0gZGVmYXVsdDsKKyAgICB+QXJyYXlUeXBlKCkgPSBkZWZhdWx0Owog
CiAgICAgY29uc3QgVW5uYW1lZFR5cGUmIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRU
eXBlOyB9CiAgICAgVW5uYW1lZFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX2VsZW1lbnRUeXBlOyB9
CkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG51bUVsZW1lbnRzKCkg
PT0gb3RoZXIubnVtRWxlbWVudHMoKSAmJiB0eXBlKCkgPT0gb3RoZXIudHlwZSgpOwogICAgIH0K
IAotICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IG92ZXJyaWRlCisgICAgU3RyaW5nIHRvU3Ry
aW5nKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHR5cGUoKS50b1N0
cmluZygpLCAnWycsIG51bUVsZW1lbnRzKCksICddJyk7CiAgICAgfQpAQCAtOTAsNiArOTAsOCBA
QCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShBcnJheVR5cGUpCisKIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVU5OQU1FRF9UWVBFKEFycmF5VHlwZSwgaXNBcnJh
eVR5cGUoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFzc2lnbm1lbnRFeHByZXNz
aW9uLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDExICszNywxMSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAot
Y2xhc3MgQXNzaWdubWVudEV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBB
c3NpZ25tZW50RXhwcmVzc2lvbiBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBBc3NpZ25tZW50RXhwcmVzc2lvbihD
b2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGxlZnQsIFVuaXF1
ZVJlZjxFeHByZXNzaW9uPiYmIHJpZ2h0KQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24p
CisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6QXNzaWdubWVudCkKICAgICAg
ICAgLCBtX2xlZnQoV1RGTW92ZShsZWZ0KSkKICAgICAgICAgLCBtX3JpZ2h0KFdURk1vdmUocmln
aHQpKQogICAgIHsKQEAgLTUwLDEzICs1MCwxMSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAK
LSAgICB2aXJ0dWFsIH5Bc3NpZ25tZW50RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKyAgICB+QXNz
aWdubWVudEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CiAKICAgICBBc3NpZ25tZW50RXhwcmVzc2lv
bihjb25zdCBBc3NpZ25tZW50RXhwcmVzc2lvbiYpID0gZGVsZXRlOwogICAgIEFzc2lnbm1lbnRF
eHByZXNzaW9uKEFzc2lnbm1lbnRFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wg
aXNBc3NpZ25tZW50RXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
LQogICAgIEV4cHJlc3Npb24mIGxlZnQoKSB7IHJldHVybiBtX2xlZnQ7IH0KICAgICBFeHByZXNz
aW9uJiByaWdodCgpIHsgcmV0dXJuIG1fcmlnaHQ7IH0KICAgICBVbmlxdWVSZWY8RXhwcmVzc2lv
bj4gdGFrZVJpZ2h0KCkgeyByZXR1cm4gV1RGTW92ZShtX3JpZ2h0KTsgfQpAQCAtNzUsNiArNzMs
OCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShBc3NpZ25tZW50RXhw
cmVzc2lvbikKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEFzc2ln
bm1lbnRFeHByZXNzaW9uLCBpc0Fzc2lnbm1lbnRFeHByZXNzaW9uKCkpCiAKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmxvY2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xCbG9jay5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyNCArMzgs
MjIgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEJsb2Nr
IDogcHVibGljIFN0YXRlbWVudCB7CitjbGFzcyBCbG9jayBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1l
bnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEJsb2NrKENv
ZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RhdGVtZW50cyYmIHN0YXRlbWVudHMpCi0gICAgICAgIDog
U3RhdGVtZW50KGxvY2F0aW9uKQorICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6
QmxvY2spCiAgICAgICAgICwgbV9zdGF0ZW1lbnRzKFdURk1vdmUoc3RhdGVtZW50cykpCiAgICAg
ewogICAgIH0KIAotICAgIHZpcnR1YWwgfkJsb2NrKCkgPSBkZWZhdWx0OworICAgIH5CbG9jaygp
ID0gZGVmYXVsdDsKIAogICAgIEJsb2NrKGNvbnN0IEJsb2NrJikgPSBkZWxldGU7CiAgICAgQmxv
Y2soQmxvY2smJikgPSBkZWZhdWx0OwogCiAgICAgU3RhdGVtZW50cyYgc3RhdGVtZW50cygpIHsg
cmV0dXJuIG1fc3RhdGVtZW50czsgfQogCi0gICAgYm9vbCBpc0Jsb2NrKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiBwcml2YXRlOgogICAgIFN0YXRlbWVudHMgbV9zdGF0ZW1l
bnRzOwogfTsKQEAgLTY2LDYgKzY0LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVM
VF9ERUxFVEUoQmxvY2spCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5U
KEJsb2NrLCBpc0Jsb2NrKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQm9vbGVhbkxpdGVyYWwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCb29sZWFuTGl0ZXJh
bC5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xCb29sZWFuTGl0ZXJhbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNiAr
MzYsMTYgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEJv
b2xlYW5MaXRlcmFsIDogcHVibGljIEV4cHJlc3Npb24geworY2xhc3MgQm9vbGVhbkxpdGVyYWwg
ZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgQm9vbGVhbkxpdGVyYWwoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBib29s
IHZhbHVlKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVz
c2lvbihsb2NhdGlvbiwgS2luZDo6Qm9vbGVhbkxpdGVyYWwpCiAgICAgICAgICwgbV92YWx1ZSh2
YWx1ZSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+Qm9vbGVhbkxpdGVyYWwoKSA9IGRl
ZmF1bHQ7CisgICAgfkJvb2xlYW5MaXRlcmFsKCkgPSBkZWZhdWx0OwogCiAgICAgQm9vbGVhbkxp
dGVyYWwoY29uc3QgQm9vbGVhbkxpdGVyYWwmKSA9IGRlbGV0ZTsKICAgICBCb29sZWFuTGl0ZXJh
bChCb29sZWFuTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CkBAIC01NSw4ICs1NSw2IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKLSAgICBib29s
IGlzQm9vbGVhbkxpdGVyYWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAg
ICBCb29sZWFuTGl0ZXJhbCBjbG9uZSgpIGNvbnN0CiAgICAgewogICAgICAgICBCb29sZWFuTGl0
ZXJhbCByZXN1bHQoY29kZUxvY2F0aW9uKCksIG1fdmFsdWUpOwpAQCAtNzQsNiArNzIsOCBAQCBw
cml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShCb29sZWFuTGl0ZXJhbCkKKwog
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEJvb2xlYW5MaXRlcmFsLCBp
c0Jvb2xlYW5MaXRlcmFsKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnJlYWsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCcmVhay5oCShyZXZpc2lvbiAyNDg0
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCcmVh
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywyMSArMzcsMTkgQEAgbmFtZXNwYWNlIFdITFNMIHsK
IAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEJyZWFrIDogcHVibGljIFN0YXRlbWVudCB7Citj
bGFzcyBCcmVhayBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIEJyZWFrKENvZGVMb2NhdGlvbiBsb2NhdGlvbikKLSAg
ICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24pCisgICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9u
LCBLaW5kOjpCcmVhaykKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+QnJlYWsoKSA9IGRl
ZmF1bHQ7CisgICAgfkJyZWFrKCkgPSBkZWZhdWx0OwogCiAgICAgQnJlYWsoY29uc3QgQnJlYWsm
KSA9IGRlbGV0ZTsKICAgICBCcmVhayhCcmVhayYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlz
QnJlYWsoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KIHByaXZhdGU6CiB9Owog
CkBAIC02MSw2ICs1OSw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRF
KEJyZWFrKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChCcmVhaywg
aXNCcmVhaygpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTENhbGxFeHByZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ2FsbEV4cHJlc3Npb24uaAkocmV2
aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQ2FsbEV4cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMjcgKzQwLDI1IEBA
IG5hbWVzcGFjZSBBU1QgewogCiBjbGFzcyBOYW1lZFR5cGU7CiAKLWNsYXNzIENhbGxFeHByZXNz
aW9uIDogcHVibGljIEV4cHJlc3Npb24geworY2xhc3MgQ2FsbEV4cHJlc3Npb24gZmluYWwgOiBw
dWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgQ2FsbEV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1l
LCBWZWN0b3I8VW5pcXVlUmVmPEV4cHJlc3Npb24+PiYmIGFyZ3VtZW50cykKLSAgICAgICAgOiBF
eHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6
OkNhbGwpCiAgICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCiAgICAgICAgICwgbV9hcmd1
bWVudHMoV1RGTW92ZShhcmd1bWVudHMpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5D
YWxsRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKLQogICAgIENhbGxFeHByZXNzaW9uKGNvbnN0IENh
bGxFeHByZXNzaW9uJikgPSBkZWxldGU7CiAgICAgQ2FsbEV4cHJlc3Npb24oQ2FsbEV4cHJlc3Np
b24mJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc0NhbGxFeHByZXNzaW9uKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9u
Pj4mIGFyZ3VtZW50cygpIHsgcmV0dXJuIG1fYXJndW1lbnRzOyB9CiAKICAgICBTdHJpbmcmIG5h
bWUoKSB7IHJldHVybiBtX25hbWU7IH0KIAorICAgIH5DYWxsRXhwcmVzc2lvbigpID0gZGVmYXVs
dDsKKwogICAgIHZvaWQgc2V0Q2FzdERhdGEoTmFtZWRUeXBlJiBuYW1lZFR5cGUpCiAgICAgewog
ICAgICAgICBtX2Nhc3RSZXR1cm5UeXBlID0gJm5hbWVkVHlwZTsKQEAgLTkzLDYgKzkxLDggQEAg
cHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoQ2FsbEV4cHJlc3Npb24pCisK
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihDYWxsRXhwcmVzc2lvbiwg
aXNDYWxsRXhwcmVzc2lvbigpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVzc2lvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVz
c2lvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xDb21tYUV4cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzgs
MjIgKzM4LDIwIEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFz
cyBDb21tYUV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBDb21tYUV4cHJl
c3Npb24gZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgQ29tbWFFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlv
biwgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4mJiBsaXN0KQotICAgICAgICA6IEV4cHJl
c3Npb24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6Q29t
bWEpCiAgICAgICAgICwgbV9saXN0KFdURk1vdmUobGlzdCkpCiAgICAgewogICAgIH0KIAotICAg
IHZpcnR1YWwgfkNvbW1hRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKyAgICB+Q29tbWFFeHByZXNz
aW9uKCkgPSBkZWZhdWx0OwogCiAgICAgQ29tbWFFeHByZXNzaW9uKGNvbnN0IENvbW1hRXhwcmVz
c2lvbiYpID0gZGVsZXRlOwogICAgIENvbW1hRXhwcmVzc2lvbihDb21tYUV4cHJlc3Npb24mJikg
PSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc0NvbW1hRXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLQogICAgIFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiBs
aXN0KCkgeyByZXR1cm4gbV9saXN0OyB9CiAKIHByaXZhdGU6CkBAIC02Niw2ICs2NCw4IEBAIHBy
aXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKENvbW1hRXhwcmVzc2lvbikKKwog
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKENvbW1hRXhwcmVzc2lvbiwg
aXNDb21tYUV4cHJlc3Npb24oKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb25zdGFu
dEV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIEFTVCB7CiAvLyBGSVhNRTogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE1OCBtYWNPUyBTaWVycmEgZG9lc24n
dCBzZWVtIHRvIHN1cHBvcnQgcHV0dGluZyBWYXJpYW50cyBpbnNpZGUgVmFyaWFudHMsCiAvLyBz
byB0aGlzIGlzIGEgd3JhcHBlciBjbGFzcyB0byBtYWtlIHN1cmUgdGhhdCBkb2Vzbid0IGhhcHBl
bi4gQXMgc29vbiBhcyB3ZSBkb24ndAogLy8gaGF2ZSB0byBzdXBwb3J0IFNpZXJyYSwgdGhpcyBj
YW4gYmUgbWlncmF0ZWQgdG8gYSBWYXJpYW50IHByb3Blci4KLWNsYXNzIENvbnN0YW50RXhwcmVz
c2lvbiB7CitjbGFzcyBDb25zdGFudEV4cHJlc3Npb24gZmluYWwgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENvbnN0YW50RXhwcmVzc2lvbihJbnRlZ2VyTGl0
ZXJhbCYmIGludGVnZXJMaXRlcmFsKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQ29udGludWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb250aW51ZS5oCShyZXZpc2lvbiAyNDg0
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb250
aW51ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywyMSArMzcsMTkgQEAgbmFtZXNwYWNlIFdITFNM
IHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIENvbnRpbnVlIDogcHVibGljIFN0YXRlbWVu
dCB7CitjbGFzcyBDb250aW51ZSBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnQgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENvbnRpbnVlKENvZGVMb2NhdGlvbiBs
b2NhdGlvbikKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24pCisgICAgICAgIDogU3RhdGVt
ZW50KGxvY2F0aW9uLCBLaW5kOjpDb250aW51ZSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVh
bCB+Q29udGludWUoKSA9IGRlZmF1bHQ7CisgICAgfkNvbnRpbnVlKCkgPSBkZWZhdWx0OwogCiAg
ICAgQ29udGludWUoY29uc3QgQ29udGludWUmKSA9IGRlbGV0ZTsKICAgICBDb250aW51ZShDb250
aW51ZSYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzQ29udGludWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9Ci0KIHByaXZhdGU6CiB9OwogCkBAIC02MSw2ICs1OSw4IEBAIHBy
aXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKENvbnRpbnVlKQorCiBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChDb250aW51ZSwgaXNDb250aW51ZSgpKQog
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTERlZmF1bHREZWxldGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEZWZhdWx0RGVsZXRlLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVmYXVsdERlbGV0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKwor
I2RlZmluZSBERUZJTkVfREVGQVVMVF9ERUxFVEUodHlwZSkgXAorICAgIG5hbWVzcGFjZSBzdGQg
eyBcCisgICAgICAgIHRlbXBsYXRlPD4gXAorICAgICAgICBzdHJ1Y3QgZGVmYXVsdF9kZWxldGU8
V2ViQ29yZTo6V0hMU0w6OkFTVDo6dHlwZT4geyBcCisgICAgICAgICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gXAorICAgICAgICAgICAgdm9pZCBjYWxsRGVsZXRlKFQqIHQpIFwKKyAgICAgICAg
ICAgIHsgXAorICAgICAgICAgICAgICAgIGRlbGV0ZSB0OyBcCisgICAgICAgICAgICB9IFwKKyAg
ICAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBcCisgICAgICAgICAgICB2b2lkIGNhbGxE
ZXN0cm95KFQqIHQpIFwKKyAgICAgICAgICAgIHsgXAorICAgICAgICAgICAgICAgIFdlYkNvcmU6
OldITFNMOjpBU1Q6OnR5cGU6OmRlc3Ryb3koKnQpOyBcCisgICAgICAgICAgICB9IFwKKyAgICAg
ICAgICAgIGNvbnN0ZXhwciB2b2lkIG9wZXJhdG9yKCkoV2ViQ29yZTo6V0hMU0w6OkFTVDo6dHlw
ZSogdmFsdWUpIFwKKyAgICAgICAgICAgIHsgXAorICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19maW5hbDxXZWJDb3JlOjpXSExTTDo6QVNUOjp0eXBlPjo6dmFsdWUpIFwKKyAg
ICAgICAgICAgICAgICAgICAgY2FsbERlbGV0ZSh2YWx1ZSk7IFwKKyAgICAgICAgICAgICAgICBl
bHNlIFwKKyAgICAgICAgICAgICAgICAgICAgY2FsbERlc3Ryb3kodmFsdWUpOyBcCisgICAgICAg
ICAgICB9IFwKKyAgICAgICAgfTsgXAorICAgIH0gXAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlcmVmZXJlbmNlRXhwcmVzc2lv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEZXJlZmVyZW5jZUV4cHJl
c3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMjIgKzM3LDIwIEBAIG5hbWVzcGFjZSBXSExT
TCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBEZXJlZmVyZW5jZUV4cHJlc3Npb24gOiBw
dWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBEZXJlZmVyZW5jZUV4cHJlc3Npb24gZmluYWwgOiBw
dWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgRGVyZWZlcmVuY2VFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVl
UmVmPEV4cHJlc3Npb24+JiYgcG9pbnRlcikKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9u
KQorICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkRlcmVmZXJlbmNlKQogICAg
ICAgICAsIG1fcG9pbnRlcihXVEZNb3ZlKHBvaW50ZXIpKQogICAgIHsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIH5EZXJlZmVyZW5jZUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfkRlcmVmZXJl
bmNlRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKIAogICAgIERlcmVmZXJlbmNlRXhwcmVzc2lvbihj
b25zdCBEZXJlZmVyZW5jZUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBEZXJlZmVyZW5jZUV4
cHJlc3Npb24oRGVyZWZlcmVuY2VFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wg
aXNEZXJlZmVyZW5jZUV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
Ci0KICAgICBFeHByZXNzaW9uJiBwb2ludGVyKCkgeyByZXR1cm4gbV9wb2ludGVyOyB9CiAKIHBy
aXZhdGU6CkBAIC02NSw2ICs2Myw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRf
REVMRVRFKERlcmVmZXJlbmNlRXhwcmVzc2lvbikKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19X
SExTTF9FWFBSRVNTSU9OKERlcmVmZXJlbmNlRXhwcmVzc2lvbiwgaXNEZXJlZmVyZW5jZUV4cHJl
c3Npb24oKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xEb1doaWxlTG9vcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29wLmgJKHJldmlzaW9uIDI0
ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERv
V2hpbGVMb29wLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDIzICszOCwyMSBAQCBuYW1lc3BhY2Ug
V0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgRG9XaGlsZUxvb3AgOiBwdWJsaWMg
U3RhdGVtZW50IHsKK2NsYXNzIERvV2hpbGVMb29wIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRG9XaGlsZUxvb3Ao
Q29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8U3RhdGVtZW50PiYmIGJvZHksIFVuaXF1
ZVJlZjxFeHByZXNzaW9uPiYmIGNvbmRpdGlvbmFsKQotICAgICAgICA6IFN0YXRlbWVudChsb2Nh
dGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OkRvV2hpbGVMb29wKQog
ICAgICAgICAsIG1fYm9keShXVEZNb3ZlKGJvZHkpKQogICAgICAgICAsIG1fY29uZGl0aW9uYWwo
V1RGTW92ZShjb25kaXRpb25hbCkpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfkRvV2hp
bGVMb29wKCkgPSBkZWZhdWx0OworICAgIH5Eb1doaWxlTG9vcCgpID0gZGVmYXVsdDsKIAogICAg
IERvV2hpbGVMb29wKGNvbnN0IERvV2hpbGVMb29wJikgPSBkZWxldGU7CiAgICAgRG9XaGlsZUxv
b3AoRG9XaGlsZUxvb3AmJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc0RvV2hpbGVMb29wKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgU3RhdGVtZW50JiBib2R5KCkg
eyByZXR1cm4gbV9ib2R5OyB9CiAgICAgRXhwcmVzc2lvbiYgY29uZGl0aW9uYWwoKSB7IHJldHVy
biBtX2NvbmRpdGlvbmFsOyB9CiAKQEAgLTY5LDYgKzY3LDggQEAgcHJpdmF0ZToKIAogfQogCitE
RUZJTkVfREVGQVVMVF9ERUxFVEUoRG9XaGlsZUxvb3ApCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfV0hMU0xfU1RBVEVNRU5UKERvV2hpbGVMb29wLCBpc0RvV2hpbGVMb29wKCkpCiAKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG90
RXhwcmVzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTERvdEV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG90RXhwcmVzc2lvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCwzMyArMzgsMzEgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAog
bmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIERvdEV4cHJlc3Npb24gOiBwdWJsaWMgUHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uIHsKK2NsYXNzIERvdEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgUHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBEb3RFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVm
PEV4cHJlc3Npb24+JiYgYmFzZSwgU3RyaW5nJiYgZmllbGROYW1lKQotICAgICAgICA6IFByb3Bl
cnR5QWNjZXNzRXhwcmVzc2lvbihsb2NhdGlvbiwgV1RGTW92ZShiYXNlKSkKKyAgICAgICAgOiBQ
cm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkRvdCwgV1RGTW92ZShiYXNl
KSkKICAgICAgICAgLCBtX2ZpZWxkTmFtZShXVEZNb3ZlKGZpZWxkTmFtZSkpCiAgICAgewogICAg
IH0KIAotICAgIHZpcnR1YWwgfkRvdEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfkRvdEV4
cHJlc3Npb24oKSA9IGRlZmF1bHQ7CiAKICAgICBEb3RFeHByZXNzaW9uKGNvbnN0IERvdEV4cHJl
c3Npb24mKSA9IGRlbGV0ZTsKICAgICBEb3RFeHByZXNzaW9uKERvdEV4cHJlc3Npb24mJikgPSBk
ZWZhdWx0OwogCi0gICAgYm9vbCBpc0RvdEV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0KLSAgICBTdHJpbmcgZ2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3Qgb3Zl
cnJpZGUKKyAgICBTdHJpbmcgZ2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHJldHVybiBtYWtlU3RyaW5nKCJvcGVyYXRvci4iLCBtX2ZpZWxkTmFtZSk7CiAgICAgfQog
Ci0gICAgU3RyaW5nIHNldHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgU3Ry
aW5nIHNldHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbWFr
ZVN0cmluZygib3BlcmF0b3IuIiwgbV9maWVsZE5hbWUsICI9Iik7CiAgICAgfQogCi0gICAgU3Ry
aW5nIGFuZGVyRnVuY3Rpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJpbmcgYW5kZXJG
dW5jdGlvbk5hbWUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIm9w
ZXJhdG9yJi4iLCBtX2ZpZWxkTmFtZSk7CiAgICAgfQpAQCAtODEsNiArNzksOCBAQCBwcml2YXRl
OgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShEb3RFeHByZXNzaW9uKQorCiBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oRG90RXhwcmVzc2lvbiwgaXNEb3RFeHBy
ZXNzaW9uKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVmZmVjdGZ1
bEV4cHJlc3Npb25TdGF0ZW1lbnQuaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyMiArMzgsMjAgQEAgbmFtZXNwYWNlIFdITFNM
IHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1l
bnQgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNzIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1l
bnQgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KFVuaXF1ZVJlZjxF
eHByZXNzaW9uPiYmIGVmZmVjdGZ1bEV4cHJlc3Npb24pCi0gICAgICAgIDogU3RhdGVtZW50KGVm
ZmVjdGZ1bEV4cHJlc3Npb24tPmNvZGVMb2NhdGlvbigpKQorICAgICAgICA6IFN0YXRlbWVudChl
ZmZlY3RmdWxFeHByZXNzaW9uLT5jb2RlTG9jYXRpb24oKSwgS2luZDo6RWZmZWN0ZnVsRXhwcmVz
c2lvbikKICAgICAgICAgLCBtX2VmZmVjdGZ1bEV4cHJlc3Npb24oV1RGTW92ZShlZmZlY3RmdWxF
eHByZXNzaW9uKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+RWZmZWN0ZnVsRXhwcmVz
c2lvblN0YXRlbWVudCgpID0gZGVmYXVsdDsKKyAgICB+RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRl
bWVudCgpID0gZGVmYXVsdDsKIAogICAgIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoY29u
c3QgRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYpID0gZGVsZXRlOwogICAgIEVmZmVjdGZ1
bEV4cHJlc3Npb25TdGF0ZW1lbnQoRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYmKSA9IGRl
ZmF1bHQ7CiAKLSAgICBib29sIGlzRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIEV4cHJlc3Npb24mIGVmZmVjdGZ1bEV4
cHJlc3Npb24oKSB7IHJldHVybiBtX2VmZmVjdGZ1bEV4cHJlc3Npb247IH0KIAogcHJpdmF0ZToK
QEAgLTY2LDYgKzY0LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUo
RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19X
SExTTF9TVEFURU1FTlQoRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCwgaXNFZmZlY3RmdWxF
eHByZXNzaW9uU3RhdGVtZW50KCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51
bWVyYXRpb25EZWZpbml0aW9uLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NSwyMiArNDUsMjAgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFt
ZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEVudW1lcmF0aW9uRGVmaW5pdGlvbiA6IHB1YmxpYyBOYW1l
ZFR5cGUgeworY2xhc3MgRW51bWVyYXRpb25EZWZpbml0aW9uIGZpbmFsIDogcHVibGljIE5hbWVk
VHlwZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRW51bWVy
YXRpb25EZWZpbml0aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSwgUmVm
PFVubmFtZWRUeXBlPiB0eXBlKQotICAgICAgICA6IE5hbWVkVHlwZShsb2NhdGlvbiwgV1RGTW92
ZShuYW1lKSkKKyAgICAgICAgOiBOYW1lZFR5cGUoS2luZDo6RW51bWVyYXRpb25EZWZpbml0aW9u
LCBsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSkKICAgICAgICAgLCBtX3R5cGUoV1RGTW92ZSh0eXBl
KSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+RW51bWVyYXRpb25EZWZpbml0aW9uKCkg
PSBkZWZhdWx0OworICAgIH5FbnVtZXJhdGlvbkRlZmluaXRpb24oKSA9IGRlZmF1bHQ7CiAKICAg
ICBFbnVtZXJhdGlvbkRlZmluaXRpb24oY29uc3QgRW51bWVyYXRpb25EZWZpbml0aW9uJikgPSBk
ZWxldGU7CiAgICAgRW51bWVyYXRpb25EZWZpbml0aW9uKEVudW1lcmF0aW9uRGVmaW5pdGlvbiYm
KSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzRW51bWVyYXRpb25EZWZpbml0aW9uKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgVW5uYW1lZFR5cGUmIHR5cGUoKSB7IHJl
dHVybiBtX3R5cGU7IH0KIAogICAgIGJvb2wgYWRkKEVudW1lcmF0aW9uTWVtYmVyJiYgbWVtYmVy
KQpAQCAtOTYsNiArOTQsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVU
RShFbnVtZXJhdGlvbkRlZmluaXRpb24pCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xf
TkFNRURfVFlQRShFbnVtZXJhdGlvbkRlZmluaXRpb24sIGlzRW51bWVyYXRpb25EZWZpbml0aW9u
KCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MCwxNyArNDAsMTcgQEAgbmFtZXNwYWNlIEFTVCB7CiBjbGFzcyBFbnVtZXJhdGlv
bkRlZmluaXRpb247CiBjbGFzcyBFbnVtZXJhdGlvbk1lbWJlcjsKIAotY2xhc3MgRW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsIDogcHVibGljIEV4cHJlc3Npb24geworY2xhc3MgRW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbChDb2Rl
TG9jYXRpb24gbG9jYXRpb24sIFN0cmluZyYmIGxlZnQsIFN0cmluZyYmIHJpZ2h0KQotICAgICAg
ICA6IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwg
S2luZDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKQogICAgICAgICAsIG1fbGVmdChXVEZNb3Zl
KGxlZnQpKQogICAgICAgICAsIG1fcmlnaHQoV1RGTW92ZShyaWdodCkpCiAgICAgewogICAgIH0K
IAotICAgIHZpcnR1YWwgfkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCgpID0gZGVmYXVsdDsKKyAg
ICB+RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKCkgPSBkZWZhdWx0OwogCiAgICAgZXhwbGljaXQg
RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKGNvbnN0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYp
ID0gZGVsZXRlOwogICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbChFbnVtZXJhdGlvbk1lbWJl
ckxpdGVyYWwmJikgPSBkZWZhdWx0OwpAQCAtNTgsOCArNTgsNiBAQCBwdWJsaWM6CiAgICAgRW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBvcGVyYXRvcj0oY29uc3QgRW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsJikgPSBkZWxldGU7CiAgICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBvcGVyYXRv
cj0oRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
Ci0KICAgICBzdGF0aWMgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsIHdyYXAoQ29kZUxvY2F0aW9u
IGxvY2F0aW9uLCBTdHJpbmcmJiBsZWZ0LCBTdHJpbmcmJiByaWdodCwgRW51bWVyYXRpb25EZWZp
bml0aW9uJiBlbnVtZXJhdGlvbkRlZmluaXRpb24sIEVudW1lcmF0aW9uTWVtYmVyJiBlbnVtZXJh
dGlvbk1lbWJlcikKICAgICB7CiAgICAgICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCByZXN1
bHQobG9jYXRpb24sIFdURk1vdmUobGVmdCksIFdURk1vdmUocmlnaHQpKTsKQEAgLTExOCw2ICsx
MTYsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShFbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwpCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lP
TihFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwsIGlzRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKCkp
CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRXhwcmVzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5jcHAJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisKKyNpZiBFTkFCTEUo
V0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xBU1QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKwordm9pZCBFeHByZXNzaW9u
OjpkZXN0cm95KEV4cHJlc3Npb24mIGV4cHJlc3Npb24pCit7CisgICAgc3dpdGNoIChleHByZXNz
aW9uLmtpbmQoKSkgeworICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6QXNzaWdubWVudDoKKyAg
ICAgICAgZGVsZXRlICZkb3duY2FzdDxBc3NpZ25tZW50RXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6Qm9vbGVhbkxpdGVy
YWw6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8Qm9vbGVhbkxpdGVyYWw+KGV4cHJlc3Npb24p
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkNhbGw6CisgICAg
ICAgIGRlbGV0ZSAmZG93bmNhc3Q8Q2FsbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkNvbW1hOgorICAgICAgICBkZWxl
dGUgJmRvd25jYXN0PENvbW1hRXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6RGVyZWZlcmVuY2U6CisgICAgICAgIGRlbGV0
ZSAmZG93bmNhc3Q8RGVyZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpGbG9hdExpdGVyYWw6CisgICAgICAg
IGRlbGV0ZSAmZG93bmNhc3Q8RmxvYXRMaXRlcmFsPihleHByZXNzaW9uKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpJbnRlZ2VyTGl0ZXJhbDoKKyAgICAgICAg
ZGVsZXRlICZkb3duY2FzdDxJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6TG9naWNhbDoKKyAgICAgICAgZGVsZXRl
ICZkb3duY2FzdDxMb2dpY2FsRXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6TG9naWNhbE5vdDoKKyAgICAgICAgZGVsZXRl
ICZkb3duY2FzdDxMb2dpY2FsTm90RXhwcmVzc2lvbj4oZXhwcmVzc2lvbik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6TWFrZUFycmF5UmVmZXJlbmNlOgorICAg
ICAgICBkZWxldGUgJmRvd25jYXN0PE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24+KGV4cHJl
c3Npb24pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6Ok1ha2VQ
b2ludGVyOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PE1ha2VQb2ludGVyRXhwcmVzc2lvbj4o
ZXhwcmVzc2lvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6
TnVsbExpdGVyYWw6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8TnVsbExpdGVyYWw+KGV4cHJl
c3Npb24pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkRvdDoK
KyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxEb3RFeHByZXNzaW9uPihleHByZXNzaW9uKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpHbG9iYWxWYXJpYWJsZVJl
ZmVyZW5jZToKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxHbG9iYWxWYXJpYWJsZVJlZmVyZW5j
ZT4oZXhwcmVzc2lvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXhwcmVzc2lvbjo6S2lu
ZDo6SW5kZXg6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8SW5kZXhFeHByZXNzaW9uPihleHBy
ZXNzaW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpSZWFk
TW9kaWZ5V3JpdGU6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8UmVhZE1vZGlmeVdyaXRlRXhw
cmVzc2lvbj4oZXhwcmVzc2lvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXhwcmVzc2lv
bjo6S2luZDo6VGVybmFyeToKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxUZXJuYXJ5RXhwcmVz
c2lvbj4oZXhwcmVzc2lvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXhwcmVzc2lvbjo6
S2luZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDoKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxV
bnNpZ25lZEludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBFeHByZXNzaW9uOjpLaW5kOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6CisgICAgICAg
IGRlbGV0ZSAmZG93bmNhc3Q8RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPihleHByZXNzaW9uKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpWYXJpYWJsZVJlZmVy
ZW5jZToKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVz
c2lvbik7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBFeHByZXNzaW9uOjpkZXN0
cnVjdChFeHByZXNzaW9uJiBleHByZXNzaW9uKQoreworICAgIHN3aXRjaCAoZXhwcmVzc2lvbi5r
aW5kKCkpIHsKKyAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkFzc2lnbm1lbnQ6CisgICAgICAg
IGRvd25jYXN0PEFzc2lnbm1lbnRFeHByZXNzaW9uPihleHByZXNzaW9uKS5+QXNzaWdubWVudEV4
cHJlc3Npb24oKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpC
b29sZWFuTGl0ZXJhbDoKKyAgICAgICAgZG93bmNhc3Q8Qm9vbGVhbkxpdGVyYWw+KGV4cHJlc3Np
b24pLn5Cb29sZWFuTGl0ZXJhbCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEV4cHJlc3Np
b246OktpbmQ6OkNhbGw6CisgICAgICAgIGRvd25jYXN0PENhbGxFeHByZXNzaW9uPihleHByZXNz
aW9uKS5+Q2FsbEV4cHJlc3Npb24oKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHByZXNz
aW9uOjpLaW5kOjpDb21tYToKKyAgICAgICAgZG93bmNhc3Q8Q29tbWFFeHByZXNzaW9uPihleHBy
ZXNzaW9uKS5+Q29tbWFFeHByZXNzaW9uKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXhw
cmVzc2lvbjo6S2luZDo6RGVyZWZlcmVuY2U6CisgICAgICAgIGRvd25jYXN0PERlcmVmZXJlbmNl
RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikufkRlcmVmZXJlbmNlRXhwcmVzc2lvbigpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkZsb2F0TGl0ZXJhbDoKKyAgICAg
ICAgZG93bmNhc3Q8RmxvYXRMaXRlcmFsPihleHByZXNzaW9uKS5+RmxvYXRMaXRlcmFsKCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6SW50ZWdlckxpdGVyYWw6
CisgICAgICAgIGRvd25jYXN0PEludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKS5+SW50ZWdlckxp
dGVyYWwoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpMb2dp
Y2FsOgorICAgICAgICBkb3duY2FzdDxMb2dpY2FsRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikufkxv
Z2ljYWxFeHByZXNzaW9uKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXhwcmVzc2lvbjo6
S2luZDo6TG9naWNhbE5vdDoKKyAgICAgICAgZG93bmNhc3Q8TG9naWNhbE5vdEV4cHJlc3Npb24+
KGV4cHJlc3Npb24pLn5Mb2dpY2FsTm90RXhwcmVzc2lvbigpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEV4cHJlc3Npb246OktpbmQ6Ok1ha2VBcnJheVJlZmVyZW5jZToKKyAgICAgICAgZG93
bmNhc3Q8TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikufk1ha2VBcnJh
eVJlZmVyZW5jZUV4cHJlc3Npb24oKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHByZXNz
aW9uOjpLaW5kOjpNYWtlUG9pbnRlcjoKKyAgICAgICAgZG93bmNhc3Q8TWFrZVBvaW50ZXJFeHBy
ZXNzaW9uPihleHByZXNzaW9uKS5+TWFrZVBvaW50ZXJFeHByZXNzaW9uKCk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6TnVsbExpdGVyYWw6CisgICAgICAgIGRv
d25jYXN0PE51bGxMaXRlcmFsPihleHByZXNzaW9uKS5+TnVsbExpdGVyYWwoKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBFeHByZXNzaW9uOjpLaW5kOjpEb3Q6CisgICAgICAgIGRvd25jYXN0
PERvdEV4cHJlc3Npb24+KGV4cHJlc3Npb24pLn5Eb3RFeHByZXNzaW9uKCk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6R2xvYmFsVmFyaWFibGVSZWZlcmVuY2U6
CisgICAgICAgIGRvd25jYXN0PEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKS5+
R2xvYmFsVmFyaWFibGVSZWZlcmVuY2UoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHBy
ZXNzaW9uOjpLaW5kOjpJbmRleDoKKyAgICAgICAgZG93bmNhc3Q8SW5kZXhFeHByZXNzaW9uPihl
eHByZXNzaW9uKS5+SW5kZXhFeHByZXNzaW9uKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
RXhwcmVzc2lvbjo6S2luZDo6UmVhZE1vZGlmeVdyaXRlOgorICAgICAgICBkb3duY2FzdDxSZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9uPihleHByZXNzaW9uKS5+UmVhZE1vZGlmeVdyaXRlRXhwcmVz
c2lvbigpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OlRlcm5h
cnk6CisgICAgICAgIGRvd25jYXN0PFRlcm5hcnlFeHByZXNzaW9uPihleHByZXNzaW9uKS5+VGVy
bmFyeUV4cHJlc3Npb24oKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHByZXNzaW9uOjpL
aW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOgorICAgICAgICBkb3duY2FzdDxVbnNpZ25lZElu
dGVnZXJMaXRlcmFsPihleHByZXNzaW9uKS5+VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEV4cHJlc3Npb246OktpbmQ6OkVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbDoKKyAgICAgICAgZG93bmNhc3Q8RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPihleHBy
ZXNzaW9uKS5+RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKCk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgRXhwcmVzc2lvbjo6S2luZDo6VmFyaWFibGVSZWZlcmVuY2U6CisgICAgICAgIGRvd25j
YXN0PFZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKS5+VmFyaWFibGVSZWZlcmVuY2UoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitTdHJpbmcgUHJvcGVydHlBY2Nlc3NFeHByZXNz
aW9uOjpnZXR0ZXJGdW5jdGlvbk5hbWUoKSBjb25zdAoreworICAgIGlmIChpczxEb3RFeHByZXNz
aW9uPigqdGhpcykpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxEb3RFeHByZXNzaW9uPigqdGhp
cykuZ2V0dGVyRnVuY3Rpb25OYW1lKCk7CisgICAgaWYgKGlzPEluZGV4RXhwcmVzc2lvbj4oKnRo
aXMpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8SW5kZXhFeHByZXNzaW9uPigqdGhpcykuZ2V0
dGVyRnVuY3Rpb25OYW1lKCk7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
KworU3RyaW5nIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbjo6c2V0dGVyRnVuY3Rpb25OYW1lKCkg
Y29uc3QKK3sKKyAgICBpZiAoaXM8RG90RXhwcmVzc2lvbj4oKnRoaXMpKQorICAgICAgICByZXR1
cm4gZG93bmNhc3Q8RG90RXhwcmVzc2lvbj4oKnRoaXMpLnNldHRlckZ1bmN0aW9uTmFtZSgpOwor
ICAgIGlmIChpczxJbmRleEV4cHJlc3Npb24+KCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIGRvd25j
YXN0PEluZGV4RXhwcmVzc2lvbj4oKnRoaXMpLnNldHRlckZ1bmN0aW9uTmFtZSgpOworICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK1N0cmluZyBQcm9wZXJ0eUFjY2Vzc0V4
cHJlc3Npb246OmFuZGVyRnVuY3Rpb25OYW1lKCkgY29uc3QKK3sKKyAgICBpZiAoaXM8RG90RXhw
cmVzc2lvbj4oKnRoaXMpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8RG90RXhwcmVzc2lvbj4o
KnRoaXMpLmFuZGVyRnVuY3Rpb25OYW1lKCk7CisgICAgaWYgKGlzPEluZGV4RXhwcmVzc2lvbj4o
KnRoaXMpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8SW5kZXhFeHByZXNzaW9uPigqdGhpcyku
YW5kZXJGdW5jdGlvbk5hbWUoKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfSAvLyBuYW1lc3BhY2UgV0hMU0wKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmgJKHJldmlz
aW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEV4cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW5j
bHVkZSAiV0hMU0xBZGRyZXNzU3BhY2UuaCIKICNpbmNsdWRlICJXSExTTENvZGVMb2NhdGlvbi5o
IgorI2luY2x1ZGUgIldITFNMRGVmYXVsdERlbGV0ZS5oIgogI2luY2x1ZGUgIldITFNMVW5uYW1l
ZFR5cGUuaCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9PcHRp
b25hbC5oPgpAQCAtNDIsMTMgKzQzLDQzIEBAIG5hbWVzcGFjZSBBU1QgewogCiBjbGFzcyBFeHBy
ZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKworcHJvdGVjdGVkOgorICAg
IH5FeHByZXNzaW9uKCkgPSBkZWZhdWx0OworCiBwdWJsaWM6Ci0gICAgRXhwcmVzc2lvbihDb2Rl
TG9jYXRpb24gY29kZUxvY2F0aW9uKQorCisgICAgZW51bSBjbGFzcyBLaW5kIDogdWludDhfdCB7
CisgICAgICAgIEFzc2lnbm1lbnQsCisgICAgICAgIEJvb2xlYW5MaXRlcmFsLAorICAgICAgICBD
YWxsLAorICAgICAgICBDb21tYSwKKyAgICAgICAgRGVyZWZlcmVuY2UsCisgICAgICAgIERvdCwK
KyAgICAgICAgR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UsCisgICAgICAgIEZsb2F0TGl0ZXJhbCwK
KyAgICAgICAgSW5kZXgsCisgICAgICAgIEludGVnZXJMaXRlcmFsLAorICAgICAgICBMb2dpY2Fs
LAorICAgICAgICBMb2dpY2FsTm90LAorICAgICAgICBNYWtlQXJyYXlSZWZlcmVuY2UsCisgICAg
ICAgIE1ha2VQb2ludGVyLAorICAgICAgICBOdWxsTGl0ZXJhbCwKKyAgICAgICAgUmVhZE1vZGlm
eVdyaXRlLAorICAgICAgICBUZXJuYXJ5LAorICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFs
LAorICAgICAgICBWYXJpYWJsZVJlZmVyZW5jZSwKKyAgICAgICAgRW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsLAorICAgIH07CisKKyAgICBFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBjb2RlTG9jYXRp
b24sIEtpbmQga2luZCkKICAgICAgICAgOiBtX2NvZGVMb2NhdGlvbihjb2RlTG9jYXRpb24pCisg
ICAgICAgICwgbV9raW5kKGtpbmQpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfkV4cHJl
c3Npb24oKSA9IGRlZmF1bHQ7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShFeHByZXNzaW9uJik7
CisgICAgc3RhdGljIHZvaWQgZGVzdHJ1Y3QoRXhwcmVzc2lvbiYpOwogCiAgICAgRXhwcmVzc2lv
bihjb25zdCBFeHByZXNzaW9uJikgPSBkZWxldGU7CiAgICAgRXhwcmVzc2lvbihFeHByZXNzaW9u
JiYpID0gZGVmYXVsdDsKQEAgLTkyLDI3ICsxMjMsMjggQEAgcHVibGljOgogICAgICAgICAgICAg
b3RoZXIuc2V0VHlwZUFubm90YXRpb24oVHlwZUFubm90YXRpb24oKnR5cGVBbm5vdGF0aW9uKSk7
CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIGlzQXNzaWdubWVudEV4cHJlc3Npb24oKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0Jvb2xlYW5MaXRlcmFsKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNDYWxsRXhwcmVzc2lv
bigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQ29tbWFFeHBy
ZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNEZXJl
ZmVyZW5jZUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBpc0RvdEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc0dsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNGbG9hdExpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0luZGV4RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzSW50ZWdlckxpdGVyYWwoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0xvZ2ljYWxFeHByZXNzaW9uKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNMb2dpY2FsTm90RXhwcmVz
c2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWFrZUFy
cmF5UmVmZXJlbmNlRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzTWFrZVBvaW50ZXJFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNOdWxsTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFkTW9kaWZ5V3JpdGVFeHBy
ZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNUZXJu
YXJ5RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29s
IGlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBpc0VudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgS2luZCBraW5kKCkgY29uc3QgIHsgcmV0dXJuIG1fa2luZDsg
fQorICAgIGJvb2wgaXNBc3NpZ25tZW50RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQo
KSA9PSBLaW5kOjpBc3NpZ25tZW50OyB9CisgICAgYm9vbCBpc0Jvb2xlYW5MaXRlcmFsKCkgY29u
c3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkJvb2xlYW5MaXRlcmFsOyB9CisgICAgYm9vbCBp
c0NhbGxFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkNhbGw7IH0K
KyAgICBib29sIGlzQ29tbWFFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtp
bmQ6OkNvbW1hOyB9CisgICAgYm9vbCBpc0RlcmVmZXJlbmNlRXhwcmVzc2lvbigpIGNvbnN0IHsg
cmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpEZXJlZmVyZW5jZTsgfQorICAgIGJvb2wgaXNEb3RFeHBy
ZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkRvdDsgfQorICAgIGJvb2wg
aXNHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5k
OjpHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZTsgfQorICAgIGJvb2wgaXNGbG9hdExpdGVyYWwoKSBj
b25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6RmxvYXRMaXRlcmFsOyB9CisgICAgYm9vbCBp
c0luZGV4RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpJbmRleDsg
fQorICAgIGJvb2wgaXNJbnRlZ2VyTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBL
aW5kOjpJbnRlZ2VyTGl0ZXJhbDsgfQorICAgIGJvb2wgaXNMb2dpY2FsRXhwcmVzc2lvbigpIGNv
bnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpMb2dpY2FsOyB9CisgICAgYm9vbCBpc0xvZ2lj
YWxOb3RFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkxvZ2ljYWxO
b3Q7IH0KKyAgICBib29sIGlzTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbigpIGNvbnN0IHsg
cmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpNYWtlQXJyYXlSZWZlcmVuY2U7IH0KKyAgICBib29sIGlz
TWFrZVBvaW50ZXJFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6Ok1h
a2VQb2ludGVyOyB9CisgICAgYm9vbCBpc051bGxMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4ga2lu
ZCgpID09IEtpbmQ6Ok51bGxMaXRlcmFsOyB9CisgICAgYm9vbCBpc1Byb3BlcnR5QWNjZXNzRXhw
cmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGlzRG90RXhwcmVzc2lvbigpIHx8IGlzSW5kZXhFeHBy
ZXNzaW9uKCk7IH0KKyAgICBib29sIGlzUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbigpIGNvbnN0
IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpSZWFkTW9kaWZ5V3JpdGU7IH0KKyAgICBib29sIGlz
VGVybmFyeUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6VGVybmFy
eTsgfQorICAgIGJvb2wgaXNVbnNpZ25lZEludGVnZXJMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4g
a2luZCgpID09IEtpbmQ6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw7IH0KKyAgICBib29sIGlzVmFy
aWFibGVSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6VmFyaWFibGVS
ZWZlcmVuY2U7IH0KKyAgICBib29sIGlzRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKCkgY29uc3Qg
eyByZXR1cm4ga2luZCgpID09IEtpbmQ6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDsgfQogCiAg
ICAgQ29kZUxvY2F0aW9uIGNvZGVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUxvY2F0
aW9uOyB9CiAgICAgdm9pZCB1cGRhdGVDb2RlTG9jYXRpb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9u
KSB7IG1fY29kZUxvY2F0aW9uID0gbG9jYXRpb247IH0KQEAgLTEyMSw2ICsxNTMsNyBAQCBwcml2
YXRlOgogICAgIENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKICAgICBSZWZQdHI8VW5uYW1l
ZFR5cGU+IG1fdHlwZTsKICAgICBPcHRpb25hbDxUeXBlQW5ub3RhdGlvbj4gbV90eXBlQW5ub3Rh
dGlvbjsKKyAgICBLaW5kIG1fa2luZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFTVApAQCAtMTI5
LDYgKzE2Miw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKEV4cHJl
c3Npb24pCisKICNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9O
KFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JF
R0lOKFdlYkNvcmU6OldITFNMOjpBU1Q6OlRvVmFsdWVUeXBlTmFtZSkgXAogICAgIHN0YXRpYyBi
b29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uJiBleHByZXNz
aW9uKSB7IHJldHVybiBleHByZXNzaW9uLnByZWRpY2F0ZTsgfSBcCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZhbGx0
aHJvdWdoLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEZhbGx0aHJvdWdoLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDIx
ICszNywxOSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3Mg
RmFsbHRocm91Z2ggOiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNzIEZhbGx0aHJvdWdoIGZpbmFs
IDogcHVibGljIFN0YXRlbWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgRmFsbHRocm91Z2goQ29kZUxvY2F0aW9uIGxvY2F0aW9uKQotICAgICAgICA6IFN0
YXRlbWVudChsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OkZh
bGx0aHJvdWdoKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5GYWxsdGhyb3VnaCgpID0g
ZGVmYXVsdDsKKyAgICB+RmFsbHRocm91Z2goKSA9IGRlZmF1bHQ7CiAKICAgICBGYWxsdGhyb3Vn
aChjb25zdCBGYWxsdGhyb3VnaCYpID0gZGVsZXRlOwogICAgIEZhbGx0aHJvdWdoKEZhbGx0aHJv
dWdoJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNGYWxsdGhyb3VnaCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KLQogcHJpdmF0ZToKIH07CiAKQEAgLTYxLDYgKzU5LDggQEAg
cHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoRmFsbHRocm91Z2gpCisKIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKEZhbGx0aHJvdWdoLCBpc0ZhbGx0
aHJvdWdoKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsLmgJKHJldmlzaW9u
IDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEZsb2F0TGl0ZXJhbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNyArMzcsMTcgQEAgbmFtZXNw
YWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIEZsb2F0TGl0ZXJhbCA6IHB1
YmxpYyBFeHByZXNzaW9uIHsKK2NsYXNzIEZsb2F0TGl0ZXJhbCBmaW5hbCA6IHB1YmxpYyBFeHBy
ZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBGbG9h
dExpdGVyYWwoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBmbG9hdCB2YWx1ZSkKLSAgICAgICAgOiBF
eHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6
OkZsb2F0TGl0ZXJhbCkKICAgICAgICAgLCBtX3R5cGUobG9jYXRpb24sIHZhbHVlKQogICAgICAg
ICAsIG1fdmFsdWUodmFsdWUpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfkZsb2F0TGl0
ZXJhbCgpID0gZGVmYXVsdDsKKyAgICB+RmxvYXRMaXRlcmFsKCkgPSBkZWZhdWx0OwogCiAgICAg
RmxvYXRMaXRlcmFsKGNvbnN0IEZsb2F0TGl0ZXJhbCYpID0gZGVsZXRlOwogICAgIEZsb2F0TGl0
ZXJhbChGbG9hdExpdGVyYWwmJikgPSBkZWZhdWx0OwpAQCAtNTgsOCArNTgsNiBAQCBwdWJsaWM6
CiAgICAgRmxvYXRMaXRlcmFsVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIGZs
b2F0IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCi0gICAgYm9vbCBpc0Zsb2F0
TGl0ZXJhbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIEZsb2F0TGl0
ZXJhbCBjbG9uZSgpIGNvbnN0CiAgICAgewogICAgICAgICBGbG9hdExpdGVyYWwgcmVzdWx0KGNv
ZGVMb2NhdGlvbigpLCBtX3ZhbHVlKTsKQEAgLTgxLDYgKzc5LDggQEAgcHJpdmF0ZToKIAogfQog
CitERUZJTkVfREVGQVVMVF9ERUxFVEUoRmxvYXRMaXRlcmFsKQorCiBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dITFNMX0VYUFJFU1NJT04oRmxvYXRMaXRlcmFsLCBpc0Zsb2F0TGl0ZXJhbCgpKQog
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEZsb2F0TGl0ZXJhbFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuY3BwCShyZXZpc2lv
biAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xGbG9hdExpdGVyYWxUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTcgKzM5LDEyIEBA
IG5hbWVzcGFjZSBXSExTTCB7CiBuYW1lc3BhY2UgQVNUIHsKIAogRmxvYXRMaXRlcmFsVHlwZTo6
RmxvYXRMaXRlcmFsVHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIGZsb2F0IHZhbHVlKQotICAg
IDogbV92YWx1ZSh2YWx1ZSkKKyAgICA6IFJlc29sdmFibGVUeXBlKEtpbmQ6OkZsb2F0TGl0ZXJh
bCkKKyAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgLCBtX3ByZWZlcnJlZFR5cGUoVHlwZVJlZmVy
ZW5jZTo6Y3JlYXRlKGxvY2F0aW9uLCAiZmxvYXQiX3N0ciwgVHlwZUFyZ3VtZW50cygpKSkKIHsK
IH0KIAotRmxvYXRMaXRlcmFsVHlwZTo6fkZsb2F0TGl0ZXJhbFR5cGUoKSA9IGRlZmF1bHQ7Ci0K
LUZsb2F0TGl0ZXJhbFR5cGU6OkZsb2F0TGl0ZXJhbFR5cGUoRmxvYXRMaXRlcmFsVHlwZSYmKSA9
IGRlZmF1bHQ7Ci0KLUZsb2F0TGl0ZXJhbFR5cGUmIEZsb2F0TGl0ZXJhbFR5cGU6Om9wZXJhdG9y
PShGbG9hdExpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKLQogYm9vbCBGbG9hdExpdGVyYWxUeXBl
OjpjYW5SZXNvbHZlKGNvbnN0IFR5cGUmIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFpczxOYW1l
ZFR5cGU+KHR5cGUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuaAkocmV2aXNp
b24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMRmxvYXRMaXRlcmFsVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwyNyArNDAsMjUgQEAg
bmFtZXNwYWNlIEFTVCB7CiAKIGNsYXNzIFR5cGVSZWZlcmVuY2U7CiAKLWNsYXNzIEZsb2F0TGl0
ZXJhbFR5cGUgOiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUgeworY2xhc3MgRmxvYXRMaXRlcmFsVHlw
ZSBmaW5hbCA6IHB1YmxpYyBSZXNvbHZhYmxlVHlwZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgRmxvYXRMaXRlcmFsVHlwZShDb2RlTG9jYXRpb24sIGZsb2F0
IHZhbHVlKTsKIAotICAgIHZpcnR1YWwgfkZsb2F0TGl0ZXJhbFR5cGUoKTsKKyAgICB+RmxvYXRM
aXRlcmFsVHlwZSgpID0gZGVmYXVsdDsKIAogICAgIEZsb2F0TGl0ZXJhbFR5cGUoY29uc3QgRmxv
YXRMaXRlcmFsVHlwZSYpID0gZGVsZXRlOwotICAgIEZsb2F0TGl0ZXJhbFR5cGUoRmxvYXRMaXRl
cmFsVHlwZSYmKTsKKyAgICBGbG9hdExpdGVyYWxUeXBlKEZsb2F0TGl0ZXJhbFR5cGUmJikgPSBk
ZWZhdWx0OwogCiAgICAgRmxvYXRMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KGNvbnN0IEZsb2F0TGl0
ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBGbG9hdExpdGVyYWxUeXBlJiBvcGVyYXRvcj0oRmxv
YXRMaXRlcmFsVHlwZSYmKTsKLQotICAgIGJvb2wgaXNGbG9hdExpdGVyYWxUeXBlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIEZsb2F0TGl0ZXJhbFR5cGUmIG9wZXJhdG9y
PShGbG9hdExpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKIAogICAgIGZsb2F0IHZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCiAgICAgVHlwZVJlZmVyZW5jZSYgcHJlZmVycmVkVHlw
ZSgpIHsgcmV0dXJuIG1fcHJlZmVycmVkVHlwZTsgfQogCi0gICAgYm9vbCBjYW5SZXNvbHZlKGNv
bnN0IFR5cGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChj
b25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY2FuUmVzb2x2ZShj
b25zdCBUeXBlJikgY29uc3Q7CisgICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5u
YW1lZFR5cGUmKSBjb25zdDsKIAogICAgIEZsb2F0TGl0ZXJhbFR5cGUgY2xvbmUoKSBjb25zdDsK
IApAQCAtNzcsNiArNzUsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVU
RShGbG9hdExpdGVyYWxUeXBlKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1JFU09M
VkFCTEVfVFlQRShGbG9hdExpdGVyYWxUeXBlLCBpc0Zsb2F0TGl0ZXJhbFR5cGUoKSkKIAogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xG
b3JMb29wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRm9yTG9vcC5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JMb29wLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQyLDExICs0MiwxMSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsK
IAotY2xhc3MgRm9yTG9vcCA6IHB1YmxpYyBTdGF0ZW1lbnQgeworY2xhc3MgRm9yTG9vcCBmaW5h
bCA6IHB1YmxpYyBTdGF0ZW1lbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIEZvckxvb3AoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBWYXJpYW50PFVuaXF1ZVJl
ZjxTdGF0ZW1lbnQ+LCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiYgaW5pdGlhbGl6YXRpb24sIHN0
ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIGNvbmRpdGlvbiwgc3RkOjp1bmlxdWVfcHRyPEV4
cHJlc3Npb24+JiYgaW5jcmVtZW50LCBVbmlxdWVSZWY8U3RhdGVtZW50PiYmIGJvZHkpCi0gICAg
ICAgIDogU3RhdGVtZW50KGxvY2F0aW9uKQorICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwg
S2luZDo6Rm9yTG9vcCkKICAgICAgICAgLCBtX2luaXRpYWxpemF0aW9uKFdURk1vdmUoaW5pdGlh
bGl6YXRpb24pKQogICAgICAgICAsIG1fY29uZGl0aW9uKFdURk1vdmUoY29uZGl0aW9uKSkKICAg
ICAgICAgLCBtX2luY3JlbWVudChXVEZNb3ZlKGluY3JlbWVudCkpCkBAIC01NCwxNSArNTQsMTEg
QEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5Gb3JMb29wKCkKLSAgICB7
Ci0gICAgfQorICAgIH5Gb3JMb29wKCkgPSBkZWZhdWx0OwogCiAgICAgRm9yTG9vcChjb25zdCBG
b3JMb29wJikgPSBkZWxldGU7CiAgICAgRm9yTG9vcChGb3JMb29wJiYpID0gZGVmYXVsdDsKIAot
ICAgIGJvb2wgaXNGb3JMb29wKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAg
ICAgVmFyaWFudDxVbmlxdWVSZWY8U3RhdGVtZW50PiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+PiYg
aW5pdGlhbGl6YXRpb24oKSB7IHJldHVybiBtX2luaXRpYWxpemF0aW9uOyB9CiAgICAgRXhwcmVz
c2lvbiogY29uZGl0aW9uKCkgeyByZXR1cm4gbV9jb25kaXRpb24uZ2V0KCk7IH0KICAgICBFeHBy
ZXNzaW9uKiBpbmNyZW1lbnQoKSB7IHJldHVybiBtX2luY3JlbWVudC5nZXQoKTsgfQpAQCAtODEs
NiArNzcsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShGb3JMb29w
KQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChGb3JMb29wLCBpc0Zv
ckxvb3AoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEdsb2JhbFZhcmlhYmxl
UmVmZXJlbmNlLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDE5ICszNywxOSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2Ug
QVNUIHsKIAotY2xhc3MgR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UgOiBwdWJsaWMgRXhwcmVzc2lv
biB7CitjbGFzcyBHbG9iYWxWYXJpYWJsZVJlZmVyZW5jZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNz
aW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHbG9iYWxW
YXJpYWJsZVJlZmVyZW5jZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNz
aW9uPiYmIGJhc2UsIFN0cnVjdHVyZUVsZW1lbnQqIHN0cnVjdEZpZWxkKQotICAgICAgICA6IEV4
cHJlc3Npb24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6
R2xvYmFsVmFyaWFibGVSZWZlcmVuY2UpCiAgICAgICAgICwgbV9iYXNlKFdURk1vdmUoYmFzZSkp
CiAgICAgICAgICwgbV9zdHJ1Y3RGaWVsZCgqc3RydWN0RmllbGQpCiAgICAgewogICAgICAgICBB
U1NFUlQoc3RydWN0RmllbGQpOwogICAgIH0KIAotICAgIHZpcnR1YWwgfkdsb2JhbFZhcmlhYmxl
UmVmZXJlbmNlKCkgPSBkZWZhdWx0OwotICAgIGJvb2wgaXNHbG9iYWxWYXJpYWJsZVJlZmVyZW5j
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB+R2xvYmFsVmFyaWFibGVS
ZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CisgICAgCiAgICAgU3RydWN0dXJlRWxlbWVudCYgc3RydWN0
RmllbGQoKSB7IHJldHVybiBtX3N0cnVjdEZpZWxkOyB9CiAKICAgICBFeHByZXNzaW9uJiBiYXNl
KCkgeyByZXR1cm4gbV9iYXNlLmdldCgpOyB9CkBAIC02NSw2ICs2NSw4IEBAIHByaXZhdGU6CiAK
IH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKEdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlKQorCiBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oR2xvYmFsVmFyaWFibGVSZWZl
cmVuY2UsIGlzR2xvYmFsVmFyaWFibGVSZWZlcmVuY2UoKSkKIAogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJZlN0YXRlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TElmU3RhdGVtZW50LmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTElmU3RhdGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDI0ICszOSwyMiBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAot
Y2xhc3MgSWZTdGF0ZW1lbnQgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2NsYXNzIElmU3RhdGVtZW50
IGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgSWZTdGF0ZW1lbnQoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVS
ZWY8RXhwcmVzc2lvbj4mJiBjb25kaXRpb25hbCwgVW5pcXVlUmVmPFN0YXRlbWVudD4mJiBib2R5
LCBzdGQ6OnVuaXF1ZV9wdHI8U3RhdGVtZW50PiYmIGVsc2VCb2R5KQotICAgICAgICA6IFN0YXRl
bWVudChsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OklmKQog
ICAgICAgICAsIG1fY29uZGl0aW9uYWwoV1RGTW92ZShjb25kaXRpb25hbCkpCiAgICAgICAgICwg
bV9ib2R5KFdURk1vdmUoYm9keSkpCiAgICAgICAgICwgbV9lbHNlQm9keShXVEZNb3ZlKGVsc2VC
b2R5KSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+SWZTdGF0ZW1lbnQoKSA9IGRlZmF1
bHQ7CisgICAgfklmU3RhdGVtZW50KCkgPSBkZWZhdWx0OwogCiAgICAgSWZTdGF0ZW1lbnQoY29u
c3QgSWZTdGF0ZW1lbnQmKSA9IGRlbGV0ZTsKICAgICBJZlN0YXRlbWVudChJZlN0YXRlbWVudCYm
KSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzSWZTdGF0ZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNzaW9uJiBjb25kaXRpb25hbCgpIHsgcmV0dXJu
IG1fY29uZGl0aW9uYWw7IH0KICAgICBTdGF0ZW1lbnQmIGJvZHkoKSB7IHJldHVybiBtX2JvZHk7
IH0KICAgICBTdGF0ZW1lbnQqIGVsc2VCb2R5KCkgeyByZXR1cm4gbV9lbHNlQm9keS5nZXQoKTsg
fQpAQCAtNzMsNiArNzEsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVU
RShJZlN0YXRlbWVudCkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQo
SWZTdGF0ZW1lbnQsIGlzSWZTdGF0ZW1lbnQoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbmRleEV4cHJlc3Npb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJ
bmRleEV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW5kZXhFeHByZXNzaW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDMzICszOCwzMSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNU
IHsKIAotY2xhc3MgSW5kZXhFeHByZXNzaW9uIDogcHVibGljIFByb3BlcnR5QWNjZXNzRXhwcmVz
c2lvbiB7CitjbGFzcyBJbmRleEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgUHJvcGVydHlBY2Nl
c3NFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBJbmRleEV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVz
c2lvbj4mJiBiYXNlLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBpbmRleCkKLSAgICAgICAgOiBQ
cm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24obG9jYXRpb24sIFdURk1vdmUoYmFzZSkpCisgICAgICAg
IDogUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpJbmRleCwgV1RGTW92
ZShiYXNlKSkKICAgICAgICAgLCBtX2luZGV4KFdURk1vdmUoaW5kZXgpKQogICAgIHsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIH5JbmRleEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfkluZGV4
RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKIAogICAgIEluZGV4RXhwcmVzc2lvbihjb25zdCBJbmRl
eEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBJbmRleEV4cHJlc3Npb24oSW5kZXhFeHByZXNz
aW9uJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNJbmRleEV4cHJlc3Npb24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBTdHJpbmcgZ2V0dGVyRnVuY3Rpb25OYW1l
KCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJpbmcgZ2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiAib3BlcmF0b3JbXSJfc3RyOwogICAgIH0KIAotICAgIFN0
cmluZyBzZXR0ZXJGdW5jdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZQorICAgIFN0cmluZyBzZXR0
ZXJGdW5jdGlvbk5hbWUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICJvcGVyYXRvcltd
PSJfc3RyOwogICAgIH0KIAotICAgIFN0cmluZyBhbmRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0IG92
ZXJyaWRlCisgICAgU3RyaW5nIGFuZGVyRnVuY3Rpb25OYW1lKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHJldHVybiAib3BlcmF0b3ImW10iX3N0cjsKICAgICB9CkBAIC04Miw2ICs4MCw4IEBAIHBy
aXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKEluZGV4RXhwcmVzc2lvbikKKwog
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEluZGV4RXhwcmVzc2lvbiwg
aXNJbmRleEV4cHJlc3Npb24oKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRl
cmFsLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDE3
ICszNywxNyBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3Mg
SW50ZWdlckxpdGVyYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBJbnRlZ2VyTGl0ZXJh
bCBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBJbnRlZ2VyTGl0ZXJhbChDb2RlTG9jYXRpb24gbG9jYXRpb24sIGlu
dCB2YWx1ZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJl
c3Npb24obG9jYXRpb24sIEtpbmQ6OkludGVnZXJMaXRlcmFsKQogICAgICAgICAsIG1fdHlwZShs
b2NhdGlvbiwgdmFsdWUpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAgfQog
Ci0gICAgdmlydHVhbCB+SW50ZWdlckxpdGVyYWwoKSA9IGRlZmF1bHQ7CisgICAgfkludGVnZXJM
aXRlcmFsKCkgPSBkZWZhdWx0OwogCiAgICAgSW50ZWdlckxpdGVyYWwoY29uc3QgSW50ZWdlckxp
dGVyYWwmKSA9IGRlbGV0ZTsKICAgICBJbnRlZ2VyTGl0ZXJhbChJbnRlZ2VyTGl0ZXJhbCYmKSA9
IGRlZmF1bHQ7CkBAIC01OCw4ICs1OCw2IEBAIHB1YmxpYzoKICAgICBJbnRlZ2VyTGl0ZXJhbFR5
cGUmIHR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0KICAgICBpbnQgdmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlOyB9CiAKLSAgICBib29sIGlzSW50ZWdlckxpdGVyYWwoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBJbnRlZ2VyTGl0ZXJhbCBjbG9uZSgpIGNvbnN0
CiAgICAgewogICAgICAgICBJbnRlZ2VyTGl0ZXJhbCByZXN1bHQoY29kZUxvY2F0aW9uKCksIG1f
dmFsdWUpOwpAQCAtODMsNiArODEsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxU
X0RFTEVURShJbnRlZ2VyTGl0ZXJhbCkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9F
WFBSRVNTSU9OKEludGVnZXJMaXRlcmFsLCBpc0ludGVnZXJMaXRlcmFsKCkpCiAKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdl
ckxpdGVyYWxUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwCShyZXZpc2lvbiAyNDg0
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRl
Z2VyTGl0ZXJhbFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxNyArNDAsMTIgQEAgbmFt
ZXNwYWNlIFdITFNMIHsKIG5hbWVzcGFjZSBBU1QgewogCiBJbnRlZ2VyTGl0ZXJhbFR5cGU6Oklu
dGVnZXJMaXRlcmFsVHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIGludCB2YWx1ZSkKLSAgICA6
IG1fdmFsdWUodmFsdWUpCisgICAgOiBSZXNvbHZhYmxlVHlwZShLaW5kOjpJbnRlZ2VyTGl0ZXJh
bCkKKyAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgLCBtX3ByZWZlcnJlZFR5cGUoVHlwZVJlZmVy
ZW5jZTo6Y3JlYXRlKGxvY2F0aW9uLCAiaW50Il9zdHIsIFR5cGVBcmd1bWVudHMoKSkpCiB7CiB9
CiAKLUludGVnZXJMaXRlcmFsVHlwZTo6fkludGVnZXJMaXRlcmFsVHlwZSgpID0gZGVmYXVsdDsK
LQotSW50ZWdlckxpdGVyYWxUeXBlOjpJbnRlZ2VyTGl0ZXJhbFR5cGUoSW50ZWdlckxpdGVyYWxU
eXBlJiYpID0gZGVmYXVsdDsKLQotSW50ZWdlckxpdGVyYWxUeXBlJiBJbnRlZ2VyTGl0ZXJhbFR5
cGU6Om9wZXJhdG9yPShJbnRlZ2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwotCiBib29sIElu
dGVnZXJMaXRlcmFsVHlwZTo6Y2FuUmVzb2x2ZShjb25zdCBUeXBlJiB0eXBlKSBjb25zdAogewog
ICAgIGlmICghaXM8TmFtZWRUeXBlPih0eXBlKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJM
aXRlcmFsVHlwZS5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNDAsMjcgKzQwLDI1IEBAIG5hbWVzcGFjZSBBU1QgewogCiBjbGFzcyBUeXBlUmVmZXJl
bmNlOwogCi1jbGFzcyBJbnRlZ2VyTGl0ZXJhbFR5cGUgOiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUg
eworY2xhc3MgSW50ZWdlckxpdGVyYWxUeXBlIGZpbmFsIDogcHVibGljIFJlc29sdmFibGVUeXBl
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBJbnRlZ2VyTGl0
ZXJhbFR5cGUoQ29kZUxvY2F0aW9uLCBpbnQgdmFsdWUpOwogCi0gICAgdmlydHVhbCB+SW50ZWdl
ckxpdGVyYWxUeXBlKCk7CisgICAgfkludGVnZXJMaXRlcmFsVHlwZSgpID0gZGVmYXVsdDsKIAog
ICAgIEludGVnZXJMaXRlcmFsVHlwZShjb25zdCBJbnRlZ2VyTGl0ZXJhbFR5cGUmKSA9IGRlbGV0
ZTsKLSAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUoSW50ZWdlckxpdGVyYWxUeXBlJiYpOworICAgIElu
dGVnZXJMaXRlcmFsVHlwZShJbnRlZ2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwogCiAgICAg
SW50ZWdlckxpdGVyYWxUeXBlJiBvcGVyYXRvcj0oY29uc3QgSW50ZWdlckxpdGVyYWxUeXBlJikg
PSBkZWxldGU7Ci0gICAgSW50ZWdlckxpdGVyYWxUeXBlJiBvcGVyYXRvcj0oSW50ZWdlckxpdGVy
YWxUeXBlJiYpOwotCi0gICAgYm9vbCBpc0ludGVnZXJMaXRlcmFsVHlwZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShJ
bnRlZ2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwogCiAgICAgaW50IHZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZTsgfQogCiAgICAgVHlwZVJlZmVyZW5jZSYgcHJlZmVycmVkVHlwZSgp
IHsgcmV0dXJuIG1fcHJlZmVycmVkVHlwZTsgfQogCi0gICAgYm9vbCBjYW5SZXNvbHZlKGNvbnN0
IFR5cGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChjb25z
dCBVbm5hbWVkVHlwZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY2FuUmVzb2x2ZShjb25z
dCBUeXBlJikgY29uc3Q7CisgICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1l
ZFR5cGUmKSBjb25zdDsKIAogICAgIEludGVnZXJMaXRlcmFsVHlwZSBjbG9uZSgpIGNvbnN0Owog
CkBAIC03Nyw2ICs3NSw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRF
KEludGVnZXJMaXRlcmFsVHlwZSkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9SRVNP
TFZBQkxFX1RZUEUoSW50ZWdlckxpdGVyYWxUeXBlLCBpc0ludGVnZXJMaXRlcmFsVHlwZSgpKQog
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTExvZ2ljYWxFeHByZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbEV4cHJlc3Npb24uaAkocmV2aXNpb24g
MjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
TG9naWNhbEV4cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1l
c3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgTG9naWNhbEV4cHJlc3Np
b24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBMb2dpY2FsRXhwcmVzc2lvbiBmaW5hbCA6
IHB1YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsKQEAgLTQ2LDIyICs0NiwyMCBAQCBw
dWJsaWM6CiAgICAgfTsKIAogICAgIExvZ2ljYWxFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2Nh
dGlvbiwgVHlwZSB0eXBlLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBsZWZ0LCBVbmlxdWVSZWY8
RXhwcmVzc2lvbj4mJiByaWdodCkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAg
ICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6OkxvZ2ljYWwpCiAgICAgICAgICwgbV90
eXBlKHR5cGUpCiAgICAgICAgICwgbV9sZWZ0KFdURk1vdmUobGVmdCkpCiAgICAgICAgICwgbV9y
aWdodChXVEZNb3ZlKHJpZ2h0KSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+TG9naWNh
bEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfkxvZ2ljYWxFeHByZXNzaW9uKCkgPSBkZWZh
dWx0OwogCiAgICAgTG9naWNhbEV4cHJlc3Npb24oY29uc3QgTG9naWNhbEV4cHJlc3Npb24mKSA9
IGRlbGV0ZTsKICAgICBMb2dpY2FsRXhwcmVzc2lvbihMb2dpY2FsRXhwcmVzc2lvbiYmKSA9IGRl
ZmF1bHQ7CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAotICAg
IGJvb2wgaXNMb2dpY2FsRXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KLQogICAgIEV4cHJlc3Npb24mIGxlZnQoKSB7IHJldHVybiBtX2xlZnQ7IH0KICAgICBFeHBy
ZXNzaW9uJiByaWdodCgpIHsgcmV0dXJuIG1fcmlnaHQ7IH0KIApAQCAtNzcsNiArNzUsOCBAQCBw
cml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShMb2dpY2FsRXhwcmVzc2lvbikK
KwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKExvZ2ljYWxFeHByZXNz
aW9uLCBpc0xvZ2ljYWxFeHByZXNzaW9uKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNywyMiArMzcsMjAgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAog
bmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIExvZ2ljYWxOb3RFeHByZXNzaW9uIDogcHVibGljIEV4
cHJlc3Npb24geworY2xhc3MgTG9naWNhbE5vdEV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhw
cmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTG9n
aWNhbE5vdEV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVz
c2lvbj4mJiBvcGVyYW5kKQotICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgICAg
IDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6TG9naWNhbE5vdCkKICAgICAgICAgLCBtX29w
ZXJhbmQoV1RGTW92ZShvcGVyYW5kKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+TG9n
aWNhbE5vdEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfkxvZ2ljYWxOb3RFeHByZXNzaW9u
KCkgPSBkZWZhdWx0OwogCiAgICAgTG9naWNhbE5vdEV4cHJlc3Npb24oY29uc3QgTG9naWNhbE5v
dEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBMb2dpY2FsTm90RXhwcmVzc2lvbihMb2dpY2Fs
Tm90RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzTG9naWNhbE5vdEV4cHJl
c3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNzaW9u
JiBvcGVyYW5kKCkgeyByZXR1cm4gbV9vcGVyYW5kOyB9CiAKIHByaXZhdGU6CkBAIC02NSw2ICs2
Myw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKExvZ2ljYWxOb3RF
eHByZXNzaW9uKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oTG9n
aWNhbE5vdEV4cHJlc3Npb24sIGlzTG9naWNhbE5vdEV4cHJlc3Npb24oKSkKIAogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlQXJy
YXlSZWZlcmVuY2VFeHByZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5o
CShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDIzICszOCwyMSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsK
IAotY2xhc3MgTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9u
IHsKK2NsYXNzIE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMgRXhw
cmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTWFr
ZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJl
ZjxFeHByZXNzaW9uPiYmIGxlZnRWYWx1ZSwgQWRkcmVzc0VzY2FwZU1vZGUgYWRkcmVzc0VzY2Fw
ZU1vZGUpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNz
aW9uKGxvY2F0aW9uLCBLaW5kOjpNYWtlQXJyYXlSZWZlcmVuY2UpCiAgICAgICAgICwgbV9sZWZ0
VmFsdWUoV1RGTW92ZShsZWZ0VmFsdWUpKQogICAgICAgICAsIG1fYWRkcmVzc0VzY2FwZU1vZGUo
YWRkcmVzc0VzY2FwZU1vZGUpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfk1ha2VBcnJh
eVJlZmVyZW5jZUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfk1ha2VBcnJheVJlZmVyZW5j
ZUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CiAKICAgICBNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNz
aW9uKGNvbnN0IE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBN
YWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24m
JikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc01ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNzaW9uJiBsZWZ0
VmFsdWUoKSB7IHJldHVybiBtX2xlZnRWYWx1ZTsgfQogCiAgICAgYm9vbCBtaWdodEVzY2FwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYWRkcmVzc0VzY2FwZU1vZGUgPT0gQWRkcmVzc0VzY2FwZU1vZGU6
OkVzY2FwZXM7IH0KQEAgLTcwLDYgKzY4LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVG
QVVMVF9ERUxFVEUoTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbikKKwogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24s
IGlzTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbigpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVz
c2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlUG9pbnRlckV4
cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjMgKzM4LDIxIEBAIG5hbWVzcGFjZSBX
SExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBNYWtlUG9pbnRlckV4cHJlc3Npb24g
OiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBNYWtlUG9pbnRlckV4cHJlc3Npb24gZmluYWwg
OiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgTWFrZVBvaW50ZXJFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5p
cXVlUmVmPEV4cHJlc3Npb24+JiYgbGVmdFZhbHVlLCBBZGRyZXNzRXNjYXBlTW9kZSBhZGRyZXNz
RXNjYXBlTW9kZSkKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4
cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6Ok1ha2VQb2ludGVyKQogICAgICAgICAsIG1fbGVmdFZh
bHVlKFdURk1vdmUobGVmdFZhbHVlKSkKICAgICAgICAgLCBtX2FkZHJlc3NFc2NhcGVNb2RlKGFk
ZHJlc3NFc2NhcGVNb2RlKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5NYWtlUG9pbnRl
ckV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisgICAgfk1ha2VQb2ludGVyRXhwcmVzc2lvbigpID0g
ZGVmYXVsdDsKIAogICAgIE1ha2VQb2ludGVyRXhwcmVzc2lvbihjb25zdCBNYWtlUG9pbnRlckV4
cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBNYWtlUG9pbnRlckV4cHJlc3Npb24oTWFrZVBvaW50
ZXJFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNNYWtlUG9pbnRlckV4cHJl
c3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeHByZXNzaW9u
JiBsZWZ0VmFsdWUoKSB7IHJldHVybiBtX2xlZnRWYWx1ZTsgfQogCiAgICAgYm9vbCBtaWdodEVz
Y2FwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWRkcmVzc0VzY2FwZU1vZGUgPT0gQWRkcmVzc0VzY2Fw
ZU1vZGU6OkVzY2FwZXM7IH0KQEAgLTcwLDYgKzY4LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJ
TkVfREVGQVVMVF9ERUxFVEUoTWFrZVBvaW50ZXJFeHByZXNzaW9uKQorCiBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oTWFrZVBvaW50ZXJFeHByZXNzaW9uLCBpc01ha2VQ
b2ludGVyRXhwcmVzc2lvbigpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVkVHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hbWVkVHlwZS5oCShyZXZp
c2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xOYW1lZFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTUgKzQwLDE4IEBAIG5hbWVz
cGFjZSBBU1QgewogCiBjbGFzcyBOYW1lZFR5cGUgOiBwdWJsaWMgVHlwZSB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CisKK3Byb3RlY3RlZDoKKyAgICB+TmFtZWRUeXBlKCkgPSBkZWZh
dWx0OworCiBwdWJsaWM6Ci0gICAgTmFtZWRUeXBlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3Ry
aW5nJiYgbmFtZSkKLSAgICAgICAgOiBtX2NvZGVMb2NhdGlvbihsb2NhdGlvbikKKyAgICBOYW1l
ZFR5cGUoS2luZCBraW5kLCBDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmluZyYmIG5hbWUpCisg
ICAgICAgIDogVHlwZShraW5kKQorICAgICAgICAsIG1fY29kZUxvY2F0aW9uKGxvY2F0aW9uKQog
ICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIH5OYW1lZFR5cGUoKSA9IGRlZmF1bHQ7Ci0KICAgICBOYW1lZFR5cGUoY29uc3QgTmFtZWRU
eXBlJikgPSBkZWxldGU7CiAgICAgTmFtZWRUeXBlKE5hbWVkVHlwZSYmKSA9IGRlZmF1bHQ7CiAK
QEAgLTU3LDE2ICs2MCwxMCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcmIG5hbWUoKSB7IHJldHVy
biBtX25hbWU7IH0KIAotICAgIGJvb2wgaXNOYW1lZFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVHlwZURlZmluaXRpb24oKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1N0cnVjdHVyZURlZmluaXRpb24o
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0VudW1lcmF0aW9u
RGVmaW5pdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlz
TmF0aXZlVHlwZURlY2xhcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZp
cnR1YWwgY29uc3QgVHlwZSYgdW5pZnlOb2RlKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KLSAg
ICB2aXJ0dWFsIFR5cGUmIHVuaWZ5Tm9kZSgpIHsgcmV0dXJuICp0aGlzOyB9CiAKIHByaXZhdGU6
CisgICAgZnJpZW5kIGNsYXNzIFR5cGU7CisgICAgVHlwZSYgdW5pZnlOb2RlSW1wbCgpIHsgcmV0
dXJuICp0aGlzOyB9CiAgICAgQ29kZUxvY2F0aW9uIG1fY29kZUxvY2F0aW9uOwogICAgIFN0cmlu
ZyBtX25hbWU7CiB9OwpAQCAtNzcsNiArNzQsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9E
RUZBVUxUX0RFTEVURShOYW1lZFR5cGUpCisKICNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19XSExTTF9OQU1FRF9UWVBFKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCiBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldITFNMOjpBU1Q6OlRvVmFsdWVUeXBlTmFt
ZSkgXAogICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXSExTTDo6QVNUOjpO
YW1lZFR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGUucHJlZGljYXRlOyB9IFwKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVj
bGFyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMjIgKzQwLDIwIEBAIG5hbWVzcGFjZSBX
SExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBOYXRpdmVUeXBlRGVjbGFyYXRpb24g
OiBwdWJsaWMgTmFtZWRUeXBlIHsKK2NsYXNzIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbiBmaW5hbCA6
IHB1YmxpYyBOYW1lZFR5cGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFN0cmlu
ZyYmIG5hbWUsIFR5cGVBcmd1bWVudHMmJiB0eXBlQXJndW1lbnRzKQotICAgICAgICA6IE5hbWVk
VHlwZShsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSkKKyAgICAgICAgOiBOYW1lZFR5cGUoS2luZDo6
TmF0aXZlVHlwZURlY2xhcmF0aW9uLCBsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSkKICAgICAgICAg
LCBtX3R5cGVBcmd1bWVudHMoV1RGTW92ZSh0eXBlQXJndW1lbnRzKSkKICAgICB7CiAgICAgfQog
Ci0gICAgdmlydHVhbCB+TmF0aXZlVHlwZURlY2xhcmF0aW9uKCkgPSBkZWZhdWx0OworICAgIH5O
YXRpdmVUeXBlRGVjbGFyYXRpb24oKSA9IGRlZmF1bHQ7CiAKICAgICBOYXRpdmVUeXBlRGVjbGFy
YXRpb24oY29uc3QgTmF0aXZlVHlwZURlY2xhcmF0aW9uJikgPSBkZWxldGU7CiAgICAgTmF0aXZl
VHlwZURlY2xhcmF0aW9uKE5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYmKSA9IGRlZmF1bHQ7CiAKLSAg
ICBib29sIGlzTmF0aXZlVHlwZURlY2xhcmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQotCiAgICAgVHlwZUFyZ3VtZW50cyYgdHlwZUFyZ3VtZW50cygpIHsgcmV0dXJuIG1f
dHlwZUFyZ3VtZW50czsgfQogCiAgICAgYm9vbCBpc0ludCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJ
bnQ7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TE51bGxMaXRlcmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMTnVsbExpdGVyYWwuaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVsbExpdGVyYWwuaAko
d29ya2luZyBjb3B5KQpAQCAtMzcsMTUgKzM3LDE1IEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5h
bWVzcGFjZSBBU1QgewogCi1jbGFzcyBOdWxsTGl0ZXJhbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsK
K2NsYXNzIE51bGxMaXRlcmFsIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb24gewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE51bGxMaXRlcmFsKENvZGVMb2NhdGlv
biBsb2NhdGlvbikKLSAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uKQorICAgICAgICA6IEV4
cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6Ok51bGxMaXRlcmFsKQogICAgIHsKICAgICB9CiAKLSAg
ICB2aXJ0dWFsIH5OdWxsTGl0ZXJhbCgpID0gZGVmYXVsdDsKKyAgICB+TnVsbExpdGVyYWwoKSA9
IGRlZmF1bHQ7CiAKICAgICBOdWxsTGl0ZXJhbChjb25zdCBOdWxsTGl0ZXJhbCYpID0gZGVsZXRl
OwogICAgIE51bGxMaXRlcmFsKE51bGxMaXRlcmFsJiYpID0gZGVmYXVsdDsKQEAgLTU1LDggKzU1
LDYgQEAgcHVibGljOgogCiAgICAgTnVsbExpdGVyYWxUeXBlJiB0eXBlKCkgeyByZXR1cm4gbV90
eXBlOyB9CiAKLSAgICBib29sIGlzTnVsbExpdGVyYWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9Ci0KICAgICBOdWxsTGl0ZXJhbCBjbG9uZSgpIGNvbnN0CiAgICAgewogICAgICAg
ICBhdXRvIHJlc3VsdCA9IE51bGxMaXRlcmFsKGNvZGVMb2NhdGlvbigpKTsKQEAgLTc2LDYgKzc0
LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoTnVsbExpdGVyYWwp
CisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihOdWxsTGl0ZXJhbCwg
aXNOdWxsTGl0ZXJhbCgpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRlcmFsVHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRlcmFsVHlw
ZS5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xOdWxsTGl0ZXJhbFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTIg
KzM2LDE0IEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBO
dWxsTGl0ZXJhbFR5cGUgOiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUgeworY2xhc3MgTnVsbExpdGVy
YWxUeXBlIGZpbmFsIDogcHVibGljIFJlc29sdmFibGVUeXBlIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBOdWxsTGl0ZXJhbFR5cGUoKSA9IGRlZmF1bHQ7Cisg
ICAgTnVsbExpdGVyYWxUeXBlKCkKKyAgICAgICAgOiBSZXNvbHZhYmxlVHlwZShLaW5kOjpOdWxs
TGl0ZXJhbCkKKyAgICB7IH0KIAotICAgIHZpcnR1YWwgfk51bGxMaXRlcmFsVHlwZSgpID0gZGVm
YXVsdDsKKyAgICB+TnVsbExpdGVyYWxUeXBlKCkgPSBkZWZhdWx0OwogCiAgICAgTnVsbExpdGVy
YWxUeXBlKGNvbnN0IE51bGxMaXRlcmFsVHlwZSYpID0gZGVsZXRlOwogICAgIE51bGxMaXRlcmFs
VHlwZShOdWxsTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwpAQCAtNDksMTAgKzUxLDggQEAgcHVi
bGljOgogICAgIE51bGxMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KGNvbnN0IE51bGxMaXRlcmFsVHlw
ZSYpID0gZGVsZXRlOwogICAgIE51bGxMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KE51bGxMaXRlcmFs
VHlwZSYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzTnVsbExpdGVyYWxUeXBlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgYm9vbCBjYW5SZXNvbHZlKGNvbnN0IFR5
cGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChjb25zdCBV
bm5hbWVkVHlwZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBU
eXBlJikgY29uc3Q7CisgICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5
cGUmKSBjb25zdDsKIAogcHJpdmF0ZToKIH07CkBAIC02Myw2ICs2Myw4IEBAIHByaXZhdGU6CiAK
IH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKE51bGxMaXRlcmFsVHlwZSkKKwogU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19XSExTTF9SRVNPTFZBQkxFX1RZUEUoTnVsbExpdGVyYWxUeXBlLCBpc051
bGxMaXRlcmFsVHlwZSgpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFBvaW50ZXJUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUG9pbnRlclR5cGUuaAkocmV2
aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMUG9pbnRlclR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAj
aW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNh
dGVuYXRlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTQ2LDE3ICs0NywxOCBAQCBjbGFzcyBQb2ludGVyVHlwZSBmaW5hbCA6IHB1
YmxpYyBSZWZlcmVuCiAgICAgdXNpbmcgQmFzZSA9IFJlZmVyZW5jZVR5cGU7CiAKICAgICBQb2lu
dGVyVHlwZShDb2RlTG9jYXRpb24gbG9jYXRpb24sIEFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2Us
IFJlZjxVbm5hbWVkVHlwZT4gZWxlbWVudFR5cGUpCi0gICAgICAgIDogQmFzZShsb2NhdGlvbiwg
YWRkcmVzc1NwYWNlLCBXVEZNb3ZlKGVsZW1lbnRUeXBlKSwgS2luZDo6UG9pbnRlclR5cGUpCisg
ICAgICAgIDogQmFzZShsb2NhdGlvbiwgYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKGVsZW1lbnRUeXBl
KSwgS2luZDo6UG9pbnRlcikKICAgICB7CiAgICAgfQogCiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxQb2ludGVyVHlwZT4gY3JlYXRlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgQWRkcmVzc1NwYWNl
IGFkZHJlc3NTcGFjZSwgUmVmPFVubmFtZWRUeXBlPiBlbGVtZW50VHlwZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBvaW50ZXJUeXBlKGxvY2F0aW9uLCBhZGRyZXNzU3Bh
Y2UsIFdURk1vdmUoZWxlbWVudFR5cGUpKSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRS
ZWYoKm5ldyBQb2ludGVyVHlwZShsb2NhdGlvbiwgYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKGVsZW1l
bnRUeXBlKSkpOworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHZpcnR1YWwg
flBvaW50ZXJUeXBlKCkgPSBkZWZhdWx0OworICAgIH5Qb2ludGVyVHlwZSgpID0gZGVmYXVsdDsK
IAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKQEAgLTY4LDcgKzcwLDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gYWRkcmVzc1NwYWNlKCkgPT0gb3RoZXIuYWRkcmVzc1NwYWNl
KCkgJiYgZWxlbWVudFR5cGUoKSA9PSBvdGhlci5lbGVtZW50VHlwZSgpOwogICAgIH0KIAotICAg
IFN0cmluZyB0b1N0cmluZygpIGNvbnN0IG92ZXJyaWRlCisgICAgU3RyaW5nIHRvU3RyaW5nKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKGVsZW1lbnRUeXBlKCkudG9T
dHJpbmcoKSwgJyonKTsKICAgICB9CkBAIC04MCw2ICs4Miw4IEBAIHB1YmxpYzoKIAogfQogCitE
RUZJTkVfREVGQVVMVF9ERUxFVEUoUG9pbnRlclR5cGUpCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfV0hMU0xfVU5OQU1FRF9UWVBFKFBvaW50ZXJUeXBlLCBpc1BvaW50ZXJUeXBlKCkpCiAKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgJ
KHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MCwyMyArNDAsMjIgQEAgbmFtZXNwYWNlIEFTVCB7CiAKIGNsYXNzIFByb3BlcnR5QWNjZXNzRXhw
cmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3Byb3RlY3RlZDoKKyAgICB+UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKCkgPSBkZWZhdWx0
OworCiBwdWJsaWM6Ci0gICAgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKENvZGVMb2NhdGlvbiBs
b2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgYmFzZSkKLSAgICAgICAgOiBFeHByZXNz
aW9uKGxvY2F0aW9uKQorICAgIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihDb2RlTG9jYXRpb24g
bG9jYXRpb24sIEtpbmQga2luZCwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgYmFzZSkKKyAgICAg
ICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBraW5kKQogICAgICAgICAsIG1fYmFzZShXVEZNb3Zl
KGJhc2UpKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5Qcm9wZXJ0eUFjY2Vzc0V4cHJl
c3Npb24oKSA9IGRlZmF1bHQ7Ci0KICAgICBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oY29uc3Qg
UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJikgPSBkZWxldGU7CiAgICAgUHJvcGVydHlBY2Nlc3NF
eHByZXNzaW9uKFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CiAKLSAgICBi
b29sIGlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQotCi0gICAgdmlydHVhbCBTdHJpbmcgZ2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3Qg
PSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIHNldHRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0ID0gMDsK
LSAgICB2aXJ0dWFsIFN0cmluZyBhbmRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0ID0gMDsKKyAgICBT
dHJpbmcgZ2V0dGVyRnVuY3Rpb25OYW1lKCkgY29uc3Q7CisgICAgU3RyaW5nIHNldHRlckZ1bmN0
aW9uTmFtZSgpIGNvbnN0OworICAgIFN0cmluZyBhbmRlckZ1bmN0aW9uTmFtZSgpIGNvbnN0Owog
CiAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbiogZ2V0dGVyRnVuY3Rpb24oKSB7IHJldHVybiBtX2dl
dHRlckZ1bmN0aW9uOyB9CiAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbiogYW5kZXJGdW5jdGlvbigp
IHsgcmV0dXJuIG1fYW5kZXJGdW5jdGlvbjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJl
YWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVz
c2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSwxNSArNDksMTkgQEAgbmFtZXNwYWNlIEFTVCB7
CiAgKiAgNi4gRXZhbHVhdGUgbV9yZXN1bHRFeHByZXNzaW9uCiAgKiAgNy4gUmV0dXJuIHRoZSBy
ZXN1bHQKICAqLwotY2xhc3MgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiA6IHB1YmxpYyBFeHBy
ZXNzaW9uIHsKK2NsYXNzIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24gZmluYWwgOiBwdWJsaWMg
RXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFVuaXF1ZVJlZjxSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPiBjcmVhdGUoQ29kZUxv
Y2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbFZhbHVlKQorICAgIFJlYWRN
b2RpZnlXcml0ZUV4cHJlc3Npb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhw
cmVzc2lvbj4gbGVmdFZhbHVlKQorICAgICAgICA6IEV4cHJlc3Npb24obG9jYXRpb24sIEtpbmQ6
OlJlYWRNb2RpZnlXcml0ZSkKKyAgICAgICAgLCBtX2xlZnRWYWx1ZShXVEZNb3ZlKGxlZnRWYWx1
ZSkpCisgICAgICAgICwgbV9vbGRWYWx1ZShtYWtlVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRp
b24+KGxvY2F0aW9uLCBRdWFsaWZpZXJzKCksIG51bGxwdHIsIFN0cmluZygpLCBudWxscHRyLCBu
dWxscHRyKSkKKyAgICAgICAgLCBtX25ld1ZhbHVlKG1ha2VVbmlxdWVSZWY8VmFyaWFibGVEZWNs
YXJhdGlvbj4obG9jYXRpb24sIFF1YWxpZmllcnMoKSwgbnVsbHB0ciwgU3RyaW5nKCksIG51bGxw
dHIsIG51bGxwdHIpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8UmVhZE1v
ZGlmeVdyaXRlRXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUobFZhbHVlKSk7CiAgICAgfQog
Ci0gICAgdmlydHVhbCB+UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKwor
ICAgIH5SZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKCkgPSBkZWZhdWx0OwogCiAgICAgUmVhZE1v
ZGlmeVdyaXRlRXhwcmVzc2lvbihjb25zdCBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uJikgPSBk
ZWxldGU7CiAgICAgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbihSZWFkTW9kaWZ5V3JpdGVFeHBy
ZXNzaW9uJiYpID0gZGVmYXVsdDsKQEAgLTgyLDggKzg2LDYgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZVJlZjxWYXJpYWJsZVJlZmVyZW5jZT4oVmFyaWFibGVSZWZlcmVuY2U6
OndyYXAobV9uZXdWYWx1ZSkpOwogICAgIH0KIAotICAgIGJvb2wgaXNSZWFkTW9kaWZ5V3JpdGVF
eHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgRXhwcmVz
c2lvbiYgbGVmdFZhbHVlKCkgeyByZXR1cm4gbV9sZWZ0VmFsdWU7IH0KICAgICBWYXJpYWJsZURl
Y2xhcmF0aW9uJiBvbGRWYWx1ZSgpIHsgcmV0dXJuIG1fb2xkVmFsdWU7IH0KICAgICBWYXJpYWJs
ZURlY2xhcmF0aW9uJiBuZXdWYWx1ZSgpIHsgcmV0dXJuIG1fbmV3VmFsdWU7IH0KQEAgLTExNCwx
NiArMTE2LDYgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZTxjbGFz
cyBVLCBjbGFzcy4uLiBBcmdzPiBmcmllbmQgVW5pcXVlUmVmPFU+IFdURjo6bWFrZVVuaXF1ZVJl
ZihBcmdzJiYuLi4pOwotCi0gICAgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbihDb2RlTG9jYXRp
b24gbG9jYXRpb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBsZWZ0VmFsdWUpCi0gICAgICAgIDog
RXhwcmVzc2lvbihsb2NhdGlvbikKLSAgICAgICAgLCBtX2xlZnRWYWx1ZShXVEZNb3ZlKGxlZnRW
YWx1ZSkpCi0gICAgICAgICwgbV9vbGRWYWx1ZShtYWtlVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFy
YXRpb24+KGxvY2F0aW9uLCBRdWFsaWZpZXJzKCksIG51bGxwdHIsIFN0cmluZygpLCBudWxscHRy
LCBudWxscHRyKSkKLSAgICAgICAgLCBtX25ld1ZhbHVlKG1ha2VVbmlxdWVSZWY8VmFyaWFibGVE
ZWNsYXJhdGlvbj4obG9jYXRpb24sIFF1YWxpZmllcnMoKSwgbnVsbHB0ciwgU3RyaW5nKCksIG51
bGxwdHIsIG51bGxwdHIpKQotICAgIHsKLSAgICB9Ci0KICAgICBVbmlxdWVSZWY8RXhwcmVzc2lv
bj4gbV9sZWZ0VmFsdWU7CiAgICAgVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+IG1fb2xk
VmFsdWU7CiAgICAgVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+IG1fbmV3VmFsdWU7CkBA
IC0xMzcsNiArMTI5LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUo
UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbikKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExT
TF9FWFBSRVNTSU9OKFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24sIGlzUmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbigpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFJlZmVyZW5jZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWZlcmVuY2VUeXBlLmgJKHJl
dmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFJlZmVyZW5jZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsMTAgQEAg
bmFtZXNwYWNlIEFTVCB7CiBjbGFzcyBSZWZlcmVuY2VUeXBlIDogcHVibGljIFVubmFtZWRUeXBl
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShSZWZlcmVuY2VUeXBlKTsKKworcHJvdGVjdGVkOgorICAgIH5SZWZlcmVuY2VUeXBlKCkgPSBk
ZWZhdWx0OworCiBwcm90ZWN0ZWQ6CiAgICAgUmVmZXJlbmNlVHlwZShDb2RlTG9jYXRpb24gbG9j
YXRpb24sIEFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2UsIFJlZjxVbm5hbWVkVHlwZT4gZWxlbWVu
dFR5cGUsIEtpbmQga2luZCkKICAgICAgICAgOiBVbm5hbWVkVHlwZShsb2NhdGlvbiwga2luZCkK
QEAgLTUwLDkgKzU0LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICAsIG1fZWxlbWVudFR5cGUoV1RG
TW92ZShlbGVtZW50VHlwZSkpCiAgICAgewogICAgIH0KLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5S
ZWZlcmVuY2VUeXBlKCkgPSBkZWZhdWx0OwogCisKK3B1YmxpYzoKICAgICBBZGRyZXNzU3BhY2Ug
YWRkcmVzc1NwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9hZGRyZXNzU3BhY2U7IH0KICAgICBjb25z
dCBVbm5hbWVkVHlwZSYgZWxlbWVudFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRUeXBl
OyB9CiAgICAgVW5uYW1lZFR5cGUmIGVsZW1lbnRUeXBlKCkgeyByZXR1cm4gbV9lbGVtZW50VHlw
ZTsgfQpAQCAtNzMsNiArNzcsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RF
TEVURShSZWZlcmVuY2VUeXBlKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1VOTkFN
RURfVFlQRShSZWZlcmVuY2VUeXBlLCBpc1JlZmVyZW5jZVR5cGUoKSkKIAogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXBsYWNlV2l0
aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFJlcGxhY2VXaXRoLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlcGxhY2VXaXRoLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDcgKzM4LDcgQEAgQUxXQVlTX0lOTElORSBOZXcqIHJlcGxhY2VXaXRoKE9sZCYg
b2xkLAogewogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE5ldykgPD0gc2l6ZW9mKE9sZCksICJU
aGlzIGlzIG5lZWRlZCBmb3IgdGhlIHBsYWNlbWVudCBuZXcgYmVsb3cgdG8gbm90IG92ZXJ3cml0
ZSB1bm93bmVkIG1lbW9yeS4iKTsKICAgICB2b2lkKiBsb2NhdGlvbiA9ICZvbGQ7Ci0gICAgb2xk
Ln5PbGQoKTsKKyAgICBPbGQ6OmRlc3RydWN0KG9sZCk7CiAgICAgcmV0dXJuIG5ldyAobG9jYXRp
b24pIE5ldyhzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvbHZhYmxlVHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFJlc29sdmFibGVUeXBlLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc29sdmFibGVUeXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDEwICs0MCwxNSBAQCBuYW1lc3BhY2UgQVNUIHsKIAogY2xhc3MgUmVzb2x2YWJs
ZVR5cGUgOiBwdWJsaWMgVHlwZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisKK3By
b3RlY3RlZDoKKyAgICB+UmVzb2x2YWJsZVR5cGUoKSA9IGRlZmF1bHQ7CisKIHB1YmxpYzoKLSAg
ICBSZXNvbHZhYmxlVHlwZSgpID0gZGVmYXVsdDsKKyAgICBSZXNvbHZhYmxlVHlwZShLaW5kIGtp
bmQpCisgICAgICAgIDogVHlwZShraW5kKQorICAgIHsgfQogCi0gICAgdmlydHVhbCB+UmVzb2x2
YWJsZVR5cGUoKSA9IGRlZmF1bHQ7CiAKICAgICBSZXNvbHZhYmxlVHlwZShjb25zdCBSZXNvbHZh
YmxlVHlwZSYpID0gZGVsZXRlOwogICAgIFJlc29sdmFibGVUeXBlKFJlc29sdmFibGVUeXBlJiYp
ID0gZGVmYXVsdDsKQEAgLTUxLDE0ICs1Niw4IEBAIHB1YmxpYzoKICAgICBSZXNvbHZhYmxlVHlw
ZSYgb3BlcmF0b3I9KGNvbnN0IFJlc29sdmFibGVUeXBlJikgPSBkZWxldGU7CiAgICAgUmVzb2x2
YWJsZVR5cGUmIG9wZXJhdG9yPShSZXNvbHZhYmxlVHlwZSYmKSA9IGRlZmF1bHQ7CiAKLSAgICBi
b29sIGlzUmVzb2x2YWJsZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzRmxvYXRMaXRlcmFsVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzSW50ZWdlckxpdGVyYWxUeXBlKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNOdWxsTGl0ZXJhbFR5cGUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Vuc2lnbmVkSW50ZWdlckxpdGVy
YWxUeXBlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBjYW5S
ZXNvbHZlKGNvbnN0IFR5cGUmKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBjb252
ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0ID0gMDsKKyAgICBib29sIGNhblJl
c29sdmUoY29uc3QgVHlwZSYpIGNvbnN0OworICAgIHVuc2lnbmVkIGNvbnZlcnNpb25Db3N0KGNv
bnN0IFVubmFtZWRUeXBlJikgY29uc3Q7CiAKICAgICBjb25zdCBVbm5hbWVkVHlwZSogbWF5YmVS
ZXNvbHZlZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkVHlwZSA/ICYqbV9yZXNvbHZl
ZFR5cGUgOiBudWxscHRyOyB9CiAgICAgY29uc3QgVW5uYW1lZFR5cGUmIHJlc29sdmVkVHlwZSgp
IGNvbnN0CkBAIC04OSw2ICs4OCw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRf
REVMRVRFKFJlc29sdmFibGVUeXBlKQorCiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
V0hMU0xfUkVTT0xWQUJMRV9UWVBFKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCiBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldITFNMOjpBU1Q6OlRvVmFsdWVUeXBl
TmFtZSkgXAogICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXSExTTDo6QVNU
OjpSZXNvbHZhYmxlVHlwZSYgdHlwZSkgeyByZXR1cm4gdHlwZS5wcmVkaWNhdGU7IH0gXApJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmV0dXJuLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMUmV0dXJuLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFJldHVybi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyMiAr
MzksMjAgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIFJl
dHVybiA6IHB1YmxpYyBTdGF0ZW1lbnQgeworY2xhc3MgUmV0dXJuIGZpbmFsIDogcHVibGljIFN0
YXRlbWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUmV0
dXJuKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+JiYg
dmFsdWUpCi0gICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uKQorICAgICAgICA6IFN0YXRlbWVu
dChsb2NhdGlvbiwgS2luZDo6UmV0dXJuKQogICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1
ZSkpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgflJldHVybigpID0gZGVmYXVsdDsKKyAg
ICB+UmV0dXJuKCkgPSBkZWZhdWx0OwogCiAgICAgUmV0dXJuKGNvbnN0IFJldHVybiYpID0gZGVs
ZXRlOwogICAgIFJldHVybihSZXR1cm4mJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc1JldHVy
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIEV4cHJlc3Npb24qIHZh
bHVlKCkgeyByZXR1cm4gbV92YWx1ZS5nZXQoKTsgfQogCiBwcml2YXRlOgpAQCAtNjcsNiArNjUs
OCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShSZXR1cm4pCisKIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKFJldHVybiwgaXNSZXR1cm4oKSkK
IAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xTdGF0ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgorCisjaWYgRU5BQkxFKFdFQkdQ
VSkKKworI2luY2x1ZGUgIldITFNMQVNULmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFt
ZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK3ZvaWQgU3RhdGVtZW50OjpkZXN0
cm95KFN0YXRlbWVudCYgc3RhdGVtZW50KQoreworICAgIHN3aXRjaCAoc3RhdGVtZW50LmtpbmQo
KSkgeworICAgIGNhc2UgS2luZDo6QmxvY2s6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8Qmxv
Y2s+KHN0YXRlbWVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6QnJlYWs6Cisg
ICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QnJlYWs+KHN0YXRlbWVudCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgS2luZDo6Q29udGludWU6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8Q29u
dGludWU+KHN0YXRlbWVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6RG9XaGls
ZUxvb3A6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8RG9XaGlsZUxvb3A+KHN0YXRlbWVudCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6RWZmZWN0ZnVsRXhwcmVzc2lvbjoKKyAg
ICAgICAgZGVsZXRlICZkb3duY2FzdDxFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50PihzdGF0
ZW1lbnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6OkZhbGx0aHJvdWdoOgorICAg
ICAgICBkZWxldGUgJmRvd25jYXN0PEZhbGx0aHJvdWdoPihzdGF0ZW1lbnQpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEtpbmQ6OkZvckxvb3A6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8
Rm9yTG9vcD4oc3RhdGVtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpJZjoK
KyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxJZlN0YXRlbWVudD4oc3RhdGVtZW50KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpSZXR1cm46CisgICAgICAgIGRlbGV0ZSAmZG93bmNh
c3Q8UmV0dXJuPihzdGF0ZW1lbnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6OlN0
YXRlbWVudExpc3Q6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8U3RhdGVtZW50TGlzdD4oc3Rh
dGVtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpTd2l0Y2hDYXNlOgorICAg
ICAgICBkZWxldGUgJmRvd25jYXN0PFN3aXRjaENhc2U+KHN0YXRlbWVudCk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgS2luZDo6U3dpdGNoOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PFN3
aXRjaFN0YXRlbWVudD4oc3RhdGVtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5k
OjpWYXJpYWJsZURlY2xhcmF0aW9uczoKKyAgICAgICAgZGVsZXRlICZkb3duY2FzdDxWYXJpYWJs
ZURlY2xhcmF0aW9uc1N0YXRlbWVudD4oc3RhdGVtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBLaW5kOjpXaGlsZUxvb3A6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8V2hpbGVMb29w
PihzdGF0ZW1lbnQpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgU3RhdGVtZW50
OjpkZXN0cnVjdChTdGF0ZW1lbnQmIHN0YXRlbWVudCkKK3sKKyAgICBzd2l0Y2ggKHN0YXRlbWVu
dC5raW5kKCkpIHsKKyAgICBjYXNlIEtpbmQ6OkJsb2NrOgorICAgICAgICBkb3duY2FzdDxCbG9j
az4oc3RhdGVtZW50KS5+QmxvY2soKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpC
cmVhazoKKyAgICAgICAgZG93bmNhc3Q8QnJlYWs+KHN0YXRlbWVudCkufkJyZWFrKCk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6Q29udGludWU6CisgICAgICAgIGRvd25jYXN0PENv
bnRpbnVlPihzdGF0ZW1lbnQpLn5Db250aW51ZSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEtpbmQ6OkRvV2hpbGVMb29wOgorICAgICAgICBkb3duY2FzdDxEb1doaWxlTG9vcD4oc3RhdGVt
ZW50KS5+RG9XaGlsZUxvb3AoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpFZmZl
Y3RmdWxFeHByZXNzaW9uOgorICAgICAgICBkb3duY2FzdDxFZmZlY3RmdWxFeHByZXNzaW9uU3Rh
dGVtZW50PihzdGF0ZW1lbnQpLn5FZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KCk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6RmFsbHRocm91Z2g6CisgICAgICAgIGRvd25jYXN0
PEZhbGx0aHJvdWdoPihzdGF0ZW1lbnQpLn5GYWxsdGhyb3VnaCgpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEtpbmQ6OkZvckxvb3A6CisgICAgICAgIGRvd25jYXN0PEZvckxvb3A+KHN0YXRl
bWVudCkufkZvckxvb3AoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpJZjoKKyAg
ICAgICAgZG93bmNhc3Q8SWZTdGF0ZW1lbnQ+KHN0YXRlbWVudCkufklmU3RhdGVtZW50KCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6UmV0dXJuOgorICAgICAgICBkb3duY2FzdDxS
ZXR1cm4+KHN0YXRlbWVudCkuflJldHVybigpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtp
bmQ6OlN0YXRlbWVudExpc3Q6CisgICAgICAgIGRvd25jYXN0PFN0YXRlbWVudExpc3Q+KHN0YXRl
bWVudCkuflN0YXRlbWVudExpc3QoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpT
d2l0Y2hDYXNlOgorICAgICAgICBkb3duY2FzdDxTd2l0Y2hDYXNlPihzdGF0ZW1lbnQpLn5Td2l0
Y2hDYXNlKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6U3dpdGNoOgorICAgICAg
ICBkb3duY2FzdDxTd2l0Y2hTdGF0ZW1lbnQ+KHN0YXRlbWVudCkuflN3aXRjaFN0YXRlbWVudCgp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6OlZhcmlhYmxlRGVjbGFyYXRpb25zOgor
ICAgICAgICBkb3duY2FzdDxWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudD4oc3RhdGVtZW50
KS5+VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBLaW5kOjpXaGlsZUxvb3A6CisgICAgICAgIGRvd25jYXN0PFdoaWxlTG9vcD4oc3RhdGVt
ZW50KS5+V2hpbGVMb29wKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworfSAvLyBuYW1l
c3BhY2UgQVNUCisKK30gLy8gbmFtZXNwYWNlIFdITFNMCisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xTdGF0ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnQuaAkocmV2aXNpb24gMjQ4NDA0KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoV0VCR1BVKQogCiAj
aW5jbHVkZSAiV0hMU0xDb2RlTG9jYXRpb24uaCIKKyNpbmNsdWRlICJXSExTTERlZmF1bHREZWxl
dGUuaCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVS
ZWYuaD4KIApAQCAtMzksNDcgKzQwLDc0IEBAIG5hbWVzcGFjZSBBU1QgewogCiBjbGFzcyBTdGF0
ZW1lbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCitwcm90ZWN0ZWQ6CisgICAg
flN0YXRlbWVudCgpID0gZGVmYXVsdDsKKwogcHVibGljOgotICAgIFN0YXRlbWVudChDb2RlTG9j
YXRpb24gY29kZUxvY2F0aW9uKQorICAgIGVudW0gY2xhc3MgS2luZCA6IHVpbnQ4X3QgeworICAg
ICAgICBCbG9jaywKKyAgICAgICAgQnJlYWssCisgICAgICAgIENvbnRpbnVlLAorICAgICAgICBE
b1doaWxlTG9vcCwKKyAgICAgICAgRWZmZWN0ZnVsRXhwcmVzc2lvbiwKKyAgICAgICAgRmFsbHRo
cm91Z2gsCisgICAgICAgIEZvckxvb3AsCisgICAgICAgIElmLAorICAgICAgICBSZXR1cm4sCisg
ICAgICAgIFN0YXRlbWVudExpc3QsCisgICAgICAgIFN3aXRjaENhc2UsCisgICAgICAgIFN3aXRj
aCwKKyAgICAgICAgVmFyaWFibGVEZWNsYXJhdGlvbnMsCisgICAgICAgIFdoaWxlTG9vcCwKKyAg
ICB9OworICAgIFN0YXRlbWVudChDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uLCBLaW5kIGtpbmQp
CiAgICAgICAgIDogbV9jb2RlTG9jYXRpb24oY29kZUxvY2F0aW9uKQorICAgICAgICAsIG1fa2lu
ZChraW5kKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5TdGF0ZW1lbnQoKSA9IGRlZmF1
bHQ7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShTdGF0ZW1lbnQmKTsKKyAgICBzdGF0aWMgdm9p
ZCBkZXN0cnVjdChTdGF0ZW1lbnQmKTsKIAogICAgIFN0YXRlbWVudChjb25zdCBTdGF0ZW1lbnQm
KSA9IGRlbGV0ZTsKICAgICBTdGF0ZW1lbnQoU3RhdGVtZW50JiYpID0gZGVmYXVsdDsKIAotICAg
IHZpcnR1YWwgYm9vbCBpc0Jsb2NrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNCcmVhaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzQ29udGludWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9v
bCBpc0RvV2hpbGVMb29wKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaXNFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNGYWxsdGhyb3VnaCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzRm9yTG9vcCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzSWZTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBpc1JldHVybigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzU3RhdGVtZW50TGlzdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzU3dpdGNoQ2FzZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzU3dpdGNoU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzV2hpbGVMb29wKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBt
X2tpbmQ7IH0KKworICAgIGJvb2wgaXNCbG9jaygpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBL
aW5kOjpCbG9jazsgfQorICAgIGJvb2wgaXNCcmVhaygpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9
PSBLaW5kOjpCcmVhazsgfQorICAgIGJvb2wgaXNDb250aW51ZSgpIGNvbnN0IHsgcmV0dXJuIGtp
bmQoKSA9PSBLaW5kOjpDb250aW51ZTsgfQorICAgIGJvb2wgaXNEb1doaWxlTG9vcCgpIGNvbnN0
IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpEb1doaWxlTG9vcDsgfQorICAgIGJvb2wgaXNFZmZl
Y3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6
OkVmZmVjdGZ1bEV4cHJlc3Npb247IH0KKyAgICBib29sIGlzRmFsbHRocm91Z2goKSBjb25zdCB7
IHJldHVybiBraW5kKCkgPT0gS2luZDo6RmFsbHRocm91Z2g7IH0KKyAgICBib29sIGlzRm9yTG9v
cCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpGb3JMb29wOyB9CisgICAgYm9vbCBp
c0lmU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEtpbmQ6OklmOyB9CisgICAg
Ym9vbCBpc1JldHVybigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpSZXR1cm47IH0K
KyAgICBib29sIGlzU3RhdGVtZW50TGlzdCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5k
OjpTdGF0ZW1lbnRMaXN0OyB9CisgICAgYm9vbCBpc1N3aXRjaENhc2UoKSBjb25zdCB7IHJldHVy
biBraW5kKCkgPT0gS2luZDo6U3dpdGNoQ2FzZTsgfQorICAgIGJvb2wgaXNTd2l0Y2hTdGF0ZW1l
bnQoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6U3dpdGNoOyB9CisgICAgYm9vbCBp
c1ZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09
IEtpbmQ6OlZhcmlhYmxlRGVjbGFyYXRpb25zOyB9CisgICAgYm9vbCBpc1doaWxlTG9vcCgpIGNv
bnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpXaGlsZUxvb3A7IH0KIAogICAgIENvZGVMb2Nh
dGlvbiBjb2RlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvZGVMb2NhdGlvbjsgfQogICAg
IHZvaWQgdXBkYXRlQ29kZUxvY2F0aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbikgeyBtX2NvZGVM
b2NhdGlvbiA9IGxvY2F0aW9uOyB9CiAKIHByaXZhdGU6CiAgICAgQ29kZUxvY2F0aW9uIG1fY29k
ZUxvY2F0aW9uOworICAgIEtpbmQgbV9raW5kOwogfTsKIAogdXNpbmcgU3RhdGVtZW50cyA9IFZl
Y3RvcjxVbmlxdWVSZWY8U3RhdGVtZW50Pj47CiAKLX0gLy8gbmFtZXNwYWNlIEFTVAorfQogCiB9
CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKFN0YXRlbWVudCkKKwogI2RlZmluZSBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChUb1ZhbHVlVHlwZU5hbWUsIHByZWRp
Y2F0ZSkgXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExTTDo6QVNU
OjpUb1ZhbHVlVHlwZU5hbWUpIFwKICAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50JiBzdGF0ZW1lbnQpIHsgcmV0dXJuIHN0YXRlbWVudC5w
cmVkaWNhdGU7IH0gXApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMU3RhdGVtZW50TGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudExpc3QuaAkocmV2aXNpb24gMjQ4
NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3Rh
dGVtZW50TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyMSArMzgsMTkgQEAgbmFtZXNwYWNl
IFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIFN0YXRlbWVudExpc3QgOiBwdWJs
aWMgU3RhdGVtZW50IHsKK2NsYXNzIFN0YXRlbWVudExpc3QgZmluYWwgOiBwdWJsaWMgU3RhdGVt
ZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICB1c2luZyBCYXNlID0gU3Rh
dGVtZW50OwogcHVibGljOgogICAgIFN0YXRlbWVudExpc3QoQ29kZUxvY2F0aW9uIGxvY2F0aW9u
LCBTdGF0ZW1lbnRzJiYgc3RhdGVtZW50cykKLSAgICAgICAgOiBCYXNlKGxvY2F0aW9uKQorICAg
ICAgICA6IEJhc2UobG9jYXRpb24sIEtpbmQ6OlN0YXRlbWVudExpc3QpCiAgICAgICAgICwgbV9z
dGF0ZW1lbnRzKFdURk1vdmUoc3RhdGVtZW50cykpCiAgICAgeyB9CiAKLSAgICB2aXJ0dWFsIH5T
dGF0ZW1lbnRMaXN0KCkgPSBkZWZhdWx0OworICAgIH5TdGF0ZW1lbnRMaXN0KCkgPSBkZWZhdWx0
OwogCiAgICAgU3RhdGVtZW50cyYgc3RhdGVtZW50cygpIHsgcmV0dXJuIG1fc3RhdGVtZW50czsg
fQogCi0gICAgYm9vbCBpc1N0YXRlbWVudExpc3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9Ci0KIHByaXZhdGU6CiAgICAgU3RhdGVtZW50cyBtX3N0YXRlbWVudHM7CiB9OwpAQCAt
NjMsNiArNjEsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShTdGF0
ZW1lbnRMaXN0KQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChTdGF0
ZW1lbnRMaXN0LCBpc1N0YXRlbWVudExpc3QoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDIyICs0MCwyMCBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBu
YW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgU3RydWN0dXJlRGVmaW5pdGlvbiA6IHB1YmxpYyBOYW1l
ZFR5cGUgeworY2xhc3MgU3RydWN0dXJlRGVmaW5pdGlvbiBmaW5hbCA6IHB1YmxpYyBOYW1lZFR5
cGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFN0cnVjdHVy
ZURlZmluaXRpb24oQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBTdHJpbmcmJiBuYW1lLCBTdHJ1Y3R1
cmVFbGVtZW50cyYmIHN0cnVjdHVyZUVsZW1lbnRzKQotICAgICAgICA6IE5hbWVkVHlwZShsb2Nh
dGlvbiwgV1RGTW92ZShuYW1lKSkKKyAgICAgICAgOiBOYW1lZFR5cGUoS2luZDo6U3RydWN0dXJl
RGVmaW5pdGlvbiwgbG9jYXRpb24sIFdURk1vdmUobmFtZSkpCiAgICAgICAgICwgbV9zdHJ1Y3R1
cmVFbGVtZW50cyhXVEZNb3ZlKHN0cnVjdHVyZUVsZW1lbnRzKSkKICAgICB7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB+U3RydWN0dXJlRGVmaW5pdGlvbigpID0gZGVmYXVsdDsKKyAgICB+U3RydWN0
dXJlRGVmaW5pdGlvbigpID0gZGVmYXVsdDsKIAogICAgIFN0cnVjdHVyZURlZmluaXRpb24oY29u
c3QgU3RydWN0dXJlRGVmaW5pdGlvbiYpID0gZGVsZXRlOwogICAgIFN0cnVjdHVyZURlZmluaXRp
b24oU3RydWN0dXJlRGVmaW5pdGlvbiYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzU3RydWN0
dXJlRGVmaW5pdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIFN0
cnVjdHVyZUVsZW1lbnRzJiBzdHJ1Y3R1cmVFbGVtZW50cygpIHsgcmV0dXJuIG1fc3RydWN0dXJl
RWxlbWVudHM7IH0KICAgICBTdHJ1Y3R1cmVFbGVtZW50KiBmaW5kKGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICB7CkBAIC03Nyw2ICs3NSw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFV
TFRfREVMRVRFKFN0cnVjdHVyZURlZmluaXRpb24pCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
V0hMU0xfTkFNRURfVFlQRShTdHJ1Y3R1cmVEZWZpbml0aW9uLCBpc1N0cnVjdHVyZURlZmluaXRp
b24oKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJlRWxlbWVudC5oCShyZXZp
c2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAg
bmFtZXNwYWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIFN0cnVjdHVyZUVs
ZW1lbnQgeworY2xhc3MgU3RydWN0dXJlRWxlbWVudCBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU3RydWN0dXJlRWxlbWVudChDb2RlTG9jYXRpb24g
bG9jYXRpb24sIFF1YWxpZmllcnMmJiBxdWFsaWZpZXJzLCBSZWY8VW5uYW1lZFR5cGU+IHR5cGUs
IFN0cmluZyYmIG5hbWUsIHN0ZDo6dW5pcXVlX3B0cjxTZW1hbnRpYz4mJiBzZW1hbnRpYykKQEAg
LTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5TdHJ1
Y3R1cmVFbGVtZW50KCkgPSBkZWZhdWx0OworICAgIH5TdHJ1Y3R1cmVFbGVtZW50KCkgPSBkZWZh
dWx0OwogCiAgICAgU3RydWN0dXJlRWxlbWVudChjb25zdCBTdHJ1Y3R1cmVFbGVtZW50JikgPSBk
ZWxldGU7CiAgICAgU3RydWN0dXJlRWxlbWVudChTdHJ1Y3R1cmVFbGVtZW50JiYpID0gZGVmYXVs
dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3
aXRjaENhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xTd2l0Y2hDYXNlLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaENhc2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsMjMgKzQwLDIxIEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFj
ZSBBU1QgewogCi1jbGFzcyBTd2l0Y2hDYXNlIDogcHVibGljIFN0YXRlbWVudCB7CitjbGFzcyBT
d2l0Y2hDYXNlIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU3dpdGNoQ2FzZShDb2RlTG9jYXRpb24gbG9jYXRpb24s
IE9wdGlvbmFsPENvbnN0YW50RXhwcmVzc2lvbj4mJiB2YWx1ZSwgQmxvY2smJiBibG9jaykKLSAg
ICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24pCisgICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9u
LCBLaW5kOjpTd2l0Y2hDYXNlKQogICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkpCiAg
ICAgICAgICwgbV9ibG9jayhXVEZNb3ZlKGJsb2NrKSkKICAgICB7CiAgICAgfQogCi0gICAgdmly
dHVhbCB+U3dpdGNoQ2FzZSgpID0gZGVmYXVsdDsKKyAgICB+U3dpdGNoQ2FzZSgpID0gZGVmYXVs
dDsKIAogICAgIFN3aXRjaENhc2UoY29uc3QgU3dpdGNoQ2FzZSYpID0gZGVsZXRlOwogICAgIFN3
aXRjaENhc2UoU3dpdGNoQ2FzZSYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzU3dpdGNoQ2Fz
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIE9wdGlvbmFsPENvbnN0
YW50RXhwcmVzc2lvbj4mIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgIEJsb2NrJiBi
bG9jaygpIHsgcmV0dXJuIG1fYmxvY2s7IH0KIApAQCAtNzEsNiArNjksOCBAQCBwcml2YXRlOgog
CiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShTd2l0Y2hDYXNlKQorCiBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChTd2l0Y2hDYXNlLCBpc1N3aXRjaENhc2UoKSkKIAog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTd2l0Y2hTdGF0ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaAkocmV2aXNpb24gMjQ4NDA0
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNo
U3RhdGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDIzICszOSwyMSBAQCBuYW1lc3BhY2Ug
V0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgU3dpdGNoU3RhdGVtZW50IDogcHVi
bGljIFN0YXRlbWVudCB7CitjbGFzcyBTd2l0Y2hTdGF0ZW1lbnQgZmluYWwgOiBwdWJsaWMgU3Rh
dGVtZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTd2l0
Y2hTdGF0ZW1lbnQoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4m
JiB2YWx1ZSwgVmVjdG9yPFN3aXRjaENhc2U+JiYgc3dpdGNoQ2FzZXMpCi0gICAgICAgIDogU3Rh
dGVtZW50KGxvY2F0aW9uKQorICAgICAgICA6IFN0YXRlbWVudChsb2NhdGlvbiwgS2luZDo6U3dp
dGNoKQogICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkpCiAgICAgICAgICwgbV9zd2l0
Y2hDYXNlcyhXVEZNb3ZlKHN3aXRjaENhc2VzKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVh
bCB+U3dpdGNoU3RhdGVtZW50KCkgPSBkZWZhdWx0OworICAgIH5Td2l0Y2hTdGF0ZW1lbnQoKSA9
IGRlZmF1bHQ7CiAKICAgICBTd2l0Y2hTdGF0ZW1lbnQoY29uc3QgU3dpdGNoU3RhdGVtZW50Jikg
PSBkZWxldGU7CiAgICAgU3dpdGNoU3RhdGVtZW50KFN3aXRjaFN0YXRlbWVudCYmKSA9IGRlZmF1
bHQ7CiAKLSAgICBib29sIGlzU3dpdGNoU3RhdGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQotCiAgICAgRXhwcmVzc2lvbiYgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9
CiAgICAgVmVjdG9yPFN3aXRjaENhc2U+JiBzd2l0Y2hDYXNlcygpIHsgcmV0dXJuIG1fc3dpdGNo
Q2FzZXM7IH0KIApAQCAtNzAsNiArNjgsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZB
VUxUX0RFTEVURShTd2l0Y2hTdGF0ZW1lbnQpCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hM
U0xfU1RBVEVNRU5UKFN3aXRjaFN0YXRlbWVudCwgaXNTd2l0Y2hTdGF0ZW1lbnQoKSkKIAogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xU
ZXJuYXJ5RXhwcmVzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmgJKHJldmlzaW9uIDI0ODQw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFRlcm5h
cnlFeHByZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDI0ICszNywyMiBAQCBuYW1lc3Bh
Y2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgVGVybmFyeUV4cHJlc3Npb24g
OiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBUZXJuYXJ5RXhwcmVzc2lvbiBmaW5hbCA6IHB1
YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBUZXJuYXJ5RXhwcmVzc2lvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIFVuaXF1ZVJlZjxF
eHByZXNzaW9uPiYmIHByZWRpY2F0ZSwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgYm9keUV4cHJl
c3Npb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGVsc2VFeHByZXNzaW9uKQotICAgICAgICA6
IEV4cHJlc3Npb24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2lu
ZDo6VGVybmFyeSkKICAgICAgICAgLCBtX3ByZWRpY2F0ZShXVEZNb3ZlKHByZWRpY2F0ZSkpCiAg
ICAgICAgICwgbV9ib2R5RXhwcmVzc2lvbihXVEZNb3ZlKGJvZHlFeHByZXNzaW9uKSkKICAgICAg
ICAgLCBtX2Vsc2VFeHByZXNzaW9uKFdURk1vdmUoZWxzZUV4cHJlc3Npb24pKQogICAgIHsKICAg
ICB9CiAKLSAgICB2aXJ0dWFsIH5UZXJuYXJ5RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKyAgICB+
VGVybmFyeUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CiAKICAgICBUZXJuYXJ5RXhwcmVzc2lvbihj
b25zdCBUZXJuYXJ5RXhwcmVzc2lvbiYpID0gZGVsZXRlOwogICAgIFRlcm5hcnlFeHByZXNzaW9u
KFRlcm5hcnlFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgaXNUZXJuYXJ5RXhw
cmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIEV4cHJlc3Np
b24mIHByZWRpY2F0ZSgpIHsgcmV0dXJuIG1fcHJlZGljYXRlOyB9CiAgICAgRXhwcmVzc2lvbiYg
Ym9keUV4cHJlc3Npb24oKSB7IHJldHVybiBtX2JvZHlFeHByZXNzaW9uOyB9CiAgICAgRXhwcmVz
c2lvbiYgZWxzZUV4cHJlc3Npb24oKSB7IHJldHVybiBtX2Vsc2VFeHByZXNzaW9uOyB9CkBAIC03
MSw2ICs2OSw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRfREVMRVRFKFRlcm5h
cnlFeHByZXNzaW9uKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04o
VGVybmFyeUV4cHJlc3Npb24sIGlzVGVybmFyeUV4cHJlc3Npb24oKSkKIAogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xUeXBlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwOCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXSExTTFR5cGUu
aCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEFTVC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1Qgewor
Cit2b2lkIFR5cGU6OmRlc3Ryb3koVHlwZSYgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUua2lu
ZCgpKSB7CisgICAgY2FzZSBLaW5kOjpUeXBlUmVmZXJlbmNlOgorICAgICAgICBkZWxldGUgJmRv
d25jYXN0PFR5cGVSZWZlcmVuY2U+KHR5cGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtp
bmQ6OlBvaW50ZXI6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8UG9pbnRlclR5cGU+KHR5cGUp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtpbmQ6OkFycmF5UmVmZXJlbmNlOgorICAgICAg
ICBkZWxldGUgJmRvd25jYXN0PEFycmF5UmVmZXJlbmNlVHlwZT4odHlwZSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgS2luZDo6QXJyYXk6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8QXJy
YXlUeXBlPih0eXBlKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEtpbmQ6OlR5cGVEZWZp
bml0aW9uOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PFR5cGVEZWZpbml0aW9uPih0eXBlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpTdHJ1Y3R1cmVEZWZpbml0aW9uOgorICAg
ICAgICBkZWxldGUgJmRvd25jYXN0PFN0cnVjdHVyZURlZmluaXRpb24+KHR5cGUpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEtpbmQ6OkVudW1lcmF0aW9uRGVmaW5pdGlvbjoKKyAgICAgICAg
ZGVsZXRlICZkb3duY2FzdDxFbnVtZXJhdGlvbkRlZmluaXRpb24+KHR5cGUpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEtpbmQ6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjoKKyAgICAgICAgZGVs
ZXRlICZkb3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHR5cGUpOworICAgICAgICBicmVh
azsKKworICAgIGNhc2UgS2luZDo6RmxvYXRMaXRlcmFsOgorICAgICAgICBkZWxldGUgJmRvd25j
YXN0PEZsb2F0TGl0ZXJhbFR5cGU+KHR5cGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEtp
bmQ6OkludGVnZXJMaXRlcmFsOgorICAgICAgICBkZWxldGUgJmRvd25jYXN0PEludGVnZXJMaXRl
cmFsVHlwZT4odHlwZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6TnVsbExpdGVy
YWw6CisgICAgICAgIGRlbGV0ZSAmZG93bmNhc3Q8TnVsbExpdGVyYWxUeXBlPih0eXBlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOgorICAg
ICAgICBkZWxldGUgJmRvd25jYXN0PFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlPih0eXBlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lkIFR5cGU6OmRlc3RydWN0KFR5cGUmIHR5
cGUpCit7CisgICAgc3dpdGNoICh0eXBlLmtpbmQoKSkgeworICAgIGNhc2UgS2luZDo6VHlwZVJl
ZmVyZW5jZToKKyAgICAgICAgZG93bmNhc3Q8VHlwZVJlZmVyZW5jZT4odHlwZSkuflR5cGVSZWZl
cmVuY2UoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpQb2ludGVyOgorICAgICAg
ICBkb3duY2FzdDxQb2ludGVyVHlwZT4odHlwZSkuflBvaW50ZXJUeXBlKCk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgS2luZDo6QXJyYXlSZWZlcmVuY2U6CisgICAgICAgIGRvd25jYXN0PEFy
cmF5UmVmZXJlbmNlVHlwZT4odHlwZSkufkFycmF5UmVmZXJlbmNlVHlwZSgpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEtpbmQ6OkFycmF5OgorICAgICAgICBkb3duY2FzdDxBcnJheVR5cGU+
KHR5cGUpLn5BcnJheVR5cGUoKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEtpbmQ6OlR5
cGVEZWZpbml0aW9uOgorICAgICAgICBkb3duY2FzdDxUeXBlRGVmaW5pdGlvbj4odHlwZSkuflR5
cGVEZWZpbml0aW9uKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2luZDo6U3RydWN0dXJl
RGVmaW5pdGlvbjoKKyAgICAgICAgZG93bmNhc3Q8U3RydWN0dXJlRGVmaW5pdGlvbj4odHlwZSku
flN0cnVjdHVyZURlZmluaXRpb24oKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaW5kOjpF
bnVtZXJhdGlvbkRlZmluaXRpb246CisgICAgICAgIGRvd25jYXN0PEVudW1lcmF0aW9uRGVmaW5p
dGlvbj4odHlwZSkufkVudW1lcmF0aW9uRGVmaW5pdGlvbigpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEtpbmQ6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjoKKyAgICAgICAgZG93bmNhc3Q8TmF0
aXZlVHlwZURlY2xhcmF0aW9uPih0eXBlKS5+TmF0aXZlVHlwZURlY2xhcmF0aW9uKCk7CisgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBLaW5kOjpGbG9hdExpdGVyYWw6CisgICAgICAgIGRvd25j
YXN0PEZsb2F0TGl0ZXJhbFR5cGU+KHR5cGUpLn5GbG9hdExpdGVyYWxUeXBlKCk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgS2luZDo6SW50ZWdlckxpdGVyYWw6CisgICAgICAgIGRvd25jYXN0
PEludGVnZXJMaXRlcmFsVHlwZT4odHlwZSkufkludGVnZXJMaXRlcmFsVHlwZSgpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEtpbmQ6Ok51bGxMaXRlcmFsOgorICAgICAgICBkb3duY2FzdDxO
dWxsTGl0ZXJhbFR5cGU+KHR5cGUpLn5OdWxsTGl0ZXJhbFR5cGUoKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOgorICAgICAgICBkb3duY2Fz
dDxVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZT4odHlwZSkuflVuc2lnbmVkSW50ZWdlckxpdGVy
YWxUeXBlKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworVHlwZSYgVHlwZTo6dW5pZnlO
b2RlKCkKK3sKKyAgICBzd2l0Y2ggKGtpbmQoKSkgeworICAgIGNhc2UgS2luZDo6VHlwZVJlZmVy
ZW5jZToKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KCp0aGlzKS51bmlm
eU5vZGVJbXBsKCk7CisgICAgY2FzZSBLaW5kOjpQb2ludGVyOgorICAgICAgICByZXR1cm4gZG93
bmNhc3Q8UG9pbnRlclR5cGU+KCp0aGlzKS51bmlmeU5vZGVJbXBsKCk7CisgICAgY2FzZSBLaW5k
OjpBcnJheVJlZmVyZW5jZToKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFycmF5UmVmZXJlbmNl
VHlwZT4oKnRoaXMpLnVuaWZ5Tm9kZUltcGwoKTsKKyAgICBjYXNlIEtpbmQ6OkFycmF5OgorICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8QXJyYXlUeXBlPigqdGhpcykudW5pZnlOb2RlSW1wbCgpOwor
CisgICAgY2FzZSBLaW5kOjpUeXBlRGVmaW5pdGlvbjoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0
PFR5cGVEZWZpbml0aW9uPigqdGhpcykudW5pZnlOb2RlSW1wbCgpOworICAgIGNhc2UgS2luZDo6
U3RydWN0dXJlRGVmaW5pdGlvbjoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFN0cnVjdHVyZURl
ZmluaXRpb24+KCp0aGlzKS51bmlmeU5vZGVJbXBsKCk7CisgICAgY2FzZSBLaW5kOjpFbnVtZXJh
dGlvbkRlZmluaXRpb246CisgICAgICAgIHJldHVybiBkb3duY2FzdDxFbnVtZXJhdGlvbkRlZmlu
aXRpb24+KCp0aGlzKS51bmlmeU5vZGVJbXBsKCk7CisgICAgY2FzZSBLaW5kOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb246CisgICAgICAgIHJldHVybiBkb3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRp
b24+KCp0aGlzKS51bmlmeU5vZGVJbXBsKCk7CisKKyAgICBkZWZhdWx0OiAKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK2Jvb2wgUmVzb2x2YWJsZVR5
cGU6OmNhblJlc29sdmUoY29uc3QgVHlwZSYgdHlwZSkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKGtp
bmQoKSkgeworICAgIGNhc2UgS2luZDo6RmxvYXRMaXRlcmFsOgorICAgICAgICByZXR1cm4gZG93
bmNhc3Q8RmxvYXRMaXRlcmFsVHlwZT4oKnRoaXMpLmNhblJlc29sdmUodHlwZSk7CisgICAgY2Fz
ZSBLaW5kOjpJbnRlZ2VyTGl0ZXJhbDoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEludGVnZXJM
aXRlcmFsVHlwZT4oKnRoaXMpLmNhblJlc29sdmUodHlwZSk7CisgICAgY2FzZSBLaW5kOjpOdWxs
TGl0ZXJhbDoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PE51bGxMaXRlcmFsVHlwZT4oKnRoaXMp
LmNhblJlc29sdmUodHlwZSk7CisgICAgY2FzZSBLaW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFs
OgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU+KCp0
aGlzKS5jYW5SZXNvbHZlKHR5cGUpOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCit1bnNpZ25lZCBSZXNvbHZhYmxlVHlwZTo6
Y29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmIHR5cGUpIGNvbnN0Cit7CisgICAgc3dp
dGNoIChraW5kKCkpIHsKKyAgICBjYXNlIEtpbmQ6OkZsb2F0TGl0ZXJhbDoKKyAgICAgICAgcmV0
dXJuIGRvd25jYXN0PEZsb2F0TGl0ZXJhbFR5cGU+KCp0aGlzKS5jb252ZXJzaW9uQ29zdCh0eXBl
KTsKKyAgICBjYXNlIEtpbmQ6OkludGVnZXJMaXRlcmFsOgorICAgICAgICByZXR1cm4gZG93bmNh
c3Q8SW50ZWdlckxpdGVyYWxUeXBlPigqdGhpcykuY29udmVyc2lvbkNvc3QodHlwZSk7CisgICAg
Y2FzZSBLaW5kOjpOdWxsTGl0ZXJhbDoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PE51bGxMaXRl
cmFsVHlwZT4oKnRoaXMpLmNvbnZlcnNpb25Db3N0KHR5cGUpOworICAgIGNhc2UgS2luZDo6VW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbDoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFVuc2lnbmVkSW50
ZWdlckxpdGVyYWxUeXBlPigqdGhpcykuY29udmVyc2lvbkNvc3QodHlwZSk7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK1N0
cmluZyBVbm5hbWVkVHlwZTo6dG9TdHJpbmcoKSBjb25zdAoreworICAgIHN3aXRjaCAoa2luZCgp
KSB7CisgICAgY2FzZSBLaW5kOjpUeXBlUmVmZXJlbmNlOgorICAgICAgICByZXR1cm4gZG93bmNh
c3Q8VHlwZVJlZmVyZW5jZT4oKnRoaXMpLnRvU3RyaW5nKCk7CisgICAgY2FzZSBLaW5kOjpQb2lu
dGVyOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8UG9pbnRlclR5cGU+KCp0aGlzKS50b1N0cmlu
ZygpOworICAgIGNhc2UgS2luZDo6QXJyYXlSZWZlcmVuY2U6CisgICAgICAgIHJldHVybiBkb3du
Y2FzdDxBcnJheVJlZmVyZW5jZVR5cGU+KCp0aGlzKS50b1N0cmluZygpOworICAgIGNhc2UgS2lu
ZDo6QXJyYXk6CisgICAgICAgIHJldHVybiBkb3duY2FzdDxBcnJheVR5cGU+KCp0aGlzKS50b1N0
cmluZygpOworICAgIGRlZmF1bHQ6IAorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIH0KKworfQorCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfSAvLyBuYW1lc3BhY2Ug
V0hMU0wKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlLmgJKHJl
dmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5B
QkxFKFdFQkdQVSkKIAorI2luY2x1ZGUgIldITFNMRGVmYXVsdERlbGV0ZS5oIgogI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogCkBAIC0zOCwx
MCArMzksMzQgQEAgbmFtZXNwYWNlIEFTVCB7CiAKIGNsYXNzIFR5cGUgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFR5cGUoKSA9IGRlZmF1bHQ7CiAKLSAgICB2
aXJ0dWFsIH5UeXBlKCkgPSBkZWZhdWx0OworcHJvdGVjdGVkOgorICAgIH5UeXBlKCkgPSBkZWZh
dWx0OworCitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBLaW5kIDogdWludDhfdCB7CisgICAgICAg
IC8vIFVubmFtZWRUeXBlcworICAgICAgICBUeXBlUmVmZXJlbmNlLAorICAgICAgICBQb2ludGVy
LAorICAgICAgICBBcnJheVJlZmVyZW5jZSwKKyAgICAgICAgQXJyYXksCisgICAgICAgIC8vIE5h
bWVkVHlwZXMKKyAgICAgICAgVHlwZURlZmluaXRpb24sCisgICAgICAgIFN0cnVjdHVyZURlZmlu
aXRpb24sCisgICAgICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbiwKKyAgICAgICAgTmF0aXZlVHlw
ZURlY2xhcmF0aW9uLAorICAgICAgICAvLyBSZXNvbHZhYmxlVHlwZXMKKyAgICAgICAgRmxvYXRM
aXRlcmFsLAorICAgICAgICBJbnRlZ2VyTGl0ZXJhbCwKKyAgICAgICAgTnVsbExpdGVyYWwsCisg
ICAgICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwsCisgICAgfTsKKworICAgIFR5cGUoS2luZCBr
aW5kKQorICAgICAgICA6IG1fa2luZChraW5kKQorICAgIHsgfQorICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koVHlwZSYpOworICAgIHN0YXRpYyB2b2lkIGRlc3RydWN0KFR5cGUmKTsKIAogICAgIGV4
cGxpY2l0IFR5cGUoY29uc3QgVHlwZSYpID0gZGVsZXRlOwogICAgIFR5cGUoVHlwZSYmKSA9IGRl
ZmF1bHQ7CkBAIC00OSwxMSArNzQsMzYgQEAgcHVibGljOgogICAgIFR5cGUmIG9wZXJhdG9yPShj
b25zdCBUeXBlJikgPSBkZWxldGU7CiAgICAgVHlwZSYgb3BlcmF0b3I9KFR5cGUmJikgPSBkZWZh
dWx0OwogCi0gICAgdmlydHVhbCBib29sIGlzTmFtZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNVbm5hbWVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzUmVzb2x2YWJsZVR5cGUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQorCisg
ICAgYm9vbCBpc1VubmFtZWRUeXBlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID49IEtpbmQ6OlR5
cGVSZWZlcmVuY2UgJiYga2luZCgpIDw9IEtpbmQ6OkFycmF5OyB9CisgICAgYm9vbCBpc05hbWVk
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA+PSBLaW5kOjpUeXBlRGVmaW5pdGlvbiAmJiBr
aW5kKCkgPD0gS2luZDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOyB9CisgICAgYm9vbCBpc1Jlc29s
dmFibGVUeXBlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID49IEtpbmQ6OkZsb2F0TGl0ZXJhbCAm
JiBraW5kKCkgPD0gS2luZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDsgfQorCisgICAgYm9vbCBp
c1R5cGVSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6VHlwZVJlZmVy
ZW5jZTsgfQorICAgIGJvb2wgaXNQb2ludGVyVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9
PSBLaW5kOjpQb2ludGVyOyB9CisgICAgYm9vbCBpc0FycmF5UmVmZXJlbmNlVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpBcnJheVJlZmVyZW5jZTsgfQorICAgIGJvb2wgaXNB
cnJheVR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6QXJyYXk7IH0KKyAgICBi
b29sIGlzUmVmZXJlbmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGlzUG9pbnRlclR5cGUoKSB8fCBp
c0FycmF5UmVmZXJlbmNlVHlwZSgpOyB9CisKKyAgICBib29sIGlzVHlwZURlZmluaXRpb24oKSBj
b25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6VHlwZURlZmluaXRpb247IH0KKyAgICBib29s
IGlzU3RydWN0dXJlRGVmaW5pdGlvbigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpT
dHJ1Y3R1cmVEZWZpbml0aW9uOyB9CisgICAgYm9vbCBpc0VudW1lcmF0aW9uRGVmaW5pdGlvbigp
IGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBLaW5kOjpFbnVtZXJhdGlvbkRlZmluaXRpb247IH0K
KyAgICBib29sIGlzTmF0aXZlVHlwZURlY2xhcmF0aW9uKCkgY29uc3QgeyByZXR1cm4ga2luZCgp
ID09IEtpbmQ6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsgfQorCisgICAgYm9vbCBpc0Zsb2F0TGl0
ZXJhbFR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6RmxvYXRMaXRlcmFsOyB9
CisgICAgYm9vbCBpc0ludGVnZXJMaXRlcmFsVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9
PSBLaW5kOjpJbnRlZ2VyTGl0ZXJhbDsgfQorICAgIGJvb2wgaXNOdWxsTGl0ZXJhbFR5cGUoKSBj
b25zdCB7IHJldHVybiBraW5kKCkgPT0gS2luZDo6TnVsbExpdGVyYWw7IH0KKyAgICBib29sIGlz
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gS2lu
ZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDsgfQorCisgICAgVHlwZSYgdW5pZnlOb2RlKCk7Cisg
ICAgY29uc3QgVHlwZSYgdW5pZnlOb2RlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBj
b25zdF9jYXN0PFR5cGUqPih0aGlzKS0+dW5pZnlOb2RlKCk7CisgICAgfQogCiBwcml2YXRlOgor
ICAgIEtpbmQgbV9raW5kOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVNUCkBAIC02Miw2ICsxMTIs
OCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShUeXBlKQorCiAjZGVm
aW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQRShUb1ZhbHVlVHlwZU5hbWUsIHBy
ZWRpY2F0ZSkgXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExTTDo6
QVNUOjpUb1ZhbHVlVHlwZU5hbWUpIFwKICAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6VHlwZSYgdHlwZSkgeyByZXR1cm4gdHlwZS5wcmVkaWNhdGU7IH0g
XApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlw
ZURlZmluaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xUeXBlRGVmaW5pdGlvbi5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlRGVmaW5pdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwzNSArNDAsMjkgQEAgbmFtZXNwYWNlIFdITFNMIHsK
IAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIFR5cGVEZWZpbml0aW9uIDogcHVibGljIE5hbWVk
VHlwZSB7CitjbGFzcyBUeXBlRGVmaW5pdGlvbiBmaW5hbCA6IHB1YmxpYyBOYW1lZFR5cGUgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFR5cGVEZWZpbml0aW9u
KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgU3RyaW5nJiYgbmFtZSwgUmVmPFVubmFtZWRUeXBlPiB0
eXBlKQotICAgICAgICA6IE5hbWVkVHlwZShsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSkKKyAgICAg
ICAgOiBOYW1lZFR5cGUoS2luZDo6VHlwZURlZmluaXRpb24sIGxvY2F0aW9uLCBXVEZNb3ZlKG5h
bWUpKQogICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQogICAgIHsKICAgICB9CiAKLSAg
ICB2aXJ0dWFsIH5UeXBlRGVmaW5pdGlvbigpID0gZGVmYXVsdDsKKyAgICB+VHlwZURlZmluaXRp
b24oKSA9IGRlZmF1bHQ7CiAKICAgICBUeXBlRGVmaW5pdGlvbihjb25zdCBUeXBlRGVmaW5pdGlv
biYpID0gZGVsZXRlOwogICAgIFR5cGVEZWZpbml0aW9uKFR5cGVEZWZpbml0aW9uJiYpID0gZGVm
YXVsdDsKIAotICAgIGJvb2wgaXNUeXBlRGVmaW5pdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KLQogICAgIFVubmFtZWRUeXBlJiB0eXBlKCkgeyByZXR1cm4gbV90eXBlOyB9
CiAKLSAgICBjb25zdCBUeXBlJiB1bmlmeU5vZGUoKSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fdHlwZS0+dW5pZnlOb2RlKCk7Ci0gICAgfQotCi0gICAgVHlwZSYgdW5p
ZnlOb2RlKCkgb3ZlcnJpZGUKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFR5cGU7CisgICAg
VHlwZSYgdW5pZnlOb2RlSW1wbCgpCiAgICAgewogICAgICAgICByZXR1cm4gbV90eXBlLT51bmlm
eU5vZGUoKTsKICAgICB9CiAKLXByaXZhdGU6CiAgICAgUmVmPFVubmFtZWRUeXBlPiBtX3R5cGU7
CiB9OwogCkBAIC03OCw2ICs3Miw4IEBAIHByaXZhdGU6CiAKIH0KIAorREVGSU5FX0RFRkFVTFRf
REVMRVRFKFR5cGVEZWZpbml0aW9uKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX05B
TUVEX1RZUEUoVHlwZURlZmluaXRpb24sIGlzVHlwZURlZmluaXRpb24oKSkKIAogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVm
ZXJlbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMVHlwZVJlZmVyZW5jZS5oCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKiBuZXcgVHlwZVJlZmVyZW5jZShsb2NhdGlvbiwgV1RGTW92ZShuYW1lKSwgV1RGTW92
ZSh0eXBlQXJndW1lbnRzKSkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgflR5cGVSZWZlcmVuY2Uo
KSA9IGRlZmF1bHQ7CisgICAgflR5cGVSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CiAKICAgICBzdGF0
aWMgUmVmPFR5cGVSZWZlcmVuY2U+IHdyYXAoQ29kZUxvY2F0aW9uLCBOYW1lZFR5cGUmIHJlc29s
dmVkVHlwZSk7CiAKQEAgLTcyLDE4ICs3Miw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICpt
X3Jlc29sdmVkVHlwZTsKICAgICB9CiAKLSAgICBjb25zdCBUeXBlJiB1bmlmeU5vZGUoKSBjb25z
dCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcmVzb2x2ZWRUeXBlKTsKLSAgICAg
ICAgcmV0dXJuIG1fcmVzb2x2ZWRUeXBlLT51bmlmeU5vZGUoKTsKLSAgICB9Ci0KLSAgICBUeXBl
JiB1bmlmeU5vZGUoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcmVzb2x2ZWRU
eXBlKTsKLSAgICAgICAgcmV0dXJuIG1fcmVzb2x2ZWRUeXBlLT51bmlmeU5vZGUoKTsKLSAgICB9
Ci0KICAgICB2b2lkIHNldFJlc29sdmVkVHlwZShOYW1lZFR5cGUmIHJlc29sdmVkVHlwZSkKICAg
ICB7CiAgICAgICAgIG1fcmVzb2x2ZWRUeXBlID0gJnJlc29sdmVkVHlwZTsKQEAgLTEwMywxMyAr
OTEsMjAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gJnVuaWZ5Tm9kZSgpID09ICZvdGhlci51
bmlmeU5vZGUoKTsKICAgICB9CiAKLSAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCBvdmVycmlk
ZQorICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQobV9y
ZXNvbHZlZFR5cGUpOwogICAgICAgICByZXR1cm4gbV9yZXNvbHZlZFR5cGUtPm5hbWUoKTsKICAg
ICB9CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFR5cGU7CisgICAgVHlwZSYgdW5pZnlO
b2RlSW1wbCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9yZXNvbHZlZFR5cGUpOworICAgICAg
ICByZXR1cm4gbV9yZXNvbHZlZFR5cGUtPnVuaWZ5Tm9kZSgpOworICAgIH0KKwogICAgIFN0cmlu
ZyBtX25hbWU7CiAgICAgVHlwZUFyZ3VtZW50cyBtX3R5cGVBcmd1bWVudHM7CiAgICAgTmFtZWRU
eXBlKiBtX3Jlc29sdmVkVHlwZSB7IG51bGxwdHIgfTsKQEAgLTEyMSw2ICsxMTYsOCBAQCBwcml2
YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShUeXBlUmVmZXJlbmNlKQorCiBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1VOTkFNRURfVFlQRShUeXBlUmVmZXJlbmNlLCBpc1R5
cGVSZWZlcmVuY2UoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuY3BwCShy
ZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xVbm5hbWVkVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDMyICs0MSwzNiBA
QCBuYW1lc3BhY2UgQVNUIHsKIAogdW5zaWduZWQgVW5uYW1lZFR5cGU6Omhhc2goKSBjb25zdAog
ewotICAgIHN3aXRjaCAobV9raW5kKSB7CisgICAgc3dpdGNoIChraW5kKCkpIHsKICAgICBjYXNl
IEtpbmQ6OlR5cGVSZWZlcmVuY2U6CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxUeXBlUmVmZXJl
bmNlPigqdGhpcykuaGFzaCgpOwotICAgIGNhc2UgS2luZDo6UG9pbnRlclR5cGU6CisgICAgY2Fz
ZSBLaW5kOjpQb2ludGVyOgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8UG9pbnRlclR5cGU+KCp0
aGlzKS5oYXNoKCk7Ci0gICAgY2FzZSBLaW5kOjpBcnJheVJlZmVyZW5jZVR5cGU6CisgICAgY2Fz
ZSBLaW5kOjpBcnJheVJlZmVyZW5jZToKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFycmF5UmVm
ZXJlbmNlVHlwZT4oKnRoaXMpLmhhc2goKTsKLSAgICBjYXNlIEtpbmQ6OkFycmF5VHlwZToKKyAg
ICBjYXNlIEtpbmQ6OkFycmF5OgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8QXJyYXlUeXBlPigq
dGhpcykuaGFzaCgpOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfQogfQogCiBib29sIFVubmFtZWRUeXBlOjpvcGVyYXRvcj09KGNvbnN0
IFVubmFtZWRUeXBlJiBvdGhlcikgY29uc3QKIHsKLSAgICBpZiAob3RoZXIubV9raW5kICE9IG1f
a2luZCkKKyAgICBpZiAob3RoZXIua2luZCgpICE9IGtpbmQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgc3dpdGNoIChtX2tpbmQpIHsKKyAgICBzd2l0Y2ggKGtpbmQoKSkgewogICAg
IGNhc2UgS2luZDo6VHlwZVJlZmVyZW5jZToKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFR5cGVS
ZWZlcmVuY2U+KCp0aGlzKSA9PSBkb3duY2FzdDxUeXBlUmVmZXJlbmNlPihvdGhlcik7Ci0gICAg
Y2FzZSBLaW5kOjpQb2ludGVyVHlwZToKKyAgICBjYXNlIEtpbmQ6OlBvaW50ZXI6CiAgICAgICAg
IHJldHVybiBkb3duY2FzdDxQb2ludGVyVHlwZT4oKnRoaXMpID09IGRvd25jYXN0PFBvaW50ZXJU
eXBlPihvdGhlcik7Ci0gICAgY2FzZSBLaW5kOjpBcnJheVJlZmVyZW5jZVR5cGU6CisgICAgY2Fz
ZSBLaW5kOjpBcnJheVJlZmVyZW5jZToKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFycmF5UmVm
ZXJlbmNlVHlwZT4oKnRoaXMpID09IGRvd25jYXN0PEFycmF5UmVmZXJlbmNlVHlwZT4ob3RoZXIp
OwotICAgIGNhc2UgS2luZDo6QXJyYXlUeXBlOgorICAgIGNhc2UgS2luZDo6QXJyYXk6CiAgICAg
ICAgIHJldHVybiBkb3duY2FzdDxBcnJheVR5cGU+KCp0aGlzKSA9PSBkb3duY2FzdDxBcnJheVR5
cGU+KG90aGVyKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZS5oCShyZXZpc2lvbiAy
NDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xV
bm5hbWVkVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw0MyArNDUsMjMgQEAgY2xhc3MgVW5u
YW1lZFR5cGUgOiBwdWJsaWMgVHlwZSwgcHVibGljIAogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVubmFtZWRUeXBlKTsKIHB1YmxpYzoKLSAg
ICBlbnVtIGNsYXNzIEtpbmQgewotICAgICAgICBUeXBlUmVmZXJlbmNlLAotICAgICAgICBQb2lu
dGVyVHlwZSwKLSAgICAgICAgQXJyYXlSZWZlcmVuY2VUeXBlLAotICAgICAgICBBcnJheVR5cGUK
LSAgICB9OwotCiAgICAgVW5uYW1lZFR5cGUoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBLaW5kIGtp
bmQpCi0gICAgICAgIDogbV9jb2RlTG9jYXRpb24obG9jYXRpb24pCi0gICAgICAgICwgbV9raW5k
KGtpbmQpCisgICAgICAgIDogVHlwZShraW5kKQorICAgICAgICAsIG1fY29kZUxvY2F0aW9uKGxv
Y2F0aW9uKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5Vbm5hbWVkVHlwZSgpID0gZGVm
YXVsdDsKLQotICAgIGJvb2wgaXNVbm5hbWVkVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KLQotICAgIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQotICAg
IGJvb2wgaXNUeXBlUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4gbV9raW5kID09IEtpbmQ6OlR5
cGVSZWZlcmVuY2U7IH0KLSAgICBib29sIGlzUG9pbnRlclR5cGUoKSBjb25zdCB7IHJldHVybiBt
X2tpbmQgPT0gS2luZDo6UG9pbnRlclR5cGU7IH0KLSAgICBib29sIGlzQXJyYXlSZWZlcmVuY2VU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9raW5kID09IEtpbmQ6OkFycmF5UmVmZXJlbmNlVHlwZTsg
fQotICAgIGJvb2wgaXNBcnJheVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2tpbmQgPT0gS2luZDo6
QXJyYXlUeXBlOyB9Ci0gICAgYm9vbCBpc1JlZmVyZW5jZVR5cGUoKSBjb25zdCB7IHJldHVybiBp
c1BvaW50ZXJUeXBlKCkgfHwgaXNBcnJheVJlZmVyZW5jZVR5cGUoKTsgfQotCi0gICAgdmlydHVh
bCBjb25zdCBUeXBlJiB1bmlmeU5vZGUoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQotICAgIHZp
cnR1YWwgVHlwZSYgdW5pZnlOb2RlKCkgeyByZXR1cm4gKnRoaXM7IH0KLQogICAgIHVuc2lnbmVk
IGhhc2goKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVW5uYW1lZFR5cGUmKSBj
b25zdDsKIAotICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgPSAwOworICAgIFN0
cmluZyB0b1N0cmluZygpIGNvbnN0OwogCi0gICAgY29uc3QgQ29kZUxvY2F0aW9uJiBjb2RlTG9j
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvZGVMb2NhdGlvbjsgfQorICAgIENvZGVMb2NhdGlv
biBjb2RlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvZGVMb2NhdGlvbjsgfQogCiBwcml2
YXRlOgorICAgIGZyaWVuZCBjbGFzcyBUeXBlOworICAgIFR5cGUmIHVuaWZ5Tm9kZUltcGwoKSB7
IHJldHVybiAqdGhpczsgfQogICAgIENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKLSAgICBL
aW5kIG1fa2luZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFTVApAQCAtOTAsNiArNzAsOCBAQCBw
cml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShVbm5hbWVkVHlwZSkKKwogI2Rl
ZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1VOTkFNRURfVFlQRShUb1ZhbHVlVHlw
ZU5hbWUsIHByZWRpY2F0ZSkgXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3Jl
OjpXSExTTDo6QVNUOjpUb1ZhbHVlVHlwZU5hbWUpIFwKICAgICBzdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5
cGUucHJlZGljYXRlOyB9IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJM
aXRlcmFsLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaAkod29ya2luZyBjb3B5
KQpAQCAtMzcsMTcgKzM3LDE3IEBAIG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1Qg
ewogCi1jbGFzcyBVbnNpZ25lZEludGVnZXJMaXRlcmFsIDogcHVibGljIEV4cHJlc3Npb24gewor
Y2xhc3MgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBVbnNpZ25lZEludGVn
ZXJMaXRlcmFsKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgdW5zaWduZWQgdmFsdWUpCi0gICAgICAg
IDogRXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBL
aW5kOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsKQogICAgICAgICAsIG1fdHlwZShsb2NhdGlvbiwg
dmFsdWUpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAgfQogCi0gICAgdmly
dHVhbCB+VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpID0gZGVmYXVsdDsKKyAgICB+VW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbCgpID0gZGVmYXVsdDsKIAogICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwo
Y29uc3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYpID0gZGVsZXRlOwogICAgIFVuc2lnbmVkSW50
ZWdlckxpdGVyYWwoVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CkBAIC01OCw4
ICs1OCw2IEBAIHB1YmxpYzoKICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYgdHlwZSgp
IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIHVuc2lnbmVkIHZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV92YWx1ZTsgfQogCi0gICAgYm9vbCBpc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWwoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsIGNs
b25lKCkgY29uc3QKICAgICB7CiAgICAgICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwgcmVzdWx0
KGNvZGVMb2NhdGlvbigpLCBtX3ZhbHVlKTsKQEAgLTgzLDYgKzgxLDggQEAgcHJpdmF0ZToKIAog
fQogCitERUZJTkVfREVGQVVMVF9ERUxFVEUoVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkKKwogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFVuc2lnbmVkSW50ZWdlckxpdGVy
YWwsIGlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpKQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVy
YWxUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5jcHAJKHJldmlzaW9uIDI0
ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVu
c2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTcgKzQx
LDEyIEBAIG5hbWVzcGFjZSBXSExTTCB7CiBuYW1lc3BhY2UgQVNUIHsKIAogVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGU6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKENvZGVMb2NhdGlvbiBs
b2NhdGlvbiwgdW5zaWduZWQgdmFsdWUpCi0gICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIDogUmVz
b2x2YWJsZVR5cGUoS2luZDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkKKyAgICAsIG1fdmFsdWUo
dmFsdWUpCiAgICAgLCBtX3ByZWZlcnJlZFR5cGUoVHlwZVJlZmVyZW5jZTo6Y3JlYXRlKGxvY2F0
aW9uLCAidWludCJfc3RyLCBUeXBlQXJndW1lbnRzKCkpKQogewogfQogCi1VbnNpZ25lZEludGVn
ZXJMaXRlcmFsVHlwZTo6flVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKCkgPSBkZWZhdWx0Owot
Ci1VbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZTo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUo
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwotCi1VbnNpZ25lZEludGVn
ZXJMaXRlcmFsVHlwZSYgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU6Om9wZXJhdG9yPShVbnNp
Z25lZEludGVnZXJMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7Ci0KIGJvb2wgVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGU6OmNhblJlc29sdmUoY29uc3QgVHlwZSYgdHlwZSkgY29uc3QKIHsKICAg
ICBpZiAoIWlzPE5hbWVkVHlwZT4odHlwZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVu
c2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmgJKHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVy
YWxUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDI3ICs0MCwyNSBAQCBuYW1lc3BhY2UgQVNU
IHsKIAogY2xhc3MgVHlwZVJlZmVyZW5jZTsKIAotY2xhc3MgVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bFR5cGUgOiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUgeworY2xhc3MgVW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbFR5cGUgZmluYWwgOiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKENv
ZGVMb2NhdGlvbiwgdW5zaWduZWQgdmFsdWUpOwogCi0gICAgdmlydHVhbCB+VW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGUoKTsKKyAgICB+VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoKSA9IGRl
ZmF1bHQ7CiAKICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZShjb25zdCBVbnNpZ25lZElu
dGVnZXJMaXRlcmFsVHlwZSYpID0gZGVsZXRlOwotICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxU
eXBlKFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiYpOworICAgIFVuc2lnbmVkSW50ZWdlckxp
dGVyYWxUeXBlKFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKIAogICAg
IFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiBvcGVyYXRvcj0oY29uc3QgVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKLSAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlw
ZSYgb3BlcmF0b3I9KFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiYpOwotCi0gICAgYm9vbCBp
c1Vuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiBvcGVyYXRvcj0oVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OwogCiAgICAgdW5zaWduZWQgdmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKICAgICBUeXBlUmVmZXJlbmNlJiBwcmVmZXJyZWRU
eXBlKCkgeyByZXR1cm4gbV9wcmVmZXJyZWRUeXBlOyB9CiAKLSAgICBib29sIGNhblJlc29sdmUo
Y29uc3QgVHlwZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHVuc2lnbmVkIGNvbnZlcnNpb25Db3N0
KGNvbnN0IFVubmFtZWRUeXBlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5SZXNvbHZl
KGNvbnN0IFR5cGUmKSBjb25zdDsKKyAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChjb25zdCBV
bm5hbWVkVHlwZSYpIGNvbnN0OwogCiAgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUgY2xv
bmUoKSBjb25zdDsKIApAQCAtNzcsNiArNzUsOCBAQCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9E
RUZBVUxUX0RFTEVURShVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSkKKwogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19XSExTTF9SRVNPTFZBQkxFX1RZUEUoVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5
cGUsIGlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoKSkKIAogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0
aW9uc1N0YXRlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgJKHJldmlz
aW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDIyICszOSwyMCBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xh
c3MgVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQgOiBwdWJsaWMgU3RhdGVtZW50IHsKK2Ns
YXNzIFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50IGZpbmFsIDogcHVibGljIFN0YXRlbWVu
dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVmFyaWFibGVE
ZWNsYXJhdGlvbnNTdGF0ZW1lbnQoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBWYXJpYWJsZURlY2xh
cmF0aW9ucyYmIHZhcmlhYmxlRGVjbGFyYXRpb25zKQotICAgICAgICA6IFN0YXRlbWVudChsb2Nh
dGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OlZhcmlhYmxlRGVjbGFy
YXRpb25zKQogICAgICAgICAsIG1fdmFyaWFibGVEZWNsYXJhdGlvbnMoV1RGTW92ZSh2YXJpYWJs
ZURlY2xhcmF0aW9ucykpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgflZhcmlhYmxlRGVj
bGFyYXRpb25zU3RhdGVtZW50KCkgPSBkZWZhdWx0OworICAgIH5WYXJpYWJsZURlY2xhcmF0aW9u
c1N0YXRlbWVudCgpID0gZGVmYXVsdDsKIAogICAgIFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVt
ZW50KGNvbnN0IFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50JikgPSBkZWxldGU7CiAgICAg
VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1l
bnQmJikgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc1ZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVt
ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgVmVjdG9yPFVuaXF1
ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9uPj4mIHZhcmlhYmxlRGVjbGFyYXRpb25zKCkgeyByZXR1
cm4gbV92YXJpYWJsZURlY2xhcmF0aW9uczsgfQogCiBwcml2YXRlOgpAQCAtNjcsNiArNjUsOCBA
QCBwcml2YXRlOgogCiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShWYXJpYWJsZURlY2xhcmF0
aW9uc1N0YXRlbWVudCkKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQo
VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQsIGlzVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0
ZW1lbnQoKSkKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlUmVmZXJlbmNlLmgJ
KHJldmlzaW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFZhcmlhYmxlUmVmZXJlbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE2ICsz
OCwxNiBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotY2xhc3MgVmFy
aWFibGVSZWZlcmVuY2UgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitjbGFzcyBWYXJpYWJsZVJlZmVy
ZW5jZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBWYXJpYWJsZVJlZmVyZW5jZShDb2RlTG9jYXRpb24gbG9jYXRp
b24sIFN0cmluZyYmIG5hbWUpCi0gICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbikKKyAgICAg
ICAgOiBFeHByZXNzaW9uKGxvY2F0aW9uLCBLaW5kOjpWYXJpYWJsZVJlZmVyZW5jZSkKICAgICAg
ICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+
VmFyaWFibGVSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CisgICAgflZhcmlhYmxlUmVmZXJlbmNlKCkg
PSBkZWZhdWx0OwogCiAgICAgVmFyaWFibGVSZWZlcmVuY2UoY29uc3QgVmFyaWFibGVSZWZlcmVu
Y2UmKSA9IGRlbGV0ZTsKICAgICBWYXJpYWJsZVJlZmVyZW5jZShWYXJpYWJsZVJlZmVyZW5jZSYm
KSA9IGRlZmF1bHQ7CkBAIC02MCw4ICs2MCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAKLSAgICBib29sIGlzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBTdHJpbmcmIG5hbWUoKSB7IHJldHVybiBtX25h
bWU7IH0KIAogICAgIFZhcmlhYmxlRGVjbGFyYXRpb24qIHZhcmlhYmxlKCkgeyByZXR1cm4gbV92
YXJpYWJsZTsgfQpAQCAtNzMsNyArNzEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgVmFy
aWFibGVSZWZlcmVuY2UoQ29kZUxvY2F0aW9uIGxvY2F0aW9uKQotICAgICAgICA6IEV4cHJlc3Np
b24obG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbihsb2NhdGlvbiwgS2luZDo6VmFyaWFi
bGVSZWZlcmVuY2UpCiAgICAgewogICAgIH0KIApAQCAtODcsNiArODUsOCBAQCBwcml2YXRlOgog
CiB9CiAKK0RFRklORV9ERUZBVUxUX0RFTEVURShWYXJpYWJsZVJlZmVyZW5jZSkKKwogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFZhcmlhYmxlUmVmZXJlbmNlLCBpc1Zh
cmlhYmxlUmVmZXJlbmNlKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmgJKHJldmlz
aW9uIDI0ODQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFdoaWxlTG9vcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyMyArMzgsMjEgQEAgbmFtZXNw
YWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKLWNsYXNzIFdoaWxlTG9vcCA6IHB1Ymxp
YyBTdGF0ZW1lbnQgeworY2xhc3MgV2hpbGVMb29wIGZpbmFsIDogcHVibGljIFN0YXRlbWVudCB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2hpbGVMb29wKENv
ZGVMb2NhdGlvbiBsb2NhdGlvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgY29uZGl0aW9uYWws
IFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+JiYgYm9keSkKLSAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRp
b24pCisgICAgICAgIDogU3RhdGVtZW50KGxvY2F0aW9uLCBLaW5kOjpXaGlsZUxvb3ApCiAgICAg
ICAgICwgbV9jb25kaXRpb25hbChXVEZNb3ZlKGNvbmRpdGlvbmFsKSkKICAgICAgICAgLCBtX2Jv
ZHkoV1RGTW92ZShib2R5KSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+V2hpbGVMb29w
KCkgPSBkZWZhdWx0OworICAgIH5XaGlsZUxvb3AoKSA9IGRlZmF1bHQ7CiAKICAgICBXaGlsZUxv
b3AoY29uc3QgV2hpbGVMb29wJikgPSBkZWxldGU7CiAgICAgV2hpbGVMb29wKFdoaWxlTG9vcCYm
KSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzV2hpbGVMb29wKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQotCiAgICAgRXhwcmVzc2lvbiYgY29uZGl0aW9uYWwoKSB7IHJldHVybiBt
X2NvbmRpdGlvbmFsOyB9CiAgICAgU3RhdGVtZW50JiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9
CiAKQEAgLTY5LDYgKzY3LDggQEAgcHJpdmF0ZToKIAogfQogCitERUZJTkVfREVGQVVMVF9ERUxF
VEUoV2hpbGVMb29wKQorCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChX
aGlsZUxvb3AsIGlzV2hpbGVMb29wKCkpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5h
bWVyLmNwcAkocmV2aXNpb24gMjQ4NDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw5
ICs3Miw5IEBAIHB1YmxpYzoKICAgICAKICAgICBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kIGtpbmQo
KSB7IHJldHVybiBtX2tpbmQ7IH0KICAgICBib29sIGlzUmVmZXJlbmNlVHlwZU5hbWVOb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9raW5kID09IEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlR5cGVSZWZl
cmVuY2U7IH0KLSAgICBib29sIGlzUG9pbnRlclR5cGVOYW1lTm9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fa2luZCA9PSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQb2ludGVyVHlwZTsgfQotICAgIGJv
b2wgaXNBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCA9
PSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVyZW5jZVR5cGU7IH0KLSAgICBib29s
IGlzQXJyYXlUeXBlTmFtZU5vZGUoKSBjb25zdCB7IHJldHVybiBtX2tpbmQgPT0gQVNUOjpVbm5h
bWVkVHlwZTo6S2luZDo6QXJyYXlUeXBlOyB9CisgICAgYm9vbCBpc1BvaW50ZXJUeXBlTmFtZU5v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2tpbmQgPT0gQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9p
bnRlcjsgfQorICAgIGJvb2wgaXNBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fa2luZCA9PSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVyZW5jZTsg
fQorICAgIGJvb2wgaXNBcnJheVR5cGVOYW1lTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCA9
PSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheTsgfQogCiAgICAgQmFzZVR5cGVOYW1lTm9k
ZSogcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KICAgICBNYW5nbGVkVHlwZU5hbWUgbWFu
Z2xlZE5hbWUoKSBjb25zdCB7IHJldHVybiBtX21hbmdsZWROYW1lOyB9CkBAIC04OSw3ICs4OSw3
IEBAIGNsYXNzIEFycmF5VHlwZU5hbWVOb2RlIGZpbmFsIDogcHVibGljIEIKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBBcnJheVR5cGVOYW1lTm9kZShCYXNlVHlw
ZU5hbWVOb2RlKiBwYXJlbnQsIE1hbmdsZWRUeXBlTmFtZSYmIG1hbmdsZWROYW1lLCB1bnNpZ25l
ZCBudW1FbGVtZW50cykKLSAgICAgICAgOiBCYXNlVHlwZU5hbWVOb2RlKHBhcmVudCwgV1RGTW92
ZShtYW5nbGVkTmFtZSksIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5VHlwZSkKKyAgICAg
ICAgOiBCYXNlVHlwZU5hbWVOb2RlKHBhcmVudCwgV1RGTW92ZShtYW5nbGVkTmFtZSksIEFTVDo6
VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5KQogICAgICAgICAsIG1fbnVtRWxlbWVudHMobnVtRWxl
bWVudHMpCiAgICAgewogICAgIH0KQEAgLTEwNCw3ICsxMDQsNyBAQCBjbGFzcyBBcnJheVJlZmVy
ZW5jZVR5cGVOYW1lTm9kZSBmaW5hbCA6CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgQXJyYXlSZWZlcmVuY2VUeXBlTmFtZU5vZGUoQmFzZVR5cGVOYW1lTm9kZSog
cGFyZW50LCBNYW5nbGVkVHlwZU5hbWUmJiBtYW5nbGVkTmFtZSwgQVNUOjpBZGRyZXNzU3BhY2Ug
YWRkcmVzc1NwYWNlKQotICAgICAgICA6IEJhc2VUeXBlTmFtZU5vZGUocGFyZW50LCBXVEZNb3Zl
KG1hbmdsZWROYW1lKSwgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2VUeXBl
KQorICAgICAgICA6IEJhc2VUeXBlTmFtZU5vZGUocGFyZW50LCBXVEZNb3ZlKG1hbmdsZWROYW1l
KSwgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2UpCiAgICAgICAgICwgbV9h
ZGRyZXNzU3BhY2UoYWRkcmVzc1NwYWNlKQogICAgIHsKICAgICB9CkBAIC0xMTksNyArMTE5LDcg
QEAgY2xhc3MgUG9pbnRlclR5cGVOYW1lTm9kZSBmaW5hbCA6IHB1YmxpYwogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFBvaW50ZXJUeXBlTmFtZU5vZGUoQmFzZVR5
cGVOYW1lTm9kZSogcGFyZW50LCBNYW5nbGVkVHlwZU5hbWUmJiBtYW5nbGVkTmFtZSwgQVNUOjpB
ZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlKQotICAgICAgICA6IEJhc2VUeXBlTmFtZU5vZGUocGFy
ZW50LCBXVEZNb3ZlKG1hbmdsZWROYW1lKSwgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRl
clR5cGUpCisgICAgICAgIDogQmFzZVR5cGVOYW1lTm9kZShwYXJlbnQsIFdURk1vdmUobWFuZ2xl
ZE5hbWUpLCBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQb2ludGVyKQogICAgICAgICAsIG1fYWRk
cmVzc1NwYWNlKGFkZHJlc3NTcGFjZSkKICAgICB7CiAgICAgfQpAQCAtMjc0LDE4ICsyNzQsMjAg
QEAgc3RkOjp1bmlxdWVfcHRyPEJhc2VUeXBlTmFtZU5vZGU+IFR5cGVOYQogICAgICAgICBhdXRv
JiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8QVNUOjpUeXBlUmVmZXJlbmNlPih1bm5hbWVkVHlw
ZSk7CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlZmVyZW5jZVR5cGVOYW1lTm9k
ZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCB0eXBlUmVmZXJlbmNlLnJlc29sdmVk
VHlwZSgpKTsKICAgICB9Ci0gICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQb2ludGVy
VHlwZTogeworICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlcjogewogICAg
ICAgICBhdXRvJiBwb2ludGVyVHlwZSA9IGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KHVubmFt
ZWRUeXBlKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9pbnRlclR5cGVOYW1l
Tm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBwb2ludGVyVHlwZS5hZGRyZXNz
U3BhY2UoKSk7CiAgICAgfQotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlS
ZWZlcmVuY2VUeXBlOiB7CisgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVJl
ZmVyZW5jZTogewogICAgICAgICBhdXRvJiBhcnJheVJlZmVyZW5jZVR5cGUgPSBkb3duY2FzdDxB
U1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpOwogICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0
ZU5leHRUeXBlTmFtZSgpLCBhcnJheVJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkpOwogICAg
IH0KLSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5VHlwZTogeworICAgIGNh
c2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXk6IHsKICAgICAgICAgYXV0byYgYXJyYXlU
eXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRUeXBlKTsKICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXJyYXlUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVO
ZXh0VHlwZU5hbWUoKSwgYXJyYXlUeXBlLm51bUVsZW1lbnRzKCkpOwogICAgIH0KKyAgICBkZWZh
dWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIH0KIApA
QCAtMjk0LDEyICsyOTYsMTQgQEAgc3RhdGljIEFTVDo6VW5uYW1lZFR5cGUqIHBhcmVudChBU1Q6
OlVubgogICAgIHN3aXRjaCAodW5uYW1lZFR5cGUua2luZCgpKSB7CiAgICAgY2FzZSBBU1Q6OlVu
bmFtZWRUeXBlOjpLaW5kOjpUeXBlUmVmZXJlbmNlOgogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlBvaW50ZXJUeXBlOgorICAgIGNhc2Ug
QVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlcjoKICAgICAgICAgcmV0dXJuICZkb3duY2Fz
dDxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVHlwZSkuZWxlbWVudFR5cGUoKTsKLSAgICBjYXNl
IEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5UmVmZXJlbmNlVHlwZToKKyAgICBjYXNlIEFT
VDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5UmVmZXJlbmNlOgogICAgICAgICByZXR1cm4gJmRv
d25jYXN0PEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSkuZWxlbWVudFR5cGUo
KTsKLSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5VHlwZToKKyAgICBjYXNl
IEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5OgogICAgICAgICByZXR1cm4gJmRvd25jYXN0
PEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSkudHlwZSgpOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogfQogCkBAIC0zNjEsMTMg
KzM2NSwxMyBAQCB2b2lkIFR5cGVOYW1lcjo6ZW1pdFVubmFtZWRUeXBlRGVmaW5pdGlvCiAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInR5cGVkZWYgIiwgbWFuZ2xlZE5hbWVG
b3JUeXBlKG5hbWVkVHlwZSksICcgJywgYmFzZVR5cGVOYW1lTm9kZS5tYW5nbGVkTmFtZSgpLCAi
O1xuIik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6
OktpbmQ6OlBvaW50ZXJUeXBlOiB7CisgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQ
b2ludGVyOiB7CiAgICAgICAgIGF1dG8mIHBvaW50ZXJUeXBlID0gZG93bmNhc3Q8UG9pbnRlclR5
cGVOYW1lTm9kZT4oYmFzZVR5cGVOYW1lTm9kZSk7CiAgICAgICAgIEFTU0VSVChiYXNlVHlwZU5h
bWVOb2RlLnBhcmVudCgpKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgi
dHlwZWRlZiAiLCB0b1N0cmluZyhwb2ludGVyVHlwZS5hZGRyZXNzU3BhY2UoKSksICcgJywgcG9p
bnRlclR5cGUucGFyZW50KCktPm1hbmdsZWROYW1lKCksICIqICIsIHBvaW50ZXJUeXBlLm1hbmds
ZWROYW1lKCksICI7XG4iKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgQVNUOjpV
bm5hbWVkVHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2VUeXBlOiB7CisgICAgY2FzZSBBU1Q6OlVu
bmFtZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVyZW5jZTogewogICAgICAgICBhdXRvJiBhcnJheVJl
ZmVyZW5jZVR5cGUgPSBkb3duY2FzdDxBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZT4oYmFzZVR5
cGVOYW1lTm9kZSk7CiAgICAgICAgIEFTU0VSVChiYXNlVHlwZU5hbWVOb2RlLnBhcmVudCgpKTsK
ICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKQEAgLTM3OCwxMiArMzgyLDE0
IEBAIHZvaWQgVHlwZU5hbWVyOjplbWl0VW5uYW1lZFR5cGVEZWZpbml0aW8KICAgICAgICAgKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6
QXJyYXlUeXBlOiB7CisgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheTogewog
ICAgICAgICBhdXRvJiBhcnJheVR5cGUgPSBkb3duY2FzdDxBcnJheVR5cGVOYW1lTm9kZT4oYmFz
ZVR5cGVOYW1lTm9kZSk7CiAgICAgICAgIEFTU0VSVChiYXNlVHlwZU5hbWVOb2RlLnBhcmVudCgp
KTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgidHlwZWRlZiBhcnJheTwi
LCBhcnJheVR5cGUucGFyZW50KCktPm1hbmdsZWROYW1lKCksICIsICIsIGFycmF5VHlwZS5udW1F
bGVtZW50cygpLCAiPiAiLCBhcnJheVR5cGUubWFuZ2xlZE5hbWUoKSwgIjtcbiIpOwogICAgICAg
ICBicmVhazsKICAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICB9CiAKICAgICBlbWl0dGVkVW5uYW1lZFR5cGVzLmFkZCgmYmFzZVR5
cGVOYW1lTm9kZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIyMzEs
NyArMjIzMSw2IEBACiAJCTdDODEzOUE4MUVENjI4NzQwMENFMjZFOCAvKiBKU0RPTU9wZXJhdGlv
blJldHVybmluZ1Byb21pc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDODEzOUE1MUVENjI4MUQwMENFMjZFOCAvKiBKU0RPTU9wZXJhdGlvblJldHVy
bmluZ1Byb21pc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3QzgxMzlBQTFFRDY2MDRCMDBDRTI2RTggLyogSlNET01DYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0M4MTM5QTkxRUQ2MkRGMjAwQ0UyNkU4IC8qIEpTRE9NQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Qzgz
REU4NjFEMDRDQzVEMDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzgzREU4NTFEMDRDQkQ0MDBGRUJDRjMgLyog
U3ByaW5nU29sdmVyLmggKi87IH07Ci0JCTdDODVCMjAyMjJGQjA0ODUwMDMwNjg0RiAvKiBXSExT
TFVubmFtZWRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDODVCMjAxMjJGQjA0ODUwMDMwNjg0RiAvKiBXSExTTFVubmFtZWRUeXBlLmNwcCAq
LzsgfTsKIAkJN0M4RTM0QUQxRTRBMzNBRjAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEFueS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4RTM0OTIxRTRB
MzM4RTAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEFueS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDOEUzNEFFMUU0QTMzQUYwMDU0Q0UyMyAvKiBK
U0RPTUNvbnZlcnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzhFMzQ5MzFFNEEzMzhFMDA1NENFMjMgLyogSlNET01Db252ZXJ0QmFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDOEUzNEFG
MUU0QTMzQUYwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRCb29sZWFuLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzhFMzQ5NDFFNEEzMzhFMDA1NENFMjMg
LyogSlNET01Db252ZXJ0Qm9vbGVhbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC04MzE1LDYgKzgzMTQsNyBAQAogCQk1MjEzMUU1QTFDNEYxNTYx
MDAzM0Y4MDIgLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjE1ODYyQzIyOTM3N0I3MDA1OTI1RUYg
LyogV0hMU0xBU1QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xBU1QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTIyQkFCOTYyMkU2QTM2MjAwQzU0Q0U5IC8qIFdITFNMQ29kZUxvY2F0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ29kZUxvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUyMkQwN0EzMjJGQkFCNDMwMEI5MDVCRSAvKiBXSExTTEV4cHJlc3Np
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xFeHByZXNzaW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTIyREEzRDMyMjlFMUQzOTAwNDJEMTUxIC8qIFdITFNMR2xv
YmFsVmFyaWFibGVSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xHbG9iYWxWYXJpYWJs
ZVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjJFMUExNzIyOTdE
NkQ0MDBFNUQzNkEgLyogV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyMkUxQTE5MjI5N0Q2RDQwMEU1RDM2QSAvKiBXSExTTFBy
ZXNlcnZlVmFyaWFibGVMaWZldGltZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQcmVzZXJ2ZVZh
cmlhYmxlTGlmZXRpbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MzI3LDYg
KzgzMjcsNyBAQAogCQk1MkIwRDRCRDFDNTdGRDFFMDA3N0NFNTMgLyogUGxhdGZvcm1WaWV3Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtVmlldy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MkIwRDRCRjFDNTdGRDY2MDA3N0NFNTMgLyogVmlkZW9G
dWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTJCMEQ0QzExQzU3RkY5MTAwNzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJDQjExREIy
MkZEREIyRTAwOUYwQTY0IC8qIFdITFNMRGVmYXVsdERlbGV0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTERlZmF1bHREZWxldGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJENUEx
OEQxQzU0NTkwMzAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5M
YXllck1hbmFnZXJPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkQ1QTE4
RTFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFn
ZXJPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRDVBMUE0MUM1NzQ4ODkw
MERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTcwODAsNiArMTcwODEsNyBAQAogCQkJCUMyMUJGNzA2MjFDRDg5QzcwMDIyNzk3
OSAvKiBXSExTTENvbW1hRXhwcmVzc2lvbi5oICovLAogCQkJCUMyMUJGNzMzMjFDRDg5RjAwMDIy
Nzk3OSAvKiBXSExTTENvbnN0YW50RXhwcmVzc2lvbi5oICovLAogCQkJCUMyMUJGNkY1MjFDRDg5
QjUwMDIyNzk3OSAvKiBXSExTTENvbnRpbnVlLmggKi8sCisJCQkJNTJDQjExREIyMkZEREIyRTAw
OUYwQTY0IC8qIFdITFNMRGVmYXVsdERlbGV0ZS5oICovLAogCQkJCUMyMUJGNzAxMjFDRDg5QzQw
MDIyNzk3OSAvKiBXSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oICovLAogCQkJCUMyMUJGNzE4
MjFDRDg5RDcwMDIyNzk3OSAvKiBXSExTTERvdEV4cHJlc3Npb24uaCAqLywKIAkJCQlDMjFCRjZG
QjIxQ0Q4OUJFMDAyMjc5NzkgLyogV0hMU0xEb1doaWxlTG9vcC5oICovLApAQCAtMTcwODksNiAr
MTcwOTEsNyBAQAogCQkJCUMyMUJGNzI2MjFDRDg5RTMwMDIyNzk3OSAvKiBXSExTTEVudW1lcmF0
aW9uTWVtYmVyLmggKi8sCiAJCQkJQzIxQkY3MDIyMUNEODlDNDAwMjI3OTc5IC8qIFdITFNMRW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsLmggKi8sCiAJCQkJQzIxQkY3MEMyMUNEODlDQzAwMjI3OTc5
IC8qIFdITFNMRXhwcmVzc2lvbi5oICovLAorCQkJCTUyMkQwN0EzMjJGQkFCNDMwMEI5MDVCRSAv
KiBXSExTTEV4cHJlc3Npb24uY3BwICovLAogCQkJCUMyMUJGNzAwMjFDRDg5QzIwMDIyNzk3OSAv
KiBXSExTTEZhbGx0aHJvdWdoLmggKi8sCiAJCQkJQzIxQkY3MzUyMUNEODlGMjAwMjI3OTc5IC8q
IFdITFNMRmxvYXRMaXRlcmFsLmggKi8sCiAJCQkJMUNCNjlCMzgyMURGMDNFMTAwNkU4NDZBIC8q
IFdITFNMRmxvYXRMaXRlcmFsVHlwZS5jcHAgKi8sCkBAIC0zMzUyNCw3ICszMzUyNyw2IEBACiAJ
CQkJRjEyMTcxRjUxNkE4Q0VEMjAwMDA1M0NBIC8qIFdlYlZUVEVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUQyMUE4MDIxM0VDRTVERjAwQkI3MDY0IC8qIFdlYlZUVFBhcnNlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMTBCNjk4MTE0MEMxNzQwMDBCQzFDMjYgLyogV2ViVlRUVG9r
ZW5pemVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDODVCMjAyMjJGQjA0ODUwMDMwNjg0RiAv
KiBXSExTTFVubmFtZWRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDgzMkMyMTg3RjY1
QzcwMERBNjNBNiAvKiBXS1V0aWxpdGllcy5jIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M3Q0Mw
QTJDRjA3NDAwRDU3NjY0IC8qIFhMaW5rTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgz
M0M4MEMwQTJDRjI1NjAwRDU3NjY0IC8qIFhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICovLApJbmRl
eDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCShyZXZpc2lv
biAyNDg0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgV1RGOjpSZWZDb3VudGVkPFdvcmtlclNjcmlwdExvYWRlcj47CisgICAg
ZnJpZW5kIHN0cnVjdCBzdGQ6OmRlZmF1bHRfZGVsZXRlPFdvcmtlclNjcmlwdExvYWRlcj47CiAK
ICAgICBXb3JrZXJTY3JpcHRMb2FkZXIoKTsKICAgICB+V29ya2VyU2NyaXB0TG9hZGVyKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>