<?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>175836</bug_id>
          
          <creation_ts>2017-08-22 11:12:36 -0700</creation_ts>
          <short_desc>[JSC API] We should support the symbol type in our C/Obj-C API</short_desc>
          <delta_ts>2018-07-26 02:33:06 -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>New Bugs</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>
          
          <blocked>184034</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>fujii</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mitz</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1341141</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-08-22 11:12:36 -0700</bug_when>
    <thetext>[JSC API] We should support the symbol type in our C API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341142</commentid>
    <comment_count>1</comment_count>
      <attachid>318773</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-08-22 11:13:14 -0700</bug_when>
    <thetext>Created attachment 318773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341145</commentid>
    <comment_count>2</comment_count>
      <attachid>318773</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-08-22 11:14:32 -0700</bug_when>
    <thetext>Comment on attachment 318773
Patch

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

&gt; Source/JavaScriptCore/API/JSValueRef.h:54
&gt; +    kJSTypeSymbol CF_ENUM_AVAILABLE(10_13, 11_0)

This is a temporary number since it&apos;s probably won&apos;t make it into these releases.

&gt; Source/JavaScriptCore/API/JSValueRef.h:161
&gt; +JS_EXPORT bool JSValueIsSymbol(JSContextRef ctx, JSValueRef value) CF_AVAILABLE(10_13, 11_0);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341147</commentid>
    <comment_count>3</comment_count>
      <attachid>318773</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-08-22 11:14:55 -0700</bug_when>
    <thetext>Comment on attachment 318773
Patch

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

&gt;&gt; Source/JavaScriptCore/API/JSValueRef.h:54
&gt;&gt; +    kJSTypeSymbol CF_ENUM_AVAILABLE(10_13, 11_0)
&gt; 
&gt; This is a temporary number since it&apos;s probably won&apos;t make it into these releases.

it&apos;s =&gt; this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341148</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-22 11:15:27 -0700</bug_when>
    <thetext>Attachment 318773 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSValueRef.h:54:  CF_ENUM_AVAILABLE is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:161:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 4 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>1341153</commentid>
    <comment_count>5</comment_count>
      <attachid>318773</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-08-22 11:17:01 -0700</bug_when>
    <thetext>Comment on attachment 318773
Patch

Needs API review and an ObjC equivalent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341866</commentid>
    <comment_count>6</comment_count>
      <attachid>318939</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-08-23 16:39:21 -0700</bug_when>
    <thetext>Created attachment 318939
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341867</commentid>
    <comment_count>7</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-23 16:42:05 -0700</bug_when>
    <thetext>Attachment 318939 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSObjectRef.h:565:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:578:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:602:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:615:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:615:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:615:  The parameter name &quot;attributes&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:54:  CF_ENUM_AVAILABLE is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:161:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 10 in 9 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>1341871</commentid>
    <comment_count>8</comment_count>
      <attachid>318939</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-08-23 16:50:38 -0700</bug_when>
    <thetext>Comment on attachment 318939
Patch

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

&gt; Source/JavaScriptCore/API/JSObjectRef.cpp:336
&gt; +bool JSObjectHasPropertyWithKey(JSContextRef ctx, JSObjectRef object, JSValueRef key, JSValueRef* exception)

We should probably not include this function because there is no language concept for a HasOwnProperty operation that takes a key. Instead, the language has an &apos;in&apos; operator and a hasOwnProperty built-in function, and both take string arguments.

Clients who want JSObjectHasPropertyWithKey can use JSObjectGetPropertyWithKey, or build a helper function on top of it.

&gt; Source/JavaScriptCore/API/JSValue.h:409
&gt; + @method
&gt; + @abstract Access a property of a JSValue.
&gt; + @result The JSValue for the requested property key or the JSValue &lt;code&gt;undefined&lt;/code&gt;
&gt; + if the property does not exist.
&gt; + */
&gt; +- (JSValue *)valueForPropertyWithKey:(JSValue *)key NS_AVAILABLE(10_13, 11_0);
&gt; +
&gt; +/*!
&gt; + @method
&gt; + @abstract Set a property key on a JSValue.
&gt; + */
&gt; +- (void)setValue:(id)value forPropertyWithKey:(JSValue *)key NS_AVAILABLE(10_13, 11_0);
&gt; +
&gt; +/*!
&gt; + @method
&gt; + @abstract Delete a property key from a JSValue.
&gt; + @result YES if deletion is successful, NO otherwise.
&gt; + */
&gt; +- (BOOL)deletePropertyWithKey:(JSValue *)key NS_AVAILABLE(10_13, 11_0);
&gt; +
&gt; +/*!
&gt; + @method
&gt; + @abstract Check if a JSValue has a property key.
&gt; + @discussion This method has the same function as the JavaScript operator &lt;code&gt;in&lt;/code&gt;.
&gt; + @result Returns YES if property key is present on the value.
&gt; + */
&gt; +- (BOOL)hasPropertyWithKey:(JSValue *)key NS_AVAILABLE(10_13, 11_0);
&gt; +
&gt; +/*!
&gt; + @method
&gt; + @abstract Define property keys with custom descriptors on JSValues.
&gt; + @discussion This method may be used to create a data or accessor property on an object.
&gt; + This method operates in accordance with the Object.defineProperty method in the
&gt; + JavaScript language.
&gt; + */
&gt; +- (void)definePropertyWithKey:(JSValue *)key descriptor:(id)descriptor NS_AVAILABLE(10_13, 11_0);
&gt; +
&gt; +/*!

I believe that these APIs duplicate the APIs listed under @interface JSValue (SubscriptSupport), but in a less powerful way.

Perhaps we should consider adding just a deletePropertyForKeyedSubscript: method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341924</commentid>
    <comment_count>9</comment_count>
      <attachid>318939</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-08-23 18:46:44 -0700</bug_when>
    <thetext>Comment on attachment 318939
Patch

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

&gt;&gt; Source/JavaScriptCore/API/JSObjectRef.cpp:336
&gt;&gt; +bool JSObjectHasPropertyWithKey(JSContextRef ctx, JSObjectRef object, JSValueRef key, JSValueRef* exception)
&gt; 
&gt; We should probably not include this function because there is no language concept for a HasOwnProperty operation that takes a key. Instead, the language has an &apos;in&apos; operator and a hasOwnProperty built-in function, and both take string arguments.
&gt; 
&gt; Clients who want JSObjectHasPropertyWithKey can use JSObjectGetPropertyWithKey, or build a helper function on top of it.

That&apos;s not true for example: 

Symbol.iterator in []
evaluates to true.

Object.hasOwnProperty(Symbol.iterator, [])
evaluates to false (Symbol.iterator is on Array.prototype).

{ toString() { return &quot;length&quot;; } } in []
evaluates to true.

Object.hasOwnProperty({ toString() { return &quot;length&quot;; } }, [])
evaluates to true.

&gt;&gt; Source/JavaScriptCore/API/JSValue.h:409
&gt;&gt; +/*!
&gt; 
&gt; I believe that these APIs duplicate the APIs listed under @interface JSValue (SubscriptSupport), but in a less powerful way.
&gt; 
&gt; Perhaps we should consider adding just a deletePropertyForKeyedSubscript: method.

I&apos;m not sure I really understand the implications of this. Could you explain what you mean further?

What does adding a deletePropertyForKeyedSubscript mean. How would you invoke it? How does it work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342226</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-08-24 16:17:46 -0700</bug_when>
    <thetext>I didn&apos;t notice at first that this patch was exclusively about ToPropertyKey.

Let me step back a minute and look at where we are in trunk.

JavaScript provides these operations for get/set/has/remove:

    {Get|Set|Has|Remove}ById
        Example: o.id
    {Get|Set|Has|Remove}ByValue
        Example: o[value]
    {Get|Set|Has|Remove}ByPropertyKey [ new in ES6 ]
        Example: Reflect.get([], Symbol.iterator)

The C API currently has:

    {Get|Set|Has|Remove}ById
        JSObjectGetProperty (et al)
    {Get|Set|Has|Remove}ByValue
        *** MISSING ***
    {Get|Set|Has|Remove}ByPropertyKey [ new in ES6 ]
        *** MISSING ***

The Objective-C API currently has:

    {Get|Set|Has|Remove}ById
        -valueForProperty: (et al)
    {Get|Set|Has|Remove}ByValue
        -objectForKeyedSubscript: (et al)
    {Get|Set|Has|Remove}ByPropertyKey [ new in ES6 ]
        *** MISSING ***

The ByPropertyKey variants are strictly more powerful than the ById variants. If we were designing this API from scratch we might not provide the ById variants.

Similarly, the ByValue variants are strictly more powerful than the ByPropertyKey variants. Since we *are* designing this part of the API from scratch, we can still decide not to provide the ByPropertyKey variants.

Now, some questions about your patch:

(1) Should we add ByValue to the C API? Why or why not?

(2) Should we expose an explicit ToPropertyKey operation? Why or why not?

(3) Should we provide ByPropertyKey in addition to ByValue? Why or why not?

My intuition is that we should just provide ByValue because it&apos;s the most powerful operation and ToPropertyKey is an internal implementation detail of it and other runtime APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342580</commentid>
    <comment_count>11</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-08-25 16:44:53 -0700</bug_when>
    <thetext>I&apos;m confused, there is no byPropertyKey operation, as far as I know. The toPropertyKey function is an implementation detail of how we convert a value into something we can use to lookup properties with. Reflect.get(value, property) is basically the same as value[property] it just doesn&apos;t toObject value, unless that&apos;s what you were going for. I&apos;m assuming that&apos;s not what you mean though since the byId versions of the functions we provide assume a JSObjectRef. The methods I provided are the same a looking up by value. Perhaps we should use that suffix rather than the WithKey suffix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344097</commentid>
    <comment_count>12</comment_count>
      <attachid>319508</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-08-31 13:12:59 -0700</bug_when>
    <thetext>Created attachment 319508
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344099</commentid>
    <comment_count>13</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-31 13:15:36 -0700</bug_when>
    <thetext>Attachment 319508 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSObjectRef.h:565:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:577:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;attributes&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:602:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:54:  CF_ENUM_AVAILABLE is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:161:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 8 in 9 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>1344436</commentid>
    <comment_count>14</comment_count>
      <attachid>319608</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-01 10:13:46 -0700</bug_when>
    <thetext>Created attachment 319608
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344439</commentid>
    <comment_count>15</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-01 10:16:15 -0700</bug_when>
    <thetext>Attachment 319608 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSObjectRef.h:565:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:577:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;attributes&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:602:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:54:  CF_ENUM_AVAILABLE is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:161:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 8 in 10 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>1344509</commentid>
    <comment_count>16</comment_count>
      <attachid>319608</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-01 11:54:57 -0700</bug_when>
    <thetext>Comment on attachment 319608
Patch

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

&gt; Source/JavaScriptCore/API/JSValue.h:318
&gt; +#if (defined(BUILDING_JAVASCRIPTCORE) &amp;&amp; BUILDING_JAVASCRIPTCORE) || (defined(TARGET_OS_MAC) &amp;&amp; TARGET_OS_MAC &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101300) || (defined(TARGET_OS_IPHONE) &amp;&amp; TARGET_OS_IPHONE &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 110000)

I&apos;m not sure if this is the right way to get around building internally on older OSs. We need this because if you are building JSC on Sierra/El Cap SDKs we will present the old signatures. 

The alternative to this is to keep the old implementations of these functions in JSValue.mm and not run the new tests on SDKs. I went with this version since it allows us to test our code even on non-High Sierra SDKs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344537</commentid>
    <comment_count>17</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-09-01 12:54:15 -0700</bug_when>
    <thetext>&gt; &gt; Source/JavaScriptCore/API/JSValue.h:318
&gt; &gt; +#if (defined(BUILDING_JAVASCRIPTCORE) &amp;&amp; BUILDING_JAVASCRIPTCORE) || (defined(TARGET_OS_MAC) &amp;&amp; TARGET_OS_MAC &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101300) || (defined(TARGET_OS_IPHONE) &amp;&amp; TARGET_OS_IPHONE &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 110000)

Let&apos;s try just suppressing the warning in the implementation file.

I also think it would be OK to #ifdef out id-specfic tests when building for older SDKs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344565</commentid>
    <comment_count>18</comment_count>
      <attachid>319642</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-01 13:49:10 -0700</bug_when>
    <thetext>Created attachment 319642
fixed to not have macro value in public header</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344676</commentid>
    <comment_count>19</comment_count>
      <attachid>319642</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-09-01 17:11:11 -0700</bug_when>
    <thetext>Comment on attachment 319642
fixed to not have macro value in public header

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

Next steps are fixing review comments, updating patch to trunk, API review, and notifying documentation about new API.

&gt; Source/JavaScriptCore/API/JSValue.h:158
&gt; ++ (JSValue *)valueWithNewSymbolFromDescription:(NSString *)description InContext:(JSContext *)context NS_AVAILABLE(10_13, 11_0);

Its &quot;inContext&quot;. (Capitalization is part of the method signature so it&apos;s API.)

&gt; Source/JavaScriptCore/API/JSValue.h:327
&gt; +#if (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101300) || (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &lt; 110000)
&gt; +
&gt; +// These declarations exist to ensure compatablity when targeting older OSs.
&gt; +- (JSValue *)valueForProperty:(NSString *)property;
&gt; +- (void)setValue:(id)value forProperty:(NSString *)property;
&gt; +- (BOOL)deleteProperty:(NSString *)property;
&gt; +- (BOOL)hasProperty:(NSString *)property;
&gt; +- (void)defineProperty:(NSString *)property descriptor:(id)descriptor;
&gt; +
&gt; +#else // (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101300) || (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &lt; 110000)

Can we move these to an out-of-the-way place?

To match your other comment, I would say &quot;These declarations provide compatibility when targeting SDKs for legacy OSs. In macOS 10.13 and iOS11 and below, &apos;property&apos; was an NSString *.

&gt; Source/JavaScriptCore/API/JSValue.h:334
&gt; +@discussion Before macOS 10.13 and iOS 11 &lt;code&gt;property&lt;/code&gt; was an NSString *, this was relaxed to id so JavaScript Symbol properties could be accessed.

I would say &quot;Corresponds to the JavaScript operation object[property]. Pass an NSString * to access a named property. Other valid properties include symbols, numbers, and stringifiable objects. In macOS 10.13 and iOS11 and below, &apos;property&apos; was an NSString *. &quot; (Same in other places.)

&gt; Source/JavaScriptCore/API/JSValue.mm:250
&gt; +#define USE_NSSTRING (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101300) || (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &lt; 110000)

Let&apos;s call this USE_NSSTRING_FOR_PROPERTY_KEY to avoid a name conflict from overly broad naming. We usually use &quot;USE(X)&quot; to mean that X is a project-wide feature. We do use NSString, so we need a more specific name.

&gt; Source/JavaScriptCore/API/tests/testapi.cpp:105
&gt; +//    {
&gt; +//        APIString description(&quot;dope&quot;);
&gt; +//        JSValueRef symbol = JSValueMakeSymbol(context, description);
&gt; +//        ScriptResult result = evaluateScript(&quot;typeof(this) == &apos;symbol&apos;&quot;, symbol);
&gt; +//    }

Wat.

&gt; Source/JavaScriptCore/API/tests/testapi.mm:575
&gt;          JSContext *context = [[JSContext alloc] init];

These tests need more beef.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346041</commentid>
    <comment_count>20</comment_count>
      <attachid>319642</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-06 12:18:51 -0700</bug_when>
    <thetext>Comment on attachment 319642
fixed to not have macro value in public header

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

&gt;&gt; Source/JavaScriptCore/API/JSValue.h:327
&gt;&gt; +#else // (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101300) || (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &lt; 110000)
&gt; 
&gt; Can we move these to an out-of-the-way place?
&gt; 
&gt; To match your other comment, I would say &quot;These declarations provide compatibility when targeting SDKs for legacy OSs. In macOS 10.13 and iOS11 and below, &apos;property&apos; was an NSString *.

I moved those to the bottom of the file.

&gt;&gt; Source/JavaScriptCore/API/JSValue.h:334
&gt;&gt; +@discussion Before macOS 10.13 and iOS 11 &lt;code&gt;property&lt;/code&gt; was an NSString *, this was relaxed to id so JavaScript Symbol properties could be accessed.
&gt; 
&gt; I would say &quot;Corresponds to the JavaScript operation object[property]. Pass an NSString * to access a named property. Other valid properties include symbols, numbers, and stringifiable objects. In macOS 10.13 and iOS11 and below, &apos;property&apos; was an NSString *. &quot; (Same in other places.)

Changed. I also updated the comment above the old declarations.

&gt;&gt; Source/JavaScriptCore/API/JSValue.mm:250
&gt;&gt; +#define USE_NSSTRING (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101300) || (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &lt; 110000)
&gt; 
&gt; Let&apos;s call this USE_NSSTRING_FOR_PROPERTY_KEY to avoid a name conflict from overly broad naming. We usually use &quot;USE(X)&quot; to mean that X is a project-wide feature. We do use NSString, so we need a more specific name.

Done.

&gt;&gt; Source/JavaScriptCore/API/tests/testapi.cpp:105
&gt;&gt; +//    }
&gt; 
&gt; Wat.

Yeah, I hadn&apos;t done testing yet. This patch was for API reviewing.

&gt;&gt; Source/JavaScriptCore/API/tests/testapi.mm:575
&gt;&gt;          JSContext *context = [[JSContext alloc] init];
&gt; 
&gt; These tests need more beef.

Indeed, that&apos;s done now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346069</commentid>
    <comment_count>21</comment_count>
      <attachid>320056</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-06 13:17:44 -0700</bug_when>
    <thetext>Created attachment 320056
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346073</commentid>
    <comment_count>22</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-06 13:20:41 -0700</bug_when>
    <thetext>Attachment 320056 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSObjectRef.h:565:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:577:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;attributes&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:602:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:54:  CF_ENUM_AVAILABLE is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:161:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 8 in 11 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>1346201</commentid>
    <comment_count>23</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-06 19:02:18 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #19)
&gt; Comment on attachment 319642 [details]
&gt; &gt; Source/JavaScriptCore/API/JSValue.h:327
&gt; &gt; +#if (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101300) || (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &lt; 110000)
&gt; &gt; +
&gt; &gt; +// These declarations exist to ensure compatablity when targeting older OSs.
&gt; &gt; +- (JSValue *)valueForProperty:(NSString *)property;
&gt; &gt; +- (void)setValue:(id)value forProperty:(NSString *)property;
&gt; &gt; +- (BOOL)deleteProperty:(NSString *)property;
&gt; &gt; +- (BOOL)hasProperty:(NSString *)property;
&gt; &gt; +- (void)defineProperty:(NSString *)property descriptor:(id)descriptor;
&gt; &gt; +
&gt; &gt; +#else // (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101300) || (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &lt; 110000)
&gt; 
&gt; Can we move these to an out-of-the-way place?
&gt; 

I&apos;m not actually sure where that should be. They need to be in the middle of the file somewhere since they are part of the interface and there is non-interface stuff at the bottom of the file. I put them below the newer API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346202</commentid>
    <comment_count>24</comment_count>
      <attachid>320091</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-06 19:05:44 -0700</bug_when>
    <thetext>Created attachment 320091
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346203</commentid>
    <comment_count>25</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-06 19:07:26 -0700</bug_when>
    <thetext>Attachment 320091 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSObjectRef.h:565:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:577:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;attributes&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:602:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:54:  CF_ENUM_AVAILABLE is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:161:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 8 in 11 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>1346387</commentid>
    <comment_count>26</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-09-07 10:28:58 -0700</bug_when>
    <thetext>&gt; I&apos;m not actually sure where that should be. They need to be in the middle of
&gt; the file somewhere since they are part of the interface and there is
&gt; non-interface stuff at the bottom of the file. I put them below the newer
&gt; API.

Objective-C allows you to add categories, which extend the interface, after the formal interface declaration. That&apos;s how our keyed subscripting declarations work, for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346512</commentid>
    <comment_count>27</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-07 13:14:02 -0700</bug_when>
    <thetext>rdar://problem/31375935</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346610</commentid>
    <comment_count>28</comment_count>
      <attachid>320196</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-07 15:56:05 -0700</bug_when>
    <thetext>Created attachment 320196
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346614</commentid>
    <comment_count>29</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-07 15:58:52 -0700</bug_when>
    <thetext>Attachment 320196 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSObjectRef.h:565:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:577:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;attributes&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:602:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:54:  CF_ENUM_AVAILABLE is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:161:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 8 in 11 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>1346616</commentid>
    <comment_count>30</comment_count>
      <attachid>320198</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-07 16:00:33 -0700</bug_when>
    <thetext>Created attachment 320198
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346619</commentid>
    <comment_count>31</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-07 16:03:31 -0700</bug_when>
    <thetext>Attachment 320198 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSObjectRef.h:565:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:577:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;attributes&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:602:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:54:  CF_ENUM_AVAILABLE is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:161:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 8 in 11 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>1346715</commentid>
    <comment_count>32</comment_count>
      <attachid>320198</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-09-07 22:31:30 -0700</bug_when>
    <thetext>Comment on attachment 320198
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        For whatever reason, whenever we added support for symbols in JSC we never extended such
&gt; +        support to our C/Obj-C APIs. This patch remedies that problem.

This doesn&apos;t seem like a useful intro.

&gt; Source/JavaScriptCore/API/JSObjectRef.cpp:339
&gt; +    if (!ctx) {
&gt; +        ASSERT_NOT_REACHED();

Why do we assert not reached? This is a public API, developers may call this with a nullptr. I can see it being useful to know in a debug build as a warning, but it is certainly possible to have happen.

&gt; Source/JavaScriptCore/API/JSObjectRef.h:565
&gt; +JS_EXPORT bool JSObjectHasPropertyKey(JSContextRef ctx, JSObjectRef object, JSValueRef propertyKey, JSValueRef* exception) CF_AVAILABLE(10_13, 11_0);

I think I convinced you earlier that we should go with a: JSC_AVAILABLE(JSC_MAC_TBA, JSC_IOS_TBA) and post-process like WebKit&apos;s processing:
Source/WebKit/postprocess-framework-headers.sh

We want to do it, because every time we add new API this happens, and now is as good a time as any!

&gt; Source/JavaScriptCore/API/JSValue.h:325
&gt; +@discussion Corresponds to the JavaScript operation &lt;code&gt;object[property]&lt;/code&gt;. Pass an NSString * to access a named property. Other valid properties include symbols, numbers, and stringifiable objects. In macOS 10.13 and iOS11 and below, &apos;property&apos; was an NSString *.

Style: &quot;iOS11&quot; =&gt; &quot;iOS 11&quot;

&gt; Source/JavaScriptCore/API/JSValue.h:598
&gt; + &lt;code&gt;setObject:object forKeyedSubscript:key&lt;/code&gt; was an restricted to

Grammar: &quot;was an restricted to&quot;

&gt; Source/JavaScriptCore/API/JSValue.h:696
&gt; +// These declarations provide compatibility when targeting SDKs for legacy OSs. In macOS 10.13 and iOS11 and below, &apos;property&apos; was an NSString *.
&gt; +@interface JSValue (LegacyTargetSDK)

Should we mark these as DEPRECATED? See WK_API_DEPRECATED_WITH_REPLACEMENT in WebKit2.

&gt; Source/JavaScriptCore/API/JSValue.mm:142
&gt; +    JSStringRef string = JSStringCreateWithCFString(reinterpret_cast&lt;CFStringRef&gt;(description));

Style: Most code just does the toll-free bridge cast: (CFStringRef). reinterpret_cast draws the eye for little value.

&gt; Source/JavaScriptCore/API/JSValueRef.cpp:92
&gt; +    if (jsValue.isObject())
&gt; +        return kJSTypeObject;
&gt; +    ASSERT(jsValue.isSymbol());
&gt; +    return kJSTypeSymbol;

It might make sense to keep object as the last. Its a more natural fallback in case something did go wrong earlier.

&gt; Source/JavaScriptCore/API/tests/testapi.cpp:68
&gt; +

Style: Drop this newline.

&gt; Source/JavaScriptCore/API/tests/testapi.mm:597
&gt; +        checkResult(@&quot;Should be a created from Obc-C&quot;, symbol.isSymbol);

Typo: &quot;Obc-C&quot;

Could you also add:

  checkResult(@&quot;Should toString with description&quot;, [[symbol toString] isEqualToString:@&quot;Symbol(dope)&quot;]);

&gt; Source/JavaScriptCore/API/tests/testapi.mm:617
&gt; +        checkResult(@&quot;Seting by subscript with symbol should work&quot;, [object[iteratorSymbol] isEqual:theAnswer]);

Typo: &quot;Seting&quot; =&gt; &quot;Setting&quot; in a bunch of places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346724</commentid>
    <comment_count>33</comment_count>
      <attachid>320198</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-07 22:51:46 -0700</bug_when>
    <thetext>Comment on attachment 320198
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:9
&gt;&gt; +        support to our C/Obj-C APIs. This patch remedies that problem.
&gt; 
&gt; This doesn&apos;t seem like a useful intro.

It follows on the time honored tradition of software development, blaming people in the past!

I can remove it I suppose.

&gt;&gt; Source/JavaScriptCore/API/JSObjectRef.cpp:339
&gt;&gt; +        ASSERT_NOT_REACHED();
&gt; 
&gt; Why do we assert not reached? This is a public API, developers may call this with a nullptr. I can see it being useful to know in a debug build as a warning, but it is certainly possible to have happen.

I think we want to know if a test accidentally passes a null context.

&gt;&gt; Source/JavaScriptCore/API/JSObjectRef.h:565
&gt;&gt; +JS_EXPORT bool JSObjectHasPropertyKey(JSContextRef ctx, JSObjectRef object, JSValueRef propertyKey, JSValueRef* exception) CF_AVAILABLE(10_13, 11_0);
&gt; 
&gt; I think I convinced you earlier that we should go with a: JSC_AVAILABLE(JSC_MAC_TBA, JSC_IOS_TBA) and post-process like WebKit&apos;s processing:
&gt; Source/WebKit/postprocess-framework-headers.sh
&gt; 
&gt; We want to do it, because every time we add new API this happens, and now is as good a time as any!

Yeah, I am still making the change I just haven&apos;t uploaded it yet.

&gt;&gt; Source/JavaScriptCore/API/JSValue.h:598
&gt;&gt; + &lt;code&gt;setObject:object forKeyedSubscript:key&lt;/code&gt; was an restricted to
&gt; 
&gt; Grammar: &quot;was an restricted to&quot;

Fixed.

&gt;&gt; Source/JavaScriptCore/API/JSValue.h:696
&gt;&gt; +@interface JSValue (LegacyTargetSDK)
&gt; 
&gt; Should we mark these as DEPRECATED? See WK_API_DEPRECATED_WITH_REPLACEMENT in WebKit2.

These won&apos;t even be visible unless you are targeting an older SDK. The post processor will run unifdef on all the public header files.

&gt;&gt; Source/JavaScriptCore/API/JSValue.mm:142
&gt;&gt; +    JSStringRef string = JSStringCreateWithCFString(reinterpret_cast&lt;CFStringRef&gt;(description));
&gt; 
&gt; Style: Most code just does the toll-free bridge cast: (CFStringRef). reinterpret_cast draws the eye for little value.

I was just doing it with the reinterpret_cast to match the C++ style. We don&apos;t use the C style casts where there is another option I don&apos;t see why we would want to do it here?

&gt;&gt; Source/JavaScriptCore/API/JSValueRef.cpp:92
&gt;&gt; +    return kJSTypeSymbol;
&gt; 
&gt; It might make sense to keep object as the last. Its a more natural fallback in case something did go wrong earlier.

Yeah, that&apos;s fair I supposed. I&apos;ll fix.

&gt;&gt; Source/JavaScriptCore/API/tests/testapi.cpp:68
&gt;&gt; +
&gt; 
&gt; Style: Drop this newline.

I like the new line since it breaks all the arguments to the function from the head of the loop more cleanly.

&gt;&gt; Source/JavaScriptCore/API/tests/testapi.mm:617
&gt;&gt; +        checkResult(@&quot;Seting by subscript with symbol should work&quot;, [object[iteratorSymbol] isEqual:theAnswer]);
&gt; 
&gt; Typo: &quot;Seting&quot; =&gt; &quot;Setting&quot; in a bunch of places.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409504</commentid>
    <comment_count>34</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-03-27 04:37:46 -0700</bug_when>
    <thetext>Can we get this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409513</commentid>
    <comment_count>35</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-03-27 05:45:11 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #34)
&gt; Can we get this?

Yeah, I was going to get back to it when I&apos;m done with https://bugs.webkit.org/show_bug.cgi?id=181953.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417008</commentid>
    <comment_count>36</comment_count>
      <attachid>338613</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-04-23 15:59:31 -0700</bug_when>
    <thetext>Created attachment 338613
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417009</commentid>
    <comment_count>37</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-23 16:02:36 -0700</bug_when>
    <thetext>Attachment 338613 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSTypedArray.h:48:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:63:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:63:  The parameter name &quot;bytesDeallocator&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:74:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:87:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:98:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:108:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:118:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:128:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:138:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:154:  The parameter name &quot;bytesDeallocator&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:164:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:174:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:88:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:88:  The parameter name &quot;callback&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:95:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValue.h:692:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:54:  JSC_API_AVAILABLE is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:161:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:181:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:190:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:200:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:300:  The parameter name &quot;string&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:311:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefInternal.h:53:  The parameter name &quot;runLoop&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSBasePrivate.h:46:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:59:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:66:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:95:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:565:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:577:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;attributes&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:602:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 35 in 32 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>1417181</commentid>
    <comment_count>38</comment_count>
      <attachid>338613</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-04-24 10:09:02 -0700</bug_when>
    <thetext>Comment on attachment 338613
Patch

Looks sensible.  Can you land it behind a flag, disabled by default?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421024</commentid>
    <comment_count>39</comment_count>
      <attachid>338613</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-05-04 23:13:38 -0700</bug_when>
    <thetext>Comment on attachment 338613
Patch

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

&gt; Source/JavaScriptCore/API/JSValueRef.cpp:348
&gt; +    RETURN_IF_EXCEPTION(scope, nullptr);

Don’t we want to eat this and inform callers that an exception occurred?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427806</commentid>
    <comment_count>40</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-27 06:05:23 -0700</bug_when>
    <thetext>Can we land this patch into the trunk?
Once it is introduced, I&apos;ll add a glib JSC API similar to this one :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428347</commentid>
    <comment_count>41</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2018-05-29 21:35:58 -0700</bug_when>
    <thetext>If there&apos;s interest now, let&apos;s land this patch as SPI, and we can take the steps to make it API separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1431100</commentid>
    <comment_count>42</comment_count>
      <attachid>342228</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-06-07 18:36:46 -0700</bug_when>
    <thetext>Created attachment 342228
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1431101</commentid>
    <comment_count>43</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-07 18:39:17 -0700</bug_when>
    <thetext>Attachment 342228 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSTypedArray.h:48:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:63:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:63:  The parameter name &quot;bytesDeallocator&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:74:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:87:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:98:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:108:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:118:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:128:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:138:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:154:  The parameter name &quot;bytesDeallocator&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:164:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:174:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:88:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:88:  The parameter name &quot;callback&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:95:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValue.h:692:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:54:  JSC_API_AVAILABLE is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:161:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:181:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:190:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:200:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:300:  The parameter name &quot;string&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:311:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefInternal.h:53:  The parameter name &quot;runLoop&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSBasePrivate.h:46:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:64:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:71:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:100:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:565:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:577:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;attributes&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:602:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 35 in 34 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>1431369</commentid>
    <comment_count>44</comment_count>
      <attachid>342312</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-06-08 13:11:06 -0700</bug_when>
    <thetext>Created attachment 342312
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1431382</commentid>
    <comment_count>45</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-08 13:36:15 -0700</bug_when>
    <thetext>Attachment 342312 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSTypedArray.h:48:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:63:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:63:  The parameter name &quot;bytesDeallocator&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:74:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:87:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:98:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:108:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:118:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:128:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:138:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:154:  The parameter name &quot;bytesDeallocator&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:164:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:174:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:88:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:88:  The parameter name &quot;callback&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:95:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValue.h:692:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:54:  JSC_API_AVAILABLE is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:161:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:181:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:190:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:200:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:300:  The parameter name &quot;string&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:311:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefInternal.h:53:  The parameter name &quot;runLoop&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSBasePrivate.h:46:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:64:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:71:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:100:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:565:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:577:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;attributes&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:602:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 35 in 34 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>1431395</commentid>
    <comment_count>46</comment_count>
      <attachid>342319</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-06-08 13:51:09 -0700</bug_when>
    <thetext>Created attachment 342319
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1431419</commentid>
    <comment_count>47</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-08 14:15:24 -0700</bug_when>
    <thetext>Attachment 342319 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSTypedArray.h:48:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:63:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:63:  The parameter name &quot;bytesDeallocator&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:74:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:87:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:98:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:108:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:118:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:128:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:138:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:154:  The parameter name &quot;bytesDeallocator&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:164:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:174:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:88:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:88:  The parameter name &quot;callback&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:95:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValue.h:692:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:54:  JSC_API_AVAILABLE is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:161:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:181:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:190:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:200:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:300:  The parameter name &quot;string&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:311:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefInternal.h:53:  The parameter name &quot;runLoop&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSBasePrivate.h:46:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:64:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:71:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:100:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:565:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:577:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;attributes&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:602:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 35 in 35 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>1431435</commentid>
    <comment_count>48</comment_count>
      <attachid>342333</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-06-08 14:32:57 -0700</bug_when>
    <thetext>Created attachment 342333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1431436</commentid>
    <comment_count>49</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-08 14:46:25 -0700</bug_when>
    <thetext>Attachment 342333 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSTypedArray.h:48:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:63:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:63:  The parameter name &quot;bytesDeallocator&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:74:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:87:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:98:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:108:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:118:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:128:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:138:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:154:  The parameter name &quot;bytesDeallocator&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:164:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:174:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:88:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:88:  The parameter name &quot;callback&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:95:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValue.h:692:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:54:  JSC_API_AVAILABLE is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:161:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:181:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:190:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:200:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:300:  The parameter name &quot;string&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:311:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefInternal.h:53:  The parameter name &quot;runLoop&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSBasePrivate.h:46:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:64:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:71:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:100:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:565:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:577:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;attributes&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:602:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 35 in 35 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>1433507</commentid>
    <comment_count>50</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-06-15 12:41:21 -0700</bug_when>
    <thetext>*** Bug 168561 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444328</commentid>
    <comment_count>51</comment_count>
      <attachid>345586</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-07-23 11:21:10 -0700</bug_when>
    <thetext>Created attachment 345586
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444332</commentid>
    <comment_count>52</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-07-23 11:27:01 -0700</bug_when>
    <thetext>Attachment 345586 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSTypedArray.h:48:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:63:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:63:  The parameter name &quot;bytesDeallocator&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:74:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:87:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:98:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:108:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:118:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:128:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:138:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:154:  The parameter name &quot;bytesDeallocator&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:164:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:174:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:88:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:88:  The parameter name &quot;callback&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:95:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValue.h:692:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:54:  JSC_API_AVAILABLE is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:161:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:181:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:190:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:200:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:300:  The parameter name &quot;string&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:311:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefInternal.h:53:  The parameter name &quot;runLoop&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSBasePrivate.h:46:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:64:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:71:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:100:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:565:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:577:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;attributes&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:602:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 35 in 33 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>1444381</commentid>
    <comment_count>53</comment_count>
      <attachid>345586</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-07-23 13:00:09 -0700</bug_when>
    <thetext>Comment on attachment 345586
Patch for landing

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

&gt; Source/JavaScriptCore/API/JSValue.h:327
&gt; +@discussion Corresponds to the JavaScript operation &lt;code&gt;object[property]&lt;/code&gt;. Pass an NSString * to access a named property. Other valid properties include symbols, numbers, and stringifiable objects. In macOS 10.13 and iOS 11 and below, &apos;property&apos; was an NSString *.
&gt;  */
&gt; -- (JSValue *)valueForProperty:(NSString *)property;
&gt; +- (JSValue *)valueForProperty:(id)property;

What happens now if developers pass non-JS-ifyable values to this?

    [o valueForProperty:@&quot;test&quot;]; // good
    [o valueForProperty:myJSValue]; // good
    [o valueForProperty:[NSNull null]]; // good?
    [o valueForProperty:[[MyObject alloc] init]]; // bad

I&apos;d expect at test, at least for the last, to ensure we get expected output (undefined) and not an exception or something.

&gt; Source/JavaScriptCore/API/tests/testapi.mm:641
&gt; +        checkResult(@&quot;Should be a created from Obc-C&quot;, symbol.isSymbol);

Typo: &quot;Obc-C&quot; =&gt; &quot;ObjC&quot;

&gt; Source/JavaScriptCore/API/tests/testapi.mm:691
&gt; +    }

I might be cool to have a test that sets `object[iteratorSymbol]` to be a ObjC block and verifies the block gets invoked and results are expected when iterating `object`. But that may be overkill.

&gt; Source/JavaScriptCore/postprocess-headers.sh:87
&gt; +function rewrite_version_min_required_macros() {

Nit: The style elsewhere in this file is a space before the `()`

&gt; Source/JavaScriptCore/postprocess-headers.sh:89
&gt; +    echo &quot;rewrite_version_min_required_macros&quot;
&gt; +    echo &quot;${1}&quot;

Is this debugging or expected output?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445117</commentid>
    <comment_count>54</comment_count>
      <attachid>345586</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-07-25 12:49:00 -0700</bug_when>
    <thetext>Comment on attachment 345586
Patch for landing

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

&gt;&gt; Source/JavaScriptCore/API/tests/testapi.mm:691
&gt;&gt; +    }
&gt; 
&gt; I might be cool to have a test that sets `object[iteratorSymbol]` to be a ObjC block and verifies the block gets invoked and results are expected when iterating `object`. But that may be overkill.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445119</commentid>
    <comment_count>55</comment_count>
      <attachid>345586</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-07-25 12:54:08 -0700</bug_when>
    <thetext>Comment on attachment 345586
Patch for landing

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

&gt;&gt; Source/JavaScriptCore/API/JSValue.h:327
&gt;&gt; +- (JSValue *)valueForProperty:(id)property;
&gt; 
&gt; What happens now if developers pass non-JS-ifyable values to this?
&gt; 
&gt;     [o valueForProperty:@&quot;test&quot;]; // good
&gt;     [o valueForProperty:myJSValue]; // good
&gt;     [o valueForProperty:[NSNull null]]; // good?
&gt;     [o valueForProperty:[[MyObject alloc] init]]; // bad
&gt; 
&gt; I&apos;d expect at test, at least for the last, to ensure we get expected output (undefined) and not an exception or something.

I added the test for the last one. This code  just calls the same method that the setValue called for the value.

So those should all work fine. If you pass a non-JSExported NSObject you will just get an empty wrapper object, which will get toPropertyKeyed when used as a property. i.e. it will return `o[&quot;[object Object]&quot;]` in JS.

&gt;&gt; Source/JavaScriptCore/API/tests/testapi.mm:641
&gt;&gt; +        checkResult(@&quot;Should be a created from Obc-C&quot;, symbol.isSymbol);
&gt; 
&gt; Typo: &quot;Obc-C&quot; =&gt; &quot;ObjC&quot;

fixed.

&gt;&gt; Source/JavaScriptCore/postprocess-headers.sh:87
&gt;&gt; +function rewrite_version_min_required_macros() {
&gt; 
&gt; Nit: The style elsewhere in this file is a space before the `()`

I realized this function isn&apos;t needed.

&gt;&gt; Source/JavaScriptCore/postprocess-headers.sh:89
&gt;&gt; +    echo &quot;${1}&quot;
&gt; 
&gt; Is this debugging or expected output?

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445120</commentid>
    <comment_count>56</comment_count>
      <attachid>345773</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-07-25 12:59:24 -0700</bug_when>
    <thetext>Created attachment 345773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445131</commentid>
    <comment_count>57</comment_count>
      <attachid>345777</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-07-25 13:21:11 -0700</bug_when>
    <thetext>Created attachment 345777
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445132</commentid>
    <comment_count>58</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-07-25 13:23:47 -0700</bug_when>
    <thetext>Attachment 345777 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSTypedArray.h:48:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:63:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:63:  The parameter name &quot;bytesDeallocator&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:74:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:87:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:98:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:108:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:118:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:128:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:138:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:154:  The parameter name &quot;bytesDeallocator&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:164:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:174:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:88:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:88:  The parameter name &quot;callback&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:95:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/tests/testapi.mm:46:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:54:  JSC_API_AVAILABLE is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:161:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:181:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:190:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:200:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:300:  The parameter name &quot;string&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:311:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefInternal.h:53:  The parameter name &quot;runLoop&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSBasePrivate.h:46:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:64:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:71:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:100:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:565:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:577:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;attributes&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:602:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 35 in 33 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>1445180</commentid>
    <comment_count>59</comment_count>
      <attachid>345788</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-07-25 15:02:22 -0700</bug_when>
    <thetext>Created attachment 345788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445182</commentid>
    <comment_count>60</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-07-25 15:04:54 -0700</bug_when>
    <thetext>Attachment 345788 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSTypedArray.h:48:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:63:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:63:  The parameter name &quot;bytesDeallocator&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:74:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:87:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:98:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:108:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:118:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:128:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:138:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:154:  The parameter name &quot;bytesDeallocator&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:164:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:174:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:88:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:88:  The parameter name &quot;callback&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:95:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/tests/testapi.mm:46:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:54:  JSC_API_AVAILABLE is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:161:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:181:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:190:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:200:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:300:  The parameter name &quot;string&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:311:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefInternal.h:53:  The parameter name &quot;runLoop&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSBasePrivate.h:46:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:64:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:71:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:100:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/APICast.h:33:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:565:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:577:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;attributes&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:602:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 36 in 35 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>1445187</commentid>
    <comment_count>61</comment_count>
      <attachid>345792</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-07-25 15:10:05 -0700</bug_when>
    <thetext>Created attachment 345792
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445189</commentid>
    <comment_count>62</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-07-25 15:12:25 -0700</bug_when>
    <thetext>Attachment 345792 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSTypedArray.h:48:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:63:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:63:  The parameter name &quot;bytesDeallocator&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:74:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:87:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:98:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:108:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:118:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:128:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:138:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:154:  The parameter name &quot;bytesDeallocator&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:164:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:174:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:88:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:88:  The parameter name &quot;callback&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:95:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/tests/testapi.mm:46:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:54:  JSC_API_AVAILABLE is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:161:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:181:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:190:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:200:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:300:  The parameter name &quot;string&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:311:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefInternal.h:53:  The parameter name &quot;runLoop&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSBasePrivate.h:46:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:64:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:71:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:100:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/APICast.h:33:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:565:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:577:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;attributes&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:602:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 36 in 35 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>1445204</commentid>
    <comment_count>63</comment_count>
      <attachid>345797</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-07-25 16:14:56 -0700</bug_when>
    <thetext>Created attachment 345797
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445207</commentid>
    <comment_count>64</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-07-25 16:17:53 -0700</bug_when>
    <thetext>Attachment 345797 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSTypedArray.h:48:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:63:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:63:  The parameter name &quot;bytesDeallocator&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:74:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:87:  The parameter name &quot;arrayType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:98:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:108:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:118:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:128:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:138:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:154:  The parameter name &quot;bytesDeallocator&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:164:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSTypedArray.h:174:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:88:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:88:  The parameter name &quot;callback&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:95:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/tests/testapi.mm:46:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:54:  JSC_API_AVAILABLE is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:161:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:181:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:190:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:200:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:300:  The parameter name &quot;string&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSValueRef.h:311:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRefInternal.h:53:  The parameter name &quot;runLoop&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSBasePrivate.h:46:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:64:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:71:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSContextRef.h:100:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/APICast.h:33:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:565:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:577:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:590:  The parameter name &quot;attributes&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSObjectRef.h:602:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 36 in 35 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>1445219</commentid>
    <comment_count>65</comment_count>
      <attachid>345797</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-07-25 16:38:13 -0700</bug_when>
    <thetext>Comment on attachment 345797
Patch

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

&gt; Source/JavaScriptCore/API/tests/testapi.mm:698
&gt; +        object[objCObject] = @(1);

Pro-tip: For integers you can just write `@1` instead of `@(1)`. For non-literals or floats you&apos;d need to use the @(...) syntax.

Thanks for adding these additional tests, they look good!

&gt; Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:10680
&gt; +				HEADER_SEARCH_PATHS = (
&gt; +					&quot;\&quot;$(JAVASCRIPTCORE_FRAMEWORKS_DIR)/JavaScriptCore.framework/PrivateHeaders\&quot;&quot;,
&gt; +					&quot;$(inherited)&quot;,
&gt; +				);

It looks like this patch modified the Xcode build variables HEADER_SEARCH_PATHS inside of the Xcode project.

This seems unnecessary since this is already in the ToolExecutable xcconfig:

    ToolExecutable.xcconfig
    52:HEADER_SEARCH_PATHS = &quot;$(JAVASCRIPTCORE_FRAMEWORKS_DIR)/JavaScriptCore.framework/PrivateHeaders&quot; $(inherited);

Are these changes still necessary?

&gt; Source/JavaScriptCore/config.h:27
&gt; +// Pick some obsenely large number because why not.

This comment seems out of date or irrelevant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445223</commentid>
    <comment_count>66</comment_count>
      <attachid>345797</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-07-25 16:49:17 -0700</bug_when>
    <thetext>Comment on attachment 345797
Patch

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

&gt;&gt; Source/JavaScriptCore/API/tests/testapi.mm:698
&gt;&gt; +        object[objCObject] = @(1);
&gt; 
&gt; Pro-tip: For integers you can just write `@1` instead of `@(1)`. For non-literals or floats you&apos;d need to use the @(...) syntax.
&gt; 
&gt; Thanks for adding these additional tests, they look good!

Whaaaat?!? Changed.

&gt;&gt; Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:10680
&gt;&gt; +				);
&gt; 
&gt; It looks like this patch modified the Xcode build variables HEADER_SEARCH_PATHS inside of the Xcode project.
&gt; 
&gt; This seems unnecessary since this is already in the ToolExecutable xcconfig:
&gt; 
&gt;     ToolExecutable.xcconfig
&gt;     52:HEADER_SEARCH_PATHS = &quot;$(JAVASCRIPTCORE_FRAMEWORKS_DIR)/JavaScriptCore.framework/PrivateHeaders&quot; $(inherited);
&gt; 
&gt; Are these changes still necessary?

I dunno where those came from. I&apos;ll remove them all.

&gt;&gt; Source/JavaScriptCore/config.h:27
&gt;&gt; +// Pick some obsenely large number because why not.
&gt; 
&gt; This comment seems out of date or irrelevant.

Whoops. I changed it to &quot;Use zero since it will be less than any possible version number&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445267</commentid>
    <comment_count>67</comment_count>
      <attachid>345810</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-07-25 18:53:00 -0700</bug_when>
    <thetext>Created attachment 345810
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445272</commentid>
    <comment_count>68</comment_count>
      <attachid>345810</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-25 19:32:32 -0700</bug_when>
    <thetext>Comment on attachment 345810
Patch for landing

Clearing flags on attachment: 345810

Committed r234227: &lt;https://trac.webkit.org/changeset/234227&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445273</commentid>
    <comment_count>69</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-25 19:32:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445331</commentid>
    <comment_count>70</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-07-25 23:45:59 -0700</bug_when>
    <thetext>Windows ports get broken.

https://build.webkit.org/builders/Apple%20Win%20Release%20%28Build%29/builds/10867

&gt; testapi.c.obj : error LNK2019: unresolved external symbol &quot;int __cdecl testCAPIViaCpp(void)&quot; (?testCAPIViaCpp@@YAHXZ) referenced in function _main [C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Source\JavaScriptCore\shell\testapiLib.vcxproj]
&gt; C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\bin32\testapiLib.dll : fatal error LNK1120: 1 unresolved externals [C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Source\JavaScriptCore\shell\testapiLib.vcxproj]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445341</commentid>
    <comment_count>71</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-07-26 00:38:46 -0700</bug_when>
    <thetext>Committed r234248: &lt;https://trac.webkit.org/changeset/234248&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445362</commentid>
    <comment_count>72</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-07-26 02:33:06 -0700</bug_when>
    <thetext>Filed Bug 188040 for AppleWin port.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318773</attachid>
            <date>2017-08-22 11:13:14 -0700</date>
            <delta_ts>2017-08-23 16:39:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175836-20170822111313.patch</filename>
            <type>text/plain</type>
            <size>4397</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NDhmZjkxYTg1NzAzYWIwNDg3ZTczOWI0M2Y1NWM4M2RjMzEzNWE2Li5lYzdjMDk1YjkyMGY1ODNm
OTk1YjFiMTgxMDJkZWU1NzdlMzUzYTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxNy0wOC0yMiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDIEFQSV0gV2Ugc2hvdWxkIHN1cHBvcnQgdGhlIHN5bWJvbCB0
eXBlIGluIG91ciBDIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc1ODM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5jcHA6CisgICAgICAgIChKU1ZhbHVlR2V0VHlwZSk6
CisgICAgICAgIChKU1ZhbHVlSXNTeW1ib2wpOgorICAgICAgICAqIEFQSS9KU1ZhbHVlUmVmLmg6
CisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkuYzoKKyAgICAgICAgKG1haW4pOgorCiAyMDE3
LTA4LTIyICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFdlIGFy
ZSB1c2luZyB2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldCB3aGVuIHRoZXJlIG1heSBub3Qg
YmUgYSB2YWx1ZSBwcm9maWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVmFsdWVSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNw
cAppbmRleCA2NGFjNmMzMjQ2ZWJmYjhjYzRmMjRjMDU4MDk5OGFlNDE4ZGFiYTZkLi4xMDgxZGM4
MDAxNmZlM2EyNTZhM2EzZmNkNDE5ODI4NWJhMTIxODk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNWYWx1ZVJlZi5jcHAKQEAgLTg2LDggKzg2LDEwIEBAIHN0YXRpYyBib29sIGV2ZXJu
b3RlSGFja05lZWRlZCgpCiAgICAgICAgIHJldHVybiBrSlNUeXBlTnVtYmVyOwogICAgIGlmIChq
c1ZhbHVlLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBrSlNUeXBlU3RyaW5nOwotICAgIEFT
U0VSVChqc1ZhbHVlLmlzT2JqZWN0KCkpOwotICAgIHJldHVybiBrSlNUeXBlT2JqZWN0OworICAg
IGlmIChqc1ZhbHVlLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBrSlNUeXBlT2JqZWN0Owor
ICAgIEFTU0VSVChqc1ZhbHVlLmlzU3ltYm9sKCkpOworICAgIHJldHVybiBrSlNUeXBlU3ltYm9s
OwogfQogCiBib29sIEpTVmFsdWVJc1VuZGVmaW5lZChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVl
UmVmIHZhbHVlKQpAQCAtMTYyLDYgKzE2NCwxNiBAQCBib29sIEpTVmFsdWVJc09iamVjdChKU0Nv
bnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQogICAgIHJldHVybiB0b0pTKGV4ZWMsIHZh
bHVlKS5pc09iamVjdCgpOwogfQogCitib29sIEpTVmFsdWVJc1N5bWJvbChKU0NvbnRleHRSZWYg
Y3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0
dXJuIEpTVmFsdWVHZXRUeXBlKGN0eCwgdmFsdWUpID09IGtKU1R5cGVTeW1ib2w7Cit9CisKIGJv
b2wgSlNWYWx1ZUlzQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkKIHsK
ICAgICBpZiAoIWN0eCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1ZhbHVlUmVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuaAppbmRl
eCA5ODE1ZGU3ODNjMGFlZTA3M2UzYTQ0OGJkMGM3Y2FkZDRhOTUyYzA2Li5mNjgxOTJhZDNjNzEw
NWY2YmMzYmM5MzgyMWE0OTQ3OWIzZWJmOWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVmFsdWVSZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWVSZWYuaApAQCAtNDIsNiArNDIsNyBAQAogQGNvbnN0YW50ICAgICBrSlNUeXBlTnVtYmVy
ICAgICBBIHByaW1pdGl2ZSBudW1iZXIgdmFsdWUuCiBAY29uc3RhbnQgICAgIGtKU1R5cGVTdHJp
bmcgICAgIEEgcHJpbWl0aXZlIHN0cmluZyB2YWx1ZS4KIEBjb25zdGFudCAgICAga0pTVHlwZU9i
amVjdCAgICAgQW4gb2JqZWN0IHZhbHVlIChtZWFuaW5nIHRoYXQgdGhpcyBKU1ZhbHVlUmVmIGlz
IGEgSlNPYmplY3RSZWYpLgorQGNvbnN0YW50ICAgICBrSlNUeXBlU3ltYm9sICAgICBBIHByaW1p
dGl2ZSBzeW1ib2wgdmFsdWUuCiAqLwogdHlwZWRlZiBlbnVtIHsKICAgICBrSlNUeXBlVW5kZWZp
bmVkLApAQCAtNDksNyArNTAsOCBAQCB0eXBlZGVmIGVudW0gewogICAgIGtKU1R5cGVCb29sZWFu
LAogICAgIGtKU1R5cGVOdW1iZXIsCiAgICAga0pTVHlwZVN0cmluZywKLSAgICBrSlNUeXBlT2Jq
ZWN0CisgICAga0pTVHlwZU9iamVjdCwKKyAgICBrSlNUeXBlU3ltYm9sIENGX0VOVU1fQVZBSUxB
QkxFKDEwXzEzLCAxMV8wKQogfSBKU1R5cGU7CiAKIC8qIQpAQCAtMTUwLDYgKzE1MiwxNiBAQCBK
U19FWFBPUlQgYm9vbCBKU1ZhbHVlSXNTdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJl
ZiB2YWx1ZSk7CiBKU19FWFBPUlQgYm9vbCBKU1ZhbHVlSXNPYmplY3QoSlNDb250ZXh0UmVmIGN0
eCwgSlNWYWx1ZVJlZiB2YWx1ZSk7CiAKIC8qIQorIEBmdW5jdGlvbgorIEBhYnN0cmFjdCAgICAg
ICBUZXN0cyB3aGV0aGVyIGEgSmF2YVNjcmlwdCB2YWx1ZSdzIHR5cGUgaXMgdGhlIHN5bWJvbCB0
eXBlLgorIEBwYXJhbSBjdHggICAgICBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgorIEBw
YXJhbSB2YWx1ZSAgICBUaGUgSlNWYWx1ZSB0byB0ZXN0LgorIEByZXN1bHQgICAgICAgICB0cnVl
IGlmIHZhbHVlJ3MgdHlwZSBpcyB0aGUgc3ltYm9sIHR5cGUsIG90aGVyd2lzZSBmYWxzZS4KKyAq
LworSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzU3ltYm9sKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFs
dWVSZWYgdmFsdWUpIENGX0FWQUlMQUJMRSgxMF8xMywgMTFfMCk7CisKKworLyohCiBAZnVuY3Rp
b24KIEBhYnN0cmFjdCBUZXN0cyB3aGV0aGVyIGEgSmF2YVNjcmlwdCB2YWx1ZSBpcyBhbiBvYmpl
Y3Qgd2l0aCBhIGdpdmVuIGNsYXNzIGluIGl0cyBjbGFzcyBjaGFpbi4KIEBwYXJhbSBjdHggVGhl
IGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy90ZXN0YXBpLmMKaW5kZXggOTJjMjJjNTlkOTE5ZDA2ZjEyNDhhZGRhMWFhNDAxMDRmYmY3ODc3
MS4uMWNiOWY4OGI4YzU5YzlhNWI1MTgyMTVmNDdjZjZlNDk0MGMxODkzNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKQEAgLTE0NDMsNiArMTQ0MywxNCBAQCBp
bnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQogICAgIEFTU0VSVChKU1ZhbHVlR2V0VHlw
ZShjb250ZXh0LCBqc0VtcHR5U3RyaW5nKSA9PSBrSlNUeXBlU3RyaW5nKTsKICAgICBBU1NFUlQo
SlNWYWx1ZUdldFR5cGUoY29udGV4dCwganNPbmVTdHJpbmcpID09IGtKU1R5cGVTdHJpbmcpOwog
CisgICAgeworICAgICAgICBKU1N0cmluZ1JlZiBtYWtlU3ltYm9sU2NyaXB0ID0gSlNTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIm5ldyBTeW1ib2woJ2RvcGUnKTsiKTsKKyAgICAgICAgSlNW
YWx1ZVJlZiBzeW1ib2xWYWx1ZSA9IEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgbWFrZVN5bWJv
bFNjcmlwdCwgTlVMTCwgTlVMTCwgMCwgTlVMTCk7CisgICAgICAgIEFTU0VSVChKU1ZhbHVlR2V0
VHlwZShjb250ZXh0LCBzeW1ib2xWYWx1ZSkgPT0ga0pTVHlwZVN5bWJvbCk7CisgICAgICAgIEFT
U0VSVChKU1ZhbHVlSXNTeW1ib2woY29udGV4dCwgc3ltYm9sVmFsdWUpKTsKKyAgICAgICAgSlNT
dHJpbmdSZWxlYXNlKG1ha2VTeW1ib2xTY3JpcHQpOworICAgIH0KKwogICAgIEFTU0VSVCghSlNW
YWx1ZUlzQm9vbGVhbihjb250ZXh0LCBOVUxMKSk7CiAgICAgQVNTRVJUKCFKU1ZhbHVlSXNPYmpl
Y3QoY29udGV4dCwgTlVMTCkpOwogICAgIEFTU0VSVCghSlNWYWx1ZUlzQXJyYXkoY29udGV4dCwg
TlVMTCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318939</attachid>
            <date>2017-08-23 16:39:21 -0700</date>
            <delta_ts>2017-08-31 13:12:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175836-20170823163920.patch</filename>
            <type>text/plain</type>
            <size>25401</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NDhmZjkxYTg1NzAzYWIwNDg3ZTczOWI0M2Y1NWM4M2RjMzEzNWE2Li5iNDAyNzgzOThmYjNjNDMx
MWU5YTQ3NjkyYjZlNzczYjA5ZjI1YzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MyBAQAorMjAxNy0wOC0yMiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDIEFQSV0gV2Ugc2hvdWxkIHN1cHBvcnQgdGhlIHN5bWJvbCB0
eXBlIGluIG91ciBDL09iai1DIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1ODM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRm9yIHdoYXRldmVyIHJlYXNvbiwgd2hlbmV2ZXIgd2UgYWRkZWQgc3Vw
cG9ydCBmb3Igc3ltYm9scyBpbiBKU0Mgd2UgbmV2ZXIgZXh0ZW5kZWQgc3VjaAorICAgICAgICBz
dXBwb3J0IHRvIG91ciBDL09iai1DIEFQSXMuIFRoaXMgcGF0Y2ggcmVtZWRpZXMgdGhhdCBwcm9i
bGVtLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIGZvbGxvd2luZyBBUEkgYWRkaXRp
b25zOgorICAgICAgICAxKSBUZXN0IGlmIGEgSlNWYWx1ZS9KU1ZhbHVlUmVmIGlzIGEgc3ltYm9s
IHZpYSBhbnkgb2YgdGhlIG1ldGhvZHMgQVBJIGFyZSBhYmxlIHRvIHRlc3QgZm9yIHRoZSB0eXBl
cyBvZiBvdGhlciBKU1ZhbHVlcy4KKyAgICAgICAgMikgQ3JlYXRlIGEgc3ltYm9sIG9uIGJvdGgg
QVBJcworICAgICAgICAzKSBHZXQvU2V0L0RlbGV0ZS9EZWZpbmUgcHJvcGVydHkgd2l0aCBhbiBh
cmJpdHJhcnkgSlNWYWx1ZSBrZXkuCisKKyAgICAgICAgSSBhZGRlZCB0aGUgMyBhZGRpdGlvbiBi
ZWNhdXNlIHRoZSBjdXJyZW50IHByb3BlcnR5IGFjY2VzcyBBUElzCisgICAgICAgIG9ubHkgaGF2
ZSB0aGUgYWJpbGl0eSB0byBnZXQgU3RyaW5ncy4gSXQgd2FzIHBvc3NpYmxlIHRvIG1lcmdlCisg
ICAgICAgIHN5bWJvbHMgaW50byBKU1N0cmluZ1JlZiBidXQgdGhhdCBmZWx0IGNvbmZ1c2luZyBh
bmQgZXhwb3NlcworICAgICAgICBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIG91ciBlbmdpbmUu
IFRoZSBuZXcgZnVuY3Rpb25zIG1hdGNoIHRoZQorICAgICAgICBzYW1lIG1lYW5pbmcgdGhhdCB0
aGV5IGhhdmUgaW4gSlMuIEkgZGVjaWRlZCBhZ2FpbnN0IG1hdGNoaW5nIHdoYXQKKyAgICAgICAg
dGhlIGV4aXN0aW5nIEMtQVBJIFNldCBmdW5jdGlvbiBkb2VzIHNpbmNlIGhhdmluZyBzZXBhcmF0
ZQorICAgICAgICBTZXQvRGVmaW5lIGZ1bmN0aW9ucyBpcyBjbG9zZXIgdG8gdGhlIEpTIEFQSSBh
bmQgdGhlIE9iai1DIGRvLgorCisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAg
ICAgKEpTT2JqZWN0SGFzUHJvcGVydHlXaXRoS2V5KToKKyAgICAgICAgKEpTT2JqZWN0R2V0UHJv
cGVydHlXaXRoS2V5KToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJvcGVydHlXaXRoS2V5KToKKyAg
ICAgICAgKEpTT2JqZWN0RGVsZXRlUHJvcGVydHlXaXRoS2V5KToKKyAgICAgICAgKiBBUEkvSlNP
YmplY3RSZWYuaDoKKyAgICAgICAgKiBBUEkvSlNWYWx1ZS5oOgorICAgICAgICAqIEFQSS9KU1Zh
bHVlLm1tOgorICAgICAgICAoK1tKU1ZhbHVlIHZhbHVlV2l0aE5ld1N5bWJvbEZyb21EZXNjcmlw
dGlvbjpJbkNvbnRleHQ6XSk6CisgICAgICAgICgtW0pTVmFsdWUgdmFsdWVGb3JQcm9wZXJ0eVdp
dGhLZXk6XSk6CisgICAgICAgICgtW0pTVmFsdWUgc2V0VmFsdWU6Zm9yUHJvcGVydHlXaXRoS2V5
Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5V2l0aEtleTpdKToKKyAgICAg
ICAgKC1bSlNWYWx1ZSBoYXNQcm9wZXJ0eVdpdGhLZXk6XSk6CisgICAgICAgICgtW0pTVmFsdWUg
ZGVmaW5lUHJvcGVydHlXaXRoS2V5OmRlc2NyaXB0b3I6XSk6CisgICAgICAgICgtW0pTVmFsdWUg
aXNTeW1ib2xdKToKKyAgICAgICAgKC1bSlNWYWx1ZSBvYmplY3RGb3JLZXllZFN1YnNjcmlwdDpd
KToKKyAgICAgICAgKC1bSlNWYWx1ZSBzZXRPYmplY3Q6Zm9yS2V5ZWRTdWJzY3JpcHQ6XSk6Cisg
ICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgorICAgICAgICAoSlNWYWx1ZUdldFR5cGUpOgor
ICAgICAgICAoSlNWYWx1ZUlzU3ltYm9sKToKKyAgICAgICAgKEpTVmFsdWVNYWtlU3ltYm9sKToK
KyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5oOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBp
LmM6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5tbToKKyAg
ICAgICAgKHRlc3RPYmplY3RpdmVDQVBJTWFpbik6CisKIDIwMTctMDgtMjIgIFNhYW0gQmFyYXRp
ICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgV2UgYXJlIHVzaW5nIHZhbHVlUHJvZmls
ZUZvckJ5dGVjb2RlT2Zmc2V0IHdoZW4gdGhlcmUgbWF5IG5vdCBiZSBhIHZhbHVlIHByb2ZpbGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKaW5kZXggY2VmZWY2NjE0
NWRmMmViNTlhZjFkMDExN2I2Y2VhYWRmYTZkZjYxZS4uM2I0ZGE1ZDg3YmZhOGVkMTI2ZTVhZWZl
NWQzNTBmMzE4NjZkMzY1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U09iamVjdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJl
Zi5jcHAKQEAgLTMzMyw2ICszMzMsMTA5IEBAIHZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eShKU0Nv
bnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlCiAgICAg
aGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoZXhlYywgZXhjZXB0aW9uKTsKIH0KIAorYm9vbCBKU09i
amVjdEhhc1Byb3BlcnR5V2l0aEtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmpl
Y3QsIEpTVmFsdWVSZWYga2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKCFj
dHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIEpTTG9ja0hv
bGRlciBsb2NrZXIoZXhlYyk7CisKKyAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVj
dCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IHRvSlMoZXhlYywga2V5KS50b1Byb3BlcnR5S2V5
KGV4ZWMpOworICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChleGVjLCBleGNlcHRpb24p
ID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGJvb2wgcmVzdWx0ID0ganNPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIGlkZW50KTsKKyAg
ICBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChleGVjLCBleGNlcHRpb24pOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK0pTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9wZXJ0eVdpdGhLZXkoSlNDb250
ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIGtleSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBl
eGVjID0gdG9KUyhjdHgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisKKyAgICBK
U09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9
IHRvSlMoZXhlYywga2V5KS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGlmIChoYW5kbGVFeGNl
cHRpb25JZk5lZWRlZChleGVjLCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhy
b3cpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgSlNWYWx1ZSBqc1ZhbHVlID0ganNP
YmplY3QtPmdldChleGVjLCBpZGVudCk7CisgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoZXhl
YywgZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gdG9SZWYoZXhlYywganNWYWx1ZSk7Cit9CisKK3Zv
aWQgSlNPYmplY3RTZXRQcm9wZXJ0eVdpdGhLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RS
ZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIGtleSwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMo
Y3R4KTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIo
dm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKworICAgIEpT
T2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0
b0pTKGV4ZWMsIHZhbHVlKTsKKworICAgIElkZW50aWZpZXIgaWRlbnQgPSB0b0pTKGV4ZWMsIGtl
eSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQo
ZXhlYywgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChqc09iamVjdCk7CisgICAganNPYmpl
Y3QtPm1ldGhvZFRhYmxlKCktPnB1dChqc09iamVjdCwgZXhlYywgaWRlbnQsIGpzVmFsdWUsIHNs
b3QpOworICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbik7Cit9CisK
K2Jvb2wgSlNPYmplY3REZWxldGVQcm9wZXJ0eVdpdGhLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNP
YmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIGtleSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQor
eworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsK
KyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOworCisgICAgSlNPYmplY3QqIGpzT2JqZWN0
ID0gdG9KUyhvYmplY3QpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSB0b0pTKGV4ZWMsIGtleSku
dG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoZXhl
YywgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBib29sIHJlc3VsdCA9IGpzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5k
ZWxldGVQcm9wZXJ0eShqc09iamVjdCwgZXhlYywgaWRlbnQpOworICAgIGhhbmRsZUV4Y2VwdGlv
bklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9p
ZCBKU09iamVjdERlZmluZVByb3BlcnR5V2l0aEtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVj
dFJlZiBvYmplY3QsIEpTVmFsdWVSZWYga2V5LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1Byb3BlcnR5
QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYg
KCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9K
UyhvYmplY3QpOworICAgIEpTVmFsdWUganNWYWx1ZSA9IHRvSlMoZXhlYywgdmFsdWUpOworCisg
ICAgSWRlbnRpZmllciBpZGVudCA9IHRvSlMoZXhlYywga2V5KS50b1Byb3BlcnR5S2V5KGV4ZWMp
OworICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChleGVjLCBleGNlcHRpb24pID09IEV4
Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCisgICAgICAgIHJldHVybjsKKworICAgIFByb3BlcnR5
RGVzY3JpcHRvciBkZXNjcmlwdG9yKGpzVmFsdWUsIGF0dHJpYnV0ZXMpOworICAgIGpzT2JqZWN0
LT5kZWZpbmVPd25Qcm9wZXJ0eShqc09iamVjdCwgZXhlYywgaWRlbnQsIGRlc2NyaXB0b3IsIHRy
dWUpOworICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbik7Cit9CisK
IEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoSlNDb250ZXh0UmVmIGN0eCwg
SlNPYmplY3RSZWYgb2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pCiB7CiAgICAgaWYgKCFjdHgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuaAppbmRleCA5NWQ1M2I3ZjRlNThlOTZmMGNiYzMxNTk1YWY5YzQ2MTk3OGFhNDNk
Li41NzBlMTdmNWQ5NzYwMjk0ODAyYmZhZmQzMGZjMzE2NTU5ODFkYjU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oCkBAIC01MzYsOSArNTM2LDkgQEAgSlNfRVhQT1JU
IEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVj
dFJlZiBvYmplY3QsIEoKIEBwYXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4K
IEBwYXJhbSBvYmplY3QgVGhlIEpTT2JqZWN0IHdob3NlIHByb3BlcnR5IHlvdSB3YW50IHRvIHNl
dC4KIEBwYXJhbSBwcm9wZXJ0eU5hbWUgQSBKU1N0cmluZyBjb250YWluaW5nIHRoZSBwcm9wZXJ0
eSdzIG5hbWUuCi1AcGFyYW0gdmFsdWUgQSBKU1ZhbHVlIHRvIHVzZSBhcyB0aGUgcHJvcGVydHkn
cyB2YWx1ZS4KLUBwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3
aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBu
b3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCitAcGFyYW0gdmFsdWUgQSBKU1ZhbHVlUmVm
IHRvIHVzZSBhcyB0aGUgcHJvcGVydHkncyB2YWx1ZS4KIEBwYXJhbSBhdHRyaWJ1dGVzIEEgbG9n
aWNhbGx5IE9SZWQgc2V0IG9mIEpTUHJvcGVydHlBdHRyaWJ1dGVzIHRvIGdpdmUgdG8gdGhlIHBy
b3BlcnR5LgorQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdo
aWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5v
dCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICovCiBKU19FWFBPUlQgdm9pZCBKU09iamVj
dFNldFByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJp
bmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1Byb3BlcnR5QXR0cmlidXRl
cyBhdHRyaWJ1dGVzLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCkBAIC01NTUsNiArNTU1LDY3
IEBAIEpTX0VYUE9SVCBib29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHkoSlNDb250ZXh0UmVmIGN0
eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0CiAKIC8qIQogQGZ1bmN0aW9uCitAYWJzdHJhY3Qg
VGVzdHMgd2hldGhlciBhbiBvYmplY3QgaGFzIGEgZ2l2ZW4gcHJvcGVydHkgdXNpbmcgYSBKU1Zh
bHVlUmVmIGFzIHRoZSBrZXkuCitAcGFyYW0gb2JqZWN0IFRoZSBKU09iamVjdCB0byB0ZXN0Lgor
QHBhcmFtIGtleSBBIEpTVmFsdWVSZWYgY29udGFpbmluZyB0aGUga2V5IHRvIHVzZSB3aGVuIGxv
b2tpbmcgdXAgdGhlIHByb3BlcnR5LgorQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBK
U1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5V
TEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KK0ByZXN1bHQgdHJ1
ZSBpZiB0aGUgb2JqZWN0IGhhcyBhIHByb3BlcnR5IHdob3NlIG5hbWUgbWF0Y2hlcyBrZXksIG90
aGVyd2lzZSBmYWxzZS4KK0BkaXNjdXNzaW9uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXMg
cGVyZm9ybWluZyAia2V5IGluIG9iamVjdCIgZnJvbSBKYXZhU2NyaXB0LgorKi8KK0pTX0VYUE9S
VCBib29sIEpTT2JqZWN0SGFzUHJvcGVydHlXaXRoS2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2Jq
ZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0Zf
QVZBSUxBQkxFKDEwXzEzLCAxMV8wKTsKKworCisvKiEKK0BmdW5jdGlvbgorQGFic3RyYWN0IEdl
dHMgYSBwcm9wZXJ0eSBmcm9tIGFuIG9iamVjdCB1c2luZyBhIEpTVmFsdWVSZWYgYXMgdGhlIGtl
eS4KK0BwYXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KK0BwYXJhbSBvYmpl
Y3QgVGhlIEpTT2JqZWN0IHdob3NlIHByb3BlcnR5IHlvdSB3YW50IHRvIGdldC4KK0BwYXJhbSBr
ZXkgQSBKU1ZhbHVlUmVmIGNvbnRhaW5pbmcgdGhlIGtleSB0byB1c2Ugd2hlbiBsb29raW5nIHVw
IHRoZSBwcm9wZXJ0eS4KK0BwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJl
ZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlv
dSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCitAcmVzdWx0IFRoZSBwcm9wZXJ0
eSdzIHZhbHVlIGlmIG9iamVjdCBoYXMgdGhlIHByb3BlcnR5LCBvdGhlcndpc2UgdGhlIHVuZGVm
aW5lZCB2YWx1ZS4KK0BkaXNjdXNzaW9uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXMgcGVy
Zm9ybWluZyAib2JqZWN0W2tleV0iIGZyb20gSmF2YVNjcmlwdC4KKyovCitKU19FWFBPUlQgSlNW
YWx1ZVJlZiBKU09iamVjdEdldFByb3BlcnR5V2l0aEtleShKU0NvbnRleHRSZWYgY3R4LCBKU09i
amVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYga2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENG
X0FWQUlMQUJMRSgxMF8xMywgMTFfMCk7CisKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgU2V0
cyBhIHByb3BlcnR5IG9uIGFuIG9iamVjdCB1c2luZyBhIEpTVmFsdWVSZWYgYXMgdGhlIGtleS4K
K0BwYXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KK0BwYXJhbSBvYmplY3Qg
VGhlIEpTT2JqZWN0IHdob3NlIHByb3BlcnR5IHlvdSB3YW50IHRvIHNldC4KK0BwYXJhbSBrZXkg
QSBKU1ZhbHVlUmVmIGNvbnRhaW5pbmcgdGhlIGtleSB0byB1c2Ugd2hlbiBsb29raW5nIHVwIHRo
ZSBwcm9wZXJ0eS4KK0BwYXJhbSB2YWx1ZSBBIEpTVmFsdWVSZWYgdG8gdXNlIGFzIHRoZSBwcm9w
ZXJ0eSdzIHZhbHVlLgorQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVm
IGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91
IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KK0BkaXNjdXNzaW9uIFRoaXMgZnVu
Y3Rpb24gaXMgdGhlIHNhbWUgYXMgcGVyZm9ybWluZyAib2JqZWN0W2tleV0gPSB2YWx1ZSIgZnJv
bSBKYXZhU2NyaXB0LgorKi8KK0pTX0VYUE9SVCB2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHlXaXRo
S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXks
IEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEw
XzEzLCAxMV8wKTsKKworLyohCitAZnVuY3Rpb24KK0BhYnN0cmFjdCBEZWxldGVzIGEgcHJvcGVy
dHkgZnJvbSBhbiBvYmplY3QgdXNpbmcgYSBKU1ZhbHVlUmVmIGFzIHRoZSBrZXkuCitAcGFyYW0g
Y3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCitAcGFyYW0gb2JqZWN0IFRoZSBKU09i
amVjdCB3aG9zZSBwcm9wZXJ0eSB5b3Ugd2FudCB0byBkZWxldGUuCitAcGFyYW0ga2V5IEEgSlNW
YWx1ZVJlZiBjb250YWluaW5nIHRoZSBrZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJv
cGVydHkuCitAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hp
Y2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90
IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgorQHJlc3VsdCB0cnVlIGlmIHRoZSBkZWxldGUg
b3BlcmF0aW9uIHN1Y2NlZWRzLCBvdGhlcndpc2UgZmFsc2UgKGZvciBleGFtcGxlLCBpZiB0aGUg
cHJvcGVydHkgaGFzIHRoZSBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgYXR0cmlidXRl
IHNldCkuCitAZGlzY3Vzc2lvbiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHBlcmZvcm1p
bmcgImRlbGV0ZSBvYmplY3Rba2V5XSIgZnJvbSBKYXZhU2NyaXB0LgorKi8KK0pTX0VYUE9SVCBi
b29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHlXaXRoS2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2Jq
ZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0Zf
QVZBSUxBQkxFKDEwXzEzLCAxMV8wKTsKKworLyohCitAZnVuY3Rpb24KK0BhYnN0cmFjdCBEZWxl
dGVzIGEgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QgdXNpbmcgYSBKU1ZhbHVlUmVmIGFzIHRoZSBr
ZXkuCitAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCitAcGFyYW0gb2Jq
ZWN0IFRoZSBKU09iamVjdCB3aG9zZSBwcm9wZXJ0eSB5b3Ugd2FudCB0byBkZWxldGUuCitAcGFy
YW0ga2V5IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBrZXkgdG8gdXNlIHdoZW4gbG9va2lu
ZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0gdmFsdWUgQSBKU1ZhbHVlUmVmIHRvIHVzZSBhcyB0
aGUgcHJvcGVydHkncyB2YWx1ZS4KK0BwYXJhbSBhdHRyaWJ1dGVzIEEgbG9naWNhbGx5IE9SZWQg
c2V0IG9mIEpTUHJvcGVydHlBdHRyaWJ1dGVzIHRvIGdpdmUgdG8gdGhlIHByb3BlcnR5LgorQHBh
cmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3Jl
IGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0
b3JlIGFuIGV4Y2VwdGlvbi4KK0BkaXNjdXNzaW9uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUg
YXMgdGhlICJPYmplY3QuZGVmaW5lUHJvcGVydHkiIG1ldGhvZCBpbiBKYXZhU2NyaXB0LgorKi8K
K0pTX0VYUE9SVCB2b2lkIEpTT2JqZWN0RGVmaW5lUHJvcGVydHlXaXRoS2V5KEpTQ29udGV4dFJl
ZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFsdWVSZWYgdmFs
dWUsIEpTUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikgQ0ZfQVZBSUxBQkxFKDEwXzEzLCAxMV8wKTsKKworLyohCitAZnVuY3Rpb24KIEBhYnN0cmFj
dCBHZXRzIGEgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QgYnkgbnVtZXJpYyBpbmRleC4KIEBwYXJh
bSBjdHggVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KIEBwYXJhbSBvYmplY3QgVGhlIEpT
T2JqZWN0IHdob3NlIHByb3BlcnR5IHlvdSB3YW50IHRvIGdldC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1ZhbHVlLmgKaW5kZXggMTQxMGRkNzRhMTdmOTcwNzA2ZTQ0ZGVkMjRjY2QxNzBjMzQ3OWMy
ZS4uNTJjZDBmOTJhYTg3MTM2NDNlZjMxMzYxNjU2OGVlOTBkYjQyZTcyZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1ZhbHVlLmgKQEAgLTE0OSw2ICsxNDksMTUgQEAgTlNfQ0xBU1NfQVZBSUxB
QkxFKDEwXzksIDdfMCkKICsgKEpTVmFsdWUgKil2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRleHQ6
KEpTQ29udGV4dCAqKWNvbnRleHQ7CiAKIC8qIQorIEBtZXRob2QKKyBAYWJzdHJhY3QgQ3JlYXRl
IGEgbmV3LCB1bmlxdWUsIHN5bWJvbCBvYmplY3QuCisgQHBhcmFtIGRlc2NyaXB0aW9uIFRoZSBk
ZXNjcmlwdGlvbiBvZiB0aGUgc3ltYm9sIG9iamVjdCBiZWluZyBjcmVhdGVkLgorIEBwYXJhbSBj
b250ZXh0IFRoZSBKU0NvbnRleHQgdG8gd2hpY2ggdGhlIHJlc3VsdGluZyBKU1ZhbHVlIGJlbG9u
Z3MuCisgQHJlc3VsdCBUaGUgSlNWYWx1ZSByZXByZXNlbnRpbmcgYSB1bmlxdWUgSmF2YVNjcmlw
dCB2YWx1ZSB3aXRoIHR5cGUgc3ltYm9sLgorICovCisrIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3
U3ltYm9sRnJvbURlc2NyaXB0aW9uOihOU1N0cmluZyAqKWRlc2NyaXB0aW9uIEluQ29udGV4dDoo
SlNDb250ZXh0ICopY29udGV4dCBOU19BVkFJTEFCTEUoMTBfMTMsIDExXzApOworCisvKiEKIEBt
ZXRob2Rncm91cCBDb252ZXJ0aW5nIHRvIE9iamVjdGl2ZS1DIFR5cGVzCiBAZGlzY3Vzc2lvbiBX
aGVuIGNvbnZlcnRpbmcgYmV0d2VlbiBKYXZhU2NyaXB0IHZhbHVlcyBhbmQgT2JqZWN0aXZlLUMg
b2JqZWN0cyBhIGNvcHkgaXMKICBwZXJmb3JtZWQuIFZhbHVlcyBvZiB0eXBlcyBsaXN0ZWQgYmVs
b3cgYXJlIGNvcGllZCB0byB0aGUgY29ycmVzcG9uZGluZwpAQCAtMzYwLDYgKzM2OSw0NCBAQCBO
U19DTEFTU19BVkFJTEFCTEUoMTBfOSwgN18wKQogLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUg
YXRJbmRleDooTlNVSW50ZWdlcilpbmRleDsKIAogLyohCisgQG1ldGhvZAorIEBhYnN0cmFjdCBB
Y2Nlc3MgYSBwcm9wZXJ0eSBvZiBhIEpTVmFsdWUuCisgQHJlc3VsdCBUaGUgSlNWYWx1ZSBmb3Ig
dGhlIHJlcXVlc3RlZCBwcm9wZXJ0eSBrZXkgb3IgdGhlIEpTVmFsdWUgPGNvZGU+dW5kZWZpbmVk
PC9jb2RlPgorIGlmIHRoZSBwcm9wZXJ0eSBkb2VzIG5vdCBleGlzdC4KKyAqLworLSAoSlNWYWx1
ZSAqKXZhbHVlRm9yUHJvcGVydHlXaXRoS2V5OihKU1ZhbHVlICopa2V5IE5TX0FWQUlMQUJMRSgx
MF8xMywgMTFfMCk7CisKKy8qIQorIEBtZXRob2QKKyBAYWJzdHJhY3QgU2V0IGEgcHJvcGVydHkg
a2V5IG9uIGEgSlNWYWx1ZS4KKyAqLworLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yUHJv
cGVydHlXaXRoS2V5OihKU1ZhbHVlICopa2V5IE5TX0FWQUlMQUJMRSgxMF8xMywgMTFfMCk7CisK
Ky8qIQorIEBtZXRob2QKKyBAYWJzdHJhY3QgRGVsZXRlIGEgcHJvcGVydHkga2V5IGZyb20gYSBK
U1ZhbHVlLgorIEByZXN1bHQgWUVTIGlmIGRlbGV0aW9uIGlzIHN1Y2Nlc3NmdWwsIE5PIG90aGVy
d2lzZS4KKyAqLworLSAoQk9PTClkZWxldGVQcm9wZXJ0eVdpdGhLZXk6KEpTVmFsdWUgKilrZXkg
TlNfQVZBSUxBQkxFKDEwXzEzLCAxMV8wKTsKKworLyohCisgQG1ldGhvZAorIEBhYnN0cmFjdCBD
aGVjayBpZiBhIEpTVmFsdWUgaGFzIGEgcHJvcGVydHkga2V5LgorIEBkaXNjdXNzaW9uIFRoaXMg
bWV0aG9kIGhhcyB0aGUgc2FtZSBmdW5jdGlvbiBhcyB0aGUgSmF2YVNjcmlwdCBvcGVyYXRvciA8
Y29kZT5pbjwvY29kZT4uCisgQHJlc3VsdCBSZXR1cm5zIFlFUyBpZiBwcm9wZXJ0eSBrZXkgaXMg
cHJlc2VudCBvbiB0aGUgdmFsdWUuCisgKi8KKy0gKEJPT0wpaGFzUHJvcGVydHlXaXRoS2V5OihK
U1ZhbHVlICopa2V5IE5TX0FWQUlMQUJMRSgxMF8xMywgMTFfMCk7CisKKy8qIQorIEBtZXRob2QK
KyBAYWJzdHJhY3QgRGVmaW5lIHByb3BlcnR5IGtleXMgd2l0aCBjdXN0b20gZGVzY3JpcHRvcnMg
b24gSlNWYWx1ZXMuCisgQGRpc2N1c3Npb24gVGhpcyBtZXRob2QgbWF5IGJlIHVzZWQgdG8gY3Jl
YXRlIGEgZGF0YSBvciBhY2Nlc3NvciBwcm9wZXJ0eSBvbiBhbiBvYmplY3QuCisgVGhpcyBtZXRo
b2Qgb3BlcmF0ZXMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBPYmplY3QuZGVmaW5lUHJvcGVydHkg
bWV0aG9kIGluIHRoZQorIEphdmFTY3JpcHQgbGFuZ3VhZ2UuCisgKi8KKy0gKHZvaWQpZGVmaW5l
UHJvcGVydHlXaXRoS2V5OihKU1ZhbHVlICopa2V5IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0b3Ig
TlNfQVZBSUxBQkxFKDEwXzEzLCAxMV8wKTsKKworLyohCiBAZnVuY3Rpb25ncm91cCBDaGVja2lu
ZyBKYXZhU2NyaXB0IFR5cGVzCiAqLwogCkBAIC00MDMsNiArNDUwLDEyIEBAIE5TX0NMQVNTX0FW
QUlMQUJMRSgxMF85LCA3XzApCiBAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGlzT2JqZWN0Owog
CiAvKiEKKyBAcHJvcGVydHkKKyBAYWJzdHJhY3QgQ2hlY2sgaWYgYSBKU1ZhbHVlIGlzIGEgc3lt
Ym9sLgorICovCitAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGlzU3ltYm9sIE5TX0FWQUlMQUJM
RSgxMF8xMywgMTFfMCk7CisKKy8qIQogQHByb3BlcnR5CiBAYWJzdHJhY3QgQ2hlY2sgaWYgYSBK
U1ZhbHVlIGlzIGFuIGFycmF5LgogKi8gCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0K
aW5kZXggNjk4NmZhZTgzMWUyZWNjNmViYzJiZWRhZTRlNjhhYzIyZjU3OGU4MC4uMmE2NDM5ZjNh
NmJiNjllZGQ3ODljN2FkM2Q3YmU5ZjFiMDNiYjdmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNWYWx1ZS5tbQpAQCAtMTM2LDYgKzEzNiwxMyBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVy
dHlEZXNjcmlwdG9yU2V0S2V5ID0gQCJzZXQiOwogICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdp
dGhKU1ZhbHVlUmVmOkpTVmFsdWVNYWtlVW5kZWZpbmVkKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4
dFJlZl0pIGluQ29udGV4dDpjb250ZXh0XTsKIH0KIAorKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aE5l
d1N5bWJvbEZyb21EZXNjcmlwdGlvbjooTlNTdHJpbmcgKilkZXNjcmlwdGlvbiBJbkNvbnRleHQ6
KEpTQ29udGV4dCAqKWNvbnRleHQKK3sKKyAgICBKU1N0cmluZ1JlZiBzdHJpbmcgPSBKU1N0cmlu
Z0NyZWF0ZVdpdGhDRlN0cmluZyhyZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihkZXNjcmlw
dGlvbikpOworICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOkpTVmFsdWVN
YWtlU3ltYm9sKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIHN0cmluZykgaW5Db250ZXh0
OmNvbnRleHRdOworfQorCisKIC0gKGlkKXRvT2JqZWN0CiB7CiAgICAgcmV0dXJuIHZhbHVlVG9P
YmplY3QoX2NvbnRleHQsIG1fdmFsdWUpOwpAQCAtMzI3LDYgKzMzNCw2OSBAQCBOU1N0cmluZyAq
IGNvbnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yU2V0S2V5ID0gQCJzZXQiOwogICAgIH0KIH0KIAor
LSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHlXaXRoS2V5OihKU1ZhbHVlICopa2V5Cit7Cisg
ICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOworICAgIEpTT2JqZWN0UmVmIG9iamVj
dCA9IEpTVmFsdWVUb09iamVjdChbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1
ZSwgJmV4Y2VwdGlvbik7CisgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuIFtfY29u
dGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKworICAgIEpTVmFsdWVS
ZWYgcmVzdWx0ID0gSlNPYmplY3RHZXRQcm9wZXJ0eVdpdGhLZXkoW19jb250ZXh0IEpTR2xvYmFs
Q29udGV4dFJlZl0sIG9iamVjdCwgW2tleSBKU1ZhbHVlUmVmXSwgJmV4Y2VwdGlvbik7CisgICAg
aWYgKGV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlF
eGNlcHRpb246ZXhjZXB0aW9uXTsKKworICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1Zh
bHVlUmVmOnJlc3VsdCBpbkNvbnRleHQ6X2NvbnRleHRdOworfQorCistICh2b2lkKXNldFZhbHVl
OihpZCl2YWx1ZSBmb3JQcm9wZXJ0eVdpdGhLZXk6KEpTVmFsdWUgKilrZXkKK3sKKyAgICBKU1Zh
bHVlUmVmIGV4Y2VwdGlvbiA9IG51bGxwdHI7CisgICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNW
YWx1ZVRvT2JqZWN0KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlLCAmZXhj
ZXB0aW9uKTsKKyAgICBpZiAoZXhjZXB0aW9uKSB7CisgICAgICAgIFtfY29udGV4dCBub3RpZnlF
eGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEpTT2Jq
ZWN0U2V0UHJvcGVydHlXaXRoS2V5KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmpl
Y3QsIFtrZXkgSlNWYWx1ZVJlZl0sIG9iamVjdFRvVmFsdWUoX2NvbnRleHQsIHZhbHVlKSwgMCwg
JmV4Y2VwdGlvbik7CisgICAgaWYgKGV4Y2VwdGlvbikgeworICAgICAgICBbX2NvbnRleHQgbm90
aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKKy0g
KEJPT0wpZGVsZXRlUHJvcGVydHlXaXRoS2V5OihKU1ZhbHVlICopa2V5Cit7CisgICAgSlNWYWx1
ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOworICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFs
dWVUb09iamVjdChbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSwgJmV4Y2Vw
dGlvbik7CisgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuIFtfY29udGV4dCBib29s
RnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOworCisgICAgQk9PTCByZXN1bHQgPSBKU09i
amVjdERlbGV0ZVByb3BlcnR5V2l0aEtleShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwg
b2JqZWN0LCBba2V5IEpTVmFsdWVSZWZdLCAmZXhjZXB0aW9uKTsKKyAgICBpZiAoZXhjZXB0aW9u
KQorICAgICAgICByZXR1cm4gW19jb250ZXh0IGJvb2xGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2Vw
dGlvbl07CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCistIChCT09MKWhhc1Byb3BlcnR5V2l0
aEtleTooSlNWYWx1ZSAqKWtleQoreworICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0
cjsKKyAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoW19jb250ZXh0IEpT
R2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUsICZleGNlcHRpb24pOworICAgIGlmIChleGNlcHRp
b24pCisgICAgICAgIHJldHVybiBbX2NvbnRleHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246ZXhj
ZXB0aW9uXTsKKworICAgIEJPT0wgcmVzdWx0ID0gSlNPYmplY3RIYXNQcm9wZXJ0eVdpdGhLZXko
W19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgW2tleSBKU1ZhbHVlUmVmXSwg
JmV4Y2VwdGlvbik7CisgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuIFtfY29udGV4
dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOworCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworLSAodm9pZClkZWZpbmVQcm9wZXJ0eVdpdGhLZXk6KEpTVmFsdWUgKilrZXkgZGVz
Y3JpcHRvcjooaWQpZGVzY3JpcHRvcgoreworICAgIFtbX2NvbnRleHQgZ2xvYmFsT2JqZWN0XVtA
Ik9iamVjdCJdIGludm9rZU1ldGhvZDpAImRlZmluZVByb3BlcnR5IiB3aXRoQXJndW1lbnRzOkBb
IHNlbGYsIGtleSwgZGVzY3JpcHRvciBdXTsKK30KKwogLSAoQk9PTClpc1VuZGVmaW5lZAogewog
ICAgIHJldHVybiBKU1ZhbHVlSXNVbmRlZmluZWQoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJl
Zl0sIG1fdmFsdWUpOwpAQCAtMzU3LDYgKzQyNywxMSBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJv
cGVydHlEZXNjcmlwdG9yU2V0S2V5ID0gQCJzZXQiOwogICAgIHJldHVybiBKU1ZhbHVlSXNPYmpl
Y3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUpOwogfQogCistIChCT09M
KWlzU3ltYm9sCit7CisgICAgcmV0dXJuIEpTVmFsdWVJc1N5bWJvbChbX2NvbnRleHQgSlNHbG9i
YWxDb250ZXh0UmVmXSwgbV92YWx1ZSk7Cit9CisKIC0gKEJPT0wpaXNBcnJheQogewogICAgIHJl
dHVybiBKU1ZhbHVlSXNBcnJheShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1
ZSk7CkBAIC01MzksMTMgKzYxNCw5IEBAIE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2Ny
aXB0b3JTZXRLZXkgPSBAInNldCI7CiAKIC0gKEpTVmFsdWUgKilvYmplY3RGb3JLZXllZFN1YnNj
cmlwdDooaWQpa2V5CiB7Ci0gICAgaWYgKCFba2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNs
YXNzXV0pIHsKLSAgICAgICAga2V5ID0gW1tKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDprZXkgaW5D
b250ZXh0Ol9jb250ZXh0XSB0b1N0cmluZ107Ci0gICAgICAgIGlmICgha2V5KQotICAgICAgICAg
ICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4dDpfY29udGV4dF07
Ci0gICAgfQotCi0gICAgcmV0dXJuIFtzZWxmIHZhbHVlRm9yUHJvcGVydHk6KE5TU3RyaW5nICop
a2V5XTsKKyAgICBpZiAoW2tleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQorICAg
ICAgICByZXR1cm4gW3NlbGYgdmFsdWVGb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXldOworICAg
IHJldHVybiBbc2VsZiB2YWx1ZUZvclByb3BlcnR5V2l0aEtleTpbSlNWYWx1ZSB2YWx1ZVdpdGhP
YmplY3Q6a2V5IGluQ29udGV4dDpfY29udGV4dF1dOwogfQogCiAtIChKU1ZhbHVlICopb2JqZWN0
QXRJbmRleGVkU3Vic2NyaXB0OihOU1VJbnRlZ2VyKWluZGV4CkBAIC01NTUsMTMgKzYyNiw5IEBA
IE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXkgPSBAInNldCI7CiAK
IC0gKHZvaWQpc2V0T2JqZWN0OihpZClvYmplY3QgZm9yS2V5ZWRTdWJzY3JpcHQ6KE5TT2JqZWN0
IDxOU0NvcHlpbmc+ICopa2V5CiB7Ci0gICAgaWYgKCFba2V5IGlzS2luZE9mQ2xhc3M6W05TU3Ry
aW5nIGNsYXNzXV0pIHsKLSAgICAgICAga2V5ID0gW1tKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpr
ZXkgaW5Db250ZXh0Ol9jb250ZXh0XSB0b1N0cmluZ107Ci0gICAgICAgIGlmICgha2V5KQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFtzZWxmIHNldFZhbHVlOm9iamVjdCBmb3JQ
cm9wZXJ0eTooTlNTdHJpbmcgKilrZXldOworICAgIGlmICghW2tleSBpc0tpbmRPZkNsYXNzOltO
U1N0cmluZyBjbGFzc11dKQorICAgICAgICBbc2VsZiBzZXRWYWx1ZTpvYmplY3QgZm9yUHJvcGVy
dHk6KE5TU3RyaW5nICopa2V5XTsKKyAgICBbc2VsZiBzZXRWYWx1ZTpvYmplY3QgZm9yUHJvcGVy
dHlXaXRoS2V5OltKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDprZXkgaW5Db250ZXh0Ol9jb250ZXh0
XV07CiB9CiAKIC0gKHZvaWQpc2V0T2JqZWN0OihpZClvYmplY3QgYXRJbmRleGVkU3Vic2NyaXB0
OihOU1VJbnRlZ2VyKWluZGV4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVmFsdWVSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNw
cAppbmRleCA2NGFjNmMzMjQ2ZWJmYjhjYzRmMjRjMDU4MDk5OGFlNDE4ZGFiYTZkLi5kNDZjZmYw
NmE0NjU0ZTk1MGI1MDE1ZTRjYjJiYWY0OTZiMDQ4YzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNWYWx1ZVJlZi5jcHAKQEAgLTg2LDggKzg2LDEwIEBAIHN0YXRpYyBib29sIGV2ZXJu
b3RlSGFja05lZWRlZCgpCiAgICAgICAgIHJldHVybiBrSlNUeXBlTnVtYmVyOwogICAgIGlmIChq
c1ZhbHVlLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBrSlNUeXBlU3RyaW5nOwotICAgIEFT
U0VSVChqc1ZhbHVlLmlzT2JqZWN0KCkpOwotICAgIHJldHVybiBrSlNUeXBlT2JqZWN0OworICAg
IGlmIChqc1ZhbHVlLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBrSlNUeXBlT2JqZWN0Owor
ICAgIEFTU0VSVChqc1ZhbHVlLmlzU3ltYm9sKCkpOworICAgIHJldHVybiBrSlNUeXBlU3ltYm9s
OwogfQogCiBib29sIEpTVmFsdWVJc1VuZGVmaW5lZChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVl
UmVmIHZhbHVlKQpAQCAtMTYyLDYgKzE2NCwxOCBAQCBib29sIEpTVmFsdWVJc09iamVjdChKU0Nv
bnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQogICAgIHJldHVybiB0b0pTKGV4ZWMsIHZh
bHVlKS5pc09iamVjdCgpOwogfQogCitib29sIEpTVmFsdWVJc1N5bWJvbChKU0NvbnRleHRSZWYg
Y3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwor
CisgICAgcmV0dXJuIHRvSlMoZXhlYywgdmFsdWUpLmlzU3ltYm9sKCk7Cit9CisKIGJvb2wgSlNW
YWx1ZUlzQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkKIHsKICAgICBp
ZiAoIWN0eCkgewpAQCAtMzE2LDYgKzMzMCwyMiBAQCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlTnVt
YmVyKEpTQ29udGV4dFJlZiBjdHgsIGRvdWJsZSB2YWx1ZSkKICAgICByZXR1cm4gdG9SZWYoZXhl
YywganNOdW1iZXIocHVyaWZ5TmFOKHZhbHVlKSkpOwogfQogCitKU1ZhbHVlUmVmIEpTVmFsdWVN
YWtlU3ltYm9sKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIGRlc2NyaXB0aW9uKQorewor
ICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwor
ICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
Q0FUQ0hfU0NPUEUoZXhlYy0+dm0oKSk7CisKKyAgICBKU1N0cmluZyoganNEZXNjcmlwdGlvbiA9
IGpzU3RyaW5nKGV4ZWMsIGRlc2NyaXB0aW9uID8gZGVzY3JpcHRpb24tPnN0cmluZygpIDogU3Ry
aW5nKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAg
cmV0dXJuIHRvUmVmKGV4ZWMsIFN5bWJvbDo6Y3JlYXRlKGV4ZWMsIGpzRGVzY3JpcHRpb24pKTsK
K30KKwogSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZVN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1N0
cmluZ1JlZiBzdHJpbmcpCiB7CiAgICAgaWYgKCFjdHgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1ZhbHVlUmVmLmgKaW5kZXggOTgxNWRlNzgzYzBhZWUwNzNlM2E0NDhiZDBjN2NhZGQ0YTk1
MmMwNi4uM2JlODViMGE5YzE2MmZmNzBiNjFjMGI2NzZmNTRlYjQ0ZDcwNWFmMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmgKQEAgLTQyLDYgKzQyLDcgQEAKIEBjb25zdGFu
dCAgICAga0pTVHlwZU51bWJlciAgICAgQSBwcmltaXRpdmUgbnVtYmVyIHZhbHVlLgogQGNvbnN0
YW50ICAgICBrSlNUeXBlU3RyaW5nICAgICBBIHByaW1pdGl2ZSBzdHJpbmcgdmFsdWUuCiBAY29u
c3RhbnQgICAgIGtKU1R5cGVPYmplY3QgICAgIEFuIG9iamVjdCB2YWx1ZSAobWVhbmluZyB0aGF0
IHRoaXMgSlNWYWx1ZVJlZiBpcyBhIEpTT2JqZWN0UmVmKS4KK0Bjb25zdGFudCAgICAga0pTVHlw
ZVN5bWJvbCAgICAgQSBwcmltaXRpdmUgc3ltYm9sIHZhbHVlLgogKi8KIHR5cGVkZWYgZW51bSB7
CiAgICAga0pTVHlwZVVuZGVmaW5lZCwKQEAgLTQ5LDcgKzUwLDggQEAgdHlwZWRlZiBlbnVtIHsK
ICAgICBrSlNUeXBlQm9vbGVhbiwKICAgICBrSlNUeXBlTnVtYmVyLAogICAgIGtKU1R5cGVTdHJp
bmcsCi0gICAga0pTVHlwZU9iamVjdAorICAgIGtKU1R5cGVPYmplY3QsCisgICAga0pTVHlwZVN5
bWJvbCBDRl9FTlVNX0FWQUlMQUJMRSgxMF8xMywgMTFfMCkKIH0gSlNUeXBlOwogCiAvKiEKQEAg
LTE1MSw2ICsxNTMsMTYgQEAgSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzT2JqZWN0KEpTQ29udGV4
dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpOwogCiAvKiEKIEBmdW5jdGlvbgorQGFic3RyYWN0
ICAgICAgIFRlc3RzIHdoZXRoZXIgYSBKYXZhU2NyaXB0IHZhbHVlJ3MgdHlwZSBpcyB0aGUgc3lt
Ym9sIHR5cGUuCitAcGFyYW0gY3R4ICAgICAgVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4K
K0BwYXJhbSB2YWx1ZSAgICBUaGUgSlNWYWx1ZSB0byB0ZXN0LgorQHJlc3VsdCAgICAgICAgIHRy
dWUgaWYgdmFsdWUncyB0eXBlIGlzIHRoZSBzeW1ib2wgdHlwZSwgb3RoZXJ3aXNlIGZhbHNlLgor
Ki8KK0pTX0VYUE9SVCBib29sIEpTVmFsdWVJc1N5bWJvbChKU0NvbnRleHRSZWYgY3R4LCBKU1Zh
bHVlUmVmIHZhbHVlKSBDRl9BVkFJTEFCTEUoMTBfMTMsIDExXzApOworCisKKy8qIQorQGZ1bmN0
aW9uCiBAYWJzdHJhY3QgVGVzdHMgd2hldGhlciBhIEphdmFTY3JpcHQgdmFsdWUgaXMgYW4gb2Jq
ZWN0IHdpdGggYSBnaXZlbiBjbGFzcyBpbiBpdHMgY2xhc3MgY2hhaW4uCiBAcGFyYW0gY3R4IFRo
ZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCiBAcGFyYW0gdmFsdWUgVGhlIEpTVmFsdWUgdG8g
dGVzdC4KQEAgLTI1OSw2ICsyNzEsMTUgQEAgSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNWYWx1ZU1h
a2VOdW1iZXIoSlNDb250ZXh0UmVmIGN0eCwgZG91YmxlIG51bWJlcik7CiAKIC8qIQogQGZ1bmN0
aW9uCitAYWJzdHJhY3QgICAgICAgICAgICBDcmVhdGVzIGEgSmF2YVNjcmlwdCB2YWx1ZSBvZiB0
aGUgc3ltYm9sIHR5cGUuCitAcGFyYW0gY3R4ICAgICAgICAgICBUaGUgZXhlY3V0aW9uIGNvbnRl
eHQgdG8gdXNlLgorQHBhcmFtIGRlc2NyaXB0aW9uICAgQSBkZXNjcmlwdGlvbiBvZiB0aGUgbmV3
bHkgY3JlYXRlZCBzeW1ib2wgdmFsdWUuCitAcmVzdWx0ICAgICAgICAgICAgICBBIHVuaXF1ZSBK
U1ZhbHVlIG9mIHRoZSBzeW1ib2wgdHlwZSwgd2hvc2UgZGVzY3JpcHRpb24gbWF0Y2hlcyB0aGUg
b25lIHByb3ZpZGVkLgorKi8KK0pTX0VYUE9SVCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlU3ltYm9s
KEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIGRlc2NyaXB0aW9uKTsKKworLyohCitAZnVu
Y3Rpb24KIEBhYnN0cmFjdCAgICAgICBDcmVhdGVzIGEgSmF2YVNjcmlwdCB2YWx1ZSBvZiB0aGUg
c3RyaW5nIHR5cGUuCiBAcGFyYW0gY3R4ICBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgog
QHBhcmFtIHN0cmluZyAgIFRoZSBKU1N0cmluZyB0byBhc3NpZ24gdG8gdGhlIG5ld2x5IGNyZWF0
ZWQgSlNWYWx1ZS4gVGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL3Rlc3RhcGkuYyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5j
CmluZGV4IDkyYzIyYzU5ZDkxOWQwNmYxMjQ4YWRkYTFhYTQwMTA0ZmJmNzg3NzEuLjFjYjlmODhi
OGM1OWM5YTViNTE4MjE1ZjQ3Y2Y2ZTQ5NDBjMTg5MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvdGVzdHMvdGVzdGFwaS5jCkBAIC0xNDQzLDYgKzE0NDMsMTQgQEAgaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKICAgICBBU1NFUlQoSlNWYWx1ZUdldFR5cGUoY29udGV4dCwg
anNFbXB0eVN0cmluZykgPT0ga0pTVHlwZVN0cmluZyk7CiAgICAgQVNTRVJUKEpTVmFsdWVHZXRU
eXBlKGNvbnRleHQsIGpzT25lU3RyaW5nKSA9PSBrSlNUeXBlU3RyaW5nKTsKIAorICAgIHsKKyAg
ICAgICAgSlNTdHJpbmdSZWYgbWFrZVN5bWJvbFNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJuZXcgU3ltYm9sKCdkb3BlJyk7Iik7CisgICAgICAgIEpTVmFsdWVSZWYgc3lt
Ym9sVmFsdWUgPSBKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIG1ha2VTeW1ib2xTY3JpcHQsIE5V
TEwsIE5VTEwsIDAsIE5VTEwpOworICAgICAgICBBU1NFUlQoSlNWYWx1ZUdldFR5cGUoY29udGV4
dCwgc3ltYm9sVmFsdWUpID09IGtKU1R5cGVTeW1ib2wpOworICAgICAgICBBU1NFUlQoSlNWYWx1
ZUlzU3ltYm9sKGNvbnRleHQsIHN5bWJvbFZhbHVlKSk7CisgICAgICAgIEpTU3RyaW5nUmVsZWFz
ZShtYWtlU3ltYm9sU2NyaXB0KTsKKyAgICB9CisKICAgICBBU1NFUlQoIUpTVmFsdWVJc0Jvb2xl
YW4oY29udGV4dCwgTlVMTCkpOwogICAgIEFTU0VSVCghSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQs
IE5VTEwpKTsKICAgICBBU1NFUlQoIUpTVmFsdWVJc0FycmF5KGNvbnRleHQsIE5VTEwpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQppbmRleCBlOThkNmNmNWRk
YmNlMTc4ZTAwYzlkZGIwZTUwZWNlM2FlM2Q2MTdhLi4zNDUwZTRmODVkZmRkNTU4OGFhNzUwZTdi
NjQ5NzBlNTJmNDM0MWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL3Rlc3RhcGkubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLm1tCkBAIC01NzIsNiArNTcyLDEyIEBAIHN0YXRpYyB2b2lkIHRlc3RPYmplY3RpdmVDQVBJ
TWFpbigpCiAKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKICAgICAgICAgSlNDb250ZXh0ICpjb250
ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICpzeW1ib2wg
PSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIm5ldyBTeW1ib2woJ2RvcGUnKTsiXTsKKyAgICAg
ICAgY2hlY2tSZXN1bHQoQCJTaG91bGQgYmUgYSBzeW1ib2wgdmFsdWUiLCBzeW1ib2wuaXNTeW1i
b2wpOworICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQg
KmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CiAgICAgICAgIEpTVmFsdWUgKnJl
c3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiWyBdIl07CiAgICAgICAgIGNoZWNrUmVz
dWx0KEAiWyBdIiwgcmVzdWx0LmlzQXJyYXkpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319508</attachid>
            <date>2017-08-31 13:12:59 -0700</date>
            <delta_ts>2017-09-01 10:13:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175836-20170831131258.patch</filename>
            <type>text/plain</type>
            <size>29060</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NDhmZjkxYTg1NzAzYWIwNDg3ZTczOWI0M2Y1NWM4M2RjMzEzNWE2Li45YTE4OWMxNDNjYWJkYWJh
MTIxNmI2MGRhYmExZjY2N2NkZTNlYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MyBAQAorMjAxNy0wOC0yMiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDIEFQSV0gV2Ugc2hvdWxkIHN1cHBvcnQgdGhlIHN5bWJvbCB0
eXBlIGluIG91ciBDL09iai1DIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1ODM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRm9yIHdoYXRldmVyIHJlYXNvbiwgd2hlbmV2ZXIgd2UgYWRkZWQgc3Vw
cG9ydCBmb3Igc3ltYm9scyBpbiBKU0Mgd2UgbmV2ZXIgZXh0ZW5kZWQgc3VjaAorICAgICAgICBz
dXBwb3J0IHRvIG91ciBDL09iai1DIEFQSXMuIFRoaXMgcGF0Y2ggcmVtZWRpZXMgdGhhdCBwcm9i
bGVtLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIGZvbGxvd2luZyBBUEkgYWRkaXRp
b25zOgorICAgICAgICAxKSBUZXN0IGlmIGEgSlNWYWx1ZS9KU1ZhbHVlUmVmIGlzIGEgc3ltYm9s
IHZpYSBhbnkgb2YgdGhlIG1ldGhvZHMgQVBJIGFyZSBhYmxlIHRvIHRlc3QgZm9yIHRoZSB0eXBl
cyBvZiBvdGhlciBKU1ZhbHVlcy4KKyAgICAgICAgMikgQ3JlYXRlIGEgc3ltYm9sIG9uIGJvdGgg
QVBJcy4KKyAgICAgICAgMykgR2V0L1NldC9EZWxldGUvRGVmaW5lIHByb3BlcnR5IG5vdyB0YWtl
IGlkcyBpbiB0aGUgT2JqLUMgQVBJLgorICAgICAgICA0KSBBZGQgR2V0L1NldC9EZWxldGUgaW4g
dGhlIEMgQVBJLgorCisgICAgICAgIFdlIGNhbiBkbyAzIGJlY2F1c2UgaXQgaXMgYm90aCBiaW5h
cnkgYW5kIHNvdXJjZSBjb21wYXRhYmxlIHdpdGggdGhlIGV4aXN0aW5nIEFQSS4KKyAgICAgICAg
SSBhZGRlZCB0aGUgNCBhZGRpdGlvbiBiZWNhdXNlIHRoZSBjdXJyZW50IHByb3BlcnR5IGFjY2Vz
cyBBUElzCisgICAgICAgIG9ubHkgaGF2ZSB0aGUgYWJpbGl0eSB0byBnZXQgU3RyaW5ncy4gSXQg
d2FzIHBvc3NpYmxlIHRvIG1lcmdlCisgICAgICAgIHN5bWJvbHMgaW50byBKU1N0cmluZ1JlZiBi
dXQgdGhhdCBmZWx0IGNvbmZ1c2luZyBhbmQgZXhwb3NlcworICAgICAgICBpbXBsZW1lbnRhdGlv
biBkZXRhaWxzIG9mIG91ciBlbmdpbmUuIFRoZSBuZXcgZnVuY3Rpb25zIG1hdGNoIHRoZQorICAg
ICAgICBzYW1lIG1lYW5pbmcgdGhhdCB0aGV5IGhhdmUgaW4gSlMuCisKKyAgICAgICAgKiBBUEkv
SlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3RIYXNQcm9wZXJ0eVdpdGhLZXkpOgor
ICAgICAgICAoSlNPYmplY3RHZXRQcm9wZXJ0eVdpdGhLZXkpOgorICAgICAgICAoSlNPYmplY3RT
ZXRQcm9wZXJ0eVdpdGhLZXkpOgorICAgICAgICAoSlNPYmplY3REZWxldGVQcm9wZXJ0eVdpdGhL
ZXkpOgorICAgICAgICAqIEFQSS9KU09iamVjdFJlZi5oOgorICAgICAgICAqIEFQSS9KU1ZhbHVl
Lmg6CisgICAgICAgICogQVBJL0pTVmFsdWUubW06CisgICAgICAgICgrW0pTVmFsdWUgdmFsdWVX
aXRoTmV3U3ltYm9sRnJvbURlc2NyaXB0aW9uOkluQ29udGV4dDpdKToKKyAgICAgICAgKC1bSlNW
YWx1ZSB2YWx1ZUZvclByb3BlcnR5V2l0aEtleTpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSBzZXRW
YWx1ZTpmb3JQcm9wZXJ0eVdpdGhLZXk6XSk6CisgICAgICAgICgtW0pTVmFsdWUgZGVsZXRlUHJv
cGVydHlXaXRoS2V5Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5V2l0aEtleTpd
KToKKyAgICAgICAgKC1bSlNWYWx1ZSBkZWZpbmVQcm9wZXJ0eVdpdGhLZXk6ZGVzY3JpcHRvcjpd
KToKKyAgICAgICAgKC1bSlNWYWx1ZSBpc1N5bWJvbF0pOgorICAgICAgICAoLVtKU1ZhbHVlIG9i
amVjdEZvcktleWVkU3Vic2NyaXB0Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIHNldE9iamVjdDpm
b3JLZXllZFN1YnNjcmlwdDpdKToKKyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5jcHA6CisgICAg
ICAgIChKU1ZhbHVlR2V0VHlwZSk6CisgICAgICAgIChKU1ZhbHVlSXNTeW1ib2wpOgorICAgICAg
ICAoSlNWYWx1ZU1ha2VTeW1ib2wpOgorICAgICAgICAqIEFQSS9KU1ZhbHVlUmVmLmg6CisgICAg
ICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkuYzoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIEFQ
SS90ZXN0cy90ZXN0YXBpLm1tOgorICAgICAgICAodGVzdE9iamVjdGl2ZUNBUElNYWluKToKKwog
MjAxNy0wOC0yMiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZSBhcmUgdXNpbmcgdmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQgd2hlbiB0aGVyZSBtYXkg
bm90IGJlIGEgdmFsdWUgcHJvZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0
UmVmLmNwcAppbmRleCBjZWZlZjY2MTQ1ZGYyZWI1OWFmMWQwMTE3YjZjZWFhZGZhNmRmNjFlLi4w
ZmUzZGVmMWI4ZDAwNDRhM2IyMWIxODY5N2VhYTNlMzM5MTA0ZWZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtMzMzLDYgKzMzMyw5NCBAQCB2b2lkIEpT
T2JqZWN0U2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBK
U1N0cmluZ1JlZiBwcm9wZQogICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2Vw
dGlvbik7CiB9CiAKK2Jvb2wgSlNPYmplY3RIYXNQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4
LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYga2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pCit7CisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhj
dHgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisKKyAgICBKU09iamVjdCoganNP
YmplY3QgPSB0b0pTKG9iamVjdCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IHRvSlMoZXhlYywg
a2V5KS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRl
ZChleGVjLCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgcmVzdWx0ID0ganNPYmplY3QtPmhhc1Byb3BlcnR5
KGV4ZWMsIGlkZW50KTsKKyAgICBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChleGVjLCBleGNlcHRp
b24pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0pTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9w
ZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYg
a2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAg
ICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihl
eGVjKTsKKworICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAgICBJZGVu
dGlmaWVyIGlkZW50ID0gdG9KUyhleGVjLCBrZXkpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAg
aWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9u
U3RhdHVzOjpEaWRUaHJvdykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBKU1ZhbHVl
IGpzVmFsdWUgPSBqc09iamVjdC0+Z2V0KGV4ZWMsIGlkZW50KTsKKyAgICBoYW5kbGVFeGNlcHRp
b25JZk5lZWRlZChleGVjLCBleGNlcHRpb24pOworICAgIHJldHVybiB0b1JlZihleGVjLCBqc1Zh
bHVlKTsKK30KKwordm9pZCBKU09iamVjdFNldFByb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgs
IEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFsdWVSZWYgdmFsdWUsIEpT
UHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sK
KyAgICBpZiAoIWN0eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCoganNPYmpl
Y3QgPSB0b0pTKG9iamVjdCk7CisgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdG9KUyhleGVjLCB2YWx1
ZSk7CisKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gdG9KUyhleGVjLCBrZXkpLnRvUHJvcGVydHlL
ZXkoZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlv
bikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ym9vbCBkb2VzTm90SGF2ZVByb3BlcnR5ID0gYXR0cmlidXRlcyAmJiAhanNPYmplY3QtPmhhc1By
b3BlcnR5KGV4ZWMsIGlkZW50KTsKKyAgICBpZiAoTElLRUxZKCFzY29wZS5leGNlcHRpb24oKSkp
IHsKKyAgICAgICAgaWYgKGRvZXNOb3RIYXZlUHJvcGVydHkpIHsKKyAgICAgICAgICAgIFByb3Bl
cnR5RGVzY3JpcHRvciBkZXNjKGpzVmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAganNP
YmplY3QtPm1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KGpzT2JqZWN0LCBleGVjLCBp
ZGVudCwgZGVzYywgZmFsc2UpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QoanNPYmplY3QpOworICAgICAgICAgICAganNPYmplY3QtPm1ldGhvZFRh
YmxlKCktPnB1dChqc09iamVjdCwgZXhlYywgaWRlbnQsIGpzVmFsdWUsIHNsb3QpOworICAgICAg
ICB9CisgICAgfQorICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbik7
Cit9CisKK2Jvb2wgSlNPYmplY3REZWxldGVQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBK
U09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYga2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
Cit7CisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgp
OworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisKKyAgICBKU09iamVjdCoganNPYmpl
Y3QgPSB0b0pTKG9iamVjdCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IHRvSlMoZXhlYywga2V5
KS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChl
eGVjLCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGJvb2wgcmVzdWx0ID0ganNPYmplY3QtPm1ldGhvZFRhYmxlKCkt
PmRlbGV0ZVByb3BlcnR5KGpzT2JqZWN0LCBleGVjLCBpZGVudCk7CisgICAgaGFuZGxlRXhjZXB0
aW9uSWZOZWVkZWQoZXhlYywgZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBK
U1ZhbHVlUmVmIEpTT2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KEpTQ29udGV4dFJlZiBjdHgsIEpT
T2JqZWN0UmVmIG9iamVjdCwgdW5zaWduZWQgcHJvcGVydHlJbmRleCwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKQogewogICAgIGlmICghY3R4KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2Jq
ZWN0UmVmLmgKaW5kZXggOTVkNTNiN2Y0ZTU4ZTk2ZjBjYmMzMTU5NWFmOWM0NjE5NzhhYTQzZC4u
ZjJhNmVlY2Y1ZTc1ZDIyYTEwZGFhN2Y3Zjc0NWQzNGZmMjk2NjAyZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaApAQCAtNTM2LDkgKzUzNiw5IEBAIEpTX0VYUE9SVCBK
U1ZhbHVlUmVmIEpTT2JqZWN0R2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RS
ZWYgb2JqZWN0LCBKCiBAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCiBA
cGFyYW0gb2JqZWN0IFRoZSBKU09iamVjdCB3aG9zZSBwcm9wZXJ0eSB5b3Ugd2FudCB0byBzZXQu
CiBAcGFyYW0gcHJvcGVydHlOYW1lIEEgSlNTdHJpbmcgY29udGFpbmluZyB0aGUgcHJvcGVydHkn
cyBuYW1lLgotQHBhcmFtIHZhbHVlIEEgSlNWYWx1ZSB0byB1c2UgYXMgdGhlIHByb3BlcnR5J3Mg
dmFsdWUuCi1AcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hp
Y2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90
IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgorQHBhcmFtIHZhbHVlIEEgSlNWYWx1ZVJlZiB0
byB1c2UgYXMgdGhlIHByb3BlcnR5J3MgdmFsdWUuCiBAcGFyYW0gYXR0cmlidXRlcyBBIGxvZ2lj
YWxseSBPUmVkIHNldCBvZiBKU1Byb3BlcnR5QXR0cmlidXRlcyB0byBnaXZlIHRvIHRoZSBwcm9w
ZXJ0eS4KK0BwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGlj
aCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3Qg
Y2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAqLwogSlNfRVhQT1JUIHZvaWQgSlNPYmplY3RT
ZXRQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5n
UmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMg
YXR0cmlidXRlcywgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKIApAQCAtNTU1LDYgKzU1NSw1NCBA
QCBKU19FWFBPUlQgYm9vbCBKU09iamVjdERlbGV0ZVByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgs
IEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdAogCiAvKiEKIEBmdW5jdGlvbgorQGFic3RyYWN0IFRl
c3RzIHdoZXRoZXIgYW4gb2JqZWN0IGhhcyBhIGdpdmVuIHByb3BlcnR5IHVzaW5nIGEgSlNWYWx1
ZVJlZiBhcyB0aGUgcHJvcGVydHkga2V5LgorQHBhcmFtIG9iamVjdCBUaGUgSlNPYmplY3QgdG8g
dGVzdC4KK0BwYXJhbSBwcm9wZXJ0eUtleSBBIEpTVmFsdWVSZWYgY29udGFpbmluZyB0aGUgcHJv
cGVydHkga2V5IHRvIHVzZSB3aGVuIGxvb2tpbmcgdXAgdGhlIHByb3BlcnR5LgorQHBhcmFtIGV4
Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4
Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFu
IGV4Y2VwdGlvbi4KK0ByZXN1bHQgdHJ1ZSBpZiB0aGUgb2JqZWN0IGhhcyBhIHByb3BlcnR5IHdo
b3NlIG5hbWUgbWF0Y2hlcyBwcm9wZXJ0eUtleSwgb3RoZXJ3aXNlIGZhbHNlLgorQGRpc2N1c3Np
b24gVGhpcyBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyBwZXJmb3JtaW5nICJwcm9wZXJ0eUtleSBp
biBvYmplY3QiIGZyb20gSmF2YVNjcmlwdC4KKyovCitKU19FWFBPUlQgYm9vbCBKU09iamVjdEhh
c1Byb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1
ZVJlZiBwcm9wZXJ0eUtleSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBf
MTMsIDExXzApOworCisvKiEKK0BmdW5jdGlvbgorQGFic3RyYWN0IEdldHMgYSBwcm9wZXJ0eSBm
cm9tIGFuIG9iamVjdCB1c2luZyBhIEpTVmFsdWVSZWYgYXMgdGhlIHByb3BlcnR5IGtleS4KK0Bw
YXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KK0BwYXJhbSBvYmplY3QgVGhl
IEpTT2JqZWN0IHdob3NlIHByb3BlcnR5IHlvdSB3YW50IHRvIGdldC4KK0BwYXJhbSBwcm9wZXJ0
eUtleSBBIEpTVmFsdWVSZWYgY29udGFpbmluZyB0aGUgcHJvcGVydHkga2V5IHRvIHVzZSB3aGVu
IGxvb2tpbmcgdXAgdGhlIHByb3BlcnR5LgorQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8g
YSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNz
IE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KK0ByZXN1bHQg
VGhlIHByb3BlcnR5J3MgdmFsdWUgaWYgb2JqZWN0IGhhcyB0aGUgcHJvcGVydHkga2V5LCBvdGhl
cndpc2UgdGhlIHVuZGVmaW5lZCB2YWx1ZS4KK0BkaXNjdXNzaW9uIFRoaXMgZnVuY3Rpb24gaXMg
dGhlIHNhbWUgYXMgcGVyZm9ybWluZyAib2JqZWN0W3Byb3BlcnR5S2V5XSIgZnJvbSBKYXZhU2Ny
aXB0LgorKi8KK0pTX0VYUE9SVCBKU1ZhbHVlUmVmIEpTT2JqZWN0R2V0UHJvcGVydHlLZXkoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIHByb3BlcnR5S2V5
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMywgMTFfMCk7CisKKy8q
IQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgU2V0cyBhIHByb3BlcnR5IG9uIGFuIG9iamVjdCB1c2lu
ZyBhIEpTVmFsdWVSZWYgYXMgdGhlIHByb3BlcnR5IGtleS4KK0BwYXJhbSBjdHggVGhlIGV4ZWN1
dGlvbiBjb250ZXh0IHRvIHVzZS4KK0BwYXJhbSBvYmplY3QgVGhlIEpTT2JqZWN0IHdob3NlIHBy
b3BlcnR5IHlvdSB3YW50IHRvIHNldC4KK0BwYXJhbSBwcm9wZXJ0eUtleSBBIEpTVmFsdWVSZWYg
Y29udGFpbmluZyB0aGUgcHJvcGVydHkga2V5IHRvIHVzZSB3aGVuIGxvb2tpbmcgdXAgdGhlIHBy
b3BlcnR5LgorQHBhcmFtIHZhbHVlIEEgSlNWYWx1ZVJlZiB0byB1c2UgYXMgdGhlIHByb3BlcnR5
J3MgdmFsdWUuCitAcGFyYW0gYXR0cmlidXRlcyBBIGxvZ2ljYWxseSBPUmVkIHNldCBvZiBKU1By
b3BlcnR5QXR0cmlidXRlcyB0byBnaXZlIHRvIHRoZSBwcm9wZXJ0eS4KK0BwYXJhbSBleGNlcHRp
b24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRp
b24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNl
cHRpb24uCitAZGlzY3Vzc2lvbiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHBlcmZvcm1p
bmcgIm9iamVjdFtwcm9wZXJ0eUtleV0gPSB2YWx1ZSIgZnJvbSBKYXZhU2NyaXB0LgorKi8KK0pT
X0VYUE9SVCB2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNP
YmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIHByb3BlcnR5S2V5LCBKU1ZhbHVlUmVmIHZhbHVl
LCBKU1Byb3BlcnR5QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
IENGX0FWQUlMQUJMRSgxMF8xMywgMTFfMCk7CisKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3Qg
RGVsZXRlcyBhIHByb3BlcnR5IGZyb20gYW4gb2JqZWN0IHVzaW5nIGEgSlNWYWx1ZVJlZiBhcyB0
aGUgcHJvcGVydHkga2V5LgorQHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNl
LgorQHBhcmFtIG9iamVjdCBUaGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQgdG8g
ZGVsZXRlLgorQHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBw
cm9wZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0g
ZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4g
ZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUg
YW4gZXhjZXB0aW9uLgorQHJlc3VsdCB0cnVlIGlmIHRoZSBkZWxldGUgb3BlcmF0aW9uIHN1Y2Nl
ZWRzLCBvdGhlcndpc2UgZmFsc2UgKGZvciBleGFtcGxlLCBpZiB0aGUgcHJvcGVydHkgaGFzIHRo
ZSBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgYXR0cmlidXRlIHNldCkuCitAZGlzY3Vz
c2lvbiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHBlcmZvcm1pbmcgImRlbGV0ZSBvYmpl
Y3RbcHJvcGVydHlLZXldIiBmcm9tIEphdmFTY3JpcHQuCisqLworSlNfRVhQT1JUIGJvb2wgSlNP
YmplY3REZWxldGVQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmpl
Y3QsIEpTVmFsdWVSZWYgcHJvcGVydHlLZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZB
SUxBQkxFKDEwXzEzLCAxMV8wKTsKKworLyohCitAZnVuY3Rpb24KIEBhYnN0cmFjdCBHZXRzIGEg
cHJvcGVydHkgZnJvbSBhbiBvYmplY3QgYnkgbnVtZXJpYyBpbmRleC4KIEBwYXJhbSBjdHggVGhl
IGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KIEBwYXJhbSBvYmplY3QgVGhlIEpTT2JqZWN0IHdo
b3NlIHByb3BlcnR5IHlvdSB3YW50IHRvIGdldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVl
LmgKaW5kZXggMTQxMGRkNzRhMTdmOTcwNzA2ZTQ0ZGVkMjRjY2QxNzBjMzQ3OWMyZS4uNWM1OWYy
ZjFhNGE2ZTBhOGFhNzZiZjU2YjRkMTQ5NjdlMjFkNzZjNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1ZhbHVlLmgKQEAgLTE0OSw2ICsxNDksMTUgQEAgTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzks
IDdfMCkKICsgKEpTVmFsdWUgKil2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRleHQ6KEpTQ29udGV4
dCAqKWNvbnRleHQ7CiAKIC8qIQorIEBtZXRob2QKKyBAYWJzdHJhY3QgQ3JlYXRlIGEgbmV3LCB1
bmlxdWUsIHN5bWJvbCBvYmplY3QuCisgQHBhcmFtIGRlc2NyaXB0aW9uIFRoZSBkZXNjcmlwdGlv
biBvZiB0aGUgc3ltYm9sIG9iamVjdCBiZWluZyBjcmVhdGVkLgorIEBwYXJhbSBjb250ZXh0IFRo
ZSBKU0NvbnRleHQgdG8gd2hpY2ggdGhlIHJlc3VsdGluZyBKU1ZhbHVlIGJlbG9uZ3MuCisgQHJl
c3VsdCBUaGUgSlNWYWx1ZSByZXByZXNlbnRpbmcgYSB1bmlxdWUgSmF2YVNjcmlwdCB2YWx1ZSB3
aXRoIHR5cGUgc3ltYm9sLgorICovCisrIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3U3ltYm9sRnJv
bURlc2NyaXB0aW9uOihOU1N0cmluZyAqKWRlc2NyaXB0aW9uIEluQ29udGV4dDooSlNDb250ZXh0
ICopY29udGV4dCBOU19BVkFJTEFCTEUoMTBfMTMsIDExXzApOworCisvKiEKIEBtZXRob2Rncm91
cCBDb252ZXJ0aW5nIHRvIE9iamVjdGl2ZS1DIFR5cGVzCiBAZGlzY3Vzc2lvbiBXaGVuIGNvbnZl
cnRpbmcgYmV0d2VlbiBKYXZhU2NyaXB0IHZhbHVlcyBhbmQgT2JqZWN0aXZlLUMgb2JqZWN0cyBh
IGNvcHkgaXMKICBwZXJmb3JtZWQuIFZhbHVlcyBvZiB0eXBlcyBsaXN0ZWQgYmVsb3cgYXJlIGNv
cGllZCB0byB0aGUgY29ycmVzcG9uZGluZwpAQCAtMzA1LDQzICszMTQsNTggQEAgTlNfQ0xBU1Nf
QVZBSUxBQkxFKDEwXzksIDdfMCkKIC8qIQogQG1ldGhvZGdyb3VwIEFjY2Vzc2luZyBQcm9wZXJ0
aWVzCiAqLworCisjaWYgKGRlZmluZWQoVEFSR0VUX09TX01BQykgJiYgVEFSR0VUX09TX01BQyAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKGRlZmluZWQo
VEFSR0VUX09TX0lQSE9ORSkgJiYgVEFSR0VUX09TX0lQSE9ORSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCisKIC8qIQogQG1ldGhvZAogQGFic3RyYWN0IEFj
Y2VzcyBhIHByb3BlcnR5IG9mIGEgSlNWYWx1ZS4KIEByZXN1bHQgVGhlIEpTVmFsdWUgZm9yIHRo
ZSByZXF1ZXN0ZWQgcHJvcGVydHkgb3IgdGhlIEpTVmFsdWUgPGNvZGU+dW5kZWZpbmVkPC9jb2Rl
PiAKICBpZiB0aGUgcHJvcGVydHkgZG9lcyBub3QgZXhpc3QuCitAZGlzY3Vzc2lvbiBCZWZvcmUg
bWFjT1MgMTAuMTMgYW5kIGlPUyAxMSA8Y29kZT5wcm9wZXJ0eTwvY29kZT4gd2FzIGFuIE5TU3Ry
aW5nICosIHRoaXMgd2FzIHJlbGF4ZWQgdG8gaWQgc28gSmF2YVNjcmlwdCBTeW1ib2wgcHJvcGVy
dGllcyBjb3VsZCBiZSBhY2Nlc3NlZC4KICovCi0tIChKU1ZhbHVlICopdmFsdWVGb3JQcm9wZXJ0
eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5Oihp
ZClwcm9wZXJ0eTsKIAogLyohCiBAbWV0aG9kCiBAYWJzdHJhY3QgU2V0IGEgcHJvcGVydHkgb24g
YSBKU1ZhbHVlLgorQGRpc2N1c3Npb24gQmVmb3JlIG1hY09TIDEwLjEzIGFuZCBpT1MgMTEgPGNv
ZGU+cHJvcGVydHk8L2NvZGU+IHdhcyBhbiBOU1N0cmluZyAqLCB0aGlzIHdhcyByZWxheGVkIHRv
IGlkIHNvIEphdmFTY3JpcHQgU3ltYm9sIHByb3BlcnRpZXMgY291bGQgYmUgc2V0LgogKi8KLS0g
KHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5
OworLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yUHJvcGVydHk6KGlkKXByb3BlcnR5Owog
CiAvKiEKIEBtZXRob2QKIEBhYnN0cmFjdCBEZWxldGUgYSBwcm9wZXJ0eSBmcm9tIGEgSlNWYWx1
ZS4KIEByZXN1bHQgWUVTIGlmIGRlbGV0aW9uIGlzIHN1Y2Nlc3NmdWwsIE5PIG90aGVyd2lzZS4K
K0BkaXNjdXNzaW9uIEJlZm9yZSBtYWNPUyAxMC4xMyBhbmQgaU9TIDExIDxjb2RlPnByb3BlcnR5
PC9jb2RlPiB3YXMgYW4gTlNTdHJpbmcgKiwgdGhpcyB3YXMgcmVsYXhlZCB0byBpZCBzbyBKYXZh
U2NyaXB0IFN5bWJvbCBwcm9wZXJ0aWVzIGNvdWxkIGJlIGRlbGV0ZWQuCiAqLwotLSAoQk9PTClk
ZWxldGVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKEJPT0wpZGVsZXRlUHJvcGVy
dHk6KGlkKXByb3BlcnR5OwogCiAvKiEKIEBtZXRob2QKIEBhYnN0cmFjdCBDaGVjayBpZiBhIEpT
VmFsdWUgaGFzIGEgcHJvcGVydHkuCiBAZGlzY3Vzc2lvbiBUaGlzIG1ldGhvZCBoYXMgdGhlIHNh
bWUgZnVuY3Rpb24gYXMgdGhlIEphdmFTY3JpcHQgb3BlcmF0b3IgPGNvZGU+aW48L2NvZGU+Lgog
QHJlc3VsdCBSZXR1cm5zIFlFUyBpZiBwcm9wZXJ0eSBpcyBwcmVzZW50IG9uIHRoZSB2YWx1ZS4K
K0BkaXNjdXNzaW9uIEJlZm9yZSBtYWNPUyAxMC4xMyBhbmQgaU9TIDExIDxjb2RlPnByb3BlcnR5
PC9jb2RlPiB3YXMgYW4gTlNTdHJpbmcgKiwgdGhpcyB3YXMgcmVsYXhlZCB0byBpZCBzbyBKYXZh
U2NyaXB0IFN5bWJvbCBwcm9wZXJ0aWVzIGNvdWxkIGJlIGNoZWNrZWQgZm9yIGV4aXN0YW5jZS4K
ICovCi0tIChCT09MKWhhc1Byb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLSAoQk9PTClo
YXNQcm9wZXJ0eTooaWQpcHJvcGVydHk7CiAKIC8qIQogQG1ldGhvZAogQGFic3RyYWN0IERlZmlu
ZSBwcm9wZXJ0aWVzIHdpdGggY3VzdG9tIGRlc2NyaXB0b3JzIG9uIEpTVmFsdWVzLgogQGRpc2N1
c3Npb24gVGhpcyBtZXRob2QgbWF5IGJlIHVzZWQgdG8gY3JlYXRlIGEgZGF0YSBvciBhY2Nlc3Nv
ciBwcm9wZXJ0eSBvbiBhbiBvYmplY3QuCiAgVGhpcyBtZXRob2Qgb3BlcmF0ZXMgaW4gYWNjb3Jk
YW5jZSB3aXRoIHRoZSBPYmplY3QuZGVmaW5lUHJvcGVydHkgbWV0aG9kIGluIHRoZSAKLSBKYXZh
U2NyaXB0IGxhbmd1YWdlLgorIEphdmFTY3JpcHQgbGFuZ3VhZ2UuIEJlZm9yZSBtYWNPUyAxMC4x
MyBhbmQgaU9TIDExIDxjb2RlPnByb3BlcnR5PC9jb2RlPiB3YXMgYW4gTlNTdHJpbmcgKiwgdGhp
cyB3YXMgcmVsYXhlZCB0byBpZCBzbyBKYXZhU2NyaXB0IFN5bWJvbCBwcm9wZXJ0aWVzIGNvdWxk
IGJlIGRlZmluZWQuCiAqLworLSAodm9pZClkZWZpbmVQcm9wZXJ0eTooaWQpcHJvcGVydHkgZGVz
Y3JpcHRvcjooaWQpZGVzY3JpcHRvcjsKKworI2Vsc2UgLy8gKGRlZmluZWQoVEFSR0VUX09TX01B
QykgJiYgVEFSR0VUX09TX01BQyAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTMwMCkgfHwgKGRlZmluZWQoVEFSR0VUX09TX0lQSE9ORSkgJiYgVEFSR0VUX09TX0lQSE9O
RSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCistIChKU1Zh
bHVlICopdmFsdWVGb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKHZvaWQpc2V0
VmFsdWU6KGlkKXZhbHVlIGZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLSAoQk9P
TClkZWxldGVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKEJPT0wpaGFzUHJvcGVy
dHk6KE5TU3RyaW5nICopcHJvcGVydHk7CiAtICh2b2lkKWRlZmluZVByb3BlcnR5OihOU1N0cmlu
ZyAqKXByb3BlcnR5IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0b3I7CisjZW5kaWYKIAogLyohCiBA
bWV0aG9kCkBAIC00MDMsNiArNDI3LDEyIEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCA3XzAp
CiBAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGlzT2JqZWN0OwogCiAvKiEKKyBAcHJvcGVydHkK
KyBAYWJzdHJhY3QgQ2hlY2sgaWYgYSBKU1ZhbHVlIGlzIGEgc3ltYm9sLgorICovCitAcHJvcGVy
dHkgKHJlYWRvbmx5KSBCT09MIGlzU3ltYm9sIE5TX0FWQUlMQUJMRSgxMF8xMywgMTFfMCk7CisK
Ky8qIQogQHByb3BlcnR5CiBAYWJzdHJhY3QgQ2hlY2sgaWYgYSBKU1ZhbHVlIGlzIGFuIGFycmF5
LgogKi8gCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KaW5kZXggNjk4NmZhZTgzMWUy
ZWNjNmViYzJiZWRhZTRlNjhhYzIyZjU3OGU4MC4uNzE4MDFiMjExOTQ3ZDBlOTkxOWVkZjc0ZjJi
ZGM5ZTQzYzMwZGM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Zh
bHVlLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQpAQCAtMzks
NiArMzksNyBAQAogI2ltcG9ydCAiSlNDSlNWYWx1ZS5oIgogI2ltcG9ydCAiU3Ryb25nLmgiCiAj
aW1wb3J0ICJTdHJvbmdJbmxpbmVzLmgiCisjaW1wb3J0IDx3dGYvRXhwZWN0ZWQuaD4KICNpbXBv
cnQgPHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgogI2ltcG9ydCA8d3Rm
L0xvY2suaD4KQEAgLTEzNiw2ICsxMzcsMTMgQEAgTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5
RGVzY3JpcHRvclNldEtleSA9IEAic2V0IjsKICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRo
SlNWYWx1ZVJlZjpKU1ZhbHVlTWFrZVVuZGVmaW5lZChbY29udGV4dCBKU0dsb2JhbENvbnRleHRS
ZWZdKSBpbkNvbnRleHQ6Y29udGV4dF07CiB9CiAKKysgKEpTVmFsdWUgKil2YWx1ZVdpdGhOZXdT
eW1ib2xGcm9tRGVzY3JpcHRpb246KE5TU3RyaW5nICopZGVzY3JpcHRpb24gSW5Db250ZXh0OihK
U0NvbnRleHQgKiljb250ZXh0Cit7CisgICAgSlNTdHJpbmdSZWYgc3RyaW5nID0gSlNTdHJpbmdD
cmVhdGVXaXRoQ0ZTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oZGVzY3JpcHRp
b24pKTsKKyAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpKU1ZhbHVlTWFr
ZVN5bWJvbChbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBzdHJpbmcpIGluQ29udGV4dDpj
b250ZXh0XTsKK30KKworCiAtIChpZCl0b09iamVjdAogewogICAgIHJldHVybiB2YWx1ZVRvT2Jq
ZWN0KF9jb250ZXh0LCBtX3ZhbHVlKTsKQEAgLTIxOSw3MiArMjI3LDgwIEBAIE5TU3RyaW5nICog
Y29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXkgPSBAInNldCI7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KE5TU3RyaW5nICopcHJv
cGVydHlOYW1lCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHQsIHR5cGVuYW1lIE5TU3RyaW5nRnVu
Y3Rpb24sIHR5cGVuYW1lIEpTVmFsdWVGdW5jdGlvbiwgdHlwZW5hbWUuLi4gVHlwZXM+Citpbmxp
bmUgRXhwZWN0ZWQ8UmVzdWx0LCBKU1ZhbHVlUmVmPiBwZXJmb3JtUHJvcGVydHlPcGVyYXRpb24o
TlNTdHJpbmdGdW5jdGlvbiBzdHJpbmdGdW5jdGlvbiwgSlNWYWx1ZUZ1bmN0aW9uIGpzRnVuY3Rp
b24sIEpTVmFsdWUqIHZhbHVlLCBpZCBwcm9wZXJ0eUtleSwgVHlwZXMuLi4gYXJndW1lbnRzKQog
ewotICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBKU09iamVjdFJlZiBvYmplY3Qg
PSBKU1ZhbHVlVG9PYmplY3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUs
ICZleGNlcHRpb24pOworICAgIEpTQ29udGV4dCogY29udGV4dCA9IFt2YWx1ZSBjb250ZXh0XTsK
KyAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IG51bGxwdHI7CisgICAgSlNPYmplY3RSZWYgb2Jq
ZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIFt2YWx1
ZSBKU1ZhbHVlUmVmXSwgJmV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAg
cmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAg
ICAgICAgcmV0dXJuIFVuZXhwZWN0ZWRUeXBlPEpTVmFsdWVSZWY+KGV4Y2VwdGlvbik7CiAKLSAg
ICBKU1N0cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5n
UmVmKXByb3BlcnR5TmFtZSk7Ci0gICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU09iamVjdEdldFBy
b3BlcnR5KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIG5hbWUsICZleGNl
cHRpb24pOwotICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKLSAgICBpZiAoZXhjZXB0aW9uKQot
ICAgICAgICByZXR1cm4gW19jb250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRp
b25dOworICAgIFJlc3VsdCByZXN1bHQ7CisgICAgLy8gSWYgaXQncyBhIE5TU3RyaW5nIGFscmVh
ZHksIHJlZHVjZSBpbmRpcmVjdGlvbiBhbmQganVzdCBwYXNzIHRoZSBOU1N0cmluZy4KKyAgICBp
ZiAoW3Byb3BlcnR5S2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKKyAgICAg
ICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKHJlaW50ZXJw
cmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KHByb3BlcnR5S2V5KSk7CisgICAgICAgIHJlc3VsdCA9IHN0
cmluZ0Z1bmN0aW9uKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgbmFtZSwg
YXJndW1lbnRzLi4uLCAmZXhjZXB0aW9uKTsKKyAgICAgICAgSlNTdHJpbmdSZWxlYXNlKG5hbWUp
OworICAgIH0gZWxzZQorICAgICAgICByZXN1bHQgPSBqc0Z1bmN0aW9uKFtjb250ZXh0IEpTR2xv
YmFsQ29udGV4dFJlZl0sIG9iamVjdCwgW1tKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpwcm9wZXJ0
eUtleSBpbkNvbnRleHQ6Y29udGV4dF0gSlNWYWx1ZVJlZl0sIGFyZ3VtZW50cy4uLiwgJmV4Y2Vw
dGlvbik7CisgICAgcmV0dXJuIEV4cGVjdGVkPFJlc3VsdCwgSlNWYWx1ZVJlZj4ocmVzdWx0KTsK
K30KIAotICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOnJlc3VsdCBpbkNv
bnRleHQ6X2NvbnRleHRdOworLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KGlkKWtleQor
eworICAgIGF1dG8gcmVzdWx0ID0gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uPEpTVmFsdWVSZWY+
KEpTT2JqZWN0R2V0UHJvcGVydHksIEpTT2JqZWN0R2V0UHJvcGVydHlLZXksIHNlbGYsIGtleSk7
CisgICAgaWYgKHJlc3VsdC5lcnJvcigpKQorICAgICAgICByZXR1cm4gW19jb250ZXh0IHZhbHVl
RnJvbU5vdGlmeUV4Y2VwdGlvbjpyZXN1bHQuZXJyb3IoKV07CisKKyAgICByZXR1cm4gW0pTVmFs
dWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpyZXN1bHQudmFsdWUoKSBpbkNvbnRleHQ6X2NvbnRleHRd
OwogfQogCi0tICh2b2lkKXNldFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooTlNTdHJpbmcg
Kilwcm9wZXJ0eU5hbWUKKy0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZvclByb3BlcnR5Oihp
ZClrZXkKIHsKLSAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYg
b2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBt
X3ZhbHVlLCAmZXhjZXB0aW9uKTsKLSAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIFtfY29u
dGV4dCBub3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
KyAgICAvLyBXZSBuZWVkIFVuaXQgYnVzaW5lc3MgYmVjYXVzZSB2b2lkIGNhbid0IGJlIGFzc2ln
bmVkIHRvIGluIHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbiBhbmQgSSBkb24ndCB3YW50IHRvIGR1
cGxpY2F0ZSB0aGUgY29kZS4uLgorICAgIHVzaW5nIFVuaXQgPSBzdGQ6OnR1cGxlPD47CisgICAg
YXV0byBzdHJpbmdTZXRQcm9wZXJ0eSA9IFtdIChhdXRvLi4uIGFyZ3MpIC0+IFVuaXQgeworICAg
ICAgICBKU09iamVjdFNldFByb3BlcnR5KGFyZ3MuLi4pOworICAgICAgICByZXR1cm4geyB9Owor
ICAgIH07CiAKLSAgICBKU1N0cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJp
bmcoKENGU3RyaW5nUmVmKXByb3BlcnR5TmFtZSk7Ci0gICAgSlNPYmplY3RTZXRQcm9wZXJ0eShb
X2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgb2JqZWN0LCBuYW1lLCBvYmplY3RUb1ZhbHVl
KF9jb250ZXh0LCB2YWx1ZSksIDAsICZleGNlcHRpb24pOwotICAgIEpTU3RyaW5nUmVsZWFzZShu
YW1lKTsKLSAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIFtfY29udGV4dCBub3RpZnlFeGNl
cHRpb246ZXhjZXB0aW9uXTsKKyAgICBhdXRvIGpzVmFsdWVTZXRQcm9wZXJ0eSA9IFtdIChhdXRv
Li4uIGFyZ3MpIC0+IFVuaXQgeworICAgICAgICBKU09iamVjdFNldFByb3BlcnR5S2V5KGFyZ3Mu
Li4pOworICAgICAgICByZXR1cm4geyB9OworICAgIH07CisKKyAgICBhdXRvIHJlc3VsdCA9IHBl
cmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbjxVbml0PihzdHJpbmdTZXRQcm9wZXJ0eSwganNWYWx1ZVNl
dFByb3BlcnR5LCBzZWxmLCBrZXksIG9iamVjdFRvVmFsdWUoX2NvbnRleHQsIHZhbHVlKSwga0pT
UHJvcGVydHlBdHRyaWJ1dGVOb25lKTsKKyAgICBpZiAocmVzdWx0LmVycm9yKCkpIHsKKyAgICAg
ICAgW19jb250ZXh0IG5vdGlmeUV4Y2VwdGlvbjpyZXN1bHQuZXJyb3IoKV07CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiB9CiAKLS0gKEJPT0wpZGVsZXRlUHJvcGVydHk6KE5TU3RyaW5nICopcHJv
cGVydHlOYW1lCistIChCT09MKWRlbGV0ZVByb3BlcnR5OihpZClrZXkKIHsKLSAgICBKU1ZhbHVl
UmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2Jq
ZWN0KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsK
LSAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW19jb250ZXh0IGJvb2xGcm9tTm90
aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07Ci0KLSAgICBKU1N0cmluZ1JlZiBuYW1lID0gSlNTdHJp
bmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKXByb3BlcnR5TmFtZSk7Ci0gICAgQk9P
TCByZXN1bHQgPSBKU09iamVjdERlbGV0ZVByb3BlcnR5KFtfY29udGV4dCBKU0dsb2JhbENvbnRl
eHRSZWZdLCBvYmplY3QsIG5hbWUsICZleGNlcHRpb24pOwotICAgIEpTU3RyaW5nUmVsZWFzZShu
YW1lKTsKLSAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW19jb250ZXh0IGJvb2xG
cm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAg
IEV4cGVjdGVkPEJPT0wsIEpTVmFsdWVSZWY+IHJlc3VsdCA9IHBlcmZvcm1Qcm9wZXJ0eU9wZXJh
dGlvbjxCT09MPihKU09iamVjdERlbGV0ZVByb3BlcnR5LCBKU09iamVjdERlbGV0ZVByb3BlcnR5
S2V5LCBzZWxmLCBrZXkpOworICAgIGlmIChyZXN1bHQuZXJyb3IoKSkKKyAgICAgICAgcmV0dXJu
IFtfY29udGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpyZXN1bHQuZXJyb3IoKV07CisgICAg
cmV0dXJuIHJlc3VsdC52YWx1ZSgpOwogfQogCi0tIChCT09MKWhhc1Byb3BlcnR5OihOU1N0cmlu
ZyAqKXByb3BlcnR5TmFtZQorLSAoQk9PTCloYXNQcm9wZXJ0eTooaWQpa2V5CiB7Ci0gICAgSlNW
YWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVU
b09iamVjdChbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSwgJmV4Y2VwdGlv
bik7Ci0gICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFtfY29udGV4dCBib29sRnJv
bU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOworICAgIC8vIFRoZSBDLWFwaSBkb2Vzbid0IHJl
dHVybiBhbiBleGNlcHRpb24gdmFsdWUgZm9yIHRoZSBzdHJpbmcgdmVyc2lvbiBvZiBoYXMgcHJv
cGVydHkuCisgICAgYXV0byBzdHJpbmdIYXNQcm9wZXJ0eSA9IFtdIChKU0NvbnRleHRSZWYgY3R4
LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJl
ZiopIC0+IEJPT0wgeworICAgICAgICByZXR1cm4gSlNPYmplY3RIYXNQcm9wZXJ0eShjdHgsIG9i
amVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICB9OwogCi0gICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpT
U3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwotICAg
IEJPT0wgcmVzdWx0ID0gSlNPYmplY3RIYXNQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxDb250
ZXh0UmVmXSwgb2JqZWN0LCBuYW1lKTsKLSAgICBKU1N0cmluZ1JlbGVhc2UobmFtZSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICBFeHBlY3RlZDxCT09MLCBKU1ZhbHVlUmVmPiByZXN1bHQgPSBw
ZXJmb3JtUHJvcGVydHlPcGVyYXRpb248Qk9PTD4oc3RyaW5nSGFzUHJvcGVydHksIEpTT2JqZWN0
SGFzUHJvcGVydHlLZXksIHNlbGYsIGtleSk7CisgICAgaWYgKHJlc3VsdC5lcnJvcigpKQorICAg
ICAgICByZXR1cm4gW19jb250ZXh0IGJvb2xGcm9tTm90aWZ5RXhjZXB0aW9uOnJlc3VsdC5lcnJv
cigpXTsKKyAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7CiB9CiAKLS0gKHZvaWQpZGVmaW5lUHJv
cGVydHk6KE5TU3RyaW5nICopcHJvcGVydHkgZGVzY3JpcHRvcjooaWQpZGVzY3JpcHRvcgorLSAo
dm9pZClkZWZpbmVQcm9wZXJ0eTooaWQpa2V5IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0b3IKIHsK
LSAgICBbW19jb250ZXh0IGdsb2JhbE9iamVjdF1bQCJPYmplY3QiXSBpbnZva2VNZXRob2Q6QCJk
ZWZpbmVQcm9wZXJ0eSIgd2l0aEFyZ3VtZW50czpAWyBzZWxmLCBwcm9wZXJ0eSwgZGVzY3JpcHRv
ciBdXTsKKyAgICBbW19jb250ZXh0IGdsb2JhbE9iamVjdF1bQCJPYmplY3QiXSBpbnZva2VNZXRo
b2Q6QCJkZWZpbmVQcm9wZXJ0eSIgd2l0aEFyZ3VtZW50czpAWyBzZWxmLCBrZXksIGRlc2NyaXB0
b3IgXV07CiB9CiAKIC0gKEpTVmFsdWUgKil2YWx1ZUF0SW5kZXg6KE5TVUludGVnZXIpaW5kZXgK
QEAgLTM1Nyw2ICszNzMsMTEgQEAgTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5RGVzY3JpcHRv
clNldEtleSA9IEAic2V0IjsKICAgICByZXR1cm4gSlNWYWx1ZUlzT2JqZWN0KFtfY29udGV4dCBK
U0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlKTsKIH0KIAorLSAoQk9PTClpc1N5bWJvbAorewor
ICAgIHJldHVybiBKU1ZhbHVlSXNTeW1ib2woW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0s
IG1fdmFsdWUpOworfQorCiAtIChCT09MKWlzQXJyYXkKIHsKICAgICByZXR1cm4gSlNWYWx1ZUlz
QXJyYXkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUpOwpAQCAtNTM5LDEz
ICs1NjAsNyBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yU2V0S2V5ID0g
QCJzZXQiOwogCiAtIChKU1ZhbHVlICopb2JqZWN0Rm9yS2V5ZWRTdWJzY3JpcHQ6KGlkKWtleQog
ewotICAgIGlmICghW2tleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7Ci0gICAg
ICAgIGtleSA9IFtbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6a2V5IGluQ29udGV4dDpfY29udGV4
dF0gdG9TdHJpbmddOwotICAgICAgICBpZiAoIWtleSkKLSAgICAgICAgICAgIHJldHVybiBbSlNW
YWx1ZSB2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRleHQ6X2NvbnRleHRdOwotICAgIH0KLQotICAg
IHJldHVybiBbc2VsZiB2YWx1ZUZvclByb3BlcnR5OihOU1N0cmluZyAqKWtleV07CisgICAgcmV0
dXJuIFtzZWxmIHZhbHVlRm9yUHJvcGVydHk6a2V5XTsKIH0KIAogLSAoSlNWYWx1ZSAqKW9iamVj
dEF0SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRleApAQCAtNTU1LDEzICs1NzAsNyBA
QCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yU2V0S2V5ID0gQCJzZXQiOwog
CiAtICh2b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGZvcktleWVkU3Vic2NyaXB0OihOU09iamVj
dCA8TlNDb3B5aW5nPiAqKWtleQogewotICAgIGlmICghW2tleSBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dKSB7Ci0gICAgICAgIGtleSA9IFtbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6
a2V5IGluQ29udGV4dDpfY29udGV4dF0gdG9TdHJpbmddOwotICAgICAgICBpZiAoIWtleSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBbc2VsZiBzZXRWYWx1ZTpvYmplY3QgZm9y
UHJvcGVydHk6KE5TU3RyaW5nICopa2V5XTsKKyAgICBbc2VsZiBzZXRWYWx1ZTpvYmplY3QgZm9y
UHJvcGVydHk6a2V5XTsKIH0KIAogLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBhdEluZGV4
ZWRTdWJzY3JpcHQ6KE5TVUludGVnZXIpaW5kZXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWVSZWYuY3BwCmluZGV4IDY0YWM2YzMyNDZlYmZiOGNjNGYyNGMwNTgwOTk4YWU0MThkYWJh
NmQuLmQ0NmNmZjA2YTQ2NTRlOTUwYjUwMTVlNGNiMmJhZjQ5NmIwNDhjODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcApAQCAtODYsOCArODYsMTAgQEAgc3RhdGlj
IGJvb2wgZXZlcm5vdGVIYWNrTmVlZGVkKCkKICAgICAgICAgcmV0dXJuIGtKU1R5cGVOdW1iZXI7
CiAgICAgaWYgKGpzVmFsdWUuaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIGtKU1R5cGVTdHJp
bmc7Ci0gICAgQVNTRVJUKGpzVmFsdWUuaXNPYmplY3QoKSk7Ci0gICAgcmV0dXJuIGtKU1R5cGVP
YmplY3Q7CisgICAgaWYgKGpzVmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIGtKU1R5
cGVPYmplY3Q7CisgICAgQVNTRVJUKGpzVmFsdWUuaXNTeW1ib2woKSk7CisgICAgcmV0dXJuIGtK
U1R5cGVTeW1ib2w7CiB9CiAKIGJvb2wgSlNWYWx1ZUlzVW5kZWZpbmVkKEpTQ29udGV4dFJlZiBj
dHgsIEpTVmFsdWVSZWYgdmFsdWUpCkBAIC0xNjIsNiArMTY0LDE4IEBAIGJvb2wgSlNWYWx1ZUlz
T2JqZWN0KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpCiAgICAgcmV0dXJuIHRv
SlMoZXhlYywgdmFsdWUpLmlzT2JqZWN0KCk7CiB9CiAKK2Jvb2wgSlNWYWx1ZUlzU3ltYm9sKEpT
Q29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpCit7CisgICAgaWYgKCFjdHgpIHsKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIEpTTG9ja0hvbGRlciBsb2Nr
ZXIoZXhlYyk7CisKKyAgICByZXR1cm4gdG9KUyhleGVjLCB2YWx1ZSkuaXNTeW1ib2woKTsKK30K
KwogYm9vbCBKU1ZhbHVlSXNBcnJheShKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVl
KQogewogICAgIGlmICghY3R4KSB7CkBAIC0zMTYsNiArMzMwLDIyIEBAIEpTVmFsdWVSZWYgSlNW
YWx1ZU1ha2VOdW1iZXIoSlNDb250ZXh0UmVmIGN0eCwgZG91YmxlIHZhbHVlKQogICAgIHJldHVy
biB0b1JlZihleGVjLCBqc051bWJlcihwdXJpZnlOYU4odmFsdWUpKSk7CiB9CiAKK0pTVmFsdWVS
ZWYgSlNWYWx1ZU1ha2VTeW1ib2woSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgZGVzY3Jp
cHRpb24pCit7CisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0
b0pTKGN0eCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9DQVRDSF9TQ09QRShleGVjLT52bSgpKTsKKworICAgIEpTU3RyaW5nKiBqc0Rl
c2NyaXB0aW9uID0ganNTdHJpbmcoZXhlYywgZGVzY3JpcHRpb24gPyBkZXNjcmlwdGlvbi0+c3Ry
aW5nKCkgOiBTdHJpbmcoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0
cik7CisKKyAgICByZXR1cm4gdG9SZWYoZXhlYywgU3ltYm9sOjpjcmVhdGUoZXhlYywganNEZXNj
cmlwdGlvbikpOworfQorCiBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlU3RyaW5nKEpTQ29udGV4dFJl
ZiBjdHgsIEpTU3RyaW5nUmVmIHN0cmluZykKIHsKICAgICBpZiAoIWN0eCkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuaAppbmRleCA5ODE1ZGU3ODNjMGFlZTA3M2UzYTQ0OGJk
MGM3Y2FkZDRhOTUyYzA2Li4zYmU4NWIwYTljMTYyZmY3MGI2MWMwYjY3NmY1NGViNDRkNzA1YWYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuaApAQCAtNDIsNiArNDIsNyBA
QAogQGNvbnN0YW50ICAgICBrSlNUeXBlTnVtYmVyICAgICBBIHByaW1pdGl2ZSBudW1iZXIgdmFs
dWUuCiBAY29uc3RhbnQgICAgIGtKU1R5cGVTdHJpbmcgICAgIEEgcHJpbWl0aXZlIHN0cmluZyB2
YWx1ZS4KIEBjb25zdGFudCAgICAga0pTVHlwZU9iamVjdCAgICAgQW4gb2JqZWN0IHZhbHVlICht
ZWFuaW5nIHRoYXQgdGhpcyBKU1ZhbHVlUmVmIGlzIGEgSlNPYmplY3RSZWYpLgorQGNvbnN0YW50
ICAgICBrSlNUeXBlU3ltYm9sICAgICBBIHByaW1pdGl2ZSBzeW1ib2wgdmFsdWUuCiAqLwogdHlw
ZWRlZiBlbnVtIHsKICAgICBrSlNUeXBlVW5kZWZpbmVkLApAQCAtNDksNyArNTAsOCBAQCB0eXBl
ZGVmIGVudW0gewogICAgIGtKU1R5cGVCb29sZWFuLAogICAgIGtKU1R5cGVOdW1iZXIsCiAgICAg
a0pTVHlwZVN0cmluZywKLSAgICBrSlNUeXBlT2JqZWN0CisgICAga0pTVHlwZU9iamVjdCwKKyAg
ICBrSlNUeXBlU3ltYm9sIENGX0VOVU1fQVZBSUxBQkxFKDEwXzEzLCAxMV8wKQogfSBKU1R5cGU7
CiAKIC8qIQpAQCAtMTUxLDYgKzE1MywxNiBAQCBKU19FWFBPUlQgYm9vbCBKU1ZhbHVlSXNPYmpl
Y3QoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSk7CiAKIC8qIQogQGZ1bmN0aW9u
CitAYWJzdHJhY3QgICAgICAgVGVzdHMgd2hldGhlciBhIEphdmFTY3JpcHQgdmFsdWUncyB0eXBl
IGlzIHRoZSBzeW1ib2wgdHlwZS4KK0BwYXJhbSBjdHggICAgICBUaGUgZXhlY3V0aW9uIGNvbnRl
eHQgdG8gdXNlLgorQHBhcmFtIHZhbHVlICAgIFRoZSBKU1ZhbHVlIHRvIHRlc3QuCitAcmVzdWx0
ICAgICAgICAgdHJ1ZSBpZiB2YWx1ZSdzIHR5cGUgaXMgdGhlIHN5bWJvbCB0eXBlLCBvdGhlcndp
c2UgZmFsc2UuCisqLworSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzU3ltYm9sKEpTQ29udGV4dFJl
ZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpIENGX0FWQUlMQUJMRSgxMF8xMywgMTFfMCk7CisKKwor
LyohCitAZnVuY3Rpb24KIEBhYnN0cmFjdCBUZXN0cyB3aGV0aGVyIGEgSmF2YVNjcmlwdCB2YWx1
ZSBpcyBhbiBvYmplY3Qgd2l0aCBhIGdpdmVuIGNsYXNzIGluIGl0cyBjbGFzcyBjaGFpbi4KIEBw
YXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KIEBwYXJhbSB2YWx1ZSBUaGUg
SlNWYWx1ZSB0byB0ZXN0LgpAQCAtMjU5LDYgKzI3MSwxNSBAQCBKU19FWFBPUlQgSlNWYWx1ZVJl
ZiBKU1ZhbHVlTWFrZU51bWJlcihKU0NvbnRleHRSZWYgY3R4LCBkb3VibGUgbnVtYmVyKTsKIAog
LyohCiBAZnVuY3Rpb24KK0BhYnN0cmFjdCAgICAgICAgICAgIENyZWF0ZXMgYSBKYXZhU2NyaXB0
IHZhbHVlIG9mIHRoZSBzeW1ib2wgdHlwZS4KK0BwYXJhbSBjdHggICAgICAgICAgIFRoZSBleGVj
dXRpb24gY29udGV4dCB0byB1c2UuCitAcGFyYW0gZGVzY3JpcHRpb24gICBBIGRlc2NyaXB0aW9u
IG9mIHRoZSBuZXdseSBjcmVhdGVkIHN5bWJvbCB2YWx1ZS4KK0ByZXN1bHQgICAgICAgICAgICAg
IEEgdW5pcXVlIEpTVmFsdWUgb2YgdGhlIHN5bWJvbCB0eXBlLCB3aG9zZSBkZXNjcmlwdGlvbiBt
YXRjaGVzIHRoZSBvbmUgcHJvdmlkZWQuCisqLworSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNWYWx1
ZU1ha2VTeW1ib2woSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgZGVzY3JpcHRpb24pOwor
CisvKiEKK0BmdW5jdGlvbgogQGFic3RyYWN0ICAgICAgIENyZWF0ZXMgYSBKYXZhU2NyaXB0IHZh
bHVlIG9mIHRoZSBzdHJpbmcgdHlwZS4KIEBwYXJhbSBjdHggIFRoZSBleGVjdXRpb24gY29udGV4
dCB0byB1c2UuCiBAcGFyYW0gc3RyaW5nICAgVGhlIEpTU3RyaW5nIHRvIGFzc2lnbiB0byB0aGUg
bmV3bHkgY3JlYXRlZCBKU1ZhbHVlLiBUaGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy90ZXN0YXBpLmMKaW5kZXggOTJjMjJjNTlkOTE5ZDA2ZjEyNDhhZGRhMWFhNDAxMDRmYmY3ODc3
MS4uMWNiOWY4OGI4YzU5YzlhNWI1MTgyMTVmNDdjZjZlNDk0MGMxODkzNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKQEAgLTE0NDMsNiArMTQ0MywxNCBAQCBp
bnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQogICAgIEFTU0VSVChKU1ZhbHVlR2V0VHlw
ZShjb250ZXh0LCBqc0VtcHR5U3RyaW5nKSA9PSBrSlNUeXBlU3RyaW5nKTsKICAgICBBU1NFUlQo
SlNWYWx1ZUdldFR5cGUoY29udGV4dCwganNPbmVTdHJpbmcpID09IGtKU1R5cGVTdHJpbmcpOwog
CisgICAgeworICAgICAgICBKU1N0cmluZ1JlZiBtYWtlU3ltYm9sU2NyaXB0ID0gSlNTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIm5ldyBTeW1ib2woJ2RvcGUnKTsiKTsKKyAgICAgICAgSlNW
YWx1ZVJlZiBzeW1ib2xWYWx1ZSA9IEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgbWFrZVN5bWJv
bFNjcmlwdCwgTlVMTCwgTlVMTCwgMCwgTlVMTCk7CisgICAgICAgIEFTU0VSVChKU1ZhbHVlR2V0
VHlwZShjb250ZXh0LCBzeW1ib2xWYWx1ZSkgPT0ga0pTVHlwZVN5bWJvbCk7CisgICAgICAgIEFT
U0VSVChKU1ZhbHVlSXNTeW1ib2woY29udGV4dCwgc3ltYm9sVmFsdWUpKTsKKyAgICAgICAgSlNT
dHJpbmdSZWxlYXNlKG1ha2VTeW1ib2xTY3JpcHQpOworICAgIH0KKwogICAgIEFTU0VSVCghSlNW
YWx1ZUlzQm9vbGVhbihjb250ZXh0LCBOVUxMKSk7CiAgICAgQVNTRVJUKCFKU1ZhbHVlSXNPYmpl
Y3QoY29udGV4dCwgTlVMTCkpOwogICAgIEFTU0VSVCghSlNWYWx1ZUlzQXJyYXkoY29udGV4dCwg
TlVMTCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCmluZGV4
IGU5OGQ2Y2Y1ZGRiY2UxNzhlMDBjOWRkYjBlNTBlY2UzYWUzZDYxN2EuLjM0NTBlNGY4NWRmZGQ1
NTg4YWE3NTBlN2I2NDk3MGU1MmY0MzQxZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL3Rlc3RhcGkubW0KQEAgLTU3Miw2ICs1NzIsMTIgQEAgc3RhdGljIHZvaWQgdGVzdE9i
amVjdGl2ZUNBUElNYWluKCkKIAogICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICBKU0Nv
bnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFs
dWUgKnN5bWJvbCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAibmV3IFN5bWJvbCgnZG9wZScp
OyJdOworICAgICAgICBjaGVja1Jlc3VsdChAIlNob3VsZCBiZSBhIHN5bWJvbCB2YWx1ZSIsIHN5
bWJvbC5pc1N5bWJvbCk7CisgICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAg
IEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKICAgICAgICAg
SlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJbIF0iXTsKICAgICAg
ICAgY2hlY2tSZXN1bHQoQCJbIF0iLCByZXN1bHQuaXNBcnJheSk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319608</attachid>
            <date>2017-09-01 10:13:46 -0700</date>
            <delta_ts>2017-09-01 13:49:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175836-20170901101338.patch</filename>
            <type>text/plain</type>
            <size>29628</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NDhmZjkxYTg1NzAzYWIwNDg3ZTczOWI0M2Y1NWM4M2RjMzEzNWE2Li4wNzVmYjhkNzc3MGU0Yzhi
NGRjY2FjODFkYTIyZTgzMjVhMzI2NzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAxNy0wOS0wMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDIEFQSV0gV2Ugc2hvdWxkIHN1cHBvcnQgdGhlIHN5bWJvbCB0
eXBlIGluIG91ciBDL09iai1DIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1ODM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRm9yIHdoYXRldmVyIHJlYXNvbiwgd2hlbmV2ZXIgd2UgYWRkZWQgc3Vw
cG9ydCBmb3Igc3ltYm9scyBpbiBKU0Mgd2UgbmV2ZXIgZXh0ZW5kZWQgc3VjaAorICAgICAgICBz
dXBwb3J0IHRvIG91ciBDL09iai1DIEFQSXMuIFRoaXMgcGF0Y2ggcmVtZWRpZXMgdGhhdCBwcm9i
bGVtLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIGZvbGxvd2luZyBBUEkgYWRkaXRp
b25zOgorICAgICAgICAxKSBUZXN0IGlmIGEgSlNWYWx1ZS9KU1ZhbHVlUmVmIGlzIGEgc3ltYm9s
IHZpYSBhbnkgb2YgdGhlIG1ldGhvZHMgQVBJIGFyZSBhYmxlIHRvIHRlc3QgZm9yIHRoZSB0eXBl
cyBvZiBvdGhlciBKU1ZhbHVlcy4KKyAgICAgICAgMikgQ3JlYXRlIGEgc3ltYm9sIG9uIGJvdGgg
QVBJcy4KKyAgICAgICAgMykgR2V0L1NldC9EZWxldGUvRGVmaW5lIHByb3BlcnR5IG5vdyB0YWtl
IGlkcyBpbiB0aGUgT2JqLUMgQVBJLgorICAgICAgICA0KSBBZGQgR2V0L1NldC9EZWxldGUgaW4g
dGhlIEMgQVBJLgorCisgICAgICAgIFdlIGNhbiBkbyAzIGJlY2F1c2UgaXQgaXMgYm90aCBiaW5h
cnkgYW5kIHNvdXJjZSBjb21wYXRhYmxlIHdpdGggdGhlIGV4aXN0aW5nIEFQSS4KKyAgICAgICAg
SSBhZGRlZCB0aGUgNCBhZGRpdGlvbiBiZWNhdXNlIHRoZSBjdXJyZW50IHByb3BlcnR5IGFjY2Vz
cyBBUElzCisgICAgICAgIG9ubHkgaGF2ZSB0aGUgYWJpbGl0eSB0byBnZXQgU3RyaW5ncy4gSXQg
d2FzIHBvc3NpYmxlIHRvIG1lcmdlCisgICAgICAgIHN5bWJvbHMgaW50byBKU1N0cmluZ1JlZiBi
dXQgdGhhdCBmZWx0IGNvbmZ1c2luZyBhbmQgZXhwb3NlcworICAgICAgICBpbXBsZW1lbnRhdGlv
biBkZXRhaWxzIG9mIG91ciBlbmdpbmUuIFRoZSBuZXcgZnVuY3Rpb25zIG1hdGNoIHRoZQorICAg
ICAgICBzYW1lIG1lYW5pbmcgdGhhdCB0aGV5IGhhdmUgaW4gSlMuCisKKyAgICAgICAgKiBBUEkv
SlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3RIYXNQcm9wZXJ0eUtleSk6CisgICAg
ICAgIChKU09iamVjdEdldFByb3BlcnR5S2V5KToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJvcGVy
dHlLZXkpOgorICAgICAgICAoSlNPYmplY3REZWxldGVQcm9wZXJ0eUtleSk6CisgICAgICAgICog
QVBJL0pTT2JqZWN0UmVmLmg6CisgICAgICAgICogQVBJL0pTVmFsdWUuaDoKKyAgICAgICAgKiBB
UEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKCtbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdTeW1ib2xGcm9t
RGVzY3JpcHRpb246SW5Db250ZXh0Ol0pOgorICAgICAgICAocGVyZm9ybVByb3BlcnR5T3BlcmF0
aW9uKToKKyAgICAgICAgKC1bSlNWYWx1ZSB2YWx1ZUZvclByb3BlcnR5Ol0pOgorICAgICAgICAo
LVtKU1ZhbHVlIHNldFZhbHVlOmZvclByb3BlcnR5Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIGRl
bGV0ZVByb3BlcnR5Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Ol0pOgorICAg
ICAgICAoLVtKU1ZhbHVlIGRlZmluZVByb3BlcnR5OmRlc2NyaXB0b3I6XSk6CisgICAgICAgICgt
W0pTVmFsdWUgaXNTeW1ib2xdKToKKyAgICAgICAgKC1bSlNWYWx1ZSBvYmplY3RGb3JLZXllZFN1
YnNjcmlwdDpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSBzZXRPYmplY3Q6Zm9yS2V5ZWRTdWJzY3Jp
cHQ6XSk6CisgICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgorICAgICAgICAoSlNWYWx1ZUdl
dFR5cGUpOgorICAgICAgICAoSlNWYWx1ZUlzU3ltYm9sKToKKyAgICAgICAgKEpTVmFsdWVNYWtl
U3ltYm9sKToKKyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5oOgorICAgICAgICAqIEFQSS90ZXN0
cy90ZXN0YXBpLmM6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFw
aS5tbToKKyAgICAgICAgKHRlc3RPYmplY3RpdmVDQVBJTWFpbik6CisgICAgICAgICogY29uZmln
Lmg6CisKIDIwMTctMDgtMjIgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAg
ICAgICAgV2UgYXJlIHVzaW5nIHZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0IHdoZW4gdGhl
cmUgbWF5IG5vdCBiZSBhIHZhbHVlIHByb2ZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U09iamVjdFJlZi5jcHAKaW5kZXggY2VmZWY2NjE0NWRmMmViNTlhZjFkMDExN2I2Y2VhYWRmYTZk
ZjYxZS4uMGZlM2RlZjFiOGQwMDQ0YTNiMjFiMTg2OTdlYWEzZTMzOTEwNGVmZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKQEAgLTMzMyw2ICszMzMsOTQgQEAg
dm9pZCBKU09iamVjdFNldFByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9i
amVjdCwgSlNTdHJpbmdSZWYgcHJvcGUKICAgICBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChleGVj
LCBleGNlcHRpb24pOwogfQogCitib29sIEpTT2JqZWN0SGFzUHJvcGVydHlLZXkoSlNDb250ZXh0
UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIGtleSwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9
IHRvSlMoY3R4KTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOworCisgICAgSlNPYmpl
Y3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSB0b0pT
KGV4ZWMsIGtleSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9u
SWZOZWVkZWQoZXhlYywgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHJlc3VsdCA9IGpzT2JqZWN0LT5oYXNQ
cm9wZXJ0eShleGVjLCBpZGVudCk7CisgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoZXhlYywg
ZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitKU1ZhbHVlUmVmIEpTT2JqZWN0
R2V0UHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1Zh
bHVlUmVmIGtleSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmICghY3R4KSB7Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIEpTTG9ja0hvbGRlciBs
b2NrZXIoZXhlYyk7CisKKyAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7Cisg
ICAgSWRlbnRpZmllciBpZGVudCA9IHRvSlMoZXhlYywga2V5KS50b1Byb3BlcnR5S2V5KGV4ZWMp
OworICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChleGVjLCBleGNlcHRpb24pID09IEV4
Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
SlNWYWx1ZSBqc1ZhbHVlID0ganNPYmplY3QtPmdldChleGVjLCBpZGVudCk7CisgICAgaGFuZGxl
RXhjZXB0aW9uSWZOZWVkZWQoZXhlYywgZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gdG9SZWYoZXhl
YywganNWYWx1ZSk7Cit9CisKK3ZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eUtleShKU0NvbnRleHRS
ZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYga2V5LCBKU1ZhbHVlUmVmIHZh
bHVlLCBKU1Byb3BlcnR5QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pCit7CisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworCisgICAgSlNPYmplY3Qq
IGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOworICAgIEpTVmFsdWUganNWYWx1ZSA9IHRvSlMoZXhl
YywgdmFsdWUpOworCisgICAgSWRlbnRpZmllciBpZGVudCA9IHRvSlMoZXhlYywga2V5KS50b1By
b3BlcnR5S2V5KGV4ZWMpOworICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChleGVjLCBl
eGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCisgICAgICAgIHJldHVybjsK
KworICAgIGJvb2wgZG9lc05vdEhhdmVQcm9wZXJ0eSA9IGF0dHJpYnV0ZXMgJiYgIWpzT2JqZWN0
LT5oYXNQcm9wZXJ0eShleGVjLCBpZGVudCk7CisgICAgaWYgKExJS0VMWSghc2NvcGUuZXhjZXB0
aW9uKCkpKSB7CisgICAgICAgIGlmIChkb2VzTm90SGF2ZVByb3BlcnR5KSB7CisgICAgICAgICAg
ICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzYyhqc1ZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAg
ICAgIGpzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWZpbmVPd25Qcm9wZXJ0eShqc09iamVjdCwg
ZXhlYywgaWRlbnQsIGRlc2MsIGZhbHNlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IFB1dFByb3BlcnR5U2xvdCBzbG90KGpzT2JqZWN0KTsKKyAgICAgICAgICAgIGpzT2JqZWN0LT5t
ZXRob2RUYWJsZSgpLT5wdXQoanNPYmplY3QsIGV4ZWMsIGlkZW50LCBqc1ZhbHVlLCBzbG90KTsK
KyAgICAgICAgfQorICAgIH0KKyAgICBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChleGVjLCBleGNl
cHRpb24pOworfQorCitib29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHlLZXkoSlNDb250ZXh0UmVm
IGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIGtleSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRv
SlMoY3R4KTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOworCisgICAgSlNPYmplY3Qq
IGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSB0b0pTKGV4
ZWMsIGtleSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZO
ZWVkZWQoZXhlYywgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHJlc3VsdCA9IGpzT2JqZWN0LT5tZXRob2RU
YWJsZSgpLT5kZWxldGVQcm9wZXJ0eShqc09iamVjdCwgZXhlYywgaWRlbnQpOworICAgIGhhbmRs
ZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKwogSlNWYWx1ZVJlZiBKU09iamVjdEdldFByb3BlcnR5QXRJbmRleChKU0NvbnRleHRSZWYg
Y3R4LCBKU09iamVjdFJlZiBvYmplY3QsIHVuc2lnbmVkIHByb3BlcnR5SW5kZXgsIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKIHsKICAgICBpZiAoIWN0eCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU09iamVjdFJlZi5oCmluZGV4IDk1ZDUzYjdmNGU1OGU5NmYwY2JjMzE1OTVhZjljNDYxOTc4
YWE0M2QuLmYyYTZlZWNmNWU3NWQyMmExMGRhYTdmN2Y3NDVkMzRmZjI5NjYwMmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgKQEAgLTUzNiw5ICs1MzYsOSBAQCBKU19F
WFBPUlQgSlNWYWx1ZVJlZiBKU09iamVjdEdldFByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpT
T2JqZWN0UmVmIG9iamVjdCwgSgogQHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8g
dXNlLgogQHBhcmFtIG9iamVjdCBUaGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQg
dG8gc2V0LgogQHBhcmFtIHByb3BlcnR5TmFtZSBBIEpTU3RyaW5nIGNvbnRhaW5pbmcgdGhlIHBy
b3BlcnR5J3MgbmFtZS4KLUBwYXJhbSB2YWx1ZSBBIEpTVmFsdWUgdG8gdXNlIGFzIHRoZSBwcm9w
ZXJ0eSdzIHZhbHVlLgotQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVm
IGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91
IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KK0BwYXJhbSB2YWx1ZSBBIEpTVmFs
dWVSZWYgdG8gdXNlIGFzIHRoZSBwcm9wZXJ0eSdzIHZhbHVlLgogQHBhcmFtIGF0dHJpYnV0ZXMg
QSBsb2dpY2FsbHkgT1JlZCBzZXQgb2YgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgdG8gZ2l2ZSB0byB0
aGUgcHJvcGVydHkuCitAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYg
aW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3Ug
ZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogKi8KIEpTX0VYUE9SVCB2b2lkIEpT
T2JqZWN0U2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBK
U1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYgdmFsdWUsIEpTUHJvcGVydHlBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXMsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAKQEAgLTU1NSw2ICs1
NTUsNTQgQEAgSlNfRVhQT1JUIGJvb2wgSlNPYmplY3REZWxldGVQcm9wZXJ0eShKU0NvbnRleHRS
ZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3QKIAogLyohCiBAZnVuY3Rpb24KK0BhYnN0
cmFjdCBUZXN0cyB3aGV0aGVyIGFuIG9iamVjdCBoYXMgYSBnaXZlbiBwcm9wZXJ0eSB1c2luZyBh
IEpTVmFsdWVSZWYgYXMgdGhlIHByb3BlcnR5IGtleS4KK0BwYXJhbSBvYmplY3QgVGhlIEpTT2Jq
ZWN0IHRvIHRlc3QuCitAcGFyYW0gcHJvcGVydHlLZXkgQSBKU1ZhbHVlUmVmIGNvbnRhaW5pbmcg
dGhlIHByb3BlcnR5IGtleSB0byB1c2Ugd2hlbiBsb29raW5nIHVwIHRoZSBwcm9wZXJ0eS4KK0Bw
YXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9y
ZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBz
dG9yZSBhbiBleGNlcHRpb24uCitAcmVzdWx0IHRydWUgaWYgdGhlIG9iamVjdCBoYXMgYSBwcm9w
ZXJ0eSB3aG9zZSBuYW1lIG1hdGNoZXMgcHJvcGVydHlLZXksIG90aGVyd2lzZSBmYWxzZS4KK0Bk
aXNjdXNzaW9uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXMgcGVyZm9ybWluZyAicHJvcGVy
dHlLZXkgaW4gb2JqZWN0IiBmcm9tIEphdmFTY3JpcHQuCisqLworSlNfRVhQT1JUIGJvb2wgSlNP
YmplY3RIYXNQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3Qs
IEpTVmFsdWVSZWYgcHJvcGVydHlLZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxB
QkxFKDEwXzEzLCAxMV8wKTsKKworLyohCitAZnVuY3Rpb24KK0BhYnN0cmFjdCBHZXRzIGEgcHJv
cGVydHkgZnJvbSBhbiBvYmplY3QgdXNpbmcgYSBKU1ZhbHVlUmVmIGFzIHRoZSBwcm9wZXJ0eSBr
ZXkuCitAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCitAcGFyYW0gb2Jq
ZWN0IFRoZSBKU09iamVjdCB3aG9zZSBwcm9wZXJ0eSB5b3Ugd2FudCB0byBnZXQuCitAcGFyYW0g
cHJvcGVydHlLZXkgQSBKU1ZhbHVlUmVmIGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5IGtleSB0byB1
c2Ugd2hlbiBsb29raW5nIHVwIHRoZSBwcm9wZXJ0eS4KK0BwYXJhbSBleGNlcHRpb24gQSBwb2lu
dGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFu
eS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCitA
cmVzdWx0IFRoZSBwcm9wZXJ0eSdzIHZhbHVlIGlmIG9iamVjdCBoYXMgdGhlIHByb3BlcnR5IGtl
eSwgb3RoZXJ3aXNlIHRoZSB1bmRlZmluZWQgdmFsdWUuCitAZGlzY3Vzc2lvbiBUaGlzIGZ1bmN0
aW9uIGlzIHRoZSBzYW1lIGFzIHBlcmZvcm1pbmcgIm9iamVjdFtwcm9wZXJ0eUtleV0iIGZyb20g
SmF2YVNjcmlwdC4KKyovCitKU19FWFBPUlQgSlNWYWx1ZVJlZiBKU09iamVjdEdldFByb3BlcnR5
S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBwcm9w
ZXJ0eUtleSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTMsIDExXzAp
OworCisvKiEKK0BmdW5jdGlvbgorQGFic3RyYWN0IFNldHMgYSBwcm9wZXJ0eSBvbiBhbiBvYmpl
Y3QgdXNpbmcgYSBKU1ZhbHVlUmVmIGFzIHRoZSBwcm9wZXJ0eSBrZXkuCitAcGFyYW0gY3R4IFRo
ZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCitAcGFyYW0gb2JqZWN0IFRoZSBKU09iamVjdCB3
aG9zZSBwcm9wZXJ0eSB5b3Ugd2FudCB0byBzZXQuCitAcGFyYW0gcHJvcGVydHlLZXkgQSBKU1Zh
bHVlUmVmIGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5IGtleSB0byB1c2Ugd2hlbiBsb29raW5nIHVw
IHRoZSBwcm9wZXJ0eS4KK0BwYXJhbSB2YWx1ZSBBIEpTVmFsdWVSZWYgdG8gdXNlIGFzIHRoZSBw
cm9wZXJ0eSdzIHZhbHVlLgorQHBhcmFtIGF0dHJpYnV0ZXMgQSBsb2dpY2FsbHkgT1JlZCBzZXQg
b2YgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgdG8gZ2l2ZSB0byB0aGUgcHJvcGVydHkuCitAcGFyYW0g
ZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4g
ZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUg
YW4gZXhjZXB0aW9uLgorQGRpc2N1c3Npb24gVGhpcyBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyBw
ZXJmb3JtaW5nICJvYmplY3RbcHJvcGVydHlLZXldID0gdmFsdWUiIGZyb20gSmF2YVNjcmlwdC4K
KyovCitKU19FWFBPUlQgdm9pZCBKU09iamVjdFNldFByb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBwcm9wZXJ0eUtleSwgSlNWYWx1ZVJl
ZiB2YWx1ZSwgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTMsIDExXzApOworCisvKiEKK0BmdW5jdGlvbgorQGFi
c3RyYWN0IERlbGV0ZXMgYSBwcm9wZXJ0eSBmcm9tIGFuIG9iamVjdCB1c2luZyBhIEpTVmFsdWVS
ZWYgYXMgdGhlIHByb3BlcnR5IGtleS4KK0BwYXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250ZXh0
IHRvIHVzZS4KK0BwYXJhbSBvYmplY3QgVGhlIEpTT2JqZWN0IHdob3NlIHByb3BlcnR5IHlvdSB3
YW50IHRvIGRlbGV0ZS4KK0BwYXJhbSBwcm9wZXJ0eUtleSBBIEpTVmFsdWVSZWYgY29udGFpbmlu
ZyB0aGUgcHJvcGVydHkga2V5IHRvIHVzZSB3aGVuIGxvb2tpbmcgdXAgdGhlIHByb3BlcnR5Lgor
QHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0
b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRv
IHN0b3JlIGFuIGV4Y2VwdGlvbi4KK0ByZXN1bHQgdHJ1ZSBpZiB0aGUgZGVsZXRlIG9wZXJhdGlv
biBzdWNjZWVkcywgb3RoZXJ3aXNlIGZhbHNlIChmb3IgZXhhbXBsZSwgaWYgdGhlIHByb3BlcnR5
IGhhcyB0aGUga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIGF0dHJpYnV0ZSBzZXQpLgor
QGRpc2N1c3Npb24gVGhpcyBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyBwZXJmb3JtaW5nICJkZWxl
dGUgb2JqZWN0W3Byb3BlcnR5S2V5XSIgZnJvbSBKYXZhU2NyaXB0LgorKi8KK0pTX0VYUE9SVCBi
b29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RS
ZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIHByb3BlcnR5S2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
IENGX0FWQUlMQUJMRSgxMF8xMywgMTFfMCk7CisKKy8qIQorQGZ1bmN0aW9uCiBAYWJzdHJhY3Qg
R2V0cyBhIHByb3BlcnR5IGZyb20gYW4gb2JqZWN0IGJ5IG51bWVyaWMgaW5kZXguCiBAcGFyYW0g
Y3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCiBAcGFyYW0gb2JqZWN0IFRoZSBKU09i
amVjdCB3aG9zZSBwcm9wZXJ0eSB5b3Ugd2FudCB0byBnZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNWYWx1ZS5oCmluZGV4IDE0MTBkZDc0YTE3Zjk3MDcwNmU0NGRlZDI0Y2NkMTcwYzM0NzljMmUu
LjI4NDY5ZTMxNThhZDlhOTk0MTZlYzYzMWZlZTNlYzg3OWQ1ODMzM2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNWYWx1ZS5oCkBAIC0xNDksNiArMTQ5LDE1IEBAIE5TX0NMQVNTX0FWQUlMQUJM
RSgxMF85LCA3XzApCiArIChKU1ZhbHVlICopdmFsdWVXaXRoVW5kZWZpbmVkSW5Db250ZXh0OihK
U0NvbnRleHQgKiljb250ZXh0OwogCiAvKiEKKyBAbWV0aG9kCisgQGFic3RyYWN0IENyZWF0ZSBh
IG5ldywgdW5pcXVlLCBzeW1ib2wgb2JqZWN0LgorIEBwYXJhbSBkZXNjcmlwdGlvbiBUaGUgZGVz
Y3JpcHRpb24gb2YgdGhlIHN5bWJvbCBvYmplY3QgYmVpbmcgY3JlYXRlZC4KKyBAcGFyYW0gY29u
dGV4dCBUaGUgSlNDb250ZXh0IHRvIHdoaWNoIHRoZSByZXN1bHRpbmcgSlNWYWx1ZSBiZWxvbmdz
LgorIEByZXN1bHQgVGhlIEpTVmFsdWUgcmVwcmVzZW50aW5nIGEgdW5pcXVlIEphdmFTY3JpcHQg
dmFsdWUgd2l0aCB0eXBlIHN5bWJvbC4KKyAqLworKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aE5ld1N5
bWJvbEZyb21EZXNjcmlwdGlvbjooTlNTdHJpbmcgKilkZXNjcmlwdGlvbiBJbkNvbnRleHQ6KEpT
Q29udGV4dCAqKWNvbnRleHQgTlNfQVZBSUxBQkxFKDEwXzEzLCAxMV8wKTsKKworLyohCiBAbWV0
aG9kZ3JvdXAgQ29udmVydGluZyB0byBPYmplY3RpdmUtQyBUeXBlcwogQGRpc2N1c3Npb24gV2hl
biBjb252ZXJ0aW5nIGJldHdlZW4gSmF2YVNjcmlwdCB2YWx1ZXMgYW5kIE9iamVjdGl2ZS1DIG9i
amVjdHMgYSBjb3B5IGlzCiAgcGVyZm9ybWVkLiBWYWx1ZXMgb2YgdHlwZXMgbGlzdGVkIGJlbG93
IGFyZSBjb3BpZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcKQEAgLTMwNSw0MyArMzE0LDU4IEBAIE5T
X0NMQVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCiAvKiEKIEBtZXRob2Rncm91cCBBY2Nlc3Npbmcg
UHJvcGVydGllcwogKi8KKworI2lmIChkZWZpbmVkKEJVSUxESU5HX0pBVkFTQ1JJUFRDT1JFKSAm
JiBCVUlMRElOR19KQVZBU0NSSVBUQ09SRSkgfHwgKGRlZmluZWQoVEFSR0VUX09TX01BQykgJiYg
VEFSR0VUX09TX01BQyAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMw
MCkgfHwgKGRlZmluZWQoVEFSR0VUX09TX0lQSE9ORSkgJiYgVEFSR0VUX09TX0lQSE9ORSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCisKIC8qIQogQG1ldGhv
ZAogQGFic3RyYWN0IEFjY2VzcyBhIHByb3BlcnR5IG9mIGEgSlNWYWx1ZS4KIEByZXN1bHQgVGhl
IEpTVmFsdWUgZm9yIHRoZSByZXF1ZXN0ZWQgcHJvcGVydHkgb3IgdGhlIEpTVmFsdWUgPGNvZGU+
dW5kZWZpbmVkPC9jb2RlPiAKICBpZiB0aGUgcHJvcGVydHkgZG9lcyBub3QgZXhpc3QuCitAZGlz
Y3Vzc2lvbiBCZWZvcmUgbWFjT1MgMTAuMTMgYW5kIGlPUyAxMSA8Y29kZT5wcm9wZXJ0eTwvY29k
ZT4gd2FzIGFuIE5TU3RyaW5nICosIHRoaXMgd2FzIHJlbGF4ZWQgdG8gaWQgc28gSmF2YVNjcmlw
dCBTeW1ib2wgcHJvcGVydGllcyBjb3VsZCBiZSBhY2Nlc3NlZC4KICovCi0tIChKU1ZhbHVlICop
dmFsdWVGb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKEpTVmFsdWUgKil2YWx1
ZUZvclByb3BlcnR5OihpZClwcm9wZXJ0eTsKIAogLyohCiBAbWV0aG9kCiBAYWJzdHJhY3QgU2V0
IGEgcHJvcGVydHkgb24gYSBKU1ZhbHVlLgorQGRpc2N1c3Npb24gQmVmb3JlIG1hY09TIDEwLjEz
IGFuZCBpT1MgMTEgPGNvZGU+cHJvcGVydHk8L2NvZGU+IHdhcyBhbiBOU1N0cmluZyAqLCB0aGlz
IHdhcyByZWxheGVkIHRvIGlkIHNvIEphdmFTY3JpcHQgU3ltYm9sIHByb3BlcnRpZXMgY291bGQg
YmUgc2V0LgogKi8KLS0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZvclByb3BlcnR5OihOU1N0
cmluZyAqKXByb3BlcnR5OworLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yUHJvcGVydHk6
KGlkKXByb3BlcnR5OwogCiAvKiEKIEBtZXRob2QKIEBhYnN0cmFjdCBEZWxldGUgYSBwcm9wZXJ0
eSBmcm9tIGEgSlNWYWx1ZS4KIEByZXN1bHQgWUVTIGlmIGRlbGV0aW9uIGlzIHN1Y2Nlc3NmdWws
IE5PIG90aGVyd2lzZS4KK0BkaXNjdXNzaW9uIEJlZm9yZSBtYWNPUyAxMC4xMyBhbmQgaU9TIDEx
IDxjb2RlPnByb3BlcnR5PC9jb2RlPiB3YXMgYW4gTlNTdHJpbmcgKiwgdGhpcyB3YXMgcmVsYXhl
ZCB0byBpZCBzbyBKYXZhU2NyaXB0IFN5bWJvbCBwcm9wZXJ0aWVzIGNvdWxkIGJlIGRlbGV0ZWQu
CiAqLwotLSAoQk9PTClkZWxldGVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKEJP
T0wpZGVsZXRlUHJvcGVydHk6KGlkKXByb3BlcnR5OwogCiAvKiEKIEBtZXRob2QKIEBhYnN0cmFj
dCBDaGVjayBpZiBhIEpTVmFsdWUgaGFzIGEgcHJvcGVydHkuCiBAZGlzY3Vzc2lvbiBUaGlzIG1l
dGhvZCBoYXMgdGhlIHNhbWUgZnVuY3Rpb24gYXMgdGhlIEphdmFTY3JpcHQgb3BlcmF0b3IgPGNv
ZGU+aW48L2NvZGU+LgogQHJlc3VsdCBSZXR1cm5zIFlFUyBpZiBwcm9wZXJ0eSBpcyBwcmVzZW50
IG9uIHRoZSB2YWx1ZS4KK0BkaXNjdXNzaW9uIEJlZm9yZSBtYWNPUyAxMC4xMyBhbmQgaU9TIDEx
IDxjb2RlPnByb3BlcnR5PC9jb2RlPiB3YXMgYW4gTlNTdHJpbmcgKiwgdGhpcyB3YXMgcmVsYXhl
ZCB0byBpZCBzbyBKYXZhU2NyaXB0IFN5bWJvbCBwcm9wZXJ0aWVzIGNvdWxkIGJlIGNoZWNrZWQg
Zm9yIGV4aXN0YW5jZS4KICovCi0tIChCT09MKWhhc1Byb3BlcnR5OihOU1N0cmluZyAqKXByb3Bl
cnR5OworLSAoQk9PTCloYXNQcm9wZXJ0eTooaWQpcHJvcGVydHk7CiAKIC8qIQogQG1ldGhvZAog
QGFic3RyYWN0IERlZmluZSBwcm9wZXJ0aWVzIHdpdGggY3VzdG9tIGRlc2NyaXB0b3JzIG9uIEpT
VmFsdWVzLgogQGRpc2N1c3Npb24gVGhpcyBtZXRob2QgbWF5IGJlIHVzZWQgdG8gY3JlYXRlIGEg
ZGF0YSBvciBhY2Nlc3NvciBwcm9wZXJ0eSBvbiBhbiBvYmplY3QuCiAgVGhpcyBtZXRob2Qgb3Bl
cmF0ZXMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBPYmplY3QuZGVmaW5lUHJvcGVydHkgbWV0aG9k
IGluIHRoZSAKLSBKYXZhU2NyaXB0IGxhbmd1YWdlLgorIEphdmFTY3JpcHQgbGFuZ3VhZ2UuIEJl
Zm9yZSBtYWNPUyAxMC4xMyBhbmQgaU9TIDExIDxjb2RlPnByb3BlcnR5PC9jb2RlPiB3YXMgYW4g
TlNTdHJpbmcgKiwgdGhpcyB3YXMgcmVsYXhlZCB0byBpZCBzbyBKYXZhU2NyaXB0IFN5bWJvbCBw
cm9wZXJ0aWVzIGNvdWxkIGJlIGRlZmluZWQuCiAqLworLSAodm9pZClkZWZpbmVQcm9wZXJ0eToo
aWQpcHJvcGVydHkgZGVzY3JpcHRvcjooaWQpZGVzY3JpcHRvcjsKKworI2Vsc2UgLy8gKGRlZmlu
ZWQoQlVJTERJTkdfSkFWQVNDUklQVENPUkUpICYmIEJVSUxESU5HX0pBVkFTQ1JJUFRDT1JFKSB8
fCAoZGVmaW5lZChUQVJHRVRfT1NfTUFDKSAmJiBUQVJHRVRfT1NfTUFDICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoZGVmaW5lZChUQVJHRVRfT1NfSVBI
T05FKSAmJiBUQVJHRVRfT1NfSVBIT05FICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDExMDAwMCkKKy0gKEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihOU1N0cmluZyAq
KXByb3BlcnR5OworLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yUHJvcGVydHk6KE5TU3Ry
aW5nICopcHJvcGVydHk7CistIChCT09MKWRlbGV0ZVByb3BlcnR5OihOU1N0cmluZyAqKXByb3Bl
cnR5OworLSAoQk9PTCloYXNQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKIC0gKHZvaWQp
ZGVmaW5lUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHkgZGVzY3JpcHRvcjooaWQpZGVzY3Jp
cHRvcjsKKyNlbmRpZgogCiAvKiEKIEBtZXRob2QKQEAgLTQwMyw2ICs0MjcsMTIgQEAgTlNfQ0xB
U1NfQVZBSUxBQkxFKDEwXzksIDdfMCkKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaXNPYmpl
Y3Q7CiAKIC8qIQorIEBwcm9wZXJ0eQorIEBhYnN0cmFjdCBDaGVjayBpZiBhIEpTVmFsdWUgaXMg
YSBzeW1ib2wuCisgKi8KK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaXNTeW1ib2wgTlNfQVZB
SUxBQkxFKDEwXzEzLCAxMV8wKTsKKworLyohCiBAcHJvcGVydHkKIEBhYnN0cmFjdCBDaGVjayBp
ZiBhIEpTVmFsdWUgaXMgYW4gYXJyYXkuCiAqLyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNWYWx1ZS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1
ZS5tbQppbmRleCA2OTg2ZmFlODMxZTJlY2M2ZWJjMmJlZGFlNGU2OGFjMjJmNTc4ZTgwLi43MTgw
MWIyMTE5NDdkMGU5OTE5ZWRmNzRmMmJkYzllNDNjMzBkYzZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1ZhbHVlLm1tCkBAIC0zOSw2ICszOSw3IEBACiAjaW1wb3J0ICJKU0NKU1ZhbHVlLmgi
CiAjaW1wb3J0ICJTdHJvbmcuaCIKICNpbXBvcnQgIlN0cm9uZ0lubGluZXMuaCIKKyNpbXBvcnQg
PHd0Zi9FeHBlY3RlZC5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0Zi9I
YXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvTG9jay5oPgpAQCAtMTM2LDYgKzEzNywxMyBAQCBOU1N0
cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yU2V0S2V5ID0gQCJzZXQiOwogICAgIHJl
dHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOkpTVmFsdWVNYWtlVW5kZWZpbmVkKFtj
b250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pIGluQ29udGV4dDpjb250ZXh0XTsKIH0KIAorKyAo
SlNWYWx1ZSAqKXZhbHVlV2l0aE5ld1N5bWJvbEZyb21EZXNjcmlwdGlvbjooTlNTdHJpbmcgKilk
ZXNjcmlwdGlvbiBJbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQKK3sKKyAgICBKU1N0cmlu
Z1JlZiBzdHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZyhyZWludGVycHJldF9jYXN0
PENGU3RyaW5nUmVmPihkZXNjcmlwdGlvbikpOworICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdp
dGhKU1ZhbHVlUmVmOkpTVmFsdWVNYWtlU3ltYm9sKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJl
Zl0sIHN0cmluZykgaW5Db250ZXh0OmNvbnRleHRdOworfQorCisKIC0gKGlkKXRvT2JqZWN0CiB7
CiAgICAgcmV0dXJuIHZhbHVlVG9PYmplY3QoX2NvbnRleHQsIG1fdmFsdWUpOwpAQCAtMjE5LDcy
ICsyMjcsODAgQEAgTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5RGVzY3JpcHRvclNldEtleSA9
IEAic2V0IjsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi0tIChKU1ZhbHVlICopdmFsdWVGb3JQ
cm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKK3RlbXBsYXRlPHR5cGVuYW1lIFJlc3Vs
dCwgdHlwZW5hbWUgTlNTdHJpbmdGdW5jdGlvbiwgdHlwZW5hbWUgSlNWYWx1ZUZ1bmN0aW9uLCB0
eXBlbmFtZS4uLiBUeXBlcz4KK2lubGluZSBFeHBlY3RlZDxSZXN1bHQsIEpTVmFsdWVSZWY+IHBl
cmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbihOU1N0cmluZ0Z1bmN0aW9uIHN0cmluZ0Z1bmN0aW9uLCBK
U1ZhbHVlRnVuY3Rpb24ganNGdW5jdGlvbiwgSlNWYWx1ZSogdmFsdWUsIGlkIHByb3BlcnR5S2V5
LCBUeXBlcy4uLiBhcmd1bWVudHMpCiB7Ci0gICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwot
ICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChbX2NvbnRleHQgSlNHbG9i
YWxDb250ZXh0UmVmXSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7CisgICAgSlNDb250ZXh0KiBjb250
ZXh0ID0gW3ZhbHVlIGNvbnRleHRdOworICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0
cjsKKyAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoW2NvbnRleHQgSlNH
bG9iYWxDb250ZXh0UmVmXSwgW3ZhbHVlIEpTVmFsdWVSZWZdLCAmZXhjZXB0aW9uKTsKICAgICBp
ZiAoZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW19jb250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4
Y2VwdGlvbjpleGNlcHRpb25dOworICAgICAgICByZXR1cm4gVW5leHBlY3RlZFR5cGU8SlNWYWx1
ZVJlZj4oZXhjZXB0aW9uKTsKIAotICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0
ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsKLSAgICBKU1ZhbHVlUmVm
IHJlc3VsdCA9IEpTT2JqZWN0R2V0UHJvcGVydHkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJl
Zl0sIG9iamVjdCwgbmFtZSwgJmV4Y2VwdGlvbik7Ci0gICAgSlNTdHJpbmdSZWxlYXNlKG5hbWUp
OwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbX2NvbnRleHQgdmFsdWVGcm9t
Tm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgUmVzdWx0IHJlc3VsdDsKKyAgICAvLyBJ
ZiBpdCdzIGEgTlNTdHJpbmcgYWxyZWFkeSwgcmVkdWNlIGluZGlyZWN0aW9uIGFuZCBqdXN0IHBh
c3MgdGhlIE5TU3RyaW5nLgorICAgIGlmIChbcHJvcGVydHlLZXkgaXNLaW5kT2ZDbGFzczpbTlNT
dHJpbmcgY2xhc3NdXSkgeworICAgICAgICBKU1N0cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVh
dGVXaXRoQ0ZTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4ocHJvcGVydHlLZXkp
KTsKKyAgICAgICAgcmVzdWx0ID0gc3RyaW5nRnVuY3Rpb24oW2NvbnRleHQgSlNHbG9iYWxDb250
ZXh0UmVmXSwgb2JqZWN0LCBuYW1lLCBhcmd1bWVudHMuLi4sICZleGNlcHRpb24pOworICAgICAg
ICBKU1N0cmluZ1JlbGVhc2UobmFtZSk7CisgICAgfSBlbHNlCisgICAgICAgIHJlc3VsdCA9IGpz
RnVuY3Rpb24oW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgb2JqZWN0LCBbW0pTVmFsdWUg
dmFsdWVXaXRoT2JqZWN0OnByb3BlcnR5S2V5IGluQ29udGV4dDpjb250ZXh0XSBKU1ZhbHVlUmVm
XSwgYXJndW1lbnRzLi4uLCAmZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gRXhwZWN0ZWQ8UmVzdWx0
LCBKU1ZhbHVlUmVmPihyZXN1bHQpOworfQogCi0gICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0
aEpTVmFsdWVSZWY6cmVzdWx0IGluQ29udGV4dDpfY29udGV4dF07CistIChKU1ZhbHVlICopdmFs
dWVGb3JQcm9wZXJ0eTooaWQpa2V5Cit7CisgICAgYXV0byByZXN1bHQgPSBwZXJmb3JtUHJvcGVy
dHlPcGVyYXRpb248SlNWYWx1ZVJlZj4oSlNPYmplY3RHZXRQcm9wZXJ0eSwgSlNPYmplY3RHZXRQ
cm9wZXJ0eUtleSwgc2VsZiwga2V5KTsKKyAgICBpZiAocmVzdWx0LmVycm9yKCkpCisgICAgICAg
IHJldHVybiBbX2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOnJlc3VsdC5lcnJvcigp
XTsKKworICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOnJlc3VsdC52YWx1
ZSgpIGluQ29udGV4dDpfY29udGV4dF07CiB9CiAKLS0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVl
IGZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQorLSAodm9pZClzZXRWYWx1ZToo
aWQpdmFsdWUgZm9yUHJvcGVydHk6KGlkKWtleQogewotICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9u
ID0gMDsKLSAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoW19jb250ZXh0
IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUsICZleGNlcHRpb24pOwotICAgIGlmIChleGNl
cHRpb24pIHsKLSAgICAgICAgW19jb250ZXh0IG5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIC8vIFdlIG5lZWQgVW5pdCBidXNpbmVzcyBiZWNh
dXNlIHZvaWQgY2FuJ3QgYmUgYXNzaWduZWQgdG8gaW4gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9u
IGFuZCBJIGRvbid0IHdhbnQgdG8gZHVwbGljYXRlIHRoZSBjb2RlLi4uCisgICAgdXNpbmcgVW5p
dCA9IHN0ZDo6dHVwbGU8PjsKKyAgICBhdXRvIHN0cmluZ1NldFByb3BlcnR5ID0gW10gKGF1dG8u
Li4gYXJncykgLT4gVW5pdCB7CisgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoYXJncy4uLik7
CisgICAgICAgIHJldHVybiB7IH07CisgICAgfTsKIAotICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBK
U1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsKLSAg
ICBKU09iamVjdFNldFByb3BlcnR5KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmpl
Y3QsIG5hbWUsIG9iamVjdFRvVmFsdWUoX2NvbnRleHQsIHZhbHVlKSwgMCwgJmV4Y2VwdGlvbik7
Ci0gICAgSlNTdHJpbmdSZWxlYXNlKG5hbWUpOwotICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAg
ICAgW19jb250ZXh0IG5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOworICAgIGF1dG8ganNWYWx1
ZVNldFByb3BlcnR5ID0gW10gKGF1dG8uLi4gYXJncykgLT4gVW5pdCB7CisgICAgICAgIEpTT2Jq
ZWN0U2V0UHJvcGVydHlLZXkoYXJncy4uLik7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfTsK
KworICAgIGF1dG8gcmVzdWx0ID0gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uPFVuaXQ+KHN0cmlu
Z1NldFByb3BlcnR5LCBqc1ZhbHVlU2V0UHJvcGVydHksIHNlbGYsIGtleSwgb2JqZWN0VG9WYWx1
ZShfY29udGV4dCwgdmFsdWUpLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUpOworICAgIGlmIChy
ZXN1bHQuZXJyb3IoKSkgeworICAgICAgICBbX2NvbnRleHQgbm90aWZ5RXhjZXB0aW9uOnJlc3Vs
dC5lcnJvcigpXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KIAotLSAoQk9PTClkZWxldGVQ
cm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKKy0gKEJPT0wpZGVsZXRlUHJvcGVydHk6
KGlkKWtleQogewotICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBKU09iamVjdFJl
ZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0s
IG1fdmFsdWUsICZleGNlcHRpb24pOwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVy
biBbX2NvbnRleHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKLQotICAgIEpT
U3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYp
cHJvcGVydHlOYW1lKTsKLSAgICBCT09MIHJlc3VsdCA9IEpTT2JqZWN0RGVsZXRlUHJvcGVydHko
W19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgbmFtZSwgJmV4Y2VwdGlvbik7
Ci0gICAgSlNTdHJpbmdSZWxlYXNlKG5hbWUpOwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAg
IHJldHVybiBbX2NvbnRleHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKLQot
ICAgIHJldHVybiByZXN1bHQ7CisgICAgRXhwZWN0ZWQ8Qk9PTCwgSlNWYWx1ZVJlZj4gcmVzdWx0
ID0gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uPEJPT0w+KEpTT2JqZWN0RGVsZXRlUHJvcGVydHks
IEpTT2JqZWN0RGVsZXRlUHJvcGVydHlLZXksIHNlbGYsIGtleSk7CisgICAgaWYgKHJlc3VsdC5l
cnJvcigpKQorICAgICAgICByZXR1cm4gW19jb250ZXh0IGJvb2xGcm9tTm90aWZ5RXhjZXB0aW9u
OnJlc3VsdC5lcnJvcigpXTsKKyAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7CiB9CiAKLS0gKEJP
T0wpaGFzUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lCistIChCT09MKWhhc1Byb3Bl
cnR5OihpZClrZXkKIHsKLSAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmpl
Y3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRS
ZWZdLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKLSAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICBy
ZXR1cm4gW19jb250ZXh0IGJvb2xGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CisgICAg
Ly8gVGhlIEMtYXBpIGRvZXNuJ3QgcmV0dXJuIGFuIGV4Y2VwdGlvbiB2YWx1ZSBmb3IgdGhlIHN0
cmluZyB2ZXJzaW9uIG9mIGhhcyBwcm9wZXJ0eS4KKyAgICBhdXRvIHN0cmluZ0hhc1Byb3BlcnR5
ID0gW10gKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKikgLT4gQk9PTCB7CisgICAgICAgIHJldHVybiBKU09i
amVjdEhhc1Byb3BlcnR5KGN0eCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIH07CiAKLSAg
ICBKU1N0cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5n
UmVmKXByb3BlcnR5TmFtZSk7Ci0gICAgQk9PTCByZXN1bHQgPSBKU09iamVjdEhhc1Byb3BlcnR5
KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIG5hbWUpOwotICAgIEpTU3Ry
aW5nUmVsZWFzZShuYW1lKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIEV4cGVjdGVkPEJPT0ws
IEpTVmFsdWVSZWY+IHJlc3VsdCA9IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbjxCT09MPihzdHJp
bmdIYXNQcm9wZXJ0eSwgSlNPYmplY3RIYXNQcm9wZXJ0eUtleSwgc2VsZiwga2V5KTsKKyAgICBp
ZiAocmVzdWx0LmVycm9yKCkpCisgICAgICAgIHJldHVybiBbX2NvbnRleHQgYm9vbEZyb21Ob3Rp
ZnlFeGNlcHRpb246cmVzdWx0LmVycm9yKCldOworICAgIHJldHVybiByZXN1bHQudmFsdWUoKTsK
IH0KIAotLSAodm9pZClkZWZpbmVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eSBkZXNjcmlw
dG9yOihpZClkZXNjcmlwdG9yCistICh2b2lkKWRlZmluZVByb3BlcnR5OihpZClrZXkgZGVzY3Jp
cHRvcjooaWQpZGVzY3JpcHRvcgogewotICAgIFtbX2NvbnRleHQgZ2xvYmFsT2JqZWN0XVtAIk9i
amVjdCJdIGludm9rZU1ldGhvZDpAImRlZmluZVByb3BlcnR5IiB3aXRoQXJndW1lbnRzOkBbIHNl
bGYsIHByb3BlcnR5LCBkZXNjcmlwdG9yIF1dOworICAgIFtbX2NvbnRleHQgZ2xvYmFsT2JqZWN0
XVtAIk9iamVjdCJdIGludm9rZU1ldGhvZDpAImRlZmluZVByb3BlcnR5IiB3aXRoQXJndW1lbnRz
OkBbIHNlbGYsIGtleSwgZGVzY3JpcHRvciBdXTsKIH0KIAogLSAoSlNWYWx1ZSAqKXZhbHVlQXRJ
bmRleDooTlNVSW50ZWdlcilpbmRleApAQCAtMzU3LDYgKzM3MywxMSBAQCBOU1N0cmluZyAqIGNv
bnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yU2V0S2V5ID0gQCJzZXQiOwogICAgIHJldHVybiBKU1Zh
bHVlSXNPYmplY3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUpOwogfQog
CistIChCT09MKWlzU3ltYm9sCit7CisgICAgcmV0dXJuIEpTVmFsdWVJc1N5bWJvbChbX2NvbnRl
eHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSk7Cit9CisKIC0gKEJPT0wpaXNBcnJheQog
ewogICAgIHJldHVybiBKU1ZhbHVlSXNBcnJheShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVm
XSwgbV92YWx1ZSk7CkBAIC01MzksMTMgKzU2MCw3IEBAIE5TU3RyaW5nICogY29uc3QgSlNQcm9w
ZXJ0eURlc2NyaXB0b3JTZXRLZXkgPSBAInNldCI7CiAKIC0gKEpTVmFsdWUgKilvYmplY3RGb3JL
ZXllZFN1YnNjcmlwdDooaWQpa2V5CiB7Ci0gICAgaWYgKCFba2V5IGlzS2luZE9mQ2xhc3M6W05T
U3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAga2V5ID0gW1tKU1ZhbHVlIHZhbHVlV2l0aE9iamVj
dDprZXkgaW5Db250ZXh0Ol9jb250ZXh0XSB0b1N0cmluZ107Ci0gICAgICAgIGlmICgha2V5KQot
ICAgICAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4dDpf
Y29udGV4dF07Ci0gICAgfQotCi0gICAgcmV0dXJuIFtzZWxmIHZhbHVlRm9yUHJvcGVydHk6KE5T
U3RyaW5nICopa2V5XTsKKyAgICByZXR1cm4gW3NlbGYgdmFsdWVGb3JQcm9wZXJ0eTprZXldOwog
fQogCiAtIChKU1ZhbHVlICopb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OihOU1VJbnRlZ2VyKWlu
ZGV4CkBAIC01NTUsMTMgKzU3MCw3IEBAIE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2Ny
aXB0b3JTZXRLZXkgPSBAInNldCI7CiAKIC0gKHZvaWQpc2V0T2JqZWN0OihpZClvYmplY3QgZm9y
S2V5ZWRTdWJzY3JpcHQ6KE5TT2JqZWN0IDxOU0NvcHlpbmc+ICopa2V5CiB7Ci0gICAgaWYgKCFb
a2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAga2V5ID0gW1tK
U1ZhbHVlIHZhbHVlV2l0aE9iamVjdDprZXkgaW5Db250ZXh0Ol9jb250ZXh0XSB0b1N0cmluZ107
Ci0gICAgICAgIGlmICgha2V5KQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFtz
ZWxmIHNldFZhbHVlOm9iamVjdCBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXldOworICAgIFtz
ZWxmIHNldFZhbHVlOm9iamVjdCBmb3JQcm9wZXJ0eTprZXldOwogfQogCiAtICh2b2lkKXNldE9i
amVjdDooaWQpb2JqZWN0IGF0SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRleApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKaW5kZXggNjRhYzZjMzI0NmViZmI4
Y2M0ZjI0YzA1ODA5OThhZTQxOGRhYmE2ZC4uZDQ2Y2ZmMDZhNDY1NGU5NTBiNTAxNWU0Y2IyYmFm
NDk2YjA0OGM4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVl
UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCkBA
IC04Niw4ICs4NiwxMCBAQCBzdGF0aWMgYm9vbCBldmVybm90ZUhhY2tOZWVkZWQoKQogICAgICAg
ICByZXR1cm4ga0pTVHlwZU51bWJlcjsKICAgICBpZiAoanNWYWx1ZS5pc1N0cmluZygpKQogICAg
ICAgICByZXR1cm4ga0pTVHlwZVN0cmluZzsKLSAgICBBU1NFUlQoanNWYWx1ZS5pc09iamVjdCgp
KTsKLSAgICByZXR1cm4ga0pTVHlwZU9iamVjdDsKKyAgICBpZiAoanNWYWx1ZS5pc09iamVjdCgp
KQorICAgICAgICByZXR1cm4ga0pTVHlwZU9iamVjdDsKKyAgICBBU1NFUlQoanNWYWx1ZS5pc1N5
bWJvbCgpKTsKKyAgICByZXR1cm4ga0pTVHlwZVN5bWJvbDsKIH0KIAogYm9vbCBKU1ZhbHVlSXNV
bmRlZmluZWQoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkKQEAgLTE2Miw2ICsx
NjQsMTggQEAgYm9vbCBKU1ZhbHVlSXNPYmplY3QoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJl
ZiB2YWx1ZSkKICAgICByZXR1cm4gdG9KUyhleGVjLCB2YWx1ZSkuaXNPYmplY3QoKTsKIH0KIAor
Ym9vbCBKU1ZhbHVlSXNTeW1ib2woSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkK
K3sKKyAgICBpZiAoIWN0eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7
CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKworICAgIHJldHVybiB0b0pTKGV4ZWMs
IHZhbHVlKS5pc1N5bWJvbCgpOworfQorCiBib29sIEpTVmFsdWVJc0FycmF5KEpTQ29udGV4dFJl
ZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpCiB7CiAgICAgaWYgKCFjdHgpIHsKQEAgLTMxNiw2ICsz
MzAsMjIgQEAgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZU51bWJlcihKU0NvbnRleHRSZWYgY3R4LCBk
b3VibGUgdmFsdWUpCiAgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIGpzTnVtYmVyKHB1cmlmeU5hTih2
YWx1ZSkpKTsKIH0KIAorSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZVN5bWJvbChKU0NvbnRleHRSZWYg
Y3R4LCBKU1N0cmluZ1JlZiBkZXNjcmlwdGlvbikKK3sKKyAgICBpZiAoIWN0eCkgeworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2Vy
KGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKGV4ZWMtPnZtKCkp
OworCisgICAgSlNTdHJpbmcqIGpzRGVzY3JpcHRpb24gPSBqc1N0cmluZyhleGVjLCBkZXNjcmlw
dGlvbiA/IGRlc2NyaXB0aW9uLT5zdHJpbmcoKSA6IFN0cmluZygpKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworICAgIHJldHVybiB0b1JlZihleGVjLCBTeW1i
b2w6OmNyZWF0ZShleGVjLCBqc0Rlc2NyaXB0aW9uKSk7Cit9CisKIEpTVmFsdWVSZWYgSlNWYWx1
ZU1ha2VTdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgc3RyaW5nKQogewogICAg
IGlmICghY3R4KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFs
dWVSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5oCmluZGV4IDk4
MTVkZTc4M2MwYWVlMDczZTNhNDQ4YmQwYzdjYWRkNGE5NTJjMDYuLjNiZTg1YjBhOWMxNjJmZjcw
YjYxYzBiNjc2ZjU0ZWI0NGQ3MDVhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNWYWx1ZVJlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1
ZVJlZi5oCkBAIC00Miw2ICs0Miw3IEBACiBAY29uc3RhbnQgICAgIGtKU1R5cGVOdW1iZXIgICAg
IEEgcHJpbWl0aXZlIG51bWJlciB2YWx1ZS4KIEBjb25zdGFudCAgICAga0pTVHlwZVN0cmluZyAg
ICAgQSBwcmltaXRpdmUgc3RyaW5nIHZhbHVlLgogQGNvbnN0YW50ICAgICBrSlNUeXBlT2JqZWN0
ICAgICBBbiBvYmplY3QgdmFsdWUgKG1lYW5pbmcgdGhhdCB0aGlzIEpTVmFsdWVSZWYgaXMgYSBK
U09iamVjdFJlZikuCitAY29uc3RhbnQgICAgIGtKU1R5cGVTeW1ib2wgICAgIEEgcHJpbWl0aXZl
IHN5bWJvbCB2YWx1ZS4KICovCiB0eXBlZGVmIGVudW0gewogICAgIGtKU1R5cGVVbmRlZmluZWQs
CkBAIC00OSw3ICs1MCw4IEBAIHR5cGVkZWYgZW51bSB7CiAgICAga0pTVHlwZUJvb2xlYW4sCiAg
ICAga0pTVHlwZU51bWJlciwKICAgICBrSlNUeXBlU3RyaW5nLAotICAgIGtKU1R5cGVPYmplY3QK
KyAgICBrSlNUeXBlT2JqZWN0LAorICAgIGtKU1R5cGVTeW1ib2wgQ0ZfRU5VTV9BVkFJTEFCTEUo
MTBfMTMsIDExXzApCiB9IEpTVHlwZTsKIAogLyohCkBAIC0xNTEsNiArMTUzLDE2IEBAIEpTX0VY
UE9SVCBib29sIEpTVmFsdWVJc09iamVjdChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZh
bHVlKTsKIAogLyohCiBAZnVuY3Rpb24KK0BhYnN0cmFjdCAgICAgICBUZXN0cyB3aGV0aGVyIGEg
SmF2YVNjcmlwdCB2YWx1ZSdzIHR5cGUgaXMgdGhlIHN5bWJvbCB0eXBlLgorQHBhcmFtIGN0eCAg
ICAgIFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCitAcGFyYW0gdmFsdWUgICAgVGhlIEpT
VmFsdWUgdG8gdGVzdC4KK0ByZXN1bHQgICAgICAgICB0cnVlIGlmIHZhbHVlJ3MgdHlwZSBpcyB0
aGUgc3ltYm9sIHR5cGUsIG90aGVyd2lzZSBmYWxzZS4KKyovCitKU19FWFBPUlQgYm9vbCBKU1Zh
bHVlSXNTeW1ib2woSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkgQ0ZfQVZBSUxB
QkxFKDEwXzEzLCAxMV8wKTsKKworCisvKiEKK0BmdW5jdGlvbgogQGFic3RyYWN0IFRlc3RzIHdo
ZXRoZXIgYSBKYXZhU2NyaXB0IHZhbHVlIGlzIGFuIG9iamVjdCB3aXRoIGEgZ2l2ZW4gY2xhc3Mg
aW4gaXRzIGNsYXNzIGNoYWluLgogQHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8g
dXNlLgogQHBhcmFtIHZhbHVlIFRoZSBKU1ZhbHVlIHRvIHRlc3QuCkBAIC0yNTksNiArMjcxLDE1
IEBAIEpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlTnVtYmVyKEpTQ29udGV4dFJlZiBj
dHgsIGRvdWJsZSBudW1iZXIpOwogCiAvKiEKIEBmdW5jdGlvbgorQGFic3RyYWN0ICAgICAgICAg
ICAgQ3JlYXRlcyBhIEphdmFTY3JpcHQgdmFsdWUgb2YgdGhlIHN5bWJvbCB0eXBlLgorQHBhcmFt
IGN0eCAgICAgICAgICAgVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KK0BwYXJhbSBkZXNj
cmlwdGlvbiAgIEEgZGVzY3JpcHRpb24gb2YgdGhlIG5ld2x5IGNyZWF0ZWQgc3ltYm9sIHZhbHVl
LgorQHJlc3VsdCAgICAgICAgICAgICAgQSB1bmlxdWUgSlNWYWx1ZSBvZiB0aGUgc3ltYm9sIHR5
cGUsIHdob3NlIGRlc2NyaXB0aW9uIG1hdGNoZXMgdGhlIG9uZSBwcm92aWRlZC4KKyovCitKU19F
WFBPUlQgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZVN5bWJvbChKU0NvbnRleHRSZWYgY3R4LCBKU1N0
cmluZ1JlZiBkZXNjcmlwdGlvbik7CisKKy8qIQorQGZ1bmN0aW9uCiBAYWJzdHJhY3QgICAgICAg
Q3JlYXRlcyBhIEphdmFTY3JpcHQgdmFsdWUgb2YgdGhlIHN0cmluZyB0eXBlLgogQHBhcmFtIGN0
eCAgVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KIEBwYXJhbSBzdHJpbmcgICBUaGUgSlNT
dHJpbmcgdG8gYXNzaWduIHRvIHRoZSBuZXdseSBjcmVhdGVkIEpTVmFsdWUuIFRoZQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwppbmRleCA5MmMyMmM1OWQ5MTlkMDZm
MTI0OGFkZGExYWE0MDEwNGZiZjc4NzcxLi4xY2I5Zjg4YjhjNTljOWE1YjUxODIxNWY0N2NmNmU0
OTQwYzE4OTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rl
c3RhcGkuYworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwpA
QCAtMTQ0Myw2ICsxNDQzLDE0IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAg
ICAgQVNTRVJUKEpTVmFsdWVHZXRUeXBlKGNvbnRleHQsIGpzRW1wdHlTdHJpbmcpID09IGtKU1R5
cGVTdHJpbmcpOwogICAgIEFTU0VSVChKU1ZhbHVlR2V0VHlwZShjb250ZXh0LCBqc09uZVN0cmlu
ZykgPT0ga0pTVHlwZVN0cmluZyk7CiAKKyAgICB7CisgICAgICAgIEpTU3RyaW5nUmVmIG1ha2VT
eW1ib2xTY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibmV3IFN5bWJvbCgn
ZG9wZScpOyIpOworICAgICAgICBKU1ZhbHVlUmVmIHN5bWJvbFZhbHVlID0gSlNFdmFsdWF0ZVNj
cmlwdChjb250ZXh0LCBtYWtlU3ltYm9sU2NyaXB0LCBOVUxMLCBOVUxMLCAwLCBOVUxMKTsKKyAg
ICAgICAgQVNTRVJUKEpTVmFsdWVHZXRUeXBlKGNvbnRleHQsIHN5bWJvbFZhbHVlKSA9PSBrSlNU
eXBlU3ltYm9sKTsKKyAgICAgICAgQVNTRVJUKEpTVmFsdWVJc1N5bWJvbChjb250ZXh0LCBzeW1i
b2xWYWx1ZSkpOworICAgICAgICBKU1N0cmluZ1JlbGVhc2UobWFrZVN5bWJvbFNjcmlwdCk7Cisg
ICAgfQorCiAgICAgQVNTRVJUKCFKU1ZhbHVlSXNCb29sZWFuKGNvbnRleHQsIE5VTEwpKTsKICAg
ICBBU1NFUlQoIUpTVmFsdWVJc09iamVjdChjb250ZXh0LCBOVUxMKSk7CiAgICAgQVNTRVJUKCFK
U1ZhbHVlSXNBcnJheShjb250ZXh0LCBOVUxMKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL3Rlc3RhcGkubW0KaW5kZXggZTk4ZDZjZjVkZGJjZTE3OGUwMGM5ZGRiMGU1MGVjZTNh
ZTNkNjE3YS4uMzQ1MGU0Zjg1ZGZkZDU1ODhhYTc1MGU3YjY0OTcwZTUyZjQzNDFkOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQpAQCAtNTcyLDYgKzU3Miwx
MiBAQCBzdGF0aWMgdm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSU1haW4oKQogCiAgICAgQGF1dG9yZWxl
YXNlcG9vbCB7CiAgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9j
XSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAqc3ltYm9sID0gW2NvbnRleHQgZXZhbHVhdGVTY3Jp
cHQ6QCJuZXcgU3ltYm9sKCdkb3BlJyk7Il07CisgICAgICAgIGNoZWNrUmVzdWx0KEAiU2hvdWxk
IGJlIGEgc3ltYm9sIHZhbHVlIiwgc3ltYm9sLmlzU3ltYm9sKTsKKyAgICB9CisKKyAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQg
YWxsb2NdIGluaXRdOwogICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0
ZVNjcmlwdDpAIlsgXSJdOwogICAgICAgICBjaGVja1Jlc3VsdChAIlsgXSIsIHJlc3VsdC5pc0Fy
cmF5KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgKaW5kZXggMWJkOWQwOTc0MWIwMjUwY2Zk
NGU3MDVhMTU4OGYxNzA4NjUwZjlkMi4uY2FmOTRmNjQ4ZTA1NmI5MjZiOThiZTVlYmNjZjkyYzhh
MTkyMzdkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbmZpZy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaApAQCAtMjMsNiArMjMsMTAgQEAKICNpbmNs
dWRlICJjbWFrZWNvbmZpZy5oIgogI2VuZGlmCiAKKyNpZm5kZWYgQlVJTERJTkdfSkFWQVNDUklQ
VENPUkUKKyNkZWZpbmUgQlVJTERJTkdfSkFWQVNDUklQVENPUkUgMQorI2VuZGlmCisKICNpbmNs
dWRlICJKU0V4cG9ydE1hY3Jvcy5oIgogCiAjaWZkZWYgX19jcGx1c3BsdXMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319642</attachid>
            <date>2017-09-01 13:49:10 -0700</date>
            <delta_ts>2017-09-06 13:17:42 -0700</delta_ts>
            <desc>fixed to not have macro value in public header</desc>
            <filename>bug-175836-20170901134908.patch</filename>
            <type>text/plain</type>
            <size>42121</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NDhmZjkxYTg1NzAzYWIwNDg3ZTczOWI0M2Y1NWM4M2RjMzEzNWE2Li44NjBhODFhN2E0ZDNhOThm
ODczMDU5ZmM3ZmNmMGJhMjdlMjBhYzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NiBAQAorMjAxNy0wOS0wMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDIEFQSV0gV2Ugc2hvdWxkIHN1cHBvcnQgdGhlIHN5bWJvbCB0
eXBlIGluIG91ciBDL09iai1DIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1ODM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRm9yIHdoYXRldmVyIHJlYXNvbiwgd2hlbmV2ZXIgd2UgYWRkZWQgc3Vw
cG9ydCBmb3Igc3ltYm9scyBpbiBKU0Mgd2UgbmV2ZXIgZXh0ZW5kZWQgc3VjaAorICAgICAgICBz
dXBwb3J0IHRvIG91ciBDL09iai1DIEFQSXMuIFRoaXMgcGF0Y2ggcmVtZWRpZXMgdGhhdCBwcm9i
bGVtLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIGZvbGxvd2luZyBBUEkgYWRkaXRp
b25zOgorICAgICAgICAxKSBUZXN0IGlmIGEgSlNWYWx1ZS9KU1ZhbHVlUmVmIGlzIGEgc3ltYm9s
IHZpYSBhbnkgb2YgdGhlIG1ldGhvZHMgQVBJIGFyZSBhYmxlIHRvIHRlc3QgZm9yIHRoZSB0eXBl
cyBvZiBvdGhlciBKU1ZhbHVlcy4KKyAgICAgICAgMikgQ3JlYXRlIGEgc3ltYm9sIG9uIGJvdGgg
QVBJcy4KKyAgICAgICAgMykgR2V0L1NldC9EZWxldGUvRGVmaW5lIHByb3BlcnR5IG5vdyB0YWtl
IGlkcyBpbiB0aGUgT2JqLUMgQVBJLgorICAgICAgICA0KSBBZGQgR2V0L1NldC9EZWxldGUgaW4g
dGhlIEMgQVBJLgorCisgICAgICAgIFdlIGNhbiBkbyAzIGJlY2F1c2UgaXQgaXMgYm90aCBiaW5h
cnkgYW5kIHNvdXJjZSBjb21wYXRhYmxlIHdpdGggdGhlIGV4aXN0aW5nIEFQSS4KKyAgICAgICAg
SSBhZGRlZCB0aGUgNCBhZGRpdGlvbiBiZWNhdXNlIHRoZSBjdXJyZW50IHByb3BlcnR5IGFjY2Vz
cyBBUElzCisgICAgICAgIG9ubHkgaGF2ZSB0aGUgYWJpbGl0eSB0byBnZXQgU3RyaW5ncy4gSXQg
d2FzIHBvc3NpYmxlIHRvIG1lcmdlCisgICAgICAgIHN5bWJvbHMgaW50byBKU1N0cmluZ1JlZiBi
dXQgdGhhdCBmZWx0IGNvbmZ1c2luZyBhbmQgZXhwb3NlcworICAgICAgICBpbXBsZW1lbnRhdGlv
biBkZXRhaWxzIG9mIG91ciBlbmdpbmUuIFRoZSBuZXcgZnVuY3Rpb25zIG1hdGNoIHRoZQorICAg
ICAgICBzYW1lIG1lYW5pbmcgdGhhdCB0aGV5IGhhdmUgaW4gSlMuCisKKyAgICAgICAgKiBBUEkv
SlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3RIYXNQcm9wZXJ0eUtleSk6CisgICAg
ICAgIChKU09iamVjdEdldFByb3BlcnR5S2V5KToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJvcGVy
dHlLZXkpOgorICAgICAgICAoSlNPYmplY3REZWxldGVQcm9wZXJ0eUtleSk6CisgICAgICAgICog
QVBJL0pTT2JqZWN0UmVmLmg6CisgICAgICAgICogQVBJL0pTVmFsdWUuaDoKKyAgICAgICAgKiBB
UEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKCtbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdTeW1ib2xGcm9t
RGVzY3JpcHRpb246SW5Db250ZXh0Ol0pOgorICAgICAgICAocGVyZm9ybVByb3BlcnR5T3BlcmF0
aW9uKToKKyAgICAgICAgKC1bSlNWYWx1ZSB2YWx1ZUZvclByb3BlcnR5OnZhbHVlRm9yUHJvcGVy
dHk6XSk6CisgICAgICAgICgtW0pTVmFsdWUgc2V0VmFsdWU6Zm9yUHJvcGVydHk6c2V0VmFsdWU6
Zm9yUHJvcGVydHk6XSk6CisgICAgICAgICgtW0pTVmFsdWUgZGVsZXRlUHJvcGVydHk6ZGVsZXRl
UHJvcGVydHk6XSk6CisgICAgICAgICgtW0pTVmFsdWUgaGFzUHJvcGVydHk6aGFzUHJvcGVydHk6
XSk6CisgICAgICAgICgtW0pTVmFsdWUgZGVmaW5lUHJvcGVydHk6ZGVzY3JpcHRvcjpkZWZpbmVQ
cm9wZXJ0eTpkZXNjcmlwdG9yOl0pOgorICAgICAgICAoLVtKU1ZhbHVlIGlzU3ltYm9sXSk6Cisg
ICAgICAgICgtW0pTVmFsdWUgb2JqZWN0Rm9yS2V5ZWRTdWJzY3JpcHQ6XSk6CisgICAgICAgICgt
W0pTVmFsdWUgc2V0T2JqZWN0OmZvcktleWVkU3Vic2NyaXB0Ol0pOgorICAgICAgICAoLVtKU1Zh
bHVlIHZhbHVlRm9yUHJvcGVydHk6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmFsdWUgc2V0
VmFsdWU6Zm9yUHJvcGVydHk6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmFsdWUgZGVsZXRl
UHJvcGVydHk6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmFsdWUgaGFzUHJvcGVydHk6XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmFsdWUgZGVmaW5lUHJvcGVydHk6ZGVzY3JpcHRvcjpd
KTogRGVsZXRlZC4KKyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5jcHA6CisgICAgICAgIChKU1Zh
bHVlR2V0VHlwZSk6CisgICAgICAgIChKU1ZhbHVlSXNTeW1ib2wpOgorICAgICAgICAoSlNWYWx1
ZU1ha2VTeW1ib2wpOgorICAgICAgICAqIEFQSS9KU1ZhbHVlUmVmLmg6CisgICAgICAgICogQVBJ
L3Rlc3RzL3Rlc3RhcGkuY3BwOiBBZGRlZC4KKyAgICAgICAgKEFQSVN0cmluZzo6QVBJU3RyaW5n
KToKKyAgICAgICAgKEFQSVN0cmluZzo6fkFQSVN0cmluZyk6CisgICAgICAgIChBUElTdHJpbmc6
Om9wZXJhdG9yIEpTU3RyaW5nUmVmKToKKyAgICAgICAgKEFQSUNvbnRleHQ6OkFQSUNvbnRleHQp
OgorICAgICAgICAoQVBJQ29udGV4dDo6fkFQSUNvbnRleHQpOgorICAgICAgICAoQVBJQ29udGV4
dDo6b3BlcmF0b3IgSlNHbG9iYWxDb250ZXh0UmVmKToKKyAgICAgICAgKHRlc3RDQVBJVmlhQ3Bw
KToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5tbToKKyAgICAgICAgKHRlc3RPYmplY3Rp
dmVDQVBJTWFpbik6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKwogMjAxNy0wOC0yMiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZSBhcmUgdXNpbmcgdmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQgd2hl
biB0aGVyZSBtYXkgbm90IGJlIGEgdmFsdWUgcHJvZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCBjZWZlZjY2MTQ1ZGYyZWI1OWFmMWQwMTE3YjZjZWFh
ZGZhNmRmNjFlLi4wZmUzZGVmMWI4ZDAwNDRhM2IyMWIxODY5N2VhYTNlMzM5MTA0ZWZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtMzMzLDYgKzMzMyw5
NCBAQCB2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RS
ZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZQogICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVk
KGV4ZWMsIGV4Y2VwdGlvbik7CiB9CiAKK2Jvb2wgSlNPYmplY3RIYXNQcm9wZXJ0eUtleShKU0Nv
bnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYga2V5LCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBl
eGVjID0gdG9KUyhjdHgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisKKyAgICBK
U09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9
IHRvSlMoZXhlYywga2V5KS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGlmIChoYW5kbGVFeGNl
cHRpb25JZk5lZWRlZChleGVjLCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhy
b3cpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgcmVzdWx0ID0ganNPYmplY3Qt
Pmhhc1Byb3BlcnR5KGV4ZWMsIGlkZW50KTsKKyAgICBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChl
eGVjLCBleGNlcHRpb24pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0pTVmFsdWVSZWYgSlNP
YmplY3RHZXRQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3Qs
IEpTVmFsdWVSZWYga2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKCFjdHgp
IHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgSlNMb2NrSG9s
ZGVyIGxvY2tlcihleGVjKTsKKworICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0
KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gdG9KUyhleGVjLCBrZXkpLnRvUHJvcGVydHlLZXko
ZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbikg
PT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBKU1ZhbHVlIGpzVmFsdWUgPSBqc09iamVjdC0+Z2V0KGV4ZWMsIGlkZW50KTsKKyAgICBo
YW5kbGVFeGNlcHRpb25JZk5lZWRlZChleGVjLCBleGNlcHRpb24pOworICAgIHJldHVybiB0b1Jl
ZihleGVjLCBqc1ZhbHVlKTsKK30KKwordm9pZCBKU09iamVjdFNldFByb3BlcnR5S2V5KEpTQ29u
dGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFsdWVS
ZWYgdmFsdWUsIEpTUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikKK3sKKyAgICBpZiAoIWN0eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0
eCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZt
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisKKyAgICBKU09i
amVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CisgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdG9K
UyhleGVjLCB2YWx1ZSk7CisKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gdG9KUyhleGVjLCBrZXkp
LnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4
ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKKyAgICAgICAgcmV0
dXJuOworCisgICAgYm9vbCBkb2VzTm90SGF2ZVByb3BlcnR5ID0gYXR0cmlidXRlcyAmJiAhanNP
YmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIGlkZW50KTsKKyAgICBpZiAoTElLRUxZKCFzY29wZS5l
eGNlcHRpb24oKSkpIHsKKyAgICAgICAgaWYgKGRvZXNOb3RIYXZlUHJvcGVydHkpIHsKKyAgICAg
ICAgICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjKGpzVmFsdWUsIGF0dHJpYnV0ZXMpOworICAg
ICAgICAgICAganNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KGpzT2Jq
ZWN0LCBleGVjLCBpZGVudCwgZGVzYywgZmFsc2UpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoanNPYmplY3QpOworICAgICAgICAgICAganNPYmpl
Y3QtPm1ldGhvZFRhYmxlKCktPnB1dChqc09iamVjdCwgZXhlYywgaWRlbnQsIGpzVmFsdWUsIHNs
b3QpOworICAgICAgICB9CisgICAgfQorICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMs
IGV4Y2VwdGlvbik7Cit9CisKK2Jvb2wgSlNPYmplY3REZWxldGVQcm9wZXJ0eUtleShKU0NvbnRl
eHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYga2V5LCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCit7CisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBleGVj
ID0gdG9KUyhjdHgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisKKyAgICBKU09i
amVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IHRv
SlMoZXhlYywga2V5KS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGlmIChoYW5kbGVFeGNlcHRp
b25JZk5lZWRlZChleGVjLCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgcmVzdWx0ID0ganNPYmplY3QtPm1l
dGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGpzT2JqZWN0LCBleGVjLCBpZGVudCk7CisgICAg
aGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoZXhlYywgZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCiBKU1ZhbHVlUmVmIEpTT2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KEpTQ29udGV4
dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgdW5zaWduZWQgcHJvcGVydHlJbmRleCwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIGlmICghY3R4KSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmgKaW5kZXggOTVkNTNiN2Y0ZTU4ZTk2ZjBjYmMzMTU5NWFmOWM0
NjE5NzhhYTQzZC4uZjJhNmVlY2Y1ZTc1ZDIyYTEwZGFhN2Y3Zjc0NWQzNGZmMjk2NjAyZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaApAQCAtNTM2LDkgKzUzNiw5IEBA
IEpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpTT2JqZWN0R2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0
eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKCiBAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24gY29udGV4
dCB0byB1c2UuCiBAcGFyYW0gb2JqZWN0IFRoZSBKU09iamVjdCB3aG9zZSBwcm9wZXJ0eSB5b3Ug
d2FudCB0byBzZXQuCiBAcGFyYW0gcHJvcGVydHlOYW1lIEEgSlNTdHJpbmcgY29udGFpbmluZyB0
aGUgcHJvcGVydHkncyBuYW1lLgotQHBhcmFtIHZhbHVlIEEgSlNWYWx1ZSB0byB1c2UgYXMgdGhl
IHByb3BlcnR5J3MgdmFsdWUuCi1AcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFs
dWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBp
ZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgorQHBhcmFtIHZhbHVlIEEg
SlNWYWx1ZVJlZiB0byB1c2UgYXMgdGhlIHByb3BlcnR5J3MgdmFsdWUuCiBAcGFyYW0gYXR0cmli
dXRlcyBBIGxvZ2ljYWxseSBPUmVkIHNldCBvZiBKU1Byb3BlcnR5QXR0cmlidXRlcyB0byBnaXZl
IHRvIHRoZSBwcm9wZXJ0eS4KK0BwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1
ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlm
IHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAqLwogSlNfRVhQT1JUIHZv
aWQgSlNPYmplY3RTZXRQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmpl
Y3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNQcm9wZXJ0
eUF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKIApAQCAtNTU1
LDYgKzU1NSw1NCBAQCBKU19FWFBPUlQgYm9vbCBKU09iamVjdERlbGV0ZVByb3BlcnR5KEpTQ29u
dGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdAogCiAvKiEKIEBmdW5jdGlvbgor
QGFic3RyYWN0IFRlc3RzIHdoZXRoZXIgYW4gb2JqZWN0IGhhcyBhIGdpdmVuIHByb3BlcnR5IHVz
aW5nIGEgSlNWYWx1ZVJlZiBhcyB0aGUgcHJvcGVydHkga2V5LgorQHBhcmFtIG9iamVjdCBUaGUg
SlNPYmplY3QgdG8gdGVzdC4KK0BwYXJhbSBwcm9wZXJ0eUtleSBBIEpTVmFsdWVSZWYgY29udGFp
bmluZyB0aGUgcHJvcGVydHkga2V5IHRvIHVzZSB3aGVuIGxvb2tpbmcgdXAgdGhlIHByb3BlcnR5
LgorQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRv
IHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJl
IHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KK0ByZXN1bHQgdHJ1ZSBpZiB0aGUgb2JqZWN0IGhhcyBh
IHByb3BlcnR5IHdob3NlIG5hbWUgbWF0Y2hlcyBwcm9wZXJ0eUtleSwgb3RoZXJ3aXNlIGZhbHNl
LgorQGRpc2N1c3Npb24gVGhpcyBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyBwZXJmb3JtaW5nICJw
cm9wZXJ0eUtleSBpbiBvYmplY3QiIGZyb20gSmF2YVNjcmlwdC4KKyovCitKU19FWFBPUlQgYm9v
bCBKU09iamVjdEhhc1Byb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9i
amVjdCwgSlNWYWx1ZVJlZiBwcm9wZXJ0eUtleSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9B
VkFJTEFCTEUoMTBfMTMsIDExXzApOworCisvKiEKK0BmdW5jdGlvbgorQGFic3RyYWN0IEdldHMg
YSBwcm9wZXJ0eSBmcm9tIGFuIG9iamVjdCB1c2luZyBhIEpTVmFsdWVSZWYgYXMgdGhlIHByb3Bl
cnR5IGtleS4KK0BwYXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KK0BwYXJh
bSBvYmplY3QgVGhlIEpTT2JqZWN0IHdob3NlIHByb3BlcnR5IHlvdSB3YW50IHRvIGdldC4KK0Bw
YXJhbSBwcm9wZXJ0eUtleSBBIEpTVmFsdWVSZWYgY29udGFpbmluZyB0aGUgcHJvcGVydHkga2V5
IHRvIHVzZSB3aGVuIGxvb2tpbmcgdXAgdGhlIHByb3BlcnR5LgorQHBhcmFtIGV4Y2VwdGlvbiBB
IHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwg
aWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlv
bi4KK0ByZXN1bHQgVGhlIHByb3BlcnR5J3MgdmFsdWUgaWYgb2JqZWN0IGhhcyB0aGUgcHJvcGVy
dHkga2V5LCBvdGhlcndpc2UgdGhlIHVuZGVmaW5lZCB2YWx1ZS4KK0BkaXNjdXNzaW9uIFRoaXMg
ZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXMgcGVyZm9ybWluZyAib2JqZWN0W3Byb3BlcnR5S2V5XSIg
ZnJvbSBKYXZhU2NyaXB0LgorKi8KK0pTX0VYUE9SVCBKU1ZhbHVlUmVmIEpTT2JqZWN0R2V0UHJv
cGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVm
IHByb3BlcnR5S2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMywg
MTFfMCk7CisKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgU2V0cyBhIHByb3BlcnR5IG9uIGFu
IG9iamVjdCB1c2luZyBhIEpTVmFsdWVSZWYgYXMgdGhlIHByb3BlcnR5IGtleS4KK0BwYXJhbSBj
dHggVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KK0BwYXJhbSBvYmplY3QgVGhlIEpTT2Jq
ZWN0IHdob3NlIHByb3BlcnR5IHlvdSB3YW50IHRvIHNldC4KK0BwYXJhbSBwcm9wZXJ0eUtleSBB
IEpTVmFsdWVSZWYgY29udGFpbmluZyB0aGUgcHJvcGVydHkga2V5IHRvIHVzZSB3aGVuIGxvb2tp
bmcgdXAgdGhlIHByb3BlcnR5LgorQHBhcmFtIHZhbHVlIEEgSlNWYWx1ZVJlZiB0byB1c2UgYXMg
dGhlIHByb3BlcnR5J3MgdmFsdWUuCitAcGFyYW0gYXR0cmlidXRlcyBBIGxvZ2ljYWxseSBPUmVk
IHNldCBvZiBKU1Byb3BlcnR5QXR0cmlidXRlcyB0byBnaXZlIHRvIHRoZSBwcm9wZXJ0eS4KK0Bw
YXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9y
ZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBz
dG9yZSBhbiBleGNlcHRpb24uCitAZGlzY3Vzc2lvbiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBzYW1l
IGFzIHBlcmZvcm1pbmcgIm9iamVjdFtwcm9wZXJ0eUtleV0gPSB2YWx1ZSIgZnJvbSBKYXZhU2Ny
aXB0LgorKi8KK0pTX0VYUE9SVCB2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHlLZXkoSlNDb250ZXh0
UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIHByb3BlcnR5S2V5LCBKU1Zh
bHVlUmVmIHZhbHVlLCBKU1Byb3BlcnR5QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMywgMTFfMCk7CisKKy8qIQorQGZ1bmN0aW9u
CitAYWJzdHJhY3QgRGVsZXRlcyBhIHByb3BlcnR5IGZyb20gYW4gb2JqZWN0IHVzaW5nIGEgSlNW
YWx1ZVJlZiBhcyB0aGUgcHJvcGVydHkga2V5LgorQHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNv
bnRleHQgdG8gdXNlLgorQHBhcmFtIG9iamVjdCBUaGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkg
eW91IHdhbnQgdG8gZGVsZXRlLgorQHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250
YWluaW5nIHRoZSBwcm9wZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVy
dHkuCitAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2gg
dG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNh
cmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgorQHJlc3VsdCB0cnVlIGlmIHRoZSBkZWxldGUgb3Bl
cmF0aW9uIHN1Y2NlZWRzLCBvdGhlcndpc2UgZmFsc2UgKGZvciBleGFtcGxlLCBpZiB0aGUgcHJv
cGVydHkgaGFzIHRoZSBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgYXR0cmlidXRlIHNl
dCkuCitAZGlzY3Vzc2lvbiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHBlcmZvcm1pbmcg
ImRlbGV0ZSBvYmplY3RbcHJvcGVydHlLZXldIiBmcm9tIEphdmFTY3JpcHQuCisqLworSlNfRVhQ
T1JUIGJvb2wgSlNPYmplY3REZWxldGVQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09i
amVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYgcHJvcGVydHlLZXksIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEzLCAxMV8wKTsKKworLyohCitAZnVuY3Rpb24KIEBhYnN0
cmFjdCBHZXRzIGEgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QgYnkgbnVtZXJpYyBpbmRleC4KIEBw
YXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KIEBwYXJhbSBvYmplY3QgVGhl
IEpTT2JqZWN0IHdob3NlIHByb3BlcnR5IHlvdSB3YW50IHRvIGdldC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1ZhbHVlLmgKaW5kZXggMTQxMGRkNzRhMTdmOTcwNzA2ZTQ0ZGVkMjRjY2QxNzBjMzQ3
OWMyZS4uYmQ2OWNjNDY1M2VkYjA3YTk5ZmM4YzAzY2RmNjUyZjA1OGZlNzA2MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1ZhbHVlLmgKQEAgLTE0OSw2ICsxNDksMTUgQEAgTlNfQ0xBU1NfQVZB
SUxBQkxFKDEwXzksIDdfMCkKICsgKEpTVmFsdWUgKil2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRl
eHQ6KEpTQ29udGV4dCAqKWNvbnRleHQ7CiAKIC8qIQorIEBtZXRob2QKKyBAYWJzdHJhY3QgQ3Jl
YXRlIGEgbmV3LCB1bmlxdWUsIHN5bWJvbCBvYmplY3QuCisgQHBhcmFtIGRlc2NyaXB0aW9uIFRo
ZSBkZXNjcmlwdGlvbiBvZiB0aGUgc3ltYm9sIG9iamVjdCBiZWluZyBjcmVhdGVkLgorIEBwYXJh
bSBjb250ZXh0IFRoZSBKU0NvbnRleHQgdG8gd2hpY2ggdGhlIHJlc3VsdGluZyBKU1ZhbHVlIGJl
bG9uZ3MuCisgQHJlc3VsdCBUaGUgSlNWYWx1ZSByZXByZXNlbnRpbmcgYSB1bmlxdWUgSmF2YVNj
cmlwdCB2YWx1ZSB3aXRoIHR5cGUgc3ltYm9sLgorICovCisrIChKU1ZhbHVlICopdmFsdWVXaXRo
TmV3U3ltYm9sRnJvbURlc2NyaXB0aW9uOihOU1N0cmluZyAqKWRlc2NyaXB0aW9uIEluQ29udGV4
dDooSlNDb250ZXh0ICopY29udGV4dCBOU19BVkFJTEFCTEUoMTBfMTMsIDExXzApOworCisvKiEK
IEBtZXRob2Rncm91cCBDb252ZXJ0aW5nIHRvIE9iamVjdGl2ZS1DIFR5cGVzCiBAZGlzY3Vzc2lv
biBXaGVuIGNvbnZlcnRpbmcgYmV0d2VlbiBKYXZhU2NyaXB0IHZhbHVlcyBhbmQgT2JqZWN0aXZl
LUMgb2JqZWN0cyBhIGNvcHkgaXMKICBwZXJmb3JtZWQuIFZhbHVlcyBvZiB0eXBlcyBsaXN0ZWQg
YmVsb3cgYXJlIGNvcGllZCB0byB0aGUgY29ycmVzcG9uZGluZwpAQCAtMzA1LDQzICszMTQsNjEg
QEAgTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzksIDdfMCkKIC8qIQogQG1ldGhvZGdyb3VwIEFjY2Vz
c2luZyBQcm9wZXJ0aWVzCiAqLworCisjaWYgKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMwMCkg
fHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQorCisvLyBUaGVzZSBkZWNsYXJhdGlv
bnMgZXhpc3QgdG8gZW5zdXJlIGNvbXBhdGFibGl0eSB3aGVuIHRhcmdldGluZyBvbGRlciBPU3Mu
CistIChKU1ZhbHVlICopdmFsdWVGb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0g
KHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5
OworLSAoQk9PTClkZWxldGVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKEJPT0wp
aGFzUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7CistICh2b2lkKWRlZmluZVByb3BlcnR5
OihOU1N0cmluZyAqKXByb3BlcnR5IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0b3I7CisKKyNlbHNl
IC8vIChkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDApIHx8IChkZWZpbmVkKF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA8IDExMDAwMCkKKwogLyohCiBAbWV0aG9kCiBAYWJzdHJhY3QgQWNjZXNzIGEgcHJvcGVydHkg
b2YgYSBKU1ZhbHVlLgogQHJlc3VsdCBUaGUgSlNWYWx1ZSBmb3IgdGhlIHJlcXVlc3RlZCBwcm9w
ZXJ0eSBvciB0aGUgSlNWYWx1ZSA8Y29kZT51bmRlZmluZWQ8L2NvZGU+IAogIGlmIHRoZSBwcm9w
ZXJ0eSBkb2VzIG5vdCBleGlzdC4KK0BkaXNjdXNzaW9uIEJlZm9yZSBtYWNPUyAxMC4xMyBhbmQg
aU9TIDExIDxjb2RlPnByb3BlcnR5PC9jb2RlPiB3YXMgYW4gTlNTdHJpbmcgKiwgdGhpcyB3YXMg
cmVsYXhlZCB0byBpZCBzbyBKYXZhU2NyaXB0IFN5bWJvbCBwcm9wZXJ0aWVzIGNvdWxkIGJlIGFj
Y2Vzc2VkLgogKi8KLS0gKEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihOU1N0cmluZyAqKXBy
b3BlcnR5OworLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KGlkKXByb3BlcnR5OwogCiAv
KiEKIEBtZXRob2QKIEBhYnN0cmFjdCBTZXQgYSBwcm9wZXJ0eSBvbiBhIEpTVmFsdWUuCitAZGlz
Y3Vzc2lvbiBCZWZvcmUgbWFjT1MgMTAuMTMgYW5kIGlPUyAxMSA8Y29kZT5wcm9wZXJ0eTwvY29k
ZT4gd2FzIGFuIE5TU3RyaW5nICosIHRoaXMgd2FzIHJlbGF4ZWQgdG8gaWQgc28gSmF2YVNjcmlw
dCBTeW1ib2wgcHJvcGVydGllcyBjb3VsZCBiZSBzZXQuCiAqLwotLSAodm9pZClzZXRWYWx1ZToo
aWQpdmFsdWUgZm9yUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7CistICh2b2lkKXNldFZh
bHVlOihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooaWQpcHJvcGVydHk7CiAKIC8qIQogQG1ldGhvZAog
QGFic3RyYWN0IERlbGV0ZSBhIHByb3BlcnR5IGZyb20gYSBKU1ZhbHVlLgogQHJlc3VsdCBZRVMg
aWYgZGVsZXRpb24gaXMgc3VjY2Vzc2Z1bCwgTk8gb3RoZXJ3aXNlLgorQGRpc2N1c3Npb24gQmVm
b3JlIG1hY09TIDEwLjEzIGFuZCBpT1MgMTEgPGNvZGU+cHJvcGVydHk8L2NvZGU+IHdhcyBhbiBO
U1N0cmluZyAqLCB0aGlzIHdhcyByZWxheGVkIHRvIGlkIHNvIEphdmFTY3JpcHQgU3ltYm9sIHBy
b3BlcnRpZXMgY291bGQgYmUgZGVsZXRlZC4KICovCi0tIChCT09MKWRlbGV0ZVByb3BlcnR5OihO
U1N0cmluZyAqKXByb3BlcnR5OworLSAoQk9PTClkZWxldGVQcm9wZXJ0eTooaWQpcHJvcGVydHk7
CiAKIC8qIQogQG1ldGhvZAogQGFic3RyYWN0IENoZWNrIGlmIGEgSlNWYWx1ZSBoYXMgYSBwcm9w
ZXJ0eS4KIEBkaXNjdXNzaW9uIFRoaXMgbWV0aG9kIGhhcyB0aGUgc2FtZSBmdW5jdGlvbiBhcyB0
aGUgSmF2YVNjcmlwdCBvcGVyYXRvciA8Y29kZT5pbjwvY29kZT4uCiBAcmVzdWx0IFJldHVybnMg
WUVTIGlmIHByb3BlcnR5IGlzIHByZXNlbnQgb24gdGhlIHZhbHVlLgorQGRpc2N1c3Npb24gQmVm
b3JlIG1hY09TIDEwLjEzIGFuZCBpT1MgMTEgPGNvZGU+cHJvcGVydHk8L2NvZGU+IHdhcyBhbiBO
U1N0cmluZyAqLCB0aGlzIHdhcyByZWxheGVkIHRvIGlkIHNvIEphdmFTY3JpcHQgU3ltYm9sIHBy
b3BlcnRpZXMgY291bGQgYmUgY2hlY2tlZCBmb3IgZXhpc3RhbmNlLgogKi8KLS0gKEJPT0wpaGFz
UHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7CistIChCT09MKWhhc1Byb3BlcnR5OihpZClw
cm9wZXJ0eTsKIAogLyohCiBAbWV0aG9kCiBAYWJzdHJhY3QgRGVmaW5lIHByb3BlcnRpZXMgd2l0
aCBjdXN0b20gZGVzY3JpcHRvcnMgb24gSlNWYWx1ZXMuCiBAZGlzY3Vzc2lvbiBUaGlzIG1ldGhv
ZCBtYXkgYmUgdXNlZCB0byBjcmVhdGUgYSBkYXRhIG9yIGFjY2Vzc29yIHByb3BlcnR5IG9uIGFu
IG9iamVjdC4KICBUaGlzIG1ldGhvZCBvcGVyYXRlcyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSBtZXRob2QgaW4gdGhlIAotIEphdmFTY3JpcHQgbGFuZ3VhZ2Uu
CisgSmF2YVNjcmlwdCBsYW5ndWFnZS4gQmVmb3JlIG1hY09TIDEwLjEzIGFuZCBpT1MgMTEgPGNv
ZGU+cHJvcGVydHk8L2NvZGU+IHdhcyBhbiBOU1N0cmluZyAqLCB0aGlzIHdhcyByZWxheGVkIHRv
IGlkIHNvIEphdmFTY3JpcHQgU3ltYm9sIHByb3BlcnRpZXMgY291bGQgYmUgZGVmaW5lZC4KICov
Ci0tICh2b2lkKWRlZmluZVByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5IGRlc2NyaXB0b3I6
KGlkKWRlc2NyaXB0b3I7CistICh2b2lkKWRlZmluZVByb3BlcnR5OihpZClwcm9wZXJ0eSBkZXNj
cmlwdG9yOihpZClkZXNjcmlwdG9yOworCisjZW5kaWYKIAogLyohCiBAbWV0aG9kCkBAIC00MDMs
NiArNDMwLDEyIEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCiBAcHJvcGVydHkgKHJl
YWRvbmx5KSBCT09MIGlzT2JqZWN0OwogCiAvKiEKKyBAcHJvcGVydHkKKyBAYWJzdHJhY3QgQ2hl
Y2sgaWYgYSBKU1ZhbHVlIGlzIGEgc3ltYm9sLgorICovCitAcHJvcGVydHkgKHJlYWRvbmx5KSBC
T09MIGlzU3ltYm9sIE5TX0FWQUlMQUJMRSgxMF8xMywgMTFfMCk7CisKKy8qIQogQHByb3BlcnR5
CiBAYWJzdHJhY3QgQ2hlY2sgaWYgYSBKU1ZhbHVlIGlzIGFuIGFycmF5LgogKi8gCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmFsdWUubW0KaW5kZXggNjk4NmZhZTgzMWUyZWNjNmViYzJiZWRhZTRl
NjhhYzIyZjU3OGU4MC4uOWYyZjUzMGM2MDc2MTFjZDg2NmYzZDQzZDQ2OThmNTUzZGU4N2Y3YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQpAQCAtMzksNiArMzksNyBAQAogI2lt
cG9ydCAiSlNDSlNWYWx1ZS5oIgogI2ltcG9ydCAiU3Ryb25nLmgiCiAjaW1wb3J0ICJTdHJvbmdJ
bmxpbmVzLmgiCisjaW1wb3J0IDx3dGYvRXhwZWN0ZWQuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgogI2ltcG9ydCA8d3RmL0xvY2suaD4KQEAgLTEz
Niw2ICsxMzcsMTMgQEAgTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5RGVzY3JpcHRvclNldEtl
eSA9IEAic2V0IjsKICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpKU1Zh
bHVlTWFrZVVuZGVmaW5lZChbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKSBpbkNvbnRleHQ6
Y29udGV4dF07CiB9CiAKKysgKEpTVmFsdWUgKil2YWx1ZVdpdGhOZXdTeW1ib2xGcm9tRGVzY3Jp
cHRpb246KE5TU3RyaW5nICopZGVzY3JpcHRpb24gSW5Db250ZXh0OihKU0NvbnRleHQgKiljb250
ZXh0Cit7CisgICAgSlNTdHJpbmdSZWYgc3RyaW5nID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJp
bmcocmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oZGVzY3JpcHRpb24pKTsKKyAgICByZXR1
cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpKU1ZhbHVlTWFrZVN5bWJvbChbY29udGV4
dCBKU0dsb2JhbENvbnRleHRSZWZdLCBzdHJpbmcpIGluQ29udGV4dDpjb250ZXh0XTsKK30KKwor
CiAtIChpZCl0b09iamVjdAogewogICAgIHJldHVybiB2YWx1ZVRvT2JqZWN0KF9jb250ZXh0LCBt
X3ZhbHVlKTsKQEAgLTIxOSw3NCArMjI3LDEwNiBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVy
dHlEZXNjcmlwdG9yU2V0S2V5ID0gQCJzZXQiOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLS0g
KEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQordGVt
cGxhdGU8dHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFtZSBOU1N0cmluZ0Z1bmN0aW9uLCB0eXBlbmFt
ZSBKU1ZhbHVlRnVuY3Rpb24sIHR5cGVuYW1lLi4uIFR5cGVzPgoraW5saW5lIEV4cGVjdGVkPFJl
c3VsdCwgSlNWYWx1ZVJlZj4gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uKE5TU3RyaW5nRnVuY3Rp
b24gc3RyaW5nRnVuY3Rpb24sIEpTVmFsdWVGdW5jdGlvbiBqc0Z1bmN0aW9uLCBKU1ZhbHVlKiB2
YWx1ZSwgaWQgcHJvcGVydHlLZXksIFR5cGVzLi4uIGFyZ3VtZW50cykKIHsKLSAgICBKU1ZhbHVl
UmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2Jq
ZWN0KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsK
KyAgICBKU0NvbnRleHQqIGNvbnRleHQgPSBbdmFsdWUgY29udGV4dF07CisgICAgSlNWYWx1ZVJl
ZiBleGNlcHRpb24gPSBudWxscHRyOworICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVU
b09iamVjdChbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBbdmFsdWUgSlNWYWx1ZVJlZl0s
ICZleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbX2NvbnRl
eHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgICAgIHJldHVybiBV
bmV4cGVjdGVkVHlwZTxKU1ZhbHVlUmVmPihleGNlcHRpb24pOwogCi0gICAgSlNTdHJpbmdSZWYg
bmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilwcm9wZXJ0eU5h
bWUpOwotICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShbX2NvbnRl
eHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgb2JqZWN0LCBuYW1lLCAmZXhjZXB0aW9uKTsKLSAgICBK
U1N0cmluZ1JlbGVhc2UobmFtZSk7Ci0gICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJu
IFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICBSZXN1
bHQgcmVzdWx0OworICAgIC8vIElmIGl0J3MgYSBOU1N0cmluZyBhbHJlYWR5LCByZWR1Y2UgaW5k
aXJlY3Rpb24gYW5kIGp1c3QgcGFzcyB0aGUgTlNTdHJpbmcuCisgICAgaWYgKFtwcm9wZXJ0eUtl
eSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7CisgICAgICAgIEpTU3RyaW5nUmVm
IG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZyhyZWludGVycHJldF9jYXN0PENGU3Ry
aW5nUmVmPihwcm9wZXJ0eUtleSkpOworICAgICAgICByZXN1bHQgPSBzdHJpbmdGdW5jdGlvbihb
Y29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIG5hbWUsIGFyZ3VtZW50cy4uLiwg
JmV4Y2VwdGlvbik7CisgICAgICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKKyAgICB9IGVsc2UK
KyAgICAgICAgcmVzdWx0ID0ganNGdW5jdGlvbihbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZd
LCBvYmplY3QsIFtbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6cHJvcGVydHlLZXkgaW5Db250ZXh0
OmNvbnRleHRdIEpTVmFsdWVSZWZdLCBhcmd1bWVudHMuLi4sICZleGNlcHRpb24pOworICAgIHJl
dHVybiBFeHBlY3RlZDxSZXN1bHQsIEpTVmFsdWVSZWY+KHJlc3VsdCk7Cit9CiAKLSAgICByZXR1
cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpyZXN1bHQgaW5Db250ZXh0Ol9jb250ZXh0
XTsKKyNkZWZpbmUgVVNFX05TU1RSSU5HIChkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDApIHx8
IChkZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKKworI2lmIFVTRShOU1NUUklORykKKy0g
KEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihOU1N0cmluZyAqKWtleQorI2Vsc2UKKy0gKEpT
VmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihpZClrZXkKKyNlbmRpZgoreworICAgIGF1dG8gcmVz
dWx0ID0gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uPEpTVmFsdWVSZWY+KEpTT2JqZWN0R2V0UHJv
cGVydHksIEpTT2JqZWN0R2V0UHJvcGVydHlLZXksIHNlbGYsIGtleSk7CisgICAgaWYgKHJlc3Vs
dC5lcnJvcigpKQorICAgICAgICByZXR1cm4gW19jb250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4Y2Vw
dGlvbjpyZXN1bHQuZXJyb3IoKV07CisKKyAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNW
YWx1ZVJlZjpyZXN1bHQudmFsdWUoKSBpbkNvbnRleHQ6X2NvbnRleHRdOwogfQogCi0tICh2b2lk
KXNldFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUK
KyNpZiBVU0UoTlNTVFJJTkcpCistICh2b2lkKXNldFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9wZXJ0
eTooTlNTdHJpbmcgKilrZXkKKyNlbHNlCistICh2b2lkKXNldFZhbHVlOihpZCl2YWx1ZSBmb3JQ
cm9wZXJ0eTooaWQpa2V5CisjZW5kaWYKIHsKLSAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7
Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KFtfY29udGV4dCBKU0ds
b2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKLSAgICBpZiAoZXhjZXB0aW9u
KSB7Ci0gICAgICAgIFtfY29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICAvLyBXZSBuZWVkIFVuaXQgYnVzaW5lc3MgYmVjYXVzZSB2
b2lkIGNhbid0IGJlIGFzc2lnbmVkIHRvIGluIHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbiBhbmQg
SSBkb24ndCB3YW50IHRvIGR1cGxpY2F0ZSB0aGUgY29kZS4uLgorICAgIHVzaW5nIFVuaXQgPSBz
dGQ6OnR1cGxlPD47CisgICAgYXV0byBzdHJpbmdTZXRQcm9wZXJ0eSA9IFtdIChhdXRvLi4uIGFy
Z3MpIC0+IFVuaXQgeworICAgICAgICBKU09iamVjdFNldFByb3BlcnR5KGFyZ3MuLi4pOworICAg
ICAgICByZXR1cm4geyB9OworICAgIH07CiAKLSAgICBKU1N0cmluZ1JlZiBuYW1lID0gSlNTdHJp
bmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKXByb3BlcnR5TmFtZSk7Ci0gICAgSlNP
YmplY3RTZXRQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgb2JqZWN0LCBu
YW1lLCBvYmplY3RUb1ZhbHVlKF9jb250ZXh0LCB2YWx1ZSksIDAsICZleGNlcHRpb24pOwotICAg
IEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKLSAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIFtf
Y29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICBhdXRvIGpzVmFsdWVTZXRQ
cm9wZXJ0eSA9IFtdIChhdXRvLi4uIGFyZ3MpIC0+IFVuaXQgeworICAgICAgICBKU09iamVjdFNl
dFByb3BlcnR5S2V5KGFyZ3MuLi4pOworICAgICAgICByZXR1cm4geyB9OworICAgIH07CisKKyAg
ICBhdXRvIHJlc3VsdCA9IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbjxVbml0PihzdHJpbmdTZXRQ
cm9wZXJ0eSwganNWYWx1ZVNldFByb3BlcnR5LCBzZWxmLCBrZXksIG9iamVjdFRvVmFsdWUoX2Nv
bnRleHQsIHZhbHVlKSwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lKTsKKyAgICBpZiAocmVzdWx0
LmVycm9yKCkpIHsKKyAgICAgICAgW19jb250ZXh0IG5vdGlmeUV4Y2VwdGlvbjpyZXN1bHQuZXJy
b3IoKV07CiAgICAgICAgIHJldHVybjsKICAgICB9CiB9CiAKLS0gKEJPT0wpZGVsZXRlUHJvcGVy
dHk6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lCisjaWYgVVNFKE5TU1RSSU5HKQorLSAoQk9PTClk
ZWxldGVQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXkKKyNlbHNlCistIChCT09MKWRlbGV0ZVByb3Bl
cnR5OihpZClrZXkKKyNlbmRpZgogewotICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAg
ICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoW19jb250ZXh0IEpTR2xvYmFs
Q29udGV4dFJlZl0sIG1fdmFsdWUsICZleGNlcHRpb24pOwotICAgIGlmIChleGNlcHRpb24pCi0g
ICAgICAgIHJldHVybiBbX2NvbnRleHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9u
XTsKLQotICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygo
Q0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsKLSAgICBCT09MIHJlc3VsdCA9IEpTT2JqZWN0RGVs
ZXRlUHJvcGVydHkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgbmFtZSwg
JmV4Y2VwdGlvbik7Ci0gICAgSlNTdHJpbmdSZWxlYXNlKG5hbWUpOwotICAgIGlmIChleGNlcHRp
b24pCi0gICAgICAgIHJldHVybiBbX2NvbnRleHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246ZXhj
ZXB0aW9uXTsKLQotICAgIHJldHVybiByZXN1bHQ7CisgICAgRXhwZWN0ZWQ8Qk9PTCwgSlNWYWx1
ZVJlZj4gcmVzdWx0ID0gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uPEJPT0w+KEpTT2JqZWN0RGVs
ZXRlUHJvcGVydHksIEpTT2JqZWN0RGVsZXRlUHJvcGVydHlLZXksIHNlbGYsIGtleSk7CisgICAg
aWYgKHJlc3VsdC5lcnJvcigpKQorICAgICAgICByZXR1cm4gW19jb250ZXh0IGJvb2xGcm9tTm90
aWZ5RXhjZXB0aW9uOnJlc3VsdC5lcnJvcigpXTsKKyAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7
CiB9CiAKLS0gKEJPT0wpaGFzUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lCisjaWYg
VVNFKE5TU1RSSU5HKQorLSAoQk9PTCloYXNQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXkKKyNlbHNl
CistIChCT09MKWhhc1Byb3BlcnR5OihpZClrZXkKKyNlbmRpZgogewotICAgIEpTVmFsdWVSZWYg
ZXhjZXB0aW9uID0gMDsKLSAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3Qo
W19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUsICZleGNlcHRpb24pOwotICAg
IGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbX2NvbnRleHQgYm9vbEZyb21Ob3RpZnlF
eGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICAvLyBUaGUgQy1hcGkgZG9lc24ndCByZXR1cm4gYW4g
ZXhjZXB0aW9uIHZhbHVlIGZvciB0aGUgc3RyaW5nIHZlcnNpb24gb2YgaGFzIHByb3BlcnR5Lgor
ICAgIGF1dG8gc3RyaW5nSGFzUHJvcGVydHkgPSBbXSAoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmpl
Y3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqKSAtPiBC
T09MIHsKKyAgICAgICAgcmV0dXJuIEpTT2JqZWN0SGFzUHJvcGVydHkoY3R4LCBvYmplY3QsIHBy
b3BlcnR5TmFtZSk7CisgICAgfTsKIAotICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0Ny
ZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsKLSAgICBCT09MIHJl
c3VsdCA9IEpTT2JqZWN0SGFzUHJvcGVydHkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0s
IG9iamVjdCwgbmFtZSk7Ci0gICAgSlNTdHJpbmdSZWxlYXNlKG5hbWUpOwotICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgRXhwZWN0ZWQ8Qk9PTCwgSlNWYWx1ZVJlZj4gcmVzdWx0ID0gcGVyZm9ybVBy
b3BlcnR5T3BlcmF0aW9uPEJPT0w+KHN0cmluZ0hhc1Byb3BlcnR5LCBKU09iamVjdEhhc1Byb3Bl
cnR5S2V5LCBzZWxmLCBrZXkpOworICAgIGlmIChyZXN1bHQuZXJyb3IoKSkKKyAgICAgICAgcmV0
dXJuIFtfY29udGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpyZXN1bHQuZXJyb3IoKV07Cisg
ICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpOwogfQogCi0tICh2b2lkKWRlZmluZVByb3BlcnR5OihO
U1N0cmluZyAqKXByb3BlcnR5IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0b3IKKyNpZiBVU0UoTlNT
VFJJTkcpCistICh2b2lkKWRlZmluZVByb3BlcnR5OihOU1N0cmluZyAqKWtleSBkZXNjcmlwdG9y
OihpZClkZXNjcmlwdG9yCisjZWxzZQorLSAodm9pZClkZWZpbmVQcm9wZXJ0eTooaWQpa2V5IGRl
c2NyaXB0b3I6KGlkKWRlc2NyaXB0b3IKKyNlbmRpZgogewotICAgIFtbX2NvbnRleHQgZ2xvYmFs
T2JqZWN0XVtAIk9iamVjdCJdIGludm9rZU1ldGhvZDpAImRlZmluZVByb3BlcnR5IiB3aXRoQXJn
dW1lbnRzOkBbIHNlbGYsIHByb3BlcnR5LCBkZXNjcmlwdG9yIF1dOworICAgIFtbX2NvbnRleHQg
Z2xvYmFsT2JqZWN0XVtAIk9iamVjdCJdIGludm9rZU1ldGhvZDpAImRlZmluZVByb3BlcnR5IiB3
aXRoQXJndW1lbnRzOkBbIHNlbGYsIGtleSwgZGVzY3JpcHRvciBdXTsKIH0KIAorI3VuZGVmIFVT
RV9OU1NUUklORworCiAtIChKU1ZhbHVlICopdmFsdWVBdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4
CiB7CiAgICAgLy8gUHJvcGVydGllcyB0aGF0IGFyZSBoaWdoZXIgdGhhbiBhbiB1bnNpZ25lZCB2
YWx1ZSBjYW4gaG9sZCBhcmUgY29udmVydGVkIHRvIGEgZG91YmxlIHRoZW4gaW5zZXJ0ZWQgYXMg
YSBub3JtYWwgcHJvcGVydHkuCkBAIC0zNTcsNiArMzk3LDExIEBAIE5TU3RyaW5nICogY29uc3Qg
SlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXkgPSBAInNldCI7CiAgICAgcmV0dXJuIEpTVmFsdWVJ
c09iamVjdChbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSk7CiB9CiAKKy0g
KEJPT0wpaXNTeW1ib2wKK3sKKyAgICByZXR1cm4gSlNWYWx1ZUlzU3ltYm9sKFtfY29udGV4dCBK
U0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlKTsKK30KKwogLSAoQk9PTClpc0FycmF5CiB7CiAg
ICAgcmV0dXJuIEpTVmFsdWVJc0FycmF5KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBt
X3ZhbHVlKTsKQEAgLTUzOSwxMyArNTg0LDcgQEAgTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5
RGVzY3JpcHRvclNldEtleSA9IEAic2V0IjsKIAogLSAoSlNWYWx1ZSAqKW9iamVjdEZvcktleWVk
U3Vic2NyaXB0OihpZClrZXkKIHsKLSAgICBpZiAoIVtrZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJp
bmcgY2xhc3NdXSkgewotICAgICAgICBrZXkgPSBbW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0Omtl
eSBpbkNvbnRleHQ6X2NvbnRleHRdIHRvU3RyaW5nXTsKLSAgICAgICAgaWYgKCFrZXkpCi0gICAg
ICAgICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoVW5kZWZpbmVkSW5Db250ZXh0Ol9jb250
ZXh0XTsKLSAgICB9Ci0KLSAgICByZXR1cm4gW3NlbGYgdmFsdWVGb3JQcm9wZXJ0eTooTlNTdHJp
bmcgKilrZXldOworICAgIHJldHVybiBbc2VsZiB2YWx1ZUZvclByb3BlcnR5OmtleV07CiB9CiAK
IC0gKEpTVmFsdWUgKilvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6KE5TVUludGVnZXIpaW5kZXgK
QEAgLTU1NSwxMyArNTk0LDcgQEAgTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5RGVzY3JpcHRv
clNldEtleSA9IEAic2V0IjsKIAogLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBmb3JLZXll
ZFN1YnNjcmlwdDooTlNPYmplY3QgPE5TQ29weWluZz4gKilrZXkKIHsKLSAgICBpZiAoIVtrZXkg
aXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgewotICAgICAgICBrZXkgPSBbW0pTVmFs
dWUgdmFsdWVXaXRoT2JqZWN0OmtleSBpbkNvbnRleHQ6X2NvbnRleHRdIHRvU3RyaW5nXTsKLSAg
ICAgICAgaWYgKCFrZXkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgW3NlbGYg
c2V0VmFsdWU6b2JqZWN0IGZvclByb3BlcnR5OihOU1N0cmluZyAqKWtleV07CisgICAgW3NlbGYg
c2V0VmFsdWU6b2JqZWN0IGZvclByb3BlcnR5OmtleV07CiB9CiAKIC0gKHZvaWQpc2V0T2JqZWN0
OihpZClvYmplY3QgYXRJbmRleGVkU3Vic2NyaXB0OihOU1VJbnRlZ2VyKWluZGV4CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAppbmRleCA2NGFjNmMzMjQ2ZWJmYjhjYzRm
MjRjMDU4MDk5OGFlNDE4ZGFiYTZkLi5kNDZjZmYwNmE0NjU0ZTk1MGI1MDE1ZTRjYjJiYWY0OTZi
MDQ4YzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKQEAgLTg2
LDggKzg2LDEwIEBAIHN0YXRpYyBib29sIGV2ZXJub3RlSGFja05lZWRlZCgpCiAgICAgICAgIHJl
dHVybiBrSlNUeXBlTnVtYmVyOwogICAgIGlmIChqc1ZhbHVlLmlzU3RyaW5nKCkpCiAgICAgICAg
IHJldHVybiBrSlNUeXBlU3RyaW5nOwotICAgIEFTU0VSVChqc1ZhbHVlLmlzT2JqZWN0KCkpOwot
ICAgIHJldHVybiBrSlNUeXBlT2JqZWN0OworICAgIGlmIChqc1ZhbHVlLmlzT2JqZWN0KCkpCisg
ICAgICAgIHJldHVybiBrSlNUeXBlT2JqZWN0OworICAgIEFTU0VSVChqc1ZhbHVlLmlzU3ltYm9s
KCkpOworICAgIHJldHVybiBrSlNUeXBlU3ltYm9sOwogfQogCiBib29sIEpTVmFsdWVJc1VuZGVm
aW5lZChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQpAQCAtMTYyLDYgKzE2NCwx
OCBAQCBib29sIEpTVmFsdWVJc09iamVjdChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZh
bHVlKQogICAgIHJldHVybiB0b0pTKGV4ZWMsIHZhbHVlKS5pc09iamVjdCgpOwogfQogCitib29s
IEpTVmFsdWVJc1N5bWJvbChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQorewor
ICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAg
ICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOworCisgICAgcmV0dXJuIHRvSlMoZXhlYywgdmFs
dWUpLmlzU3ltYm9sKCk7Cit9CisKIGJvb2wgSlNWYWx1ZUlzQXJyYXkoSlNDb250ZXh0UmVmIGN0
eCwgSlNWYWx1ZVJlZiB2YWx1ZSkKIHsKICAgICBpZiAoIWN0eCkgewpAQCAtMzE2LDYgKzMzMCwy
MiBAQCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlTnVtYmVyKEpTQ29udGV4dFJlZiBjdHgsIGRvdWJs
ZSB2YWx1ZSkKICAgICByZXR1cm4gdG9SZWYoZXhlYywganNOdW1iZXIocHVyaWZ5TmFOKHZhbHVl
KSkpOwogfQogCitKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlU3ltYm9sKEpTQ29udGV4dFJlZiBjdHgs
IEpTU3RyaW5nUmVmIGRlc2NyaXB0aW9uKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAg
RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhl
Yyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUoZXhlYy0+dm0oKSk7CisK
KyAgICBKU1N0cmluZyoganNEZXNjcmlwdGlvbiA9IGpzU3RyaW5nKGV4ZWMsIGRlc2NyaXB0aW9u
ID8gZGVzY3JpcHRpb24tPnN0cmluZygpIDogU3RyaW5nKCkpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIFN5bWJvbDo6
Y3JlYXRlKGV4ZWMsIGpzRGVzY3JpcHRpb24pKTsKK30KKwogSlNWYWx1ZVJlZiBKU1ZhbHVlTWFr
ZVN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBzdHJpbmcpCiB7CiAgICAgaWYg
KCFjdHgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJl
Zi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmgKaW5kZXggOTgxNWRl
NzgzYzBhZWUwNzNlM2E0NDhiZDBjN2NhZGQ0YTk1MmMwNi4uM2JlODViMGE5YzE2MmZmNzBiNjFj
MGI2NzZmNTRlYjQ0ZDcwNWFmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1ZhbHVlUmVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVm
LmgKQEAgLTQyLDYgKzQyLDcgQEAKIEBjb25zdGFudCAgICAga0pTVHlwZU51bWJlciAgICAgQSBw
cmltaXRpdmUgbnVtYmVyIHZhbHVlLgogQGNvbnN0YW50ICAgICBrSlNUeXBlU3RyaW5nICAgICBB
IHByaW1pdGl2ZSBzdHJpbmcgdmFsdWUuCiBAY29uc3RhbnQgICAgIGtKU1R5cGVPYmplY3QgICAg
IEFuIG9iamVjdCB2YWx1ZSAobWVhbmluZyB0aGF0IHRoaXMgSlNWYWx1ZVJlZiBpcyBhIEpTT2Jq
ZWN0UmVmKS4KK0Bjb25zdGFudCAgICAga0pTVHlwZVN5bWJvbCAgICAgQSBwcmltaXRpdmUgc3lt
Ym9sIHZhbHVlLgogKi8KIHR5cGVkZWYgZW51bSB7CiAgICAga0pTVHlwZVVuZGVmaW5lZCwKQEAg
LTQ5LDcgKzUwLDggQEAgdHlwZWRlZiBlbnVtIHsKICAgICBrSlNUeXBlQm9vbGVhbiwKICAgICBr
SlNUeXBlTnVtYmVyLAogICAgIGtKU1R5cGVTdHJpbmcsCi0gICAga0pTVHlwZU9iamVjdAorICAg
IGtKU1R5cGVPYmplY3QsCisgICAga0pTVHlwZVN5bWJvbCBDRl9FTlVNX0FWQUlMQUJMRSgxMF8x
MywgMTFfMCkKIH0gSlNUeXBlOwogCiAvKiEKQEAgLTE1MSw2ICsxNTMsMTYgQEAgSlNfRVhQT1JU
IGJvb2wgSlNWYWx1ZUlzT2JqZWN0KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUp
OwogCiAvKiEKIEBmdW5jdGlvbgorQGFic3RyYWN0ICAgICAgIFRlc3RzIHdoZXRoZXIgYSBKYXZh
U2NyaXB0IHZhbHVlJ3MgdHlwZSBpcyB0aGUgc3ltYm9sIHR5cGUuCitAcGFyYW0gY3R4ICAgICAg
VGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KK0BwYXJhbSB2YWx1ZSAgICBUaGUgSlNWYWx1
ZSB0byB0ZXN0LgorQHJlc3VsdCAgICAgICAgIHRydWUgaWYgdmFsdWUncyB0eXBlIGlzIHRoZSBz
eW1ib2wgdHlwZSwgb3RoZXJ3aXNlIGZhbHNlLgorKi8KK0pTX0VYUE9SVCBib29sIEpTVmFsdWVJ
c1N5bWJvbChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKSBDRl9BVkFJTEFCTEUo
MTBfMTMsIDExXzApOworCisKKy8qIQorQGZ1bmN0aW9uCiBAYWJzdHJhY3QgVGVzdHMgd2hldGhl
ciBhIEphdmFTY3JpcHQgdmFsdWUgaXMgYW4gb2JqZWN0IHdpdGggYSBnaXZlbiBjbGFzcyBpbiBp
dHMgY2xhc3MgY2hhaW4uCiBAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2Uu
CiBAcGFyYW0gdmFsdWUgVGhlIEpTVmFsdWUgdG8gdGVzdC4KQEAgLTI1OSw2ICsyNzEsMTUgQEAg
SlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VOdW1iZXIoSlNDb250ZXh0UmVmIGN0eCwg
ZG91YmxlIG51bWJlcik7CiAKIC8qIQogQGZ1bmN0aW9uCitAYWJzdHJhY3QgICAgICAgICAgICBD
cmVhdGVzIGEgSmF2YVNjcmlwdCB2YWx1ZSBvZiB0aGUgc3ltYm9sIHR5cGUuCitAcGFyYW0gY3R4
ICAgICAgICAgICBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgorQHBhcmFtIGRlc2NyaXB0
aW9uICAgQSBkZXNjcmlwdGlvbiBvZiB0aGUgbmV3bHkgY3JlYXRlZCBzeW1ib2wgdmFsdWUuCitA
cmVzdWx0ICAgICAgICAgICAgICBBIHVuaXF1ZSBKU1ZhbHVlIG9mIHRoZSBzeW1ib2wgdHlwZSwg
d2hvc2UgZGVzY3JpcHRpb24gbWF0Y2hlcyB0aGUgb25lIHByb3ZpZGVkLgorKi8KK0pTX0VYUE9S
VCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlU3ltYm9sKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5n
UmVmIGRlc2NyaXB0aW9uKTsKKworLyohCitAZnVuY3Rpb24KIEBhYnN0cmFjdCAgICAgICBDcmVh
dGVzIGEgSmF2YVNjcmlwdCB2YWx1ZSBvZiB0aGUgc3RyaW5nIHR5cGUuCiBAcGFyYW0gY3R4ICBU
aGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgogQHBhcmFtIHN0cmluZyAgIFRoZSBKU1N0cmlu
ZyB0byBhc3NpZ24gdG8gdGhlIG5ld2x5IGNyZWF0ZWQgSlNWYWx1ZS4gVGhlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZmI5NTQ3NDEx
MTA2M2E1ZjVmZDg4OWRjOTAzMWY4NGY4MWNhMjI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmNwcApAQCAtMCwwICsxLDEwOCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKYXZhU2NyaXB0Q29y
ZS5oIgorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL0V4cGVj
dGVkLmg+CisKK2V4dGVybiAiQyIgaW50IHRlc3RDQVBJVmlhQ3BwKHZvaWQpOworCitjbGFzcyBB
UElTdHJpbmcgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFQSVN0cmluZyk7CitwdWJsaWM6
CisKKyAgICBBUElTdHJpbmcoY29uc3QgY2hhciogc3RyaW5nKQorICAgIDogbV9zdHJpbmcoSlNT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc3RyaW5nKSkKKyAgICB7CisgICAgfQorCisgICAg
fkFQSVN0cmluZygpCisgICAgeworICAgICAgICBKU1N0cmluZ1JlbGVhc2UobV9zdHJpbmcpOwor
ICAgIH0KKworICAgIG9wZXJhdG9yIEpTU3RyaW5nUmVmKCkgeyByZXR1cm4gbV9zdHJpbmc7IH0K
KworcHJpdmF0ZToKKyAgICBKU1N0cmluZ1JlZiBtX3N0cmluZzsKK307CisKK2NsYXNzIEFQSUNv
bnRleHQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFQSUNvbnRleHQpOworcHVibGljOgor
CisgICAgQVBJQ29udGV4dCgpCisgICAgOiBtX2NvbnRleHQoSlNHbG9iYWxDb250ZXh0Q3JlYXRl
KG51bGxwdHIpKQorICAgIHsKKyAgICB9CisKKyAgICB+QVBJQ29udGV4dCgpCisgICAgeworICAg
ICAgICBKU0dsb2JhbENvbnRleHRSZWxlYXNlKG1fY29udGV4dCk7CisgICAgfQorCisgICAgb3Bl
cmF0b3IgSlNHbG9iYWxDb250ZXh0UmVmKCkgeyByZXR1cm4gbV9jb250ZXh0OyB9CisKK3ByaXZh
dGU6CisgICAgSlNHbG9iYWxDb250ZXh0UmVmIG1fY29udGV4dDsKK307CisKK2ludCB0ZXN0Q0FQ
SVZpYUNwcCgpCit7CisgICAgaW50IGZhaWxlZCA9IDA7CisgICAgQVBJQ29udGV4dCBjb250ZXh0
OworCisgICAgdXNpbmcgU2NyaXB0UmVzdWx0ID0gRXhwZWN0ZWQ8SlNWYWx1ZVJlZiwgSlNWYWx1
ZVJlZj47CisgICAgYXV0byBldmFsdWF0ZVNjcmlwdCA9IFsmXSAoY29uc3QgY2hhciogc2NyaXB0
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0ID0gbnVsbHB0cikgLT4gU2NyaXB0UmVzdWx0IHsKKyAg
ICAgICAgQVBJU3RyaW5nIHNjcmlwdEFQSVN0cmluZyhzY3JpcHQpOworICAgICAgICBKU1ZhbHVl
UmVmIGV4Y2VwdGlvbiA9IG51bGxwdHI7CisKKyAgICAgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBK
U0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIHNjcmlwdEFQSVN0cmluZywgdGhpc09iamVjdCwgbnVs
bHB0ciwgMCwgJmV4Y2VwdGlvbik7CisgICAgICAgIGlmIChleGNlcHRpb24pCisgICAgICAgICAg
ICByZXR1cm4gVW5leHBlY3RlZFR5cGU8SlNWYWx1ZVJlZj4oZXhjZXB0aW9uKTsKKyAgICAgICAg
cmV0dXJuIFNjcmlwdFJlc3VsdChyZXN1bHQpOworICAgIH07CisKKyAgICBhdXRvIGdvdEV4cGVj
dGVkID0gWyZdIChKU1ZhbHVlUmVmIGV4cGVjdGVkLCBTY3JpcHRSZXN1bHQmIHJlc3VsdCkgLT4g
Ym9vbCB7CisgICAgICAgIHJldHVybiByZXN1bHQuaGFzVmFsdWUoKSAmJiByZXN1bHQudmFsdWUo
KSA9PSBleHBlY3RlZDsKKyAgICB9OworCisgICAgeworICAgICAgICBBUElTdHJpbmcgc2NyaXB0
KCJuZXcgU3ltYm9sKCdkb3BlJyk7Iik7CisgICAgICAgIEpTVmFsdWVSZWYgc3ltYm9sVmFsdWUg
PSBKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIHNjcmlwdCwgbnVsbHB0ciwgbnVsbHB0ciwgMCwg
bnVsbHB0cik7CisgICAgICAgIGZhaWxlZCArPSBKU1ZhbHVlR2V0VHlwZShjb250ZXh0LCBzeW1i
b2xWYWx1ZSkgIT0ga0pTVHlwZVN5bWJvbDsKKyAgICAgICAgZmFpbGVkICs9ICFKU1ZhbHVlSXNT
eW1ib2woY29udGV4dCwgc3ltYm9sVmFsdWUpOworICAgIH0KKworLy8gICAgeworLy8gICAgICAg
IEFQSVN0cmluZyBkZXNjcmlwdGlvbigiZG9wZSIpOworLy8gICAgICAgIEpTVmFsdWVSZWYgc3lt
Ym9sID0gSlNWYWx1ZU1ha2VTeW1ib2woY29udGV4dCwgZGVzY3JpcHRpb24pOworLy8gICAgICAg
IFNjcmlwdFJlc3VsdCByZXN1bHQgPSBldmFsdWF0ZVNjcmlwdCgidHlwZW9mKHRoaXMpID09ICdz
eW1ib2wnIiwgc3ltYm9sKTsKKy8vICAgIH0KKworICAgIHJldHVybiBmYWlsZWQ7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KaW5kZXggZTk4ZDZjZjVkZGJj
ZTE3OGUwMGM5ZGRiMGU1MGVjZTNhZTNkNjE3YS4uZDE5MTEwNWM1MmJhOGFkNjUzNzM2NWFmNzhi
ZTFlNTA5Nzk4Y2I4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy90ZXN0YXBpLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFw
aS5tbQpAQCAtMjMsNiArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisjaW1wb3J0ICJj
b25maWcuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CiAKICNp
bXBvcnQgIkN1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0LmgiCkBAIC01NzIsNiArNTcz
LDEyIEBAIHN0YXRpYyB2b2lkIHRlc3RPYmplY3RpdmVDQVBJTWFpbigpCiAKICAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKICAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxs
b2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICpzeW1ib2wgPSBbY29udGV4dCBldmFsdWF0ZVNj
cmlwdDpAIm5ldyBTeW1ib2woJ2RvcGUnKTsiXTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJTaG91
bGQgYmUgYSBzeW1ib2wgdmFsdWUiLCBzeW1ib2wuaXNTeW1ib2wpOworICAgIH0KKworICAgIEBh
dXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4
dCBhbGxvY10gaW5pdF07CiAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1
YXRlU2NyaXB0OkAiWyBdIl07CiAgICAgICAgIGNoZWNrUmVzdWx0KEAiWyBdIiwgcmVzdWx0Lmlz
QXJyYXkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzUzNWJiMmM4
Yjk0Y2NkNDU0Mjc1Yzk1ZTJlNjlmODBkOTc2YzlmOS4uYjYyZDU4ZWM4NTk0MGE3OGFjMjM0MDlk
OTNmMzVhYjZlM2ZhNGQwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzNjks
NiArMTM2OSw3IEBACiAJCTUzMTFCRDRCMUVBNTgxRTUwMDUyNTI4MSAvKiBXYXNtT01HUGxhbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxMUJENDkx
RUE1ODFFNTAwNTI1MjgxIC8qIFdhc21PTUdQbGFuLmggKi87IH07CiAJCTUzMTM3NEJEMUQ1Q0U2
NzYwMEFGN0EwQiAvKiBXYXNtUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTMxMzc0QkMxRDVDRTY3NjAwQUY3QTBCIC8qIFdhc21QbGFuLmggKi87
IH07CiAJCTUzMTM3NEJGMUQ1Q0U5NTAwMEFGN0EwQiAvKiBXYXNtUGxhbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzEzNzRCRTFENUNFOTUwMDBB
RjdBMEIgLyogV2FzbVBsYW4uY3BwICovOyB9OworCQk1MzFENEUxRDFGNTlEODg5MDBFQzgzNkMg
LyogdGVzdGFwaS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MzFENEUxOTFGNTlDREQyMDBFQzgzNkMgLyogdGVzdGFwaS5jcHAgKi87IH07CiAJCTUz
M0IxNURGMURDN0Y0NjMwMDRENTAwQSAvKiBXYXNtT3BzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzNCMTVERTFEQzdGNDYzMDA0RDUwMEEgLyogV2Fz
bU9wcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUzNDFGQzcwMURBQzMzRTUwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDFGQzZGMURB
QzMzRTUwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcCAqLzsgfTsKIAkJNTM0
MUZDNzIxREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDFGQzcxMURBQzM0M0Mw
MEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggKi87IH07CkBAIC0zOTM4LDYgKzM5
MzksNyBAQAogCQk1MzExQkQ0OTFFQTU4MUU1MDA1MjUyODEgLyogV2FzbU9NR1BsYW4uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbU9NR1BsYW4uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTMxMzc0QkMxRDVDRTY3NjAwQUY3QTBCIC8qIFdhc21QbGFuLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21QbGFuLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUzMTM3NEJFMUQ1Q0U5NTAwMEFGN0EwQiAvKiBXYXNtUGxhbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtUGxhbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzMUQ0RTE5MUY1OUNERDIwMEVDODM2QyAvKiB0
ZXN0YXBpLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHRlc3RhcGkuY3BwOyBwYXRoID0gQVBJL3Rl
c3RzL3Rlc3RhcGkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzNCMTVERTFE
QzdGNDYzMDA0RDUwMEEgLyogV2FzbU9wcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXYXNtT3BzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDFGQzZGMURB
QzMzRTUwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwOyBwYXRo
ID0gYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUzNDFGQzcxMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzV2FzbUJvdW5kc0NoZWNrVmFs
dWUuaDsgcGF0aCA9IGIzL0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTM5NjgsNyArMzk3MCw2IEBACiAJCTUzOTE3RTdBMUI3OTA2RTQwMDBF
QkQzMyAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
dHlwZUZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzkxN0U3QzFC
NzkxMTA2MDAwRUJEMzMgLyogSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzOTE3RTgzMUI3OTFDQjgwMDBFQkQzMyAvKiBUeXBl
ZEFycmF5UHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1l
ID0gVHlwZWRBcnJheVByb3RvdHlwZS5qczsgcGF0aCA9IGJ1aWx0aW5zL1R5cGVkQXJyYXlQcm90
b3R5cGUuanM7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKLQkJNTM5RUIwNzExRDU1M0RG
ODAwQzgyRUY3IC8qIHRlc3RXYXNtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IHRlc3RXYXNtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM5RkI4
QjkxQzk5REE3QzAwOTQwRkExIC8qIEpTQXJyYXlJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTQXJyYXlJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUzQjBCRTMzMUU1NjFBQzkwMEE4RkMyOSAvKiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdldHRlclNldHRlckFj
Y2Vzc0Nhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0IwQkUzNTFFNTYx
QjA5MDBBOEZDMjkgLyogUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQcm94eWFibGVBY2Nlc3NDYXNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTU4NzAsMTAgKzU4NzEsMTAgQEAKIAkJCQlGRUI1MUY2QjFBOTdC
Njg4MDAxRjkyMUMgLyogUmVncmVzczE0MTgwOS5tbSAqLywKIAkJCQlGRUNCOEIyOTFEMjVDQUJC
MDA2RjI0NjMgLyogdGVzdGFwaS1mdW5jdGlvbi1vdmVycmlkZXMuanMgKi8sCiAJCQkJMTRCRDVB
MkQwQTNFOTFGNjAwQkFGNTlDIC8qIHRlc3RhcGkuYyAqLywKKwkJCQk1MzFENEUxOTFGNTlDREQy
MDBFQzgzNkMgLyogdGVzdGFwaS5jcHAgKi8sCiAJCQkJMTREODU3NzQwQTQ2OTZDODAwMzIxNDZD
IC8qIHRlc3RhcGkuanMgKi8sCiAJCQkJODZEMjIyMTkxNjdFRjk0NDAwMjRDODA0IC8qIHRlc3Rh
cGkubW0gKi8sCiAJCQkJNjUxMTIyRTUxNDA0NjlCQTAwMkIxMDFEIC8qIHRlc3RSZWdFeHAuY3Bw
ICovLAotCQkJCTUzOUVCMDcxMUQ1NTNERjgwMEM4MkVGNyAvKiB0ZXN0V2FzbS5jcHAgKi8sCiAJ
CQkJNTM0OTAyODIxQzcyNDJDODAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgKi8sCiAJ
CQkJNTM0OTAyODMxQzcyNDJDODAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5oICovLAogCQkJ
KTsKQEAgLTg2MDMsNyArODYwNCw2IEBACiAJCQkJMEZCRjE1OEQxOUI3QTUzMTAwNjk1REQwIC8q
IERGR0Jsb2NrU2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NEMDAxOUFEQTQx
MDAwNkFDNzJBIC8qIERGR0Jsb2NrV29ya2xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODM2
NEI3MTY0QjBDMTEwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICov
LAotCQkJCUZFMTBBQUVFMUY0NEQ5NTQwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg2RUM5REM1MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNTZDMzYxNjI3QjBBRDAwN0YyNzgzIC8qIERGR0Nh
bGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkJEQjlBRDFBQjBGQkM2MDAwQjU3RTUgLyogREZHQ2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Ns
b3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTkzNDMsNiArOTM0Myw4IEBACiAJ
CQkJMEZCQjczQjgxREVGM0FBRTAwMkMwMDlFIC8qIFByZXZlbnRDb2xsZWN0aW9uU2NvcGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUZFNjNERDU0MUVBOUI2MUUwMDEwM0E2OSAvKiBQcmludGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4Njg5MTZCMDE1NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5h
bWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMTBBQUVFMUY0NEQ5NTQwMDlERURDNSAvKiBQcm9i
ZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMTBBQUVCMUY0NEQ1MjgwMDlERURDNSAv
KiBQcm9iZVN0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MjlBNTE2NkFEMzUxMDAwRjVC
QTMgLyogUHJvZmlsZXJCeXRlY29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNzI5QjkxNjZB
RDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVyQnl0ZWNvZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjEzOTEyQTE2NzcxQzM2MDA5Q0NCMDcgLyogUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmggaW4g
SGVhZGVycyAqLywKQEAgLTk2NDQsNyArOTY0Niw2IEBACiAJCQkJQUQ0OTM3QzgxREREMEFBRTAw
NzdDODA3IC8qIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
RDJGQ0MyRDFEQjgzOEZEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlQcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUFEMkZDQkY5MURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRTEwQUFFQjFGNDRENTI4
MDA5REVEQzUgLyogUHJvYmVTdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNDMUUxREI1
OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IubHV0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0JGQjFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1i
bHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUFEMkZDQzFGMURC
NTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5sdXQuaCBp
biBIZWFkZXJzICovLApAQCAtMTAxNjAsNiArMTAxNjEsNyBAQAogCQkJCTY1NTcwRjVBMUFBNEMz
RUEwMDlCM0MyMyAvKiBSZWdyZXNzMTQxMjc1Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVCNTFG
NkMxQTk3QjY4ODAwMUY5MjFDIC8qIFJlZ3Jlc3MxNDE4MDkubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkxNDQwRjYxMDBBNEY4NTY3MDAwNUYwNjEgLyogdGVzdGFwaS5jIGluIFNvdXJjZXMgKi8sCisJ
CQkJNTMxRDRFMUQxRjU5RDg4OTAwRUM4MzZDIC8qIHRlc3RhcGkuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODZEMjIyMUExNjdFRjk0NDAwMjRDODA0IC8qIHRlc3RhcGkubW0gaW4gU291cmNlcyAq
LywKIAkJCQk1MzQ5MDI4NTFDNzI3NkI3MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKQEAgLTEwNDU1LDcgKzEwNDU3LDYgQEAKIAkJCQkwRjY5Q0M4
ODE5M0FDNjBBMDA0NTc1OUUgLyogREZHRnJvemVuVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODZFQzlEQzcxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGMkZDQ0Y5MThBNjAwNzAwMDFBMjdGOCAvKiBERkdHcmFwaFNhZmVwb2ludC5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlGRTEwQUFGNDFGNDY4Mzk2MDA5REVEQzUgLyogUHJvYmVDb250
ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQjE3NjYwMTk2QjhGOUUwMDkxMDUyQSAvKiBE
RkdIZWFwTG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDODQxNjgxQkE4QzMyMTAw
NjE4MzdEIC8qIERGR0luZmVycmVkVHlwZUNoZWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3
MDREOTA1MTdBMEJBQTgwMDZCQTU1NCAvKiBERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTEwNzQ0LDcgKzEwNzQ1LDYgQEAKIAkJCQkxNDdGMzlENjEwN0VDMzc2
MDA0MjdBNDggLyogSlNDSlNWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQwRkNFNDBB
NTFFNDZCMDAwNUYwNjEgLyogSlNDbGFzc1JlZi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkUz
QzYxNjE2N0JBQkVFMDA2RDc2MEEgLyogSlNDb250ZXh0Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJ
RkUxMEFBRUMxRjQ0RDU0NTAwOURFREM1IC8qIFByb2JlU3RhY2suY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTRCRDVBMzAwQTNFOTFGNjAwQkFGNTlDIC8qIEpTQ29udGV4dFJlZi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBNzIwMjhCNjE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0
aWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcyQUFGN0NEMUQwRDMxQjMwMDVFNjBCRSAvKiBK
U0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTA5MTcs
NiArMTA5MTcsOCBAQAogCQkJCTBGRTgzNDE3MUE2RUY5N0IwMEQwNDg0NyAvKiBQb2x5bW9ycGhp
Y0NhbGxTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjk4MjA2MDE2QkZFMzgx
MDAyNDBEMDIgLyogUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZF
NjNERDU2MUVBOUJDNjcwMDEwM0E2OSAvKiBQcmludGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUZFMTBBQUY0MUY0NjgzOTYwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJRkUxMEFBRUMxRjQ0RDU0NTAwOURFREM1IC8qIFByb2JlU3RhY2suY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGNzI5QUQxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVyQnl0ZWNv
ZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNzI5QUUxNjZBRDM1QzAwMEY1QkEzIC8qIFBy
b2ZpbGVyQnl0ZWNvZGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMTM5MTI5MTY3NzFDMzMw
MDlDQ0IwNyAvKiBQcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320056</attachid>
            <date>2017-09-06 13:17:44 -0700</date>
            <delta_ts>2017-09-06 19:05:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175836-20170906131743.patch</filename>
            <type>text/plain</type>
            <size>56503</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
OTgyNTA3OTliYTFhNWE4YmZiMjc3MjlmMzM5ZjI3MWIzNGNiMjFlLi44M2JlMjcyYjNkNjdiOGQ0
MDc1NDhmYWEzMjJhMWQ5MjFhYmRhMzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OSBAQAorMjAxNy0wOS0wNiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDIEFQSV0gV2Ugc2hvdWxkIHN1cHBvcnQgdGhlIHN5bWJvbCB0
eXBlIGluIG91ciBDL09iai1DIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1ODM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRm9yIHdoYXRldmVyIHJlYXNvbiwgd2hlbmV2ZXIgd2UgYWRkZWQgc3Vw
cG9ydCBmb3Igc3ltYm9scyBpbiBKU0Mgd2UgbmV2ZXIgZXh0ZW5kZWQgc3VjaAorICAgICAgICBz
dXBwb3J0IHRvIG91ciBDL09iai1DIEFQSXMuIFRoaXMgcGF0Y2ggcmVtZWRpZXMgdGhhdCBwcm9i
bGVtLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIGZvbGxvd2luZyBBUEkgYWRkaXRp
b25zOgorICAgICAgICAxKSBUZXN0IGlmIGEgSlNWYWx1ZS9KU1ZhbHVlUmVmIGlzIGEgc3ltYm9s
IHZpYSBhbnkgb2YgdGhlIG1ldGhvZHMgQVBJIGFyZSBhYmxlIHRvIHRlc3QgZm9yIHRoZSB0eXBl
cyBvZiBvdGhlciBKU1ZhbHVlcy4KKyAgICAgICAgMikgQ3JlYXRlIGEgc3ltYm9sIG9uIGJvdGgg
QVBJcy4KKyAgICAgICAgMykgR2V0L1NldC9EZWxldGUvRGVmaW5lIHByb3BlcnR5IG5vdyB0YWtl
IGlkcyBpbiB0aGUgT2JqLUMgQVBJLgorICAgICAgICA0KSBBZGQgR2V0L1NldC9EZWxldGUgaW4g
dGhlIEMgQVBJLgorCisgICAgICAgIFdlIGNhbiBkbyAzIGJlY2F1c2UgaXQgaXMgYm90aCBiaW5h
cnkgYW5kIHNvdXJjZSBjb21wYXRhYmxlIHdpdGggdGhlIGV4aXN0aW5nIEFQSS4KKyAgICAgICAg
SSBhZGRlZCB0aGUgNCBhZGRpdGlvbiBiZWNhdXNlIHRoZSBjdXJyZW50IHByb3BlcnR5IGFjY2Vz
cyBBUElzCisgICAgICAgIG9ubHkgaGF2ZSB0aGUgYWJpbGl0eSB0byBnZXQgU3RyaW5ncy4gSXQg
d2FzIHBvc3NpYmxlIHRvIG1lcmdlCisgICAgICAgIHN5bWJvbHMgaW50byBKU1N0cmluZ1JlZiBi
dXQgdGhhdCBmZWx0IGNvbmZ1c2luZyBhbmQgZXhwb3NlcworICAgICAgICBpbXBsZW1lbnRhdGlv
biBkZXRhaWxzIG9mIG91ciBlbmdpbmUuIFRoZSBuZXcgZnVuY3Rpb25zIG1hdGNoIHRoZQorICAg
ICAgICBzYW1lIG1lYW5pbmcgdGhhdCB0aGV5IGhhdmUgaW4gSlMuCisKKyAgICAgICAgKiBBUEkv
SlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3RIYXNQcm9wZXJ0eUtleSk6CisgICAg
ICAgIChKU09iamVjdEdldFByb3BlcnR5S2V5KToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJvcGVy
dHlLZXkpOgorICAgICAgICAoSlNPYmplY3REZWxldGVQcm9wZXJ0eUtleSk6CisgICAgICAgICog
QVBJL0pTT2JqZWN0UmVmLmg6CisgICAgICAgICogQVBJL0pTVmFsdWUuaDoKKyAgICAgICAgKiBB
UEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKCtbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdTeW1ib2xGcm9t
RGVzY3JpcHRpb246aW5Db250ZXh0Ol0pOgorICAgICAgICAocGVyZm9ybVByb3BlcnR5T3BlcmF0
aW9uKToKKyAgICAgICAgKC1bSlNWYWx1ZSB2YWx1ZUZvclByb3BlcnR5OnZhbHVlRm9yUHJvcGVy
dHk6XSk6CisgICAgICAgICgtW0pTVmFsdWUgc2V0VmFsdWU6Zm9yUHJvcGVydHk6c2V0VmFsdWU6
Zm9yUHJvcGVydHk6XSk6CisgICAgICAgICgtW0pTVmFsdWUgZGVsZXRlUHJvcGVydHk6ZGVsZXRl
UHJvcGVydHk6XSk6CisgICAgICAgICgtW0pTVmFsdWUgaGFzUHJvcGVydHk6aGFzUHJvcGVydHk6
XSk6CisgICAgICAgICgtW0pTVmFsdWUgZGVmaW5lUHJvcGVydHk6ZGVzY3JpcHRvcjpkZWZpbmVQ
cm9wZXJ0eTpkZXNjcmlwdG9yOl0pOgorICAgICAgICAoLVtKU1ZhbHVlIGlzU3ltYm9sXSk6Cisg
ICAgICAgICgtW0pTVmFsdWUgb2JqZWN0Rm9yS2V5ZWRTdWJzY3JpcHQ6XSk6CisgICAgICAgICgt
W0pTVmFsdWUgc2V0T2JqZWN0OmZvcktleWVkU3Vic2NyaXB0Ol0pOgorICAgICAgICAoLVtKU1Zh
bHVlIHZhbHVlRm9yUHJvcGVydHk6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmFsdWUgc2V0
VmFsdWU6Zm9yUHJvcGVydHk6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmFsdWUgZGVsZXRl
UHJvcGVydHk6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmFsdWUgaGFzUHJvcGVydHk6XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmFsdWUgZGVmaW5lUHJvcGVydHk6ZGVzY3JpcHRvcjpd
KTogRGVsZXRlZC4KKyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5jcHA6CisgICAgICAgIChKU1Zh
bHVlR2V0VHlwZSk6CisgICAgICAgIChKU1ZhbHVlSXNTeW1ib2wpOgorICAgICAgICAoSlNWYWx1
ZU1ha2VTeW1ib2wpOgorICAgICAgICAqIEFQSS9KU1ZhbHVlUmVmLmg6CisgICAgICAgICogQVBJ
L3Rlc3RzL3Rlc3RhcGkuYzoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIEFQSS90ZXN0cy90
ZXN0YXBpLmNwcDogQWRkZWQuCisgICAgICAgIChBUElTdHJpbmc6OkFQSVN0cmluZyk6CisgICAg
ICAgIChBUElTdHJpbmc6On5BUElTdHJpbmcpOgorICAgICAgICAoQVBJU3RyaW5nOjpvcGVyYXRv
ciBKU1N0cmluZ1JlZik6CisgICAgICAgIChBUElDb250ZXh0OjpBUElDb250ZXh0KToKKyAgICAg
ICAgKEFQSUNvbnRleHQ6On5BUElDb250ZXh0KToKKyAgICAgICAgKEFQSUNvbnRleHQ6Om9wZXJh
dG9yIEpTR2xvYmFsQ29udGV4dFJlZik6CisgICAgICAgIChBUElWZWN0b3I6OkFQSVZlY3Rvcik6
CisgICAgICAgIChBUElWZWN0b3I6On5BUElWZWN0b3IpOgorICAgICAgICAoQVBJVmVjdG9yOjph
cHBlbmQpOgorICAgICAgICAodGVzdENBUElWaWFDcHApOgorICAgICAgICAoVGVzdEFQSTo6ZXZh
bHVhdGVTY3JpcHQpOgorICAgICAgICAoVGVzdEFQSTo6Y2FsbEZ1bmN0aW9uKToKKyAgICAgICAg
KFRlc3RBUEk6OmZ1bmN0aW9uUmV0dXJuc1RydWUpOgorICAgICAgICAoVGVzdEFQSTo6Y2hlY2sp
OgorICAgICAgICAoVGVzdEFQSTo6Y2hlY2tKU0FuZEFQSU1hdGNoKToKKyAgICAgICAgKFRlc3RB
UEk6OmludGVyZXN0aW5nT2JqZWN0cyk6CisgICAgICAgIChUZXN0QVBJOjppbnRlcmVzdGluZ0tl
eXMpOgorICAgICAgICAoVGVzdEFQSTo6cnVuKToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFw
aS5tbToKKyAgICAgICAgKHRlc3RPYmplY3RpdmVDQVBJTWFpbik6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNy0wOS0wNSAgU2FhbSBC
YXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBpc05vdENlbGxTcGVjdWxhdGlv
biBpcyB3cm9uZyB3aXRoIHJlc3BlY3QgdG8gU3BlY0VtcHR5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IGNlMzdjYzY5MGY2NWYwNzAyM2Q3ZWVhYzMxNmJm
MzEyYzcyMWIyYjcuLjAwNjY2MzlkOWQzMDEyMjM1MTBmOGE1MzQ4OWI4ZGNkZWQxNzNhMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCkBAIC0zMzMsNiArMzMz
LDk0IEBAIHZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVj
dFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlCiAgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVk
ZWQoZXhlYywgZXhjZXB0aW9uKTsKIH0KIAorYm9vbCBKU09iamVjdEhhc1Byb3BlcnR5S2V5KEpT
Q29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoIWN0eCkgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBFeGVjU3RhdGUq
IGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKworICAg
IEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAgICBJZGVudGlmaWVyIGlkZW50
ID0gdG9KUyhleGVjLCBrZXkpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4
Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRU
aHJvdykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCByZXN1bHQgPSBqc09iamVj
dC0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpOworICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVk
KGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSlNWYWx1ZVJlZiBK
U09iamVjdEdldFByb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVj
dCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoIWN0
eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBKU0xvY2tI
b2xkZXIgbG9ja2VyKGV4ZWMpOworCisgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmpl
Y3QpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSB0b0pTKGV4ZWMsIGtleSkudG9Qcm9wZXJ0eUtl
eShleGVjKTsKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoZXhlYywgZXhjZXB0aW9u
KSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIEpTVmFsdWUganNWYWx1ZSA9IGpzT2JqZWN0LT5nZXQoZXhlYywgaWRlbnQpOworICAg
IGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHRv
UmVmKGV4ZWMsIGpzVmFsdWUpOworfQorCit2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHlLZXkoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIGtleSwgSlNWYWx1
ZVJlZiB2YWx1ZSwgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMo
Y3R4KTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIo
dm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKworICAgIEpT
T2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0
b0pTKGV4ZWMsIHZhbHVlKTsKKworICAgIElkZW50aWZpZXIgaWRlbnQgPSB0b0pTKGV4ZWMsIGtl
eSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQo
ZXhlYywgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBib29sIGRvZXNOb3RIYXZlUHJvcGVydHkgPSBhdHRyaWJ1dGVzICYmICFq
c09iamVjdC0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpOworICAgIGlmIChMSUtFTFkoIXNjb3Bl
LmV4Y2VwdGlvbigpKSkgeworICAgICAgICBpZiAoZG9lc05vdEhhdmVQcm9wZXJ0eSkgeworICAg
ICAgICAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2MoanNWYWx1ZSwgYXR0cmlidXRlcyk7Cisg
ICAgICAgICAgICBqc09iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVydHkoanNP
YmplY3QsIGV4ZWMsIGlkZW50LCBkZXNjLCBmYWxzZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChqc09iamVjdCk7CisgICAgICAgICAgICBqc09i
amVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KGpzT2JqZWN0LCBleGVjLCBpZGVudCwganNWYWx1ZSwg
c2xvdCk7CisgICAgICAgIH0KKyAgICB9CisgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoZXhl
YywgZXhjZXB0aW9uKTsKK30KKworYm9vbCBKU09iamVjdERlbGV0ZVByb3BlcnR5S2V5KEpTQ29u
dGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoIWN0eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBFeGVjU3RhdGUqIGV4
ZWMgPSB0b0pTKGN0eCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKworICAgIEpT
T2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0g
dG9KUyhleGVjLCBrZXkpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4Y2Vw
dGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJv
dykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+
bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoanNPYmplY3QsIGV4ZWMsIGlkZW50KTsKKyAg
ICBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChleGVjLCBleGNlcHRpb24pOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoSlNDb250
ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgaWYgKCFjdHgpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNPYmplY3RSZWYuaAppbmRleCA5NWQ1M2I3ZjRlNThlOTZmMGNiYzMxNTk1YWY5
YzQ2MTk3OGFhNDNkLi5mMmE2ZWVjZjVlNzVkMjJhMTBkYWE3ZjdmNzQ1ZDM0ZmYyOTY2MDJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oCkBAIC01MzYsOSArNTM2LDkg
QEAgSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9wZXJ0eShKU0NvbnRleHRSZWYg
Y3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEoKIEBwYXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250
ZXh0IHRvIHVzZS4KIEBwYXJhbSBvYmplY3QgVGhlIEpTT2JqZWN0IHdob3NlIHByb3BlcnR5IHlv
dSB3YW50IHRvIHNldC4KIEBwYXJhbSBwcm9wZXJ0eU5hbWUgQSBKU1N0cmluZyBjb250YWluaW5n
IHRoZSBwcm9wZXJ0eSdzIG5hbWUuCi1AcGFyYW0gdmFsdWUgQSBKU1ZhbHVlIHRvIHVzZSBhcyB0
aGUgcHJvcGVydHkncyB2YWx1ZS4KLUBwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNW
YWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxM
IGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCitAcGFyYW0gdmFsdWUg
QSBKU1ZhbHVlUmVmIHRvIHVzZSBhcyB0aGUgcHJvcGVydHkncyB2YWx1ZS4KIEBwYXJhbSBhdHRy
aWJ1dGVzIEEgbG9naWNhbGx5IE9SZWQgc2V0IG9mIEpTUHJvcGVydHlBdHRyaWJ1dGVzIHRvIGdp
dmUgdG8gdGhlIHByb3BlcnR5LgorQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1Zh
bHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwg
aWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICovCiBKU19FWFBPUlQg
dm9pZCBKU09iamVjdFNldFByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9i
amVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1Byb3Bl
cnR5QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCkBAIC01
NTUsNiArNTU1LDU0IEBAIEpTX0VYUE9SVCBib29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHkoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0CiAKIC8qIQogQGZ1bmN0aW9u
CitAYWJzdHJhY3QgVGVzdHMgd2hldGhlciBhbiBvYmplY3QgaGFzIGEgZ2l2ZW4gcHJvcGVydHkg
dXNpbmcgYSBKU1ZhbHVlUmVmIGFzIHRoZSBwcm9wZXJ0eSBrZXkuCitAcGFyYW0gb2JqZWN0IFRo
ZSBKU09iamVjdCB0byB0ZXN0LgorQHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250
YWluaW5nIHRoZSBwcm9wZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVy
dHkuCitAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2gg
dG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNh
cmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgorQHJlc3VsdCB0cnVlIGlmIHRoZSBvYmplY3QgaGFz
IGEgcHJvcGVydHkgd2hvc2UgbmFtZSBtYXRjaGVzIHByb3BlcnR5S2V5LCBvdGhlcndpc2UgZmFs
c2UuCitAZGlzY3Vzc2lvbiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHBlcmZvcm1pbmcg
InByb3BlcnR5S2V5IGluIG9iamVjdCIgZnJvbSBKYXZhU2NyaXB0LgorKi8KK0pTX0VYUE9SVCBi
b29sIEpTT2JqZWN0SGFzUHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYg
b2JqZWN0LCBKU1ZhbHVlUmVmIHByb3BlcnR5S2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENG
X0FWQUlMQUJMRSgxMF8xMywgMTFfMCk7CisKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgR2V0
cyBhIHByb3BlcnR5IGZyb20gYW4gb2JqZWN0IHVzaW5nIGEgSlNWYWx1ZVJlZiBhcyB0aGUgcHJv
cGVydHkga2V5LgorQHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgorQHBh
cmFtIG9iamVjdCBUaGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQgdG8gZ2V0Lgor
QHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBwcm9wZXJ0eSBr
ZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0gZXhjZXB0aW9u
IEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9u
LCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0
aW9uLgorQHJlc3VsdCBUaGUgcHJvcGVydHkncyB2YWx1ZSBpZiBvYmplY3QgaGFzIHRoZSBwcm9w
ZXJ0eSBrZXksIG90aGVyd2lzZSB0aGUgdW5kZWZpbmVkIHZhbHVlLgorQGRpc2N1c3Npb24gVGhp
cyBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyBwZXJmb3JtaW5nICJvYmplY3RbcHJvcGVydHlLZXld
IiBmcm9tIEphdmFTY3JpcHQuCisqLworSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQ
cm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVS
ZWYgcHJvcGVydHlLZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEz
LCAxMV8wKTsKKworLyohCitAZnVuY3Rpb24KK0BhYnN0cmFjdCBTZXRzIGEgcHJvcGVydHkgb24g
YW4gb2JqZWN0IHVzaW5nIGEgSlNWYWx1ZVJlZiBhcyB0aGUgcHJvcGVydHkga2V5LgorQHBhcmFt
IGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgorQHBhcmFtIG9iamVjdCBUaGUgSlNP
YmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQgdG8gc2V0LgorQHBhcmFtIHByb3BlcnR5S2V5
IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBwcm9wZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9v
a2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0gdmFsdWUgQSBKU1ZhbHVlUmVmIHRvIHVzZSBh
cyB0aGUgcHJvcGVydHkncyB2YWx1ZS4KK0BwYXJhbSBhdHRyaWJ1dGVzIEEgbG9naWNhbGx5IE9S
ZWQgc2V0IG9mIEpTUHJvcGVydHlBdHRyaWJ1dGVzIHRvIGdpdmUgdG8gdGhlIHByb3BlcnR5Lgor
QHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0
b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRv
IHN0b3JlIGFuIGV4Y2VwdGlvbi4KK0BkaXNjdXNzaW9uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNh
bWUgYXMgcGVyZm9ybWluZyAib2JqZWN0W3Byb3BlcnR5S2V5XSA9IHZhbHVlIiBmcm9tIEphdmFT
Y3JpcHQuCisqLworSlNfRVhQT1JUIHZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eUtleShKU0NvbnRl
eHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYgcHJvcGVydHlLZXksIEpT
VmFsdWVSZWYgdmFsdWUsIEpTUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEzLCAxMV8wKTsKKworLyohCitAZnVuY3Rp
b24KK0BhYnN0cmFjdCBEZWxldGVzIGEgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QgdXNpbmcgYSBK
U1ZhbHVlUmVmIGFzIHRoZSBwcm9wZXJ0eSBrZXkuCitAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24g
Y29udGV4dCB0byB1c2UuCitAcGFyYW0gb2JqZWN0IFRoZSBKU09iamVjdCB3aG9zZSBwcm9wZXJ0
eSB5b3Ugd2FudCB0byBkZWxldGUuCitAcGFyYW0gcHJvcGVydHlLZXkgQSBKU1ZhbHVlUmVmIGNv
bnRhaW5pbmcgdGhlIHByb3BlcnR5IGtleSB0byB1c2Ugd2hlbiBsb29raW5nIHVwIHRoZSBwcm9w
ZXJ0eS4KK0BwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGlj
aCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3Qg
Y2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCitAcmVzdWx0IHRydWUgaWYgdGhlIGRlbGV0ZSBv
cGVyYXRpb24gc3VjY2VlZHMsIG90aGVyd2lzZSBmYWxzZSAoZm9yIGV4YW1wbGUsIGlmIHRoZSBw
cm9wZXJ0eSBoYXMgdGhlIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSBhdHRyaWJ1dGUg
c2V0KS4KK0BkaXNjdXNzaW9uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXMgcGVyZm9ybWlu
ZyAiZGVsZXRlIG9iamVjdFtwcm9wZXJ0eUtleV0iIGZyb20gSmF2YVNjcmlwdC4KKyovCitKU19F
WFBPUlQgYm9vbCBKU09iamVjdERlbGV0ZVByb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpT
T2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBwcm9wZXJ0eUtleSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTMsIDExXzApOworCisvKiEKK0BmdW5jdGlvbgogQGFi
c3RyYWN0IEdldHMgYSBwcm9wZXJ0eSBmcm9tIGFuIG9iamVjdCBieSBudW1lcmljIGluZGV4Lgog
QHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgogQHBhcmFtIG9iamVjdCBU
aGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQgdG8gZ2V0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWUuaAppbmRleCAxNDEwZGQ3NGExN2Y5NzA3MDZlNDRkZWQyNGNjZDE3MGMz
NDc5YzJlLi5kNDE1MDVkODk4YzJiYTFhZjhlZDQ4Yjc0MGQ0Zjg3N2JiNGVlOGIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUuaApAQCAtMTQ5LDYgKzE0OSwxNSBAQCBOU19DTEFTU19B
VkFJTEFCTEUoMTBfOSwgN18wKQogKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFVuZGVmaW5lZEluQ29u
dGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKIAogLyohCisgQG1ldGhvZAorIEBhYnN0cmFjdCBD
cmVhdGUgYSBuZXcsIHVuaXF1ZSwgc3ltYm9sIG9iamVjdC4KKyBAcGFyYW0gZGVzY3JpcHRpb24g
VGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBzeW1ib2wgb2JqZWN0IGJlaW5nIGNyZWF0ZWQuCisgQHBh
cmFtIGNvbnRleHQgVGhlIEpTQ29udGV4dCB0byB3aGljaCB0aGUgcmVzdWx0aW5nIEpTVmFsdWUg
YmVsb25ncy4KKyBAcmVzdWx0IFRoZSBKU1ZhbHVlIHJlcHJlc2VudGluZyBhIHVuaXF1ZSBKYXZh
U2NyaXB0IHZhbHVlIHdpdGggdHlwZSBzeW1ib2wuCisgKi8KKysgKEpTVmFsdWUgKil2YWx1ZVdp
dGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246KE5TU3RyaW5nICopZGVzY3JpcHRpb24gaW5Db250
ZXh0OihKU0NvbnRleHQgKiljb250ZXh0IE5TX0FWQUlMQUJMRSgxMF8xMywgMTFfMCk7CisKKy8q
IQogQG1ldGhvZGdyb3VwIENvbnZlcnRpbmcgdG8gT2JqZWN0aXZlLUMgVHlwZXMKIEBkaXNjdXNz
aW9uIFdoZW4gY29udmVydGluZyBiZXR3ZWVuIEphdmFTY3JpcHQgdmFsdWVzIGFuZCBPYmplY3Rp
dmUtQyBvYmplY3RzIGEgY29weSBpcwogIHBlcmZvcm1lZC4gVmFsdWVzIG9mIHR5cGVzIGxpc3Rl
ZCBiZWxvdyBhcmUgY29waWVkIHRvIHRoZSBjb3JyZXNwb25kaW5nCkBAIC0zMDUsNDMgKzMxNCw1
MiBAQCBOU19DTEFTU19BVkFJTEFCTEUoMTBfOSwgN18wKQogLyohCiBAbWV0aG9kZ3JvdXAgQWNj
ZXNzaW5nIFByb3BlcnRpZXMKICovCisKKyNpZiAhKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMw
MCkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQorCiAvKiEKIEBtZXRob2QKIEBh
YnN0cmFjdCBBY2Nlc3MgYSBwcm9wZXJ0eSBvZiBhIEpTVmFsdWUuCiBAcmVzdWx0IFRoZSBKU1Zh
bHVlIGZvciB0aGUgcmVxdWVzdGVkIHByb3BlcnR5IG9yIHRoZSBKU1ZhbHVlIDxjb2RlPnVuZGVm
aW5lZDwvY29kZT4gCiAgaWYgdGhlIHByb3BlcnR5IGRvZXMgbm90IGV4aXN0LgorQGRpc2N1c3Np
b24gQ29ycmVzcG9uZHMgdG8gdGhlIEphdmFTY3JpcHQgb3BlcmF0aW9uIDxjb2RlPm9iamVjdFtw
cm9wZXJ0eV08L2NvZGU+LiBQYXNzIGFuIE5TU3RyaW5nICogdG8gYWNjZXNzIGEgbmFtZWQgcHJv
cGVydHkuIE90aGVyIHZhbGlkIHByb3BlcnRpZXMgaW5jbHVkZSBzeW1ib2xzLCBudW1iZXJzLCBh
bmQgc3RyaW5naWZpYWJsZSBvYmplY3RzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9TMTEgYW5kIGJl
bG93LCAncHJvcGVydHknIHdhcyBhbiBOU1N0cmluZyAqLgogKi8KLS0gKEpTVmFsdWUgKil2YWx1
ZUZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLSAoSlNWYWx1ZSAqKXZhbHVlRm9y
UHJvcGVydHk6KGlkKXByb3BlcnR5OwogCiAvKiEKIEBtZXRob2QKIEBhYnN0cmFjdCBTZXQgYSBw
cm9wZXJ0eSBvbiBhIEpTVmFsdWUuCitAZGlzY3Vzc2lvbiBDb3JyZXNwb25kcyB0byB0aGUgSmF2
YVNjcmlwdCBvcGVyYXRpb24gPGNvZGU+b2JqZWN0W3Byb3BlcnR5XSA9IHZhbHVlPC9jb2RlPi4g
UGFzcyBhbiBOU1N0cmluZyAqIHRvIGFjY2VzcyBhIG5hbWVkIHByb3BlcnR5LiBPdGhlciB2YWxp
ZCBwcm9wZXJ0aWVzIGluY2x1ZGUgc3ltYm9scywgbnVtYmVycywgYW5kIHN0cmluZ2lmaWFibGUg
b2JqZWN0cy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUzExIGFuZCBiZWxvdywgJ3Byb3BlcnR5JyB3
YXMgYW4gTlNTdHJpbmcgKi4KICovCi0tICh2b2lkKXNldFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9w
ZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZv
clByb3BlcnR5OihpZClwcm9wZXJ0eTsKIAogLyohCiBAbWV0aG9kCiBAYWJzdHJhY3QgRGVsZXRl
IGEgcHJvcGVydHkgZnJvbSBhIEpTVmFsdWUuCiBAcmVzdWx0IFlFUyBpZiBkZWxldGlvbiBpcyBz
dWNjZXNzZnVsLCBOTyBvdGhlcndpc2UuCitAZGlzY3Vzc2lvbiBDb3JyZXNwb25kcyB0byB0aGUg
SmF2YVNjcmlwdCBvcGVyYXRpb24gPGNvZGU+ZGVsZXRlIG9iamVjdFtwcm9wZXJ0eV08L2NvZGU+
LiBQYXNzIGFuIE5TU3RyaW5nICogdG8gYWNjZXNzIGEgbmFtZWQgcHJvcGVydHkuIE90aGVyIHZh
bGlkIHByb3BlcnRpZXMgaW5jbHVkZSBzeW1ib2xzLCBudW1iZXJzLCBhbmQgc3RyaW5naWZpYWJs
ZSBvYmplY3RzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9TMTEgYW5kIGJlbG93LCAncHJvcGVydHkn
IHdhcyBhbiBOU1N0cmluZyAqLgogKi8KLS0gKEJPT0wpZGVsZXRlUHJvcGVydHk6KE5TU3RyaW5n
ICopcHJvcGVydHk7CistIChCT09MKWRlbGV0ZVByb3BlcnR5OihpZClwcm9wZXJ0eTsKIAogLyoh
CiBAbWV0aG9kCiBAYWJzdHJhY3QgQ2hlY2sgaWYgYSBKU1ZhbHVlIGhhcyBhIHByb3BlcnR5Lgog
QGRpc2N1c3Npb24gVGhpcyBtZXRob2QgaGFzIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIHRoZSBKYXZh
U2NyaXB0IG9wZXJhdG9yIDxjb2RlPmluPC9jb2RlPi4KIEByZXN1bHQgUmV0dXJucyBZRVMgaWYg
cHJvcGVydHkgaXMgcHJlc2VudCBvbiB0aGUgdmFsdWUuCitAZGlzY3Vzc2lvbiBDb3JyZXNwb25k
cyB0byB0aGUgSmF2YVNjcmlwdCBvcGVyYXRpb24gPGNvZGU+cHJvcGVydHkgaW4gb2JqZWN0PC9j
b2RlPi4gUGFzcyBhbiBOU1N0cmluZyAqIHRvIGFjY2VzcyBhIG5hbWVkIHByb3BlcnR5LiBPdGhl
ciB2YWxpZCBwcm9wZXJ0aWVzIGluY2x1ZGUgc3ltYm9scywgbnVtYmVycywgYW5kIHN0cmluZ2lm
aWFibGUgb2JqZWN0cy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUzExIGFuZCBiZWxvdywgJ3Byb3Bl
cnR5JyB3YXMgYW4gTlNTdHJpbmcgKi4KICovCi0tIChCT09MKWhhc1Byb3BlcnR5OihOU1N0cmlu
ZyAqKXByb3BlcnR5OworLSAoQk9PTCloYXNQcm9wZXJ0eTooaWQpcHJvcGVydHk7CiAKIC8qIQog
QG1ldGhvZAogQGFic3RyYWN0IERlZmluZSBwcm9wZXJ0aWVzIHdpdGggY3VzdG9tIGRlc2NyaXB0
b3JzIG9uIEpTVmFsdWVzLgogQGRpc2N1c3Npb24gVGhpcyBtZXRob2QgbWF5IGJlIHVzZWQgdG8g
Y3JlYXRlIGEgZGF0YSBvciBhY2Nlc3NvciBwcm9wZXJ0eSBvbiBhbiBvYmplY3QuCiAgVGhpcyBt
ZXRob2Qgb3BlcmF0ZXMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBPYmplY3QuZGVmaW5lUHJvcGVy
dHkgbWV0aG9kIGluIHRoZSAKLSBKYXZhU2NyaXB0IGxhbmd1YWdlLgorIEphdmFTY3JpcHQgbGFu
Z3VhZ2UuIFBhc3MgYW4gTlNTdHJpbmcgKiB0byBhY2Nlc3MgYSBuYW1lZCBwcm9wZXJ0eS4gT3Ro
ZXIgdmFsaWQgcHJvcGVydGllcyBpbmNsdWRlIHN5bWJvbHMsIG51bWJlcnMsIGFuZCBzdHJpbmdp
ZmlhYmxlIG9iamVjdHMuIEluIG1hY09TIDEwLjEzIGFuZCBpT1MxMSBhbmQgYmVsb3csICdwcm9w
ZXJ0eScgd2FzIGFuIE5TU3RyaW5nICouCiAqLwotLSAodm9pZClkZWZpbmVQcm9wZXJ0eTooTlNT
dHJpbmcgKilwcm9wZXJ0eSBkZXNjcmlwdG9yOihpZClkZXNjcmlwdG9yOworLSAodm9pZClkZWZp
bmVQcm9wZXJ0eTooaWQpcHJvcGVydHkgZGVzY3JpcHRvcjooaWQpZGVzY3JpcHRvcjsKKworI2Vu
ZGlmIC8vICEoZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAoZGVmaW5lZChfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPCAxMTAwMDApCiAKIC8qIQogQG1ldGhvZApAQCAtNDAzLDYgKzQyMSwxMiBAQCBOU19D
TEFTU19BVkFJTEFCTEUoMTBfOSwgN18wKQogQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBpc09i
amVjdDsKIAogLyohCisgQHByb3BlcnR5CisgQGFic3RyYWN0IENoZWNrIGlmIGEgSlNWYWx1ZSBp
cyBhIHN5bWJvbC4KKyAqLworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBpc1N5bWJvbCBOU19B
VkFJTEFCTEUoMTBfMTMsIDExXzApOworCisvKiEKIEBwcm9wZXJ0eQogQGFic3RyYWN0IENoZWNr
IGlmIGEgSlNWYWx1ZSBpcyBhbiBhcnJheS4KICovIApAQCAtNTY5LDEzICs1OTMsMTYgQEAgQ3Jl
YXRlIGEgSlNWYWx1ZSBmcm9tIGEgQ0dSZWN0LgogQC90ZXh0YmxvY2sKIAogIEFuIG9iamVjdCBr
ZXkgcGFzc2VkIGFzIGEgc3Vic2NyaXB0IHdpbGwgYmUgY29udmVydGVkIHRvIGEgSmF2YVNjcmlw
dCB2YWx1ZSwKLSBhbmQgdGhlbiB0aGUgdmFsdWUgY29udmVydGVkIHRvIGEgc3RyaW5nIHVzZWQg
YXMgYSBwcm9wZXJ0eSBuYW1lLgorIGFuZCB0aGVuIHRoZSB2YWx1ZSBjb252ZXJ0ZWQgdG8gYSBz
dHJpbmcgdXNlZCBhcyBhIHByb3BlcnR5IG5hbWUuIEluIG1hY09TCisgMTAuMTMgYW5kIGlPUzEx
IGFuZCBiZWxvdywgdGhlIDxjb2RlPmtleTwvY29kZT4gYXJndW1lbnQgb2YKKyA8Y29kZT5zZXRP
YmplY3Q6b2JqZWN0IGZvcktleWVkU3Vic2NyaXB0OmtleTwvY29kZT4gd2FzIGFuIHJlc3RyaWN0
ZWQgdG8KKyA8Y29kZT5OU1N0cmluZyA8TlNDb3B5aW5nPiAqPC9jb2RlPiBidXQgdGhhdCByZXN0
cmljdGlvbiB3YXMgbmV2ZXIgdXNlZC4KICovCiBAaW50ZXJmYWNlIEpTVmFsdWUgKFN1YnNjcmlw
dFN1cHBvcnQpCiAKIC0gKEpTVmFsdWUgKilvYmplY3RGb3JLZXllZFN1YnNjcmlwdDooaWQpa2V5
OwogLSAoSlNWYWx1ZSAqKW9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRl
eDsKLS0gKHZvaWQpc2V0T2JqZWN0OihpZClvYmplY3QgZm9yS2V5ZWRTdWJzY3JpcHQ6KE5TT2Jq
ZWN0IDxOU0NvcHlpbmc+ICopa2V5OworLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBmb3JL
ZXllZFN1YnNjcmlwdDooaWQpa2V5OwogLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBhdElu
ZGV4ZWRTdWJzY3JpcHQ6KE5TVUludGVnZXIpaW5kZXg7CiAKIEBlbmQKQEAgLTY1OSw2ICs2ODYs
MTcgQEAgSlNfRVhQT1JUIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlw
dG9yR2V0S2V5OwogKi8KIEpTX0VYUE9SVCBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBKU1Byb3Bl
cnR5RGVzY3JpcHRvclNldEtleTsKIAorI2lmIChkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDAp
IHx8IChkZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKKworLy8gVGhlc2UgZGVjbGFyYXRp
b25zIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aGVuIHRhcmdldGluZyBTREtzIGZvciBsZWdhY3kg
T1NzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9TMTEgYW5kIGJlbG93LCAncHJvcGVydHknIHdhcyBh
biBOU1N0cmluZyAqLgorLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KE5TU3RyaW5nICop
cHJvcGVydHk7CistICh2b2lkKXNldFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooTlNTdHJp
bmcgKilwcm9wZXJ0eTsKKy0gKEJPT0wpZGVsZXRlUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVy
dHk7CistIChCT09MKWhhc1Byb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLSAodm9pZClk
ZWZpbmVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eSBkZXNjcmlwdG9yOihpZClkZXNjcmlw
dG9yOworCisjZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9IC8vIGV4dGVybiAiQyIKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCmluZGV4IDY5ODZmYWU4MzFlMmVj
YzZlYmMyYmVkYWU0ZTY4YWMyMmY1NzhlODAuLmUyODMwMzY2MzllNTJiMWMyMmZkZDM2YjBiMTI0
ZTQwMGRkMDFkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1
ZS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KQEAgLTM5LDYg
KzM5LDcgQEAKICNpbXBvcnQgIkpTQ0pTVmFsdWUuaCIKICNpbXBvcnQgIlN0cm9uZy5oIgogI2lt
cG9ydCAiU3Ryb25nSW5saW5lcy5oIgorI2ltcG9ydCA8d3RmL0V4cGVjdGVkLmg+CiAjaW1wb3J0
IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9M
b2NrLmg+CkBAIC0xMzYsNiArMTM3LDEzIEBAIE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURl
c2NyaXB0b3JTZXRLZXkgPSBAInNldCI7CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpT
VmFsdWVSZWY6SlNWYWx1ZU1ha2VVbmRlZmluZWQoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVm
XSkgaW5Db250ZXh0OmNvbnRleHRdOwogfQogCisrIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3U3lt
Ym9sRnJvbURlc2NyaXB0aW9uOihOU1N0cmluZyAqKWRlc2NyaXB0aW9uIGluQ29udGV4dDooSlND
b250ZXh0ICopY29udGV4dAoreworICAgIEpTU3RyaW5nUmVmIHN0cmluZyA9IEpTU3RyaW5nQ3Jl
YXRlV2l0aENGU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KGRlc2NyaXB0aW9u
KSk7CisgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6SlNWYWx1ZU1ha2VT
eW1ib2woW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgc3RyaW5nKSBpbkNvbnRleHQ6Y29u
dGV4dF07Cit9CisKKwogLSAoaWQpdG9PYmplY3QKIHsKICAgICByZXR1cm4gdmFsdWVUb09iamVj
dChfY29udGV4dCwgbV92YWx1ZSk7CkBAIC0yMTksNzQgKzIyNywxMDYgQEAgTlNTdHJpbmcgKiBj
b25zdCBKU1Byb3BlcnR5RGVzY3JpcHRvclNldEtleSA9IEAic2V0IjsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi0tIChKU1ZhbHVlICopdmFsdWVGb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9w
ZXJ0eU5hbWUKK3RlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5hbWUgTlNTdHJpbmdGdW5j
dGlvbiwgdHlwZW5hbWUgSlNWYWx1ZUZ1bmN0aW9uLCB0eXBlbmFtZS4uLiBUeXBlcz4KK2lubGlu
ZSBFeHBlY3RlZDxSZXN1bHQsIEpTVmFsdWVSZWY+IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbihO
U1N0cmluZ0Z1bmN0aW9uIHN0cmluZ0Z1bmN0aW9uLCBKU1ZhbHVlRnVuY3Rpb24ganNGdW5jdGlv
biwgSlNWYWx1ZSogdmFsdWUsIGlkIHByb3BlcnR5S2V5LCBUeXBlcy4uLiBhcmd1bWVudHMpCiB7
Ci0gICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9
IEpTVmFsdWVUb09iamVjdChbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSwg
JmV4Y2VwdGlvbik7CisgICAgSlNDb250ZXh0KiBjb250ZXh0ID0gW3ZhbHVlIGNvbnRleHRdOwor
ICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0cjsKKyAgICBKU09iamVjdFJlZiBvYmpl
Y3QgPSBKU1ZhbHVlVG9PYmplY3QoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgW3ZhbHVl
IEpTVmFsdWVSZWZdLCAmZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICBy
ZXR1cm4gW19jb250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOworICAg
ICAgICByZXR1cm4gVW5leHBlY3RlZFR5cGU8SlNWYWx1ZVJlZj4oZXhjZXB0aW9uKTsKIAotICAg
IEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdS
ZWYpcHJvcGVydHlOYW1lKTsKLSAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpTT2JqZWN0R2V0UHJv
cGVydHkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgbmFtZSwgJmV4Y2Vw
dGlvbik7Ci0gICAgSlNTdHJpbmdSZWxlYXNlKG5hbWUpOwotICAgIGlmIChleGNlcHRpb24pCi0g
ICAgICAgIHJldHVybiBbX2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlv
bl07CisgICAgUmVzdWx0IHJlc3VsdDsKKyAgICAvLyBJZiBpdCdzIGEgTlNTdHJpbmcgYWxyZWFk
eSwgcmVkdWNlIGluZGlyZWN0aW9uIGFuZCBqdXN0IHBhc3MgdGhlIE5TU3RyaW5nLgorICAgIGlm
IChbcHJvcGVydHlLZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgeworICAgICAg
ICBKU1N0cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcocmVpbnRlcnBy
ZXRfY2FzdDxDRlN0cmluZ1JlZj4ocHJvcGVydHlLZXkpKTsKKyAgICAgICAgcmVzdWx0ID0gc3Ry
aW5nRnVuY3Rpb24oW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgb2JqZWN0LCBuYW1lLCBh
cmd1bWVudHMuLi4sICZleGNlcHRpb24pOworICAgICAgICBKU1N0cmluZ1JlbGVhc2UobmFtZSk7
CisgICAgfSBlbHNlCisgICAgICAgIHJlc3VsdCA9IGpzRnVuY3Rpb24oW2NvbnRleHQgSlNHbG9i
YWxDb250ZXh0UmVmXSwgb2JqZWN0LCBbW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OnByb3BlcnR5
S2V5IGluQ29udGV4dDpjb250ZXh0XSBKU1ZhbHVlUmVmXSwgYXJndW1lbnRzLi4uLCAmZXhjZXB0
aW9uKTsKKyAgICByZXR1cm4gRXhwZWN0ZWQ8UmVzdWx0LCBKU1ZhbHVlUmVmPihyZXN1bHQpOwor
fQogCi0gICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6cmVzdWx0IGluQ29u
dGV4dDpfY29udGV4dF07CisjZGVmaW5lIFVTRV9OU1NUUklOR19GT1JfUFJPUEVSVFlfS0VZIChk
ZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDApIHx8IChkZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEx
MDAwMCkKKworI2lmIFVTRV9OU1NUUklOR19GT1JfUFJPUEVSVFlfS0VZCistIChKU1ZhbHVlICop
dmFsdWVGb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXkKKyNlbHNlCistIChKU1ZhbHVlICopdmFs
dWVGb3JQcm9wZXJ0eTooaWQpa2V5CisjZW5kaWYKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHBlcmZv
cm1Qcm9wZXJ0eU9wZXJhdGlvbjxKU1ZhbHVlUmVmPihKU09iamVjdEdldFByb3BlcnR5LCBKU09i
amVjdEdldFByb3BlcnR5S2V5LCBzZWxmLCBrZXkpOworICAgIGlmICghcmVzdWx0KQorICAgICAg
ICByZXR1cm4gW19jb250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4Y2VwdGlvbjpyZXN1bHQuZXJyb3Io
KV07CisKKyAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpyZXN1bHQudmFs
dWUoKSBpbkNvbnRleHQ6X2NvbnRleHRdOwogfQogCi0tICh2b2lkKXNldFZhbHVlOihpZCl2YWx1
ZSBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKKyNpZiBVU0VfTlNTVFJJTkdf
Rk9SX1BST1BFUlRZX0tFWQorLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yUHJvcGVydHk6
KE5TU3RyaW5nICopa2V5CisjZWxzZQorLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yUHJv
cGVydHk6KGlkKWtleQorI2VuZGlmCiB7Ci0gICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwot
ICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChbX2NvbnRleHQgSlNHbG9i
YWxDb250ZXh0UmVmXSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7Ci0gICAgaWYgKGV4Y2VwdGlvbikg
ewotICAgICAgICBbX2NvbnRleHQgbm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CisgICAgLy8gV2UgbmVlZCBVbml0IGJ1c2luZXNzIGJlY2F1c2Ugdm9p
ZCBjYW4ndCBiZSBhc3NpZ25lZCB0byBpbiBwZXJmb3JtUHJvcGVydHlPcGVyYXRpb24gYW5kIEkg
ZG9uJ3Qgd2FudCB0byBkdXBsaWNhdGUgdGhlIGNvZGUuLi4KKyAgICB1c2luZyBVbml0ID0gc3Rk
Ojp0dXBsZTw+OworICAgIGF1dG8gc3RyaW5nU2V0UHJvcGVydHkgPSBbXSAoYXV0by4uLiBhcmdz
KSAtPiBVbml0IHsKKyAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShhcmdzLi4uKTsKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICB9OwogCi0gICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5n
Q3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwotICAgIEpTT2Jq
ZWN0U2V0UHJvcGVydHkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgbmFt
ZSwgb2JqZWN0VG9WYWx1ZShfY29udGV4dCwgdmFsdWUpLCAwLCAmZXhjZXB0aW9uKTsKLSAgICBK
U1N0cmluZ1JlbGVhc2UobmFtZSk7Ci0gICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICBbX2Nv
bnRleHQgbm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgYXV0byBqc1ZhbHVlU2V0UHJv
cGVydHkgPSBbXSAoYXV0by4uLiBhcmdzKSAtPiBVbml0IHsKKyAgICAgICAgSlNPYmplY3RTZXRQ
cm9wZXJ0eUtleShhcmdzLi4uKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9OworCisgICAg
YXV0byByZXN1bHQgPSBwZXJmb3JtUHJvcGVydHlPcGVyYXRpb248VW5pdD4oc3RyaW5nU2V0UHJv
cGVydHksIGpzVmFsdWVTZXRQcm9wZXJ0eSwgc2VsZiwga2V5LCBvYmplY3RUb1ZhbHVlKF9jb250
ZXh0LCB2YWx1ZSksIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSk7CisgICAgaWYgKCFyZXN1bHQp
IHsKKyAgICAgICAgW19jb250ZXh0IG5vdGlmeUV4Y2VwdGlvbjpyZXN1bHQuZXJyb3IoKV07CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiB9CiAKLS0gKEJPT0wpZGVsZXRlUHJvcGVydHk6KE5TU3Ry
aW5nICopcHJvcGVydHlOYW1lCisjaWYgVVNFX05TU1RSSU5HX0ZPUl9QUk9QRVJUWV9LRVkKKy0g
KEJPT0wpZGVsZXRlUHJvcGVydHk6KE5TU3RyaW5nICopa2V5CisjZWxzZQorLSAoQk9PTClkZWxl
dGVQcm9wZXJ0eTooaWQpa2V5CisjZW5kaWYKIHsKLSAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9
IDA7Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KFtfY29udGV4dCBK
U0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKLSAgICBpZiAoZXhjZXB0
aW9uKQotICAgICAgICByZXR1cm4gW19jb250ZXh0IGJvb2xGcm9tTm90aWZ5RXhjZXB0aW9uOmV4
Y2VwdGlvbl07Ci0KLSAgICBKU1N0cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZT
dHJpbmcoKENGU3RyaW5nUmVmKXByb3BlcnR5TmFtZSk7Ci0gICAgQk9PTCByZXN1bHQgPSBKU09i
amVjdERlbGV0ZVByb3BlcnR5KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3Qs
IG5hbWUsICZleGNlcHRpb24pOwotICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKLSAgICBpZiAo
ZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW19jb250ZXh0IGJvb2xGcm9tTm90aWZ5RXhjZXB0
aW9uOmV4Y2VwdGlvbl07Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIEV4cGVjdGVkPEJPT0ws
IEpTVmFsdWVSZWY+IHJlc3VsdCA9IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbjxCT09MPihKU09i
amVjdERlbGV0ZVByb3BlcnR5LCBKU09iamVjdERlbGV0ZVByb3BlcnR5S2V5LCBzZWxmLCBrZXkp
OworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gW19jb250ZXh0IGJvb2xGcm9tTm90
aWZ5RXhjZXB0aW9uOnJlc3VsdC5lcnJvcigpXTsKKyAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7
CiB9CiAKLS0gKEJPT0wpaGFzUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lCisjaWYg
VVNFX05TU1RSSU5HX0ZPUl9QUk9QRVJUWV9LRVkKKy0gKEJPT0wpaGFzUHJvcGVydHk6KE5TU3Ry
aW5nICopa2V5CisjZWxzZQorLSAoQk9PTCloYXNQcm9wZXJ0eTooaWQpa2V5CisjZW5kaWYKIHsK
LSAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0ID0g
SlNWYWx1ZVRvT2JqZWN0KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlLCAm
ZXhjZXB0aW9uKTsKLSAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW19jb250ZXh0
IGJvb2xGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgLy8gVGhlIEMtYXBpIGRv
ZXNuJ3QgcmV0dXJuIGFuIGV4Y2VwdGlvbiB2YWx1ZSBmb3IgdGhlIHN0cmluZyB2ZXJzaW9uIG9m
IGhhcyBwcm9wZXJ0eS4KKyAgICBhdXRvIHN0cmluZ0hhc1Byb3BlcnR5ID0gW10gKEpTQ29udGV4
dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlUmVmKikgLT4gQk9PTCB7CisgICAgICAgIHJldHVybiBKU09iamVjdEhhc1Byb3BlcnR5
KGN0eCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIH07CiAKLSAgICBKU1N0cmluZ1JlZiBu
YW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKXByb3BlcnR5TmFt
ZSk7Ci0gICAgQk9PTCByZXN1bHQgPSBKU09iamVjdEhhc1Byb3BlcnR5KFtfY29udGV4dCBKU0ds
b2JhbENvbnRleHRSZWZdLCBvYmplY3QsIG5hbWUpOwotICAgIEpTU3RyaW5nUmVsZWFzZShuYW1l
KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIEV4cGVjdGVkPEJPT0wsIEpTVmFsdWVSZWY+IHJl
c3VsdCA9IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbjxCT09MPihzdHJpbmdIYXNQcm9wZXJ0eSwg
SlNPYmplY3RIYXNQcm9wZXJ0eUtleSwgc2VsZiwga2V5KTsKKyAgICBpZiAoIXJlc3VsdCkKKyAg
ICAgICAgcmV0dXJuIFtfY29udGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpyZXN1bHQuZXJy
b3IoKV07CisgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpOwogfQogCi0tICh2b2lkKWRlZmluZVBy
b3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0b3IKKyNp
ZiBVU0VfTlNTVFJJTkdfRk9SX1BST1BFUlRZX0tFWQorLSAodm9pZClkZWZpbmVQcm9wZXJ0eToo
TlNTdHJpbmcgKilrZXkgZGVzY3JpcHRvcjooaWQpZGVzY3JpcHRvcgorI2Vsc2UKKy0gKHZvaWQp
ZGVmaW5lUHJvcGVydHk6KGlkKWtleSBkZXNjcmlwdG9yOihpZClkZXNjcmlwdG9yCisjZW5kaWYK
IHsKLSAgICBbW19jb250ZXh0IGdsb2JhbE9iamVjdF1bQCJPYmplY3QiXSBpbnZva2VNZXRob2Q6
QCJkZWZpbmVQcm9wZXJ0eSIgd2l0aEFyZ3VtZW50czpAWyBzZWxmLCBwcm9wZXJ0eSwgZGVzY3Jp
cHRvciBdXTsKKyAgICBbW19jb250ZXh0IGdsb2JhbE9iamVjdF1bQCJPYmplY3QiXSBpbnZva2VN
ZXRob2Q6QCJkZWZpbmVQcm9wZXJ0eSIgd2l0aEFyZ3VtZW50czpAWyBzZWxmLCBrZXksIGRlc2Ny
aXB0b3IgXV07CiB9CiAKKyN1bmRlZiBVU0VfTlNTVFJJTkdfRk9SX1BST1BFUlRZX0tFWQorCiAt
IChKU1ZhbHVlICopdmFsdWVBdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4CiB7CiAgICAgLy8gUHJv
cGVydGllcyB0aGF0IGFyZSBoaWdoZXIgdGhhbiBhbiB1bnNpZ25lZCB2YWx1ZSBjYW4gaG9sZCBh
cmUgY29udmVydGVkIHRvIGEgZG91YmxlIHRoZW4gaW5zZXJ0ZWQgYXMgYSBub3JtYWwgcHJvcGVy
dHkuCkBAIC0zNTcsNiArMzk3LDExIEBAIE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2Ny
aXB0b3JTZXRLZXkgPSBAInNldCI7CiAgICAgcmV0dXJuIEpTVmFsdWVJc09iamVjdChbX2NvbnRl
eHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSk7CiB9CiAKKy0gKEJPT0wpaXNTeW1ib2wK
K3sKKyAgICByZXR1cm4gSlNWYWx1ZUlzU3ltYm9sKFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRS
ZWZdLCBtX3ZhbHVlKTsKK30KKwogLSAoQk9PTClpc0FycmF5CiB7CiAgICAgcmV0dXJuIEpTVmFs
dWVJc0FycmF5KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlKTsKQEAgLTUz
OSwxMyArNTg0LDcgQEAgTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5RGVzY3JpcHRvclNldEtl
eSA9IEAic2V0IjsKIAogLSAoSlNWYWx1ZSAqKW9iamVjdEZvcktleWVkU3Vic2NyaXB0OihpZClr
ZXkKIHsKLSAgICBpZiAoIVtrZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgewot
ICAgICAgICBrZXkgPSBbW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OmtleSBpbkNvbnRleHQ6X2Nv
bnRleHRdIHRvU3RyaW5nXTsKLSAgICAgICAgaWYgKCFrZXkpCi0gICAgICAgICAgICByZXR1cm4g
W0pTVmFsdWUgdmFsdWVXaXRoVW5kZWZpbmVkSW5Db250ZXh0Ol9jb250ZXh0XTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gW3NlbGYgdmFsdWVGb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXldOworICAg
IHJldHVybiBbc2VsZiB2YWx1ZUZvclByb3BlcnR5OmtleV07CiB9CiAKIC0gKEpTVmFsdWUgKilv
YmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6KE5TVUludGVnZXIpaW5kZXgKQEAgLTU1MywxNSArNTky
LDkgQEAgTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5RGVzY3JpcHRvclNldEtleSA9IEAic2V0
IjsKICAgICByZXR1cm4gW3NlbGYgdmFsdWVBdEluZGV4OmluZGV4XTsKIH0KIAotLSAodm9pZClz
ZXRPYmplY3Q6KGlkKW9iamVjdCBmb3JLZXllZFN1YnNjcmlwdDooTlNPYmplY3QgPE5TQ29weWlu
Zz4gKilrZXkKKy0gKHZvaWQpc2V0T2JqZWN0OihpZClvYmplY3QgZm9yS2V5ZWRTdWJzY3JpcHQ6
KGlkKWtleQogewotICAgIGlmICghW2tleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11d
KSB7Ci0gICAgICAgIGtleSA9IFtbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6a2V5IGluQ29udGV4
dDpfY29udGV4dF0gdG9TdHJpbmddOwotICAgICAgICBpZiAoIWtleSkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBbc2VsZiBzZXRWYWx1ZTpvYmplY3QgZm9yUHJvcGVydHk6KE5T
U3RyaW5nICopa2V5XTsKKyAgICBbc2VsZiBzZXRWYWx1ZTpvYmplY3QgZm9yUHJvcGVydHk6a2V5
XTsKIH0KIAogLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBhdEluZGV4ZWRTdWJzY3JpcHQ6
KE5TVUludGVnZXIpaW5kZXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNWYWx1ZVJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3Bw
CmluZGV4IDY0YWM2YzMyNDZlYmZiOGNjNGYyNGMwNTgwOTk4YWU0MThkYWJhNmQuLmQ0NmNmZjA2
YTQ2NTRlOTUwYjUwMTVlNGNiMmJhZjQ5NmIwNDhjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1ZhbHVlUmVmLmNwcApAQCAtODYsOCArODYsMTAgQEAgc3RhdGljIGJvb2wgZXZlcm5v
dGVIYWNrTmVlZGVkKCkKICAgICAgICAgcmV0dXJuIGtKU1R5cGVOdW1iZXI7CiAgICAgaWYgKGpz
VmFsdWUuaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIGtKU1R5cGVTdHJpbmc7Ci0gICAgQVNT
RVJUKGpzVmFsdWUuaXNPYmplY3QoKSk7Ci0gICAgcmV0dXJuIGtKU1R5cGVPYmplY3Q7CisgICAg
aWYgKGpzVmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIGtKU1R5cGVPYmplY3Q7Cisg
ICAgQVNTRVJUKGpzVmFsdWUuaXNTeW1ib2woKSk7CisgICAgcmV0dXJuIGtKU1R5cGVTeW1ib2w7
CiB9CiAKIGJvb2wgSlNWYWx1ZUlzVW5kZWZpbmVkKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVS
ZWYgdmFsdWUpCkBAIC0xNjIsNiArMTY0LDE4IEBAIGJvb2wgSlNWYWx1ZUlzT2JqZWN0KEpTQ29u
dGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpCiAgICAgcmV0dXJuIHRvSlMoZXhlYywgdmFs
dWUpLmlzT2JqZWN0KCk7CiB9CiAKK2Jvb2wgSlNWYWx1ZUlzU3ltYm9sKEpTQ29udGV4dFJlZiBj
dHgsIEpTVmFsdWVSZWYgdmFsdWUpCit7CisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgRXhlY1N0
YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisK
KyAgICByZXR1cm4gdG9KUyhleGVjLCB2YWx1ZSkuaXNTeW1ib2woKTsKK30KKwogYm9vbCBKU1Zh
bHVlSXNBcnJheShKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQogewogICAgIGlm
ICghY3R4KSB7CkBAIC0zMTYsNiArMzMwLDIyIEBAIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VOdW1i
ZXIoSlNDb250ZXh0UmVmIGN0eCwgZG91YmxlIHZhbHVlKQogICAgIHJldHVybiB0b1JlZihleGVj
LCBqc051bWJlcihwdXJpZnlOYU4odmFsdWUpKSk7CiB9CiAKK0pTVmFsdWVSZWYgSlNWYWx1ZU1h
a2VTeW1ib2woSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgZGVzY3JpcHRpb24pCit7Cisg
ICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Cisg
ICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9D
QVRDSF9TQ09QRShleGVjLT52bSgpKTsKKworICAgIEpTU3RyaW5nKiBqc0Rlc2NyaXB0aW9uID0g
anNTdHJpbmcoZXhlYywgZGVzY3JpcHRpb24gPyBkZXNjcmlwdGlvbi0+c3RyaW5nKCkgOiBTdHJp
bmcoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICBy
ZXR1cm4gdG9SZWYoZXhlYywgU3ltYm9sOjpjcmVhdGUoZXhlYywganNEZXNjcmlwdGlvbikpOwor
fQorCiBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlU3RyaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3Ry
aW5nUmVmIHN0cmluZykKIHsKICAgICBpZiAoIWN0eCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVmFsdWVSZWYuaAppbmRleCA5ODE1ZGU3ODNjMGFlZTA3M2UzYTQ0OGJkMGM3Y2FkZDRhOTUy
YzA2Li4zYmU4NWIwYTljMTYyZmY3MGI2MWMwYjY3NmY1NGViNDRkNzA1YWYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuaApAQCAtNDIsNiArNDIsNyBAQAogQGNvbnN0YW50
ICAgICBrSlNUeXBlTnVtYmVyICAgICBBIHByaW1pdGl2ZSBudW1iZXIgdmFsdWUuCiBAY29uc3Rh
bnQgICAgIGtKU1R5cGVTdHJpbmcgICAgIEEgcHJpbWl0aXZlIHN0cmluZyB2YWx1ZS4KIEBjb25z
dGFudCAgICAga0pTVHlwZU9iamVjdCAgICAgQW4gb2JqZWN0IHZhbHVlIChtZWFuaW5nIHRoYXQg
dGhpcyBKU1ZhbHVlUmVmIGlzIGEgSlNPYmplY3RSZWYpLgorQGNvbnN0YW50ICAgICBrSlNUeXBl
U3ltYm9sICAgICBBIHByaW1pdGl2ZSBzeW1ib2wgdmFsdWUuCiAqLwogdHlwZWRlZiBlbnVtIHsK
ICAgICBrSlNUeXBlVW5kZWZpbmVkLApAQCAtNDksNyArNTAsOCBAQCB0eXBlZGVmIGVudW0gewog
ICAgIGtKU1R5cGVCb29sZWFuLAogICAgIGtKU1R5cGVOdW1iZXIsCiAgICAga0pTVHlwZVN0cmlu
ZywKLSAgICBrSlNUeXBlT2JqZWN0CisgICAga0pTVHlwZU9iamVjdCwKKyAgICBrSlNUeXBlU3lt
Ym9sIENGX0VOVU1fQVZBSUxBQkxFKDEwXzEzLCAxMV8wKQogfSBKU1R5cGU7CiAKIC8qIQpAQCAt
MTUxLDYgKzE1MywxNiBAQCBKU19FWFBPUlQgYm9vbCBKU1ZhbHVlSXNPYmplY3QoSlNDb250ZXh0
UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSk7CiAKIC8qIQogQGZ1bmN0aW9uCitAYWJzdHJhY3Qg
ICAgICAgVGVzdHMgd2hldGhlciBhIEphdmFTY3JpcHQgdmFsdWUncyB0eXBlIGlzIHRoZSBzeW1i
b2wgdHlwZS4KK0BwYXJhbSBjdHggICAgICBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgor
QHBhcmFtIHZhbHVlICAgIFRoZSBKU1ZhbHVlIHRvIHRlc3QuCitAcmVzdWx0ICAgICAgICAgdHJ1
ZSBpZiB2YWx1ZSdzIHR5cGUgaXMgdGhlIHN5bWJvbCB0eXBlLCBvdGhlcndpc2UgZmFsc2UuCisq
LworSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzU3ltYm9sKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFs
dWVSZWYgdmFsdWUpIENGX0FWQUlMQUJMRSgxMF8xMywgMTFfMCk7CisKKworLyohCitAZnVuY3Rp
b24KIEBhYnN0cmFjdCBUZXN0cyB3aGV0aGVyIGEgSmF2YVNjcmlwdCB2YWx1ZSBpcyBhbiBvYmpl
Y3Qgd2l0aCBhIGdpdmVuIGNsYXNzIGluIGl0cyBjbGFzcyBjaGFpbi4KIEBwYXJhbSBjdHggVGhl
IGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KIEBwYXJhbSB2YWx1ZSBUaGUgSlNWYWx1ZSB0byB0
ZXN0LgpAQCAtMjU5LDYgKzI3MSwxNSBAQCBKU19FWFBPUlQgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFr
ZU51bWJlcihKU0NvbnRleHRSZWYgY3R4LCBkb3VibGUgbnVtYmVyKTsKIAogLyohCiBAZnVuY3Rp
b24KK0BhYnN0cmFjdCAgICAgICAgICAgIENyZWF0ZXMgYSBKYXZhU2NyaXB0IHZhbHVlIG9mIHRo
ZSBzeW1ib2wgdHlwZS4KK0BwYXJhbSBjdHggICAgICAgICAgIFRoZSBleGVjdXRpb24gY29udGV4
dCB0byB1c2UuCitAcGFyYW0gZGVzY3JpcHRpb24gICBBIGRlc2NyaXB0aW9uIG9mIHRoZSBuZXds
eSBjcmVhdGVkIHN5bWJvbCB2YWx1ZS4KK0ByZXN1bHQgICAgICAgICAgICAgIEEgdW5pcXVlIEpT
VmFsdWUgb2YgdGhlIHN5bWJvbCB0eXBlLCB3aG9zZSBkZXNjcmlwdGlvbiBtYXRjaGVzIHRoZSBv
bmUgcHJvdmlkZWQuCisqLworSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VTeW1ib2wo
SlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgZGVzY3JpcHRpb24pOworCisvKiEKK0BmdW5j
dGlvbgogQGFic3RyYWN0ICAgICAgIENyZWF0ZXMgYSBKYXZhU2NyaXB0IHZhbHVlIG9mIHRoZSBz
dHJpbmcgdHlwZS4KIEBwYXJhbSBjdHggIFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCiBA
cGFyYW0gc3RyaW5nICAgVGhlIEpTU3RyaW5nIHRvIGFzc2lnbiB0byB0aGUgbmV3bHkgY3JlYXRl
ZCBKU1ZhbHVlLiBUaGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVz
dHMvdGVzdGFwaS5jIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMK
aW5kZXggN2JlY2RmZTA0MTE1YmY5NDg5ZWY4NDE5N2MxNjcxYzViODNiYTRlMi4uYTFlYTU4MjYz
NzgxNTFiNDliYzg4NzA3NmM0NDBhZWQxNmFmZjYwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS90ZXN0cy90ZXN0YXBpLmMKQEAgLTY2LDYgKzY2LDggQEAKIHZvaWQgdGVzdE9iamVjdGl2
ZUNBUEkodm9pZCk7CiAjZW5kaWYKIAoraW50IHRlc3RDQVBJVmlhQ3BwKCk7CisKIGJvb2wgYXNz
ZXJ0VHJ1ZShib29sIHZhbHVlLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKIAogc3RhdGljIEpTR2xv
YmFsQ29udGV4dFJlZiBjb250ZXh0OwpAQCAtMTM2MSw2ICsxMzYzLDcgQEAgaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIHRlc3RP
YmplY3RpdmVDQVBJKCk7CiAjZW5kaWYKKyAgICBSRUxFQVNFX0FTU0VSVCghdGVzdENBUElWaWFD
cHAoKSk7CiAKICAgICBjb25zdCBjaGFyICpzY3JpcHRQYXRoID0gInRlc3RhcGkuanMiOwogICAg
IGlmIChhcmdjID4gMSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90
ZXN0cy90ZXN0YXBpLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFw
aS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGI1ZTMwYzRiMDBiMWY3ZTA4YjQxMDU3OGExYWJiZDgxOTMzMDBm
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVz
dGFwaS5jcHAKQEAgLTAsMCArMSwzOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkphdmFTY3JpcHRDb3JlLmgi
CisKKyNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgor
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
ZXh0ZXJuICJDIiBpbnQgdGVzdENBUElWaWFDcHAoKTsKKworY2xhc3MgQVBJU3RyaW5nIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShBUElTdHJpbmcpOworcHVibGljOgorCisgICAgQVBJU3Ry
aW5nKGNvbnN0IGNoYXIqIHN0cmluZykKKyAgICAgICAgOiBtX3N0cmluZyhKU1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZyhzdHJpbmcpKQorICAgIHsKKyAgICB9CisKKyAgICB+QVBJU3RyaW5n
KCkKKyAgICB7CisgICAgICAgIEpTU3RyaW5nUmVsZWFzZShtX3N0cmluZyk7CisgICAgfQorCisg
ICAgb3BlcmF0b3IgSlNTdHJpbmdSZWYoKSB7IHJldHVybiBtX3N0cmluZzsgfQorCitwcml2YXRl
OgorICAgIEpTU3RyaW5nUmVmIG1fc3RyaW5nOworfTsKKworY2xhc3MgQVBJQ29udGV4dCB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQVBJQ29udGV4dCk7CitwdWJsaWM6CisKKyAgICBBUElD
b250ZXh0KCkKKyAgICAgICAgOiBtX2NvbnRleHQoSlNHbG9iYWxDb250ZXh0Q3JlYXRlKG51bGxw
dHIpKQorICAgIHsKKyAgICAgICAgQVBJU3RyaW5nIHByaW50KCJwcmludCIpOworICAgICAgICBK
U09iamVjdFJlZiBwcmludEZ1bmN0aW9uID0gSlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJh
Y2sobV9jb250ZXh0LCBwcmludCwgW10gKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmLCBK
U09iamVjdFJlZiwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1l
bnRzW10sIEpTVmFsdWVSZWYqKSB7CisKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBhcmd1bWVudENvdW50OyBpKyspCisgICAgICAgICAgICAgICAgZGF0YUxvZyhiaXR3aXNl
X2Nhc3Q8SlNDOjpKU1ZhbHVlPihhcmd1bWVudHNbaV0pKTsKKyAgICAgICAgICAgIGRhdGFMb2dM
bigpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisgICAg
ICAgIH0pOworCisgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHkobV9jb250ZXh0LCBKU0NvbnRl
eHRHZXRHbG9iYWxPYmplY3QobV9jb250ZXh0KSwgcHJpbnQsIHByaW50RnVuY3Rpb24sIGtKU1By
b3BlcnR5QXR0cmlidXRlTm9uZSwgbnVsbHB0cik7CisgICAgfQorCisgICAgfkFQSUNvbnRleHQo
KQorICAgIHsKKyAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShtX2NvbnRleHQpOworICAg
IH0KKworICAgIG9wZXJhdG9yIEpTR2xvYmFsQ29udGV4dFJlZigpIHsgcmV0dXJuIG1fY29udGV4
dDsgfQorCitwcml2YXRlOgorICAgIEpTR2xvYmFsQ29udGV4dFJlZiBtX2NvbnRleHQ7Cit9Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgQVBJVmVjdG9yIDogcHJvdGVjdGVkIFZlY3Rv
cjxUPiB7CisgICAgdXNpbmcgQmFzZSA9IFZlY3RvcjxUPjsKK3B1YmxpYzoKKyAgICBBUElWZWN0
b3IoQVBJQ29udGV4dCYgY29udGV4dCkKKyAgICAgICAgOiBCYXNlKCkKKyAgICAgICAgLCBtX2Nv
bnRleHQoY29udGV4dCkKKyAgICB7CisgICAgfQorCisgICAgfkFQSVZlY3RvcigpCisgICAgewor
ICAgICAgICBmb3IgKGF1dG8mIHZhbHVlIDogKnRoaXMpCisgICAgICAgICAgICBKU1ZhbHVlVW5w
cm90ZWN0KG1fY29udGV4dCwgdmFsdWUpOworICAgIH0KKworICAgIHVzaW5nIFZlY3RvcjxUPjo6
b3BlcmF0b3JbXTsKKyAgICB1c2luZyBWZWN0b3I8VD46OnNpemU7CisgICAgdXNpbmcgVmVjdG9y
PFQ+OjpiZWdpbjsKKyAgICB1c2luZyBWZWN0b3I8VD46OmVuZDsKKyAgICB1c2luZyB0eXBlbmFt
ZSBWZWN0b3I8VD46Oml0ZXJhdG9yOworCisgICAgdm9pZCBhcHBlbmQoVCB2YWx1ZSkKKyAgICB7
CisgICAgICAgIEpTVmFsdWVQcm90ZWN0KG1fY29udGV4dCwgdmFsdWUpOworICAgICAgICBCYXNl
OjphcHBlbmQoV1RGTW92ZSh2YWx1ZSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBUElDb250
ZXh0JiBtX2NvbnRleHQ7Cit9OworCitjbGFzcyBUZXN0QVBJIHsKK3B1YmxpYzoKKyAgICBpbnQg
cnVuKCk7Citwcml2YXRlOgorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gU3RyaW5ncz4KKyAg
ICBib29sIGNoZWNrKGJvb2wgY29uZGl0aW9uLCBTdHJpbmdzLi4uIG1lc3NhZ2UpOworCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgSlNGdW5jdG9yLCB0eXBlbmFtZSBBUElGdW5jdG9yPgorICAgIHZv
aWQgY2hlY2tKU0FuZEFQSU1hdGNoKGNvbnN0IEpTRnVuY3RvciYsIGNvbnN0IEFQSUZ1bmN0b3Im
LCBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbik7CisKKyAgICAvLyBIZWxwZXIgbWV0aG9kcy4KKyAg
ICB1c2luZyBTY3JpcHRSZXN1bHQgPSBFeHBlY3RlZDxKU1ZhbHVlUmVmLCBKU1ZhbHVlUmVmPjsK
KyAgICBTY3JpcHRSZXN1bHQgZXZhbHVhdGVTY3JpcHQoY29uc3QgY2hhciogc2NyaXB0LCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0ID0gbnVsbHB0cik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4g
QXJndW1lbnRUeXBlcz4KKyAgICBTY3JpcHRSZXN1bHQgY2FsbEZ1bmN0aW9uKGNvbnN0IGNoYXIq
IGZ1bmN0aW9uU291cmNlLCBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cyk7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KKyAgICBib29sIGZ1bmN0aW9uUmV0dXJuc1Ry
dWUoY29uc3QgY2hhciogZnVuY3Rpb25Tb3VyY2UsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRz
KTsKKworICAgIC8vIFdheXMgdG8gbWFrZSBzZXRzIG9mIGludGVyZXN0aW5nIHRoaW5ncy4KKyAg
ICBBUElWZWN0b3I8SlNPYmplY3RSZWY+IGludGVyZXN0aW5nT2JqZWN0cygpOworICAgIEFQSVZl
Y3RvcjxKU1ZhbHVlUmVmPiBpbnRlcmVzdGluZ0tleXMoKTsKKworICAgIGludCBmYWlsZWQgeyAw
IH07CisgICAgQVBJQ29udGV4dCBjb250ZXh0OworfTsKKworaW50IHRlc3RDQVBJVmlhQ3BwKCkK
K3sKKyAgICBUZXN0QVBJIHRlc3RlcjsKKyAgICByZXR1cm4gdGVzdGVyLnJ1bigpOworfQorCitU
ZXN0QVBJOjpTY3JpcHRSZXN1bHQgVGVzdEFQSTo6ZXZhbHVhdGVTY3JpcHQoY29uc3QgY2hhciog
c2NyaXB0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0KQoreworICAgIEFQSVN0cmluZyBzY3JpcHRB
UElTdHJpbmcoc2NyaXB0KTsKKyAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IG51bGxwdHI7CisK
KyAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgc2NyaXB0
QVBJU3RyaW5nLCB0aGlzT2JqZWN0LCBudWxscHRyLCAwLCAmZXhjZXB0aW9uKTsKKyAgICBpZiAo
ZXhjZXB0aW9uKQorICAgICAgICByZXR1cm4gVW5leHBlY3RlZFR5cGU8SlNWYWx1ZVJlZj4oZXhj
ZXB0aW9uKTsKKyAgICByZXR1cm4gU2NyaXB0UmVzdWx0KHJlc3VsdCk7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CitUZXN0QVBJOjpTY3JpcHRSZXN1bHQgVGVzdEFQ
STo6Y2FsbEZ1bmN0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uU291cmNlLCBBcmd1bWVudFR5cGVz
Li4uIGFyZ3VtZW50cykKK3sKKyAgICBKU1ZhbHVlUmVmIGZ1bmN0aW9uOworICAgIHsKKyAgICAg
ICAgU2NyaXB0UmVzdWx0IGZ1bmN0aW9uUmVzdWx0ID0gZXZhbHVhdGVTY3JpcHQoZnVuY3Rpb25T
b3VyY2UpOworICAgICAgICBpZiAoIWZ1bmN0aW9uUmVzdWx0KQorICAgICAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uUmVzdWx0OworICAgICAgICBmdW5jdGlvbiA9IGZ1bmN0aW9uUmVzdWx0LnZhbHVl
KCk7CisgICAgfQorCisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOworICAgIGlm
IChKU09iamVjdFJlZiBmdW5jdGlvbk9iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBm
dW5jdGlvbiwgJmV4Y2VwdGlvbikpIHsKKyAgICAgICAgSlNWYWx1ZVJlZiBhcmdzW3NpemVvZi4u
Lihhcmd1bWVudHMpXSB7IGFyZ3VtZW50cy4uLiB9OworICAgICAgICBKU1ZhbHVlUmVmIHJlc3Vs
dCA9IEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oY29udGV4dCwgZnVuY3Rpb25PYmplY3QsIGZ1bmN0
aW9uT2JqZWN0LCBzaXplb2YuLi4oYXJndW1lbnRzKSwgYXJncywgJmV4Y2VwdGlvbik7CisgICAg
ICAgIGlmICghZXhjZXB0aW9uKQorICAgICAgICAgICAgcmV0dXJuIFNjcmlwdFJlc3VsdChyZXN1
bHQpOworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUKGV4Y2VwdGlvbik7CisgICAgcmV0dXJu
IFVuZXhwZWN0ZWRUeXBlPEpTVmFsdWVSZWY+KGV4Y2VwdGlvbik7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+Citib29sIFRlc3RBUEk6OmZ1bmN0aW9uUmV0dXJuc1Ry
dWUoY29uc3QgY2hhciogZnVuY3Rpb25Tb3VyY2UsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRz
KQoreworICAgIEpTVmFsdWVSZWYgdHJ1ZVZhbHVlID0gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRl
eHQsIHRydWUpOworICAgIFNjcmlwdFJlc3VsdCByZXN1bHQgPSBjYWxsRnVuY3Rpb24oZnVuY3Rp
b25Tb3VyY2UsIGFyZ3VtZW50cy4uLik7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXR1cm4gSlNWYWx1ZUlzU3RyaWN0RXF1YWwoY29udGV4dCwgdHJ1ZVZh
bHVlLCByZXN1bHQudmFsdWUoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ3M+
Citib29sIFRlc3RBUEk6OmNoZWNrKGJvb2wgY29uZGl0aW9uLCBTdHJpbmdzLi4uIG1lc3NhZ2Vz
KQoreworICAgIGlmICghY29uZGl0aW9uKSB7CisgICAgICAgIGRhdGFMb2dMbihtZXNzYWdlcy4u
LiwgIjogRkFJTEVEIik7CisgICAgICAgIGZhaWxlZCsrOworICAgIH0gZWxzZQorICAgICAgICBk
YXRhTG9nTG4obWVzc2FnZXMuLi4sICI6IFBBU1NFRCIpOworCisgICAgcmV0dXJuIGNvbmRpdGlv
bjsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgSlNGdW5jdG9yLCB0eXBlbmFtZSBBUElGdW5jdG9y
Pgordm9pZCBUZXN0QVBJOjpjaGVja0pTQW5kQVBJTWF0Y2goY29uc3QgSlNGdW5jdG9yJiBqc0Z1
bmN0b3IsIGNvbnN0IEFQSUZ1bmN0b3ImIGFwaUZ1bmN0b3IsIGNvbnN0IGNoYXIqIGRlc2NyaXB0
aW9uKQoreworICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0cjsKKyAgICBKU1ZhbHVl
UmVmIHJlc3VsdCA9IGFwaUZ1bmN0b3IoJmV4Y2VwdGlvbik7CisgICAgU2NyaXB0UmVzdWx0IGpz
UmVzdWx0ID0ganNGdW5jdG9yKCk7CisgICAgaWYgKCFqc1Jlc3VsdCkgeworICAgICAgICBjaGVj
ayhleGNlcHRpb24sICJKUyBhbmQgQVBJIGNhbGxzIHNob3VsZCBib3RoIHRocm93IGFuIGV4Y2Vw
dGlvbiB3aGlsZSAiLCBkZXNjcmlwdGlvbik7CisgICAgICAgIGNoZWNrKGZ1bmN0aW9uUmV0dXJu
c1RydWUoIihmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhLmNvbnN0cnVjdG9yID09PSBiLmNvbnN0
cnVjdG9yOyB9KSIsIGV4Y2VwdGlvbiwganNSZXN1bHQuZXJyb3IoKSksICJKUyBhbmQgQVBJIGNh
bGxzIHNob3VsZCBib3RoIHRocm93IHRoZSBzYW1lIGV4Y2VwdGlvbiB3aGlsZSAiLCBkZXNjcmlw
dGlvbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY2hlY2soIWV4Y2VwdGlvbiwgIkpTIGFuZCBB
UEkgY2FsbHMgc2hvdWxkIGJvdGggbm90IHRocm93IGFuIGV4Y2VwdGlvbiB3aGlsZSAiLCBkZXNj
cmlwdGlvbik7CisgICAgICAgIGNoZWNrKEpTVmFsdWVJc1N0cmljdEVxdWFsKGNvbnRleHQsIHJl
c3VsdCwganNSZXN1bHQudmFsdWUoKSksICJKUyByZXN1bHQgYW5kIEFQSSBjYWxscyBzaG91bGQg
cmV0dXJuIHRoZSBzYW1lIHZhbHVlIHdoaWxlICIsIGRlc2NyaXB0aW9uKTsKKyAgICB9Cit9CisK
K0FQSVZlY3RvcjxKU09iamVjdFJlZj4gVGVzdEFQSTo6aW50ZXJlc3RpbmdPYmplY3RzKCkKK3sK
KyAgICBBUElWZWN0b3I8SlNPYmplY3RSZWY+IHJlc3VsdChjb250ZXh0KTsKKyAgICBKU09iamVj
dFJlZiBhcnJheSA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBldmFsdWF0ZVNjcmlwdCgKKyAg
ICAgICAgIlt7fSwgW10sIHsgW1N5bWJvbC5pdGVyYXRvcl06IDEgfSwgbmV3IERhdGUoKSwgbmV3
IFN0cmluZygnc3RyJyksIG5ldyBNYXAoKSwgbmV3IFNldCgpLCBuZXcgV2Vha01hcCgpLCBuZXcg
V2Vha1NldCgpLCBuZXcgRXJyb3IoKSwgbmV3IE51bWJlcig0MiksIG5ldyBCb29sZWFuKCksIHsg
Z2V0IGxlbmd0aCgpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gfV07IikudmFsdWUoKSwgbnVsbHB0
cik7CisKKyAgICBBUElTdHJpbmcgbGVuZ3RoU3RyaW5nKCJsZW5ndGgiKTsKKyAgICB1bnNpZ25l
ZCBsZW5ndGggPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eShj
b250ZXh0LCBhcnJheSwgbGVuZ3RoU3RyaW5nLCBudWxscHRyKSwgbnVsbHB0cik7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIEpTT2JqZWN0UmVm
IG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBKU09iamVjdEdldFByb3BlcnR5QXRJ
bmRleChjb250ZXh0LCBhcnJheSwgaSwgbnVsbHB0ciksIG51bGxwdHIpOworICAgICAgICBBU1NF
UlQob2JqZWN0KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChvYmplY3QpOworICAgIH0KKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK0FQSVZlY3RvcjxKU1ZhbHVlUmVmPiBUZXN0QVBJOjppbnRl
cmVzdGluZ0tleXMoKQoreworICAgIEFQSVZlY3RvcjxKU1ZhbHVlUmVmPiByZXN1bHQoY29udGV4
dCk7CisgICAgSlNPYmplY3RSZWYgYXJyYXkgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgZXZh
bHVhdGVTY3JpcHQoIlt7fSwgW10sIDEsIFN5bWJvbC5pdGVyYXRvciwgJ2xlbmd0aCddIikudmFs
dWUoKSwgbnVsbHB0cik7CisKKyAgICBBUElTdHJpbmcgbGVuZ3RoU3RyaW5nKCJsZW5ndGgiKTsK
KyAgICB1bnNpZ25lZCBsZW5ndGggPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgSlNPYmplY3RH
ZXRQcm9wZXJ0eShjb250ZXh0LCBhcnJheSwgbGVuZ3RoU3RyaW5nLCBudWxscHRyKSwgbnVsbHB0
cik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAg
IEpTVmFsdWVSZWYgdmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5QXRJbmRleChjb250ZXh0LCBh
cnJheSwgaSwgbnVsbHB0cik7CisgICAgICAgIEFTU0VSVCh2YWx1ZSk7CisgICAgICAgIHJlc3Vs
dC5hcHBlbmQodmFsdWUpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2ludCBU
ZXN0QVBJOjpydW4oKQoreworICAgIGRhdGFMb2dMbigiU3RhcnRpbmcgQy1BUEkgdGVzdHMgaW4g
QysrIik7CisgICAgY29uc3QgY2hhciogaXNTeW1ib2xGdW5jdGlvbiA9ICIoZnVuY3Rpb24gaXNT
eW1ib2woc3ltYm9sKSB7IHJldHVybiB0eXBlb2Yoc3ltYm9sKSA9PT0gJ3N5bWJvbCc7IH0pIjsK
KyAgICBjb25zdCBjaGFyKiBnZXRGdW5jdGlvbiA9ICIoZnVuY3Rpb24gZ2V0KG9iamVjdCwga2V5
KSB7IHJldHVybiBvYmplY3Rba2V5XTsgfSkiOworICAgIGNvbnN0IGNoYXIqIHNldEZ1bmN0aW9u
ID0gIihmdW5jdGlvbiBzZXQob2JqZWN0LCBrZXksIHZhbHVlKSB7IG9iamVjdFtrZXldID0gdmFs
dWU7IH0pIjsKKyAgICBjb25zdCBjaGFyKiBoYXNGdW5jdGlvbiA9ICIoZnVuY3Rpb24gaGFzKG9i
amVjdCwga2V5KSB7IHJldHVybiBrZXkgaW4gb2JqZWN0OyB9KSI7CisgICAgY29uc3QgY2hhciog
ZGVsZXRlRnVuY3Rpb24gPSAiKGZ1bmN0aW9uIGRlbChvYmplY3QsIGtleSkgeyByZXR1cm4gZGVs
ZXRlIG9iamVjdFtrZXldOyB9KSI7CisKKyAgICB7CisgICAgICAgIC8vIENhbid0IGNhbGwgU3lt
Ym9sIGFzIGEgY29uc3RydWN0b3Igc2luY2UgaXQncyBub3Qgc3ViY2xhc3NhYmxlLgorICAgICAg
ICBhdXRvIHJlc3VsdCA9IGV2YWx1YXRlU2NyaXB0KCJTeW1ib2woJ2RvcGUnKTsiKTsKKyAgICAg
ICAgY2hlY2soSlNWYWx1ZUdldFR5cGUoY29udGV4dCwgcmVzdWx0LnZhbHVlKCkpID09IGtKU1R5
cGVTeW1ib2wsICJkb3BlIGdldCB0eXBlIGlzIGEgc3ltYm9sIik7CisgICAgICAgIGNoZWNrKEpT
VmFsdWVJc1N5bWJvbChjb250ZXh0LCByZXN1bHQudmFsdWUoKSksICJkb3BlIGlzIGEgc3ltYm9s
Iik7CisgICAgfQorCisgICAgeworICAgICAgICBBUElTdHJpbmcgZGVzY3JpcHRpb24oImRvcGUi
KTsKKyAgICAgICAgSlNWYWx1ZVJlZiBzeW1ib2wgPSBKU1ZhbHVlTWFrZVN5bWJvbChjb250ZXh0
LCBkZXNjcmlwdGlvbik7CisgICAgICAgIGNoZWNrKGZ1bmN0aW9uUmV0dXJuc1RydWUoaXNTeW1i
b2xGdW5jdGlvbiwgc3ltYm9sKSwgIkpTVmFsdWVNYWtlU3ltYm9sIG1ha2VzIGEgc3ltYm9sIHZh
bHVlIik7CisgICAgfQorCisgICAgeworICAgICAgICBhdXRvIG9iamVjdHMgPSBpbnRlcmVzdGlu
Z09iamVjdHMoKTsKKyAgICAgICAgYXV0byBrZXlzID0gaW50ZXJlc3RpbmdLZXlzKCk7CisKKyAg
ICAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBvYmplY3RzKSB7CisgICAgICAgICAgICBkYXRhTG9n
TG4oIlxubmV4dCBvYmplY3Q6ICIsIGJpdHdpc2VfY2FzdDxKU0M6OkpTVmFsdWU+KG9iamVjdCkp
OworICAgICAgICAgICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzKSB7CisgICAgICAgICAgICAgICAg
ZGF0YUxvZ0xuKCJVc2luZyBrZXk6ICIsIGJpdHdpc2VfY2FzdDxKU0M6OkpTVmFsdWU+KGtleSkp
OworICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAg
ICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oZ2V0
RnVuY3Rpb24sIG9iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgWyZdIChKU1Zh
bHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09i
amVjdEdldFByb3BlcnR5S2V5KGNvbnRleHQsIG9iamVjdCwga2V5LCBleGNlcHRpb24pOworICAg
ICAgICAgICAgICAgICAgICB9LCAiY2hlY2tpbmcgZ2V0IHByb3BlcnR5IGtleXMiKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0byBqc09iamVj
dHMgPSBpbnRlcmVzdGluZ09iamVjdHMoKTsKKyAgICAgICAgYXV0byBhcGlPYmplY3RzID0gaW50
ZXJlc3RpbmdPYmplY3RzKCk7CisgICAgICAgIGF1dG8ga2V5cyA9IGludGVyZXN0aW5nS2V5cygp
OworCisgICAgICAgIEpTVmFsdWVSZWYgdGhlQW5zd2VyID0gSlNWYWx1ZU1ha2VOdW1iZXIoY29u
dGV4dCwgNDIpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpzT2JqZWN0cy5zaXpl
KCk7IGkrKykgeworICAgICAgICAgICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzKSB7CisgICAgICAg
ICAgICAgICAgSlNPYmplY3RSZWYganNPYmplY3QgPSBqc09iamVjdHNbaV07CisgICAgICAgICAg
ICAgICAgSlNPYmplY3RSZWYgYXBpT2JqZWN0ID0gYXBpT2JqZWN0c1tpXTsKKyAgICAgICAgICAg
ICAgICBjaGVja0pTQW5kQVBJTWF0Y2goCisgICAgICAgICAgICAgICAgICAgIFsmXSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbEZ1bmN0aW9uKHNldEZ1bmN0aW9uLCBqc09i
amVjdCwga2V5LCB0aGVBbnN3ZXIpOworICAgICAgICAgICAgICAgICAgICB9ICwgWyZdIChKU1Zh
bHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0U2V0
UHJvcGVydHlLZXkoY29udGV4dCwgYXBpT2JqZWN0LCBrZXksIHRoZUFuc3dlciwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVOb25lLCBleGNlcHRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworICAgICAgICAgICAgICAgICAgICB9
LCAic2V0dGluZyBwcm9wZXJ0eSBrZXlzIHRvIHRoZSBhbnN3ZXIiKTsKKyAgICAgICAgICAgICAg
ICAvLyBDaGVjayBnZXQgaXMgdGhlIHNhbWUgb24gQVBJIG9iamVjdC4KKyAgICAgICAgICAgICAg
ICBjaGVja0pTQW5kQVBJTWF0Y2goCisgICAgICAgICAgICAgICAgICAgIFsmXSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbEZ1bmN0aW9uKGdldEZ1bmN0aW9uLCBhcGlPYmpl
Y3QsIGtleSk7CisgICAgICAgICAgICAgICAgICAgIH0sIFsmXSAoSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPYmplY3RHZXRQcm9wZXJ0
eUtleShjb250ZXh0LCBhcGlPYmplY3QsIGtleSwgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAg
ICAgICAgfSwgImdldHRpbmcgcHJvcGVydHkga2V5cyBmcm9tIEFQSSBvYmplY3RzIik7CisgICAg
ICAgICAgICAgICAgLy8gQ2hlY2sgZ2V0IGlzIHRoZSBzYW1lIG9uIHJlc3BlY3RpdmUgb2JqZWN0
cy4KKyAgICAgICAgICAgICAgICBjaGVja0pTQW5kQVBJTWF0Y2goCisgICAgICAgICAgICAgICAg
ICAgIFsmXSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbEZ1bmN0aW9uKGdl
dEZ1bmN0aW9uLCBqc09iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgWyZdIChK
U1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBK
U09iamVjdEdldFByb3BlcnR5S2V5KGNvbnRleHQsIGFwaU9iamVjdCwga2V5LCBleGNlcHRpb24p
OworICAgICAgICAgICAgICAgICAgICB9LCAiZ2V0dGluZyBwcm9wZXJ0eSBrZXlzIGZyb20gcmVz
cGVjdGl2ZSBvYmplY3RzIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICB7CisgICAgICAgIGF1dG8gb2JqZWN0cyA9IGludGVyZXN0aW5nT2JqZWN0cygpOworICAgICAg
ICBhdXRvIGtleXMgPSBpbnRlcmVzdGluZ0tleXMoKTsKKworICAgICAgICBKU1ZhbHVlUmVmIHRo
ZUFuc3dlciA9IEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIDQyKTsKKyAgICAgICAgZm9yIChh
dXRvJiBvYmplY3QgOiBvYmplY3RzKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIlxuTmV4dCBv
YmplY3Q6ICIsIGJpdHdpc2VfY2FzdDxKU0M6OkpTVmFsdWU+KG9iamVjdCkpOworICAgICAgICAg
ICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzKSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJV
c2luZyBrZXk6ICIsIGJpdHdpc2VfY2FzdDxKU0M6OkpTVmFsdWU+KGtleSkpOworICAgICAgICAg
ICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oaGFzRnVuY3Rpb24sIG9i
amVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgWyZdIChKU1ZhbHVlUmVmKiBleGNl
cHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xl
YW4oY29udGV4dCwgSlNPYmplY3RIYXNQcm9wZXJ0eUtleShjb250ZXh0LCBvYmplY3QsIGtleSwg
ZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIH0sICJjaGVja2luZyBoYXMgcHJvcGVy
dHkga2V5cyB1bnNldCIpOworCisgICAgICAgICAgICAgICAgY2hlY2soISFjYWxsRnVuY3Rpb24o
c2V0RnVuY3Rpb24sIG9iamVjdCwga2V5LCB0aGVBbnN3ZXIpLCAic2V0IHByb3BlcnR5IHRvIHRo
ZSBhbnN3ZXIiKTsKKworICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAg
ICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxs
RnVuY3Rpb24oaGFzRnVuY3Rpb24sIG9iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAg
fSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgSlNPYmplY3RIYXNQcm9wZXJ0eUtl
eShjb250ZXh0LCBvYmplY3QsIGtleSwgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAg
IH0sICJjaGVja2luZyBoYXMgcHJvcGVydHkga2V5cyBzZXQiKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0byBvYmplY3RzID0gaW50ZXJlc3Rp
bmdPYmplY3RzKCk7CisgICAgICAgIGF1dG8ga2V5cyA9IGludGVyZXN0aW5nS2V5cygpOworCisg
ICAgICAgIEpTVmFsdWVSZWYgdGhlQW5zd2VyID0gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwg
NDIpOworICAgICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IG9iamVjdHMpIHsKKyAgICAgICAgICAg
IGRhdGFMb2dMbigiXG5OZXh0IG9iamVjdDogIiwgYml0d2lzZV9jYXN0PEpTQzo6SlNWYWx1ZT4o
b2JqZWN0KSk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGtleSA6IGtleXMpIHsKKyAgICAgICAg
ICAgICAgICBkYXRhTG9nTG4oIlVzaW5nIGtleTogIiwgYml0d2lzZV9jYXN0PEpTQzo6SlNWYWx1
ZT4oa2V5KSk7CisgICAgICAgICAgICAgICAgY2hlY2tKU0FuZEFQSU1hdGNoKAorICAgICAgICAg
ICAgICAgICAgICBbJl0geworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxGdW5j
dGlvbihkZWxldGVGdW5jdGlvbiwgb2JqZWN0LCBrZXkpOworICAgICAgICAgICAgICAgICAgICB9
LCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCBKU09iamVjdERlbGV0ZVByb3BlcnR5
S2V5KGNvbnRleHQsIG9iamVjdCwga2V5LCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAg
ICAgfSwgImNoZWNraW5nIGhhcyBwcm9wZXJ0eSBrZXlzIHVuc2V0Iik7CisKKyAgICAgICAgICAg
ICAgICBjaGVjayghIWNhbGxGdW5jdGlvbihzZXRGdW5jdGlvbiwgb2JqZWN0LCBrZXksIHRoZUFu
c3dlciksICJzZXQgcHJvcGVydHkgdG8gdGhlIGFuc3dlciIpOworCisgICAgICAgICAgICAgICAg
Y2hlY2tKU0FuZEFQSU1hdGNoKAorICAgICAgICAgICAgICAgICAgICBbJl0geworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxGdW5jdGlvbihkZWxldGVGdW5jdGlvbiwgb2JqZWN0
LCBrZXkpOworICAgICAgICAgICAgICAgICAgICB9LCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihj
b250ZXh0LCBKU09iamVjdERlbGV0ZVByb3BlcnR5S2V5KGNvbnRleHQsIG9iamVjdCwga2V5LCBl
eGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgfSwgImNoZWNraW5nIGhhcyBwcm9wZXJ0
eSBrZXlzIHNldCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgZGF0
YUxvZ0xuKCJDLUFQSSB0ZXN0cyBpbiBDKysgaGFkICIsIGZhaWxlZCwgIiBmYWlsdXJlcyIpOwor
ICAgIHJldHVybiBmYWlsZWQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL3Rlc3RhcGkubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rl
c3RhcGkubW0KaW5kZXggZTk4ZDZjZjVkZGJjZTE3OGUwMGM5ZGRiMGU1MGVjZTNhZTNkNjE3YS4u
N2NhOTdhZmRjMTdkM2JkNzVjZDJiZTQ3NWFiNTNkZTE3YjgxMTMyYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQpAQCAtMjMsNiArMjMsNyBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCisjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmg+CiAKICNpbXBvcnQgIkN1cnJlbnRUaGlzSW5zaWRlQmxvY2tH
ZXR0ZXJUZXN0LmgiCkBAIC01ODMsNiArNTg0LDY3IEBAIHN0YXRpYyB2b2lkIHRlc3RPYmplY3Rp
dmVDQVBJTWFpbigpCiAgICAgfQogCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpT
Q29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNW
YWx1ZSAqc3ltYm9sID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJTeW1ib2woJ2RvcGUnKTsi
XTsKKyAgICAgICAgSlNWYWx1ZSAqbm90U3ltYm9sID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6
QCInZG9wZSciXTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJTaG91bGQgYmUgYSBzeW1ib2wgdmFs
dWUiLCBzeW1ib2wuaXNTeW1ib2wpOworICAgICAgICBjaGVja1Jlc3VsdChAIlNob3VsZCBub3Qg
YmUgYSBzeW1ib2wgdmFsdWUiLCAhbm90U3ltYm9sLmlzU3ltYm9sKTsKKyAgICB9CisKKyAgICBA
YXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRl
eHQgYWxsb2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICpzeW1ib2wgPSBbSlNWYWx1ZSB2YWx1
ZVdpdGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246QCJkb3BlIiBpbkNvbnRleHQ6Y29udGV4dF07
CisgICAgICAgIGNoZWNrUmVzdWx0KEAiU2hvdWxkIGJlIGEgY3JlYXRlZCBmcm9tIE9iYy1DIiwg
c3ltYm9sLmlzU3ltYm9sKTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAg
ICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAg
ICBKU1ZhbHVlICphcnJheUl0ZXJhdG9yID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJBcnJh
eS5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSJdOworICAgICAgICBKU1ZhbHVlICppdGVyYXRv
clN5bWJvbCA9IGNvbnRleHRbQCJTeW1ib2wiXVtAIml0ZXJhdG9yIl07CisgICAgICAgIEpTVmFs
dWUgKmFycmF5ID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3QXJyYXlJbkNvbnRleHQ6Y29udGV4dF07
CisgICAgICAgIGNoZWNrUmVzdWx0KEAiTG9va2luZyB1cCBieSBzdWJzY3JpcHQgd2l0aCBzeW1i
b2wgc2hvdWxkIHdvcmsiLCBbYXJyYXlbaXRlcmF0b3JTeW1ib2xdIGlzRXF1YWw6YXJyYXlJdGVy
YXRvcl0pOworICAgICAgICBjaGVja1Jlc3VsdChAIkxvb2tpbmcgdXAgYnkgbWV0aG9kIHdpdGgg
c3ltYm9sIHNob3VsZCB3b3JrIiwgW1thcnJheSB2YWx1ZUZvclByb3BlcnR5Oml0ZXJhdG9yU3lt
Ym9sXSBpc0VxdWFsOmFycmF5SXRlcmF0b3JdKTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vw
b29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGlu
aXRdOworICAgICAgICBKU1ZhbHVlICppdGVyYXRvclN5bWJvbCA9IGNvbnRleHRbQCJTeW1ib2wi
XVtAIml0ZXJhdG9yIl07CisgICAgICAgIEpTVmFsdWUgKm9iamVjdCA9IFtKU1ZhbHVlIHZhbHVl
V2l0aE5ld09iamVjdEluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgSlNWYWx1ZSAqdGhlQW5z
d2VyID0gW0pTVmFsdWUgdmFsdWVXaXRoVUludDMyOjQyIGluQ29udGV4dDpjb250ZXh0XTsKKyAg
ICAgICAgb2JqZWN0W2l0ZXJhdG9yU3ltYm9sXSA9IHRoZUFuc3dlcjsKKyAgICAgICAgY2hlY2tS
ZXN1bHQoQCJTZXRpbmcgYnkgc3Vic2NyaXB0IHdpdGggc3ltYm9sIHNob3VsZCB3b3JrIiwgW29i
amVjdFtpdGVyYXRvclN5bWJvbF0gaXNFcXVhbDp0aGVBbnN3ZXJdKTsKKyAgICB9CisKKyAgICBA
YXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRl
eHQgYWxsb2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICppdGVyYXRvclN5bWJvbCA9IGNvbnRl
eHRbQCJTeW1ib2wiXVtAIml0ZXJhdG9yIl07CisgICAgICAgIEpTVmFsdWUgKm9iamVjdCA9IFtK
U1ZhbHVlIHZhbHVlV2l0aE5ld09iamVjdEluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgSlNW
YWx1ZSAqdGhlQW5zd2VyID0gW0pTVmFsdWUgdmFsdWVXaXRoVUludDMyOjQyIGluQ29udGV4dDpj
b250ZXh0XTsKKyAgICAgICAgW29iamVjdCBzZXRWYWx1ZTp0aGVBbnN3ZXIgZm9yUHJvcGVydHk6
aXRlcmF0b3JTeW1ib2xdOworICAgICAgICBjaGVja1Jlc3VsdChAIlNldGluZyBieSBtZXRob2Qg
d2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsiLCBbb2JqZWN0W2l0ZXJhdG9yU3ltYm9sXSBpc0VxdWFs
OnRoZUFuc3dlcl0pOworICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBK
U0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpT
VmFsdWUgKml0ZXJhdG9yU3ltYm9sID0gY29udGV4dFtAIlN5bWJvbCJdW0AiaXRlcmF0b3IiXTsK
KyAgICAgICAgSlNWYWx1ZSAqb2JqZWN0ID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3T2JqZWN0SW5D
b250ZXh0OmNvbnRleHRdOworICAgICAgICBKU1ZhbHVlICp0aGVBbnN3ZXIgPSBbSlNWYWx1ZSB2
YWx1ZVdpdGhVSW50MzI6NDIgaW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBvYmplY3RbaXRl
cmF0b3JTeW1ib2xdID0gdGhlQW5zd2VyOworICAgICAgICBjaGVja1Jlc3VsdChAImhhcyBwcm9w
ZXJ0eSB3aXRoIHN5bWJvbCBzaG91bGQgd29yayIsIFtvYmplY3QgaGFzUHJvcGVydHk6aXRlcmF0
b3JTeW1ib2xdKTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlND
b250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICBKU1Zh
bHVlICppdGVyYXRvclN5bWJvbCA9IGNvbnRleHRbQCJTeW1ib2wiXVtAIml0ZXJhdG9yIl07Cisg
ICAgICAgIEpTVmFsdWUgKm9iamVjdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld09iamVjdEluQ29u
dGV4dDpjb250ZXh0XTsKKyAgICAgICAgSlNWYWx1ZSAqdGhlQW5zd2VyID0gW0pTVmFsdWUgdmFs
dWVXaXRoVUludDMyOjQyIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgY2hlY2tSZXN1bHQo
QCJkZWxldGUgcHJvcGVydHkgd2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsgd2l0aG91dCBwcm9wZXJ0
eSIsIFtvYmplY3QgZGVsZXRlUHJvcGVydHk6aXRlcmF0b3JTeW1ib2xdKTsKKyAgICAgICAgb2Jq
ZWN0W2l0ZXJhdG9yU3ltYm9sXSA9IHRoZUFuc3dlcjsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJk
ZWxldGUgcHJvcGVydHkgd2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsgd2l0aCBwcm9wZXJ0eSIsIFtv
YmplY3QgZGVsZXRlUHJvcGVydHk6aXRlcmF0b3JTeW1ib2xdKTsKKyAgICAgICAgY2hlY2tSZXN1
bHQoQCJkZWxldGUgc2hvdWxkIGJlIGZhbHNlIHdpdGggbm9uLWNvbmZpZ3VyYWJsZSBwcm9wZXJ0
eSIsICFbY29udGV4dFtAIkFycmF5Il0gZGVsZXRlUHJvcGVydHk6QCJwcm90b3R5cGUiXSk7Cisg
ICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgIEpTQ29sbGVjdGlvbiogbXlQ
cml2YXRlUHJvcGVydGllcyA9IFtbSlNDb2xsZWN0aW9uIGFsbG9jXSBpbml0XTsKIAogICAgICAg
ICBAYXV0b3JlbGVhc2Vwb29sIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2Rm
NjIyYzMzYTY2YjM3NWQwNGViMzQ3N2ExYjExMGRhNTYzNjdjNi4uOWZhYzFkMDY2NmQ3YTRlMDFl
ZWZlNTVkNTZhNThiZGZkNjRjMTBlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTEzNjcsNiArMTM2Nyw3IEBACiAJCTUzMTFCRDRCMUVBNTgxRTUwMDUyNTI4MSAvKiBXYXNtT01H
UGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMx
MUJENDkxRUE1ODFFNTAwNTI1MjgxIC8qIFdhc21PTUdQbGFuLmggKi87IH07CiAJCTUzMTM3NEJE
MUQ1Q0U2NzYwMEFGN0EwQiAvKiBXYXNtUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxMzc0QkMxRDVDRTY3NjAwQUY3QTBCIC8qIFdhc21QbGFu
LmggKi87IH07CiAJCTUzMTM3NEJGMUQ1Q0U5NTAwMEFGN0EwQiAvKiBXYXNtUGxhbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzEzNzRCRTFENUNF
OTUwMDBBRjdBMEIgLyogV2FzbVBsYW4uY3BwICovOyB9OworCQk1MzFENEUxRDFGNTlEODg5MDBF
QzgzNkMgLyogdGVzdGFwaS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MzFENEUxOTFGNTlDREQyMDBFQzgzNkMgLyogdGVzdGFwaS5jcHAgKi87IH07
CiAJCTUzM0IxNURGMURDN0Y0NjMwMDRENTAwQSAvKiBXYXNtT3BzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzNCMTVERTFEQzdGNDYzMDA0RDUwMEEg
LyogV2FzbU9wcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUzNDFGQzcwMURBQzMzRTUwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDFG
QzZGMURBQzMzRTUwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcCAqLzsgfTsK
IAkJNTM0MUZDNzIxREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDFGQzcxMURB
QzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggKi87IH07CkBAIC0zOTQ3
LDYgKzM5NDgsNyBAQAogCQk1MzExQkQ0OTFFQTU4MUU1MDA1MjUyODEgLyogV2FzbU9NR1BsYW4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbU9NR1BsYW4uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxMzc0QkMxRDVDRTY3NjAwQUY3QTBCIC8qIFdhc21Q
bGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21QbGFuLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMTM3NEJFMUQ1Q0U5NTAwMEFGN0EwQiAvKiBXYXNt
UGxhbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtUGxhbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzMUQ0RTE5MUY1OUNERDIwMEVDODM2
QyAvKiB0ZXN0YXBpLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHRlc3RhcGkuY3BwOyBwYXRoID0g
QVBJL3Rlc3RzL3Rlc3RhcGkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzNC
MTVERTFEQzdGNDYzMDA0RDUwMEEgLyogV2FzbU9wcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXYXNtT3BzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDFG
QzZGMURBQzMzRTUwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3Bw
OyBwYXRoID0gYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUzNDFGQzcxMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVj
a1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzV2FzbUJvdW5kc0No
ZWNrVmFsdWUuaDsgcGF0aCA9IGIzL0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM5NzcsNyArMzk3OSw2IEBACiAJCTUzOTE3RTdBMUI3OTA2
RTQwMDBFQkQzMyAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZUZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Mzkx
N0U3QzFCNzkxMTA2MDAwRUJEMzMgLyogSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzOTE3RTgzMUI3OTFDQjgwMDBFQkQzMyAv
KiBUeXBlZEFycmF5UHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBuYW1lID0gVHlwZWRBcnJheVByb3RvdHlwZS5qczsgcGF0aCA9IGJ1aWx0aW5zL1R5cGVkQXJy
YXlQcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKLQkJNTM5RUIwNzEx
RDU1M0RGODAwQzgyRUY3IC8qIHRlc3RXYXNtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IHRlc3RXYXNtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTM5RkI4QjkxQzk5REE3QzAwOTQwRkExIC8qIEpTQXJyYXlJbmxpbmVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXJyYXlJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUzQjBCRTMzMUU1NjFBQzkwMEE4RkMyOSAvKiBHZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdldHRlclNl
dHRlckFjY2Vzc0Nhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0IwQkUz
NTFFNTYxQjA5MDBBOEZDMjkgLyogUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm94eWFibGVBY2Nlc3NDYXNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU4OTUsMTAgKzU4OTYsMTAgQEAKIAkJCQlGRUI1MUY2
QjFBOTdCNjg4MDAxRjkyMUMgLyogUmVncmVzczE0MTgwOS5tbSAqLywKIAkJCQlGRUNCOEIyOTFE
MjVDQUJCMDA2RjI0NjMgLyogdGVzdGFwaS1mdW5jdGlvbi1vdmVycmlkZXMuanMgKi8sCiAJCQkJ
MTRCRDVBMkQwQTNFOTFGNjAwQkFGNTlDIC8qIHRlc3RhcGkuYyAqLywKKwkJCQk1MzFENEUxOTFG
NTlDREQyMDBFQzgzNkMgLyogdGVzdGFwaS5jcHAgKi8sCiAJCQkJMTREODU3NzQwQTQ2OTZDODAw
MzIxNDZDIC8qIHRlc3RhcGkuanMgKi8sCiAJCQkJODZEMjIyMTkxNjdFRjk0NDAwMjRDODA0IC8q
IHRlc3RhcGkubW0gKi8sCiAJCQkJNjUxMTIyRTUxNDA0NjlCQTAwMkIxMDFEIC8qIHRlc3RSZWdF
eHAuY3BwICovLAotCQkJCTUzOUVCMDcxMUQ1NTNERjgwMEM4MkVGNyAvKiB0ZXN0V2FzbS5jcHAg
Ki8sCiAJCQkJNTM0OTAyODIxQzcyNDJDODAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAg
Ki8sCiAJCQkJNTM0OTAyODMxQzcyNDJDODAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5oICov
LAogCQkJKTsKQEAgLTEwMjA1LDYgKzEwMjA2LDcgQEAKIAkJCQk2NTU3MEY1QTFBQTRDM0VBMDA5
QjNDMjMgLyogUmVncmVzczE0MTI3NS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUZFQjUxRjZDMUE5
N0I2ODgwMDFGOTIxQyAvKiBSZWdyZXNzMTQxODA5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0
MEY2MTAwQTRGODU2NzAwMDVGMDYxIC8qIHRlc3RhcGkuYyBpbiBTb3VyY2VzICovLAorCQkJCTUz
MUQ0RTFEMUY1OUQ4ODkwMEVDODM2QyAvKiB0ZXN0YXBpLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTg2RDIyMjFBMTY3RUY5NDQwMDI0QzgwNCAvKiB0ZXN0YXBpLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTM0OTAyODUxQzcyNzZCNzAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320091</attachid>
            <date>2017-09-06 19:05:44 -0700</date>
            <delta_ts>2017-09-07 15:55:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175836-20170906190542.patch</filename>
            <type>text/plain</type>
            <size>56674</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
OTgyNTA3OTliYTFhNWE4YmZiMjc3MjlmMzM5ZjI3MWIzNGNiMjFlLi44M2JlMjcyYjNkNjdiOGQ0
MDc1NDhmYWEzMjJhMWQ5MjFhYmRhMzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OSBAQAorMjAxNy0wOS0wNiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDIEFQSV0gV2Ugc2hvdWxkIHN1cHBvcnQgdGhlIHN5bWJvbCB0
eXBlIGluIG91ciBDL09iai1DIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1ODM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRm9yIHdoYXRldmVyIHJlYXNvbiwgd2hlbmV2ZXIgd2UgYWRkZWQgc3Vw
cG9ydCBmb3Igc3ltYm9scyBpbiBKU0Mgd2UgbmV2ZXIgZXh0ZW5kZWQgc3VjaAorICAgICAgICBz
dXBwb3J0IHRvIG91ciBDL09iai1DIEFQSXMuIFRoaXMgcGF0Y2ggcmVtZWRpZXMgdGhhdCBwcm9i
bGVtLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIGZvbGxvd2luZyBBUEkgYWRkaXRp
b25zOgorICAgICAgICAxKSBUZXN0IGlmIGEgSlNWYWx1ZS9KU1ZhbHVlUmVmIGlzIGEgc3ltYm9s
IHZpYSBhbnkgb2YgdGhlIG1ldGhvZHMgQVBJIGFyZSBhYmxlIHRvIHRlc3QgZm9yIHRoZSB0eXBl
cyBvZiBvdGhlciBKU1ZhbHVlcy4KKyAgICAgICAgMikgQ3JlYXRlIGEgc3ltYm9sIG9uIGJvdGgg
QVBJcy4KKyAgICAgICAgMykgR2V0L1NldC9EZWxldGUvRGVmaW5lIHByb3BlcnR5IG5vdyB0YWtl
IGlkcyBpbiB0aGUgT2JqLUMgQVBJLgorICAgICAgICA0KSBBZGQgR2V0L1NldC9EZWxldGUgaW4g
dGhlIEMgQVBJLgorCisgICAgICAgIFdlIGNhbiBkbyAzIGJlY2F1c2UgaXQgaXMgYm90aCBiaW5h
cnkgYW5kIHNvdXJjZSBjb21wYXRhYmxlIHdpdGggdGhlIGV4aXN0aW5nIEFQSS4KKyAgICAgICAg
SSBhZGRlZCB0aGUgNCBhZGRpdGlvbiBiZWNhdXNlIHRoZSBjdXJyZW50IHByb3BlcnR5IGFjY2Vz
cyBBUElzCisgICAgICAgIG9ubHkgaGF2ZSB0aGUgYWJpbGl0eSB0byBnZXQgU3RyaW5ncy4gSXQg
d2FzIHBvc3NpYmxlIHRvIG1lcmdlCisgICAgICAgIHN5bWJvbHMgaW50byBKU1N0cmluZ1JlZiBi
dXQgdGhhdCBmZWx0IGNvbmZ1c2luZyBhbmQgZXhwb3NlcworICAgICAgICBpbXBsZW1lbnRhdGlv
biBkZXRhaWxzIG9mIG91ciBlbmdpbmUuIFRoZSBuZXcgZnVuY3Rpb25zIG1hdGNoIHRoZQorICAg
ICAgICBzYW1lIG1lYW5pbmcgdGhhdCB0aGV5IGhhdmUgaW4gSlMuCisKKyAgICAgICAgKiBBUEkv
SlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3RIYXNQcm9wZXJ0eUtleSk6CisgICAg
ICAgIChKU09iamVjdEdldFByb3BlcnR5S2V5KToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJvcGVy
dHlLZXkpOgorICAgICAgICAoSlNPYmplY3REZWxldGVQcm9wZXJ0eUtleSk6CisgICAgICAgICog
QVBJL0pTT2JqZWN0UmVmLmg6CisgICAgICAgICogQVBJL0pTVmFsdWUuaDoKKyAgICAgICAgKiBB
UEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKCtbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdTeW1ib2xGcm9t
RGVzY3JpcHRpb246aW5Db250ZXh0Ol0pOgorICAgICAgICAocGVyZm9ybVByb3BlcnR5T3BlcmF0
aW9uKToKKyAgICAgICAgKC1bSlNWYWx1ZSB2YWx1ZUZvclByb3BlcnR5OnZhbHVlRm9yUHJvcGVy
dHk6XSk6CisgICAgICAgICgtW0pTVmFsdWUgc2V0VmFsdWU6Zm9yUHJvcGVydHk6c2V0VmFsdWU6
Zm9yUHJvcGVydHk6XSk6CisgICAgICAgICgtW0pTVmFsdWUgZGVsZXRlUHJvcGVydHk6ZGVsZXRl
UHJvcGVydHk6XSk6CisgICAgICAgICgtW0pTVmFsdWUgaGFzUHJvcGVydHk6aGFzUHJvcGVydHk6
XSk6CisgICAgICAgICgtW0pTVmFsdWUgZGVmaW5lUHJvcGVydHk6ZGVzY3JpcHRvcjpkZWZpbmVQ
cm9wZXJ0eTpkZXNjcmlwdG9yOl0pOgorICAgICAgICAoLVtKU1ZhbHVlIGlzU3ltYm9sXSk6Cisg
ICAgICAgICgtW0pTVmFsdWUgb2JqZWN0Rm9yS2V5ZWRTdWJzY3JpcHQ6XSk6CisgICAgICAgICgt
W0pTVmFsdWUgc2V0T2JqZWN0OmZvcktleWVkU3Vic2NyaXB0Ol0pOgorICAgICAgICAoLVtKU1Zh
bHVlIHZhbHVlRm9yUHJvcGVydHk6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmFsdWUgc2V0
VmFsdWU6Zm9yUHJvcGVydHk6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmFsdWUgZGVsZXRl
UHJvcGVydHk6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmFsdWUgaGFzUHJvcGVydHk6XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmFsdWUgZGVmaW5lUHJvcGVydHk6ZGVzY3JpcHRvcjpd
KTogRGVsZXRlZC4KKyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5jcHA6CisgICAgICAgIChKU1Zh
bHVlR2V0VHlwZSk6CisgICAgICAgIChKU1ZhbHVlSXNTeW1ib2wpOgorICAgICAgICAoSlNWYWx1
ZU1ha2VTeW1ib2wpOgorICAgICAgICAqIEFQSS9KU1ZhbHVlUmVmLmg6CisgICAgICAgICogQVBJ
L3Rlc3RzL3Rlc3RhcGkuYzoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIEFQSS90ZXN0cy90
ZXN0YXBpLmNwcDogQWRkZWQuCisgICAgICAgIChBUElTdHJpbmc6OkFQSVN0cmluZyk6CisgICAg
ICAgIChBUElTdHJpbmc6On5BUElTdHJpbmcpOgorICAgICAgICAoQVBJU3RyaW5nOjpvcGVyYXRv
ciBKU1N0cmluZ1JlZik6CisgICAgICAgIChBUElDb250ZXh0OjpBUElDb250ZXh0KToKKyAgICAg
ICAgKEFQSUNvbnRleHQ6On5BUElDb250ZXh0KToKKyAgICAgICAgKEFQSUNvbnRleHQ6Om9wZXJh
dG9yIEpTR2xvYmFsQ29udGV4dFJlZik6CisgICAgICAgIChBUElWZWN0b3I6OkFQSVZlY3Rvcik6
CisgICAgICAgIChBUElWZWN0b3I6On5BUElWZWN0b3IpOgorICAgICAgICAoQVBJVmVjdG9yOjph
cHBlbmQpOgorICAgICAgICAodGVzdENBUElWaWFDcHApOgorICAgICAgICAoVGVzdEFQSTo6ZXZh
bHVhdGVTY3JpcHQpOgorICAgICAgICAoVGVzdEFQSTo6Y2FsbEZ1bmN0aW9uKToKKyAgICAgICAg
KFRlc3RBUEk6OmZ1bmN0aW9uUmV0dXJuc1RydWUpOgorICAgICAgICAoVGVzdEFQSTo6Y2hlY2sp
OgorICAgICAgICAoVGVzdEFQSTo6Y2hlY2tKU0FuZEFQSU1hdGNoKToKKyAgICAgICAgKFRlc3RB
UEk6OmludGVyZXN0aW5nT2JqZWN0cyk6CisgICAgICAgIChUZXN0QVBJOjppbnRlcmVzdGluZ0tl
eXMpOgorICAgICAgICAoVGVzdEFQSTo6cnVuKToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFw
aS5tbToKKyAgICAgICAgKHRlc3RPYmplY3RpdmVDQVBJTWFpbik6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNy0wOS0wNSAgU2FhbSBC
YXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBpc05vdENlbGxTcGVjdWxhdGlv
biBpcyB3cm9uZyB3aXRoIHJlc3BlY3QgdG8gU3BlY0VtcHR5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IGNlMzdjYzY5MGY2NWYwNzAyM2Q3ZWVhYzMxNmJm
MzEyYzcyMWIyYjcuLjAwNjY2MzlkOWQzMDEyMjM1MTBmOGE1MzQ4OWI4ZGNkZWQxNzNhMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCkBAIC0zMzMsNiArMzMz
LDk0IEBAIHZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVj
dFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlCiAgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVk
ZWQoZXhlYywgZXhjZXB0aW9uKTsKIH0KIAorYm9vbCBKU09iamVjdEhhc1Byb3BlcnR5S2V5KEpT
Q29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoIWN0eCkgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBFeGVjU3RhdGUq
IGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKworICAg
IEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAgICBJZGVudGlmaWVyIGlkZW50
ID0gdG9KUyhleGVjLCBrZXkpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4
Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRU
aHJvdykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCByZXN1bHQgPSBqc09iamVj
dC0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpOworICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVk
KGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSlNWYWx1ZVJlZiBK
U09iamVjdEdldFByb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVj
dCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoIWN0
eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBKU0xvY2tI
b2xkZXIgbG9ja2VyKGV4ZWMpOworCisgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmpl
Y3QpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSB0b0pTKGV4ZWMsIGtleSkudG9Qcm9wZXJ0eUtl
eShleGVjKTsKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoZXhlYywgZXhjZXB0aW9u
KSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIEpTVmFsdWUganNWYWx1ZSA9IGpzT2JqZWN0LT5nZXQoZXhlYywgaWRlbnQpOworICAg
IGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHRv
UmVmKGV4ZWMsIGpzVmFsdWUpOworfQorCit2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHlLZXkoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIGtleSwgSlNWYWx1
ZVJlZiB2YWx1ZSwgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMo
Y3R4KTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIo
dm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKworICAgIEpT
T2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0
b0pTKGV4ZWMsIHZhbHVlKTsKKworICAgIElkZW50aWZpZXIgaWRlbnQgPSB0b0pTKGV4ZWMsIGtl
eSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQo
ZXhlYywgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBib29sIGRvZXNOb3RIYXZlUHJvcGVydHkgPSBhdHRyaWJ1dGVzICYmICFq
c09iamVjdC0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpOworICAgIGlmIChMSUtFTFkoIXNjb3Bl
LmV4Y2VwdGlvbigpKSkgeworICAgICAgICBpZiAoZG9lc05vdEhhdmVQcm9wZXJ0eSkgeworICAg
ICAgICAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2MoanNWYWx1ZSwgYXR0cmlidXRlcyk7Cisg
ICAgICAgICAgICBqc09iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVydHkoanNP
YmplY3QsIGV4ZWMsIGlkZW50LCBkZXNjLCBmYWxzZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChqc09iamVjdCk7CisgICAgICAgICAgICBqc09i
amVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KGpzT2JqZWN0LCBleGVjLCBpZGVudCwganNWYWx1ZSwg
c2xvdCk7CisgICAgICAgIH0KKyAgICB9CisgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoZXhl
YywgZXhjZXB0aW9uKTsKK30KKworYm9vbCBKU09iamVjdERlbGV0ZVByb3BlcnR5S2V5KEpTQ29u
dGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoIWN0eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBFeGVjU3RhdGUqIGV4
ZWMgPSB0b0pTKGN0eCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKworICAgIEpT
T2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0g
dG9KUyhleGVjLCBrZXkpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4Y2Vw
dGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJv
dykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+
bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoanNPYmplY3QsIGV4ZWMsIGlkZW50KTsKKyAg
ICBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChleGVjLCBleGNlcHRpb24pOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoSlNDb250
ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgaWYgKCFjdHgpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNPYmplY3RSZWYuaAppbmRleCA5NWQ1M2I3ZjRlNThlOTZmMGNiYzMxNTk1YWY5
YzQ2MTk3OGFhNDNkLi5mMmE2ZWVjZjVlNzVkMjJhMTBkYWE3ZjdmNzQ1ZDM0ZmYyOTY2MDJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oCkBAIC01MzYsOSArNTM2LDkg
QEAgSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9wZXJ0eShKU0NvbnRleHRSZWYg
Y3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEoKIEBwYXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250
ZXh0IHRvIHVzZS4KIEBwYXJhbSBvYmplY3QgVGhlIEpTT2JqZWN0IHdob3NlIHByb3BlcnR5IHlv
dSB3YW50IHRvIHNldC4KIEBwYXJhbSBwcm9wZXJ0eU5hbWUgQSBKU1N0cmluZyBjb250YWluaW5n
IHRoZSBwcm9wZXJ0eSdzIG5hbWUuCi1AcGFyYW0gdmFsdWUgQSBKU1ZhbHVlIHRvIHVzZSBhcyB0
aGUgcHJvcGVydHkncyB2YWx1ZS4KLUBwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNW
YWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxM
IGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCitAcGFyYW0gdmFsdWUg
QSBKU1ZhbHVlUmVmIHRvIHVzZSBhcyB0aGUgcHJvcGVydHkncyB2YWx1ZS4KIEBwYXJhbSBhdHRy
aWJ1dGVzIEEgbG9naWNhbGx5IE9SZWQgc2V0IG9mIEpTUHJvcGVydHlBdHRyaWJ1dGVzIHRvIGdp
dmUgdG8gdGhlIHByb3BlcnR5LgorQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1Zh
bHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwg
aWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICovCiBKU19FWFBPUlQg
dm9pZCBKU09iamVjdFNldFByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9i
amVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1Byb3Bl
cnR5QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCkBAIC01
NTUsNiArNTU1LDU0IEBAIEpTX0VYUE9SVCBib29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHkoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0CiAKIC8qIQogQGZ1bmN0aW9u
CitAYWJzdHJhY3QgVGVzdHMgd2hldGhlciBhbiBvYmplY3QgaGFzIGEgZ2l2ZW4gcHJvcGVydHkg
dXNpbmcgYSBKU1ZhbHVlUmVmIGFzIHRoZSBwcm9wZXJ0eSBrZXkuCitAcGFyYW0gb2JqZWN0IFRo
ZSBKU09iamVjdCB0byB0ZXN0LgorQHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250
YWluaW5nIHRoZSBwcm9wZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVy
dHkuCitAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2gg
dG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNh
cmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgorQHJlc3VsdCB0cnVlIGlmIHRoZSBvYmplY3QgaGFz
IGEgcHJvcGVydHkgd2hvc2UgbmFtZSBtYXRjaGVzIHByb3BlcnR5S2V5LCBvdGhlcndpc2UgZmFs
c2UuCitAZGlzY3Vzc2lvbiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHBlcmZvcm1pbmcg
InByb3BlcnR5S2V5IGluIG9iamVjdCIgZnJvbSBKYXZhU2NyaXB0LgorKi8KK0pTX0VYUE9SVCBi
b29sIEpTT2JqZWN0SGFzUHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYg
b2JqZWN0LCBKU1ZhbHVlUmVmIHByb3BlcnR5S2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENG
X0FWQUlMQUJMRSgxMF8xMywgMTFfMCk7CisKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgR2V0
cyBhIHByb3BlcnR5IGZyb20gYW4gb2JqZWN0IHVzaW5nIGEgSlNWYWx1ZVJlZiBhcyB0aGUgcHJv
cGVydHkga2V5LgorQHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgorQHBh
cmFtIG9iamVjdCBUaGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQgdG8gZ2V0Lgor
QHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBwcm9wZXJ0eSBr
ZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0gZXhjZXB0aW9u
IEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9u
LCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0
aW9uLgorQHJlc3VsdCBUaGUgcHJvcGVydHkncyB2YWx1ZSBpZiBvYmplY3QgaGFzIHRoZSBwcm9w
ZXJ0eSBrZXksIG90aGVyd2lzZSB0aGUgdW5kZWZpbmVkIHZhbHVlLgorQGRpc2N1c3Npb24gVGhp
cyBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyBwZXJmb3JtaW5nICJvYmplY3RbcHJvcGVydHlLZXld
IiBmcm9tIEphdmFTY3JpcHQuCisqLworSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQ
cm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVS
ZWYgcHJvcGVydHlLZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEz
LCAxMV8wKTsKKworLyohCitAZnVuY3Rpb24KK0BhYnN0cmFjdCBTZXRzIGEgcHJvcGVydHkgb24g
YW4gb2JqZWN0IHVzaW5nIGEgSlNWYWx1ZVJlZiBhcyB0aGUgcHJvcGVydHkga2V5LgorQHBhcmFt
IGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgorQHBhcmFtIG9iamVjdCBUaGUgSlNP
YmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQgdG8gc2V0LgorQHBhcmFtIHByb3BlcnR5S2V5
IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBwcm9wZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9v
a2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0gdmFsdWUgQSBKU1ZhbHVlUmVmIHRvIHVzZSBh
cyB0aGUgcHJvcGVydHkncyB2YWx1ZS4KK0BwYXJhbSBhdHRyaWJ1dGVzIEEgbG9naWNhbGx5IE9S
ZWQgc2V0IG9mIEpTUHJvcGVydHlBdHRyaWJ1dGVzIHRvIGdpdmUgdG8gdGhlIHByb3BlcnR5Lgor
QHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0
b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRv
IHN0b3JlIGFuIGV4Y2VwdGlvbi4KK0BkaXNjdXNzaW9uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNh
bWUgYXMgcGVyZm9ybWluZyAib2JqZWN0W3Byb3BlcnR5S2V5XSA9IHZhbHVlIiBmcm9tIEphdmFT
Y3JpcHQuCisqLworSlNfRVhQT1JUIHZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eUtleShKU0NvbnRl
eHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYgcHJvcGVydHlLZXksIEpT
VmFsdWVSZWYgdmFsdWUsIEpTUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEzLCAxMV8wKTsKKworLyohCitAZnVuY3Rp
b24KK0BhYnN0cmFjdCBEZWxldGVzIGEgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QgdXNpbmcgYSBK
U1ZhbHVlUmVmIGFzIHRoZSBwcm9wZXJ0eSBrZXkuCitAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24g
Y29udGV4dCB0byB1c2UuCitAcGFyYW0gb2JqZWN0IFRoZSBKU09iamVjdCB3aG9zZSBwcm9wZXJ0
eSB5b3Ugd2FudCB0byBkZWxldGUuCitAcGFyYW0gcHJvcGVydHlLZXkgQSBKU1ZhbHVlUmVmIGNv
bnRhaW5pbmcgdGhlIHByb3BlcnR5IGtleSB0byB1c2Ugd2hlbiBsb29raW5nIHVwIHRoZSBwcm9w
ZXJ0eS4KK0BwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGlj
aCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3Qg
Y2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCitAcmVzdWx0IHRydWUgaWYgdGhlIGRlbGV0ZSBv
cGVyYXRpb24gc3VjY2VlZHMsIG90aGVyd2lzZSBmYWxzZSAoZm9yIGV4YW1wbGUsIGlmIHRoZSBw
cm9wZXJ0eSBoYXMgdGhlIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSBhdHRyaWJ1dGUg
c2V0KS4KK0BkaXNjdXNzaW9uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXMgcGVyZm9ybWlu
ZyAiZGVsZXRlIG9iamVjdFtwcm9wZXJ0eUtleV0iIGZyb20gSmF2YVNjcmlwdC4KKyovCitKU19F
WFBPUlQgYm9vbCBKU09iamVjdERlbGV0ZVByb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpT
T2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBwcm9wZXJ0eUtleSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTMsIDExXzApOworCisvKiEKK0BmdW5jdGlvbgogQGFi
c3RyYWN0IEdldHMgYSBwcm9wZXJ0eSBmcm9tIGFuIG9iamVjdCBieSBudW1lcmljIGluZGV4Lgog
QHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgogQHBhcmFtIG9iamVjdCBU
aGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQgdG8gZ2V0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWUuaAppbmRleCAxNDEwZGQ3NGExN2Y5NzA3MDZlNDRkZWQyNGNjZDE3MGMz
NDc5YzJlLi5lOTdkMjY0OWZhZGU4NTI0NGM0NzE0M2ViMTIyMDQ0ODY3YzdhNjU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUuaApAQCAtMTQ5LDYgKzE0OSwxNSBAQCBOU19DTEFTU19B
VkFJTEFCTEUoMTBfOSwgN18wKQogKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFVuZGVmaW5lZEluQ29u
dGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKIAogLyohCisgQG1ldGhvZAorIEBhYnN0cmFjdCBD
cmVhdGUgYSBuZXcsIHVuaXF1ZSwgc3ltYm9sIG9iamVjdC4KKyBAcGFyYW0gZGVzY3JpcHRpb24g
VGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBzeW1ib2wgb2JqZWN0IGJlaW5nIGNyZWF0ZWQuCisgQHBh
cmFtIGNvbnRleHQgVGhlIEpTQ29udGV4dCB0byB3aGljaCB0aGUgcmVzdWx0aW5nIEpTVmFsdWUg
YmVsb25ncy4KKyBAcmVzdWx0IFRoZSBKU1ZhbHVlIHJlcHJlc2VudGluZyBhIHVuaXF1ZSBKYXZh
U2NyaXB0IHZhbHVlIHdpdGggdHlwZSBzeW1ib2wuCisgKi8KKysgKEpTVmFsdWUgKil2YWx1ZVdp
dGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246KE5TU3RyaW5nICopZGVzY3JpcHRpb24gaW5Db250
ZXh0OihKU0NvbnRleHQgKiljb250ZXh0IE5TX0FWQUlMQUJMRSgxMF8xMywgMTFfMCk7CisKKy8q
IQogQG1ldGhvZGdyb3VwIENvbnZlcnRpbmcgdG8gT2JqZWN0aXZlLUMgVHlwZXMKIEBkaXNjdXNz
aW9uIFdoZW4gY29udmVydGluZyBiZXR3ZWVuIEphdmFTY3JpcHQgdmFsdWVzIGFuZCBPYmplY3Rp
dmUtQyBvYmplY3RzIGEgY29weSBpcwogIHBlcmZvcm1lZC4gVmFsdWVzIG9mIHR5cGVzIGxpc3Rl
ZCBiZWxvdyBhcmUgY29waWVkIHRvIHRoZSBjb3JyZXNwb25kaW5nCkBAIC0zMDUsNDQgKzMxNCw2
MiBAQCBOU19DTEFTU19BVkFJTEFCTEUoMTBfOSwgN18wKQogLyohCiBAbWV0aG9kZ3JvdXAgQWNj
ZXNzaW5nIFByb3BlcnRpZXMKICovCisKKyNpZiAhKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMw
MCkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQorCiAvKiEKIEBtZXRob2QKIEBh
YnN0cmFjdCBBY2Nlc3MgYSBwcm9wZXJ0eSBvZiBhIEpTVmFsdWUuCiBAcmVzdWx0IFRoZSBKU1Zh
bHVlIGZvciB0aGUgcmVxdWVzdGVkIHByb3BlcnR5IG9yIHRoZSBKU1ZhbHVlIDxjb2RlPnVuZGVm
aW5lZDwvY29kZT4gCiAgaWYgdGhlIHByb3BlcnR5IGRvZXMgbm90IGV4aXN0LgorQGRpc2N1c3Np
b24gQ29ycmVzcG9uZHMgdG8gdGhlIEphdmFTY3JpcHQgb3BlcmF0aW9uIDxjb2RlPm9iamVjdFtw
cm9wZXJ0eV08L2NvZGU+LiBQYXNzIGFuIE5TU3RyaW5nICogdG8gYWNjZXNzIGEgbmFtZWQgcHJv
cGVydHkuIE90aGVyIHZhbGlkIHByb3BlcnRpZXMgaW5jbHVkZSBzeW1ib2xzLCBudW1iZXJzLCBh
bmQgc3RyaW5naWZpYWJsZSBvYmplY3RzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9TMTEgYW5kIGJl
bG93LCAncHJvcGVydHknIHdhcyBhbiBOU1N0cmluZyAqLgogKi8KLS0gKEpTVmFsdWUgKil2YWx1
ZUZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLSAoSlNWYWx1ZSAqKXZhbHVlRm9y
UHJvcGVydHk6KGlkKXByb3BlcnR5OwogCiAvKiEKIEBtZXRob2QKIEBhYnN0cmFjdCBTZXQgYSBw
cm9wZXJ0eSBvbiBhIEpTVmFsdWUuCitAZGlzY3Vzc2lvbiBDb3JyZXNwb25kcyB0byB0aGUgSmF2
YVNjcmlwdCBvcGVyYXRpb24gPGNvZGU+b2JqZWN0W3Byb3BlcnR5XSA9IHZhbHVlPC9jb2RlPi4g
UGFzcyBhbiBOU1N0cmluZyAqIHRvIGFjY2VzcyBhIG5hbWVkIHByb3BlcnR5LiBPdGhlciB2YWxp
ZCBwcm9wZXJ0aWVzIGluY2x1ZGUgc3ltYm9scywgbnVtYmVycywgYW5kIHN0cmluZ2lmaWFibGUg
b2JqZWN0cy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUzExIGFuZCBiZWxvdywgJ3Byb3BlcnR5JyB3
YXMgYW4gTlNTdHJpbmcgKi4KICovCi0tICh2b2lkKXNldFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9w
ZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZv
clByb3BlcnR5OihpZClwcm9wZXJ0eTsKIAogLyohCiBAbWV0aG9kCiBAYWJzdHJhY3QgRGVsZXRl
IGEgcHJvcGVydHkgZnJvbSBhIEpTVmFsdWUuCiBAcmVzdWx0IFlFUyBpZiBkZWxldGlvbiBpcyBz
dWNjZXNzZnVsLCBOTyBvdGhlcndpc2UuCitAZGlzY3Vzc2lvbiBDb3JyZXNwb25kcyB0byB0aGUg
SmF2YVNjcmlwdCBvcGVyYXRpb24gPGNvZGU+ZGVsZXRlIG9iamVjdFtwcm9wZXJ0eV08L2NvZGU+
LiBQYXNzIGFuIE5TU3RyaW5nICogdG8gYWNjZXNzIGEgbmFtZWQgcHJvcGVydHkuIE90aGVyIHZh
bGlkIHByb3BlcnRpZXMgaW5jbHVkZSBzeW1ib2xzLCBudW1iZXJzLCBhbmQgc3RyaW5naWZpYWJs
ZSBvYmplY3RzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9TMTEgYW5kIGJlbG93LCAncHJvcGVydHkn
IHdhcyBhbiBOU1N0cmluZyAqLgogKi8KLS0gKEJPT0wpZGVsZXRlUHJvcGVydHk6KE5TU3RyaW5n
ICopcHJvcGVydHk7CistIChCT09MKWRlbGV0ZVByb3BlcnR5OihpZClwcm9wZXJ0eTsKIAogLyoh
CiBAbWV0aG9kCiBAYWJzdHJhY3QgQ2hlY2sgaWYgYSBKU1ZhbHVlIGhhcyBhIHByb3BlcnR5Lgog
QGRpc2N1c3Npb24gVGhpcyBtZXRob2QgaGFzIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIHRoZSBKYXZh
U2NyaXB0IG9wZXJhdG9yIDxjb2RlPmluPC9jb2RlPi4KIEByZXN1bHQgUmV0dXJucyBZRVMgaWYg
cHJvcGVydHkgaXMgcHJlc2VudCBvbiB0aGUgdmFsdWUuCitAZGlzY3Vzc2lvbiBDb3JyZXNwb25k
cyB0byB0aGUgSmF2YVNjcmlwdCBvcGVyYXRpb24gPGNvZGU+cHJvcGVydHkgaW4gb2JqZWN0PC9j
b2RlPi4gUGFzcyBhbiBOU1N0cmluZyAqIHRvIGFjY2VzcyBhIG5hbWVkIHByb3BlcnR5LiBPdGhl
ciB2YWxpZCBwcm9wZXJ0aWVzIGluY2x1ZGUgc3ltYm9scywgbnVtYmVycywgYW5kIHN0cmluZ2lm
aWFibGUgb2JqZWN0cy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUzExIGFuZCBiZWxvdywgJ3Byb3Bl
cnR5JyB3YXMgYW4gTlNTdHJpbmcgKi4KICovCi0tIChCT09MKWhhc1Byb3BlcnR5OihOU1N0cmlu
ZyAqKXByb3BlcnR5OworLSAoQk9PTCloYXNQcm9wZXJ0eTooaWQpcHJvcGVydHk7CiAKIC8qIQog
QG1ldGhvZAogQGFic3RyYWN0IERlZmluZSBwcm9wZXJ0aWVzIHdpdGggY3VzdG9tIGRlc2NyaXB0
b3JzIG9uIEpTVmFsdWVzLgogQGRpc2N1c3Npb24gVGhpcyBtZXRob2QgbWF5IGJlIHVzZWQgdG8g
Y3JlYXRlIGEgZGF0YSBvciBhY2Nlc3NvciBwcm9wZXJ0eSBvbiBhbiBvYmplY3QuCiAgVGhpcyBt
ZXRob2Qgb3BlcmF0ZXMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBPYmplY3QuZGVmaW5lUHJvcGVy
dHkgbWV0aG9kIGluIHRoZSAKLSBKYXZhU2NyaXB0IGxhbmd1YWdlLgorIEphdmFTY3JpcHQgbGFu
Z3VhZ2UuIFBhc3MgYW4gTlNTdHJpbmcgKiB0byBhY2Nlc3MgYSBuYW1lZCBwcm9wZXJ0eS4gT3Ro
ZXIgdmFsaWQgcHJvcGVydGllcyBpbmNsdWRlIHN5bWJvbHMsIG51bWJlcnMsIGFuZCBzdHJpbmdp
ZmlhYmxlIG9iamVjdHMuIEluIG1hY09TIDEwLjEzIGFuZCBpT1MxMSBhbmQgYmVsb3csICdwcm9w
ZXJ0eScgd2FzIGFuIE5TU3RyaW5nICouCiAqLworLSAodm9pZClkZWZpbmVQcm9wZXJ0eTooaWQp
cHJvcGVydHkgZGVzY3JpcHRvcjooaWQpZGVzY3JpcHRvcjsKKworI2Vsc2UgLy8gIShkZWZpbmVk
KF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPCAxMDEzMDApIHx8IChkZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkK
KworLy8gVGhlc2UgZGVjbGFyYXRpb25zIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aGVuIHRhcmdl
dGluZyBTREtzIGZvciBsZWdhY3kgT1NzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9TMTEgYW5kIGJl
bG93LCAncHJvcGVydHknIHdhcyBhbiBOU1N0cmluZyAqLgorLSAoSlNWYWx1ZSAqKXZhbHVlRm9y
UHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7CistICh2b2lkKXNldFZhbHVlOihpZCl2YWx1
ZSBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKEJPT0wpZGVsZXRlUHJvcGVy
dHk6KE5TU3RyaW5nICopcHJvcGVydHk7CistIChCT09MKWhhc1Byb3BlcnR5OihOU1N0cmluZyAq
KXByb3BlcnR5OwogLSAodm9pZClkZWZpbmVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eSBk
ZXNjcmlwdG9yOihpZClkZXNjcmlwdG9yOwogCisjZW5kaWYgLy8gIShkZWZpbmVkKF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPCAxMDEzMDApIHx8IChkZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
KSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKKwogLyohCiBA
bWV0aG9kCiBAYWJzdHJhY3QgQWNjZXNzIGFuIGluZGV4ZWQgKG51bWVyaWNhbCkgcHJvcGVydHkg
b24gYSBKU1ZhbHVlLgpAQCAtNDAzLDYgKzQzMCwxMiBAQCBOU19DTEFTU19BVkFJTEFCTEUoMTBf
OSwgN18wKQogQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBpc09iamVjdDsKIAogLyohCisgQHBy
b3BlcnR5CisgQGFic3RyYWN0IENoZWNrIGlmIGEgSlNWYWx1ZSBpcyBhIHN5bWJvbC4KKyAqLwor
QHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBpc1N5bWJvbCBOU19BVkFJTEFCTEUoMTBfMTMsIDEx
XzApOworCisvKiEKIEBwcm9wZXJ0eQogQGFic3RyYWN0IENoZWNrIGlmIGEgSlNWYWx1ZSBpcyBh
biBhcnJheS4KICovIApAQCAtNTY5LDEzICs2MDIsMTYgQEAgQ3JlYXRlIGEgSlNWYWx1ZSBmcm9t
IGEgQ0dSZWN0LgogQC90ZXh0YmxvY2sKIAogIEFuIG9iamVjdCBrZXkgcGFzc2VkIGFzIGEgc3Vi
c2NyaXB0IHdpbGwgYmUgY29udmVydGVkIHRvIGEgSmF2YVNjcmlwdCB2YWx1ZSwKLSBhbmQgdGhl
biB0aGUgdmFsdWUgY29udmVydGVkIHRvIGEgc3RyaW5nIHVzZWQgYXMgYSBwcm9wZXJ0eSBuYW1l
LgorIGFuZCB0aGVuIHRoZSB2YWx1ZSBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcgdXNlZCBhcyBhIHBy
b3BlcnR5IG5hbWUuIEluIG1hY09TCisgMTAuMTMgYW5kIGlPUzExIGFuZCBiZWxvdywgdGhlIDxj
b2RlPmtleTwvY29kZT4gYXJndW1lbnQgb2YKKyA8Y29kZT5zZXRPYmplY3Q6b2JqZWN0IGZvcktl
eWVkU3Vic2NyaXB0OmtleTwvY29kZT4gd2FzIGFuIHJlc3RyaWN0ZWQgdG8KKyA8Y29kZT5OU1N0
cmluZyA8TlNDb3B5aW5nPiAqPC9jb2RlPiBidXQgdGhhdCByZXN0cmljdGlvbiB3YXMgbmV2ZXIg
dXNlZC4KICovCiBAaW50ZXJmYWNlIEpTVmFsdWUgKFN1YnNjcmlwdFN1cHBvcnQpCiAKIC0gKEpT
VmFsdWUgKilvYmplY3RGb3JLZXllZFN1YnNjcmlwdDooaWQpa2V5OwogLSAoSlNWYWx1ZSAqKW9i
amVjdEF0SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRleDsKLS0gKHZvaWQpc2V0T2Jq
ZWN0OihpZClvYmplY3QgZm9yS2V5ZWRTdWJzY3JpcHQ6KE5TT2JqZWN0IDxOU0NvcHlpbmc+ICop
a2V5OworLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBmb3JLZXllZFN1YnNjcmlwdDooaWQp
a2V5OwogLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBhdEluZGV4ZWRTdWJzY3JpcHQ6KE5T
VUludGVnZXIpaW5kZXg7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNWYWx1ZS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQpp
bmRleCA2OTg2ZmFlODMxZTJlY2M2ZWJjMmJlZGFlNGU2OGFjMjJmNTc4ZTgwLi5lMjgzMDM2NjM5
ZTUyYjFjMjJmZGQzNmIwYjEyNGU0MDBkZDAxZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmFsdWUubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1ZhbHVlLm1tCkBAIC0zOSw2ICszOSw3IEBACiAjaW1wb3J0ICJKU0NKU1ZhbHVlLmgiCiAjaW1w
b3J0ICJTdHJvbmcuaCIKICNpbXBvcnQgIlN0cm9uZ0lubGluZXMuaCIKKyNpbXBvcnQgPHd0Zi9F
eHBlY3RlZC5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW1wb3J0IDx3dGYvTG9jay5oPgpAQCAtMTM2LDYgKzEzNywxMyBAQCBOU1N0cmluZyAq
IGNvbnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yU2V0S2V5ID0gQCJzZXQiOwogICAgIHJldHVybiBb
SlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOkpTVmFsdWVNYWtlVW5kZWZpbmVkKFtjb250ZXh0
IEpTR2xvYmFsQ29udGV4dFJlZl0pIGluQ29udGV4dDpjb250ZXh0XTsKIH0KIAorKyAoSlNWYWx1
ZSAqKXZhbHVlV2l0aE5ld1N5bWJvbEZyb21EZXNjcmlwdGlvbjooTlNTdHJpbmcgKilkZXNjcmlw
dGlvbiBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQKK3sKKyAgICBKU1N0cmluZ1JlZiBz
dHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZyhyZWludGVycHJldF9jYXN0PENGU3Ry
aW5nUmVmPihkZXNjcmlwdGlvbikpOworICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1Zh
bHVlUmVmOkpTVmFsdWVNYWtlU3ltYm9sKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIHN0
cmluZykgaW5Db250ZXh0OmNvbnRleHRdOworfQorCisKIC0gKGlkKXRvT2JqZWN0CiB7CiAgICAg
cmV0dXJuIHZhbHVlVG9PYmplY3QoX2NvbnRleHQsIG1fdmFsdWUpOwpAQCAtMjE5LDc0ICsyMjcs
MTA2IEBAIE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXkgPSBAInNl
dCI7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVy
dHk6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHQsIHR5
cGVuYW1lIE5TU3RyaW5nRnVuY3Rpb24sIHR5cGVuYW1lIEpTVmFsdWVGdW5jdGlvbiwgdHlwZW5h
bWUuLi4gVHlwZXM+CitpbmxpbmUgRXhwZWN0ZWQ8UmVzdWx0LCBKU1ZhbHVlUmVmPiBwZXJmb3Jt
UHJvcGVydHlPcGVyYXRpb24oTlNTdHJpbmdGdW5jdGlvbiBzdHJpbmdGdW5jdGlvbiwgSlNWYWx1
ZUZ1bmN0aW9uIGpzRnVuY3Rpb24sIEpTVmFsdWUqIHZhbHVlLCBpZCBwcm9wZXJ0eUtleSwgVHlw
ZXMuLi4gYXJndW1lbnRzKQogewotICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBK
U09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoW19jb250ZXh0IEpTR2xvYmFsQ29u
dGV4dFJlZl0sIG1fdmFsdWUsICZleGNlcHRpb24pOworICAgIEpTQ29udGV4dCogY29udGV4dCA9
IFt2YWx1ZSBjb250ZXh0XTsKKyAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IG51bGxwdHI7Cisg
ICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KFtjb250ZXh0IEpTR2xvYmFs
Q29udGV4dFJlZl0sIFt2YWx1ZSBKU1ZhbHVlUmVmXSwgJmV4Y2VwdGlvbik7CiAgICAgaWYgKGV4
Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRp
b246ZXhjZXB0aW9uXTsKKyAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWRUeXBlPEpTVmFsdWVSZWY+
KGV4Y2VwdGlvbik7CiAKLSAgICBKU1N0cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRo
Q0ZTdHJpbmcoKENGU3RyaW5nUmVmKXByb3BlcnR5TmFtZSk7Ci0gICAgSlNWYWx1ZVJlZiByZXN1
bHQgPSBKU09iamVjdEdldFByb3BlcnR5KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBv
YmplY3QsIG5hbWUsICZleGNlcHRpb24pOwotICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKLSAg
ICBpZiAoZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW19jb250ZXh0IHZhbHVlRnJvbU5vdGlm
eUV4Y2VwdGlvbjpleGNlcHRpb25dOworICAgIFJlc3VsdCByZXN1bHQ7CisgICAgLy8gSWYgaXQn
cyBhIE5TU3RyaW5nIGFscmVhZHksIHJlZHVjZSBpbmRpcmVjdGlvbiBhbmQganVzdCBwYXNzIHRo
ZSBOU1N0cmluZy4KKyAgICBpZiAoW3Byb3BlcnR5S2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5n
IGNsYXNzXV0pIHsKKyAgICAgICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0
aENGU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KHByb3BlcnR5S2V5KSk7Cisg
ICAgICAgIHJlc3VsdCA9IHN0cmluZ0Z1bmN0aW9uKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJl
Zl0sIG9iamVjdCwgbmFtZSwgYXJndW1lbnRzLi4uLCAmZXhjZXB0aW9uKTsKKyAgICAgICAgSlNT
dHJpbmdSZWxlYXNlKG5hbWUpOworICAgIH0gZWxzZQorICAgICAgICByZXN1bHQgPSBqc0Z1bmN0
aW9uKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgW1tKU1ZhbHVlIHZhbHVl
V2l0aE9iamVjdDpwcm9wZXJ0eUtleSBpbkNvbnRleHQ6Y29udGV4dF0gSlNWYWx1ZVJlZl0sIGFy
Z3VtZW50cy4uLiwgJmV4Y2VwdGlvbik7CisgICAgcmV0dXJuIEV4cGVjdGVkPFJlc3VsdCwgSlNW
YWx1ZVJlZj4ocmVzdWx0KTsKK30KIAotICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1Zh
bHVlUmVmOnJlc3VsdCBpbkNvbnRleHQ6X2NvbnRleHRdOworI2RlZmluZSBVU0VfTlNTVFJJTkdf
Rk9SX1BST1BFUlRZX0tFWSAoZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAoZGVmaW5l
ZChfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPCAxMTAwMDApCisKKyNpZiBVU0VfTlNTVFJJTkdfRk9SX1BST1BFUlRZ
X0tFWQorLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KE5TU3RyaW5nICopa2V5CisjZWxz
ZQorLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KGlkKWtleQorI2VuZGlmCit7CisgICAg
YXV0byByZXN1bHQgPSBwZXJmb3JtUHJvcGVydHlPcGVyYXRpb248SlNWYWx1ZVJlZj4oSlNPYmpl
Y3RHZXRQcm9wZXJ0eSwgSlNPYmplY3RHZXRQcm9wZXJ0eUtleSwgc2VsZiwga2V5KTsKKyAgICBp
ZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNl
cHRpb246cmVzdWx0LmVycm9yKCldOworCisgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpT
VmFsdWVSZWY6cmVzdWx0LnZhbHVlKCkgaW5Db250ZXh0Ol9jb250ZXh0XTsKIH0KIAotLSAodm9p
ZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHlOYW1l
CisjaWYgVVNFX05TU1RSSU5HX0ZPUl9QUk9QRVJUWV9LRVkKKy0gKHZvaWQpc2V0VmFsdWU6KGlk
KXZhbHVlIGZvclByb3BlcnR5OihOU1N0cmluZyAqKWtleQorI2Vsc2UKKy0gKHZvaWQpc2V0VmFs
dWU6KGlkKXZhbHVlIGZvclByb3BlcnR5OihpZClrZXkKKyNlbmRpZgogewotICAgIEpTVmFsdWVS
ZWYgZXhjZXB0aW9uID0gMDsKLSAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmpl
Y3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUsICZleGNlcHRpb24pOwot
ICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgW19jb250ZXh0IG5vdGlmeUV4Y2VwdGlvbjpl
eGNlcHRpb25dOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIC8vIFdlIG5lZWQgVW5pdCBi
dXNpbmVzcyBiZWNhdXNlIHZvaWQgY2FuJ3QgYmUgYXNzaWduZWQgdG8gaW4gcGVyZm9ybVByb3Bl
cnR5T3BlcmF0aW9uIGFuZCBJIGRvbid0IHdhbnQgdG8gZHVwbGljYXRlIHRoZSBjb2RlLi4uCisg
ICAgdXNpbmcgVW5pdCA9IHN0ZDo6dHVwbGU8PjsKKyAgICBhdXRvIHN0cmluZ1NldFByb3BlcnR5
ID0gW10gKGF1dG8uLi4gYXJncykgLT4gVW5pdCB7CisgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVy
dHkoYXJncy4uLik7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfTsKIAotICAgIEpTU3RyaW5n
UmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpcHJvcGVy
dHlOYW1lKTsKLSAgICBKU09iamVjdFNldFByb3BlcnR5KFtfY29udGV4dCBKU0dsb2JhbENvbnRl
eHRSZWZdLCBvYmplY3QsIG5hbWUsIG9iamVjdFRvVmFsdWUoX2NvbnRleHQsIHZhbHVlKSwgMCwg
JmV4Y2VwdGlvbik7Ci0gICAgSlNTdHJpbmdSZWxlYXNlKG5hbWUpOwotICAgIGlmIChleGNlcHRp
b24pIHsKLSAgICAgICAgW19jb250ZXh0IG5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOworICAg
IGF1dG8ganNWYWx1ZVNldFByb3BlcnR5ID0gW10gKGF1dG8uLi4gYXJncykgLT4gVW5pdCB7Cisg
ICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHlLZXkoYXJncy4uLik7CisgICAgICAgIHJldHVybiB7
IH07CisgICAgfTsKKworICAgIGF1dG8gcmVzdWx0ID0gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9u
PFVuaXQ+KHN0cmluZ1NldFByb3BlcnR5LCBqc1ZhbHVlU2V0UHJvcGVydHksIHNlbGYsIGtleSwg
b2JqZWN0VG9WYWx1ZShfY29udGV4dCwgdmFsdWUpLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUp
OworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIFtfY29udGV4dCBub3RpZnlFeGNlcHRpb246
cmVzdWx0LmVycm9yKCldOwogICAgICAgICByZXR1cm47CiAgICAgfQogfQogCi0tIChCT09MKWRl
bGV0ZVByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQorI2lmIFVTRV9OU1NUUklOR19G
T1JfUFJPUEVSVFlfS0VZCistIChCT09MKWRlbGV0ZVByb3BlcnR5OihOU1N0cmluZyAqKWtleQor
I2Vsc2UKKy0gKEJPT0wpZGVsZXRlUHJvcGVydHk6KGlkKWtleQorI2VuZGlmCiB7Ci0gICAgSlNW
YWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVU
b09iamVjdChbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSwgJmV4Y2VwdGlv
bik7Ci0gICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFtfY29udGV4dCBib29sRnJv
bU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwotCi0gICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpT
U3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwotICAg
IEJPT0wgcmVzdWx0ID0gSlNPYmplY3REZWxldGVQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxD
b250ZXh0UmVmXSwgb2JqZWN0LCBuYW1lLCAmZXhjZXB0aW9uKTsKLSAgICBKU1N0cmluZ1JlbGVh
c2UobmFtZSk7Ci0gICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFtfY29udGV4dCBi
b29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwotCi0gICAgcmV0dXJuIHJlc3VsdDsK
KyAgICBFeHBlY3RlZDxCT09MLCBKU1ZhbHVlUmVmPiByZXN1bHQgPSBwZXJmb3JtUHJvcGVydHlP
cGVyYXRpb248Qk9PTD4oSlNPYmplY3REZWxldGVQcm9wZXJ0eSwgSlNPYmplY3REZWxldGVQcm9w
ZXJ0eUtleSwgc2VsZiwga2V5KTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFtf
Y29udGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpyZXN1bHQuZXJyb3IoKV07CisgICAgcmV0
dXJuIHJlc3VsdC52YWx1ZSgpOwogfQogCi0tIChCT09MKWhhc1Byb3BlcnR5OihOU1N0cmluZyAq
KXByb3BlcnR5TmFtZQorI2lmIFVTRV9OU1NUUklOR19GT1JfUFJPUEVSVFlfS0VZCistIChCT09M
KWhhc1Byb3BlcnR5OihOU1N0cmluZyAqKWtleQorI2Vsc2UKKy0gKEJPT0wpaGFzUHJvcGVydHk6
KGlkKWtleQorI2VuZGlmCiB7Ci0gICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAgIEpT
T2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChbX2NvbnRleHQgSlNHbG9iYWxDb250
ZXh0UmVmXSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7Ci0gICAgaWYgKGV4Y2VwdGlvbikKLSAgICAg
ICAgcmV0dXJuIFtfY29udGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwor
ICAgIC8vIFRoZSBDLWFwaSBkb2Vzbid0IHJldHVybiBhbiBleGNlcHRpb24gdmFsdWUgZm9yIHRo
ZSBzdHJpbmcgdmVyc2lvbiBvZiBoYXMgcHJvcGVydHkuCisgICAgYXV0byBzdHJpbmdIYXNQcm9w
ZXJ0eSA9IFtdIChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5n
UmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiopIC0+IEJPT0wgeworICAgICAgICByZXR1cm4g
SlNPYmplY3RIYXNQcm9wZXJ0eShjdHgsIG9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICB9Owog
Ci0gICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0
cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwotICAgIEJPT0wgcmVzdWx0ID0gSlNPYmplY3RIYXNQcm9w
ZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgb2JqZWN0LCBuYW1lKTsKLSAgICBK
U1N0cmluZ1JlbGVhc2UobmFtZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBFeHBlY3RlZDxC
T09MLCBKU1ZhbHVlUmVmPiByZXN1bHQgPSBwZXJmb3JtUHJvcGVydHlPcGVyYXRpb248Qk9PTD4o
c3RyaW5nSGFzUHJvcGVydHksIEpTT2JqZWN0SGFzUHJvcGVydHlLZXksIHNlbGYsIGtleSk7Cisg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBbX2NvbnRleHQgYm9vbEZyb21Ob3RpZnlF
eGNlcHRpb246cmVzdWx0LmVycm9yKCldOworICAgIHJldHVybiByZXN1bHQudmFsdWUoKTsKIH0K
IAotLSAodm9pZClkZWZpbmVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eSBkZXNjcmlwdG9y
OihpZClkZXNjcmlwdG9yCisjaWYgVVNFX05TU1RSSU5HX0ZPUl9QUk9QRVJUWV9LRVkKKy0gKHZv
aWQpZGVmaW5lUHJvcGVydHk6KE5TU3RyaW5nICopa2V5IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0
b3IKKyNlbHNlCistICh2b2lkKWRlZmluZVByb3BlcnR5OihpZClrZXkgZGVzY3JpcHRvcjooaWQp
ZGVzY3JpcHRvcgorI2VuZGlmCiB7Ci0gICAgW1tfY29udGV4dCBnbG9iYWxPYmplY3RdW0AiT2Jq
ZWN0Il0gaW52b2tlTWV0aG9kOkAiZGVmaW5lUHJvcGVydHkiIHdpdGhBcmd1bWVudHM6QFsgc2Vs
ZiwgcHJvcGVydHksIGRlc2NyaXB0b3IgXV07CisgICAgW1tfY29udGV4dCBnbG9iYWxPYmplY3Rd
W0AiT2JqZWN0Il0gaW52b2tlTWV0aG9kOkAiZGVmaW5lUHJvcGVydHkiIHdpdGhBcmd1bWVudHM6
QFsgc2VsZiwga2V5LCBkZXNjcmlwdG9yIF1dOwogfQogCisjdW5kZWYgVVNFX05TU1RSSU5HX0ZP
Ul9QUk9QRVJUWV9LRVkKKwogLSAoSlNWYWx1ZSAqKXZhbHVlQXRJbmRleDooTlNVSW50ZWdlcilp
bmRleAogewogICAgIC8vIFByb3BlcnRpZXMgdGhhdCBhcmUgaGlnaGVyIHRoYW4gYW4gdW5zaWdu
ZWQgdmFsdWUgY2FuIGhvbGQgYXJlIGNvbnZlcnRlZCB0byBhIGRvdWJsZSB0aGVuIGluc2VydGVk
IGFzIGEgbm9ybWFsIHByb3BlcnR5LgpAQCAtMzU3LDYgKzM5NywxMSBAQCBOU1N0cmluZyAqIGNv
bnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yU2V0S2V5ID0gQCJzZXQiOwogICAgIHJldHVybiBKU1Zh
bHVlSXNPYmplY3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUpOwogfQog
CistIChCT09MKWlzU3ltYm9sCit7CisgICAgcmV0dXJuIEpTVmFsdWVJc1N5bWJvbChbX2NvbnRl
eHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSk7Cit9CisKIC0gKEJPT0wpaXNBcnJheQog
ewogICAgIHJldHVybiBKU1ZhbHVlSXNBcnJheShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVm
XSwgbV92YWx1ZSk7CkBAIC01MzksMTMgKzU4NCw3IEBAIE5TU3RyaW5nICogY29uc3QgSlNQcm9w
ZXJ0eURlc2NyaXB0b3JTZXRLZXkgPSBAInNldCI7CiAKIC0gKEpTVmFsdWUgKilvYmplY3RGb3JL
ZXllZFN1YnNjcmlwdDooaWQpa2V5CiB7Ci0gICAgaWYgKCFba2V5IGlzS2luZE9mQ2xhc3M6W05T
U3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAga2V5ID0gW1tKU1ZhbHVlIHZhbHVlV2l0aE9iamVj
dDprZXkgaW5Db250ZXh0Ol9jb250ZXh0XSB0b1N0cmluZ107Ci0gICAgICAgIGlmICgha2V5KQot
ICAgICAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4dDpf
Y29udGV4dF07Ci0gICAgfQotCi0gICAgcmV0dXJuIFtzZWxmIHZhbHVlRm9yUHJvcGVydHk6KE5T
U3RyaW5nICopa2V5XTsKKyAgICByZXR1cm4gW3NlbGYgdmFsdWVGb3JQcm9wZXJ0eTprZXldOwog
fQogCiAtIChKU1ZhbHVlICopb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OihOU1VJbnRlZ2VyKWlu
ZGV4CkBAIC01NTMsMTUgKzU5Miw5IEBAIE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2Ny
aXB0b3JTZXRLZXkgPSBAInNldCI7CiAgICAgcmV0dXJuIFtzZWxmIHZhbHVlQXRJbmRleDppbmRl
eF07CiB9CiAKLS0gKHZvaWQpc2V0T2JqZWN0OihpZClvYmplY3QgZm9yS2V5ZWRTdWJzY3JpcHQ6
KE5TT2JqZWN0IDxOU0NvcHlpbmc+ICopa2V5CistICh2b2lkKXNldE9iamVjdDooaWQpb2JqZWN0
IGZvcktleWVkU3Vic2NyaXB0OihpZClrZXkKIHsKLSAgICBpZiAoIVtrZXkgaXNLaW5kT2ZDbGFz
czpbTlNTdHJpbmcgY2xhc3NdXSkgewotICAgICAgICBrZXkgPSBbW0pTVmFsdWUgdmFsdWVXaXRo
T2JqZWN0OmtleSBpbkNvbnRleHQ6X2NvbnRleHRdIHRvU3RyaW5nXTsKLSAgICAgICAgaWYgKCFr
ZXkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgW3NlbGYgc2V0VmFsdWU6b2Jq
ZWN0IGZvclByb3BlcnR5OihOU1N0cmluZyAqKWtleV07CisgICAgW3NlbGYgc2V0VmFsdWU6b2Jq
ZWN0IGZvclByb3BlcnR5OmtleV07CiB9CiAKIC0gKHZvaWQpc2V0T2JqZWN0OihpZClvYmplY3Qg
YXRJbmRleGVkU3Vic2NyaXB0OihOU1VJbnRlZ2VyKWluZGV4CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1ZhbHVlUmVmLmNwcAppbmRleCA2NGFjNmMzMjQ2ZWJmYjhjYzRmMjRjMDU4MDk5OGFl
NDE4ZGFiYTZkLi5kNDZjZmYwNmE0NjU0ZTk1MGI1MDE1ZTRjYjJiYWY0OTZiMDQ4YzgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKQEAgLTg2LDggKzg2LDEwIEBA
IHN0YXRpYyBib29sIGV2ZXJub3RlSGFja05lZWRlZCgpCiAgICAgICAgIHJldHVybiBrSlNUeXBl
TnVtYmVyOwogICAgIGlmIChqc1ZhbHVlLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBrSlNU
eXBlU3RyaW5nOwotICAgIEFTU0VSVChqc1ZhbHVlLmlzT2JqZWN0KCkpOwotICAgIHJldHVybiBr
SlNUeXBlT2JqZWN0OworICAgIGlmIChqc1ZhbHVlLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVy
biBrSlNUeXBlT2JqZWN0OworICAgIEFTU0VSVChqc1ZhbHVlLmlzU3ltYm9sKCkpOworICAgIHJl
dHVybiBrSlNUeXBlU3ltYm9sOwogfQogCiBib29sIEpTVmFsdWVJc1VuZGVmaW5lZChKU0NvbnRl
eHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQpAQCAtMTYyLDYgKzE2NCwxOCBAQCBib29sIEpT
VmFsdWVJc09iamVjdChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQogICAgIHJl
dHVybiB0b0pTKGV4ZWMsIHZhbHVlKS5pc09iamVjdCgpOwogfQogCitib29sIEpTVmFsdWVJc1N5
bWJvbChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQoreworICAgIGlmICghY3R4
KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBKU0xvY2tIb2xk
ZXIgbG9ja2VyKGV4ZWMpOworCisgICAgcmV0dXJuIHRvSlMoZXhlYywgdmFsdWUpLmlzU3ltYm9s
KCk7Cit9CisKIGJvb2wgSlNWYWx1ZUlzQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJl
ZiB2YWx1ZSkKIHsKICAgICBpZiAoIWN0eCkgewpAQCAtMzE2LDYgKzMzMCwyMiBAQCBKU1ZhbHVl
UmVmIEpTVmFsdWVNYWtlTnVtYmVyKEpTQ29udGV4dFJlZiBjdHgsIGRvdWJsZSB2YWx1ZSkKICAg
ICByZXR1cm4gdG9SZWYoZXhlYywganNOdW1iZXIocHVyaWZ5TmFOKHZhbHVlKSkpOwogfQogCitK
U1ZhbHVlUmVmIEpTVmFsdWVNYWtlU3ltYm9sKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVm
IGRlc2NyaXB0aW9uKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBl
eGVjID0gdG9KUyhjdHgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUoZXhlYy0+dm0oKSk7CisKKyAgICBKU1N0cmlu
ZyoganNEZXNjcmlwdGlvbiA9IGpzU3RyaW5nKGV4ZWMsIGRlc2NyaXB0aW9uID8gZGVzY3JpcHRp
b24tPnN0cmluZygpIDogU3RyaW5nKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IG51bGxwdHIpOworCisgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIFN5bWJvbDo6Y3JlYXRlKGV4ZWMs
IGpzRGVzY3JpcHRpb24pKTsKK30KKwogSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZVN0cmluZyhKU0Nv
bnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBzdHJpbmcpCiB7CiAgICAgaWYgKCFjdHgpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmgKaW5kZXggOTgxNWRlNzgzYzBhZWUwNzNl
M2E0NDhiZDBjN2NhZGQ0YTk1MmMwNi4uM2JlODViMGE5YzE2MmZmNzBiNjFjMGI2NzZmNTRlYjQ0
ZDcwNWFmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVm
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmgKQEAgLTQyLDYg
KzQyLDcgQEAKIEBjb25zdGFudCAgICAga0pTVHlwZU51bWJlciAgICAgQSBwcmltaXRpdmUgbnVt
YmVyIHZhbHVlLgogQGNvbnN0YW50ICAgICBrSlNUeXBlU3RyaW5nICAgICBBIHByaW1pdGl2ZSBz
dHJpbmcgdmFsdWUuCiBAY29uc3RhbnQgICAgIGtKU1R5cGVPYmplY3QgICAgIEFuIG9iamVjdCB2
YWx1ZSAobWVhbmluZyB0aGF0IHRoaXMgSlNWYWx1ZVJlZiBpcyBhIEpTT2JqZWN0UmVmKS4KK0Bj
b25zdGFudCAgICAga0pTVHlwZVN5bWJvbCAgICAgQSBwcmltaXRpdmUgc3ltYm9sIHZhbHVlLgog
Ki8KIHR5cGVkZWYgZW51bSB7CiAgICAga0pTVHlwZVVuZGVmaW5lZCwKQEAgLTQ5LDcgKzUwLDgg
QEAgdHlwZWRlZiBlbnVtIHsKICAgICBrSlNUeXBlQm9vbGVhbiwKICAgICBrSlNUeXBlTnVtYmVy
LAogICAgIGtKU1R5cGVTdHJpbmcsCi0gICAga0pTVHlwZU9iamVjdAorICAgIGtKU1R5cGVPYmpl
Y3QsCisgICAga0pTVHlwZVN5bWJvbCBDRl9FTlVNX0FWQUlMQUJMRSgxMF8xMywgMTFfMCkKIH0g
SlNUeXBlOwogCiAvKiEKQEAgLTE1MSw2ICsxNTMsMTYgQEAgSlNfRVhQT1JUIGJvb2wgSlNWYWx1
ZUlzT2JqZWN0KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpOwogCiAvKiEKIEBm
dW5jdGlvbgorQGFic3RyYWN0ICAgICAgIFRlc3RzIHdoZXRoZXIgYSBKYXZhU2NyaXB0IHZhbHVl
J3MgdHlwZSBpcyB0aGUgc3ltYm9sIHR5cGUuCitAcGFyYW0gY3R4ICAgICAgVGhlIGV4ZWN1dGlv
biBjb250ZXh0IHRvIHVzZS4KK0BwYXJhbSB2YWx1ZSAgICBUaGUgSlNWYWx1ZSB0byB0ZXN0Lgor
QHJlc3VsdCAgICAgICAgIHRydWUgaWYgdmFsdWUncyB0eXBlIGlzIHRoZSBzeW1ib2wgdHlwZSwg
b3RoZXJ3aXNlIGZhbHNlLgorKi8KK0pTX0VYUE9SVCBib29sIEpTVmFsdWVJc1N5bWJvbChKU0Nv
bnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKSBDRl9BVkFJTEFCTEUoMTBfMTMsIDExXzAp
OworCisKKy8qIQorQGZ1bmN0aW9uCiBAYWJzdHJhY3QgVGVzdHMgd2hldGhlciBhIEphdmFTY3Jp
cHQgdmFsdWUgaXMgYW4gb2JqZWN0IHdpdGggYSBnaXZlbiBjbGFzcyBpbiBpdHMgY2xhc3MgY2hh
aW4uCiBAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCiBAcGFyYW0gdmFs
dWUgVGhlIEpTVmFsdWUgdG8gdGVzdC4KQEAgLTI1OSw2ICsyNzEsMTUgQEAgSlNfRVhQT1JUIEpT
VmFsdWVSZWYgSlNWYWx1ZU1ha2VOdW1iZXIoSlNDb250ZXh0UmVmIGN0eCwgZG91YmxlIG51bWJl
cik7CiAKIC8qIQogQGZ1bmN0aW9uCitAYWJzdHJhY3QgICAgICAgICAgICBDcmVhdGVzIGEgSmF2
YVNjcmlwdCB2YWx1ZSBvZiB0aGUgc3ltYm9sIHR5cGUuCitAcGFyYW0gY3R4ICAgICAgICAgICBU
aGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgorQHBhcmFtIGRlc2NyaXB0aW9uICAgQSBkZXNj
cmlwdGlvbiBvZiB0aGUgbmV3bHkgY3JlYXRlZCBzeW1ib2wgdmFsdWUuCitAcmVzdWx0ICAgICAg
ICAgICAgICBBIHVuaXF1ZSBKU1ZhbHVlIG9mIHRoZSBzeW1ib2wgdHlwZSwgd2hvc2UgZGVzY3Jp
cHRpb24gbWF0Y2hlcyB0aGUgb25lIHByb3ZpZGVkLgorKi8KK0pTX0VYUE9SVCBKU1ZhbHVlUmVm
IEpTVmFsdWVNYWtlU3ltYm9sKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIGRlc2NyaXB0
aW9uKTsKKworLyohCitAZnVuY3Rpb24KIEBhYnN0cmFjdCAgICAgICBDcmVhdGVzIGEgSmF2YVNj
cmlwdCB2YWx1ZSBvZiB0aGUgc3RyaW5nIHR5cGUuCiBAcGFyYW0gY3R4ICBUaGUgZXhlY3V0aW9u
IGNvbnRleHQgdG8gdXNlLgogQHBhcmFtIHN0cmluZyAgIFRoZSBKU1N0cmluZyB0byBhc3NpZ24g
dG8gdGhlIG5ld2x5IGNyZWF0ZWQgSlNWYWx1ZS4gVGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvdGVzdGFwaS5jCmluZGV4IDdiZWNkZmUwNDExNWJmOTQ4OWVmODQxOTdjMTY3MWM1
YjgzYmE0ZTIuLmExZWE1ODI2Mzc4MTUxYjQ5YmM4ODcwNzZjNDQwYWVkMTZhZmY2MDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCkBAIC02Niw2ICs2Niw4IEBA
CiB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKHZvaWQpOwogI2VuZGlmCiAKK2ludCB0ZXN0Q0FQSVZp
YUNwcCgpOworCiBib29sIGFzc2VydFRydWUoYm9vbCB2YWx1ZSwgY29uc3QgY2hhciogbWVzc2Fn
ZSk7CiAKIHN0YXRpYyBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dDsKQEAgLTEzNjEsNiArMTM2
Myw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAjaWYgSlNDX09CSkNfQVBJ
X0VOQUJMRUQKICAgICB0ZXN0T2JqZWN0aXZlQ0FQSSgpOwogI2VuZGlmCisgICAgUkVMRUFTRV9B
U1NFUlQoIXRlc3RDQVBJVmlhQ3BwKCkpOwogCiAgICAgY29uc3QgY2hhciAqc2NyaXB0UGF0aCA9
ICJ0ZXN0YXBpLmpzIjsKICAgICBpZiAoYXJnYyA+IDEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL3Rlc3RzL3Rlc3RhcGkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiNWUzMGM0YjAwYjFmN2UwOGI0
MTA1NzhhMWFiYmQ4MTkzMzAwZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuY3BwCkBAIC0wLDAgKzEsMzkwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRl
ICJKYXZhU2NyaXB0Q29yZS5oIgorCisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KKyNpbmNsdWRl
IDx3dGYvRXhwZWN0ZWQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisKK2V4dGVybiAiQyIgaW50IHRlc3RDQVBJVmlhQ3BwKCk7CisKK2Ns
YXNzIEFQSVN0cmluZyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQVBJU3RyaW5nKTsKK3B1
YmxpYzoKKworICAgIEFQSVN0cmluZyhjb25zdCBjaGFyKiBzdHJpbmcpCisgICAgICAgIDogbV9z
dHJpbmcoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc3RyaW5nKSkKKyAgICB7CisgICAg
fQorCisgICAgfkFQSVN0cmluZygpCisgICAgeworICAgICAgICBKU1N0cmluZ1JlbGVhc2UobV9z
dHJpbmcpOworICAgIH0KKworICAgIG9wZXJhdG9yIEpTU3RyaW5nUmVmKCkgeyByZXR1cm4gbV9z
dHJpbmc7IH0KKworcHJpdmF0ZToKKyAgICBKU1N0cmluZ1JlZiBtX3N0cmluZzsKK307CisKK2Ns
YXNzIEFQSUNvbnRleHQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFQSUNvbnRleHQpOwor
cHVibGljOgorCisgICAgQVBJQ29udGV4dCgpCisgICAgICAgIDogbV9jb250ZXh0KEpTR2xvYmFs
Q29udGV4dENyZWF0ZShudWxscHRyKSkKKyAgICB7CisgICAgICAgIEFQSVN0cmluZyBwcmludCgi
cHJpbnQiKTsKKyAgICAgICAgSlNPYmplY3RSZWYgcHJpbnRGdW5jdGlvbiA9IEpTT2JqZWN0TWFr
ZUZ1bmN0aW9uV2l0aENhbGxiYWNrKG1fY29udGV4dCwgcHJpbnQsIFtdIChKU0NvbnRleHRSZWYg
Y3R4LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKikgeworCisgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgaSsrKQorICAgICAgICAgICAg
ICAgIGRhdGFMb2coYml0d2lzZV9jYXN0PEpTQzo6SlNWYWx1ZT4oYXJndW1lbnRzW2ldKSk7Cisg
ICAgICAgICAgICBkYXRhTG9nTG4oKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjdHgpOworICAgICAgICB9KTsKKworICAgICAgICBKU09iamVjdFNldFByb3BlcnR5
KG1fY29udGV4dCwgSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KG1fY29udGV4dCksIHByaW50LCBw
cmludEZ1bmN0aW9uLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUsIG51bGxwdHIpOworICAgIH0K
KworICAgIH5BUElDb250ZXh0KCkKKyAgICB7CisgICAgICAgIEpTR2xvYmFsQ29udGV4dFJlbGVh
c2UobV9jb250ZXh0KTsKKyAgICB9CisKKyAgICBvcGVyYXRvciBKU0dsb2JhbENvbnRleHRSZWYo
KSB7IHJldHVybiBtX2NvbnRleHQ7IH0KKworcHJpdmF0ZToKKyAgICBKU0dsb2JhbENvbnRleHRS
ZWYgbV9jb250ZXh0OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIEFQSVZlY3Rv
ciA6IHByb3RlY3RlZCBWZWN0b3I8VD4geworICAgIHVzaW5nIEJhc2UgPSBWZWN0b3I8VD47Citw
dWJsaWM6CisgICAgQVBJVmVjdG9yKEFQSUNvbnRleHQmIGNvbnRleHQpCisgICAgICAgIDogQmFz
ZSgpCisgICAgICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgeworICAgIH0KKworICAgIH5B
UElWZWN0b3IoKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvJiB2YWx1ZSA6ICp0aGlzKQorICAg
ICAgICAgICAgSlNWYWx1ZVVucHJvdGVjdChtX2NvbnRleHQsIHZhbHVlKTsKKyAgICB9CisKKyAg
ICB1c2luZyBWZWN0b3I8VD46Om9wZXJhdG9yW107CisgICAgdXNpbmcgVmVjdG9yPFQ+OjpzaXpl
OworICAgIHVzaW5nIFZlY3RvcjxUPjo6YmVnaW47CisgICAgdXNpbmcgVmVjdG9yPFQ+OjplbmQ7
CisgICAgdXNpbmcgdHlwZW5hbWUgVmVjdG9yPFQ+OjppdGVyYXRvcjsKKworICAgIHZvaWQgYXBw
ZW5kKFQgdmFsdWUpCisgICAgeworICAgICAgICBKU1ZhbHVlUHJvdGVjdChtX2NvbnRleHQsIHZh
bHVlKTsKKyAgICAgICAgQmFzZTo6YXBwZW5kKFdURk1vdmUodmFsdWUpKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgQVBJQ29udGV4dCYgbV9jb250ZXh0OworfTsKKworY2xhc3MgVGVzdEFQSSB7
CitwdWJsaWM6CisgICAgaW50IHJ1bigpOworcHJpdmF0ZToKKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lLi4uIFN0cmluZ3M+CisgICAgYm9vbCBjaGVjayhib29sIGNvbmRpdGlvbiwgU3RyaW5ncy4u
LiBtZXNzYWdlKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEpTRnVuY3RvciwgdHlwZW5hbWUg
QVBJRnVuY3Rvcj4KKyAgICB2b2lkIGNoZWNrSlNBbmRBUElNYXRjaChjb25zdCBKU0Z1bmN0b3Im
LCBjb25zdCBBUElGdW5jdG9yJiwgY29uc3QgY2hhciogZGVzY3JpcHRpb24pOworCisgICAgLy8g
SGVscGVyIG1ldGhvZHMuCisgICAgdXNpbmcgU2NyaXB0UmVzdWx0ID0gRXhwZWN0ZWQ8SlNWYWx1
ZVJlZiwgSlNWYWx1ZVJlZj47CisgICAgU2NyaXB0UmVzdWx0IGV2YWx1YXRlU2NyaXB0KGNvbnN0
IGNoYXIqIHNjcmlwdCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCA9IG51bGxwdHIpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CisgICAgU2NyaXB0UmVzdWx0IGNhbGxG
dW5jdGlvbihjb25zdCBjaGFyKiBmdW5jdGlvblNvdXJjZSwgQXJndW1lbnRUeXBlcy4uLiBhcmd1
bWVudHMpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CisgICAgYm9v
bCBmdW5jdGlvblJldHVybnNUcnVlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uU291cmNlLCBBcmd1bWVu
dFR5cGVzLi4uIGFyZ3VtZW50cyk7CisKKyAgICAvLyBXYXlzIHRvIG1ha2Ugc2V0cyBvZiBpbnRl
cmVzdGluZyB0aGluZ3MuCisgICAgQVBJVmVjdG9yPEpTT2JqZWN0UmVmPiBpbnRlcmVzdGluZ09i
amVjdHMoKTsKKyAgICBBUElWZWN0b3I8SlNWYWx1ZVJlZj4gaW50ZXJlc3RpbmdLZXlzKCk7CisK
KyAgICBpbnQgZmFpbGVkIHsgMCB9OworICAgIEFQSUNvbnRleHQgY29udGV4dDsKK307CisKK2lu
dCB0ZXN0Q0FQSVZpYUNwcCgpCit7CisgICAgVGVzdEFQSSB0ZXN0ZXI7CisgICAgcmV0dXJuIHRl
c3Rlci5ydW4oKTsKK30KKworVGVzdEFQSTo6U2NyaXB0UmVzdWx0IFRlc3RBUEk6OmV2YWx1YXRl
U2NyaXB0KGNvbnN0IGNoYXIqIHNjcmlwdCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCkKK3sKKyAg
ICBBUElTdHJpbmcgc2NyaXB0QVBJU3RyaW5nKHNjcmlwdCk7CisgICAgSlNWYWx1ZVJlZiBleGNl
cHRpb24gPSBudWxscHRyOworCisgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU0V2YWx1YXRlU2Ny
aXB0KGNvbnRleHQsIHNjcmlwdEFQSVN0cmluZywgdGhpc09iamVjdCwgbnVsbHB0ciwgMCwgJmV4
Y2VwdGlvbik7CisgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWRU
eXBlPEpTVmFsdWVSZWY+KGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIFNjcmlwdFJlc3VsdChyZXN1
bHQpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVzPgorVGVzdEFQSTo6
U2NyaXB0UmVzdWx0IFRlc3RBUEk6OmNhbGxGdW5jdGlvbihjb25zdCBjaGFyKiBmdW5jdGlvblNv
dXJjZSwgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMpCit7CisgICAgSlNWYWx1ZVJlZiBmdW5j
dGlvbjsKKyAgICB7CisgICAgICAgIFNjcmlwdFJlc3VsdCBmdW5jdGlvblJlc3VsdCA9IGV2YWx1
YXRlU2NyaXB0KGZ1bmN0aW9uU291cmNlKTsKKyAgICAgICAgaWYgKCFmdW5jdGlvblJlc3VsdCkK
KyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvblJlc3VsdDsKKyAgICAgICAgZnVuY3Rpb24gPSBm
dW5jdGlvblJlc3VsdC52YWx1ZSgpOworICAgIH0KKworICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9u
ID0gbnVsbHB0cjsKKyAgICBpZiAoSlNPYmplY3RSZWYgZnVuY3Rpb25PYmplY3QgPSBKU1ZhbHVl
VG9PYmplY3QoY29udGV4dCwgZnVuY3Rpb24sICZleGNlcHRpb24pKSB7CisgICAgICAgIEpTVmFs
dWVSZWYgYXJnc1tzaXplb2YuLi4oYXJndW1lbnRzKV0geyBhcmd1bWVudHMuLi4gfTsKKyAgICAg
ICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU09iamVjdENhbGxBc0Z1bmN0aW9uKGNvbnRleHQsIGZ1
bmN0aW9uT2JqZWN0LCBmdW5jdGlvbk9iamVjdCwgc2l6ZW9mLi4uKGFyZ3VtZW50cyksIGFyZ3Ms
ICZleGNlcHRpb24pOworICAgICAgICBpZiAoIWV4Y2VwdGlvbikKKyAgICAgICAgICAgIHJldHVy
biBTY3JpcHRSZXN1bHQocmVzdWx0KTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVChleGNl
cHRpb24pOworICAgIHJldHVybiBVbmV4cGVjdGVkVHlwZTxKU1ZhbHVlUmVmPihleGNlcHRpb24p
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVzPgorYm9vbCBUZXN0QVBJ
OjpmdW5jdGlvblJldHVybnNUcnVlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uU291cmNlLCBBcmd1bWVu
dFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBKU1ZhbHVlUmVmIHRydWVWYWx1ZSA9IEpTVmFs
dWVNYWtlQm9vbGVhbihjb250ZXh0LCB0cnVlKTsKKyAgICBTY3JpcHRSZXN1bHQgcmVzdWx0ID0g
Y2FsbEZ1bmN0aW9uKGZ1bmN0aW9uU291cmNlLCBhcmd1bWVudHMuLi4pOworICAgIGlmICghcmVz
dWx0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIEpTVmFsdWVJc1N0cmljdEVx
dWFsKGNvbnRleHQsIHRydWVWYWx1ZSwgcmVzdWx0LnZhbHVlKCkpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZS4uLiBTdHJpbmdzPgorYm9vbCBUZXN0QVBJOjpjaGVjayhib29sIGNvbmRpdGlvbiwg
U3RyaW5ncy4uLiBtZXNzYWdlcykKK3sKKyAgICBpZiAoIWNvbmRpdGlvbikgeworICAgICAgICBk
YXRhTG9nTG4obWVzc2FnZXMuLi4sICI6IEZBSUxFRCIpOworICAgICAgICBmYWlsZWQrKzsKKyAg
ICB9IGVsc2UKKyAgICAgICAgZGF0YUxvZ0xuKG1lc3NhZ2VzLi4uLCAiOiBQQVNTRUQiKTsKKwor
ICAgIHJldHVybiBjb25kaXRpb247Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEpTRnVuY3Rvciwg
dHlwZW5hbWUgQVBJRnVuY3Rvcj4KK3ZvaWQgVGVzdEFQSTo6Y2hlY2tKU0FuZEFQSU1hdGNoKGNv
bnN0IEpTRnVuY3RvciYganNGdW5jdG9yLCBjb25zdCBBUElGdW5jdG9yJiBhcGlGdW5jdG9yLCBj
b25zdCBjaGFyKiBkZXNjcmlwdGlvbikKK3sKKyAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IG51
bGxwdHI7CisgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBhcGlGdW5jdG9yKCZleGNlcHRpb24pOwor
ICAgIFNjcmlwdFJlc3VsdCBqc1Jlc3VsdCA9IGpzRnVuY3RvcigpOworICAgIGlmICghanNSZXN1
bHQpIHsKKyAgICAgICAgY2hlY2soZXhjZXB0aW9uLCAiSlMgYW5kIEFQSSBjYWxscyBzaG91bGQg
Ym90aCB0aHJvdyBhbiBleGNlcHRpb24gd2hpbGUgIiwgZGVzY3JpcHRpb24pOworICAgICAgICBj
aGVjayhmdW5jdGlvblJldHVybnNUcnVlKCIoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gYS5jb25z
dHJ1Y3RvciA9PT0gYi5jb25zdHJ1Y3RvcjsgfSkiLCBleGNlcHRpb24sIGpzUmVzdWx0LmVycm9y
KCkpLCAiSlMgYW5kIEFQSSBjYWxscyBzaG91bGQgYm90aCB0aHJvdyB0aGUgc2FtZSBleGNlcHRp
b24gd2hpbGUgIiwgZGVzY3JpcHRpb24pOworICAgIH0gZWxzZSB7CisgICAgICAgIGNoZWNrKCFl
eGNlcHRpb24sICJKUyBhbmQgQVBJIGNhbGxzIHNob3VsZCBib3RoIG5vdCB0aHJvdyBhbiBleGNl
cHRpb24gd2hpbGUgIiwgZGVzY3JpcHRpb24pOworICAgICAgICBjaGVjayhKU1ZhbHVlSXNTdHJp
Y3RFcXVhbChjb250ZXh0LCByZXN1bHQsIGpzUmVzdWx0LnZhbHVlKCkpLCAiSlMgcmVzdWx0IGFu
ZCBBUEkgY2FsbHMgc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZSB3aGlsZSAiLCBkZXNjcmlw
dGlvbik7CisgICAgfQorfQorCitBUElWZWN0b3I8SlNPYmplY3RSZWY+IFRlc3RBUEk6OmludGVy
ZXN0aW5nT2JqZWN0cygpCit7CisgICAgQVBJVmVjdG9yPEpTT2JqZWN0UmVmPiByZXN1bHQoY29u
dGV4dCk7CisgICAgSlNPYmplY3RSZWYgYXJyYXkgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwg
ZXZhbHVhdGVTY3JpcHQoCisgICAgICAgICJbe30sIFtdLCB7IFtTeW1ib2wuaXRlcmF0b3JdOiAx
IH0sIG5ldyBEYXRlKCksIG5ldyBTdHJpbmcoJ3N0cicpLCBuZXcgTWFwKCksIG5ldyBTZXQoKSwg
bmV3IFdlYWtNYXAoKSwgbmV3IFdlYWtTZXQoKSwgbmV3IEVycm9yKCksIG5ldyBOdW1iZXIoNDIp
LCBuZXcgQm9vbGVhbigpLCB7IGdldCBsZW5ndGgoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9IH1d
OyIpLnZhbHVlKCksIG51bGxwdHIpOworCisgICAgQVBJU3RyaW5nIGxlbmd0aFN0cmluZygibGVu
Z3RoIik7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIEpT
T2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgYXJyYXksIGxlbmd0aFN0cmluZywgbnVsbHB0ciks
IG51bGxwdHIpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewor
ICAgICAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgSlNP
YmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgYXJyYXksIGksIG51bGxwdHIpLCBudWxs
cHRyKTsKKyAgICAgICAgQVNTRVJUKG9iamVjdCk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQob2Jq
ZWN0KTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitBUElWZWN0b3I8SlNWYWx1
ZVJlZj4gVGVzdEFQSTo6aW50ZXJlc3RpbmdLZXlzKCkKK3sKKyAgICBBUElWZWN0b3I8SlNWYWx1
ZVJlZj4gcmVzdWx0KGNvbnRleHQpOworICAgIEpTT2JqZWN0UmVmIGFycmF5ID0gSlNWYWx1ZVRv
T2JqZWN0KGNvbnRleHQsIGV2YWx1YXRlU2NyaXB0KCJbe30sIFtdLCAxLCBTeW1ib2wuaXRlcmF0
b3IsICdsZW5ndGgnXSIpLnZhbHVlKCksIG51bGxwdHIpOworCisgICAgQVBJU3RyaW5nIGxlbmd0
aFN0cmluZygibGVuZ3RoIik7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gSlNWYWx1ZVRvTnVtYmVy
KGNvbnRleHQsIEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgYXJyYXksIGxlbmd0aFN0cmlu
ZywgbnVsbHB0ciksIG51bGxwdHIpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5n
dGg7IGkrKykgeworICAgICAgICBKU1ZhbHVlUmVmIHZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0
eUF0SW5kZXgoY29udGV4dCwgYXJyYXksIGksIG51bGxwdHIpOworICAgICAgICBBU1NFUlQodmFs
dWUpOworICAgICAgICByZXN1bHQuYXBwZW5kKHZhbHVlKTsKKyAgICB9CisKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitpbnQgVGVzdEFQSTo6cnVuKCkKK3sKKyAgICBkYXRhTG9nTG4oIlN0YXJ0
aW5nIEMtQVBJIHRlc3RzIGluIEMrKyIpOworICAgIGNvbnN0IGNoYXIqIGlzU3ltYm9sRnVuY3Rp
b24gPSAiKGZ1bmN0aW9uIGlzU3ltYm9sKHN5bWJvbCkgeyByZXR1cm4gdHlwZW9mKHN5bWJvbCkg
PT09ICdzeW1ib2wnOyB9KSI7CisgICAgY29uc3QgY2hhciogZ2V0RnVuY3Rpb24gPSAiKGZ1bmN0
aW9uIGdldChvYmplY3QsIGtleSkgeyByZXR1cm4gb2JqZWN0W2tleV07IH0pIjsKKyAgICBjb25z
dCBjaGFyKiBzZXRGdW5jdGlvbiA9ICIoZnVuY3Rpb24gc2V0KG9iamVjdCwga2V5LCB2YWx1ZSkg
eyBvYmplY3Rba2V5XSA9IHZhbHVlOyB9KSI7CisgICAgY29uc3QgY2hhciogaGFzRnVuY3Rpb24g
PSAiKGZ1bmN0aW9uIGhhcyhvYmplY3QsIGtleSkgeyByZXR1cm4ga2V5IGluIG9iamVjdDsgfSki
OworICAgIGNvbnN0IGNoYXIqIGRlbGV0ZUZ1bmN0aW9uID0gIihmdW5jdGlvbiBkZWwob2JqZWN0
LCBrZXkpIHsgcmV0dXJuIGRlbGV0ZSBvYmplY3Rba2V5XTsgfSkiOworCisgICAgeworICAgICAg
ICAvLyBDYW4ndCBjYWxsIFN5bWJvbCBhcyBhIGNvbnN0cnVjdG9yIHNpbmNlIGl0J3Mgbm90IHN1
YmNsYXNzYWJsZS4KKyAgICAgICAgYXV0byByZXN1bHQgPSBldmFsdWF0ZVNjcmlwdCgiU3ltYm9s
KCdkb3BlJyk7Iik7CisgICAgICAgIGNoZWNrKEpTVmFsdWVHZXRUeXBlKGNvbnRleHQsIHJlc3Vs
dC52YWx1ZSgpKSA9PSBrSlNUeXBlU3ltYm9sLCAiZG9wZSBnZXQgdHlwZSBpcyBhIHN5bWJvbCIp
OworICAgICAgICBjaGVjayhKU1ZhbHVlSXNTeW1ib2woY29udGV4dCwgcmVzdWx0LnZhbHVlKCkp
LCAiZG9wZSBpcyBhIHN5bWJvbCIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQVBJU3RyaW5n
IGRlc2NyaXB0aW9uKCJkb3BlIik7CisgICAgICAgIEpTVmFsdWVSZWYgc3ltYm9sID0gSlNWYWx1
ZU1ha2VTeW1ib2woY29udGV4dCwgZGVzY3JpcHRpb24pOworICAgICAgICBjaGVjayhmdW5jdGlv
blJldHVybnNUcnVlKGlzU3ltYm9sRnVuY3Rpb24sIHN5bWJvbCksICJKU1ZhbHVlTWFrZVN5bWJv
bCBtYWtlcyBhIHN5bWJvbCB2YWx1ZSIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0byBv
YmplY3RzID0gaW50ZXJlc3RpbmdPYmplY3RzKCk7CisgICAgICAgIGF1dG8ga2V5cyA9IGludGVy
ZXN0aW5nS2V5cygpOworCisgICAgICAgIGZvciAoYXV0byYgb2JqZWN0IDogb2JqZWN0cykgewor
ICAgICAgICAgICAgZGF0YUxvZ0xuKCJcbm5leHQgb2JqZWN0OiAiLCBiaXR3aXNlX2Nhc3Q8SlND
OjpKU1ZhbHVlPihvYmplY3QpKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYga2V5IDoga2V5cykg
eworICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiVXNpbmcga2V5OiAiLCBiaXR3aXNlX2Nhc3Q8
SlNDOjpKU1ZhbHVlPihrZXkpKTsKKyAgICAgICAgICAgICAgICBjaGVja0pTQW5kQVBJTWF0Y2go
CisgICAgICAgICAgICAgICAgICAgIFsmXSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gY2FsbEZ1bmN0aW9uKGdldEZ1bmN0aW9uLCBvYmplY3QsIGtleSk7CisgICAgICAgICAgICAg
ICAgICAgIH0sIFsmXSAoSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gSlNPYmplY3RHZXRQcm9wZXJ0eUtleShjb250ZXh0LCBvYmplY3QsIGtl
eSwgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgfSwgImNoZWNraW5nIGdldCBwcm9w
ZXJ0eSBrZXlzIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB7Cisg
ICAgICAgIGF1dG8ganNPYmplY3RzID0gaW50ZXJlc3RpbmdPYmplY3RzKCk7CisgICAgICAgIGF1
dG8gYXBpT2JqZWN0cyA9IGludGVyZXN0aW5nT2JqZWN0cygpOworICAgICAgICBhdXRvIGtleXMg
PSBpbnRlcmVzdGluZ0tleXMoKTsKKworICAgICAgICBKU1ZhbHVlUmVmIHRoZUFuc3dlciA9IEpT
VmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIDQyKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBqc09iamVjdHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYga2V5
IDoga2V5cykgeworICAgICAgICAgICAgICAgIEpTT2JqZWN0UmVmIGpzT2JqZWN0ID0ganNPYmpl
Y3RzW2ldOworICAgICAgICAgICAgICAgIEpTT2JqZWN0UmVmIGFwaU9iamVjdCA9IGFwaU9iamVj
dHNbaV07CisgICAgICAgICAgICAgICAgY2hlY2tKU0FuZEFQSU1hdGNoKAorICAgICAgICAgICAg
ICAgICAgICBbJl0geworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxGdW5jdGlv
bihzZXRGdW5jdGlvbiwganNPYmplY3QsIGtleSwgdGhlQW5zd2VyKTsKKyAgICAgICAgICAgICAg
ICAgICAgfSAsIFsmXSAoSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBKU09iamVjdFNldFByb3BlcnR5S2V5KGNvbnRleHQsIGFwaU9iamVjdCwga2V5LCB0
aGVBbnN3ZXIsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSwgZXhjZXB0aW9uKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKyAg
ICAgICAgICAgICAgICAgICAgfSwgInNldHRpbmcgcHJvcGVydHkga2V5cyB0byB0aGUgYW5zd2Vy
Iik7CisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZ2V0IGlzIHRoZSBzYW1lIG9uIEFQSSBvYmpl
Y3QuCisgICAgICAgICAgICAgICAgY2hlY2tKU0FuZEFQSU1hdGNoKAorICAgICAgICAgICAgICAg
ICAgICBbJl0geworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxGdW5jdGlvbihn
ZXRGdW5jdGlvbiwgYXBpT2JqZWN0LCBrZXkpOworICAgICAgICAgICAgICAgICAgICB9LCBbJl0g
KEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEpTT2JqZWN0R2V0UHJvcGVydHlLZXkoY29udGV4dCwgYXBpT2JqZWN0LCBrZXksIGV4Y2VwdGlv
bik7CisgICAgICAgICAgICAgICAgICAgIH0sICJnZXR0aW5nIHByb3BlcnR5IGtleXMgZnJvbSBB
UEkgb2JqZWN0cyIpOworICAgICAgICAgICAgICAgIC8vIENoZWNrIGdldCBpcyB0aGUgc2FtZSBv
biByZXNwZWN0aXZlIG9iamVjdHMuCisgICAgICAgICAgICAgICAgY2hlY2tKU0FuZEFQSU1hdGNo
KAorICAgICAgICAgICAgICAgICAgICBbJl0geworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGNhbGxGdW5jdGlvbihnZXRGdW5jdGlvbiwganNPYmplY3QsIGtleSk7CisgICAgICAgICAg
ICAgICAgICAgIH0sIFsmXSAoSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gSlNPYmplY3RHZXRQcm9wZXJ0eUtleShjb250ZXh0LCBhcGlPYmpl
Y3QsIGtleSwgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgfSwgImdldHRpbmcgcHJv
cGVydHkga2V5cyBmcm9tIHJlc3BlY3RpdmUgb2JqZWN0cyIpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgeworICAgICAgICBhdXRvIG9iamVjdHMgPSBpbnRlcmVzdGlu
Z09iamVjdHMoKTsKKyAgICAgICAgYXV0byBrZXlzID0gaW50ZXJlc3RpbmdLZXlzKCk7CisKKyAg
ICAgICAgSlNWYWx1ZVJlZiB0aGVBbnN3ZXIgPSBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCA0
Mik7CisgICAgICAgIGZvciAoYXV0byYgb2JqZWN0IDogb2JqZWN0cykgeworICAgICAgICAgICAg
ZGF0YUxvZ0xuKCJcbk5leHQgb2JqZWN0OiAiLCBiaXR3aXNlX2Nhc3Q8SlNDOjpKU1ZhbHVlPihv
YmplY3QpKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYga2V5IDoga2V5cykgeworICAgICAgICAg
ICAgICAgIGRhdGFMb2dMbigiVXNpbmcga2V5OiAiLCBiaXR3aXNlX2Nhc3Q8SlNDOjpKU1ZhbHVl
PihrZXkpKTsKKyAgICAgICAgICAgICAgICBjaGVja0pTQW5kQVBJTWF0Y2goCisgICAgICAgICAg
ICAgICAgICAgIFsmXSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbEZ1bmN0
aW9uKGhhc0Z1bmN0aW9uLCBvYmplY3QsIGtleSk7CisgICAgICAgICAgICAgICAgICAgIH0sIFsm
XSAoSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIEpTT2JqZWN0SGFzUHJvcGVydHlLZXkoY29u
dGV4dCwgb2JqZWN0LCBrZXksIGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgICAgICB9LCAi
Y2hlY2tpbmcgaGFzIHByb3BlcnR5IGtleXMgdW5zZXQiKTsKKworICAgICAgICAgICAgICAgIGNo
ZWNrKCEhY2FsbEZ1bmN0aW9uKHNldEZ1bmN0aW9uLCBvYmplY3QsIGtleSwgdGhlQW5zd2VyKSwg
InNldCBwcm9wZXJ0eSB0byB0aGUgYW5zd2VyIik7CisKKyAgICAgICAgICAgICAgICBjaGVja0pT
QW5kQVBJTWF0Y2goCisgICAgICAgICAgICAgICAgICAgIFsmXSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gY2FsbEZ1bmN0aW9uKGhhc0Z1bmN0aW9uLCBvYmplY3QsIGtleSk7Cisg
ICAgICAgICAgICAgICAgICAgIH0sIFsmXSAoSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIEpT
T2JqZWN0SGFzUHJvcGVydHlLZXkoY29udGV4dCwgb2JqZWN0LCBrZXksIGV4Y2VwdGlvbikpOwor
ICAgICAgICAgICAgICAgICAgICB9LCAiY2hlY2tpbmcgaGFzIHByb3BlcnR5IGtleXMgc2V0Iik7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB7CisgICAgICAgIGF1dG8g
b2JqZWN0cyA9IGludGVyZXN0aW5nT2JqZWN0cygpOworICAgICAgICBhdXRvIGtleXMgPSBpbnRl
cmVzdGluZ0tleXMoKTsKKworICAgICAgICBKU1ZhbHVlUmVmIHRoZUFuc3dlciA9IEpTVmFsdWVN
YWtlTnVtYmVyKGNvbnRleHQsIDQyKTsKKyAgICAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBvYmpl
Y3RzKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIlxuTmV4dCBvYmplY3Q6ICIsIGJpdHdpc2Vf
Y2FzdDxKU0M6OkpTVmFsdWU+KG9iamVjdCkpOworICAgICAgICAgICAgZm9yIChhdXRvJiBrZXkg
OiBrZXlzKSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJVc2luZyBrZXk6ICIsIGJpdHdp
c2VfY2FzdDxKU0M6OkpTVmFsdWU+KGtleSkpOworICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRB
UElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBjYWxsRnVuY3Rpb24oZGVsZXRlRnVuY3Rpb24sIG9iamVjdCwga2V5KTsKKyAg
ICAgICAgICAgICAgICAgICAgfSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgSlNP
YmplY3REZWxldGVQcm9wZXJ0eUtleShjb250ZXh0LCBvYmplY3QsIGtleSwgZXhjZXB0aW9uKSk7
CisgICAgICAgICAgICAgICAgICAgIH0sICJjaGVja2luZyBoYXMgcHJvcGVydHkga2V5cyB1bnNl
dCIpOworCisgICAgICAgICAgICAgICAgY2hlY2soISFjYWxsRnVuY3Rpb24oc2V0RnVuY3Rpb24s
IG9iamVjdCwga2V5LCB0aGVBbnN3ZXIpLCAic2V0IHByb3BlcnR5IHRvIHRoZSBhbnN3ZXIiKTsK
KworICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAg
ICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oZGVs
ZXRlRnVuY3Rpb24sIG9iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgWyZdIChK
U1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgSlNPYmplY3REZWxldGVQcm9wZXJ0eUtleShjb250
ZXh0LCBvYmplY3QsIGtleSwgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIH0sICJj
aGVja2luZyBoYXMgcHJvcGVydHkga2V5cyBzZXQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIGRhdGFMb2dMbigiQy1BUEkgdGVzdHMgaW4gQysrIGhhZCAiLCBmYWls
ZWQsICIgZmFpbHVyZXMiKTsKKyAgICByZXR1cm4gZmFpbGVkOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCmluZGV4IGU5OGQ2Y2Y1ZGRiY2UxNzhlMDBjOWRk
YjBlNTBlY2UzYWUzZDYxN2EuLmZlODkxNzU2YTE0ZjhkN2FlNjVmYzgzMzZmMDRiYjExNGJkOTgx
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5t
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KQEAgLTIz
LDYgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2ltcG9ydCAiY29uZmlnLmgiCiAj
aW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgogCiAjaW1wb3J0ICJDdXJy
ZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5oIgpAQCAtNTgzLDYgKzU4NCw3MSBAQCBzdGF0
aWMgdm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSU1haW4oKQogICAgIH0KIAogICAgIEBhdXRvcmVsZWFz
ZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10g
aW5pdF07CisgICAgICAgIEpTVmFsdWUgKnN5bWJvbCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0
OkAiU3ltYm9sKCdkb3BlJyk7Il07CisgICAgICAgIEpTVmFsdWUgKm5vdFN5bWJvbCA9IFtjb250
ZXh0IGV2YWx1YXRlU2NyaXB0OkAiJ2RvcGUnIl07CisgICAgICAgIGNoZWNrUmVzdWx0KEAiU2hv
dWxkIGJlIGEgc3ltYm9sIHZhbHVlIiwgc3ltYm9sLmlzU3ltYm9sKTsKKyAgICAgICAgY2hlY2tS
ZXN1bHQoQCJTaG91bGQgbm90IGJlIGEgc3ltYm9sIHZhbHVlIiwgIW5vdFN5bWJvbC5pc1N5bWJv
bCk7CisgICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAq
Y29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAqc3lt
Ym9sID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3U3ltYm9sRnJvbURlc2NyaXB0aW9uOkAiZG9wZSIg
aW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBjaGVja1Jlc3VsdChAIlNob3VsZCBiZSBhIGNy
ZWF0ZWQgZnJvbSBPYmMtQyIsIHN5bWJvbC5pc1N5bWJvbCk7CisgICAgfQorCisjaWYgIShkZWZp
bmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPCAxMDEzMDApIHx8IChkZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAw
MCkKKworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQg
PSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUgKmFycmF5SXRlcmF0
b3IgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIkFycmF5LnByb3RvdHlwZVtTeW1ib2wuaXRl
cmF0b3JdIl07CisgICAgICAgIEpTVmFsdWUgKml0ZXJhdG9yU3ltYm9sID0gY29udGV4dFtAIlN5
bWJvbCJdW0AiaXRlcmF0b3IiXTsKKyAgICAgICAgSlNWYWx1ZSAqYXJyYXkgPSBbSlNWYWx1ZSB2
YWx1ZVdpdGhOZXdBcnJheUluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgY2hlY2tSZXN1bHQo
QCJMb29raW5nIHVwIGJ5IHN1YnNjcmlwdCB3aXRoIHN5bWJvbCBzaG91bGQgd29yayIsIFthcnJh
eVtpdGVyYXRvclN5bWJvbF0gaXNFcXVhbDphcnJheUl0ZXJhdG9yXSk7CisgICAgICAgIGNoZWNr
UmVzdWx0KEAiTG9va2luZyB1cCBieSBtZXRob2Qgd2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsiLCBb
W2FycmF5IHZhbHVlRm9yUHJvcGVydHk6aXRlcmF0b3JTeW1ib2xdIGlzRXF1YWw6YXJyYXlJdGVy
YXRvcl0pOworICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRl
eHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUg
Kml0ZXJhdG9yU3ltYm9sID0gY29udGV4dFtAIlN5bWJvbCJdW0AiaXRlcmF0b3IiXTsKKyAgICAg
ICAgSlNWYWx1ZSAqb2JqZWN0ID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0
OmNvbnRleHRdOworICAgICAgICBKU1ZhbHVlICp0aGVBbnN3ZXIgPSBbSlNWYWx1ZSB2YWx1ZVdp
dGhVSW50MzI6NDIgaW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBvYmplY3RbaXRlcmF0b3JT
eW1ib2xdID0gdGhlQW5zd2VyOworICAgICAgICBjaGVja1Jlc3VsdChAIlNldGluZyBieSBzdWJz
Y3JpcHQgd2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsiLCBbb2JqZWN0W2l0ZXJhdG9yU3ltYm9sXSBp
c0VxdWFsOnRoZUFuc3dlcl0pOworICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAg
ICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAg
ICAgIEpTVmFsdWUgKml0ZXJhdG9yU3ltYm9sID0gY29udGV4dFtAIlN5bWJvbCJdW0AiaXRlcmF0
b3IiXTsKKyAgICAgICAgSlNWYWx1ZSAqb2JqZWN0ID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3T2Jq
ZWN0SW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBKU1ZhbHVlICp0aGVBbnN3ZXIgPSBbSlNW
YWx1ZSB2YWx1ZVdpdGhVSW50MzI6NDIgaW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBbb2Jq
ZWN0IHNldFZhbHVlOnRoZUFuc3dlciBmb3JQcm9wZXJ0eTppdGVyYXRvclN5bWJvbF07CisgICAg
ICAgIGNoZWNrUmVzdWx0KEAiU2V0aW5nIGJ5IG1ldGhvZCB3aXRoIHN5bWJvbCBzaG91bGQgd29y
ayIsIFtvYmplY3RbaXRlcmF0b3JTeW1ib2xdIGlzRXF1YWw6dGhlQW5zd2VyXSk7CisgICAgfQor
CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtb
SlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAqaXRlcmF0b3JTeW1ib2wg
PSBjb250ZXh0W0AiU3ltYm9sIl1bQCJpdGVyYXRvciJdOworICAgICAgICBKU1ZhbHVlICpvYmpl
Y3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdPYmplY3RJbkNvbnRleHQ6Y29udGV4dF07CisgICAg
ICAgIEpTVmFsdWUgKnRoZUFuc3dlciA9IFtKU1ZhbHVlIHZhbHVlV2l0aFVJbnQzMjo0MiBpbkNv
bnRleHQ6Y29udGV4dF07CisgICAgICAgIG9iamVjdFtpdGVyYXRvclN5bWJvbF0gPSB0aGVBbnN3
ZXI7CisgICAgICAgIGNoZWNrUmVzdWx0KEAiaGFzIHByb3BlcnR5IHdpdGggc3ltYm9sIHNob3Vs
ZCB3b3JrIiwgW29iamVjdCBoYXNQcm9wZXJ0eTppdGVyYXRvclN5bWJvbF0pOworICAgIH0KKwor
ICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pT
Q29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUgKml0ZXJhdG9yU3ltYm9sID0g
Y29udGV4dFtAIlN5bWJvbCJdW0AiaXRlcmF0b3IiXTsKKyAgICAgICAgSlNWYWx1ZSAqb2JqZWN0
ID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOworICAgICAg
ICBKU1ZhbHVlICp0aGVBbnN3ZXIgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhVSW50MzI6NDIgaW5Db250
ZXh0OmNvbnRleHRdOworICAgICAgICBjaGVja1Jlc3VsdChAImRlbGV0ZSBwcm9wZXJ0eSB3aXRo
IHN5bWJvbCBzaG91bGQgd29yayB3aXRob3V0IHByb3BlcnR5IiwgW29iamVjdCBkZWxldGVQcm9w
ZXJ0eTppdGVyYXRvclN5bWJvbF0pOworICAgICAgICBvYmplY3RbaXRlcmF0b3JTeW1ib2xdID0g
dGhlQW5zd2VyOworICAgICAgICBjaGVja1Jlc3VsdChAImRlbGV0ZSBwcm9wZXJ0eSB3aXRoIHN5
bWJvbCBzaG91bGQgd29yayB3aXRoIHByb3BlcnR5IiwgW29iamVjdCBkZWxldGVQcm9wZXJ0eTpp
dGVyYXRvclN5bWJvbF0pOworICAgICAgICBjaGVja1Jlc3VsdChAImRlbGV0ZSBzaG91bGQgYmUg
ZmFsc2Ugd2l0aCBub24tY29uZmlndXJhYmxlIHByb3BlcnR5IiwgIVtjb250ZXh0W0AiQXJyYXki
XSBkZWxldGVQcm9wZXJ0eTpAInByb3RvdHlwZSJdKTsKKyAgICB9CisKKyNlbmRpZiAvLyAhKGRl
ZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA8IDEwMTMwMCkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEw
MDAwKQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgIEpTQ29sbGVjdGlvbiogbXlQ
cml2YXRlUHJvcGVydGllcyA9IFtbSlNDb2xsZWN0aW9uIGFsbG9jXSBpbml0XTsKIAogICAgICAg
ICBAYXV0b3JlbGVhc2Vwb29sIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2Rm
NjIyYzMzYTY2YjM3NWQwNGViMzQ3N2ExYjExMGRhNTYzNjdjNi4uOWZhYzFkMDY2NmQ3YTRlMDFl
ZWZlNTVkNTZhNThiZGZkNjRjMTBlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTEzNjcsNiArMTM2Nyw3IEBACiAJCTUzMTFCRDRCMUVBNTgxRTUwMDUyNTI4MSAvKiBXYXNtT01H
UGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMx
MUJENDkxRUE1ODFFNTAwNTI1MjgxIC8qIFdhc21PTUdQbGFuLmggKi87IH07CiAJCTUzMTM3NEJE
MUQ1Q0U2NzYwMEFGN0EwQiAvKiBXYXNtUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxMzc0QkMxRDVDRTY3NjAwQUY3QTBCIC8qIFdhc21QbGFu
LmggKi87IH07CiAJCTUzMTM3NEJGMUQ1Q0U5NTAwMEFGN0EwQiAvKiBXYXNtUGxhbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzEzNzRCRTFENUNF
OTUwMDBBRjdBMEIgLyogV2FzbVBsYW4uY3BwICovOyB9OworCQk1MzFENEUxRDFGNTlEODg5MDBF
QzgzNkMgLyogdGVzdGFwaS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MzFENEUxOTFGNTlDREQyMDBFQzgzNkMgLyogdGVzdGFwaS5jcHAgKi87IH07
CiAJCTUzM0IxNURGMURDN0Y0NjMwMDRENTAwQSAvKiBXYXNtT3BzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzNCMTVERTFEQzdGNDYzMDA0RDUwMEEg
LyogV2FzbU9wcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUzNDFGQzcwMURBQzMzRTUwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDFG
QzZGMURBQzMzRTUwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcCAqLzsgfTsK
IAkJNTM0MUZDNzIxREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDFGQzcxMURB
QzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggKi87IH07CkBAIC0zOTQ3
LDYgKzM5NDgsNyBAQAogCQk1MzExQkQ0OTFFQTU4MUU1MDA1MjUyODEgLyogV2FzbU9NR1BsYW4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbU9NR1BsYW4uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxMzc0QkMxRDVDRTY3NjAwQUY3QTBCIC8qIFdhc21Q
bGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21QbGFuLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMTM3NEJFMUQ1Q0U5NTAwMEFGN0EwQiAvKiBXYXNt
UGxhbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtUGxhbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzMUQ0RTE5MUY1OUNERDIwMEVDODM2
QyAvKiB0ZXN0YXBpLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHRlc3RhcGkuY3BwOyBwYXRoID0g
QVBJL3Rlc3RzL3Rlc3RhcGkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzNC
MTVERTFEQzdGNDYzMDA0RDUwMEEgLyogV2FzbU9wcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXYXNtT3BzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDFG
QzZGMURBQzMzRTUwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3Bw
OyBwYXRoID0gYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUzNDFGQzcxMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVj
a1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzV2FzbUJvdW5kc0No
ZWNrVmFsdWUuaDsgcGF0aCA9IGIzL0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM5NzcsNyArMzk3OSw2IEBACiAJCTUzOTE3RTdBMUI3OTA2
RTQwMDBFQkQzMyAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZUZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Mzkx
N0U3QzFCNzkxMTA2MDAwRUJEMzMgLyogSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzOTE3RTgzMUI3OTFDQjgwMDBFQkQzMyAv
KiBUeXBlZEFycmF5UHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBuYW1lID0gVHlwZWRBcnJheVByb3RvdHlwZS5qczsgcGF0aCA9IGJ1aWx0aW5zL1R5cGVkQXJy
YXlQcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKLQkJNTM5RUIwNzEx
RDU1M0RGODAwQzgyRUY3IC8qIHRlc3RXYXNtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IHRlc3RXYXNtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTM5RkI4QjkxQzk5REE3QzAwOTQwRkExIC8qIEpTQXJyYXlJbmxpbmVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXJyYXlJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUzQjBCRTMzMUU1NjFBQzkwMEE4RkMyOSAvKiBHZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdldHRlclNl
dHRlckFjY2Vzc0Nhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0IwQkUz
NTFFNTYxQjA5MDBBOEZDMjkgLyogUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm94eWFibGVBY2Nlc3NDYXNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU4OTUsMTAgKzU4OTYsMTAgQEAKIAkJCQlGRUI1MUY2
QjFBOTdCNjg4MDAxRjkyMUMgLyogUmVncmVzczE0MTgwOS5tbSAqLywKIAkJCQlGRUNCOEIyOTFE
MjVDQUJCMDA2RjI0NjMgLyogdGVzdGFwaS1mdW5jdGlvbi1vdmVycmlkZXMuanMgKi8sCiAJCQkJ
MTRCRDVBMkQwQTNFOTFGNjAwQkFGNTlDIC8qIHRlc3RhcGkuYyAqLywKKwkJCQk1MzFENEUxOTFG
NTlDREQyMDBFQzgzNkMgLyogdGVzdGFwaS5jcHAgKi8sCiAJCQkJMTREODU3NzQwQTQ2OTZDODAw
MzIxNDZDIC8qIHRlc3RhcGkuanMgKi8sCiAJCQkJODZEMjIyMTkxNjdFRjk0NDAwMjRDODA0IC8q
IHRlc3RhcGkubW0gKi8sCiAJCQkJNjUxMTIyRTUxNDA0NjlCQTAwMkIxMDFEIC8qIHRlc3RSZWdF
eHAuY3BwICovLAotCQkJCTUzOUVCMDcxMUQ1NTNERjgwMEM4MkVGNyAvKiB0ZXN0V2FzbS5jcHAg
Ki8sCiAJCQkJNTM0OTAyODIxQzcyNDJDODAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAg
Ki8sCiAJCQkJNTM0OTAyODMxQzcyNDJDODAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5oICov
LAogCQkJKTsKQEAgLTEwMjA1LDYgKzEwMjA2LDcgQEAKIAkJCQk2NTU3MEY1QTFBQTRDM0VBMDA5
QjNDMjMgLyogUmVncmVzczE0MTI3NS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUZFQjUxRjZDMUE5
N0I2ODgwMDFGOTIxQyAvKiBSZWdyZXNzMTQxODA5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0
MEY2MTAwQTRGODU2NzAwMDVGMDYxIC8qIHRlc3RhcGkuYyBpbiBTb3VyY2VzICovLAorCQkJCTUz
MUQ0RTFEMUY1OUQ4ODkwMEVDODM2QyAvKiB0ZXN0YXBpLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTg2RDIyMjFBMTY3RUY5NDQwMDI0QzgwNCAvKiB0ZXN0YXBpLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTM0OTAyODUxQzcyNzZCNzAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320196</attachid>
            <date>2017-09-07 15:56:05 -0700</date>
            <delta_ts>2017-09-07 16:00:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175836-20170907155532.patch</filename>
            <type>text/plain</type>
            <size>56706</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
OTgyNTA3OTliYTFhNWE4YmZiMjc3MjlmMzM5ZjI3MWIzNGNiMjFlLi44M2JlMjcyYjNkNjdiOGQ0
MDc1NDhmYWEzMjJhMWQ5MjFhYmRhMzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OSBAQAorMjAxNy0wOS0wNiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDIEFQSV0gV2Ugc2hvdWxkIHN1cHBvcnQgdGhlIHN5bWJvbCB0
eXBlIGluIG91ciBDL09iai1DIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1ODM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRm9yIHdoYXRldmVyIHJlYXNvbiwgd2hlbmV2ZXIgd2UgYWRkZWQgc3Vw
cG9ydCBmb3Igc3ltYm9scyBpbiBKU0Mgd2UgbmV2ZXIgZXh0ZW5kZWQgc3VjaAorICAgICAgICBz
dXBwb3J0IHRvIG91ciBDL09iai1DIEFQSXMuIFRoaXMgcGF0Y2ggcmVtZWRpZXMgdGhhdCBwcm9i
bGVtLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIGZvbGxvd2luZyBBUEkgYWRkaXRp
b25zOgorICAgICAgICAxKSBUZXN0IGlmIGEgSlNWYWx1ZS9KU1ZhbHVlUmVmIGlzIGEgc3ltYm9s
IHZpYSBhbnkgb2YgdGhlIG1ldGhvZHMgQVBJIGFyZSBhYmxlIHRvIHRlc3QgZm9yIHRoZSB0eXBl
cyBvZiBvdGhlciBKU1ZhbHVlcy4KKyAgICAgICAgMikgQ3JlYXRlIGEgc3ltYm9sIG9uIGJvdGgg
QVBJcy4KKyAgICAgICAgMykgR2V0L1NldC9EZWxldGUvRGVmaW5lIHByb3BlcnR5IG5vdyB0YWtl
IGlkcyBpbiB0aGUgT2JqLUMgQVBJLgorICAgICAgICA0KSBBZGQgR2V0L1NldC9EZWxldGUgaW4g
dGhlIEMgQVBJLgorCisgICAgICAgIFdlIGNhbiBkbyAzIGJlY2F1c2UgaXQgaXMgYm90aCBiaW5h
cnkgYW5kIHNvdXJjZSBjb21wYXRhYmxlIHdpdGggdGhlIGV4aXN0aW5nIEFQSS4KKyAgICAgICAg
SSBhZGRlZCB0aGUgNCBhZGRpdGlvbiBiZWNhdXNlIHRoZSBjdXJyZW50IHByb3BlcnR5IGFjY2Vz
cyBBUElzCisgICAgICAgIG9ubHkgaGF2ZSB0aGUgYWJpbGl0eSB0byBnZXQgU3RyaW5ncy4gSXQg
d2FzIHBvc3NpYmxlIHRvIG1lcmdlCisgICAgICAgIHN5bWJvbHMgaW50byBKU1N0cmluZ1JlZiBi
dXQgdGhhdCBmZWx0IGNvbmZ1c2luZyBhbmQgZXhwb3NlcworICAgICAgICBpbXBsZW1lbnRhdGlv
biBkZXRhaWxzIG9mIG91ciBlbmdpbmUuIFRoZSBuZXcgZnVuY3Rpb25zIG1hdGNoIHRoZQorICAg
ICAgICBzYW1lIG1lYW5pbmcgdGhhdCB0aGV5IGhhdmUgaW4gSlMuCisKKyAgICAgICAgKiBBUEkv
SlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3RIYXNQcm9wZXJ0eUtleSk6CisgICAg
ICAgIChKU09iamVjdEdldFByb3BlcnR5S2V5KToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJvcGVy
dHlLZXkpOgorICAgICAgICAoSlNPYmplY3REZWxldGVQcm9wZXJ0eUtleSk6CisgICAgICAgICog
QVBJL0pTT2JqZWN0UmVmLmg6CisgICAgICAgICogQVBJL0pTVmFsdWUuaDoKKyAgICAgICAgKiBB
UEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKCtbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdTeW1ib2xGcm9t
RGVzY3JpcHRpb246aW5Db250ZXh0Ol0pOgorICAgICAgICAocGVyZm9ybVByb3BlcnR5T3BlcmF0
aW9uKToKKyAgICAgICAgKC1bSlNWYWx1ZSB2YWx1ZUZvclByb3BlcnR5OnZhbHVlRm9yUHJvcGVy
dHk6XSk6CisgICAgICAgICgtW0pTVmFsdWUgc2V0VmFsdWU6Zm9yUHJvcGVydHk6c2V0VmFsdWU6
Zm9yUHJvcGVydHk6XSk6CisgICAgICAgICgtW0pTVmFsdWUgZGVsZXRlUHJvcGVydHk6ZGVsZXRl
UHJvcGVydHk6XSk6CisgICAgICAgICgtW0pTVmFsdWUgaGFzUHJvcGVydHk6aGFzUHJvcGVydHk6
XSk6CisgICAgICAgICgtW0pTVmFsdWUgZGVmaW5lUHJvcGVydHk6ZGVzY3JpcHRvcjpkZWZpbmVQ
cm9wZXJ0eTpkZXNjcmlwdG9yOl0pOgorICAgICAgICAoLVtKU1ZhbHVlIGlzU3ltYm9sXSk6Cisg
ICAgICAgICgtW0pTVmFsdWUgb2JqZWN0Rm9yS2V5ZWRTdWJzY3JpcHQ6XSk6CisgICAgICAgICgt
W0pTVmFsdWUgc2V0T2JqZWN0OmZvcktleWVkU3Vic2NyaXB0Ol0pOgorICAgICAgICAoLVtKU1Zh
bHVlIHZhbHVlRm9yUHJvcGVydHk6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmFsdWUgc2V0
VmFsdWU6Zm9yUHJvcGVydHk6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmFsdWUgZGVsZXRl
UHJvcGVydHk6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmFsdWUgaGFzUHJvcGVydHk6XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmFsdWUgZGVmaW5lUHJvcGVydHk6ZGVzY3JpcHRvcjpd
KTogRGVsZXRlZC4KKyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5jcHA6CisgICAgICAgIChKU1Zh
bHVlR2V0VHlwZSk6CisgICAgICAgIChKU1ZhbHVlSXNTeW1ib2wpOgorICAgICAgICAoSlNWYWx1
ZU1ha2VTeW1ib2wpOgorICAgICAgICAqIEFQSS9KU1ZhbHVlUmVmLmg6CisgICAgICAgICogQVBJ
L3Rlc3RzL3Rlc3RhcGkuYzoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIEFQSS90ZXN0cy90
ZXN0YXBpLmNwcDogQWRkZWQuCisgICAgICAgIChBUElTdHJpbmc6OkFQSVN0cmluZyk6CisgICAg
ICAgIChBUElTdHJpbmc6On5BUElTdHJpbmcpOgorICAgICAgICAoQVBJU3RyaW5nOjpvcGVyYXRv
ciBKU1N0cmluZ1JlZik6CisgICAgICAgIChBUElDb250ZXh0OjpBUElDb250ZXh0KToKKyAgICAg
ICAgKEFQSUNvbnRleHQ6On5BUElDb250ZXh0KToKKyAgICAgICAgKEFQSUNvbnRleHQ6Om9wZXJh
dG9yIEpTR2xvYmFsQ29udGV4dFJlZik6CisgICAgICAgIChBUElWZWN0b3I6OkFQSVZlY3Rvcik6
CisgICAgICAgIChBUElWZWN0b3I6On5BUElWZWN0b3IpOgorICAgICAgICAoQVBJVmVjdG9yOjph
cHBlbmQpOgorICAgICAgICAodGVzdENBUElWaWFDcHApOgorICAgICAgICAoVGVzdEFQSTo6ZXZh
bHVhdGVTY3JpcHQpOgorICAgICAgICAoVGVzdEFQSTo6Y2FsbEZ1bmN0aW9uKToKKyAgICAgICAg
KFRlc3RBUEk6OmZ1bmN0aW9uUmV0dXJuc1RydWUpOgorICAgICAgICAoVGVzdEFQSTo6Y2hlY2sp
OgorICAgICAgICAoVGVzdEFQSTo6Y2hlY2tKU0FuZEFQSU1hdGNoKToKKyAgICAgICAgKFRlc3RB
UEk6OmludGVyZXN0aW5nT2JqZWN0cyk6CisgICAgICAgIChUZXN0QVBJOjppbnRlcmVzdGluZ0tl
eXMpOgorICAgICAgICAoVGVzdEFQSTo6cnVuKToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFw
aS5tbToKKyAgICAgICAgKHRlc3RPYmplY3RpdmVDQVBJTWFpbik6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNy0wOS0wNSAgU2FhbSBC
YXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBpc05vdENlbGxTcGVjdWxhdGlv
biBpcyB3cm9uZyB3aXRoIHJlc3BlY3QgdG8gU3BlY0VtcHR5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IGNlMzdjYzY5MGY2NWYwNzAyM2Q3ZWVhYzMxNmJm
MzEyYzcyMWIyYjcuLjAwNjY2MzlkOWQzMDEyMjM1MTBmOGE1MzQ4OWI4ZGNkZWQxNzNhMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCkBAIC0zMzMsNiArMzMz
LDk0IEBAIHZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVj
dFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlCiAgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVk
ZWQoZXhlYywgZXhjZXB0aW9uKTsKIH0KIAorYm9vbCBKU09iamVjdEhhc1Byb3BlcnR5S2V5KEpT
Q29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoIWN0eCkgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBFeGVjU3RhdGUq
IGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKworICAg
IEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAgICBJZGVudGlmaWVyIGlkZW50
ID0gdG9KUyhleGVjLCBrZXkpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4
Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRU
aHJvdykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCByZXN1bHQgPSBqc09iamVj
dC0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpOworICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVk
KGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSlNWYWx1ZVJlZiBK
U09iamVjdEdldFByb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVj
dCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoIWN0
eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBKU0xvY2tI
b2xkZXIgbG9ja2VyKGV4ZWMpOworCisgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmpl
Y3QpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSB0b0pTKGV4ZWMsIGtleSkudG9Qcm9wZXJ0eUtl
eShleGVjKTsKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoZXhlYywgZXhjZXB0aW9u
KSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIEpTVmFsdWUganNWYWx1ZSA9IGpzT2JqZWN0LT5nZXQoZXhlYywgaWRlbnQpOworICAg
IGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHRv
UmVmKGV4ZWMsIGpzVmFsdWUpOworfQorCit2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHlLZXkoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIGtleSwgSlNWYWx1
ZVJlZiB2YWx1ZSwgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMo
Y3R4KTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIo
dm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKworICAgIEpT
T2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0
b0pTKGV4ZWMsIHZhbHVlKTsKKworICAgIElkZW50aWZpZXIgaWRlbnQgPSB0b0pTKGV4ZWMsIGtl
eSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQo
ZXhlYywgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBib29sIGRvZXNOb3RIYXZlUHJvcGVydHkgPSBhdHRyaWJ1dGVzICYmICFq
c09iamVjdC0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpOworICAgIGlmIChMSUtFTFkoIXNjb3Bl
LmV4Y2VwdGlvbigpKSkgeworICAgICAgICBpZiAoZG9lc05vdEhhdmVQcm9wZXJ0eSkgeworICAg
ICAgICAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2MoanNWYWx1ZSwgYXR0cmlidXRlcyk7Cisg
ICAgICAgICAgICBqc09iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVydHkoanNP
YmplY3QsIGV4ZWMsIGlkZW50LCBkZXNjLCBmYWxzZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChqc09iamVjdCk7CisgICAgICAgICAgICBqc09i
amVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KGpzT2JqZWN0LCBleGVjLCBpZGVudCwganNWYWx1ZSwg
c2xvdCk7CisgICAgICAgIH0KKyAgICB9CisgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoZXhl
YywgZXhjZXB0aW9uKTsKK30KKworYm9vbCBKU09iamVjdERlbGV0ZVByb3BlcnR5S2V5KEpTQ29u
dGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoIWN0eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBFeGVjU3RhdGUqIGV4
ZWMgPSB0b0pTKGN0eCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKworICAgIEpT
T2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0g
dG9KUyhleGVjLCBrZXkpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4Y2Vw
dGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJv
dykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+
bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoanNPYmplY3QsIGV4ZWMsIGlkZW50KTsKKyAg
ICBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChleGVjLCBleGNlcHRpb24pOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoSlNDb250
ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgaWYgKCFjdHgpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNPYmplY3RSZWYuaAppbmRleCA5NWQ1M2I3ZjRlNThlOTZmMGNiYzMxNTk1YWY5
YzQ2MTk3OGFhNDNkLi5mMmE2ZWVjZjVlNzVkMjJhMTBkYWE3ZjdmNzQ1ZDM0ZmYyOTY2MDJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oCkBAIC01MzYsOSArNTM2LDkg
QEAgSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9wZXJ0eShKU0NvbnRleHRSZWYg
Y3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEoKIEBwYXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250
ZXh0IHRvIHVzZS4KIEBwYXJhbSBvYmplY3QgVGhlIEpTT2JqZWN0IHdob3NlIHByb3BlcnR5IHlv
dSB3YW50IHRvIHNldC4KIEBwYXJhbSBwcm9wZXJ0eU5hbWUgQSBKU1N0cmluZyBjb250YWluaW5n
IHRoZSBwcm9wZXJ0eSdzIG5hbWUuCi1AcGFyYW0gdmFsdWUgQSBKU1ZhbHVlIHRvIHVzZSBhcyB0
aGUgcHJvcGVydHkncyB2YWx1ZS4KLUBwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNW
YWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxM
IGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCitAcGFyYW0gdmFsdWUg
QSBKU1ZhbHVlUmVmIHRvIHVzZSBhcyB0aGUgcHJvcGVydHkncyB2YWx1ZS4KIEBwYXJhbSBhdHRy
aWJ1dGVzIEEgbG9naWNhbGx5IE9SZWQgc2V0IG9mIEpTUHJvcGVydHlBdHRyaWJ1dGVzIHRvIGdp
dmUgdG8gdGhlIHByb3BlcnR5LgorQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1Zh
bHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwg
aWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICovCiBKU19FWFBPUlQg
dm9pZCBKU09iamVjdFNldFByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9i
amVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1Byb3Bl
cnR5QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCkBAIC01
NTUsNiArNTU1LDU0IEBAIEpTX0VYUE9SVCBib29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHkoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0CiAKIC8qIQogQGZ1bmN0aW9u
CitAYWJzdHJhY3QgVGVzdHMgd2hldGhlciBhbiBvYmplY3QgaGFzIGEgZ2l2ZW4gcHJvcGVydHkg
dXNpbmcgYSBKU1ZhbHVlUmVmIGFzIHRoZSBwcm9wZXJ0eSBrZXkuCitAcGFyYW0gb2JqZWN0IFRo
ZSBKU09iamVjdCB0byB0ZXN0LgorQHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250
YWluaW5nIHRoZSBwcm9wZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVy
dHkuCitAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2gg
dG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNh
cmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgorQHJlc3VsdCB0cnVlIGlmIHRoZSBvYmplY3QgaGFz
IGEgcHJvcGVydHkgd2hvc2UgbmFtZSBtYXRjaGVzIHByb3BlcnR5S2V5LCBvdGhlcndpc2UgZmFs
c2UuCitAZGlzY3Vzc2lvbiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHBlcmZvcm1pbmcg
InByb3BlcnR5S2V5IGluIG9iamVjdCIgZnJvbSBKYXZhU2NyaXB0LgorKi8KK0pTX0VYUE9SVCBi
b29sIEpTT2JqZWN0SGFzUHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYg
b2JqZWN0LCBKU1ZhbHVlUmVmIHByb3BlcnR5S2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENG
X0FWQUlMQUJMRSgxMF8xMywgMTFfMCk7CisKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgR2V0
cyBhIHByb3BlcnR5IGZyb20gYW4gb2JqZWN0IHVzaW5nIGEgSlNWYWx1ZVJlZiBhcyB0aGUgcHJv
cGVydHkga2V5LgorQHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgorQHBh
cmFtIG9iamVjdCBUaGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQgdG8gZ2V0Lgor
QHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBwcm9wZXJ0eSBr
ZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0gZXhjZXB0aW9u
IEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9u
LCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0
aW9uLgorQHJlc3VsdCBUaGUgcHJvcGVydHkncyB2YWx1ZSBpZiBvYmplY3QgaGFzIHRoZSBwcm9w
ZXJ0eSBrZXksIG90aGVyd2lzZSB0aGUgdW5kZWZpbmVkIHZhbHVlLgorQGRpc2N1c3Npb24gVGhp
cyBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyBwZXJmb3JtaW5nICJvYmplY3RbcHJvcGVydHlLZXld
IiBmcm9tIEphdmFTY3JpcHQuCisqLworSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQ
cm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVS
ZWYgcHJvcGVydHlLZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEz
LCAxMV8wKTsKKworLyohCitAZnVuY3Rpb24KK0BhYnN0cmFjdCBTZXRzIGEgcHJvcGVydHkgb24g
YW4gb2JqZWN0IHVzaW5nIGEgSlNWYWx1ZVJlZiBhcyB0aGUgcHJvcGVydHkga2V5LgorQHBhcmFt
IGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgorQHBhcmFtIG9iamVjdCBUaGUgSlNP
YmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQgdG8gc2V0LgorQHBhcmFtIHByb3BlcnR5S2V5
IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBwcm9wZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9v
a2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0gdmFsdWUgQSBKU1ZhbHVlUmVmIHRvIHVzZSBh
cyB0aGUgcHJvcGVydHkncyB2YWx1ZS4KK0BwYXJhbSBhdHRyaWJ1dGVzIEEgbG9naWNhbGx5IE9S
ZWQgc2V0IG9mIEpTUHJvcGVydHlBdHRyaWJ1dGVzIHRvIGdpdmUgdG8gdGhlIHByb3BlcnR5Lgor
QHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0
b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRv
IHN0b3JlIGFuIGV4Y2VwdGlvbi4KK0BkaXNjdXNzaW9uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNh
bWUgYXMgcGVyZm9ybWluZyAib2JqZWN0W3Byb3BlcnR5S2V5XSA9IHZhbHVlIiBmcm9tIEphdmFT
Y3JpcHQuCisqLworSlNfRVhQT1JUIHZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eUtleShKU0NvbnRl
eHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYgcHJvcGVydHlLZXksIEpT
VmFsdWVSZWYgdmFsdWUsIEpTUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEzLCAxMV8wKTsKKworLyohCitAZnVuY3Rp
b24KK0BhYnN0cmFjdCBEZWxldGVzIGEgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QgdXNpbmcgYSBK
U1ZhbHVlUmVmIGFzIHRoZSBwcm9wZXJ0eSBrZXkuCitAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24g
Y29udGV4dCB0byB1c2UuCitAcGFyYW0gb2JqZWN0IFRoZSBKU09iamVjdCB3aG9zZSBwcm9wZXJ0
eSB5b3Ugd2FudCB0byBkZWxldGUuCitAcGFyYW0gcHJvcGVydHlLZXkgQSBKU1ZhbHVlUmVmIGNv
bnRhaW5pbmcgdGhlIHByb3BlcnR5IGtleSB0byB1c2Ugd2hlbiBsb29raW5nIHVwIHRoZSBwcm9w
ZXJ0eS4KK0BwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGlj
aCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3Qg
Y2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCitAcmVzdWx0IHRydWUgaWYgdGhlIGRlbGV0ZSBv
cGVyYXRpb24gc3VjY2VlZHMsIG90aGVyd2lzZSBmYWxzZSAoZm9yIGV4YW1wbGUsIGlmIHRoZSBw
cm9wZXJ0eSBoYXMgdGhlIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSBhdHRyaWJ1dGUg
c2V0KS4KK0BkaXNjdXNzaW9uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXMgcGVyZm9ybWlu
ZyAiZGVsZXRlIG9iamVjdFtwcm9wZXJ0eUtleV0iIGZyb20gSmF2YVNjcmlwdC4KKyovCitKU19F
WFBPUlQgYm9vbCBKU09iamVjdERlbGV0ZVByb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpT
T2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBwcm9wZXJ0eUtleSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTMsIDExXzApOworCisvKiEKK0BmdW5jdGlvbgogQGFi
c3RyYWN0IEdldHMgYSBwcm9wZXJ0eSBmcm9tIGFuIG9iamVjdCBieSBudW1lcmljIGluZGV4Lgog
QHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgogQHBhcmFtIG9iamVjdCBU
aGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQgdG8gZ2V0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWUuaAppbmRleCAxNDEwZGQ3NGExN2Y5NzA3MDZlNDRkZWQyNGNjZDE3MGMz
NDc5YzJlLi5lOTdkMjY0OWZhZGU4NTI0NGM0NzE0M2ViMTIyMDQ0ODY3YzdhNjU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUuaApAQCAtMTQ5LDYgKzE0OSwxNSBAQCBOU19DTEFTU19B
VkFJTEFCTEUoMTBfOSwgN18wKQogKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFVuZGVmaW5lZEluQ29u
dGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKIAogLyohCisgQG1ldGhvZAorIEBhYnN0cmFjdCBD
cmVhdGUgYSBuZXcsIHVuaXF1ZSwgc3ltYm9sIG9iamVjdC4KKyBAcGFyYW0gZGVzY3JpcHRpb24g
VGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBzeW1ib2wgb2JqZWN0IGJlaW5nIGNyZWF0ZWQuCisgQHBh
cmFtIGNvbnRleHQgVGhlIEpTQ29udGV4dCB0byB3aGljaCB0aGUgcmVzdWx0aW5nIEpTVmFsdWUg
YmVsb25ncy4KKyBAcmVzdWx0IFRoZSBKU1ZhbHVlIHJlcHJlc2VudGluZyBhIHVuaXF1ZSBKYXZh
U2NyaXB0IHZhbHVlIHdpdGggdHlwZSBzeW1ib2wuCisgKi8KKysgKEpTVmFsdWUgKil2YWx1ZVdp
dGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246KE5TU3RyaW5nICopZGVzY3JpcHRpb24gaW5Db250
ZXh0OihKU0NvbnRleHQgKiljb250ZXh0IE5TX0FWQUlMQUJMRSgxMF8xMywgMTFfMCk7CisKKy8q
IQogQG1ldGhvZGdyb3VwIENvbnZlcnRpbmcgdG8gT2JqZWN0aXZlLUMgVHlwZXMKIEBkaXNjdXNz
aW9uIFdoZW4gY29udmVydGluZyBiZXR3ZWVuIEphdmFTY3JpcHQgdmFsdWVzIGFuZCBPYmplY3Rp
dmUtQyBvYmplY3RzIGEgY29weSBpcwogIHBlcmZvcm1lZC4gVmFsdWVzIG9mIHR5cGVzIGxpc3Rl
ZCBiZWxvdyBhcmUgY29waWVkIHRvIHRoZSBjb3JyZXNwb25kaW5nCkBAIC0zMDUsNDQgKzMxNCw2
MiBAQCBOU19DTEFTU19BVkFJTEFCTEUoMTBfOSwgN18wKQogLyohCiBAbWV0aG9kZ3JvdXAgQWNj
ZXNzaW5nIFByb3BlcnRpZXMKICovCisKKyNpZiAhKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMw
MCkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQorCiAvKiEKIEBtZXRob2QKIEBh
YnN0cmFjdCBBY2Nlc3MgYSBwcm9wZXJ0eSBvZiBhIEpTVmFsdWUuCiBAcmVzdWx0IFRoZSBKU1Zh
bHVlIGZvciB0aGUgcmVxdWVzdGVkIHByb3BlcnR5IG9yIHRoZSBKU1ZhbHVlIDxjb2RlPnVuZGVm
aW5lZDwvY29kZT4gCiAgaWYgdGhlIHByb3BlcnR5IGRvZXMgbm90IGV4aXN0LgorQGRpc2N1c3Np
b24gQ29ycmVzcG9uZHMgdG8gdGhlIEphdmFTY3JpcHQgb3BlcmF0aW9uIDxjb2RlPm9iamVjdFtw
cm9wZXJ0eV08L2NvZGU+LiBQYXNzIGFuIE5TU3RyaW5nICogdG8gYWNjZXNzIGEgbmFtZWQgcHJv
cGVydHkuIE90aGVyIHZhbGlkIHByb3BlcnRpZXMgaW5jbHVkZSBzeW1ib2xzLCBudW1iZXJzLCBh
bmQgc3RyaW5naWZpYWJsZSBvYmplY3RzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9TMTEgYW5kIGJl
bG93LCAncHJvcGVydHknIHdhcyBhbiBOU1N0cmluZyAqLgogKi8KLS0gKEpTVmFsdWUgKil2YWx1
ZUZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLSAoSlNWYWx1ZSAqKXZhbHVlRm9y
UHJvcGVydHk6KGlkKXByb3BlcnR5OwogCiAvKiEKIEBtZXRob2QKIEBhYnN0cmFjdCBTZXQgYSBw
cm9wZXJ0eSBvbiBhIEpTVmFsdWUuCitAZGlzY3Vzc2lvbiBDb3JyZXNwb25kcyB0byB0aGUgSmF2
YVNjcmlwdCBvcGVyYXRpb24gPGNvZGU+b2JqZWN0W3Byb3BlcnR5XSA9IHZhbHVlPC9jb2RlPi4g
UGFzcyBhbiBOU1N0cmluZyAqIHRvIGFjY2VzcyBhIG5hbWVkIHByb3BlcnR5LiBPdGhlciB2YWxp
ZCBwcm9wZXJ0aWVzIGluY2x1ZGUgc3ltYm9scywgbnVtYmVycywgYW5kIHN0cmluZ2lmaWFibGUg
b2JqZWN0cy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUzExIGFuZCBiZWxvdywgJ3Byb3BlcnR5JyB3
YXMgYW4gTlNTdHJpbmcgKi4KICovCi0tICh2b2lkKXNldFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9w
ZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZv
clByb3BlcnR5OihpZClwcm9wZXJ0eTsKIAogLyohCiBAbWV0aG9kCiBAYWJzdHJhY3QgRGVsZXRl
IGEgcHJvcGVydHkgZnJvbSBhIEpTVmFsdWUuCiBAcmVzdWx0IFlFUyBpZiBkZWxldGlvbiBpcyBz
dWNjZXNzZnVsLCBOTyBvdGhlcndpc2UuCitAZGlzY3Vzc2lvbiBDb3JyZXNwb25kcyB0byB0aGUg
SmF2YVNjcmlwdCBvcGVyYXRpb24gPGNvZGU+ZGVsZXRlIG9iamVjdFtwcm9wZXJ0eV08L2NvZGU+
LiBQYXNzIGFuIE5TU3RyaW5nICogdG8gYWNjZXNzIGEgbmFtZWQgcHJvcGVydHkuIE90aGVyIHZh
bGlkIHByb3BlcnRpZXMgaW5jbHVkZSBzeW1ib2xzLCBudW1iZXJzLCBhbmQgc3RyaW5naWZpYWJs
ZSBvYmplY3RzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9TMTEgYW5kIGJlbG93LCAncHJvcGVydHkn
IHdhcyBhbiBOU1N0cmluZyAqLgogKi8KLS0gKEJPT0wpZGVsZXRlUHJvcGVydHk6KE5TU3RyaW5n
ICopcHJvcGVydHk7CistIChCT09MKWRlbGV0ZVByb3BlcnR5OihpZClwcm9wZXJ0eTsKIAogLyoh
CiBAbWV0aG9kCiBAYWJzdHJhY3QgQ2hlY2sgaWYgYSBKU1ZhbHVlIGhhcyBhIHByb3BlcnR5Lgog
QGRpc2N1c3Npb24gVGhpcyBtZXRob2QgaGFzIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIHRoZSBKYXZh
U2NyaXB0IG9wZXJhdG9yIDxjb2RlPmluPC9jb2RlPi4KIEByZXN1bHQgUmV0dXJucyBZRVMgaWYg
cHJvcGVydHkgaXMgcHJlc2VudCBvbiB0aGUgdmFsdWUuCitAZGlzY3Vzc2lvbiBDb3JyZXNwb25k
cyB0byB0aGUgSmF2YVNjcmlwdCBvcGVyYXRpb24gPGNvZGU+cHJvcGVydHkgaW4gb2JqZWN0PC9j
b2RlPi4gUGFzcyBhbiBOU1N0cmluZyAqIHRvIGFjY2VzcyBhIG5hbWVkIHByb3BlcnR5LiBPdGhl
ciB2YWxpZCBwcm9wZXJ0aWVzIGluY2x1ZGUgc3ltYm9scywgbnVtYmVycywgYW5kIHN0cmluZ2lm
aWFibGUgb2JqZWN0cy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUzExIGFuZCBiZWxvdywgJ3Byb3Bl
cnR5JyB3YXMgYW4gTlNTdHJpbmcgKi4KICovCi0tIChCT09MKWhhc1Byb3BlcnR5OihOU1N0cmlu
ZyAqKXByb3BlcnR5OworLSAoQk9PTCloYXNQcm9wZXJ0eTooaWQpcHJvcGVydHk7CiAKIC8qIQog
QG1ldGhvZAogQGFic3RyYWN0IERlZmluZSBwcm9wZXJ0aWVzIHdpdGggY3VzdG9tIGRlc2NyaXB0
b3JzIG9uIEpTVmFsdWVzLgogQGRpc2N1c3Npb24gVGhpcyBtZXRob2QgbWF5IGJlIHVzZWQgdG8g
Y3JlYXRlIGEgZGF0YSBvciBhY2Nlc3NvciBwcm9wZXJ0eSBvbiBhbiBvYmplY3QuCiAgVGhpcyBt
ZXRob2Qgb3BlcmF0ZXMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBPYmplY3QuZGVmaW5lUHJvcGVy
dHkgbWV0aG9kIGluIHRoZSAKLSBKYXZhU2NyaXB0IGxhbmd1YWdlLgorIEphdmFTY3JpcHQgbGFu
Z3VhZ2UuIFBhc3MgYW4gTlNTdHJpbmcgKiB0byBhY2Nlc3MgYSBuYW1lZCBwcm9wZXJ0eS4gT3Ro
ZXIgdmFsaWQgcHJvcGVydGllcyBpbmNsdWRlIHN5bWJvbHMsIG51bWJlcnMsIGFuZCBzdHJpbmdp
ZmlhYmxlIG9iamVjdHMuIEluIG1hY09TIDEwLjEzIGFuZCBpT1MxMSBhbmQgYmVsb3csICdwcm9w
ZXJ0eScgd2FzIGFuIE5TU3RyaW5nICouCiAqLworLSAodm9pZClkZWZpbmVQcm9wZXJ0eTooaWQp
cHJvcGVydHkgZGVzY3JpcHRvcjooaWQpZGVzY3JpcHRvcjsKKworI2Vsc2UgLy8gIShkZWZpbmVk
KF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPCAxMDEzMDApIHx8IChkZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkK
KworLy8gVGhlc2UgZGVjbGFyYXRpb25zIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aGVuIHRhcmdl
dGluZyBTREtzIGZvciBsZWdhY3kgT1NzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9TMTEgYW5kIGJl
bG93LCAncHJvcGVydHknIHdhcyBhbiBOU1N0cmluZyAqLgorLSAoSlNWYWx1ZSAqKXZhbHVlRm9y
UHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7CistICh2b2lkKXNldFZhbHVlOihpZCl2YWx1
ZSBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKEJPT0wpZGVsZXRlUHJvcGVy
dHk6KE5TU3RyaW5nICopcHJvcGVydHk7CistIChCT09MKWhhc1Byb3BlcnR5OihOU1N0cmluZyAq
KXByb3BlcnR5OwogLSAodm9pZClkZWZpbmVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eSBk
ZXNjcmlwdG9yOihpZClkZXNjcmlwdG9yOwogCisjZW5kaWYgLy8gIShkZWZpbmVkKF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPCAxMDEzMDApIHx8IChkZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
KSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKKwogLyohCiBA
bWV0aG9kCiBAYWJzdHJhY3QgQWNjZXNzIGFuIGluZGV4ZWQgKG51bWVyaWNhbCkgcHJvcGVydHkg
b24gYSBKU1ZhbHVlLgpAQCAtNDAzLDYgKzQzMCwxMiBAQCBOU19DTEFTU19BVkFJTEFCTEUoMTBf
OSwgN18wKQogQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBpc09iamVjdDsKIAogLyohCisgQHBy
b3BlcnR5CisgQGFic3RyYWN0IENoZWNrIGlmIGEgSlNWYWx1ZSBpcyBhIHN5bWJvbC4KKyAqLwor
QHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBpc1N5bWJvbCBOU19BVkFJTEFCTEUoMTBfMTMsIDEx
XzApOworCisvKiEKIEBwcm9wZXJ0eQogQGFic3RyYWN0IENoZWNrIGlmIGEgSlNWYWx1ZSBpcyBh
biBhcnJheS4KICovIApAQCAtNTY5LDEzICs2MDIsMTYgQEAgQ3JlYXRlIGEgSlNWYWx1ZSBmcm9t
IGEgQ0dSZWN0LgogQC90ZXh0YmxvY2sKIAogIEFuIG9iamVjdCBrZXkgcGFzc2VkIGFzIGEgc3Vi
c2NyaXB0IHdpbGwgYmUgY29udmVydGVkIHRvIGEgSmF2YVNjcmlwdCB2YWx1ZSwKLSBhbmQgdGhl
biB0aGUgdmFsdWUgY29udmVydGVkIHRvIGEgc3RyaW5nIHVzZWQgYXMgYSBwcm9wZXJ0eSBuYW1l
LgorIGFuZCB0aGVuIHRoZSB2YWx1ZSBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcgdXNlZCBhcyBhIHBy
b3BlcnR5IG5hbWUuIEluIG1hY09TCisgMTAuMTMgYW5kIGlPUzExIGFuZCBiZWxvdywgdGhlIDxj
b2RlPmtleTwvY29kZT4gYXJndW1lbnQgb2YKKyA8Y29kZT5zZXRPYmplY3Q6b2JqZWN0IGZvcktl
eWVkU3Vic2NyaXB0OmtleTwvY29kZT4gd2FzIGFuIHJlc3RyaWN0ZWQgdG8KKyA8Y29kZT5OU1N0
cmluZyA8TlNDb3B5aW5nPiAqPC9jb2RlPiBidXQgdGhhdCByZXN0cmljdGlvbiB3YXMgbmV2ZXIg
dXNlZC4KICovCiBAaW50ZXJmYWNlIEpTVmFsdWUgKFN1YnNjcmlwdFN1cHBvcnQpCiAKIC0gKEpT
VmFsdWUgKilvYmplY3RGb3JLZXllZFN1YnNjcmlwdDooaWQpa2V5OwogLSAoSlNWYWx1ZSAqKW9i
amVjdEF0SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRleDsKLS0gKHZvaWQpc2V0T2Jq
ZWN0OihpZClvYmplY3QgZm9yS2V5ZWRTdWJzY3JpcHQ6KE5TT2JqZWN0IDxOU0NvcHlpbmc+ICop
a2V5OworLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBmb3JLZXllZFN1YnNjcmlwdDooaWQp
a2V5OwogLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBhdEluZGV4ZWRTdWJzY3JpcHQ6KE5T
VUludGVnZXIpaW5kZXg7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNWYWx1ZS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQpp
bmRleCA2OTg2ZmFlODMxZTJlY2M2ZWJjMmJlZGFlNGU2OGFjMjJmNTc4ZTgwLi5lMjgzMDM2NjM5
ZTUyYjFjMjJmZGQzNmIwYjEyNGU0MDBkZDAxZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmFsdWUubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1ZhbHVlLm1tCkBAIC0zOSw2ICszOSw3IEBACiAjaW1wb3J0ICJKU0NKU1ZhbHVlLmgiCiAjaW1w
b3J0ICJTdHJvbmcuaCIKICNpbXBvcnQgIlN0cm9uZ0lubGluZXMuaCIKKyNpbXBvcnQgPHd0Zi9F
eHBlY3RlZC5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW1wb3J0IDx3dGYvTG9jay5oPgpAQCAtMTM2LDYgKzEzNywxMyBAQCBOU1N0cmluZyAq
IGNvbnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yU2V0S2V5ID0gQCJzZXQiOwogICAgIHJldHVybiBb
SlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOkpTVmFsdWVNYWtlVW5kZWZpbmVkKFtjb250ZXh0
IEpTR2xvYmFsQ29udGV4dFJlZl0pIGluQ29udGV4dDpjb250ZXh0XTsKIH0KIAorKyAoSlNWYWx1
ZSAqKXZhbHVlV2l0aE5ld1N5bWJvbEZyb21EZXNjcmlwdGlvbjooTlNTdHJpbmcgKilkZXNjcmlw
dGlvbiBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQKK3sKKyAgICBKU1N0cmluZ1JlZiBz
dHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZyhyZWludGVycHJldF9jYXN0PENGU3Ry
aW5nUmVmPihkZXNjcmlwdGlvbikpOworICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1Zh
bHVlUmVmOkpTVmFsdWVNYWtlU3ltYm9sKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIHN0
cmluZykgaW5Db250ZXh0OmNvbnRleHRdOworfQorCisKIC0gKGlkKXRvT2JqZWN0CiB7CiAgICAg
cmV0dXJuIHZhbHVlVG9PYmplY3QoX2NvbnRleHQsIG1fdmFsdWUpOwpAQCAtMjE5LDc0ICsyMjcs
MTA2IEBAIE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXkgPSBAInNl
dCI7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVy
dHk6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHQsIHR5
cGVuYW1lIE5TU3RyaW5nRnVuY3Rpb24sIHR5cGVuYW1lIEpTVmFsdWVGdW5jdGlvbiwgdHlwZW5h
bWUuLi4gVHlwZXM+CitpbmxpbmUgRXhwZWN0ZWQ8UmVzdWx0LCBKU1ZhbHVlUmVmPiBwZXJmb3Jt
UHJvcGVydHlPcGVyYXRpb24oTlNTdHJpbmdGdW5jdGlvbiBzdHJpbmdGdW5jdGlvbiwgSlNWYWx1
ZUZ1bmN0aW9uIGpzRnVuY3Rpb24sIEpTVmFsdWUqIHZhbHVlLCBpZCBwcm9wZXJ0eUtleSwgVHlw
ZXMuLi4gYXJndW1lbnRzKQogewotICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBK
U09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoW19jb250ZXh0IEpTR2xvYmFsQ29u
dGV4dFJlZl0sIG1fdmFsdWUsICZleGNlcHRpb24pOworICAgIEpTQ29udGV4dCogY29udGV4dCA9
IFt2YWx1ZSBjb250ZXh0XTsKKyAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IG51bGxwdHI7Cisg
ICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KFtjb250ZXh0IEpTR2xvYmFs
Q29udGV4dFJlZl0sIFt2YWx1ZSBKU1ZhbHVlUmVmXSwgJmV4Y2VwdGlvbik7CiAgICAgaWYgKGV4
Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRp
b246ZXhjZXB0aW9uXTsKKyAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWRUeXBlPEpTVmFsdWVSZWY+
KGV4Y2VwdGlvbik7CiAKLSAgICBKU1N0cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRo
Q0ZTdHJpbmcoKENGU3RyaW5nUmVmKXByb3BlcnR5TmFtZSk7Ci0gICAgSlNWYWx1ZVJlZiByZXN1
bHQgPSBKU09iamVjdEdldFByb3BlcnR5KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBv
YmplY3QsIG5hbWUsICZleGNlcHRpb24pOwotICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKLSAg
ICBpZiAoZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW19jb250ZXh0IHZhbHVlRnJvbU5vdGlm
eUV4Y2VwdGlvbjpleGNlcHRpb25dOworICAgIFJlc3VsdCByZXN1bHQ7CisgICAgLy8gSWYgaXQn
cyBhIE5TU3RyaW5nIGFscmVhZHksIHJlZHVjZSBpbmRpcmVjdGlvbiBhbmQganVzdCBwYXNzIHRo
ZSBOU1N0cmluZy4KKyAgICBpZiAoW3Byb3BlcnR5S2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5n
IGNsYXNzXV0pIHsKKyAgICAgICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0
aENGU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KHByb3BlcnR5S2V5KSk7Cisg
ICAgICAgIHJlc3VsdCA9IHN0cmluZ0Z1bmN0aW9uKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJl
Zl0sIG9iamVjdCwgbmFtZSwgYXJndW1lbnRzLi4uLCAmZXhjZXB0aW9uKTsKKyAgICAgICAgSlNT
dHJpbmdSZWxlYXNlKG5hbWUpOworICAgIH0gZWxzZQorICAgICAgICByZXN1bHQgPSBqc0Z1bmN0
aW9uKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgW1tKU1ZhbHVlIHZhbHVl
V2l0aE9iamVjdDpwcm9wZXJ0eUtleSBpbkNvbnRleHQ6Y29udGV4dF0gSlNWYWx1ZVJlZl0sIGFy
Z3VtZW50cy4uLiwgJmV4Y2VwdGlvbik7CisgICAgcmV0dXJuIEV4cGVjdGVkPFJlc3VsdCwgSlNW
YWx1ZVJlZj4ocmVzdWx0KTsKK30KIAotICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1Zh
bHVlUmVmOnJlc3VsdCBpbkNvbnRleHQ6X2NvbnRleHRdOworI2RlZmluZSBVU0VfTlNTVFJJTkdf
Rk9SX1BST1BFUlRZX0tFWSAoZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAoZGVmaW5l
ZChfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPCAxMTAwMDApCisKKyNpZiBVU0VfTlNTVFJJTkdfRk9SX1BST1BFUlRZ
X0tFWQorLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KE5TU3RyaW5nICopa2V5CisjZWxz
ZQorLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KGlkKWtleQorI2VuZGlmCit7CisgICAg
YXV0byByZXN1bHQgPSBwZXJmb3JtUHJvcGVydHlPcGVyYXRpb248SlNWYWx1ZVJlZj4oSlNPYmpl
Y3RHZXRQcm9wZXJ0eSwgSlNPYmplY3RHZXRQcm9wZXJ0eUtleSwgc2VsZiwga2V5KTsKKyAgICBp
ZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNl
cHRpb246cmVzdWx0LmVycm9yKCldOworCisgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpT
VmFsdWVSZWY6cmVzdWx0LnZhbHVlKCkgaW5Db250ZXh0Ol9jb250ZXh0XTsKIH0KIAotLSAodm9p
ZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHlOYW1l
CisjaWYgVVNFX05TU1RSSU5HX0ZPUl9QUk9QRVJUWV9LRVkKKy0gKHZvaWQpc2V0VmFsdWU6KGlk
KXZhbHVlIGZvclByb3BlcnR5OihOU1N0cmluZyAqKWtleQorI2Vsc2UKKy0gKHZvaWQpc2V0VmFs
dWU6KGlkKXZhbHVlIGZvclByb3BlcnR5OihpZClrZXkKKyNlbmRpZgogewotICAgIEpTVmFsdWVS
ZWYgZXhjZXB0aW9uID0gMDsKLSAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmpl
Y3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUsICZleGNlcHRpb24pOwot
ICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgW19jb250ZXh0IG5vdGlmeUV4Y2VwdGlvbjpl
eGNlcHRpb25dOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIC8vIFdlIG5lZWQgVW5pdCBi
dXNpbmVzcyBiZWNhdXNlIHZvaWQgY2FuJ3QgYmUgYXNzaWduZWQgdG8gaW4gcGVyZm9ybVByb3Bl
cnR5T3BlcmF0aW9uIGFuZCBJIGRvbid0IHdhbnQgdG8gZHVwbGljYXRlIHRoZSBjb2RlLi4uCisg
ICAgdXNpbmcgVW5pdCA9IHN0ZDo6dHVwbGU8PjsKKyAgICBhdXRvIHN0cmluZ1NldFByb3BlcnR5
ID0gW10gKGF1dG8uLi4gYXJncykgLT4gVW5pdCB7CisgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVy
dHkoYXJncy4uLik7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfTsKIAotICAgIEpTU3RyaW5n
UmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpcHJvcGVy
dHlOYW1lKTsKLSAgICBKU09iamVjdFNldFByb3BlcnR5KFtfY29udGV4dCBKU0dsb2JhbENvbnRl
eHRSZWZdLCBvYmplY3QsIG5hbWUsIG9iamVjdFRvVmFsdWUoX2NvbnRleHQsIHZhbHVlKSwgMCwg
JmV4Y2VwdGlvbik7Ci0gICAgSlNTdHJpbmdSZWxlYXNlKG5hbWUpOwotICAgIGlmIChleGNlcHRp
b24pIHsKLSAgICAgICAgW19jb250ZXh0IG5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOworICAg
IGF1dG8ganNWYWx1ZVNldFByb3BlcnR5ID0gW10gKGF1dG8uLi4gYXJncykgLT4gVW5pdCB7Cisg
ICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHlLZXkoYXJncy4uLik7CisgICAgICAgIHJldHVybiB7
IH07CisgICAgfTsKKworICAgIGF1dG8gcmVzdWx0ID0gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9u
PFVuaXQ+KHN0cmluZ1NldFByb3BlcnR5LCBqc1ZhbHVlU2V0UHJvcGVydHksIHNlbGYsIGtleSwg
b2JqZWN0VG9WYWx1ZShfY29udGV4dCwgdmFsdWUpLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUp
OworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIFtfY29udGV4dCBub3RpZnlFeGNlcHRpb246
cmVzdWx0LmVycm9yKCldOwogICAgICAgICByZXR1cm47CiAgICAgfQogfQogCi0tIChCT09MKWRl
bGV0ZVByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQorI2lmIFVTRV9OU1NUUklOR19G
T1JfUFJPUEVSVFlfS0VZCistIChCT09MKWRlbGV0ZVByb3BlcnR5OihOU1N0cmluZyAqKWtleQor
I2Vsc2UKKy0gKEJPT0wpZGVsZXRlUHJvcGVydHk6KGlkKWtleQorI2VuZGlmCiB7Ci0gICAgSlNW
YWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVU
b09iamVjdChbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSwgJmV4Y2VwdGlv
bik7Ci0gICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFtfY29udGV4dCBib29sRnJv
bU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwotCi0gICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpT
U3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwotICAg
IEJPT0wgcmVzdWx0ID0gSlNPYmplY3REZWxldGVQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxD
b250ZXh0UmVmXSwgb2JqZWN0LCBuYW1lLCAmZXhjZXB0aW9uKTsKLSAgICBKU1N0cmluZ1JlbGVh
c2UobmFtZSk7Ci0gICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFtfY29udGV4dCBi
b29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwotCi0gICAgcmV0dXJuIHJlc3VsdDsK
KyAgICBFeHBlY3RlZDxCT09MLCBKU1ZhbHVlUmVmPiByZXN1bHQgPSBwZXJmb3JtUHJvcGVydHlP
cGVyYXRpb248Qk9PTD4oSlNPYmplY3REZWxldGVQcm9wZXJ0eSwgSlNPYmplY3REZWxldGVQcm9w
ZXJ0eUtleSwgc2VsZiwga2V5KTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFtf
Y29udGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpyZXN1bHQuZXJyb3IoKV07CisgICAgcmV0
dXJuIHJlc3VsdC52YWx1ZSgpOwogfQogCi0tIChCT09MKWhhc1Byb3BlcnR5OihOU1N0cmluZyAq
KXByb3BlcnR5TmFtZQorI2lmIFVTRV9OU1NUUklOR19GT1JfUFJPUEVSVFlfS0VZCistIChCT09M
KWhhc1Byb3BlcnR5OihOU1N0cmluZyAqKWtleQorI2Vsc2UKKy0gKEJPT0wpaGFzUHJvcGVydHk6
KGlkKWtleQorI2VuZGlmCiB7Ci0gICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAgIEpT
T2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChbX2NvbnRleHQgSlNHbG9iYWxDb250
ZXh0UmVmXSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7Ci0gICAgaWYgKGV4Y2VwdGlvbikKLSAgICAg
ICAgcmV0dXJuIFtfY29udGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwor
ICAgIC8vIFRoZSBDLWFwaSBkb2Vzbid0IHJldHVybiBhbiBleGNlcHRpb24gdmFsdWUgZm9yIHRo
ZSBzdHJpbmcgdmVyc2lvbiBvZiBoYXMgcHJvcGVydHkuCisgICAgYXV0byBzdHJpbmdIYXNQcm9w
ZXJ0eSA9IFtdIChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5n
UmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiopIC0+IEJPT0wgeworICAgICAgICByZXR1cm4g
SlNPYmplY3RIYXNQcm9wZXJ0eShjdHgsIG9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICB9Owog
Ci0gICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0
cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwotICAgIEJPT0wgcmVzdWx0ID0gSlNPYmplY3RIYXNQcm9w
ZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgb2JqZWN0LCBuYW1lKTsKLSAgICBK
U1N0cmluZ1JlbGVhc2UobmFtZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBFeHBlY3RlZDxC
T09MLCBKU1ZhbHVlUmVmPiByZXN1bHQgPSBwZXJmb3JtUHJvcGVydHlPcGVyYXRpb248Qk9PTD4o
c3RyaW5nSGFzUHJvcGVydHksIEpTT2JqZWN0SGFzUHJvcGVydHlLZXksIHNlbGYsIGtleSk7Cisg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBbX2NvbnRleHQgYm9vbEZyb21Ob3RpZnlF
eGNlcHRpb246cmVzdWx0LmVycm9yKCldOworICAgIHJldHVybiByZXN1bHQudmFsdWUoKTsKIH0K
IAotLSAodm9pZClkZWZpbmVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eSBkZXNjcmlwdG9y
OihpZClkZXNjcmlwdG9yCisjaWYgVVNFX05TU1RSSU5HX0ZPUl9QUk9QRVJUWV9LRVkKKy0gKHZv
aWQpZGVmaW5lUHJvcGVydHk6KE5TU3RyaW5nICopa2V5IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0
b3IKKyNlbHNlCistICh2b2lkKWRlZmluZVByb3BlcnR5OihpZClrZXkgZGVzY3JpcHRvcjooaWQp
ZGVzY3JpcHRvcgorI2VuZGlmCiB7Ci0gICAgW1tfY29udGV4dCBnbG9iYWxPYmplY3RdW0AiT2Jq
ZWN0Il0gaW52b2tlTWV0aG9kOkAiZGVmaW5lUHJvcGVydHkiIHdpdGhBcmd1bWVudHM6QFsgc2Vs
ZiwgcHJvcGVydHksIGRlc2NyaXB0b3IgXV07CisgICAgW1tfY29udGV4dCBnbG9iYWxPYmplY3Rd
W0AiT2JqZWN0Il0gaW52b2tlTWV0aG9kOkAiZGVmaW5lUHJvcGVydHkiIHdpdGhBcmd1bWVudHM6
QFsgc2VsZiwga2V5LCBkZXNjcmlwdG9yIF1dOwogfQogCisjdW5kZWYgVVNFX05TU1RSSU5HX0ZP
Ul9QUk9QRVJUWV9LRVkKKwogLSAoSlNWYWx1ZSAqKXZhbHVlQXRJbmRleDooTlNVSW50ZWdlcilp
bmRleAogewogICAgIC8vIFByb3BlcnRpZXMgdGhhdCBhcmUgaGlnaGVyIHRoYW4gYW4gdW5zaWdu
ZWQgdmFsdWUgY2FuIGhvbGQgYXJlIGNvbnZlcnRlZCB0byBhIGRvdWJsZSB0aGVuIGluc2VydGVk
IGFzIGEgbm9ybWFsIHByb3BlcnR5LgpAQCAtMzU3LDYgKzM5NywxMSBAQCBOU1N0cmluZyAqIGNv
bnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yU2V0S2V5ID0gQCJzZXQiOwogICAgIHJldHVybiBKU1Zh
bHVlSXNPYmplY3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUpOwogfQog
CistIChCT09MKWlzU3ltYm9sCit7CisgICAgcmV0dXJuIEpTVmFsdWVJc1N5bWJvbChbX2NvbnRl
eHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSk7Cit9CisKIC0gKEJPT0wpaXNBcnJheQog
ewogICAgIHJldHVybiBKU1ZhbHVlSXNBcnJheShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVm
XSwgbV92YWx1ZSk7CkBAIC01MzksMTMgKzU4NCw3IEBAIE5TU3RyaW5nICogY29uc3QgSlNQcm9w
ZXJ0eURlc2NyaXB0b3JTZXRLZXkgPSBAInNldCI7CiAKIC0gKEpTVmFsdWUgKilvYmplY3RGb3JL
ZXllZFN1YnNjcmlwdDooaWQpa2V5CiB7Ci0gICAgaWYgKCFba2V5IGlzS2luZE9mQ2xhc3M6W05T
U3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAga2V5ID0gW1tKU1ZhbHVlIHZhbHVlV2l0aE9iamVj
dDprZXkgaW5Db250ZXh0Ol9jb250ZXh0XSB0b1N0cmluZ107Ci0gICAgICAgIGlmICgha2V5KQot
ICAgICAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4dDpf
Y29udGV4dF07Ci0gICAgfQotCi0gICAgcmV0dXJuIFtzZWxmIHZhbHVlRm9yUHJvcGVydHk6KE5T
U3RyaW5nICopa2V5XTsKKyAgICByZXR1cm4gW3NlbGYgdmFsdWVGb3JQcm9wZXJ0eTprZXldOwog
fQogCiAtIChKU1ZhbHVlICopb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OihOU1VJbnRlZ2VyKWlu
ZGV4CkBAIC01NTMsMTUgKzU5Miw5IEBAIE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2Ny
aXB0b3JTZXRLZXkgPSBAInNldCI7CiAgICAgcmV0dXJuIFtzZWxmIHZhbHVlQXRJbmRleDppbmRl
eF07CiB9CiAKLS0gKHZvaWQpc2V0T2JqZWN0OihpZClvYmplY3QgZm9yS2V5ZWRTdWJzY3JpcHQ6
KE5TT2JqZWN0IDxOU0NvcHlpbmc+ICopa2V5CistICh2b2lkKXNldE9iamVjdDooaWQpb2JqZWN0
IGZvcktleWVkU3Vic2NyaXB0OihpZClrZXkKIHsKLSAgICBpZiAoIVtrZXkgaXNLaW5kT2ZDbGFz
czpbTlNTdHJpbmcgY2xhc3NdXSkgewotICAgICAgICBrZXkgPSBbW0pTVmFsdWUgdmFsdWVXaXRo
T2JqZWN0OmtleSBpbkNvbnRleHQ6X2NvbnRleHRdIHRvU3RyaW5nXTsKLSAgICAgICAgaWYgKCFr
ZXkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgW3NlbGYgc2V0VmFsdWU6b2Jq
ZWN0IGZvclByb3BlcnR5OihOU1N0cmluZyAqKWtleV07CisgICAgW3NlbGYgc2V0VmFsdWU6b2Jq
ZWN0IGZvclByb3BlcnR5OmtleV07CiB9CiAKIC0gKHZvaWQpc2V0T2JqZWN0OihpZClvYmplY3Qg
YXRJbmRleGVkU3Vic2NyaXB0OihOU1VJbnRlZ2VyKWluZGV4CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1ZhbHVlUmVmLmNwcAppbmRleCA2NGFjNmMzMjQ2ZWJmYjhjYzRmMjRjMDU4MDk5OGFl
NDE4ZGFiYTZkLi5kNDZjZmYwNmE0NjU0ZTk1MGI1MDE1ZTRjYjJiYWY0OTZiMDQ4YzgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKQEAgLTg2LDggKzg2LDEwIEBA
IHN0YXRpYyBib29sIGV2ZXJub3RlSGFja05lZWRlZCgpCiAgICAgICAgIHJldHVybiBrSlNUeXBl
TnVtYmVyOwogICAgIGlmIChqc1ZhbHVlLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBrSlNU
eXBlU3RyaW5nOwotICAgIEFTU0VSVChqc1ZhbHVlLmlzT2JqZWN0KCkpOwotICAgIHJldHVybiBr
SlNUeXBlT2JqZWN0OworICAgIGlmIChqc1ZhbHVlLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVy
biBrSlNUeXBlT2JqZWN0OworICAgIEFTU0VSVChqc1ZhbHVlLmlzU3ltYm9sKCkpOworICAgIHJl
dHVybiBrSlNUeXBlU3ltYm9sOwogfQogCiBib29sIEpTVmFsdWVJc1VuZGVmaW5lZChKU0NvbnRl
eHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQpAQCAtMTYyLDYgKzE2NCwxOCBAQCBib29sIEpT
VmFsdWVJc09iamVjdChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQogICAgIHJl
dHVybiB0b0pTKGV4ZWMsIHZhbHVlKS5pc09iamVjdCgpOwogfQogCitib29sIEpTVmFsdWVJc1N5
bWJvbChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQoreworICAgIGlmICghY3R4
KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBKU0xvY2tIb2xk
ZXIgbG9ja2VyKGV4ZWMpOworCisgICAgcmV0dXJuIHRvSlMoZXhlYywgdmFsdWUpLmlzU3ltYm9s
KCk7Cit9CisKIGJvb2wgSlNWYWx1ZUlzQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJl
ZiB2YWx1ZSkKIHsKICAgICBpZiAoIWN0eCkgewpAQCAtMzE2LDYgKzMzMCwyMiBAQCBKU1ZhbHVl
UmVmIEpTVmFsdWVNYWtlTnVtYmVyKEpTQ29udGV4dFJlZiBjdHgsIGRvdWJsZSB2YWx1ZSkKICAg
ICByZXR1cm4gdG9SZWYoZXhlYywganNOdW1iZXIocHVyaWZ5TmFOKHZhbHVlKSkpOwogfQogCitK
U1ZhbHVlUmVmIEpTVmFsdWVNYWtlU3ltYm9sKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVm
IGRlc2NyaXB0aW9uKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBl
eGVjID0gdG9KUyhjdHgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUoZXhlYy0+dm0oKSk7CisKKyAgICBKU1N0cmlu
ZyoganNEZXNjcmlwdGlvbiA9IGpzU3RyaW5nKGV4ZWMsIGRlc2NyaXB0aW9uID8gZGVzY3JpcHRp
b24tPnN0cmluZygpIDogU3RyaW5nKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IG51bGxwdHIpOworCisgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIFN5bWJvbDo6Y3JlYXRlKGV4ZWMs
IGpzRGVzY3JpcHRpb24pKTsKK30KKwogSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZVN0cmluZyhKU0Nv
bnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBzdHJpbmcpCiB7CiAgICAgaWYgKCFjdHgpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmgKaW5kZXggOTgxNWRlNzgzYzBhZWUwNzNl
M2E0NDhiZDBjN2NhZGQ0YTk1MmMwNi4uM2JlODViMGE5YzE2MmZmNzBiNjFjMGI2NzZmNTRlYjQ0
ZDcwNWFmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVm
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmgKQEAgLTQyLDYg
KzQyLDcgQEAKIEBjb25zdGFudCAgICAga0pTVHlwZU51bWJlciAgICAgQSBwcmltaXRpdmUgbnVt
YmVyIHZhbHVlLgogQGNvbnN0YW50ICAgICBrSlNUeXBlU3RyaW5nICAgICBBIHByaW1pdGl2ZSBz
dHJpbmcgdmFsdWUuCiBAY29uc3RhbnQgICAgIGtKU1R5cGVPYmplY3QgICAgIEFuIG9iamVjdCB2
YWx1ZSAobWVhbmluZyB0aGF0IHRoaXMgSlNWYWx1ZVJlZiBpcyBhIEpTT2JqZWN0UmVmKS4KK0Bj
b25zdGFudCAgICAga0pTVHlwZVN5bWJvbCAgICAgQSBwcmltaXRpdmUgc3ltYm9sIHZhbHVlLgog
Ki8KIHR5cGVkZWYgZW51bSB7CiAgICAga0pTVHlwZVVuZGVmaW5lZCwKQEAgLTQ5LDcgKzUwLDgg
QEAgdHlwZWRlZiBlbnVtIHsKICAgICBrSlNUeXBlQm9vbGVhbiwKICAgICBrSlNUeXBlTnVtYmVy
LAogICAgIGtKU1R5cGVTdHJpbmcsCi0gICAga0pTVHlwZU9iamVjdAorICAgIGtKU1R5cGVPYmpl
Y3QsCisgICAga0pTVHlwZVN5bWJvbCBDRl9FTlVNX0FWQUlMQUJMRSgxMF8xMywgMTFfMCkKIH0g
SlNUeXBlOwogCiAvKiEKQEAgLTE1MSw2ICsxNTMsMTYgQEAgSlNfRVhQT1JUIGJvb2wgSlNWYWx1
ZUlzT2JqZWN0KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpOwogCiAvKiEKIEBm
dW5jdGlvbgorQGFic3RyYWN0ICAgICAgIFRlc3RzIHdoZXRoZXIgYSBKYXZhU2NyaXB0IHZhbHVl
J3MgdHlwZSBpcyB0aGUgc3ltYm9sIHR5cGUuCitAcGFyYW0gY3R4ICAgICAgVGhlIGV4ZWN1dGlv
biBjb250ZXh0IHRvIHVzZS4KK0BwYXJhbSB2YWx1ZSAgICBUaGUgSlNWYWx1ZSB0byB0ZXN0Lgor
QHJlc3VsdCAgICAgICAgIHRydWUgaWYgdmFsdWUncyB0eXBlIGlzIHRoZSBzeW1ib2wgdHlwZSwg
b3RoZXJ3aXNlIGZhbHNlLgorKi8KK0pTX0VYUE9SVCBib29sIEpTVmFsdWVJc1N5bWJvbChKU0Nv
bnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKSBDRl9BVkFJTEFCTEUoMTBfMTMsIDExXzAp
OworCisKKy8qIQorQGZ1bmN0aW9uCiBAYWJzdHJhY3QgVGVzdHMgd2hldGhlciBhIEphdmFTY3Jp
cHQgdmFsdWUgaXMgYW4gb2JqZWN0IHdpdGggYSBnaXZlbiBjbGFzcyBpbiBpdHMgY2xhc3MgY2hh
aW4uCiBAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCiBAcGFyYW0gdmFs
dWUgVGhlIEpTVmFsdWUgdG8gdGVzdC4KQEAgLTI1OSw2ICsyNzEsMTUgQEAgSlNfRVhQT1JUIEpT
VmFsdWVSZWYgSlNWYWx1ZU1ha2VOdW1iZXIoSlNDb250ZXh0UmVmIGN0eCwgZG91YmxlIG51bWJl
cik7CiAKIC8qIQogQGZ1bmN0aW9uCitAYWJzdHJhY3QgICAgICAgICAgICBDcmVhdGVzIGEgSmF2
YVNjcmlwdCB2YWx1ZSBvZiB0aGUgc3ltYm9sIHR5cGUuCitAcGFyYW0gY3R4ICAgICAgICAgICBU
aGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgorQHBhcmFtIGRlc2NyaXB0aW9uICAgQSBkZXNj
cmlwdGlvbiBvZiB0aGUgbmV3bHkgY3JlYXRlZCBzeW1ib2wgdmFsdWUuCitAcmVzdWx0ICAgICAg
ICAgICAgICBBIHVuaXF1ZSBKU1ZhbHVlIG9mIHRoZSBzeW1ib2wgdHlwZSwgd2hvc2UgZGVzY3Jp
cHRpb24gbWF0Y2hlcyB0aGUgb25lIHByb3ZpZGVkLgorKi8KK0pTX0VYUE9SVCBKU1ZhbHVlUmVm
IEpTVmFsdWVNYWtlU3ltYm9sKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIGRlc2NyaXB0
aW9uKTsKKworLyohCitAZnVuY3Rpb24KIEBhYnN0cmFjdCAgICAgICBDcmVhdGVzIGEgSmF2YVNj
cmlwdCB2YWx1ZSBvZiB0aGUgc3RyaW5nIHR5cGUuCiBAcGFyYW0gY3R4ICBUaGUgZXhlY3V0aW9u
IGNvbnRleHQgdG8gdXNlLgogQHBhcmFtIHN0cmluZyAgIFRoZSBKU1N0cmluZyB0byBhc3NpZ24g
dG8gdGhlIG5ld2x5IGNyZWF0ZWQgSlNWYWx1ZS4gVGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvdGVzdGFwaS5jCmluZGV4IDdiZWNkZmUwNDExNWJmOTQ4OWVmODQxOTdjMTY3MWM1
YjgzYmE0ZTIuLmExZWE1ODI2Mzc4MTUxYjQ5YmM4ODcwNzZjNDQwYWVkMTZhZmY2MDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCkBAIC02Niw2ICs2Niw4IEBA
CiB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKHZvaWQpOwogI2VuZGlmCiAKK2ludCB0ZXN0Q0FQSVZp
YUNwcCgpOworCiBib29sIGFzc2VydFRydWUoYm9vbCB2YWx1ZSwgY29uc3QgY2hhciogbWVzc2Fn
ZSk7CiAKIHN0YXRpYyBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dDsKQEAgLTEzNjEsNiArMTM2
Myw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAjaWYgSlNDX09CSkNfQVBJ
X0VOQUJMRUQKICAgICB0ZXN0T2JqZWN0aXZlQ0FQSSgpOwogI2VuZGlmCisgICAgUkVMRUFTRV9B
U1NFUlQoIXRlc3RDQVBJVmlhQ3BwKCkpOwogCiAgICAgY29uc3QgY2hhciAqc2NyaXB0UGF0aCA9
ICJ0ZXN0YXBpLmpzIjsKICAgICBpZiAoYXJnYyA+IDEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL3Rlc3RzL3Rlc3RhcGkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3OGZmNTE4MDNiY2RmYWQzN2Vj
ZDEwODBiNmQxOTNmZmViOTQ4ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuY3BwCkBAIC0wLDAgKzEsMzkxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
KyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkphdmFTY3JpcHRDb3JlLmgiCisKKyNp
bmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgorI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworZXh0ZXJu
ICJDIiBpbnQgdGVzdENBUElWaWFDcHAoKTsKKworY2xhc3MgQVBJU3RyaW5nIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShBUElTdHJpbmcpOworcHVibGljOgorCisgICAgQVBJU3RyaW5nKGNv
bnN0IGNoYXIqIHN0cmluZykKKyAgICAgICAgOiBtX3N0cmluZyhKU1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhzdHJpbmcpKQorICAgIHsKKyAgICB9CisKKyAgICB+QVBJU3RyaW5nKCkKKyAg
ICB7CisgICAgICAgIEpTU3RyaW5nUmVsZWFzZShtX3N0cmluZyk7CisgICAgfQorCisgICAgb3Bl
cmF0b3IgSlNTdHJpbmdSZWYoKSB7IHJldHVybiBtX3N0cmluZzsgfQorCitwcml2YXRlOgorICAg
IEpTU3RyaW5nUmVmIG1fc3RyaW5nOworfTsKKworY2xhc3MgQVBJQ29udGV4dCB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQVBJQ29udGV4dCk7CitwdWJsaWM6CisKKyAgICBBUElDb250ZXh0
KCkKKyAgICAgICAgOiBtX2NvbnRleHQoSlNHbG9iYWxDb250ZXh0Q3JlYXRlKG51bGxwdHIpKQor
ICAgIHsKKyAgICAgICAgQVBJU3RyaW5nIHByaW50KCJwcmludCIpOworICAgICAgICBKU09iamVj
dFJlZiBwcmludEZ1bmN0aW9uID0gSlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2sobV9j
b250ZXh0LCBwcmludCwgW10gKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmLCBKU09iamVj
dFJlZiwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqKSB7CisKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBh
cmd1bWVudENvdW50OyBpKyspCisgICAgICAgICAgICAgICAgZGF0YUxvZyhiaXR3aXNlX2Nhc3Q8
SlNDOjpKU1ZhbHVlPihhcmd1bWVudHNbaV0pKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigpOwor
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisgICAgICAgIH0p
OworCisgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHkobV9jb250ZXh0LCBKU0NvbnRleHRHZXRH
bG9iYWxPYmplY3QobV9jb250ZXh0KSwgcHJpbnQsIHByaW50RnVuY3Rpb24sIGtKU1Byb3BlcnR5
QXR0cmlidXRlTm9uZSwgbnVsbHB0cik7CisgICAgfQorCisgICAgfkFQSUNvbnRleHQoKQorICAg
IHsKKyAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShtX2NvbnRleHQpOworICAgIH0KKwor
ICAgIG9wZXJhdG9yIEpTR2xvYmFsQ29udGV4dFJlZigpIHsgcmV0dXJuIG1fY29udGV4dDsgfQor
Citwcml2YXRlOgorICAgIEpTR2xvYmFsQ29udGV4dFJlZiBtX2NvbnRleHQ7Cit9OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgQVBJVmVjdG9yIDogcHJvdGVjdGVkIFZlY3RvcjxUPiB7
CisgICAgdXNpbmcgQmFzZSA9IFZlY3RvcjxUPjsKK3B1YmxpYzoKKyAgICBBUElWZWN0b3IoQVBJ
Q29udGV4dCYgY29udGV4dCkKKyAgICAgICAgOiBCYXNlKCkKKyAgICAgICAgLCBtX2NvbnRleHQo
Y29udGV4dCkKKyAgICB7CisgICAgfQorCisgICAgfkFQSVZlY3RvcigpCisgICAgeworICAgICAg
ICBmb3IgKGF1dG8mIHZhbHVlIDogKnRoaXMpCisgICAgICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0
KG1fY29udGV4dCwgdmFsdWUpOworICAgIH0KKworICAgIHVzaW5nIFZlY3RvcjxUPjo6b3BlcmF0
b3JbXTsKKyAgICB1c2luZyBWZWN0b3I8VD46OnNpemU7CisgICAgdXNpbmcgVmVjdG9yPFQ+Ojpi
ZWdpbjsKKyAgICB1c2luZyBWZWN0b3I8VD46OmVuZDsKKyAgICB1c2luZyB0eXBlbmFtZSBWZWN0
b3I8VD46Oml0ZXJhdG9yOworCisgICAgdm9pZCBhcHBlbmQoVCB2YWx1ZSkKKyAgICB7CisgICAg
ICAgIEpTVmFsdWVQcm90ZWN0KG1fY29udGV4dCwgdmFsdWUpOworICAgICAgICBCYXNlOjphcHBl
bmQoV1RGTW92ZSh2YWx1ZSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBUElDb250ZXh0JiBt
X2NvbnRleHQ7Cit9OworCitjbGFzcyBUZXN0QVBJIHsKK3B1YmxpYzoKKyAgICBpbnQgcnVuKCk7
Citwcml2YXRlOgorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gU3RyaW5ncz4KKyAgICBib29s
IGNoZWNrKGJvb2wgY29uZGl0aW9uLCBTdHJpbmdzLi4uIG1lc3NhZ2UpOworCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgSlNGdW5jdG9yLCB0eXBlbmFtZSBBUElGdW5jdG9yPgorICAgIHZvaWQgY2hl
Y2tKU0FuZEFQSU1hdGNoKGNvbnN0IEpTRnVuY3RvciYsIGNvbnN0IEFQSUZ1bmN0b3ImLCBjb25z
dCBjaGFyKiBkZXNjcmlwdGlvbik7CisKKyAgICAvLyBIZWxwZXIgbWV0aG9kcy4KKyAgICB1c2lu
ZyBTY3JpcHRSZXN1bHQgPSBFeHBlY3RlZDxKU1ZhbHVlUmVmLCBKU1ZhbHVlUmVmPjsKKyAgICBT
Y3JpcHRSZXN1bHQgZXZhbHVhdGVTY3JpcHQoY29uc3QgY2hhciogc2NyaXB0LCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0ID0gbnVsbHB0cik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1l
bnRUeXBlcz4KKyAgICBTY3JpcHRSZXN1bHQgY2FsbEZ1bmN0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0
aW9uU291cmNlLCBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cyk7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KKyAgICBib29sIGZ1bmN0aW9uUmV0dXJuc1RydWUoY29u
c3QgY2hhciogZnVuY3Rpb25Tb3VyY2UsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKTsKKwor
ICAgIC8vIFdheXMgdG8gbWFrZSBzZXRzIG9mIGludGVyZXN0aW5nIHRoaW5ncy4KKyAgICBBUElW
ZWN0b3I8SlNPYmplY3RSZWY+IGludGVyZXN0aW5nT2JqZWN0cygpOworICAgIEFQSVZlY3RvcjxK
U1ZhbHVlUmVmPiBpbnRlcmVzdGluZ0tleXMoKTsKKworICAgIGludCBmYWlsZWQgeyAwIH07Cisg
ICAgQVBJQ29udGV4dCBjb250ZXh0OworfTsKKworaW50IHRlc3RDQVBJVmlhQ3BwKCkKK3sKKyAg
ICBUZXN0QVBJIHRlc3RlcjsKKyAgICByZXR1cm4gdGVzdGVyLnJ1bigpOworfQorCitUZXN0QVBJ
OjpTY3JpcHRSZXN1bHQgVGVzdEFQSTo6ZXZhbHVhdGVTY3JpcHQoY29uc3QgY2hhciogc2NyaXB0
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0KQoreworICAgIEFQSVN0cmluZyBzY3JpcHRBUElTdHJp
bmcoc2NyaXB0KTsKKyAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IG51bGxwdHI7CisKKyAgICBK
U1ZhbHVlUmVmIHJlc3VsdCA9IEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgc2NyaXB0QVBJU3Ry
aW5nLCB0aGlzT2JqZWN0LCBudWxscHRyLCAwLCAmZXhjZXB0aW9uKTsKKyAgICBpZiAoZXhjZXB0
aW9uKQorICAgICAgICByZXR1cm4gVW5leHBlY3RlZFR5cGU8SlNWYWx1ZVJlZj4oZXhjZXB0aW9u
KTsKKyAgICByZXR1cm4gU2NyaXB0UmVzdWx0KHJlc3VsdCk7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lLi4uIEFyZ3VtZW50VHlwZXM+CitUZXN0QVBJOjpTY3JpcHRSZXN1bHQgVGVzdEFQSTo6Y2Fs
bEZ1bmN0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uU291cmNlLCBBcmd1bWVudFR5cGVzLi4uIGFy
Z3VtZW50cykKK3sKKyAgICBKU1ZhbHVlUmVmIGZ1bmN0aW9uOworICAgIHsKKyAgICAgICAgU2Ny
aXB0UmVzdWx0IGZ1bmN0aW9uUmVzdWx0ID0gZXZhbHVhdGVTY3JpcHQoZnVuY3Rpb25Tb3VyY2Up
OworICAgICAgICBpZiAoIWZ1bmN0aW9uUmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uUmVzdWx0OworICAgICAgICBmdW5jdGlvbiA9IGZ1bmN0aW9uUmVzdWx0LnZhbHVlKCk7Cisg
ICAgfQorCisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOworICAgIGlmIChKU09i
amVjdFJlZiBmdW5jdGlvbk9iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBmdW5jdGlv
biwgJmV4Y2VwdGlvbikpIHsKKyAgICAgICAgSlNWYWx1ZVJlZiBhcmdzW3NpemVvZi4uLihhcmd1
bWVudHMpXSB7IGFyZ3VtZW50cy4uLiB9OworICAgICAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpT
T2JqZWN0Q2FsbEFzRnVuY3Rpb24oY29udGV4dCwgZnVuY3Rpb25PYmplY3QsIGZ1bmN0aW9uT2Jq
ZWN0LCBzaXplb2YuLi4oYXJndW1lbnRzKSwgYXJncywgJmV4Y2VwdGlvbik7CisgICAgICAgIGlm
ICghZXhjZXB0aW9uKQorICAgICAgICAgICAgcmV0dXJuIFNjcmlwdFJlc3VsdChyZXN1bHQpOwor
ICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUKGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIFVuZXhw
ZWN0ZWRUeXBlPEpTVmFsdWVSZWY+KGV4Y2VwdGlvbik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3VtZW50VHlwZXM+Citib29sIFRlc3RBUEk6OmZ1bmN0aW9uUmV0dXJuc1RydWUoY29u
c3QgY2hhciogZnVuY3Rpb25Tb3VyY2UsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKQorewor
ICAgIEpTVmFsdWVSZWYgdHJ1ZVZhbHVlID0gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIHRy
dWUpOworICAgIFNjcmlwdFJlc3VsdCByZXN1bHQgPSBjYWxsRnVuY3Rpb24oZnVuY3Rpb25Tb3Vy
Y2UsIGFyZ3VtZW50cy4uLik7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gSlNWYWx1ZUlzU3RyaWN0RXF1YWwoY29udGV4dCwgdHJ1ZVZhbHVlLCBy
ZXN1bHQudmFsdWUoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ3M+Citib29s
IFRlc3RBUEk6OmNoZWNrKGJvb2wgY29uZGl0aW9uLCBTdHJpbmdzLi4uIG1lc3NhZ2VzKQorewor
ICAgIGlmICghY29uZGl0aW9uKSB7CisgICAgICAgIGRhdGFMb2dMbihtZXNzYWdlcy4uLiwgIjog
RkFJTEVEIik7CisgICAgICAgIGZhaWxlZCsrOworICAgIH0gZWxzZQorICAgICAgICBkYXRhTG9n
TG4obWVzc2FnZXMuLi4sICI6IFBBU1NFRCIpOworCisgICAgcmV0dXJuIGNvbmRpdGlvbjsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgSlNGdW5jdG9yLCB0eXBlbmFtZSBBUElGdW5jdG9yPgordm9p
ZCBUZXN0QVBJOjpjaGVja0pTQW5kQVBJTWF0Y2goY29uc3QgSlNGdW5jdG9yJiBqc0Z1bmN0b3Is
IGNvbnN0IEFQSUZ1bmN0b3ImIGFwaUZ1bmN0b3IsIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKQor
eworICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0cjsKKyAgICBKU1ZhbHVlUmVmIHJl
c3VsdCA9IGFwaUZ1bmN0b3IoJmV4Y2VwdGlvbik7CisgICAgU2NyaXB0UmVzdWx0IGpzUmVzdWx0
ID0ganNGdW5jdG9yKCk7CisgICAgaWYgKCFqc1Jlc3VsdCkgeworICAgICAgICBjaGVjayhleGNl
cHRpb24sICJKUyBhbmQgQVBJIGNhbGxzIHNob3VsZCBib3RoIHRocm93IGFuIGV4Y2VwdGlvbiB3
aGlsZSAiLCBkZXNjcmlwdGlvbik7CisgICAgICAgIGNoZWNrKGZ1bmN0aW9uUmV0dXJuc1RydWUo
IihmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhLmNvbnN0cnVjdG9yID09PSBiLmNvbnN0cnVjdG9y
OyB9KSIsIGV4Y2VwdGlvbiwganNSZXN1bHQuZXJyb3IoKSksICJKUyBhbmQgQVBJIGNhbGxzIHNo
b3VsZCBib3RoIHRocm93IHRoZSBzYW1lIGV4Y2VwdGlvbiB3aGlsZSAiLCBkZXNjcmlwdGlvbik7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgY2hlY2soIWV4Y2VwdGlvbiwgIkpTIGFuZCBBUEkgY2Fs
bHMgc2hvdWxkIGJvdGggbm90IHRocm93IGFuIGV4Y2VwdGlvbiB3aGlsZSAiLCBkZXNjcmlwdGlv
bik7CisgICAgICAgIGNoZWNrKEpTVmFsdWVJc1N0cmljdEVxdWFsKGNvbnRleHQsIHJlc3VsdCwg
anNSZXN1bHQudmFsdWUoKSksICJKUyByZXN1bHQgYW5kIEFQSSBjYWxscyBzaG91bGQgcmV0dXJu
IHRoZSBzYW1lIHZhbHVlIHdoaWxlICIsIGRlc2NyaXB0aW9uKTsKKyAgICB9Cit9CisKK0FQSVZl
Y3RvcjxKU09iamVjdFJlZj4gVGVzdEFQSTo6aW50ZXJlc3RpbmdPYmplY3RzKCkKK3sKKyAgICBB
UElWZWN0b3I8SlNPYmplY3RSZWY+IHJlc3VsdChjb250ZXh0KTsKKyAgICBKU09iamVjdFJlZiBh
cnJheSA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBldmFsdWF0ZVNjcmlwdCgKKyAgICAgICAg
Ilt7fSwgW10sIHsgW1N5bWJvbC5pdGVyYXRvcl06IDEgfSwgbmV3IERhdGUoKSwgbmV3IFN0cmlu
Zygnc3RyJyksIG5ldyBNYXAoKSwgbmV3IFNldCgpLCBuZXcgV2Vha01hcCgpLCBuZXcgV2Vha1Nl
dCgpLCBuZXcgRXJyb3IoKSwgbmV3IE51bWJlcig0MiksIG5ldyBCb29sZWFuKCksIHsgZ2V0IGxl
bmd0aCgpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gfV07IikudmFsdWUoKSwgbnVsbHB0cik7CisK
KyAgICBBUElTdHJpbmcgbGVuZ3RoU3RyaW5nKCJsZW5ndGgiKTsKKyAgICB1bnNpZ25lZCBsZW5n
dGggPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0
LCBhcnJheSwgbGVuZ3RoU3RyaW5nLCBudWxscHRyKSwgbnVsbHB0cik7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIEpTT2JqZWN0UmVmIG9iamVj
dCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBKU09iamVjdEdldFByb3BlcnR5QXRJbmRleChj
b250ZXh0LCBhcnJheSwgaSwgbnVsbHB0ciksIG51bGxwdHIpOworICAgICAgICBBU1NFUlQob2Jq
ZWN0KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChvYmplY3QpOworICAgIH0KKworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK0FQSVZlY3RvcjxKU1ZhbHVlUmVmPiBUZXN0QVBJOjppbnRlcmVzdGlu
Z0tleXMoKQoreworICAgIEFQSVZlY3RvcjxKU1ZhbHVlUmVmPiByZXN1bHQoY29udGV4dCk7Cisg
ICAgSlNPYmplY3RSZWYgYXJyYXkgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgZXZhbHVhdGVT
Y3JpcHQoIlt7fSwgW10sIDEsIFN5bWJvbC5pdGVyYXRvciwgJ2xlbmd0aCddIikudmFsdWUoKSwg
bnVsbHB0cik7CisKKyAgICBBUElTdHJpbmcgbGVuZ3RoU3RyaW5nKCJsZW5ndGgiKTsKKyAgICB1
bnNpZ25lZCBsZW5ndGggPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgSlNPYmplY3RHZXRQcm9w
ZXJ0eShjb250ZXh0LCBhcnJheSwgbGVuZ3RoU3RyaW5nLCBudWxscHRyKSwgbnVsbHB0cik7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIEpTVmFs
dWVSZWYgdmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5QXRJbmRleChjb250ZXh0LCBhcnJheSwg
aSwgbnVsbHB0cik7CisgICAgICAgIEFTU0VSVCh2YWx1ZSk7CisgICAgICAgIHJlc3VsdC5hcHBl
bmQodmFsdWUpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2ludCBUZXN0QVBJ
OjpydW4oKQoreworICAgIGRhdGFMb2dMbigiU3RhcnRpbmcgQy1BUEkgdGVzdHMgaW4gQysrIik7
CisgICAgY29uc3QgY2hhciogaXNTeW1ib2xGdW5jdGlvbiA9ICIoZnVuY3Rpb24gaXNTeW1ib2wo
c3ltYm9sKSB7IHJldHVybiB0eXBlb2Yoc3ltYm9sKSA9PT0gJ3N5bWJvbCc7IH0pIjsKKyAgICBj
b25zdCBjaGFyKiBnZXRGdW5jdGlvbiA9ICIoZnVuY3Rpb24gZ2V0KG9iamVjdCwga2V5KSB7IHJl
dHVybiBvYmplY3Rba2V5XTsgfSkiOworICAgIGNvbnN0IGNoYXIqIHNldEZ1bmN0aW9uID0gIihm
dW5jdGlvbiBzZXQob2JqZWN0LCBrZXksIHZhbHVlKSB7IG9iamVjdFtrZXldID0gdmFsdWU7IH0p
IjsKKyAgICBjb25zdCBjaGFyKiBoYXNGdW5jdGlvbiA9ICIoZnVuY3Rpb24gaGFzKG9iamVjdCwg
a2V5KSB7IHJldHVybiBrZXkgaW4gb2JqZWN0OyB9KSI7CisgICAgY29uc3QgY2hhciogZGVsZXRl
RnVuY3Rpb24gPSAiKGZ1bmN0aW9uIGRlbChvYmplY3QsIGtleSkgeyByZXR1cm4gZGVsZXRlIG9i
amVjdFtrZXldOyB9KSI7CisKKyAgICB7CisgICAgICAgIC8vIENhbid0IGNhbGwgU3ltYm9sIGFz
IGEgY29uc3RydWN0b3Igc2luY2UgaXQncyBub3Qgc3ViY2xhc3NhYmxlLgorICAgICAgICBhdXRv
IHJlc3VsdCA9IGV2YWx1YXRlU2NyaXB0KCJTeW1ib2woJ2RvcGUnKTsiKTsKKyAgICAgICAgY2hl
Y2soSlNWYWx1ZUdldFR5cGUoY29udGV4dCwgcmVzdWx0LnZhbHVlKCkpID09IGtKU1R5cGVTeW1i
b2wsICJkb3BlIGdldCB0eXBlIGlzIGEgc3ltYm9sIik7CisgICAgICAgIGNoZWNrKEpTVmFsdWVJ
c1N5bWJvbChjb250ZXh0LCByZXN1bHQudmFsdWUoKSksICJkb3BlIGlzIGEgc3ltYm9sIik7Cisg
ICAgfQorCisgICAgeworICAgICAgICBBUElTdHJpbmcgZGVzY3JpcHRpb24oImRvcGUiKTsKKyAg
ICAgICAgSlNWYWx1ZVJlZiBzeW1ib2wgPSBKU1ZhbHVlTWFrZVN5bWJvbChjb250ZXh0LCBkZXNj
cmlwdGlvbik7CisgICAgICAgIGNoZWNrKGZ1bmN0aW9uUmV0dXJuc1RydWUoaXNTeW1ib2xGdW5j
dGlvbiwgc3ltYm9sKSwgIkpTVmFsdWVNYWtlU3ltYm9sIG1ha2VzIGEgc3ltYm9sIHZhbHVlIik7
CisgICAgfQorCisgICAgeworICAgICAgICBhdXRvIG9iamVjdHMgPSBpbnRlcmVzdGluZ09iamVj
dHMoKTsKKyAgICAgICAgYXV0byBrZXlzID0gaW50ZXJlc3RpbmdLZXlzKCk7CisKKyAgICAgICAg
Zm9yIChhdXRvJiBvYmplY3QgOiBvYmplY3RzKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIlxu
bmV4dCBvYmplY3Q6ICIsIGJpdHdpc2VfY2FzdDxKU0M6OkpTVmFsdWU+KG9iamVjdCkpOworICAg
ICAgICAgICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzKSB7CisgICAgICAgICAgICAgICAgZGF0YUxv
Z0xuKCJVc2luZyBrZXk6ICIsIGJpdHdpc2VfY2FzdDxKU0M6OkpTVmFsdWU+KGtleSkpOworICAg
ICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZd
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oZ2V0RnVuY3Rp
b24sIG9iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgWyZdIChKU1ZhbHVlUmVm
KiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09iamVjdEdl
dFByb3BlcnR5S2V5KGNvbnRleHQsIG9iamVjdCwga2V5LCBleGNlcHRpb24pOworICAgICAgICAg
ICAgICAgICAgICB9LCAiY2hlY2tpbmcgZ2V0IHByb3BlcnR5IGtleXMiKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0byBqc09iamVjdHMgPSBp
bnRlcmVzdGluZ09iamVjdHMoKTsKKyAgICAgICAgYXV0byBhcGlPYmplY3RzID0gaW50ZXJlc3Rp
bmdPYmplY3RzKCk7CisgICAgICAgIGF1dG8ga2V5cyA9IGludGVyZXN0aW5nS2V5cygpOworCisg
ICAgICAgIEpTVmFsdWVSZWYgdGhlQW5zd2VyID0gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwg
NDIpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpzT2JqZWN0cy5zaXplKCk7IGkr
KykgeworICAgICAgICAgICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzKSB7CisgICAgICAgICAgICAg
ICAgSlNPYmplY3RSZWYganNPYmplY3QgPSBqc09iamVjdHNbaV07CisgICAgICAgICAgICAgICAg
SlNPYmplY3RSZWYgYXBpT2JqZWN0ID0gYXBpT2JqZWN0c1tpXTsKKyAgICAgICAgICAgICAgICBj
aGVja0pTQW5kQVBJTWF0Y2goCisgICAgICAgICAgICAgICAgICAgIFsmXSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gY2FsbEZ1bmN0aW9uKHNldEZ1bmN0aW9uLCBqc09iamVjdCwg
a2V5LCB0aGVBbnN3ZXIpOworICAgICAgICAgICAgICAgICAgICB9ICwgWyZdIChKU1ZhbHVlUmVm
KiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVy
dHlLZXkoY29udGV4dCwgYXBpT2JqZWN0LCBrZXksIHRoZUFuc3dlciwga0pTUHJvcGVydHlBdHRy
aWJ1dGVOb25lLCBleGNlcHRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworICAgICAgICAgICAgICAgICAgICB9LCAic2V0
dGluZyBwcm9wZXJ0eSBrZXlzIHRvIHRoZSBhbnN3ZXIiKTsKKyAgICAgICAgICAgICAgICAvLyBD
aGVjayBnZXQgaXMgdGhlIHNhbWUgb24gQVBJIG9iamVjdC4KKyAgICAgICAgICAgICAgICBjaGVj
a0pTQW5kQVBJTWF0Y2goCisgICAgICAgICAgICAgICAgICAgIFsmXSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gY2FsbEZ1bmN0aW9uKGdldEZ1bmN0aW9uLCBhcGlPYmplY3QsIGtl
eSk7CisgICAgICAgICAgICAgICAgICAgIH0sIFsmXSAoSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPYmplY3RHZXRQcm9wZXJ0eUtleShj
b250ZXh0LCBhcGlPYmplY3QsIGtleSwgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAg
fSwgImdldHRpbmcgcHJvcGVydHkga2V5cyBmcm9tIEFQSSBvYmplY3RzIik7CisgICAgICAgICAg
ICAgICAgLy8gQ2hlY2sgZ2V0IGlzIHRoZSBzYW1lIG9uIHJlc3BlY3RpdmUgb2JqZWN0cy4KKyAg
ICAgICAgICAgICAgICBjaGVja0pTQW5kQVBJTWF0Y2goCisgICAgICAgICAgICAgICAgICAgIFsm
XSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbEZ1bmN0aW9uKGdldEZ1bmN0
aW9uLCBqc09iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgWyZdIChKU1ZhbHVl
UmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09iamVj
dEdldFByb3BlcnR5S2V5KGNvbnRleHQsIGFwaU9iamVjdCwga2V5LCBleGNlcHRpb24pOworICAg
ICAgICAgICAgICAgICAgICB9LCAiZ2V0dGluZyBwcm9wZXJ0eSBrZXlzIGZyb20gcmVzcGVjdGl2
ZSBvYmplY3RzIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB7Cisg
ICAgICAgIGF1dG8gb2JqZWN0cyA9IGludGVyZXN0aW5nT2JqZWN0cygpOworICAgICAgICBhdXRv
IGtleXMgPSBpbnRlcmVzdGluZ0tleXMoKTsKKworICAgICAgICBKU1ZhbHVlUmVmIHRoZUFuc3dl
ciA9IEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIDQyKTsKKyAgICAgICAgZm9yIChhdXRvJiBv
YmplY3QgOiBvYmplY3RzKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIlxuTmV4dCBvYmplY3Q6
ICIsIGJpdHdpc2VfY2FzdDxKU0M6OkpTVmFsdWU+KG9iamVjdCkpOworICAgICAgICAgICAgZm9y
IChhdXRvJiBrZXkgOiBrZXlzKSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJVc2luZyBr
ZXk6ICIsIGJpdHdpc2VfY2FzdDxKU0M6OkpTVmFsdWU+KGtleSkpOworICAgICAgICAgICAgICAg
IGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oaGFzRnVuY3Rpb24sIG9iamVjdCwg
a2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24p
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29u
dGV4dCwgSlNPYmplY3RIYXNQcm9wZXJ0eUtleShjb250ZXh0LCBvYmplY3QsIGtleSwgZXhjZXB0
aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIH0sICJjaGVja2luZyBoYXMgcHJvcGVydHkga2V5
cyB1bnNldCIpOworCisgICAgICAgICAgICAgICAgY2hlY2soISFjYWxsRnVuY3Rpb24oc2V0RnVu
Y3Rpb24sIG9iamVjdCwga2V5LCB0aGVBbnN3ZXIpLCAic2V0IHByb3BlcnR5IHRvIHRoZSBhbnN3
ZXIiKTsKKworICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAg
ICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rp
b24oaGFzRnVuY3Rpb24sIG9iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgWyZd
IChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgSlNPYmplY3RIYXNQcm9wZXJ0eUtleShjb250
ZXh0LCBvYmplY3QsIGtleSwgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIH0sICJj
aGVja2luZyBoYXMgcHJvcGVydHkga2V5cyBzZXQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0byBvYmplY3RzID0gaW50ZXJlc3RpbmdPYmpl
Y3RzKCk7CisgICAgICAgIGF1dG8ga2V5cyA9IGludGVyZXN0aW5nS2V5cygpOworCisgICAgICAg
IEpTVmFsdWVSZWYgdGhlQW5zd2VyID0gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgNDIpOwor
ICAgICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IG9iamVjdHMpIHsKKyAgICAgICAgICAgIGRhdGFM
b2dMbigiXG5OZXh0IG9iamVjdDogIiwgYml0d2lzZV9jYXN0PEpTQzo6SlNWYWx1ZT4ob2JqZWN0
KSk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGtleSA6IGtleXMpIHsKKyAgICAgICAgICAgICAg
ICBkYXRhTG9nTG4oIlVzaW5nIGtleTogIiwgYml0d2lzZV9jYXN0PEpTQzo6SlNWYWx1ZT4oa2V5
KSk7CisgICAgICAgICAgICAgICAgY2hlY2tKU0FuZEFQSU1hdGNoKAorICAgICAgICAgICAgICAg
ICAgICBbJl0geworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxGdW5jdGlvbihk
ZWxldGVGdW5jdGlvbiwgb2JqZWN0LCBrZXkpOworICAgICAgICAgICAgICAgICAgICB9LCBbJl0g
KEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCBKU09iamVjdERlbGV0ZVByb3BlcnR5S2V5KGNv
bnRleHQsIG9iamVjdCwga2V5LCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgfSwg
ImNoZWNraW5nIGhhcyBwcm9wZXJ0eSBrZXlzIHVuc2V0Iik7CisKKyAgICAgICAgICAgICAgICBj
aGVjayghIWNhbGxGdW5jdGlvbihzZXRGdW5jdGlvbiwgb2JqZWN0LCBrZXksIHRoZUFuc3dlciks
ICJzZXQgcHJvcGVydHkgdG8gdGhlIGFuc3dlciIpOworCisgICAgICAgICAgICAgICAgY2hlY2tK
U0FuZEFQSU1hdGNoKAorICAgICAgICAgICAgICAgICAgICBbJl0geworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNhbGxGdW5jdGlvbihkZWxldGVGdW5jdGlvbiwgb2JqZWN0LCBrZXkp
OworICAgICAgICAgICAgICAgICAgICB9LCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgewor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0
LCBKU09iamVjdERlbGV0ZVByb3BlcnR5S2V5KGNvbnRleHQsIG9iamVjdCwga2V5LCBleGNlcHRp
b24pKTsKKyAgICAgICAgICAgICAgICAgICAgfSwgImNoZWNraW5nIGhhcyBwcm9wZXJ0eSBrZXlz
IHNldCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgZGF0YUxvZ0xu
KCJDLUFQSSB0ZXN0cyBpbiBDKysgaGFkICIsIGZhaWxlZCwgIiBmYWlsdXJlcyIpOworICAgIHJl
dHVybiBmYWlsZWQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL3Rlc3RhcGkubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGku
bW0KaW5kZXggZTk4ZDZjZjVkZGJjZTE3OGUwMGM5ZGRiMGU1MGVjZTNhZTNkNjE3YS4uZmU4OTE3
NTZhMTRmOGQ3YWU2NWZjODMzNmYwNGJiMTE0YmQ5ODFhYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQpAQCAtMjMsNiArMjMsNyBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCisjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmg+CiAKICNpbXBvcnQgIkN1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJU
ZXN0LmgiCkBAIC01ODMsNiArNTg0LDcxIEBAIHN0YXRpYyB2b2lkIHRlc3RPYmplY3RpdmVDQVBJ
TWFpbigpCiAgICAgfQogCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4
dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAq
c3ltYm9sID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJTeW1ib2woJ2RvcGUnKTsiXTsKKyAg
ICAgICAgSlNWYWx1ZSAqbm90U3ltYm9sID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCInZG9w
ZSciXTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJTaG91bGQgYmUgYSBzeW1ib2wgdmFsdWUiLCBz
eW1ib2wuaXNTeW1ib2wpOworICAgICAgICBjaGVja1Jlc3VsdChAIlNob3VsZCBub3QgYmUgYSBz
eW1ib2wgdmFsdWUiLCAhbm90U3ltYm9sLmlzU3ltYm9sKTsKKyAgICB9CisKKyAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxs
b2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICpzeW1ib2wgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhO
ZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246QCJkb3BlIiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAg
ICAgIGNoZWNrUmVzdWx0KEAiU2hvdWxkIGJlIGEgY3JlYXRlZCBmcm9tIE9iYy1DIiwgc3ltYm9s
LmlzU3ltYm9sKTsKKyAgICB9CisKKyNpZiAhKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMwMCkg
fHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQorCisgICAgQGF1dG9yZWxlYXNlcG9v
bCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0
XTsKKyAgICAgICAgSlNWYWx1ZSAqYXJyYXlJdGVyYXRvciA9IFtjb250ZXh0IGV2YWx1YXRlU2Ny
aXB0OkAiQXJyYXkucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0iXTsKKyAgICAgICAgSlNWYWx1
ZSAqaXRlcmF0b3JTeW1ib2wgPSBjb250ZXh0W0AiU3ltYm9sIl1bQCJpdGVyYXRvciJdOworICAg
ICAgICBKU1ZhbHVlICphcnJheSA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld0FycmF5SW5Db250ZXh0
OmNvbnRleHRdOworICAgICAgICBjaGVja1Jlc3VsdChAIkxvb2tpbmcgdXAgYnkgc3Vic2NyaXB0
IHdpdGggc3ltYm9sIHNob3VsZCB3b3JrIiwgW2FycmF5W2l0ZXJhdG9yU3ltYm9sXSBpc0VxdWFs
OmFycmF5SXRlcmF0b3JdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJMb29raW5nIHVwIGJ5IG1l
dGhvZCB3aXRoIHN5bWJvbCBzaG91bGQgd29yayIsIFtbYXJyYXkgdmFsdWVGb3JQcm9wZXJ0eTpp
dGVyYXRvclN5bWJvbF0gaXNFcXVhbDphcnJheUl0ZXJhdG9yXSk7CisgICAgfQorCisgICAgQGF1
dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0
IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAqaXRlcmF0b3JTeW1ib2wgPSBjb250ZXh0
W0AiU3ltYm9sIl1bQCJpdGVyYXRvciJdOworICAgICAgICBKU1ZhbHVlICpvYmplY3QgPSBbSlNW
YWx1ZSB2YWx1ZVdpdGhOZXdPYmplY3RJbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIEpTVmFs
dWUgKnRoZUFuc3dlciA9IFtKU1ZhbHVlIHZhbHVlV2l0aFVJbnQzMjo0MiBpbkNvbnRleHQ6Y29u
dGV4dF07CisgICAgICAgIG9iamVjdFtpdGVyYXRvclN5bWJvbF0gPSB0aGVBbnN3ZXI7CisgICAg
ICAgIGNoZWNrUmVzdWx0KEAiU2V0aW5nIGJ5IHN1YnNjcmlwdCB3aXRoIHN5bWJvbCBzaG91bGQg
d29yayIsIFtvYmplY3RbaXRlcmF0b3JTeW1ib2xdIGlzRXF1YWw6dGhlQW5zd2VyXSk7CisgICAg
fQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9
IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAqaXRlcmF0b3JTeW1i
b2wgPSBjb250ZXh0W0AiU3ltYm9sIl1bQCJpdGVyYXRvciJdOworICAgICAgICBKU1ZhbHVlICpv
YmplY3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdPYmplY3RJbkNvbnRleHQ6Y29udGV4dF07Cisg
ICAgICAgIEpTVmFsdWUgKnRoZUFuc3dlciA9IFtKU1ZhbHVlIHZhbHVlV2l0aFVJbnQzMjo0MiBp
bkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIFtvYmplY3Qgc2V0VmFsdWU6dGhlQW5zd2VyIGZv
clByb3BlcnR5Oml0ZXJhdG9yU3ltYm9sXTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJTZXRpbmcg
YnkgbWV0aG9kIHdpdGggc3ltYm9sIHNob3VsZCB3b3JrIiwgW29iamVjdFtpdGVyYXRvclN5bWJv
bF0gaXNFcXVhbDp0aGVBbnN3ZXJdKTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsK
KyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOwor
ICAgICAgICBKU1ZhbHVlICppdGVyYXRvclN5bWJvbCA9IGNvbnRleHRbQCJTeW1ib2wiXVtAIml0
ZXJhdG9yIl07CisgICAgICAgIEpTVmFsdWUgKm9iamVjdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5l
d09iamVjdEluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgSlNWYWx1ZSAqdGhlQW5zd2VyID0g
W0pTVmFsdWUgdmFsdWVXaXRoVUludDMyOjQyIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAg
b2JqZWN0W2l0ZXJhdG9yU3ltYm9sXSA9IHRoZUFuc3dlcjsKKyAgICAgICAgY2hlY2tSZXN1bHQo
QCJoYXMgcHJvcGVydHkgd2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsiLCBbb2JqZWN0IGhhc1Byb3Bl
cnR5Oml0ZXJhdG9yU3ltYm9sXSk7CisgICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7Cisg
ICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAg
ICAgICAgSlNWYWx1ZSAqaXRlcmF0b3JTeW1ib2wgPSBjb250ZXh0W0AiU3ltYm9sIl1bQCJpdGVy
YXRvciJdOworICAgICAgICBKU1ZhbHVlICpvYmplY3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdP
YmplY3RJbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIEpTVmFsdWUgKnRoZUFuc3dlciA9IFtK
U1ZhbHVlIHZhbHVlV2l0aFVJbnQzMjo0MiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIGNo
ZWNrUmVzdWx0KEAiZGVsZXRlIHByb3BlcnR5IHdpdGggc3ltYm9sIHNob3VsZCB3b3JrIHdpdGhv
dXQgcHJvcGVydHkiLCBbb2JqZWN0IGRlbGV0ZVByb3BlcnR5Oml0ZXJhdG9yU3ltYm9sXSk7Cisg
ICAgICAgIG9iamVjdFtpdGVyYXRvclN5bWJvbF0gPSB0aGVBbnN3ZXI7CisgICAgICAgIGNoZWNr
UmVzdWx0KEAiZGVsZXRlIHByb3BlcnR5IHdpdGggc3ltYm9sIHNob3VsZCB3b3JrIHdpdGggcHJv
cGVydHkiLCBbb2JqZWN0IGRlbGV0ZVByb3BlcnR5Oml0ZXJhdG9yU3ltYm9sXSk7CisgICAgICAg
IGNoZWNrUmVzdWx0KEAiZGVsZXRlIHNob3VsZCBiZSBmYWxzZSB3aXRoIG5vbi1jb25maWd1cmFi
bGUgcHJvcGVydHkiLCAhW2NvbnRleHRbQCJBcnJheSJdIGRlbGV0ZVByb3BlcnR5OkAicHJvdG90
eXBlIl0pOworICAgIH0KKworI2VuZGlmIC8vICEoZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAw
KSB8fCAoZGVmaW5lZChfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMTAwMDApCisKKyAgICBAYXV0b3JlbGVhc2Vw
b29sIHsKICAgICAgICAgSlNDb2xsZWN0aW9uKiBteVByaXZhdGVQcm9wZXJ0aWVzID0gW1tKU0Nv
bGxlY3Rpb24gYWxsb2NdIGluaXRdOwogCiAgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzZGY2MjJjMzNhNjZiMzc1ZDA0ZWIzNDc3YTFi
MTEwZGE1NjM2N2M2Li45ZmFjMWQwNjY2ZDdhNGUwMWVlZmU1NWQ1NmE1OGJkZmQ2NGMxMGVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM2Nyw2ICsxMzY3LDcgQEAKIAkJNTMx
MUJENEIxRUE1ODFFNTAwNTI1MjgxIC8qIFdhc21PTUdQbGFuLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzExQkQ0OTFFQTU4MUU1MDA1MjUyODEgLyog
V2FzbU9NR1BsYW4uaCAqLzsgfTsKIAkJNTMxMzc0QkQxRDVDRTY3NjAwQUY3QTBCIC8qIFdhc21Q
bGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzEz
NzRCQzFENUNFNjc2MDBBRjdBMEIgLyogV2FzbVBsYW4uaCAqLzsgfTsKIAkJNTMxMzc0QkYxRDVD
RTk1MDAwQUY3QTBCIC8qIFdhc21QbGFuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzMTM3NEJFMUQ1Q0U5NTAwMEFGN0EwQiAvKiBXYXNtUGxhbi5j
cHAgKi87IH07CisJCTUzMUQ0RTFEMUY1OUQ4ODkwMEVDODM2QyAvKiB0ZXN0YXBpLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMUQ0RTE5MUY1OUNE
RDIwMEVDODM2QyAvKiB0ZXN0YXBpLmNwcCAqLzsgfTsKIAkJNTMzQjE1REYxREM3RjQ2MzAwNEQ1
MDBBIC8qIFdhc21PcHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzM0IxNURFMURDN0Y0NjMwMDRENTAwQSAvKiBXYXNtT3BzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTM0MUZDNzAxREFDMzNFNTAw
RTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0MUZDNkYxREFDMzNFNTAwRTdFNEQ3IC8qIEIz
V2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwICovOyB9OwogCQk1MzQxRkM3MjFEQUMzNDNDMDBFN0U0
RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0MUZDNzExREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJv
dW5kc0NoZWNrVmFsdWUuaCAqLzsgfTsKQEAgLTM5NDcsNiArMzk0OCw3IEBACiAJCTUzMTFCRDQ5
MUVBNTgxRTUwMDUyNTI4MSAvKiBXYXNtT01HUGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXYXNtT01HUGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MzEzNzRCQzFENUNFNjc2MDBBRjdBMEIgLyogV2FzbVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2FzbVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTMxMzc0QkUxRDVDRTk1MDAwQUY3QTBCIC8qIFdhc21QbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21QbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTMxRDRFMTkxRjU5Q0REMjAwRUM4MzZDIC8qIHRlc3RhcGkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gdGVzdGFwaS5jcHA7IHBhdGggPSBBUEkvdGVzdHMvdGVzdGFwaS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzM0IxNURFMURDN0Y0NjMwMDRENTAwQSAvKiBX
YXNtT3BzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21PcHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0MUZDNkYxREFDMzNFNTAwRTdFNEQ3IC8qIEIz
V2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM1dhc21Cb3VuZHND
aGVja1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0MUZDNzExREFD
MzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBwYXRoID0gYjMvQjNX
YXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzk3
Nyw3ICszOTc5LDYgQEAKIAkJNTM5MTdFN0ExQjc5MDZFNDAwMEVCRDMzIC8qIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzOTE3RTdDMUI3OTExMDYwMDBFQkQzMyAvKiBK
U1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTM5MTdFODMxQjc5MUNCODAwMEVCRDMzIC8qIFR5cGVkQXJyYXlQcm90b3R5cGUuanMg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBUeXBlZEFycmF5UHJvdG90
eXBlLmpzOyBwYXRoID0gYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qczsgc291cmNlVHJl
ZSA9IFNPVVJDRV9ST09UOyB9OwotCQk1MzlFQjA3MTFENTUzREY4MDBDODJFRjcgLyogdGVzdFdh
c20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdGVzdFdhc20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzlGQjhCOTFDOTlEQTdDMDA5NDBGQTEg
LyogSlNBcnJheUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNB
cnJheUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNCMEJFMzMxRTU2
MUFDOTAwQThGQzI5IC8qIEdldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzQjBCRTM1MUU1NjFCMDkwMEE4RkMyOSAvKiBQcm94
eWFibGVBY2Nlc3NDYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFByb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NTg5NSwxMCArNTg5NiwxMCBAQAogCQkJCUZFQjUxRjZCMUE5N0I2ODgwMDFGOTIxQyAvKiBSZWdy
ZXNzMTQxODA5Lm1tICovLAogCQkJCUZFQ0I4QjI5MUQyNUNBQkIwMDZGMjQ2MyAvKiB0ZXN0YXBp
LWZ1bmN0aW9uLW92ZXJyaWRlcy5qcyAqLywKIAkJCQkxNEJENUEyRDBBM0U5MUY2MDBCQUY1OUMg
LyogdGVzdGFwaS5jICovLAorCQkJCTUzMUQ0RTE5MUY1OUNERDIwMEVDODM2QyAvKiB0ZXN0YXBp
LmNwcCAqLywKIAkJCQkxNEQ4NTc3NDBBNDY5NkM4MDAzMjE0NkMgLyogdGVzdGFwaS5qcyAqLywK
IAkJCQk4NkQyMjIxOTE2N0VGOTQ0MDAyNEM4MDQgLyogdGVzdGFwaS5tbSAqLywKIAkJCQk2NTEx
MjJFNTE0MDQ2OUJBMDAyQjEwMUQgLyogdGVzdFJlZ0V4cC5jcHAgKi8sCi0JCQkJNTM5RUIwNzEx
RDU1M0RGODAwQzgyRUY3IC8qIHRlc3RXYXNtLmNwcCAqLywKIAkJCQk1MzQ5MDI4MjFDNzI0MkM4
MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCAqLywKIAkJCQk1MzQ5MDI4MzFDNzI0MkM4
MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmggKi8sCiAJCQkpOwpAQCAtMTAyMDUsNiArMTAy
MDYsNyBAQAogCQkJCTY1NTcwRjVBMUFBNEMzRUEwMDlCM0MyMyAvKiBSZWdyZXNzMTQxMjc1Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkVCNTFGNkMxQTk3QjY4ODAwMUY5MjFDIC8qIFJlZ3Jlc3Mx
NDE4MDkubW0gaW4gU291cmNlcyAqLywKIAkJCQkxNDQwRjYxMDBBNEY4NTY3MDAwNUYwNjEgLyog
dGVzdGFwaS5jIGluIFNvdXJjZXMgKi8sCisJCQkJNTMxRDRFMUQxRjU5RDg4OTAwRUM4MzZDIC8q
IHRlc3RhcGkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZEMjIyMUExNjdFRjk0NDAwMjRDODA0
IC8qIHRlc3RhcGkubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzQ5MDI4NTFDNzI3NkI3MDAxMkJD
QjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320198</attachid>
            <date>2017-09-07 16:00:33 -0700</date>
            <delta_ts>2018-04-23 15:59:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175836-20170907160031.patch</filename>
            <type>text/plain</type>
            <size>56897</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
OTgyNTA3OTliYTFhNWE4YmZiMjc3MjlmMzM5ZjI3MWIzNGNiMjFlLi44M2JlMjcyYjNkNjdiOGQ0
MDc1NDhmYWEzMjJhMWQ5MjFhYmRhMzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OSBAQAorMjAxNy0wOS0wNiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDIEFQSV0gV2Ugc2hvdWxkIHN1cHBvcnQgdGhlIHN5bWJvbCB0
eXBlIGluIG91ciBDL09iai1DIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1ODM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRm9yIHdoYXRldmVyIHJlYXNvbiwgd2hlbmV2ZXIgd2UgYWRkZWQgc3Vw
cG9ydCBmb3Igc3ltYm9scyBpbiBKU0Mgd2UgbmV2ZXIgZXh0ZW5kZWQgc3VjaAorICAgICAgICBz
dXBwb3J0IHRvIG91ciBDL09iai1DIEFQSXMuIFRoaXMgcGF0Y2ggcmVtZWRpZXMgdGhhdCBwcm9i
bGVtLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIGZvbGxvd2luZyBBUEkgYWRkaXRp
b25zOgorICAgICAgICAxKSBUZXN0IGlmIGEgSlNWYWx1ZS9KU1ZhbHVlUmVmIGlzIGEgc3ltYm9s
IHZpYSBhbnkgb2YgdGhlIG1ldGhvZHMgQVBJIGFyZSBhYmxlIHRvIHRlc3QgZm9yIHRoZSB0eXBl
cyBvZiBvdGhlciBKU1ZhbHVlcy4KKyAgICAgICAgMikgQ3JlYXRlIGEgc3ltYm9sIG9uIGJvdGgg
QVBJcy4KKyAgICAgICAgMykgR2V0L1NldC9EZWxldGUvRGVmaW5lIHByb3BlcnR5IG5vdyB0YWtl
IGlkcyBpbiB0aGUgT2JqLUMgQVBJLgorICAgICAgICA0KSBBZGQgR2V0L1NldC9EZWxldGUgaW4g
dGhlIEMgQVBJLgorCisgICAgICAgIFdlIGNhbiBkbyAzIGJlY2F1c2UgaXQgaXMgYm90aCBiaW5h
cnkgYW5kIHNvdXJjZSBjb21wYXRhYmxlIHdpdGggdGhlIGV4aXN0aW5nIEFQSS4KKyAgICAgICAg
SSBhZGRlZCB0aGUgNCBhZGRpdGlvbiBiZWNhdXNlIHRoZSBjdXJyZW50IHByb3BlcnR5IGFjY2Vz
cyBBUElzCisgICAgICAgIG9ubHkgaGF2ZSB0aGUgYWJpbGl0eSB0byBnZXQgU3RyaW5ncy4gSXQg
d2FzIHBvc3NpYmxlIHRvIG1lcmdlCisgICAgICAgIHN5bWJvbHMgaW50byBKU1N0cmluZ1JlZiBi
dXQgdGhhdCBmZWx0IGNvbmZ1c2luZyBhbmQgZXhwb3NlcworICAgICAgICBpbXBsZW1lbnRhdGlv
biBkZXRhaWxzIG9mIG91ciBlbmdpbmUuIFRoZSBuZXcgZnVuY3Rpb25zIG1hdGNoIHRoZQorICAg
ICAgICBzYW1lIG1lYW5pbmcgdGhhdCB0aGV5IGhhdmUgaW4gSlMuCisKKyAgICAgICAgKiBBUEkv
SlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3RIYXNQcm9wZXJ0eUtleSk6CisgICAg
ICAgIChKU09iamVjdEdldFByb3BlcnR5S2V5KToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJvcGVy
dHlLZXkpOgorICAgICAgICAoSlNPYmplY3REZWxldGVQcm9wZXJ0eUtleSk6CisgICAgICAgICog
QVBJL0pTT2JqZWN0UmVmLmg6CisgICAgICAgICogQVBJL0pTVmFsdWUuaDoKKyAgICAgICAgKiBB
UEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKCtbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdTeW1ib2xGcm9t
RGVzY3JpcHRpb246aW5Db250ZXh0Ol0pOgorICAgICAgICAocGVyZm9ybVByb3BlcnR5T3BlcmF0
aW9uKToKKyAgICAgICAgKC1bSlNWYWx1ZSB2YWx1ZUZvclByb3BlcnR5OnZhbHVlRm9yUHJvcGVy
dHk6XSk6CisgICAgICAgICgtW0pTVmFsdWUgc2V0VmFsdWU6Zm9yUHJvcGVydHk6c2V0VmFsdWU6
Zm9yUHJvcGVydHk6XSk6CisgICAgICAgICgtW0pTVmFsdWUgZGVsZXRlUHJvcGVydHk6ZGVsZXRl
UHJvcGVydHk6XSk6CisgICAgICAgICgtW0pTVmFsdWUgaGFzUHJvcGVydHk6aGFzUHJvcGVydHk6
XSk6CisgICAgICAgICgtW0pTVmFsdWUgZGVmaW5lUHJvcGVydHk6ZGVzY3JpcHRvcjpkZWZpbmVQ
cm9wZXJ0eTpkZXNjcmlwdG9yOl0pOgorICAgICAgICAoLVtKU1ZhbHVlIGlzU3ltYm9sXSk6Cisg
ICAgICAgICgtW0pTVmFsdWUgb2JqZWN0Rm9yS2V5ZWRTdWJzY3JpcHQ6XSk6CisgICAgICAgICgt
W0pTVmFsdWUgc2V0T2JqZWN0OmZvcktleWVkU3Vic2NyaXB0Ol0pOgorICAgICAgICAoLVtKU1Zh
bHVlIHZhbHVlRm9yUHJvcGVydHk6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmFsdWUgc2V0
VmFsdWU6Zm9yUHJvcGVydHk6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmFsdWUgZGVsZXRl
UHJvcGVydHk6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmFsdWUgaGFzUHJvcGVydHk6XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmFsdWUgZGVmaW5lUHJvcGVydHk6ZGVzY3JpcHRvcjpd
KTogRGVsZXRlZC4KKyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5jcHA6CisgICAgICAgIChKU1Zh
bHVlR2V0VHlwZSk6CisgICAgICAgIChKU1ZhbHVlSXNTeW1ib2wpOgorICAgICAgICAoSlNWYWx1
ZU1ha2VTeW1ib2wpOgorICAgICAgICAqIEFQSS9KU1ZhbHVlUmVmLmg6CisgICAgICAgICogQVBJ
L3Rlc3RzL3Rlc3RhcGkuYzoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIEFQSS90ZXN0cy90
ZXN0YXBpLmNwcDogQWRkZWQuCisgICAgICAgIChBUElTdHJpbmc6OkFQSVN0cmluZyk6CisgICAg
ICAgIChBUElTdHJpbmc6On5BUElTdHJpbmcpOgorICAgICAgICAoQVBJU3RyaW5nOjpvcGVyYXRv
ciBKU1N0cmluZ1JlZik6CisgICAgICAgIChBUElDb250ZXh0OjpBUElDb250ZXh0KToKKyAgICAg
ICAgKEFQSUNvbnRleHQ6On5BUElDb250ZXh0KToKKyAgICAgICAgKEFQSUNvbnRleHQ6Om9wZXJh
dG9yIEpTR2xvYmFsQ29udGV4dFJlZik6CisgICAgICAgIChBUElWZWN0b3I6OkFQSVZlY3Rvcik6
CisgICAgICAgIChBUElWZWN0b3I6On5BUElWZWN0b3IpOgorICAgICAgICAoQVBJVmVjdG9yOjph
cHBlbmQpOgorICAgICAgICAodGVzdENBUElWaWFDcHApOgorICAgICAgICAoVGVzdEFQSTo6ZXZh
bHVhdGVTY3JpcHQpOgorICAgICAgICAoVGVzdEFQSTo6Y2FsbEZ1bmN0aW9uKToKKyAgICAgICAg
KFRlc3RBUEk6OmZ1bmN0aW9uUmV0dXJuc1RydWUpOgorICAgICAgICAoVGVzdEFQSTo6Y2hlY2sp
OgorICAgICAgICAoVGVzdEFQSTo6Y2hlY2tKU0FuZEFQSU1hdGNoKToKKyAgICAgICAgKFRlc3RB
UEk6OmludGVyZXN0aW5nT2JqZWN0cyk6CisgICAgICAgIChUZXN0QVBJOjppbnRlcmVzdGluZ0tl
eXMpOgorICAgICAgICAoVGVzdEFQSTo6cnVuKToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFw
aS5tbToKKyAgICAgICAgKHRlc3RPYmplY3RpdmVDQVBJTWFpbik6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNy0wOS0wNSAgU2FhbSBC
YXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBpc05vdENlbGxTcGVjdWxhdGlv
biBpcyB3cm9uZyB3aXRoIHJlc3BlY3QgdG8gU3BlY0VtcHR5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IGNlMzdjYzY5MGY2NWYwNzAyM2Q3ZWVhYzMxNmJm
MzEyYzcyMWIyYjcuLjAwNjY2MzlkOWQzMDEyMjM1MTBmOGE1MzQ4OWI4ZGNkZWQxNzNhMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCkBAIC0zMzMsNiArMzMz
LDk0IEBAIHZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVj
dFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlCiAgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVk
ZWQoZXhlYywgZXhjZXB0aW9uKTsKIH0KIAorYm9vbCBKU09iamVjdEhhc1Byb3BlcnR5S2V5KEpT
Q29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoIWN0eCkgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBFeGVjU3RhdGUq
IGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKworICAg
IEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAgICBJZGVudGlmaWVyIGlkZW50
ID0gdG9KUyhleGVjLCBrZXkpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4
Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRU
aHJvdykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCByZXN1bHQgPSBqc09iamVj
dC0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpOworICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVk
KGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSlNWYWx1ZVJlZiBK
U09iamVjdEdldFByb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVj
dCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoIWN0
eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBKU0xvY2tI
b2xkZXIgbG9ja2VyKGV4ZWMpOworCisgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmpl
Y3QpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSB0b0pTKGV4ZWMsIGtleSkudG9Qcm9wZXJ0eUtl
eShleGVjKTsKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoZXhlYywgZXhjZXB0aW9u
KSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIEpTVmFsdWUganNWYWx1ZSA9IGpzT2JqZWN0LT5nZXQoZXhlYywgaWRlbnQpOworICAg
IGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHRv
UmVmKGV4ZWMsIGpzVmFsdWUpOworfQorCit2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHlLZXkoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIGtleSwgSlNWYWx1
ZVJlZiB2YWx1ZSwgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMo
Y3R4KTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIo
dm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKworICAgIEpT
T2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0
b0pTKGV4ZWMsIHZhbHVlKTsKKworICAgIElkZW50aWZpZXIgaWRlbnQgPSB0b0pTKGV4ZWMsIGtl
eSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQo
ZXhlYywgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBib29sIGRvZXNOb3RIYXZlUHJvcGVydHkgPSBhdHRyaWJ1dGVzICYmICFq
c09iamVjdC0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpOworICAgIGlmIChMSUtFTFkoIXNjb3Bl
LmV4Y2VwdGlvbigpKSkgeworICAgICAgICBpZiAoZG9lc05vdEhhdmVQcm9wZXJ0eSkgeworICAg
ICAgICAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2MoanNWYWx1ZSwgYXR0cmlidXRlcyk7Cisg
ICAgICAgICAgICBqc09iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVydHkoanNP
YmplY3QsIGV4ZWMsIGlkZW50LCBkZXNjLCBmYWxzZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChqc09iamVjdCk7CisgICAgICAgICAgICBqc09i
amVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KGpzT2JqZWN0LCBleGVjLCBpZGVudCwganNWYWx1ZSwg
c2xvdCk7CisgICAgICAgIH0KKyAgICB9CisgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoZXhl
YywgZXhjZXB0aW9uKTsKK30KKworYm9vbCBKU09iamVjdERlbGV0ZVByb3BlcnR5S2V5KEpTQ29u
dGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoIWN0eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBFeGVjU3RhdGUqIGV4
ZWMgPSB0b0pTKGN0eCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKworICAgIEpT
T2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0g
dG9KUyhleGVjLCBrZXkpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4Y2Vw
dGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJv
dykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+
bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoanNPYmplY3QsIGV4ZWMsIGlkZW50KTsKKyAg
ICBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChleGVjLCBleGNlcHRpb24pOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoSlNDb250
ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgaWYgKCFjdHgpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNPYmplY3RSZWYuaAppbmRleCA5NWQ1M2I3ZjRlNThlOTZmMGNiYzMxNTk1YWY5
YzQ2MTk3OGFhNDNkLi5mMmE2ZWVjZjVlNzVkMjJhMTBkYWE3ZjdmNzQ1ZDM0ZmYyOTY2MDJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oCkBAIC01MzYsOSArNTM2LDkg
QEAgSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9wZXJ0eShKU0NvbnRleHRSZWYg
Y3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEoKIEBwYXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250
ZXh0IHRvIHVzZS4KIEBwYXJhbSBvYmplY3QgVGhlIEpTT2JqZWN0IHdob3NlIHByb3BlcnR5IHlv
dSB3YW50IHRvIHNldC4KIEBwYXJhbSBwcm9wZXJ0eU5hbWUgQSBKU1N0cmluZyBjb250YWluaW5n
IHRoZSBwcm9wZXJ0eSdzIG5hbWUuCi1AcGFyYW0gdmFsdWUgQSBKU1ZhbHVlIHRvIHVzZSBhcyB0
aGUgcHJvcGVydHkncyB2YWx1ZS4KLUBwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNW
YWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxM
IGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCitAcGFyYW0gdmFsdWUg
QSBKU1ZhbHVlUmVmIHRvIHVzZSBhcyB0aGUgcHJvcGVydHkncyB2YWx1ZS4KIEBwYXJhbSBhdHRy
aWJ1dGVzIEEgbG9naWNhbGx5IE9SZWQgc2V0IG9mIEpTUHJvcGVydHlBdHRyaWJ1dGVzIHRvIGdp
dmUgdG8gdGhlIHByb3BlcnR5LgorQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1Zh
bHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwg
aWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICovCiBKU19FWFBPUlQg
dm9pZCBKU09iamVjdFNldFByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9i
amVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1Byb3Bl
cnR5QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCkBAIC01
NTUsNiArNTU1LDU0IEBAIEpTX0VYUE9SVCBib29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHkoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0CiAKIC8qIQogQGZ1bmN0aW9u
CitAYWJzdHJhY3QgVGVzdHMgd2hldGhlciBhbiBvYmplY3QgaGFzIGEgZ2l2ZW4gcHJvcGVydHkg
dXNpbmcgYSBKU1ZhbHVlUmVmIGFzIHRoZSBwcm9wZXJ0eSBrZXkuCitAcGFyYW0gb2JqZWN0IFRo
ZSBKU09iamVjdCB0byB0ZXN0LgorQHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250
YWluaW5nIHRoZSBwcm9wZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVy
dHkuCitAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2gg
dG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNh
cmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgorQHJlc3VsdCB0cnVlIGlmIHRoZSBvYmplY3QgaGFz
IGEgcHJvcGVydHkgd2hvc2UgbmFtZSBtYXRjaGVzIHByb3BlcnR5S2V5LCBvdGhlcndpc2UgZmFs
c2UuCitAZGlzY3Vzc2lvbiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHBlcmZvcm1pbmcg
InByb3BlcnR5S2V5IGluIG9iamVjdCIgZnJvbSBKYXZhU2NyaXB0LgorKi8KK0pTX0VYUE9SVCBi
b29sIEpTT2JqZWN0SGFzUHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYg
b2JqZWN0LCBKU1ZhbHVlUmVmIHByb3BlcnR5S2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENG
X0FWQUlMQUJMRSgxMF8xMywgMTFfMCk7CisKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgR2V0
cyBhIHByb3BlcnR5IGZyb20gYW4gb2JqZWN0IHVzaW5nIGEgSlNWYWx1ZVJlZiBhcyB0aGUgcHJv
cGVydHkga2V5LgorQHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgorQHBh
cmFtIG9iamVjdCBUaGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQgdG8gZ2V0Lgor
QHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBwcm9wZXJ0eSBr
ZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0gZXhjZXB0aW9u
IEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9u
LCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0
aW9uLgorQHJlc3VsdCBUaGUgcHJvcGVydHkncyB2YWx1ZSBpZiBvYmplY3QgaGFzIHRoZSBwcm9w
ZXJ0eSBrZXksIG90aGVyd2lzZSB0aGUgdW5kZWZpbmVkIHZhbHVlLgorQGRpc2N1c3Npb24gVGhp
cyBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyBwZXJmb3JtaW5nICJvYmplY3RbcHJvcGVydHlLZXld
IiBmcm9tIEphdmFTY3JpcHQuCisqLworSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQ
cm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVS
ZWYgcHJvcGVydHlLZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEz
LCAxMV8wKTsKKworLyohCitAZnVuY3Rpb24KK0BhYnN0cmFjdCBTZXRzIGEgcHJvcGVydHkgb24g
YW4gb2JqZWN0IHVzaW5nIGEgSlNWYWx1ZVJlZiBhcyB0aGUgcHJvcGVydHkga2V5LgorQHBhcmFt
IGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgorQHBhcmFtIG9iamVjdCBUaGUgSlNP
YmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQgdG8gc2V0LgorQHBhcmFtIHByb3BlcnR5S2V5
IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBwcm9wZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9v
a2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0gdmFsdWUgQSBKU1ZhbHVlUmVmIHRvIHVzZSBh
cyB0aGUgcHJvcGVydHkncyB2YWx1ZS4KK0BwYXJhbSBhdHRyaWJ1dGVzIEEgbG9naWNhbGx5IE9S
ZWQgc2V0IG9mIEpTUHJvcGVydHlBdHRyaWJ1dGVzIHRvIGdpdmUgdG8gdGhlIHByb3BlcnR5Lgor
QHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0
b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRv
IHN0b3JlIGFuIGV4Y2VwdGlvbi4KK0BkaXNjdXNzaW9uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNh
bWUgYXMgcGVyZm9ybWluZyAib2JqZWN0W3Byb3BlcnR5S2V5XSA9IHZhbHVlIiBmcm9tIEphdmFT
Y3JpcHQuCisqLworSlNfRVhQT1JUIHZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eUtleShKU0NvbnRl
eHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYgcHJvcGVydHlLZXksIEpT
VmFsdWVSZWYgdmFsdWUsIEpTUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEzLCAxMV8wKTsKKworLyohCitAZnVuY3Rp
b24KK0BhYnN0cmFjdCBEZWxldGVzIGEgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QgdXNpbmcgYSBK
U1ZhbHVlUmVmIGFzIHRoZSBwcm9wZXJ0eSBrZXkuCitAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24g
Y29udGV4dCB0byB1c2UuCitAcGFyYW0gb2JqZWN0IFRoZSBKU09iamVjdCB3aG9zZSBwcm9wZXJ0
eSB5b3Ugd2FudCB0byBkZWxldGUuCitAcGFyYW0gcHJvcGVydHlLZXkgQSBKU1ZhbHVlUmVmIGNv
bnRhaW5pbmcgdGhlIHByb3BlcnR5IGtleSB0byB1c2Ugd2hlbiBsb29raW5nIHVwIHRoZSBwcm9w
ZXJ0eS4KK0BwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGlj
aCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3Qg
Y2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCitAcmVzdWx0IHRydWUgaWYgdGhlIGRlbGV0ZSBv
cGVyYXRpb24gc3VjY2VlZHMsIG90aGVyd2lzZSBmYWxzZSAoZm9yIGV4YW1wbGUsIGlmIHRoZSBw
cm9wZXJ0eSBoYXMgdGhlIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSBhdHRyaWJ1dGUg
c2V0KS4KK0BkaXNjdXNzaW9uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXMgcGVyZm9ybWlu
ZyAiZGVsZXRlIG9iamVjdFtwcm9wZXJ0eUtleV0iIGZyb20gSmF2YVNjcmlwdC4KKyovCitKU19F
WFBPUlQgYm9vbCBKU09iamVjdERlbGV0ZVByb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpT
T2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBwcm9wZXJ0eUtleSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTMsIDExXzApOworCisvKiEKK0BmdW5jdGlvbgogQGFi
c3RyYWN0IEdldHMgYSBwcm9wZXJ0eSBmcm9tIGFuIG9iamVjdCBieSBudW1lcmljIGluZGV4Lgog
QHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgogQHBhcmFtIG9iamVjdCBU
aGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQgdG8gZ2V0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWUuaAppbmRleCAxNDEwZGQ3NGExN2Y5NzA3MDZlNDRkZWQyNGNjZDE3MGMz
NDc5YzJlLi4yNzJlM2Q1ZGI1ZGU0ZjlmZjFiM2QyY2Y5MGI3OTRhMGE4M2U3NzJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUuaApAQCAtMTQ5LDYgKzE0OSwxNSBAQCBOU19DTEFTU19B
VkFJTEFCTEUoMTBfOSwgN18wKQogKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFVuZGVmaW5lZEluQ29u
dGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKIAogLyohCisgQG1ldGhvZAorIEBhYnN0cmFjdCBD
cmVhdGUgYSBuZXcsIHVuaXF1ZSwgc3ltYm9sIG9iamVjdC4KKyBAcGFyYW0gZGVzY3JpcHRpb24g
VGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBzeW1ib2wgb2JqZWN0IGJlaW5nIGNyZWF0ZWQuCisgQHBh
cmFtIGNvbnRleHQgVGhlIEpTQ29udGV4dCB0byB3aGljaCB0aGUgcmVzdWx0aW5nIEpTVmFsdWUg
YmVsb25ncy4KKyBAcmVzdWx0IFRoZSBKU1ZhbHVlIHJlcHJlc2VudGluZyBhIHVuaXF1ZSBKYXZh
U2NyaXB0IHZhbHVlIHdpdGggdHlwZSBzeW1ib2wuCisgKi8KKysgKEpTVmFsdWUgKil2YWx1ZVdp
dGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246KE5TU3RyaW5nICopZGVzY3JpcHRpb24gaW5Db250
ZXh0OihKU0NvbnRleHQgKiljb250ZXh0IE5TX0FWQUlMQUJMRSgxMF8xMywgMTFfMCk7CisKKy8q
IQogQG1ldGhvZGdyb3VwIENvbnZlcnRpbmcgdG8gT2JqZWN0aXZlLUMgVHlwZXMKIEBkaXNjdXNz
aW9uIFdoZW4gY29udmVydGluZyBiZXR3ZWVuIEphdmFTY3JpcHQgdmFsdWVzIGFuZCBPYmplY3Rp
dmUtQyBvYmplY3RzIGEgY29weSBpcwogIHBlcmZvcm1lZC4gVmFsdWVzIG9mIHR5cGVzIGxpc3Rl
ZCBiZWxvdyBhcmUgY29waWVkIHRvIHRoZSBjb3JyZXNwb25kaW5nCkBAIC0zMDUsNDMgKzMxNCw1
MiBAQCBOU19DTEFTU19BVkFJTEFCTEUoMTBfOSwgN18wKQogLyohCiBAbWV0aG9kZ3JvdXAgQWNj
ZXNzaW5nIFByb3BlcnRpZXMKICovCisKKyNpZiAhKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMw
MCkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQorCiAvKiEKIEBtZXRob2QKIEBh
YnN0cmFjdCBBY2Nlc3MgYSBwcm9wZXJ0eSBvZiBhIEpTVmFsdWUuCiBAcmVzdWx0IFRoZSBKU1Zh
bHVlIGZvciB0aGUgcmVxdWVzdGVkIHByb3BlcnR5IG9yIHRoZSBKU1ZhbHVlIDxjb2RlPnVuZGVm
aW5lZDwvY29kZT4gCiAgaWYgdGhlIHByb3BlcnR5IGRvZXMgbm90IGV4aXN0LgorQGRpc2N1c3Np
b24gQ29ycmVzcG9uZHMgdG8gdGhlIEphdmFTY3JpcHQgb3BlcmF0aW9uIDxjb2RlPm9iamVjdFtw
cm9wZXJ0eV08L2NvZGU+LiBQYXNzIGFuIE5TU3RyaW5nICogdG8gYWNjZXNzIGEgbmFtZWQgcHJv
cGVydHkuIE90aGVyIHZhbGlkIHByb3BlcnRpZXMgaW5jbHVkZSBzeW1ib2xzLCBudW1iZXJzLCBh
bmQgc3RyaW5naWZpYWJsZSBvYmplY3RzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9TMTEgYW5kIGJl
bG93LCAncHJvcGVydHknIHdhcyBhbiBOU1N0cmluZyAqLgogKi8KLS0gKEpTVmFsdWUgKil2YWx1
ZUZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLSAoSlNWYWx1ZSAqKXZhbHVlRm9y
UHJvcGVydHk6KGlkKXByb3BlcnR5OwogCiAvKiEKIEBtZXRob2QKIEBhYnN0cmFjdCBTZXQgYSBw
cm9wZXJ0eSBvbiBhIEpTVmFsdWUuCitAZGlzY3Vzc2lvbiBDb3JyZXNwb25kcyB0byB0aGUgSmF2
YVNjcmlwdCBvcGVyYXRpb24gPGNvZGU+b2JqZWN0W3Byb3BlcnR5XSA9IHZhbHVlPC9jb2RlPi4g
UGFzcyBhbiBOU1N0cmluZyAqIHRvIGFjY2VzcyBhIG5hbWVkIHByb3BlcnR5LiBPdGhlciB2YWxp
ZCBwcm9wZXJ0aWVzIGluY2x1ZGUgc3ltYm9scywgbnVtYmVycywgYW5kIHN0cmluZ2lmaWFibGUg
b2JqZWN0cy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUzExIGFuZCBiZWxvdywgJ3Byb3BlcnR5JyB3
YXMgYW4gTlNTdHJpbmcgKi4KICovCi0tICh2b2lkKXNldFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9w
ZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZv
clByb3BlcnR5OihpZClwcm9wZXJ0eTsKIAogLyohCiBAbWV0aG9kCiBAYWJzdHJhY3QgRGVsZXRl
IGEgcHJvcGVydHkgZnJvbSBhIEpTVmFsdWUuCiBAcmVzdWx0IFlFUyBpZiBkZWxldGlvbiBpcyBz
dWNjZXNzZnVsLCBOTyBvdGhlcndpc2UuCitAZGlzY3Vzc2lvbiBDb3JyZXNwb25kcyB0byB0aGUg
SmF2YVNjcmlwdCBvcGVyYXRpb24gPGNvZGU+ZGVsZXRlIG9iamVjdFtwcm9wZXJ0eV08L2NvZGU+
LiBQYXNzIGFuIE5TU3RyaW5nICogdG8gYWNjZXNzIGEgbmFtZWQgcHJvcGVydHkuIE90aGVyIHZh
bGlkIHByb3BlcnRpZXMgaW5jbHVkZSBzeW1ib2xzLCBudW1iZXJzLCBhbmQgc3RyaW5naWZpYWJs
ZSBvYmplY3RzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9TMTEgYW5kIGJlbG93LCAncHJvcGVydHkn
IHdhcyBhbiBOU1N0cmluZyAqLgogKi8KLS0gKEJPT0wpZGVsZXRlUHJvcGVydHk6KE5TU3RyaW5n
ICopcHJvcGVydHk7CistIChCT09MKWRlbGV0ZVByb3BlcnR5OihpZClwcm9wZXJ0eTsKIAogLyoh
CiBAbWV0aG9kCiBAYWJzdHJhY3QgQ2hlY2sgaWYgYSBKU1ZhbHVlIGhhcyBhIHByb3BlcnR5Lgog
QGRpc2N1c3Npb24gVGhpcyBtZXRob2QgaGFzIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIHRoZSBKYXZh
U2NyaXB0IG9wZXJhdG9yIDxjb2RlPmluPC9jb2RlPi4KIEByZXN1bHQgUmV0dXJucyBZRVMgaWYg
cHJvcGVydHkgaXMgcHJlc2VudCBvbiB0aGUgdmFsdWUuCitAZGlzY3Vzc2lvbiBDb3JyZXNwb25k
cyB0byB0aGUgSmF2YVNjcmlwdCBvcGVyYXRpb24gPGNvZGU+cHJvcGVydHkgaW4gb2JqZWN0PC9j
b2RlPi4gUGFzcyBhbiBOU1N0cmluZyAqIHRvIGFjY2VzcyBhIG5hbWVkIHByb3BlcnR5LiBPdGhl
ciB2YWxpZCBwcm9wZXJ0aWVzIGluY2x1ZGUgc3ltYm9scywgbnVtYmVycywgYW5kIHN0cmluZ2lm
aWFibGUgb2JqZWN0cy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUzExIGFuZCBiZWxvdywgJ3Byb3Bl
cnR5JyB3YXMgYW4gTlNTdHJpbmcgKi4KICovCi0tIChCT09MKWhhc1Byb3BlcnR5OihOU1N0cmlu
ZyAqKXByb3BlcnR5OworLSAoQk9PTCloYXNQcm9wZXJ0eTooaWQpcHJvcGVydHk7CiAKIC8qIQog
QG1ldGhvZAogQGFic3RyYWN0IERlZmluZSBwcm9wZXJ0aWVzIHdpdGggY3VzdG9tIGRlc2NyaXB0
b3JzIG9uIEpTVmFsdWVzLgogQGRpc2N1c3Npb24gVGhpcyBtZXRob2QgbWF5IGJlIHVzZWQgdG8g
Y3JlYXRlIGEgZGF0YSBvciBhY2Nlc3NvciBwcm9wZXJ0eSBvbiBhbiBvYmplY3QuCiAgVGhpcyBt
ZXRob2Qgb3BlcmF0ZXMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBPYmplY3QuZGVmaW5lUHJvcGVy
dHkgbWV0aG9kIGluIHRoZSAKLSBKYXZhU2NyaXB0IGxhbmd1YWdlLgorIEphdmFTY3JpcHQgbGFu
Z3VhZ2UuIFBhc3MgYW4gTlNTdHJpbmcgKiB0byBhY2Nlc3MgYSBuYW1lZCBwcm9wZXJ0eS4gT3Ro
ZXIgdmFsaWQgcHJvcGVydGllcyBpbmNsdWRlIHN5bWJvbHMsIG51bWJlcnMsIGFuZCBzdHJpbmdp
ZmlhYmxlIG9iamVjdHMuIEluIG1hY09TIDEwLjEzIGFuZCBpT1MxMSBhbmQgYmVsb3csICdwcm9w
ZXJ0eScgd2FzIGFuIE5TU3RyaW5nICouCiAqLwotLSAodm9pZClkZWZpbmVQcm9wZXJ0eTooTlNT
dHJpbmcgKilwcm9wZXJ0eSBkZXNjcmlwdG9yOihpZClkZXNjcmlwdG9yOworLSAodm9pZClkZWZp
bmVQcm9wZXJ0eTooaWQpcHJvcGVydHkgZGVzY3JpcHRvcjooaWQpZGVzY3JpcHRvcjsKKworI2Vu
ZGlmIC8vICEoZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAoZGVmaW5lZChfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPCAxMTAwMDApCiAKIC8qIQogQG1ldGhvZApAQCAtNDAzLDYgKzQyMSwxMiBAQCBOU19D
TEFTU19BVkFJTEFCTEUoMTBfOSwgN18wKQogQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBpc09i
amVjdDsKIAogLyohCisgQHByb3BlcnR5CisgQGFic3RyYWN0IENoZWNrIGlmIGEgSlNWYWx1ZSBp
cyBhIHN5bWJvbC4KKyAqLworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBpc1N5bWJvbCBOU19B
VkFJTEFCTEUoMTBfMTMsIDExXzApOworCisvKiEKIEBwcm9wZXJ0eQogQGFic3RyYWN0IENoZWNr
IGlmIGEgSlNWYWx1ZSBpcyBhbiBhcnJheS4KICovIApAQCAtNTY5LDEzICs1OTMsMTYgQEAgQ3Jl
YXRlIGEgSlNWYWx1ZSBmcm9tIGEgQ0dSZWN0LgogQC90ZXh0YmxvY2sKIAogIEFuIG9iamVjdCBr
ZXkgcGFzc2VkIGFzIGEgc3Vic2NyaXB0IHdpbGwgYmUgY29udmVydGVkIHRvIGEgSmF2YVNjcmlw
dCB2YWx1ZSwKLSBhbmQgdGhlbiB0aGUgdmFsdWUgY29udmVydGVkIHRvIGEgc3RyaW5nIHVzZWQg
YXMgYSBwcm9wZXJ0eSBuYW1lLgorIGFuZCB0aGVuIHRoZSB2YWx1ZSBjb252ZXJ0ZWQgdG8gYSBz
dHJpbmcgdXNlZCBhcyBhIHByb3BlcnR5IG5hbWUuIEluIG1hY09TCisgMTAuMTMgYW5kIGlPUzEx
IGFuZCBiZWxvdywgdGhlIDxjb2RlPmtleTwvY29kZT4gYXJndW1lbnQgb2YKKyA8Y29kZT5zZXRP
YmplY3Q6b2JqZWN0IGZvcktleWVkU3Vic2NyaXB0OmtleTwvY29kZT4gd2FzIGFuIHJlc3RyaWN0
ZWQgdG8KKyA8Y29kZT5OU1N0cmluZyA8TlNDb3B5aW5nPiAqPC9jb2RlPiBidXQgdGhhdCByZXN0
cmljdGlvbiB3YXMgbmV2ZXIgdXNlZC4KICovCiBAaW50ZXJmYWNlIEpTVmFsdWUgKFN1YnNjcmlw
dFN1cHBvcnQpCiAKIC0gKEpTVmFsdWUgKilvYmplY3RGb3JLZXllZFN1YnNjcmlwdDooaWQpa2V5
OwogLSAoSlNWYWx1ZSAqKW9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRl
eDsKLS0gKHZvaWQpc2V0T2JqZWN0OihpZClvYmplY3QgZm9yS2V5ZWRTdWJzY3JpcHQ6KE5TT2Jq
ZWN0IDxOU0NvcHlpbmc+ICopa2V5OworLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBmb3JL
ZXllZFN1YnNjcmlwdDooaWQpa2V5OwogLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBhdElu
ZGV4ZWRTdWJzY3JpcHQ6KE5TVUludGVnZXIpaW5kZXg7CiAKIEBlbmQKQEAgLTY2Myw2ICs2OTAs
MTkgQEAgSlNfRVhQT1JUIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlw
dG9yU2V0S2V5OwogfSAvLyBleHRlcm4gIkMiCiAjZW5kaWYKIAorI2lmIChkZWZpbmVkKF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPCAxMDEzMDApIHx8IChkZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKKworLy8g
VGhlc2UgZGVjbGFyYXRpb25zIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aGVuIHRhcmdldGluZyBT
REtzIGZvciBsZWdhY3kgT1NzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9TMTEgYW5kIGJlbG93LCAn
cHJvcGVydHknIHdhcyBhbiBOU1N0cmluZyAqLgorQGludGVyZmFjZSBKU1ZhbHVlIChMZWdhY3lU
YXJnZXRTREspCisKKy0gKEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihOU1N0cmluZyAqKXBy
b3BlcnR5OworLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yUHJvcGVydHk6KE5TU3RyaW5n
ICopcHJvcGVydHk7CistIChCT09MKWRlbGV0ZVByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5
OworLSAoQk9PTCloYXNQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKHZvaWQpZGVm
aW5lUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHkgZGVzY3JpcHRvcjooaWQpZGVzY3JpcHRv
cjsKKworQGVuZAorCiAjZW5kaWYKIAogI2VuZGlmIC8vIEpTVmFsdWVfaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1ZhbHVlLm1tCmluZGV4IDY5ODZmYWU4MzFlMmVjYzZlYmMyYmVkYWU0ZTY4YWMy
MmY1NzhlODAuLmUyODMwMzY2MzllNTJiMWMyMmZkZDM2YjBiMTI0ZTQwMGRkMDFkNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQg
IkpTQ0pTVmFsdWUuaCIKICNpbXBvcnQgIlN0cm9uZy5oIgogI2ltcG9ydCAiU3Ryb25nSW5saW5l
cy5oIgorI2ltcG9ydCA8d3RmL0V4cGVjdGVkLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgog
I2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CkBAIC0xMzYsNiAr
MTM3LDEzIEBAIE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXkgPSBA
InNldCI7CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6SlNWYWx1ZU1h
a2VVbmRlZmluZWQoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSkgaW5Db250ZXh0OmNvbnRl
eHRdOwogfQogCisrIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3U3ltYm9sRnJvbURlc2NyaXB0aW9u
OihOU1N0cmluZyAqKWRlc2NyaXB0aW9uIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAor
eworICAgIEpTU3RyaW5nUmVmIHN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKHJl
aW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KGRlc2NyaXB0aW9uKSk7CisgICAgcmV0dXJuIFtK
U1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6SlNWYWx1ZU1ha2VTeW1ib2woW2NvbnRleHQgSlNH
bG9iYWxDb250ZXh0UmVmXSwgc3RyaW5nKSBpbkNvbnRleHQ6Y29udGV4dF07Cit9CisKKwogLSAo
aWQpdG9PYmplY3QKIHsKICAgICByZXR1cm4gdmFsdWVUb09iamVjdChfY29udGV4dCwgbV92YWx1
ZSk7CkBAIC0yMTksNzQgKzIyNywxMDYgQEAgTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5RGVz
Y3JpcHRvclNldEtleSA9IEAic2V0IjsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi0tIChKU1Zh
bHVlICopdmFsdWVGb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKK3RlbXBsYXRl
PHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5hbWUgTlNTdHJpbmdGdW5jdGlvbiwgdHlwZW5hbWUgSlNW
YWx1ZUZ1bmN0aW9uLCB0eXBlbmFtZS4uLiBUeXBlcz4KK2lubGluZSBFeHBlY3RlZDxSZXN1bHQs
IEpTVmFsdWVSZWY+IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbihOU1N0cmluZ0Z1bmN0aW9uIHN0
cmluZ0Z1bmN0aW9uLCBKU1ZhbHVlRnVuY3Rpb24ganNGdW5jdGlvbiwgSlNWYWx1ZSogdmFsdWUs
IGlkIHByb3BlcnR5S2V5LCBUeXBlcy4uLiBhcmd1bWVudHMpCiB7Ci0gICAgSlNWYWx1ZVJlZiBl
eGNlcHRpb24gPSAwOwotICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChb
X2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7CisgICAg
SlNDb250ZXh0KiBjb250ZXh0ID0gW3ZhbHVlIGNvbnRleHRdOworICAgIEpTVmFsdWVSZWYgZXhj
ZXB0aW9uID0gbnVsbHB0cjsKKyAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmpl
Y3QoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgW3ZhbHVlIEpTVmFsdWVSZWZdLCAmZXhj
ZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW19jb250ZXh0IHZh
bHVlRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOworICAgICAgICByZXR1cm4gVW5leHBl
Y3RlZFR5cGU8SlNWYWx1ZVJlZj4oZXhjZXB0aW9uKTsKIAotICAgIEpTU3RyaW5nUmVmIG5hbWUg
PSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsK
LSAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpTT2JqZWN0R2V0UHJvcGVydHkoW19jb250ZXh0IEpT
R2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgbmFtZSwgJmV4Y2VwdGlvbik7Ci0gICAgSlNTdHJp
bmdSZWxlYXNlKG5hbWUpOwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbX2Nv
bnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgUmVzdWx0IHJl
c3VsdDsKKyAgICAvLyBJZiBpdCdzIGEgTlNTdHJpbmcgYWxyZWFkeSwgcmVkdWNlIGluZGlyZWN0
aW9uIGFuZCBqdXN0IHBhc3MgdGhlIE5TU3RyaW5nLgorICAgIGlmIChbcHJvcGVydHlLZXkgaXNL
aW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgeworICAgICAgICBKU1N0cmluZ1JlZiBuYW1l
ID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1Jl
Zj4ocHJvcGVydHlLZXkpKTsKKyAgICAgICAgcmVzdWx0ID0gc3RyaW5nRnVuY3Rpb24oW2NvbnRl
eHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgb2JqZWN0LCBuYW1lLCBhcmd1bWVudHMuLi4sICZleGNl
cHRpb24pOworICAgICAgICBKU1N0cmluZ1JlbGVhc2UobmFtZSk7CisgICAgfSBlbHNlCisgICAg
ICAgIHJlc3VsdCA9IGpzRnVuY3Rpb24oW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgb2Jq
ZWN0LCBbW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OnByb3BlcnR5S2V5IGluQ29udGV4dDpjb250
ZXh0XSBKU1ZhbHVlUmVmXSwgYXJndW1lbnRzLi4uLCAmZXhjZXB0aW9uKTsKKyAgICByZXR1cm4g
RXhwZWN0ZWQ8UmVzdWx0LCBKU1ZhbHVlUmVmPihyZXN1bHQpOworfQogCi0gICAgcmV0dXJuIFtK
U1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6cmVzdWx0IGluQ29udGV4dDpfY29udGV4dF07Cisj
ZGVmaW5lIFVTRV9OU1NUUklOR19GT1JfUFJPUEVSVFlfS0VZIChkZWZpbmVkKF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
PCAxMDEzMDApIHx8IChkZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKKworI2lmIFVTRV9O
U1NUUklOR19GT1JfUFJPUEVSVFlfS0VZCistIChKU1ZhbHVlICopdmFsdWVGb3JQcm9wZXJ0eToo
TlNTdHJpbmcgKilrZXkKKyNlbHNlCistIChKU1ZhbHVlICopdmFsdWVGb3JQcm9wZXJ0eTooaWQp
a2V5CisjZW5kaWYKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlv
bjxKU1ZhbHVlUmVmPihKU09iamVjdEdldFByb3BlcnR5LCBKU09iamVjdEdldFByb3BlcnR5S2V5
LCBzZWxmLCBrZXkpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gW19jb250ZXh0
IHZhbHVlRnJvbU5vdGlmeUV4Y2VwdGlvbjpyZXN1bHQuZXJyb3IoKV07CisKKyAgICByZXR1cm4g
W0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpyZXN1bHQudmFsdWUoKSBpbkNvbnRleHQ6X2Nv
bnRleHRdOwogfQogCi0tICh2b2lkKXNldFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooTlNT
dHJpbmcgKilwcm9wZXJ0eU5hbWUKKyNpZiBVU0VfTlNTVFJJTkdfRk9SX1BST1BFUlRZX0tFWQor
LSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yUHJvcGVydHk6KE5TU3RyaW5nICopa2V5Cisj
ZWxzZQorLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yUHJvcGVydHk6KGlkKWtleQorI2Vu
ZGlmCiB7Ci0gICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAgIEpTT2JqZWN0UmVmIG9i
amVjdCA9IEpTVmFsdWVUb09iamVjdChbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgbV92
YWx1ZSwgJmV4Y2VwdGlvbik7Ci0gICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICBbX2NvbnRl
eHQgbm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07Ci0gICAgICAgIHJldHVybjsKLSAgICB9Cisg
ICAgLy8gV2UgbmVlZCBVbml0IGJ1c2luZXNzIGJlY2F1c2Ugdm9pZCBjYW4ndCBiZSBhc3NpZ25l
ZCB0byBpbiBwZXJmb3JtUHJvcGVydHlPcGVyYXRpb24gYW5kIEkgZG9uJ3Qgd2FudCB0byBkdXBs
aWNhdGUgdGhlIGNvZGUuLi4KKyAgICB1c2luZyBVbml0ID0gc3RkOjp0dXBsZTw+OworICAgIGF1
dG8gc3RyaW5nU2V0UHJvcGVydHkgPSBbXSAoYXV0by4uLiBhcmdzKSAtPiBVbml0IHsKKyAgICAg
ICAgSlNPYmplY3RTZXRQcm9wZXJ0eShhcmdzLi4uKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICB9OwogCi0gICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5n
KChDRlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwotICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoW19j
b250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgbmFtZSwgb2JqZWN0VG9WYWx1ZShf
Y29udGV4dCwgdmFsdWUpLCAwLCAmZXhjZXB0aW9uKTsKLSAgICBKU1N0cmluZ1JlbGVhc2UobmFt
ZSk7Ci0gICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICBbX2NvbnRleHQgbm90aWZ5RXhjZXB0
aW9uOmV4Y2VwdGlvbl07CisgICAgYXV0byBqc1ZhbHVlU2V0UHJvcGVydHkgPSBbXSAoYXV0by4u
LiBhcmdzKSAtPiBVbml0IHsKKyAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eUtleShhcmdzLi4u
KTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9OworCisgICAgYXV0byByZXN1bHQgPSBwZXJm
b3JtUHJvcGVydHlPcGVyYXRpb248VW5pdD4oc3RyaW5nU2V0UHJvcGVydHksIGpzVmFsdWVTZXRQ
cm9wZXJ0eSwgc2VsZiwga2V5LCBvYmplY3RUb1ZhbHVlKF9jb250ZXh0LCB2YWx1ZSksIGtKU1By
b3BlcnR5QXR0cmlidXRlTm9uZSk7CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgW19jb250
ZXh0IG5vdGlmeUV4Y2VwdGlvbjpyZXN1bHQuZXJyb3IoKV07CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiB9CiAKLS0gKEJPT0wpZGVsZXRlUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHlOYW1l
CisjaWYgVVNFX05TU1RSSU5HX0ZPUl9QUk9QRVJUWV9LRVkKKy0gKEJPT0wpZGVsZXRlUHJvcGVy
dHk6KE5TU3RyaW5nICopa2V5CisjZWxzZQorLSAoQk9PTClkZWxldGVQcm9wZXJ0eTooaWQpa2V5
CisjZW5kaWYKIHsKLSAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RS
ZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZd
LCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKLSAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICByZXR1
cm4gW19jb250ZXh0IGJvb2xGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07Ci0KLSAgICBK
U1N0cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVm
KXByb3BlcnR5TmFtZSk7Ci0gICAgQk9PTCByZXN1bHQgPSBKU09iamVjdERlbGV0ZVByb3BlcnR5
KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIG5hbWUsICZleGNlcHRpb24p
OwotICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKLSAgICBpZiAoZXhjZXB0aW9uKQotICAgICAg
ICByZXR1cm4gW19jb250ZXh0IGJvb2xGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07Ci0K
LSAgICByZXR1cm4gcmVzdWx0OworICAgIEV4cGVjdGVkPEJPT0wsIEpTVmFsdWVSZWY+IHJlc3Vs
dCA9IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbjxCT09MPihKU09iamVjdERlbGV0ZVByb3BlcnR5
LCBKU09iamVjdERlbGV0ZVByb3BlcnR5S2V5LCBzZWxmLCBrZXkpOworICAgIGlmICghcmVzdWx0
KQorICAgICAgICByZXR1cm4gW19jb250ZXh0IGJvb2xGcm9tTm90aWZ5RXhjZXB0aW9uOnJlc3Vs
dC5lcnJvcigpXTsKKyAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7CiB9CiAKLS0gKEJPT0wpaGFz
UHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lCisjaWYgVVNFX05TU1RSSU5HX0ZPUl9Q
Uk9QRVJUWV9LRVkKKy0gKEJPT0wpaGFzUHJvcGVydHk6KE5TU3RyaW5nICopa2V5CisjZWxzZQor
LSAoQk9PTCloYXNQcm9wZXJ0eTooaWQpa2V5CisjZW5kaWYKIHsKLSAgICBKU1ZhbHVlUmVmIGV4
Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KFtf
Y29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKLSAgICBp
ZiAoZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW19jb250ZXh0IGJvb2xGcm9tTm90aWZ5RXhj
ZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgLy8gVGhlIEMtYXBpIGRvZXNuJ3QgcmV0dXJuIGFuIGV4
Y2VwdGlvbiB2YWx1ZSBmb3IgdGhlIHN0cmluZyB2ZXJzaW9uIG9mIGhhcyBwcm9wZXJ0eS4KKyAg
ICBhdXRvIHN0cmluZ0hhc1Byb3BlcnR5ID0gW10gKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0
UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKikgLT4gQk9P
TCB7CisgICAgICAgIHJldHVybiBKU09iamVjdEhhc1Byb3BlcnR5KGN0eCwgb2JqZWN0LCBwcm9w
ZXJ0eU5hbWUpOworICAgIH07CiAKLSAgICBKU1N0cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVh
dGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKXByb3BlcnR5TmFtZSk7Ci0gICAgQk9PTCByZXN1
bHQgPSBKU09iamVjdEhhc1Byb3BlcnR5KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBv
YmplY3QsIG5hbWUpOwotICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKLSAgICByZXR1cm4gcmVz
dWx0OworICAgIEV4cGVjdGVkPEJPT0wsIEpTVmFsdWVSZWY+IHJlc3VsdCA9IHBlcmZvcm1Qcm9w
ZXJ0eU9wZXJhdGlvbjxCT09MPihzdHJpbmdIYXNQcm9wZXJ0eSwgSlNPYmplY3RIYXNQcm9wZXJ0
eUtleSwgc2VsZiwga2V5KTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFtfY29u
dGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpyZXN1bHQuZXJyb3IoKV07CisgICAgcmV0dXJu
IHJlc3VsdC52YWx1ZSgpOwogfQogCi0tICh2b2lkKWRlZmluZVByb3BlcnR5OihOU1N0cmluZyAq
KXByb3BlcnR5IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0b3IKKyNpZiBVU0VfTlNTVFJJTkdfRk9S
X1BST1BFUlRZX0tFWQorLSAodm9pZClkZWZpbmVQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXkgZGVz
Y3JpcHRvcjooaWQpZGVzY3JpcHRvcgorI2Vsc2UKKy0gKHZvaWQpZGVmaW5lUHJvcGVydHk6KGlk
KWtleSBkZXNjcmlwdG9yOihpZClkZXNjcmlwdG9yCisjZW5kaWYKIHsKLSAgICBbW19jb250ZXh0
IGdsb2JhbE9iamVjdF1bQCJPYmplY3QiXSBpbnZva2VNZXRob2Q6QCJkZWZpbmVQcm9wZXJ0eSIg
d2l0aEFyZ3VtZW50czpAWyBzZWxmLCBwcm9wZXJ0eSwgZGVzY3JpcHRvciBdXTsKKyAgICBbW19j
b250ZXh0IGdsb2JhbE9iamVjdF1bQCJPYmplY3QiXSBpbnZva2VNZXRob2Q6QCJkZWZpbmVQcm9w
ZXJ0eSIgd2l0aEFyZ3VtZW50czpAWyBzZWxmLCBrZXksIGRlc2NyaXB0b3IgXV07CiB9CiAKKyN1
bmRlZiBVU0VfTlNTVFJJTkdfRk9SX1BST1BFUlRZX0tFWQorCiAtIChKU1ZhbHVlICopdmFsdWVB
dEluZGV4OihOU1VJbnRlZ2VyKWluZGV4CiB7CiAgICAgLy8gUHJvcGVydGllcyB0aGF0IGFyZSBo
aWdoZXIgdGhhbiBhbiB1bnNpZ25lZCB2YWx1ZSBjYW4gaG9sZCBhcmUgY29udmVydGVkIHRvIGEg
ZG91YmxlIHRoZW4gaW5zZXJ0ZWQgYXMgYSBub3JtYWwgcHJvcGVydHkuCkBAIC0zNTcsNiArMzk3
LDExIEBAIE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXkgPSBAInNl
dCI7CiAgICAgcmV0dXJuIEpTVmFsdWVJc09iamVjdChbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0
UmVmXSwgbV92YWx1ZSk7CiB9CiAKKy0gKEJPT0wpaXNTeW1ib2wKK3sKKyAgICByZXR1cm4gSlNW
YWx1ZUlzU3ltYm9sKFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlKTsKK30K
KwogLSAoQk9PTClpc0FycmF5CiB7CiAgICAgcmV0dXJuIEpTVmFsdWVJc0FycmF5KFtfY29udGV4
dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlKTsKQEAgLTUzOSwxMyArNTg0LDcgQEAgTlNT
dHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5RGVzY3JpcHRvclNldEtleSA9IEAic2V0IjsKIAogLSAo
SlNWYWx1ZSAqKW9iamVjdEZvcktleWVkU3Vic2NyaXB0OihpZClrZXkKIHsKLSAgICBpZiAoIVtr
ZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgewotICAgICAgICBrZXkgPSBbW0pT
VmFsdWUgdmFsdWVXaXRoT2JqZWN0OmtleSBpbkNvbnRleHQ6X2NvbnRleHRdIHRvU3RyaW5nXTsK
LSAgICAgICAgaWYgKCFrZXkpCi0gICAgICAgICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRo
VW5kZWZpbmVkSW5Db250ZXh0Ol9jb250ZXh0XTsKLSAgICB9Ci0KLSAgICByZXR1cm4gW3NlbGYg
dmFsdWVGb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXldOworICAgIHJldHVybiBbc2VsZiB2YWx1
ZUZvclByb3BlcnR5OmtleV07CiB9CiAKIC0gKEpTVmFsdWUgKilvYmplY3RBdEluZGV4ZWRTdWJz
Y3JpcHQ6KE5TVUludGVnZXIpaW5kZXgKQEAgLTU1MywxNSArNTkyLDkgQEAgTlNTdHJpbmcgKiBj
b25zdCBKU1Byb3BlcnR5RGVzY3JpcHRvclNldEtleSA9IEAic2V0IjsKICAgICByZXR1cm4gW3Nl
bGYgdmFsdWVBdEluZGV4OmluZGV4XTsKIH0KIAotLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVj
dCBmb3JLZXllZFN1YnNjcmlwdDooTlNPYmplY3QgPE5TQ29weWluZz4gKilrZXkKKy0gKHZvaWQp
c2V0T2JqZWN0OihpZClvYmplY3QgZm9yS2V5ZWRTdWJzY3JpcHQ6KGlkKWtleQogewotICAgIGlm
ICghW2tleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7Ci0gICAgICAgIGtleSA9
IFtbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6a2V5IGluQ29udGV4dDpfY29udGV4dF0gdG9TdHJp
bmddOwotICAgICAgICBpZiAoIWtleSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBbc2VsZiBzZXRWYWx1ZTpvYmplY3QgZm9yUHJvcGVydHk6KE5TU3RyaW5nICopa2V5XTsKKyAg
ICBbc2VsZiBzZXRWYWx1ZTpvYmplY3QgZm9yUHJvcGVydHk6a2V5XTsKIH0KIAogLSAodm9pZClz
ZXRPYmplY3Q6KGlkKW9iamVjdCBhdEluZGV4ZWRTdWJzY3JpcHQ6KE5TVUludGVnZXIpaW5kZXgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCmluZGV4IDY0YWM2YzMyNDZl
YmZiOGNjNGYyNGMwNTgwOTk4YWU0MThkYWJhNmQuLmQ0NmNmZjA2YTQ2NTRlOTUwYjUwMTVlNGNi
MmJhZjQ5NmIwNDhjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNW
YWx1ZVJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNw
cApAQCAtODYsOCArODYsMTAgQEAgc3RhdGljIGJvb2wgZXZlcm5vdGVIYWNrTmVlZGVkKCkKICAg
ICAgICAgcmV0dXJuIGtKU1R5cGVOdW1iZXI7CiAgICAgaWYgKGpzVmFsdWUuaXNTdHJpbmcoKSkK
ICAgICAgICAgcmV0dXJuIGtKU1R5cGVTdHJpbmc7Ci0gICAgQVNTRVJUKGpzVmFsdWUuaXNPYmpl
Y3QoKSk7Ci0gICAgcmV0dXJuIGtKU1R5cGVPYmplY3Q7CisgICAgaWYgKGpzVmFsdWUuaXNPYmpl
Y3QoKSkKKyAgICAgICAgcmV0dXJuIGtKU1R5cGVPYmplY3Q7CisgICAgQVNTRVJUKGpzVmFsdWUu
aXNTeW1ib2woKSk7CisgICAgcmV0dXJuIGtKU1R5cGVTeW1ib2w7CiB9CiAKIGJvb2wgSlNWYWx1
ZUlzVW5kZWZpbmVkKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpCkBAIC0xNjIs
NiArMTY0LDE4IEBAIGJvb2wgSlNWYWx1ZUlzT2JqZWN0KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFs
dWVSZWYgdmFsdWUpCiAgICAgcmV0dXJuIHRvSlMoZXhlYywgdmFsdWUpLmlzT2JqZWN0KCk7CiB9
CiAKK2Jvb2wgSlNWYWx1ZUlzU3ltYm9sKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFs
dWUpCit7CisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhj
dHgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisKKyAgICByZXR1cm4gdG9KUyhl
eGVjLCB2YWx1ZSkuaXNTeW1ib2woKTsKK30KKwogYm9vbCBKU1ZhbHVlSXNBcnJheShKU0NvbnRl
eHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQogewogICAgIGlmICghY3R4KSB7CkBAIC0zMTYs
NiArMzMwLDIyIEBAIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VOdW1iZXIoSlNDb250ZXh0UmVmIGN0
eCwgZG91YmxlIHZhbHVlKQogICAgIHJldHVybiB0b1JlZihleGVjLCBqc051bWJlcihwdXJpZnlO
YU4odmFsdWUpKSk7CiB9CiAKK0pTVmFsdWVSZWYgSlNWYWx1ZU1ha2VTeW1ib2woSlNDb250ZXh0
UmVmIGN0eCwgSlNTdHJpbmdSZWYgZGVzY3JpcHRpb24pCit7CisgICAgaWYgKCFjdHgpIHsKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgSlNMb2NrSG9sZGVyIGxv
Y2tlcihleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRShleGVjLT52
bSgpKTsKKworICAgIEpTU3RyaW5nKiBqc0Rlc2NyaXB0aW9uID0ganNTdHJpbmcoZXhlYywgZGVz
Y3JpcHRpb24gPyBkZXNjcmlwdGlvbi0+c3RyaW5nKCkgOiBTdHJpbmcoKSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gdG9SZWYoZXhlYywg
U3ltYm9sOjpjcmVhdGUoZXhlYywganNEZXNjcmlwdGlvbikpOworfQorCiBKU1ZhbHVlUmVmIEpT
VmFsdWVNYWtlU3RyaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHN0cmluZykKIHsK
ICAgICBpZiAoIWN0eCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1ZhbHVlUmVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuaAppbmRl
eCA5ODE1ZGU3ODNjMGFlZTA3M2UzYTQ0OGJkMGM3Y2FkZDRhOTUyYzA2Li4zYmU4NWIwYTljMTYy
ZmY3MGI2MWMwYjY3NmY1NGViNDRkNzA1YWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVmFsdWVSZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWVSZWYuaApAQCAtNDIsNiArNDIsNyBAQAogQGNvbnN0YW50ICAgICBrSlNUeXBlTnVtYmVy
ICAgICBBIHByaW1pdGl2ZSBudW1iZXIgdmFsdWUuCiBAY29uc3RhbnQgICAgIGtKU1R5cGVTdHJp
bmcgICAgIEEgcHJpbWl0aXZlIHN0cmluZyB2YWx1ZS4KIEBjb25zdGFudCAgICAga0pTVHlwZU9i
amVjdCAgICAgQW4gb2JqZWN0IHZhbHVlIChtZWFuaW5nIHRoYXQgdGhpcyBKU1ZhbHVlUmVmIGlz
IGEgSlNPYmplY3RSZWYpLgorQGNvbnN0YW50ICAgICBrSlNUeXBlU3ltYm9sICAgICBBIHByaW1p
dGl2ZSBzeW1ib2wgdmFsdWUuCiAqLwogdHlwZWRlZiBlbnVtIHsKICAgICBrSlNUeXBlVW5kZWZp
bmVkLApAQCAtNDksNyArNTAsOCBAQCB0eXBlZGVmIGVudW0gewogICAgIGtKU1R5cGVCb29sZWFu
LAogICAgIGtKU1R5cGVOdW1iZXIsCiAgICAga0pTVHlwZVN0cmluZywKLSAgICBrSlNUeXBlT2Jq
ZWN0CisgICAga0pTVHlwZU9iamVjdCwKKyAgICBrSlNUeXBlU3ltYm9sIENGX0VOVU1fQVZBSUxB
QkxFKDEwXzEzLCAxMV8wKQogfSBKU1R5cGU7CiAKIC8qIQpAQCAtMTUxLDYgKzE1MywxNiBAQCBK
U19FWFBPUlQgYm9vbCBKU1ZhbHVlSXNPYmplY3QoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJl
ZiB2YWx1ZSk7CiAKIC8qIQogQGZ1bmN0aW9uCitAYWJzdHJhY3QgICAgICAgVGVzdHMgd2hldGhl
ciBhIEphdmFTY3JpcHQgdmFsdWUncyB0eXBlIGlzIHRoZSBzeW1ib2wgdHlwZS4KK0BwYXJhbSBj
dHggICAgICBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgorQHBhcmFtIHZhbHVlICAgIFRo
ZSBKU1ZhbHVlIHRvIHRlc3QuCitAcmVzdWx0ICAgICAgICAgdHJ1ZSBpZiB2YWx1ZSdzIHR5cGUg
aXMgdGhlIHN5bWJvbCB0eXBlLCBvdGhlcndpc2UgZmFsc2UuCisqLworSlNfRVhQT1JUIGJvb2wg
SlNWYWx1ZUlzU3ltYm9sKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpIENGX0FW
QUlMQUJMRSgxMF8xMywgMTFfMCk7CisKKworLyohCitAZnVuY3Rpb24KIEBhYnN0cmFjdCBUZXN0
cyB3aGV0aGVyIGEgSmF2YVNjcmlwdCB2YWx1ZSBpcyBhbiBvYmplY3Qgd2l0aCBhIGdpdmVuIGNs
YXNzIGluIGl0cyBjbGFzcyBjaGFpbi4KIEBwYXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250ZXh0
IHRvIHVzZS4KIEBwYXJhbSB2YWx1ZSBUaGUgSlNWYWx1ZSB0byB0ZXN0LgpAQCAtMjU5LDYgKzI3
MSwxNSBAQCBKU19FWFBPUlQgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZU51bWJlcihKU0NvbnRleHRS
ZWYgY3R4LCBkb3VibGUgbnVtYmVyKTsKIAogLyohCiBAZnVuY3Rpb24KK0BhYnN0cmFjdCAgICAg
ICAgICAgIENyZWF0ZXMgYSBKYXZhU2NyaXB0IHZhbHVlIG9mIHRoZSBzeW1ib2wgdHlwZS4KK0Bw
YXJhbSBjdHggICAgICAgICAgIFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCitAcGFyYW0g
ZGVzY3JpcHRpb24gICBBIGRlc2NyaXB0aW9uIG9mIHRoZSBuZXdseSBjcmVhdGVkIHN5bWJvbCB2
YWx1ZS4KK0ByZXN1bHQgICAgICAgICAgICAgIEEgdW5pcXVlIEpTVmFsdWUgb2YgdGhlIHN5bWJv
bCB0eXBlLCB3aG9zZSBkZXNjcmlwdGlvbiBtYXRjaGVzIHRoZSBvbmUgcHJvdmlkZWQuCisqLwor
SlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VTeW1ib2woSlNDb250ZXh0UmVmIGN0eCwg
SlNTdHJpbmdSZWYgZGVzY3JpcHRpb24pOworCisvKiEKK0BmdW5jdGlvbgogQGFic3RyYWN0ICAg
ICAgIENyZWF0ZXMgYSBKYXZhU2NyaXB0IHZhbHVlIG9mIHRoZSBzdHJpbmcgdHlwZS4KIEBwYXJh
bSBjdHggIFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCiBAcGFyYW0gc3RyaW5nICAgVGhl
IEpTU3RyaW5nIHRvIGFzc2lnbiB0byB0aGUgbmV3bHkgY3JlYXRlZCBKU1ZhbHVlLiBUaGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKaW5kZXggN2JlY2RmZTA0MTE1
YmY5NDg5ZWY4NDE5N2MxNjcxYzViODNiYTRlMi4uYTFlYTU4MjYzNzgxNTFiNDliYzg4NzA3NmM0
NDBhZWQxNmFmZjYwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy90ZXN0YXBpLmMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBp
LmMKQEAgLTY2LDYgKzY2LDggQEAKIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkodm9pZCk7CiAjZW5k
aWYKIAoraW50IHRlc3RDQVBJVmlhQ3BwKCk7CisKIGJvb2wgYXNzZXJ0VHJ1ZShib29sIHZhbHVl
LCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKIAogc3RhdGljIEpTR2xvYmFsQ29udGV4dFJlZiBjb250
ZXh0OwpAQCAtMTM2MSw2ICsxMzYzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3Zb
XSkKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIHRlc3RPYmplY3RpdmVDQVBJKCk7CiAj
ZW5kaWYKKyAgICBSRUxFQVNFX0FTU0VSVCghdGVzdENBUElWaWFDcHAoKSk7CiAKICAgICBjb25z
dCBjaGFyICpzY3JpcHRQYXRoID0gInRlc3RhcGkuanMiOwogICAgIGlmIChhcmdjID4gMSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODc4ZmY1MTgwM2JjZGZhZDM3ZWNkMTA4MGI2ZDE5M2ZmZWI5NDhlMgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jcHAKQEAgLTAsMCAr
MSwzOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSmF2
YVNjcmlwdENvcmUuaCIKKworI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CisjaW5jbHVkZSA8d3Rm
L0V4cGVjdGVkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorCitleHRlcm4gIkMiIGludCB0ZXN0Q0FQSVZpYUNwcCgpOworCitjbGFzcyBB
UElTdHJpbmcgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFQSVN0cmluZyk7CitwdWJsaWM6
CisKKyAgICBBUElTdHJpbmcoY29uc3QgY2hhciogc3RyaW5nKQorICAgICAgICA6IG1fc3RyaW5n
KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHN0cmluZykpCisgICAgeworICAgIH0KKwor
ICAgIH5BUElTdHJpbmcoKQorICAgIHsKKyAgICAgICAgSlNTdHJpbmdSZWxlYXNlKG1fc3RyaW5n
KTsKKyAgICB9CisKKyAgICBvcGVyYXRvciBKU1N0cmluZ1JlZigpIHsgcmV0dXJuIG1fc3RyaW5n
OyB9CisKK3ByaXZhdGU6CisgICAgSlNTdHJpbmdSZWYgbV9zdHJpbmc7Cit9OworCitjbGFzcyBB
UElDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBUElDb250ZXh0KTsKK3B1Ymxp
YzoKKworICAgIEFQSUNvbnRleHQoKQorICAgICAgICA6IG1fY29udGV4dChKU0dsb2JhbENvbnRl
eHRDcmVhdGUobnVsbHB0cikpCisgICAgeworICAgICAgICBBUElTdHJpbmcgcHJpbnQoInByaW50
Iik7CisgICAgICAgIEpTT2JqZWN0UmVmIHByaW50RnVuY3Rpb24gPSBKU09iamVjdE1ha2VGdW5j
dGlvbldpdGhDYWxsYmFjayhtX2NvbnRleHQsIHByaW50LCBbXSAoSlNDb250ZXh0UmVmIGN0eCwg
SlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmLCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiopIHsKKworICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7IGkrKykKKyAgICAgICAgICAgICAgICBk
YXRhTG9nKGJpdHdpc2VfY2FzdDxKU0M6OkpTVmFsdWU+KGFyZ3VtZW50c1tpXSkpOworICAgICAg
ICAgICAgZGF0YUxvZ0xuKCk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY3R4KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShtX2Nv
bnRleHQsIEpTQ29udGV4dEdldEdsb2JhbE9iamVjdChtX2NvbnRleHQpLCBwcmludCwgcHJpbnRG
dW5jdGlvbiwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lLCBudWxscHRyKTsKKyAgICB9CisKKyAg
ICB+QVBJQ29udGV4dCgpCisgICAgeworICAgICAgICBKU0dsb2JhbENvbnRleHRSZWxlYXNlKG1f
Y29udGV4dCk7CisgICAgfQorCisgICAgb3BlcmF0b3IgSlNHbG9iYWxDb250ZXh0UmVmKCkgeyBy
ZXR1cm4gbV9jb250ZXh0OyB9CisKK3ByaXZhdGU6CisgICAgSlNHbG9iYWxDb250ZXh0UmVmIG1f
Y29udGV4dDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBBUElWZWN0b3IgOiBw
cm90ZWN0ZWQgVmVjdG9yPFQ+IHsKKyAgICB1c2luZyBCYXNlID0gVmVjdG9yPFQ+OworcHVibGlj
OgorICAgIEFQSVZlY3RvcihBUElDb250ZXh0JiBjb250ZXh0KQorICAgICAgICA6IEJhc2UoKQor
ICAgICAgICAsIG1fY29udGV4dChjb250ZXh0KQorICAgIHsKKyAgICB9CisKKyAgICB+QVBJVmVj
dG9yKCkKKyAgICB7CisgICAgICAgIGZvciAoYXV0byYgdmFsdWUgOiAqdGhpcykKKyAgICAgICAg
ICAgIEpTVmFsdWVVbnByb3RlY3QobV9jb250ZXh0LCB2YWx1ZSk7CisgICAgfQorCisgICAgdXNp
bmcgVmVjdG9yPFQ+OjpvcGVyYXRvcltdOworICAgIHVzaW5nIFZlY3RvcjxUPjo6c2l6ZTsKKyAg
ICB1c2luZyBWZWN0b3I8VD46OmJlZ2luOworICAgIHVzaW5nIFZlY3RvcjxUPjo6ZW5kOworICAg
IHVzaW5nIHR5cGVuYW1lIFZlY3RvcjxUPjo6aXRlcmF0b3I7CisKKyAgICB2b2lkIGFwcGVuZChU
IHZhbHVlKQorICAgIHsKKyAgICAgICAgSlNWYWx1ZVByb3RlY3QobV9jb250ZXh0LCB2YWx1ZSk7
CisgICAgICAgIEJhc2U6OmFwcGVuZChXVEZNb3ZlKHZhbHVlKSk7CisgICAgfQorCitwcml2YXRl
OgorICAgIEFQSUNvbnRleHQmIG1fY29udGV4dDsKK307CisKK2NsYXNzIFRlc3RBUEkgeworcHVi
bGljOgorICAgIGludCBydW4oKTsKK3ByaXZhdGU6CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBTdHJpbmdzPgorICAgIGJvb2wgY2hlY2soYm9vbCBjb25kaXRpb24sIFN0cmluZ3MuLi4gbWVz
c2FnZSk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0Z1bmN0b3IsIHR5cGVuYW1lIEFQSUZ1
bmN0b3I+CisgICAgdm9pZCBjaGVja0pTQW5kQVBJTWF0Y2goY29uc3QgSlNGdW5jdG9yJiwgY29u
c3QgQVBJRnVuY3RvciYsIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKTsKKworICAgIC8vIEhlbHBl
ciBtZXRob2RzLgorICAgIHVzaW5nIFNjcmlwdFJlc3VsdCA9IEV4cGVjdGVkPEpTVmFsdWVSZWYs
IEpTVmFsdWVSZWY+OworICAgIFNjcmlwdFJlc3VsdCBldmFsdWF0ZVNjcmlwdChjb25zdCBjaGFy
KiBzY3JpcHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QgPSBudWxscHRyKTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVzPgorICAgIFNjcmlwdFJlc3VsdCBjYWxsRnVuY3Rp
b24oY29uc3QgY2hhciogZnVuY3Rpb25Tb3VyY2UsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRz
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVzPgorICAgIGJvb2wgZnVu
Y3Rpb25SZXR1cm5zVHJ1ZShjb25zdCBjaGFyKiBmdW5jdGlvblNvdXJjZSwgQXJndW1lbnRUeXBl
cy4uLiBhcmd1bWVudHMpOworCisgICAgLy8gV2F5cyB0byBtYWtlIHNldHMgb2YgaW50ZXJlc3Rp
bmcgdGhpbmdzLgorICAgIEFQSVZlY3RvcjxKU09iamVjdFJlZj4gaW50ZXJlc3RpbmdPYmplY3Rz
KCk7CisgICAgQVBJVmVjdG9yPEpTVmFsdWVSZWY+IGludGVyZXN0aW5nS2V5cygpOworCisgICAg
aW50IGZhaWxlZCB7IDAgfTsKKyAgICBBUElDb250ZXh0IGNvbnRleHQ7Cit9OworCitpbnQgdGVz
dENBUElWaWFDcHAoKQoreworICAgIFRlc3RBUEkgdGVzdGVyOworICAgIHJldHVybiB0ZXN0ZXIu
cnVuKCk7Cit9CisKK1Rlc3RBUEk6OlNjcmlwdFJlc3VsdCBUZXN0QVBJOjpldmFsdWF0ZVNjcmlw
dChjb25zdCBjaGFyKiBzY3JpcHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QpCit7CisgICAgQVBJ
U3RyaW5nIHNjcmlwdEFQSVN0cmluZyhzY3JpcHQpOworICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9u
ID0gbnVsbHB0cjsKKworICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNFdmFsdWF0ZVNjcmlwdChj
b250ZXh0LCBzY3JpcHRBUElTdHJpbmcsIHRoaXNPYmplY3QsIG51bGxwdHIsIDAsICZleGNlcHRp
b24pOworICAgIGlmIChleGNlcHRpb24pCisgICAgICAgIHJldHVybiBVbmV4cGVjdGVkVHlwZTxK
U1ZhbHVlUmVmPihleGNlcHRpb24pOworICAgIHJldHVybiBTY3JpcHRSZXN1bHQocmVzdWx0KTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KK1Rlc3RBUEk6OlNjcmlw
dFJlc3VsdCBUZXN0QVBJOjpjYWxsRnVuY3Rpb24oY29uc3QgY2hhciogZnVuY3Rpb25Tb3VyY2Us
IEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKQoreworICAgIEpTVmFsdWVSZWYgZnVuY3Rpb247
CisgICAgeworICAgICAgICBTY3JpcHRSZXN1bHQgZnVuY3Rpb25SZXN1bHQgPSBldmFsdWF0ZVNj
cmlwdChmdW5jdGlvblNvdXJjZSk7CisgICAgICAgIGlmICghZnVuY3Rpb25SZXN1bHQpCisgICAg
ICAgICAgICByZXR1cm4gZnVuY3Rpb25SZXN1bHQ7CisgICAgICAgIGZ1bmN0aW9uID0gZnVuY3Rp
b25SZXN1bHQudmFsdWUoKTsKKyAgICB9CisKKyAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IG51
bGxwdHI7CisgICAgaWYgKEpTT2JqZWN0UmVmIGZ1bmN0aW9uT2JqZWN0ID0gSlNWYWx1ZVRvT2Jq
ZWN0KGNvbnRleHQsIGZ1bmN0aW9uLCAmZXhjZXB0aW9uKSkgeworICAgICAgICBKU1ZhbHVlUmVm
IGFyZ3Nbc2l6ZW9mLi4uKGFyZ3VtZW50cyldIHsgYXJndW1lbnRzLi4uIH07CisgICAgICAgIEpT
VmFsdWVSZWYgcmVzdWx0ID0gSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBmdW5jdGlv
bk9iamVjdCwgZnVuY3Rpb25PYmplY3QsIHNpemVvZi4uLihhcmd1bWVudHMpLCBhcmdzLCAmZXhj
ZXB0aW9uKTsKKyAgICAgICAgaWYgKCFleGNlcHRpb24pCisgICAgICAgICAgICByZXR1cm4gU2Ny
aXB0UmVzdWx0KHJlc3VsdCk7CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlQoZXhjZXB0aW9u
KTsKKyAgICByZXR1cm4gVW5leHBlY3RlZFR5cGU8SlNWYWx1ZVJlZj4oZXhjZXB0aW9uKTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KK2Jvb2wgVGVzdEFQSTo6ZnVu
Y3Rpb25SZXR1cm5zVHJ1ZShjb25zdCBjaGFyKiBmdW5jdGlvblNvdXJjZSwgQXJndW1lbnRUeXBl
cy4uLiBhcmd1bWVudHMpCit7CisgICAgSlNWYWx1ZVJlZiB0cnVlVmFsdWUgPSBKU1ZhbHVlTWFr
ZUJvb2xlYW4oY29udGV4dCwgdHJ1ZSk7CisgICAgU2NyaXB0UmVzdWx0IHJlc3VsdCA9IGNhbGxG
dW5jdGlvbihmdW5jdGlvblNvdXJjZSwgYXJndW1lbnRzLi4uKTsKKyAgICBpZiAoIXJlc3VsdCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBKU1ZhbHVlSXNTdHJpY3RFcXVhbChj
b250ZXh0LCB0cnVlVmFsdWUsIHJlc3VsdC52YWx1ZSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUuLi4gU3RyaW5ncz4KK2Jvb2wgVGVzdEFQSTo6Y2hlY2soYm9vbCBjb25kaXRpb24sIFN0cmlu
Z3MuLi4gbWVzc2FnZXMpCit7CisgICAgaWYgKCFjb25kaXRpb24pIHsKKyAgICAgICAgZGF0YUxv
Z0xuKG1lc3NhZ2VzLi4uLCAiOiBGQUlMRUQiKTsKKyAgICAgICAgZmFpbGVkKys7CisgICAgfSBl
bHNlCisgICAgICAgIGRhdGFMb2dMbihtZXNzYWdlcy4uLiwgIjogUEFTU0VEIik7CisKKyAgICBy
ZXR1cm4gY29uZGl0aW9uOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0Z1bmN0b3IsIHR5cGVu
YW1lIEFQSUZ1bmN0b3I+Cit2b2lkIFRlc3RBUEk6OmNoZWNrSlNBbmRBUElNYXRjaChjb25zdCBK
U0Z1bmN0b3ImIGpzRnVuY3RvciwgY29uc3QgQVBJRnVuY3RvciYgYXBpRnVuY3RvciwgY29uc3Qg
Y2hhciogZGVzY3JpcHRpb24pCit7CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRy
OworICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gYXBpRnVuY3RvcigmZXhjZXB0aW9uKTsKKyAgICBT
Y3JpcHRSZXN1bHQganNSZXN1bHQgPSBqc0Z1bmN0b3IoKTsKKyAgICBpZiAoIWpzUmVzdWx0KSB7
CisgICAgICAgIGNoZWNrKGV4Y2VwdGlvbiwgIkpTIGFuZCBBUEkgY2FsbHMgc2hvdWxkIGJvdGgg
dGhyb3cgYW4gZXhjZXB0aW9uIHdoaWxlICIsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgY2hlY2so
ZnVuY3Rpb25SZXR1cm5zVHJ1ZSgiKGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEuY29uc3RydWN0
b3IgPT09IGIuY29uc3RydWN0b3I7IH0pIiwgZXhjZXB0aW9uLCBqc1Jlc3VsdC5lcnJvcigpKSwg
IkpTIGFuZCBBUEkgY2FsbHMgc2hvdWxkIGJvdGggdGhyb3cgdGhlIHNhbWUgZXhjZXB0aW9uIHdo
aWxlICIsIGRlc2NyaXB0aW9uKTsKKyAgICB9IGVsc2UgeworICAgICAgICBjaGVjayghZXhjZXB0
aW9uLCAiSlMgYW5kIEFQSSBjYWxscyBzaG91bGQgYm90aCBub3QgdGhyb3cgYW4gZXhjZXB0aW9u
IHdoaWxlICIsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgY2hlY2soSlNWYWx1ZUlzU3RyaWN0RXF1
YWwoY29udGV4dCwgcmVzdWx0LCBqc1Jlc3VsdC52YWx1ZSgpKSwgIkpTIHJlc3VsdCBhbmQgQVBJ
IGNhbGxzIHNob3VsZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUgd2hpbGUgIiwgZGVzY3JpcHRpb24p
OworICAgIH0KK30KKworQVBJVmVjdG9yPEpTT2JqZWN0UmVmPiBUZXN0QVBJOjppbnRlcmVzdGlu
Z09iamVjdHMoKQoreworICAgIEFQSVZlY3RvcjxKU09iamVjdFJlZj4gcmVzdWx0KGNvbnRleHQp
OworICAgIEpTT2JqZWN0UmVmIGFycmF5ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGV2YWx1
YXRlU2NyaXB0KAorICAgICAgICAiW3t9LCBbXSwgeyBbU3ltYm9sLml0ZXJhdG9yXTogMSB9LCBu
ZXcgRGF0ZSgpLCBuZXcgU3RyaW5nKCdzdHInKSwgbmV3IE1hcCgpLCBuZXcgU2V0KCksIG5ldyBX
ZWFrTWFwKCksIG5ldyBXZWFrU2V0KCksIG5ldyBFcnJvcigpLCBuZXcgTnVtYmVyKDQyKSwgbmV3
IEJvb2xlYW4oKSwgeyBnZXQgbGVuZ3RoKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSB9XTsiKS52
YWx1ZSgpLCBudWxscHRyKTsKKworICAgIEFQSVN0cmluZyBsZW5ndGhTdHJpbmcoImxlbmd0aCIp
OworICAgIHVuc2lnbmVkIGxlbmd0aCA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBKU09iamVj
dEdldFByb3BlcnR5KGNvbnRleHQsIGFycmF5LCBsZW5ndGhTdHJpbmcsIG51bGxwdHIpLCBudWxs
cHRyKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIEpTT2JqZWN0
R2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIGFycmF5LCBpLCBudWxscHRyKSwgbnVsbHB0cik7
CisgICAgICAgIEFTU0VSVChvYmplY3QpOworICAgICAgICByZXN1bHQuYXBwZW5kKG9iamVjdCk7
CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQVBJVmVjdG9yPEpTVmFsdWVSZWY+
IFRlc3RBUEk6OmludGVyZXN0aW5nS2V5cygpCit7CisgICAgQVBJVmVjdG9yPEpTVmFsdWVSZWY+
IHJlc3VsdChjb250ZXh0KTsKKyAgICBKU09iamVjdFJlZiBhcnJheSA9IEpTVmFsdWVUb09iamVj
dChjb250ZXh0LCBldmFsdWF0ZVNjcmlwdCgiW3t9LCBbXSwgMSwgU3ltYm9sLml0ZXJhdG9yLCAn
bGVuZ3RoJ10iKS52YWx1ZSgpLCBudWxscHRyKTsKKworICAgIEFQSVN0cmluZyBsZW5ndGhTdHJp
bmcoImxlbmd0aCIpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IEpTVmFsdWVUb051bWJlcihjb250
ZXh0LCBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGFycmF5LCBsZW5ndGhTdHJpbmcsIG51
bGxwdHIpLCBudWxscHRyKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBp
KyspIHsKKyAgICAgICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHlBdElu
ZGV4KGNvbnRleHQsIGFycmF5LCBpLCBudWxscHRyKTsKKyAgICAgICAgQVNTRVJUKHZhbHVlKTsK
KyAgICAgICAgcmVzdWx0LmFwcGVuZCh2YWx1ZSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworaW50IFRlc3RBUEk6OnJ1bigpCit7CisgICAgZGF0YUxvZ0xuKCJTdGFydGluZyBD
LUFQSSB0ZXN0cyBpbiBDKysiKTsKKyAgICBjb25zdCBjaGFyKiBpc1N5bWJvbEZ1bmN0aW9uID0g
IihmdW5jdGlvbiBpc1N5bWJvbChzeW1ib2wpIHsgcmV0dXJuIHR5cGVvZihzeW1ib2wpID09PSAn
c3ltYm9sJzsgfSkiOworICAgIGNvbnN0IGNoYXIqIGdldEZ1bmN0aW9uID0gIihmdW5jdGlvbiBn
ZXQob2JqZWN0LCBrZXkpIHsgcmV0dXJuIG9iamVjdFtrZXldOyB9KSI7CisgICAgY29uc3QgY2hh
ciogc2V0RnVuY3Rpb24gPSAiKGZ1bmN0aW9uIHNldChvYmplY3QsIGtleSwgdmFsdWUpIHsgb2Jq
ZWN0W2tleV0gPSB2YWx1ZTsgfSkiOworICAgIGNvbnN0IGNoYXIqIGhhc0Z1bmN0aW9uID0gIihm
dW5jdGlvbiBoYXMob2JqZWN0LCBrZXkpIHsgcmV0dXJuIGtleSBpbiBvYmplY3Q7IH0pIjsKKyAg
ICBjb25zdCBjaGFyKiBkZWxldGVGdW5jdGlvbiA9ICIoZnVuY3Rpb24gZGVsKG9iamVjdCwga2V5
KSB7IHJldHVybiBkZWxldGUgb2JqZWN0W2tleV07IH0pIjsKKworICAgIHsKKyAgICAgICAgLy8g
Q2FuJ3QgY2FsbCBTeW1ib2wgYXMgYSBjb25zdHJ1Y3RvciBzaW5jZSBpdCdzIG5vdCBzdWJjbGFz
c2FibGUuCisgICAgICAgIGF1dG8gcmVzdWx0ID0gZXZhbHVhdGVTY3JpcHQoIlN5bWJvbCgnZG9w
ZScpOyIpOworICAgICAgICBjaGVjayhKU1ZhbHVlR2V0VHlwZShjb250ZXh0LCByZXN1bHQudmFs
dWUoKSkgPT0ga0pTVHlwZVN5bWJvbCwgImRvcGUgZ2V0IHR5cGUgaXMgYSBzeW1ib2wiKTsKKyAg
ICAgICAgY2hlY2soSlNWYWx1ZUlzU3ltYm9sKGNvbnRleHQsIHJlc3VsdC52YWx1ZSgpKSwgImRv
cGUgaXMgYSBzeW1ib2wiKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIEFQSVN0cmluZyBkZXNj
cmlwdGlvbigiZG9wZSIpOworICAgICAgICBKU1ZhbHVlUmVmIHN5bWJvbCA9IEpTVmFsdWVNYWtl
U3ltYm9sKGNvbnRleHQsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgY2hlY2soZnVuY3Rpb25SZXR1
cm5zVHJ1ZShpc1N5bWJvbEZ1bmN0aW9uLCBzeW1ib2wpLCAiSlNWYWx1ZU1ha2VTeW1ib2wgbWFr
ZXMgYSBzeW1ib2wgdmFsdWUiKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGF1dG8gb2JqZWN0
cyA9IGludGVyZXN0aW5nT2JqZWN0cygpOworICAgICAgICBhdXRvIGtleXMgPSBpbnRlcmVzdGlu
Z0tleXMoKTsKKworICAgICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IG9iamVjdHMpIHsKKyAgICAg
ICAgICAgIGRhdGFMb2dMbigiXG5uZXh0IG9iamVjdDogIiwgYml0d2lzZV9jYXN0PEpTQzo6SlNW
YWx1ZT4ob2JqZWN0KSk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGtleSA6IGtleXMpIHsKKyAg
ICAgICAgICAgICAgICBkYXRhTG9nTG4oIlVzaW5nIGtleTogIiwgYml0d2lzZV9jYXN0PEpTQzo6
SlNWYWx1ZT4oa2V5KSk7CisgICAgICAgICAgICAgICAgY2hlY2tKU0FuZEFQSU1hdGNoKAorICAg
ICAgICAgICAgICAgICAgICBbJl0geworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNh
bGxGdW5jdGlvbihnZXRGdW5jdGlvbiwgb2JqZWN0LCBrZXkpOworICAgICAgICAgICAgICAgICAg
ICB9LCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTT2JqZWN0R2V0UHJvcGVydHlLZXkoY29udGV4dCwgb2JqZWN0LCBrZXksIGV4
Y2VwdGlvbik7CisgICAgICAgICAgICAgICAgICAgIH0sICJjaGVja2luZyBnZXQgcHJvcGVydHkg
a2V5cyIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgeworICAgICAg
ICBhdXRvIGpzT2JqZWN0cyA9IGludGVyZXN0aW5nT2JqZWN0cygpOworICAgICAgICBhdXRvIGFw
aU9iamVjdHMgPSBpbnRlcmVzdGluZ09iamVjdHMoKTsKKyAgICAgICAgYXV0byBrZXlzID0gaW50
ZXJlc3RpbmdLZXlzKCk7CisKKyAgICAgICAgSlNWYWx1ZVJlZiB0aGVBbnN3ZXIgPSBKU1ZhbHVl
TWFrZU51bWJlcihjb250ZXh0LCA0Mik7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
anNPYmplY3RzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGtleSA6IGtl
eXMpIHsKKyAgICAgICAgICAgICAgICBKU09iamVjdFJlZiBqc09iamVjdCA9IGpzT2JqZWN0c1tp
XTsKKyAgICAgICAgICAgICAgICBKU09iamVjdFJlZiBhcGlPYmplY3QgPSBhcGlPYmplY3RzW2ld
OworICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAg
ICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oc2V0
RnVuY3Rpb24sIGpzT2JqZWN0LCBrZXksIHRoZUFuc3dlcik7CisgICAgICAgICAgICAgICAgICAg
IH0gLCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAg
ICAgSlNPYmplY3RTZXRQcm9wZXJ0eUtleShjb250ZXh0LCBhcGlPYmplY3QsIGtleSwgdGhlQW5z
d2VyLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUsIGV4Y2VwdGlvbik7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisgICAgICAg
ICAgICAgICAgICAgIH0sICJzZXR0aW5nIHByb3BlcnR5IGtleXMgdG8gdGhlIGFuc3dlciIpOwor
ICAgICAgICAgICAgICAgIC8vIENoZWNrIGdldCBpcyB0aGUgc2FtZSBvbiBBUEkgb2JqZWN0Lgor
ICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAg
WyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oZ2V0RnVu
Y3Rpb24sIGFwaU9iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgWyZdIChKU1Zh
bHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09i
amVjdEdldFByb3BlcnR5S2V5KGNvbnRleHQsIGFwaU9iamVjdCwga2V5LCBleGNlcHRpb24pOwor
ICAgICAgICAgICAgICAgICAgICB9LCAiZ2V0dGluZyBwcm9wZXJ0eSBrZXlzIGZyb20gQVBJIG9i
amVjdHMiKTsKKyAgICAgICAgICAgICAgICAvLyBDaGVjayBnZXQgaXMgdGhlIHNhbWUgb24gcmVz
cGVjdGl2ZSBvYmplY3RzLgorICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAg
ICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBj
YWxsRnVuY3Rpb24oZ2V0RnVuY3Rpb24sIGpzT2JqZWN0LCBrZXkpOworICAgICAgICAgICAgICAg
ICAgICB9LCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEpTT2JqZWN0R2V0UHJvcGVydHlLZXkoY29udGV4dCwgYXBpT2JqZWN0LCBr
ZXksIGV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAgICAgIH0sICJnZXR0aW5nIHByb3BlcnR5
IGtleXMgZnJvbSByZXNwZWN0aXZlIG9iamVjdHMiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0byBvYmplY3RzID0gaW50ZXJlc3RpbmdPYmpl
Y3RzKCk7CisgICAgICAgIGF1dG8ga2V5cyA9IGludGVyZXN0aW5nS2V5cygpOworCisgICAgICAg
IEpTVmFsdWVSZWYgdGhlQW5zd2VyID0gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgNDIpOwor
ICAgICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IG9iamVjdHMpIHsKKyAgICAgICAgICAgIGRhdGFM
b2dMbigiXG5OZXh0IG9iamVjdDogIiwgYml0d2lzZV9jYXN0PEpTQzo6SlNWYWx1ZT4ob2JqZWN0
KSk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGtleSA6IGtleXMpIHsKKyAgICAgICAgICAgICAg
ICBkYXRhTG9nTG4oIlVzaW5nIGtleTogIiwgYml0d2lzZV9jYXN0PEpTQzo6SlNWYWx1ZT4oa2V5
KSk7CisgICAgICAgICAgICAgICAgY2hlY2tKU0FuZEFQSU1hdGNoKAorICAgICAgICAgICAgICAg
ICAgICBbJl0geworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxGdW5jdGlvbiho
YXNGdW5jdGlvbiwgb2JqZWN0LCBrZXkpOworICAgICAgICAgICAgICAgICAgICB9LCBbJl0gKEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCBKU09iamVjdEhhc1Byb3BlcnR5S2V5KGNvbnRleHQs
IG9iamVjdCwga2V5LCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgfSwgImNoZWNr
aW5nIGhhcyBwcm9wZXJ0eSBrZXlzIHVuc2V0Iik7CisKKyAgICAgICAgICAgICAgICBjaGVjaygh
IWNhbGxGdW5jdGlvbihzZXRGdW5jdGlvbiwgb2JqZWN0LCBrZXksIHRoZUFuc3dlciksICJzZXQg
cHJvcGVydHkgdG8gdGhlIGFuc3dlciIpOworCisgICAgICAgICAgICAgICAgY2hlY2tKU0FuZEFQ
SU1hdGNoKAorICAgICAgICAgICAgICAgICAgICBbJl0geworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGNhbGxGdW5jdGlvbihoYXNGdW5jdGlvbiwgb2JqZWN0LCBrZXkpOworICAgICAg
ICAgICAgICAgICAgICB9LCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCBKU09iamVj
dEhhc1Byb3BlcnR5S2V5KGNvbnRleHQsIG9iamVjdCwga2V5LCBleGNlcHRpb24pKTsKKyAgICAg
ICAgICAgICAgICAgICAgfSwgImNoZWNraW5nIGhhcyBwcm9wZXJ0eSBrZXlzIHNldCIpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgeworICAgICAgICBhdXRvIG9iamVj
dHMgPSBpbnRlcmVzdGluZ09iamVjdHMoKTsKKyAgICAgICAgYXV0byBrZXlzID0gaW50ZXJlc3Rp
bmdLZXlzKCk7CisKKyAgICAgICAgSlNWYWx1ZVJlZiB0aGVBbnN3ZXIgPSBKU1ZhbHVlTWFrZU51
bWJlcihjb250ZXh0LCA0Mik7CisgICAgICAgIGZvciAoYXV0byYgb2JqZWN0IDogb2JqZWN0cykg
eworICAgICAgICAgICAgZGF0YUxvZ0xuKCJcbk5leHQgb2JqZWN0OiAiLCBiaXR3aXNlX2Nhc3Q8
SlNDOjpKU1ZhbHVlPihvYmplY3QpKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYga2V5IDoga2V5
cykgeworICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiVXNpbmcga2V5OiAiLCBiaXR3aXNlX2Nh
c3Q8SlNDOjpKU1ZhbHVlPihrZXkpKTsKKyAgICAgICAgICAgICAgICBjaGVja0pTQW5kQVBJTWF0
Y2goCisgICAgICAgICAgICAgICAgICAgIFsmXSB7CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gY2FsbEZ1bmN0aW9uKGRlbGV0ZUZ1bmN0aW9uLCBvYmplY3QsIGtleSk7CisgICAgICAg
ICAgICAgICAgICAgIH0sIFsmXSAoSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIEpTT2JqZWN0
RGVsZXRlUHJvcGVydHlLZXkoY29udGV4dCwgb2JqZWN0LCBrZXksIGV4Y2VwdGlvbikpOworICAg
ICAgICAgICAgICAgICAgICB9LCAiY2hlY2tpbmcgaGFzIHByb3BlcnR5IGtleXMgdW5zZXQiKTsK
KworICAgICAgICAgICAgICAgIGNoZWNrKCEhY2FsbEZ1bmN0aW9uKHNldEZ1bmN0aW9uLCBvYmpl
Y3QsIGtleSwgdGhlQW5zd2VyKSwgInNldCBwcm9wZXJ0eSB0byB0aGUgYW5zd2VyIik7CisKKyAg
ICAgICAgICAgICAgICBjaGVja0pTQW5kQVBJTWF0Y2goCisgICAgICAgICAgICAgICAgICAgIFsm
XSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbEZ1bmN0aW9uKGRlbGV0ZUZ1
bmN0aW9uLCBvYmplY3QsIGtleSk7CisgICAgICAgICAgICAgICAgICAgIH0sIFsmXSAoSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VCb29sZWFuKGNvbnRleHQsIEpTT2JqZWN0RGVsZXRlUHJvcGVydHlLZXkoY29udGV4dCwg
b2JqZWN0LCBrZXksIGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgICAgICB9LCAiY2hlY2tp
bmcgaGFzIHByb3BlcnR5IGtleXMgc2V0Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBkYXRhTG9nTG4oIkMtQVBJIHRlc3RzIGluIEMrKyBoYWQgIiwgZmFpbGVkLCAi
IGZhaWx1cmVzIik7CisgICAgcmV0dXJuIGZhaWxlZDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQppbmRleCBlOThkNmNmNWRkYmNlMTc4ZTAwYzlkZGIwZTUw
ZWNlM2FlM2Q2MTdhLi5mZTg5MTc1NmExNGY4ZDdhZTY1ZmM4MzM2ZjA0YmIxMTRiZDk4MWFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCkBAIC0yMyw2ICsy
Myw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9y
dCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KIAogI2ltcG9ydCAiQ3VycmVudFRo
aXNJbnNpZGVCbG9ja0dldHRlclRlc3QuaCIKQEAgLTU4Myw2ICs1ODQsNzEgQEAgc3RhdGljIHZv
aWQgdGVzdE9iamVjdGl2ZUNBUElNYWluKCkKICAgICB9CiAKICAgICBAYXV0b3JlbGVhc2Vwb29s
IHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRd
OworICAgICAgICBKU1ZhbHVlICpzeW1ib2wgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIlN5
bWJvbCgnZG9wZScpOyJdOworICAgICAgICBKU1ZhbHVlICpub3RTeW1ib2wgPSBbY29udGV4dCBl
dmFsdWF0ZVNjcmlwdDpAIidkb3BlJyJdOworICAgICAgICBjaGVja1Jlc3VsdChAIlNob3VsZCBi
ZSBhIHN5bWJvbCB2YWx1ZSIsIHN5bWJvbC5pc1N5bWJvbCk7CisgICAgICAgIGNoZWNrUmVzdWx0
KEAiU2hvdWxkIG5vdCBiZSBhIHN5bWJvbCB2YWx1ZSIsICFub3RTeW1ib2wuaXNTeW1ib2wpOwor
ICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRl
eHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUgKnN5bWJvbCA9
IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld1N5bWJvbEZyb21EZXNjcmlwdGlvbjpAImRvcGUiIGluQ29u
dGV4dDpjb250ZXh0XTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJTaG91bGQgYmUgYSBjcmVhdGVk
IGZyb20gT2JjLUMiLCBzeW1ib2wuaXNTeW1ib2wpOworICAgIH0KKworI2lmICEoZGVmaW5lZChf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAoZGVmaW5lZChfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMTAwMDApCisK
KyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tK
U0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICphcnJheUl0ZXJhdG9yID0g
W2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJBcnJheS5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9y
XSJdOworICAgICAgICBKU1ZhbHVlICppdGVyYXRvclN5bWJvbCA9IGNvbnRleHRbQCJTeW1ib2wi
XVtAIml0ZXJhdG9yIl07CisgICAgICAgIEpTVmFsdWUgKmFycmF5ID0gW0pTVmFsdWUgdmFsdWVX
aXRoTmV3QXJyYXlJbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIGNoZWNrUmVzdWx0KEAiTG9v
a2luZyB1cCBieSBzdWJzY3JpcHQgd2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsiLCBbYXJyYXlbaXRl
cmF0b3JTeW1ib2xdIGlzRXF1YWw6YXJyYXlJdGVyYXRvcl0pOworICAgICAgICBjaGVja1Jlc3Vs
dChAIkxvb2tpbmcgdXAgYnkgbWV0aG9kIHdpdGggc3ltYm9sIHNob3VsZCB3b3JrIiwgW1thcnJh
eSB2YWx1ZUZvclByb3BlcnR5Oml0ZXJhdG9yU3ltYm9sXSBpc0VxdWFsOmFycmF5SXRlcmF0b3Jd
KTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpj
b250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICppdGVy
YXRvclN5bWJvbCA9IGNvbnRleHRbQCJTeW1ib2wiXVtAIml0ZXJhdG9yIl07CisgICAgICAgIEpT
VmFsdWUgKm9iamVjdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld09iamVjdEluQ29udGV4dDpjb250
ZXh0XTsKKyAgICAgICAgSlNWYWx1ZSAqdGhlQW5zd2VyID0gW0pTVmFsdWUgdmFsdWVXaXRoVUlu
dDMyOjQyIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgb2JqZWN0W2l0ZXJhdG9yU3ltYm9s
XSA9IHRoZUFuc3dlcjsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJTZXRpbmcgYnkgc3Vic2NyaXB0
IHdpdGggc3ltYm9sIHNob3VsZCB3b3JrIiwgW29iamVjdFtpdGVyYXRvclN5bWJvbF0gaXNFcXVh
bDp0aGVBbnN3ZXJdKTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAg
SlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICBK
U1ZhbHVlICppdGVyYXRvclN5bWJvbCA9IGNvbnRleHRbQCJTeW1ib2wiXVtAIml0ZXJhdG9yIl07
CisgICAgICAgIEpTVmFsdWUgKm9iamVjdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld09iamVjdElu
Q29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgSlNWYWx1ZSAqdGhlQW5zd2VyID0gW0pTVmFsdWUg
dmFsdWVXaXRoVUludDMyOjQyIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgW29iamVjdCBz
ZXRWYWx1ZTp0aGVBbnN3ZXIgZm9yUHJvcGVydHk6aXRlcmF0b3JTeW1ib2xdOworICAgICAgICBj
aGVja1Jlc3VsdChAIlNldGluZyBieSBtZXRob2Qgd2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsiLCBb
b2JqZWN0W2l0ZXJhdG9yU3ltYm9sXSBpc0VxdWFsOnRoZUFuc3dlcl0pOworICAgIH0KKworICAg
IEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29u
dGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUgKml0ZXJhdG9yU3ltYm9sID0gY29u
dGV4dFtAIlN5bWJvbCJdW0AiaXRlcmF0b3IiXTsKKyAgICAgICAgSlNWYWx1ZSAqb2JqZWN0ID0g
W0pTVmFsdWUgdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBK
U1ZhbHVlICp0aGVBbnN3ZXIgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhVSW50MzI6NDIgaW5Db250ZXh0
OmNvbnRleHRdOworICAgICAgICBvYmplY3RbaXRlcmF0b3JTeW1ib2xdID0gdGhlQW5zd2VyOwor
ICAgICAgICBjaGVja1Jlc3VsdChAImhhcyBwcm9wZXJ0eSB3aXRoIHN5bWJvbCBzaG91bGQgd29y
ayIsIFtvYmplY3QgaGFzUHJvcGVydHk6aXRlcmF0b3JTeW1ib2xdKTsKKyAgICB9CisKKyAgICBA
YXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRl
eHQgYWxsb2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICppdGVyYXRvclN5bWJvbCA9IGNvbnRl
eHRbQCJTeW1ib2wiXVtAIml0ZXJhdG9yIl07CisgICAgICAgIEpTVmFsdWUgKm9iamVjdCA9IFtK
U1ZhbHVlIHZhbHVlV2l0aE5ld09iamVjdEluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgSlNW
YWx1ZSAqdGhlQW5zd2VyID0gW0pTVmFsdWUgdmFsdWVXaXRoVUludDMyOjQyIGluQ29udGV4dDpj
b250ZXh0XTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJkZWxldGUgcHJvcGVydHkgd2l0aCBzeW1i
b2wgc2hvdWxkIHdvcmsgd2l0aG91dCBwcm9wZXJ0eSIsIFtvYmplY3QgZGVsZXRlUHJvcGVydHk6
aXRlcmF0b3JTeW1ib2xdKTsKKyAgICAgICAgb2JqZWN0W2l0ZXJhdG9yU3ltYm9sXSA9IHRoZUFu
c3dlcjsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJkZWxldGUgcHJvcGVydHkgd2l0aCBzeW1ib2wg
c2hvdWxkIHdvcmsgd2l0aCBwcm9wZXJ0eSIsIFtvYmplY3QgZGVsZXRlUHJvcGVydHk6aXRlcmF0
b3JTeW1ib2xdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJkZWxldGUgc2hvdWxkIGJlIGZhbHNl
IHdpdGggbm9uLWNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSIsICFbY29udGV4dFtAIkFycmF5Il0gZGVs
ZXRlUHJvcGVydHk6QCJwcm90b3R5cGUiXSk7CisgICAgfQorCisjZW5kaWYgLy8gIShkZWZpbmVk
KF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPCAxMDEzMDApIHx8IChkZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkK
KworICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICBKU0NvbGxlY3Rpb24qIG15UHJpdmF0
ZVByb3BlcnRpZXMgPSBbW0pTQ29sbGVjdGlvbiBhbGxvY10gaW5pdF07CiAKICAgICAgICAgQGF1
dG9yZWxlYXNlcG9vbCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNkZjYyMmMz
M2E2NmIzNzVkMDRlYjM0NzdhMWIxMTBkYTU2MzY3YzYuLjlmYWMxZDA2NjZkN2E0ZTAxZWVmZTU1
ZDU2YTU4YmRmZDY0YzEwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzY3
LDYgKzEzNjcsNyBAQAogCQk1MzExQkQ0QjFFQTU4MUU1MDA1MjUyODEgLyogV2FzbU9NR1BsYW4u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMTFCRDQ5
MUVBNTgxRTUwMDUyNTI4MSAvKiBXYXNtT01HUGxhbi5oICovOyB9OwogCQk1MzEzNzRCRDFENUNF
Njc2MDBBRjdBMEIgLyogV2FzbVBsYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzMTM3NEJDMUQ1Q0U2NzYwMEFGN0EwQiAvKiBXYXNtUGxhbi5oICov
OyB9OwogCQk1MzEzNzRCRjFENUNFOTUwMDBBRjdBMEIgLyogV2FzbVBsYW4uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxMzc0QkUxRDVDRTk1MDAw
QUY3QTBCIC8qIFdhc21QbGFuLmNwcCAqLzsgfTsKKwkJNTMxRDRFMUQxRjU5RDg4OTAwRUM4MzZD
IC8qIHRlc3RhcGkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTMxRDRFMTkxRjU5Q0REMjAwRUM4MzZDIC8qIHRlc3RhcGkuY3BwICovOyB9OwogCQk1
MzNCMTVERjFEQzdGNDYzMDA0RDUwMEEgLyogV2FzbU9wcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzQjE1REUxREM3RjQ2MzAwNEQ1MDBBIC8qIFdh
c21PcHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MzQxRkM3MDFEQUMzM0U1MDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQxRkM2RjFE
QUMzM0U1MDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHAgKi87IH07CiAJCTUz
NDFGQzcyMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQxRkM3MTFEQUMzNDND
MDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oICovOyB9OwpAQCAtMzk0Nyw2ICsz
OTQ4LDcgQEAKIAkJNTMxMUJENDkxRUE1ODFFNTAwNTI1MjgxIC8qIFdhc21PTUdQbGFuLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21PTUdQbGFuLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUzMTM3NEJDMUQ1Q0U2NzYwMEFGN0EwQiAvKiBXYXNtUGxhbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtUGxhbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MzEzNzRCRTFENUNFOTUwMDBBRjdBMEIgLyogV2FzbVBsYW4u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbVBsYW4uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzFENEUxOTFGNTlDREQyMDBFQzgzNkMgLyog
dGVzdGFwaS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSB0ZXN0YXBpLmNwcDsgcGF0aCA9IEFQSS90
ZXN0cy90ZXN0YXBpLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMzQjE1REUx
REM3RjQ2MzAwNEQ1MDBBIC8qIFdhc21PcHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2FzbU9wcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQxRkM2RjFE
QUMzM0U1MDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcDsgcGF0
aCA9IGIzL0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MzQxRkM3MTFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1dhc21Cb3VuZHNDaGVja1Zh
bHVlLmg7IHBhdGggPSBiMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0zOTc3LDcgKzM5NzksNiBAQAogCQk1MzkxN0U3QTFCNzkwNkU0MDAw
RUJEMzMgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90
b3R5cGVGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM5MTdFN0Mx
Qjc5MTEwNjAwMEVCRDMzIC8qIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzkxN0U4MzFCNzkxQ0I4MDAwRUJEMzMgLyogVHlw
ZWRBcnJheVByb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgbmFt
ZSA9IFR5cGVkQXJyYXlQcm90b3R5cGUuanM7IHBhdGggPSBidWlsdGlucy9UeXBlZEFycmF5UHJv
dG90eXBlLmpzOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07Ci0JCTUzOUVCMDcxMUQ1NTNE
RjgwMEM4MkVGNyAvKiB0ZXN0V2FzbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSB0ZXN0V2FzbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzOUZC
OEI5MUM5OURBN0MwMDk0MEZBMSAvKiBKU0FycmF5SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0FycmF5SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1M0IwQkUzMzFFNTYxQUM5MDBBOEZDMjkgLyogR2V0dGVyU2V0dGVyQWNjZXNzQ2Fz
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNCMEJFMzUxRTU2
MUIwOTAwQThGQzI5IC8qIFByb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC01ODk1LDEwICs1ODk2LDEwIEBACiAJCQkJRkVCNTFGNkIxQTk3
QjY4ODAwMUY5MjFDIC8qIFJlZ3Jlc3MxNDE4MDkubW0gKi8sCiAJCQkJRkVDQjhCMjkxRDI1Q0FC
QjAwNkYyNDYzIC8qIHRlc3RhcGktZnVuY3Rpb24tb3ZlcnJpZGVzLmpzICovLAogCQkJCTE0QkQ1
QTJEMEEzRTkxRjYwMEJBRjU5QyAvKiB0ZXN0YXBpLmMgKi8sCisJCQkJNTMxRDRFMTkxRjU5Q0RE
MjAwRUM4MzZDIC8qIHRlc3RhcGkuY3BwICovLAogCQkJCTE0RDg1Nzc0MEE0Njk2QzgwMDMyMTQ2
QyAvKiB0ZXN0YXBpLmpzICovLAogCQkJCTg2RDIyMjE5MTY3RUY5NDQwMDI0QzgwNCAvKiB0ZXN0
YXBpLm1tICovLAogCQkJCTY1MTEyMkU1MTQwNDY5QkEwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwLmNw
cCAqLywKLQkJCQk1MzlFQjA3MTFENTUzREY4MDBDODJFRjcgLyogdGVzdFdhc20uY3BwICovLAog
CQkJCTUzNDkwMjgyMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuY3BwICovLAog
CQkJCTUzNDkwMjgzMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuaCAqLywKIAkJ
CSk7CkBAIC0xMDIwNSw2ICsxMDIwNiw3IEBACiAJCQkJNjU1NzBGNUExQUE0QzNFQTAwOUIzQzIz
IC8qIFJlZ3Jlc3MxNDEyNzUubW0gaW4gU291cmNlcyAqLywKIAkJCQlGRUI1MUY2QzFBOTdCNjg4
MDAxRjkyMUMgLyogUmVncmVzczE0MTgwOS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTE0NDBGNjEw
MEE0Rjg1NjcwMDA1RjA2MSAvKiB0ZXN0YXBpLmMgaW4gU291cmNlcyAqLywKKwkJCQk1MzFENEUx
RDFGNTlEODg5MDBFQzgzNkMgLyogdGVzdGFwaS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkQy
MjIxQTE2N0VGOTQ0MDAyNEM4MDQgLyogdGVzdGFwaS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUz
NDkwMjg1MUM3Mjc2QjcwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338613</attachid>
            <date>2018-04-23 15:59:31 -0700</date>
            <delta_ts>2018-06-07 18:36:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175836-20180423155930.patch</filename>
            <type>text/plain</type>
            <size>103932</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwOTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MDRhOGFhM2Y0MDVkNjgzMzI2MTFhZDlmN2NkNzY5YjU1N2ZhOGRhLi43NDQzYzNmYjYwODRhODVk
MDg5YjIzZjY0ZTU3OGZlZDA4ODVjMTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMTgtMDQtMjMgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0pTQyBBUEldIFdlIHNob3VsZCBzdXBwb3J0IHRoZSBzeW1ib2wg
dHlwZSBpbiBvdXIgQy9PYmotQyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTgzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIGZvbGxvd2luZyBBUEkgYWRkaXRp
b25zOgorICAgICAgICAxKSBUZXN0IGlmIGEgSlNWYWx1ZS9KU1ZhbHVlUmVmIGlzIGEgc3ltYm9s
IHZpYSBhbnkgb2YgdGhlIG1ldGhvZHMgQVBJIGFyZSBhYmxlIHRvIHRlc3QgZm9yIHRoZSB0eXBl
cyBvZiBvdGhlciBKU1ZhbHVlcy4KKyAgICAgICAgMikgQ3JlYXRlIGEgc3ltYm9sIG9uIGJvdGgg
QVBJcy4KKyAgICAgICAgMykgR2V0L1NldC9EZWxldGUvRGVmaW5lIHByb3BlcnR5IG5vdyB0YWtl
IGlkcyBpbiB0aGUgT2JqLUMgQVBJLgorICAgICAgICA0KSBBZGQgR2V0L1NldC9EZWxldGUgaW4g
dGhlIEMgQVBJLgorCisgICAgICAgIFdlIGNhbiBkbyAzIGJlY2F1c2UgaXQgaXMgYm90aCBiaW5h
cnkgYW5kIHNvdXJjZSBjb21wYXRhYmxlIHdpdGgKKyAgICAgICAgdGhlIGV4aXN0aW5nIEFQSS4g
SSBhZGRlZCAoNCkgYmVjYXVzZSB0aGUgY3VycmVudCBwcm9wZXJ0eSBhY2Nlc3MKKyAgICAgICAg
QVBJcyBvbmx5IGhhdmUgdGhlIGFiaWxpdHkgdG8gZ2V0IFN0cmluZ3MuIEl0IHdhcyBwb3NzaWJs
ZSB0bworICAgICAgICBtZXJnZSBzeW1ib2xzIGludG8gSlNTdHJpbmdSZWYgYnV0IHRoYXQgZmVs
dCBjb25mdXNpbmcgYW5kIGV4cG9zZXMKKyAgICAgICAgaW1wbGVtZW50YXRpb24gZGV0YWlscyBv
ZiBvdXIgZW5naW5lLiBUaGUgbmV3IGZ1bmN0aW9ucyBtYXRjaCB0aGUKKyAgICAgICAgc2FtZSBt
ZWFuaW5nIHRoYXQgdGhleSBoYXZlIGluIEpTLCB0aHVzIHNob3VsZCBiZSBmb3J3YXJkCisgICAg
ICAgIGNvbXBhdGlibGUgd2l0aCBhbnkgZnV0dXJlIGxhbmd1YWdlIGV4dGVuc2lvbnMuCisKKyAg
ICAgICAgTGFzdGx5LCB0aGlzIHBhdGNoIGFkZHMgdGhlIHNhbWUgYXZhaWxhYmlsaXR5IHByZXBy
b2NjZXNzaW5nIHBoYXNlCisgICAgICAgIGluIFdlYkNvcmUgdG8gSmF2YVNjcmlwdENvcmUsIHdo
aWNoIGVuYWJsZXMgVEJBIGZlYXR1cmVzIGZvcgorICAgICAgICB0ZXN0aW5nIG9uIHByZXZpb3Vz
IHJlbGVhc2VzLgorCisgICAgICAgICogQVBJL0pTQmFzZVByaXZhdGUuaDoKKyAgICAgICAgKiBB
UEkvSlNDb250ZXh0Lmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFByaXZhdGUuaDoKKyAgICAg
ICAgKiBBUEkvSlNDb250ZXh0UmVmLmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZkludGVy
bmFsLmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaDoKKyAgICAgICAgKiBB
UEkvSlNNYW5hZ2VkVmFsdWUuaDoKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAg
ICAgICAoSlNPYmplY3RIYXNQcm9wZXJ0eUtleSk6CisgICAgICAgIChKU09iamVjdEdldFByb3Bl
cnR5S2V5KToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJvcGVydHlLZXkpOgorICAgICAgICAoSlNP
YmplY3REZWxldGVQcm9wZXJ0eUtleSk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmg6Cisg
ICAgICAgICogQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmg6CisgICAgICAgICogQVBJL0pTVHlwZWRB
cnJheS5oOgorICAgICAgICAqIEFQSS9KU1ZhbHVlLmg6CisgICAgICAgICogQVBJL0pTVmFsdWUu
bW06CisgICAgICAgICgrW0pTVmFsdWUgdmFsdWVXaXRoTmV3U3ltYm9sRnJvbURlc2NyaXB0aW9u
OmluQ29udGV4dDpdKToKKyAgICAgICAgKHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbik6CisgICAg
ICAgICgtW0pTVmFsdWUgdmFsdWVGb3JQcm9wZXJ0eTp2YWx1ZUZvclByb3BlcnR5Ol0pOgorICAg
ICAgICAoLVtKU1ZhbHVlIHNldFZhbHVlOmZvclByb3BlcnR5OnNldFZhbHVlOmZvclByb3BlcnR5
Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5OmRlbGV0ZVByb3BlcnR5Ol0p
OgorICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Omhhc1Byb3BlcnR5Ol0pOgorICAgICAg
ICAoLVtKU1ZhbHVlIGRlZmluZVByb3BlcnR5OmRlc2NyaXB0b3I6ZGVmaW5lUHJvcGVydHk6ZGVz
Y3JpcHRvcjpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSBpc1N5bWJvbF0pOgorICAgICAgICAoLVtK
U1ZhbHVlIG9iamVjdEZvcktleWVkU3Vic2NyaXB0Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIHNl
dE9iamVjdDpmb3JLZXllZFN1YnNjcmlwdDpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSB2YWx1ZUZv
clByb3BlcnR5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIHNldFZhbHVlOmZvclBy
b3BlcnR5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5Ol0p
OiBEZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Ol0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtKU1ZhbHVlIGRlZmluZVByb3BlcnR5OmRlc2NyaXB0b3I6XSk6IERlbGV0ZWQu
CisgICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgorICAgICAgICAoSlNWYWx1ZUdldFR5cGUp
OgorICAgICAgICAoSlNWYWx1ZUlzU3ltYm9sKToKKyAgICAgICAgKEpTVmFsdWVNYWtlU3ltYm9s
KToKKyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5oOgorICAgICAgICAqIEFQSS9XZWJLaXRBdmFp
bGFiaWxpdHkuaDoKKyAgICAgICAgKiBBUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dl
dHRlclRlc3QubW06CisgICAgICAgICogQVBJL3Rlc3RzL0N1c3RvbUdsb2JhbE9iamVjdENsYXNz
VGVzdC5jOgorICAgICAgICAqIEFQSS90ZXN0cy9EYXRlVGVzdHMubW06CisgICAgICAgICogQVBJ
L3Rlc3RzL0pTRXhwb3J0VGVzdHMubW06CisgICAgICAgICogQVBJL3Rlc3RzL0pTTm9kZS5jOgor
ICAgICAgICAqIEFQSS90ZXN0cy9KU05vZGVMaXN0LmM6CisgICAgICAgICogQVBJL3Rlc3RzL05v
ZGUuYzoKKyAgICAgICAgKiBBUEkvdGVzdHMvTm9kZUxpc3QuYzoKKyAgICAgICAgKiBBUEkvdGVz
dHMvbWluaWRvbS5jOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLmM6CisgICAgICAgICht
YWluKToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5jcHA6IEFkZGVkLgorICAgICAgICAo
QVBJU3RyaW5nOjpBUElTdHJpbmcpOgorICAgICAgICAoQVBJU3RyaW5nOjp+QVBJU3RyaW5nKToK
KyAgICAgICAgKEFQSVN0cmluZzo6b3BlcmF0b3IgSlNTdHJpbmdSZWYpOgorICAgICAgICAoQVBJ
Q29udGV4dDo6QVBJQ29udGV4dCk6CisgICAgICAgIChBUElDb250ZXh0Ojp+QVBJQ29udGV4dCk6
CisgICAgICAgIChBUElDb250ZXh0OjpvcGVyYXRvciBKU0dsb2JhbENvbnRleHRSZWYpOgorICAg
ICAgICAoQVBJVmVjdG9yOjpBUElWZWN0b3IpOgorICAgICAgICAoQVBJVmVjdG9yOjp+QVBJVmVj
dG9yKToKKyAgICAgICAgKEFQSVZlY3Rvcjo6YXBwZW5kKToKKyAgICAgICAgKHRlc3RDQVBJVmlh
Q3BwKToKKyAgICAgICAgKFRlc3RBUEk6OmV2YWx1YXRlU2NyaXB0KToKKyAgICAgICAgKFRlc3RB
UEk6OmNhbGxGdW5jdGlvbik6CisgICAgICAgIChUZXN0QVBJOjpmdW5jdGlvblJldHVybnNUcnVl
KToKKyAgICAgICAgKFRlc3RBUEk6OmNoZWNrKToKKyAgICAgICAgKFRlc3RBUEk6OmNoZWNrSlNB
bmRBUElNYXRjaCk6CisgICAgICAgIChUZXN0QVBJOjppbnRlcmVzdGluZ09iamVjdHMpOgorICAg
ICAgICAoVGVzdEFQSTo6aW50ZXJlc3RpbmdLZXlzKToKKyAgICAgICAgKFRlc3RBUEk6OnJ1bik6
CisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkubW06CisgICAgICAgICh0ZXN0T2JqZWN0aXZl
Q0FQSU1haW4pOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogY29uZmlnLmg6CisgICAgICAgICogcG9zdHByb2Nlc3MtaGVhZGVy
cy5zaDoKKwogMjAxOC0wNC0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KIAogICAgICAgICBbSlNDXSBSZW1vdmUgTW9kdWxlTG9hZGVyUHJvdG90eXBlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZVByaXZhdGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5oCmluZGV4IDEzNzU5NDk3Mjc1ZTU4YmVi
MGMxMjIxMzU1ZjlmYmVkNDNkM2IxYTUuLmRiODQwOGI4ZTg1NTUxNjhmMGEwNTkwYTFhZjRhZjRk
OTk3MmQ2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5oCkBA
IC00Myw3ICs0Myw3IEBAIG93bnMgYSBsYXJnZSBub24tR0MgbWVtb3J5IHJlZ2lvbi4gQ2FsbGlu
ZyB0aGlzIGZ1bmN0aW9uIHdpbGwgZW5jb3VyYWdlIHRoZQogZ2FyYmFnZSBjb2xsZWN0b3IgdG8g
Y29sbGVjdCBzb29uLCBob3BpbmcgdG8gcmVjbGFpbSB0aGF0IGxhcmdlIG5vbi1HQyBtZW1vcnkK
IHJlZ2lvbi4KICovCi1KU19FWFBPUlQgdm9pZCBKU1JlcG9ydEV4dHJhTWVtb3J5Q29zdChKU0Nv
bnRleHRSZWYgY3R4LCBzaXplX3Qgc2l6ZSkgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19F
WFBPUlQgdm9pZCBKU1JlcG9ydEV4dHJhTWVtb3J5Q29zdChKU0NvbnRleHRSZWYgY3R4LCBzaXpl
X3Qgc2l6ZSkgSlNDX0FQSV9BVkFJTEFCTEUoMTBfNiwgN18wKTsKIAogSlNfRVhQT1JUIHZvaWQg
SlNEaXNhYmxlR0NUaW1lcih2b2lkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NvbnRleHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0
LmgKaW5kZXggMTk0ZTM1MmJmZTdhZTc1ZjIzNThjZWU2M2Q0NDhmZTFmYTI0ZDM4Mi4uNjliMjcw
MTRlOWVlOWM5YjMzMWYwN2FmMDYwODI4NzhmYjA5ZTczNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ29udGV4dC5oCkBAIC03OCw3ICs3OCw3IEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgxMF85
LCA3XzApCiBAcGFyYW0gc291cmNlVVJMIEEgVVJMIGZvciB0aGUgc2NyaXB0J3Mgc291cmNlIGZp
bGUuIFVzZWQgYnkgZGVidWdnZXJzIGFuZCB3aGVuIHJlcG9ydGluZyBleGNlcHRpb25zLiBUaGlz
IHBhcmFtZXRlciBpcyBpbmZvcm1hdGl2ZSBvbmx5OiBpdCBkb2VzIG5vdCBjaGFuZ2UgdGhlIGJl
aGF2aW9yIG9mIHRoZSBzY3JpcHQuCiBAcmVzdWx0IFRoZSBsYXN0IHZhbHVlIGdlbmVyYXRlZCBi
eSB0aGUgc2NyaXB0LgogKi8KLS0gKEpTVmFsdWUgKilldmFsdWF0ZVNjcmlwdDooTlNTdHJpbmcg
KilzY3JpcHQgd2l0aFNvdXJjZVVSTDooTlNVUkwgKilzb3VyY2VVUkwgTlNfQVZBSUxBQkxFKDEw
XzEwLCA4XzApOworLSAoSlNWYWx1ZSAqKWV2YWx1YXRlU2NyaXB0OihOU1N0cmluZyAqKXNjcmlw
dCB3aXRoU291cmNlVVJMOihOU1VSTCAqKXNvdXJjZVVSTCBKU0NfQVBJX0FWQUlMQUJMRSgxMF8x
MCwgOF8wKTsKIAogLyohCiBAbWV0aG9kZ3JvdXAgQ2FsbGJhY2sgQWNjZXNzb3JzCkBAIC0xMDEs
NyArMTAxLDcgQEAgTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzksIDdfMCkKICBhIGNhbGxiYWNrIGZy
b20gSmF2YVNjcmlwdCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiBuaWwuCiBAcmVzdWx0IFRoZSBj
dXJyZW50bHkgZXhlY3V0aW5nIEphdmFTY3JpcHQgZnVuY3Rpb24gb3IgbmlsIGlmIHRoZXJlIGlz
bid0IG9uZS4KICovCi0rIChKU1ZhbHVlICopY3VycmVudENhbGxlZSBOU19BVkFJTEFCTEUoMTBf
MTAsIDhfMCk7CisrIChKU1ZhbHVlICopY3VycmVudENhbGxlZSBKU0NfQVBJX0FWQUlMQUJMRSgx
MF8xMCwgOF8wKTsKIAogLyohCiBAbWV0aG9kCkBAIC0xNzYsNyArMTc2LDcgQEAgTlNfQ0xBU1Nf
QVZBSUxBQkxFKDEwXzksIDdfMCkKIEBwcm9wZXJ0eQogQGRpc2N1c3Npb24gTmFtZSBvZiB0aGUg
SlNDb250ZXh0LiBFeHBvc2VkIHdoZW4gcmVtb3RlIGRlYnVnZ2luZyB0aGUgY29udGV4dC4KICov
Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpuYW1lIE5TX0FWQUlMQUJMRSgxMF8xMCwgOF8w
KTsKK0Bwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKm5hbWUgSlNDX0FQSV9BVkFJTEFCTEUoMTBf
MTAsIDhfMCk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NvbnRleHRQcml2YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4
dFByaXZhdGUuaAppbmRleCA3ZDFkMGNiZGJiNDhjMTcwZWE3NmQyYmQ2MmQ3MzBjMjAzOWQ2YTk0
Li44NTk0Y2FiODk1ZjliYzEzZTlkZTM0MDFiNzlmZDAxZThkY2FlNjM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFByaXZhdGUuaApAQCAtMzYsMTkgKzM2LDE5IEBA
CiBAcHJvcGVydHkKIEBkaXNjdXNzaW9uIFJlbW90ZSBpbnNwZWN0aW9uIHNldHRpbmcgb2YgdGhl
IEpTQ29udGV4dC4gRGVmYXVsdCB2YWx1ZSBpcyBZRVMuCiAqLwotQHByb3BlcnR5IChzZXR0ZXI9
X3NldFJlbW90ZUluc3BlY3Rpb25FbmFibGVkOikgQk9PTCBfcmVtb3RlSW5zcGVjdGlvbkVuYWJs
ZWQgTlNfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworQHByb3BlcnR5IChzZXR0ZXI9X3NldFJlbW90
ZUluc3BlY3Rpb25FbmFibGVkOikgQk9PTCBfcmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQgSlNDX0FQ
SV9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CiAKIC8qIQogQHByb3BlcnR5CiBAZGlzY3Vzc2lvbiBT
ZXQgd2hldGhlciBvciBub3QgdGhlIG5hdGl2ZSBjYWxsIHN0YWNrIGlzIGluY2x1ZGVkIHdoZW4g
cmVwb3J0aW5nIGV4Y2VwdGlvbnMuIERlZmF1bHQgdmFsdWUgaXMgWUVTLgogKi8KLUBwcm9wZXJ0
eSAoc2V0dGVyPV9zZXRJbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRp
b25zOikgQk9PTCBfaW5jbHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9u
cyBOU19BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitAcHJvcGVydHkgKHNldHRlcj1fc2V0SW5jbHVk
ZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9uczopIEJPT0wgX2luY2x1ZGVz
TmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMgSlNDX0FQSV9BVkFJTEFCTEUo
MTBfMTAsIDhfMCk7CiAKIC8qIQogQHByb3BlcnR5CiBAZGlzY3Vzc2lvbiBTZXQgdGhlIHJ1biBs
b29wIHRoZSBXZWIgSW5zcGVjdG9yIGRlYnVnZ2VyIHNob3VsZCB1c2Ugd2hlbiBldmFsdWF0aW5n
IEphdmFTY3JpcHQgaW4gdGhlIEpTQ29udGV4dC4KICovCi1AcHJvcGVydHkgKHNldHRlcj1fc2V0
RGVidWdnZXJSdW5Mb29wOikgQ0ZSdW5Mb29wUmVmIF9kZWJ1Z2dlclJ1bkxvb3AgTlNfQVZBSUxB
QkxFKDEwXzEwLCA4XzApOworQHByb3BlcnR5IChzZXR0ZXI9X3NldERlYnVnZ2VyUnVuTG9vcDop
IENGUnVuTG9vcFJlZiBfZGVidWdnZXJSdW5Mb29wIEpTQ19BUElfQVZBSUxBQkxFKDEwXzEwLCA4
XzApOwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
b250ZXh0UmVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oCmlu
ZGV4IDBjODAwYmNlZDRhNmFiOWRjN2RhYmFhZGQzYTZlYmU2YjdmNWYwZjMuLmRiNjc3YzRjOTg3
MGFkOTM4NTE3ZGNmNjc1YWM5OTZjOTRkYzU2NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NvbnRleHRSZWYuaApAQCAtNDgsNyArNDgsNyBAQCBleHRlcm4gIkMiIHsKICBzeW5jaHJv
bml6YXRpb24gaXMgcmVxdWlyZWQuCiBAcmVzdWx0IFRoZSBjcmVhdGVkIEpTQ29udGV4dEdyb3Vw
LgogKi8KLUpTX0VYUE9SVCBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHcm91cENyZWF0ZSh2
b2lkKSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCBKU0NvbnRleHRHcm91cFJl
ZiBKU0NvbnRleHRHcm91cENyZWF0ZSh2b2lkKSBKU0NfQVBJX0FWQUlMQUJMRSgxMF82LCA3XzAp
OwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtNTYsMTQgKzU2LDE0IEBAIEpTX0VYUE9SVCBKU0NvbnRl
eHRHcm91cFJlZiBKU0NvbnRleHRHcm91cENyZWF0ZSh2b2lkKSBDRl9BVkFJTEFCTEUoMTBfNiwg
N18wKTsKIEBwYXJhbSBncm91cCBUaGUgSlNDb250ZXh0R3JvdXAgdG8gcmV0YWluLgogQHJlc3Vs
dCBBIEpTQ29udGV4dEdyb3VwIHRoYXQgaXMgdGhlIHNhbWUgYXMgZ3JvdXAuCiAqLwotSlNfRVhQ
T1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdyb3VwUmV0YWluKEpTQ29udGV4dEdyb3Vw
UmVmIGdyb3VwKSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCBKU0NvbnRleHRH
cm91cFJlZiBKU0NvbnRleHRHcm91cFJldGFpbihKU0NvbnRleHRHcm91cFJlZiBncm91cCkgSlND
X0FQSV9BVkFJTEFCTEUoMTBfNiwgN18wKTsKIAogLyohCiBAZnVuY3Rpb24KIEBhYnN0cmFjdCBS
ZWxlYXNlcyBhIEphdmFTY3JpcHQgY29udGV4dCBncm91cC4KIEBwYXJhbSBncm91cCBUaGUgSlND
b250ZXh0R3JvdXAgdG8gcmVsZWFzZS4KICovCi1KU19FWFBPUlQgdm9pZCBKU0NvbnRleHRHcm91
cFJlbGVhc2UoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXApIENGX0FWQUlMQUJMRSgxMF82LCA3XzAp
OworSlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3JvdXBSZWxlYXNlKEpTQ29udGV4dEdyb3VwUmVm
IGdyb3VwKSBKU0NfQVBJX0FWQUlMQUJMRSgxMF82LCA3XzApOwogCiAvKiEKIEBmdW5jdGlvbgpA
QCAtNzgsNyArNzgsNyBAQCBKU19FWFBPUlQgdm9pZCBKU0NvbnRleHRHcm91cFJlbGVhc2UoSlND
b250ZXh0R3JvdXBSZWYgZ3JvdXApIENGX0FWQUlMQUJMRSgxMF82LAogIE5VTEwgdG8gdXNlIHRo
ZSBkZWZhdWx0IG9iamVjdCBjbGFzcy4KIEByZXN1bHQgQSBKU0dsb2JhbENvbnRleHQgd2l0aCBh
IGdsb2JhbCBvYmplY3Qgb2YgY2xhc3MgZ2xvYmFsT2JqZWN0Q2xhc3MuCiAqLwotSlNfRVhQT1JU
IEpTR2xvYmFsQ29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVhdGUoSlNDbGFzc1JlZiBnbG9i
YWxPYmplY3RDbGFzcykgQ0ZfQVZBSUxBQkxFKDEwXzUsIDdfMCk7CitKU19FWFBPUlQgSlNHbG9i
YWxDb250ZXh0UmVmIEpTR2xvYmFsQ29udGV4dENyZWF0ZShKU0NsYXNzUmVmIGdsb2JhbE9iamVj
dENsYXNzKSBKU0NfQVBJX0FWQUlMQUJMRSgxMF81LCA3XzApOwogCiAvKiEKIEBmdW5jdGlvbgpA
QCAtOTIsNyArOTIsNyBAQCBKU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpTR2xvYmFsQ29u
dGV4dENyZWF0ZShKU0NsYXNzUmVmIGdsb2JhbE9iamVjdENsYXNzKQogQHJlc3VsdCBBIEpTR2xv
YmFsQ29udGV4dCB3aXRoIGEgZ2xvYmFsIG9iamVjdCBvZiBjbGFzcyBnbG9iYWxPYmplY3RDbGFz
cyBhbmQgYSBjb250ZXh0CiAgZ3JvdXAgZXF1YWwgdG8gZ3JvdXAuCiAqLwotSlNfRVhQT1JUIEpT
R2xvYmFsQ29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKEpTQ29udGV4dEdy
b3VwUmVmIGdyb3VwLCBKU0NsYXNzUmVmIGdsb2JhbE9iamVjdENsYXNzKSBDRl9BVkFJTEFCTEUo
MTBfNiwgN18wKTsKK0pTX0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgSlNHbG9iYWxDb250ZXh0
Q3JlYXRlSW5Hcm91cChKU0NvbnRleHRHcm91cFJlZiBncm91cCwgSlNDbGFzc1JlZiBnbG9iYWxP
YmplY3RDbGFzcykgSlNDX0FQSV9BVkFJTEFCTEUoMTBfNiwgN18wKTsKIAogLyohCiBAZnVuY3Rp
b24KQEAgLTEyMyw3ICsxMjMsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNDb250ZXh0R2V0
R2xvYmFsT2JqZWN0KEpTQ29udGV4dFJlZiBjdHgpOwogQHBhcmFtIGN0eCBUaGUgSlNDb250ZXh0
IHdob3NlIGdyb3VwIHlvdSB3YW50IHRvIGdldC4KIEByZXN1bHQgY3R4J3MgZ3JvdXAuCiAqLwot
SlNfRVhQT1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdldEdyb3VwKEpTQ29udGV4dFJl
ZiBjdHgpIENGX0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQT1JUIEpTQ29udGV4dEdyb3Vw
UmVmIEpTQ29udGV4dEdldEdyb3VwKEpTQ29udGV4dFJlZiBjdHgpIEpTQ19BUElfQVZBSUxBQkxF
KDEwXzYsIDdfMCk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC0xMzEsNyArMTMxLDcgQEAgSlNfRVhQ
T1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdldEdyb3VwKEpTQ29udGV4dFJlZiBjdHgp
IENGX0FWQUlMQUJMRSgxMF8KIEBwYXJhbSBjdHggVGhlIEpTQ29udGV4dCB3aG9zZSBnbG9iYWwg
Y29udGV4dCB5b3Ugd2FudCB0byBnZXQuCiBAcmVzdWx0IGN0eCdzIGdsb2JhbCBjb250ZXh0Lgog
Ki8KLUpTX0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgSlNDb250ZXh0R2V0R2xvYmFsQ29udGV4
dChKU0NvbnRleHRSZWYgY3R4KSBDRl9BVkFJTEFCTEUoMTBfNywgN18wKTsKK0pTX0VYUE9SVCBK
U0dsb2JhbENvbnRleHRSZWYgSlNDb250ZXh0R2V0R2xvYmFsQ29udGV4dChKU0NvbnRleHRSZWYg
Y3R4KSBKU0NfQVBJX0FWQUlMQUJMRSgxMF83LCA3XzApOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAt
MTQxLDcgKzE0MSw3IEBAIEpTX0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgSlNDb250ZXh0R2V0
R2xvYmFsQ29udGV4dChKU0NvbnRleHRSZWYgY3R4KSBDRl9BVkFJCiBAZGlzY3Vzc2lvbiBBIEpT
R2xvYmFsQ29udGV4dCdzIG5hbWUgaXMgZXhwb3NlZCBmb3IgcmVtb3RlIGRlYnVnZ2luZyB0byBt
YWtlIGl0CiBlYXNpZXIgdG8gaWRlbnRpZnkgdGhlIGNvbnRleHQgeW91IHdvdWxkIGxpa2UgdG8g
YXR0YWNoIHRvLgogKi8KLUpTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU0dsb2JhbENvbnRleHRDb3B5
TmFtZShKU0dsb2JhbENvbnRleHRSZWYgY3R4KSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitK
U19FWFBPUlQgSlNTdHJpbmdSZWYgSlNHbG9iYWxDb250ZXh0Q29weU5hbWUoSlNHbG9iYWxDb250
ZXh0UmVmIGN0eCkgSlNDX0FQSV9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CiAKIC8qIQogQGZ1bmN0
aW9uCkBAIC0xNDksNyArMTQ5LDcgQEAgSlNfRVhQT1JUIEpTU3RyaW5nUmVmIEpTR2xvYmFsQ29u
dGV4dENvcHlOYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpIENGX0FWQUlMQUIKIEBwYXJhbSBj
dHggVGhlIEpTR2xvYmFsQ29udGV4dCB0aGF0IHlvdSB3YW50IHRvIG5hbWUuCiBAcGFyYW0gbmFt
ZSBUaGUgcmVtb3RlIGRlYnVnZ2luZyBuYW1lIHRvIHNldCBvbiBjdHguCiAqLwotSlNfRVhQT1JU
IHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0TmFtZShKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBKU1N0
cmluZ1JlZiBuYW1lKSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitKU19FWFBPUlQgdm9pZCBK
U0dsb2JhbENvbnRleHRTZXROYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVm
IG5hbWUpIEpTQ19BUElfQVZBSUxBQkxFKDEwXzEwLCA4XzApOwogCiAjaWZkZWYgX19jcGx1c3Bs
dXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVm
SW50ZXJuYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmSW50ZXJu
YWwuaAppbmRleCA3OWQ3ZWI2ZjM5ZTdlMmNhOGY0YTliOTRmMjcyMjZkYjJmNzA1Mjk1Li4wZGY1
MmEwYjZlOTBiZDM2Y2Y1NTNhZDA3ZGRiNTdkYzgzMWE2ZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZkludGVybmFsLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWZJbnRlcm5hbC5oCkBAIC00Miw3ICs0Miw3IEBA
IGV4dGVybiAiQyIgewogQGFic3RyYWN0IEdldHMgdGhlIHJ1biBsb29wIHVzZWQgYnkgdGhlIFdl
YiBJbnNwZWN0b3IgZGVidWdnZXIgd2hlbiBldmFsdWF0aW5nIEphdmFTY3JpcHQgaW4gdGhpcyBj
b250ZXh0LgogQHBhcmFtIGN0eCBUaGUgSlNHbG9iYWxDb250ZXh0IHdob3NlIHNldHRpbmcgeW91
IHdhbnQgdG8gZ2V0LgogKi8KLUpTX0VYUE9SVCBDRlJ1bkxvb3BSZWYgSlNHbG9iYWxDb250ZXh0
R2V0RGVidWdnZXJSdW5Mb29wKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpIENGX0FWQUlMQUJMRSgx
MF8xMCwgOF8wKTsKK0pTX0VYUE9SVCBDRlJ1bkxvb3BSZWYgSlNHbG9iYWxDb250ZXh0R2V0RGVi
dWdnZXJSdW5Mb29wKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpIEpTQ19BUElfQVZBSUxBQkxFKDEw
XzEwLCA4XzApOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtNTAsNyArNTAsNyBAQCBKU19FWFBPUlQg
Q0ZSdW5Mb29wUmVmIEpTR2xvYmFsQ29udGV4dEdldERlYnVnZ2VyUnVuTG9vcChKU0dsb2JhbENv
bnRleHRSZWYgY3R4KQogQHBhcmFtIGN0eCBUaGUgSlNHbG9iYWxDb250ZXh0IHRoYXQgeW91IHdh
bnQgdG8gY2hhbmdlLgogQHBhcmFtIHJ1bkxvb3AgVGhlIG5ldyB2YWx1ZSBvZiB0aGUgc2V0dGlu
ZyBmb3IgdGhlIGNvbnRleHQuCiAqLwotSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0
RGVidWdnZXJSdW5Mb29wKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIENGUnVuTG9vcFJlZiBydW5M
b29wKSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitKU19FWFBPUlQgdm9pZCBKU0dsb2JhbENv
bnRleHRTZXREZWJ1Z2dlclJ1bkxvb3AoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwgQ0ZSdW5Mb29w
UmVmIHJ1bkxvb3ApIEpTQ19BUElfQVZBSUxBQkxFKDEwXzEwLCA4XzApOwogI2VuZGlmCiAKICNp
ZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NvbnRleHRSZWZQcml2YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4
dFJlZlByaXZhdGUuaAppbmRleCAxOTYwNGVhNzQ5MzdlZmRhOTY3Y2UzZGY1Nzc3ZDJhMTUxNGRh
OGRjLi4wNTczZDQwZGRjMzc0Y2IwZjkwZDAzM2FlODkzYmE0Mjc0NzU3N2FlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaApAQCAtNDQsNyAr
NDQsNyBAQCBleHRlcm4gIkMiIHsKIEBwYXJhbSBjdHggVGhlIEpTQ29udGV4dCB3aG9zZSBiYWNr
dHJhY2UgeW91IHdhbnQgdG8gZ2V0CiBAcmVzdWx0IEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGJh
Y2t0cmFjZQogKi8KLUpTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU0NvbnRleHRDcmVhdGVCYWNrdHJh
Y2UoSlNDb250ZXh0UmVmIGN0eCwgdW5zaWduZWQgbWF4U3RhY2tTaXplKSBDRl9BVkFJTEFCTEUo
MTBfNiwgN18wKTsKK0pTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU0NvbnRleHRDcmVhdGVCYWNrdHJh
Y2UoSlNDb250ZXh0UmVmIGN0eCwgdW5zaWduZWQgbWF4U3RhY2tTaXplKSBKU0NfQVBJX0FWQUlM
QUJMRSgxMF82LCA3XzApOwogICAgIAogCiAvKiEgCkBAIC04NSwxNCArODUsMTQgQEAgdHlwZWRl
ZiBib29sCiAgbmVlZCB0byBjYWxsIEpTQ29udGV4dEdyb3VwU2V0RXhlY3V0aW9uVGltZUxpbWl0
IGJlZm9yZSB5b3Ugc3RhcnQgZXhlY3V0aW5nCiAgYW55IHNjcmlwdHMuCiAqLwotSlNfRVhQT1JU
IHZvaWQgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGltaXQoSlNDb250ZXh0R3JvdXBS
ZWYgZ3JvdXAsIGRvdWJsZSBsaW1pdCwgSlNTaG91bGRUZXJtaW5hdGVDYWxsYmFjayBjYWxsYmFj
aywgdm9pZCogY29udGV4dCkgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgdm9p
ZCBKU0NvbnRleHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdChKU0NvbnRleHRHcm91cFJlZiBn
cm91cCwgZG91YmxlIGxpbWl0LCBKU1Nob3VsZFRlcm1pbmF0ZUNhbGxiYWNrIGNhbGxiYWNrLCB2
b2lkKiBjb250ZXh0KSBKU0NfQVBJX0FWQUlMQUJMRSgxMF82LCA3XzApOwogCiAvKiEKIEBmdW5j
dGlvbgogQGFic3RyYWN0IENsZWFycyB0aGUgc2NyaXB0IGV4ZWN1dGlvbiB0aW1lIGxpbWl0Lgog
QHBhcmFtIGdyb3VwIFRoZSBKYXZhU2NyaXB0IGNvbnRleHQgZ3JvdXAgdGhhdCB0aGUgdGltZSBs
aW1pdCBpcyBjbGVhcmVkIG9uLgogKi8KLUpTX0VYUE9SVCB2b2lkIEpTQ29udGV4dEdyb3VwQ2xl
YXJFeGVjdXRpb25UaW1lTGltaXQoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXApIENGX0FWQUlMQUJM
RSgxMF82LCA3XzApOworSlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3JvdXBDbGVhckV4ZWN1dGlv
blRpbWVMaW1pdChKU0NvbnRleHRHcm91cFJlZiBncm91cCkgSlNDX0FQSV9BVkFJTEFCTEUoMTBf
NiwgN18wKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTEwMSw3ICsxMDEsNyBAQCBKU19FWFBPUlQg
dm9pZCBKU0NvbnRleHRHcm91cENsZWFyRXhlY3V0aW9uVGltZUxpbWl0KEpTQ29udGV4dEdyb3Vw
UmVmIGdyb3VwKSBDRgogQHJlc3VsdCBUaGUgdmFsdWUgb2YgdGhlIHNldHRpbmcsIHRydWUgaWYg
cmVtb3RlIGluc3BlY3Rpb24gaXMgZW5hYmxlZCwgb3RoZXJ3aXNlIGZhbHNlLgogQGRpc2N1c3Np
b24gUmVtb3RlIGluc3BlY3Rpb24gaXMgdHJ1ZSBieSBkZWZhdWx0LgogKi8KLUpTX0VYUE9SVCBi
b29sIEpTR2xvYmFsQ29udGV4dEdldFJlbW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29u
dGV4dFJlZiBjdHgpIENGX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0pTX0VYUE9SVCBib29sIEpT
R2xvYmFsQ29udGV4dEdldFJlbW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4dFJl
ZiBjdHgpIEpTQ19BUElfQVZBSUxBQkxFKDEwXzEwLCA4XzApOwogCiAvKiEKIEBmdW5jdGlvbgpA
QCAtMTA5LDcgKzEwOSw3IEBAIEpTX0VYUE9SVCBib29sIEpTR2xvYmFsQ29udGV4dEdldFJlbW90
ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCiBAcGFyYW0gY3R4IFRo
ZSBKU0dsb2JhbENvbnRleHQgdGhhdCB5b3Ugd2FudCB0byBjaGFuZ2UuCiBAcGFyYW0gZW5hYmxl
ZCBUaGUgbmV3IHJlbW90ZSBpbnNwZWN0aW9uIGVuYWJsZWQgc2V0dGluZyBmb3IgdGhlIGNvbnRl
eHQuCiAqLwotSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0UmVtb3RlSW5zcGVjdGlv
bkVuYWJsZWQoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwgYm9vbCBlbmFibGVkKSBDRl9BVkFJTEFC
TEUoMTBfMTAsIDhfMCk7ICAgIAorSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0UmVt
b3RlSW5zcGVjdGlvbkVuYWJsZWQoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwgYm9vbCBlbmFibGVk
KSBKU0NfQVBJX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsgICAgCiAKIC8qIQogQGZ1bmN0aW9uCkBA
IC0xMTgsNyArMTE4LDcgQEAgSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0UmVtb3Rl
SW5zcGVjdGlvbkVuYWJsZWQoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwKIEByZXN1bHQgVGhlIHZh
bHVlIG9mIHRoZSBzZXR0aW5nLCB0cnVlIGlmIHJlbW90ZSBpbnNwZWN0aW9uIGlzIGVuYWJsZWQs
IG90aGVyd2lzZSBmYWxzZS4KIEBkaXNjdXNzaW9uIFRoaXMgc2V0dGluZyBpcyB0cnVlIGJ5IGRl
ZmF1bHQuCiAqLwotSlNfRVhQT1JUIGJvb2wgSlNHbG9iYWxDb250ZXh0R2V0SW5jbHVkZXNOYXRp
dmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucyhKU0dsb2JhbENvbnRleHRSZWYgY3R4
KSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitKU19FWFBPUlQgYm9vbCBKU0dsb2JhbENvbnRl
eHRHZXRJbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zKEpTR2xv
YmFsQ29udGV4dFJlZiBjdHgpIEpTQ19BUElfQVZBSUxBQkxFKDEwXzEwLCA4XzApOwogCiAvKiEK
IEBmdW5jdGlvbgpAQCAtMTI2LDcgKzEyNiw3IEBAIEpTX0VYUE9SVCBib29sIEpTR2xvYmFsQ29u
dGV4dEdldEluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMoCiBA
cGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgdGhhdCB5b3Ugd2FudCB0byBjaGFuZ2UuCiBA
cGFyYW0gaW5jbHVkZXNOYXRpdmVDYWxsU3RhY2sgVGhlIG5ldyB2YWx1ZSBvZiB0aGUgc2V0dGlu
ZyBmb3IgdGhlIGNvbnRleHQuCiAqLwotSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0
SW5jbHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucyhKU0dsb2JhbENv
bnRleHRSZWYgY3R4LCBib29sIGluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrKSBDRl9BVkFJTEFCTEUo
MTBfMTAsIDhfMCk7CitKU19FWFBPUlQgdm9pZCBKU0dsb2JhbENvbnRleHRTZXRJbmNsdWRlc05h
dGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zKEpTR2xvYmFsQ29udGV4dFJlZiBj
dHgsIGJvb2wgaW5jbHVkZXNOYXRpdmVDYWxsU3RhY2spIEpTQ19BUElfQVZBSUxBQkxFKDEwXzEw
LCA4XzApOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNNYW5hZ2VkVmFsdWUuaAppbmRleCAwMTA3M2ZhZDk3ZTcwYjc2YmQ2YjY2YTM3MzNhZjI2
MWNjNTI3NDljLi45NjIyZTU3NTUzZjRmN2IxZTQyOTVkOGU3NTEyYTUwODk4MTk3MDg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5oCkBAIC01Nyw3ICs1Nyw3
IEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCiBAcmVzdWx0IFRoZSBuZXcgSlNNYW5h
Z2VkVmFsdWUuCiAqLwogKyAoSlNNYW5hZ2VkVmFsdWUgKiltYW5hZ2VkVmFsdWVXaXRoVmFsdWU6
KEpTVmFsdWUgKil2YWx1ZTsKLSsgKEpTTWFuYWdlZFZhbHVlICopbWFuYWdlZFZhbHVlV2l0aFZh
bHVlOihKU1ZhbHVlICopdmFsdWUgYW5kT3duZXI6KGlkKW93bmVyIE5TX0FWQUlMQUJMRSgxMF8x
MCwgOF8wKTsKKysgKEpTTWFuYWdlZFZhbHVlICopbWFuYWdlZFZhbHVlV2l0aFZhbHVlOihKU1Zh
bHVlICopdmFsdWUgYW5kT3duZXI6KGlkKW93bmVyIEpTQ19BUElfQVZBSUxBQkxFKDEwXzEwLCA4
XzApOwogCiAvKiEKIEBtZXRob2QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJl
Zi5jcHAKaW5kZXggNGY4ODY4MTk2YTJiNzMxYWYyNjlkNDA4YWFmMDYyMTRjYWVjNzhkMy4uYThm
OTI2OTA3OTQ4ODZlZGM1YzhlYWM0MWQ0OTM1OWRlNjIwNmNlNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKQEAgLTM2Niw2ICszNjYsMTAwIEBAIHZvaWQgSlNP
YmplY3RTZXRQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpT
U3RyaW5nUmVmIHByb3BlCiAgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMs
IGV4Y2VwdGlvbik7CiB9CiAKK2Jvb2wgSlNPYmplY3RIYXNQcm9wZXJ0eUtleShKU0NvbnRleHRS
ZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYga2V5LCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pCit7CisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBleGVjID0g
dG9KUyhjdHgpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNMb2NrSG9sZGVyIGxv
Y2tlcih2bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworCisg
ICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOworICAgIElkZW50aWZpZXIgaWRl
bnQgPSB0b0pTKGV4ZWMsIGtleSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBpZiAoaGFuZGxl
RXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3Rh
dHVzOjpEaWRUaHJvdykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCByZXN1bHQg
PSBqc09iamVjdC0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpOworICAgIGhhbmRsZUV4Y2VwdGlv
bklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK0pTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBK
U09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYga2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
Cit7CisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0
eCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZt
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisKKyAgICBKU09i
amVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IHRv
SlMoZXhlYywga2V5KS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGlmIChoYW5kbGVFeGNlcHRp
b25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRp
ZFRocm93KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEpTVmFsdWUganNWYWx1ZSA9
IGpzT2JqZWN0LT5nZXQoZXhlYywgaWRlbnQpOworICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVk
KHNjb3BlLCBleGVjLCBleGNlcHRpb24pOworICAgIHJldHVybiB0b1JlZihleGVjLCBqc1ZhbHVl
KTsKK30KKwordm9pZCBKU09iamVjdFNldFByb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpT
T2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFsdWVSZWYgdmFsdWUsIEpTUHJv
cGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAg
ICBpZiAoIWN0eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCoganNPYmplY3Qg
PSB0b0pTKG9iamVjdCk7CisgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdG9KUyhleGVjLCB2YWx1ZSk7
CisKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gdG9KUyhleGVjLCBrZXkpLnRvUHJvcGVydHlLZXko
ZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNl
cHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGJvb2wgZG9lc05vdEhhdmVQcm9wZXJ0eSA9IGF0dHJpYnV0ZXMgJiYgIWpzT2JqZWN0LT5o
YXNQcm9wZXJ0eShleGVjLCBpZGVudCk7CisgICAgaWYgKExJS0VMWSghc2NvcGUuZXhjZXB0aW9u
KCkpKSB7CisgICAgICAgIGlmIChkb2VzTm90SGF2ZVByb3BlcnR5KSB7CisgICAgICAgICAgICBQ
cm9wZXJ0eURlc2NyaXB0b3IgZGVzYyhqc1ZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAg
IGpzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWZpbmVPd25Qcm9wZXJ0eShqc09iamVjdCwgZXhl
YywgaWRlbnQsIGRlc2MsIGZhbHNlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KGpzT2JqZWN0KTsKKyAgICAgICAgICAgIGpzT2JqZWN0LT5tZXRo
b2RUYWJsZSgpLT5wdXQoanNPYmplY3QsIGV4ZWMsIGlkZW50LCBqc1ZhbHVlLCBzbG90KTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywg
ZXhjZXB0aW9uKTsKK30KKworYm9vbCBKU09iamVjdERlbGV0ZVByb3BlcnR5S2V5KEpTQ29udGV4
dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoIWN0eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBFeGVjU3RhdGUqIGV4ZWMg
PSB0b0pTKGN0eCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIg
bG9ja2VyKHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisK
KyAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CisgICAgSWRlbnRpZmllciBp
ZGVudCA9IHRvSlMoZXhlYywga2V5KS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGlmIChoYW5k
bGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25T
dGF0dXM6OkRpZFRocm93KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHJlc3Vs
dCA9IGpzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShqc09iamVjdCwgZXhl
YywgaWRlbnQpOworICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNl
cHRpb24pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQ
cm9wZXJ0eUF0SW5kZXgoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCB1bnNp
Z25lZCBwcm9wZXJ0eUluZGV4LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgaWYgKCFj
dHgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaAppbmRleCA5NWQ1M2I3
ZjRlNThlOTZmMGNiYzMxNTk1YWY5YzQ2MTk3OGFhNDNkLi44ZjYzZmRjMzA3NDM1MDM2OTEwNjVi
NDA5MDAyNDhlYjA2YzFhMjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTT2JqZWN0UmVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJl
Zi5oCkBAIC00NDEsNyArNDQxLDcgQEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFr
ZUNvbnN0cnVjdG9yKEpTQ29udGV4dFJlZiBjdHgsIEpTQ2xhc3NSZWYganNDbGEKICBAZGlzY3Vz
c2lvbiBUaGUgYmVoYXZpb3Igb2YgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBleGFjdGx5IG1hdGNo
IHRoZSBiZWhhdmlvciBvZiB0aGUgYnVpbHQtaW4gQXJyYXkgY29uc3RydWN0b3IuIFNwZWNpZmlj
YWxseSwgaWYgb25lIGFyZ3VtZW50IAogIGlzIHN1cHBsaWVkLCB0aGlzIGZ1bmN0aW9uIHJldHVy
bnMgYW4gYXJyYXkgd2l0aCBvbmUgZWxlbWVudC4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0UmVm
IEpTT2JqZWN0TWFrZUFycmF5KEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50
LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENG
X0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFr
ZUFycmF5KEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1Zh
bHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxB
QkxFKDEwXzYsIDdfMCk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtNDUyLDcgKzQ1Miw3IEBAIEpT
X0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VBcnJheShKU0NvbnRleHRSZWYgY3R4LCBz
aXplX3QgYXJndW1lbnRDb3VudCwKICBAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpT
VmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVM
TCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1bHQgQSBK
U09iamVjdCB0aGF0IGlzIGEgRGF0ZS4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2Jq
ZWN0TWFrZURhdGUoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0
IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxB
QkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRGF0ZShK
U0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRSgxMF82
LCA3XzApOwogCiAvKiEKICBAZnVuY3Rpb24KQEAgLTQ2Myw3ICs0NjMsNyBAQCBKU19FWFBPUlQg
SlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRGF0ZShKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgYwogIEBwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJl
ZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlv
dSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCBBIEpTT2JqZWN0
IHRoYXQgaXMgYSBFcnJvci4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFr
ZUVycm9yKEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1Zh
bHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgx
MF82LCA3XzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUVycm9yKEpTQ29u
dGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKDEwXzYsIDdf
MCk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtNDc0LDcgKzQ3NCw3IEBAIEpTX0VYUE9SVCBKU09i
amVjdFJlZiBKU09iamVjdE1ha2VFcnJvcihKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1l
bnRDb3VudCwKICBAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4g
d2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8g
bm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1bHQgQSBKU09iamVjdCB0aGF0
IGlzIGEgUmVnRXhwLgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlUmVn
RXhwKEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVl
UmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF82
LCA3XzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVJlZ0V4cChKU0NvbnRl
eHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRSgxMF82LCA3XzAp
OwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtNTM2LDkgKzUzNiw5IEBAIEpTX0VYUE9SVCBKU1ZhbHVl
UmVmIEpTT2JqZWN0R2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2Jq
ZWN0LCBKCiBAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCiBAcGFyYW0g
b2JqZWN0IFRoZSBKU09iamVjdCB3aG9zZSBwcm9wZXJ0eSB5b3Ugd2FudCB0byBzZXQuCiBAcGFy
YW0gcHJvcGVydHlOYW1lIEEgSlNTdHJpbmcgY29udGFpbmluZyB0aGUgcHJvcGVydHkncyBuYW1l
LgotQHBhcmFtIHZhbHVlIEEgSlNWYWx1ZSB0byB1c2UgYXMgdGhlIHByb3BlcnR5J3MgdmFsdWUu
Ci1AcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8g
c3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUg
dG8gc3RvcmUgYW4gZXhjZXB0aW9uLgorQHBhcmFtIHZhbHVlIEEgSlNWYWx1ZVJlZiB0byB1c2Ug
YXMgdGhlIHByb3BlcnR5J3MgdmFsdWUuCiBAcGFyYW0gYXR0cmlidXRlcyBBIGxvZ2ljYWxseSBP
UmVkIHNldCBvZiBKU1Byb3BlcnR5QXR0cmlidXRlcyB0byBnaXZlIHRvIHRoZSBwcm9wZXJ0eS4K
K0BwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBz
dG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0
byBzdG9yZSBhbiBleGNlcHRpb24uCiAqLwogSlNfRVhQT1JUIHZvaWQgSlNPYmplY3RTZXRQcm9w
ZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmli
dXRlcywgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKIApAQCAtNTUzLDYgKzU1Myw1NCBAQCBKU19F
WFBPUlQgdm9pZCBKU09iamVjdFNldFByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0
UmVmIG9iamVjdCwgSlNTdHJpbgogKi8KIEpTX0VYUE9SVCBib29sIEpTT2JqZWN0RGVsZXRlUHJv
cGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAKKy8qIQorQGZ1bmN0aW9uCitA
YWJzdHJhY3QgVGVzdHMgd2hldGhlciBhbiBvYmplY3QgaGFzIGEgZ2l2ZW4gcHJvcGVydHkgdXNp
bmcgYSBKU1ZhbHVlUmVmIGFzIHRoZSBwcm9wZXJ0eSBrZXkuCitAcGFyYW0gb2JqZWN0IFRoZSBK
U09iamVjdCB0byB0ZXN0LgorQHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWlu
aW5nIHRoZSBwcm9wZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHku
CitAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8g
c3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUg
dG8gc3RvcmUgYW4gZXhjZXB0aW9uLgorQHJlc3VsdCB0cnVlIGlmIHRoZSBvYmplY3QgaGFzIGEg
cHJvcGVydHkgd2hvc2UgbmFtZSBtYXRjaGVzIHByb3BlcnR5S2V5LCBvdGhlcndpc2UgZmFsc2Uu
CitAZGlzY3Vzc2lvbiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHBlcmZvcm1pbmcgInBy
b3BlcnR5S2V5IGluIG9iamVjdCIgZnJvbSBKYXZhU2NyaXB0LgorKi8KK0pTX0VYUE9SVCBib29s
IEpTT2JqZWN0SGFzUHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2Jq
ZWN0LCBKU1ZhbHVlUmVmIHByb3BlcnR5S2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19B
UElfQVZBSUxBQkxFKDEwXzEzLCAxMV8wKTsKKworLyohCitAZnVuY3Rpb24KK0BhYnN0cmFjdCBH
ZXRzIGEgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QgdXNpbmcgYSBKU1ZhbHVlUmVmIGFzIHRoZSBw
cm9wZXJ0eSBrZXkuCitAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCitA
cGFyYW0gb2JqZWN0IFRoZSBKU09iamVjdCB3aG9zZSBwcm9wZXJ0eSB5b3Ugd2FudCB0byBnZXQu
CitAcGFyYW0gcHJvcGVydHlLZXkgQSBKU1ZhbHVlUmVmIGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5
IGtleSB0byB1c2Ugd2hlbiBsb29raW5nIHVwIHRoZSBwcm9wZXJ0eS4KK0BwYXJhbSBleGNlcHRp
b24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRp
b24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNl
cHRpb24uCitAcmVzdWx0IFRoZSBwcm9wZXJ0eSdzIHZhbHVlIGlmIG9iamVjdCBoYXMgdGhlIHBy
b3BlcnR5IGtleSwgb3RoZXJ3aXNlIHRoZSB1bmRlZmluZWQgdmFsdWUuCitAZGlzY3Vzc2lvbiBU
aGlzIGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHBlcmZvcm1pbmcgIm9iamVjdFtwcm9wZXJ0eUtl
eV0iIGZyb20gSmF2YVNjcmlwdC4KKyovCitKU19FWFBPUlQgSlNWYWx1ZVJlZiBKU09iamVjdEdl
dFByb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1
ZVJlZiBwcm9wZXJ0eUtleSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJM
RSgxMF8xMywgMTFfMCk7CisKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgU2V0cyBhIHByb3Bl
cnR5IG9uIGFuIG9iamVjdCB1c2luZyBhIEpTVmFsdWVSZWYgYXMgdGhlIHByb3BlcnR5IGtleS4K
K0BwYXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KK0BwYXJhbSBvYmplY3Qg
VGhlIEpTT2JqZWN0IHdob3NlIHByb3BlcnR5IHlvdSB3YW50IHRvIHNldC4KK0BwYXJhbSBwcm9w
ZXJ0eUtleSBBIEpTVmFsdWVSZWYgY29udGFpbmluZyB0aGUgcHJvcGVydHkga2V5IHRvIHVzZSB3
aGVuIGxvb2tpbmcgdXAgdGhlIHByb3BlcnR5LgorQHBhcmFtIHZhbHVlIEEgSlNWYWx1ZVJlZiB0
byB1c2UgYXMgdGhlIHByb3BlcnR5J3MgdmFsdWUuCitAcGFyYW0gYXR0cmlidXRlcyBBIGxvZ2lj
YWxseSBPUmVkIHNldCBvZiBKU1Byb3BlcnR5QXR0cmlidXRlcyB0byBnaXZlIHRvIHRoZSBwcm9w
ZXJ0eS4KK0BwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGlj
aCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3Qg
Y2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCitAZGlzY3Vzc2lvbiBUaGlzIGZ1bmN0aW9uIGlz
IHRoZSBzYW1lIGFzIHBlcmZvcm1pbmcgIm9iamVjdFtwcm9wZXJ0eUtleV0gPSB2YWx1ZSIgZnJv
bSBKYXZhU2NyaXB0LgorKi8KK0pTX0VYUE9SVCB2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHlLZXko
SlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIHByb3BlcnR5
S2V5LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1Byb3BlcnR5QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKDEwXzEzLCAxMV8wKTsKKwor
LyohCitAZnVuY3Rpb24KK0BhYnN0cmFjdCBEZWxldGVzIGEgcHJvcGVydHkgZnJvbSBhbiBvYmpl
Y3QgdXNpbmcgYSBKU1ZhbHVlUmVmIGFzIHRoZSBwcm9wZXJ0eSBrZXkuCitAcGFyYW0gY3R4IFRo
ZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCitAcGFyYW0gb2JqZWN0IFRoZSBKU09iamVjdCB3
aG9zZSBwcm9wZXJ0eSB5b3Ugd2FudCB0byBkZWxldGUuCitAcGFyYW0gcHJvcGVydHlLZXkgQSBK
U1ZhbHVlUmVmIGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5IGtleSB0byB1c2Ugd2hlbiBsb29raW5n
IHVwIHRoZSBwcm9wZXJ0eS4KK0BwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1
ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlm
IHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCitAcmVzdWx0IHRydWUgaWYg
dGhlIGRlbGV0ZSBvcGVyYXRpb24gc3VjY2VlZHMsIG90aGVyd2lzZSBmYWxzZSAoZm9yIGV4YW1w
bGUsIGlmIHRoZSBwcm9wZXJ0eSBoYXMgdGhlIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSBhdHRyaWJ1dGUgc2V0KS4KK0BkaXNjdXNzaW9uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUg
YXMgcGVyZm9ybWluZyAiZGVsZXRlIG9iamVjdFtwcm9wZXJ0eUtleV0iIGZyb20gSmF2YVNjcmlw
dC4KKyovCitKU19FWFBPUlQgYm9vbCBKU09iamVjdERlbGV0ZVByb3BlcnR5S2V5KEpTQ29udGV4
dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBwcm9wZXJ0eUtleSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRSgxMF8xMywgMTFfMCk7CisKIC8q
IQogQGZ1bmN0aW9uCiBAYWJzdHJhY3QgR2V0cyBhIHByb3BlcnR5IGZyb20gYW4gb2JqZWN0IGJ5
IG51bWVyaWMgaW5kZXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
UmVtb3RlSW5zcGVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTUmVtb3RlSW5z
cGVjdG9yLmgKaW5kZXggYzhiYWM2ZGQwZTRhNjQ4MDljYjM0NTBjZGJhNGMwMzk3YTQ4YTA1Ny4u
M2U5ZGYwMWQyNTk5NTM0MjdiZTk2ZDY3MDBjMjVmNWEzYmRhMjdkNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1JlbW90ZUluc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3IuaApAQCAtNDAsMTQgKzQwLDE0IEBA
IHR5cGVkZWYgcGlkX3QgSlNQcm9jZXNzSUQ7CiBleHRlcm4gIkMiIHsKICNlbmRpZgogCi1KU19F
WFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvckRpc2FibGVBdXRvU3RhcnQodm9pZCkgQ0ZfQVZB
SUxBQkxFKDEwXzExLCA5XzApOwotSlNfRVhQT1JUIHZvaWQgSlNSZW1vdGVJbnNwZWN0b3JTdGFy
dCh2b2lkKSBDRl9BVkFJTEFCTEUoMTBfMTEsIDlfMCk7Ci1KU19FWFBPUlQgdm9pZCBKU1JlbW90
ZUluc3BlY3RvclNldFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbihKU1Byb2Nlc3NJRCwgY29uc3Qg
dWludDhfdCogYXVkaXREYXRhLCBzaXplX3QgYXVkaXRMZW5ndGgpIENGX0FWQUlMQUJMRSgxMF8x
MSwgOV8wKTsKK0pTX0VYUE9SVCB2b2lkIEpTUmVtb3RlSW5zcGVjdG9yRGlzYWJsZUF1dG9TdGFy
dCh2b2lkKSBKU0NfQVBJX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsKK0pTX0VYUE9SVCB2b2lkIEpT
UmVtb3RlSW5zcGVjdG9yU3RhcnQodm9pZCkgSlNDX0FQSV9BVkFJTEFCTEUoMTBfMTEsIDlfMCk7
CitKU19FWFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvclNldFBhcmVudFByb2Nlc3NJbmZvcm1h
dGlvbihKU1Byb2Nlc3NJRCwgY29uc3QgdWludDhfdCogYXVkaXREYXRhLCBzaXplX3QgYXVkaXRM
ZW5ndGgpIEpTQ19BUElfQVZBSUxBQkxFKDEwXzExLCA5XzApOwogCi1KU19FWFBPUlQgdm9pZCBK
U1JlbW90ZUluc3BlY3RvclNldExvZ1RvU3lzdGVtQ29uc29sZShib29sKSBDRl9BVkFJTEFCTEUo
MTBfMTEsIDlfMCk7CitKU19FWFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvclNldExvZ1RvU3lz
dGVtQ29uc29sZShib29sKSBKU0NfQVBJX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsKIAotSlNfRVhQ
T1JUIGJvb2wgSlNSZW1vdGVJbnNwZWN0b3JHZXRJbnNwZWN0aW9uRW5hYmxlZEJ5RGVmYXVsdCh2
b2lkKSBDRl9BVkFJTEFCTEUoMTBfMTEsIDlfMCk7Ci1KU19FWFBPUlQgdm9pZCBKU1JlbW90ZUlu
c3BlY3RvclNldEluc3BlY3Rpb25FbmFibGVkQnlEZWZhdWx0KGJvb2wpIENGX0FWQUlMQUJMRSgx
MF8xMSwgOV8wKTsKK0pTX0VYUE9SVCBib29sIEpTUmVtb3RlSW5zcGVjdG9yR2V0SW5zcGVjdGlv
bkVuYWJsZWRCeURlZmF1bHQodm9pZCkgSlNDX0FQSV9BVkFJTEFCTEUoMTBfMTEsIDlfMCk7CitK
U19FWFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvclNldEluc3BlY3Rpb25FbmFibGVkQnlEZWZh
dWx0KGJvb2wpIEpTQ19BUElfQVZBSUxBQkxFKDEwXzExLCA5XzApOwogCiAjaWZkZWYgX19jcGx1
c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFy
cmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5oCmluZGV4IGUy
M2I3NmQyZWI0YWE1YTQ5OGI1NWViYTQ3Mzc0NjNmNmNiOTM5YWMuLmU3ODA5ZmIwNGEzOWE1ZGVj
ODc5MWJmYjkzYWUzM2RjMjIwZjE1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNUeXBlZEFycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5
cGVkQXJyYXkuaApAQCAtNDUsNyArNDUsNyBAQCBleHRlcm4gIkMiIHsKICBAcGFyYW0gZXhjZXB0
aW9uICAgIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhj
ZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4g
ZXhjZXB0aW9uLgogIEByZXN1bHQgICAgICAgICAgICAgQSBKU09iamVjdFJlZiB0aGF0IGlzIGEg
VHlwZWQgQXJyYXkgd2l0aCBhbGwgZWxlbWVudHMgc2V0IHRvIHplcm8gb3IgTlVMTCBpZiB0aGVy
ZSB3YXMgYW4gZXJyb3IuCiAgKi8KLUpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VU
eXBlZEFycmF5KEpTQ29udGV4dFJlZiBjdHgsIEpTVHlwZWRBcnJheVR5cGUgYXJyYXlUeXBlLCBz
aXplX3QgbGVuZ3RoLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwg
MTBfMCk7CitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheShKU0Nv
bnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgc2l6ZV90IGxlbmd0aCwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CiAK
IC8qIQogIEBmdW5jdGlvbgpAQCAtNjAsNyArNjAsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYg
SlNPYmplY3RNYWtlVHlwZWRBcnJheShKU0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBl
CiAgQHJlc3VsdCAgICAgICAgICAgICAgICAgICBBIEpTT2JqZWN0UmVmIFR5cGVkIEFycmF5IHdo
b3NlIGJhY2tpbmcgc3RvcmUgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBwb2ludGVkIHRvIGJ5IGJ5
dGVzIG9yIE5VTEwgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgogIEBkaXNjdXNzaW9uICAgICAgICAg
ICAgICAgSWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biBkdXJpbmcgdGhpcyBmdW5jdGlvbiB0aGUg
Ynl0ZXNEZWFsbG9jYXRvciB3aWxsIGFsd2F5cyBiZSBjYWxsZWQuCiAgKi8KLUpTX0VYUE9SVCBK
U09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEJ5dGVzTm9Db3B5KEpTQ29udGV4
dFJlZiBjdHgsIEpTVHlwZWRBcnJheVR5cGUgYXJyYXlUeXBlLCB2b2lkKiBieXRlcywgc2l6ZV90
IGJ5dGVMZW5ndGgsIEpTVHlwZWRBcnJheUJ5dGVzRGVhbGxvY2F0b3IgYnl0ZXNEZWFsbG9jYXRv
ciwgdm9pZCogZGVhbGxvY2F0b3JDb250ZXh0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FW
QUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtl
VHlwZWRBcnJheVdpdGhCeXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlU
eXBlIGFycmF5VHlwZSwgdm9pZCogYnl0ZXMsIHNpemVfdCBieXRlTGVuZ3RoLCBKU1R5cGVkQXJy
YXlCeXRlc0RlYWxsb2NhdG9yIGJ5dGVzRGVhbGxvY2F0b3IsIHZvaWQqIGRlYWxsb2NhdG9yQ29u
dGV4dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRSgxMF8xMiwgMTBf
MCk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtNzEsNyArNzEsNyBAQCBKU19FWFBPUlQgSlNPYmpl
Y3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29weShKU0NvbnRleHRSZWYg
Y3R4LCBKUwogIEBwYXJhbSBleGNlcHRpb24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBp
biB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBk
byBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgICBB
IEpTT2JqZWN0UmVmIHRoYXQgaXMgYSBUeXBlZCBBcnJheSBvciBOVUxMIGlmIHRoZXJlIHdhcyBh
biBlcnJvci4gVGhlIGJhY2tpbmcgc3RvcmUgb2YgdGhlIFR5cGVkIEFycmF5IHdpbGwgYmUgYnVm
ZmVyLgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdp
dGhBcnJheUJ1ZmZlcihKU0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5VHlw
ZSwgSlNPYmplY3RSZWYgYnVmZmVyLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJM
RSgxMF8xMiwgMTBfMCk7CitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRB
cnJheVdpdGhBcnJheUJ1ZmZlcihKU0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFy
cmF5VHlwZSwgSlNPYmplY3RSZWYgYnVmZmVyLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19B
UElfQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC04NCw3ICs4
NCw3IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEFy
cmF5QnVmZmVyKEpTQ29udGV4dFJlZiBjdHgsIEpTCiAgQHBhcmFtIGV4Y2VwdGlvbiAgICBBIHBv
aW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYg
YW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4K
ICBAcmVzdWx0ICAgICAgICAgICAgIEEgSlNPYmplY3RSZWYgdGhhdCBpcyBhIFR5cGVkIEFycmF5
IG9yIE5VTEwgaWYgdGhlcmUgd2FzIGFuIGVycm9yLiBUaGUgYmFja2luZyBzdG9yZSBvZiB0aGUg
VHlwZWQgQXJyYXkgd2lsbCBiZSBidWZmZXIuCiAgKi8KLUpTX0VYUE9SVCBKU09iamVjdFJlZiBK
U09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEFycmF5QnVmZmVyQW5kT2Zmc2V0KEpTQ29udGV4dFJl
ZiBjdHgsIEpTVHlwZWRBcnJheVR5cGUgYXJyYXlUeXBlLCBKU09iamVjdFJlZiBidWZmZXIsIHNp
emVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENG
X0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RN
YWtlVHlwZWRBcnJheVdpdGhBcnJheUJ1ZmZlckFuZE9mZnNldChKU0NvbnRleHRSZWYgY3R4LCBK
U1R5cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgSlNPYmplY3RSZWYgYnVmZmVyLCBzaXplX3QgYnl0
ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FW
QUlMQUJMRSgxMF8xMiwgMTBfMCk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtOTUsNyArOTUsNyBA
QCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhBcnJheUJ1
ZmZlckFuZE9mZnNldChKU0NvbnRleHRSZQogIEByZXN1bHQgICAgICAgICAgICAgQSBwb2ludGVy
IHRvIHRoZSByYXcgZGF0YSBidWZmZXIgdGhhdCBzZXJ2ZXMgYXMgb2JqZWN0J3MgYmFja2luZyBz
dG9yZSBvciBOVUxMIGlmIG9iamVjdCBpcyBub3QgYSBUeXBlZCBBcnJheSBvYmplY3QuCiAgQGRp
c2N1c3Npb24gICAgICAgICBUaGUgcG9pbnRlciByZXR1cm5lZCBieSB0aGlzIGZ1bmN0aW9uIGlz
IHRlbXBvcmFyeSBhbmQgaXMgbm90IGd1YXJhbnRlZWQgdG8gcmVtYWluIHZhbGlkIGFjcm9zcyBK
YXZhU2NyaXB0Q29yZSBBUEkgY2FsbHMuCiAgKi8KLUpTX0VYUE9SVCB2b2lkKiBKU09iamVjdEdl
dFR5cGVkQXJyYXlCeXRlc1B0cihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3Qs
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK0pTX0VY
UE9SVCB2b2lkKiBKU09iamVjdEdldFR5cGVkQXJyYXlCeXRlc1B0cihKU0NvbnRleHRSZWYgY3R4
LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJ
TEFCTEUoMTBfMTIsIDEwXzApOwogCiAvKiEKICBAZnVuY3Rpb24KQEAgLTEwNSw3ICsxMDUsNyBA
QCBKU19FWFBPUlQgdm9pZCogSlNPYmplY3RHZXRUeXBlZEFycmF5Qnl0ZXNQdHIoSlNDb250ZXh0
UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZQogIEBwYXJhbSBleGNlcHRpb24gICAgQSBwb2ludGVy
IHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4g
UGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJl
c3VsdCAgICAgICAgICAgICBUaGUgbGVuZ3RoIG9mIHRoZSBUeXBlZCBBcnJheSBvYmplY3Qgb3Ig
MCBpZiB0aGUgb2JqZWN0IGlzIG5vdCBhIFR5cGVkIEFycmF5IG9iamVjdC4KICAqLwotSlNfRVhQ
T1JUIHNpemVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlMZW5ndGgoSlNDb250ZXh0UmVmIGN0eCwg
SlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgx
MF8xMiwgMTBfMCk7CitKU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0VHlwZWRBcnJheUxlbmd0
aChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikgSlNDX0FQSV9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOwogCiAvKiEKICBAZnVuY3Rpb24K
QEAgLTExNSw3ICsxMTUsNyBAQCBKU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0VHlwZWRBcnJh
eUxlbmd0aChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplYwogIEBwYXJhbSBleGNl
cHRpb24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBl
eGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBh
biBleGNlcHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgICBUaGUgYnl0ZSBsZW5ndGggb2YgdGhl
IFR5cGVkIEFycmF5IG9iamVjdCBvciAwIGlmIHRoZSBvYmplY3QgaXMgbm90IGEgVHlwZWQgQXJy
YXkgb2JqZWN0LgogICovCi1KU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5
dGVMZW5ndGgoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBPUlQgc2l6ZV90
IEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5dGVMZW5ndGgoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmpl
Y3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKDEw
XzEyLCAxMF8wKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC0xMjUsNyArMTI1LDcgQEAgSlNfRVhQ
T1JUIHNpemVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlCeXRlTGVuZ3RoKEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIG8KICBAcGFyYW0gZXhjZXB0aW9uICAgIEEgcG9pbnRlciB0byBhIEpT
VmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVM
TCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1bHQgICAg
ICAgICAgICAgVGhlIGJ5dGUgb2Zmc2V0IG9mIHRoZSBUeXBlZCBBcnJheSBvYmplY3Qgb3IgMCBp
ZiB0aGUgb2JqZWN0IGlzIG5vdCBhIFR5cGVkIEFycmF5IG9iamVjdC4KICAqLwotSlNfRVhQT1JU
IHNpemVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KEpTQ29udGV4dFJlZiBjdHgs
IEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUo
MTBfMTIsIDEwXzApOworSlNfRVhQT1JUIHNpemVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CiAKIC8qIQogIEBmdW5j
dGlvbgpAQCAtMTM1LDcgKzEzNSw3IEBAIEpTX0VYUE9SVCBzaXplX3QgSlNPYmplY3RHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvCiAgQHBhcmFt
IGV4Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3Jl
IGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0
b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAgICAgIEEgSlNPYmplY3RSZWYgd2l0
aCBhIEpTVHlwZWRBcnJheVR5cGUgb2Yga0pTVHlwZWRBcnJheVR5cGVBcnJheUJ1ZmZlciBvciBO
VUxMIGlmIG9iamVjdCBpcyBub3QgYSBUeXBlZCBBcnJheS4KICAqLwotSlNfRVhQT1JUIEpTT2Jq
ZWN0UmVmIEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ1ZmZlcihKU0NvbnRleHRSZWYgY3R4LCBKU09i
amVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEy
LCAxMF8wKTsKK0pTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdEdldFR5cGVkQXJyYXlCdWZm
ZXIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKIAogLy8gLS0tLS0tLS0tLS0t
LSBBcnJheSBCdWZmZXIgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0KIApAQCAtMTUxLDcgKzE1MSw3
IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdEdldFR5cGVkQXJyYXlCdWZmZXIoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYKICBAcmVzdWx0ICAgICAgICAgICAgICAgICAgIEEg
SlNPYmplY3RSZWYgQXJyYXkgQnVmZmVyIHdob3NlIGJhY2tpbmcgc3RvcmUgaXMgdGhlIHNhbWUg
YXMgdGhlIG9uZSBwb2ludGVkIHRvIGJ5IGJ5dGVzIG9yIE5VTEwgaWYgdGhlcmUgd2FzIGFuIGVy
cm9yLgogIEBkaXNjdXNzaW9uICAgICAgICAgICAgICAgSWYgYW4gZXhjZXB0aW9uIGlzIHRocm93
biBkdXJpbmcgdGhpcyBmdW5jdGlvbiB0aGUgYnl0ZXNEZWFsbG9jYXRvciB3aWxsIGFsd2F5cyBi
ZSBjYWxsZWQuCiAgKi8KLUpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VBcnJheUJ1
ZmZlcldpdGhCeXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4LCB2b2lkKiBieXRlcywgc2l6ZV90
IGJ5dGVMZW5ndGgsIEpTVHlwZWRBcnJheUJ5dGVzRGVhbGxvY2F0b3IgYnl0ZXNEZWFsbG9jYXRv
ciwgdm9pZCogZGVhbGxvY2F0b3JDb250ZXh0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FW
QUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtl
QXJyYXlCdWZmZXJXaXRoQnl0ZXNOb0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgdm9pZCogYnl0ZXMs
IHNpemVfdCBieXRlTGVuZ3RoLCBKU1R5cGVkQXJyYXlCeXRlc0RlYWxsb2NhdG9yIGJ5dGVzRGVh
bGxvY2F0b3IsIHZvaWQqIGRlYWxsb2NhdG9yQ29udGV4dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KSBKU0NfQVBJX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAt
MTYxLDcgKzE2MSw3IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VBcnJheUJ1
ZmZlcldpdGhCeXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4LCB2CiAgQHJlc3VsdCAgICAgICAg
ICAgQSBwb2ludGVyIHRvIHRoZSByYXcgZGF0YSBidWZmZXIgdGhhdCBzZXJ2ZXMgYXMgb2JqZWN0
J3MgYmFja2luZyBzdG9yZSBvciBOVUxMIGlmIG9iamVjdCBpcyBub3QgYW4gQXJyYXkgQnVmZmVy
IG9iamVjdC4KICBAZGlzY3Vzc2lvbiAgICAgICBUaGUgcG9pbnRlciByZXR1cm5lZCBieSB0aGlz
IGZ1bmN0aW9uIGlzIHRlbXBvcmFyeSBhbmQgaXMgbm90IGd1YXJhbnRlZWQgdG8gcmVtYWluIHZh
bGlkIGFjcm9zcyBKYXZhU2NyaXB0Q29yZSBBUEkgY2FsbHMuCiAgKi8KLUpTX0VYUE9SVCB2b2lk
KiBKU09iamVjdEdldEFycmF5QnVmZmVyQnl0ZXNQdHIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmpl
Y3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwg
MTBfMCk7CitKU19FWFBPUlQgdm9pZCogSlNPYmplY3RHZXRBcnJheUJ1ZmZlckJ5dGVzUHRyKEpT
Q29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KSBKU0NfQVBJX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAt
MTcxLDcgKzE3MSw3IEBAIEpTX0VYUE9SVCB2b2lkKiBKU09iamVjdEdldEFycmF5QnVmZmVyQnl0
ZXNQdHIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqCiAgQHBhcmFtIGV4Y2VwdGlv
biAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRp
b24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNl
cHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgVGhlIG51bWJlciBvZiBieXRlcyBzdG9yZWQgaW4g
dGhlIGRhdGEgb2JqZWN0LgogICovCi1KU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0QXJyYXlC
dWZmZXJCeXRlTGVuZ3RoKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JU
IHNpemVfdCBKU09iamVjdEdldEFycmF5QnVmZmVyQnl0ZUxlbmd0aChKU0NvbnRleHRSZWYgY3R4
LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJ
TEFCTEUoMTBfMTIsIDEwXzApOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1ZhbHVlLmgKaW5kZXggMTQxMGRkNzRhMTdmOTcwNzA2ZTQ0ZGVkMjRjY2QxNzBj
MzQ3OWMyZS4uZDM3ZjIwZTI3NWY3MWRkZmM2YWJlYTQ5Y2EyZjg5YjVkYTcwNzA0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLmgKQEAgLTE0OCw2ICsxNDgsMTUgQEAgTlNfQ0xBU1Nf
QVZBSUxBQkxFKDEwXzksIDdfMCkKICovCiArIChKU1ZhbHVlICopdmFsdWVXaXRoVW5kZWZpbmVk
SW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OwogCisvKiEKKyBAbWV0aG9kCisgQGFic3Ry
YWN0IENyZWF0ZSBhIG5ldywgdW5pcXVlLCBzeW1ib2wgb2JqZWN0LgorIEBwYXJhbSBkZXNjcmlw
dGlvbiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIHN5bWJvbCBvYmplY3QgYmVpbmcgY3JlYXRlZC4K
KyBAcGFyYW0gY29udGV4dCBUaGUgSlNDb250ZXh0IHRvIHdoaWNoIHRoZSByZXN1bHRpbmcgSlNW
YWx1ZSBiZWxvbmdzLgorIEByZXN1bHQgVGhlIEpTVmFsdWUgcmVwcmVzZW50aW5nIGEgdW5pcXVl
IEphdmFTY3JpcHQgdmFsdWUgd2l0aCB0eXBlIHN5bWJvbC4KKyAqLworKyAoSlNWYWx1ZSAqKXZh
bHVlV2l0aE5ld1N5bWJvbEZyb21EZXNjcmlwdGlvbjooTlNTdHJpbmcgKilkZXNjcmlwdGlvbiBp
bkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQgSlNDX0FQSV9BVkFJTEFCTEUoMTBfMTMsIDEx
XzApOworCiAvKiEKIEBtZXRob2Rncm91cCBDb252ZXJ0aW5nIHRvIE9iamVjdGl2ZS1DIFR5cGVz
CiBAZGlzY3Vzc2lvbiBXaGVuIGNvbnZlcnRpbmcgYmV0d2VlbiBKYXZhU2NyaXB0IHZhbHVlcyBh
bmQgT2JqZWN0aXZlLUMgb2JqZWN0cyBhIGNvcHkgaXMKQEAgLTMwNSw0MyArMzE0LDUyIEBAIE5T
X0NMQVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCiAvKiEKIEBtZXRob2Rncm91cCBBY2Nlc3Npbmcg
UHJvcGVydGllcwogKi8KKworI2lmICEoZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAo
ZGVmaW5lZChfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMTAwMDApCisKIC8qIQogQG1ldGhvZAogQGFic3RyYWN0
IEFjY2VzcyBhIHByb3BlcnR5IG9mIGEgSlNWYWx1ZS4KIEByZXN1bHQgVGhlIEpTVmFsdWUgZm9y
IHRoZSByZXF1ZXN0ZWQgcHJvcGVydHkgb3IgdGhlIEpTVmFsdWUgPGNvZGU+dW5kZWZpbmVkPC9j
b2RlPiAKICBpZiB0aGUgcHJvcGVydHkgZG9lcyBub3QgZXhpc3QuCitAZGlzY3Vzc2lvbiBDb3Jy
ZXNwb25kcyB0byB0aGUgSmF2YVNjcmlwdCBvcGVyYXRpb24gPGNvZGU+b2JqZWN0W3Byb3BlcnR5
XTwvY29kZT4uIFBhc3MgYW4gTlNTdHJpbmcgKiB0byBhY2Nlc3MgYSBuYW1lZCBwcm9wZXJ0eS4g
T3RoZXIgdmFsaWQgcHJvcGVydGllcyBpbmNsdWRlIHN5bWJvbHMsIG51bWJlcnMsIGFuZCBzdHJp
bmdpZmlhYmxlIG9iamVjdHMuIEluIG1hY09TIDEwLjEzIGFuZCBpT1MgMTEgYW5kIGJlbG93LCAn
cHJvcGVydHknIHdhcyBhbiBOU1N0cmluZyAqLgogKi8KLS0gKEpTVmFsdWUgKil2YWx1ZUZvclBy
b3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVy
dHk6KGlkKXByb3BlcnR5OwogCiAvKiEKIEBtZXRob2QKIEBhYnN0cmFjdCBTZXQgYSBwcm9wZXJ0
eSBvbiBhIEpTVmFsdWUuCitAZGlzY3Vzc2lvbiBDb3JyZXNwb25kcyB0byB0aGUgSmF2YVNjcmlw
dCBvcGVyYXRpb24gPGNvZGU+b2JqZWN0W3Byb3BlcnR5XSA9IHZhbHVlPC9jb2RlPi4gUGFzcyBh
biBOU1N0cmluZyAqIHRvIGFjY2VzcyBhIG5hbWVkIHByb3BlcnR5LiBPdGhlciB2YWxpZCBwcm9w
ZXJ0aWVzIGluY2x1ZGUgc3ltYm9scywgbnVtYmVycywgYW5kIHN0cmluZ2lmaWFibGUgb2JqZWN0
cy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUyAxMSBhbmQgYmVsb3csICdwcm9wZXJ0eScgd2FzIGFu
IE5TU3RyaW5nICouCiAqLwotLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yUHJvcGVydHk6
KE5TU3RyaW5nICopcHJvcGVydHk7CistICh2b2lkKXNldFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9w
ZXJ0eTooaWQpcHJvcGVydHk7CiAKIC8qIQogQG1ldGhvZAogQGFic3RyYWN0IERlbGV0ZSBhIHBy
b3BlcnR5IGZyb20gYSBKU1ZhbHVlLgogQHJlc3VsdCBZRVMgaWYgZGVsZXRpb24gaXMgc3VjY2Vz
c2Z1bCwgTk8gb3RoZXJ3aXNlLgorQGRpc2N1c3Npb24gQ29ycmVzcG9uZHMgdG8gdGhlIEphdmFT
Y3JpcHQgb3BlcmF0aW9uIDxjb2RlPmRlbGV0ZSBvYmplY3RbcHJvcGVydHldPC9jb2RlPi4gUGFz
cyBhbiBOU1N0cmluZyAqIHRvIGFjY2VzcyBhIG5hbWVkIHByb3BlcnR5LiBPdGhlciB2YWxpZCBw
cm9wZXJ0aWVzIGluY2x1ZGUgc3ltYm9scywgbnVtYmVycywgYW5kIHN0cmluZ2lmaWFibGUgb2Jq
ZWN0cy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUyAxMSBhbmQgYmVsb3csICdwcm9wZXJ0eScgd2Fz
IGFuIE5TU3RyaW5nICouCiAqLwotLSAoQk9PTClkZWxldGVQcm9wZXJ0eTooTlNTdHJpbmcgKilw
cm9wZXJ0eTsKKy0gKEJPT0wpZGVsZXRlUHJvcGVydHk6KGlkKXByb3BlcnR5OwogCiAvKiEKIEBt
ZXRob2QKIEBhYnN0cmFjdCBDaGVjayBpZiBhIEpTVmFsdWUgaGFzIGEgcHJvcGVydHkuCiBAZGlz
Y3Vzc2lvbiBUaGlzIG1ldGhvZCBoYXMgdGhlIHNhbWUgZnVuY3Rpb24gYXMgdGhlIEphdmFTY3Jp
cHQgb3BlcmF0b3IgPGNvZGU+aW48L2NvZGU+LgogQHJlc3VsdCBSZXR1cm5zIFlFUyBpZiBwcm9w
ZXJ0eSBpcyBwcmVzZW50IG9uIHRoZSB2YWx1ZS4KK0BkaXNjdXNzaW9uIENvcnJlc3BvbmRzIHRv
IHRoZSBKYXZhU2NyaXB0IG9wZXJhdGlvbiA8Y29kZT5wcm9wZXJ0eSBpbiBvYmplY3Q8L2NvZGU+
LiBQYXNzIGFuIE5TU3RyaW5nICogdG8gYWNjZXNzIGEgbmFtZWQgcHJvcGVydHkuIE90aGVyIHZh
bGlkIHByb3BlcnRpZXMgaW5jbHVkZSBzeW1ib2xzLCBudW1iZXJzLCBhbmQgc3RyaW5naWZpYWJs
ZSBvYmplY3RzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9TIDExIGFuZCBiZWxvdywgJ3Byb3BlcnR5
JyB3YXMgYW4gTlNTdHJpbmcgKi4KICovCi0tIChCT09MKWhhc1Byb3BlcnR5OihOU1N0cmluZyAq
KXByb3BlcnR5OworLSAoQk9PTCloYXNQcm9wZXJ0eTooaWQpcHJvcGVydHk7CiAKIC8qIQogQG1l
dGhvZAogQGFic3RyYWN0IERlZmluZSBwcm9wZXJ0aWVzIHdpdGggY3VzdG9tIGRlc2NyaXB0b3Jz
IG9uIEpTVmFsdWVzLgogQGRpc2N1c3Npb24gVGhpcyBtZXRob2QgbWF5IGJlIHVzZWQgdG8gY3Jl
YXRlIGEgZGF0YSBvciBhY2Nlc3NvciBwcm9wZXJ0eSBvbiBhbiBvYmplY3QuCiAgVGhpcyBtZXRo
b2Qgb3BlcmF0ZXMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBPYmplY3QuZGVmaW5lUHJvcGVydHkg
bWV0aG9kIGluIHRoZSAKLSBKYXZhU2NyaXB0IGxhbmd1YWdlLgorIEphdmFTY3JpcHQgbGFuZ3Vh
Z2UuIFBhc3MgYW4gTlNTdHJpbmcgKiB0byBhY2Nlc3MgYSBuYW1lZCBwcm9wZXJ0eS4gT3RoZXIg
dmFsaWQgcHJvcGVydGllcyBpbmNsdWRlIHN5bWJvbHMsIG51bWJlcnMsIGFuZCBzdHJpbmdpZmlh
YmxlIG9iamVjdHMuIEluIG1hY09TIDEwLjEzIGFuZCBpT1MgMTEgYW5kIGJlbG93LCAncHJvcGVy
dHknIHdhcyBhbiBOU1N0cmluZyAqLgogKi8KLS0gKHZvaWQpZGVmaW5lUHJvcGVydHk6KE5TU3Ry
aW5nICopcHJvcGVydHkgZGVzY3JpcHRvcjooaWQpZGVzY3JpcHRvcjsKKy0gKHZvaWQpZGVmaW5l
UHJvcGVydHk6KGlkKXByb3BlcnR5IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0b3I7CisKKyNlbmRp
ZiAvLyAhKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMwMCkgfHwgKGRlZmluZWQoX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEIDwgMTEwMDAwKQogCiAvKiEKIEBtZXRob2QKQEAgLTQwMiwxNyArNDIwLDIzIEBAIE5TX0NM
QVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCiAqLwogQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBp
c09iamVjdDsKIAorLyohCitAcHJvcGVydHkKK0BhYnN0cmFjdCBDaGVjayBpZiBhIEpTVmFsdWUg
aXMgYSBzeW1ib2wuCisqLworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBpc1N5bWJvbCBKU0Nf
QVBJX0FWQUlMQUJMRSgxMF8xMywgMTFfMCk7CisKIC8qIQogQHByb3BlcnR5CiBAYWJzdHJhY3Qg
Q2hlY2sgaWYgYSBKU1ZhbHVlIGlzIGFuIGFycmF5LgogKi8gCi1AcHJvcGVydHkgKHJlYWRvbmx5
KSBCT09MIGlzQXJyYXkgTlNfQVZBSUxBQkxFKDEwXzExLCA5XzApOworQHByb3BlcnR5IChyZWFk
b25seSkgQk9PTCBpc0FycmF5IEpTQ19BUElfQVZBSUxBQkxFKDEwXzExLCA5XzApOwogCiAvKiEK
IEBwcm9wZXJ0eQogQGFic3RyYWN0IENoZWNrIGlmIGEgSlNWYWx1ZSBpcyBhIGRhdGUuCiAqLyAK
LUBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaXNEYXRlIE5TX0FWQUlMQUJMRSgxMF8xMSwgOV8w
KTsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaXNEYXRlIEpTQ19BUElfQVZBSUxBQkxFKDEw
XzExLCA5XzApOwogCiAvKiEKIEBtZXRob2QKQEAgLTU2OSwxMyArNTkzLDE2IEBAIENyZWF0ZSBh
IEpTVmFsdWUgZnJvbSBhIENHUmVjdC4KIEAvdGV4dGJsb2NrCiAKICBBbiBvYmplY3Qga2V5IHBh
c3NlZCBhcyBhIHN1YnNjcmlwdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhIEphdmFTY3JpcHQgdmFs
dWUsCi0gYW5kIHRoZW4gdGhlIHZhbHVlIGNvbnZlcnRlZCB0byBhIHN0cmluZyB1c2VkIGFzIGEg
cHJvcGVydHkgbmFtZS4KKyBhbmQgdGhlbiB0aGUgdmFsdWUgY29udmVydGVkIHRvIGEgc3RyaW5n
IHVzZWQgYXMgYSBwcm9wZXJ0eSBuYW1lLiBJbiBtYWNPUworIDEwLjEzIGFuZCBpT1MgMTEgYW5k
IGJlbG93LCB0aGUgPGNvZGU+a2V5PC9jb2RlPiBhcmd1bWVudCBvZgorIDxjb2RlPnNldE9iamVj
dDpvYmplY3QgZm9yS2V5ZWRTdWJzY3JpcHQ6a2V5PC9jb2RlPiB3YXMgcmVzdHJpY3RlZCB0byBh
bgorIDxjb2RlPk5TU3RyaW5nIDxOU0NvcHlpbmc+ICo8L2NvZGU+IGJ1dCB0aGF0IHJlc3RyaWN0
aW9uIHdhcyBuZXZlciB1c2VkLgogKi8KIEBpbnRlcmZhY2UgSlNWYWx1ZSAoU3Vic2NyaXB0U3Vw
cG9ydCkKIAogLSAoSlNWYWx1ZSAqKW9iamVjdEZvcktleWVkU3Vic2NyaXB0OihpZClrZXk7CiAt
IChKU1ZhbHVlICopb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OihOU1VJbnRlZ2VyKWluZGV4Owot
LSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBmb3JLZXllZFN1YnNjcmlwdDooTlNPYmplY3Qg
PE5TQ29weWluZz4gKilrZXk7CistICh2b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGZvcktleWVk
U3Vic2NyaXB0OihpZClrZXk7CiAtICh2b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGF0SW5kZXhl
ZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRleDsKIAogQGVuZApAQCAtNjYyLDYgKzY4OSw1MyBA
QCBKU19FWFBPUlQgZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JT
ZXRLZXk7CiAjaWZkZWYgX19jcGx1c3BsdXMKIH0gLy8gZXh0ZXJuICJDIgogI2VuZGlmCisgCisj
aWYgKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMwMCkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
IDwgMTEwMDAwKQorCisvLyBUaGVzZSBkZWNsYXJhdGlvbnMgcHJvdmlkZSBjb21wYXRpYmlsaXR5
IHdoZW4gdGFyZ2V0aW5nIFNES3MgZm9yIGxlZ2FjeSBPU3MuIEluIG1hY09TIDEwLjEzIGFuZCBp
T1MgMTEgYW5kIGJlbG93LCAncHJvcGVydHknIHdhcyBhbiBOU1N0cmluZyAqLgorQGludGVyZmFj
ZSBKU1ZhbHVlIChMZWdhY3lTREtTdXBwb3J0KQorCisvKiEKK0BtZXRob2QKK0BhYnN0cmFjdCBB
Y2Nlc3MgYSBwcm9wZXJ0eSBvZiBhIEpTVmFsdWUuCitAcmVzdWx0IFRoZSBKU1ZhbHVlIGZvciB0
aGUgcmVxdWVzdGVkIHByb3BlcnR5IG9yIHRoZSBKU1ZhbHVlIDxjb2RlPnVuZGVmaW5lZDwvY29k
ZT4KK2lmIHRoZSBwcm9wZXJ0eSBkb2VzIG5vdCBleGlzdC4KKyovCistIChKU1ZhbHVlICopdmFs
dWVGb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKworLyohCitAbWV0aG9kCitAYWJz
dHJhY3QgU2V0IGEgcHJvcGVydHkgb24gYSBKU1ZhbHVlLgorKi8KKy0gKHZvaWQpc2V0VmFsdWU6
KGlkKXZhbHVlIGZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworCisvKiEKKyBAbWV0
aG9kCisgQGFic3RyYWN0IERlbGV0ZSBhIHByb3BlcnR5IGZyb20gYSBKU1ZhbHVlLgorIEByZXN1
bHQgWUVTIGlmIGRlbGV0aW9uIGlzIHN1Y2Nlc3NmdWwsIE5PIG90aGVyd2lzZS4KKyAqLworLSAo
Qk9PTClkZWxldGVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKworLyohCisgQG1ldGhv
ZAorIEBhYnN0cmFjdCBDaGVjayBpZiBhIEpTVmFsdWUgaGFzIGEgcHJvcGVydHkuCisgQGRpc2N1
c3Npb24gVGhpcyBtZXRob2QgaGFzIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIHRoZSBKYXZhU2NyaXB0
IG9wZXJhdG9yIDxjb2RlPmluPC9jb2RlPi4KKyBAcmVzdWx0IFJldHVybnMgWUVTIGlmIHByb3Bl
cnR5IGlzIHByZXNlbnQgb24gdGhlIHZhbHVlLgorICovCistIChCT09MKWhhc1Byb3BlcnR5OihO
U1N0cmluZyAqKXByb3BlcnR5OworCisvKiEKKyBAbWV0aG9kCisgQGFic3RyYWN0IERlZmluZSBw
cm9wZXJ0aWVzIHdpdGggY3VzdG9tIGRlc2NyaXB0b3JzIG9uIEpTVmFsdWVzLgorIEBkaXNjdXNz
aW9uIFRoaXMgbWV0aG9kIG1heSBiZSB1c2VkIHRvIGNyZWF0ZSBhIGRhdGEgb3IgYWNjZXNzb3Ig
cHJvcGVydHkgb24gYW4gb2JqZWN0LgorIFRoaXMgbWV0aG9kIG9wZXJhdGVzIGluIGFjY29yZGFu
Y2Ugd2l0aCB0aGUgT2JqZWN0LmRlZmluZVByb3BlcnR5IG1ldGhvZCBpbiB0aGUKKyBKYXZhU2Ny
aXB0IGxhbmd1YWdlLgorICovCistICh2b2lkKWRlZmluZVByb3BlcnR5OihOU1N0cmluZyAqKXBy
b3BlcnR5IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0b3I7CisKK0BlbmQKKworI2VuZGlmCiAKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KaW5kZXggZThhZDUyZWY0M2Y3
ZjgzMGExMmUyZDFmM2M0ODRjYzA1ZTUzOWI0Yy4uODlhODliMzJlOTgyNjA2MmIzY2NmYmQ4N2Q0
Yzc4NzQ3MTI3NjAzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Zh
bHVlLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQpAQCAtMzks
NiArMzksNyBAQAogI2ltcG9ydCAiSlNDSlNWYWx1ZS5oIgogI2ltcG9ydCAiU3Ryb25nLmgiCiAj
aW1wb3J0ICJTdHJvbmdJbmxpbmVzLmgiCisjaW1wb3J0IDx3dGYvRXhwZWN0ZWQuaD4KICNpbXBv
cnQgPHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgogI2ltcG9ydCA8d3Rm
L0xvY2suaD4KQEAgLTEzNiw2ICsxMzcsMTMgQEAgTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5
RGVzY3JpcHRvclNldEtleSA9IEAic2V0IjsKICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRo
SlNWYWx1ZVJlZjpKU1ZhbHVlTWFrZVVuZGVmaW5lZChbY29udGV4dCBKU0dsb2JhbENvbnRleHRS
ZWZdKSBpbkNvbnRleHQ6Y29udGV4dF07CiB9CiAKKysgKEpTVmFsdWUgKil2YWx1ZVdpdGhOZXdT
eW1ib2xGcm9tRGVzY3JpcHRpb246KE5TU3RyaW5nICopZGVzY3JpcHRpb24gaW5Db250ZXh0OihK
U0NvbnRleHQgKiljb250ZXh0Cit7CisgICAgSlNTdHJpbmdSZWYgc3RyaW5nID0gSlNTdHJpbmdD
cmVhdGVXaXRoQ0ZTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oZGVzY3JpcHRp
b24pKTsKKyAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpKU1ZhbHVlTWFr
ZVN5bWJvbChbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBzdHJpbmcpIGluQ29udGV4dDpj
b250ZXh0XTsKK30KKworCiAtIChpZCl0b09iamVjdAogewogICAgIHJldHVybiB2YWx1ZVRvT2Jq
ZWN0KF9jb250ZXh0LCBtX3ZhbHVlKTsKQEAgLTIxOSw3NCArMjI3LDEwNiBAQCBOU1N0cmluZyAq
IGNvbnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yU2V0S2V5ID0gQCJzZXQiOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLS0gKEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihOU1N0cmluZyAqKXBy
b3BlcnR5TmFtZQordGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFtZSBOU1N0cmluZ0Z1
bmN0aW9uLCB0eXBlbmFtZSBKU1ZhbHVlRnVuY3Rpb24sIHR5cGVuYW1lLi4uIFR5cGVzPgoraW5s
aW5lIEV4cGVjdGVkPFJlc3VsdCwgSlNWYWx1ZVJlZj4gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9u
KE5TU3RyaW5nRnVuY3Rpb24gc3RyaW5nRnVuY3Rpb24sIEpTVmFsdWVGdW5jdGlvbiBqc0Z1bmN0
aW9uLCBKU1ZhbHVlKiB2YWx1ZSwgaWQgcHJvcGVydHlLZXksIFR5cGVzLi4uIGFyZ3VtZW50cykK
IHsKLSAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0
ID0gSlNWYWx1ZVRvT2JqZWN0KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVl
LCAmZXhjZXB0aW9uKTsKKyAgICBKU0NvbnRleHQqIGNvbnRleHQgPSBbdmFsdWUgY29udGV4dF07
CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOworICAgIEpTT2JqZWN0UmVmIG9i
amVjdCA9IEpTVmFsdWVUb09iamVjdChbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBbdmFs
dWUgSlNWYWx1ZVJlZl0sICZleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24pCi0gICAgICAg
IHJldHVybiBbX2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07Cisg
ICAgICAgIHJldHVybiBVbmV4cGVjdGVkPEpTVmFsdWVSZWY+KGV4Y2VwdGlvbik7CiAKLSAgICBK
U1N0cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVm
KXByb3BlcnR5TmFtZSk7Ci0gICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU09iamVjdEdldFByb3Bl
cnR5KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIG5hbWUsICZleGNlcHRp
b24pOwotICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKLSAgICBpZiAoZXhjZXB0aW9uKQotICAg
ICAgICByZXR1cm4gW19jb250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25d
OworICAgIFJlc3VsdCByZXN1bHQ7CisgICAgLy8gSWYgaXQncyBhIE5TU3RyaW5nIGFscmVhZHks
IHJlZHVjZSBpbmRpcmVjdGlvbiBhbmQganVzdCBwYXNzIHRoZSBOU1N0cmluZy4KKyAgICBpZiAo
W3Byb3BlcnR5S2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKKyAgICAgICAg
SlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKHJlaW50ZXJwcmV0
X2Nhc3Q8Q0ZTdHJpbmdSZWY+KHByb3BlcnR5S2V5KSk7CisgICAgICAgIHJlc3VsdCA9IHN0cmlu
Z0Z1bmN0aW9uKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgbmFtZSwgYXJn
dW1lbnRzLi4uLCAmZXhjZXB0aW9uKTsKKyAgICAgICAgSlNTdHJpbmdSZWxlYXNlKG5hbWUpOwor
ICAgIH0gZWxzZQorICAgICAgICByZXN1bHQgPSBqc0Z1bmN0aW9uKFtjb250ZXh0IEpTR2xvYmFs
Q29udGV4dFJlZl0sIG9iamVjdCwgW1tKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpwcm9wZXJ0eUtl
eSBpbkNvbnRleHQ6Y29udGV4dF0gSlNWYWx1ZVJlZl0sIGFyZ3VtZW50cy4uLiwgJmV4Y2VwdGlv
bik7CisgICAgcmV0dXJuIEV4cGVjdGVkPFJlc3VsdCwgSlNWYWx1ZVJlZj4ocmVzdWx0KTsKK30K
IAotICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOnJlc3VsdCBpbkNvbnRl
eHQ6X2NvbnRleHRdOworI2RlZmluZSBVU0VfTlNTVFJJTkdfRk9SX1BST1BFUlRZX0tFWSAoZGVm
aW5lZChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAoZGVmaW5lZChfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMTAw
MDApCisKKyNpZiBVU0VfTlNTVFJJTkdfRk9SX1BST1BFUlRZX0tFWQorLSAoSlNWYWx1ZSAqKXZh
bHVlRm9yUHJvcGVydHk6KE5TU3RyaW5nICopa2V5CisjZWxzZQorLSAoSlNWYWx1ZSAqKXZhbHVl
Rm9yUHJvcGVydHk6KGlkKWtleQorI2VuZGlmCit7CisgICAgYXV0byByZXN1bHQgPSBwZXJmb3Jt
UHJvcGVydHlPcGVyYXRpb248SlNWYWx1ZVJlZj4oSlNPYmplY3RHZXRQcm9wZXJ0eSwgSlNPYmpl
Y3RHZXRQcm9wZXJ0eUtleSwgc2VsZiwga2V5KTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAg
cmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246cmVzdWx0LmVycm9yKCld
OworCisgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6cmVzdWx0LnZhbHVl
KCkgaW5Db250ZXh0Ol9jb250ZXh0XTsKIH0KIAotLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUg
Zm9yUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lCisjaWYgVVNFX05TU1RSSU5HX0ZP
Ul9QUk9QRVJUWV9LRVkKKy0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZvclByb3BlcnR5OihO
U1N0cmluZyAqKWtleQorI2Vsc2UKKy0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZvclByb3Bl
cnR5OihpZClrZXkKKyNlbmRpZgogewotICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAg
ICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoW19jb250ZXh0IEpTR2xvYmFs
Q29udGV4dFJlZl0sIG1fdmFsdWUsICZleGNlcHRpb24pOwotICAgIGlmIChleGNlcHRpb24pIHsK
LSAgICAgICAgW19jb250ZXh0IG5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQorICAgIC8vIFdlIG5lZWQgVW5pdCBidXNpbmVzcyBiZWNhdXNlIHZvaWQg
Y2FuJ3QgYmUgYXNzaWduZWQgdG8gaW4gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uIGFuZCBJIGRv
bid0IHdhbnQgdG8gZHVwbGljYXRlIHRoZSBjb2RlLi4uCisgICAgdXNpbmcgVW5pdCA9IHN0ZDo6
dHVwbGU8PjsKKyAgICBhdXRvIHN0cmluZ1NldFByb3BlcnR5ID0gW10gKGF1dG8uLi4gYXJncykg
LT4gVW5pdCB7CisgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoYXJncy4uLik7CisgICAgICAg
IHJldHVybiB7IH07CisgICAgfTsKIAotICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0Ny
ZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsKLSAgICBKU09iamVj
dFNldFByb3BlcnR5KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIG5hbWUs
IG9iamVjdFRvVmFsdWUoX2NvbnRleHQsIHZhbHVlKSwgMCwgJmV4Y2VwdGlvbik7Ci0gICAgSlNT
dHJpbmdSZWxlYXNlKG5hbWUpOwotICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgW19jb250
ZXh0IG5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOworICAgIGF1dG8ganNWYWx1ZVNldFByb3Bl
cnR5ID0gW10gKGF1dG8uLi4gYXJncykgLT4gVW5pdCB7CisgICAgICAgIEpTT2JqZWN0U2V0UHJv
cGVydHlLZXkoYXJncy4uLik7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfTsKKworICAgIGF1
dG8gcmVzdWx0ID0gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uPFVuaXQ+KHN0cmluZ1NldFByb3Bl
cnR5LCBqc1ZhbHVlU2V0UHJvcGVydHksIHNlbGYsIGtleSwgb2JqZWN0VG9WYWx1ZShfY29udGV4
dCwgdmFsdWUpLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUpOworICAgIGlmICghcmVzdWx0KSB7
CisgICAgICAgIFtfY29udGV4dCBub3RpZnlFeGNlcHRpb246cmVzdWx0LmVycm9yKCldOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogfQogCi0tIChCT09MKWRlbGV0ZVByb3BlcnR5OihOU1N0cmlu
ZyAqKXByb3BlcnR5TmFtZQorI2lmIFVTRV9OU1NUUklOR19GT1JfUFJPUEVSVFlfS0VZCistIChC
T09MKWRlbGV0ZVByb3BlcnR5OihOU1N0cmluZyAqKWtleQorI2Vsc2UKKy0gKEJPT0wpZGVsZXRl
UHJvcGVydHk6KGlkKWtleQorI2VuZGlmCiB7Ci0gICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAw
OwotICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChbX2NvbnRleHQgSlNH
bG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7Ci0gICAgaWYgKGV4Y2VwdGlv
bikKLSAgICAgICAgcmV0dXJuIFtfY29udGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNl
cHRpb25dOwotCi0gICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3Ry
aW5nKChDRlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwotICAgIEJPT0wgcmVzdWx0ID0gSlNPYmpl
Y3REZWxldGVQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgb2JqZWN0LCBu
YW1lLCAmZXhjZXB0aW9uKTsKLSAgICBKU1N0cmluZ1JlbGVhc2UobmFtZSk7Ci0gICAgaWYgKGV4
Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFtfY29udGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlv
bjpleGNlcHRpb25dOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBFeHBlY3RlZDxCT09MLCBK
U1ZhbHVlUmVmPiByZXN1bHQgPSBwZXJmb3JtUHJvcGVydHlPcGVyYXRpb248Qk9PTD4oSlNPYmpl
Y3REZWxldGVQcm9wZXJ0eSwgSlNPYmplY3REZWxldGVQcm9wZXJ0eUtleSwgc2VsZiwga2V5KTsK
KyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFtfY29udGV4dCBib29sRnJvbU5vdGlm
eUV4Y2VwdGlvbjpyZXN1bHQuZXJyb3IoKV07CisgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpOwog
fQogCi0tIChCT09MKWhhc1Byb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQorI2lmIFVT
RV9OU1NUUklOR19GT1JfUFJPUEVSVFlfS0VZCistIChCT09MKWhhc1Byb3BlcnR5OihOU1N0cmlu
ZyAqKWtleQorI2Vsc2UKKy0gKEJPT0wpaGFzUHJvcGVydHk6KGlkKWtleQorI2VuZGlmCiB7Ci0g
ICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpT
VmFsdWVUb09iamVjdChbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSwgJmV4
Y2VwdGlvbik7Ci0gICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFtfY29udGV4dCBi
b29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOworICAgIC8vIFRoZSBDLWFwaSBkb2Vz
bid0IHJldHVybiBhbiBleGNlcHRpb24gdmFsdWUgZm9yIHRoZSBzdHJpbmcgdmVyc2lvbiBvZiBo
YXMgcHJvcGVydHkuCisgICAgYXV0byBzdHJpbmdIYXNQcm9wZXJ0eSA9IFtdIChKU0NvbnRleHRS
ZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZVJlZiopIC0+IEJPT0wgeworICAgICAgICByZXR1cm4gSlNPYmplY3RIYXNQcm9wZXJ0eShj
dHgsIG9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICB9OwogCi0gICAgSlNTdHJpbmdSZWYgbmFt
ZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUp
OwotICAgIEJPT0wgcmVzdWx0ID0gSlNPYmplY3RIYXNQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9i
YWxDb250ZXh0UmVmXSwgb2JqZWN0LCBuYW1lKTsKLSAgICBKU1N0cmluZ1JlbGVhc2UobmFtZSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBFeHBlY3RlZDxCT09MLCBKU1ZhbHVlUmVmPiByZXN1
bHQgPSBwZXJmb3JtUHJvcGVydHlPcGVyYXRpb248Qk9PTD4oc3RyaW5nSGFzUHJvcGVydHksIEpT
T2JqZWN0SGFzUHJvcGVydHlLZXksIHNlbGYsIGtleSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAg
ICAgIHJldHVybiBbX2NvbnRleHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246cmVzdWx0LmVycm9y
KCldOworICAgIHJldHVybiByZXN1bHQudmFsdWUoKTsKIH0KIAotLSAodm9pZClkZWZpbmVQcm9w
ZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eSBkZXNjcmlwdG9yOihpZClkZXNjcmlwdG9yCisjaWYg
VVNFX05TU1RSSU5HX0ZPUl9QUk9QRVJUWV9LRVkKKy0gKHZvaWQpZGVmaW5lUHJvcGVydHk6KE5T
U3RyaW5nICopa2V5IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0b3IKKyNlbHNlCistICh2b2lkKWRl
ZmluZVByb3BlcnR5OihpZClrZXkgZGVzY3JpcHRvcjooaWQpZGVzY3JpcHRvcgorI2VuZGlmCiB7
Ci0gICAgW1tfY29udGV4dCBnbG9iYWxPYmplY3RdW0AiT2JqZWN0Il0gaW52b2tlTWV0aG9kOkAi
ZGVmaW5lUHJvcGVydHkiIHdpdGhBcmd1bWVudHM6QFsgc2VsZiwgcHJvcGVydHksIGRlc2NyaXB0
b3IgXV07CisgICAgW1tfY29udGV4dCBnbG9iYWxPYmplY3RdW0AiT2JqZWN0Il0gaW52b2tlTWV0
aG9kOkAiZGVmaW5lUHJvcGVydHkiIHdpdGhBcmd1bWVudHM6QFsgc2VsZiwga2V5LCBkZXNjcmlw
dG9yIF1dOwogfQogCisjdW5kZWYgVVNFX05TU1RSSU5HX0ZPUl9QUk9QRVJUWV9LRVkKKwogLSAo
SlNWYWx1ZSAqKXZhbHVlQXRJbmRleDooTlNVSW50ZWdlcilpbmRleAogewogICAgIC8vIFByb3Bl
cnRpZXMgdGhhdCBhcmUgaGlnaGVyIHRoYW4gYW4gdW5zaWduZWQgdmFsdWUgY2FuIGhvbGQgYXJl
IGNvbnZlcnRlZCB0byBhIGRvdWJsZSB0aGVuIGluc2VydGVkIGFzIGEgbm9ybWFsIHByb3BlcnR5
LgpAQCAtMzU3LDYgKzM5NywxMSBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlw
dG9yU2V0S2V5ID0gQCJzZXQiOwogICAgIHJldHVybiBKU1ZhbHVlSXNPYmplY3QoW19jb250ZXh0
IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUpOwogfQogCistIChCT09MKWlzU3ltYm9sCit7
CisgICAgcmV0dXJuIEpTVmFsdWVJc1N5bWJvbChbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVm
XSwgbV92YWx1ZSk7Cit9CisKIC0gKEJPT0wpaXNBcnJheQogewogICAgIHJldHVybiBKU1ZhbHVl
SXNBcnJheShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSk7CkBAIC01Mzks
MTMgKzU4NCw3IEBAIE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXkg
PSBAInNldCI7CiAKIC0gKEpTVmFsdWUgKilvYmplY3RGb3JLZXllZFN1YnNjcmlwdDooaWQpa2V5
CiB7Ci0gICAgaWYgKCFba2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAg
ICAgICAga2V5ID0gW1tKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDprZXkgaW5Db250ZXh0Ol9jb250
ZXh0XSB0b1N0cmluZ107Ci0gICAgICAgIGlmICgha2V5KQotICAgICAgICAgICAgcmV0dXJuIFtK
U1ZhbHVlIHZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4dDpfY29udGV4dF07Ci0gICAgfQotCi0g
ICAgcmV0dXJuIFtzZWxmIHZhbHVlRm9yUHJvcGVydHk6KE5TU3RyaW5nICopa2V5XTsKKyAgICBy
ZXR1cm4gW3NlbGYgdmFsdWVGb3JQcm9wZXJ0eTprZXldOwogfQogCiAtIChKU1ZhbHVlICopb2Jq
ZWN0QXRJbmRleGVkU3Vic2NyaXB0OihOU1VJbnRlZ2VyKWluZGV4CkBAIC01NTMsMTUgKzU5Miw5
IEBAIE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXkgPSBAInNldCI7
CiAgICAgcmV0dXJuIFtzZWxmIHZhbHVlQXRJbmRleDppbmRleF07CiB9CiAKLS0gKHZvaWQpc2V0
T2JqZWN0OihpZClvYmplY3QgZm9yS2V5ZWRTdWJzY3JpcHQ6KE5TT2JqZWN0IDxOU0NvcHlpbmc+
ICopa2V5CistICh2b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGZvcktleWVkU3Vic2NyaXB0Oihp
ZClrZXkKIHsKLSAgICBpZiAoIVtrZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkg
ewotICAgICAgICBrZXkgPSBbW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OmtleSBpbkNvbnRleHQ6
X2NvbnRleHRdIHRvU3RyaW5nXTsKLSAgICAgICAgaWYgKCFrZXkpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgW3NlbGYgc2V0VmFsdWU6b2JqZWN0IGZvclByb3BlcnR5OihOU1N0
cmluZyAqKWtleV07CisgICAgW3NlbGYgc2V0VmFsdWU6b2JqZWN0IGZvclByb3BlcnR5OmtleV07
CiB9CiAKIC0gKHZvaWQpc2V0T2JqZWN0OihpZClvYmplY3QgYXRJbmRleGVkU3Vic2NyaXB0OihO
U1VJbnRlZ2VyKWluZGV4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWVSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcApp
bmRleCAwMGJmMDYxYWRhMmQxNmMxNzU4NzRkOGQ4MTgwNjkzNDU3ZmE5ODMyLi5lYzA4NmMzYjg1
NDA4MDVlMzQ3YjFhMTFmNGY2YWMyOTNmZWRlNDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNWYWx1ZVJlZi5jcHAKQEAgLTg2LDYgKzg2LDggQEAgc3RhdGljIGJvb2wgZXZlcm5vdGVI
YWNrTmVlZGVkKCkKICAgICAgICAgcmV0dXJuIGtKU1R5cGVOdW1iZXI7CiAgICAgaWYgKGpzVmFs
dWUuaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIGtKU1R5cGVTdHJpbmc7CisgICAgaWYgKGpz
VmFsdWUuaXNTeW1ib2woKSkKKyAgICAgICAgcmV0dXJuIGtKU1R5cGVTeW1ib2w7CiAgICAgQVNT
RVJUKGpzVmFsdWUuaXNPYmplY3QoKSk7CiAgICAgcmV0dXJuIGtKU1R5cGVPYmplY3Q7CiB9CkBA
IC0xNjIsNiArMTY0LDE4IEBAIGJvb2wgSlNWYWx1ZUlzT2JqZWN0KEpTQ29udGV4dFJlZiBjdHgs
IEpTVmFsdWVSZWYgdmFsdWUpCiAgICAgcmV0dXJuIHRvSlMoZXhlYywgdmFsdWUpLmlzT2JqZWN0
KCk7CiB9CiAKK2Jvb2wgSlNWYWx1ZUlzU3ltYm9sKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVS
ZWYgdmFsdWUpCit7CisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBleGVjID0g
dG9KUyhjdHgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisKKyAgICByZXR1cm4g
dG9KUyhleGVjLCB2YWx1ZSkuaXNTeW1ib2woKTsKK30KKwogYm9vbCBKU1ZhbHVlSXNBcnJheShK
U0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQogewogICAgIGlmICghY3R4KSB7CkBA
IC0zMjAsNiArMzM0LDIyIEBAIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VOdW1iZXIoSlNDb250ZXh0
UmVmIGN0eCwgZG91YmxlIHZhbHVlKQogICAgIHJldHVybiB0b1JlZihleGVjLCBqc051bWJlcihw
dXJpZnlOYU4odmFsdWUpKSk7CiB9CiAKK0pTVmFsdWVSZWYgSlNWYWx1ZU1ha2VTeW1ib2woSlND
b250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgZGVzY3JpcHRpb24pCit7CisgICAgaWYgKCFjdHgp
IHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgSlNMb2NrSG9s
ZGVyIGxvY2tlcihleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRShl
eGVjLT52bSgpKTsKKworICAgIEpTU3RyaW5nKiBqc0Rlc2NyaXB0aW9uID0ganNTdHJpbmcoZXhl
YywgZGVzY3JpcHRpb24gPyBkZXNjcmlwdGlvbi0+c3RyaW5nKCkgOiBTdHJpbmcoKSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gdG9SZWYo
ZXhlYywgU3ltYm9sOjpjcmVhdGUoZXhlYywganNEZXNjcmlwdGlvbikpOworfQorCiBKU1ZhbHVl
UmVmIEpTVmFsdWVNYWtlU3RyaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHN0cmlu
ZykKIHsKICAgICBpZiAoIWN0eCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1ZhbHVlUmVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYu
aAppbmRleCA5ODE1ZGU3ODNjMGFlZTA3M2UzYTQ0OGJkMGM3Y2FkZDRhOTUyYzA2Li43NTdmYjBm
YzkxMjg1YjEyOTBhYTNiNmJiNzVhYjllYTAxNThhZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTVmFsdWVSZWYuaApAQCAtNDIsNiArNDIsNyBAQAogQGNvbnN0YW50ICAgICBrSlNUeXBl
TnVtYmVyICAgICBBIHByaW1pdGl2ZSBudW1iZXIgdmFsdWUuCiBAY29uc3RhbnQgICAgIGtKU1R5
cGVTdHJpbmcgICAgIEEgcHJpbWl0aXZlIHN0cmluZyB2YWx1ZS4KIEBjb25zdGFudCAgICAga0pT
VHlwZU9iamVjdCAgICAgQW4gb2JqZWN0IHZhbHVlIChtZWFuaW5nIHRoYXQgdGhpcyBKU1ZhbHVl
UmVmIGlzIGEgSlNPYmplY3RSZWYpLgorQGNvbnN0YW50ICAgICBrSlNUeXBlU3ltYm9sICAgICBB
IHByaW1pdGl2ZSBzeW1ib2wgdmFsdWUuCiAqLwogdHlwZWRlZiBlbnVtIHsKICAgICBrSlNUeXBl
VW5kZWZpbmVkLApAQCAtNDksNyArNTAsOCBAQCB0eXBlZGVmIGVudW0gewogICAgIGtKU1R5cGVC
b29sZWFuLAogICAgIGtKU1R5cGVOdW1iZXIsCiAgICAga0pTVHlwZVN0cmluZywKLSAgICBrSlNU
eXBlT2JqZWN0CisgICAga0pTVHlwZU9iamVjdCwKKyAgICBrSlNUeXBlU3ltYm9sIEpTQ19BUElf
QVZBSUxBQkxFKEpTQ19NQUNfVEJBLCBKU0NfSU9TX1RCQSkKIH0gSlNUeXBlOwogCiAvKiEKQEAg
LTgwLDcgKzgyLDcgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBrSlNUeXBlZEFycmF5VHlwZUZsb2F0
NjRBcnJheSwKICAgICBrSlNUeXBlZEFycmF5VHlwZUFycmF5QnVmZmVyLAogICAgIGtKU1R5cGVk
QXJyYXlUeXBlTm9uZSwKLX0gSlNUeXBlZEFycmF5VHlwZSBDRl9FTlVNX0FWQUlMQUJMRSgxMF8x
MiwgMTBfMCk7Cit9IEpTVHlwZWRBcnJheVR5cGUgSlNDX0FQSV9BVkFJTEFCTEUoMTBfMTIsIDEw
XzApOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewpAQCAtMTQ5LDYgKzE1MSwx
NiBAQCBKU19FWFBPUlQgYm9vbCBKU1ZhbHVlSXNTdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNW
YWx1ZVJlZiB2YWx1ZSk7CiAqLwogSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzT2JqZWN0KEpTQ29u
dGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpOwogCisvKiEKK0BmdW5jdGlvbgorQGFic3Ry
YWN0ICAgICAgIFRlc3RzIHdoZXRoZXIgYSBKYXZhU2NyaXB0IHZhbHVlJ3MgdHlwZSBpcyB0aGUg
c3ltYm9sIHR5cGUuCitAcGFyYW0gY3R4ICAgICAgVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVz
ZS4KK0BwYXJhbSB2YWx1ZSAgICBUaGUgSlNWYWx1ZSB0byB0ZXN0LgorQHJlc3VsdCAgICAgICAg
IHRydWUgaWYgdmFsdWUncyB0eXBlIGlzIHRoZSBzeW1ib2wgdHlwZSwgb3RoZXJ3aXNlIGZhbHNl
LgorKi8KK0pTX0VYUE9SVCBib29sIEpTVmFsdWVJc1N5bWJvbChKU0NvbnRleHRSZWYgY3R4LCBK
U1ZhbHVlUmVmIHZhbHVlKSBKU0NfQVBJX0FWQUlMQUJMRSgxMF8xMywgMTFfMCk7CisKKwogLyoh
CiBAZnVuY3Rpb24KIEBhYnN0cmFjdCBUZXN0cyB3aGV0aGVyIGEgSmF2YVNjcmlwdCB2YWx1ZSBp
cyBhbiBvYmplY3Qgd2l0aCBhIGdpdmVuIGNsYXNzIGluIGl0cyBjbGFzcyBjaGFpbi4KQEAgLTE2
Niw3ICsxNzgsNyBAQCBKU19FWFBPUlQgYm9vbCBKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKEpTQ29u
dGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUsIEpTQ2xhcwogQHBhcmFtIHZhbHVlICAgIFRo
ZSBKU1ZhbHVlIHRvIHRlc3QuCiBAcmVzdWx0ICAgICAgICAgdHJ1ZSBpZiB2YWx1ZSBpcyBhbiBh
cnJheSwgb3RoZXJ3aXNlIGZhbHNlLgogKi8KLUpTX0VYUE9SVCBib29sIEpTVmFsdWVJc0FycmF5
KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpIENGX0FWQUlMQUJMRSgxMF8xMSwg
OV8wKTsKK0pTX0VYUE9SVCBib29sIEpTVmFsdWVJc0FycmF5KEpTQ29udGV4dFJlZiBjdHgsIEpT
VmFsdWVSZWYgdmFsdWUpIEpTQ19BUElfQVZBSUxBQkxFKDEwXzExLCA5XzApOwogCiAvKiEKIEBm
dW5jdGlvbgpAQCAtMTc1LDcgKzE4Nyw3IEBAIEpTX0VYUE9SVCBib29sIEpTVmFsdWVJc0FycmF5
KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpIENGX0FWQUlMQUJMRSgxCiBAcGFy
YW0gdmFsdWUgICAgVGhlIEpTVmFsdWUgdG8gdGVzdC4KIEByZXN1bHQgICAgICAgICB0cnVlIGlm
IHZhbHVlIGlzIGEgZGF0ZSwgb3RoZXJ3aXNlIGZhbHNlLgogKi8KLUpTX0VYUE9SVCBib29sIEpT
VmFsdWVJc0RhdGUoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkgQ0ZfQVZBSUxB
QkxFKDEwXzExLCA5XzApOworSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzRGF0ZShKU0NvbnRleHRS
ZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKSBKU0NfQVBJX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsK
IAogLyohCiBAZnVuY3Rpb24KQEAgLTE4NSw3ICsxOTcsNyBAQCBKU19FWFBPUlQgYm9vbCBKU1Zh
bHVlSXNEYXRlKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpIENGX0FWQUlMQUJM
RSgxMAogQHBhcmFtIGV4Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdo
aWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5v
dCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KIEByZXN1bHQgICAgICAgICAgICAgQSB2YWx1
ZSBvZiB0eXBlIEpTVHlwZWRBcnJheVR5cGUgdGhhdCBpZGVudGlmaWVzIHZhbHVlJ3MgVHlwZWQg
QXJyYXkgdHlwZSwgb3Iga0pTVHlwZWRBcnJheVR5cGVOb25lIGlmIHRoZSB2YWx1ZSBpcyBub3Qg
YSBUeXBlZCBBcnJheSBvYmplY3QuCiAgKi8KLUpTX0VYUE9SVCBKU1R5cGVkQXJyYXlUeXBlIEpT
VmFsdWVHZXRUeXBlZEFycmF5VHlwZShKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVl
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19F
WFBPUlQgSlNUeXBlZEFycmF5VHlwZSBKU1ZhbHVlR2V0VHlwZWRBcnJheVR5cGUoSlNDb250ZXh0
UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJ
X0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CiAKIC8qIENvbXBhcmluZyB2YWx1ZXMgKi8KIApAQCAt
MjU3LDYgKzI2OSwxNSBAQCBKU19FWFBPUlQgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZUJvb2xlYW4o
SlNDb250ZXh0UmVmIGN0eCwgYm9vbCBib29sZWFuKTsKICovCiBKU19FWFBPUlQgSlNWYWx1ZVJl
ZiBKU1ZhbHVlTWFrZU51bWJlcihKU0NvbnRleHRSZWYgY3R4LCBkb3VibGUgbnVtYmVyKTsKIAor
LyohCitAZnVuY3Rpb24KK0BhYnN0cmFjdCAgICAgICAgICAgIENyZWF0ZXMgYSBKYXZhU2NyaXB0
IHZhbHVlIG9mIHRoZSBzeW1ib2wgdHlwZS4KK0BwYXJhbSBjdHggICAgICAgICAgIFRoZSBleGVj
dXRpb24gY29udGV4dCB0byB1c2UuCitAcGFyYW0gZGVzY3JpcHRpb24gICBBIGRlc2NyaXB0aW9u
IG9mIHRoZSBuZXdseSBjcmVhdGVkIHN5bWJvbCB2YWx1ZS4KK0ByZXN1bHQgICAgICAgICAgICAg
IEEgdW5pcXVlIEpTVmFsdWUgb2YgdGhlIHN5bWJvbCB0eXBlLCB3aG9zZSBkZXNjcmlwdGlvbiBt
YXRjaGVzIHRoZSBvbmUgcHJvdmlkZWQuCisqLworSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNWYWx1
ZU1ha2VTeW1ib2woSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgZGVzY3JpcHRpb24pOwor
CiAvKiEKIEBmdW5jdGlvbgogQGFic3RyYWN0ICAgICAgIENyZWF0ZXMgYSBKYXZhU2NyaXB0IHZh
bHVlIG9mIHRoZSBzdHJpbmcgdHlwZS4KQEAgLTI3Niw3ICsyOTcsNyBAQCBKU19FWFBPUlQgSlNW
YWx1ZVJlZiBKU1ZhbHVlTWFrZVN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBz
dHJpbmcpOwogIEBwYXJhbSBzdHJpbmcgICBUaGUgSlNTdHJpbmcgY29udGFpbmluZyB0aGUgSlNP
TiBzdHJpbmcgdG8gYmUgcGFyc2VkLgogIEByZXN1bHQgICAgICAgICBBIEpTVmFsdWUgY29udGFp
bmluZyB0aGUgcGFyc2VkIHZhbHVlLCBvciBOVUxMIGlmIHRoZSBpbnB1dCBpcyBpbnZhbGlkLgog
ICovCi1KU19FWFBPUlQgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZUZyb21KU09OU3RyaW5nKEpTQ29u
dGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHN0cmluZykgQ0ZfQVZBSUxBQkxFKDEwXzcsIDdfMCk7
CitKU19FWFBPUlQgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZUZyb21KU09OU3RyaW5nKEpTQ29udGV4
dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHN0cmluZykgSlNDX0FQSV9BVkFJTEFCTEUoMTBfNywgN18w
KTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC0yODcsNyArMzA4LDcgQEAgSlNfRVhQT1JUIEpTVmFs
dWVSZWYgSlNWYWx1ZU1ha2VGcm9tSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmlu
Z1JlZiBzdHIKICBAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4g
d2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8g
bm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1bHQgICAgICAgICBBIEpTU3Ry
aW5nIHdpdGggdGhlIHJlc3VsdCBvZiBzZXJpYWxpemF0aW9uLCBvciBOVUxMIGlmIGFuIGV4Y2Vw
dGlvbiBpcyB0aHJvd24uCiAgKi8KLUpTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU1ZhbHVlQ3JlYXRl
SlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlLCB1bnNpZ25lZCBp
bmRlbnQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzcsIDdfMCk7CitK
U19FWFBPUlQgSlNTdHJpbmdSZWYgSlNWYWx1ZUNyZWF0ZUpTT05TdHJpbmcoSlNDb250ZXh0UmVm
IGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgdW5zaWduZWQgaW5kZW50LCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKDEwXzcsIDdfMCk7CiAKIC8qIENvbnZlcnRpbmcgdG8g
cHJpbWl0aXZlIHZhbHVlcyAqLwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL1dlYktpdEF2YWlsYWJpbGl0eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9XZWJL
aXRBdmFpbGFiaWxpdHkuaAppbmRleCA4MjI3NTIwM2RjOTgwMTgzMzFhOTFiYjk1YjlkNmRiMTZl
NTlmOWFhLi4wZjZhZmI2YjFkYmQ2MTk4MWRlZGVkMGExZTViMjRjOGZkY2I1M2YyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL1dlYktpdEF2YWlsYWJpbGl0eS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvV2ViS2l0QXZhaWxhYmlsaXR5LmgKQEAgLTY5LDE1
ICs2OSwxMiBAQAogI2VuZGlmIC8qICFUQVJHRVRfT1NfSVBIT05FICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPCAxMDExMDAgKi8KIAogI2lmIGRlZmluZWQoQlVJTERJTkdfR1RL
X18pCi0jdW5kZWYgQ0ZfQVZBSUxBQkxFCi0jZGVmaW5lIENGX0FWQUlMQUJMRShfbWFjLCBfaW9z
KQotI3VuZGVmIENGX0VOVU1fQVZBSUxBQkxFCi0jZGVmaW5lIENGX0VOVU1fQVZBSUxBQkxFKF9t
YWMsIF9pb3MpCisjdW5kZWYgSlNDX0FQSV9BVkFJTEFCTEUKKyNkZWZpbmUgSlNDX0FQSV9BVkFJ
TEFCTEUoLi4uKQogI2VuZGlmCiAKICNlbHNlCi0jZGVmaW5lIENGX0FWQUlMQUJMRShfbWFjLCBf
aW9zKQotI2RlZmluZSBDRl9FTlVNX0FWQUlMQUJMRShfbWFjLCBfaW9zKQorI2RlZmluZSBKU0Nf
QVBJX0FWQUlMQUJMRSguLi4pCiAjZW5kaWYKIAogI2VuZGlmIC8qIF9fV2ViS2l0QXZhaWxhYmls
aXR5X18gKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3Vy
cmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL0N1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lm1tCmluZGV4IDUzMTg4
ZmJhODhmOTU0MjdjOGFlOTMzOWFhYzg4ZDBjNjhhMTdlYjEuLmJkN2U4YTY4NjA3ZTVmOGRkNzhk
OTQ2YmRkYTc0YTYxZDI1ZjdlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9DdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVz
dC5tbQpAQCAtMjMsNiArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDdXJyZW50VGhpc0luc2lk
ZUJsb2NrR2V0dGVyVGVzdC5oIgogCiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VzdG9tR2xvYmFsT2JqZWN0Q2xh
c3NUZXN0LmMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0N1c3RvbUdsb2JhbE9i
amVjdENsYXNzVGVzdC5jCmluZGV4IGFjNTQ3MWE2NzQxYmZmOTNjNzAwYmYzYjNhYWM2ZWQzODc0
OWYwYmYuLjlmZmUyMzNmNGI3OTZmNWEwYjk1YjM3NGE0ODNiMDE0ZWQ1YmRkOTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VzdG9tR2xvYmFsT2JqZWN0Q2xh
c3NUZXN0LmMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9DdXN0b21HbG9i
YWxPYmplY3RDbGFzc1Rlc3QuYwpAQCAtMjMsNiArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCisjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ3VzdG9tR2xvYmFsT2JqZWN0Q2xh
c3NUZXN0LmgiCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZlByaXZhdGUu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRGF0ZVRlc3Rz
Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9EYXRlVGVzdHMubW0KaW5kZXgg
MmJkYTNhZGE2YjE1OGUwMTA4YWVjNWY0MmU3NjUzOTczMGVjMmVkOS4uNjY1MjE3N2RlNDE3YjEy
ZWU5NGRlODgzYjhmYjBiZDcwOWRkNjcyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS90ZXN0cy9EYXRlVGVzdHMubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy9EYXRlVGVzdHMubW0KQEAgLTIzLDYgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkRh
dGVUZXN0cy5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNFeHBvcnRUZXN0cy5tbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNFeHBvcnRUZXN0cy5tbQppbmRleCAxY2Vj
OTM5NzljNDE2ZjRjMGYwNDkwNWVlNzQ3NmU3ODY0ZDg0MjUyLi5kZmRjOTVmNDdiYzc3NWIwOGIz
NjY3M2QwYmJiZmU2YmNlMzQxYjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL0pTRXhwb3J0VGVzdHMubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy9KU0V4cG9ydFRlc3RzLm1tCkBAIC0yMyw2ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0
ICJKU0V4cG9ydFRlc3RzLmgiCiAKICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU05vZGUuYyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNOb2RlLmMKaW5kZXggZDBhMGRjM2VjNzIzNzI1N2ZhMTgw
ZDA1MTRmNzRjNmFkMmU0YjViNy4uYmMwMDQwYWU2YmE0MDk4NTM4MzhjYWVhZDZhMjM4NGVjOTk5
MDA0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU05vZGUu
YworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZS5jCkBAIC0yMyw3
ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaW5jbHVkZSA8d3RmL1BsYXRmb3Jt
Lmg+CisjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRl
ICJKU05vZGVMaXN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL0pTTm9kZUxpc3QuYyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNOb2Rl
TGlzdC5jCmluZGV4IGYwMzdlMDk0YTA5ZTFhMjI2MDQ0ZWVkMWYyM2QwYTUxODYxYTNmNGIuLjk5
YTMyOTUxOGU2YTlhMWNmYjEyNjc2NDczOWEwYjY5Y2ZhNWQ0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNOb2RlTGlzdC5jCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNOb2RlTGlzdC5jCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKICAqLwogCi0jaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSAi
Y29uZmlnLmgiCiAKICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJKU05vZGVMaXN0Lmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL05vZGUuYyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9kZS5jCmluZGV4IGRiNjg3ZTk1MmYxYTlk
OGMxMzRiOTA2NzdkMjlhNjQwNmQ4ZGIxYTIuLjhmN2QwNmIyYWE0YWRlMjY5ZDYxZWZjNjFjMDE4
NGNjYzMxOTVhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
Tm9kZS5jCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9kZS5jCkBAIC0y
Myw3ICsyMyw5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiTm9kZS5oIgorCiAjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8c3Rk
bGliLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9k
ZUxpc3QuYyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9kZUxpc3QuYwppbmRl
eCA2OWY0Y2Q1YzQ4NzMxMmJkNjM5OTYzNGZiMDY4NGExMjI2NjRkYzE4Li4yMmQzODdjMGQ0MjI2
ZmJhZDExOTdjNjQ4MzFjZDU3YWYzMWFmZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL05vZGVMaXN0LmMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy9Ob2RlTGlzdC5jCkBAIC0yMyw2ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAq
LwogCisjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKIAogI2luY2x1
ZGUgPHN0ZGxpYi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy9taW5pZG9tLmMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL21pbmlkb20uYwpp
bmRleCAwMmI0MWE5YzdmOWRhMTEzYjAwM2Q0ZjkxOWE0MjA4ZDM4OWI3OGJkLi40MWYxOGNkZjcy
OTA0MzY5MGNmZTc3M2JhNDBkOGI1YjQ0Y2E3MDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL21pbmlkb20uYworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL21pbmlkb20uYwpAQCAtMjQsNyArMjQsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAg
Ki8KIAotI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgImNvbmZpZy5oIgogCiAj
aW5jbHVkZSAiSlNDb250ZXh0UmVmLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCmluZGV4IDdiZWNkZmUwNDExNWJmOTQ4OWVm
ODQxOTdjMTY3MWM1YjgzYmE0ZTIuLjg2ZDFjMjVjMjdlOTUyZDYxYWI5ZTQxYmUxNDU3NDEwZmJj
NDhmNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFw
aS5jCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCkBAIC0y
Myw3ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRlIDx3dGYvUGxhdGZv
cm0uaD4KKyNpbmNsdWRlICJjb25maWcuaCIKIAogI2lmIFVTRShDRikKICNpbmNsdWRlICJKYXZh
U2NyaXB0Q29yZS5oIgpAQCAtNjYsNiArNjYsOCBAQAogdm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSSh2
b2lkKTsKICNlbmRpZgogCitpbnQgdGVzdENBUElWaWFDcHAodm9pZCk7CisKIGJvb2wgYXNzZXJ0
VHJ1ZShib29sIHZhbHVlLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKIAogc3RhdGljIEpTR2xvYmFs
Q29udGV4dFJlZiBjb250ZXh0OwpAQCAtMTM2MSw2ICsxMzYzLDcgQEAgaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIqIGFyZ3ZbXSkKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIHRlc3RPYmpl
Y3RpdmVDQVBJKCk7CiAjZW5kaWYKKyAgICBSRUxFQVNFX0FTU0VSVCghdGVzdENBUElWaWFDcHAo
KSk7CiAKICAgICBjb25zdCBjaGFyICpzY3JpcHRQYXRoID0gInRlc3RhcGkuanMiOwogICAgIGlm
IChhcmdjID4gMSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy90ZXN0YXBpLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2MxYjQ1MDdmOWE5Njk5YzQ2NGI2NDZmOTIyZmU4MThlNTc0ZmVlNQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFw
aS5jcHAKQEAgLTAsMCArMSwzOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
CisjaW5jbHVkZSAiSmF2YVNjcmlwdENvcmUuaCIKKworI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+
CisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitleHRlcm4gIkMiIGludCB0ZXN0Q0FQSVZpYUNw
cCgpOworCitjbGFzcyBBUElTdHJpbmcgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFQSVN0
cmluZyk7CitwdWJsaWM6CisKKyAgICBBUElTdHJpbmcoY29uc3QgY2hhciogc3RyaW5nKQorICAg
ICAgICA6IG1fc3RyaW5nKEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHN0cmluZykpCisg
ICAgeworICAgIH0KKworICAgIH5BUElTdHJpbmcoKQorICAgIHsKKyAgICAgICAgSlNTdHJpbmdS
ZWxlYXNlKG1fc3RyaW5nKTsKKyAgICB9CisKKyAgICBvcGVyYXRvciBKU1N0cmluZ1JlZigpIHsg
cmV0dXJuIG1fc3RyaW5nOyB9CisKK3ByaXZhdGU6CisgICAgSlNTdHJpbmdSZWYgbV9zdHJpbmc7
Cit9OworCitjbGFzcyBBUElDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBUElD
b250ZXh0KTsKK3B1YmxpYzoKKworICAgIEFQSUNvbnRleHQoKQorICAgICAgICA6IG1fY29udGV4
dChKU0dsb2JhbENvbnRleHRDcmVhdGUobnVsbHB0cikpCisgICAgeworICAgICAgICBBUElTdHJp
bmcgcHJpbnQoInByaW50Iik7CisgICAgICAgIEpTT2JqZWN0UmVmIHByaW50RnVuY3Rpb24gPSBK
U09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayhtX2NvbnRleHQsIHByaW50LCBbXSAoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmLCBzaXplX3QgYXJndW1lbnRD
b3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiopIHsKKworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7IGkrKykKKyAg
ICAgICAgICAgICAgICBkYXRhTG9nKGJpdHdpc2VfY2FzdDxKU0M6OkpTVmFsdWU+KGFyZ3VtZW50
c1tpXSkpOworICAgICAgICAgICAgZGF0YUxvZ0xuKCk7CisgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgSlNPYmplY3RT
ZXRQcm9wZXJ0eShtX2NvbnRleHQsIEpTQ29udGV4dEdldEdsb2JhbE9iamVjdChtX2NvbnRleHQp
LCBwcmludCwgcHJpbnRGdW5jdGlvbiwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lLCBudWxscHRy
KTsKKyAgICB9CisKKyAgICB+QVBJQ29udGV4dCgpCisgICAgeworICAgICAgICBKU0dsb2JhbENv
bnRleHRSZWxlYXNlKG1fY29udGV4dCk7CisgICAgfQorCisgICAgb3BlcmF0b3IgSlNHbG9iYWxD
b250ZXh0UmVmKCkgeyByZXR1cm4gbV9jb250ZXh0OyB9CisKK3ByaXZhdGU6CisgICAgSlNHbG9i
YWxDb250ZXh0UmVmIG1fY29udGV4dDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFz
cyBBUElWZWN0b3IgOiBwcm90ZWN0ZWQgVmVjdG9yPFQ+IHsKKyAgICB1c2luZyBCYXNlID0gVmVj
dG9yPFQ+OworcHVibGljOgorICAgIEFQSVZlY3RvcihBUElDb250ZXh0JiBjb250ZXh0KQorICAg
ICAgICA6IEJhc2UoKQorICAgICAgICAsIG1fY29udGV4dChjb250ZXh0KQorICAgIHsKKyAgICB9
CisKKyAgICB+QVBJVmVjdG9yKCkKKyAgICB7CisgICAgICAgIGZvciAoYXV0byYgdmFsdWUgOiAq
dGhpcykKKyAgICAgICAgICAgIEpTVmFsdWVVbnByb3RlY3QobV9jb250ZXh0LCB2YWx1ZSk7Cisg
ICAgfQorCisgICAgdXNpbmcgVmVjdG9yPFQ+OjpvcGVyYXRvcltdOworICAgIHVzaW5nIFZlY3Rv
cjxUPjo6c2l6ZTsKKyAgICB1c2luZyBWZWN0b3I8VD46OmJlZ2luOworICAgIHVzaW5nIFZlY3Rv
cjxUPjo6ZW5kOworICAgIHVzaW5nIHR5cGVuYW1lIFZlY3RvcjxUPjo6aXRlcmF0b3I7CisKKyAg
ICB2b2lkIGFwcGVuZChUIHZhbHVlKQorICAgIHsKKyAgICAgICAgSlNWYWx1ZVByb3RlY3QobV9j
b250ZXh0LCB2YWx1ZSk7CisgICAgICAgIEJhc2U6OmFwcGVuZChXVEZNb3ZlKHZhbHVlKSk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIEFQSUNvbnRleHQmIG1fY29udGV4dDsKK307CisKK2NsYXNz
IFRlc3RBUEkgeworcHVibGljOgorICAgIGludCBydW4oKTsKK3ByaXZhdGU6CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZS4uLiBTdHJpbmdzPgorICAgIGJvb2wgY2hlY2soYm9vbCBjb25kaXRpb24s
IFN0cmluZ3MuLi4gbWVzc2FnZSk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0Z1bmN0b3Is
IHR5cGVuYW1lIEFQSUZ1bmN0b3I+CisgICAgdm9pZCBjaGVja0pTQW5kQVBJTWF0Y2goY29uc3Qg
SlNGdW5jdG9yJiwgY29uc3QgQVBJRnVuY3RvciYsIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKTsK
KworICAgIC8vIEhlbHBlciBtZXRob2RzLgorICAgIHVzaW5nIFNjcmlwdFJlc3VsdCA9IEV4cGVj
dGVkPEpTVmFsdWVSZWYsIEpTVmFsdWVSZWY+OworICAgIFNjcmlwdFJlc3VsdCBldmFsdWF0ZVNj
cmlwdChjb25zdCBjaGFyKiBzY3JpcHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QgPSBudWxscHRy
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVzPgorICAgIFNjcmlwdFJl
c3VsdCBjYWxsRnVuY3Rpb24oY29uc3QgY2hhciogZnVuY3Rpb25Tb3VyY2UsIEFyZ3VtZW50VHlw
ZXMuLi4gYXJndW1lbnRzKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVz
PgorICAgIGJvb2wgZnVuY3Rpb25SZXR1cm5zVHJ1ZShjb25zdCBjaGFyKiBmdW5jdGlvblNvdXJj
ZSwgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMpOworCisgICAgLy8gV2F5cyB0byBtYWtlIHNl
dHMgb2YgaW50ZXJlc3RpbmcgdGhpbmdzLgorICAgIEFQSVZlY3RvcjxKU09iamVjdFJlZj4gaW50
ZXJlc3RpbmdPYmplY3RzKCk7CisgICAgQVBJVmVjdG9yPEpTVmFsdWVSZWY+IGludGVyZXN0aW5n
S2V5cygpOworCisgICAgaW50IGZhaWxlZCB7IDAgfTsKKyAgICBBUElDb250ZXh0IGNvbnRleHQ7
Cit9OworCitpbnQgdGVzdENBUElWaWFDcHAoKQoreworICAgIFRlc3RBUEkgdGVzdGVyOworICAg
IHJldHVybiB0ZXN0ZXIucnVuKCk7Cit9CisKK1Rlc3RBUEk6OlNjcmlwdFJlc3VsdCBUZXN0QVBJ
OjpldmFsdWF0ZVNjcmlwdChjb25zdCBjaGFyKiBzY3JpcHQsIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QpCit7CisgICAgQVBJU3RyaW5nIHNjcmlwdEFQSVN0cmluZyhzY3JpcHQpOworICAgIEpTVmFs
dWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0cjsKKworICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNF
dmFsdWF0ZVNjcmlwdChjb250ZXh0LCBzY3JpcHRBUElTdHJpbmcsIHRoaXNPYmplY3QsIG51bGxw
dHIsIDAsICZleGNlcHRpb24pOworICAgIGlmIChleGNlcHRpb24pCisgICAgICAgIHJldHVybiBV
bmV4cGVjdGVkPEpTVmFsdWVSZWY+KGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIFNjcmlwdFJlc3Vs
dChyZXN1bHQpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVzPgorVGVz
dEFQSTo6U2NyaXB0UmVzdWx0IFRlc3RBUEk6OmNhbGxGdW5jdGlvbihjb25zdCBjaGFyKiBmdW5j
dGlvblNvdXJjZSwgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMpCit7CisgICAgSlNWYWx1ZVJl
ZiBmdW5jdGlvbjsKKyAgICB7CisgICAgICAgIFNjcmlwdFJlc3VsdCBmdW5jdGlvblJlc3VsdCA9
IGV2YWx1YXRlU2NyaXB0KGZ1bmN0aW9uU291cmNlKTsKKyAgICAgICAgaWYgKCFmdW5jdGlvblJl
c3VsdCkKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvblJlc3VsdDsKKyAgICAgICAgZnVuY3Rp
b24gPSBmdW5jdGlvblJlc3VsdC52YWx1ZSgpOworICAgIH0KKworICAgIEpTVmFsdWVSZWYgZXhj
ZXB0aW9uID0gbnVsbHB0cjsKKyAgICBpZiAoSlNPYmplY3RSZWYgZnVuY3Rpb25PYmplY3QgPSBK
U1ZhbHVlVG9PYmplY3QoY29udGV4dCwgZnVuY3Rpb24sICZleGNlcHRpb24pKSB7CisgICAgICAg
IEpTVmFsdWVSZWYgYXJnc1tzaXplb2YuLi4oYXJndW1lbnRzKV0geyBhcmd1bWVudHMuLi4gfTsK
KyAgICAgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU09iamVjdENhbGxBc0Z1bmN0aW9uKGNvbnRl
eHQsIGZ1bmN0aW9uT2JqZWN0LCBmdW5jdGlvbk9iamVjdCwgc2l6ZW9mLi4uKGFyZ3VtZW50cyks
IGFyZ3MsICZleGNlcHRpb24pOworICAgICAgICBpZiAoIWV4Y2VwdGlvbikKKyAgICAgICAgICAg
IHJldHVybiBTY3JpcHRSZXN1bHQocmVzdWx0KTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VS
VChleGNlcHRpb24pOworICAgIHJldHVybiBVbmV4cGVjdGVkPEpTVmFsdWVSZWY+KGV4Y2VwdGlv
bik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+Citib29sIFRlc3RB
UEk6OmZ1bmN0aW9uUmV0dXJuc1RydWUoY29uc3QgY2hhciogZnVuY3Rpb25Tb3VyY2UsIEFyZ3Vt
ZW50VHlwZXMuLi4gYXJndW1lbnRzKQoreworICAgIEpTVmFsdWVSZWYgdHJ1ZVZhbHVlID0gSlNW
YWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIHRydWUpOworICAgIFNjcmlwdFJlc3VsdCByZXN1bHQg
PSBjYWxsRnVuY3Rpb24oZnVuY3Rpb25Tb3VyY2UsIGFyZ3VtZW50cy4uLik7CisgICAgaWYgKCFy
ZXN1bHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gSlNWYWx1ZUlzU3RyaWN0
RXF1YWwoY29udGV4dCwgdHJ1ZVZhbHVlLCByZXN1bHQudmFsdWUoKSk7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lLi4uIFN0cmluZ3M+Citib29sIFRlc3RBUEk6OmNoZWNrKGJvb2wgY29uZGl0aW9u
LCBTdHJpbmdzLi4uIG1lc3NhZ2VzKQoreworICAgIGlmICghY29uZGl0aW9uKSB7CisgICAgICAg
IGRhdGFMb2dMbihtZXNzYWdlcy4uLiwgIjogRkFJTEVEIik7CisgICAgICAgIGZhaWxlZCsrOwor
ICAgIH0gZWxzZQorICAgICAgICBkYXRhTG9nTG4obWVzc2FnZXMuLi4sICI6IFBBU1NFRCIpOwor
CisgICAgcmV0dXJuIGNvbmRpdGlvbjsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgSlNGdW5jdG9y
LCB0eXBlbmFtZSBBUElGdW5jdG9yPgordm9pZCBUZXN0QVBJOjpjaGVja0pTQW5kQVBJTWF0Y2go
Y29uc3QgSlNGdW5jdG9yJiBqc0Z1bmN0b3IsIGNvbnN0IEFQSUZ1bmN0b3ImIGFwaUZ1bmN0b3Is
IGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKQoreworICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0g
bnVsbHB0cjsKKyAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IGFwaUZ1bmN0b3IoJmV4Y2VwdGlvbik7
CisgICAgU2NyaXB0UmVzdWx0IGpzUmVzdWx0ID0ganNGdW5jdG9yKCk7CisgICAgaWYgKCFqc1Jl
c3VsdCkgeworICAgICAgICBjaGVjayhleGNlcHRpb24sICJKUyBhbmQgQVBJIGNhbGxzIHNob3Vs
ZCBib3RoIHRocm93IGFuIGV4Y2VwdGlvbiB3aGlsZSAiLCBkZXNjcmlwdGlvbik7CisgICAgICAg
IGNoZWNrKGZ1bmN0aW9uUmV0dXJuc1RydWUoIihmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhLmNv
bnN0cnVjdG9yID09PSBiLmNvbnN0cnVjdG9yOyB9KSIsIGV4Y2VwdGlvbiwganNSZXN1bHQuZXJy
b3IoKSksICJKUyBhbmQgQVBJIGNhbGxzIHNob3VsZCBib3RoIHRocm93IHRoZSBzYW1lIGV4Y2Vw
dGlvbiB3aGlsZSAiLCBkZXNjcmlwdGlvbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY2hlY2so
IWV4Y2VwdGlvbiwgIkpTIGFuZCBBUEkgY2FsbHMgc2hvdWxkIGJvdGggbm90IHRocm93IGFuIGV4
Y2VwdGlvbiB3aGlsZSAiLCBkZXNjcmlwdGlvbik7CisgICAgICAgIGNoZWNrKEpTVmFsdWVJc1N0
cmljdEVxdWFsKGNvbnRleHQsIHJlc3VsdCwganNSZXN1bHQudmFsdWUoKSksICJKUyByZXN1bHQg
YW5kIEFQSSBjYWxscyBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIHdoaWxlICIsIGRlc2Ny
aXB0aW9uKTsKKyAgICB9Cit9CisKK0FQSVZlY3RvcjxKU09iamVjdFJlZj4gVGVzdEFQSTo6aW50
ZXJlc3RpbmdPYmplY3RzKCkKK3sKKyAgICBBUElWZWN0b3I8SlNPYmplY3RSZWY+IHJlc3VsdChj
b250ZXh0KTsKKyAgICBKU09iamVjdFJlZiBhcnJheSA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0
LCBldmFsdWF0ZVNjcmlwdCgKKyAgICAgICAgIlt7fSwgW10sIHsgW1N5bWJvbC5pdGVyYXRvcl06
IDEgfSwgbmV3IERhdGUoKSwgbmV3IFN0cmluZygnc3RyJyksIG5ldyBNYXAoKSwgbmV3IFNldCgp
LCBuZXcgV2Vha01hcCgpLCBuZXcgV2Vha1NldCgpLCBuZXcgRXJyb3IoKSwgbmV3IE51bWJlcig0
MiksIG5ldyBCb29sZWFuKCksIHsgZ2V0IGxlbmd0aCgpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0g
fV07IikudmFsdWUoKSwgbnVsbHB0cik7CisKKyAgICBBUElTdHJpbmcgbGVuZ3RoU3RyaW5nKCJs
ZW5ndGgiKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwg
SlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBhcnJheSwgbGVuZ3RoU3RyaW5nLCBudWxscHRy
KSwgbnVsbHB0cik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7
CisgICAgICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBK
U09iamVjdEdldFByb3BlcnR5QXRJbmRleChjb250ZXh0LCBhcnJheSwgaSwgbnVsbHB0ciksIG51
bGxwdHIpOworICAgICAgICBBU1NFUlQob2JqZWN0KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChv
YmplY3QpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0FQSVZlY3RvcjxKU1Zh
bHVlUmVmPiBUZXN0QVBJOjppbnRlcmVzdGluZ0tleXMoKQoreworICAgIEFQSVZlY3RvcjxKU1Zh
bHVlUmVmPiByZXN1bHQoY29udGV4dCk7CisgICAgSlNPYmplY3RSZWYgYXJyYXkgPSBKU1ZhbHVl
VG9PYmplY3QoY29udGV4dCwgZXZhbHVhdGVTY3JpcHQoIlt7fSwgW10sIDEsIFN5bWJvbC5pdGVy
YXRvciwgJ2xlbmd0aCddIikudmFsdWUoKSwgbnVsbHB0cik7CisKKyAgICBBUElTdHJpbmcgbGVu
Z3RoU3RyaW5nKCJsZW5ndGgiKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBKU1ZhbHVlVG9OdW1i
ZXIoY29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBhcnJheSwgbGVuZ3RoU3Ry
aW5nLCBudWxscHRyKSwgbnVsbHB0cik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDsgaSsrKSB7CisgICAgICAgIEpTVmFsdWVSZWYgdmFsdWUgPSBKU09iamVjdEdldFByb3Bl
cnR5QXRJbmRleChjb250ZXh0LCBhcnJheSwgaSwgbnVsbHB0cik7CisgICAgICAgIEFTU0VSVCh2
YWx1ZSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQodmFsdWUpOworICAgIH0KKworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK2ludCBUZXN0QVBJOjpydW4oKQoreworICAgIGRhdGFMb2dMbigiU3Rh
cnRpbmcgQy1BUEkgdGVzdHMgaW4gQysrIik7CisgICAgY29uc3QgY2hhciogaXNTeW1ib2xGdW5j
dGlvbiA9ICIoZnVuY3Rpb24gaXNTeW1ib2woc3ltYm9sKSB7IHJldHVybiB0eXBlb2Yoc3ltYm9s
KSA9PT0gJ3N5bWJvbCc7IH0pIjsKKyAgICBjb25zdCBjaGFyKiBnZXRGdW5jdGlvbiA9ICIoZnVu
Y3Rpb24gZ2V0KG9iamVjdCwga2V5KSB7IHJldHVybiBvYmplY3Rba2V5XTsgfSkiOworICAgIGNv
bnN0IGNoYXIqIHNldEZ1bmN0aW9uID0gIihmdW5jdGlvbiBzZXQob2JqZWN0LCBrZXksIHZhbHVl
KSB7IG9iamVjdFtrZXldID0gdmFsdWU7IH0pIjsKKyAgICBjb25zdCBjaGFyKiBoYXNGdW5jdGlv
biA9ICIoZnVuY3Rpb24gaGFzKG9iamVjdCwga2V5KSB7IHJldHVybiBrZXkgaW4gb2JqZWN0OyB9
KSI7CisgICAgY29uc3QgY2hhciogZGVsZXRlRnVuY3Rpb24gPSAiKGZ1bmN0aW9uIGRlbChvYmpl
Y3QsIGtleSkgeyByZXR1cm4gZGVsZXRlIG9iamVjdFtrZXldOyB9KSI7CisKKyAgICB7CisgICAg
ICAgIC8vIENhbid0IGNhbGwgU3ltYm9sIGFzIGEgY29uc3RydWN0b3Igc2luY2UgaXQncyBub3Qg
c3ViY2xhc3NhYmxlLgorICAgICAgICBhdXRvIHJlc3VsdCA9IGV2YWx1YXRlU2NyaXB0KCJTeW1i
b2woJ2RvcGUnKTsiKTsKKyAgICAgICAgY2hlY2soSlNWYWx1ZUdldFR5cGUoY29udGV4dCwgcmVz
dWx0LnZhbHVlKCkpID09IGtKU1R5cGVTeW1ib2wsICJkb3BlIGdldCB0eXBlIGlzIGEgc3ltYm9s
Iik7CisgICAgICAgIGNoZWNrKEpTVmFsdWVJc1N5bWJvbChjb250ZXh0LCByZXN1bHQudmFsdWUo
KSksICJkb3BlIGlzIGEgc3ltYm9sIik7CisgICAgfQorCisgICAgeworICAgICAgICBBUElTdHJp
bmcgZGVzY3JpcHRpb24oImRvcGUiKTsKKyAgICAgICAgSlNWYWx1ZVJlZiBzeW1ib2wgPSBKU1Zh
bHVlTWFrZVN5bWJvbChjb250ZXh0LCBkZXNjcmlwdGlvbik7CisgICAgICAgIGNoZWNrKGZ1bmN0
aW9uUmV0dXJuc1RydWUoaXNTeW1ib2xGdW5jdGlvbiwgc3ltYm9sKSwgIkpTVmFsdWVNYWtlU3lt
Ym9sIG1ha2VzIGEgc3ltYm9sIHZhbHVlIik7CisgICAgfQorCisgICAgeworICAgICAgICBhdXRv
IG9iamVjdHMgPSBpbnRlcmVzdGluZ09iamVjdHMoKTsKKyAgICAgICAgYXV0byBrZXlzID0gaW50
ZXJlc3RpbmdLZXlzKCk7CisKKyAgICAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBvYmplY3RzKSB7
CisgICAgICAgICAgICBkYXRhTG9nTG4oIlxubmV4dCBvYmplY3Q6ICIsIGJpdHdpc2VfY2FzdDxK
U0M6OkpTVmFsdWU+KG9iamVjdCkpOworICAgICAgICAgICAgZm9yIChhdXRvJiBrZXkgOiBrZXlz
KSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJVc2luZyBrZXk6ICIsIGJpdHdpc2VfY2Fz
dDxKU0M6OkpTVmFsdWU+KGtleSkpOworICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRj
aCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBjYWxsRnVuY3Rpb24oZ2V0RnVuY3Rpb24sIG9iamVjdCwga2V5KTsKKyAgICAgICAgICAg
ICAgICAgICAgfSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBKU09iamVjdEdldFByb3BlcnR5S2V5KGNvbnRleHQsIG9iamVjdCwg
a2V5LCBleGNlcHRpb24pOworICAgICAgICAgICAgICAgICAgICB9LCAiY2hlY2tpbmcgZ2V0IHBy
b3BlcnR5IGtleXMiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHsK
KyAgICAgICAgYXV0byBqc09iamVjdHMgPSBpbnRlcmVzdGluZ09iamVjdHMoKTsKKyAgICAgICAg
YXV0byBhcGlPYmplY3RzID0gaW50ZXJlc3RpbmdPYmplY3RzKCk7CisgICAgICAgIGF1dG8ga2V5
cyA9IGludGVyZXN0aW5nS2V5cygpOworCisgICAgICAgIEpTVmFsdWVSZWYgdGhlQW5zd2VyID0g
SlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgNDIpOworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGpzT2JqZWN0cy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgZm9yIChhdXRvJiBr
ZXkgOiBrZXlzKSB7CisgICAgICAgICAgICAgICAgSlNPYmplY3RSZWYganNPYmplY3QgPSBqc09i
amVjdHNbaV07CisgICAgICAgICAgICAgICAgSlNPYmplY3RSZWYgYXBpT2JqZWN0ID0gYXBpT2Jq
ZWN0c1tpXTsKKyAgICAgICAgICAgICAgICBjaGVja0pTQW5kQVBJTWF0Y2goCisgICAgICAgICAg
ICAgICAgICAgIFsmXSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbEZ1bmN0
aW9uKHNldEZ1bmN0aW9uLCBqc09iamVjdCwga2V5LCB0aGVBbnN3ZXIpOworICAgICAgICAgICAg
ICAgICAgICB9ICwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHlLZXkoY29udGV4dCwgYXBpT2JqZWN0LCBrZXks
IHRoZUFuc3dlciwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lLCBleGNlcHRpb24pOworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwor
ICAgICAgICAgICAgICAgICAgICB9LCAic2V0dGluZyBwcm9wZXJ0eSBrZXlzIHRvIHRoZSBhbnN3
ZXIiKTsKKyAgICAgICAgICAgICAgICAvLyBDaGVjayBnZXQgaXMgdGhlIHNhbWUgb24gQVBJIG9i
amVjdC4KKyAgICAgICAgICAgICAgICBjaGVja0pTQW5kQVBJTWF0Y2goCisgICAgICAgICAgICAg
ICAgICAgIFsmXSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbEZ1bmN0aW9u
KGdldEZ1bmN0aW9uLCBhcGlPYmplY3QsIGtleSk7CisgICAgICAgICAgICAgICAgICAgIH0sIFsm
XSAoSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gSlNPYmplY3RHZXRQcm9wZXJ0eUtleShjb250ZXh0LCBhcGlPYmplY3QsIGtleSwgZXhjZXB0
aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgfSwgImdldHRpbmcgcHJvcGVydHkga2V5cyBmcm9t
IEFQSSBvYmplY3RzIik7CisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZ2V0IGlzIHRoZSBzYW1l
IG9uIHJlc3BlY3RpdmUgb2JqZWN0cy4KKyAgICAgICAgICAgICAgICBjaGVja0pTQW5kQVBJTWF0
Y2goCisgICAgICAgICAgICAgICAgICAgIFsmXSB7CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gY2FsbEZ1bmN0aW9uKGdldEZ1bmN0aW9uLCBqc09iamVjdCwga2V5KTsKKyAgICAgICAg
ICAgICAgICAgICAgfSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBKU09iamVjdEdldFByb3BlcnR5S2V5KGNvbnRleHQsIGFwaU9i
amVjdCwga2V5LCBleGNlcHRpb24pOworICAgICAgICAgICAgICAgICAgICB9LCAiZ2V0dGluZyBw
cm9wZXJ0eSBrZXlzIGZyb20gcmVzcGVjdGl2ZSBvYmplY3RzIik7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICB7CisgICAgICAgIGF1dG8gb2JqZWN0cyA9IGludGVyZXN0
aW5nT2JqZWN0cygpOworICAgICAgICBhdXRvIGtleXMgPSBpbnRlcmVzdGluZ0tleXMoKTsKKwor
ICAgICAgICBKU1ZhbHVlUmVmIHRoZUFuc3dlciA9IEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQs
IDQyKTsKKyAgICAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBvYmplY3RzKSB7CisgICAgICAgICAg
ICBkYXRhTG9nTG4oIlxuTmV4dCBvYmplY3Q6ICIsIGJpdHdpc2VfY2FzdDxKU0M6OkpTVmFsdWU+
KG9iamVjdCkpOworICAgICAgICAgICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzKSB7CisgICAgICAg
ICAgICAgICAgZGF0YUxvZ0xuKCJVc2luZyBrZXk6ICIsIGJpdHdpc2VfY2FzdDxKU0M6OkpTVmFs
dWU+KGtleSkpOworICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAg
ICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVu
Y3Rpb24oaGFzRnVuY3Rpb24sIG9iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwg
WyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgSlNPYmplY3RIYXNQcm9wZXJ0eUtleShj
b250ZXh0LCBvYmplY3QsIGtleSwgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIH0s
ICJjaGVja2luZyBoYXMgcHJvcGVydHkga2V5cyB1bnNldCIpOworCisgICAgICAgICAgICAgICAg
Y2hlY2soISFjYWxsRnVuY3Rpb24oc2V0RnVuY3Rpb24sIG9iamVjdCwga2V5LCB0aGVBbnN3ZXIp
LCAic2V0IHByb3BlcnR5IHRvIHRoZSBhbnN3ZXIiKTsKKworICAgICAgICAgICAgICAgIGNoZWNr
SlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oaGFzRnVuY3Rpb24sIG9iamVjdCwga2V5KTsK
KyAgICAgICAgICAgICAgICAgICAgfSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwg
SlNPYmplY3RIYXNQcm9wZXJ0eUtleShjb250ZXh0LCBvYmplY3QsIGtleSwgZXhjZXB0aW9uKSk7
CisgICAgICAgICAgICAgICAgICAgIH0sICJjaGVja2luZyBoYXMgcHJvcGVydHkga2V5cyBzZXQi
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0
byBvYmplY3RzID0gaW50ZXJlc3RpbmdPYmplY3RzKCk7CisgICAgICAgIGF1dG8ga2V5cyA9IGlu
dGVyZXN0aW5nS2V5cygpOworCisgICAgICAgIEpTVmFsdWVSZWYgdGhlQW5zd2VyID0gSlNWYWx1
ZU1ha2VOdW1iZXIoY29udGV4dCwgNDIpOworICAgICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IG9i
amVjdHMpIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiXG5OZXh0IG9iamVjdDogIiwgYml0d2lz
ZV9jYXN0PEpTQzo6SlNWYWx1ZT4ob2JqZWN0KSk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGtl
eSA6IGtleXMpIHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlVzaW5nIGtleTogIiwgYml0
d2lzZV9jYXN0PEpTQzo6SlNWYWx1ZT4oa2V5KSk7CisgICAgICAgICAgICAgICAgY2hlY2tKU0Fu
ZEFQSU1hdGNoKAorICAgICAgICAgICAgICAgICAgICBbJl0geworICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGNhbGxGdW5jdGlvbihkZWxldGVGdW5jdGlvbiwgb2JqZWN0LCBrZXkpOwor
ICAgICAgICAgICAgICAgICAgICB9LCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCBK
U09iamVjdERlbGV0ZVByb3BlcnR5S2V5KGNvbnRleHQsIG9iamVjdCwga2V5LCBleGNlcHRpb24p
KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgImNoZWNraW5nIGhhcyBwcm9wZXJ0eSBrZXlzIHVu
c2V0Iik7CisKKyAgICAgICAgICAgICAgICBjaGVjayghIWNhbGxGdW5jdGlvbihzZXRGdW5jdGlv
biwgb2JqZWN0LCBrZXksIHRoZUFuc3dlciksICJzZXQgcHJvcGVydHkgdG8gdGhlIGFuc3dlciIp
OworCisgICAgICAgICAgICAgICAgY2hlY2tKU0FuZEFQSU1hdGNoKAorICAgICAgICAgICAgICAg
ICAgICBbJl0geworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxGdW5jdGlvbihk
ZWxldGVGdW5jdGlvbiwgb2JqZWN0LCBrZXkpOworICAgICAgICAgICAgICAgICAgICB9LCBbJl0g
KEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCBKU09iamVjdERlbGV0ZVByb3BlcnR5S2V5KGNv
bnRleHQsIG9iamVjdCwga2V5LCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgfSwg
ImNoZWNraW5nIGhhcyBwcm9wZXJ0eSBrZXlzIHNldCIpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgZGF0YUxvZ0xuKCJDLUFQSSB0ZXN0cyBpbiBDKysgaGFkICIsIGZh
aWxlZCwgIiBmYWlsdXJlcyIpOworICAgIHJldHVybiBmYWlsZWQ7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KaW5kZXggZTk4ZDZjZjVkZGJjZTE3OGUwMGM5
ZGRiMGU1MGVjZTNhZTNkNjE3YS4uNjk0NjY3MjM4MjExMWRlYjAzMjM4ZDIyYWU5OWU3YzJkY2Q2
NmQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBp
Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQpAQCAt
MjMsNiArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisjaW1wb3J0ICJjb25maWcuaCIK
ICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CiAKICNpbXBvcnQgIkN1
cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0LmgiCkBAIC01ODIsNiArNTgzLDcxIEBAIHN0
YXRpYyB2b2lkIHRlc3RPYmplY3RpdmVDQVBJTWFpbigpCiAgICAgICAgIGNoZWNrUmVzdWx0KEAi
bmV3IERhdGUiLCByZXN1bHQuaXNEYXRlKTsKICAgICB9CiAKKyAgICBAYXV0b3JlbGVhc2Vwb29s
IHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRd
OworICAgICAgICBKU1ZhbHVlICpzeW1ib2wgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIlN5
bWJvbCgnZG9wZScpOyJdOworICAgICAgICBKU1ZhbHVlICpub3RTeW1ib2wgPSBbY29udGV4dCBl
dmFsdWF0ZVNjcmlwdDpAIidkb3BlJyJdOworICAgICAgICBjaGVja1Jlc3VsdChAIlNob3VsZCBi
ZSBhIHN5bWJvbCB2YWx1ZSIsIHN5bWJvbC5pc1N5bWJvbCk7CisgICAgICAgIGNoZWNrUmVzdWx0
KEAiU2hvdWxkIG5vdCBiZSBhIHN5bWJvbCB2YWx1ZSIsICFub3RTeW1ib2wuaXNTeW1ib2wpOwor
ICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRl
eHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUgKnN5bWJvbCA9
IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld1N5bWJvbEZyb21EZXNjcmlwdGlvbjpAImRvcGUiIGluQ29u
dGV4dDpjb250ZXh0XTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJTaG91bGQgYmUgYSBjcmVhdGVk
IGZyb20gT2JjLUMiLCBzeW1ib2wuaXNTeW1ib2wpOworICAgIH0KKworI2lmICEoZGVmaW5lZChf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAoZGVmaW5lZChfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMTAwMDApCisK
KyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tK
U0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICphcnJheUl0ZXJhdG9yID0g
W2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJBcnJheS5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9y
XSJdOworICAgICAgICBKU1ZhbHVlICppdGVyYXRvclN5bWJvbCA9IGNvbnRleHRbQCJTeW1ib2wi
XVtAIml0ZXJhdG9yIl07CisgICAgICAgIEpTVmFsdWUgKmFycmF5ID0gW0pTVmFsdWUgdmFsdWVX
aXRoTmV3QXJyYXlJbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIGNoZWNrUmVzdWx0KEAiTG9v
a2luZyB1cCBieSBzdWJzY3JpcHQgd2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsiLCBbYXJyYXlbaXRl
cmF0b3JTeW1ib2xdIGlzRXF1YWw6YXJyYXlJdGVyYXRvcl0pOworICAgICAgICBjaGVja1Jlc3Vs
dChAIkxvb2tpbmcgdXAgYnkgbWV0aG9kIHdpdGggc3ltYm9sIHNob3VsZCB3b3JrIiwgW1thcnJh
eSB2YWx1ZUZvclByb3BlcnR5Oml0ZXJhdG9yU3ltYm9sXSBpc0VxdWFsOmFycmF5SXRlcmF0b3Jd
KTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpj
b250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICppdGVy
YXRvclN5bWJvbCA9IGNvbnRleHRbQCJTeW1ib2wiXVtAIml0ZXJhdG9yIl07CisgICAgICAgIEpT
VmFsdWUgKm9iamVjdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld09iamVjdEluQ29udGV4dDpjb250
ZXh0XTsKKyAgICAgICAgSlNWYWx1ZSAqdGhlQW5zd2VyID0gW0pTVmFsdWUgdmFsdWVXaXRoVUlu
dDMyOjQyIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgb2JqZWN0W2l0ZXJhdG9yU3ltYm9s
XSA9IHRoZUFuc3dlcjsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJTZXR0aW5nIGJ5IHN1YnNjcmlw
dCB3aXRoIHN5bWJvbCBzaG91bGQgd29yayIsIFtvYmplY3RbaXRlcmF0b3JTeW1ib2xdIGlzRXF1
YWw6dGhlQW5zd2VyXSk7CisgICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAg
IEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAg
SlNWYWx1ZSAqaXRlcmF0b3JTeW1ib2wgPSBjb250ZXh0W0AiU3ltYm9sIl1bQCJpdGVyYXRvciJd
OworICAgICAgICBKU1ZhbHVlICpvYmplY3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdPYmplY3RJ
bkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIEpTVmFsdWUgKnRoZUFuc3dlciA9IFtKU1ZhbHVl
IHZhbHVlV2l0aFVJbnQzMjo0MiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIFtvYmplY3Qg
c2V0VmFsdWU6dGhlQW5zd2VyIGZvclByb3BlcnR5Oml0ZXJhdG9yU3ltYm9sXTsKKyAgICAgICAg
Y2hlY2tSZXN1bHQoQCJTZXR0aW5nIGJ5IG1ldGhvZCB3aXRoIHN5bWJvbCBzaG91bGQgd29yayIs
IFtvYmplY3RbaXRlcmF0b3JTeW1ib2xdIGlzRXF1YWw6dGhlQW5zd2VyXSk7CisgICAgfQorCisg
ICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlND
b250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAqaXRlcmF0b3JTeW1ib2wgPSBj
b250ZXh0W0AiU3ltYm9sIl1bQCJpdGVyYXRvciJdOworICAgICAgICBKU1ZhbHVlICpvYmplY3Qg
PSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdPYmplY3RJbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAg
IEpTVmFsdWUgKnRoZUFuc3dlciA9IFtKU1ZhbHVlIHZhbHVlV2l0aFVJbnQzMjo0MiBpbkNvbnRl
eHQ6Y29udGV4dF07CisgICAgICAgIG9iamVjdFtpdGVyYXRvclN5bWJvbF0gPSB0aGVBbnN3ZXI7
CisgICAgICAgIGNoZWNrUmVzdWx0KEAiaGFzIHByb3BlcnR5IHdpdGggc3ltYm9sIHNob3VsZCB3
b3JrIiwgW29iamVjdCBoYXNQcm9wZXJ0eTppdGVyYXRvclN5bWJvbF0pOworICAgIH0KKworICAg
IEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29u
dGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUgKml0ZXJhdG9yU3ltYm9sID0gY29u
dGV4dFtAIlN5bWJvbCJdW0AiaXRlcmF0b3IiXTsKKyAgICAgICAgSlNWYWx1ZSAqb2JqZWN0ID0g
W0pTVmFsdWUgdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBK
U1ZhbHVlICp0aGVBbnN3ZXIgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhVSW50MzI6NDIgaW5Db250ZXh0
OmNvbnRleHRdOworICAgICAgICBjaGVja1Jlc3VsdChAImRlbGV0ZSBwcm9wZXJ0eSB3aXRoIHN5
bWJvbCBzaG91bGQgd29yayB3aXRob3V0IHByb3BlcnR5IiwgW29iamVjdCBkZWxldGVQcm9wZXJ0
eTppdGVyYXRvclN5bWJvbF0pOworICAgICAgICBvYmplY3RbaXRlcmF0b3JTeW1ib2xdID0gdGhl
QW5zd2VyOworICAgICAgICBjaGVja1Jlc3VsdChAImRlbGV0ZSBwcm9wZXJ0eSB3aXRoIHN5bWJv
bCBzaG91bGQgd29yayB3aXRoIHByb3BlcnR5IiwgW29iamVjdCBkZWxldGVQcm9wZXJ0eTppdGVy
YXRvclN5bWJvbF0pOworICAgICAgICBjaGVja1Jlc3VsdChAImRlbGV0ZSBzaG91bGQgYmUgZmFs
c2Ugd2l0aCBub24tY29uZmlndXJhYmxlIHByb3BlcnR5IiwgIVtjb250ZXh0W0AiQXJyYXkiXSBk
ZWxldGVQcm9wZXJ0eTpAInByb3RvdHlwZSJdKTsKKyAgICB9CisKKyNlbmRpZiAvLyAhKGRlZmlu
ZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA8IDEwMTMwMCkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAw
KQorCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgIEpTQ29sbGVjdGlvbiogbXlQcml2
YXRlUHJvcGVydGllcyA9IFtbSlNDb2xsZWN0aW9uIGFsbG9jXSBpbml0XTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA0ODhlNWIzMThkZDE3MDgxZGI3Y2ZhNDMzZGM1ZGNiZWUw
N2NhNWE3Li4zYzZiMTE3NGNlYTNlZGQ2MmZkNGQ1YjBmMjhjYmJmYjE1M2RjYmVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAyOCw2ICsxMDI4LDcgQEAKIAkJNTNFNzc3RTQx
RTkyRTI2NTAwN0NCRUM0IC8qIFdhc21Nb2R1bGVJbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFNzc3RTIxRTkyRTI2NTAwN0NCRUM0
IC8qIFdhc21Nb2R1bGVJbmZvcm1hdGlvbi5oICovOyB9OwogCQk1M0U5RTBBQzFFQUU4M0RGMDBG
RUUyNTEgLyogV2FzbU1hY2hpbmVUaHJlYWRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1M0U5RTBBQTFFQUU4M0RFMDBGRUUyNTEgLyogV2FzbU1hY2hp
bmVUaHJlYWRzLmggKi87IH07CiAJCTUzRTlFMEFGMUVBRUM0NTcwMEZFRTI1MSAvKiBXYXNtVGll
clVwQ291bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzRTlFMEFFMUVBRUM0NTcwMEZFRTI1MSAvKiBXYXNtVGllclVwQ291bnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1M0VBRkUyRjIwOERGQUI0
MDA3RDUyNEIgLyogdGVzdGFwaS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MzFENEUxOTFGNTlDREQyMDBFQzgzNkMgLyogdGVzdGFwaS5jcHAgKi87
IH07CiAJCTUzRjQwRTg1MUQ1OEY5NzcwMDk5QTFCNiAvKiBXYXNtU2VjdGlvbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQwRTg0MUQ1OEY5Nzcw
MDk5QTFCNiAvKiBXYXNtU2VjdGlvbnMuaCAqLzsgfTsKIAkJNTNGNDBFOEIxRDU5MDFCQjAwOTlB
MUI2IC8qIFdhc21GdW5jdGlvblBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTNGNDBFOEExRDU5MDFCQjAwOTlBMUI2IC8qIFdhc21GdW5jdGlv
blBhcnNlci5oICovOyB9OwogCQk1M0Y0MEU4RDFENTkwMUYyMDA5OUExQjYgLyogV2FzbVBhcnNl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGNDBF
OEMxRDU5MDFGMjAwOTlBMUI2IC8qIFdhc21QYXJzZXIuaCAqLzsgfTsKQEAgLTMyNjIsNiArMzI2
Myw3IEBACiAJCTUzMTFCRDQ5MUVBNTgxRTUwMDUyNTI4MSAvKiBXYXNtT01HUGxhbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtT01HUGxhbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MzEzNzRCQzFENUNFNjc2MDBBRjdBMEIgLyogV2FzbVBsYW4uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbVBsYW4uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTMxMzc0QkUxRDVDRTk1MDAwQUY3QTBCIC8qIFdhc21QbGFuLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21QbGFuLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMxRDRFMTkxRjU5Q0REMjAwRUM4MzZDIC8qIHRl
c3RhcGkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdGVzdGFwaS5jcHA7IHBhdGggPSBBUEkvdGVz
dHMvdGVzdGFwaS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzM0IxNURFMURD
N0Y0NjMwMDRENTAwQSAvKiBXYXNtT3BzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdhc21PcHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0MUZDNkYxREFD
MzNFNTAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHA7IHBhdGgg
PSBiMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTM0MUZDNzExREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1
ZS5oOyBwYXRoID0gYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMzQzMSw3ICszNDMzLDYgQEAKIAkJNTM5MTdFN0ExQjc5MDZFNDAwMEVC
RDMzIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90
eXBlRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzOTE3RTdDMUI3
OTExMDYwMDBFQkQzMyAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM5MTdFODMxQjc5MUNCODAwMEVCRDMzIC8qIFR5cGVk
QXJyYXlQcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUg
PSBUeXBlZEFycmF5UHJvdG90eXBlLmpzOyBwYXRoID0gYnVpbHRpbnMvVHlwZWRBcnJheVByb3Rv
dHlwZS5qczsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQk1MzlFQjA3MTFENTUzREY4
MDBDODJFRjcgLyogdGVzdFdhc20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gdGVzdFdhc20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzlGQjhC
OTFDOTlEQTdDMDA5NDBGQTEgLyogSlNBcnJheUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNBcnJheUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTNCMEJFMzMxRTU2MUFDOTAwQThGQzI5IC8qIEdldHRlclNldHRlckFjY2Vzc0Nhc2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzQjBCRTM1MUU1NjFC
MDkwMEE4RkMyOSAvKiBQcm94eWFibGVBY2Nlc3NDYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFByb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTQyMCwxMCArNTQyMSwxMCBAQAogCQkJCUZFQjUxRjZCMUE5N0I2
ODgwMDFGOTIxQyAvKiBSZWdyZXNzMTQxODA5Lm1tICovLAogCQkJCUZFQ0I4QjI5MUQyNUNBQkIw
MDZGMjQ2MyAvKiB0ZXN0YXBpLWZ1bmN0aW9uLW92ZXJyaWRlcy5qcyAqLywKIAkJCQkxNEJENUEy
RDBBM0U5MUY2MDBCQUY1OUMgLyogdGVzdGFwaS5jICovLAorCQkJCTUzMUQ0RTE5MUY1OUNERDIw
MEVDODM2QyAvKiB0ZXN0YXBpLmNwcCAqLywKIAkJCQkxNEQ4NTc3NDBBNDY5NkM4MDAzMjE0NkMg
LyogdGVzdGFwaS5qcyAqLywKIAkJCQk4NkQyMjIxOTE2N0VGOTQ0MDAyNEM4MDQgLyogdGVzdGFw
aS5tbSAqLywKIAkJCQk2NTExMjJFNTE0MDQ2OUJBMDAyQjEwMUQgLyogdGVzdFJlZ0V4cC5jcHAg
Ki8sCi0JCQkJNTM5RUIwNzExRDU1M0RGODAwQzgyRUY3IC8qIHRlc3RXYXNtLmNwcCAqLywKIAkJ
CQk1MzQ5MDI4MjFDNzI0MkM4MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCAqLywKIAkJ
CQk1MzQ5MDI4MzFDNzI0MkM4MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmggKi8sCiAJCQkp
OwpAQCAtNjE4MSw2ICs2MTgyLDcgQEAKIAkJCQk5OTZCNzMwQTFCRDlGQTJDMDAzMzFCODQgLyog
SlNEYXRhVmlld1Byb3RvdHlwZS5sdXQuaCAqLywKIAkJCQk5OTZCNzMwQjFCRDlGQTJDMDAzMzFC
ODQgLyogSlNHbG9iYWxPYmplY3QubHV0LmggKi8sCiAJCQkJRTMzRjUwODYxQjg0NDlFRjAwNDEz
ODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IubHV0LmggKi8sCisJCQkJOTk2Qjcz
MEMxQkQ5RkEyQzAwMzMxQjg0IC8qIEpTTW9kdWxlTG9hZGVyLmx1dC5oICovLAogCQkJCUJDODdD
REI4MTA3MTJBQ0EwMDA2MTRDRiAvKiBKU09OT2JqZWN0Lmx1dC5oICovLAogCQkJCTdDMTg0RTI0
MTdCRkZBMzYwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCAqLywKIAkJCQk3
QzE4NEUyNTE3QkZGQTM2MDA3Q0I2M0EgLyogSlNQcm9taXNlUHJvdG90eXBlLmx1dC5oICovLApA
QCAtNjE4OCw3ICs2MTkwLDYgQEAKIAkJCQlCQzE4QzUyRDBFMTZGQ0UxMDBCMzQ0NjAgLyogTGV4
ZXIubHV0LmggKi8sCiAJCQkJNzBERTlBMDgxQkU3RDY3MDAwNUQ4OUQ5IC8qIExMSW50QXNzZW1i
bHkuaCAqLywKIAkJCQk3MDM1NTg3RTFDNDE4NDU4MDA0QkQ3QkYgLyogTWFwUHJvdG90eXBlLmx1
dC5oICovLAotCQkJCTk5NkI3MzBDMUJEOUZBMkMwMDMzMUI4NCAvKiBNb2R1bGVMb2FkZXIubHV0
LmggKi8sCiAJCQkJQkMyNjgwRTYwRTE2RDUyMzAwQTA2RTkyIC8qIE51bWJlckNvbnN0cnVjdG9y
Lmx1dC5oICovLAogCQkJCTk5NkI3MzBEMUJEOUZBMkMwMDMzMUI4NCAvKiBOdW1iZXJQcm90b3R5
cGUubHV0LmggKi8sCiAJCQkJOTk2QjczMEUxQkQ5RkEyQzAwMzMxQjg0IC8qIE9iamVjdENvbnN0
cnVjdG9yLmx1dC5oICovLApAQCAtODkxNCw2ICs4OTE1LDcgQEAKIAkJCQkwRkI0Njc4MDFGRERB
NkYxMDAzRkNCMDkgLyogSXNvQ2VsbFNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCNDY3ODEx
RkREQTZGNzAwM0ZDQjA5IC8qIElzb0NlbGxTZXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkRDRTEyRDFGQUZCNEU1MDA2RjM5MDEgLyogSXNvU3Vic3BhY2UuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGNUUwRkU3MjA4NkFENDgwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4QjlGNkQ1NjFENTkxMkZBMDAxQzczOUYgLyogSXRlcmF0aW9uS2lu
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU0RDU1QjgxQUU3MTZDQTAwNTJFNDU5IC8qIEl0ZXJh
dGlvblN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzAxMTNENEMxQThEQjA5MzAwMzg0OEM0
IC8qIEl0ZXJhdG9yT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCkBAIC05MDQ2LDYgKzkwNDgs
NyBAQAogCQkJCTk5NTlFOTJEMUJEMTdGQTQwMDFBQTQxMyAvKiBqc21pbi5weSBpbiBIZWFkZXJz
ICovLAogCQkJCUUzRDIzOUM5MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlEOTcyMjc1MkRDNTQ0NTlCOTEyNUI1MzkgLyogSlNNb2R1
bGVMb2FkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5NkI3MzIwMUJEQTA4RUYwMDMzMUI4NCAv
KiBKU01vZHVsZUxvYWRlci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzMThDQkMxMUI4QUVG
NTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTM5REE0QTcxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMzNFOEQxRDFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRpdmVTdGRGdW5jdGlv
bi5oIGluIEhlYWRlcnMgKi8sCkBAIC05MTk1LDcgKzkxOTgsNiBAQAogCQkJCTg2QzU2OEUyMTFB
MjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNDcw
M0NENzE5Mjg0NENDMDAxM0ZCRUEgLyogbW9kZWxzLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJRTM3
OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVycyAqLywK
LQkJCQk5OTZCNzMyMDFCREEwOEVGMDAzMzFCODQgLyogTW9kdWxlTG9hZGVyLmx1dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOUY2MzQzNDU3NzI3NEZBRkI5MzM2QzM4IC8qIE1vZHVsZU5hbWVzcGFj
ZUFjY2Vzc0Nhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QUQ5MTBGMURDQTkyOTQwMDE0RjlG
RSAvKiBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDczNDFE
NjFEQzAyRUI5MDBBQTI5QkEgLyogTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaCBpbiBIZWFkZXJz
ICovLApAQCAtOTQ5MCw3ICs5NDkyLDYgQEAKIAkJCQk1M0Y4RDIwMDFFODM4N0Q0MDBEMjExMTYg
LyogV2FzbUJCUVBsYW5JbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDRCMURGQTFERjI0
NEUyMDA3MUFFMzIgLyogV2FzbUJpbmRpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyNUMwRERB
MUU5MzU4NDcwMDIxODRDRCAvKiBXYXNtQ2FsbGVlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjVF
MEZFNzIwODZBRDQ4MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQZXJWTS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTNGRDA0RDQxRDdBQjI5MTAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29udmVudGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTI2QUM0QjcxRTk3N0M1RDAwMzUwMEUxIC8qIFdhc21Db2Rl
QmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUFENDEyQjM0MUU3QjJFOUUwMDhBRjE1NyAvKiBX
YXNtQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDExNSw2ICsxMDExNiw3IEBACiAJCQkJ
NjU1NzBGNUExQUE0QzNFQTAwOUIzQzIzIC8qIFJlZ3Jlc3MxNDEyNzUubW0gaW4gU291cmNlcyAq
LywKIAkJCQlGRUI1MUY2QzFBOTdCNjg4MDAxRjkyMUMgLyogUmVncmVzczE0MTgwOS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTE0NDBGNjEwMEE0Rjg1NjcwMDA1RjA2MSAvKiB0ZXN0YXBpLmMgaW4g
U291cmNlcyAqLywKKwkJCQk1M0VBRkUyRjIwOERGQUI0MDA3RDUyNEIgLyogdGVzdGFwaS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NkQyMjIxQTE2N0VGOTQ0MDAyNEM4MDQgLyogdGVzdGFwaS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTUzNDkwMjg1MUM3Mjc2QjcwMDEyQkNCOCAvKiBUeXBlZEFy
cmF5Q1Rlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwpAQCAtMTA1NjksNiArMTA1NzEsMTAg
QEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25S
ZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNj
b25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMg
PSAoCisJCQkJCSJcIiQoSkFWQVNDUklQVENPUkVfRlJBTUVXT1JLU19ESVIpL0phdmFTY3JpcHRD
b3JlLmZyYW1ld29yay9Qcml2YXRlSGVhZGVyc1wiIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJ
CQkJKTsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07CkBAIC0xMDU3Niw2ICsxMDU4Miwx
MCBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlv
blJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54
Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRI
UyA9ICgKKwkJCQkJIlwiJChKQVZBU0NSSVBUQ09SRV9GUkFNRVdPUktTX0RJUikvSmF2YVNjcmlw
dENvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzXCIiLAorCQkJCQkiJChpbmhlcml0ZWQpIiwK
KwkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwpAQCAtMTA1ODMsNiArMTA1
OTMsMTAgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3Vy
YXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFi
bGUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUhFQURFUl9TRUFSQ0hf
UEFUSFMgPSAoCisJCQkJCSJcIiQoSkFWQVNDUklQVENPUkVfRlJBTUVXT1JLU19ESVIpL0phdmFT
Y3JpcHRDb3JlLmZyYW1ld29yay9Qcml2YXRlSGVhZGVyc1wiIiwKKwkJCQkJIiQoaW5oZXJpdGVk
KSIsCisJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKQEAgLTEwODc1
LDYgKzEwODg5LDEwIEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VD
b25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xF
eGVjdXRhYmxlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlIRUFERVJf
U0VBUkNIX1BBVEhTID0gKAorCQkJCQkiXCIkKEpBVkFTQ1JJUFRDT1JFX0ZSQU1FV09SS1NfRElS
KS9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnNcIiIsCisJCQkJCSIkKGlu
aGVyaXRlZCkiLAorCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IFByb2ZpbGluZzsKIAkJfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9jb25maWcuaAppbmRleCAxZDFlZDdiNmY4YzZhYzA5ZjE0NDQ0ZjZlZjM4MDU2Mjk5
ODE5ZDdlLi5jZGM1MjhmMTA3Y2NkM2QxNDljOWEyZDI1MmJhMDgzNjAzMDBhOTA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2NvbmZpZy5oCkBAIC0yMyw2ICsyMyw4IEBACiAjaW5jbHVkZSAiY21ha2Vjb25maWcu
aCIKICNlbmRpZgogCisjZGVmaW5lIEpTQ19BUElfQVZBSUxBQkxFKC4uLikKKwogI2luY2x1ZGUg
IkpTRXhwb3J0TWFjcm9zLmgiCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Bvc3Rwcm9jZXNzLWhlYWRlcnMuc2ggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcG9zdHByb2Nlc3MtaGVhZGVycy5zaAppbmRleCBjODYxODQzN2QyYTA3Nzk0OWE1
OTBhYzcwMTdmODI2YjUyZDZkMmIzLi5kZTY1MzY2ZmY3YmZlOWUyZGNmMDE3YjFkMWNmMTY1NDIw
OTkzYTQzIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcG9zdHByb2Nlc3MtaGVh
ZGVycy5zaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcG9zdHByb2Nlc3MtaGVhZGVycy5z
aApAQCAtMSwxOCArMSwxMjEgQEAKLWNkICIke1RBUkdFVF9CVUlMRF9ESVJ9LyR7UFVCTElDX0hF
QURFUlNfRk9MREVSX1BBVEh9IgotCi1VTklGREVGX09QVElPTlM9Ii1EX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRD0ke1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SfSIKLQotZm9y
ICgoaSA9IDA7IGkgPCAke1NDUklQVF9JTlBVVF9GSUxFX0NPVU5UfTsgKytpKSk7IGRvCi0gICAg
ZXZhbCBIRUFERVI9XCR7U0NSSVBUX0lOUFVUX0ZJTEVfJHtpfX07Ci0gICAgdW5pZmRlZiAtQiAk
e1VOSUZERUZfT1BUSU9OU30gLW8gIiR7SEVBREVSfSIudW5pZmRlZiAiJHtIRUFERVJ9IgotICAg
IGNhc2UgJD8gaW4KLSAgICAwKQotICAgICAgICBybSAiJHtIRUFERVJ9Ii51bmlmZGVmCi0gICAg
ICAgIDs7Ci0gICAgMSkKLSAgICAgICAgbXYgIiR7SEVBREVSfSJ7LnVuaWZkZWYsfQotICAgICAg
ICA7OwotICAgICopCi0gICAgICAgIGV4aXQgMQotICAgIGVzYWMKLWRvbmUKKyMhL2Jpbi9zaAor
IworIyBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKworaWYgW1sgIiR7SlND
X0ZSQU1FV09SS19IRUFERVJfUE9TVFBST0NFU1NJTkdfRElTQUJMRUR9IiA9PSAiWUVTIiBdXTsg
dGhlbgorICAgIGV4aXQgMDsKK2ZpCisKK1RJTUVTVEFNUF9QQVRIPSR7VEFSR0VUX1RFTVBfRElS
fS8kezAjIyovfQorCitpZiBbWyAtZSAkVElNRVNUQU1QX1BBVEggJiYgJDAgLW50ICRUSU1FU1RB
TVBfUEFUSCBdXTsgdGhlbgorICAgIHJtICIke1RJTUVTVEFNUF9QQVRIfSI7CitmaQorCitmdW5j
dGlvbiBwcm9jZXNzX2RlZmluaXRpb25zICgpIHsKKyAgICBsb2NhbCBERUZJTklUSU9OU19GSUxF
PSQxCisKKyAgICBpZiBbWyAhIC1mICIke0RFRklOSVRJT05TX0ZJTEV9IiBdXTsgdGhlbgorICAg
ICAgICByZXR1cm4gMQorICAgIGZpCisKKyAgICBpZiBbWyAtZSAkVElNRVNUQU1QX1BBVEggJiYg
IiR7REVGSU5JVElPTlNfRklMRX0iIC1udCAkVElNRVNUQU1QX1BBVEggXV07IHRoZW4KKyAgICAg
ICAgcm0gIiR7VElNRVNUQU1QX1BBVEh9IjsKKyAgICBmaQorCisgICAgc291cmNlICIke0RFRklO
SVRJT05TX0ZJTEV9IgorfQorCitmdW5jdGlvbiByZXdyaXRlX2hlYWRlcnMgKCkgeworICAgIGlm
IFtbICIke1BMQVRGT1JNX05BTUV9IiA9PSAibWFjb3N4IiBdXTsgdGhlbgorICAgICAgICBbWyAt
biAke09TWF9WRVJTSU9OfSBdXSB8fCBPU1hfVkVSU0lPTj0ke01BQ09TWF9ERVBMT1lNRU5UX1RB
UkdFVH0KKyAgICAgICAgW1sgLW4gJHtJT1NfVkVSU0lPTn0gXV0gfHwgSU9TX1ZFUlNJT049Ik5B
IgorICAgIGVsaWYgW1sgIiR7UExBVEZPUk1fTkFNRX0iID1+ICJpcGhvbmUiIF1dOyB0aGVuCisg
ICAgICAgIFtbIC1uICR7SU9TX1ZFUlNJT059IF1dIHx8IElPU19WRVJTSU9OPSR7SVBIT05FT1Nf
REVQTE9ZTUVOVF9UQVJHRVR9CisgICAgICAgIFtbIC1uICR7T1NYX1ZFUlNJT059IF1dIHx8IE9T
WF9WRVJTSU9OPSJOQSIKKyAgICBmaQorCisgICAgU0VEX09QVElPTlM9KAorICAgICkKKworICAg
IGlmIFtbIC1uICIkT1NYX1ZFUlNJT04iICYmIC1uICIkSU9TX1ZFUlNJT04iIF1dOyB0aGVuCisg
ICAgICAgIFNFRF9PUFRJT05TKz0oCisgICAgICAgICAgICAtZSBzL0pTQ19NQUNfVEJBLyR7T1NY
X1ZFUlNJT059L2cKKyAgICAgICAgICAgIC1lIHMvSlNDX0lPU19UQkEvJHtJT1NfVkVSU0lPTn0v
ZworICAgICAgICAgICAgLWUgcy9KU0NfQVBJX0FWQUlMQUJMRS9BUElfQVZBSUxBQkxFLworICAg
ICAgICAgICAgLWUgcy9KU0NfQVBJX0RFUFJFQ0FURUQvQVBJX0RFUFJFQ0FURUQvCisgICAgICAg
ICAgICAtZSAicy9eSlNDX0NMQVNTX0FWQUlMQUJMRS9KU0NfRVhURVJOIEFQSV9BVkFJTEFCTEUv
IgorICAgICAgICAgICAgLWUgInMvXkpTQ19DTEFTU19ERVBSRUNBVEVEL0pTQ19FWFRFUk4gQVBJ
X0RFUFJFQ0FURUQvIgorICAgICAgICApCisgICAgZWxzZQorICAgICAgICBTRURfT1BUSU9OUys9
KC1lICdzL0pTQ18oQVBJX3xDTEFTU18pQVZBSUxBQkxFXCguKlwpXHMqXCkvL2cnIC1lICdzL0pT
Q18oQVBJX3xDTEFTU18pREVQUkVDQVRFRChfV0lUSF9SRVBMQUNFTUVOVCk/XCguKlwpXHMqXCkv
L2cnKQorICAgIGZpCisKKyAgICBTRURfT1BUSU9OUys9KCR7T1RIRVJfU0VEX09QVElPTlNbKl19
KQorCisgICAgZm9yIEhFQURFUl9QQVRIIGluICIkezF9LyIqLmg7IGRvCisgICAgICAgIGlmIFtb
ICIkSEVBREVSX1BBVEgiIC1udCAkVElNRVNUQU1QX1BBVEggXV07IHRoZW4KKyAgICAgICAgICAg
IGRpdHRvICIke0hFQURFUl9QQVRIfSIgIiR7VEFSR0VUX1RFTVBfRElSfS8ke0hFQURFUl9QQVRI
IyMqL30iCisgICAgICAgICAgICBzZWQgLWkgLnRtcCAtRSAiJHtTRURfT1BUSU9OU1tAXX0iICIk
e1RBUkdFVF9URU1QX0RJUn0vJHtIRUFERVJfUEFUSCMjKi99IiB8fCBleGl0ICQ/CisgICAgICAg
ICAgICBtdiAiJHtUQVJHRVRfVEVNUF9ESVJ9LyR7SEVBREVSX1BBVEgjIyovfSIgIiRIRUFERVJf
UEFUSCIKKyAgICAgICAgZmkKKyAgICBkb25lCit9CisKK2Z1bmN0aW9uIHJld3JpdGVfdmVyc2lv
bl9taW5fcmVxdWlyZWRfbWFjcm9zKCkgeworICAgIGVjaG8gInJld3JpdGVfdmVyc2lvbl9taW5f
cmVxdWlyZWRfbWFjcm9zIgorICAgIGVjaG8gIiR7MX0iCisgICAgIyBXZSBuZWVkIHRvIG1ha2Ug
c3VyZSB3ZSB1bnNldCB0aGUgb3RoZXIgdGFyZ2V0IG90aGVyd2lzZSB1bmlmZGVmIHdpbGwgZmFp
bCB0byBoYW5kbGUgY29uZGl0aW9ucyB0aGF0IGFyZSBhbiB8fCBvZiBib3RoIHRhcmdldHMuCisg
ICAgaWYgW1sgLXogJHtJT1NfVkVSU0lPTn0gXV07IHRoZW4KKyAgICAgICAgVU5JRkRFRl9PUFRJ
T05TPSItRF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQ9JHtUQVJHRVRfTUFDX09TX1hf
VkVSU0lPTl9NQUpPUn0gLVVfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCIKKyAgICBl
bHNlCisgICAgICAgIFVOSUZERUZfT1BUSU9OUz0iLVVfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEIC1EX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQ9JHtUQVJHRVRfTUFDX09T
X1hfVkVSU0lPTl9NQUpPUn0iCisgICAgZmkKKworICAgIGZvciBIRUFERVJfUEFUSCBpbiAiJHsx
fS8iKi5oOyBkbworICAgICAgICBpZiBbWyAiJEhFQURFUl9QQVRIIiAtbnQgJFRJTUVTVEFNUF9Q
QVRIIF1dOyB0aGVuCisgICAgICAgICAgICB1bmlmZGVmIC1CICR7VU5JRkRFRl9PUFRJT05TfSAt
byAiJHtIRUFERVJfUEFUSH0iLnVuaWZkZWYgIiR7SEVBREVSX1BBVEh9IgorICAgICAgICAgICAg
Y2FzZSAkPyBpbgorICAgICAgICAgICAgICAgIDApCisgICAgICAgICAgICAgICAgICAgIHJtICIk
e0hFQURFUl9QQVRIfSIudW5pZmRlZgorICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAg
ICAgICAgIDEpCisgICAgICAgICAgICAgICAgICAgIG12ICIke0hFQURFUl9QQVRIfSJ7LnVuaWZk
ZWYsfQorICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgICopCisgICAgICAg
ICAgICAgICAgICAgIGV4aXQgMQorICAgICAgICAgICAgZXNhYworICAgICAgICBmaQorICAgIGRv
bmUKK30KKworREVGSU5JVElPTlNfUEFUSD11c3IvbG9jYWwvaW5jbHVkZS9XZWJLaXRBZGRpdGlv
bnMvU2NyaXB0cy9wb3N0cHJvY2Vzcy1mcmFtZXdvcmstaGVhZGVycy1kZWZpbml0aW9ucworCitw
cm9jZXNzX2RlZmluaXRpb25zICIke0JVSUxUX1BST0RVQ1RTX0RJUn0vJHtERUZJTklUSU9OU19Q
QVRIfSIgfHwgcHJvY2Vzc19kZWZpbml0aW9ucyAiJHtTREtST09UfS8ke0RFRklOSVRJT05TX1BB
VEh9IgorCityZXdyaXRlX2hlYWRlcnMgIiR7VEFSR0VUX0JVSUxEX0RJUn0vJHtQVUJMSUNfSEVB
REVSU19GT0xERVJfUEFUSH0iCityZXdyaXRlX3ZlcnNpb25fbWluX3JlcXVpcmVkX21hY3JvcyAi
JHtUQVJHRVRfQlVJTERfRElSfS8ke1BVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIfSIKKwordG91
Y2ggJHtUSU1FU1RBTVBfUEFUSH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342228</attachid>
            <date>2018-06-07 18:36:46 -0700</date>
            <delta_ts>2018-06-08 13:11:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175836-20180607183643.patch</filename>
            <type>text/plain</type>
            <size>105538</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyNjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YTg5OWQ5MzQ5NDNjNjBmYWYzYzI0YjJkMmQ4MzkxNzNiOWU5NGM2Li5lMzAyZjc3ZTZlN2ZkZjc1
NDY0OGIyNjkzMTdkN2FlMWI5ZGQxODhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMTgtMDQtMjMgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0pTQyBBUEldIFdlIHNob3VsZCBzdXBwb3J0IHRoZSBzeW1ib2wg
dHlwZSBpbiBvdXIgQy9PYmotQyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTgzNgorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxv
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIGZvbGxvd2luZyBBUEkgYWRkaXRpb25z
OgorICAgICAgICAxKSBUZXN0IGlmIGEgSlNWYWx1ZS9KU1ZhbHVlUmVmIGlzIGEgc3ltYm9sIHZp
YSBhbnkgb2YgdGhlIG1ldGhvZHMgQVBJIGFyZSBhYmxlIHRvIHRlc3QgZm9yIHRoZSB0eXBlcyBv
ZiBvdGhlciBKU1ZhbHVlcy4KKyAgICAgICAgMikgQ3JlYXRlIGEgc3ltYm9sIG9uIGJvdGggQVBJ
cy4KKyAgICAgICAgMykgR2V0L1NldC9EZWxldGUvRGVmaW5lIHByb3BlcnR5IG5vdyB0YWtlIGlk
cyBpbiB0aGUgT2JqLUMgQVBJLgorICAgICAgICA0KSBBZGQgR2V0L1NldC9EZWxldGUgaW4gdGhl
IEMgQVBJLgorCisgICAgICAgIFdlIGNhbiBkbyAzIGJlY2F1c2UgaXQgaXMgYm90aCBiaW5hcnkg
YW5kIHNvdXJjZSBjb21wYXRhYmxlIHdpdGgKKyAgICAgICAgdGhlIGV4aXN0aW5nIEFQSS4gSSBh
ZGRlZCAoNCkgYmVjYXVzZSB0aGUgY3VycmVudCBwcm9wZXJ0eSBhY2Nlc3MKKyAgICAgICAgQVBJ
cyBvbmx5IGhhdmUgdGhlIGFiaWxpdHkgdG8gZ2V0IFN0cmluZ3MuIEl0IHdhcyBwb3NzaWJsZSB0
bworICAgICAgICBtZXJnZSBzeW1ib2xzIGludG8gSlNTdHJpbmdSZWYgYnV0IHRoYXQgZmVsdCBj
b25mdXNpbmcgYW5kIGV4cG9zZXMKKyAgICAgICAgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBv
dXIgZW5naW5lLiBUaGUgbmV3IGZ1bmN0aW9ucyBtYXRjaCB0aGUKKyAgICAgICAgc2FtZSBtZWFu
aW5nIHRoYXQgdGhleSBoYXZlIGluIEpTLCB0aHVzIHNob3VsZCBiZSBmb3J3YXJkCisgICAgICAg
IGNvbXBhdGlibGUgd2l0aCBhbnkgZnV0dXJlIGxhbmd1YWdlIGV4dGVuc2lvbnMuCisKKyAgICAg
ICAgTGFzdGx5LCB0aGlzIHBhdGNoIGFkZHMgdGhlIHNhbWUgYXZhaWxhYmlsaXR5IHByZXByb2Nj
ZXNzaW5nIHBoYXNlCisgICAgICAgIGluIFdlYkNvcmUgdG8gSmF2YVNjcmlwdENvcmUsIHdoaWNo
IGVuYWJsZXMgVEJBIGZlYXR1cmVzIGZvcgorICAgICAgICB0ZXN0aW5nIG9uIHByZXZpb3VzIHJl
bGVhc2VzLgorCisgICAgICAgICogQVBJL0pTQmFzZVByaXZhdGUuaDoKKyAgICAgICAgKiBBUEkv
SlNDb250ZXh0Lmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFByaXZhdGUuaDoKKyAgICAgICAg
KiBBUEkvSlNDb250ZXh0UmVmLmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZkludGVybmFs
Lmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaDoKKyAgICAgICAgKiBBUEkv
SlNNYW5hZ2VkVmFsdWUuaDoKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAg
ICAoSlNPYmplY3RIYXNQcm9wZXJ0eUtleSk6CisgICAgICAgIChKU09iamVjdEdldFByb3BlcnR5
S2V5KToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJvcGVydHlLZXkpOgorICAgICAgICAoSlNPYmpl
Y3REZWxldGVQcm9wZXJ0eUtleSk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmg6CisgICAg
ICAgICogQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmg6CisgICAgICAgICogQVBJL0pTVHlwZWRBcnJh
eS5oOgorICAgICAgICAqIEFQSS9KU1ZhbHVlLmg6CisgICAgICAgICogQVBJL0pTVmFsdWUubW06
CisgICAgICAgICgrW0pTVmFsdWUgdmFsdWVXaXRoTmV3U3ltYm9sRnJvbURlc2NyaXB0aW9uOmlu
Q29udGV4dDpdKToKKyAgICAgICAgKHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbik6CisgICAgICAg
ICgtW0pTVmFsdWUgdmFsdWVGb3JQcm9wZXJ0eTp2YWx1ZUZvclByb3BlcnR5Ol0pOgorICAgICAg
ICAoLVtKU1ZhbHVlIHNldFZhbHVlOmZvclByb3BlcnR5OnNldFZhbHVlOmZvclByb3BlcnR5Ol0p
OgorICAgICAgICAoLVtKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5OmRlbGV0ZVByb3BlcnR5Ol0pOgor
ICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Omhhc1Byb3BlcnR5Ol0pOgorICAgICAgICAo
LVtKU1ZhbHVlIGRlZmluZVByb3BlcnR5OmRlc2NyaXB0b3I6ZGVmaW5lUHJvcGVydHk6ZGVzY3Jp
cHRvcjpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSBpc1N5bWJvbF0pOgorICAgICAgICAoLVtKU1Zh
bHVlIG9iamVjdEZvcktleWVkU3Vic2NyaXB0Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIHNldE9i
amVjdDpmb3JLZXllZFN1YnNjcmlwdDpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSB2YWx1ZUZvclBy
b3BlcnR5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIHNldFZhbHVlOmZvclByb3Bl
cnR5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5Ol0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Ol0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtKU1ZhbHVlIGRlZmluZVByb3BlcnR5OmRlc2NyaXB0b3I6XSk6IERlbGV0ZWQuCisg
ICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgorICAgICAgICAoSlNWYWx1ZUdldFR5cGUpOgor
ICAgICAgICAoSlNWYWx1ZUlzU3ltYm9sKToKKyAgICAgICAgKEpTVmFsdWVNYWtlU3ltYm9sKToK
KyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5oOgorICAgICAgICAqIEFQSS9XZWJLaXRBdmFpbGFi
aWxpdHkuaDoKKyAgICAgICAgKiBBUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRl
clRlc3QubW06CisgICAgICAgICogQVBJL3Rlc3RzL0N1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVz
dC5jOgorICAgICAgICAqIEFQSS90ZXN0cy9EYXRlVGVzdHMubW06CisgICAgICAgICogQVBJL3Rl
c3RzL0pTRXhwb3J0VGVzdHMubW06CisgICAgICAgICogQVBJL3Rlc3RzL0pTTm9kZS5jOgorICAg
ICAgICAqIEFQSS90ZXN0cy9KU05vZGVMaXN0LmM6CisgICAgICAgICogQVBJL3Rlc3RzL05vZGUu
YzoKKyAgICAgICAgKiBBUEkvdGVzdHMvTm9kZUxpc3QuYzoKKyAgICAgICAgKiBBUEkvdGVzdHMv
bWluaWRvbS5jOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLmM6CisgICAgICAgIChtYWlu
KToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5jcHA6IEFkZGVkLgorICAgICAgICAoQVBJ
U3RyaW5nOjpBUElTdHJpbmcpOgorICAgICAgICAoQVBJU3RyaW5nOjp+QVBJU3RyaW5nKToKKyAg
ICAgICAgKEFQSVN0cmluZzo6b3BlcmF0b3IgSlNTdHJpbmdSZWYpOgorICAgICAgICAoQVBJQ29u
dGV4dDo6QVBJQ29udGV4dCk6CisgICAgICAgIChBUElDb250ZXh0Ojp+QVBJQ29udGV4dCk6Cisg
ICAgICAgIChBUElDb250ZXh0OjpvcGVyYXRvciBKU0dsb2JhbENvbnRleHRSZWYpOgorICAgICAg
ICAoQVBJVmVjdG9yOjpBUElWZWN0b3IpOgorICAgICAgICAoQVBJVmVjdG9yOjp+QVBJVmVjdG9y
KToKKyAgICAgICAgKEFQSVZlY3Rvcjo6YXBwZW5kKToKKyAgICAgICAgKHRlc3RDQVBJVmlhQ3Bw
KToKKyAgICAgICAgKFRlc3RBUEk6OmV2YWx1YXRlU2NyaXB0KToKKyAgICAgICAgKFRlc3RBUEk6
OmNhbGxGdW5jdGlvbik6CisgICAgICAgIChUZXN0QVBJOjpmdW5jdGlvblJldHVybnNUcnVlKToK
KyAgICAgICAgKFRlc3RBUEk6OmNoZWNrKToKKyAgICAgICAgKFRlc3RBUEk6OmNoZWNrSlNBbmRB
UElNYXRjaCk6CisgICAgICAgIChUZXN0QVBJOjppbnRlcmVzdGluZ09iamVjdHMpOgorICAgICAg
ICAoVGVzdEFQSTo6aW50ZXJlc3RpbmdLZXlzKToKKyAgICAgICAgKFRlc3RBUEk6OnJ1bik6Cisg
ICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkubW06CisgICAgICAgICh0ZXN0T2JqZWN0aXZlQ0FQ
SU1haW4pOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogY29uZmlnLmg6CisgICAgICAgICogcG9zdHByb2Nlc3MtaGVhZGVycy5z
aDoKKwogMjAxOC0wNi0wNyAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBEb24ndCB0cnkgdG8gYWxsb2NhdGUgSklUIG1lbW9yeSBpZiB3ZSBkb24ndCBoYXZl
IHRoZSBKSVQgZW50aXRsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNCYXNlUHJpdmF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VQcml2
YXRlLmgKaW5kZXggMTM3NTk0OTcyNzVlNThiZWIwYzEyMjEzNTVmOWZiZWQ0M2QzYjFhNS4uYjZj
OTIwNGM0Y2JkNzJjNGY3YzlmNmExZjU0Y2Q1ZDM0MTU2ZDE0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VQcml2YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0Jhc2VQcml2YXRlLmgKQEAgLTQzLDcgKzQzLDcgQEAgb3ducyBhIGxhcmdl
IG5vbi1HQyBtZW1vcnkgcmVnaW9uLiBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBlbmNvdXJh
Z2UgdGhlCiBnYXJiYWdlIGNvbGxlY3RvciB0byBjb2xsZWN0IHNvb24sIGhvcGluZyB0byByZWNs
YWltIHRoYXQgbGFyZ2Ugbm9uLUdDIG1lbW9yeQogcmVnaW9uLgogKi8KLUpTX0VYUE9SVCB2b2lk
IEpTUmVwb3J0RXh0cmFNZW1vcnlDb3N0KEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBzaXplKSBD
Rl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCB2b2lkIEpTUmVwb3J0RXh0cmFNZW1v
cnlDb3N0KEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBzaXplKSBKU0NfQVBJX0FWQUlMQUJMRSht
YWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogSlNfRVhQT1JUIHZvaWQgSlNEaXNhYmxlR0NUaW1l
cih2b2lkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRl
eHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmgKaW5kZXggMTk0ZTM1
MmJmZTdhZTc1ZjIzNThjZWU2M2Q0NDhmZTFmYTI0ZDM4Mi4uYjFiYmE2OTk0ODIzZjc2ZjY4OGY3
OTdmZjkyOWY5MzllNDc4NWIyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NvbnRleHQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5o
CkBAIC0zOSw3ICszOSw3IEBACiAgSmF2YVNjcmlwdCBleGVjdXRpb24gdGFrZXMgcGxhY2Ugd2l0
aGluIGEgY29udGV4dCwgYW5kIGFsbCBKYXZhU2NyaXB0IHZhbHVlcwogIGFyZSB0aWVkIHRvIGEg
Y29udGV4dC4KICovCi1OU19DTEFTU19BVkFJTEFCTEUoMTBfOSwgN18wKQorSlNDX0NMQVNTX0FW
QUlMQUJMRShtYWNvc3goMTAuOSksIGlvcyg3LjApKQogQGludGVyZmFjZSBKU0NvbnRleHQgOiBO
U09iamVjdAogCiAvKiEKQEAgLTc4LDcgKzc4LDcgQEAgTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzks
IDdfMCkKIEBwYXJhbSBzb3VyY2VVUkwgQSBVUkwgZm9yIHRoZSBzY3JpcHQncyBzb3VyY2UgZmls
ZS4gVXNlZCBieSBkZWJ1Z2dlcnMgYW5kIHdoZW4gcmVwb3J0aW5nIGV4Y2VwdGlvbnMuIFRoaXMg
cGFyYW1ldGVyIGlzIGluZm9ybWF0aXZlIG9ubHk6IGl0IGRvZXMgbm90IGNoYW5nZSB0aGUgYmVo
YXZpb3Igb2YgdGhlIHNjcmlwdC4KIEByZXN1bHQgVGhlIGxhc3QgdmFsdWUgZ2VuZXJhdGVkIGJ5
IHRoZSBzY3JpcHQuCiAqLwotLSAoSlNWYWx1ZSAqKWV2YWx1YXRlU2NyaXB0OihOU1N0cmluZyAq
KXNjcmlwdCB3aXRoU291cmNlVVJMOihOU1VSTCAqKXNvdXJjZVVSTCBOU19BVkFJTEFCTEUoMTBf
MTAsIDhfMCk7CistIChKU1ZhbHVlICopZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0
IHdpdGhTb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMIEpTQ19BUElfQVZBSUxBQkxFKG1hY29z
eCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBAbWV0aG9kZ3JvdXAgQ2FsbGJhY2sgQWNjZXNz
b3JzCkBAIC0xMDEsNyArMTAxLDcgQEAgTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzksIDdfMCkKICBh
IGNhbGxiYWNrIGZyb20gSmF2YVNjcmlwdCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiBuaWwuCiBA
cmVzdWx0IFRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIEphdmFTY3JpcHQgZnVuY3Rpb24gb3Igbmls
IGlmIHRoZXJlIGlzbid0IG9uZS4KICovCi0rIChKU1ZhbHVlICopY3VycmVudENhbGxlZSBOU19B
VkFJTEFCTEUoMTBfMTAsIDhfMCk7CisrIChKU1ZhbHVlICopY3VycmVudENhbGxlZSBKU0NfQVBJ
X0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qIQogQG1ldGhvZApAQCAt
MTc2LDcgKzE3Niw3IEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCiBAcHJvcGVydHkK
IEBkaXNjdXNzaW9uIE5hbWUgb2YgdGhlIEpTQ29udGV4dC4gRXhwb3NlZCB3aGVuIHJlbW90ZSBk
ZWJ1Z2dpbmcgdGhlIGNvbnRleHQuCiAqLwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqbmFt
ZSBOU19BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpu
YW1lIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogQGVuZAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFByaXZhdGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UHJpdmF0ZS5oCmluZGV4IDdk
MWQwY2JkYmI0OGMxNzBlYTc2ZDJiZDYyZDczMGMyMDM5ZDZhOTQuLmZmOTYyMmFkZGY2MGI3YzEw
MzU3ZGFjY2YxYzZmNDFlY2I4NjFmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDb250ZXh0UHJpdmF0ZS5oCkBAIC0zNiwxOSArMzYsMTkgQEAKIEBwcm9wZXJ0eQogQGRpc2N1
c3Npb24gUmVtb3RlIGluc3BlY3Rpb24gc2V0dGluZyBvZiB0aGUgSlNDb250ZXh0LiBEZWZhdWx0
IHZhbHVlIGlzIFlFUy4KICovCi1AcHJvcGVydHkgKHNldHRlcj1fc2V0UmVtb3RlSW5zcGVjdGlv
bkVuYWJsZWQ6KSBCT09MIF9yZW1vdGVJbnNwZWN0aW9uRW5hYmxlZCBOU19BVkFJTEFCTEUoMTBf
MTAsIDhfMCk7CitAcHJvcGVydHkgKHNldHRlcj1fc2V0UmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQ6
KSBCT09MIF9yZW1vdGVJbnNwZWN0aW9uRW5hYmxlZCBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3go
MTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qIQogQHByb3BlcnR5CiBAZGlzY3Vzc2lvbiBTZXQgd2hl
dGhlciBvciBub3QgdGhlIG5hdGl2ZSBjYWxsIHN0YWNrIGlzIGluY2x1ZGVkIHdoZW4gcmVwb3J0
aW5nIGV4Y2VwdGlvbnMuIERlZmF1bHQgdmFsdWUgaXMgWUVTLgogKi8KLUBwcm9wZXJ0eSAoc2V0
dGVyPV9zZXRJbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zOikg
Qk9PTCBfaW5jbHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucyBOU19B
VkFJTEFCTEUoMTBfMTAsIDhfMCk7CitAcHJvcGVydHkgKHNldHRlcj1fc2V0SW5jbHVkZXNOYXRp
dmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9uczopIEJPT0wgX2luY2x1ZGVzTmF0aXZl
Q2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEKIEBwcm9wZXJ0eQogQGRpc2N1c3Npb24gU2V0IHRo
ZSBydW4gbG9vcCB0aGUgV2ViIEluc3BlY3RvciBkZWJ1Z2dlciBzaG91bGQgdXNlIHdoZW4gZXZh
bHVhdGluZyBKYXZhU2NyaXB0IGluIHRoZSBKU0NvbnRleHQuCiAqLwotQHByb3BlcnR5IChzZXR0
ZXI9X3NldERlYnVnZ2VyUnVuTG9vcDopIENGUnVuTG9vcFJlZiBfZGVidWdnZXJSdW5Mb29wIE5T
X0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0Bwcm9wZXJ0eSAoc2V0dGVyPV9zZXREZWJ1Z2dlclJ1
bkxvb3A6KSBDRlJ1bkxvb3BSZWYgX2RlYnVnZ2VyUnVuTG9vcCBKU0NfQVBJX0FWQUlMQUJMRSht
YWNvc3goMTAuMTApLCBpb3MoOC4wKSk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0UmVmLmgKaW5kZXggZTE1Y2FlNTc1NzY0OGEyZmM4ZWEyMTcyMWVlZjUzNWJh
ZDM1N2IyNy4uMjhkMGE2N2U5YWUzMjYyMTFhZDk0ZGUzNmM1MjY0YTc1NDJmYWY4OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oCkBAIC01Myw3ICs1Myw3IEBAIGV4
dGVybiAiQyIgewogIEpTQ29udGV4dEdyb3VwJ3MgcnVuIGxvb3Agb25jZSBpdCBoYXMgYmVlbiBj
cmVhdGVkLgogQHJlc3VsdCBUaGUgY3JlYXRlZCBKU0NvbnRleHRHcm91cC4KICovCi1KU19FWFBP
UlQgSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R3JvdXBDcmVhdGUodm9pZCkgQ0ZfQVZBSUxB
QkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R3Jv
dXBDcmVhdGUodm9pZCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7
CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC02MSwxNCArNjEsMTQgQEAgSlNfRVhQT1JUIEpTQ29udGV4
dEdyb3VwUmVmIEpTQ29udGV4dEdyb3VwQ3JlYXRlKHZvaWQpIENGX0FWQUlMQUJMRSgxMF82LCA3
XzApOwogQHBhcmFtIGdyb3VwIFRoZSBKU0NvbnRleHRHcm91cCB0byByZXRhaW4uCiBAcmVzdWx0
IEEgSlNDb250ZXh0R3JvdXAgdGhhdCBpcyB0aGUgc2FtZSBhcyBncm91cC4KICovCi1KU19FWFBP
UlQgSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R3JvdXBSZXRhaW4oSlNDb250ZXh0R3JvdXBS
ZWYgZ3JvdXApIENGX0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQT1JUIEpTQ29udGV4dEdy
b3VwUmVmIEpTQ29udGV4dEdyb3VwUmV0YWluKEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwKSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24K
IEBhYnN0cmFjdCBSZWxlYXNlcyBhIEphdmFTY3JpcHQgY29udGV4dCBncm91cC4KIEBwYXJhbSBn
cm91cCBUaGUgSlNDb250ZXh0R3JvdXAgdG8gcmVsZWFzZS4KICovCi1KU19FWFBPUlQgdm9pZCBK
U0NvbnRleHRHcm91cFJlbGVhc2UoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXApIENGX0FWQUlMQUJM
RSgxMF82LCA3XzApOworSlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3JvdXBSZWxlYXNlKEpTQ29u
dGV4dEdyb3VwUmVmIGdyb3VwKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3
LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTgzLDcgKzgzLDcgQEAgSlNfRVhQT1JUIHZvaWQg
SlNDb250ZXh0R3JvdXBSZWxlYXNlKEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwKSBDRl9BVkFJTEFC
TEUoMTBfNiwKICBOVUxMIHRvIHVzZSB0aGUgZGVmYXVsdCBvYmplY3QgY2xhc3MuCiBAcmVzdWx0
IEEgSlNHbG9iYWxDb250ZXh0IHdpdGggYSBnbG9iYWwgb2JqZWN0IG9mIGNsYXNzIGdsb2JhbE9i
amVjdENsYXNzLgogKi8KLUpTX0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgSlNHbG9iYWxDb250
ZXh0Q3JlYXRlKEpTQ2xhc3NSZWYgZ2xvYmFsT2JqZWN0Q2xhc3MpIENGX0FWQUlMQUJMRSgxMF81
LCA3XzApOworSlNfRVhQT1JUIEpTR2xvYmFsQ29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVh
dGUoSlNDbGFzc1JlZiBnbG9iYWxPYmplY3RDbGFzcykgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjUpLCBpb3MoNy4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC05Nyw3ICs5Nyw3IEBAIEpT
X0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgSlNHbG9iYWxDb250ZXh0Q3JlYXRlKEpTQ2xhc3NS
ZWYgZ2xvYmFsT2JqZWN0Q2xhc3MpCiBAcmVzdWx0IEEgSlNHbG9iYWxDb250ZXh0IHdpdGggYSBn
bG9iYWwgb2JqZWN0IG9mIGNsYXNzIGdsb2JhbE9iamVjdENsYXNzIGFuZCBhIGNvbnRleHQKICBn
cm91cCBlcXVhbCB0byBncm91cC4KICovCi1KU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpT
R2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIEpTQ2xh
c3NSZWYgZ2xvYmFsT2JqZWN0Q2xhc3MpIENGX0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQ
T1JUIEpTR2xvYmFsQ29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKEpTQ29u
dGV4dEdyb3VwUmVmIGdyb3VwLCBKU0NsYXNzUmVmIGdsb2JhbE9iamVjdENsYXNzKSBKU0NfQVBJ
X0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAg
LTEyOCw3ICsxMjgsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNDb250ZXh0R2V0R2xvYmFs
T2JqZWN0KEpTQ29udGV4dFJlZiBjdHgpOwogQHBhcmFtIGN0eCBUaGUgSlNDb250ZXh0IHdob3Nl
IGdyb3VwIHlvdSB3YW50IHRvIGdldC4KIEByZXN1bHQgY3R4J3MgZ3JvdXAuCiAqLwotSlNfRVhQ
T1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdldEdyb3VwKEpTQ29udGV4dFJlZiBjdHgp
IENGX0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQT1JUIEpTQ29udGV4dEdyb3VwUmVmIEpT
Q29udGV4dEdldEdyb3VwKEpTQ29udGV4dFJlZiBjdHgpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29z
eCgxMC42KSwgaW9zKDcuMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTM2LDcgKzEzNiw3IEBA
IEpTX0VYUE9SVCBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHZXRHcm91cChKU0NvbnRleHRS
ZWYgY3R4KSBDRl9BVkFJTEFCTEUoMTBfCiBAcGFyYW0gY3R4IFRoZSBKU0NvbnRleHQgd2hvc2Ug
Z2xvYmFsIGNvbnRleHQgeW91IHdhbnQgdG8gZ2V0LgogQHJlc3VsdCBjdHgncyBnbG9iYWwgY29u
dGV4dC4KICovCi1KU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpTQ29udGV4dEdldEdsb2Jh
bENvbnRleHQoSlNDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEwXzcsIDdfMCk7CitKU19F
WFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpTQ29udGV4dEdldEdsb2JhbENvbnRleHQoSlNDb250
ZXh0UmVmIGN0eCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjcpLCBpb3MoNy4wKSk7CiAK
IC8qIQogQGZ1bmN0aW9uCkBAIC0xNDYsNyArMTQ2LDcgQEAgSlNfRVhQT1JUIEpTR2xvYmFsQ29u
dGV4dFJlZiBKU0NvbnRleHRHZXRHbG9iYWxDb250ZXh0KEpTQ29udGV4dFJlZiBjdHgpIENGX0FW
QUkKIEBkaXNjdXNzaW9uIEEgSlNHbG9iYWxDb250ZXh0J3MgbmFtZSBpcyBleHBvc2VkIGZvciBy
ZW1vdGUgZGVidWdnaW5nIHRvIG1ha2UgaXQKIGVhc2llciB0byBpZGVudGlmeSB0aGUgY29udGV4
dCB5b3Ugd291bGQgbGlrZSB0byBhdHRhY2ggdG8uCiAqLwotSlNfRVhQT1JUIEpTU3RyaW5nUmVm
IEpTR2xvYmFsQ29udGV4dENvcHlOYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpIENGX0FWQUlM
QUJMRSgxMF8xMCwgOF8wKTsKK0pTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU0dsb2JhbENvbnRleHRD
b3B5TmFtZShKU0dsb2JhbENvbnRleHRSZWYgY3R4KSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3go
MTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC0xNTQsNyArMTU0LDcgQEAg
SlNfRVhQT1JUIEpTU3RyaW5nUmVmIEpTR2xvYmFsQ29udGV4dENvcHlOYW1lKEpTR2xvYmFsQ29u
dGV4dFJlZiBjdHgpIENGX0FWQUlMQUIKIEBwYXJhbSBjdHggVGhlIEpTR2xvYmFsQ29udGV4dCB0
aGF0IHlvdSB3YW50IHRvIG5hbWUuCiBAcGFyYW0gbmFtZSBUaGUgcmVtb3RlIGRlYnVnZ2luZyBu
YW1lIHRvIHNldCBvbiBjdHguCiAqLwotSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0
TmFtZShKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBuYW1lKSBDRl9BVkFJTEFC
TEUoMTBfMTAsIDhfMCk7CitKU19FWFBPUlQgdm9pZCBKU0dsb2JhbENvbnRleHRTZXROYW1lKEpT
R2xvYmFsQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIG5hbWUpIEpTQ19BUElfQVZBSUxBQkxF
KG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZkludGVybmFsLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZkludGVybmFsLmgKaW5kZXgg
NzlkN2ViNmYzOWU3ZTJjYThmNGE5Yjk0ZjI3MjI2ZGIyZjcwNTI5NS4uOWQ0ZjE4YTIyOTUwNzI2
ZDkxMDJkMjUwYjVjYWEwY2U3YWQ1YzcyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NvbnRleHRSZWZJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDb250ZXh0UmVmSW50ZXJuYWwuaApAQCAtNDIsNyArNDIsNyBAQCBleHRlcm4gIkMi
IHsKIEBhYnN0cmFjdCBHZXRzIHRoZSBydW4gbG9vcCB1c2VkIGJ5IHRoZSBXZWIgSW5zcGVjdG9y
IGRlYnVnZ2VyIHdoZW4gZXZhbHVhdGluZyBKYXZhU2NyaXB0IGluIHRoaXMgY29udGV4dC4KIEBw
YXJhbSBjdHggVGhlIEpTR2xvYmFsQ29udGV4dCB3aG9zZSBzZXR0aW5nIHlvdSB3YW50IHRvIGdl
dC4KICovCi1KU19FWFBPUlQgQ0ZSdW5Mb29wUmVmIEpTR2xvYmFsQ29udGV4dEdldERlYnVnZ2Vy
UnVuTG9vcChKU0dsb2JhbENvbnRleHRSZWYgY3R4KSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7
CitKU19FWFBPUlQgQ0ZSdW5Mb29wUmVmIEpTR2xvYmFsQ29udGV4dEdldERlYnVnZ2VyUnVuTG9v
cChKU0dsb2JhbENvbnRleHRSZWYgY3R4KSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTAp
LCBpb3MoOC4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC01MCw3ICs1MCw3IEBAIEpTX0VYUE9S
VCBDRlJ1bkxvb3BSZWYgSlNHbG9iYWxDb250ZXh0R2V0RGVidWdnZXJSdW5Mb29wKEpTR2xvYmFs
Q29udGV4dFJlZiBjdHgpCiBAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgdGhhdCB5b3Ug
d2FudCB0byBjaGFuZ2UuCiBAcGFyYW0gcnVuTG9vcCBUaGUgbmV3IHZhbHVlIG9mIHRoZSBzZXR0
aW5nIGZvciB0aGUgY29udGV4dC4KICovCi1KU19FWFBPUlQgdm9pZCBKU0dsb2JhbENvbnRleHRT
ZXREZWJ1Z2dlclJ1bkxvb3AoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwgQ0ZSdW5Mb29wUmVmIHJ1
bkxvb3ApIENGX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0pTX0VYUE9SVCB2b2lkIEpTR2xvYmFs
Q29udGV4dFNldERlYnVnZ2VyUnVuTG9vcChKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBDRlJ1bkxv
b3BSZWYgcnVuTG9vcCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkp
OwogI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWZQcml2YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaAppbmRleCAxOTYwNGVhNzQ5MzdlZmRhOTY3Y2Uz
ZGY1Nzc3ZDJhMTUxNGRhOGRjLi5lYzY3NmQ4Yzg3MTQ4M2Y4M2ZjYzNjNTY0YjU1NGU4MTcwMzcy
MmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZlBy
aXZhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZlByaXZh
dGUuaApAQCAtNDQsNyArNDQsNyBAQCBleHRlcm4gIkMiIHsKIEBwYXJhbSBjdHggVGhlIEpTQ29u
dGV4dCB3aG9zZSBiYWNrdHJhY2UgeW91IHdhbnQgdG8gZ2V0CiBAcmVzdWx0IEEgc3RyaW5nIGNv
bnRhaW5pbmcgdGhlIGJhY2t0cmFjZQogKi8KLUpTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU0NvbnRl
eHRDcmVhdGVCYWNrdHJhY2UoSlNDb250ZXh0UmVmIGN0eCwgdW5zaWduZWQgbWF4U3RhY2tTaXpl
KSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU0NvbnRl
eHRDcmVhdGVCYWNrdHJhY2UoSlNDb250ZXh0UmVmIGN0eCwgdW5zaWduZWQgbWF4U3RhY2tTaXpl
KSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKICAgICAKIAogLyoh
IApAQCAtODUsMTQgKzg1LDE0IEBAIHR5cGVkZWYgYm9vbAogIG5lZWQgdG8gY2FsbCBKU0NvbnRl
eHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdCBiZWZvcmUgeW91IHN0YXJ0IGV4ZWN1dGluZwog
IGFueSBzY3JpcHRzLgogKi8KLUpTX0VYUE9SVCB2b2lkIEpTQ29udGV4dEdyb3VwU2V0RXhlY3V0
aW9uVGltZUxpbWl0KEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwLCBkb3VibGUgbGltaXQsIEpTU2hv
dWxkVGVybWluYXRlQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpIENGX0FWQUlMQUJM
RSgxMF82LCA3XzApOworSlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25U
aW1lTGltaXQoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIGRvdWJsZSBsaW1pdCwgSlNTaG91bGRU
ZXJtaW5hdGVDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogY29udGV4dCkgSlNDX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCiBAYWJzdHJhY3Qg
Q2xlYXJzIHRoZSBzY3JpcHQgZXhlY3V0aW9uIHRpbWUgbGltaXQuCiBAcGFyYW0gZ3JvdXAgVGhl
IEphdmFTY3JpcHQgY29udGV4dCBncm91cCB0aGF0IHRoZSB0aW1lIGxpbWl0IGlzIGNsZWFyZWQg
b24uCiAqLwotSlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3JvdXBDbGVhckV4ZWN1dGlvblRpbWVM
aW1pdChKU0NvbnRleHRHcm91cFJlZiBncm91cCkgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitK
U19FWFBPUlQgdm9pZCBKU0NvbnRleHRHcm91cENsZWFyRXhlY3V0aW9uVGltZUxpbWl0KEpTQ29u
dGV4dEdyb3VwUmVmIGdyb3VwKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3
LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTEwMSw3ICsxMDEsNyBAQCBKU19FWFBPUlQgdm9p
ZCBKU0NvbnRleHRHcm91cENsZWFyRXhlY3V0aW9uVGltZUxpbWl0KEpTQ29udGV4dEdyb3VwUmVm
IGdyb3VwKSBDRgogQHJlc3VsdCBUaGUgdmFsdWUgb2YgdGhlIHNldHRpbmcsIHRydWUgaWYgcmVt
b3RlIGluc3BlY3Rpb24gaXMgZW5hYmxlZCwgb3RoZXJ3aXNlIGZhbHNlLgogQGRpc2N1c3Npb24g
UmVtb3RlIGluc3BlY3Rpb24gaXMgdHJ1ZSBieSBkZWZhdWx0LgogKi8KLUpTX0VYUE9SVCBib29s
IEpTR2xvYmFsQ29udGV4dEdldFJlbW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4
dFJlZiBjdHgpIENGX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0pTX0VYUE9SVCBib29sIEpTR2xv
YmFsQ29udGV4dEdldFJlbW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4dFJlZiBj
dHgpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBA
ZnVuY3Rpb24KQEAgLTEwOSw3ICsxMDksNyBAQCBKU19FWFBPUlQgYm9vbCBKU0dsb2JhbENvbnRl
eHRHZXRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZChKU0dsb2JhbENvbnRleHRSZWYgY3R4KQogQHBh
cmFtIGN0eCBUaGUgSlNHbG9iYWxDb250ZXh0IHRoYXQgeW91IHdhbnQgdG8gY2hhbmdlLgogQHBh
cmFtIGVuYWJsZWQgVGhlIG5ldyByZW1vdGUgaW5zcGVjdGlvbiBlbmFibGVkIHNldHRpbmcgZm9y
IHRoZSBjb250ZXh0LgogKi8KLUpTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldFJlbW90
ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIGJvb2wgZW5hYmxlZCkg
Q0ZfQVZBSUxBQkxFKDEwXzEwLCA4XzApOyAgICAKK0pTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29u
dGV4dFNldFJlbW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIGJv
b2wgZW5hYmxlZCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOyAg
ICAKIAogLyohCiBAZnVuY3Rpb24KQEAgLTExOCw3ICsxMTgsNyBAQCBKU19FWFBPUlQgdm9pZCBK
U0dsb2JhbENvbnRleHRTZXRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZChKU0dsb2JhbENvbnRleHRS
ZWYgY3R4LAogQHJlc3VsdCBUaGUgdmFsdWUgb2YgdGhlIHNldHRpbmcsIHRydWUgaWYgcmVtb3Rl
IGluc3BlY3Rpb24gaXMgZW5hYmxlZCwgb3RoZXJ3aXNlIGZhbHNlLgogQGRpc2N1c3Npb24gVGhp
cyBzZXR0aW5nIGlzIHRydWUgYnkgZGVmYXVsdC4KICovCi1KU19FWFBPUlQgYm9vbCBKU0dsb2Jh
bENvbnRleHRHZXRJbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25z
KEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpIENGX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0pTX0VY
UE9SVCBib29sIEpTR2xvYmFsQ29udGV4dEdldEluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJl
cG9ydGluZ0V4Y2VwdGlvbnMoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkgSlNDX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTI2LDcg
KzEyNiw3IEBAIEpTX0VYUE9SVCBib29sIEpTR2xvYmFsQ29udGV4dEdldEluY2x1ZGVzTmF0aXZl
Q2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMoCiBAcGFyYW0gY3R4IFRoZSBKU0dsb2Jh
bENvbnRleHQgdGhhdCB5b3Ugd2FudCB0byBjaGFuZ2UuCiBAcGFyYW0gaW5jbHVkZXNOYXRpdmVD
YWxsU3RhY2sgVGhlIG5ldyB2YWx1ZSBvZiB0aGUgc2V0dGluZyBmb3IgdGhlIGNvbnRleHQuCiAq
LwotSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0SW5jbHVkZXNOYXRpdmVDYWxsU3Rh
Y2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucyhKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBib29sIGlu
Y2x1ZGVzTmF0aXZlQ2FsbFN0YWNrKSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitKU19FWFBP
UlQgdm9pZCBKU0dsb2JhbENvbnRleHRTZXRJbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBv
cnRpbmdFeGNlcHRpb25zKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIGJvb2wgaW5jbHVkZXNOYXRp
dmVDYWxsU3RhY2spIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsK
IAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTTWFuYWdlZFZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFu
YWdlZFZhbHVlLmgKaW5kZXggMDEwNzNmYWQ5N2U3MGI3NmJkNmI2NmEzNzMzYWYyNjFjYzUyNzQ5
Yy4uOGMyMzExZDA5OGM5ZTdkMmFkNGQ4ZDc5NTI5ZGU1MDE3NDllYWZmZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUuaApAQCAtNDgsNyArNDgsNyBAQCBUaGUg
cHJpbWFyeSB1c2UgZm9yIGEgSlNNYW5hZ2VkVmFsdWUgaXMgdG8gc3RvcmUgYSBKU1ZhbHVlIGlu
IGFuIE9iamVjdGl2ZS1DCiBvciBTd2lmdCBvYmplY3QgdGhhdCBpcyBleHBvcnRlZCB0byBKYXZh
U2NyaXB0LiBJdCBpcyBpbmNvcnJlY3QgdG8gc3RvcmUgYSBKU1ZhbHVlCiBpbiBhbiBvYmplY3Qg
dGhhdCBpcyBleHBvcnRlZCB0byBKYXZhU2NyaXB0LCBzaW5jZSBkb2luZyBzbyBjcmVhdGVzIGEg
cmV0YWluIGN5Y2xlLgogKi8gCi1OU19DTEFTU19BVkFJTEFCTEUoMTBfOSwgN18wKQorSlNDX0NM
QVNTX0FWQUlMQUJMRShtYWNvc3goMTAuOSksIGlvcyg3LjApKQogQGludGVyZmFjZSBKU01hbmFn
ZWRWYWx1ZSA6IE5TT2JqZWN0CiAKIC8qIQpAQCAtNTcsNyArNTcsNyBAQCBOU19DTEFTU19BVkFJ
TEFCTEUoMTBfOSwgN18wKQogQHJlc3VsdCBUaGUgbmV3IEpTTWFuYWdlZFZhbHVlLgogKi8KICsg
KEpTTWFuYWdlZFZhbHVlICopbWFuYWdlZFZhbHVlV2l0aFZhbHVlOihKU1ZhbHVlICopdmFsdWU7
Ci0rIChKU01hbmFnZWRWYWx1ZSAqKW1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZh
bHVlIGFuZE93bmVyOihpZClvd25lciBOU19BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CisrIChKU01h
bmFnZWRWYWx1ZSAqKW1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIGFuZE93
bmVyOihpZClvd25lciBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSk7
CiAKIC8qIQogQG1ldGhvZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNw
cAppbmRleCBkODBhMDcwYjdhYjY5OGZiNDhhNzEwZGU1YTc2MzM5NWJiNDliMjA3Li4wOThlMDNi
ZmIwM2U1Mjg5MGI3OWM1MWQ2MGVmODdjY2VjMjZiM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtMzY2LDYgKzM2NiwxMDAgQEAgdm9pZCBKU09iamVj
dFNldFByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJp
bmdSZWYgcHJvcGUKICAgICBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhj
ZXB0aW9uKTsKIH0KIAorYm9vbCBKU09iamVjdEhhc1Byb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKK3sKKyAgICBpZiAoIWN0eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pT
KGN0eCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2Vy
KHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisKKyAgICBK
U09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9
IHRvSlMoZXhlYywga2V5KS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGlmIChoYW5kbGVFeGNl
cHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6
OkRpZFRocm93KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHJlc3VsdCA9IGpz
T2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBpZGVudCk7CisgICAgaGFuZGxlRXhjZXB0aW9uSWZO
ZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
SlNWYWx1ZVJlZiBKU09iamVjdEdldFByb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2Jq
ZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sK
KyAgICBpZiAoIWN0eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0
KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gdG9KUyhl
eGVjLCBrZXkpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklm
TmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhy
b3cpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgSlNWYWx1ZSBqc1ZhbHVlID0ganNP
YmplY3QtPmdldChleGVjLCBpZGVudCk7CisgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2Nv
cGUsIGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIGpzVmFsdWUpOwor
fQorCit2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmpl
Y3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIGtleSwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNQcm9wZXJ0
eUF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlm
ICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRv
SlMob2JqZWN0KTsKKyAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVlKTsKKwor
ICAgIElkZW50aWZpZXIgaWRlbnQgPSB0b0pTKGV4ZWMsIGtleSkudG9Qcm9wZXJ0eUtleShleGVj
KTsKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlv
bikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ym9vbCBkb2VzTm90SGF2ZVByb3BlcnR5ID0gYXR0cmlidXRlcyAmJiAhanNPYmplY3QtPmhhc1By
b3BlcnR5KGV4ZWMsIGlkZW50KTsKKyAgICBpZiAoTElLRUxZKCFzY29wZS5leGNlcHRpb24oKSkp
IHsKKyAgICAgICAgaWYgKGRvZXNOb3RIYXZlUHJvcGVydHkpIHsKKyAgICAgICAgICAgIFByb3Bl
cnR5RGVzY3JpcHRvciBkZXNjKGpzVmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAganNP
YmplY3QtPm1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KGpzT2JqZWN0LCBleGVjLCBp
ZGVudCwgZGVzYywgZmFsc2UpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QoanNPYmplY3QpOworICAgICAgICAgICAganNPYmplY3QtPm1ldGhvZFRh
YmxlKCktPnB1dChqc09iamVjdCwgZXhlYywgaWRlbnQsIGpzVmFsdWUsIHNsb3QpOworICAgICAg
ICB9CisgICAgfQorICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNl
cHRpb24pOworfQorCitib29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHlLZXkoSlNDb250ZXh0UmVm
IGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIGtleSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRv
SlMoY3R4KTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2Nr
ZXIodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKworICAg
IEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAgICBJZGVudGlmaWVyIGlkZW50
ID0gdG9KUyhleGVjLCBrZXkpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4
Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1
czo6RGlkVGhyb3cpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgcmVzdWx0ID0g
anNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGpzT2JqZWN0LCBleGVjLCBp
ZGVudCk7CisgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlv
bik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogSlNWYWx1ZVJlZiBKU09iamVjdEdldFByb3Bl
cnR5QXRJbmRleChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIHVuc2lnbmVk
IHByb3BlcnR5SW5kZXgsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBpZiAoIWN0eCkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oCmluZGV4IDk1ZDUzYjdmNGU1
OGU5NmYwY2JjMzE1OTVhZjljNDYxOTc4YWE0M2QuLjAxZGY1MTQ4ZjdkZDNlNzM5ZDA2ZDA1NmQ4
MGExZmQ5Njc2NWUzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgK
QEAgLTQ0MSw3ICs0NDEsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQ29u
c3RydWN0b3IoSlNDb250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYQogIEBkaXNjdXNzaW9u
IFRoZSBiZWhhdmlvciBvZiB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGV4YWN0bHkgbWF0Y2ggdGhl
IGJlaGF2aW9yIG9mIHRoZSBidWlsdC1pbiBBcnJheSBjb25zdHJ1Y3Rvci4gU3BlY2lmaWNhbGx5
LCBpZiBvbmUgYXJndW1lbnQgCiAgaXMgc3VwcGxpZWQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBh
biBhcnJheSB3aXRoIG9uZSBlbGVtZW50LgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNP
YmplY3RNYWtlQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZB
SUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQXJy
YXkoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtNDUyLDcgKzQ1
Miw3IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VBcnJheShKU0NvbnRleHRS
ZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwKICBAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRl
ciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnku
IFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEBy
ZXN1bHQgQSBKU09iamVjdCB0aGF0IGlzIGEgRGF0ZS4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0
UmVmIEpTT2JqZWN0TWFrZURhdGUoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikg
Q0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RN
YWtlRGF0ZShKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlM
QUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC00NjMs
NyArNDYzLDcgQEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZURhdGUoSlNDb250
ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGMKICBAcGFyYW0gZXhjZXB0aW9uIEEg
cG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBp
ZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9u
LgogIEByZXN1bHQgQSBKU09iamVjdCB0aGF0IGlzIGEgRXJyb3IuCiAgKi8KLUpTX0VYUE9SVCBK
U09iamVjdFJlZiBKU09iamVjdE1ha2VFcnJvcihKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCBKU09iamVjdFJlZiBK
U09iamVjdE1ha2VFcnJvcihKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiAgQGZ1bmN0aW9u
CkBAIC00NzQsNyArNDc0LDcgQEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUVy
cm9yKEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LAogIEBwYXJhbSBleGNl
cHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNl
cHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBl
eGNlcHRpb24uCiAgQHJlc3VsdCBBIEpTT2JqZWN0IHRoYXQgaXMgYSBSZWdFeHAuCiAgKi8KLUpT
X0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VSZWdFeHAoSlNDb250ZXh0UmVmIGN0eCwg
c2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgSlNP
YmplY3RSZWYgSlNPYmplY3RNYWtlUmVnRXhwKEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1
bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9zKDcuMCkpOwogCiAvKiEK
IEBmdW5jdGlvbgpAQCAtNTM2LDkgKzUzNiw5IEBAIEpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpTT2Jq
ZWN0R2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKCiBA
cGFyYW0gY3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCiBAcGFyYW0gb2JqZWN0IFRo
ZSBKU09iamVjdCB3aG9zZSBwcm9wZXJ0eSB5b3Ugd2FudCB0byBzZXQuCiBAcGFyYW0gcHJvcGVy
dHlOYW1lIEEgSlNTdHJpbmcgY29udGFpbmluZyB0aGUgcHJvcGVydHkncyBuYW1lLgotQHBhcmFt
IHZhbHVlIEEgSlNWYWx1ZSB0byB1c2UgYXMgdGhlIHByb3BlcnR5J3MgdmFsdWUuCi1AcGFyYW0g
ZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4g
ZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUg
YW4gZXhjZXB0aW9uLgorQHBhcmFtIHZhbHVlIEEgSlNWYWx1ZVJlZiB0byB1c2UgYXMgdGhlIHBy
b3BlcnR5J3MgdmFsdWUuCiBAcGFyYW0gYXR0cmlidXRlcyBBIGxvZ2ljYWxseSBPUmVkIHNldCBv
ZiBKU1Byb3BlcnR5QXR0cmlidXRlcyB0byBnaXZlIHRvIHRoZSBwcm9wZXJ0eS4KK0BwYXJhbSBl
eGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBl
eGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBh
biBleGNlcHRpb24uCiAqLwogSlNfRVhQT1JUIHZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eShKU0Nv
bnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKTsKIApAQCAtNTUzLDYgKzU1Myw1NCBAQCBKU19FWFBPUlQgdm9p
ZCBKU09iamVjdFNldFByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVj
dCwgSlNTdHJpbgogKi8KIEpTX0VYUE9SVCBib29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHkoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3Qg
VGVzdHMgd2hldGhlciBhbiBvYmplY3QgaGFzIGEgZ2l2ZW4gcHJvcGVydHkgdXNpbmcgYSBKU1Zh
bHVlUmVmIGFzIHRoZSBwcm9wZXJ0eSBrZXkuCitAcGFyYW0gb2JqZWN0IFRoZSBKU09iamVjdCB0
byB0ZXN0LgorQHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBw
cm9wZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0g
ZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4g
ZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUg
YW4gZXhjZXB0aW9uLgorQHJlc3VsdCB0cnVlIGlmIHRoZSBvYmplY3QgaGFzIGEgcHJvcGVydHkg
d2hvc2UgbmFtZSBtYXRjaGVzIHByb3BlcnR5S2V5LCBvdGhlcndpc2UgZmFsc2UuCitAZGlzY3Vz
c2lvbiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHBlcmZvcm1pbmcgInByb3BlcnR5S2V5
IGluIG9iamVjdCIgZnJvbSBKYXZhU2NyaXB0LgorKi8KK0pTX0VYUE9SVCBib29sIEpTT2JqZWN0
SGFzUHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1Zh
bHVlUmVmIHByb3BlcnR5S2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxB
QkxFKG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CisKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJh
Y3QgR2V0cyBhIHByb3BlcnR5IGZyb20gYW4gb2JqZWN0IHVzaW5nIGEgSlNWYWx1ZVJlZiBhcyB0
aGUgcHJvcGVydHkga2V5LgorQHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNl
LgorQHBhcmFtIG9iamVjdCBUaGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQgdG8g
Z2V0LgorQHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBwcm9w
ZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0gZXhj
ZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhj
ZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4g
ZXhjZXB0aW9uLgorQHJlc3VsdCBUaGUgcHJvcGVydHkncyB2YWx1ZSBpZiBvYmplY3QgaGFzIHRo
ZSBwcm9wZXJ0eSBrZXksIG90aGVyd2lzZSB0aGUgdW5kZWZpbmVkIHZhbHVlLgorQGRpc2N1c3Np
b24gVGhpcyBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyBwZXJmb3JtaW5nICJvYmplY3RbcHJvcGVy
dHlLZXldIiBmcm9tIEphdmFTY3JpcHQuCisqLworSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNPYmpl
Y3RHZXRQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpT
VmFsdWVSZWYgcHJvcGVydHlLZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKKworLyohCitAZnVuY3Rpb24KK0BhYnN0
cmFjdCBTZXRzIGEgcHJvcGVydHkgb24gYW4gb2JqZWN0IHVzaW5nIGEgSlNWYWx1ZVJlZiBhcyB0
aGUgcHJvcGVydHkga2V5LgorQHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNl
LgorQHBhcmFtIG9iamVjdCBUaGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQgdG8g
c2V0LgorQHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBwcm9w
ZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0gdmFs
dWUgQSBKU1ZhbHVlUmVmIHRvIHVzZSBhcyB0aGUgcHJvcGVydHkncyB2YWx1ZS4KK0BwYXJhbSBh
dHRyaWJ1dGVzIEEgbG9naWNhbGx5IE9SZWQgc2V0IG9mIEpTUHJvcGVydHlBdHRyaWJ1dGVzIHRv
IGdpdmUgdG8gdGhlIHByb3BlcnR5LgorQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBK
U1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5V
TEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KK0BkaXNjdXNzaW9u
IFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXMgcGVyZm9ybWluZyAib2JqZWN0W3Byb3BlcnR5
S2V5XSA9IHZhbHVlIiBmcm9tIEphdmFTY3JpcHQuCisqLworSlNfRVhQT1JUIHZvaWQgSlNPYmpl
Y3RTZXRQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpT
VmFsdWVSZWYgcHJvcGVydHlLZXksIEpTVmFsdWVSZWYgdmFsdWUsIEpTUHJvcGVydHlBdHRyaWJ1
dGVzIGF0dHJpYnV0ZXMsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKKworLyohCitAZnVuY3Rpb24KK0BhYnN0cmFjdCBE
ZWxldGVzIGEgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QgdXNpbmcgYSBKU1ZhbHVlUmVmIGFzIHRo
ZSBwcm9wZXJ0eSBrZXkuCitAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2Uu
CitAcGFyYW0gb2JqZWN0IFRoZSBKU09iamVjdCB3aG9zZSBwcm9wZXJ0eSB5b3Ugd2FudCB0byBk
ZWxldGUuCitAcGFyYW0gcHJvcGVydHlLZXkgQSBKU1ZhbHVlUmVmIGNvbnRhaW5pbmcgdGhlIHBy
b3BlcnR5IGtleSB0byB1c2Ugd2hlbiBsb29raW5nIHVwIHRoZSBwcm9wZXJ0eS4KK0BwYXJhbSBl
eGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBl
eGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBh
biBleGNlcHRpb24uCitAcmVzdWx0IHRydWUgaWYgdGhlIGRlbGV0ZSBvcGVyYXRpb24gc3VjY2Vl
ZHMsIG90aGVyd2lzZSBmYWxzZSAoZm9yIGV4YW1wbGUsIGlmIHRoZSBwcm9wZXJ0eSBoYXMgdGhl
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSBhdHRyaWJ1dGUgc2V0KS4KK0BkaXNjdXNz
aW9uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXMgcGVyZm9ybWluZyAiZGVsZXRlIG9iamVj
dFtwcm9wZXJ0eUtleV0iIGZyb20gSmF2YVNjcmlwdC4KKyovCitKU19FWFBPUlQgYm9vbCBKU09i
amVjdERlbGV0ZVByb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVj
dCwgSlNWYWx1ZVJlZiBwcm9wZXJ0eUtleSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJ
X0FWQUlMQUJMRShtYWNvc3goMTAuMTMpLCBpb3MoMTEuMCkpOworCiAvKiEKIEBmdW5jdGlvbgog
QGFic3RyYWN0IEdldHMgYSBwcm9wZXJ0eSBmcm9tIGFuIG9iamVjdCBieSBudW1lcmljIGluZGV4
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1JlbW90ZUluc3BlY3Rv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1JlbW90ZUluc3BlY3Rvci5oCmluZGV4
IGM4YmFjNmRkMGU0YTY0ODA5Y2IzNDUwY2RiYTRjMDM5N2E0OGEwNTcuLjYxODZiOTIzZWM4YWI4
Yjk0OGU3OTNhZjA0YmRkODQzMjc0MDAzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTUmVtb3RlSW5zcGVjdG9yLmgKQEAgLTQwLDE0ICs0MCwxNCBAQCB0eXBlZGVmIHBpZF90
IEpTUHJvY2Vzc0lEOwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotSlNfRVhQT1JUIHZvaWQgSlNS
ZW1vdGVJbnNwZWN0b3JEaXNhYmxlQXV0b1N0YXJ0KHZvaWQpIENGX0FWQUlMQUJMRSgxMF8xMSwg
OV8wKTsKLUpTX0VYUE9SVCB2b2lkIEpTUmVtb3RlSW5zcGVjdG9yU3RhcnQodm9pZCkgQ0ZfQVZB
SUxBQkxFKDEwXzExLCA5XzApOwotSlNfRVhQT1JUIHZvaWQgSlNSZW1vdGVJbnNwZWN0b3JTZXRQ
YXJlbnRQcm9jZXNzSW5mb3JtYXRpb24oSlNQcm9jZXNzSUQsIGNvbnN0IHVpbnQ4X3QqIGF1ZGl0
RGF0YSwgc2l6ZV90IGF1ZGl0TGVuZ3RoKSBDRl9BVkFJTEFCTEUoMTBfMTEsIDlfMCk7CitKU19F
WFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvckRpc2FibGVBdXRvU3RhcnQodm9pZCkgSlNDX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOworSlNfRVhQT1JUIHZvaWQgSlNS
ZW1vdGVJbnNwZWN0b3JTdGFydCh2b2lkKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEp
LCBpb3MoOS4wKSk7CitKU19FWFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvclNldFBhcmVudFBy
b2Nlc3NJbmZvcm1hdGlvbihKU1Byb2Nlc3NJRCwgY29uc3QgdWludDhfdCogYXVkaXREYXRhLCBz
aXplX3QgYXVkaXRMZW5ndGgpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSksIGlvcyg5
LjApKTsKIAotSlNfRVhQT1JUIHZvaWQgSlNSZW1vdGVJbnNwZWN0b3JTZXRMb2dUb1N5c3RlbUNv
bnNvbGUoYm9vbCkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzApOworSlNfRVhQT1JUIHZvaWQgSlNS
ZW1vdGVJbnNwZWN0b3JTZXRMb2dUb1N5c3RlbUNvbnNvbGUoYm9vbCkgSlNDX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOwogCi1KU19FWFBPUlQgYm9vbCBKU1JlbW90ZUlu
c3BlY3RvckdldEluc3BlY3Rpb25FbmFibGVkQnlEZWZhdWx0KHZvaWQpIENGX0FWQUlMQUJMRSgx
MF8xMSwgOV8wKTsKLUpTX0VYUE9SVCB2b2lkIEpTUmVtb3RlSW5zcGVjdG9yU2V0SW5zcGVjdGlv
bkVuYWJsZWRCeURlZmF1bHQoYm9vbCkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzApOworSlNfRVhQ
T1JUIGJvb2wgSlNSZW1vdGVJbnNwZWN0b3JHZXRJbnNwZWN0aW9uRW5hYmxlZEJ5RGVmYXVsdCh2
b2lkKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CitKU19FWFBP
UlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvclNldEluc3BlY3Rpb25FbmFibGVkQnlEZWZhdWx0KGJv
b2wpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSksIGlvcyg5LjApKTsKIAogI2lmZGVm
IF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VHlwZWRBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuaApp
bmRleCBlMjNiNzZkMmViNGFhNWE0OThiNTVlYmE0NzM3NDYzZjZjYjkzOWFjLi42ZDg2MDIyZmE1
Njk5NTQ2NDZiZWVhM2FlOWVmZjdiMmNhMzZhMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNUeXBlZEFycmF5LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgZXh0ZXJuICJDIiB7CiAgQHBhcmFt
IGV4Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3Jl
IGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0
b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAgICAgIEEgSlNPYmplY3RSZWYgdGhh
dCBpcyBhIFR5cGVkIEFycmF5IHdpdGggYWxsIGVsZW1lbnRzIHNldCB0byB6ZXJvIG9yIE5VTEwg
aWYgdGhlcmUgd2FzIGFuIGVycm9yLgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmpl
Y3RNYWtlVHlwZWRBcnJheShKU0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5
VHlwZSwgc2l6ZV90IGxlbmd0aCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUo
MTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVR5cGVkQXJy
YXkoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBlZEFycmF5VHlwZSBhcnJheVR5cGUsIHNpemVfdCBs
ZW5ndGgsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEw
LjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC02MCw3ICs2MCw3IEBAIEpT
X0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5KEpTQ29udGV4dFJlZiBj
dHgsIEpTVHlwZWRBcnJheVR5cGUKICBAcmVzdWx0ICAgICAgICAgICAgICAgICAgIEEgSlNPYmpl
Y3RSZWYgVHlwZWQgQXJyYXkgd2hvc2UgYmFja2luZyBzdG9yZSBpcyB0aGUgc2FtZSBhcyB0aGUg
b25lIHBvaW50ZWQgdG8gYnkgYnl0ZXMgb3IgTlVMTCBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAg
QGRpc2N1c3Npb24gICAgICAgICAgICAgICBJZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGR1cmlu
ZyB0aGlzIGZ1bmN0aW9uIHRoZSBieXRlc0RlYWxsb2NhdG9yIHdpbGwgYWx3YXlzIGJlIGNhbGxl
ZC4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVR5cGVkQXJyYXlXaXRo
Qnl0ZXNOb0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBlZEFycmF5VHlwZSBhcnJheVR5cGUs
IHZvaWQqIGJ5dGVzLCBzaXplX3QgYnl0ZUxlbmd0aCwgSlNUeXBlZEFycmF5Qnl0ZXNEZWFsbG9j
YXRvciBieXRlc0RlYWxsb2NhdG9yLCB2b2lkKiBkZWFsbG9jYXRvckNvbnRleHQsIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK0pTX0VYUE9SVCBKU09i
amVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEJ5dGVzTm9Db3B5KEpTQ29udGV4dFJl
ZiBjdHgsIEpTVHlwZWRBcnJheVR5cGUgYXJyYXlUeXBlLCB2b2lkKiBieXRlcywgc2l6ZV90IGJ5
dGVMZW5ndGgsIEpTVHlwZWRBcnJheUJ5dGVzRGVhbGxvY2F0b3IgYnl0ZXNEZWFsbG9jYXRvciwg
dm9pZCogZGVhbGxvY2F0b3JDb250ZXh0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElf
QVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpA
QCAtNzEsNyArNzEsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRB
cnJheVdpdGhCeXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4LCBKUwogIEBwYXJhbSBleGNlcHRp
b24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNl
cHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBl
eGNlcHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgICBBIEpTT2JqZWN0UmVmIHRoYXQgaXMgYSBU
eXBlZCBBcnJheSBvciBOVUxMIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4gVGhlIGJhY2tpbmcgc3Rv
cmUgb2YgdGhlIFR5cGVkIEFycmF5IHdpbGwgYmUgYnVmZmVyLgogICovCi1KU19FWFBPUlQgSlNP
YmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhBcnJheUJ1ZmZlcihKU0NvbnRleHRS
ZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgSlNPYmplY3RSZWYgYnVmZmVyLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBP
UlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhBcnJheUJ1ZmZlcihKU0Nv
bnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgSlNPYmplY3RSZWYgYnVm
ZmVyLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4x
MiksIGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtODQsNyArODQsNyBAQCBKU19F
WFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhBcnJheUJ1ZmZlcihK
U0NvbnRleHRSZWYgY3R4LCBKUwogIEBwYXJhbSBleGNlcHRpb24gICAgQSBwb2ludGVyIHRvIGEg
SlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBO
VUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCAg
ICAgICAgICAgICBBIEpTT2JqZWN0UmVmIHRoYXQgaXMgYSBUeXBlZCBBcnJheSBvciBOVUxMIGlm
IHRoZXJlIHdhcyBhbiBlcnJvci4gVGhlIGJhY2tpbmcgc3RvcmUgb2YgdGhlIFR5cGVkIEFycmF5
IHdpbGwgYmUgYnVmZmVyLgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtl
VHlwZWRBcnJheVdpdGhBcnJheUJ1ZmZlckFuZE9mZnNldChKU0NvbnRleHRSZWYgY3R4LCBKU1R5
cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgSlNPYmplY3RSZWYgYnVmZmVyLCBzaXplX3QgYnl0ZU9m
ZnNldCwgc2l6ZV90IGxlbmd0aCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUo
MTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVR5cGVkQXJy
YXlXaXRoQXJyYXlCdWZmZXJBbmRPZmZzZXQoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBlZEFycmF5
VHlwZSBhcnJheVR5cGUsIEpTT2JqZWN0UmVmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNp
emVfdCBsZW5ndGgsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFj
b3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC05NSw3ICs5NSw3
IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEFycmF5
QnVmZmVyQW5kT2Zmc2V0KEpTQ29udGV4dFJlCiAgQHJlc3VsdCAgICAgICAgICAgICBBIHBvaW50
ZXIgdG8gdGhlIHJhdyBkYXRhIGJ1ZmZlciB0aGF0IHNlcnZlcyBhcyBvYmplY3QncyBiYWNraW5n
IHN0b3JlIG9yIE5VTEwgaWYgb2JqZWN0IGlzIG5vdCBhIFR5cGVkIEFycmF5IG9iamVjdC4KICBA
ZGlzY3Vzc2lvbiAgICAgICAgIFRoZSBwb2ludGVyIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24g
aXMgdGVtcG9yYXJ5IGFuZCBpcyBub3QgZ3VhcmFudGVlZCB0byByZW1haW4gdmFsaWQgYWNyb3Nz
IEphdmFTY3JpcHRDb3JlIEFQSSBjYWxscy4KICAqLwotSlNfRVhQT1JUIHZvaWQqIEpTT2JqZWN0
R2V0VHlwZWRBcnJheUJ5dGVzUHRyKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVj
dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNf
RVhQT1JUIHZvaWQqIEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5dGVzUHRyKEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FW
QUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAvKiEKICBAZnVuY3Rpb24KQEAg
LTEwNSw3ICsxMDUsNyBAQCBKU19FWFBPUlQgdm9pZCogSlNPYmplY3RHZXRUeXBlZEFycmF5Qnl0
ZXNQdHIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZQogIEBwYXJhbSBleGNlcHRp
b24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNl
cHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBl
eGNlcHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgICBUaGUgbGVuZ3RoIG9mIHRoZSBUeXBlZCBB
cnJheSBvYmplY3Qgb3IgMCBpZiB0aGUgb2JqZWN0IGlzIG5vdCBhIFR5cGVkIEFycmF5IG9iamVj
dC4KICAqLwotSlNfRVhQT1JUIHNpemVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlMZW5ndGgoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
IENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0
VHlwZWRBcnJheUxlbmd0aChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9z
KDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC0xMTUsNyArMTE1LDcgQEAgSlNfRVhQT1JU
IHNpemVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlMZW5ndGgoSlNDb250ZXh0UmVmIGN0eCwgSlNP
YmplY3RSZWYgb2JqZWMKICBAcGFyYW0gZXhjZXB0aW9uICAgIEEgcG9pbnRlciB0byBhIEpTVmFs
dWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBp
ZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1bHQgICAgICAg
ICAgICAgVGhlIGJ5dGUgbGVuZ3RoIG9mIHRoZSBUeXBlZCBBcnJheSBvYmplY3Qgb3IgMCBpZiB0
aGUgb2JqZWN0IGlzIG5vdCBhIFR5cGVkIEFycmF5IG9iamVjdC4KICAqLwotSlNfRVhQT1JUIHNp
emVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlCeXRlTGVuZ3RoKEpTQ29udGV4dFJlZiBjdHgsIEpT
T2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBf
MTIsIDEwXzApOworSlNfRVhQT1JUIHNpemVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlCeXRlTGVu
Z3RoKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAv
KiEKICBAZnVuY3Rpb24KQEAgLTEyNSw3ICsxMjUsNyBAQCBKU19FWFBPUlQgc2l6ZV90IEpTT2Jq
ZWN0R2V0VHlwZWRBcnJheUJ5dGVMZW5ndGgoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYg
bwogIEBwYXJhbSBleGNlcHRpb24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGlj
aCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3Qg
Y2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgICBUaGUgYnl0
ZSBvZmZzZXQgb2YgdGhlIFR5cGVkIEFycmF5IG9iamVjdCBvciAwIGlmIHRoZSBvYmplY3QgaXMg
bm90IGEgVHlwZWQgQXJyYXkgb2JqZWN0LgogICovCi1KU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2Jq
ZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitK
U19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoSlNDb250ZXh0
UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19B
UElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlv
bgpAQCAtMTM1LDcgKzEzNSw3IEBAIEpTX0VYUE9SVCBzaXplX3QgSlNPYmplY3RHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvCiAgQHBhcmFtIGV4
Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFu
IGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3Jl
IGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAgICAgIEEgSlNPYmplY3RSZWYgd2l0aCBh
IEpTVHlwZWRBcnJheVR5cGUgb2Yga0pTVHlwZWRBcnJheVR5cGVBcnJheUJ1ZmZlciBvciBOVUxM
IGlmIG9iamVjdCBpcyBub3QgYSBUeXBlZCBBcnJheS4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0
UmVmIEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ1ZmZlcihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVj
dFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAx
MF8wKTsKK0pTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdEdldFR5cGVkQXJyYXlCdWZmZXIo
SlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKIC8vIC0t
LS0tLS0tLS0tLS0gQXJyYXkgQnVmZmVyIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tCiAKQEAgLTE1
MSw3ICsxNTEsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RHZXRUeXBlZEFycmF5
QnVmZmVyKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmCiAgQHJlc3VsdCAgICAgICAgICAg
ICAgICAgICBBIEpTT2JqZWN0UmVmIEFycmF5IEJ1ZmZlciB3aG9zZSBiYWNraW5nIHN0b3JlIGlz
IHRoZSBzYW1lIGFzIHRoZSBvbmUgcG9pbnRlZCB0byBieSBieXRlcyBvciBOVUxMIGlmIHRoZXJl
IHdhcyBhbiBlcnJvci4KICBAZGlzY3Vzc2lvbiAgICAgICAgICAgICAgIElmIGFuIGV4Y2VwdGlv
biBpcyB0aHJvd24gZHVyaW5nIHRoaXMgZnVuY3Rpb24gdGhlIGJ5dGVzRGVhbGxvY2F0b3Igd2ls
bCBhbHdheXMgYmUgY2FsbGVkLgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RN
YWtlQXJyYXlCdWZmZXJXaXRoQnl0ZXNOb0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgdm9pZCogYnl0
ZXMsIHNpemVfdCBieXRlTGVuZ3RoLCBKU1R5cGVkQXJyYXlCeXRlc0RlYWxsb2NhdG9yIGJ5dGVz
RGVhbGxvY2F0b3IsIHZvaWQqIGRlYWxsb2NhdG9yQ29udGV4dCwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpT
T2JqZWN0TWFrZUFycmF5QnVmZmVyV2l0aEJ5dGVzTm9Db3B5KEpTQ29udGV4dFJlZiBjdHgsIHZv
aWQqIGJ5dGVzLCBzaXplX3QgYnl0ZUxlbmd0aCwgSlNUeXBlZEFycmF5Qnl0ZXNEZWFsbG9jYXRv
ciBieXRlc0RlYWxsb2NhdG9yLCB2b2lkKiBkZWFsbG9jYXRvckNvbnRleHQsIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsK
IAogLyohCiAgQGZ1bmN0aW9uCkBAIC0xNjEsNyArMTYxLDcgQEAgSlNfRVhQT1JUIEpTT2JqZWN0
UmVmIEpTT2JqZWN0TWFrZUFycmF5QnVmZmVyV2l0aEJ5dGVzTm9Db3B5KEpTQ29udGV4dFJlZiBj
dHgsIHYKICBAcmVzdWx0ICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIHJhdyBkYXRhIGJ1ZmZl
ciB0aGF0IHNlcnZlcyBhcyBvYmplY3QncyBiYWNraW5nIHN0b3JlIG9yIE5VTEwgaWYgb2JqZWN0
IGlzIG5vdCBhbiBBcnJheSBCdWZmZXIgb2JqZWN0LgogIEBkaXNjdXNzaW9uICAgICAgIFRoZSBw
b2ludGVyIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24gaXMgdGVtcG9yYXJ5IGFuZCBpcyBub3Qg
Z3VhcmFudGVlZCB0byByZW1haW4gdmFsaWQgYWNyb3NzIEphdmFTY3JpcHRDb3JlIEFQSSBjYWxs
cy4KICAqLwotSlNfRVhQT1JUIHZvaWQqIEpTT2JqZWN0R2V0QXJyYXlCdWZmZXJCeXRlc1B0cihK
U0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK0pTX0VYUE9SVCB2b2lkKiBKU09iamVjdEdl
dEFycmF5QnVmZmVyQnl0ZXNQdHIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiks
IGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtMTcxLDcgKzE3MSw3IEBAIEpTX0VY
UE9SVCB2b2lkKiBKU09iamVjdEdldEFycmF5QnVmZmVyQnl0ZXNQdHIoSlNDb250ZXh0UmVmIGN0
eCwgSlNPYmplY3RSZWYgb2JqCiAgQHBhcmFtIGV4Y2VwdGlvbiAgQSBwb2ludGVyIHRvIGEgSlNW
YWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxM
IGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCAgICAg
ICAgICAgVGhlIG51bWJlciBvZiBieXRlcyBzdG9yZWQgaW4gdGhlIGRhdGEgb2JqZWN0LgogICov
Ci1KU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0QXJyYXlCdWZmZXJCeXRlTGVuZ3RoKEpTQ29u
dGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBD
Rl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIHNpemVfdCBKU09iamVjdEdldEFy
cmF5QnVmZmVyQnl0ZUxlbmd0aChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3Qs
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwg
aW9zKDEwLjApKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNWYWx1ZS5oCmluZGV4IDE0MTBkZDc0YTE3Zjk3MDcwNmU0NGRlZDI0Y2NkMTcwYzM0NzljMmUu
LjYyY2JlMjFhOWIyMWI2MzViMmNhZTRkNWQ2OTg0MTI2MzIxNmM2MjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNWYWx1ZS5oCkBAIC00NCw3ICs0NCw3IEBACiAgSlNWYWx1ZSB0byBhIG1ldGhv
ZCBvciBwcm9wZXJ0eSBvZiBhIEpTVmFsdWUgb3IgSlNDb250ZXh0IG9yaWdpbmF0aW5nIGZyb20g
YQogIGRpZmZlcmVudCBKU1ZpcnR1YWxNYWNoaW5lLiBEb2luZyBzbyB3aWxsIHJhaXNlIGFuIE9i
amVjdGl2ZS1DIGV4Y2VwdGlvbi4KICovCi1OU19DTEFTU19BVkFJTEFCTEUoMTBfOSwgN18wKQor
SlNDX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goMTAuOSksIGlvcyg3LjApKQogQGludGVyZmFjZSBK
U1ZhbHVlIDogTlNPYmplY3QKIAogLyohCkBAIC0xNDgsNiArMTQ4LDE1IEBAIE5TX0NMQVNTX0FW
QUlMQUJMRSgxMF85LCA3XzApCiAqLwogKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFVuZGVmaW5lZElu
Q29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKIAorLyohCisgQG1ldGhvZAorIEBhYnN0cmFj
dCBDcmVhdGUgYSBuZXcsIHVuaXF1ZSwgc3ltYm9sIG9iamVjdC4KKyBAcGFyYW0gZGVzY3JpcHRp
b24gVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBzeW1ib2wgb2JqZWN0IGJlaW5nIGNyZWF0ZWQuCisg
QHBhcmFtIGNvbnRleHQgVGhlIEpTQ29udGV4dCB0byB3aGljaCB0aGUgcmVzdWx0aW5nIEpTVmFs
dWUgYmVsb25ncy4KKyBAcmVzdWx0IFRoZSBKU1ZhbHVlIHJlcHJlc2VudGluZyBhIHVuaXF1ZSBK
YXZhU2NyaXB0IHZhbHVlIHdpdGggdHlwZSBzeW1ib2wuCisgKi8KKysgKEpTVmFsdWUgKil2YWx1
ZVdpdGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246KE5TU3RyaW5nICopZGVzY3JpcHRpb24gaW5D
b250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0IEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeChKU0Nf
TUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpOworCiAvKiEKIEBtZXRob2Rncm91cCBDb252ZXJ0
aW5nIHRvIE9iamVjdGl2ZS1DIFR5cGVzCiBAZGlzY3Vzc2lvbiBXaGVuIGNvbnZlcnRpbmcgYmV0
d2VlbiBKYXZhU2NyaXB0IHZhbHVlcyBhbmQgT2JqZWN0aXZlLUMgb2JqZWN0cyBhIGNvcHkgaXMK
QEAgLTMwNSw0MyArMzE0LDUyIEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCiAvKiEK
IEBtZXRob2Rncm91cCBBY2Nlc3NpbmcgUHJvcGVydGllcwogKi8KKworI2lmICEoZGVmaW5lZChf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAoZGVmaW5lZChfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMTAwMDApCisK
IC8qIQogQG1ldGhvZAogQGFic3RyYWN0IEFjY2VzcyBhIHByb3BlcnR5IG9mIGEgSlNWYWx1ZS4K
IEByZXN1bHQgVGhlIEpTVmFsdWUgZm9yIHRoZSByZXF1ZXN0ZWQgcHJvcGVydHkgb3IgdGhlIEpT
VmFsdWUgPGNvZGU+dW5kZWZpbmVkPC9jb2RlPiAKICBpZiB0aGUgcHJvcGVydHkgZG9lcyBub3Qg
ZXhpc3QuCitAZGlzY3Vzc2lvbiBDb3JyZXNwb25kcyB0byB0aGUgSmF2YVNjcmlwdCBvcGVyYXRp
b24gPGNvZGU+b2JqZWN0W3Byb3BlcnR5XTwvY29kZT4uIFBhc3MgYW4gTlNTdHJpbmcgKiB0byBh
Y2Nlc3MgYSBuYW1lZCBwcm9wZXJ0eS4gT3RoZXIgdmFsaWQgcHJvcGVydGllcyBpbmNsdWRlIHN5
bWJvbHMsIG51bWJlcnMsIGFuZCBzdHJpbmdpZmlhYmxlIG9iamVjdHMuIEluIG1hY09TIDEwLjEz
IGFuZCBpT1MgMTEgYW5kIGJlbG93LCAncHJvcGVydHknIHdhcyBhbiBOU1N0cmluZyAqLgogKi8K
LS0gKEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLSAo
SlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KGlkKXByb3BlcnR5OwogCiAvKiEKIEBtZXRob2QK
IEBhYnN0cmFjdCBTZXQgYSBwcm9wZXJ0eSBvbiBhIEpTVmFsdWUuCitAZGlzY3Vzc2lvbiBDb3Jy
ZXNwb25kcyB0byB0aGUgSmF2YVNjcmlwdCBvcGVyYXRpb24gPGNvZGU+b2JqZWN0W3Byb3BlcnR5
XSA9IHZhbHVlPC9jb2RlPi4gUGFzcyBhbiBOU1N0cmluZyAqIHRvIGFjY2VzcyBhIG5hbWVkIHBy
b3BlcnR5LiBPdGhlciB2YWxpZCBwcm9wZXJ0aWVzIGluY2x1ZGUgc3ltYm9scywgbnVtYmVycywg
YW5kIHN0cmluZ2lmaWFibGUgb2JqZWN0cy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUyAxMSBhbmQg
YmVsb3csICdwcm9wZXJ0eScgd2FzIGFuIE5TU3RyaW5nICouCiAqLwotLSAodm9pZClzZXRWYWx1
ZTooaWQpdmFsdWUgZm9yUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7CistICh2b2lkKXNl
dFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooaWQpcHJvcGVydHk7CiAKIC8qIQogQG1ldGhv
ZAogQGFic3RyYWN0IERlbGV0ZSBhIHByb3BlcnR5IGZyb20gYSBKU1ZhbHVlLgogQHJlc3VsdCBZ
RVMgaWYgZGVsZXRpb24gaXMgc3VjY2Vzc2Z1bCwgTk8gb3RoZXJ3aXNlLgorQGRpc2N1c3Npb24g
Q29ycmVzcG9uZHMgdG8gdGhlIEphdmFTY3JpcHQgb3BlcmF0aW9uIDxjb2RlPmRlbGV0ZSBvYmpl
Y3RbcHJvcGVydHldPC9jb2RlPi4gUGFzcyBhbiBOU1N0cmluZyAqIHRvIGFjY2VzcyBhIG5hbWVk
IHByb3BlcnR5LiBPdGhlciB2YWxpZCBwcm9wZXJ0aWVzIGluY2x1ZGUgc3ltYm9scywgbnVtYmVy
cywgYW5kIHN0cmluZ2lmaWFibGUgb2JqZWN0cy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUyAxMSBh
bmQgYmVsb3csICdwcm9wZXJ0eScgd2FzIGFuIE5TU3RyaW5nICouCiAqLwotLSAoQk9PTClkZWxl
dGVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKEJPT0wpZGVsZXRlUHJvcGVydHk6
KGlkKXByb3BlcnR5OwogCiAvKiEKIEBtZXRob2QKIEBhYnN0cmFjdCBDaGVjayBpZiBhIEpTVmFs
dWUgaGFzIGEgcHJvcGVydHkuCiBAZGlzY3Vzc2lvbiBUaGlzIG1ldGhvZCBoYXMgdGhlIHNhbWUg
ZnVuY3Rpb24gYXMgdGhlIEphdmFTY3JpcHQgb3BlcmF0b3IgPGNvZGU+aW48L2NvZGU+LgogQHJl
c3VsdCBSZXR1cm5zIFlFUyBpZiBwcm9wZXJ0eSBpcyBwcmVzZW50IG9uIHRoZSB2YWx1ZS4KK0Bk
aXNjdXNzaW9uIENvcnJlc3BvbmRzIHRvIHRoZSBKYXZhU2NyaXB0IG9wZXJhdGlvbiA8Y29kZT5w
cm9wZXJ0eSBpbiBvYmplY3Q8L2NvZGU+LiBQYXNzIGFuIE5TU3RyaW5nICogdG8gYWNjZXNzIGEg
bmFtZWQgcHJvcGVydHkuIE90aGVyIHZhbGlkIHByb3BlcnRpZXMgaW5jbHVkZSBzeW1ib2xzLCBu
dW1iZXJzLCBhbmQgc3RyaW5naWZpYWJsZSBvYmplY3RzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9T
IDExIGFuZCBiZWxvdywgJ3Byb3BlcnR5JyB3YXMgYW4gTlNTdHJpbmcgKi4KICovCi0tIChCT09M
KWhhc1Byb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLSAoQk9PTCloYXNQcm9wZXJ0eToo
aWQpcHJvcGVydHk7CiAKIC8qIQogQG1ldGhvZAogQGFic3RyYWN0IERlZmluZSBwcm9wZXJ0aWVz
IHdpdGggY3VzdG9tIGRlc2NyaXB0b3JzIG9uIEpTVmFsdWVzLgogQGRpc2N1c3Npb24gVGhpcyBt
ZXRob2QgbWF5IGJlIHVzZWQgdG8gY3JlYXRlIGEgZGF0YSBvciBhY2Nlc3NvciBwcm9wZXJ0eSBv
biBhbiBvYmplY3QuCiAgVGhpcyBtZXRob2Qgb3BlcmF0ZXMgaW4gYWNjb3JkYW5jZSB3aXRoIHRo
ZSBPYmplY3QuZGVmaW5lUHJvcGVydHkgbWV0aG9kIGluIHRoZSAKLSBKYXZhU2NyaXB0IGxhbmd1
YWdlLgorIEphdmFTY3JpcHQgbGFuZ3VhZ2UuIFBhc3MgYW4gTlNTdHJpbmcgKiB0byBhY2Nlc3Mg
YSBuYW1lZCBwcm9wZXJ0eS4gT3RoZXIgdmFsaWQgcHJvcGVydGllcyBpbmNsdWRlIHN5bWJvbHMs
IG51bWJlcnMsIGFuZCBzdHJpbmdpZmlhYmxlIG9iamVjdHMuIEluIG1hY09TIDEwLjEzIGFuZCBp
T1MgMTEgYW5kIGJlbG93LCAncHJvcGVydHknIHdhcyBhbiBOU1N0cmluZyAqLgogKi8KLS0gKHZv
aWQpZGVmaW5lUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHkgZGVzY3JpcHRvcjooaWQpZGVz
Y3JpcHRvcjsKKy0gKHZvaWQpZGVmaW5lUHJvcGVydHk6KGlkKXByb3BlcnR5IGRlc2NyaXB0b3I6
KGlkKWRlc2NyaXB0b3I7CisKKyNlbmRpZiAvLyAhKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMw
MCkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQogCiAvKiEKIEBtZXRob2QKQEAg
LTQwMiwxNyArNDIwLDIzIEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCiAqLwogQHBy
b3BlcnR5IChyZWFkb25seSkgQk9PTCBpc09iamVjdDsKIAorLyohCitAcHJvcGVydHkKK0BhYnN0
cmFjdCBDaGVjayBpZiBhIEpTVmFsdWUgaXMgYSBzeW1ib2wuCisqLworQHByb3BlcnR5IChyZWFk
b25seSkgQk9PTCBpc1N5bWJvbCBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goSlNDX01BQ19UQkEp
LCBpb3MoSlNDX0lPU19UQkEpKTsKKwogLyohCiBAcHJvcGVydHkKIEBhYnN0cmFjdCBDaGVjayBp
ZiBhIEpTVmFsdWUgaXMgYW4gYXJyYXkuCiAqLyAKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wg
aXNBcnJheSBOU19BVkFJTEFCTEUoMTBfMTEsIDlfMCk7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBC
T09MIGlzQXJyYXkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOwog
CiAvKiEKIEBwcm9wZXJ0eQogQGFic3RyYWN0IENoZWNrIGlmIGEgSlNWYWx1ZSBpcyBhIGRhdGUu
CiAqLyAKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaXNEYXRlIE5TX0FWQUlMQUJMRSgxMF8x
MSwgOV8wKTsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaXNEYXRlIEpTQ19BUElfQVZBSUxB
QkxFKG1hY29zeCgxMC4xMSksIGlvcyg5LjApKTsKIAogLyohCiBAbWV0aG9kCkBAIC01NjksMTMg
KzU5MywxNiBAQCBDcmVhdGUgYSBKU1ZhbHVlIGZyb20gYSBDR1JlY3QuCiBAL3RleHRibG9jawog
CiAgQW4gb2JqZWN0IGtleSBwYXNzZWQgYXMgYSBzdWJzY3JpcHQgd2lsbCBiZSBjb252ZXJ0ZWQg
dG8gYSBKYXZhU2NyaXB0IHZhbHVlLAotIGFuZCB0aGVuIHRoZSB2YWx1ZSBjb252ZXJ0ZWQgdG8g
YSBzdHJpbmcgdXNlZCBhcyBhIHByb3BlcnR5IG5hbWUuCisgYW5kIHRoZW4gdGhlIHZhbHVlIGNv
bnZlcnRlZCB0byBhIHN0cmluZyB1c2VkIGFzIGEgcHJvcGVydHkgbmFtZS4gSW4gbWFjT1MKKyAx
MC4xMyBhbmQgaU9TIDExIGFuZCBiZWxvdywgdGhlIDxjb2RlPmtleTwvY29kZT4gYXJndW1lbnQg
b2YKKyA8Y29kZT5zZXRPYmplY3Q6b2JqZWN0IGZvcktleWVkU3Vic2NyaXB0OmtleTwvY29kZT4g
d2FzIHJlc3RyaWN0ZWQgdG8gYW4KKyA8Y29kZT5OU1N0cmluZyA8TlNDb3B5aW5nPiAqPC9jb2Rl
PiBidXQgdGhhdCByZXN0cmljdGlvbiB3YXMgbmV2ZXIgdXNlZC4KICovCiBAaW50ZXJmYWNlIEpT
VmFsdWUgKFN1YnNjcmlwdFN1cHBvcnQpCiAKIC0gKEpTVmFsdWUgKilvYmplY3RGb3JLZXllZFN1
YnNjcmlwdDooaWQpa2V5OwogLSAoSlNWYWx1ZSAqKW9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoo
TlNVSW50ZWdlcilpbmRleDsKLS0gKHZvaWQpc2V0T2JqZWN0OihpZClvYmplY3QgZm9yS2V5ZWRT
dWJzY3JpcHQ6KE5TT2JqZWN0IDxOU0NvcHlpbmc+ICopa2V5OworLSAodm9pZClzZXRPYmplY3Q6
KGlkKW9iamVjdCBmb3JLZXllZFN1YnNjcmlwdDooaWQpa2V5OwogLSAodm9pZClzZXRPYmplY3Q6
KGlkKW9iamVjdCBhdEluZGV4ZWRTdWJzY3JpcHQ6KE5TVUludGVnZXIpaW5kZXg7CiAKIEBlbmQK
QEAgLTY2Miw2ICs2ODksNTMgQEAgSlNfRVhQT1JUIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IEpT
UHJvcGVydHlEZXNjcmlwdG9yU2V0S2V5OwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9IC8vIGV4dGVy
biAiQyIKICNlbmRpZgorIAorI2lmIChkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDApIHx8IChk
ZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKKworLy8gVGhlc2UgZGVjbGFyYXRpb25zIHBy
b3ZpZGUgY29tcGF0aWJpbGl0eSB3aGVuIHRhcmdldGluZyBTREtzIGZvciBsZWdhY3kgT1NzLiBJ
biBtYWNPUyAxMC4xMyBhbmQgaU9TIDExIGFuZCBiZWxvdywgJ3Byb3BlcnR5JyB3YXMgYW4gTlNT
dHJpbmcgKi4KK0BpbnRlcmZhY2UgSlNWYWx1ZSAoTGVnYWN5U0RLU3VwcG9ydCkKKworLyohCitA
bWV0aG9kCitAYWJzdHJhY3QgQWNjZXNzIGEgcHJvcGVydHkgb2YgYSBKU1ZhbHVlLgorQHJlc3Vs
dCBUaGUgSlNWYWx1ZSBmb3IgdGhlIHJlcXVlc3RlZCBwcm9wZXJ0eSBvciB0aGUgSlNWYWx1ZSA8
Y29kZT51bmRlZmluZWQ8L2NvZGU+CitpZiB0aGUgcHJvcGVydHkgZG9lcyBub3QgZXhpc3QuCisq
LworLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7CisK
Ky8qIQorQG1ldGhvZAorQGFic3RyYWN0IFNldCBhIHByb3BlcnR5IG9uIGEgSlNWYWx1ZS4KKyov
CistICh2b2lkKXNldFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9w
ZXJ0eTsKKworLyohCisgQG1ldGhvZAorIEBhYnN0cmFjdCBEZWxldGUgYSBwcm9wZXJ0eSBmcm9t
IGEgSlNWYWx1ZS4KKyBAcmVzdWx0IFlFUyBpZiBkZWxldGlvbiBpcyBzdWNjZXNzZnVsLCBOTyBv
dGhlcndpc2UuCisgKi8KKy0gKEJPT0wpZGVsZXRlUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVy
dHk7CisKKy8qIQorIEBtZXRob2QKKyBAYWJzdHJhY3QgQ2hlY2sgaWYgYSBKU1ZhbHVlIGhhcyBh
IHByb3BlcnR5LgorIEBkaXNjdXNzaW9uIFRoaXMgbWV0aG9kIGhhcyB0aGUgc2FtZSBmdW5jdGlv
biBhcyB0aGUgSmF2YVNjcmlwdCBvcGVyYXRvciA8Y29kZT5pbjwvY29kZT4uCisgQHJlc3VsdCBS
ZXR1cm5zIFlFUyBpZiBwcm9wZXJ0eSBpcyBwcmVzZW50IG9uIHRoZSB2YWx1ZS4KKyAqLworLSAo
Qk9PTCloYXNQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKworLyohCisgQG1ldGhvZAor
IEBhYnN0cmFjdCBEZWZpbmUgcHJvcGVydGllcyB3aXRoIGN1c3RvbSBkZXNjcmlwdG9ycyBvbiBK
U1ZhbHVlcy4KKyBAZGlzY3Vzc2lvbiBUaGlzIG1ldGhvZCBtYXkgYmUgdXNlZCB0byBjcmVhdGUg
YSBkYXRhIG9yIGFjY2Vzc29yIHByb3BlcnR5IG9uIGFuIG9iamVjdC4KKyBUaGlzIG1ldGhvZCBv
cGVyYXRlcyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBtZXRo
b2QgaW4gdGhlCisgSmF2YVNjcmlwdCBsYW5ndWFnZS4KKyAqLworLSAodm9pZClkZWZpbmVQcm9w
ZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eSBkZXNjcmlwdG9yOihpZClkZXNjcmlwdG9yOworCitA
ZW5kCisKKyNlbmRpZgogCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1ZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1t
CmluZGV4IGM4ZjQ5N2EwYzE0YjA0OGExMTRkMmU3NDBjZWIxOTliNjMzYzNhYmMuLmZkNTIyNmY4
NGNlNWE5ZDQyYzI3YzEwNTY2OWI0MDk3ZTRlNGNiM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVmFsdWUubW0KQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQgIkpTQ0pTVmFsdWUuaCIKICNp
bXBvcnQgIlN0cm9uZy5oIgogI2ltcG9ydCAiU3Ryb25nSW5saW5lcy5oIgorI2ltcG9ydCA8d3Rm
L0V4cGVjdGVkLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL0hhc2hT
ZXQuaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CkBAIC0xNTEsNiArMTUyLDEzIEBAIE5TU3RyaW5n
ICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXkgPSBAInNldCI7CiAgICAgcmV0dXJu
IFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6SlNWYWx1ZU1ha2VVbmRlZmluZWQoW2NvbnRl
eHQgSlNHbG9iYWxDb250ZXh0UmVmXSkgaW5Db250ZXh0OmNvbnRleHRdOwogfQogCisrIChKU1Zh
bHVlICopdmFsdWVXaXRoTmV3U3ltYm9sRnJvbURlc2NyaXB0aW9uOihOU1N0cmluZyAqKWRlc2Ny
aXB0aW9uIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAoreworICAgIEpTU3RyaW5nUmVm
IHN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZT
dHJpbmdSZWY+KGRlc2NyaXB0aW9uKSk7CisgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpT
VmFsdWVSZWY6SlNWYWx1ZU1ha2VTeW1ib2woW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwg
c3RyaW5nKSBpbkNvbnRleHQ6Y29udGV4dF07Cit9CisKKwogLSAoaWQpdG9PYmplY3QKIHsKICAg
ICByZXR1cm4gdmFsdWVUb09iamVjdChfY29udGV4dCwgbV92YWx1ZSk7CkBAIC0yMzQsNzQgKzI0
MiwxMDYgQEAgTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5RGVzY3JpcHRvclNldEtleSA9IEAi
c2V0IjsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi0tIChKU1ZhbHVlICopdmFsdWVGb3JQcm9w
ZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKK3RlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdCwg
dHlwZW5hbWUgTlNTdHJpbmdGdW5jdGlvbiwgdHlwZW5hbWUgSlNWYWx1ZUZ1bmN0aW9uLCB0eXBl
bmFtZS4uLiBUeXBlcz4KK2lubGluZSBFeHBlY3RlZDxSZXN1bHQsIEpTVmFsdWVSZWY+IHBlcmZv
cm1Qcm9wZXJ0eU9wZXJhdGlvbihOU1N0cmluZ0Z1bmN0aW9uIHN0cmluZ0Z1bmN0aW9uLCBKU1Zh
bHVlRnVuY3Rpb24ganNGdW5jdGlvbiwgSlNWYWx1ZSogdmFsdWUsIGlkIHByb3BlcnR5S2V5LCBU
eXBlcy4uLiBhcmd1bWVudHMpCiB7Ci0gICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAg
IEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChbX2NvbnRleHQgSlNHbG9iYWxD
b250ZXh0UmVmXSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7CisgICAgSlNDb250ZXh0KiBjb250ZXh0
ID0gW3ZhbHVlIGNvbnRleHRdOworICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0cjsK
KyAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoW2NvbnRleHQgSlNHbG9i
YWxDb250ZXh0UmVmXSwgW3ZhbHVlIEpTVmFsdWVSZWZdLCAmZXhjZXB0aW9uKTsKICAgICBpZiAo
ZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW19jb250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4Y2Vw
dGlvbjpleGNlcHRpb25dOworICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxKU1ZhbHVlUmVmPihl
eGNlcHRpb24pOwogCi0gICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENG
U3RyaW5nKChDRlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwotICAgIEpTVmFsdWVSZWYgcmVzdWx0
ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgb2Jq
ZWN0LCBuYW1lLCAmZXhjZXB0aW9uKTsKLSAgICBKU1N0cmluZ1JlbGVhc2UobmFtZSk7Ci0gICAg
aWYgKGV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlF
eGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICBSZXN1bHQgcmVzdWx0OworICAgIC8vIElmIGl0J3Mg
YSBOU1N0cmluZyBhbHJlYWR5LCByZWR1Y2UgaW5kaXJlY3Rpb24gYW5kIGp1c3QgcGFzcyB0aGUg
TlNTdHJpbmcuCisgICAgaWYgKFtwcm9wZXJ0eUtleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBj
bGFzc11dKSB7CisgICAgICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhD
RlN0cmluZyhyZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihwcm9wZXJ0eUtleSkpOworICAg
ICAgICByZXN1bHQgPSBzdHJpbmdGdW5jdGlvbihbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZd
LCBvYmplY3QsIG5hbWUsIGFyZ3VtZW50cy4uLiwgJmV4Y2VwdGlvbik7CisgICAgICAgIEpTU3Ry
aW5nUmVsZWFzZShuYW1lKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0ID0ganNGdW5jdGlv
bihbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIFtbSlNWYWx1ZSB2YWx1ZVdp
dGhPYmplY3Q6cHJvcGVydHlLZXkgaW5Db250ZXh0OmNvbnRleHRdIEpTVmFsdWVSZWZdLCBhcmd1
bWVudHMuLi4sICZleGNlcHRpb24pOworICAgIHJldHVybiBFeHBlY3RlZDxSZXN1bHQsIEpTVmFs
dWVSZWY+KHJlc3VsdCk7Cit9CiAKLSAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1
ZVJlZjpyZXN1bHQgaW5Db250ZXh0Ol9jb250ZXh0XTsKKyNkZWZpbmUgVVNFX05TU1RSSU5HX0ZP
Ul9QUk9QRVJUWV9LRVkgKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMwMCkgfHwgKGRlZmluZWQo
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEIDwgMTEwMDAwKQorCisjaWYgVVNFX05TU1RSSU5HX0ZPUl9QUk9QRVJUWV9L
RVkKKy0gKEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihOU1N0cmluZyAqKWtleQorI2Vsc2UK
Ky0gKEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihpZClrZXkKKyNlbmRpZgoreworICAgIGF1
dG8gcmVzdWx0ID0gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uPEpTVmFsdWVSZWY+KEpTT2JqZWN0
R2V0UHJvcGVydHksIEpTT2JqZWN0R2V0UHJvcGVydHlLZXksIHNlbGYsIGtleSk7CisgICAgaWYg
KCFyZXN1bHQpCisgICAgICAgIHJldHVybiBbX2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0
aW9uOnJlc3VsdC5lcnJvcigpXTsKKworICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1Zh
bHVlUmVmOnJlc3VsdC52YWx1ZSgpIGluQ29udGV4dDpfY29udGV4dF07CiB9CiAKLS0gKHZvaWQp
c2V0VmFsdWU6KGlkKXZhbHVlIGZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQor
I2lmIFVTRV9OU1NUUklOR19GT1JfUFJPUEVSVFlfS0VZCistICh2b2lkKXNldFZhbHVlOihpZCl2
YWx1ZSBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXkKKyNlbHNlCistICh2b2lkKXNldFZhbHVl
OihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooaWQpa2V5CisjZW5kaWYKIHsKLSAgICBKU1ZhbHVlUmVm
IGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0
KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKLSAg
ICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIFtfY29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhj
ZXB0aW9uXTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAvLyBXZSBuZWVkIFVuaXQgYnVz
aW5lc3MgYmVjYXVzZSB2b2lkIGNhbid0IGJlIGFzc2lnbmVkIHRvIGluIHBlcmZvcm1Qcm9wZXJ0
eU9wZXJhdGlvbiBhbmQgSSBkb24ndCB3YW50IHRvIGR1cGxpY2F0ZSB0aGUgY29kZS4uLgorICAg
IHVzaW5nIFVuaXQgPSBzdGQ6OnR1cGxlPD47CisgICAgYXV0byBzdHJpbmdTZXRQcm9wZXJ0eSA9
IFtdIChhdXRvLi4uIGFyZ3MpIC0+IFVuaXQgeworICAgICAgICBKU09iamVjdFNldFByb3BlcnR5
KGFyZ3MuLi4pOworICAgICAgICByZXR1cm4geyB9OworICAgIH07CiAKLSAgICBKU1N0cmluZ1Jl
ZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKXByb3BlcnR5
TmFtZSk7Ci0gICAgSlNPYmplY3RTZXRQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0
UmVmXSwgb2JqZWN0LCBuYW1lLCBvYmplY3RUb1ZhbHVlKF9jb250ZXh0LCB2YWx1ZSksIDAsICZl
eGNlcHRpb24pOwotICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKLSAgICBpZiAoZXhjZXB0aW9u
KSB7Ci0gICAgICAgIFtfY29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICBh
dXRvIGpzVmFsdWVTZXRQcm9wZXJ0eSA9IFtdIChhdXRvLi4uIGFyZ3MpIC0+IFVuaXQgeworICAg
ICAgICBKU09iamVjdFNldFByb3BlcnR5S2V5KGFyZ3MuLi4pOworICAgICAgICByZXR1cm4geyB9
OworICAgIH07CisKKyAgICBhdXRvIHJlc3VsdCA9IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbjxV
bml0PihzdHJpbmdTZXRQcm9wZXJ0eSwganNWYWx1ZVNldFByb3BlcnR5LCBzZWxmLCBrZXksIG9i
amVjdFRvVmFsdWUoX2NvbnRleHQsIHZhbHVlKSwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lKTsK
KyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBbX2NvbnRleHQgbm90aWZ5RXhjZXB0aW9uOnJl
c3VsdC5lcnJvcigpXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KIAotLSAoQk9PTClkZWxl
dGVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKKyNpZiBVU0VfTlNTVFJJTkdfRk9S
X1BST1BFUlRZX0tFWQorLSAoQk9PTClkZWxldGVQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXkKKyNl
bHNlCistIChCT09MKWRlbGV0ZVByb3BlcnR5OihpZClrZXkKKyNlbmRpZgogewotICAgIEpTVmFs
dWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9P
YmplY3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUsICZleGNlcHRpb24p
OwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbX2NvbnRleHQgYm9vbEZyb21O
b3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKLQotICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0
cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsKLSAgICBC
T09MIHJlc3VsdCA9IEpTT2JqZWN0RGVsZXRlUHJvcGVydHkoW19jb250ZXh0IEpTR2xvYmFsQ29u
dGV4dFJlZl0sIG9iamVjdCwgbmFtZSwgJmV4Y2VwdGlvbik7Ci0gICAgSlNTdHJpbmdSZWxlYXNl
KG5hbWUpOwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbX2NvbnRleHQgYm9v
bEZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKLQotICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgRXhwZWN0ZWQ8Qk9PTCwgSlNWYWx1ZVJlZj4gcmVzdWx0ID0gcGVyZm9ybVByb3BlcnR5T3Bl
cmF0aW9uPEJPT0w+KEpTT2JqZWN0RGVsZXRlUHJvcGVydHksIEpTT2JqZWN0RGVsZXRlUHJvcGVy
dHlLZXksIHNlbGYsIGtleSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBbX2Nv
bnRleHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246cmVzdWx0LmVycm9yKCldOworICAgIHJldHVy
biByZXN1bHQudmFsdWUoKTsKIH0KIAotLSAoQk9PTCloYXNQcm9wZXJ0eTooTlNTdHJpbmcgKilw
cm9wZXJ0eU5hbWUKKyNpZiBVU0VfTlNTVFJJTkdfRk9SX1BST1BFUlRZX0tFWQorLSAoQk9PTClo
YXNQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXkKKyNlbHNlCistIChCT09MKWhhc1Byb3BlcnR5Oihp
ZClrZXkKKyNlbmRpZgogewotICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBKU09i
amVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4
dFJlZl0sIG1fdmFsdWUsICZleGNlcHRpb24pOwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAg
IHJldHVybiBbX2NvbnRleHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAg
ICAvLyBUaGUgQy1hcGkgZG9lc24ndCByZXR1cm4gYW4gZXhjZXB0aW9uIHZhbHVlIGZvciB0aGUg
c3RyaW5nIHZlcnNpb24gb2YgaGFzIHByb3BlcnR5LgorICAgIGF1dG8gc3RyaW5nSGFzUHJvcGVy
dHkgPSBbXSAoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1Jl
ZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqKSAtPiBCT09MIHsKKyAgICAgICAgcmV0dXJuIEpT
T2JqZWN0SGFzUHJvcGVydHkoY3R4LCBvYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgfTsKIAot
ICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJp
bmdSZWYpcHJvcGVydHlOYW1lKTsKLSAgICBCT09MIHJlc3VsdCA9IEpTT2JqZWN0SGFzUHJvcGVy
dHkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgbmFtZSk7Ci0gICAgSlNT
dHJpbmdSZWxlYXNlKG5hbWUpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgRXhwZWN0ZWQ8Qk9P
TCwgSlNWYWx1ZVJlZj4gcmVzdWx0ID0gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uPEJPT0w+KHN0
cmluZ0hhc1Byb3BlcnR5LCBKU09iamVjdEhhc1Byb3BlcnR5S2V5LCBzZWxmLCBrZXkpOworICAg
IGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gW19jb250ZXh0IGJvb2xGcm9tTm90aWZ5RXhj
ZXB0aW9uOnJlc3VsdC5lcnJvcigpXTsKKyAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7CiB9CiAK
LS0gKHZvaWQpZGVmaW5lUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHkgZGVzY3JpcHRvcjoo
aWQpZGVzY3JpcHRvcgorI2lmIFVTRV9OU1NUUklOR19GT1JfUFJPUEVSVFlfS0VZCistICh2b2lk
KWRlZmluZVByb3BlcnR5OihOU1N0cmluZyAqKWtleSBkZXNjcmlwdG9yOihpZClkZXNjcmlwdG9y
CisjZWxzZQorLSAodm9pZClkZWZpbmVQcm9wZXJ0eTooaWQpa2V5IGRlc2NyaXB0b3I6KGlkKWRl
c2NyaXB0b3IKKyNlbmRpZgogewotICAgIFtbX2NvbnRleHQgZ2xvYmFsT2JqZWN0XVtAIk9iamVj
dCJdIGludm9rZU1ldGhvZDpAImRlZmluZVByb3BlcnR5IiB3aXRoQXJndW1lbnRzOkBbIHNlbGYs
IHByb3BlcnR5LCBkZXNjcmlwdG9yIF1dOworICAgIFtbX2NvbnRleHQgZ2xvYmFsT2JqZWN0XVtA
Ik9iamVjdCJdIGludm9rZU1ldGhvZDpAImRlZmluZVByb3BlcnR5IiB3aXRoQXJndW1lbnRzOkBb
IHNlbGYsIGtleSwgZGVzY3JpcHRvciBdXTsKIH0KIAorI3VuZGVmIFVTRV9OU1NUUklOR19GT1Jf
UFJPUEVSVFlfS0VZCisKIC0gKEpTVmFsdWUgKil2YWx1ZUF0SW5kZXg6KE5TVUludGVnZXIpaW5k
ZXgKIHsKICAgICAvLyBQcm9wZXJ0aWVzIHRoYXQgYXJlIGhpZ2hlciB0aGFuIGFuIHVuc2lnbmVk
IHZhbHVlIGNhbiBob2xkIGFyZSBjb252ZXJ0ZWQgdG8gYSBkb3VibGUgdGhlbiBpbnNlcnRlZCBh
cyBhIG5vcm1hbCBwcm9wZXJ0eS4KQEAgLTM3Miw2ICs0MTIsMTEgQEAgTlNTdHJpbmcgKiBjb25z
dCBKU1Byb3BlcnR5RGVzY3JpcHRvclNldEtleSA9IEAic2V0IjsKICAgICByZXR1cm4gSlNWYWx1
ZUlzT2JqZWN0KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlKTsKIH0KIAor
LSAoQk9PTClpc1N5bWJvbAoreworICAgIHJldHVybiBKU1ZhbHVlSXNTeW1ib2woW19jb250ZXh0
IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUpOworfQorCiAtIChCT09MKWlzQXJyYXkKIHsK
ICAgICByZXR1cm4gSlNWYWx1ZUlzQXJyYXkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0s
IG1fdmFsdWUpOwpAQCAtNTU0LDEzICs1OTksNyBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVy
dHlEZXNjcmlwdG9yU2V0S2V5ID0gQCJzZXQiOwogCiAtIChKU1ZhbHVlICopb2JqZWN0Rm9yS2V5
ZWRTdWJzY3JpcHQ6KGlkKWtleQogewotICAgIGlmICghW2tleSBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dKSB7Ci0gICAgICAgIGtleSA9IFtbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6
a2V5IGluQ29udGV4dDpfY29udGV4dF0gdG9TdHJpbmddOwotICAgICAgICBpZiAoIWtleSkKLSAg
ICAgICAgICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRleHQ6X2Nv
bnRleHRdOwotICAgIH0KLQotICAgIHJldHVybiBbc2VsZiB2YWx1ZUZvclByb3BlcnR5OihOU1N0
cmluZyAqKWtleV07CisgICAgcmV0dXJuIFtzZWxmIHZhbHVlRm9yUHJvcGVydHk6a2V5XTsKIH0K
IAogLSAoSlNWYWx1ZSAqKW9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRl
eApAQCAtNTY4LDE1ICs2MDcsOSBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlw
dG9yU2V0S2V5ID0gQCJzZXQiOwogICAgIHJldHVybiBbc2VsZiB2YWx1ZUF0SW5kZXg6aW5kZXhd
OwogfQogCi0tICh2b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGZvcktleWVkU3Vic2NyaXB0OihO
U09iamVjdCA8TlNDb3B5aW5nPiAqKWtleQorLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBm
b3JLZXllZFN1YnNjcmlwdDooaWQpa2V5CiB7Ci0gICAgaWYgKCFba2V5IGlzS2luZE9mQ2xhc3M6
W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAga2V5ID0gW1tKU1ZhbHVlIHZhbHVlV2l0aE9i
amVjdDprZXkgaW5Db250ZXh0Ol9jb250ZXh0XSB0b1N0cmluZ107Ci0gICAgICAgIGlmICgha2V5
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFtzZWxmIHNldFZhbHVlOm9iamVj
dCBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXldOworICAgIFtzZWxmIHNldFZhbHVlOm9iamVj
dCBmb3JQcm9wZXJ0eTprZXldOwogfQogCiAtICh2b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGF0
SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRleApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNWYWx1ZVJlZi5jcHAKaW5kZXggNzk1NTliZTkwNzk4NzE1MWIyZmE3ZDkzMTI2NDI0NTE4
ODgxMGZkYy4uZGFjYTBlMWI0OWRkOGQ1MTJlNTY1ZGMxM2NjY2FmMmI5N2YyMDhiNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCkBAIC04Niw2ICs4Niw4IEBAIHN0
YXRpYyBib29sIGV2ZXJub3RlSGFja05lZWRlZCgpCiAgICAgICAgIHJldHVybiBrSlNUeXBlTnVt
YmVyOwogICAgIGlmIChqc1ZhbHVlLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBrSlNUeXBl
U3RyaW5nOworICAgIGlmIChqc1ZhbHVlLmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiBrSlNU
eXBlU3ltYm9sOwogICAgIEFTU0VSVChqc1ZhbHVlLmlzT2JqZWN0KCkpOwogICAgIHJldHVybiBr
SlNUeXBlT2JqZWN0OwogfQpAQCAtMTYyLDYgKzE2NCwxOCBAQCBib29sIEpTVmFsdWVJc09iamVj
dChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQogICAgIHJldHVybiB0b0pTKGV4
ZWMsIHZhbHVlKS5pc09iamVjdCgpOwogfQogCitib29sIEpTVmFsdWVJc1N5bWJvbChKU0NvbnRl
eHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4
ZWMpOworCisgICAgcmV0dXJuIHRvSlMoZXhlYywgdmFsdWUpLmlzU3ltYm9sKCk7Cit9CisKIGJv
b2wgSlNWYWx1ZUlzQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkKIHsK
ICAgICBpZiAoIWN0eCkgewpAQCAtMzIwLDYgKzMzNCwyMiBAQCBKU1ZhbHVlUmVmIEpTVmFsdWVN
YWtlTnVtYmVyKEpTQ29udGV4dFJlZiBjdHgsIGRvdWJsZSB2YWx1ZSkKICAgICByZXR1cm4gdG9S
ZWYoZXhlYywganNOdW1iZXIocHVyaWZ5TmFOKHZhbHVlKSkpOwogfQogCitKU1ZhbHVlUmVmIEpT
VmFsdWVNYWtlU3ltYm9sKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIGRlc2NyaXB0aW9u
KQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhj
dHgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfQ0FUQ0hfU0NPUEUoZXhlYy0+dm0oKSk7CisKKyAgICBKU1N0cmluZyoganNEZXNjcmlw
dGlvbiA9IGpzU3RyaW5nKGV4ZWMsIGRlc2NyaXB0aW9uID8gZGVzY3JpcHRpb24tPnN0cmluZygp
IDogU3RyaW5nKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwor
CisgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIFN5bWJvbDo6Y3JlYXRlKGV4ZWMsIGpzRGVzY3JpcHRp
b24pKTsKK30KKwogSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZVN0cmluZyhKU0NvbnRleHRSZWYgY3R4
LCBKU1N0cmluZ1JlZiBzdHJpbmcpCiB7CiAgICAgaWYgKCFjdHgpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1ZhbHVlUmVmLmgKaW5kZXggOTgxNWRlNzgzYzBhZWUwNzNlM2E0NDhiZDBjN2Nh
ZGQ0YTk1MmMwNi4uYTQyN2Q5OGI1NThmZWM5NGMzZGJlZGVjYTNlN2IwMTZhOTRmMjFiMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmgKQEAgLTQyLDYgKzQyLDcgQEAKIEBj
b25zdGFudCAgICAga0pTVHlwZU51bWJlciAgICAgQSBwcmltaXRpdmUgbnVtYmVyIHZhbHVlLgog
QGNvbnN0YW50ICAgICBrSlNUeXBlU3RyaW5nICAgICBBIHByaW1pdGl2ZSBzdHJpbmcgdmFsdWUu
CiBAY29uc3RhbnQgICAgIGtKU1R5cGVPYmplY3QgICAgIEFuIG9iamVjdCB2YWx1ZSAobWVhbmlu
ZyB0aGF0IHRoaXMgSlNWYWx1ZVJlZiBpcyBhIEpTT2JqZWN0UmVmKS4KK0Bjb25zdGFudCAgICAg
a0pTVHlwZVN5bWJvbCAgICAgQSBwcmltaXRpdmUgc3ltYm9sIHZhbHVlLgogKi8KIHR5cGVkZWYg
ZW51bSB7CiAgICAga0pTVHlwZVVuZGVmaW5lZCwKQEAgLTQ5LDcgKzUwLDggQEAgdHlwZWRlZiBl
bnVtIHsKICAgICBrSlNUeXBlQm9vbGVhbiwKICAgICBrSlNUeXBlTnVtYmVyLAogICAgIGtKU1R5
cGVTdHJpbmcsCi0gICAga0pTVHlwZU9iamVjdAorICAgIGtKU1R5cGVPYmplY3QsCisgICAga0pT
VHlwZVN5bWJvbCBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goSlNDX01BQ19UQkEpLCBpb3MoSlND
X0lPU19UQkEpKQogfSBKU1R5cGU7CiAKIC8qIQpAQCAtODAsNyArODIsNyBAQCB0eXBlZGVmIGVu
dW0gewogICAgIGtKU1R5cGVkQXJyYXlUeXBlRmxvYXQ2NEFycmF5LAogICAgIGtKU1R5cGVkQXJy
YXlUeXBlQXJyYXlCdWZmZXIsCiAgICAga0pTVHlwZWRBcnJheVR5cGVOb25lLAotfSBKU1R5cGVk
QXJyYXlUeXBlIENGX0VOVU1fQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK30gSlNUeXBlZEFycmF5
VHlwZSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAjaWZk
ZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewpAQCAtMTQ5LDYgKzE1MSwxNiBAQCBKU19FWFBP
UlQgYm9vbCBKU1ZhbHVlSXNTdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1
ZSk7CiAqLwogSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzT2JqZWN0KEpTQ29udGV4dFJlZiBjdHgs
IEpTVmFsdWVSZWYgdmFsdWUpOwogCisvKiEKK0BmdW5jdGlvbgorQGFic3RyYWN0ICAgICAgIFRl
c3RzIHdoZXRoZXIgYSBKYXZhU2NyaXB0IHZhbHVlJ3MgdHlwZSBpcyB0aGUgc3ltYm9sIHR5cGUu
CitAcGFyYW0gY3R4ICAgICAgVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KK0BwYXJhbSB2
YWx1ZSAgICBUaGUgSlNWYWx1ZSB0byB0ZXN0LgorQHJlc3VsdCAgICAgICAgIHRydWUgaWYgdmFs
dWUncyB0eXBlIGlzIHRoZSBzeW1ib2wgdHlwZSwgb3RoZXJ3aXNlIGZhbHNlLgorKi8KK0pTX0VY
UE9SVCBib29sIEpTVmFsdWVJc1N5bWJvbChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZh
bHVlKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goSlNDX01BQ19UQkEpLCBpb3MoSlNDX0lPU19U
QkEpKTsKKworCiAvKiEKIEBmdW5jdGlvbgogQGFic3RyYWN0IFRlc3RzIHdoZXRoZXIgYSBKYXZh
U2NyaXB0IHZhbHVlIGlzIGFuIG9iamVjdCB3aXRoIGEgZ2l2ZW4gY2xhc3MgaW4gaXRzIGNsYXNz
IGNoYWluLgpAQCAtMTY2LDcgKzE3OCw3IEBAIEpTX0VYUE9SVCBib29sIEpTVmFsdWVJc09iamVj
dE9mQ2xhc3MoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNDbGFzCiBAcGFy
YW0gdmFsdWUgICAgVGhlIEpTVmFsdWUgdG8gdGVzdC4KIEByZXN1bHQgICAgICAgICB0cnVlIGlm
IHZhbHVlIGlzIGFuIGFycmF5LCBvdGhlcndpc2UgZmFsc2UuCiAqLwotSlNfRVhQT1JUIGJvb2wg
SlNWYWx1ZUlzQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkgQ0ZfQVZB
SUxBQkxFKDEwXzExLCA5XzApOworSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzQXJyYXkoSlNDb250
ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEw
LjExKSwgaW9zKDkuMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTc1LDcgKzE4Nyw3IEBAIEpT
X0VYUE9SVCBib29sIEpTVmFsdWVJc0FycmF5KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYg
dmFsdWUpIENGX0FWQUlMQUJMRSgxCiBAcGFyYW0gdmFsdWUgICAgVGhlIEpTVmFsdWUgdG8gdGVz
dC4KIEByZXN1bHQgICAgICAgICB0cnVlIGlmIHZhbHVlIGlzIGEgZGF0ZSwgb3RoZXJ3aXNlIGZh
bHNlLgogKi8KLUpTX0VYUE9SVCBib29sIEpTVmFsdWVJc0RhdGUoSlNDb250ZXh0UmVmIGN0eCwg
SlNWYWx1ZVJlZiB2YWx1ZSkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzApOworSlNfRVhQT1JUIGJv
b2wgSlNWYWx1ZUlzRGF0ZShKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CiAKIC8qIQogQGZ1bmN0aW9u
CkBAIC0xODUsNyArMTk3LDcgQEAgSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzRGF0ZShKU0NvbnRl
eHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKSBDRl9BVkFJTEFCTEUoMTAKIEBwYXJhbSBleGNl
cHRpb24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBl
eGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBh
biBleGNlcHRpb24uCiBAcmVzdWx0ICAgICAgICAgICAgIEEgdmFsdWUgb2YgdHlwZSBKU1R5cGVk
QXJyYXlUeXBlIHRoYXQgaWRlbnRpZmllcyB2YWx1ZSdzIFR5cGVkIEFycmF5IHR5cGUsIG9yIGtK
U1R5cGVkQXJyYXlUeXBlTm9uZSBpZiB0aGUgdmFsdWUgaXMgbm90IGEgVHlwZWQgQXJyYXkgb2Jq
ZWN0LgogICovCi1KU19FWFBPUlQgSlNUeXBlZEFycmF5VHlwZSBKU1ZhbHVlR2V0VHlwZWRBcnJh
eVR5cGUoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTVHlwZWRBcnJh
eVR5cGUgSlNWYWx1ZUdldFR5cGVkQXJyYXlUeXBlKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVS
ZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyogQ29tcGFyaW5nIHZhbHVlcyAqLwogCkBAIC0yNTcs
NiArMjY5LDE1IEBAIEpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlQm9vbGVhbihKU0Nv
bnRleHRSZWYgY3R4LCBib29sIGJvb2xlYW4pOwogKi8KIEpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpT
VmFsdWVNYWtlTnVtYmVyKEpTQ29udGV4dFJlZiBjdHgsIGRvdWJsZSBudW1iZXIpOwogCisvKiEK
K0BmdW5jdGlvbgorQGFic3RyYWN0ICAgICAgICAgICAgQ3JlYXRlcyBhIEphdmFTY3JpcHQgdmFs
dWUgb2YgdGhlIHN5bWJvbCB0eXBlLgorQHBhcmFtIGN0eCAgICAgICAgICAgVGhlIGV4ZWN1dGlv
biBjb250ZXh0IHRvIHVzZS4KK0BwYXJhbSBkZXNjcmlwdGlvbiAgIEEgZGVzY3JpcHRpb24gb2Yg
dGhlIG5ld2x5IGNyZWF0ZWQgc3ltYm9sIHZhbHVlLgorQHJlc3VsdCAgICAgICAgICAgICAgQSB1
bmlxdWUgSlNWYWx1ZSBvZiB0aGUgc3ltYm9sIHR5cGUsIHdob3NlIGRlc2NyaXB0aW9uIG1hdGNo
ZXMgdGhlIG9uZSBwcm92aWRlZC4KKyovCitKU19FWFBPUlQgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFr
ZVN5bWJvbChKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBkZXNjcmlwdGlvbikgSlNDX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KEpTQ19NQUNfVEJBKSwgaW9zKEpTQ19JT1NfVEJBKSk7CisKIC8q
IQogQGZ1bmN0aW9uCiBAYWJzdHJhY3QgICAgICAgQ3JlYXRlcyBhIEphdmFTY3JpcHQgdmFsdWUg
b2YgdGhlIHN0cmluZyB0eXBlLgpAQCAtMjc2LDcgKzI5Nyw3IEBAIEpTX0VYUE9SVCBKU1ZhbHVl
UmVmIEpTVmFsdWVNYWtlU3RyaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHN0cmlu
Zyk7CiAgQHBhcmFtIHN0cmluZyAgIFRoZSBKU1N0cmluZyBjb250YWluaW5nIHRoZSBKU09OIHN0
cmluZyB0byBiZSBwYXJzZWQuCiAgQHJlc3VsdCAgICAgICAgIEEgSlNWYWx1ZSBjb250YWluaW5n
IHRoZSBwYXJzZWQgdmFsdWUsIG9yIE5VTEwgaWYgdGhlIGlucHV0IGlzIGludmFsaWQuCiAgKi8K
LUpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlRnJvbUpTT05TdHJpbmcoSlNDb250ZXh0
UmVmIGN0eCwgSlNTdHJpbmdSZWYgc3RyaW5nKSBDRl9BVkFJTEFCTEUoMTBfNywgN18wKTsKK0pT
X0VYUE9SVCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlRnJvbUpTT05TdHJpbmcoSlNDb250ZXh0UmVm
IGN0eCwgSlNTdHJpbmdSZWYgc3RyaW5nKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNyks
IGlvcyg3LjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC0yODcsNyArMzA4LDcgQEAgSlNfRVhQ
T1JUIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VGcm9tSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4
LCBKU1N0cmluZ1JlZiBzdHIKICBAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFs
dWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBp
ZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1bHQgICAgICAg
ICBBIEpTU3RyaW5nIHdpdGggdGhlIHJlc3VsdCBvZiBzZXJpYWxpemF0aW9uLCBvciBOVUxMIGlm
IGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uCiAgKi8KLUpTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU1Zh
bHVlQ3JlYXRlSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlLCB1
bnNpZ25lZCBpbmRlbnQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzcs
IDdfMCk7CitKU19FWFBPUlQgSlNTdHJpbmdSZWYgSlNWYWx1ZUNyZWF0ZUpTT05TdHJpbmcoSlND
b250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgdW5zaWduZWQgaW5kZW50LCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC43KSwgaW9zKDcuMCkp
OwogCiAvKiBDb252ZXJ0aW5nIHRvIHByaW1pdGl2ZSB2YWx1ZXMgKi8KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUuaAppbmRleCBlOWM3NWRhMDc3MmM1NTQ0
MDE5YTRhY2RmNGM5MDU1YzRjZWY0NDdjLi43ZDJmMGE3MDdjNTlhY2RiZDdhYjFiNTBjZjQ3MjIy
N2IyYzA1MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVh
bE1hY2hpbmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hp
bmUuaApAQCAtMzksNyArMzksNyBAQAogIG9mIHRoZSB0aHJlYWQgaXQgd2FzIGluaXRpYWxpemVk
IG9uLiBDdXJyZW50bHksIHRoZXJlIGlzIG5vIEFQSSB0byBjaGFuZ2UgYQogIEpTVmlydHVhbE1h
Y2hpbmUncyBydW4gbG9vcCBvbmNlIGl0IGhhcyBiZWVuIGluaXRpYWxpemVkLgogKi8KLU5TX0NM
QVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCitKU0NfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeCgxMC45
KSwgaW9zKDcuMCkpCiBAaW50ZXJmYWNlIEpTVmlydHVhbE1hY2hpbmUgOiBOU09iamVjdAogCiAv
KiEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvV2ViS2l0QXZhaWxhYmls
aXR5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL1dlYktpdEF2YWlsYWJpbGl0eS5oCmlu
ZGV4IDgyMjc1MjAzZGM5ODAxODMzMWE5MWJiOTViOWQ2ZGIxNmU1OWY5YWEuLjBmNmFmYjZiMWRi
ZDYxOTgxZGVkZWQwYTFlNWIyNGM4ZmRjYjUzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvV2ViS2l0QXZhaWxhYmlsaXR5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9XZWJLaXRBdmFpbGFiaWxpdHkuaApAQCAtNjksMTUgKzY5LDEyIEBACiAjZW5kaWYg
LyogIVRBUkdFVF9PU19JUEhPTkUgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8
IDEwMTEwMCAqLwogCiAjaWYgZGVmaW5lZChCVUlMRElOR19HVEtfXykKLSN1bmRlZiBDRl9BVkFJ
TEFCTEUKLSNkZWZpbmUgQ0ZfQVZBSUxBQkxFKF9tYWMsIF9pb3MpCi0jdW5kZWYgQ0ZfRU5VTV9B
VkFJTEFCTEUKLSNkZWZpbmUgQ0ZfRU5VTV9BVkFJTEFCTEUoX21hYywgX2lvcykKKyN1bmRlZiBK
U0NfQVBJX0FWQUlMQUJMRQorI2RlZmluZSBKU0NfQVBJX0FWQUlMQUJMRSguLi4pCiAjZW5kaWYK
IAogI2Vsc2UKLSNkZWZpbmUgQ0ZfQVZBSUxBQkxFKF9tYWMsIF9pb3MpCi0jZGVmaW5lIENGX0VO
VU1fQVZBSUxBQkxFKF9tYWMsIF9pb3MpCisjZGVmaW5lIEpTQ19BUElfQVZBSUxBQkxFKC4uLikK
ICNlbmRpZgogCiAjZW5kaWYgLyogX19XZWJLaXRBdmFpbGFiaWxpdHlfXyAqLwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9DdXJyZW50VGhpc0luc2lkZUJsb2Nr
R2V0dGVyVGVzdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VycmVudFRo
aXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0KaW5kZXggNTMxODhmYmE4OGY5NTQyN2M4YWU5MzM5
YWFjODhkMGM2OGExN2ViMS4uYmQ3ZThhNjg2MDdlNWY4ZGQ3OGQ5NDZiZGRhNzRhNjFkMjVmN2Uw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9DdXJyZW50VGhp
c0luc2lkZUJsb2NrR2V0dGVyVGVzdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL0N1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lm1tCkBAIC0yMyw2ICsyMyw3
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkN1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lmgi
CiAKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy9DdXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuYyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmMKaW5k
ZXggYWM1NDcxYTY3NDFiZmY5M2M3MDBiZjNiM2FhYzZlZDM4NzQ5ZjBiZi4uOWZmZTIzM2Y0Yjc5
NmY1YTBiOTViMzc0YTQ4M2IwMTRlZDViZGQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy9DdXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuYworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0N1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVzdC5j
CkBAIC0yMyw2ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJDdXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuaCIKIAogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmUHJpdmF0ZS5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9EYXRlVGVzdHMubW0gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL0RhdGVUZXN0cy5tbQppbmRleCAyYmRhM2FkYTZiMTU4ZTAxMDhh
ZWM1ZjQyZTc2NTM5NzMwZWMyZWQ5Li42NjUyMTc3ZGU0MTdiMTJlZTk0ZGU4ODNiOGZiMGJkNzA5
ZGQ2NzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0RhdGVU
ZXN0cy5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0RhdGVUZXN0cy5t
bQpAQCAtMjMsNiArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKKyNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRGF0ZVRlc3RzLmgiCiAjaW1wb3J0
IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy9KU0V4cG9ydFRlc3RzLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS90ZXN0cy9KU0V4cG9ydFRlc3RzLm1tCmluZGV4IDFjZWM5Mzk3OWM0MTZmNGMwZjA0OTA1
ZWU3NDc2ZTc4NjRkODQyNTIuLmRmZGM5NWY0N2JjNzc1YjA4YjM2NjczZDBiYmJmZTZiY2UzNDFi
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNFeHBvcnRU
ZXN0cy5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTRXhwb3J0VGVz
dHMubW0KQEAgLTIzLDYgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCisjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkpTRXhwb3J0VGVzdHMuaCIK
IAogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL0pTTm9kZS5jIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy9KU05vZGUuYwppbmRleCBkMGEwZGMzZWM3MjM3MjU3ZmExODBkMDUxNGY3NGM2YWQyZTRiNWI3
Li5iYzAwNDBhZTZiYTQwOTg1MzgzOGNhZWFkNmEyMzg0ZWM5OTkwMDQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZS5jCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNOb2RlLmMKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAogICovCiAKLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlICJjb25m
aWcuaCIKIAogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNOb2RlTGlzdC5jIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU05vZGVMaXN0LmMKaW5kZXggZjAzN2Uw
OTRhMDllMWEyMjYwNDRlZWQxZjIzZDBhNTE4NjFhM2Y0Yi4uOTlhMzI5NTE4ZTZhOWExY2ZiMTI2
NzY0NzM5YTBiNjljZmE1ZDQwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy9KU05vZGVMaXN0LmMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy9KU05vZGVMaXN0LmMKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAK
LSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1
ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9kZS5jIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS90ZXN0cy9Ob2RlLmMKaW5kZXggZGI2ODdlOTUyZjFhOWQ4YzEzNGI5MDY3N2QyOWE2NDA2
ZDhkYjFhMi4uOGY3ZDA2YjJhYTRhZGUyNjlkNjFlZmM2MWMwMTg0Y2NjMzE5NWEwNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Ob2RlLmMKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Ob2RlLmMKQEAgLTIzLDcgKzIzLDkgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAogICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOb2RlLmgi
CisKICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Ob2RlTGlzdC5jIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Ob2RlTGlzdC5jCmluZGV4IDY5ZjRjZDVjNDg3MzEyYmQ2
Mzk5NjM0ZmIwNjg0YTEyMjY2NGRjMTguLjIyZDM4N2MwZDQyMjZmYmFkMTE5N2M2NDgzMWNkNTdh
ZjMxYWZkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9k
ZUxpc3QuYworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL05vZGVMaXN0LmMK
QEAgLTIzLDYgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKKyNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogCiAjaW5jbHVkZSA8c3RkbGliLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL21pbmlkb20uYyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvbWluaWRvbS5jCmluZGV4IDAyYjQxYTljN2Y5ZGEx
MTNiMDAzZDRmOTE5YTQyMDhkMzg5Yjc4YmQuLjQxZjE4Y2RmNzI5MDQzNjkwY2ZlNzczYmE0MGQ4
YjViNDRjYTcwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
bWluaWRvbS5jCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvbWluaWRvbS5j
CkBAIC0yNCw3ICsyNCw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJKU0NvbnRleHRS
ZWYuaCIKICNpbmNsdWRlICJKU05vZGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy90ZXN0YXBpLmMKaW5kZXggN2JlY2RmZTA0MTE1YmY5NDg5ZWY4NDE5N2MxNjcxYzViODNiYTRl
Mi4uODZkMWMyNWMyN2U5NTJkNjFhYjllNDFiZTE0NTc0MTBmYmM0OGY0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgImNv
bmZpZy5oIgogCiAjaWYgVVNFKENGKQogI2luY2x1ZGUgIkphdmFTY3JpcHRDb3JlLmgiCkBAIC02
Niw2ICs2Niw4IEBACiB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKHZvaWQpOwogI2VuZGlmCiAKK2lu
dCB0ZXN0Q0FQSVZpYUNwcCh2b2lkKTsKKwogYm9vbCBhc3NlcnRUcnVlKGJvb2wgdmFsdWUsIGNv
bnN0IGNoYXIqIG1lc3NhZ2UpOwogCiBzdGF0aWMgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQ7
CkBAIC0xMzYxLDYgKzEzNjMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQog
I2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgdGVzdE9iamVjdGl2ZUNBUEkoKTsKICNlbmRp
ZgorICAgIFJFTEVBU0VfQVNTRVJUKCF0ZXN0Q0FQSVZpYUNwcCgpKTsKIAogICAgIGNvbnN0IGNo
YXIgKnNjcmlwdFBhdGggPSAidGVzdGFwaS5qcyI7CiAgICAgaWYgKGFyZ2MgPiAxKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzFi
NDUwN2Y5YTk2OTljNDY0YjY0NmY5MjJmZTgxOGU1NzRmZWU1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmNwcApAQCAtMCwwICsxLDM5
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkpTQ0pT
VmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKYXZhU2Ny
aXB0Q29yZS5oIgorCisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KKyNpbmNsdWRlIDx3dGYvRXhw
ZWN0ZWQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKK2V4dGVybiAiQyIgaW50IHRlc3RDQVBJVmlhQ3BwKCk7CisKK2NsYXNzIEFQSVN0
cmluZyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQVBJU3RyaW5nKTsKK3B1YmxpYzoKKwor
ICAgIEFQSVN0cmluZyhjb25zdCBjaGFyKiBzdHJpbmcpCisgICAgICAgIDogbV9zdHJpbmcoSlNT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc3RyaW5nKSkKKyAgICB7CisgICAgfQorCisgICAg
fkFQSVN0cmluZygpCisgICAgeworICAgICAgICBKU1N0cmluZ1JlbGVhc2UobV9zdHJpbmcpOwor
ICAgIH0KKworICAgIG9wZXJhdG9yIEpTU3RyaW5nUmVmKCkgeyByZXR1cm4gbV9zdHJpbmc7IH0K
KworcHJpdmF0ZToKKyAgICBKU1N0cmluZ1JlZiBtX3N0cmluZzsKK307CisKK2NsYXNzIEFQSUNv
bnRleHQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFQSUNvbnRleHQpOworcHVibGljOgor
CisgICAgQVBJQ29udGV4dCgpCisgICAgICAgIDogbV9jb250ZXh0KEpTR2xvYmFsQ29udGV4dENy
ZWF0ZShudWxscHRyKSkKKyAgICB7CisgICAgICAgIEFQSVN0cmluZyBwcmludCgicHJpbnQiKTsK
KyAgICAgICAgSlNPYmplY3RSZWYgcHJpbnRGdW5jdGlvbiA9IEpTT2JqZWN0TWFrZUZ1bmN0aW9u
V2l0aENhbGxiYWNrKG1fY29udGV4dCwgcHJpbnQsIFtdIChKU0NvbnRleHRSZWYgY3R4LCBKU09i
amVjdFJlZiwgSlNPYmplY3RSZWYsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVl
UmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKikgeworCisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgaSsrKQorICAgICAgICAgICAgICAgIGRhdGFM
b2coYml0d2lzZV9jYXN0PEpTQzo6SlNWYWx1ZT4oYXJndW1lbnRzW2ldKSk7CisgICAgICAgICAg
ICBkYXRhTG9nTG4oKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
dHgpOworICAgICAgICB9KTsKKworICAgICAgICBKU09iamVjdFNldFByb3BlcnR5KG1fY29udGV4
dCwgSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KG1fY29udGV4dCksIHByaW50LCBwcmludEZ1bmN0
aW9uLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUsIG51bGxwdHIpOworICAgIH0KKworICAgIH5B
UElDb250ZXh0KCkKKyAgICB7CisgICAgICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2UobV9jb250
ZXh0KTsKKyAgICB9CisKKyAgICBvcGVyYXRvciBKU0dsb2JhbENvbnRleHRSZWYoKSB7IHJldHVy
biBtX2NvbnRleHQ7IH0KKworcHJpdmF0ZToKKyAgICBKU0dsb2JhbENvbnRleHRSZWYgbV9jb250
ZXh0OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIEFQSVZlY3RvciA6IHByb3Rl
Y3RlZCBWZWN0b3I8VD4geworICAgIHVzaW5nIEJhc2UgPSBWZWN0b3I8VD47CitwdWJsaWM6Cisg
ICAgQVBJVmVjdG9yKEFQSUNvbnRleHQmIGNvbnRleHQpCisgICAgICAgIDogQmFzZSgpCisgICAg
ICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgeworICAgIH0KKworICAgIH5BUElWZWN0b3Io
KQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvJiB2YWx1ZSA6ICp0aGlzKQorICAgICAgICAgICAg
SlNWYWx1ZVVucHJvdGVjdChtX2NvbnRleHQsIHZhbHVlKTsKKyAgICB9CisKKyAgICB1c2luZyBW
ZWN0b3I8VD46Om9wZXJhdG9yW107CisgICAgdXNpbmcgVmVjdG9yPFQ+OjpzaXplOworICAgIHVz
aW5nIFZlY3RvcjxUPjo6YmVnaW47CisgICAgdXNpbmcgVmVjdG9yPFQ+OjplbmQ7CisgICAgdXNp
bmcgdHlwZW5hbWUgVmVjdG9yPFQ+OjppdGVyYXRvcjsKKworICAgIHZvaWQgYXBwZW5kKFQgdmFs
dWUpCisgICAgeworICAgICAgICBKU1ZhbHVlUHJvdGVjdChtX2NvbnRleHQsIHZhbHVlKTsKKyAg
ICAgICAgQmFzZTo6YXBwZW5kKFdURk1vdmUodmFsdWUpKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgQVBJQ29udGV4dCYgbV9jb250ZXh0OworfTsKKworY2xhc3MgVGVzdEFQSSB7CitwdWJsaWM6
CisgICAgaW50IHJ1bigpOworcHJpdmF0ZToKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFN0
cmluZ3M+CisgICAgYm9vbCBjaGVjayhib29sIGNvbmRpdGlvbiwgU3RyaW5ncy4uLiBtZXNzYWdl
KTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEpTRnVuY3RvciwgdHlwZW5hbWUgQVBJRnVuY3Rv
cj4KKyAgICB2b2lkIGNoZWNrSlNBbmRBUElNYXRjaChjb25zdCBKU0Z1bmN0b3ImLCBjb25zdCBB
UElGdW5jdG9yJiwgY29uc3QgY2hhciogZGVzY3JpcHRpb24pOworCisgICAgLy8gSGVscGVyIG1l
dGhvZHMuCisgICAgdXNpbmcgU2NyaXB0UmVzdWx0ID0gRXhwZWN0ZWQ8SlNWYWx1ZVJlZiwgSlNW
YWx1ZVJlZj47CisgICAgU2NyaXB0UmVzdWx0IGV2YWx1YXRlU2NyaXB0KGNvbnN0IGNoYXIqIHNj
cmlwdCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCA9IG51bGxwdHIpOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CisgICAgU2NyaXB0UmVzdWx0IGNhbGxGdW5jdGlvbihj
b25zdCBjaGFyKiBmdW5jdGlvblNvdXJjZSwgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMpOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CisgICAgYm9vbCBmdW5jdGlv
blJldHVybnNUcnVlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uU291cmNlLCBBcmd1bWVudFR5cGVzLi4u
IGFyZ3VtZW50cyk7CisKKyAgICAvLyBXYXlzIHRvIG1ha2Ugc2V0cyBvZiBpbnRlcmVzdGluZyB0
aGluZ3MuCisgICAgQVBJVmVjdG9yPEpTT2JqZWN0UmVmPiBpbnRlcmVzdGluZ09iamVjdHMoKTsK
KyAgICBBUElWZWN0b3I8SlNWYWx1ZVJlZj4gaW50ZXJlc3RpbmdLZXlzKCk7CisKKyAgICBpbnQg
ZmFpbGVkIHsgMCB9OworICAgIEFQSUNvbnRleHQgY29udGV4dDsKK307CisKK2ludCB0ZXN0Q0FQ
SVZpYUNwcCgpCit7CisgICAgVGVzdEFQSSB0ZXN0ZXI7CisgICAgcmV0dXJuIHRlc3Rlci5ydW4o
KTsKK30KKworVGVzdEFQSTo6U2NyaXB0UmVzdWx0IFRlc3RBUEk6OmV2YWx1YXRlU2NyaXB0KGNv
bnN0IGNoYXIqIHNjcmlwdCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCkKK3sKKyAgICBBUElTdHJp
bmcgc2NyaXB0QVBJU3RyaW5nKHNjcmlwdCk7CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBu
dWxscHRyOworCisgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU0V2YWx1YXRlU2NyaXB0KGNvbnRl
eHQsIHNjcmlwdEFQSVN0cmluZywgdGhpc09iamVjdCwgbnVsbHB0ciwgMCwgJmV4Y2VwdGlvbik7
CisgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8SlNWYWx1ZVJl
Zj4oZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gU2NyaXB0UmVzdWx0KHJlc3VsdCk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CitUZXN0QVBJOjpTY3JpcHRSZXN1bHQg
VGVzdEFQSTo6Y2FsbEZ1bmN0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uU291cmNlLCBBcmd1bWVu
dFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBKU1ZhbHVlUmVmIGZ1bmN0aW9uOworICAgIHsK
KyAgICAgICAgU2NyaXB0UmVzdWx0IGZ1bmN0aW9uUmVzdWx0ID0gZXZhbHVhdGVTY3JpcHQoZnVu
Y3Rpb25Tb3VyY2UpOworICAgICAgICBpZiAoIWZ1bmN0aW9uUmVzdWx0KQorICAgICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uUmVzdWx0OworICAgICAgICBmdW5jdGlvbiA9IGZ1bmN0aW9uUmVzdWx0
LnZhbHVlKCk7CisgICAgfQorCisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOwor
ICAgIGlmIChKU09iamVjdFJlZiBmdW5jdGlvbk9iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250
ZXh0LCBmdW5jdGlvbiwgJmV4Y2VwdGlvbikpIHsKKyAgICAgICAgSlNWYWx1ZVJlZiBhcmdzW3Np
emVvZi4uLihhcmd1bWVudHMpXSB7IGFyZ3VtZW50cy4uLiB9OworICAgICAgICBKU1ZhbHVlUmVm
IHJlc3VsdCA9IEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oY29udGV4dCwgZnVuY3Rpb25PYmplY3Qs
IGZ1bmN0aW9uT2JqZWN0LCBzaXplb2YuLi4oYXJndW1lbnRzKSwgYXJncywgJmV4Y2VwdGlvbik7
CisgICAgICAgIGlmICghZXhjZXB0aW9uKQorICAgICAgICAgICAgcmV0dXJuIFNjcmlwdFJlc3Vs
dChyZXN1bHQpOworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUKGV4Y2VwdGlvbik7CisgICAg
cmV0dXJuIFVuZXhwZWN0ZWQ8SlNWYWx1ZVJlZj4oZXhjZXB0aW9uKTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KK2Jvb2wgVGVzdEFQSTo6ZnVuY3Rpb25SZXR1cm5z
VHJ1ZShjb25zdCBjaGFyKiBmdW5jdGlvblNvdXJjZSwgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVu
dHMpCit7CisgICAgSlNWYWx1ZVJlZiB0cnVlVmFsdWUgPSBKU1ZhbHVlTWFrZUJvb2xlYW4oY29u
dGV4dCwgdHJ1ZSk7CisgICAgU2NyaXB0UmVzdWx0IHJlc3VsdCA9IGNhbGxGdW5jdGlvbihmdW5j
dGlvblNvdXJjZSwgYXJndW1lbnRzLi4uKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHJldHVybiBKU1ZhbHVlSXNTdHJpY3RFcXVhbChjb250ZXh0LCB0cnVl
VmFsdWUsIHJlc3VsdC52YWx1ZSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUuLi4gU3RyaW5n
cz4KK2Jvb2wgVGVzdEFQSTo6Y2hlY2soYm9vbCBjb25kaXRpb24sIFN0cmluZ3MuLi4gbWVzc2Fn
ZXMpCit7CisgICAgaWYgKCFjb25kaXRpb24pIHsKKyAgICAgICAgZGF0YUxvZ0xuKG1lc3NhZ2Vz
Li4uLCAiOiBGQUlMRUQiKTsKKyAgICAgICAgZmFpbGVkKys7CisgICAgfSBlbHNlCisgICAgICAg
IGRhdGFMb2dMbihtZXNzYWdlcy4uLiwgIjogUEFTU0VEIik7CisKKyAgICByZXR1cm4gY29uZGl0
aW9uOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0Z1bmN0b3IsIHR5cGVuYW1lIEFQSUZ1bmN0
b3I+Cit2b2lkIFRlc3RBUEk6OmNoZWNrSlNBbmRBUElNYXRjaChjb25zdCBKU0Z1bmN0b3ImIGpz
RnVuY3RvciwgY29uc3QgQVBJRnVuY3RvciYgYXBpRnVuY3RvciwgY29uc3QgY2hhciogZGVzY3Jp
cHRpb24pCit7CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOworICAgIEpTVmFs
dWVSZWYgcmVzdWx0ID0gYXBpRnVuY3RvcigmZXhjZXB0aW9uKTsKKyAgICBTY3JpcHRSZXN1bHQg
anNSZXN1bHQgPSBqc0Z1bmN0b3IoKTsKKyAgICBpZiAoIWpzUmVzdWx0KSB7CisgICAgICAgIGNo
ZWNrKGV4Y2VwdGlvbiwgIkpTIGFuZCBBUEkgY2FsbHMgc2hvdWxkIGJvdGggdGhyb3cgYW4gZXhj
ZXB0aW9uIHdoaWxlICIsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgY2hlY2soZnVuY3Rpb25SZXR1
cm5zVHJ1ZSgiKGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEuY29uc3RydWN0b3IgPT09IGIuY29u
c3RydWN0b3I7IH0pIiwgZXhjZXB0aW9uLCBqc1Jlc3VsdC5lcnJvcigpKSwgIkpTIGFuZCBBUEkg
Y2FsbHMgc2hvdWxkIGJvdGggdGhyb3cgdGhlIHNhbWUgZXhjZXB0aW9uIHdoaWxlICIsIGRlc2Ny
aXB0aW9uKTsKKyAgICB9IGVsc2UgeworICAgICAgICBjaGVjayghZXhjZXB0aW9uLCAiSlMgYW5k
IEFQSSBjYWxscyBzaG91bGQgYm90aCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uIHdoaWxlICIsIGRl
c2NyaXB0aW9uKTsKKyAgICAgICAgY2hlY2soSlNWYWx1ZUlzU3RyaWN0RXF1YWwoY29udGV4dCwg
cmVzdWx0LCBqc1Jlc3VsdC52YWx1ZSgpKSwgIkpTIHJlc3VsdCBhbmQgQVBJIGNhbGxzIHNob3Vs
ZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUgd2hpbGUgIiwgZGVzY3JpcHRpb24pOworICAgIH0KK30K
KworQVBJVmVjdG9yPEpTT2JqZWN0UmVmPiBUZXN0QVBJOjppbnRlcmVzdGluZ09iamVjdHMoKQor
eworICAgIEFQSVZlY3RvcjxKU09iamVjdFJlZj4gcmVzdWx0KGNvbnRleHQpOworICAgIEpTT2Jq
ZWN0UmVmIGFycmF5ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGV2YWx1YXRlU2NyaXB0KAor
ICAgICAgICAiW3t9LCBbXSwgeyBbU3ltYm9sLml0ZXJhdG9yXTogMSB9LCBuZXcgRGF0ZSgpLCBu
ZXcgU3RyaW5nKCdzdHInKSwgbmV3IE1hcCgpLCBuZXcgU2V0KCksIG5ldyBXZWFrTWFwKCksIG5l
dyBXZWFrU2V0KCksIG5ldyBFcnJvcigpLCBuZXcgTnVtYmVyKDQyKSwgbmV3IEJvb2xlYW4oKSwg
eyBnZXQgbGVuZ3RoKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSB9XTsiKS52YWx1ZSgpLCBudWxs
cHRyKTsKKworICAgIEFQSVN0cmluZyBsZW5ndGhTdHJpbmcoImxlbmd0aCIpOworICAgIHVuc2ln
bmVkIGxlbmd0aCA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBKU09iamVjdEdldFByb3BlcnR5
KGNvbnRleHQsIGFycmF5LCBsZW5ndGhTdHJpbmcsIG51bGxwdHIpLCBudWxscHRyKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgSlNPYmplY3RS
ZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIEpTT2JqZWN0R2V0UHJvcGVydHlB
dEluZGV4KGNvbnRleHQsIGFycmF5LCBpLCBudWxscHRyKSwgbnVsbHB0cik7CisgICAgICAgIEFT
U0VSVChvYmplY3QpOworICAgICAgICByZXN1bHQuYXBwZW5kKG9iamVjdCk7CisgICAgfQorCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworQVBJVmVjdG9yPEpTVmFsdWVSZWY+IFRlc3RBUEk6Omlu
dGVyZXN0aW5nS2V5cygpCit7CisgICAgQVBJVmVjdG9yPEpTVmFsdWVSZWY+IHJlc3VsdChjb250
ZXh0KTsKKyAgICBKU09iamVjdFJlZiBhcnJheSA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBl
dmFsdWF0ZVNjcmlwdCgiW3t9LCBbXSwgMSwgU3ltYm9sLml0ZXJhdG9yLCAnbGVuZ3RoJ10iKS52
YWx1ZSgpLCBudWxscHRyKTsKKworICAgIEFQSVN0cmluZyBsZW5ndGhTdHJpbmcoImxlbmd0aCIp
OworICAgIHVuc2lnbmVkIGxlbmd0aCA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBKU09iamVj
dEdldFByb3BlcnR5KGNvbnRleHQsIGFycmF5LCBsZW5ndGhTdHJpbmcsIG51bGxwdHIpLCBudWxs
cHRyKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHQs
IGFycmF5LCBpLCBudWxscHRyKTsKKyAgICAgICAgQVNTRVJUKHZhbHVlKTsKKyAgICAgICAgcmVz
dWx0LmFwcGVuZCh2YWx1ZSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW50
IFRlc3RBUEk6OnJ1bigpCit7CisgICAgZGF0YUxvZ0xuKCJTdGFydGluZyBDLUFQSSB0ZXN0cyBp
biBDKysiKTsKKyAgICBjb25zdCBjaGFyKiBpc1N5bWJvbEZ1bmN0aW9uID0gIihmdW5jdGlvbiBp
c1N5bWJvbChzeW1ib2wpIHsgcmV0dXJuIHR5cGVvZihzeW1ib2wpID09PSAnc3ltYm9sJzsgfSki
OworICAgIGNvbnN0IGNoYXIqIGdldEZ1bmN0aW9uID0gIihmdW5jdGlvbiBnZXQob2JqZWN0LCBr
ZXkpIHsgcmV0dXJuIG9iamVjdFtrZXldOyB9KSI7CisgICAgY29uc3QgY2hhciogc2V0RnVuY3Rp
b24gPSAiKGZ1bmN0aW9uIHNldChvYmplY3QsIGtleSwgdmFsdWUpIHsgb2JqZWN0W2tleV0gPSB2
YWx1ZTsgfSkiOworICAgIGNvbnN0IGNoYXIqIGhhc0Z1bmN0aW9uID0gIihmdW5jdGlvbiBoYXMo
b2JqZWN0LCBrZXkpIHsgcmV0dXJuIGtleSBpbiBvYmplY3Q7IH0pIjsKKyAgICBjb25zdCBjaGFy
KiBkZWxldGVGdW5jdGlvbiA9ICIoZnVuY3Rpb24gZGVsKG9iamVjdCwga2V5KSB7IHJldHVybiBk
ZWxldGUgb2JqZWN0W2tleV07IH0pIjsKKworICAgIHsKKyAgICAgICAgLy8gQ2FuJ3QgY2FsbCBT
eW1ib2wgYXMgYSBjb25zdHJ1Y3RvciBzaW5jZSBpdCdzIG5vdCBzdWJjbGFzc2FibGUuCisgICAg
ICAgIGF1dG8gcmVzdWx0ID0gZXZhbHVhdGVTY3JpcHQoIlN5bWJvbCgnZG9wZScpOyIpOworICAg
ICAgICBjaGVjayhKU1ZhbHVlR2V0VHlwZShjb250ZXh0LCByZXN1bHQudmFsdWUoKSkgPT0ga0pT
VHlwZVN5bWJvbCwgImRvcGUgZ2V0IHR5cGUgaXMgYSBzeW1ib2wiKTsKKyAgICAgICAgY2hlY2so
SlNWYWx1ZUlzU3ltYm9sKGNvbnRleHQsIHJlc3VsdC52YWx1ZSgpKSwgImRvcGUgaXMgYSBzeW1i
b2wiKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIEFQSVN0cmluZyBkZXNjcmlwdGlvbigiZG9w
ZSIpOworICAgICAgICBKU1ZhbHVlUmVmIHN5bWJvbCA9IEpTVmFsdWVNYWtlU3ltYm9sKGNvbnRl
eHQsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgY2hlY2soZnVuY3Rpb25SZXR1cm5zVHJ1ZShpc1N5
bWJvbEZ1bmN0aW9uLCBzeW1ib2wpLCAiSlNWYWx1ZU1ha2VTeW1ib2wgbWFrZXMgYSBzeW1ib2wg
dmFsdWUiKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGF1dG8gb2JqZWN0cyA9IGludGVyZXN0
aW5nT2JqZWN0cygpOworICAgICAgICBhdXRvIGtleXMgPSBpbnRlcmVzdGluZ0tleXMoKTsKKwor
ICAgICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IG9iamVjdHMpIHsKKyAgICAgICAgICAgIGRhdGFM
b2dMbigiXG5uZXh0IG9iamVjdDogIiwgYml0d2lzZV9jYXN0PEpTQzo6SlNWYWx1ZT4ob2JqZWN0
KSk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGtleSA6IGtleXMpIHsKKyAgICAgICAgICAgICAg
ICBkYXRhTG9nTG4oIlVzaW5nIGtleTogIiwgYml0d2lzZV9jYXN0PEpTQzo6SlNWYWx1ZT4oa2V5
KSk7CisgICAgICAgICAgICAgICAgY2hlY2tKU0FuZEFQSU1hdGNoKAorICAgICAgICAgICAgICAg
ICAgICBbJl0geworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxGdW5jdGlvbihn
ZXRGdW5jdGlvbiwgb2JqZWN0LCBrZXkpOworICAgICAgICAgICAgICAgICAgICB9LCBbJl0gKEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpT
T2JqZWN0R2V0UHJvcGVydHlLZXkoY29udGV4dCwgb2JqZWN0LCBrZXksIGV4Y2VwdGlvbik7Cisg
ICAgICAgICAgICAgICAgICAgIH0sICJjaGVja2luZyBnZXQgcHJvcGVydHkga2V5cyIpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgeworICAgICAgICBhdXRvIGpzT2Jq
ZWN0cyA9IGludGVyZXN0aW5nT2JqZWN0cygpOworICAgICAgICBhdXRvIGFwaU9iamVjdHMgPSBp
bnRlcmVzdGluZ09iamVjdHMoKTsKKyAgICAgICAgYXV0byBrZXlzID0gaW50ZXJlc3RpbmdLZXlz
KCk7CisKKyAgICAgICAgSlNWYWx1ZVJlZiB0aGVBbnN3ZXIgPSBKU1ZhbHVlTWFrZU51bWJlcihj
b250ZXh0LCA0Mik7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwganNPYmplY3RzLnNp
emUoKTsgaSsrKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGtleSA6IGtleXMpIHsKKyAgICAg
ICAgICAgICAgICBKU09iamVjdFJlZiBqc09iamVjdCA9IGpzT2JqZWN0c1tpXTsKKyAgICAgICAg
ICAgICAgICBKU09iamVjdFJlZiBhcGlPYmplY3QgPSBhcGlPYmplY3RzW2ldOworICAgICAgICAg
ICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oc2V0RnVuY3Rpb24sIGpz
T2JqZWN0LCBrZXksIHRoZUFuc3dlcik7CisgICAgICAgICAgICAgICAgICAgIH0gLCBbJl0gKEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3RT
ZXRQcm9wZXJ0eUtleShjb250ZXh0LCBhcGlPYmplY3QsIGtleSwgdGhlQW5zd2VyLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZU5vbmUsIGV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisgICAgICAgICAgICAgICAgICAg
IH0sICJzZXR0aW5nIHByb3BlcnR5IGtleXMgdG8gdGhlIGFuc3dlciIpOworICAgICAgICAgICAg
ICAgIC8vIENoZWNrIGdldCBpcyB0aGUgc2FtZSBvbiBBUEkgb2JqZWN0LgorICAgICAgICAgICAg
ICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oZ2V0RnVuY3Rpb24sIGFwaU9i
amVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgWyZdIChKU1ZhbHVlUmVmKiBleGNl
cHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09iamVjdEdldFByb3Bl
cnR5S2V5KGNvbnRleHQsIGFwaU9iamVjdCwga2V5LCBleGNlcHRpb24pOworICAgICAgICAgICAg
ICAgICAgICB9LCAiZ2V0dGluZyBwcm9wZXJ0eSBrZXlzIGZyb20gQVBJIG9iamVjdHMiKTsKKyAg
ICAgICAgICAgICAgICAvLyBDaGVjayBnZXQgaXMgdGhlIHNhbWUgb24gcmVzcGVjdGl2ZSBvYmpl
Y3RzLgorICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAg
ICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24o
Z2V0RnVuY3Rpb24sIGpzT2JqZWN0LCBrZXkpOworICAgICAgICAgICAgICAgICAgICB9LCBbJl0g
KEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEpTT2JqZWN0R2V0UHJvcGVydHlLZXkoY29udGV4dCwgYXBpT2JqZWN0LCBrZXksIGV4Y2VwdGlv
bik7CisgICAgICAgICAgICAgICAgICAgIH0sICJnZXR0aW5nIHByb3BlcnR5IGtleXMgZnJvbSBy
ZXNwZWN0aXZlIG9iamVjdHMiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHsKKyAgICAgICAgYXV0byBvYmplY3RzID0gaW50ZXJlc3RpbmdPYmplY3RzKCk7CisgICAg
ICAgIGF1dG8ga2V5cyA9IGludGVyZXN0aW5nS2V5cygpOworCisgICAgICAgIEpTVmFsdWVSZWYg
dGhlQW5zd2VyID0gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgNDIpOworICAgICAgICBmb3Ig
KGF1dG8mIG9iamVjdCA6IG9iamVjdHMpIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiXG5OZXh0
IG9iamVjdDogIiwgYml0d2lzZV9jYXN0PEpTQzo6SlNWYWx1ZT4ob2JqZWN0KSk7CisgICAgICAg
ICAgICBmb3IgKGF1dG8mIGtleSA6IGtleXMpIHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG4o
IlVzaW5nIGtleTogIiwgYml0d2lzZV9jYXN0PEpTQzo6SlNWYWx1ZT4oa2V5KSk7CisgICAgICAg
ICAgICAgICAgY2hlY2tKU0FuZEFQSU1hdGNoKAorICAgICAgICAgICAgICAgICAgICBbJl0gewor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxGdW5jdGlvbihoYXNGdW5jdGlvbiwg
b2JqZWN0LCBrZXkpOworICAgICAgICAgICAgICAgICAgICB9LCBbJl0gKEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9v
bGVhbihjb250ZXh0LCBKU09iamVjdEhhc1Byb3BlcnR5S2V5KGNvbnRleHQsIG9iamVjdCwga2V5
LCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgfSwgImNoZWNraW5nIGhhcyBwcm9w
ZXJ0eSBrZXlzIHVuc2V0Iik7CisKKyAgICAgICAgICAgICAgICBjaGVjayghIWNhbGxGdW5jdGlv
bihzZXRGdW5jdGlvbiwgb2JqZWN0LCBrZXksIHRoZUFuc3dlciksICJzZXQgcHJvcGVydHkgdG8g
dGhlIGFuc3dlciIpOworCisgICAgICAgICAgICAgICAgY2hlY2tKU0FuZEFQSU1hdGNoKAorICAg
ICAgICAgICAgICAgICAgICBbJl0geworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNh
bGxGdW5jdGlvbihoYXNGdW5jdGlvbiwgb2JqZWN0LCBrZXkpOworICAgICAgICAgICAgICAgICAg
ICB9LCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCBKU09iamVjdEhhc1Byb3BlcnR5
S2V5KGNvbnRleHQsIG9iamVjdCwga2V5LCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAg
ICAgfSwgImNoZWNraW5nIGhhcyBwcm9wZXJ0eSBrZXlzIHNldCIpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorCisgICAgeworICAgICAgICBhdXRvIG9iamVjdHMgPSBpbnRlcmVz
dGluZ09iamVjdHMoKTsKKyAgICAgICAgYXV0byBrZXlzID0gaW50ZXJlc3RpbmdLZXlzKCk7CisK
KyAgICAgICAgSlNWYWx1ZVJlZiB0aGVBbnN3ZXIgPSBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0
LCA0Mik7CisgICAgICAgIGZvciAoYXV0byYgb2JqZWN0IDogb2JqZWN0cykgeworICAgICAgICAg
ICAgZGF0YUxvZ0xuKCJcbk5leHQgb2JqZWN0OiAiLCBiaXR3aXNlX2Nhc3Q8SlNDOjpKU1ZhbHVl
PihvYmplY3QpKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYga2V5IDoga2V5cykgeworICAgICAg
ICAgICAgICAgIGRhdGFMb2dMbigiVXNpbmcga2V5OiAiLCBiaXR3aXNlX2Nhc3Q8SlNDOjpKU1Zh
bHVlPihrZXkpKTsKKyAgICAgICAgICAgICAgICBjaGVja0pTQW5kQVBJTWF0Y2goCisgICAgICAg
ICAgICAgICAgICAgIFsmXSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbEZ1
bmN0aW9uKGRlbGV0ZUZ1bmN0aW9uLCBvYmplY3QsIGtleSk7CisgICAgICAgICAgICAgICAgICAg
IH0sIFsmXSAoSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIEpTT2JqZWN0RGVsZXRlUHJvcGVy
dHlLZXkoY29udGV4dCwgb2JqZWN0LCBrZXksIGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAg
ICAgICB9LCAiY2hlY2tpbmcgaGFzIHByb3BlcnR5IGtleXMgdW5zZXQiKTsKKworICAgICAgICAg
ICAgICAgIGNoZWNrKCEhY2FsbEZ1bmN0aW9uKHNldEZ1bmN0aW9uLCBvYmplY3QsIGtleSwgdGhl
QW5zd2VyKSwgInNldCBwcm9wZXJ0eSB0byB0aGUgYW5zd2VyIik7CisKKyAgICAgICAgICAgICAg
ICBjaGVja0pTQW5kQVBJTWF0Y2goCisgICAgICAgICAgICAgICAgICAgIFsmXSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbEZ1bmN0aW9uKGRlbGV0ZUZ1bmN0aW9uLCBvYmpl
Y3QsIGtleSk7CisgICAgICAgICAgICAgICAgICAgIH0sIFsmXSAoSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFu
KGNvbnRleHQsIEpTT2JqZWN0RGVsZXRlUHJvcGVydHlLZXkoY29udGV4dCwgb2JqZWN0LCBrZXks
IGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgICAgICB9LCAiY2hlY2tpbmcgaGFzIHByb3Bl
cnR5IGtleXMgc2V0Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBk
YXRhTG9nTG4oIkMtQVBJIHRlc3RzIGluIEMrKyBoYWQgIiwgZmFpbGVkLCAiIGZhaWx1cmVzIik7
CisgICAgcmV0dXJuIGZhaWxlZDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvdGVzdHMvdGVzdGFwaS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
dGVzdGFwaS5tbQppbmRleCA0MTE5Y2I3ZjJkMTI0ZDE1NjkzZDE0OTU2ZmQ4ODRkNTcyMjBkMzAx
Li44N2IwMWU3NzFlN2Q0Y2Q3MmYwMmI2YWUzMDk0MGM2NDFkOGU2N2MxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCkBAIC0yMyw2ICsyMyw3IEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKKyNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuaD4KIAogI2ltcG9ydCAiQ3VycmVudFRoaXNJbnNpZGVCbG9j
a0dldHRlclRlc3QuaCIKQEAgLTU4NSw2ICs1ODYsNzEgQEAgc3RhdGljIHZvaWQgdGVzdE9iamVj
dGl2ZUNBUElNYWluKCkKICAgICAgICAgY2hlY2tSZXN1bHQoQCJuZXcgRGF0ZSIsIHJlc3VsdC5p
c0RhdGUpOwogICAgIH0KIAorICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRl
eHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUg
KnN5bWJvbCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiU3ltYm9sKCdkb3BlJyk7Il07Cisg
ICAgICAgIEpTVmFsdWUgKm5vdFN5bWJvbCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiJ2Rv
cGUnIl07CisgICAgICAgIGNoZWNrUmVzdWx0KEAiU2hvdWxkIGJlIGEgc3ltYm9sIHZhbHVlIiwg
c3ltYm9sLmlzU3ltYm9sKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJTaG91bGQgbm90IGJlIGEg
c3ltYm9sIHZhbHVlIiwgIW5vdFN5bWJvbC5pc1N5bWJvbCk7CisgICAgfQorCisgICAgQGF1dG9y
ZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFs
bG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAqc3ltYm9sID0gW0pTVmFsdWUgdmFsdWVXaXRo
TmV3U3ltYm9sRnJvbURlc2NyaXB0aW9uOkAiZG9wZSIgaW5Db250ZXh0OmNvbnRleHRdOworICAg
ICAgICBjaGVja1Jlc3VsdChAIlNob3VsZCBiZSBhIGNyZWF0ZWQgZnJvbSBPYmMtQyIsIHN5bWJv
bC5pc1N5bWJvbCk7CisgICAgfQorCisjaWYgIShkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDAp
IHx8IChkZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKKworICAgIEBhdXRvcmVsZWFzZXBv
b2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5p
dF07CisgICAgICAgIEpTVmFsdWUgKmFycmF5SXRlcmF0b3IgPSBbY29udGV4dCBldmFsdWF0ZVNj
cmlwdDpAIkFycmF5LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdIl07CisgICAgICAgIEpTVmFs
dWUgKml0ZXJhdG9yU3ltYm9sID0gY29udGV4dFtAIlN5bWJvbCJdW0AiaXRlcmF0b3IiXTsKKyAg
ICAgICAgSlNWYWx1ZSAqYXJyYXkgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdBcnJheUluQ29udGV4
dDpjb250ZXh0XTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJMb29raW5nIHVwIGJ5IHN1YnNjcmlw
dCB3aXRoIHN5bWJvbCBzaG91bGQgd29yayIsIFthcnJheVtpdGVyYXRvclN5bWJvbF0gaXNFcXVh
bDphcnJheUl0ZXJhdG9yXSk7CisgICAgICAgIGNoZWNrUmVzdWx0KEAiTG9va2luZyB1cCBieSBt
ZXRob2Qgd2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsiLCBbW2FycmF5IHZhbHVlRm9yUHJvcGVydHk6
aXRlcmF0b3JTeW1ib2xdIGlzRXF1YWw6YXJyYXlJdGVyYXRvcl0pOworICAgIH0KKworICAgIEBh
dXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4
dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUgKml0ZXJhdG9yU3ltYm9sID0gY29udGV4
dFtAIlN5bWJvbCJdW0AiaXRlcmF0b3IiXTsKKyAgICAgICAgSlNWYWx1ZSAqb2JqZWN0ID0gW0pT
VmFsdWUgdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBKU1Zh
bHVlICp0aGVBbnN3ZXIgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhVSW50MzI6NDIgaW5Db250ZXh0OmNv
bnRleHRdOworICAgICAgICBvYmplY3RbaXRlcmF0b3JTeW1ib2xdID0gdGhlQW5zd2VyOworICAg
ICAgICBjaGVja1Jlc3VsdChAIlNldHRpbmcgYnkgc3Vic2NyaXB0IHdpdGggc3ltYm9sIHNob3Vs
ZCB3b3JrIiwgW29iamVjdFtpdGVyYXRvclN5bWJvbF0gaXNFcXVhbDp0aGVBbnN3ZXJdKTsKKyAg
ICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0
ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICppdGVyYXRvclN5
bWJvbCA9IGNvbnRleHRbQCJTeW1ib2wiXVtAIml0ZXJhdG9yIl07CisgICAgICAgIEpTVmFsdWUg
Km9iamVjdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld09iamVjdEluQ29udGV4dDpjb250ZXh0XTsK
KyAgICAgICAgSlNWYWx1ZSAqdGhlQW5zd2VyID0gW0pTVmFsdWUgdmFsdWVXaXRoVUludDMyOjQy
IGluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgW29iamVjdCBzZXRWYWx1ZTp0aGVBbnN3ZXIg
Zm9yUHJvcGVydHk6aXRlcmF0b3JTeW1ib2xdOworICAgICAgICBjaGVja1Jlc3VsdChAIlNldHRp
bmcgYnkgbWV0aG9kIHdpdGggc3ltYm9sIHNob3VsZCB3b3JrIiwgW29iamVjdFtpdGVyYXRvclN5
bWJvbF0gaXNFcXVhbDp0aGVBbnN3ZXJdKTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29s
IHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRd
OworICAgICAgICBKU1ZhbHVlICppdGVyYXRvclN5bWJvbCA9IGNvbnRleHRbQCJTeW1ib2wiXVtA
Iml0ZXJhdG9yIl07CisgICAgICAgIEpTVmFsdWUgKm9iamVjdCA9IFtKU1ZhbHVlIHZhbHVlV2l0
aE5ld09iamVjdEluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgSlNWYWx1ZSAqdGhlQW5zd2Vy
ID0gW0pTVmFsdWUgdmFsdWVXaXRoVUludDMyOjQyIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICAg
ICAgb2JqZWN0W2l0ZXJhdG9yU3ltYm9sXSA9IHRoZUFuc3dlcjsKKyAgICAgICAgY2hlY2tSZXN1
bHQoQCJoYXMgcHJvcGVydHkgd2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsiLCBbb2JqZWN0IGhhc1By
b3BlcnR5Oml0ZXJhdG9yU3ltYm9sXSk7CisgICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7
CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsK
KyAgICAgICAgSlNWYWx1ZSAqaXRlcmF0b3JTeW1ib2wgPSBjb250ZXh0W0AiU3ltYm9sIl1bQCJp
dGVyYXRvciJdOworICAgICAgICBKU1ZhbHVlICpvYmplY3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhO
ZXdPYmplY3RJbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIEpTVmFsdWUgKnRoZUFuc3dlciA9
IFtKU1ZhbHVlIHZhbHVlV2l0aFVJbnQzMjo0MiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAg
IGNoZWNrUmVzdWx0KEAiZGVsZXRlIHByb3BlcnR5IHdpdGggc3ltYm9sIHNob3VsZCB3b3JrIHdp
dGhvdXQgcHJvcGVydHkiLCBbb2JqZWN0IGRlbGV0ZVByb3BlcnR5Oml0ZXJhdG9yU3ltYm9sXSk7
CisgICAgICAgIG9iamVjdFtpdGVyYXRvclN5bWJvbF0gPSB0aGVBbnN3ZXI7CisgICAgICAgIGNo
ZWNrUmVzdWx0KEAiZGVsZXRlIHByb3BlcnR5IHdpdGggc3ltYm9sIHNob3VsZCB3b3JrIHdpdGgg
cHJvcGVydHkiLCBbb2JqZWN0IGRlbGV0ZVByb3BlcnR5Oml0ZXJhdG9yU3ltYm9sXSk7CisgICAg
ICAgIGNoZWNrUmVzdWx0KEAiZGVsZXRlIHNob3VsZCBiZSBmYWxzZSB3aXRoIG5vbi1jb25maWd1
cmFibGUgcHJvcGVydHkiLCAhW2NvbnRleHRbQCJBcnJheSJdIGRlbGV0ZVByb3BlcnR5OkAicHJv
dG90eXBlIl0pOworICAgIH0KKworI2VuZGlmIC8vICEoZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAx
MzAwKSB8fCAoZGVmaW5lZChfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMTAwMDApCisKICAgICBAYXV0b3JlbGVh
c2Vwb29sIHsKICAgICAgICAgSlNDb2xsZWN0aW9uKiBteVByaXZhdGVQcm9wZXJ0aWVzID0gW1tK
U0NvbGxlY3Rpb24gYWxsb2NdIGluaXRdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDI5OGQ2MTQxMWEyODZkYTdjZDM1Zjk0YmM3YjFjN2QxOTRhZDRhMzQuLjM0MTQ2ZjIzYjc4
NmM1YmJkOTdkMjY2MWE2NjQ1OTkzMjFhMDg4NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMDMzLDggKzEwMzMsOSBAQAogCQk1M0U3NzdFNDFFOTJFMjY1MDA3Q0JFQzQgLyog
V2FzbU1vZHVsZUluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1M0U3NzdFMjFFOTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1vZHVsZUluZm9y
bWF0aW9uLmggKi87IH07CiAJCTUzRTlFMEFDMUVBRTgzREYwMEZFRTI1MSAvKiBXYXNtTWFjaGlu
ZVRocmVhZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzRTlFMEFBMUVBRTgzREUwMEZFRTI1MSAvKiBXYXNtTWFjaGluZVRocmVhZHMuaCAqLzsgfTsK
IAkJNTNFOUUwQUYxRUFFQzQ1NzAwRkVFMjUxIC8qIFdhc21UaWVyVXBDb3VudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFOUUwQUUxRUFFQzQ1NzAw
RkVFMjUxIC8qIFdhc21UaWVyVXBDb3VudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTUzRjExRjQxMjA5MTM4RDcwMEU0MTFBNyAvKiBKU0ltbXV0
YWJsZUJ1dHRlcmZseS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTNGMTFGNDAyMDkxMzhENzAwRTQxMUE3IC8qIEpTSW1tdXRhYmxlQnV0dGVyZmx5Lmgg
Ki87IH07Ci0JCTUzRjQwRTg1MUQ1OEY5NzcwMDk5QTFCNiAvKiBXYXNtU2VjdGlvbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQwRTg0MUQ1OEY5
NzcwMDk5QTFCNiAvKiBXYXNtU2VjdGlvbnMuaCAqLzsgfTsKKyAgICAgICAgICAgICAgICA1M0Yx
MUY0MTIwOTEzOEQ3MDBFNDExQTcgLyogSlNJbW11dGFibGVCdXR0ZXJmbHkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjExRjQwMjA5MTM4RDcwMEU0
MTFBNyAvKiBKU0ltbXV0YWJsZUJ1dHRlcmZseS5oICovOyB9OworICAgICAgICAgICAgICAgIDUz
RUFGRTJGMjA4REZBQjQwMDdENTI0QiAvKiB0ZXN0YXBpLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMUQ0RTE5MUY1OUNERDIwMEVDODM2QyAvKiB0
ZXN0YXBpLmNwcCAqLzsgfTsKKyAgICAgICAgICAgICAgICA1M0Y0MEU4NTFENThGOTc3MDA5OUEx
QjYgLyogV2FzbVNlY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1M0Y0MEU4NDFENThGOTc3MDA5OUExQjYgLyogV2FzbVNlY3Rpb25zLmggKi87
IH07CiAJCTUzRjQwRThCMUQ1OTAxQkIwMDk5QTFCNiAvKiBXYXNtRnVuY3Rpb25QYXJzZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQwRThBMUQ1
OTAxQkIwMDk5QTFCNiAvKiBXYXNtRnVuY3Rpb25QYXJzZXIuaCAqLzsgfTsKIAkJNTNGNDBFOEQx
RDU5MDFGMjAwOTlBMUI2IC8qIFdhc21QYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQwRThDMUQ1OTAxRjIwMDk5QTFCNiAvKiBXYXNtUGFy
c2VyLmggKi87IH07CiAJCTUzRjQwRTkzMUQ1QTRBQjMwMDk5QTFCNiAvKiBXYXNtQjNJUkdlbmVy
YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNG
NDBFOTIxRDVBNEFCMzAwOTlBMUI2IC8qIFdhc21CM0lSR2VuZXJhdG9yLmggKi87IH07CkBAIC0z
MjgzLDYgKzMyODQsNyBAQAogCQk1MzExQkQ0OTFFQTU4MUU1MDA1MjUyODEgLyogV2FzbU9NR1Bs
YW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbU9NR1BsYW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxMzc0QkMxRDVDRTY3NjAwQUY3QTBCIC8qIFdh
c21QbGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21QbGFuLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMTM3NEJFMUQ1Q0U5NTAwMEFGN0EwQiAvKiBX
YXNtUGxhbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtUGxh
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzMUQ0RTE5MUY1OUNERDIwMEVD
ODM2QyAvKiB0ZXN0YXBpLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHRlc3RhcGkuY3BwOyBwYXRo
ID0gQVBJL3Rlc3RzL3Rlc3RhcGkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MzNCMTVERTFEQzdGNDYzMDA0RDUwMEEgLyogV2FzbU9wcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXYXNtT3BzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUz
NDFGQzZGMURBQzMzRTUwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUu
Y3BwOyBwYXRoID0gYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUzNDFGQzcxMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHND
aGVja1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzV2FzbUJvdW5k
c0NoZWNrVmFsdWUuaDsgcGF0aCA9IGIzL0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM0NTMsNyArMzQ1NSw2IEBACiAJCTUzOTE3RTdBMUI3
OTA2RTQwMDBFQkQzMyAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9u
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MzkxN0U3QzFCNzkxMTA2MDAwRUJEMzMgLyogSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzOTE3RTgzMUI3OTFDQjgwMDBFQkQz
MyAvKiBUeXBlZEFycmF5UHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2Ny
aXB0OyBuYW1lID0gVHlwZWRBcnJheVByb3RvdHlwZS5qczsgcGF0aCA9IGJ1aWx0aW5zL1R5cGVk
QXJyYXlQcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKLQkJNTM5RUIw
NzExRDU1M0RGODAwQzgyRUY3IC8qIHRlc3RXYXNtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IHRlc3RXYXNtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTM5RkI4QjkxQzk5REE3QzAwOTQwRkExIC8qIEpTQXJyYXlJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXJyYXlJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUzQjBCRTMzMUU1NjFBQzkwMEE4RkMyOSAvKiBHZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdldHRl
clNldHRlckFjY2Vzc0Nhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Iw
QkUzNTFFNTYxQjA5MDBBOEZDMjkgLyogUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm94eWFibGVBY2Nlc3NDYXNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU0NDIsMTAgKzU0NDMsMTAgQEAKIAkJCQlGRUI1
MUY2QjFBOTdCNjg4MDAxRjkyMUMgLyogUmVncmVzczE0MTgwOS5tbSAqLywKIAkJCQlGRUNCOEIy
OTFEMjVDQUJCMDA2RjI0NjMgLyogdGVzdGFwaS1mdW5jdGlvbi1vdmVycmlkZXMuanMgKi8sCiAJ
CQkJMTRCRDVBMkQwQTNFOTFGNjAwQkFGNTlDIC8qIHRlc3RhcGkuYyAqLywKKwkJCQk1MzFENEUx
OTFGNTlDREQyMDBFQzgzNkMgLyogdGVzdGFwaS5jcHAgKi8sCiAJCQkJMTREODU3NzQwQTQ2OTZD
ODAwMzIxNDZDIC8qIHRlc3RhcGkuanMgKi8sCiAJCQkJODZEMjIyMTkxNjdFRjk0NDAwMjRDODA0
IC8qIHRlc3RhcGkubW0gKi8sCiAJCQkJNjUxMTIyRTUxNDA0NjlCQTAwMkIxMDFEIC8qIHRlc3RS
ZWdFeHAuY3BwICovLAotCQkJCTUzOUVCMDcxMUQ1NTNERjgwMEM4MkVGNyAvKiB0ZXN0V2FzbS5j
cHAgKi8sCiAJCQkJNTM0OTAyODIxQzcyNDJDODAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5j
cHAgKi8sCiAJCQkJNTM0OTAyODMxQzcyNDJDODAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5o
ICovLAogCQkJKTsKQEAgLTg5NDAsOCArODk0MSw4IEBACiAJCQkJMEZCNDY3ODAxRkREQTZGMTAw
M0ZDQjA5IC8qIElzb0NlbGxTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjQ2NzgxMUZEREE2
RjcwMDNGQ0IwOSAvKiBJc29DZWxsU2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZE
Q0UxMkQxRkFGQjRFNTAwNkYzOTAxIC8qIElzb1N1YnNwYWNlLmggaW4gSGVhZGVycyAqLywKLQkJ
CQkwRkQyRkQ5NTIwQjUyQkUyMDBGMDk0NDEgLyogSXNvU3Vic3BhY2VJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKLQkJCQkwRjVFMEZFNzIwODZBRDQ4MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQZXJW
TS5oIGluIEhlYWRlcnMgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBGRDJG
RDk1MjBCNTJCRTIwMEYwOTQ0MSAvKiBJc29TdWJzcGFjZUlubGluZXMuaCBpbiBIZWFkZXJzICov
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwRjVFMEZFNzIwODZBRDQ4MDA5N0Yw
REUgLyogSXNvU3Vic3BhY2VQZXJWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEI5RjZENTYxRDU5
MTJGQTAwMUM3MzlGIC8qIEl0ZXJhdGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNEQ1
NUI4MUFFNzE2Q0EwMDUyRTQ1OSAvKiBJdGVyYXRpb25TdGF0dXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTcwMTEzRDRDMUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlvbnMuaCBpbiBI
ZWFkZXJzICovLApAQCAtMTAxNTcsNiArMTAxNTgsNyBAQAogCQkJCTY1NTcwRjVBMUFBNEMzRUEw
MDlCM0MyMyAvKiBSZWdyZXNzMTQxMjc1Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVCNTFGNkMx
QTk3QjY4ODAwMUY5MjFDIC8qIFJlZ3Jlc3MxNDE4MDkubW0gaW4gU291cmNlcyAqLywKIAkJCQkx
NDQwRjYxMDBBNEY4NTY3MDAwNUYwNjEgLyogdGVzdGFwaS5jIGluIFNvdXJjZXMgKi8sCisJCQkJ
NTNFQUZFMkYyMDhERkFCNDAwN0Q1MjRCIC8qIHRlc3RhcGkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODZEMjIyMUExNjdFRjk0NDAwMjRDODA0IC8qIHRlc3RhcGkubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MzQ5MDI4NTFDNzI3NkI3MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKQEAgLTEwNjI0LDYgKzEwNjI2LDEwIEBACiAJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFC
RjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOwogCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkiXCIkKEpB
VkFTQ1JJUFRDT1JFX0ZSQU1FV09SS1NfRElSKS9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsvUHJp
dmF0ZUhlYWRlcnNcIiIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CiAJCQl9OwogCQkJ
bmFtZSA9IERlYnVnOwogCQl9OwpAQCAtMTA2MzEsNiArMTA2MzcsMTAgQEAKIAkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAy
MUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87CiAJCQli
dWlsZFNldHRpbmdzID0geworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSJcIiQo
SkFWQVNDUklQVENPUkVfRlJBTUVXT1JLU19ESVIpL0phdmFTY3JpcHRDb3JlLmZyYW1ld29yay9Q
cml2YXRlSGVhZGVyc1wiIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJKTsKIAkJCX07CiAJ
CQluYW1lID0gUmVsZWFzZTsKIAkJfTsKQEAgLTEwNjM4LDYgKzEwNjQ4LDEwIEBACiAJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0g
QkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOwog
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQki
XCIkKEpBVkFTQ1JJUFRDT1JFX0ZSQU1FV09SS1NfRElSKS9KYXZhU2NyaXB0Q29yZS5mcmFtZXdv
cmsvUHJpdmF0ZUhlYWRlcnNcIiIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CiAJCQl9
OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CkBAIC0xMDk2Miw2ICsxMDk3NiwxMCBAQAog
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVy
ZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZp
ZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICgK
KwkJCQkJIlwiJChKQVZBU0NSSVBUQ09SRV9GUkFNRVdPUktTX0RJUikvSmF2YVNjcmlwdENvcmUu
ZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzXCIiLAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkp
OwogCQkJfTsKIAkJCW5hbWUgPSBQcm9maWxpbmc7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvY29uZmlnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgK
aW5kZXggMWQxZWQ3YjZmOGM2YWMwOWYxNDQ0NGY2ZWYzODA1NjI5OTgxOWQ3ZS4uZWRjNzdjZjI1
NTYwYmIxYWE5N2RhMGExYjg4MzYwZGJmMjZiNTFjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2NvbmZpZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaApA
QCAtMjMsNiArMjMsOSBAQAogI2luY2x1ZGUgImNtYWtlY29uZmlnLmgiCiAjZW5kaWYKIAorI2Rl
ZmluZSBKU0NfQVBJX0FWQUlMQUJMRSguLi4pCisjZGVmaW5lIEpTQ19DTEFTU19BVkFJTEFCTEUo
Li4uKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQorCiAjaW5jbHVkZSAi
SlNFeHBvcnRNYWNyb3MuaCIKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcG9zdHByb2Nlc3MtaGVhZGVycy5zaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wb3N0cHJvY2Vzcy1oZWFkZXJzLnNoCmluZGV4IGM4NjE4NDM3ZDJhMDc3OTQ5YTU5
MGFjNzAxN2Y4MjZiNTJkNmQyYjMuLjczZjc0Mjc1NzEzNGE3MDMyZWE1MjkyYmQ5YWQ1OTI2ZjIw
Y2M4MDIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wb3N0cHJvY2Vzcy1oZWFk
ZXJzLnNoCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wb3N0cHJvY2Vzcy1oZWFkZXJzLnNo
CkBAIC0xLDE4ICsxLDEyMSBAQAotY2QgIiR7VEFSR0VUX0JVSUxEX0RJUn0vJHtQVUJMSUNfSEVB
REVSU19GT0xERVJfUEFUSH0iCi0KLVVOSUZERUZfT1BUSU9OUz0iLURfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEPSR7VEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1J9IgotCi1mb3Ig
KChpID0gMDsgaSA8ICR7U0NSSVBUX0lOUFVUX0ZJTEVfQ09VTlR9OyArK2kpKTsgZG8KLSAgICBl
dmFsIEhFQURFUj1cJHtTQ1JJUFRfSU5QVVRfRklMRV8ke2l9fTsKLSAgICB1bmlmZGVmIC1CICR7
VU5JRkRFRl9PUFRJT05TfSAtbyAiJHtIRUFERVJ9Ii51bmlmZGVmICIke0hFQURFUn0iCi0gICAg
Y2FzZSAkPyBpbgotICAgIDApCi0gICAgICAgIHJtICIke0hFQURFUn0iLnVuaWZkZWYKLSAgICAg
ICAgOzsKLSAgICAxKQotICAgICAgICBtdiAiJHtIRUFERVJ9InsudW5pZmRlZix9Ci0gICAgICAg
IDs7Ci0gICAgKikKLSAgICAgICAgZXhpdCAxCi0gICAgZXNhYwotZG9uZQorIyEvYmluL3NoCisj
CisjIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIworCitpZiBbWyAiJHtKU0Nf
RlJBTUVXT1JLX0hFQURFUl9QT1NUUFJPQ0VTU0lOR19ESVNBQkxFRH0iID09ICJZRVMiIF1dOyB0
aGVuCisgICAgZXhpdCAwOworZmkKKworVElNRVNUQU1QX1BBVEg9JHtUQVJHRVRfVEVNUF9ESVJ9
LyR7MCMjKi99CisKK2lmIFtbIC1lICRUSU1FU1RBTVBfUEFUSCAmJiAkMCAtbnQgJFRJTUVTVEFN
UF9QQVRIIF1dOyB0aGVuCisgICAgcm0gIiR7VElNRVNUQU1QX1BBVEh9IjsKK2ZpCisKK2Z1bmN0
aW9uIHByb2Nlc3NfZGVmaW5pdGlvbnMgKCkgeworICAgIGxvY2FsIERFRklOSVRJT05TX0ZJTEU9
JDEKKworICAgIGlmIFtbICEgLWYgIiR7REVGSU5JVElPTlNfRklMRX0iIF1dOyB0aGVuCisgICAg
ICAgIHJldHVybiAxCisgICAgZmkKKworICAgIGlmIFtbIC1lICRUSU1FU1RBTVBfUEFUSCAmJiAi
JHtERUZJTklUSU9OU19GSUxFfSIgLW50ICRUSU1FU1RBTVBfUEFUSCBdXTsgdGhlbgorICAgICAg
ICBybSAiJHtUSU1FU1RBTVBfUEFUSH0iOworICAgIGZpCisKKyAgICBzb3VyY2UgIiR7REVGSU5J
VElPTlNfRklMRX0iCit9CisKK2Z1bmN0aW9uIHJld3JpdGVfaGVhZGVycyAoKSB7CisgICAgaWYg
W1sgIiR7UExBVEZPUk1fTkFNRX0iID09ICJtYWNvc3giIF1dOyB0aGVuCisgICAgICAgIFtbIC1u
ICR7T1NYX1ZFUlNJT059IF1dIHx8IE9TWF9WRVJTSU9OPSR7TUFDT1NYX0RFUExPWU1FTlRfVEFS
R0VUfQorICAgICAgICBbWyAtbiAke0lPU19WRVJTSU9OfSBdXSB8fCBJT1NfVkVSU0lPTj0iTkEi
CisgICAgZWxpZiBbWyAiJHtQTEFURk9STV9OQU1FfSIgPX4gImlwaG9uZSIgXV07IHRoZW4KKyAg
ICAgICAgW1sgLW4gJHtJT1NfVkVSU0lPTn0gXV0gfHwgSU9TX1ZFUlNJT049JHtJUEhPTkVPU19E
RVBMT1lNRU5UX1RBUkdFVH0KKyAgICAgICAgW1sgLW4gJHtPU1hfVkVSU0lPTn0gXV0gfHwgT1NY
X1ZFUlNJT049Ik5BIgorICAgIGZpCisKKyAgICBTRURfT1BUSU9OUz0oCisgICAgKQorCisgICAg
aWYgW1sgLW4gIiRPU1hfVkVSU0lPTiIgJiYgLW4gIiRJT1NfVkVSU0lPTiIgXV07IHRoZW4KKyAg
ICAgICAgU0VEX09QVElPTlMrPSgKKyAgICAgICAgICAgIC1lIHMvSlNDX01BQ19UQkEvJHtPU1hf
VkVSU0lPTn0vZworICAgICAgICAgICAgLWUgcy9KU0NfSU9TX1RCQS8ke0lPU19WRVJTSU9OfS9n
CisgICAgICAgICAgICAtZSBzL0pTQ19BUElfQVZBSUxBQkxFL0FQSV9BVkFJTEFCTEUvCisgICAg
ICAgICAgICAtZSBzL0pTQ19BUElfREVQUkVDQVRFRC9BUElfREVQUkVDQVRFRC8KKyAgICAgICAg
ICAgIC1lICJzL15KU0NfQ0xBU1NfQVZBSUxBQkxFL0FQSV9BVkFJTEFCTEUvIgorICAgICAgICAg
ICAgLWUgInMvXkpTQ19DTEFTU19ERVBSRUNBVEVEL0FQSV9ERVBSRUNBVEVELyIKKyAgICAgICAg
KQorICAgIGVsc2UKKyAgICAgICAgU0VEX09QVElPTlMrPSgtZSAncy9KU0NfKEFQSV98Q0xBU1Nf
KUFWQUlMQUJMRVwoLipcKVxzKlwpLy9nJyAtZSAncy9KU0NfKEFQSV98Q0xBU1NfKURFUFJFQ0FU
RUQoX1dJVEhfUkVQTEFDRU1FTlQpP1woLipcKVxzKlwpLy9nJykKKyAgICBmaQorCisgICAgU0VE
X09QVElPTlMrPSgke09USEVSX1NFRF9PUFRJT05TWypdfSkKKworICAgIGZvciBIRUFERVJfUEFU
SCBpbiAiJHsxfS8iKi5oOyBkbworICAgICAgICBpZiBbWyAiJEhFQURFUl9QQVRIIiAtbnQgJFRJ
TUVTVEFNUF9QQVRIIF1dOyB0aGVuCisgICAgICAgICAgICBkaXR0byAiJHtIRUFERVJfUEFUSH0i
ICIke1RBUkdFVF9URU1QX0RJUn0vJHtIRUFERVJfUEFUSCMjKi99IgorICAgICAgICAgICAgc2Vk
IC1pIC50bXAgLUUgIiR7U0VEX09QVElPTlNbQF19IiAiJHtUQVJHRVRfVEVNUF9ESVJ9LyR7SEVB
REVSX1BBVEgjIyovfSIgfHwgZXhpdCAkPworICAgICAgICAgICAgbXYgIiR7VEFSR0VUX1RFTVBf
RElSfS8ke0hFQURFUl9QQVRIIyMqL30iICIkSEVBREVSX1BBVEgiCisgICAgICAgIGZpCisgICAg
ZG9uZQorfQorCitmdW5jdGlvbiByZXdyaXRlX3ZlcnNpb25fbWluX3JlcXVpcmVkX21hY3Jvcygp
IHsKKyAgICBlY2hvICJyZXdyaXRlX3ZlcnNpb25fbWluX3JlcXVpcmVkX21hY3JvcyIKKyAgICBl
Y2hvICIkezF9IgorICAgICMgV2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgdW5zZXQgdGhlIG90aGVy
IHRhcmdldCBvdGhlcndpc2UgdW5pZmRlZiB3aWxsIGZhaWwgdG8gaGFuZGxlIGNvbmRpdGlvbnMg
dGhhdCBhcmUgYW4gfHwgb2YgYm90aCB0YXJnZXRzLgorICAgIGlmIFtbIC16ICR7SU9TX1ZFUlNJ
T059IF1dOyB0aGVuCisgICAgICAgIFVOSUZERUZfT1BUSU9OUz0iLURfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEPSR7VEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1J9IC1VX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQiCisgICAgZWxzZQorICAgICAgICBVTklGREVGX09Q
VElPTlM9Ii1VX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCAtRF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEPSR7VEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1J9IgorICAg
IGZpCisKKyAgICBmb3IgSEVBREVSX1BBVEggaW4gIiR7MX0vIiouaDsgZG8KKyAgICAgICAgaWYg
W1sgIiRIRUFERVJfUEFUSCIgLW50ICRUSU1FU1RBTVBfUEFUSCBdXTsgdGhlbgorICAgICAgICAg
ICAgdW5pZmRlZiAtQiAke1VOSUZERUZfT1BUSU9OU30gLW8gIiR7SEVBREVSX1BBVEh9Ii51bmlm
ZGVmICIke0hFQURFUl9QQVRIfSIKKyAgICAgICAgICAgIGNhc2UgJD8gaW4KKyAgICAgICAgICAg
ICAgICAwKQorICAgICAgICAgICAgICAgICAgICBybSAiJHtIRUFERVJfUEFUSH0iLnVuaWZkZWYK
KyAgICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgICAxKQorICAgICAgICAgICAg
ICAgICAgICBtdiAiJHtIRUFERVJfUEFUSH0iey51bmlmZGVmLH0KKyAgICAgICAgICAgICAgICAg
ICAgOzsKKyAgICAgICAgICAgICAgICAqKQorICAgICAgICAgICAgICAgICAgICBleGl0IDEKKyAg
ICAgICAgICAgIGVzYWMKKyAgICAgICAgZmkKKyAgICBkb25lCit9CisKK0RFRklOSVRJT05TX1BB
VEg9dXNyL2xvY2FsL2luY2x1ZGUvV2ViS2l0QWRkaXRpb25zL1NjcmlwdHMvcG9zdHByb2Nlc3Mt
ZnJhbWV3b3JrLWhlYWRlcnMtZGVmaW5pdGlvbnMKKworcHJvY2Vzc19kZWZpbml0aW9ucyAiJHtC
VUlMVF9QUk9EVUNUU19ESVJ9LyR7REVGSU5JVElPTlNfUEFUSH0iIHx8IHByb2Nlc3NfZGVmaW5p
dGlvbnMgIiR7U0RLUk9PVH0vJHtERUZJTklUSU9OU19QQVRIfSIKKworcmV3cml0ZV9oZWFkZXJz
ICIke1RBUkdFVF9CVUlMRF9ESVJ9LyR7UFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEh9IgorcmV3
cml0ZV92ZXJzaW9uX21pbl9yZXF1aXJlZF9tYWNyb3MgIiR7VEFSR0VUX0JVSUxEX0RJUn0vJHtQ
VUJMSUNfSEVBREVSU19GT0xERVJfUEFUSH0iCisKK3RvdWNoICR7VElNRVNUQU1QX1BBVEh9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdG1lbS90ZXN0bWVtLm1tIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RtZW0vdGVzdG1lbS5tbQppbmRleCBiNGQyYWQzOTExOWJj
NTU1OGNkMzljOWM4MTgyZmFjZWRjYmVhZjI0Li45YmM0YjQwZTFlYWMwMjMxN2ZkM2U4NDViNDU0
ZDBmNDhiNmVlNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdG1lbS90
ZXN0bWVtLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0bWVtL3Rlc3RtZW0ubW0K
QEAgLTIzLDYgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgogI2ltcG9ydCA8
aW50dHlwZXMuaD4KICNpbXBvcnQgPHN0ZGlvLmg+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342312</attachid>
            <date>2018-06-08 13:11:06 -0700</date>
            <delta_ts>2018-06-08 13:50:49 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-175836-20180608131105.patch</filename>
            <type>text/plain</type>
            <size>104510</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyNjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YTg5OWQ5MzQ5NDNjNjBmYWYzYzI0YjJkMmQ4MzkxNzNiOWU5NGM2Li5lMzAyZjc3ZTZlN2ZkZjc1
NDY0OGIyNjkzMTdkN2FlMWI5ZGQxODhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMTgtMDQtMjMgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0pTQyBBUEldIFdlIHNob3VsZCBzdXBwb3J0IHRoZSBzeW1ib2wg
dHlwZSBpbiBvdXIgQy9PYmotQyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTgzNgorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxv
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIGZvbGxvd2luZyBBUEkgYWRkaXRpb25z
OgorICAgICAgICAxKSBUZXN0IGlmIGEgSlNWYWx1ZS9KU1ZhbHVlUmVmIGlzIGEgc3ltYm9sIHZp
YSBhbnkgb2YgdGhlIG1ldGhvZHMgQVBJIGFyZSBhYmxlIHRvIHRlc3QgZm9yIHRoZSB0eXBlcyBv
ZiBvdGhlciBKU1ZhbHVlcy4KKyAgICAgICAgMikgQ3JlYXRlIGEgc3ltYm9sIG9uIGJvdGggQVBJ
cy4KKyAgICAgICAgMykgR2V0L1NldC9EZWxldGUvRGVmaW5lIHByb3BlcnR5IG5vdyB0YWtlIGlk
cyBpbiB0aGUgT2JqLUMgQVBJLgorICAgICAgICA0KSBBZGQgR2V0L1NldC9EZWxldGUgaW4gdGhl
IEMgQVBJLgorCisgICAgICAgIFdlIGNhbiBkbyAzIGJlY2F1c2UgaXQgaXMgYm90aCBiaW5hcnkg
YW5kIHNvdXJjZSBjb21wYXRhYmxlIHdpdGgKKyAgICAgICAgdGhlIGV4aXN0aW5nIEFQSS4gSSBh
ZGRlZCAoNCkgYmVjYXVzZSB0aGUgY3VycmVudCBwcm9wZXJ0eSBhY2Nlc3MKKyAgICAgICAgQVBJ
cyBvbmx5IGhhdmUgdGhlIGFiaWxpdHkgdG8gZ2V0IFN0cmluZ3MuIEl0IHdhcyBwb3NzaWJsZSB0
bworICAgICAgICBtZXJnZSBzeW1ib2xzIGludG8gSlNTdHJpbmdSZWYgYnV0IHRoYXQgZmVsdCBj
b25mdXNpbmcgYW5kIGV4cG9zZXMKKyAgICAgICAgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBv
dXIgZW5naW5lLiBUaGUgbmV3IGZ1bmN0aW9ucyBtYXRjaCB0aGUKKyAgICAgICAgc2FtZSBtZWFu
aW5nIHRoYXQgdGhleSBoYXZlIGluIEpTLCB0aHVzIHNob3VsZCBiZSBmb3J3YXJkCisgICAgICAg
IGNvbXBhdGlibGUgd2l0aCBhbnkgZnV0dXJlIGxhbmd1YWdlIGV4dGVuc2lvbnMuCisKKyAgICAg
ICAgTGFzdGx5LCB0aGlzIHBhdGNoIGFkZHMgdGhlIHNhbWUgYXZhaWxhYmlsaXR5IHByZXByb2Nj
ZXNzaW5nIHBoYXNlCisgICAgICAgIGluIFdlYkNvcmUgdG8gSmF2YVNjcmlwdENvcmUsIHdoaWNo
IGVuYWJsZXMgVEJBIGZlYXR1cmVzIGZvcgorICAgICAgICB0ZXN0aW5nIG9uIHByZXZpb3VzIHJl
bGVhc2VzLgorCisgICAgICAgICogQVBJL0pTQmFzZVByaXZhdGUuaDoKKyAgICAgICAgKiBBUEkv
SlNDb250ZXh0Lmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFByaXZhdGUuaDoKKyAgICAgICAg
KiBBUEkvSlNDb250ZXh0UmVmLmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZkludGVybmFs
Lmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaDoKKyAgICAgICAgKiBBUEkv
SlNNYW5hZ2VkVmFsdWUuaDoKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAg
ICAoSlNPYmplY3RIYXNQcm9wZXJ0eUtleSk6CisgICAgICAgIChKU09iamVjdEdldFByb3BlcnR5
S2V5KToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJvcGVydHlLZXkpOgorICAgICAgICAoSlNPYmpl
Y3REZWxldGVQcm9wZXJ0eUtleSk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmg6CisgICAg
ICAgICogQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmg6CisgICAgICAgICogQVBJL0pTVHlwZWRBcnJh
eS5oOgorICAgICAgICAqIEFQSS9KU1ZhbHVlLmg6CisgICAgICAgICogQVBJL0pTVmFsdWUubW06
CisgICAgICAgICgrW0pTVmFsdWUgdmFsdWVXaXRoTmV3U3ltYm9sRnJvbURlc2NyaXB0aW9uOmlu
Q29udGV4dDpdKToKKyAgICAgICAgKHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbik6CisgICAgICAg
ICgtW0pTVmFsdWUgdmFsdWVGb3JQcm9wZXJ0eTp2YWx1ZUZvclByb3BlcnR5Ol0pOgorICAgICAg
ICAoLVtKU1ZhbHVlIHNldFZhbHVlOmZvclByb3BlcnR5OnNldFZhbHVlOmZvclByb3BlcnR5Ol0p
OgorICAgICAgICAoLVtKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5OmRlbGV0ZVByb3BlcnR5Ol0pOgor
ICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Omhhc1Byb3BlcnR5Ol0pOgorICAgICAgICAo
LVtKU1ZhbHVlIGRlZmluZVByb3BlcnR5OmRlc2NyaXB0b3I6ZGVmaW5lUHJvcGVydHk6ZGVzY3Jp
cHRvcjpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSBpc1N5bWJvbF0pOgorICAgICAgICAoLVtKU1Zh
bHVlIG9iamVjdEZvcktleWVkU3Vic2NyaXB0Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIHNldE9i
amVjdDpmb3JLZXllZFN1YnNjcmlwdDpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSB2YWx1ZUZvclBy
b3BlcnR5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIHNldFZhbHVlOmZvclByb3Bl
cnR5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5Ol0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Ol0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtKU1ZhbHVlIGRlZmluZVByb3BlcnR5OmRlc2NyaXB0b3I6XSk6IERlbGV0ZWQuCisg
ICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgorICAgICAgICAoSlNWYWx1ZUdldFR5cGUpOgor
ICAgICAgICAoSlNWYWx1ZUlzU3ltYm9sKToKKyAgICAgICAgKEpTVmFsdWVNYWtlU3ltYm9sKToK
KyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5oOgorICAgICAgICAqIEFQSS9XZWJLaXRBdmFpbGFi
aWxpdHkuaDoKKyAgICAgICAgKiBBUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRl
clRlc3QubW06CisgICAgICAgICogQVBJL3Rlc3RzL0N1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVz
dC5jOgorICAgICAgICAqIEFQSS90ZXN0cy9EYXRlVGVzdHMubW06CisgICAgICAgICogQVBJL3Rl
c3RzL0pTRXhwb3J0VGVzdHMubW06CisgICAgICAgICogQVBJL3Rlc3RzL0pTTm9kZS5jOgorICAg
ICAgICAqIEFQSS90ZXN0cy9KU05vZGVMaXN0LmM6CisgICAgICAgICogQVBJL3Rlc3RzL05vZGUu
YzoKKyAgICAgICAgKiBBUEkvdGVzdHMvTm9kZUxpc3QuYzoKKyAgICAgICAgKiBBUEkvdGVzdHMv
bWluaWRvbS5jOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLmM6CisgICAgICAgIChtYWlu
KToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5jcHA6IEFkZGVkLgorICAgICAgICAoQVBJ
U3RyaW5nOjpBUElTdHJpbmcpOgorICAgICAgICAoQVBJU3RyaW5nOjp+QVBJU3RyaW5nKToKKyAg
ICAgICAgKEFQSVN0cmluZzo6b3BlcmF0b3IgSlNTdHJpbmdSZWYpOgorICAgICAgICAoQVBJQ29u
dGV4dDo6QVBJQ29udGV4dCk6CisgICAgICAgIChBUElDb250ZXh0Ojp+QVBJQ29udGV4dCk6Cisg
ICAgICAgIChBUElDb250ZXh0OjpvcGVyYXRvciBKU0dsb2JhbENvbnRleHRSZWYpOgorICAgICAg
ICAoQVBJVmVjdG9yOjpBUElWZWN0b3IpOgorICAgICAgICAoQVBJVmVjdG9yOjp+QVBJVmVjdG9y
KToKKyAgICAgICAgKEFQSVZlY3Rvcjo6YXBwZW5kKToKKyAgICAgICAgKHRlc3RDQVBJVmlhQ3Bw
KToKKyAgICAgICAgKFRlc3RBUEk6OmV2YWx1YXRlU2NyaXB0KToKKyAgICAgICAgKFRlc3RBUEk6
OmNhbGxGdW5jdGlvbik6CisgICAgICAgIChUZXN0QVBJOjpmdW5jdGlvblJldHVybnNUcnVlKToK
KyAgICAgICAgKFRlc3RBUEk6OmNoZWNrKToKKyAgICAgICAgKFRlc3RBUEk6OmNoZWNrSlNBbmRB
UElNYXRjaCk6CisgICAgICAgIChUZXN0QVBJOjppbnRlcmVzdGluZ09iamVjdHMpOgorICAgICAg
ICAoVGVzdEFQSTo6aW50ZXJlc3RpbmdLZXlzKToKKyAgICAgICAgKFRlc3RBUEk6OnJ1bik6Cisg
ICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkubW06CisgICAgICAgICh0ZXN0T2JqZWN0aXZlQ0FQ
SU1haW4pOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogY29uZmlnLmg6CisgICAgICAgICogcG9zdHByb2Nlc3MtaGVhZGVycy5z
aDoKKwogMjAxOC0wNi0wNyAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBEb24ndCB0cnkgdG8gYWxsb2NhdGUgSklUIG1lbW9yeSBpZiB3ZSBkb24ndCBoYXZl
IHRoZSBKSVQgZW50aXRsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNCYXNlUHJpdmF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VQcml2
YXRlLmgKaW5kZXggMTM3NTk0OTcyNzVlNThiZWIwYzEyMjEzNTVmOWZiZWQ0M2QzYjFhNS4uYjZj
OTIwNGM0Y2JkNzJjNGY3YzlmNmExZjU0Y2Q1ZDM0MTU2ZDE0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VQcml2YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0Jhc2VQcml2YXRlLmgKQEAgLTQzLDcgKzQzLDcgQEAgb3ducyBhIGxhcmdl
IG5vbi1HQyBtZW1vcnkgcmVnaW9uLiBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBlbmNvdXJh
Z2UgdGhlCiBnYXJiYWdlIGNvbGxlY3RvciB0byBjb2xsZWN0IHNvb24sIGhvcGluZyB0byByZWNs
YWltIHRoYXQgbGFyZ2Ugbm9uLUdDIG1lbW9yeQogcmVnaW9uLgogKi8KLUpTX0VYUE9SVCB2b2lk
IEpTUmVwb3J0RXh0cmFNZW1vcnlDb3N0KEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBzaXplKSBD
Rl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCB2b2lkIEpTUmVwb3J0RXh0cmFNZW1v
cnlDb3N0KEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBzaXplKSBKU0NfQVBJX0FWQUlMQUJMRSht
YWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogSlNfRVhQT1JUIHZvaWQgSlNEaXNhYmxlR0NUaW1l
cih2b2lkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRl
eHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmgKaW5kZXggMTk0ZTM1
MmJmZTdhZTc1ZjIzNThjZWU2M2Q0NDhmZTFmYTI0ZDM4Mi4uYjFiYmE2OTk0ODIzZjc2ZjY4OGY3
OTdmZjkyOWY5MzllNDc4NWIyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NvbnRleHQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5o
CkBAIC0zOSw3ICszOSw3IEBACiAgSmF2YVNjcmlwdCBleGVjdXRpb24gdGFrZXMgcGxhY2Ugd2l0
aGluIGEgY29udGV4dCwgYW5kIGFsbCBKYXZhU2NyaXB0IHZhbHVlcwogIGFyZSB0aWVkIHRvIGEg
Y29udGV4dC4KICovCi1OU19DTEFTU19BVkFJTEFCTEUoMTBfOSwgN18wKQorSlNDX0NMQVNTX0FW
QUlMQUJMRShtYWNvc3goMTAuOSksIGlvcyg3LjApKQogQGludGVyZmFjZSBKU0NvbnRleHQgOiBO
U09iamVjdAogCiAvKiEKQEAgLTc4LDcgKzc4LDcgQEAgTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzks
IDdfMCkKIEBwYXJhbSBzb3VyY2VVUkwgQSBVUkwgZm9yIHRoZSBzY3JpcHQncyBzb3VyY2UgZmls
ZS4gVXNlZCBieSBkZWJ1Z2dlcnMgYW5kIHdoZW4gcmVwb3J0aW5nIGV4Y2VwdGlvbnMuIFRoaXMg
cGFyYW1ldGVyIGlzIGluZm9ybWF0aXZlIG9ubHk6IGl0IGRvZXMgbm90IGNoYW5nZSB0aGUgYmVo
YXZpb3Igb2YgdGhlIHNjcmlwdC4KIEByZXN1bHQgVGhlIGxhc3QgdmFsdWUgZ2VuZXJhdGVkIGJ5
IHRoZSBzY3JpcHQuCiAqLwotLSAoSlNWYWx1ZSAqKWV2YWx1YXRlU2NyaXB0OihOU1N0cmluZyAq
KXNjcmlwdCB3aXRoU291cmNlVVJMOihOU1VSTCAqKXNvdXJjZVVSTCBOU19BVkFJTEFCTEUoMTBf
MTAsIDhfMCk7CistIChKU1ZhbHVlICopZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0
IHdpdGhTb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMIEpTQ19BUElfQVZBSUxBQkxFKG1hY29z
eCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBAbWV0aG9kZ3JvdXAgQ2FsbGJhY2sgQWNjZXNz
b3JzCkBAIC0xMDEsNyArMTAxLDcgQEAgTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzksIDdfMCkKICBh
IGNhbGxiYWNrIGZyb20gSmF2YVNjcmlwdCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiBuaWwuCiBA
cmVzdWx0IFRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIEphdmFTY3JpcHQgZnVuY3Rpb24gb3Igbmls
IGlmIHRoZXJlIGlzbid0IG9uZS4KICovCi0rIChKU1ZhbHVlICopY3VycmVudENhbGxlZSBOU19B
VkFJTEFCTEUoMTBfMTAsIDhfMCk7CisrIChKU1ZhbHVlICopY3VycmVudENhbGxlZSBKU0NfQVBJ
X0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qIQogQG1ldGhvZApAQCAt
MTc2LDcgKzE3Niw3IEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCiBAcHJvcGVydHkK
IEBkaXNjdXNzaW9uIE5hbWUgb2YgdGhlIEpTQ29udGV4dC4gRXhwb3NlZCB3aGVuIHJlbW90ZSBk
ZWJ1Z2dpbmcgdGhlIGNvbnRleHQuCiAqLwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqbmFt
ZSBOU19BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpu
YW1lIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogQGVuZAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFByaXZhdGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UHJpdmF0ZS5oCmluZGV4IDdk
MWQwY2JkYmI0OGMxNzBlYTc2ZDJiZDYyZDczMGMyMDM5ZDZhOTQuLmZmOTYyMmFkZGY2MGI3YzEw
MzU3ZGFjY2YxYzZmNDFlY2I4NjFmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDb250ZXh0UHJpdmF0ZS5oCkBAIC0zNiwxOSArMzYsMTkgQEAKIEBwcm9wZXJ0eQogQGRpc2N1
c3Npb24gUmVtb3RlIGluc3BlY3Rpb24gc2V0dGluZyBvZiB0aGUgSlNDb250ZXh0LiBEZWZhdWx0
IHZhbHVlIGlzIFlFUy4KICovCi1AcHJvcGVydHkgKHNldHRlcj1fc2V0UmVtb3RlSW5zcGVjdGlv
bkVuYWJsZWQ6KSBCT09MIF9yZW1vdGVJbnNwZWN0aW9uRW5hYmxlZCBOU19BVkFJTEFCTEUoMTBf
MTAsIDhfMCk7CitAcHJvcGVydHkgKHNldHRlcj1fc2V0UmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQ6
KSBCT09MIF9yZW1vdGVJbnNwZWN0aW9uRW5hYmxlZCBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3go
MTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qIQogQHByb3BlcnR5CiBAZGlzY3Vzc2lvbiBTZXQgd2hl
dGhlciBvciBub3QgdGhlIG5hdGl2ZSBjYWxsIHN0YWNrIGlzIGluY2x1ZGVkIHdoZW4gcmVwb3J0
aW5nIGV4Y2VwdGlvbnMuIERlZmF1bHQgdmFsdWUgaXMgWUVTLgogKi8KLUBwcm9wZXJ0eSAoc2V0
dGVyPV9zZXRJbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zOikg
Qk9PTCBfaW5jbHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucyBOU19B
VkFJTEFCTEUoMTBfMTAsIDhfMCk7CitAcHJvcGVydHkgKHNldHRlcj1fc2V0SW5jbHVkZXNOYXRp
dmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9uczopIEJPT0wgX2luY2x1ZGVzTmF0aXZl
Q2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEKIEBwcm9wZXJ0eQogQGRpc2N1c3Npb24gU2V0IHRo
ZSBydW4gbG9vcCB0aGUgV2ViIEluc3BlY3RvciBkZWJ1Z2dlciBzaG91bGQgdXNlIHdoZW4gZXZh
bHVhdGluZyBKYXZhU2NyaXB0IGluIHRoZSBKU0NvbnRleHQuCiAqLwotQHByb3BlcnR5IChzZXR0
ZXI9X3NldERlYnVnZ2VyUnVuTG9vcDopIENGUnVuTG9vcFJlZiBfZGVidWdnZXJSdW5Mb29wIE5T
X0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0Bwcm9wZXJ0eSAoc2V0dGVyPV9zZXREZWJ1Z2dlclJ1
bkxvb3A6KSBDRlJ1bkxvb3BSZWYgX2RlYnVnZ2VyUnVuTG9vcCBKU0NfQVBJX0FWQUlMQUJMRSht
YWNvc3goMTAuMTApLCBpb3MoOC4wKSk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0UmVmLmgKaW5kZXggZTE1Y2FlNTc1NzY0OGEyZmM4ZWEyMTcyMWVlZjUzNWJh
ZDM1N2IyNy4uMjhkMGE2N2U5YWUzMjYyMTFhZDk0ZGUzNmM1MjY0YTc1NDJmYWY4OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oCkBAIC01Myw3ICs1Myw3IEBAIGV4
dGVybiAiQyIgewogIEpTQ29udGV4dEdyb3VwJ3MgcnVuIGxvb3Agb25jZSBpdCBoYXMgYmVlbiBj
cmVhdGVkLgogQHJlc3VsdCBUaGUgY3JlYXRlZCBKU0NvbnRleHRHcm91cC4KICovCi1KU19FWFBP
UlQgSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R3JvdXBDcmVhdGUodm9pZCkgQ0ZfQVZBSUxB
QkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R3Jv
dXBDcmVhdGUodm9pZCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7
CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC02MSwxNCArNjEsMTQgQEAgSlNfRVhQT1JUIEpTQ29udGV4
dEdyb3VwUmVmIEpTQ29udGV4dEdyb3VwQ3JlYXRlKHZvaWQpIENGX0FWQUlMQUJMRSgxMF82LCA3
XzApOwogQHBhcmFtIGdyb3VwIFRoZSBKU0NvbnRleHRHcm91cCB0byByZXRhaW4uCiBAcmVzdWx0
IEEgSlNDb250ZXh0R3JvdXAgdGhhdCBpcyB0aGUgc2FtZSBhcyBncm91cC4KICovCi1KU19FWFBP
UlQgSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R3JvdXBSZXRhaW4oSlNDb250ZXh0R3JvdXBS
ZWYgZ3JvdXApIENGX0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQT1JUIEpTQ29udGV4dEdy
b3VwUmVmIEpTQ29udGV4dEdyb3VwUmV0YWluKEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwKSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24K
IEBhYnN0cmFjdCBSZWxlYXNlcyBhIEphdmFTY3JpcHQgY29udGV4dCBncm91cC4KIEBwYXJhbSBn
cm91cCBUaGUgSlNDb250ZXh0R3JvdXAgdG8gcmVsZWFzZS4KICovCi1KU19FWFBPUlQgdm9pZCBK
U0NvbnRleHRHcm91cFJlbGVhc2UoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXApIENGX0FWQUlMQUJM
RSgxMF82LCA3XzApOworSlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3JvdXBSZWxlYXNlKEpTQ29u
dGV4dEdyb3VwUmVmIGdyb3VwKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3
LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTgzLDcgKzgzLDcgQEAgSlNfRVhQT1JUIHZvaWQg
SlNDb250ZXh0R3JvdXBSZWxlYXNlKEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwKSBDRl9BVkFJTEFC
TEUoMTBfNiwKICBOVUxMIHRvIHVzZSB0aGUgZGVmYXVsdCBvYmplY3QgY2xhc3MuCiBAcmVzdWx0
IEEgSlNHbG9iYWxDb250ZXh0IHdpdGggYSBnbG9iYWwgb2JqZWN0IG9mIGNsYXNzIGdsb2JhbE9i
amVjdENsYXNzLgogKi8KLUpTX0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgSlNHbG9iYWxDb250
ZXh0Q3JlYXRlKEpTQ2xhc3NSZWYgZ2xvYmFsT2JqZWN0Q2xhc3MpIENGX0FWQUlMQUJMRSgxMF81
LCA3XzApOworSlNfRVhQT1JUIEpTR2xvYmFsQ29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVh
dGUoSlNDbGFzc1JlZiBnbG9iYWxPYmplY3RDbGFzcykgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjUpLCBpb3MoNy4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC05Nyw3ICs5Nyw3IEBAIEpT
X0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgSlNHbG9iYWxDb250ZXh0Q3JlYXRlKEpTQ2xhc3NS
ZWYgZ2xvYmFsT2JqZWN0Q2xhc3MpCiBAcmVzdWx0IEEgSlNHbG9iYWxDb250ZXh0IHdpdGggYSBn
bG9iYWwgb2JqZWN0IG9mIGNsYXNzIGdsb2JhbE9iamVjdENsYXNzIGFuZCBhIGNvbnRleHQKICBn
cm91cCBlcXVhbCB0byBncm91cC4KICovCi1KU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpT
R2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIEpTQ2xh
c3NSZWYgZ2xvYmFsT2JqZWN0Q2xhc3MpIENGX0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQ
T1JUIEpTR2xvYmFsQ29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKEpTQ29u
dGV4dEdyb3VwUmVmIGdyb3VwLCBKU0NsYXNzUmVmIGdsb2JhbE9iamVjdENsYXNzKSBKU0NfQVBJ
X0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAg
LTEyOCw3ICsxMjgsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNDb250ZXh0R2V0R2xvYmFs
T2JqZWN0KEpTQ29udGV4dFJlZiBjdHgpOwogQHBhcmFtIGN0eCBUaGUgSlNDb250ZXh0IHdob3Nl
IGdyb3VwIHlvdSB3YW50IHRvIGdldC4KIEByZXN1bHQgY3R4J3MgZ3JvdXAuCiAqLwotSlNfRVhQ
T1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdldEdyb3VwKEpTQ29udGV4dFJlZiBjdHgp
IENGX0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQT1JUIEpTQ29udGV4dEdyb3VwUmVmIEpT
Q29udGV4dEdldEdyb3VwKEpTQ29udGV4dFJlZiBjdHgpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29z
eCgxMC42KSwgaW9zKDcuMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTM2LDcgKzEzNiw3IEBA
IEpTX0VYUE9SVCBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHZXRHcm91cChKU0NvbnRleHRS
ZWYgY3R4KSBDRl9BVkFJTEFCTEUoMTBfCiBAcGFyYW0gY3R4IFRoZSBKU0NvbnRleHQgd2hvc2Ug
Z2xvYmFsIGNvbnRleHQgeW91IHdhbnQgdG8gZ2V0LgogQHJlc3VsdCBjdHgncyBnbG9iYWwgY29u
dGV4dC4KICovCi1KU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpTQ29udGV4dEdldEdsb2Jh
bENvbnRleHQoSlNDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEwXzcsIDdfMCk7CitKU19F
WFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpTQ29udGV4dEdldEdsb2JhbENvbnRleHQoSlNDb250
ZXh0UmVmIGN0eCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjcpLCBpb3MoNy4wKSk7CiAK
IC8qIQogQGZ1bmN0aW9uCkBAIC0xNDYsNyArMTQ2LDcgQEAgSlNfRVhQT1JUIEpTR2xvYmFsQ29u
dGV4dFJlZiBKU0NvbnRleHRHZXRHbG9iYWxDb250ZXh0KEpTQ29udGV4dFJlZiBjdHgpIENGX0FW
QUkKIEBkaXNjdXNzaW9uIEEgSlNHbG9iYWxDb250ZXh0J3MgbmFtZSBpcyBleHBvc2VkIGZvciBy
ZW1vdGUgZGVidWdnaW5nIHRvIG1ha2UgaXQKIGVhc2llciB0byBpZGVudGlmeSB0aGUgY29udGV4
dCB5b3Ugd291bGQgbGlrZSB0byBhdHRhY2ggdG8uCiAqLwotSlNfRVhQT1JUIEpTU3RyaW5nUmVm
IEpTR2xvYmFsQ29udGV4dENvcHlOYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpIENGX0FWQUlM
QUJMRSgxMF8xMCwgOF8wKTsKK0pTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU0dsb2JhbENvbnRleHRD
b3B5TmFtZShKU0dsb2JhbENvbnRleHRSZWYgY3R4KSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3go
MTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC0xNTQsNyArMTU0LDcgQEAg
SlNfRVhQT1JUIEpTU3RyaW5nUmVmIEpTR2xvYmFsQ29udGV4dENvcHlOYW1lKEpTR2xvYmFsQ29u
dGV4dFJlZiBjdHgpIENGX0FWQUlMQUIKIEBwYXJhbSBjdHggVGhlIEpTR2xvYmFsQ29udGV4dCB0
aGF0IHlvdSB3YW50IHRvIG5hbWUuCiBAcGFyYW0gbmFtZSBUaGUgcmVtb3RlIGRlYnVnZ2luZyBu
YW1lIHRvIHNldCBvbiBjdHguCiAqLwotSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0
TmFtZShKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBuYW1lKSBDRl9BVkFJTEFC
TEUoMTBfMTAsIDhfMCk7CitKU19FWFBPUlQgdm9pZCBKU0dsb2JhbENvbnRleHRTZXROYW1lKEpT
R2xvYmFsQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIG5hbWUpIEpTQ19BUElfQVZBSUxBQkxF
KG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZkludGVybmFsLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZkludGVybmFsLmgKaW5kZXgg
NzlkN2ViNmYzOWU3ZTJjYThmNGE5Yjk0ZjI3MjI2ZGIyZjcwNTI5NS4uOWQ0ZjE4YTIyOTUwNzI2
ZDkxMDJkMjUwYjVjYWEwY2U3YWQ1YzcyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NvbnRleHRSZWZJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDb250ZXh0UmVmSW50ZXJuYWwuaApAQCAtNDIsNyArNDIsNyBAQCBleHRlcm4gIkMi
IHsKIEBhYnN0cmFjdCBHZXRzIHRoZSBydW4gbG9vcCB1c2VkIGJ5IHRoZSBXZWIgSW5zcGVjdG9y
IGRlYnVnZ2VyIHdoZW4gZXZhbHVhdGluZyBKYXZhU2NyaXB0IGluIHRoaXMgY29udGV4dC4KIEBw
YXJhbSBjdHggVGhlIEpTR2xvYmFsQ29udGV4dCB3aG9zZSBzZXR0aW5nIHlvdSB3YW50IHRvIGdl
dC4KICovCi1KU19FWFBPUlQgQ0ZSdW5Mb29wUmVmIEpTR2xvYmFsQ29udGV4dEdldERlYnVnZ2Vy
UnVuTG9vcChKU0dsb2JhbENvbnRleHRSZWYgY3R4KSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7
CitKU19FWFBPUlQgQ0ZSdW5Mb29wUmVmIEpTR2xvYmFsQ29udGV4dEdldERlYnVnZ2VyUnVuTG9v
cChKU0dsb2JhbENvbnRleHRSZWYgY3R4KSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTAp
LCBpb3MoOC4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC01MCw3ICs1MCw3IEBAIEpTX0VYUE9S
VCBDRlJ1bkxvb3BSZWYgSlNHbG9iYWxDb250ZXh0R2V0RGVidWdnZXJSdW5Mb29wKEpTR2xvYmFs
Q29udGV4dFJlZiBjdHgpCiBAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgdGhhdCB5b3Ug
d2FudCB0byBjaGFuZ2UuCiBAcGFyYW0gcnVuTG9vcCBUaGUgbmV3IHZhbHVlIG9mIHRoZSBzZXR0
aW5nIGZvciB0aGUgY29udGV4dC4KICovCi1KU19FWFBPUlQgdm9pZCBKU0dsb2JhbENvbnRleHRT
ZXREZWJ1Z2dlclJ1bkxvb3AoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwgQ0ZSdW5Mb29wUmVmIHJ1
bkxvb3ApIENGX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0pTX0VYUE9SVCB2b2lkIEpTR2xvYmFs
Q29udGV4dFNldERlYnVnZ2VyUnVuTG9vcChKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBDRlJ1bkxv
b3BSZWYgcnVuTG9vcCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkp
OwogI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWZQcml2YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaAppbmRleCAxOTYwNGVhNzQ5MzdlZmRhOTY3Y2Uz
ZGY1Nzc3ZDJhMTUxNGRhOGRjLi5lYzY3NmQ4Yzg3MTQ4M2Y4M2ZjYzNjNTY0YjU1NGU4MTcwMzcy
MmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZlBy
aXZhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZlByaXZh
dGUuaApAQCAtNDQsNyArNDQsNyBAQCBleHRlcm4gIkMiIHsKIEBwYXJhbSBjdHggVGhlIEpTQ29u
dGV4dCB3aG9zZSBiYWNrdHJhY2UgeW91IHdhbnQgdG8gZ2V0CiBAcmVzdWx0IEEgc3RyaW5nIGNv
bnRhaW5pbmcgdGhlIGJhY2t0cmFjZQogKi8KLUpTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU0NvbnRl
eHRDcmVhdGVCYWNrdHJhY2UoSlNDb250ZXh0UmVmIGN0eCwgdW5zaWduZWQgbWF4U3RhY2tTaXpl
KSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU0NvbnRl
eHRDcmVhdGVCYWNrdHJhY2UoSlNDb250ZXh0UmVmIGN0eCwgdW5zaWduZWQgbWF4U3RhY2tTaXpl
KSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKICAgICAKIAogLyoh
IApAQCAtODUsMTQgKzg1LDE0IEBAIHR5cGVkZWYgYm9vbAogIG5lZWQgdG8gY2FsbCBKU0NvbnRl
eHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdCBiZWZvcmUgeW91IHN0YXJ0IGV4ZWN1dGluZwog
IGFueSBzY3JpcHRzLgogKi8KLUpTX0VYUE9SVCB2b2lkIEpTQ29udGV4dEdyb3VwU2V0RXhlY3V0
aW9uVGltZUxpbWl0KEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwLCBkb3VibGUgbGltaXQsIEpTU2hv
dWxkVGVybWluYXRlQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpIENGX0FWQUlMQUJM
RSgxMF82LCA3XzApOworSlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25U
aW1lTGltaXQoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIGRvdWJsZSBsaW1pdCwgSlNTaG91bGRU
ZXJtaW5hdGVDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogY29udGV4dCkgSlNDX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCiBAYWJzdHJhY3Qg
Q2xlYXJzIHRoZSBzY3JpcHQgZXhlY3V0aW9uIHRpbWUgbGltaXQuCiBAcGFyYW0gZ3JvdXAgVGhl
IEphdmFTY3JpcHQgY29udGV4dCBncm91cCB0aGF0IHRoZSB0aW1lIGxpbWl0IGlzIGNsZWFyZWQg
b24uCiAqLwotSlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3JvdXBDbGVhckV4ZWN1dGlvblRpbWVM
aW1pdChKU0NvbnRleHRHcm91cFJlZiBncm91cCkgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitK
U19FWFBPUlQgdm9pZCBKU0NvbnRleHRHcm91cENsZWFyRXhlY3V0aW9uVGltZUxpbWl0KEpTQ29u
dGV4dEdyb3VwUmVmIGdyb3VwKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3
LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTEwMSw3ICsxMDEsNyBAQCBKU19FWFBPUlQgdm9p
ZCBKU0NvbnRleHRHcm91cENsZWFyRXhlY3V0aW9uVGltZUxpbWl0KEpTQ29udGV4dEdyb3VwUmVm
IGdyb3VwKSBDRgogQHJlc3VsdCBUaGUgdmFsdWUgb2YgdGhlIHNldHRpbmcsIHRydWUgaWYgcmVt
b3RlIGluc3BlY3Rpb24gaXMgZW5hYmxlZCwgb3RoZXJ3aXNlIGZhbHNlLgogQGRpc2N1c3Npb24g
UmVtb3RlIGluc3BlY3Rpb24gaXMgdHJ1ZSBieSBkZWZhdWx0LgogKi8KLUpTX0VYUE9SVCBib29s
IEpTR2xvYmFsQ29udGV4dEdldFJlbW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4
dFJlZiBjdHgpIENGX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0pTX0VYUE9SVCBib29sIEpTR2xv
YmFsQ29udGV4dEdldFJlbW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4dFJlZiBj
dHgpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBA
ZnVuY3Rpb24KQEAgLTEwOSw3ICsxMDksNyBAQCBKU19FWFBPUlQgYm9vbCBKU0dsb2JhbENvbnRl
eHRHZXRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZChKU0dsb2JhbENvbnRleHRSZWYgY3R4KQogQHBh
cmFtIGN0eCBUaGUgSlNHbG9iYWxDb250ZXh0IHRoYXQgeW91IHdhbnQgdG8gY2hhbmdlLgogQHBh
cmFtIGVuYWJsZWQgVGhlIG5ldyByZW1vdGUgaW5zcGVjdGlvbiBlbmFibGVkIHNldHRpbmcgZm9y
IHRoZSBjb250ZXh0LgogKi8KLUpTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldFJlbW90
ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIGJvb2wgZW5hYmxlZCkg
Q0ZfQVZBSUxBQkxFKDEwXzEwLCA4XzApOyAgICAKK0pTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29u
dGV4dFNldFJlbW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIGJv
b2wgZW5hYmxlZCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOyAg
ICAKIAogLyohCiBAZnVuY3Rpb24KQEAgLTExOCw3ICsxMTgsNyBAQCBKU19FWFBPUlQgdm9pZCBK
U0dsb2JhbENvbnRleHRTZXRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZChKU0dsb2JhbENvbnRleHRS
ZWYgY3R4LAogQHJlc3VsdCBUaGUgdmFsdWUgb2YgdGhlIHNldHRpbmcsIHRydWUgaWYgcmVtb3Rl
IGluc3BlY3Rpb24gaXMgZW5hYmxlZCwgb3RoZXJ3aXNlIGZhbHNlLgogQGRpc2N1c3Npb24gVGhp
cyBzZXR0aW5nIGlzIHRydWUgYnkgZGVmYXVsdC4KICovCi1KU19FWFBPUlQgYm9vbCBKU0dsb2Jh
bENvbnRleHRHZXRJbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25z
KEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpIENGX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0pTX0VY
UE9SVCBib29sIEpTR2xvYmFsQ29udGV4dEdldEluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJl
cG9ydGluZ0V4Y2VwdGlvbnMoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkgSlNDX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTI2LDcg
KzEyNiw3IEBAIEpTX0VYUE9SVCBib29sIEpTR2xvYmFsQ29udGV4dEdldEluY2x1ZGVzTmF0aXZl
Q2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMoCiBAcGFyYW0gY3R4IFRoZSBKU0dsb2Jh
bENvbnRleHQgdGhhdCB5b3Ugd2FudCB0byBjaGFuZ2UuCiBAcGFyYW0gaW5jbHVkZXNOYXRpdmVD
YWxsU3RhY2sgVGhlIG5ldyB2YWx1ZSBvZiB0aGUgc2V0dGluZyBmb3IgdGhlIGNvbnRleHQuCiAq
LwotSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0SW5jbHVkZXNOYXRpdmVDYWxsU3Rh
Y2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucyhKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBib29sIGlu
Y2x1ZGVzTmF0aXZlQ2FsbFN0YWNrKSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitKU19FWFBP
UlQgdm9pZCBKU0dsb2JhbENvbnRleHRTZXRJbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBv
cnRpbmdFeGNlcHRpb25zKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIGJvb2wgaW5jbHVkZXNOYXRp
dmVDYWxsU3RhY2spIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsK
IAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTTWFuYWdlZFZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFu
YWdlZFZhbHVlLmgKaW5kZXggMDEwNzNmYWQ5N2U3MGI3NmJkNmI2NmEzNzMzYWYyNjFjYzUyNzQ5
Yy4uOGMyMzExZDA5OGM5ZTdkMmFkNGQ4ZDc5NTI5ZGU1MDE3NDllYWZmZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUuaApAQCAtNDgsNyArNDgsNyBAQCBUaGUg
cHJpbWFyeSB1c2UgZm9yIGEgSlNNYW5hZ2VkVmFsdWUgaXMgdG8gc3RvcmUgYSBKU1ZhbHVlIGlu
IGFuIE9iamVjdGl2ZS1DCiBvciBTd2lmdCBvYmplY3QgdGhhdCBpcyBleHBvcnRlZCB0byBKYXZh
U2NyaXB0LiBJdCBpcyBpbmNvcnJlY3QgdG8gc3RvcmUgYSBKU1ZhbHVlCiBpbiBhbiBvYmplY3Qg
dGhhdCBpcyBleHBvcnRlZCB0byBKYXZhU2NyaXB0LCBzaW5jZSBkb2luZyBzbyBjcmVhdGVzIGEg
cmV0YWluIGN5Y2xlLgogKi8gCi1OU19DTEFTU19BVkFJTEFCTEUoMTBfOSwgN18wKQorSlNDX0NM
QVNTX0FWQUlMQUJMRShtYWNvc3goMTAuOSksIGlvcyg3LjApKQogQGludGVyZmFjZSBKU01hbmFn
ZWRWYWx1ZSA6IE5TT2JqZWN0CiAKIC8qIQpAQCAtNTcsNyArNTcsNyBAQCBOU19DTEFTU19BVkFJ
TEFCTEUoMTBfOSwgN18wKQogQHJlc3VsdCBUaGUgbmV3IEpTTWFuYWdlZFZhbHVlLgogKi8KICsg
KEpTTWFuYWdlZFZhbHVlICopbWFuYWdlZFZhbHVlV2l0aFZhbHVlOihKU1ZhbHVlICopdmFsdWU7
Ci0rIChKU01hbmFnZWRWYWx1ZSAqKW1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZh
bHVlIGFuZE93bmVyOihpZClvd25lciBOU19BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CisrIChKU01h
bmFnZWRWYWx1ZSAqKW1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIGFuZE93
bmVyOihpZClvd25lciBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSk7
CiAKIC8qIQogQG1ldGhvZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNw
cAppbmRleCBkODBhMDcwYjdhYjY5OGZiNDhhNzEwZGU1YTc2MzM5NWJiNDliMjA3Li4wOThlMDNi
ZmIwM2U1Mjg5MGI3OWM1MWQ2MGVmODdjY2VjMjZiM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtMzY2LDYgKzM2NiwxMDAgQEAgdm9pZCBKU09iamVj
dFNldFByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJp
bmdSZWYgcHJvcGUKICAgICBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhj
ZXB0aW9uKTsKIH0KIAorYm9vbCBKU09iamVjdEhhc1Byb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKK3sKKyAgICBpZiAoIWN0eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pT
KGN0eCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2Vy
KHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisKKyAgICBK
U09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9
IHRvSlMoZXhlYywga2V5KS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGlmIChoYW5kbGVFeGNl
cHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6
OkRpZFRocm93KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHJlc3VsdCA9IGpz
T2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBpZGVudCk7CisgICAgaGFuZGxlRXhjZXB0aW9uSWZO
ZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
SlNWYWx1ZVJlZiBKU09iamVjdEdldFByb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2Jq
ZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sK
KyAgICBpZiAoIWN0eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0
KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gdG9KUyhl
eGVjLCBrZXkpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklm
TmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhy
b3cpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgSlNWYWx1ZSBqc1ZhbHVlID0ganNP
YmplY3QtPmdldChleGVjLCBpZGVudCk7CisgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2Nv
cGUsIGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIGpzVmFsdWUpOwor
fQorCit2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmpl
Y3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIGtleSwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNQcm9wZXJ0
eUF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlm
ICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRv
SlMob2JqZWN0KTsKKyAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVlKTsKKwor
ICAgIElkZW50aWZpZXIgaWRlbnQgPSB0b0pTKGV4ZWMsIGtleSkudG9Qcm9wZXJ0eUtleShleGVj
KTsKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlv
bikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ym9vbCBkb2VzTm90SGF2ZVByb3BlcnR5ID0gYXR0cmlidXRlcyAmJiAhanNPYmplY3QtPmhhc1By
b3BlcnR5KGV4ZWMsIGlkZW50KTsKKyAgICBpZiAoTElLRUxZKCFzY29wZS5leGNlcHRpb24oKSkp
IHsKKyAgICAgICAgaWYgKGRvZXNOb3RIYXZlUHJvcGVydHkpIHsKKyAgICAgICAgICAgIFByb3Bl
cnR5RGVzY3JpcHRvciBkZXNjKGpzVmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAganNP
YmplY3QtPm1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KGpzT2JqZWN0LCBleGVjLCBp
ZGVudCwgZGVzYywgZmFsc2UpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QoanNPYmplY3QpOworICAgICAgICAgICAganNPYmplY3QtPm1ldGhvZFRh
YmxlKCktPnB1dChqc09iamVjdCwgZXhlYywgaWRlbnQsIGpzVmFsdWUsIHNsb3QpOworICAgICAg
ICB9CisgICAgfQorICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNl
cHRpb24pOworfQorCitib29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHlLZXkoSlNDb250ZXh0UmVm
IGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIGtleSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRv
SlMoY3R4KTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2Nr
ZXIodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKworICAg
IEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAgICBJZGVudGlmaWVyIGlkZW50
ID0gdG9KUyhleGVjLCBrZXkpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4
Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1
czo6RGlkVGhyb3cpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgcmVzdWx0ID0g
anNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGpzT2JqZWN0LCBleGVjLCBp
ZGVudCk7CisgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlv
bik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogSlNWYWx1ZVJlZiBKU09iamVjdEdldFByb3Bl
cnR5QXRJbmRleChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIHVuc2lnbmVk
IHByb3BlcnR5SW5kZXgsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBpZiAoIWN0eCkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oCmluZGV4IDk1ZDUzYjdmNGU1
OGU5NmYwY2JjMzE1OTVhZjljNDYxOTc4YWE0M2QuLjAxZGY1MTQ4ZjdkZDNlNzM5ZDA2ZDA1NmQ4
MGExZmQ5Njc2NWUzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgK
QEAgLTQ0MSw3ICs0NDEsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQ29u
c3RydWN0b3IoSlNDb250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYQogIEBkaXNjdXNzaW9u
IFRoZSBiZWhhdmlvciBvZiB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGV4YWN0bHkgbWF0Y2ggdGhl
IGJlaGF2aW9yIG9mIHRoZSBidWlsdC1pbiBBcnJheSBjb25zdHJ1Y3Rvci4gU3BlY2lmaWNhbGx5
LCBpZiBvbmUgYXJndW1lbnQgCiAgaXMgc3VwcGxpZWQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBh
biBhcnJheSB3aXRoIG9uZSBlbGVtZW50LgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNP
YmplY3RNYWtlQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZB
SUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQXJy
YXkoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtNDUyLDcgKzQ1
Miw3IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VBcnJheShKU0NvbnRleHRS
ZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwKICBAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRl
ciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnku
IFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEBy
ZXN1bHQgQSBKU09iamVjdCB0aGF0IGlzIGEgRGF0ZS4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0
UmVmIEpTT2JqZWN0TWFrZURhdGUoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikg
Q0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RN
YWtlRGF0ZShKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlM
QUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC00NjMs
NyArNDYzLDcgQEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZURhdGUoSlNDb250
ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGMKICBAcGFyYW0gZXhjZXB0aW9uIEEg
cG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBp
ZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9u
LgogIEByZXN1bHQgQSBKU09iamVjdCB0aGF0IGlzIGEgRXJyb3IuCiAgKi8KLUpTX0VYUE9SVCBK
U09iamVjdFJlZiBKU09iamVjdE1ha2VFcnJvcihKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCBKU09iamVjdFJlZiBK
U09iamVjdE1ha2VFcnJvcihKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiAgQGZ1bmN0aW9u
CkBAIC00NzQsNyArNDc0LDcgQEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUVy
cm9yKEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LAogIEBwYXJhbSBleGNl
cHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNl
cHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBl
eGNlcHRpb24uCiAgQHJlc3VsdCBBIEpTT2JqZWN0IHRoYXQgaXMgYSBSZWdFeHAuCiAgKi8KLUpT
X0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VSZWdFeHAoSlNDb250ZXh0UmVmIGN0eCwg
c2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgSlNP
YmplY3RSZWYgSlNPYmplY3RNYWtlUmVnRXhwKEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1
bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9zKDcuMCkpOwogCiAvKiEK
IEBmdW5jdGlvbgpAQCAtNTM2LDkgKzUzNiw5IEBAIEpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpTT2Jq
ZWN0R2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKCiBA
cGFyYW0gY3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCiBAcGFyYW0gb2JqZWN0IFRo
ZSBKU09iamVjdCB3aG9zZSBwcm9wZXJ0eSB5b3Ugd2FudCB0byBzZXQuCiBAcGFyYW0gcHJvcGVy
dHlOYW1lIEEgSlNTdHJpbmcgY29udGFpbmluZyB0aGUgcHJvcGVydHkncyBuYW1lLgotQHBhcmFt
IHZhbHVlIEEgSlNWYWx1ZSB0byB1c2UgYXMgdGhlIHByb3BlcnR5J3MgdmFsdWUuCi1AcGFyYW0g
ZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4g
ZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUg
YW4gZXhjZXB0aW9uLgorQHBhcmFtIHZhbHVlIEEgSlNWYWx1ZVJlZiB0byB1c2UgYXMgdGhlIHBy
b3BlcnR5J3MgdmFsdWUuCiBAcGFyYW0gYXR0cmlidXRlcyBBIGxvZ2ljYWxseSBPUmVkIHNldCBv
ZiBKU1Byb3BlcnR5QXR0cmlidXRlcyB0byBnaXZlIHRvIHRoZSBwcm9wZXJ0eS4KK0BwYXJhbSBl
eGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBl
eGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBh
biBleGNlcHRpb24uCiAqLwogSlNfRVhQT1JUIHZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eShKU0Nv
bnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKTsKIApAQCAtNTUzLDYgKzU1Myw1NCBAQCBKU19FWFBPUlQgdm9p
ZCBKU09iamVjdFNldFByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVj
dCwgSlNTdHJpbgogKi8KIEpTX0VYUE9SVCBib29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHkoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3Qg
VGVzdHMgd2hldGhlciBhbiBvYmplY3QgaGFzIGEgZ2l2ZW4gcHJvcGVydHkgdXNpbmcgYSBKU1Zh
bHVlUmVmIGFzIHRoZSBwcm9wZXJ0eSBrZXkuCitAcGFyYW0gb2JqZWN0IFRoZSBKU09iamVjdCB0
byB0ZXN0LgorQHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBw
cm9wZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0g
ZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4g
ZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUg
YW4gZXhjZXB0aW9uLgorQHJlc3VsdCB0cnVlIGlmIHRoZSBvYmplY3QgaGFzIGEgcHJvcGVydHkg
d2hvc2UgbmFtZSBtYXRjaGVzIHByb3BlcnR5S2V5LCBvdGhlcndpc2UgZmFsc2UuCitAZGlzY3Vz
c2lvbiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHBlcmZvcm1pbmcgInByb3BlcnR5S2V5
IGluIG9iamVjdCIgZnJvbSBKYXZhU2NyaXB0LgorKi8KK0pTX0VYUE9SVCBib29sIEpTT2JqZWN0
SGFzUHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1Zh
bHVlUmVmIHByb3BlcnR5S2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxB
QkxFKG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CisKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJh
Y3QgR2V0cyBhIHByb3BlcnR5IGZyb20gYW4gb2JqZWN0IHVzaW5nIGEgSlNWYWx1ZVJlZiBhcyB0
aGUgcHJvcGVydHkga2V5LgorQHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNl
LgorQHBhcmFtIG9iamVjdCBUaGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQgdG8g
Z2V0LgorQHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBwcm9w
ZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0gZXhj
ZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhj
ZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4g
ZXhjZXB0aW9uLgorQHJlc3VsdCBUaGUgcHJvcGVydHkncyB2YWx1ZSBpZiBvYmplY3QgaGFzIHRo
ZSBwcm9wZXJ0eSBrZXksIG90aGVyd2lzZSB0aGUgdW5kZWZpbmVkIHZhbHVlLgorQGRpc2N1c3Np
b24gVGhpcyBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyBwZXJmb3JtaW5nICJvYmplY3RbcHJvcGVy
dHlLZXldIiBmcm9tIEphdmFTY3JpcHQuCisqLworSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNPYmpl
Y3RHZXRQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpT
VmFsdWVSZWYgcHJvcGVydHlLZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKKworLyohCitAZnVuY3Rpb24KK0BhYnN0
cmFjdCBTZXRzIGEgcHJvcGVydHkgb24gYW4gb2JqZWN0IHVzaW5nIGEgSlNWYWx1ZVJlZiBhcyB0
aGUgcHJvcGVydHkga2V5LgorQHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNl
LgorQHBhcmFtIG9iamVjdCBUaGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQgdG8g
c2V0LgorQHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBwcm9w
ZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0gdmFs
dWUgQSBKU1ZhbHVlUmVmIHRvIHVzZSBhcyB0aGUgcHJvcGVydHkncyB2YWx1ZS4KK0BwYXJhbSBh
dHRyaWJ1dGVzIEEgbG9naWNhbGx5IE9SZWQgc2V0IG9mIEpTUHJvcGVydHlBdHRyaWJ1dGVzIHRv
IGdpdmUgdG8gdGhlIHByb3BlcnR5LgorQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBK
U1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5V
TEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KK0BkaXNjdXNzaW9u
IFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXMgcGVyZm9ybWluZyAib2JqZWN0W3Byb3BlcnR5
S2V5XSA9IHZhbHVlIiBmcm9tIEphdmFTY3JpcHQuCisqLworSlNfRVhQT1JUIHZvaWQgSlNPYmpl
Y3RTZXRQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpT
VmFsdWVSZWYgcHJvcGVydHlLZXksIEpTVmFsdWVSZWYgdmFsdWUsIEpTUHJvcGVydHlBdHRyaWJ1
dGVzIGF0dHJpYnV0ZXMsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKKworLyohCitAZnVuY3Rpb24KK0BhYnN0cmFjdCBE
ZWxldGVzIGEgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QgdXNpbmcgYSBKU1ZhbHVlUmVmIGFzIHRo
ZSBwcm9wZXJ0eSBrZXkuCitAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2Uu
CitAcGFyYW0gb2JqZWN0IFRoZSBKU09iamVjdCB3aG9zZSBwcm9wZXJ0eSB5b3Ugd2FudCB0byBk
ZWxldGUuCitAcGFyYW0gcHJvcGVydHlLZXkgQSBKU1ZhbHVlUmVmIGNvbnRhaW5pbmcgdGhlIHBy
b3BlcnR5IGtleSB0byB1c2Ugd2hlbiBsb29raW5nIHVwIHRoZSBwcm9wZXJ0eS4KK0BwYXJhbSBl
eGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBl
eGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBh
biBleGNlcHRpb24uCitAcmVzdWx0IHRydWUgaWYgdGhlIGRlbGV0ZSBvcGVyYXRpb24gc3VjY2Vl
ZHMsIG90aGVyd2lzZSBmYWxzZSAoZm9yIGV4YW1wbGUsIGlmIHRoZSBwcm9wZXJ0eSBoYXMgdGhl
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSBhdHRyaWJ1dGUgc2V0KS4KK0BkaXNjdXNz
aW9uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXMgcGVyZm9ybWluZyAiZGVsZXRlIG9iamVj
dFtwcm9wZXJ0eUtleV0iIGZyb20gSmF2YVNjcmlwdC4KKyovCitKU19FWFBPUlQgYm9vbCBKU09i
amVjdERlbGV0ZVByb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVj
dCwgSlNWYWx1ZVJlZiBwcm9wZXJ0eUtleSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJ
X0FWQUlMQUJMRShtYWNvc3goMTAuMTMpLCBpb3MoMTEuMCkpOworCiAvKiEKIEBmdW5jdGlvbgog
QGFic3RyYWN0IEdldHMgYSBwcm9wZXJ0eSBmcm9tIGFuIG9iamVjdCBieSBudW1lcmljIGluZGV4
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1JlbW90ZUluc3BlY3Rv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1JlbW90ZUluc3BlY3Rvci5oCmluZGV4
IGM4YmFjNmRkMGU0YTY0ODA5Y2IzNDUwY2RiYTRjMDM5N2E0OGEwNTcuLjYxODZiOTIzZWM4YWI4
Yjk0OGU3OTNhZjA0YmRkODQzMjc0MDAzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTUmVtb3RlSW5zcGVjdG9yLmgKQEAgLTQwLDE0ICs0MCwxNCBAQCB0eXBlZGVmIHBpZF90
IEpTUHJvY2Vzc0lEOwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotSlNfRVhQT1JUIHZvaWQgSlNS
ZW1vdGVJbnNwZWN0b3JEaXNhYmxlQXV0b1N0YXJ0KHZvaWQpIENGX0FWQUlMQUJMRSgxMF8xMSwg
OV8wKTsKLUpTX0VYUE9SVCB2b2lkIEpTUmVtb3RlSW5zcGVjdG9yU3RhcnQodm9pZCkgQ0ZfQVZB
SUxBQkxFKDEwXzExLCA5XzApOwotSlNfRVhQT1JUIHZvaWQgSlNSZW1vdGVJbnNwZWN0b3JTZXRQ
YXJlbnRQcm9jZXNzSW5mb3JtYXRpb24oSlNQcm9jZXNzSUQsIGNvbnN0IHVpbnQ4X3QqIGF1ZGl0
RGF0YSwgc2l6ZV90IGF1ZGl0TGVuZ3RoKSBDRl9BVkFJTEFCTEUoMTBfMTEsIDlfMCk7CitKU19F
WFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvckRpc2FibGVBdXRvU3RhcnQodm9pZCkgSlNDX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOworSlNfRVhQT1JUIHZvaWQgSlNS
ZW1vdGVJbnNwZWN0b3JTdGFydCh2b2lkKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEp
LCBpb3MoOS4wKSk7CitKU19FWFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvclNldFBhcmVudFBy
b2Nlc3NJbmZvcm1hdGlvbihKU1Byb2Nlc3NJRCwgY29uc3QgdWludDhfdCogYXVkaXREYXRhLCBz
aXplX3QgYXVkaXRMZW5ndGgpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSksIGlvcyg5
LjApKTsKIAotSlNfRVhQT1JUIHZvaWQgSlNSZW1vdGVJbnNwZWN0b3JTZXRMb2dUb1N5c3RlbUNv
bnNvbGUoYm9vbCkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzApOworSlNfRVhQT1JUIHZvaWQgSlNS
ZW1vdGVJbnNwZWN0b3JTZXRMb2dUb1N5c3RlbUNvbnNvbGUoYm9vbCkgSlNDX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOwogCi1KU19FWFBPUlQgYm9vbCBKU1JlbW90ZUlu
c3BlY3RvckdldEluc3BlY3Rpb25FbmFibGVkQnlEZWZhdWx0KHZvaWQpIENGX0FWQUlMQUJMRSgx
MF8xMSwgOV8wKTsKLUpTX0VYUE9SVCB2b2lkIEpTUmVtb3RlSW5zcGVjdG9yU2V0SW5zcGVjdGlv
bkVuYWJsZWRCeURlZmF1bHQoYm9vbCkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzApOworSlNfRVhQ
T1JUIGJvb2wgSlNSZW1vdGVJbnNwZWN0b3JHZXRJbnNwZWN0aW9uRW5hYmxlZEJ5RGVmYXVsdCh2
b2lkKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CitKU19FWFBP
UlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvclNldEluc3BlY3Rpb25FbmFibGVkQnlEZWZhdWx0KGJv
b2wpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSksIGlvcyg5LjApKTsKIAogI2lmZGVm
IF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VHlwZWRBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuaApp
bmRleCBlMjNiNzZkMmViNGFhNWE0OThiNTVlYmE0NzM3NDYzZjZjYjkzOWFjLi42ZDg2MDIyZmE1
Njk5NTQ2NDZiZWVhM2FlOWVmZjdiMmNhMzZhMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNUeXBlZEFycmF5LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgZXh0ZXJuICJDIiB7CiAgQHBhcmFt
IGV4Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3Jl
IGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0
b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAgICAgIEEgSlNPYmplY3RSZWYgdGhh
dCBpcyBhIFR5cGVkIEFycmF5IHdpdGggYWxsIGVsZW1lbnRzIHNldCB0byB6ZXJvIG9yIE5VTEwg
aWYgdGhlcmUgd2FzIGFuIGVycm9yLgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmpl
Y3RNYWtlVHlwZWRBcnJheShKU0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5
VHlwZSwgc2l6ZV90IGxlbmd0aCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUo
MTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVR5cGVkQXJy
YXkoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBlZEFycmF5VHlwZSBhcnJheVR5cGUsIHNpemVfdCBs
ZW5ndGgsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEw
LjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC02MCw3ICs2MCw3IEBAIEpT
X0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5KEpTQ29udGV4dFJlZiBj
dHgsIEpTVHlwZWRBcnJheVR5cGUKICBAcmVzdWx0ICAgICAgICAgICAgICAgICAgIEEgSlNPYmpl
Y3RSZWYgVHlwZWQgQXJyYXkgd2hvc2UgYmFja2luZyBzdG9yZSBpcyB0aGUgc2FtZSBhcyB0aGUg
b25lIHBvaW50ZWQgdG8gYnkgYnl0ZXMgb3IgTlVMTCBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAg
QGRpc2N1c3Npb24gICAgICAgICAgICAgICBJZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGR1cmlu
ZyB0aGlzIGZ1bmN0aW9uIHRoZSBieXRlc0RlYWxsb2NhdG9yIHdpbGwgYWx3YXlzIGJlIGNhbGxl
ZC4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVR5cGVkQXJyYXlXaXRo
Qnl0ZXNOb0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBlZEFycmF5VHlwZSBhcnJheVR5cGUs
IHZvaWQqIGJ5dGVzLCBzaXplX3QgYnl0ZUxlbmd0aCwgSlNUeXBlZEFycmF5Qnl0ZXNEZWFsbG9j
YXRvciBieXRlc0RlYWxsb2NhdG9yLCB2b2lkKiBkZWFsbG9jYXRvckNvbnRleHQsIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK0pTX0VYUE9SVCBKU09i
amVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEJ5dGVzTm9Db3B5KEpTQ29udGV4dFJl
ZiBjdHgsIEpTVHlwZWRBcnJheVR5cGUgYXJyYXlUeXBlLCB2b2lkKiBieXRlcywgc2l6ZV90IGJ5
dGVMZW5ndGgsIEpTVHlwZWRBcnJheUJ5dGVzRGVhbGxvY2F0b3IgYnl0ZXNEZWFsbG9jYXRvciwg
dm9pZCogZGVhbGxvY2F0b3JDb250ZXh0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElf
QVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpA
QCAtNzEsNyArNzEsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRB
cnJheVdpdGhCeXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4LCBKUwogIEBwYXJhbSBleGNlcHRp
b24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNl
cHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBl
eGNlcHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgICBBIEpTT2JqZWN0UmVmIHRoYXQgaXMgYSBU
eXBlZCBBcnJheSBvciBOVUxMIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4gVGhlIGJhY2tpbmcgc3Rv
cmUgb2YgdGhlIFR5cGVkIEFycmF5IHdpbGwgYmUgYnVmZmVyLgogICovCi1KU19FWFBPUlQgSlNP
YmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhBcnJheUJ1ZmZlcihKU0NvbnRleHRS
ZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgSlNPYmplY3RSZWYgYnVmZmVyLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBP
UlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhBcnJheUJ1ZmZlcihKU0Nv
bnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgSlNPYmplY3RSZWYgYnVm
ZmVyLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4x
MiksIGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtODQsNyArODQsNyBAQCBKU19F
WFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhBcnJheUJ1ZmZlcihK
U0NvbnRleHRSZWYgY3R4LCBKUwogIEBwYXJhbSBleGNlcHRpb24gICAgQSBwb2ludGVyIHRvIGEg
SlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBO
VUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCAg
ICAgICAgICAgICBBIEpTT2JqZWN0UmVmIHRoYXQgaXMgYSBUeXBlZCBBcnJheSBvciBOVUxMIGlm
IHRoZXJlIHdhcyBhbiBlcnJvci4gVGhlIGJhY2tpbmcgc3RvcmUgb2YgdGhlIFR5cGVkIEFycmF5
IHdpbGwgYmUgYnVmZmVyLgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtl
VHlwZWRBcnJheVdpdGhBcnJheUJ1ZmZlckFuZE9mZnNldChKU0NvbnRleHRSZWYgY3R4LCBKU1R5
cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgSlNPYmplY3RSZWYgYnVmZmVyLCBzaXplX3QgYnl0ZU9m
ZnNldCwgc2l6ZV90IGxlbmd0aCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUo
MTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVR5cGVkQXJy
YXlXaXRoQXJyYXlCdWZmZXJBbmRPZmZzZXQoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBlZEFycmF5
VHlwZSBhcnJheVR5cGUsIEpTT2JqZWN0UmVmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNp
emVfdCBsZW5ndGgsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFj
b3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC05NSw3ICs5NSw3
IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEFycmF5
QnVmZmVyQW5kT2Zmc2V0KEpTQ29udGV4dFJlCiAgQHJlc3VsdCAgICAgICAgICAgICBBIHBvaW50
ZXIgdG8gdGhlIHJhdyBkYXRhIGJ1ZmZlciB0aGF0IHNlcnZlcyBhcyBvYmplY3QncyBiYWNraW5n
IHN0b3JlIG9yIE5VTEwgaWYgb2JqZWN0IGlzIG5vdCBhIFR5cGVkIEFycmF5IG9iamVjdC4KICBA
ZGlzY3Vzc2lvbiAgICAgICAgIFRoZSBwb2ludGVyIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24g
aXMgdGVtcG9yYXJ5IGFuZCBpcyBub3QgZ3VhcmFudGVlZCB0byByZW1haW4gdmFsaWQgYWNyb3Nz
IEphdmFTY3JpcHRDb3JlIEFQSSBjYWxscy4KICAqLwotSlNfRVhQT1JUIHZvaWQqIEpTT2JqZWN0
R2V0VHlwZWRBcnJheUJ5dGVzUHRyKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVj
dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNf
RVhQT1JUIHZvaWQqIEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5dGVzUHRyKEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FW
QUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAvKiEKICBAZnVuY3Rpb24KQEAg
LTEwNSw3ICsxMDUsNyBAQCBKU19FWFBPUlQgdm9pZCogSlNPYmplY3RHZXRUeXBlZEFycmF5Qnl0
ZXNQdHIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZQogIEBwYXJhbSBleGNlcHRp
b24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNl
cHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBl
eGNlcHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgICBUaGUgbGVuZ3RoIG9mIHRoZSBUeXBlZCBB
cnJheSBvYmplY3Qgb3IgMCBpZiB0aGUgb2JqZWN0IGlzIG5vdCBhIFR5cGVkIEFycmF5IG9iamVj
dC4KICAqLwotSlNfRVhQT1JUIHNpemVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlMZW5ndGgoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
IENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0
VHlwZWRBcnJheUxlbmd0aChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9z
KDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC0xMTUsNyArMTE1LDcgQEAgSlNfRVhQT1JU
IHNpemVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlMZW5ndGgoSlNDb250ZXh0UmVmIGN0eCwgSlNP
YmplY3RSZWYgb2JqZWMKICBAcGFyYW0gZXhjZXB0aW9uICAgIEEgcG9pbnRlciB0byBhIEpTVmFs
dWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBp
ZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1bHQgICAgICAg
ICAgICAgVGhlIGJ5dGUgbGVuZ3RoIG9mIHRoZSBUeXBlZCBBcnJheSBvYmplY3Qgb3IgMCBpZiB0
aGUgb2JqZWN0IGlzIG5vdCBhIFR5cGVkIEFycmF5IG9iamVjdC4KICAqLwotSlNfRVhQT1JUIHNp
emVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlCeXRlTGVuZ3RoKEpTQ29udGV4dFJlZiBjdHgsIEpT
T2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBf
MTIsIDEwXzApOworSlNfRVhQT1JUIHNpemVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlCeXRlTGVu
Z3RoKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAv
KiEKICBAZnVuY3Rpb24KQEAgLTEyNSw3ICsxMjUsNyBAQCBKU19FWFBPUlQgc2l6ZV90IEpTT2Jq
ZWN0R2V0VHlwZWRBcnJheUJ5dGVMZW5ndGgoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYg
bwogIEBwYXJhbSBleGNlcHRpb24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGlj
aCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3Qg
Y2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgICBUaGUgYnl0
ZSBvZmZzZXQgb2YgdGhlIFR5cGVkIEFycmF5IG9iamVjdCBvciAwIGlmIHRoZSBvYmplY3QgaXMg
bm90IGEgVHlwZWQgQXJyYXkgb2JqZWN0LgogICovCi1KU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2Jq
ZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitK
U19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoSlNDb250ZXh0
UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19B
UElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlv
bgpAQCAtMTM1LDcgKzEzNSw3IEBAIEpTX0VYUE9SVCBzaXplX3QgSlNPYmplY3RHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvCiAgQHBhcmFtIGV4
Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFu
IGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3Jl
IGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAgICAgIEEgSlNPYmplY3RSZWYgd2l0aCBh
IEpTVHlwZWRBcnJheVR5cGUgb2Yga0pTVHlwZWRBcnJheVR5cGVBcnJheUJ1ZmZlciBvciBOVUxM
IGlmIG9iamVjdCBpcyBub3QgYSBUeXBlZCBBcnJheS4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0
UmVmIEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ1ZmZlcihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVj
dFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAx
MF8wKTsKK0pTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdEdldFR5cGVkQXJyYXlCdWZmZXIo
SlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKIC8vIC0t
LS0tLS0tLS0tLS0gQXJyYXkgQnVmZmVyIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tCiAKQEAgLTE1
MSw3ICsxNTEsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RHZXRUeXBlZEFycmF5
QnVmZmVyKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmCiAgQHJlc3VsdCAgICAgICAgICAg
ICAgICAgICBBIEpTT2JqZWN0UmVmIEFycmF5IEJ1ZmZlciB3aG9zZSBiYWNraW5nIHN0b3JlIGlz
IHRoZSBzYW1lIGFzIHRoZSBvbmUgcG9pbnRlZCB0byBieSBieXRlcyBvciBOVUxMIGlmIHRoZXJl
IHdhcyBhbiBlcnJvci4KICBAZGlzY3Vzc2lvbiAgICAgICAgICAgICAgIElmIGFuIGV4Y2VwdGlv
biBpcyB0aHJvd24gZHVyaW5nIHRoaXMgZnVuY3Rpb24gdGhlIGJ5dGVzRGVhbGxvY2F0b3Igd2ls
bCBhbHdheXMgYmUgY2FsbGVkLgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RN
YWtlQXJyYXlCdWZmZXJXaXRoQnl0ZXNOb0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgdm9pZCogYnl0
ZXMsIHNpemVfdCBieXRlTGVuZ3RoLCBKU1R5cGVkQXJyYXlCeXRlc0RlYWxsb2NhdG9yIGJ5dGVz
RGVhbGxvY2F0b3IsIHZvaWQqIGRlYWxsb2NhdG9yQ29udGV4dCwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpT
T2JqZWN0TWFrZUFycmF5QnVmZmVyV2l0aEJ5dGVzTm9Db3B5KEpTQ29udGV4dFJlZiBjdHgsIHZv
aWQqIGJ5dGVzLCBzaXplX3QgYnl0ZUxlbmd0aCwgSlNUeXBlZEFycmF5Qnl0ZXNEZWFsbG9jYXRv
ciBieXRlc0RlYWxsb2NhdG9yLCB2b2lkKiBkZWFsbG9jYXRvckNvbnRleHQsIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsK
IAogLyohCiAgQGZ1bmN0aW9uCkBAIC0xNjEsNyArMTYxLDcgQEAgSlNfRVhQT1JUIEpTT2JqZWN0
UmVmIEpTT2JqZWN0TWFrZUFycmF5QnVmZmVyV2l0aEJ5dGVzTm9Db3B5KEpTQ29udGV4dFJlZiBj
dHgsIHYKICBAcmVzdWx0ICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIHJhdyBkYXRhIGJ1ZmZl
ciB0aGF0IHNlcnZlcyBhcyBvYmplY3QncyBiYWNraW5nIHN0b3JlIG9yIE5VTEwgaWYgb2JqZWN0
IGlzIG5vdCBhbiBBcnJheSBCdWZmZXIgb2JqZWN0LgogIEBkaXNjdXNzaW9uICAgICAgIFRoZSBw
b2ludGVyIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24gaXMgdGVtcG9yYXJ5IGFuZCBpcyBub3Qg
Z3VhcmFudGVlZCB0byByZW1haW4gdmFsaWQgYWNyb3NzIEphdmFTY3JpcHRDb3JlIEFQSSBjYWxs
cy4KICAqLwotSlNfRVhQT1JUIHZvaWQqIEpTT2JqZWN0R2V0QXJyYXlCdWZmZXJCeXRlc1B0cihK
U0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK0pTX0VYUE9SVCB2b2lkKiBKU09iamVjdEdl
dEFycmF5QnVmZmVyQnl0ZXNQdHIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiks
IGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtMTcxLDcgKzE3MSw3IEBAIEpTX0VY
UE9SVCB2b2lkKiBKU09iamVjdEdldEFycmF5QnVmZmVyQnl0ZXNQdHIoSlNDb250ZXh0UmVmIGN0
eCwgSlNPYmplY3RSZWYgb2JqCiAgQHBhcmFtIGV4Y2VwdGlvbiAgQSBwb2ludGVyIHRvIGEgSlNW
YWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxM
IGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCAgICAg
ICAgICAgVGhlIG51bWJlciBvZiBieXRlcyBzdG9yZWQgaW4gdGhlIGRhdGEgb2JqZWN0LgogICov
Ci1KU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0QXJyYXlCdWZmZXJCeXRlTGVuZ3RoKEpTQ29u
dGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBD
Rl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIHNpemVfdCBKU09iamVjdEdldEFy
cmF5QnVmZmVyQnl0ZUxlbmd0aChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3Qs
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwg
aW9zKDEwLjApKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNWYWx1ZS5oCmluZGV4IDE0MTBkZDc0YTE3Zjk3MDcwNmU0NGRlZDI0Y2NkMTcwYzM0NzljMmUu
LjYyY2JlMjFhOWIyMWI2MzViMmNhZTRkNWQ2OTg0MTI2MzIxNmM2MjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNWYWx1ZS5oCkBAIC00NCw3ICs0NCw3IEBACiAgSlNWYWx1ZSB0byBhIG1ldGhv
ZCBvciBwcm9wZXJ0eSBvZiBhIEpTVmFsdWUgb3IgSlNDb250ZXh0IG9yaWdpbmF0aW5nIGZyb20g
YQogIGRpZmZlcmVudCBKU1ZpcnR1YWxNYWNoaW5lLiBEb2luZyBzbyB3aWxsIHJhaXNlIGFuIE9i
amVjdGl2ZS1DIGV4Y2VwdGlvbi4KICovCi1OU19DTEFTU19BVkFJTEFCTEUoMTBfOSwgN18wKQor
SlNDX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goMTAuOSksIGlvcyg3LjApKQogQGludGVyZmFjZSBK
U1ZhbHVlIDogTlNPYmplY3QKIAogLyohCkBAIC0xNDgsNiArMTQ4LDE1IEBAIE5TX0NMQVNTX0FW
QUlMQUJMRSgxMF85LCA3XzApCiAqLwogKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFVuZGVmaW5lZElu
Q29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKIAorLyohCisgQG1ldGhvZAorIEBhYnN0cmFj
dCBDcmVhdGUgYSBuZXcsIHVuaXF1ZSwgc3ltYm9sIG9iamVjdC4KKyBAcGFyYW0gZGVzY3JpcHRp
b24gVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBzeW1ib2wgb2JqZWN0IGJlaW5nIGNyZWF0ZWQuCisg
QHBhcmFtIGNvbnRleHQgVGhlIEpTQ29udGV4dCB0byB3aGljaCB0aGUgcmVzdWx0aW5nIEpTVmFs
dWUgYmVsb25ncy4KKyBAcmVzdWx0IFRoZSBKU1ZhbHVlIHJlcHJlc2VudGluZyBhIHVuaXF1ZSBK
YXZhU2NyaXB0IHZhbHVlIHdpdGggdHlwZSBzeW1ib2wuCisgKi8KKysgKEpTVmFsdWUgKil2YWx1
ZVdpdGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246KE5TU3RyaW5nICopZGVzY3JpcHRpb24gaW5D
b250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0IEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeChKU0Nf
TUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpOworCiAvKiEKIEBtZXRob2Rncm91cCBDb252ZXJ0
aW5nIHRvIE9iamVjdGl2ZS1DIFR5cGVzCiBAZGlzY3Vzc2lvbiBXaGVuIGNvbnZlcnRpbmcgYmV0
d2VlbiBKYXZhU2NyaXB0IHZhbHVlcyBhbmQgT2JqZWN0aXZlLUMgb2JqZWN0cyBhIGNvcHkgaXMK
QEAgLTMwNSw0MyArMzE0LDUyIEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCiAvKiEK
IEBtZXRob2Rncm91cCBBY2Nlc3NpbmcgUHJvcGVydGllcwogKi8KKworI2lmICEoZGVmaW5lZChf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAoZGVmaW5lZChfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMTAwMDApCisK
IC8qIQogQG1ldGhvZAogQGFic3RyYWN0IEFjY2VzcyBhIHByb3BlcnR5IG9mIGEgSlNWYWx1ZS4K
IEByZXN1bHQgVGhlIEpTVmFsdWUgZm9yIHRoZSByZXF1ZXN0ZWQgcHJvcGVydHkgb3IgdGhlIEpT
VmFsdWUgPGNvZGU+dW5kZWZpbmVkPC9jb2RlPiAKICBpZiB0aGUgcHJvcGVydHkgZG9lcyBub3Qg
ZXhpc3QuCitAZGlzY3Vzc2lvbiBDb3JyZXNwb25kcyB0byB0aGUgSmF2YVNjcmlwdCBvcGVyYXRp
b24gPGNvZGU+b2JqZWN0W3Byb3BlcnR5XTwvY29kZT4uIFBhc3MgYW4gTlNTdHJpbmcgKiB0byBh
Y2Nlc3MgYSBuYW1lZCBwcm9wZXJ0eS4gT3RoZXIgdmFsaWQgcHJvcGVydGllcyBpbmNsdWRlIHN5
bWJvbHMsIG51bWJlcnMsIGFuZCBzdHJpbmdpZmlhYmxlIG9iamVjdHMuIEluIG1hY09TIDEwLjEz
IGFuZCBpT1MgMTEgYW5kIGJlbG93LCAncHJvcGVydHknIHdhcyBhbiBOU1N0cmluZyAqLgogKi8K
LS0gKEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLSAo
SlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KGlkKXByb3BlcnR5OwogCiAvKiEKIEBtZXRob2QK
IEBhYnN0cmFjdCBTZXQgYSBwcm9wZXJ0eSBvbiBhIEpTVmFsdWUuCitAZGlzY3Vzc2lvbiBDb3Jy
ZXNwb25kcyB0byB0aGUgSmF2YVNjcmlwdCBvcGVyYXRpb24gPGNvZGU+b2JqZWN0W3Byb3BlcnR5
XSA9IHZhbHVlPC9jb2RlPi4gUGFzcyBhbiBOU1N0cmluZyAqIHRvIGFjY2VzcyBhIG5hbWVkIHBy
b3BlcnR5LiBPdGhlciB2YWxpZCBwcm9wZXJ0aWVzIGluY2x1ZGUgc3ltYm9scywgbnVtYmVycywg
YW5kIHN0cmluZ2lmaWFibGUgb2JqZWN0cy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUyAxMSBhbmQg
YmVsb3csICdwcm9wZXJ0eScgd2FzIGFuIE5TU3RyaW5nICouCiAqLwotLSAodm9pZClzZXRWYWx1
ZTooaWQpdmFsdWUgZm9yUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7CistICh2b2lkKXNl
dFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooaWQpcHJvcGVydHk7CiAKIC8qIQogQG1ldGhv
ZAogQGFic3RyYWN0IERlbGV0ZSBhIHByb3BlcnR5IGZyb20gYSBKU1ZhbHVlLgogQHJlc3VsdCBZ
RVMgaWYgZGVsZXRpb24gaXMgc3VjY2Vzc2Z1bCwgTk8gb3RoZXJ3aXNlLgorQGRpc2N1c3Npb24g
Q29ycmVzcG9uZHMgdG8gdGhlIEphdmFTY3JpcHQgb3BlcmF0aW9uIDxjb2RlPmRlbGV0ZSBvYmpl
Y3RbcHJvcGVydHldPC9jb2RlPi4gUGFzcyBhbiBOU1N0cmluZyAqIHRvIGFjY2VzcyBhIG5hbWVk
IHByb3BlcnR5LiBPdGhlciB2YWxpZCBwcm9wZXJ0aWVzIGluY2x1ZGUgc3ltYm9scywgbnVtYmVy
cywgYW5kIHN0cmluZ2lmaWFibGUgb2JqZWN0cy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUyAxMSBh
bmQgYmVsb3csICdwcm9wZXJ0eScgd2FzIGFuIE5TU3RyaW5nICouCiAqLwotLSAoQk9PTClkZWxl
dGVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKEJPT0wpZGVsZXRlUHJvcGVydHk6
KGlkKXByb3BlcnR5OwogCiAvKiEKIEBtZXRob2QKIEBhYnN0cmFjdCBDaGVjayBpZiBhIEpTVmFs
dWUgaGFzIGEgcHJvcGVydHkuCiBAZGlzY3Vzc2lvbiBUaGlzIG1ldGhvZCBoYXMgdGhlIHNhbWUg
ZnVuY3Rpb24gYXMgdGhlIEphdmFTY3JpcHQgb3BlcmF0b3IgPGNvZGU+aW48L2NvZGU+LgogQHJl
c3VsdCBSZXR1cm5zIFlFUyBpZiBwcm9wZXJ0eSBpcyBwcmVzZW50IG9uIHRoZSB2YWx1ZS4KK0Bk
aXNjdXNzaW9uIENvcnJlc3BvbmRzIHRvIHRoZSBKYXZhU2NyaXB0IG9wZXJhdGlvbiA8Y29kZT5w
cm9wZXJ0eSBpbiBvYmplY3Q8L2NvZGU+LiBQYXNzIGFuIE5TU3RyaW5nICogdG8gYWNjZXNzIGEg
bmFtZWQgcHJvcGVydHkuIE90aGVyIHZhbGlkIHByb3BlcnRpZXMgaW5jbHVkZSBzeW1ib2xzLCBu
dW1iZXJzLCBhbmQgc3RyaW5naWZpYWJsZSBvYmplY3RzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9T
IDExIGFuZCBiZWxvdywgJ3Byb3BlcnR5JyB3YXMgYW4gTlNTdHJpbmcgKi4KICovCi0tIChCT09M
KWhhc1Byb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLSAoQk9PTCloYXNQcm9wZXJ0eToo
aWQpcHJvcGVydHk7CiAKIC8qIQogQG1ldGhvZAogQGFic3RyYWN0IERlZmluZSBwcm9wZXJ0aWVz
IHdpdGggY3VzdG9tIGRlc2NyaXB0b3JzIG9uIEpTVmFsdWVzLgogQGRpc2N1c3Npb24gVGhpcyBt
ZXRob2QgbWF5IGJlIHVzZWQgdG8gY3JlYXRlIGEgZGF0YSBvciBhY2Nlc3NvciBwcm9wZXJ0eSBv
biBhbiBvYmplY3QuCiAgVGhpcyBtZXRob2Qgb3BlcmF0ZXMgaW4gYWNjb3JkYW5jZSB3aXRoIHRo
ZSBPYmplY3QuZGVmaW5lUHJvcGVydHkgbWV0aG9kIGluIHRoZSAKLSBKYXZhU2NyaXB0IGxhbmd1
YWdlLgorIEphdmFTY3JpcHQgbGFuZ3VhZ2UuIFBhc3MgYW4gTlNTdHJpbmcgKiB0byBhY2Nlc3Mg
YSBuYW1lZCBwcm9wZXJ0eS4gT3RoZXIgdmFsaWQgcHJvcGVydGllcyBpbmNsdWRlIHN5bWJvbHMs
IG51bWJlcnMsIGFuZCBzdHJpbmdpZmlhYmxlIG9iamVjdHMuIEluIG1hY09TIDEwLjEzIGFuZCBp
T1MgMTEgYW5kIGJlbG93LCAncHJvcGVydHknIHdhcyBhbiBOU1N0cmluZyAqLgogKi8KLS0gKHZv
aWQpZGVmaW5lUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHkgZGVzY3JpcHRvcjooaWQpZGVz
Y3JpcHRvcjsKKy0gKHZvaWQpZGVmaW5lUHJvcGVydHk6KGlkKXByb3BlcnR5IGRlc2NyaXB0b3I6
KGlkKWRlc2NyaXB0b3I7CisKKyNlbmRpZiAvLyAhKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMw
MCkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQogCiAvKiEKIEBtZXRob2QKQEAg
LTQwMiwxNyArNDIwLDIzIEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCiAqLwogQHBy
b3BlcnR5IChyZWFkb25seSkgQk9PTCBpc09iamVjdDsKIAorLyohCitAcHJvcGVydHkKK0BhYnN0
cmFjdCBDaGVjayBpZiBhIEpTVmFsdWUgaXMgYSBzeW1ib2wuCisqLworQHByb3BlcnR5IChyZWFk
b25seSkgQk9PTCBpc1N5bWJvbCBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goSlNDX01BQ19UQkEp
LCBpb3MoSlNDX0lPU19UQkEpKTsKKwogLyohCiBAcHJvcGVydHkKIEBhYnN0cmFjdCBDaGVjayBp
ZiBhIEpTVmFsdWUgaXMgYW4gYXJyYXkuCiAqLyAKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wg
aXNBcnJheSBOU19BVkFJTEFCTEUoMTBfMTEsIDlfMCk7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBC
T09MIGlzQXJyYXkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOwog
CiAvKiEKIEBwcm9wZXJ0eQogQGFic3RyYWN0IENoZWNrIGlmIGEgSlNWYWx1ZSBpcyBhIGRhdGUu
CiAqLyAKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaXNEYXRlIE5TX0FWQUlMQUJMRSgxMF8x
MSwgOV8wKTsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaXNEYXRlIEpTQ19BUElfQVZBSUxB
QkxFKG1hY29zeCgxMC4xMSksIGlvcyg5LjApKTsKIAogLyohCiBAbWV0aG9kCkBAIC01NjksMTMg
KzU5MywxNiBAQCBDcmVhdGUgYSBKU1ZhbHVlIGZyb20gYSBDR1JlY3QuCiBAL3RleHRibG9jawog
CiAgQW4gb2JqZWN0IGtleSBwYXNzZWQgYXMgYSBzdWJzY3JpcHQgd2lsbCBiZSBjb252ZXJ0ZWQg
dG8gYSBKYXZhU2NyaXB0IHZhbHVlLAotIGFuZCB0aGVuIHRoZSB2YWx1ZSBjb252ZXJ0ZWQgdG8g
YSBzdHJpbmcgdXNlZCBhcyBhIHByb3BlcnR5IG5hbWUuCisgYW5kIHRoZW4gdGhlIHZhbHVlIGNv
bnZlcnRlZCB0byBhIHN0cmluZyB1c2VkIGFzIGEgcHJvcGVydHkgbmFtZS4gSW4gbWFjT1MKKyAx
MC4xMyBhbmQgaU9TIDExIGFuZCBiZWxvdywgdGhlIDxjb2RlPmtleTwvY29kZT4gYXJndW1lbnQg
b2YKKyA8Y29kZT5zZXRPYmplY3Q6b2JqZWN0IGZvcktleWVkU3Vic2NyaXB0OmtleTwvY29kZT4g
d2FzIHJlc3RyaWN0ZWQgdG8gYW4KKyA8Y29kZT5OU1N0cmluZyA8TlNDb3B5aW5nPiAqPC9jb2Rl
PiBidXQgdGhhdCByZXN0cmljdGlvbiB3YXMgbmV2ZXIgdXNlZC4KICovCiBAaW50ZXJmYWNlIEpT
VmFsdWUgKFN1YnNjcmlwdFN1cHBvcnQpCiAKIC0gKEpTVmFsdWUgKilvYmplY3RGb3JLZXllZFN1
YnNjcmlwdDooaWQpa2V5OwogLSAoSlNWYWx1ZSAqKW9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoo
TlNVSW50ZWdlcilpbmRleDsKLS0gKHZvaWQpc2V0T2JqZWN0OihpZClvYmplY3QgZm9yS2V5ZWRT
dWJzY3JpcHQ6KE5TT2JqZWN0IDxOU0NvcHlpbmc+ICopa2V5OworLSAodm9pZClzZXRPYmplY3Q6
KGlkKW9iamVjdCBmb3JLZXllZFN1YnNjcmlwdDooaWQpa2V5OwogLSAodm9pZClzZXRPYmplY3Q6
KGlkKW9iamVjdCBhdEluZGV4ZWRTdWJzY3JpcHQ6KE5TVUludGVnZXIpaW5kZXg7CiAKIEBlbmQK
QEAgLTY2Miw2ICs2ODksNTMgQEAgSlNfRVhQT1JUIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IEpT
UHJvcGVydHlEZXNjcmlwdG9yU2V0S2V5OwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9IC8vIGV4dGVy
biAiQyIKICNlbmRpZgorIAorI2lmIChkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDApIHx8IChk
ZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKKworLy8gVGhlc2UgZGVjbGFyYXRpb25zIHBy
b3ZpZGUgY29tcGF0aWJpbGl0eSB3aGVuIHRhcmdldGluZyBTREtzIGZvciBsZWdhY3kgT1NzLiBJ
biBtYWNPUyAxMC4xMyBhbmQgaU9TIDExIGFuZCBiZWxvdywgJ3Byb3BlcnR5JyB3YXMgYW4gTlNT
dHJpbmcgKi4KK0BpbnRlcmZhY2UgSlNWYWx1ZSAoTGVnYWN5U0RLU3VwcG9ydCkKKworLyohCitA
bWV0aG9kCitAYWJzdHJhY3QgQWNjZXNzIGEgcHJvcGVydHkgb2YgYSBKU1ZhbHVlLgorQHJlc3Vs
dCBUaGUgSlNWYWx1ZSBmb3IgdGhlIHJlcXVlc3RlZCBwcm9wZXJ0eSBvciB0aGUgSlNWYWx1ZSA8
Y29kZT51bmRlZmluZWQ8L2NvZGU+CitpZiB0aGUgcHJvcGVydHkgZG9lcyBub3QgZXhpc3QuCisq
LworLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7CisK
Ky8qIQorQG1ldGhvZAorQGFic3RyYWN0IFNldCBhIHByb3BlcnR5IG9uIGEgSlNWYWx1ZS4KKyov
CistICh2b2lkKXNldFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9w
ZXJ0eTsKKworLyohCisgQG1ldGhvZAorIEBhYnN0cmFjdCBEZWxldGUgYSBwcm9wZXJ0eSBmcm9t
IGEgSlNWYWx1ZS4KKyBAcmVzdWx0IFlFUyBpZiBkZWxldGlvbiBpcyBzdWNjZXNzZnVsLCBOTyBv
dGhlcndpc2UuCisgKi8KKy0gKEJPT0wpZGVsZXRlUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVy
dHk7CisKKy8qIQorIEBtZXRob2QKKyBAYWJzdHJhY3QgQ2hlY2sgaWYgYSBKU1ZhbHVlIGhhcyBh
IHByb3BlcnR5LgorIEBkaXNjdXNzaW9uIFRoaXMgbWV0aG9kIGhhcyB0aGUgc2FtZSBmdW5jdGlv
biBhcyB0aGUgSmF2YVNjcmlwdCBvcGVyYXRvciA8Y29kZT5pbjwvY29kZT4uCisgQHJlc3VsdCBS
ZXR1cm5zIFlFUyBpZiBwcm9wZXJ0eSBpcyBwcmVzZW50IG9uIHRoZSB2YWx1ZS4KKyAqLworLSAo
Qk9PTCloYXNQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKworLyohCisgQG1ldGhvZAor
IEBhYnN0cmFjdCBEZWZpbmUgcHJvcGVydGllcyB3aXRoIGN1c3RvbSBkZXNjcmlwdG9ycyBvbiBK
U1ZhbHVlcy4KKyBAZGlzY3Vzc2lvbiBUaGlzIG1ldGhvZCBtYXkgYmUgdXNlZCB0byBjcmVhdGUg
YSBkYXRhIG9yIGFjY2Vzc29yIHByb3BlcnR5IG9uIGFuIG9iamVjdC4KKyBUaGlzIG1ldGhvZCBv
cGVyYXRlcyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBtZXRo
b2QgaW4gdGhlCisgSmF2YVNjcmlwdCBsYW5ndWFnZS4KKyAqLworLSAodm9pZClkZWZpbmVQcm9w
ZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eSBkZXNjcmlwdG9yOihpZClkZXNjcmlwdG9yOworCitA
ZW5kCisKKyNlbmRpZgogCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1ZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1t
CmluZGV4IGM4ZjQ5N2EwYzE0YjA0OGExMTRkMmU3NDBjZWIxOTliNjMzYzNhYmMuLmZkNTIyNmY4
NGNlNWE5ZDQyYzI3YzEwNTY2OWI0MDk3ZTRlNGNiM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVmFsdWUubW0KQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQgIkpTQ0pTVmFsdWUuaCIKICNp
bXBvcnQgIlN0cm9uZy5oIgogI2ltcG9ydCAiU3Ryb25nSW5saW5lcy5oIgorI2ltcG9ydCA8d3Rm
L0V4cGVjdGVkLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL0hhc2hT
ZXQuaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CkBAIC0xNTEsNiArMTUyLDEzIEBAIE5TU3RyaW5n
ICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXkgPSBAInNldCI7CiAgICAgcmV0dXJu
IFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6SlNWYWx1ZU1ha2VVbmRlZmluZWQoW2NvbnRl
eHQgSlNHbG9iYWxDb250ZXh0UmVmXSkgaW5Db250ZXh0OmNvbnRleHRdOwogfQogCisrIChKU1Zh
bHVlICopdmFsdWVXaXRoTmV3U3ltYm9sRnJvbURlc2NyaXB0aW9uOihOU1N0cmluZyAqKWRlc2Ny
aXB0aW9uIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAoreworICAgIEpTU3RyaW5nUmVm
IHN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZT
dHJpbmdSZWY+KGRlc2NyaXB0aW9uKSk7CisgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpT
VmFsdWVSZWY6SlNWYWx1ZU1ha2VTeW1ib2woW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwg
c3RyaW5nKSBpbkNvbnRleHQ6Y29udGV4dF07Cit9CisKKwogLSAoaWQpdG9PYmplY3QKIHsKICAg
ICByZXR1cm4gdmFsdWVUb09iamVjdChfY29udGV4dCwgbV92YWx1ZSk7CkBAIC0yMzQsNzQgKzI0
MiwxMDYgQEAgTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5RGVzY3JpcHRvclNldEtleSA9IEAi
c2V0IjsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi0tIChKU1ZhbHVlICopdmFsdWVGb3JQcm9w
ZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKK3RlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdCwg
dHlwZW5hbWUgTlNTdHJpbmdGdW5jdGlvbiwgdHlwZW5hbWUgSlNWYWx1ZUZ1bmN0aW9uLCB0eXBl
bmFtZS4uLiBUeXBlcz4KK2lubGluZSBFeHBlY3RlZDxSZXN1bHQsIEpTVmFsdWVSZWY+IHBlcmZv
cm1Qcm9wZXJ0eU9wZXJhdGlvbihOU1N0cmluZ0Z1bmN0aW9uIHN0cmluZ0Z1bmN0aW9uLCBKU1Zh
bHVlRnVuY3Rpb24ganNGdW5jdGlvbiwgSlNWYWx1ZSogdmFsdWUsIGlkIHByb3BlcnR5S2V5LCBU
eXBlcy4uLiBhcmd1bWVudHMpCiB7Ci0gICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAg
IEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChbX2NvbnRleHQgSlNHbG9iYWxD
b250ZXh0UmVmXSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7CisgICAgSlNDb250ZXh0KiBjb250ZXh0
ID0gW3ZhbHVlIGNvbnRleHRdOworICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0cjsK
KyAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoW2NvbnRleHQgSlNHbG9i
YWxDb250ZXh0UmVmXSwgW3ZhbHVlIEpTVmFsdWVSZWZdLCAmZXhjZXB0aW9uKTsKICAgICBpZiAo
ZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW19jb250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4Y2Vw
dGlvbjpleGNlcHRpb25dOworICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxKU1ZhbHVlUmVmPihl
eGNlcHRpb24pOwogCi0gICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENG
U3RyaW5nKChDRlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwotICAgIEpTVmFsdWVSZWYgcmVzdWx0
ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgb2Jq
ZWN0LCBuYW1lLCAmZXhjZXB0aW9uKTsKLSAgICBKU1N0cmluZ1JlbGVhc2UobmFtZSk7Ci0gICAg
aWYgKGV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlF
eGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICBSZXN1bHQgcmVzdWx0OworICAgIC8vIElmIGl0J3Mg
YSBOU1N0cmluZyBhbHJlYWR5LCByZWR1Y2UgaW5kaXJlY3Rpb24gYW5kIGp1c3QgcGFzcyB0aGUg
TlNTdHJpbmcuCisgICAgaWYgKFtwcm9wZXJ0eUtleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBj
bGFzc11dKSB7CisgICAgICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhD
RlN0cmluZyhyZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihwcm9wZXJ0eUtleSkpOworICAg
ICAgICByZXN1bHQgPSBzdHJpbmdGdW5jdGlvbihbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZd
LCBvYmplY3QsIG5hbWUsIGFyZ3VtZW50cy4uLiwgJmV4Y2VwdGlvbik7CisgICAgICAgIEpTU3Ry
aW5nUmVsZWFzZShuYW1lKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0ID0ganNGdW5jdGlv
bihbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIFtbSlNWYWx1ZSB2YWx1ZVdp
dGhPYmplY3Q6cHJvcGVydHlLZXkgaW5Db250ZXh0OmNvbnRleHRdIEpTVmFsdWVSZWZdLCBhcmd1
bWVudHMuLi4sICZleGNlcHRpb24pOworICAgIHJldHVybiBFeHBlY3RlZDxSZXN1bHQsIEpTVmFs
dWVSZWY+KHJlc3VsdCk7Cit9CiAKLSAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1
ZVJlZjpyZXN1bHQgaW5Db250ZXh0Ol9jb250ZXh0XTsKKyNkZWZpbmUgVVNFX05TU1RSSU5HX0ZP
Ul9QUk9QRVJUWV9LRVkgKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMwMCkgfHwgKGRlZmluZWQo
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEIDwgMTEwMDAwKQorCisjaWYgVVNFX05TU1RSSU5HX0ZPUl9QUk9QRVJUWV9L
RVkKKy0gKEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihOU1N0cmluZyAqKWtleQorI2Vsc2UK
Ky0gKEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihpZClrZXkKKyNlbmRpZgoreworICAgIGF1
dG8gcmVzdWx0ID0gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uPEpTVmFsdWVSZWY+KEpTT2JqZWN0
R2V0UHJvcGVydHksIEpTT2JqZWN0R2V0UHJvcGVydHlLZXksIHNlbGYsIGtleSk7CisgICAgaWYg
KCFyZXN1bHQpCisgICAgICAgIHJldHVybiBbX2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0
aW9uOnJlc3VsdC5lcnJvcigpXTsKKworICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1Zh
bHVlUmVmOnJlc3VsdC52YWx1ZSgpIGluQ29udGV4dDpfY29udGV4dF07CiB9CiAKLS0gKHZvaWQp
c2V0VmFsdWU6KGlkKXZhbHVlIGZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQor
I2lmIFVTRV9OU1NUUklOR19GT1JfUFJPUEVSVFlfS0VZCistICh2b2lkKXNldFZhbHVlOihpZCl2
YWx1ZSBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXkKKyNlbHNlCistICh2b2lkKXNldFZhbHVl
OihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooaWQpa2V5CisjZW5kaWYKIHsKLSAgICBKU1ZhbHVlUmVm
IGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0
KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKLSAg
ICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIFtfY29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhj
ZXB0aW9uXTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAvLyBXZSBuZWVkIFVuaXQgYnVz
aW5lc3MgYmVjYXVzZSB2b2lkIGNhbid0IGJlIGFzc2lnbmVkIHRvIGluIHBlcmZvcm1Qcm9wZXJ0
eU9wZXJhdGlvbiBhbmQgSSBkb24ndCB3YW50IHRvIGR1cGxpY2F0ZSB0aGUgY29kZS4uLgorICAg
IHVzaW5nIFVuaXQgPSBzdGQ6OnR1cGxlPD47CisgICAgYXV0byBzdHJpbmdTZXRQcm9wZXJ0eSA9
IFtdIChhdXRvLi4uIGFyZ3MpIC0+IFVuaXQgeworICAgICAgICBKU09iamVjdFNldFByb3BlcnR5
KGFyZ3MuLi4pOworICAgICAgICByZXR1cm4geyB9OworICAgIH07CiAKLSAgICBKU1N0cmluZ1Jl
ZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKXByb3BlcnR5
TmFtZSk7Ci0gICAgSlNPYmplY3RTZXRQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0
UmVmXSwgb2JqZWN0LCBuYW1lLCBvYmplY3RUb1ZhbHVlKF9jb250ZXh0LCB2YWx1ZSksIDAsICZl
eGNlcHRpb24pOwotICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKLSAgICBpZiAoZXhjZXB0aW9u
KSB7Ci0gICAgICAgIFtfY29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICBh
dXRvIGpzVmFsdWVTZXRQcm9wZXJ0eSA9IFtdIChhdXRvLi4uIGFyZ3MpIC0+IFVuaXQgeworICAg
ICAgICBKU09iamVjdFNldFByb3BlcnR5S2V5KGFyZ3MuLi4pOworICAgICAgICByZXR1cm4geyB9
OworICAgIH07CisKKyAgICBhdXRvIHJlc3VsdCA9IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbjxV
bml0PihzdHJpbmdTZXRQcm9wZXJ0eSwganNWYWx1ZVNldFByb3BlcnR5LCBzZWxmLCBrZXksIG9i
amVjdFRvVmFsdWUoX2NvbnRleHQsIHZhbHVlKSwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lKTsK
KyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBbX2NvbnRleHQgbm90aWZ5RXhjZXB0aW9uOnJl
c3VsdC5lcnJvcigpXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KIAotLSAoQk9PTClkZWxl
dGVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKKyNpZiBVU0VfTlNTVFJJTkdfRk9S
X1BST1BFUlRZX0tFWQorLSAoQk9PTClkZWxldGVQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXkKKyNl
bHNlCistIChCT09MKWRlbGV0ZVByb3BlcnR5OihpZClrZXkKKyNlbmRpZgogewotICAgIEpTVmFs
dWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9P
YmplY3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUsICZleGNlcHRpb24p
OwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbX2NvbnRleHQgYm9vbEZyb21O
b3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKLQotICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0
cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsKLSAgICBC
T09MIHJlc3VsdCA9IEpTT2JqZWN0RGVsZXRlUHJvcGVydHkoW19jb250ZXh0IEpTR2xvYmFsQ29u
dGV4dFJlZl0sIG9iamVjdCwgbmFtZSwgJmV4Y2VwdGlvbik7Ci0gICAgSlNTdHJpbmdSZWxlYXNl
KG5hbWUpOwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbX2NvbnRleHQgYm9v
bEZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKLQotICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgRXhwZWN0ZWQ8Qk9PTCwgSlNWYWx1ZVJlZj4gcmVzdWx0ID0gcGVyZm9ybVByb3BlcnR5T3Bl
cmF0aW9uPEJPT0w+KEpTT2JqZWN0RGVsZXRlUHJvcGVydHksIEpTT2JqZWN0RGVsZXRlUHJvcGVy
dHlLZXksIHNlbGYsIGtleSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBbX2Nv
bnRleHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246cmVzdWx0LmVycm9yKCldOworICAgIHJldHVy
biByZXN1bHQudmFsdWUoKTsKIH0KIAotLSAoQk9PTCloYXNQcm9wZXJ0eTooTlNTdHJpbmcgKilw
cm9wZXJ0eU5hbWUKKyNpZiBVU0VfTlNTVFJJTkdfRk9SX1BST1BFUlRZX0tFWQorLSAoQk9PTClo
YXNQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXkKKyNlbHNlCistIChCT09MKWhhc1Byb3BlcnR5Oihp
ZClrZXkKKyNlbmRpZgogewotICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBKU09i
amVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4
dFJlZl0sIG1fdmFsdWUsICZleGNlcHRpb24pOwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAg
IHJldHVybiBbX2NvbnRleHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAg
ICAvLyBUaGUgQy1hcGkgZG9lc24ndCByZXR1cm4gYW4gZXhjZXB0aW9uIHZhbHVlIGZvciB0aGUg
c3RyaW5nIHZlcnNpb24gb2YgaGFzIHByb3BlcnR5LgorICAgIGF1dG8gc3RyaW5nSGFzUHJvcGVy
dHkgPSBbXSAoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1Jl
ZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqKSAtPiBCT09MIHsKKyAgICAgICAgcmV0dXJuIEpT
T2JqZWN0SGFzUHJvcGVydHkoY3R4LCBvYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgfTsKIAot
ICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJp
bmdSZWYpcHJvcGVydHlOYW1lKTsKLSAgICBCT09MIHJlc3VsdCA9IEpTT2JqZWN0SGFzUHJvcGVy
dHkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgbmFtZSk7Ci0gICAgSlNT
dHJpbmdSZWxlYXNlKG5hbWUpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgRXhwZWN0ZWQ8Qk9P
TCwgSlNWYWx1ZVJlZj4gcmVzdWx0ID0gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uPEJPT0w+KHN0
cmluZ0hhc1Byb3BlcnR5LCBKU09iamVjdEhhc1Byb3BlcnR5S2V5LCBzZWxmLCBrZXkpOworICAg
IGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gW19jb250ZXh0IGJvb2xGcm9tTm90aWZ5RXhj
ZXB0aW9uOnJlc3VsdC5lcnJvcigpXTsKKyAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7CiB9CiAK
LS0gKHZvaWQpZGVmaW5lUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHkgZGVzY3JpcHRvcjoo
aWQpZGVzY3JpcHRvcgorI2lmIFVTRV9OU1NUUklOR19GT1JfUFJPUEVSVFlfS0VZCistICh2b2lk
KWRlZmluZVByb3BlcnR5OihOU1N0cmluZyAqKWtleSBkZXNjcmlwdG9yOihpZClkZXNjcmlwdG9y
CisjZWxzZQorLSAodm9pZClkZWZpbmVQcm9wZXJ0eTooaWQpa2V5IGRlc2NyaXB0b3I6KGlkKWRl
c2NyaXB0b3IKKyNlbmRpZgogewotICAgIFtbX2NvbnRleHQgZ2xvYmFsT2JqZWN0XVtAIk9iamVj
dCJdIGludm9rZU1ldGhvZDpAImRlZmluZVByb3BlcnR5IiB3aXRoQXJndW1lbnRzOkBbIHNlbGYs
IHByb3BlcnR5LCBkZXNjcmlwdG9yIF1dOworICAgIFtbX2NvbnRleHQgZ2xvYmFsT2JqZWN0XVtA
Ik9iamVjdCJdIGludm9rZU1ldGhvZDpAImRlZmluZVByb3BlcnR5IiB3aXRoQXJndW1lbnRzOkBb
IHNlbGYsIGtleSwgZGVzY3JpcHRvciBdXTsKIH0KIAorI3VuZGVmIFVTRV9OU1NUUklOR19GT1Jf
UFJPUEVSVFlfS0VZCisKIC0gKEpTVmFsdWUgKil2YWx1ZUF0SW5kZXg6KE5TVUludGVnZXIpaW5k
ZXgKIHsKICAgICAvLyBQcm9wZXJ0aWVzIHRoYXQgYXJlIGhpZ2hlciB0aGFuIGFuIHVuc2lnbmVk
IHZhbHVlIGNhbiBob2xkIGFyZSBjb252ZXJ0ZWQgdG8gYSBkb3VibGUgdGhlbiBpbnNlcnRlZCBh
cyBhIG5vcm1hbCBwcm9wZXJ0eS4KQEAgLTM3Miw2ICs0MTIsMTEgQEAgTlNTdHJpbmcgKiBjb25z
dCBKU1Byb3BlcnR5RGVzY3JpcHRvclNldEtleSA9IEAic2V0IjsKICAgICByZXR1cm4gSlNWYWx1
ZUlzT2JqZWN0KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlKTsKIH0KIAor
LSAoQk9PTClpc1N5bWJvbAoreworICAgIHJldHVybiBKU1ZhbHVlSXNTeW1ib2woW19jb250ZXh0
IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUpOworfQorCiAtIChCT09MKWlzQXJyYXkKIHsK
ICAgICByZXR1cm4gSlNWYWx1ZUlzQXJyYXkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0s
IG1fdmFsdWUpOwpAQCAtNTU0LDEzICs1OTksNyBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVy
dHlEZXNjcmlwdG9yU2V0S2V5ID0gQCJzZXQiOwogCiAtIChKU1ZhbHVlICopb2JqZWN0Rm9yS2V5
ZWRTdWJzY3JpcHQ6KGlkKWtleQogewotICAgIGlmICghW2tleSBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dKSB7Ci0gICAgICAgIGtleSA9IFtbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6
a2V5IGluQ29udGV4dDpfY29udGV4dF0gdG9TdHJpbmddOwotICAgICAgICBpZiAoIWtleSkKLSAg
ICAgICAgICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRleHQ6X2Nv
bnRleHRdOwotICAgIH0KLQotICAgIHJldHVybiBbc2VsZiB2YWx1ZUZvclByb3BlcnR5OihOU1N0
cmluZyAqKWtleV07CisgICAgcmV0dXJuIFtzZWxmIHZhbHVlRm9yUHJvcGVydHk6a2V5XTsKIH0K
IAogLSAoSlNWYWx1ZSAqKW9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRl
eApAQCAtNTY4LDE1ICs2MDcsOSBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlw
dG9yU2V0S2V5ID0gQCJzZXQiOwogICAgIHJldHVybiBbc2VsZiB2YWx1ZUF0SW5kZXg6aW5kZXhd
OwogfQogCi0tICh2b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGZvcktleWVkU3Vic2NyaXB0OihO
U09iamVjdCA8TlNDb3B5aW5nPiAqKWtleQorLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBm
b3JLZXllZFN1YnNjcmlwdDooaWQpa2V5CiB7Ci0gICAgaWYgKCFba2V5IGlzS2luZE9mQ2xhc3M6
W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAga2V5ID0gW1tKU1ZhbHVlIHZhbHVlV2l0aE9i
amVjdDprZXkgaW5Db250ZXh0Ol9jb250ZXh0XSB0b1N0cmluZ107Ci0gICAgICAgIGlmICgha2V5
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFtzZWxmIHNldFZhbHVlOm9iamVj
dCBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXldOworICAgIFtzZWxmIHNldFZhbHVlOm9iamVj
dCBmb3JQcm9wZXJ0eTprZXldOwogfQogCiAtICh2b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGF0
SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRleApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNWYWx1ZVJlZi5jcHAKaW5kZXggNzk1NTliZTkwNzk4NzE1MWIyZmE3ZDkzMTI2NDI0NTE4
ODgxMGZkYy4uZGFjYTBlMWI0OWRkOGQ1MTJlNTY1ZGMxM2NjY2FmMmI5N2YyMDhiNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCkBAIC04Niw2ICs4Niw4IEBAIHN0
YXRpYyBib29sIGV2ZXJub3RlSGFja05lZWRlZCgpCiAgICAgICAgIHJldHVybiBrSlNUeXBlTnVt
YmVyOwogICAgIGlmIChqc1ZhbHVlLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBrSlNUeXBl
U3RyaW5nOworICAgIGlmIChqc1ZhbHVlLmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiBrSlNU
eXBlU3ltYm9sOwogICAgIEFTU0VSVChqc1ZhbHVlLmlzT2JqZWN0KCkpOwogICAgIHJldHVybiBr
SlNUeXBlT2JqZWN0OwogfQpAQCAtMTYyLDYgKzE2NCwxOCBAQCBib29sIEpTVmFsdWVJc09iamVj
dChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQogICAgIHJldHVybiB0b0pTKGV4
ZWMsIHZhbHVlKS5pc09iamVjdCgpOwogfQogCitib29sIEpTVmFsdWVJc1N5bWJvbChKU0NvbnRl
eHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4
ZWMpOworCisgICAgcmV0dXJuIHRvSlMoZXhlYywgdmFsdWUpLmlzU3ltYm9sKCk7Cit9CisKIGJv
b2wgSlNWYWx1ZUlzQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkKIHsK
ICAgICBpZiAoIWN0eCkgewpAQCAtMzIwLDYgKzMzNCwyMiBAQCBKU1ZhbHVlUmVmIEpTVmFsdWVN
YWtlTnVtYmVyKEpTQ29udGV4dFJlZiBjdHgsIGRvdWJsZSB2YWx1ZSkKICAgICByZXR1cm4gdG9S
ZWYoZXhlYywganNOdW1iZXIocHVyaWZ5TmFOKHZhbHVlKSkpOwogfQogCitKU1ZhbHVlUmVmIEpT
VmFsdWVNYWtlU3ltYm9sKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIGRlc2NyaXB0aW9u
KQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhj
dHgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfQ0FUQ0hfU0NPUEUoZXhlYy0+dm0oKSk7CisKKyAgICBKU1N0cmluZyoganNEZXNjcmlw
dGlvbiA9IGpzU3RyaW5nKGV4ZWMsIGRlc2NyaXB0aW9uID8gZGVzY3JpcHRpb24tPnN0cmluZygp
IDogU3RyaW5nKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwor
CisgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIFN5bWJvbDo6Y3JlYXRlKGV4ZWMsIGpzRGVzY3JpcHRp
b24pKTsKK30KKwogSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZVN0cmluZyhKU0NvbnRleHRSZWYgY3R4
LCBKU1N0cmluZ1JlZiBzdHJpbmcpCiB7CiAgICAgaWYgKCFjdHgpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1ZhbHVlUmVmLmgKaW5kZXggOTgxNWRlNzgzYzBhZWUwNzNlM2E0NDhiZDBjN2Nh
ZGQ0YTk1MmMwNi4uYTQyN2Q5OGI1NThmZWM5NGMzZGJlZGVjYTNlN2IwMTZhOTRmMjFiMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmgKQEAgLTQyLDYgKzQyLDcgQEAKIEBj
b25zdGFudCAgICAga0pTVHlwZU51bWJlciAgICAgQSBwcmltaXRpdmUgbnVtYmVyIHZhbHVlLgog
QGNvbnN0YW50ICAgICBrSlNUeXBlU3RyaW5nICAgICBBIHByaW1pdGl2ZSBzdHJpbmcgdmFsdWUu
CiBAY29uc3RhbnQgICAgIGtKU1R5cGVPYmplY3QgICAgIEFuIG9iamVjdCB2YWx1ZSAobWVhbmlu
ZyB0aGF0IHRoaXMgSlNWYWx1ZVJlZiBpcyBhIEpTT2JqZWN0UmVmKS4KK0Bjb25zdGFudCAgICAg
a0pTVHlwZVN5bWJvbCAgICAgQSBwcmltaXRpdmUgc3ltYm9sIHZhbHVlLgogKi8KIHR5cGVkZWYg
ZW51bSB7CiAgICAga0pTVHlwZVVuZGVmaW5lZCwKQEAgLTQ5LDcgKzUwLDggQEAgdHlwZWRlZiBl
bnVtIHsKICAgICBrSlNUeXBlQm9vbGVhbiwKICAgICBrSlNUeXBlTnVtYmVyLAogICAgIGtKU1R5
cGVTdHJpbmcsCi0gICAga0pTVHlwZU9iamVjdAorICAgIGtKU1R5cGVPYmplY3QsCisgICAga0pT
VHlwZVN5bWJvbCBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goSlNDX01BQ19UQkEpLCBpb3MoSlND
X0lPU19UQkEpKQogfSBKU1R5cGU7CiAKIC8qIQpAQCAtODAsNyArODIsNyBAQCB0eXBlZGVmIGVu
dW0gewogICAgIGtKU1R5cGVkQXJyYXlUeXBlRmxvYXQ2NEFycmF5LAogICAgIGtKU1R5cGVkQXJy
YXlUeXBlQXJyYXlCdWZmZXIsCiAgICAga0pTVHlwZWRBcnJheVR5cGVOb25lLAotfSBKU1R5cGVk
QXJyYXlUeXBlIENGX0VOVU1fQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK30gSlNUeXBlZEFycmF5
VHlwZSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAjaWZk
ZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewpAQCAtMTQ5LDYgKzE1MSwxNiBAQCBKU19FWFBP
UlQgYm9vbCBKU1ZhbHVlSXNTdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1
ZSk7CiAqLwogSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzT2JqZWN0KEpTQ29udGV4dFJlZiBjdHgs
IEpTVmFsdWVSZWYgdmFsdWUpOwogCisvKiEKK0BmdW5jdGlvbgorQGFic3RyYWN0ICAgICAgIFRl
c3RzIHdoZXRoZXIgYSBKYXZhU2NyaXB0IHZhbHVlJ3MgdHlwZSBpcyB0aGUgc3ltYm9sIHR5cGUu
CitAcGFyYW0gY3R4ICAgICAgVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KK0BwYXJhbSB2
YWx1ZSAgICBUaGUgSlNWYWx1ZSB0byB0ZXN0LgorQHJlc3VsdCAgICAgICAgIHRydWUgaWYgdmFs
dWUncyB0eXBlIGlzIHRoZSBzeW1ib2wgdHlwZSwgb3RoZXJ3aXNlIGZhbHNlLgorKi8KK0pTX0VY
UE9SVCBib29sIEpTVmFsdWVJc1N5bWJvbChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZh
bHVlKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goSlNDX01BQ19UQkEpLCBpb3MoSlNDX0lPU19U
QkEpKTsKKworCiAvKiEKIEBmdW5jdGlvbgogQGFic3RyYWN0IFRlc3RzIHdoZXRoZXIgYSBKYXZh
U2NyaXB0IHZhbHVlIGlzIGFuIG9iamVjdCB3aXRoIGEgZ2l2ZW4gY2xhc3MgaW4gaXRzIGNsYXNz
IGNoYWluLgpAQCAtMTY2LDcgKzE3OCw3IEBAIEpTX0VYUE9SVCBib29sIEpTVmFsdWVJc09iamVj
dE9mQ2xhc3MoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNDbGFzCiBAcGFy
YW0gdmFsdWUgICAgVGhlIEpTVmFsdWUgdG8gdGVzdC4KIEByZXN1bHQgICAgICAgICB0cnVlIGlm
IHZhbHVlIGlzIGFuIGFycmF5LCBvdGhlcndpc2UgZmFsc2UuCiAqLwotSlNfRVhQT1JUIGJvb2wg
SlNWYWx1ZUlzQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkgQ0ZfQVZB
SUxBQkxFKDEwXzExLCA5XzApOworSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzQXJyYXkoSlNDb250
ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEw
LjExKSwgaW9zKDkuMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTc1LDcgKzE4Nyw3IEBAIEpT
X0VYUE9SVCBib29sIEpTVmFsdWVJc0FycmF5KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYg
dmFsdWUpIENGX0FWQUlMQUJMRSgxCiBAcGFyYW0gdmFsdWUgICAgVGhlIEpTVmFsdWUgdG8gdGVz
dC4KIEByZXN1bHQgICAgICAgICB0cnVlIGlmIHZhbHVlIGlzIGEgZGF0ZSwgb3RoZXJ3aXNlIGZh
bHNlLgogKi8KLUpTX0VYUE9SVCBib29sIEpTVmFsdWVJc0RhdGUoSlNDb250ZXh0UmVmIGN0eCwg
SlNWYWx1ZVJlZiB2YWx1ZSkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzApOworSlNfRVhQT1JUIGJv
b2wgSlNWYWx1ZUlzRGF0ZShKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CiAKIC8qIQogQGZ1bmN0aW9u
CkBAIC0xODUsNyArMTk3LDcgQEAgSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzRGF0ZShKU0NvbnRl
eHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKSBDRl9BVkFJTEFCTEUoMTAKIEBwYXJhbSBleGNl
cHRpb24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBl
eGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBh
biBleGNlcHRpb24uCiBAcmVzdWx0ICAgICAgICAgICAgIEEgdmFsdWUgb2YgdHlwZSBKU1R5cGVk
QXJyYXlUeXBlIHRoYXQgaWRlbnRpZmllcyB2YWx1ZSdzIFR5cGVkIEFycmF5IHR5cGUsIG9yIGtK
U1R5cGVkQXJyYXlUeXBlTm9uZSBpZiB0aGUgdmFsdWUgaXMgbm90IGEgVHlwZWQgQXJyYXkgb2Jq
ZWN0LgogICovCi1KU19FWFBPUlQgSlNUeXBlZEFycmF5VHlwZSBKU1ZhbHVlR2V0VHlwZWRBcnJh
eVR5cGUoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTVHlwZWRBcnJh
eVR5cGUgSlNWYWx1ZUdldFR5cGVkQXJyYXlUeXBlKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVS
ZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyogQ29tcGFyaW5nIHZhbHVlcyAqLwogCkBAIC0yNTcs
NiArMjY5LDE1IEBAIEpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlQm9vbGVhbihKU0Nv
bnRleHRSZWYgY3R4LCBib29sIGJvb2xlYW4pOwogKi8KIEpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpT
VmFsdWVNYWtlTnVtYmVyKEpTQ29udGV4dFJlZiBjdHgsIGRvdWJsZSBudW1iZXIpOwogCisvKiEK
K0BmdW5jdGlvbgorQGFic3RyYWN0ICAgICAgICAgICAgQ3JlYXRlcyBhIEphdmFTY3JpcHQgdmFs
dWUgb2YgdGhlIHN5bWJvbCB0eXBlLgorQHBhcmFtIGN0eCAgICAgICAgICAgVGhlIGV4ZWN1dGlv
biBjb250ZXh0IHRvIHVzZS4KK0BwYXJhbSBkZXNjcmlwdGlvbiAgIEEgZGVzY3JpcHRpb24gb2Yg
dGhlIG5ld2x5IGNyZWF0ZWQgc3ltYm9sIHZhbHVlLgorQHJlc3VsdCAgICAgICAgICAgICAgQSB1
bmlxdWUgSlNWYWx1ZSBvZiB0aGUgc3ltYm9sIHR5cGUsIHdob3NlIGRlc2NyaXB0aW9uIG1hdGNo
ZXMgdGhlIG9uZSBwcm92aWRlZC4KKyovCitKU19FWFBPUlQgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFr
ZVN5bWJvbChKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBkZXNjcmlwdGlvbikgSlNDX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KEpTQ19NQUNfVEJBKSwgaW9zKEpTQ19JT1NfVEJBKSk7CisKIC8q
IQogQGZ1bmN0aW9uCiBAYWJzdHJhY3QgICAgICAgQ3JlYXRlcyBhIEphdmFTY3JpcHQgdmFsdWUg
b2YgdGhlIHN0cmluZyB0eXBlLgpAQCAtMjc2LDcgKzI5Nyw3IEBAIEpTX0VYUE9SVCBKU1ZhbHVl
UmVmIEpTVmFsdWVNYWtlU3RyaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHN0cmlu
Zyk7CiAgQHBhcmFtIHN0cmluZyAgIFRoZSBKU1N0cmluZyBjb250YWluaW5nIHRoZSBKU09OIHN0
cmluZyB0byBiZSBwYXJzZWQuCiAgQHJlc3VsdCAgICAgICAgIEEgSlNWYWx1ZSBjb250YWluaW5n
IHRoZSBwYXJzZWQgdmFsdWUsIG9yIE5VTEwgaWYgdGhlIGlucHV0IGlzIGludmFsaWQuCiAgKi8K
LUpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlRnJvbUpTT05TdHJpbmcoSlNDb250ZXh0
UmVmIGN0eCwgSlNTdHJpbmdSZWYgc3RyaW5nKSBDRl9BVkFJTEFCTEUoMTBfNywgN18wKTsKK0pT
X0VYUE9SVCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlRnJvbUpTT05TdHJpbmcoSlNDb250ZXh0UmVm
IGN0eCwgSlNTdHJpbmdSZWYgc3RyaW5nKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNyks
IGlvcyg3LjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC0yODcsNyArMzA4LDcgQEAgSlNfRVhQ
T1JUIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VGcm9tSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4
LCBKU1N0cmluZ1JlZiBzdHIKICBAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFs
dWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBp
ZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1bHQgICAgICAg
ICBBIEpTU3RyaW5nIHdpdGggdGhlIHJlc3VsdCBvZiBzZXJpYWxpemF0aW9uLCBvciBOVUxMIGlm
IGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uCiAgKi8KLUpTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU1Zh
bHVlQ3JlYXRlSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlLCB1
bnNpZ25lZCBpbmRlbnQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzcs
IDdfMCk7CitKU19FWFBPUlQgSlNTdHJpbmdSZWYgSlNWYWx1ZUNyZWF0ZUpTT05TdHJpbmcoSlND
b250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgdW5zaWduZWQgaW5kZW50LCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC43KSwgaW9zKDcuMCkp
OwogCiAvKiBDb252ZXJ0aW5nIHRvIHByaW1pdGl2ZSB2YWx1ZXMgKi8KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUuaAppbmRleCBlOWM3NWRhMDc3MmM1NTQ0
MDE5YTRhY2RmNGM5MDU1YzRjZWY0NDdjLi43ZDJmMGE3MDdjNTlhY2RiZDdhYjFiNTBjZjQ3MjIy
N2IyYzA1MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVh
bE1hY2hpbmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hp
bmUuaApAQCAtMzksNyArMzksNyBAQAogIG9mIHRoZSB0aHJlYWQgaXQgd2FzIGluaXRpYWxpemVk
IG9uLiBDdXJyZW50bHksIHRoZXJlIGlzIG5vIEFQSSB0byBjaGFuZ2UgYQogIEpTVmlydHVhbE1h
Y2hpbmUncyBydW4gbG9vcCBvbmNlIGl0IGhhcyBiZWVuIGluaXRpYWxpemVkLgogKi8KLU5TX0NM
QVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCitKU0NfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeCgxMC45
KSwgaW9zKDcuMCkpCiBAaW50ZXJmYWNlIEpTVmlydHVhbE1hY2hpbmUgOiBOU09iamVjdAogCiAv
KiEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvV2ViS2l0QXZhaWxhYmls
aXR5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL1dlYktpdEF2YWlsYWJpbGl0eS5oCmlu
ZGV4IDgyMjc1MjAzZGM5ODAxODMzMWE5MWJiOTViOWQ2ZGIxNmU1OWY5YWEuLjBmNmFmYjZiMWRi
ZDYxOTgxZGVkZWQwYTFlNWIyNGM4ZmRjYjUzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvV2ViS2l0QXZhaWxhYmlsaXR5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9XZWJLaXRBdmFpbGFiaWxpdHkuaApAQCAtNjksMTUgKzY5LDEyIEBACiAjZW5kaWYg
LyogIVRBUkdFVF9PU19JUEhPTkUgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8
IDEwMTEwMCAqLwogCiAjaWYgZGVmaW5lZChCVUlMRElOR19HVEtfXykKLSN1bmRlZiBDRl9BVkFJ
TEFCTEUKLSNkZWZpbmUgQ0ZfQVZBSUxBQkxFKF9tYWMsIF9pb3MpCi0jdW5kZWYgQ0ZfRU5VTV9B
VkFJTEFCTEUKLSNkZWZpbmUgQ0ZfRU5VTV9BVkFJTEFCTEUoX21hYywgX2lvcykKKyN1bmRlZiBK
U0NfQVBJX0FWQUlMQUJMRQorI2RlZmluZSBKU0NfQVBJX0FWQUlMQUJMRSguLi4pCiAjZW5kaWYK
IAogI2Vsc2UKLSNkZWZpbmUgQ0ZfQVZBSUxBQkxFKF9tYWMsIF9pb3MpCi0jZGVmaW5lIENGX0VO
VU1fQVZBSUxBQkxFKF9tYWMsIF9pb3MpCisjZGVmaW5lIEpTQ19BUElfQVZBSUxBQkxFKC4uLikK
ICNlbmRpZgogCiAjZW5kaWYgLyogX19XZWJLaXRBdmFpbGFiaWxpdHlfXyAqLwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9DdXJyZW50VGhpc0luc2lkZUJsb2Nr
R2V0dGVyVGVzdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VycmVudFRo
aXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0KaW5kZXggNTMxODhmYmE4OGY5NTQyN2M4YWU5MzM5
YWFjODhkMGM2OGExN2ViMS4uYmQ3ZThhNjg2MDdlNWY4ZGQ3OGQ5NDZiZGRhNzRhNjFkMjVmN2Uw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9DdXJyZW50VGhp
c0luc2lkZUJsb2NrR2V0dGVyVGVzdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL0N1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lm1tCkBAIC0yMyw2ICsyMyw3
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkN1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lmgi
CiAKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy9DdXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuYyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmMKaW5k
ZXggYWM1NDcxYTY3NDFiZmY5M2M3MDBiZjNiM2FhYzZlZDM4NzQ5ZjBiZi4uOWZmZTIzM2Y0Yjc5
NmY1YTBiOTViMzc0YTQ4M2IwMTRlZDViZGQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy9DdXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuYworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0N1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVzdC5j
CkBAIC0yMyw2ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJDdXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuaCIKIAogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmUHJpdmF0ZS5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9EYXRlVGVzdHMubW0gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL0RhdGVUZXN0cy5tbQppbmRleCAyYmRhM2FkYTZiMTU4ZTAxMDhh
ZWM1ZjQyZTc2NTM5NzMwZWMyZWQ5Li42NjUyMTc3ZGU0MTdiMTJlZTk0ZGU4ODNiOGZiMGJkNzA5
ZGQ2NzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0RhdGVU
ZXN0cy5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0RhdGVUZXN0cy5t
bQpAQCAtMjMsNiArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKKyNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRGF0ZVRlc3RzLmgiCiAjaW1wb3J0
IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy9KU0V4cG9ydFRlc3RzLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS90ZXN0cy9KU0V4cG9ydFRlc3RzLm1tCmluZGV4IDFjZWM5Mzk3OWM0MTZmNGMwZjA0OTA1
ZWU3NDc2ZTc4NjRkODQyNTIuLmRmZGM5NWY0N2JjNzc1YjA4YjM2NjczZDBiYmJmZTZiY2UzNDFi
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNFeHBvcnRU
ZXN0cy5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTRXhwb3J0VGVz
dHMubW0KQEAgLTIzLDYgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCisjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkpTRXhwb3J0VGVzdHMuaCIK
IAogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL0pTTm9kZS5jIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy9KU05vZGUuYwppbmRleCBkMGEwZGMzZWM3MjM3MjU3ZmExODBkMDUxNGY3NGM2YWQyZTRiNWI3
Li5iYzAwNDBhZTZiYTQwOTg1MzgzOGNhZWFkNmEyMzg0ZWM5OTkwMDQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZS5jCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNOb2RlLmMKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAogICovCiAKLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlICJjb25m
aWcuaCIKIAogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNOb2RlTGlzdC5jIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU05vZGVMaXN0LmMKaW5kZXggZjAzN2Uw
OTRhMDllMWEyMjYwNDRlZWQxZjIzZDBhNTE4NjFhM2Y0Yi4uOTlhMzI5NTE4ZTZhOWExY2ZiMTI2
NzY0NzM5YTBiNjljZmE1ZDQwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy9KU05vZGVMaXN0LmMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy9KU05vZGVMaXN0LmMKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAK
LSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1
ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9kZS5jIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS90ZXN0cy9Ob2RlLmMKaW5kZXggZGI2ODdlOTUyZjFhOWQ4YzEzNGI5MDY3N2QyOWE2NDA2
ZDhkYjFhMi4uOGY3ZDA2YjJhYTRhZGUyNjlkNjFlZmM2MWMwMTg0Y2NjMzE5NWEwNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Ob2RlLmMKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Ob2RlLmMKQEAgLTIzLDcgKzIzLDkgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAogICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOb2RlLmgi
CisKICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Ob2RlTGlzdC5jIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Ob2RlTGlzdC5jCmluZGV4IDY5ZjRjZDVjNDg3MzEyYmQ2
Mzk5NjM0ZmIwNjg0YTEyMjY2NGRjMTguLjIyZDM4N2MwZDQyMjZmYmFkMTE5N2M2NDgzMWNkNTdh
ZjMxYWZkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9k
ZUxpc3QuYworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL05vZGVMaXN0LmMK
QEAgLTIzLDYgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKKyNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogCiAjaW5jbHVkZSA8c3RkbGliLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL21pbmlkb20uYyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvbWluaWRvbS5jCmluZGV4IDAyYjQxYTljN2Y5ZGEx
MTNiMDAzZDRmOTE5YTQyMDhkMzg5Yjc4YmQuLjQxZjE4Y2RmNzI5MDQzNjkwY2ZlNzczYmE0MGQ4
YjViNDRjYTcwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
bWluaWRvbS5jCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvbWluaWRvbS5j
CkBAIC0yNCw3ICsyNCw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJKU0NvbnRleHRS
ZWYuaCIKICNpbmNsdWRlICJKU05vZGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy90ZXN0YXBpLmMKaW5kZXggN2JlY2RmZTA0MTE1YmY5NDg5ZWY4NDE5N2MxNjcxYzViODNiYTRl
Mi4uODZkMWMyNWMyN2U5NTJkNjFhYjllNDFiZTE0NTc0MTBmYmM0OGY0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgImNv
bmZpZy5oIgogCiAjaWYgVVNFKENGKQogI2luY2x1ZGUgIkphdmFTY3JpcHRDb3JlLmgiCkBAIC02
Niw2ICs2Niw4IEBACiB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKHZvaWQpOwogI2VuZGlmCiAKK2lu
dCB0ZXN0Q0FQSVZpYUNwcCh2b2lkKTsKKwogYm9vbCBhc3NlcnRUcnVlKGJvb2wgdmFsdWUsIGNv
bnN0IGNoYXIqIG1lc3NhZ2UpOwogCiBzdGF0aWMgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQ7
CkBAIC0xMzYxLDYgKzEzNjMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQog
I2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgdGVzdE9iamVjdGl2ZUNBUEkoKTsKICNlbmRp
ZgorICAgIFJFTEVBU0VfQVNTRVJUKCF0ZXN0Q0FQSVZpYUNwcCgpKTsKIAogICAgIGNvbnN0IGNo
YXIgKnNjcmlwdFBhdGggPSAidGVzdGFwaS5qcyI7CiAgICAgaWYgKGFyZ2MgPiAxKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDk0
NGFkMTA4YTZkN2I5MWUxMzUwZmY5MDNlMTViNmMxZDBjZGNmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmNwcApAQCAtMCwwICsxLDM4
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkFQSUNh
c3QuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCisjaW5jbHVkZSAiSmF2YVNjcmlwdENvcmUuaCIKKworI2luY2x1ZGUgPHd0Zi9EYXRhTG9n
Lmg+CisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitleHRlcm4gIkMiIGludCB0ZXN0Q0FQSVZp
YUNwcCgpOworCitjbGFzcyBBUElTdHJpbmcgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFQ
SVN0cmluZyk7CitwdWJsaWM6CisKKyAgICBBUElTdHJpbmcoY29uc3QgY2hhciogc3RyaW5nKQor
ICAgICAgICA6IG1fc3RyaW5nKEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHN0cmluZykp
CisgICAgeworICAgIH0KKworICAgIH5BUElTdHJpbmcoKQorICAgIHsKKyAgICAgICAgSlNTdHJp
bmdSZWxlYXNlKG1fc3RyaW5nKTsKKyAgICB9CisKKyAgICBvcGVyYXRvciBKU1N0cmluZ1JlZigp
IHsgcmV0dXJuIG1fc3RyaW5nOyB9CisKK3ByaXZhdGU6CisgICAgSlNTdHJpbmdSZWYgbV9zdHJp
bmc7Cit9OworCitjbGFzcyBBUElDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShB
UElDb250ZXh0KTsKK3B1YmxpYzoKKworICAgIEFQSUNvbnRleHQoKQorICAgICAgICA6IG1fY29u
dGV4dChKU0dsb2JhbENvbnRleHRDcmVhdGUobnVsbHB0cikpCisgICAgeworICAgICAgICBBUElT
dHJpbmcgcHJpbnQoInByaW50Iik7CisgICAgICAgIEpTT2JqZWN0UmVmIHByaW50RnVuY3Rpb24g
PSBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayhtX2NvbnRleHQsIHByaW50LCBbXSAo
SlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmLCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiopIHsKKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyBpKyspCisg
ICAgICAgICAgICAgICAgZGF0YUxvZyh0b0pTKHRvSlMoY3R4KSwgYXJndW1lbnRzW2ldKSk7Cisg
ICAgICAgICAgICBkYXRhTG9nTG4oKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjdHgpOworICAgICAgICB9KTsKKworICAgICAgICBKU09iamVjdFNldFByb3BlcnR5
KG1fY29udGV4dCwgSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KG1fY29udGV4dCksIHByaW50LCBw
cmludEZ1bmN0aW9uLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUsIG51bGxwdHIpOworICAgIH0K
KworICAgIH5BUElDb250ZXh0KCkKKyAgICB7CisgICAgICAgIEpTR2xvYmFsQ29udGV4dFJlbGVh
c2UobV9jb250ZXh0KTsKKyAgICB9CisKKyAgICBvcGVyYXRvciBKU0dsb2JhbENvbnRleHRSZWYo
KSB7IHJldHVybiBtX2NvbnRleHQ7IH0KKworcHJpdmF0ZToKKyAgICBKU0dsb2JhbENvbnRleHRS
ZWYgbV9jb250ZXh0OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIEFQSVZlY3Rv
ciA6IHByb3RlY3RlZCBWZWN0b3I8VD4geworICAgIHVzaW5nIEJhc2UgPSBWZWN0b3I8VD47Citw
dWJsaWM6CisgICAgQVBJVmVjdG9yKEFQSUNvbnRleHQmIGNvbnRleHQpCisgICAgICAgIDogQmFz
ZSgpCisgICAgICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgeworICAgIH0KKworICAgIH5B
UElWZWN0b3IoKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvJiB2YWx1ZSA6ICp0aGlzKQorICAg
ICAgICAgICAgSlNWYWx1ZVVucHJvdGVjdChtX2NvbnRleHQsIHZhbHVlKTsKKyAgICB9CisKKyAg
ICB1c2luZyBWZWN0b3I8VD46Om9wZXJhdG9yW107CisgICAgdXNpbmcgVmVjdG9yPFQ+OjpzaXpl
OworICAgIHVzaW5nIFZlY3RvcjxUPjo6YmVnaW47CisgICAgdXNpbmcgVmVjdG9yPFQ+OjplbmQ7
CisgICAgdXNpbmcgdHlwZW5hbWUgVmVjdG9yPFQ+OjppdGVyYXRvcjsKKworICAgIHZvaWQgYXBw
ZW5kKFQgdmFsdWUpCisgICAgeworICAgICAgICBKU1ZhbHVlUHJvdGVjdChtX2NvbnRleHQsIHZh
bHVlKTsKKyAgICAgICAgQmFzZTo6YXBwZW5kKFdURk1vdmUodmFsdWUpKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgQVBJQ29udGV4dCYgbV9jb250ZXh0OworfTsKKworY2xhc3MgVGVzdEFQSSB7
CitwdWJsaWM6CisgICAgaW50IHJ1bigpOworcHJpdmF0ZToKKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lLi4uIFN0cmluZ3M+CisgICAgYm9vbCBjaGVjayhib29sIGNvbmRpdGlvbiwgU3RyaW5ncy4u
LiBtZXNzYWdlKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEpTRnVuY3RvciwgdHlwZW5hbWUg
QVBJRnVuY3Rvcj4KKyAgICB2b2lkIGNoZWNrSlNBbmRBUElNYXRjaChjb25zdCBKU0Z1bmN0b3Im
LCBjb25zdCBBUElGdW5jdG9yJiwgY29uc3QgY2hhciogZGVzY3JpcHRpb24pOworCisgICAgLy8g
SGVscGVyIG1ldGhvZHMuCisgICAgdXNpbmcgU2NyaXB0UmVzdWx0ID0gRXhwZWN0ZWQ8SlNWYWx1
ZVJlZiwgSlNWYWx1ZVJlZj47CisgICAgU2NyaXB0UmVzdWx0IGV2YWx1YXRlU2NyaXB0KGNvbnN0
IGNoYXIqIHNjcmlwdCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCA9IG51bGxwdHIpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CisgICAgU2NyaXB0UmVzdWx0IGNhbGxG
dW5jdGlvbihjb25zdCBjaGFyKiBmdW5jdGlvblNvdXJjZSwgQXJndW1lbnRUeXBlcy4uLiBhcmd1
bWVudHMpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CisgICAgYm9v
bCBmdW5jdGlvblJldHVybnNUcnVlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uU291cmNlLCBBcmd1bWVu
dFR5cGVzLi4uIGFyZ3VtZW50cyk7CisKKyAgICAvLyBXYXlzIHRvIG1ha2Ugc2V0cyBvZiBpbnRl
cmVzdGluZyB0aGluZ3MuCisgICAgQVBJVmVjdG9yPEpTT2JqZWN0UmVmPiBpbnRlcmVzdGluZ09i
amVjdHMoKTsKKyAgICBBUElWZWN0b3I8SlNWYWx1ZVJlZj4gaW50ZXJlc3RpbmdLZXlzKCk7CisK
KyAgICBpbnQgZmFpbGVkIHsgMCB9OworICAgIEFQSUNvbnRleHQgY29udGV4dDsKK307CisKK2lu
dCB0ZXN0Q0FQSVZpYUNwcCgpCit7CisgICAgVGVzdEFQSSB0ZXN0ZXI7CisgICAgcmV0dXJuIHRl
c3Rlci5ydW4oKTsKK30KKworVGVzdEFQSTo6U2NyaXB0UmVzdWx0IFRlc3RBUEk6OmV2YWx1YXRl
U2NyaXB0KGNvbnN0IGNoYXIqIHNjcmlwdCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCkKK3sKKyAg
ICBBUElTdHJpbmcgc2NyaXB0QVBJU3RyaW5nKHNjcmlwdCk7CisgICAgSlNWYWx1ZVJlZiBleGNl
cHRpb24gPSBudWxscHRyOworCisgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU0V2YWx1YXRlU2Ny
aXB0KGNvbnRleHQsIHNjcmlwdEFQSVN0cmluZywgdGhpc09iamVjdCwgbnVsbHB0ciwgMCwgJmV4
Y2VwdGlvbik7CisgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8
SlNWYWx1ZVJlZj4oZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gU2NyaXB0UmVzdWx0KHJlc3VsdCk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CitUZXN0QVBJOjpTY3Jp
cHRSZXN1bHQgVGVzdEFQSTo6Y2FsbEZ1bmN0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uU291cmNl
LCBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBKU1ZhbHVlUmVmIGZ1bmN0aW9u
OworICAgIHsKKyAgICAgICAgU2NyaXB0UmVzdWx0IGZ1bmN0aW9uUmVzdWx0ID0gZXZhbHVhdGVT
Y3JpcHQoZnVuY3Rpb25Tb3VyY2UpOworICAgICAgICBpZiAoIWZ1bmN0aW9uUmVzdWx0KQorICAg
ICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uUmVzdWx0OworICAgICAgICBmdW5jdGlvbiA9IGZ1bmN0
aW9uUmVzdWx0LnZhbHVlKCk7CisgICAgfQorCisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBu
dWxscHRyOworICAgIGlmIChKU09iamVjdFJlZiBmdW5jdGlvbk9iamVjdCA9IEpTVmFsdWVUb09i
amVjdChjb250ZXh0LCBmdW5jdGlvbiwgJmV4Y2VwdGlvbikpIHsKKyAgICAgICAgSlNWYWx1ZVJl
ZiBhcmdzW3NpemVvZi4uLihhcmd1bWVudHMpXSB7IGFyZ3VtZW50cy4uLiB9OworICAgICAgICBK
U1ZhbHVlUmVmIHJlc3VsdCA9IEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oY29udGV4dCwgZnVuY3Rp
b25PYmplY3QsIGZ1bmN0aW9uT2JqZWN0LCBzaXplb2YuLi4oYXJndW1lbnRzKSwgYXJncywgJmV4
Y2VwdGlvbik7CisgICAgICAgIGlmICghZXhjZXB0aW9uKQorICAgICAgICAgICAgcmV0dXJuIFNj
cmlwdFJlc3VsdChyZXN1bHQpOworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUKGV4Y2VwdGlv
bik7CisgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8SlNWYWx1ZVJlZj4oZXhjZXB0aW9uKTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KK2Jvb2wgVGVzdEFQSTo6ZnVuY3Rp
b25SZXR1cm5zVHJ1ZShjb25zdCBjaGFyKiBmdW5jdGlvblNvdXJjZSwgQXJndW1lbnRUeXBlcy4u
LiBhcmd1bWVudHMpCit7CisgICAgSlNWYWx1ZVJlZiB0cnVlVmFsdWUgPSBKU1ZhbHVlTWFrZUJv
b2xlYW4oY29udGV4dCwgdHJ1ZSk7CisgICAgU2NyaXB0UmVzdWx0IHJlc3VsdCA9IGNhbGxGdW5j
dGlvbihmdW5jdGlvblNvdXJjZSwgYXJndW1lbnRzLi4uKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBKU1ZhbHVlSXNTdHJpY3RFcXVhbChjb250
ZXh0LCB0cnVlVmFsdWUsIHJlc3VsdC52YWx1ZSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUu
Li4gU3RyaW5ncz4KK2Jvb2wgVGVzdEFQSTo6Y2hlY2soYm9vbCBjb25kaXRpb24sIFN0cmluZ3Mu
Li4gbWVzc2FnZXMpCit7CisgICAgaWYgKCFjb25kaXRpb24pIHsKKyAgICAgICAgZGF0YUxvZ0xu
KG1lc3NhZ2VzLi4uLCAiOiBGQUlMRUQiKTsKKyAgICAgICAgZmFpbGVkKys7CisgICAgfSBlbHNl
CisgICAgICAgIGRhdGFMb2dMbihtZXNzYWdlcy4uLiwgIjogUEFTU0VEIik7CisKKyAgICByZXR1
cm4gY29uZGl0aW9uOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0Z1bmN0b3IsIHR5cGVuYW1l
IEFQSUZ1bmN0b3I+Cit2b2lkIFRlc3RBUEk6OmNoZWNrSlNBbmRBUElNYXRjaChjb25zdCBKU0Z1
bmN0b3ImIGpzRnVuY3RvciwgY29uc3QgQVBJRnVuY3RvciYgYXBpRnVuY3RvciwgY29uc3QgY2hh
ciogZGVzY3JpcHRpb24pCit7CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOwor
ICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gYXBpRnVuY3RvcigmZXhjZXB0aW9uKTsKKyAgICBTY3Jp
cHRSZXN1bHQganNSZXN1bHQgPSBqc0Z1bmN0b3IoKTsKKyAgICBpZiAoIWpzUmVzdWx0KSB7Cisg
ICAgICAgIGNoZWNrKGV4Y2VwdGlvbiwgIkpTIGFuZCBBUEkgY2FsbHMgc2hvdWxkIGJvdGggdGhy
b3cgYW4gZXhjZXB0aW9uIHdoaWxlICIsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgY2hlY2soZnVu
Y3Rpb25SZXR1cm5zVHJ1ZSgiKGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEuY29uc3RydWN0b3Ig
PT09IGIuY29uc3RydWN0b3I7IH0pIiwgZXhjZXB0aW9uLCBqc1Jlc3VsdC5lcnJvcigpKSwgIkpT
IGFuZCBBUEkgY2FsbHMgc2hvdWxkIGJvdGggdGhyb3cgdGhlIHNhbWUgZXhjZXB0aW9uIHdoaWxl
ICIsIGRlc2NyaXB0aW9uKTsKKyAgICB9IGVsc2UgeworICAgICAgICBjaGVjayghZXhjZXB0aW9u
LCAiSlMgYW5kIEFQSSBjYWxscyBzaG91bGQgYm90aCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uIHdo
aWxlICIsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgY2hlY2soSlNWYWx1ZUlzU3RyaWN0RXF1YWwo
Y29udGV4dCwgcmVzdWx0LCBqc1Jlc3VsdC52YWx1ZSgpKSwgIkpTIHJlc3VsdCBhbmQgQVBJIGNh
bGxzIHNob3VsZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUgd2hpbGUgIiwgZGVzY3JpcHRpb24pOwor
ICAgIH0KK30KKworQVBJVmVjdG9yPEpTT2JqZWN0UmVmPiBUZXN0QVBJOjppbnRlcmVzdGluZ09i
amVjdHMoKQoreworICAgIEFQSVZlY3RvcjxKU09iamVjdFJlZj4gcmVzdWx0KGNvbnRleHQpOwor
ICAgIEpTT2JqZWN0UmVmIGFycmF5ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGV2YWx1YXRl
U2NyaXB0KAorICAgICAgICAiW3t9LCBbXSwgeyBbU3ltYm9sLml0ZXJhdG9yXTogMSB9LCBuZXcg
RGF0ZSgpLCBuZXcgU3RyaW5nKCdzdHInKSwgbmV3IE1hcCgpLCBuZXcgU2V0KCksIG5ldyBXZWFr
TWFwKCksIG5ldyBXZWFrU2V0KCksIG5ldyBFcnJvcigpLCBuZXcgTnVtYmVyKDQyKSwgbmV3IEJv
b2xlYW4oKSwgeyBnZXQgbGVuZ3RoKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSB9XTsiKS52YWx1
ZSgpLCBudWxscHRyKTsKKworICAgIEFQSVN0cmluZyBsZW5ndGhTdHJpbmcoImxlbmd0aCIpOwor
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBKU09iamVjdEdl
dFByb3BlcnR5KGNvbnRleHQsIGFycmF5LCBsZW5ndGhTdHJpbmcsIG51bGxwdHIpLCBudWxscHRy
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAg
SlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIEpTT2JqZWN0R2V0
UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIGFycmF5LCBpLCBudWxscHRyKSwgbnVsbHB0cik7Cisg
ICAgICAgIEFTU0VSVChvYmplY3QpOworICAgICAgICByZXN1bHQuYXBwZW5kKG9iamVjdCk7Cisg
ICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQVBJVmVjdG9yPEpTVmFsdWVSZWY+IFRl
c3RBUEk6OmludGVyZXN0aW5nS2V5cygpCit7CisgICAgQVBJVmVjdG9yPEpTVmFsdWVSZWY+IHJl
c3VsdChjb250ZXh0KTsKKyAgICBKU09iamVjdFJlZiBhcnJheSA9IEpTVmFsdWVUb09iamVjdChj
b250ZXh0LCBldmFsdWF0ZVNjcmlwdCgiW3t9LCBbXSwgMSwgU3ltYm9sLml0ZXJhdG9yLCAnbGVu
Z3RoJ10iKS52YWx1ZSgpLCBudWxscHRyKTsKKworICAgIEFQSVN0cmluZyBsZW5ndGhTdHJpbmco
Imxlbmd0aCIpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0
LCBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGFycmF5LCBsZW5ndGhTdHJpbmcsIG51bGxw
dHIpLCBudWxscHRyKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHlBdEluZGV4
KGNvbnRleHQsIGFycmF5LCBpLCBudWxscHRyKTsKKyAgICAgICAgQVNTRVJUKHZhbHVlKTsKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZCh2YWx1ZSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworaW50IFRlc3RBUEk6OnJ1bigpCit7CisgICAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKKyAg
ICBkYXRhTG9nTG4oIlN0YXJ0aW5nIEMtQVBJIHRlc3RzIGluIEMrKyIpOworICAgIGNvbnN0IGNo
YXIqIGlzU3ltYm9sRnVuY3Rpb24gPSAiKGZ1bmN0aW9uIGlzU3ltYm9sKHN5bWJvbCkgeyByZXR1
cm4gdHlwZW9mKHN5bWJvbCkgPT09ICdzeW1ib2wnOyB9KSI7CisgICAgY29uc3QgY2hhciogZ2V0
RnVuY3Rpb24gPSAiKGZ1bmN0aW9uIGdldChvYmplY3QsIGtleSkgeyByZXR1cm4gb2JqZWN0W2tl
eV07IH0pIjsKKyAgICBjb25zdCBjaGFyKiBzZXRGdW5jdGlvbiA9ICIoZnVuY3Rpb24gc2V0KG9i
amVjdCwga2V5LCB2YWx1ZSkgeyBvYmplY3Rba2V5XSA9IHZhbHVlOyB9KSI7CisgICAgY29uc3Qg
Y2hhciogaGFzRnVuY3Rpb24gPSAiKGZ1bmN0aW9uIGhhcyhvYmplY3QsIGtleSkgeyByZXR1cm4g
a2V5IGluIG9iamVjdDsgfSkiOworICAgIGNvbnN0IGNoYXIqIGRlbGV0ZUZ1bmN0aW9uID0gIihm
dW5jdGlvbiBkZWwob2JqZWN0LCBrZXkpIHsgcmV0dXJuIGRlbGV0ZSBvYmplY3Rba2V5XTsgfSki
OworCisgICAgeworICAgICAgICAvLyBDYW4ndCBjYWxsIFN5bWJvbCBhcyBhIGNvbnN0cnVjdG9y
IHNpbmNlIGl0J3Mgbm90IHN1YmNsYXNzYWJsZS4KKyAgICAgICAgYXV0byByZXN1bHQgPSBldmFs
dWF0ZVNjcmlwdCgiU3ltYm9sKCdkb3BlJyk7Iik7CisgICAgICAgIGNoZWNrKEpTVmFsdWVHZXRU
eXBlKGNvbnRleHQsIHJlc3VsdC52YWx1ZSgpKSA9PSBrSlNUeXBlU3ltYm9sLCAiZG9wZSBnZXQg
dHlwZSBpcyBhIHN5bWJvbCIpOworICAgICAgICBjaGVjayhKU1ZhbHVlSXNTeW1ib2woY29udGV4
dCwgcmVzdWx0LnZhbHVlKCkpLCAiZG9wZSBpcyBhIHN5bWJvbCIpOworICAgIH0KKworICAgIHsK
KyAgICAgICAgQVBJU3RyaW5nIGRlc2NyaXB0aW9uKCJkb3BlIik7CisgICAgICAgIEpTVmFsdWVS
ZWYgc3ltYm9sID0gSlNWYWx1ZU1ha2VTeW1ib2woY29udGV4dCwgZGVzY3JpcHRpb24pOworICAg
ICAgICBjaGVjayhmdW5jdGlvblJldHVybnNUcnVlKGlzU3ltYm9sRnVuY3Rpb24sIHN5bWJvbCks
ICJKU1ZhbHVlTWFrZVN5bWJvbCBtYWtlcyBhIHN5bWJvbCB2YWx1ZSIpOworICAgIH0KKworICAg
IHsKKyAgICAgICAgYXV0byBvYmplY3RzID0gaW50ZXJlc3RpbmdPYmplY3RzKCk7CisgICAgICAg
IGF1dG8ga2V5cyA9IGludGVyZXN0aW5nS2V5cygpOworCisgICAgICAgIGZvciAoYXV0byYgb2Jq
ZWN0IDogb2JqZWN0cykgeworICAgICAgICAgICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzKSB7Cisg
ICAgICAgICAgICAgICAgY2hlY2tKU0FuZEFQSU1hdGNoKAorICAgICAgICAgICAgICAgICAgICBb
Jl0geworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxGdW5jdGlvbihnZXRGdW5j
dGlvbiwgb2JqZWN0LCBrZXkpOworICAgICAgICAgICAgICAgICAgICB9LCBbJl0gKEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT2JqZWN0
R2V0UHJvcGVydHlLZXkoY29udGV4dCwgb2JqZWN0LCBrZXksIGV4Y2VwdGlvbik7CisgICAgICAg
ICAgICAgICAgICAgIH0sICJjaGVja2luZyBnZXQgcHJvcGVydHkga2V5cyIpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgeworICAgICAgICBhdXRvIGpzT2JqZWN0cyA9
IGludGVyZXN0aW5nT2JqZWN0cygpOworICAgICAgICBhdXRvIGFwaU9iamVjdHMgPSBpbnRlcmVz
dGluZ09iamVjdHMoKTsKKyAgICAgICAgYXV0byBrZXlzID0gaW50ZXJlc3RpbmdLZXlzKCk7CisK
KyAgICAgICAgSlNWYWx1ZVJlZiB0aGVBbnN3ZXIgPSBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0
LCA0Mik7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwganNPYmplY3RzLnNpemUoKTsg
aSsrKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGtleSA6IGtleXMpIHsKKyAgICAgICAgICAg
ICAgICBKU09iamVjdFJlZiBqc09iamVjdCA9IGpzT2JqZWN0c1tpXTsKKyAgICAgICAgICAgICAg
ICBKU09iamVjdFJlZiBhcGlPYmplY3QgPSBhcGlPYmplY3RzW2ldOworICAgICAgICAgICAgICAg
IGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oc2V0RnVuY3Rpb24sIGpzT2JqZWN0
LCBrZXksIHRoZUFuc3dlcik7CisgICAgICAgICAgICAgICAgICAgIH0gLCBbJl0gKEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3RTZXRQcm9w
ZXJ0eUtleShjb250ZXh0LCBhcGlPYmplY3QsIGtleSwgdGhlQW5zd2VyLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZU5vbmUsIGV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisgICAgICAgICAgICAgICAgICAgIH0sICJz
ZXR0aW5nIHByb3BlcnR5IGtleXMgdG8gdGhlIGFuc3dlciIpOworICAgICAgICAgICAgICAgIC8v
IENoZWNrIGdldCBpcyB0aGUgc2FtZSBvbiBBUEkgb2JqZWN0LgorICAgICAgICAgICAgICAgIGNo
ZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oZ2V0RnVuY3Rpb24sIGFwaU9iamVjdCwg
a2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24p
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09iamVjdEdldFByb3BlcnR5S2V5
KGNvbnRleHQsIGFwaU9iamVjdCwga2V5LCBleGNlcHRpb24pOworICAgICAgICAgICAgICAgICAg
ICB9LCAiZ2V0dGluZyBwcm9wZXJ0eSBrZXlzIGZyb20gQVBJIG9iamVjdHMiKTsKKyAgICAgICAg
ICAgICAgICAvLyBDaGVjayBnZXQgaXMgdGhlIHNhbWUgb24gcmVzcGVjdGl2ZSBvYmplY3RzLgor
ICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAg
WyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oZ2V0RnVu
Y3Rpb24sIGpzT2JqZWN0LCBrZXkpOworICAgICAgICAgICAgICAgICAgICB9LCBbJl0gKEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT2Jq
ZWN0R2V0UHJvcGVydHlLZXkoY29udGV4dCwgYXBpT2JqZWN0LCBrZXksIGV4Y2VwdGlvbik7Cisg
ICAgICAgICAgICAgICAgICAgIH0sICJnZXR0aW5nIHByb3BlcnR5IGtleXMgZnJvbSByZXNwZWN0
aXZlIG9iamVjdHMiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHsK
KyAgICAgICAgYXV0byBvYmplY3RzID0gaW50ZXJlc3RpbmdPYmplY3RzKCk7CisgICAgICAgIGF1
dG8ga2V5cyA9IGludGVyZXN0aW5nS2V5cygpOworCisgICAgICAgIEpTVmFsdWVSZWYgdGhlQW5z
d2VyID0gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgNDIpOworICAgICAgICBmb3IgKGF1dG8m
IG9iamVjdCA6IG9iamVjdHMpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYga2V5IDoga2V5cykg
eworICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAg
ICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oaGFz
RnVuY3Rpb24sIG9iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgWyZdIChKU1Zh
bHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlTWFrZUJvb2xlYW4oY29udGV4dCwgSlNPYmplY3RIYXNQcm9wZXJ0eUtleShjb250ZXh0LCBv
YmplY3QsIGtleSwgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIH0sICJjaGVja2lu
ZyBoYXMgcHJvcGVydHkga2V5cyB1bnNldCIpOworCisgICAgICAgICAgICAgICAgY2hlY2soISFj
YWxsRnVuY3Rpb24oc2V0RnVuY3Rpb24sIG9iamVjdCwga2V5LCB0aGVBbnN3ZXIpLCAic2V0IHBy
b3BlcnR5IHRvIHRoZSBhbnN3ZXIiKTsKKworICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElN
YXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBjYWxsRnVuY3Rpb24oaGFzRnVuY3Rpb24sIG9iamVjdCwga2V5KTsKKyAgICAgICAg
ICAgICAgICAgICAgfSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgSlNPYmplY3RI
YXNQcm9wZXJ0eUtleShjb250ZXh0LCBvYmplY3QsIGtleSwgZXhjZXB0aW9uKSk7CisgICAgICAg
ICAgICAgICAgICAgIH0sICJjaGVja2luZyBoYXMgcHJvcGVydHkga2V5cyBzZXQiKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0byBvYmplY3Rz
ID0gaW50ZXJlc3RpbmdPYmplY3RzKCk7CisgICAgICAgIGF1dG8ga2V5cyA9IGludGVyZXN0aW5n
S2V5cygpOworCisgICAgICAgIEpTVmFsdWVSZWYgdGhlQW5zd2VyID0gSlNWYWx1ZU1ha2VOdW1i
ZXIoY29udGV4dCwgNDIpOworICAgICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IG9iamVjdHMpIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byYga2V5IDoga2V5cykgeworICAgICAgICAgICAgICAgIGNo
ZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oZGVsZXRlRnVuY3Rpb24sIG9iamVjdCwg
a2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24p
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29u
dGV4dCwgSlNPYmplY3REZWxldGVQcm9wZXJ0eUtleShjb250ZXh0LCBvYmplY3QsIGtleSwgZXhj
ZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIH0sICJjaGVja2luZyBoYXMgcHJvcGVydHkg
a2V5cyB1bnNldCIpOworCisgICAgICAgICAgICAgICAgY2hlY2soISFjYWxsRnVuY3Rpb24oc2V0
RnVuY3Rpb24sIG9iamVjdCwga2V5LCB0aGVBbnN3ZXIpLCAic2V0IHByb3BlcnR5IHRvIHRoZSBh
bnN3ZXIiKTsKKworICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAg
ICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVu
Y3Rpb24oZGVsZXRlRnVuY3Rpb24sIG9iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAg
fSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgSlNPYmplY3REZWxldGVQcm9wZXJ0
eUtleShjb250ZXh0LCBvYmplY3QsIGtleSwgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAg
ICAgIH0sICJjaGVja2luZyBoYXMgcHJvcGVydHkga2V5cyBzZXQiKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIGRhdGFMb2dMbigiQy1BUEkgdGVzdHMgaW4gQysrIGhh
ZCAiLCBmYWlsZWQsICIgZmFpbHVyZXMiKTsKKyAgICByZXR1cm4gZmFpbGVkOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCmluZGV4IDQxMTljYjdmMmQxMjRk
MTU2OTNkMTQ5NTZmZDg4NGQ1NzIyMGQzMDEuLjg3YjAxZTc3MWU3ZDRjZDcyZjAyYjZhZTMwOTQw
YzY0MWQ4ZTY3YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
dGVzdGFwaS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGku
bW0KQEAgLTIzLDYgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgogCiAjaW1w
b3J0ICJDdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5oIgpAQCAtNTg1LDYgKzU4Niw3
MSBAQCBzdGF0aWMgdm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSU1haW4oKQogICAgICAgICBjaGVja1Jl
c3VsdChAIm5ldyBEYXRlIiwgcmVzdWx0LmlzRGF0ZSk7CiAgICAgfQogCisgICAgQGF1dG9yZWxl
YXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9j
XSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAqc3ltYm9sID0gW2NvbnRleHQgZXZhbHVhdGVTY3Jp
cHQ6QCJTeW1ib2woJ2RvcGUnKTsiXTsKKyAgICAgICAgSlNWYWx1ZSAqbm90U3ltYm9sID0gW2Nv
bnRleHQgZXZhbHVhdGVTY3JpcHQ6QCInZG9wZSciXTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJT
aG91bGQgYmUgYSBzeW1ib2wgdmFsdWUiLCBzeW1ib2wuaXNTeW1ib2wpOworICAgICAgICBjaGVj
a1Jlc3VsdChAIlNob3VsZCBub3QgYmUgYSBzeW1ib2wgdmFsdWUiLCAhbm90U3ltYm9sLmlzU3lt
Ym9sKTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0
ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICpz
eW1ib2wgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246QCJkb3Bl
IiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIGNoZWNrUmVzdWx0KEAiU2hvdWxkIGJlIGEg
Y3JlYXRlZCBmcm9tIE9iYy1DIiwgc3ltYm9sLmlzU3ltYm9sKTsKKyAgICB9CisKKyNpZiAhKGRl
ZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA8IDEwMTMwMCkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEw
MDAwKQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4
dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAqYXJyYXlJdGVy
YXRvciA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiQXJyYXkucHJvdG90eXBlW1N5bWJvbC5p
dGVyYXRvcl0iXTsKKyAgICAgICAgSlNWYWx1ZSAqaXRlcmF0b3JTeW1ib2wgPSBjb250ZXh0W0Ai
U3ltYm9sIl1bQCJpdGVyYXRvciJdOworICAgICAgICBKU1ZhbHVlICphcnJheSA9IFtKU1ZhbHVl
IHZhbHVlV2l0aE5ld0FycmF5SW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBjaGVja1Jlc3Vs
dChAIkxvb2tpbmcgdXAgYnkgc3Vic2NyaXB0IHdpdGggc3ltYm9sIHNob3VsZCB3b3JrIiwgW2Fy
cmF5W2l0ZXJhdG9yU3ltYm9sXSBpc0VxdWFsOmFycmF5SXRlcmF0b3JdKTsKKyAgICAgICAgY2hl
Y2tSZXN1bHQoQCJMb29raW5nIHVwIGJ5IG1ldGhvZCB3aXRoIHN5bWJvbCBzaG91bGQgd29yayIs
IFtbYXJyYXkgdmFsdWVGb3JQcm9wZXJ0eTppdGVyYXRvclN5bWJvbF0gaXNFcXVhbDphcnJheUl0
ZXJhdG9yXSk7CisgICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29u
dGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1
ZSAqaXRlcmF0b3JTeW1ib2wgPSBjb250ZXh0W0AiU3ltYm9sIl1bQCJpdGVyYXRvciJdOworICAg
ICAgICBKU1ZhbHVlICpvYmplY3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdPYmplY3RJbkNvbnRl
eHQ6Y29udGV4dF07CisgICAgICAgIEpTVmFsdWUgKnRoZUFuc3dlciA9IFtKU1ZhbHVlIHZhbHVl
V2l0aFVJbnQzMjo0MiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIG9iamVjdFtpdGVyYXRv
clN5bWJvbF0gPSB0aGVBbnN3ZXI7CisgICAgICAgIGNoZWNrUmVzdWx0KEAiU2V0dGluZyBieSBz
dWJzY3JpcHQgd2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsiLCBbb2JqZWN0W2l0ZXJhdG9yU3ltYm9s
XSBpc0VxdWFsOnRoZUFuc3dlcl0pOworICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgewor
ICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07Cisg
ICAgICAgIEpTVmFsdWUgKml0ZXJhdG9yU3ltYm9sID0gY29udGV4dFtAIlN5bWJvbCJdW0AiaXRl
cmF0b3IiXTsKKyAgICAgICAgSlNWYWx1ZSAqb2JqZWN0ID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3
T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBKU1ZhbHVlICp0aGVBbnN3ZXIgPSBb
SlNWYWx1ZSB2YWx1ZVdpdGhVSW50MzI6NDIgaW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBb
b2JqZWN0IHNldFZhbHVlOnRoZUFuc3dlciBmb3JQcm9wZXJ0eTppdGVyYXRvclN5bWJvbF07Cisg
ICAgICAgIGNoZWNrUmVzdWx0KEAiU2V0dGluZyBieSBtZXRob2Qgd2l0aCBzeW1ib2wgc2hvdWxk
IHdvcmsiLCBbb2JqZWN0W2l0ZXJhdG9yU3ltYm9sXSBpc0VxdWFsOnRoZUFuc3dlcl0pOworICAg
IH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQg
PSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUgKml0ZXJhdG9yU3lt
Ym9sID0gY29udGV4dFtAIlN5bWJvbCJdW0AiaXRlcmF0b3IiXTsKKyAgICAgICAgSlNWYWx1ZSAq
b2JqZWN0ID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOwor
ICAgICAgICBKU1ZhbHVlICp0aGVBbnN3ZXIgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhVSW50MzI6NDIg
aW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBvYmplY3RbaXRlcmF0b3JTeW1ib2xdID0gdGhl
QW5zd2VyOworICAgICAgICBjaGVja1Jlc3VsdChAImhhcyBwcm9wZXJ0eSB3aXRoIHN5bWJvbCBz
aG91bGQgd29yayIsIFtvYmplY3QgaGFzUHJvcGVydHk6aXRlcmF0b3JTeW1ib2xdKTsKKyAgICB9
CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0g
W1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICppdGVyYXRvclN5bWJv
bCA9IGNvbnRleHRbQCJTeW1ib2wiXVtAIml0ZXJhdG9yIl07CisgICAgICAgIEpTVmFsdWUgKm9i
amVjdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld09iamVjdEluQ29udGV4dDpjb250ZXh0XTsKKyAg
ICAgICAgSlNWYWx1ZSAqdGhlQW5zd2VyID0gW0pTVmFsdWUgdmFsdWVXaXRoVUludDMyOjQyIGlu
Q29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJkZWxldGUgcHJvcGVydHkg
d2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsgd2l0aG91dCBwcm9wZXJ0eSIsIFtvYmplY3QgZGVsZXRl
UHJvcGVydHk6aXRlcmF0b3JTeW1ib2xdKTsKKyAgICAgICAgb2JqZWN0W2l0ZXJhdG9yU3ltYm9s
XSA9IHRoZUFuc3dlcjsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJkZWxldGUgcHJvcGVydHkgd2l0
aCBzeW1ib2wgc2hvdWxkIHdvcmsgd2l0aCBwcm9wZXJ0eSIsIFtvYmplY3QgZGVsZXRlUHJvcGVy
dHk6aXRlcmF0b3JTeW1ib2xdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJkZWxldGUgc2hvdWxk
IGJlIGZhbHNlIHdpdGggbm9uLWNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSIsICFbY29udGV4dFtAIkFy
cmF5Il0gZGVsZXRlUHJvcGVydHk6QCJwcm90b3R5cGUiXSk7CisgICAgfQorCisjZW5kaWYgLy8g
IShkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDApIHx8IChkZWZpbmVkKF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8
IDExMDAwMCkKKwogICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICBKU0NvbGxlY3Rpb24q
IG15UHJpdmF0ZVByb3BlcnRpZXMgPSBbW0pTQ29sbGVjdGlvbiBhbGxvY10gaW5pdF07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjk4ZDYxNDExYTI4NmRhN2NkMzVmOTRiYzdi
MWM3ZDE5NGFkNGEzNC4uMzg2ODg2MjE5MjI0OGViNjA1MTY0NjIyNDdjMzA1YmNmNGVjYTcxNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMzMsNiArMTAzMyw3IEBACiAJCTUz
RTc3N0U0MUU5MkUyNjUwMDdDQkVDNCAvKiBXYXNtTW9kdWxlSW5mb3JtYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRTc3N0UyMUU5MkUyNjUw
MDdDQkVDNCAvKiBXYXNtTW9kdWxlSW5mb3JtYXRpb24uaCAqLzsgfTsKIAkJNTNFOUUwQUMxRUFF
ODNERjAwRkVFMjUxIC8qIFdhc21NYWNoaW5lVGhyZWFkcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFOUUwQUExRUFFODNERTAwRkVFMjUxIC8qIFdh
c21NYWNoaW5lVGhyZWFkcy5oICovOyB9OwogCQk1M0U5RTBBRjFFQUVDNDU3MDBGRUUyNTEgLyog
V2FzbVRpZXJVcENvdW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1M0U5RTBBRTFFQUVDNDU3MDBGRUUyNTEgLyogV2FzbVRpZXJVcENvdW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTNFQUZFMkYy
MDhERkFCNDAwN0Q1MjRCIC8qIHRlc3RhcGkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxRDRFMTkxRjU5Q0REMjAwRUM4MzZDIC8qIHRlc3RhcGku
Y3BwICovOyB9OwogCQk1M0YxMUY0MTIwOTEzOEQ3MDBFNDExQTcgLyogSlNJbW11dGFibGVCdXR0
ZXJmbHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
RjExRjQwMjA5MTM4RDcwMEU0MTFBNyAvKiBKU0ltbXV0YWJsZUJ1dHRlcmZseS5oICovOyB9Owog
CQk1M0Y0MEU4NTFENThGOTc3MDA5OUExQjYgLyogV2FzbVNlY3Rpb25zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU4NDFENThGOTc3MDA5OUEx
QjYgLyogV2FzbVNlY3Rpb25zLmggKi87IH07CiAJCTUzRjQwRThCMUQ1OTAxQkIwMDk5QTFCNiAv
KiBXYXNtRnVuY3Rpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzRjQwRThBMUQ1OTAxQkIwMDk5QTFCNiAvKiBXYXNtRnVuY3Rpb25QYXJz
ZXIuaCAqLzsgfTsKQEAgLTMyODMsNiArMzI4NCw3IEBACiAJCTUzMTFCRDQ5MUVBNTgxRTUwMDUy
NTI4MSAvKiBXYXNtT01HUGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
YXNtT01HUGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzEzNzRCQzFENUNF
Njc2MDBBRjdBMEIgLyogV2FzbVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2FzbVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxMzc0QkUxRDVD
RTk1MDAwQUY3QTBCIC8qIFdhc21QbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdhc21QbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMx
RDRFMTkxRjU5Q0REMjAwRUM4MzZDIC8qIHRlc3RhcGkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
dGVzdGFwaS5jcHA7IHBhdGggPSBBUEkvdGVzdHMvdGVzdGFwaS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUzM0IxNURFMURDN0Y0NjMwMDRENTAwQSAvKiBXYXNtT3BzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21PcHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTM0MUZDNkYxREFDMzNFNTAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0No
ZWNrVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNXYXNt
Qm91bmRzQ2hlY2tWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0MUZDNzExREFDMzQzQzAwRTdFNEQ3
IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBwYXRoID0gYjMvQjNXYXNtQm91bmRzQ2hl
Y2tWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ1Myw3ICszNDU1LDYg
QEAKIAkJNTM5MTdFN0ExQjc5MDZFNDAwMEVCRDMzIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUzOTE3RTdDMUI3OTExMDYwMDBFQkQzMyAvKiBKU1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZWRB
cnJheVZpZXdQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM5MTdF
ODMxQjc5MUNCODAwMEVCRDMzIC8qIFR5cGVkQXJyYXlQcm90b3R5cGUuanMgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBUeXBlZEFycmF5UHJvdG90eXBlLmpzOyBwYXRo
ID0gYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OwotCQk1MzlFQjA3MTFENTUzREY4MDBDODJFRjcgLyogdGVzdFdhc20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdGVzdFdhc20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MzlGQjhCOTFDOTlEQTdDMDA5NDBGQTEgLyogSlNBcnJheUlu
bGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJheUlubGluZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNCMEJFMzMxRTU2MUFDOTAwQThGQzI5
IC8qIEdldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUzQjBCRTM1MUU1NjFCMDkwMEE4RkMyOSAvKiBQcm94eWFibGVBY2Nlc3ND
YXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3h5YWJsZUFj
Y2Vzc0Nhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTQ0MiwxMCArNTQ0
MywxMCBAQAogCQkJCUZFQjUxRjZCMUE5N0I2ODgwMDFGOTIxQyAvKiBSZWdyZXNzMTQxODA5Lm1t
ICovLAogCQkJCUZFQ0I4QjI5MUQyNUNBQkIwMDZGMjQ2MyAvKiB0ZXN0YXBpLWZ1bmN0aW9uLW92
ZXJyaWRlcy5qcyAqLywKIAkJCQkxNEJENUEyRDBBM0U5MUY2MDBCQUY1OUMgLyogdGVzdGFwaS5j
ICovLAorCQkJCTUzMUQ0RTE5MUY1OUNERDIwMEVDODM2QyAvKiB0ZXN0YXBpLmNwcCAqLywKIAkJ
CQkxNEQ4NTc3NDBBNDY5NkM4MDAzMjE0NkMgLyogdGVzdGFwaS5qcyAqLywKIAkJCQk4NkQyMjIx
OTE2N0VGOTQ0MDAyNEM4MDQgLyogdGVzdGFwaS5tbSAqLywKIAkJCQk2NTExMjJFNTE0MDQ2OUJB
MDAyQjEwMUQgLyogdGVzdFJlZ0V4cC5jcHAgKi8sCi0JCQkJNTM5RUIwNzExRDU1M0RGODAwQzgy
RUY3IC8qIHRlc3RXYXNtLmNwcCAqLywKIAkJCQk1MzQ5MDI4MjFDNzI0MkM4MDAxMkJDQjggLyog
VHlwZWRBcnJheUNUZXN0LmNwcCAqLywKIAkJCQk1MzQ5MDI4MzFDNzI0MkM4MDAxMkJDQjggLyog
VHlwZWRBcnJheUNUZXN0LmggKi8sCiAJCQkpOwpAQCAtOTkzMyw2ICs5OTM0LDEwIEBACiAJCQkJ
IiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvSlNWYWx1
ZS5oIiwKIAkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9Q
QVRIKS9KU1ZpcnR1YWxNYWNoaW5lLmgiLAogCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVC
TElDX0hFQURFUlNfRk9MREVSX1BBVEgpL1dlYktpdEF2YWlsYWJpbGl0eS5oIiwKKwkJCQkiJChU
QVJHRVRfQlVJTERfRElSKS8kKFBSSVZBVEVfSEVBREVSU19GT0xERVJfUEFUSCkvSlNDb250ZXh0
UmVmUHJpdmF0ZS5oIiwKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBSSVZBVEVfSEVBREVS
U19GT0xERVJfUEFUSCkvSlNCYXNlUHJpdmF0ZS5oIiwKKwkJCQkiJChUQVJHRVRfQlVJTERfRElS
KS8kKFBSSVZBVEVfSEVBREVSU19GT0xERVJfUEFUSCkvSlNSZW1vdGVJbnNwZWN0b3IuaCIsCisJ
CQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvSlNU
eXBlZEFycmF5LmgiLAogCQkJKTsKIAkJCW5hbWUgPSAiUG9zdHByb2Nlc3MgSGVhZGVycyI7CiAJ
CQlvdXRwdXRQYXRocyA9ICgKQEAgLTEwMTU3LDYgKzEwMTYyLDcgQEAKIAkJCQk2NTU3MEY1QTFB
QTRDM0VBMDA5QjNDMjMgLyogUmVncmVzczE0MTI3NS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUZF
QjUxRjZDMUE5N0I2ODgwMDFGOTIxQyAvKiBSZWdyZXNzMTQxODA5Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQ0MEY2MTAwQTRGODU2NzAwMDVGMDYxIC8qIHRlc3RhcGkuYyBpbiBTb3VyY2VzICov
LAorCQkJCTUzRUFGRTJGMjA4REZBQjQwMDdENTI0QiAvKiB0ZXN0YXBpLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTg2RDIyMjFBMTY3RUY5NDQwMDI0QzgwNCAvKiB0ZXN0YXBpLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTM0OTAyODUxQzcyNzZCNzAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CkBAIC0xMDYyNCw2ICsxMDYzMCwxMCBAQAogCQkJaXNh
ID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9
IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsK
IAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJ
IlwiJChKQVZBU0NSSVBUQ09SRV9GUkFNRVdPUktTX0RJUikvSmF2YVNjcmlwdENvcmUuZnJhbWV3
b3JrL1ByaXZhdGVIZWFkZXJzXCIiLAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkpOwogCQkJ
fTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTEwNjMxLDYgKzEwNjQxLDEwIEBACiAJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNl
ID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICov
OwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJ
CQkiXCIkKEpBVkFTQ1JJUFRDT1JFX0ZSQU1FV09SS1NfRElSKS9KYXZhU2NyaXB0Q29yZS5mcmFt
ZXdvcmsvUHJpdmF0ZUhlYWRlcnNcIiIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CiAJ
CQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJCX07CkBAIC0xMDYzOCw2ICsxMDY1MiwxMCBAQAog
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVy
ZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZp
ZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICgK
KwkJCQkJIlwiJChKQVZBU0NSSVBUQ09SRV9GUkFNRVdPUktTX0RJUikvSmF2YVNjcmlwdENvcmUu
ZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzXCIiLAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkp
OwogCQkJfTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OwpAQCAtMTA5NjIsNiArMTA5ODAs
MTAgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRp
b25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUu
eGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUhFQURFUl9TRUFSQ0hfUEFU
SFMgPSAoCisJCQkJCSJcIiQoSkFWQVNDUklQVENPUkVfRlJBTUVXT1JLU19ESVIpL0phdmFTY3Jp
cHRDb3JlLmZyYW1ld29yay9Qcml2YXRlSGVhZGVyc1wiIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIs
CisJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gUHJvZmlsaW5nOwogCQl9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2NvbmZpZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Nv
bmZpZy5oCmluZGV4IDFkMWVkN2I2ZjhjNmFjMDlmMTQ0NDRmNmVmMzgwNTYyOTk4MTlkN2UuLmVk
Yzc3Y2YyNTU2MGJiMWFhOTdkYTBhMWI4ODM2MGRiZjI2YjUxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29u
ZmlnLmgKQEAgLTIzLDYgKzIzLDkgQEAKICNpbmNsdWRlICJjbWFrZWNvbmZpZy5oIgogI2VuZGlm
CiAKKyNkZWZpbmUgSlNDX0FQSV9BVkFJTEFCTEUoLi4uKQorI2RlZmluZSBKU0NfQ0xBU1NfQVZB
SUxBQkxFKC4uLikgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKKwogI2lu
Y2x1ZGUgIkpTRXhwb3J0TWFjcm9zLmgiCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bvc3Rwcm9jZXNzLWhlYWRlcnMuc2ggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcG9zdHByb2Nlc3MtaGVhZGVycy5zaAppbmRleCBjODYxODQzN2QyYTA3
Nzk0OWE1OTBhYzcwMTdmODI2YjUyZDZkMmIzLi44OGNhZGMxMDEzNDNkNTVkM2ZjYjY4MGRkMmZi
NzVmM2MzMWE1OTM2IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcG9zdHByb2Nl
c3MtaGVhZGVycy5zaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcG9zdHByb2Nlc3MtaGVh
ZGVycy5zaApAQCAtMSwxOCArMSwxMjQgQEAKLWNkICIke1RBUkdFVF9CVUlMRF9ESVJ9LyR7UFVC
TElDX0hFQURFUlNfRk9MREVSX1BBVEh9IgotCi1VTklGREVGX09QVElPTlM9Ii1EX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRD0ke1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SfSIK
LQotZm9yICgoaSA9IDA7IGkgPCAke1NDUklQVF9JTlBVVF9GSUxFX0NPVU5UfTsgKytpKSk7IGRv
Ci0gICAgZXZhbCBIRUFERVI9XCR7U0NSSVBUX0lOUFVUX0ZJTEVfJHtpfX07Ci0gICAgdW5pZmRl
ZiAtQiAke1VOSUZERUZfT1BUSU9OU30gLW8gIiR7SEVBREVSfSIudW5pZmRlZiAiJHtIRUFERVJ9
IgotICAgIGNhc2UgJD8gaW4KLSAgICAwKQotICAgICAgICBybSAiJHtIRUFERVJ9Ii51bmlmZGVm
Ci0gICAgICAgIDs7Ci0gICAgMSkKLSAgICAgICAgbXYgIiR7SEVBREVSfSJ7LnVuaWZkZWYsfQot
ICAgICAgICA7OwotICAgICopCi0gICAgICAgIGV4aXQgMQotICAgIGVzYWMKLWRvbmUKKyMhL2Jp
bi9zaAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKworaWYgW1sg
IiR7SlNDX0ZSQU1FV09SS19IRUFERVJfUE9TVFBST0NFU1NJTkdfRElTQUJMRUR9IiA9PSAiWUVT
IiBdXTsgdGhlbgorICAgIGV4aXQgMDsKK2ZpCisKK1RJTUVTVEFNUF9QQVRIPSR7VEFSR0VUX1RF
TVBfRElSfS8kezAjIyovfQorCitpZiBbWyAtZSAkVElNRVNUQU1QX1BBVEggJiYgJDAgLW50ICRU
SU1FU1RBTVBfUEFUSCBdXTsgdGhlbgorICAgIHJtICIke1RJTUVTVEFNUF9QQVRIfSI7CitmaQor
CitmdW5jdGlvbiBwcm9jZXNzX2RlZmluaXRpb25zICgpIHsKKyAgICBsb2NhbCBERUZJTklUSU9O
U19GSUxFPSQxCisKKyAgICBpZiBbWyAhIC1mICIke0RFRklOSVRJT05TX0ZJTEV9IiBdXTsgdGhl
bgorICAgICAgICByZXR1cm4gMQorICAgIGZpCisKKyAgICBpZiBbWyAtZSAkVElNRVNUQU1QX1BB
VEggJiYgIiR7REVGSU5JVElPTlNfRklMRX0iIC1udCAkVElNRVNUQU1QX1BBVEggXV07IHRoZW4K
KyAgICAgICAgcm0gIiR7VElNRVNUQU1QX1BBVEh9IjsKKyAgICBmaQorCisgICAgc291cmNlICIk
e0RFRklOSVRJT05TX0ZJTEV9IgorfQorCitmdW5jdGlvbiByZXdyaXRlX2hlYWRlcnMgKCkgewor
ICAgIGlmIFtbICIke1BMQVRGT1JNX05BTUV9IiA9PSAibWFjb3N4IiBdXTsgdGhlbgorICAgICAg
ICBbWyAtbiAke09TWF9WRVJTSU9OfSBdXSB8fCBPU1hfVkVSU0lPTj0ke01BQ09TWF9ERVBMT1lN
RU5UX1RBUkdFVH0KKyAgICAgICAgW1sgLW4gJHtJT1NfVkVSU0lPTn0gXV0gfHwgSU9TX1ZFUlNJ
T049Ik5BIgorICAgIGVsaWYgW1sgIiR7UExBVEZPUk1fTkFNRX0iID1+ICJpcGhvbmUiIF1dOyB0
aGVuCisgICAgICAgIFtbIC1uICR7SU9TX1ZFUlNJT059IF1dIHx8IElPU19WRVJTSU9OPSR7SVBI
T05FT1NfREVQTE9ZTUVOVF9UQVJHRVR9CisgICAgICAgIFtbIC1uICR7T1NYX1ZFUlNJT059IF1d
IHx8IE9TWF9WRVJTSU9OPSJOQSIKKyAgICBmaQorCisgICAgU0VEX09QVElPTlM9KAorICAgICkK
KworICAgIGlmIFtbIC1uICIkT1NYX1ZFUlNJT04iICYmIC1uICIkSU9TX1ZFUlNJT04iIF1dOyB0
aGVuCisgICAgICAgIFNFRF9PUFRJT05TKz0oCisgICAgICAgICAgICAtZSBzL0pTQ19NQUNfVEJB
LyR7T1NYX1ZFUlNJT059L2cKKyAgICAgICAgICAgIC1lIHMvSlNDX0lPU19UQkEvJHtJT1NfVkVS
U0lPTn0vZworICAgICAgICAgICAgLWUgcy9KU0NfQVBJX0FWQUlMQUJMRS9BUElfQVZBSUxBQkxF
LworICAgICAgICAgICAgLWUgcy9KU0NfQVBJX0RFUFJFQ0FURUQvQVBJX0RFUFJFQ0FURUQvCisg
ICAgICAgICAgICAtZSAicy9eSlNDX0NMQVNTX0FWQUlMQUJMRS9BUElfQVZBSUxBQkxFLyIKKyAg
ICAgICAgICAgIC1lICJzL15KU0NfQ0xBU1NfREVQUkVDQVRFRC9BUElfREVQUkVDQVRFRC8iCisg
ICAgICAgICkKKyAgICBlbHNlCisgICAgICAgIFNFRF9PUFRJT05TKz0oLWUgJ3MvSlNDXyhBUElf
fENMQVNTXylBVkFJTEFCTEVcKC4qXClccypcKS8vZycgLWUgJ3MvSlNDXyhBUElffENMQVNTXylE
RVBSRUNBVEVEKF9XSVRIX1JFUExBQ0VNRU5UKT9cKC4qXClccypcKS8vZycpCisgICAgZmkKKwor
ICAgIFNFRF9PUFRJT05TKz0oJHtPVEhFUl9TRURfT1BUSU9OU1sqXX0pCisKKyAgICBmb3IgSEVB
REVSX1BBVEggaW4gIiR7MX0vIiouaDsgZG8KKyAgICAgICAgaWYgW1sgIiRIRUFERVJfUEFUSCIg
LW50ICRUSU1FU1RBTVBfUEFUSCBdXTsgdGhlbgorICAgICAgICAgICAgZGl0dG8gIiR7SEVBREVS
X1BBVEh9IiAiJHtUQVJHRVRfVEVNUF9ESVJ9LyR7SEVBREVSX1BBVEgjIyovfSIKKyAgICAgICAg
ICAgIHNlZCAtaSAudG1wIC1FICIke1NFRF9PUFRJT05TW0BdfSIgIiR7VEFSR0VUX1RFTVBfRElS
fS8ke0hFQURFUl9QQVRIIyMqL30iIHx8IGV4aXQgJD8KKyAgICAgICAgICAgIG12ICIke1RBUkdF
VF9URU1QX0RJUn0vJHtIRUFERVJfUEFUSCMjKi99IiAiJEhFQURFUl9QQVRIIgorICAgICAgICBm
aQorICAgIGRvbmUKK30KKworZnVuY3Rpb24gcmV3cml0ZV92ZXJzaW9uX21pbl9yZXF1aXJlZF9t
YWNyb3MoKSB7CisgICAgZWNobyAicmV3cml0ZV92ZXJzaW9uX21pbl9yZXF1aXJlZF9tYWNyb3Mi
CisgICAgZWNobyAiJHsxfSIKKyAgICAjIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHVuc2V0IHRo
ZSBvdGhlciB0YXJnZXQgb3RoZXJ3aXNlIHVuaWZkZWYgd2lsbCBmYWlsIHRvIGhhbmRsZSBjb25k
aXRpb25zIHRoYXQgYXJlIGFuIHx8IG9mIGJvdGggdGFyZ2V0cy4KKyAgICBpZiBbWyAteiAke0lP
U19WRVJTSU9OfSBdXTsgdGhlbgorICAgICAgICBVTklGREVGX09QVElPTlM9Ii1EX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRD0ke1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SfSAt
VV9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIgorICAgIGVsc2UKKyAgICAgICAgVU5J
RkRFRl9PUFRJT05TPSItVV9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgLURfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRD0ke1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9S
fSIKKyAgICBmaQorCisgICAgZm9yIEhFQURFUl9QQVRIIGluICIkezF9LyIqLmg7IGRvCisgICAg
ICAgIGlmIFtbICIkSEVBREVSX1BBVEgiIC1udCAkVElNRVNUQU1QX1BBVEggXV07IHRoZW4KKyAg
ICAgICAgICAgIHVuaWZkZWYgLUIgJHtVTklGREVGX09QVElPTlN9IC1vICIke0hFQURFUl9QQVRI
fSIudW5pZmRlZiAiJHtIRUFERVJfUEFUSH0iCisgICAgICAgICAgICBjYXNlICQ/IGluCisgICAg
ICAgICAgICAgICAgMCkKKyAgICAgICAgICAgICAgICAgICAgcm0gIiR7SEVBREVSX1BBVEh9Ii51
bmlmZGVmCisgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgMSkKKyAgICAg
ICAgICAgICAgICAgICAgbXYgIiR7SEVBREVSX1BBVEh9InsudW5pZmRlZix9CisgICAgICAgICAg
ICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgKikKKyAgICAgICAgICAgICAgICAgICAgZXhp
dCAxCisgICAgICAgICAgICBlc2FjCisgICAgICAgIGZpCisgICAgZG9uZQorfQorCitERUZJTklU
SU9OU19QQVRIPXVzci9sb2NhbC9pbmNsdWRlL1dlYktpdEFkZGl0aW9ucy9TY3JpcHRzL3Bvc3Rw
cm9jZXNzLWZyYW1ld29yay1oZWFkZXJzLWRlZmluaXRpb25zCisKK3Byb2Nlc3NfZGVmaW5pdGlv
bnMgIiR7QlVJTFRfUFJPRFVDVFNfRElSfS8ke0RFRklOSVRJT05TX1BBVEh9IiB8fCBwcm9jZXNz
X2RlZmluaXRpb25zICIke1NES1JPT1R9LyR7REVGSU5JVElPTlNfUEFUSH0iCisKK3Jld3JpdGVf
aGVhZGVycyAiJHtUQVJHRVRfQlVJTERfRElSfS8ke1BVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRI
fSIKK3Jld3JpdGVfdmVyc2lvbl9taW5fcmVxdWlyZWRfbWFjcm9zICIke1RBUkdFVF9CVUlMRF9E
SVJ9LyR7UFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEh9IgorCityZXdyaXRlX2hlYWRlcnMgIiR7
VEFSR0VUX0JVSUxEX0RJUn0vJHtQUklWQVRFX0hFQURFUlNfRk9MREVSX1BBVEh9IgorcmV3cml0
ZV92ZXJzaW9uX21pbl9yZXF1aXJlZF9tYWNyb3MgIiR7VEFSR0VUX0JVSUxEX0RJUn0vJHtQUklW
QVRFX0hFQURFUlNfRk9MREVSX1BBVEh9IgorCit0b3VjaCAke1RJTUVTVEFNUF9QQVRIfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RtZW0vdGVzdG1lbS5tbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0bWVtL3Rlc3RtZW0ubW0KaW5kZXggYjRkMmFkMzkxMTliYzU1
NThjZDM5YzljODE4MmZhY2VkY2JlYWYyNC4uOWJjNGI0MGUxZWFjMDIzMTdmZDNlODQ1YjQ1NGQw
ZjQ4YjZlZTVjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RtZW0vdGVz
dG1lbS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdG1lbS90ZXN0bWVtLm1tCkBA
IC0yMyw2ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KICNpbXBvcnQgPGlu
dHR5cGVzLmg+CiAjaW1wb3J0IDxzdGRpby5oPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342319</attachid>
            <date>2018-06-08 13:51:09 -0700</date>
            <delta_ts>2018-06-08 14:32:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175836-20180608135108.patch</filename>
            <type>text/plain</type>
            <size>105132</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyNjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YTg5OWQ5MzQ5NDNjNjBmYWYzYzI0YjJkMmQ4MzkxNzNiOWU5NGM2Li5lMzAyZjc3ZTZlN2ZkZjc1
NDY0OGIyNjkzMTdkN2FlMWI5ZGQxODhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMTgtMDQtMjMgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0pTQyBBUEldIFdlIHNob3VsZCBzdXBwb3J0IHRoZSBzeW1ib2wg
dHlwZSBpbiBvdXIgQy9PYmotQyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTgzNgorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxv
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIGZvbGxvd2luZyBBUEkgYWRkaXRpb25z
OgorICAgICAgICAxKSBUZXN0IGlmIGEgSlNWYWx1ZS9KU1ZhbHVlUmVmIGlzIGEgc3ltYm9sIHZp
YSBhbnkgb2YgdGhlIG1ldGhvZHMgQVBJIGFyZSBhYmxlIHRvIHRlc3QgZm9yIHRoZSB0eXBlcyBv
ZiBvdGhlciBKU1ZhbHVlcy4KKyAgICAgICAgMikgQ3JlYXRlIGEgc3ltYm9sIG9uIGJvdGggQVBJ
cy4KKyAgICAgICAgMykgR2V0L1NldC9EZWxldGUvRGVmaW5lIHByb3BlcnR5IG5vdyB0YWtlIGlk
cyBpbiB0aGUgT2JqLUMgQVBJLgorICAgICAgICA0KSBBZGQgR2V0L1NldC9EZWxldGUgaW4gdGhl
IEMgQVBJLgorCisgICAgICAgIFdlIGNhbiBkbyAzIGJlY2F1c2UgaXQgaXMgYm90aCBiaW5hcnkg
YW5kIHNvdXJjZSBjb21wYXRhYmxlIHdpdGgKKyAgICAgICAgdGhlIGV4aXN0aW5nIEFQSS4gSSBh
ZGRlZCAoNCkgYmVjYXVzZSB0aGUgY3VycmVudCBwcm9wZXJ0eSBhY2Nlc3MKKyAgICAgICAgQVBJ
cyBvbmx5IGhhdmUgdGhlIGFiaWxpdHkgdG8gZ2V0IFN0cmluZ3MuIEl0IHdhcyBwb3NzaWJsZSB0
bworICAgICAgICBtZXJnZSBzeW1ib2xzIGludG8gSlNTdHJpbmdSZWYgYnV0IHRoYXQgZmVsdCBj
b25mdXNpbmcgYW5kIGV4cG9zZXMKKyAgICAgICAgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBv
dXIgZW5naW5lLiBUaGUgbmV3IGZ1bmN0aW9ucyBtYXRjaCB0aGUKKyAgICAgICAgc2FtZSBtZWFu
aW5nIHRoYXQgdGhleSBoYXZlIGluIEpTLCB0aHVzIHNob3VsZCBiZSBmb3J3YXJkCisgICAgICAg
IGNvbXBhdGlibGUgd2l0aCBhbnkgZnV0dXJlIGxhbmd1YWdlIGV4dGVuc2lvbnMuCisKKyAgICAg
ICAgTGFzdGx5LCB0aGlzIHBhdGNoIGFkZHMgdGhlIHNhbWUgYXZhaWxhYmlsaXR5IHByZXByb2Nj
ZXNzaW5nIHBoYXNlCisgICAgICAgIGluIFdlYkNvcmUgdG8gSmF2YVNjcmlwdENvcmUsIHdoaWNo
IGVuYWJsZXMgVEJBIGZlYXR1cmVzIGZvcgorICAgICAgICB0ZXN0aW5nIG9uIHByZXZpb3VzIHJl
bGVhc2VzLgorCisgICAgICAgICogQVBJL0pTQmFzZVByaXZhdGUuaDoKKyAgICAgICAgKiBBUEkv
SlNDb250ZXh0Lmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFByaXZhdGUuaDoKKyAgICAgICAg
KiBBUEkvSlNDb250ZXh0UmVmLmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZkludGVybmFs
Lmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaDoKKyAgICAgICAgKiBBUEkv
SlNNYW5hZ2VkVmFsdWUuaDoKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAg
ICAoSlNPYmplY3RIYXNQcm9wZXJ0eUtleSk6CisgICAgICAgIChKU09iamVjdEdldFByb3BlcnR5
S2V5KToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJvcGVydHlLZXkpOgorICAgICAgICAoSlNPYmpl
Y3REZWxldGVQcm9wZXJ0eUtleSk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmg6CisgICAg
ICAgICogQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmg6CisgICAgICAgICogQVBJL0pTVHlwZWRBcnJh
eS5oOgorICAgICAgICAqIEFQSS9KU1ZhbHVlLmg6CisgICAgICAgICogQVBJL0pTVmFsdWUubW06
CisgICAgICAgICgrW0pTVmFsdWUgdmFsdWVXaXRoTmV3U3ltYm9sRnJvbURlc2NyaXB0aW9uOmlu
Q29udGV4dDpdKToKKyAgICAgICAgKHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbik6CisgICAgICAg
ICgtW0pTVmFsdWUgdmFsdWVGb3JQcm9wZXJ0eTp2YWx1ZUZvclByb3BlcnR5Ol0pOgorICAgICAg
ICAoLVtKU1ZhbHVlIHNldFZhbHVlOmZvclByb3BlcnR5OnNldFZhbHVlOmZvclByb3BlcnR5Ol0p
OgorICAgICAgICAoLVtKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5OmRlbGV0ZVByb3BlcnR5Ol0pOgor
ICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Omhhc1Byb3BlcnR5Ol0pOgorICAgICAgICAo
LVtKU1ZhbHVlIGRlZmluZVByb3BlcnR5OmRlc2NyaXB0b3I6ZGVmaW5lUHJvcGVydHk6ZGVzY3Jp
cHRvcjpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSBpc1N5bWJvbF0pOgorICAgICAgICAoLVtKU1Zh
bHVlIG9iamVjdEZvcktleWVkU3Vic2NyaXB0Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIHNldE9i
amVjdDpmb3JLZXllZFN1YnNjcmlwdDpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSB2YWx1ZUZvclBy
b3BlcnR5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIHNldFZhbHVlOmZvclByb3Bl
cnR5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5Ol0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Ol0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtKU1ZhbHVlIGRlZmluZVByb3BlcnR5OmRlc2NyaXB0b3I6XSk6IERlbGV0ZWQuCisg
ICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgorICAgICAgICAoSlNWYWx1ZUdldFR5cGUpOgor
ICAgICAgICAoSlNWYWx1ZUlzU3ltYm9sKToKKyAgICAgICAgKEpTVmFsdWVNYWtlU3ltYm9sKToK
KyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5oOgorICAgICAgICAqIEFQSS9XZWJLaXRBdmFpbGFi
aWxpdHkuaDoKKyAgICAgICAgKiBBUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRl
clRlc3QubW06CisgICAgICAgICogQVBJL3Rlc3RzL0N1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVz
dC5jOgorICAgICAgICAqIEFQSS90ZXN0cy9EYXRlVGVzdHMubW06CisgICAgICAgICogQVBJL3Rl
c3RzL0pTRXhwb3J0VGVzdHMubW06CisgICAgICAgICogQVBJL3Rlc3RzL0pTTm9kZS5jOgorICAg
ICAgICAqIEFQSS90ZXN0cy9KU05vZGVMaXN0LmM6CisgICAgICAgICogQVBJL3Rlc3RzL05vZGUu
YzoKKyAgICAgICAgKiBBUEkvdGVzdHMvTm9kZUxpc3QuYzoKKyAgICAgICAgKiBBUEkvdGVzdHMv
bWluaWRvbS5jOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLmM6CisgICAgICAgIChtYWlu
KToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5jcHA6IEFkZGVkLgorICAgICAgICAoQVBJ
U3RyaW5nOjpBUElTdHJpbmcpOgorICAgICAgICAoQVBJU3RyaW5nOjp+QVBJU3RyaW5nKToKKyAg
ICAgICAgKEFQSVN0cmluZzo6b3BlcmF0b3IgSlNTdHJpbmdSZWYpOgorICAgICAgICAoQVBJQ29u
dGV4dDo6QVBJQ29udGV4dCk6CisgICAgICAgIChBUElDb250ZXh0Ojp+QVBJQ29udGV4dCk6Cisg
ICAgICAgIChBUElDb250ZXh0OjpvcGVyYXRvciBKU0dsb2JhbENvbnRleHRSZWYpOgorICAgICAg
ICAoQVBJVmVjdG9yOjpBUElWZWN0b3IpOgorICAgICAgICAoQVBJVmVjdG9yOjp+QVBJVmVjdG9y
KToKKyAgICAgICAgKEFQSVZlY3Rvcjo6YXBwZW5kKToKKyAgICAgICAgKHRlc3RDQVBJVmlhQ3Bw
KToKKyAgICAgICAgKFRlc3RBUEk6OmV2YWx1YXRlU2NyaXB0KToKKyAgICAgICAgKFRlc3RBUEk6
OmNhbGxGdW5jdGlvbik6CisgICAgICAgIChUZXN0QVBJOjpmdW5jdGlvblJldHVybnNUcnVlKToK
KyAgICAgICAgKFRlc3RBUEk6OmNoZWNrKToKKyAgICAgICAgKFRlc3RBUEk6OmNoZWNrSlNBbmRB
UElNYXRjaCk6CisgICAgICAgIChUZXN0QVBJOjppbnRlcmVzdGluZ09iamVjdHMpOgorICAgICAg
ICAoVGVzdEFQSTo6aW50ZXJlc3RpbmdLZXlzKToKKyAgICAgICAgKFRlc3RBUEk6OnJ1bik6Cisg
ICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkubW06CisgICAgICAgICh0ZXN0T2JqZWN0aXZlQ0FQ
SU1haW4pOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogY29uZmlnLmg6CisgICAgICAgICogcG9zdHByb2Nlc3MtaGVhZGVycy5z
aDoKKwogMjAxOC0wNi0wNyAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBEb24ndCB0cnkgdG8gYWxsb2NhdGUgSklUIG1lbW9yeSBpZiB3ZSBkb24ndCBoYXZl
IHRoZSBKSVQgZW50aXRsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNCYXNlUHJpdmF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VQcml2
YXRlLmgKaW5kZXggMTM3NTk0OTcyNzVlNThiZWIwYzEyMjEzNTVmOWZiZWQ0M2QzYjFhNS4uYjZj
OTIwNGM0Y2JkNzJjNGY3YzlmNmExZjU0Y2Q1ZDM0MTU2ZDE0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VQcml2YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0Jhc2VQcml2YXRlLmgKQEAgLTQzLDcgKzQzLDcgQEAgb3ducyBhIGxhcmdl
IG5vbi1HQyBtZW1vcnkgcmVnaW9uLiBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBlbmNvdXJh
Z2UgdGhlCiBnYXJiYWdlIGNvbGxlY3RvciB0byBjb2xsZWN0IHNvb24sIGhvcGluZyB0byByZWNs
YWltIHRoYXQgbGFyZ2Ugbm9uLUdDIG1lbW9yeQogcmVnaW9uLgogKi8KLUpTX0VYUE9SVCB2b2lk
IEpTUmVwb3J0RXh0cmFNZW1vcnlDb3N0KEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBzaXplKSBD
Rl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCB2b2lkIEpTUmVwb3J0RXh0cmFNZW1v
cnlDb3N0KEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBzaXplKSBKU0NfQVBJX0FWQUlMQUJMRSht
YWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogSlNfRVhQT1JUIHZvaWQgSlNEaXNhYmxlR0NUaW1l
cih2b2lkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRl
eHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmgKaW5kZXggMTk0ZTM1
MmJmZTdhZTc1ZjIzNThjZWU2M2Q0NDhmZTFmYTI0ZDM4Mi4uYjFiYmE2OTk0ODIzZjc2ZjY4OGY3
OTdmZjkyOWY5MzllNDc4NWIyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NvbnRleHQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5o
CkBAIC0zOSw3ICszOSw3IEBACiAgSmF2YVNjcmlwdCBleGVjdXRpb24gdGFrZXMgcGxhY2Ugd2l0
aGluIGEgY29udGV4dCwgYW5kIGFsbCBKYXZhU2NyaXB0IHZhbHVlcwogIGFyZSB0aWVkIHRvIGEg
Y29udGV4dC4KICovCi1OU19DTEFTU19BVkFJTEFCTEUoMTBfOSwgN18wKQorSlNDX0NMQVNTX0FW
QUlMQUJMRShtYWNvc3goMTAuOSksIGlvcyg3LjApKQogQGludGVyZmFjZSBKU0NvbnRleHQgOiBO
U09iamVjdAogCiAvKiEKQEAgLTc4LDcgKzc4LDcgQEAgTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzks
IDdfMCkKIEBwYXJhbSBzb3VyY2VVUkwgQSBVUkwgZm9yIHRoZSBzY3JpcHQncyBzb3VyY2UgZmls
ZS4gVXNlZCBieSBkZWJ1Z2dlcnMgYW5kIHdoZW4gcmVwb3J0aW5nIGV4Y2VwdGlvbnMuIFRoaXMg
cGFyYW1ldGVyIGlzIGluZm9ybWF0aXZlIG9ubHk6IGl0IGRvZXMgbm90IGNoYW5nZSB0aGUgYmVo
YXZpb3Igb2YgdGhlIHNjcmlwdC4KIEByZXN1bHQgVGhlIGxhc3QgdmFsdWUgZ2VuZXJhdGVkIGJ5
IHRoZSBzY3JpcHQuCiAqLwotLSAoSlNWYWx1ZSAqKWV2YWx1YXRlU2NyaXB0OihOU1N0cmluZyAq
KXNjcmlwdCB3aXRoU291cmNlVVJMOihOU1VSTCAqKXNvdXJjZVVSTCBOU19BVkFJTEFCTEUoMTBf
MTAsIDhfMCk7CistIChKU1ZhbHVlICopZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0
IHdpdGhTb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMIEpTQ19BUElfQVZBSUxBQkxFKG1hY29z
eCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBAbWV0aG9kZ3JvdXAgQ2FsbGJhY2sgQWNjZXNz
b3JzCkBAIC0xMDEsNyArMTAxLDcgQEAgTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzksIDdfMCkKICBh
IGNhbGxiYWNrIGZyb20gSmF2YVNjcmlwdCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiBuaWwuCiBA
cmVzdWx0IFRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIEphdmFTY3JpcHQgZnVuY3Rpb24gb3Igbmls
IGlmIHRoZXJlIGlzbid0IG9uZS4KICovCi0rIChKU1ZhbHVlICopY3VycmVudENhbGxlZSBOU19B
VkFJTEFCTEUoMTBfMTAsIDhfMCk7CisrIChKU1ZhbHVlICopY3VycmVudENhbGxlZSBKU0NfQVBJ
X0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qIQogQG1ldGhvZApAQCAt
MTc2LDcgKzE3Niw3IEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCiBAcHJvcGVydHkK
IEBkaXNjdXNzaW9uIE5hbWUgb2YgdGhlIEpTQ29udGV4dC4gRXhwb3NlZCB3aGVuIHJlbW90ZSBk
ZWJ1Z2dpbmcgdGhlIGNvbnRleHQuCiAqLwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqbmFt
ZSBOU19BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpu
YW1lIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogQGVuZAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFByaXZhdGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UHJpdmF0ZS5oCmluZGV4IDdk
MWQwY2JkYmI0OGMxNzBlYTc2ZDJiZDYyZDczMGMyMDM5ZDZhOTQuLmZmOTYyMmFkZGY2MGI3YzEw
MzU3ZGFjY2YxYzZmNDFlY2I4NjFmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDb250ZXh0UHJpdmF0ZS5oCkBAIC0zNiwxOSArMzYsMTkgQEAKIEBwcm9wZXJ0eQogQGRpc2N1
c3Npb24gUmVtb3RlIGluc3BlY3Rpb24gc2V0dGluZyBvZiB0aGUgSlNDb250ZXh0LiBEZWZhdWx0
IHZhbHVlIGlzIFlFUy4KICovCi1AcHJvcGVydHkgKHNldHRlcj1fc2V0UmVtb3RlSW5zcGVjdGlv
bkVuYWJsZWQ6KSBCT09MIF9yZW1vdGVJbnNwZWN0aW9uRW5hYmxlZCBOU19BVkFJTEFCTEUoMTBf
MTAsIDhfMCk7CitAcHJvcGVydHkgKHNldHRlcj1fc2V0UmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQ6
KSBCT09MIF9yZW1vdGVJbnNwZWN0aW9uRW5hYmxlZCBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3go
MTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qIQogQHByb3BlcnR5CiBAZGlzY3Vzc2lvbiBTZXQgd2hl
dGhlciBvciBub3QgdGhlIG5hdGl2ZSBjYWxsIHN0YWNrIGlzIGluY2x1ZGVkIHdoZW4gcmVwb3J0
aW5nIGV4Y2VwdGlvbnMuIERlZmF1bHQgdmFsdWUgaXMgWUVTLgogKi8KLUBwcm9wZXJ0eSAoc2V0
dGVyPV9zZXRJbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zOikg
Qk9PTCBfaW5jbHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucyBOU19B
VkFJTEFCTEUoMTBfMTAsIDhfMCk7CitAcHJvcGVydHkgKHNldHRlcj1fc2V0SW5jbHVkZXNOYXRp
dmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9uczopIEJPT0wgX2luY2x1ZGVzTmF0aXZl
Q2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEKIEBwcm9wZXJ0eQogQGRpc2N1c3Npb24gU2V0IHRo
ZSBydW4gbG9vcCB0aGUgV2ViIEluc3BlY3RvciBkZWJ1Z2dlciBzaG91bGQgdXNlIHdoZW4gZXZh
bHVhdGluZyBKYXZhU2NyaXB0IGluIHRoZSBKU0NvbnRleHQuCiAqLwotQHByb3BlcnR5IChzZXR0
ZXI9X3NldERlYnVnZ2VyUnVuTG9vcDopIENGUnVuTG9vcFJlZiBfZGVidWdnZXJSdW5Mb29wIE5T
X0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0Bwcm9wZXJ0eSAoc2V0dGVyPV9zZXREZWJ1Z2dlclJ1
bkxvb3A6KSBDRlJ1bkxvb3BSZWYgX2RlYnVnZ2VyUnVuTG9vcCBKU0NfQVBJX0FWQUlMQUJMRSht
YWNvc3goMTAuMTApLCBpb3MoOC4wKSk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0UmVmLmgKaW5kZXggZTE1Y2FlNTc1NzY0OGEyZmM4ZWEyMTcyMWVlZjUzNWJh
ZDM1N2IyNy4uMjhkMGE2N2U5YWUzMjYyMTFhZDk0ZGUzNmM1MjY0YTc1NDJmYWY4OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oCkBAIC01Myw3ICs1Myw3IEBAIGV4
dGVybiAiQyIgewogIEpTQ29udGV4dEdyb3VwJ3MgcnVuIGxvb3Agb25jZSBpdCBoYXMgYmVlbiBj
cmVhdGVkLgogQHJlc3VsdCBUaGUgY3JlYXRlZCBKU0NvbnRleHRHcm91cC4KICovCi1KU19FWFBP
UlQgSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R3JvdXBDcmVhdGUodm9pZCkgQ0ZfQVZBSUxB
QkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R3Jv
dXBDcmVhdGUodm9pZCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7
CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC02MSwxNCArNjEsMTQgQEAgSlNfRVhQT1JUIEpTQ29udGV4
dEdyb3VwUmVmIEpTQ29udGV4dEdyb3VwQ3JlYXRlKHZvaWQpIENGX0FWQUlMQUJMRSgxMF82LCA3
XzApOwogQHBhcmFtIGdyb3VwIFRoZSBKU0NvbnRleHRHcm91cCB0byByZXRhaW4uCiBAcmVzdWx0
IEEgSlNDb250ZXh0R3JvdXAgdGhhdCBpcyB0aGUgc2FtZSBhcyBncm91cC4KICovCi1KU19FWFBP
UlQgSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R3JvdXBSZXRhaW4oSlNDb250ZXh0R3JvdXBS
ZWYgZ3JvdXApIENGX0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQT1JUIEpTQ29udGV4dEdy
b3VwUmVmIEpTQ29udGV4dEdyb3VwUmV0YWluKEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwKSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24K
IEBhYnN0cmFjdCBSZWxlYXNlcyBhIEphdmFTY3JpcHQgY29udGV4dCBncm91cC4KIEBwYXJhbSBn
cm91cCBUaGUgSlNDb250ZXh0R3JvdXAgdG8gcmVsZWFzZS4KICovCi1KU19FWFBPUlQgdm9pZCBK
U0NvbnRleHRHcm91cFJlbGVhc2UoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXApIENGX0FWQUlMQUJM
RSgxMF82LCA3XzApOworSlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3JvdXBSZWxlYXNlKEpTQ29u
dGV4dEdyb3VwUmVmIGdyb3VwKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3
LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTgzLDcgKzgzLDcgQEAgSlNfRVhQT1JUIHZvaWQg
SlNDb250ZXh0R3JvdXBSZWxlYXNlKEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwKSBDRl9BVkFJTEFC
TEUoMTBfNiwKICBOVUxMIHRvIHVzZSB0aGUgZGVmYXVsdCBvYmplY3QgY2xhc3MuCiBAcmVzdWx0
IEEgSlNHbG9iYWxDb250ZXh0IHdpdGggYSBnbG9iYWwgb2JqZWN0IG9mIGNsYXNzIGdsb2JhbE9i
amVjdENsYXNzLgogKi8KLUpTX0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgSlNHbG9iYWxDb250
ZXh0Q3JlYXRlKEpTQ2xhc3NSZWYgZ2xvYmFsT2JqZWN0Q2xhc3MpIENGX0FWQUlMQUJMRSgxMF81
LCA3XzApOworSlNfRVhQT1JUIEpTR2xvYmFsQ29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVh
dGUoSlNDbGFzc1JlZiBnbG9iYWxPYmplY3RDbGFzcykgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjUpLCBpb3MoNy4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC05Nyw3ICs5Nyw3IEBAIEpT
X0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgSlNHbG9iYWxDb250ZXh0Q3JlYXRlKEpTQ2xhc3NS
ZWYgZ2xvYmFsT2JqZWN0Q2xhc3MpCiBAcmVzdWx0IEEgSlNHbG9iYWxDb250ZXh0IHdpdGggYSBn
bG9iYWwgb2JqZWN0IG9mIGNsYXNzIGdsb2JhbE9iamVjdENsYXNzIGFuZCBhIGNvbnRleHQKICBn
cm91cCBlcXVhbCB0byBncm91cC4KICovCi1KU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpT
R2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIEpTQ2xh
c3NSZWYgZ2xvYmFsT2JqZWN0Q2xhc3MpIENGX0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQ
T1JUIEpTR2xvYmFsQ29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKEpTQ29u
dGV4dEdyb3VwUmVmIGdyb3VwLCBKU0NsYXNzUmVmIGdsb2JhbE9iamVjdENsYXNzKSBKU0NfQVBJ
X0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAg
LTEyOCw3ICsxMjgsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNDb250ZXh0R2V0R2xvYmFs
T2JqZWN0KEpTQ29udGV4dFJlZiBjdHgpOwogQHBhcmFtIGN0eCBUaGUgSlNDb250ZXh0IHdob3Nl
IGdyb3VwIHlvdSB3YW50IHRvIGdldC4KIEByZXN1bHQgY3R4J3MgZ3JvdXAuCiAqLwotSlNfRVhQ
T1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdldEdyb3VwKEpTQ29udGV4dFJlZiBjdHgp
IENGX0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQT1JUIEpTQ29udGV4dEdyb3VwUmVmIEpT
Q29udGV4dEdldEdyb3VwKEpTQ29udGV4dFJlZiBjdHgpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29z
eCgxMC42KSwgaW9zKDcuMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTM2LDcgKzEzNiw3IEBA
IEpTX0VYUE9SVCBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHZXRHcm91cChKU0NvbnRleHRS
ZWYgY3R4KSBDRl9BVkFJTEFCTEUoMTBfCiBAcGFyYW0gY3R4IFRoZSBKU0NvbnRleHQgd2hvc2Ug
Z2xvYmFsIGNvbnRleHQgeW91IHdhbnQgdG8gZ2V0LgogQHJlc3VsdCBjdHgncyBnbG9iYWwgY29u
dGV4dC4KICovCi1KU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpTQ29udGV4dEdldEdsb2Jh
bENvbnRleHQoSlNDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEwXzcsIDdfMCk7CitKU19F
WFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpTQ29udGV4dEdldEdsb2JhbENvbnRleHQoSlNDb250
ZXh0UmVmIGN0eCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjcpLCBpb3MoNy4wKSk7CiAK
IC8qIQogQGZ1bmN0aW9uCkBAIC0xNDYsNyArMTQ2LDcgQEAgSlNfRVhQT1JUIEpTR2xvYmFsQ29u
dGV4dFJlZiBKU0NvbnRleHRHZXRHbG9iYWxDb250ZXh0KEpTQ29udGV4dFJlZiBjdHgpIENGX0FW
QUkKIEBkaXNjdXNzaW9uIEEgSlNHbG9iYWxDb250ZXh0J3MgbmFtZSBpcyBleHBvc2VkIGZvciBy
ZW1vdGUgZGVidWdnaW5nIHRvIG1ha2UgaXQKIGVhc2llciB0byBpZGVudGlmeSB0aGUgY29udGV4
dCB5b3Ugd291bGQgbGlrZSB0byBhdHRhY2ggdG8uCiAqLwotSlNfRVhQT1JUIEpTU3RyaW5nUmVm
IEpTR2xvYmFsQ29udGV4dENvcHlOYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpIENGX0FWQUlM
QUJMRSgxMF8xMCwgOF8wKTsKK0pTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU0dsb2JhbENvbnRleHRD
b3B5TmFtZShKU0dsb2JhbENvbnRleHRSZWYgY3R4KSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3go
MTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC0xNTQsNyArMTU0LDcgQEAg
SlNfRVhQT1JUIEpTU3RyaW5nUmVmIEpTR2xvYmFsQ29udGV4dENvcHlOYW1lKEpTR2xvYmFsQ29u
dGV4dFJlZiBjdHgpIENGX0FWQUlMQUIKIEBwYXJhbSBjdHggVGhlIEpTR2xvYmFsQ29udGV4dCB0
aGF0IHlvdSB3YW50IHRvIG5hbWUuCiBAcGFyYW0gbmFtZSBUaGUgcmVtb3RlIGRlYnVnZ2luZyBu
YW1lIHRvIHNldCBvbiBjdHguCiAqLwotSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0
TmFtZShKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBuYW1lKSBDRl9BVkFJTEFC
TEUoMTBfMTAsIDhfMCk7CitKU19FWFBPUlQgdm9pZCBKU0dsb2JhbENvbnRleHRTZXROYW1lKEpT
R2xvYmFsQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIG5hbWUpIEpTQ19BUElfQVZBSUxBQkxF
KG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZkludGVybmFsLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZkludGVybmFsLmgKaW5kZXgg
NzlkN2ViNmYzOWU3ZTJjYThmNGE5Yjk0ZjI3MjI2ZGIyZjcwNTI5NS4uOWQ0ZjE4YTIyOTUwNzI2
ZDkxMDJkMjUwYjVjYWEwY2U3YWQ1YzcyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NvbnRleHRSZWZJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDb250ZXh0UmVmSW50ZXJuYWwuaApAQCAtNDIsNyArNDIsNyBAQCBleHRlcm4gIkMi
IHsKIEBhYnN0cmFjdCBHZXRzIHRoZSBydW4gbG9vcCB1c2VkIGJ5IHRoZSBXZWIgSW5zcGVjdG9y
IGRlYnVnZ2VyIHdoZW4gZXZhbHVhdGluZyBKYXZhU2NyaXB0IGluIHRoaXMgY29udGV4dC4KIEBw
YXJhbSBjdHggVGhlIEpTR2xvYmFsQ29udGV4dCB3aG9zZSBzZXR0aW5nIHlvdSB3YW50IHRvIGdl
dC4KICovCi1KU19FWFBPUlQgQ0ZSdW5Mb29wUmVmIEpTR2xvYmFsQ29udGV4dEdldERlYnVnZ2Vy
UnVuTG9vcChKU0dsb2JhbENvbnRleHRSZWYgY3R4KSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7
CitKU19FWFBPUlQgQ0ZSdW5Mb29wUmVmIEpTR2xvYmFsQ29udGV4dEdldERlYnVnZ2VyUnVuTG9v
cChKU0dsb2JhbENvbnRleHRSZWYgY3R4KSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTAp
LCBpb3MoOC4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC01MCw3ICs1MCw3IEBAIEpTX0VYUE9S
VCBDRlJ1bkxvb3BSZWYgSlNHbG9iYWxDb250ZXh0R2V0RGVidWdnZXJSdW5Mb29wKEpTR2xvYmFs
Q29udGV4dFJlZiBjdHgpCiBAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgdGhhdCB5b3Ug
d2FudCB0byBjaGFuZ2UuCiBAcGFyYW0gcnVuTG9vcCBUaGUgbmV3IHZhbHVlIG9mIHRoZSBzZXR0
aW5nIGZvciB0aGUgY29udGV4dC4KICovCi1KU19FWFBPUlQgdm9pZCBKU0dsb2JhbENvbnRleHRT
ZXREZWJ1Z2dlclJ1bkxvb3AoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwgQ0ZSdW5Mb29wUmVmIHJ1
bkxvb3ApIENGX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0pTX0VYUE9SVCB2b2lkIEpTR2xvYmFs
Q29udGV4dFNldERlYnVnZ2VyUnVuTG9vcChKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBDRlJ1bkxv
b3BSZWYgcnVuTG9vcCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkp
OwogI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWZQcml2YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaAppbmRleCAxOTYwNGVhNzQ5MzdlZmRhOTY3Y2Uz
ZGY1Nzc3ZDJhMTUxNGRhOGRjLi5lYzY3NmQ4Yzg3MTQ4M2Y4M2ZjYzNjNTY0YjU1NGU4MTcwMzcy
MmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZlBy
aXZhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZlByaXZh
dGUuaApAQCAtNDQsNyArNDQsNyBAQCBleHRlcm4gIkMiIHsKIEBwYXJhbSBjdHggVGhlIEpTQ29u
dGV4dCB3aG9zZSBiYWNrdHJhY2UgeW91IHdhbnQgdG8gZ2V0CiBAcmVzdWx0IEEgc3RyaW5nIGNv
bnRhaW5pbmcgdGhlIGJhY2t0cmFjZQogKi8KLUpTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU0NvbnRl
eHRDcmVhdGVCYWNrdHJhY2UoSlNDb250ZXh0UmVmIGN0eCwgdW5zaWduZWQgbWF4U3RhY2tTaXpl
KSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU0NvbnRl
eHRDcmVhdGVCYWNrdHJhY2UoSlNDb250ZXh0UmVmIGN0eCwgdW5zaWduZWQgbWF4U3RhY2tTaXpl
KSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKICAgICAKIAogLyoh
IApAQCAtODUsMTQgKzg1LDE0IEBAIHR5cGVkZWYgYm9vbAogIG5lZWQgdG8gY2FsbCBKU0NvbnRl
eHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdCBiZWZvcmUgeW91IHN0YXJ0IGV4ZWN1dGluZwog
IGFueSBzY3JpcHRzLgogKi8KLUpTX0VYUE9SVCB2b2lkIEpTQ29udGV4dEdyb3VwU2V0RXhlY3V0
aW9uVGltZUxpbWl0KEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwLCBkb3VibGUgbGltaXQsIEpTU2hv
dWxkVGVybWluYXRlQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpIENGX0FWQUlMQUJM
RSgxMF82LCA3XzApOworSlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25U
aW1lTGltaXQoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIGRvdWJsZSBsaW1pdCwgSlNTaG91bGRU
ZXJtaW5hdGVDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogY29udGV4dCkgSlNDX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCiBAYWJzdHJhY3Qg
Q2xlYXJzIHRoZSBzY3JpcHQgZXhlY3V0aW9uIHRpbWUgbGltaXQuCiBAcGFyYW0gZ3JvdXAgVGhl
IEphdmFTY3JpcHQgY29udGV4dCBncm91cCB0aGF0IHRoZSB0aW1lIGxpbWl0IGlzIGNsZWFyZWQg
b24uCiAqLwotSlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3JvdXBDbGVhckV4ZWN1dGlvblRpbWVM
aW1pdChKU0NvbnRleHRHcm91cFJlZiBncm91cCkgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitK
U19FWFBPUlQgdm9pZCBKU0NvbnRleHRHcm91cENsZWFyRXhlY3V0aW9uVGltZUxpbWl0KEpTQ29u
dGV4dEdyb3VwUmVmIGdyb3VwKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3
LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTEwMSw3ICsxMDEsNyBAQCBKU19FWFBPUlQgdm9p
ZCBKU0NvbnRleHRHcm91cENsZWFyRXhlY3V0aW9uVGltZUxpbWl0KEpTQ29udGV4dEdyb3VwUmVm
IGdyb3VwKSBDRgogQHJlc3VsdCBUaGUgdmFsdWUgb2YgdGhlIHNldHRpbmcsIHRydWUgaWYgcmVt
b3RlIGluc3BlY3Rpb24gaXMgZW5hYmxlZCwgb3RoZXJ3aXNlIGZhbHNlLgogQGRpc2N1c3Npb24g
UmVtb3RlIGluc3BlY3Rpb24gaXMgdHJ1ZSBieSBkZWZhdWx0LgogKi8KLUpTX0VYUE9SVCBib29s
IEpTR2xvYmFsQ29udGV4dEdldFJlbW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4
dFJlZiBjdHgpIENGX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0pTX0VYUE9SVCBib29sIEpTR2xv
YmFsQ29udGV4dEdldFJlbW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4dFJlZiBj
dHgpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBA
ZnVuY3Rpb24KQEAgLTEwOSw3ICsxMDksNyBAQCBKU19FWFBPUlQgYm9vbCBKU0dsb2JhbENvbnRl
eHRHZXRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZChKU0dsb2JhbENvbnRleHRSZWYgY3R4KQogQHBh
cmFtIGN0eCBUaGUgSlNHbG9iYWxDb250ZXh0IHRoYXQgeW91IHdhbnQgdG8gY2hhbmdlLgogQHBh
cmFtIGVuYWJsZWQgVGhlIG5ldyByZW1vdGUgaW5zcGVjdGlvbiBlbmFibGVkIHNldHRpbmcgZm9y
IHRoZSBjb250ZXh0LgogKi8KLUpTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldFJlbW90
ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIGJvb2wgZW5hYmxlZCkg
Q0ZfQVZBSUxBQkxFKDEwXzEwLCA4XzApOyAgICAKK0pTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29u
dGV4dFNldFJlbW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIGJv
b2wgZW5hYmxlZCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOyAg
ICAKIAogLyohCiBAZnVuY3Rpb24KQEAgLTExOCw3ICsxMTgsNyBAQCBKU19FWFBPUlQgdm9pZCBK
U0dsb2JhbENvbnRleHRTZXRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZChKU0dsb2JhbENvbnRleHRS
ZWYgY3R4LAogQHJlc3VsdCBUaGUgdmFsdWUgb2YgdGhlIHNldHRpbmcsIHRydWUgaWYgcmVtb3Rl
IGluc3BlY3Rpb24gaXMgZW5hYmxlZCwgb3RoZXJ3aXNlIGZhbHNlLgogQGRpc2N1c3Npb24gVGhp
cyBzZXR0aW5nIGlzIHRydWUgYnkgZGVmYXVsdC4KICovCi1KU19FWFBPUlQgYm9vbCBKU0dsb2Jh
bENvbnRleHRHZXRJbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25z
KEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpIENGX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0pTX0VY
UE9SVCBib29sIEpTR2xvYmFsQ29udGV4dEdldEluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJl
cG9ydGluZ0V4Y2VwdGlvbnMoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkgSlNDX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTI2LDcg
KzEyNiw3IEBAIEpTX0VYUE9SVCBib29sIEpTR2xvYmFsQ29udGV4dEdldEluY2x1ZGVzTmF0aXZl
Q2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMoCiBAcGFyYW0gY3R4IFRoZSBKU0dsb2Jh
bENvbnRleHQgdGhhdCB5b3Ugd2FudCB0byBjaGFuZ2UuCiBAcGFyYW0gaW5jbHVkZXNOYXRpdmVD
YWxsU3RhY2sgVGhlIG5ldyB2YWx1ZSBvZiB0aGUgc2V0dGluZyBmb3IgdGhlIGNvbnRleHQuCiAq
LwotSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0SW5jbHVkZXNOYXRpdmVDYWxsU3Rh
Y2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucyhKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBib29sIGlu
Y2x1ZGVzTmF0aXZlQ2FsbFN0YWNrKSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitKU19FWFBP
UlQgdm9pZCBKU0dsb2JhbENvbnRleHRTZXRJbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBv
cnRpbmdFeGNlcHRpb25zKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIGJvb2wgaW5jbHVkZXNOYXRp
dmVDYWxsU3RhY2spIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsK
IAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTTWFuYWdlZFZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFu
YWdlZFZhbHVlLmgKaW5kZXggMDEwNzNmYWQ5N2U3MGI3NmJkNmI2NmEzNzMzYWYyNjFjYzUyNzQ5
Yy4uOGMyMzExZDA5OGM5ZTdkMmFkNGQ4ZDc5NTI5ZGU1MDE3NDllYWZmZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUuaApAQCAtNDgsNyArNDgsNyBAQCBUaGUg
cHJpbWFyeSB1c2UgZm9yIGEgSlNNYW5hZ2VkVmFsdWUgaXMgdG8gc3RvcmUgYSBKU1ZhbHVlIGlu
IGFuIE9iamVjdGl2ZS1DCiBvciBTd2lmdCBvYmplY3QgdGhhdCBpcyBleHBvcnRlZCB0byBKYXZh
U2NyaXB0LiBJdCBpcyBpbmNvcnJlY3QgdG8gc3RvcmUgYSBKU1ZhbHVlCiBpbiBhbiBvYmplY3Qg
dGhhdCBpcyBleHBvcnRlZCB0byBKYXZhU2NyaXB0LCBzaW5jZSBkb2luZyBzbyBjcmVhdGVzIGEg
cmV0YWluIGN5Y2xlLgogKi8gCi1OU19DTEFTU19BVkFJTEFCTEUoMTBfOSwgN18wKQorSlNDX0NM
QVNTX0FWQUlMQUJMRShtYWNvc3goMTAuOSksIGlvcyg3LjApKQogQGludGVyZmFjZSBKU01hbmFn
ZWRWYWx1ZSA6IE5TT2JqZWN0CiAKIC8qIQpAQCAtNTcsNyArNTcsNyBAQCBOU19DTEFTU19BVkFJ
TEFCTEUoMTBfOSwgN18wKQogQHJlc3VsdCBUaGUgbmV3IEpTTWFuYWdlZFZhbHVlLgogKi8KICsg
KEpTTWFuYWdlZFZhbHVlICopbWFuYWdlZFZhbHVlV2l0aFZhbHVlOihKU1ZhbHVlICopdmFsdWU7
Ci0rIChKU01hbmFnZWRWYWx1ZSAqKW1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZh
bHVlIGFuZE93bmVyOihpZClvd25lciBOU19BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CisrIChKU01h
bmFnZWRWYWx1ZSAqKW1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIGFuZE93
bmVyOihpZClvd25lciBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSk7
CiAKIC8qIQogQG1ldGhvZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNw
cAppbmRleCBkODBhMDcwYjdhYjY5OGZiNDhhNzEwZGU1YTc2MzM5NWJiNDliMjA3Li4wOThlMDNi
ZmIwM2U1Mjg5MGI3OWM1MWQ2MGVmODdjY2VjMjZiM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtMzY2LDYgKzM2NiwxMDAgQEAgdm9pZCBKU09iamVj
dFNldFByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJp
bmdSZWYgcHJvcGUKICAgICBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhj
ZXB0aW9uKTsKIH0KIAorYm9vbCBKU09iamVjdEhhc1Byb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKK3sKKyAgICBpZiAoIWN0eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pT
KGN0eCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2Vy
KHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisKKyAgICBK
U09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9
IHRvSlMoZXhlYywga2V5KS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGlmIChoYW5kbGVFeGNl
cHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6
OkRpZFRocm93KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHJlc3VsdCA9IGpz
T2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBpZGVudCk7CisgICAgaGFuZGxlRXhjZXB0aW9uSWZO
ZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
SlNWYWx1ZVJlZiBKU09iamVjdEdldFByb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2Jq
ZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sK
KyAgICBpZiAoIWN0eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0
KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gdG9KUyhl
eGVjLCBrZXkpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklm
TmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhy
b3cpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgSlNWYWx1ZSBqc1ZhbHVlID0ganNP
YmplY3QtPmdldChleGVjLCBpZGVudCk7CisgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2Nv
cGUsIGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIGpzVmFsdWUpOwor
fQorCit2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmpl
Y3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIGtleSwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNQcm9wZXJ0
eUF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlm
ICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRv
SlMob2JqZWN0KTsKKyAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVlKTsKKwor
ICAgIElkZW50aWZpZXIgaWRlbnQgPSB0b0pTKGV4ZWMsIGtleSkudG9Qcm9wZXJ0eUtleShleGVj
KTsKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlv
bikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ym9vbCBkb2VzTm90SGF2ZVByb3BlcnR5ID0gYXR0cmlidXRlcyAmJiAhanNPYmplY3QtPmhhc1By
b3BlcnR5KGV4ZWMsIGlkZW50KTsKKyAgICBpZiAoTElLRUxZKCFzY29wZS5leGNlcHRpb24oKSkp
IHsKKyAgICAgICAgaWYgKGRvZXNOb3RIYXZlUHJvcGVydHkpIHsKKyAgICAgICAgICAgIFByb3Bl
cnR5RGVzY3JpcHRvciBkZXNjKGpzVmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAganNP
YmplY3QtPm1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KGpzT2JqZWN0LCBleGVjLCBp
ZGVudCwgZGVzYywgZmFsc2UpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QoanNPYmplY3QpOworICAgICAgICAgICAganNPYmplY3QtPm1ldGhvZFRh
YmxlKCktPnB1dChqc09iamVjdCwgZXhlYywgaWRlbnQsIGpzVmFsdWUsIHNsb3QpOworICAgICAg
ICB9CisgICAgfQorICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNl
cHRpb24pOworfQorCitib29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHlLZXkoSlNDb250ZXh0UmVm
IGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIGtleSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRv
SlMoY3R4KTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2Nr
ZXIodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKworICAg
IEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAgICBJZGVudGlmaWVyIGlkZW50
ID0gdG9KUyhleGVjLCBrZXkpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4
Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1
czo6RGlkVGhyb3cpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgcmVzdWx0ID0g
anNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGpzT2JqZWN0LCBleGVjLCBp
ZGVudCk7CisgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlv
bik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogSlNWYWx1ZVJlZiBKU09iamVjdEdldFByb3Bl
cnR5QXRJbmRleChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIHVuc2lnbmVk
IHByb3BlcnR5SW5kZXgsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBpZiAoIWN0eCkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oCmluZGV4IDk1ZDUzYjdmNGU1
OGU5NmYwY2JjMzE1OTVhZjljNDYxOTc4YWE0M2QuLjAxZGY1MTQ4ZjdkZDNlNzM5ZDA2ZDA1NmQ4
MGExZmQ5Njc2NWUzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgK
QEAgLTQ0MSw3ICs0NDEsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQ29u
c3RydWN0b3IoSlNDb250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYQogIEBkaXNjdXNzaW9u
IFRoZSBiZWhhdmlvciBvZiB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGV4YWN0bHkgbWF0Y2ggdGhl
IGJlaGF2aW9yIG9mIHRoZSBidWlsdC1pbiBBcnJheSBjb25zdHJ1Y3Rvci4gU3BlY2lmaWNhbGx5
LCBpZiBvbmUgYXJndW1lbnQgCiAgaXMgc3VwcGxpZWQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBh
biBhcnJheSB3aXRoIG9uZSBlbGVtZW50LgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNP
YmplY3RNYWtlQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZB
SUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQXJy
YXkoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtNDUyLDcgKzQ1
Miw3IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VBcnJheShKU0NvbnRleHRS
ZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwKICBAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRl
ciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnku
IFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEBy
ZXN1bHQgQSBKU09iamVjdCB0aGF0IGlzIGEgRGF0ZS4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0
UmVmIEpTT2JqZWN0TWFrZURhdGUoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikg
Q0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RN
YWtlRGF0ZShKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlM
QUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC00NjMs
NyArNDYzLDcgQEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZURhdGUoSlNDb250
ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGMKICBAcGFyYW0gZXhjZXB0aW9uIEEg
cG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBp
ZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9u
LgogIEByZXN1bHQgQSBKU09iamVjdCB0aGF0IGlzIGEgRXJyb3IuCiAgKi8KLUpTX0VYUE9SVCBK
U09iamVjdFJlZiBKU09iamVjdE1ha2VFcnJvcihKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCBKU09iamVjdFJlZiBK
U09iamVjdE1ha2VFcnJvcihKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiAgQGZ1bmN0aW9u
CkBAIC00NzQsNyArNDc0LDcgQEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUVy
cm9yKEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LAogIEBwYXJhbSBleGNl
cHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNl
cHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBl
eGNlcHRpb24uCiAgQHJlc3VsdCBBIEpTT2JqZWN0IHRoYXQgaXMgYSBSZWdFeHAuCiAgKi8KLUpT
X0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VSZWdFeHAoSlNDb250ZXh0UmVmIGN0eCwg
c2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgSlNP
YmplY3RSZWYgSlNPYmplY3RNYWtlUmVnRXhwKEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1
bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9zKDcuMCkpOwogCiAvKiEK
IEBmdW5jdGlvbgpAQCAtNTM2LDkgKzUzNiw5IEBAIEpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpTT2Jq
ZWN0R2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKCiBA
cGFyYW0gY3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCiBAcGFyYW0gb2JqZWN0IFRo
ZSBKU09iamVjdCB3aG9zZSBwcm9wZXJ0eSB5b3Ugd2FudCB0byBzZXQuCiBAcGFyYW0gcHJvcGVy
dHlOYW1lIEEgSlNTdHJpbmcgY29udGFpbmluZyB0aGUgcHJvcGVydHkncyBuYW1lLgotQHBhcmFt
IHZhbHVlIEEgSlNWYWx1ZSB0byB1c2UgYXMgdGhlIHByb3BlcnR5J3MgdmFsdWUuCi1AcGFyYW0g
ZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4g
ZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUg
YW4gZXhjZXB0aW9uLgorQHBhcmFtIHZhbHVlIEEgSlNWYWx1ZVJlZiB0byB1c2UgYXMgdGhlIHBy
b3BlcnR5J3MgdmFsdWUuCiBAcGFyYW0gYXR0cmlidXRlcyBBIGxvZ2ljYWxseSBPUmVkIHNldCBv
ZiBKU1Byb3BlcnR5QXR0cmlidXRlcyB0byBnaXZlIHRvIHRoZSBwcm9wZXJ0eS4KK0BwYXJhbSBl
eGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBl
eGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBh
biBleGNlcHRpb24uCiAqLwogSlNfRVhQT1JUIHZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eShKU0Nv
bnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKTsKIApAQCAtNTUzLDYgKzU1Myw1NCBAQCBKU19FWFBPUlQgdm9p
ZCBKU09iamVjdFNldFByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVj
dCwgSlNTdHJpbgogKi8KIEpTX0VYUE9SVCBib29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHkoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3Qg
VGVzdHMgd2hldGhlciBhbiBvYmplY3QgaGFzIGEgZ2l2ZW4gcHJvcGVydHkgdXNpbmcgYSBKU1Zh
bHVlUmVmIGFzIHRoZSBwcm9wZXJ0eSBrZXkuCitAcGFyYW0gb2JqZWN0IFRoZSBKU09iamVjdCB0
byB0ZXN0LgorQHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBw
cm9wZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0g
ZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4g
ZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUg
YW4gZXhjZXB0aW9uLgorQHJlc3VsdCB0cnVlIGlmIHRoZSBvYmplY3QgaGFzIGEgcHJvcGVydHkg
d2hvc2UgbmFtZSBtYXRjaGVzIHByb3BlcnR5S2V5LCBvdGhlcndpc2UgZmFsc2UuCitAZGlzY3Vz
c2lvbiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHBlcmZvcm1pbmcgInByb3BlcnR5S2V5
IGluIG9iamVjdCIgZnJvbSBKYXZhU2NyaXB0LgorKi8KK0pTX0VYUE9SVCBib29sIEpTT2JqZWN0
SGFzUHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1Zh
bHVlUmVmIHByb3BlcnR5S2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxB
QkxFKG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CisKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJh
Y3QgR2V0cyBhIHByb3BlcnR5IGZyb20gYW4gb2JqZWN0IHVzaW5nIGEgSlNWYWx1ZVJlZiBhcyB0
aGUgcHJvcGVydHkga2V5LgorQHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNl
LgorQHBhcmFtIG9iamVjdCBUaGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQgdG8g
Z2V0LgorQHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBwcm9w
ZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0gZXhj
ZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhj
ZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4g
ZXhjZXB0aW9uLgorQHJlc3VsdCBUaGUgcHJvcGVydHkncyB2YWx1ZSBpZiBvYmplY3QgaGFzIHRo
ZSBwcm9wZXJ0eSBrZXksIG90aGVyd2lzZSB0aGUgdW5kZWZpbmVkIHZhbHVlLgorQGRpc2N1c3Np
b24gVGhpcyBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyBwZXJmb3JtaW5nICJvYmplY3RbcHJvcGVy
dHlLZXldIiBmcm9tIEphdmFTY3JpcHQuCisqLworSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNPYmpl
Y3RHZXRQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpT
VmFsdWVSZWYgcHJvcGVydHlLZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKKworLyohCitAZnVuY3Rpb24KK0BhYnN0
cmFjdCBTZXRzIGEgcHJvcGVydHkgb24gYW4gb2JqZWN0IHVzaW5nIGEgSlNWYWx1ZVJlZiBhcyB0
aGUgcHJvcGVydHkga2V5LgorQHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNl
LgorQHBhcmFtIG9iamVjdCBUaGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQgdG8g
c2V0LgorQHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBwcm9w
ZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0gdmFs
dWUgQSBKU1ZhbHVlUmVmIHRvIHVzZSBhcyB0aGUgcHJvcGVydHkncyB2YWx1ZS4KK0BwYXJhbSBh
dHRyaWJ1dGVzIEEgbG9naWNhbGx5IE9SZWQgc2V0IG9mIEpTUHJvcGVydHlBdHRyaWJ1dGVzIHRv
IGdpdmUgdG8gdGhlIHByb3BlcnR5LgorQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBK
U1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5V
TEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KK0BkaXNjdXNzaW9u
IFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXMgcGVyZm9ybWluZyAib2JqZWN0W3Byb3BlcnR5
S2V5XSA9IHZhbHVlIiBmcm9tIEphdmFTY3JpcHQuCisqLworSlNfRVhQT1JUIHZvaWQgSlNPYmpl
Y3RTZXRQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpT
VmFsdWVSZWYgcHJvcGVydHlLZXksIEpTVmFsdWVSZWYgdmFsdWUsIEpTUHJvcGVydHlBdHRyaWJ1
dGVzIGF0dHJpYnV0ZXMsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKKworLyohCitAZnVuY3Rpb24KK0BhYnN0cmFjdCBE
ZWxldGVzIGEgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QgdXNpbmcgYSBKU1ZhbHVlUmVmIGFzIHRo
ZSBwcm9wZXJ0eSBrZXkuCitAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2Uu
CitAcGFyYW0gb2JqZWN0IFRoZSBKU09iamVjdCB3aG9zZSBwcm9wZXJ0eSB5b3Ugd2FudCB0byBk
ZWxldGUuCitAcGFyYW0gcHJvcGVydHlLZXkgQSBKU1ZhbHVlUmVmIGNvbnRhaW5pbmcgdGhlIHBy
b3BlcnR5IGtleSB0byB1c2Ugd2hlbiBsb29raW5nIHVwIHRoZSBwcm9wZXJ0eS4KK0BwYXJhbSBl
eGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBl
eGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBh
biBleGNlcHRpb24uCitAcmVzdWx0IHRydWUgaWYgdGhlIGRlbGV0ZSBvcGVyYXRpb24gc3VjY2Vl
ZHMsIG90aGVyd2lzZSBmYWxzZSAoZm9yIGV4YW1wbGUsIGlmIHRoZSBwcm9wZXJ0eSBoYXMgdGhl
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSBhdHRyaWJ1dGUgc2V0KS4KK0BkaXNjdXNz
aW9uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXMgcGVyZm9ybWluZyAiZGVsZXRlIG9iamVj
dFtwcm9wZXJ0eUtleV0iIGZyb20gSmF2YVNjcmlwdC4KKyovCitKU19FWFBPUlQgYm9vbCBKU09i
amVjdERlbGV0ZVByb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVj
dCwgSlNWYWx1ZVJlZiBwcm9wZXJ0eUtleSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJ
X0FWQUlMQUJMRShtYWNvc3goMTAuMTMpLCBpb3MoMTEuMCkpOworCiAvKiEKIEBmdW5jdGlvbgog
QGFic3RyYWN0IEdldHMgYSBwcm9wZXJ0eSBmcm9tIGFuIG9iamVjdCBieSBudW1lcmljIGluZGV4
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1JlbW90ZUluc3BlY3Rv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1JlbW90ZUluc3BlY3Rvci5oCmluZGV4
IGM4YmFjNmRkMGU0YTY0ODA5Y2IzNDUwY2RiYTRjMDM5N2E0OGEwNTcuLjYxODZiOTIzZWM4YWI4
Yjk0OGU3OTNhZjA0YmRkODQzMjc0MDAzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTUmVtb3RlSW5zcGVjdG9yLmgKQEAgLTQwLDE0ICs0MCwxNCBAQCB0eXBlZGVmIHBpZF90
IEpTUHJvY2Vzc0lEOwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotSlNfRVhQT1JUIHZvaWQgSlNS
ZW1vdGVJbnNwZWN0b3JEaXNhYmxlQXV0b1N0YXJ0KHZvaWQpIENGX0FWQUlMQUJMRSgxMF8xMSwg
OV8wKTsKLUpTX0VYUE9SVCB2b2lkIEpTUmVtb3RlSW5zcGVjdG9yU3RhcnQodm9pZCkgQ0ZfQVZB
SUxBQkxFKDEwXzExLCA5XzApOwotSlNfRVhQT1JUIHZvaWQgSlNSZW1vdGVJbnNwZWN0b3JTZXRQ
YXJlbnRQcm9jZXNzSW5mb3JtYXRpb24oSlNQcm9jZXNzSUQsIGNvbnN0IHVpbnQ4X3QqIGF1ZGl0
RGF0YSwgc2l6ZV90IGF1ZGl0TGVuZ3RoKSBDRl9BVkFJTEFCTEUoMTBfMTEsIDlfMCk7CitKU19F
WFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvckRpc2FibGVBdXRvU3RhcnQodm9pZCkgSlNDX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOworSlNfRVhQT1JUIHZvaWQgSlNS
ZW1vdGVJbnNwZWN0b3JTdGFydCh2b2lkKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEp
LCBpb3MoOS4wKSk7CitKU19FWFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvclNldFBhcmVudFBy
b2Nlc3NJbmZvcm1hdGlvbihKU1Byb2Nlc3NJRCwgY29uc3QgdWludDhfdCogYXVkaXREYXRhLCBz
aXplX3QgYXVkaXRMZW5ndGgpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSksIGlvcyg5
LjApKTsKIAotSlNfRVhQT1JUIHZvaWQgSlNSZW1vdGVJbnNwZWN0b3JTZXRMb2dUb1N5c3RlbUNv
bnNvbGUoYm9vbCkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzApOworSlNfRVhQT1JUIHZvaWQgSlNS
ZW1vdGVJbnNwZWN0b3JTZXRMb2dUb1N5c3RlbUNvbnNvbGUoYm9vbCkgSlNDX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOwogCi1KU19FWFBPUlQgYm9vbCBKU1JlbW90ZUlu
c3BlY3RvckdldEluc3BlY3Rpb25FbmFibGVkQnlEZWZhdWx0KHZvaWQpIENGX0FWQUlMQUJMRSgx
MF8xMSwgOV8wKTsKLUpTX0VYUE9SVCB2b2lkIEpTUmVtb3RlSW5zcGVjdG9yU2V0SW5zcGVjdGlv
bkVuYWJsZWRCeURlZmF1bHQoYm9vbCkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzApOworSlNfRVhQ
T1JUIGJvb2wgSlNSZW1vdGVJbnNwZWN0b3JHZXRJbnNwZWN0aW9uRW5hYmxlZEJ5RGVmYXVsdCh2
b2lkKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CitKU19FWFBP
UlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvclNldEluc3BlY3Rpb25FbmFibGVkQnlEZWZhdWx0KGJv
b2wpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSksIGlvcyg5LjApKTsKIAogI2lmZGVm
IF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VHlwZWRBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuaApp
bmRleCBlMjNiNzZkMmViNGFhNWE0OThiNTVlYmE0NzM3NDYzZjZjYjkzOWFjLi42ZDg2MDIyZmE1
Njk5NTQ2NDZiZWVhM2FlOWVmZjdiMmNhMzZhMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNUeXBlZEFycmF5LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgZXh0ZXJuICJDIiB7CiAgQHBhcmFt
IGV4Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3Jl
IGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0
b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAgICAgIEEgSlNPYmplY3RSZWYgdGhh
dCBpcyBhIFR5cGVkIEFycmF5IHdpdGggYWxsIGVsZW1lbnRzIHNldCB0byB6ZXJvIG9yIE5VTEwg
aWYgdGhlcmUgd2FzIGFuIGVycm9yLgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmpl
Y3RNYWtlVHlwZWRBcnJheShKU0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5
VHlwZSwgc2l6ZV90IGxlbmd0aCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUo
MTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVR5cGVkQXJy
YXkoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBlZEFycmF5VHlwZSBhcnJheVR5cGUsIHNpemVfdCBs
ZW5ndGgsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEw
LjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC02MCw3ICs2MCw3IEBAIEpT
X0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5KEpTQ29udGV4dFJlZiBj
dHgsIEpTVHlwZWRBcnJheVR5cGUKICBAcmVzdWx0ICAgICAgICAgICAgICAgICAgIEEgSlNPYmpl
Y3RSZWYgVHlwZWQgQXJyYXkgd2hvc2UgYmFja2luZyBzdG9yZSBpcyB0aGUgc2FtZSBhcyB0aGUg
b25lIHBvaW50ZWQgdG8gYnkgYnl0ZXMgb3IgTlVMTCBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAg
QGRpc2N1c3Npb24gICAgICAgICAgICAgICBJZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGR1cmlu
ZyB0aGlzIGZ1bmN0aW9uIHRoZSBieXRlc0RlYWxsb2NhdG9yIHdpbGwgYWx3YXlzIGJlIGNhbGxl
ZC4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVR5cGVkQXJyYXlXaXRo
Qnl0ZXNOb0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBlZEFycmF5VHlwZSBhcnJheVR5cGUs
IHZvaWQqIGJ5dGVzLCBzaXplX3QgYnl0ZUxlbmd0aCwgSlNUeXBlZEFycmF5Qnl0ZXNEZWFsbG9j
YXRvciBieXRlc0RlYWxsb2NhdG9yLCB2b2lkKiBkZWFsbG9jYXRvckNvbnRleHQsIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK0pTX0VYUE9SVCBKU09i
amVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEJ5dGVzTm9Db3B5KEpTQ29udGV4dFJl
ZiBjdHgsIEpTVHlwZWRBcnJheVR5cGUgYXJyYXlUeXBlLCB2b2lkKiBieXRlcywgc2l6ZV90IGJ5
dGVMZW5ndGgsIEpTVHlwZWRBcnJheUJ5dGVzRGVhbGxvY2F0b3IgYnl0ZXNEZWFsbG9jYXRvciwg
dm9pZCogZGVhbGxvY2F0b3JDb250ZXh0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElf
QVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpA
QCAtNzEsNyArNzEsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRB
cnJheVdpdGhCeXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4LCBKUwogIEBwYXJhbSBleGNlcHRp
b24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNl
cHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBl
eGNlcHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgICBBIEpTT2JqZWN0UmVmIHRoYXQgaXMgYSBU
eXBlZCBBcnJheSBvciBOVUxMIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4gVGhlIGJhY2tpbmcgc3Rv
cmUgb2YgdGhlIFR5cGVkIEFycmF5IHdpbGwgYmUgYnVmZmVyLgogICovCi1KU19FWFBPUlQgSlNP
YmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhBcnJheUJ1ZmZlcihKU0NvbnRleHRS
ZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgSlNPYmplY3RSZWYgYnVmZmVyLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBP
UlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhBcnJheUJ1ZmZlcihKU0Nv
bnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgSlNPYmplY3RSZWYgYnVm
ZmVyLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4x
MiksIGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtODQsNyArODQsNyBAQCBKU19F
WFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhBcnJheUJ1ZmZlcihK
U0NvbnRleHRSZWYgY3R4LCBKUwogIEBwYXJhbSBleGNlcHRpb24gICAgQSBwb2ludGVyIHRvIGEg
SlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBO
VUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCAg
ICAgICAgICAgICBBIEpTT2JqZWN0UmVmIHRoYXQgaXMgYSBUeXBlZCBBcnJheSBvciBOVUxMIGlm
IHRoZXJlIHdhcyBhbiBlcnJvci4gVGhlIGJhY2tpbmcgc3RvcmUgb2YgdGhlIFR5cGVkIEFycmF5
IHdpbGwgYmUgYnVmZmVyLgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtl
VHlwZWRBcnJheVdpdGhBcnJheUJ1ZmZlckFuZE9mZnNldChKU0NvbnRleHRSZWYgY3R4LCBKU1R5
cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgSlNPYmplY3RSZWYgYnVmZmVyLCBzaXplX3QgYnl0ZU9m
ZnNldCwgc2l6ZV90IGxlbmd0aCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUo
MTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVR5cGVkQXJy
YXlXaXRoQXJyYXlCdWZmZXJBbmRPZmZzZXQoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBlZEFycmF5
VHlwZSBhcnJheVR5cGUsIEpTT2JqZWN0UmVmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNp
emVfdCBsZW5ndGgsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFj
b3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC05NSw3ICs5NSw3
IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEFycmF5
QnVmZmVyQW5kT2Zmc2V0KEpTQ29udGV4dFJlCiAgQHJlc3VsdCAgICAgICAgICAgICBBIHBvaW50
ZXIgdG8gdGhlIHJhdyBkYXRhIGJ1ZmZlciB0aGF0IHNlcnZlcyBhcyBvYmplY3QncyBiYWNraW5n
IHN0b3JlIG9yIE5VTEwgaWYgb2JqZWN0IGlzIG5vdCBhIFR5cGVkIEFycmF5IG9iamVjdC4KICBA
ZGlzY3Vzc2lvbiAgICAgICAgIFRoZSBwb2ludGVyIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24g
aXMgdGVtcG9yYXJ5IGFuZCBpcyBub3QgZ3VhcmFudGVlZCB0byByZW1haW4gdmFsaWQgYWNyb3Nz
IEphdmFTY3JpcHRDb3JlIEFQSSBjYWxscy4KICAqLwotSlNfRVhQT1JUIHZvaWQqIEpTT2JqZWN0
R2V0VHlwZWRBcnJheUJ5dGVzUHRyKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVj
dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNf
RVhQT1JUIHZvaWQqIEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5dGVzUHRyKEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FW
QUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAvKiEKICBAZnVuY3Rpb24KQEAg
LTEwNSw3ICsxMDUsNyBAQCBKU19FWFBPUlQgdm9pZCogSlNPYmplY3RHZXRUeXBlZEFycmF5Qnl0
ZXNQdHIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZQogIEBwYXJhbSBleGNlcHRp
b24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNl
cHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBl
eGNlcHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgICBUaGUgbGVuZ3RoIG9mIHRoZSBUeXBlZCBB
cnJheSBvYmplY3Qgb3IgMCBpZiB0aGUgb2JqZWN0IGlzIG5vdCBhIFR5cGVkIEFycmF5IG9iamVj
dC4KICAqLwotSlNfRVhQT1JUIHNpemVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlMZW5ndGgoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
IENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0
VHlwZWRBcnJheUxlbmd0aChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9z
KDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC0xMTUsNyArMTE1LDcgQEAgSlNfRVhQT1JU
IHNpemVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlMZW5ndGgoSlNDb250ZXh0UmVmIGN0eCwgSlNP
YmplY3RSZWYgb2JqZWMKICBAcGFyYW0gZXhjZXB0aW9uICAgIEEgcG9pbnRlciB0byBhIEpTVmFs
dWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBp
ZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1bHQgICAgICAg
ICAgICAgVGhlIGJ5dGUgbGVuZ3RoIG9mIHRoZSBUeXBlZCBBcnJheSBvYmplY3Qgb3IgMCBpZiB0
aGUgb2JqZWN0IGlzIG5vdCBhIFR5cGVkIEFycmF5IG9iamVjdC4KICAqLwotSlNfRVhQT1JUIHNp
emVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlCeXRlTGVuZ3RoKEpTQ29udGV4dFJlZiBjdHgsIEpT
T2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBf
MTIsIDEwXzApOworSlNfRVhQT1JUIHNpemVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlCeXRlTGVu
Z3RoKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAv
KiEKICBAZnVuY3Rpb24KQEAgLTEyNSw3ICsxMjUsNyBAQCBKU19FWFBPUlQgc2l6ZV90IEpTT2Jq
ZWN0R2V0VHlwZWRBcnJheUJ5dGVMZW5ndGgoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYg
bwogIEBwYXJhbSBleGNlcHRpb24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGlj
aCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3Qg
Y2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgICBUaGUgYnl0
ZSBvZmZzZXQgb2YgdGhlIFR5cGVkIEFycmF5IG9iamVjdCBvciAwIGlmIHRoZSBvYmplY3QgaXMg
bm90IGEgVHlwZWQgQXJyYXkgb2JqZWN0LgogICovCi1KU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2Jq
ZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitK
U19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoSlNDb250ZXh0
UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19B
UElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlv
bgpAQCAtMTM1LDcgKzEzNSw3IEBAIEpTX0VYUE9SVCBzaXplX3QgSlNPYmplY3RHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvCiAgQHBhcmFtIGV4
Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFu
IGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3Jl
IGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAgICAgIEEgSlNPYmplY3RSZWYgd2l0aCBh
IEpTVHlwZWRBcnJheVR5cGUgb2Yga0pTVHlwZWRBcnJheVR5cGVBcnJheUJ1ZmZlciBvciBOVUxM
IGlmIG9iamVjdCBpcyBub3QgYSBUeXBlZCBBcnJheS4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0
UmVmIEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ1ZmZlcihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVj
dFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAx
MF8wKTsKK0pTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdEdldFR5cGVkQXJyYXlCdWZmZXIo
SlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKIC8vIC0t
LS0tLS0tLS0tLS0gQXJyYXkgQnVmZmVyIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tCiAKQEAgLTE1
MSw3ICsxNTEsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RHZXRUeXBlZEFycmF5
QnVmZmVyKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmCiAgQHJlc3VsdCAgICAgICAgICAg
ICAgICAgICBBIEpTT2JqZWN0UmVmIEFycmF5IEJ1ZmZlciB3aG9zZSBiYWNraW5nIHN0b3JlIGlz
IHRoZSBzYW1lIGFzIHRoZSBvbmUgcG9pbnRlZCB0byBieSBieXRlcyBvciBOVUxMIGlmIHRoZXJl
IHdhcyBhbiBlcnJvci4KICBAZGlzY3Vzc2lvbiAgICAgICAgICAgICAgIElmIGFuIGV4Y2VwdGlv
biBpcyB0aHJvd24gZHVyaW5nIHRoaXMgZnVuY3Rpb24gdGhlIGJ5dGVzRGVhbGxvY2F0b3Igd2ls
bCBhbHdheXMgYmUgY2FsbGVkLgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RN
YWtlQXJyYXlCdWZmZXJXaXRoQnl0ZXNOb0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgdm9pZCogYnl0
ZXMsIHNpemVfdCBieXRlTGVuZ3RoLCBKU1R5cGVkQXJyYXlCeXRlc0RlYWxsb2NhdG9yIGJ5dGVz
RGVhbGxvY2F0b3IsIHZvaWQqIGRlYWxsb2NhdG9yQ29udGV4dCwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpT
T2JqZWN0TWFrZUFycmF5QnVmZmVyV2l0aEJ5dGVzTm9Db3B5KEpTQ29udGV4dFJlZiBjdHgsIHZv
aWQqIGJ5dGVzLCBzaXplX3QgYnl0ZUxlbmd0aCwgSlNUeXBlZEFycmF5Qnl0ZXNEZWFsbG9jYXRv
ciBieXRlc0RlYWxsb2NhdG9yLCB2b2lkKiBkZWFsbG9jYXRvckNvbnRleHQsIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsK
IAogLyohCiAgQGZ1bmN0aW9uCkBAIC0xNjEsNyArMTYxLDcgQEAgSlNfRVhQT1JUIEpTT2JqZWN0
UmVmIEpTT2JqZWN0TWFrZUFycmF5QnVmZmVyV2l0aEJ5dGVzTm9Db3B5KEpTQ29udGV4dFJlZiBj
dHgsIHYKICBAcmVzdWx0ICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIHJhdyBkYXRhIGJ1ZmZl
ciB0aGF0IHNlcnZlcyBhcyBvYmplY3QncyBiYWNraW5nIHN0b3JlIG9yIE5VTEwgaWYgb2JqZWN0
IGlzIG5vdCBhbiBBcnJheSBCdWZmZXIgb2JqZWN0LgogIEBkaXNjdXNzaW9uICAgICAgIFRoZSBw
b2ludGVyIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24gaXMgdGVtcG9yYXJ5IGFuZCBpcyBub3Qg
Z3VhcmFudGVlZCB0byByZW1haW4gdmFsaWQgYWNyb3NzIEphdmFTY3JpcHRDb3JlIEFQSSBjYWxs
cy4KICAqLwotSlNfRVhQT1JUIHZvaWQqIEpTT2JqZWN0R2V0QXJyYXlCdWZmZXJCeXRlc1B0cihK
U0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK0pTX0VYUE9SVCB2b2lkKiBKU09iamVjdEdl
dEFycmF5QnVmZmVyQnl0ZXNQdHIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiks
IGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtMTcxLDcgKzE3MSw3IEBAIEpTX0VY
UE9SVCB2b2lkKiBKU09iamVjdEdldEFycmF5QnVmZmVyQnl0ZXNQdHIoSlNDb250ZXh0UmVmIGN0
eCwgSlNPYmplY3RSZWYgb2JqCiAgQHBhcmFtIGV4Y2VwdGlvbiAgQSBwb2ludGVyIHRvIGEgSlNW
YWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxM
IGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCAgICAg
ICAgICAgVGhlIG51bWJlciBvZiBieXRlcyBzdG9yZWQgaW4gdGhlIGRhdGEgb2JqZWN0LgogICov
Ci1KU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0QXJyYXlCdWZmZXJCeXRlTGVuZ3RoKEpTQ29u
dGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBD
Rl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIHNpemVfdCBKU09iamVjdEdldEFy
cmF5QnVmZmVyQnl0ZUxlbmd0aChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3Qs
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwg
aW9zKDEwLjApKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNWYWx1ZS5oCmluZGV4IDE0MTBkZDc0YTE3Zjk3MDcwNmU0NGRlZDI0Y2NkMTcwYzM0NzljMmUu
LjYyY2JlMjFhOWIyMWI2MzViMmNhZTRkNWQ2OTg0MTI2MzIxNmM2MjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNWYWx1ZS5oCkBAIC00NCw3ICs0NCw3IEBACiAgSlNWYWx1ZSB0byBhIG1ldGhv
ZCBvciBwcm9wZXJ0eSBvZiBhIEpTVmFsdWUgb3IgSlNDb250ZXh0IG9yaWdpbmF0aW5nIGZyb20g
YQogIGRpZmZlcmVudCBKU1ZpcnR1YWxNYWNoaW5lLiBEb2luZyBzbyB3aWxsIHJhaXNlIGFuIE9i
amVjdGl2ZS1DIGV4Y2VwdGlvbi4KICovCi1OU19DTEFTU19BVkFJTEFCTEUoMTBfOSwgN18wKQor
SlNDX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goMTAuOSksIGlvcyg3LjApKQogQGludGVyZmFjZSBK
U1ZhbHVlIDogTlNPYmplY3QKIAogLyohCkBAIC0xNDgsNiArMTQ4LDE1IEBAIE5TX0NMQVNTX0FW
QUlMQUJMRSgxMF85LCA3XzApCiAqLwogKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFVuZGVmaW5lZElu
Q29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKIAorLyohCisgQG1ldGhvZAorIEBhYnN0cmFj
dCBDcmVhdGUgYSBuZXcsIHVuaXF1ZSwgc3ltYm9sIG9iamVjdC4KKyBAcGFyYW0gZGVzY3JpcHRp
b24gVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBzeW1ib2wgb2JqZWN0IGJlaW5nIGNyZWF0ZWQuCisg
QHBhcmFtIGNvbnRleHQgVGhlIEpTQ29udGV4dCB0byB3aGljaCB0aGUgcmVzdWx0aW5nIEpTVmFs
dWUgYmVsb25ncy4KKyBAcmVzdWx0IFRoZSBKU1ZhbHVlIHJlcHJlc2VudGluZyBhIHVuaXF1ZSBK
YXZhU2NyaXB0IHZhbHVlIHdpdGggdHlwZSBzeW1ib2wuCisgKi8KKysgKEpTVmFsdWUgKil2YWx1
ZVdpdGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246KE5TU3RyaW5nICopZGVzY3JpcHRpb24gaW5D
b250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0IEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeChKU0Nf
TUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpOworCiAvKiEKIEBtZXRob2Rncm91cCBDb252ZXJ0
aW5nIHRvIE9iamVjdGl2ZS1DIFR5cGVzCiBAZGlzY3Vzc2lvbiBXaGVuIGNvbnZlcnRpbmcgYmV0
d2VlbiBKYXZhU2NyaXB0IHZhbHVlcyBhbmQgT2JqZWN0aXZlLUMgb2JqZWN0cyBhIGNvcHkgaXMK
QEAgLTMwNSw0MyArMzE0LDUyIEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCiAvKiEK
IEBtZXRob2Rncm91cCBBY2Nlc3NpbmcgUHJvcGVydGllcwogKi8KKworI2lmICEoZGVmaW5lZChf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAoZGVmaW5lZChfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMTAwMDApCisK
IC8qIQogQG1ldGhvZAogQGFic3RyYWN0IEFjY2VzcyBhIHByb3BlcnR5IG9mIGEgSlNWYWx1ZS4K
IEByZXN1bHQgVGhlIEpTVmFsdWUgZm9yIHRoZSByZXF1ZXN0ZWQgcHJvcGVydHkgb3IgdGhlIEpT
VmFsdWUgPGNvZGU+dW5kZWZpbmVkPC9jb2RlPiAKICBpZiB0aGUgcHJvcGVydHkgZG9lcyBub3Qg
ZXhpc3QuCitAZGlzY3Vzc2lvbiBDb3JyZXNwb25kcyB0byB0aGUgSmF2YVNjcmlwdCBvcGVyYXRp
b24gPGNvZGU+b2JqZWN0W3Byb3BlcnR5XTwvY29kZT4uIFBhc3MgYW4gTlNTdHJpbmcgKiB0byBh
Y2Nlc3MgYSBuYW1lZCBwcm9wZXJ0eS4gT3RoZXIgdmFsaWQgcHJvcGVydGllcyBpbmNsdWRlIHN5
bWJvbHMsIG51bWJlcnMsIGFuZCBzdHJpbmdpZmlhYmxlIG9iamVjdHMuIEluIG1hY09TIDEwLjEz
IGFuZCBpT1MgMTEgYW5kIGJlbG93LCAncHJvcGVydHknIHdhcyBhbiBOU1N0cmluZyAqLgogKi8K
LS0gKEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLSAo
SlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KGlkKXByb3BlcnR5OwogCiAvKiEKIEBtZXRob2QK
IEBhYnN0cmFjdCBTZXQgYSBwcm9wZXJ0eSBvbiBhIEpTVmFsdWUuCitAZGlzY3Vzc2lvbiBDb3Jy
ZXNwb25kcyB0byB0aGUgSmF2YVNjcmlwdCBvcGVyYXRpb24gPGNvZGU+b2JqZWN0W3Byb3BlcnR5
XSA9IHZhbHVlPC9jb2RlPi4gUGFzcyBhbiBOU1N0cmluZyAqIHRvIGFjY2VzcyBhIG5hbWVkIHBy
b3BlcnR5LiBPdGhlciB2YWxpZCBwcm9wZXJ0aWVzIGluY2x1ZGUgc3ltYm9scywgbnVtYmVycywg
YW5kIHN0cmluZ2lmaWFibGUgb2JqZWN0cy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUyAxMSBhbmQg
YmVsb3csICdwcm9wZXJ0eScgd2FzIGFuIE5TU3RyaW5nICouCiAqLwotLSAodm9pZClzZXRWYWx1
ZTooaWQpdmFsdWUgZm9yUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7CistICh2b2lkKXNl
dFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooaWQpcHJvcGVydHk7CiAKIC8qIQogQG1ldGhv
ZAogQGFic3RyYWN0IERlbGV0ZSBhIHByb3BlcnR5IGZyb20gYSBKU1ZhbHVlLgogQHJlc3VsdCBZ
RVMgaWYgZGVsZXRpb24gaXMgc3VjY2Vzc2Z1bCwgTk8gb3RoZXJ3aXNlLgorQGRpc2N1c3Npb24g
Q29ycmVzcG9uZHMgdG8gdGhlIEphdmFTY3JpcHQgb3BlcmF0aW9uIDxjb2RlPmRlbGV0ZSBvYmpl
Y3RbcHJvcGVydHldPC9jb2RlPi4gUGFzcyBhbiBOU1N0cmluZyAqIHRvIGFjY2VzcyBhIG5hbWVk
IHByb3BlcnR5LiBPdGhlciB2YWxpZCBwcm9wZXJ0aWVzIGluY2x1ZGUgc3ltYm9scywgbnVtYmVy
cywgYW5kIHN0cmluZ2lmaWFibGUgb2JqZWN0cy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUyAxMSBh
bmQgYmVsb3csICdwcm9wZXJ0eScgd2FzIGFuIE5TU3RyaW5nICouCiAqLwotLSAoQk9PTClkZWxl
dGVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKEJPT0wpZGVsZXRlUHJvcGVydHk6
KGlkKXByb3BlcnR5OwogCiAvKiEKIEBtZXRob2QKIEBhYnN0cmFjdCBDaGVjayBpZiBhIEpTVmFs
dWUgaGFzIGEgcHJvcGVydHkuCiBAZGlzY3Vzc2lvbiBUaGlzIG1ldGhvZCBoYXMgdGhlIHNhbWUg
ZnVuY3Rpb24gYXMgdGhlIEphdmFTY3JpcHQgb3BlcmF0b3IgPGNvZGU+aW48L2NvZGU+LgogQHJl
c3VsdCBSZXR1cm5zIFlFUyBpZiBwcm9wZXJ0eSBpcyBwcmVzZW50IG9uIHRoZSB2YWx1ZS4KK0Bk
aXNjdXNzaW9uIENvcnJlc3BvbmRzIHRvIHRoZSBKYXZhU2NyaXB0IG9wZXJhdGlvbiA8Y29kZT5w
cm9wZXJ0eSBpbiBvYmplY3Q8L2NvZGU+LiBQYXNzIGFuIE5TU3RyaW5nICogdG8gYWNjZXNzIGEg
bmFtZWQgcHJvcGVydHkuIE90aGVyIHZhbGlkIHByb3BlcnRpZXMgaW5jbHVkZSBzeW1ib2xzLCBu
dW1iZXJzLCBhbmQgc3RyaW5naWZpYWJsZSBvYmplY3RzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9T
IDExIGFuZCBiZWxvdywgJ3Byb3BlcnR5JyB3YXMgYW4gTlNTdHJpbmcgKi4KICovCi0tIChCT09M
KWhhc1Byb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLSAoQk9PTCloYXNQcm9wZXJ0eToo
aWQpcHJvcGVydHk7CiAKIC8qIQogQG1ldGhvZAogQGFic3RyYWN0IERlZmluZSBwcm9wZXJ0aWVz
IHdpdGggY3VzdG9tIGRlc2NyaXB0b3JzIG9uIEpTVmFsdWVzLgogQGRpc2N1c3Npb24gVGhpcyBt
ZXRob2QgbWF5IGJlIHVzZWQgdG8gY3JlYXRlIGEgZGF0YSBvciBhY2Nlc3NvciBwcm9wZXJ0eSBv
biBhbiBvYmplY3QuCiAgVGhpcyBtZXRob2Qgb3BlcmF0ZXMgaW4gYWNjb3JkYW5jZSB3aXRoIHRo
ZSBPYmplY3QuZGVmaW5lUHJvcGVydHkgbWV0aG9kIGluIHRoZSAKLSBKYXZhU2NyaXB0IGxhbmd1
YWdlLgorIEphdmFTY3JpcHQgbGFuZ3VhZ2UuIFBhc3MgYW4gTlNTdHJpbmcgKiB0byBhY2Nlc3Mg
YSBuYW1lZCBwcm9wZXJ0eS4gT3RoZXIgdmFsaWQgcHJvcGVydGllcyBpbmNsdWRlIHN5bWJvbHMs
IG51bWJlcnMsIGFuZCBzdHJpbmdpZmlhYmxlIG9iamVjdHMuIEluIG1hY09TIDEwLjEzIGFuZCBp
T1MgMTEgYW5kIGJlbG93LCAncHJvcGVydHknIHdhcyBhbiBOU1N0cmluZyAqLgogKi8KLS0gKHZv
aWQpZGVmaW5lUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHkgZGVzY3JpcHRvcjooaWQpZGVz
Y3JpcHRvcjsKKy0gKHZvaWQpZGVmaW5lUHJvcGVydHk6KGlkKXByb3BlcnR5IGRlc2NyaXB0b3I6
KGlkKWRlc2NyaXB0b3I7CisKKyNlbmRpZiAvLyAhKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMw
MCkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQogCiAvKiEKIEBtZXRob2QKQEAg
LTQwMiwxNyArNDIwLDIzIEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCiAqLwogQHBy
b3BlcnR5IChyZWFkb25seSkgQk9PTCBpc09iamVjdDsKIAorLyohCitAcHJvcGVydHkKK0BhYnN0
cmFjdCBDaGVjayBpZiBhIEpTVmFsdWUgaXMgYSBzeW1ib2wuCisqLworQHByb3BlcnR5IChyZWFk
b25seSkgQk9PTCBpc1N5bWJvbCBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goSlNDX01BQ19UQkEp
LCBpb3MoSlNDX0lPU19UQkEpKTsKKwogLyohCiBAcHJvcGVydHkKIEBhYnN0cmFjdCBDaGVjayBp
ZiBhIEpTVmFsdWUgaXMgYW4gYXJyYXkuCiAqLyAKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wg
aXNBcnJheSBOU19BVkFJTEFCTEUoMTBfMTEsIDlfMCk7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBC
T09MIGlzQXJyYXkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOwog
CiAvKiEKIEBwcm9wZXJ0eQogQGFic3RyYWN0IENoZWNrIGlmIGEgSlNWYWx1ZSBpcyBhIGRhdGUu
CiAqLyAKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaXNEYXRlIE5TX0FWQUlMQUJMRSgxMF8x
MSwgOV8wKTsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaXNEYXRlIEpTQ19BUElfQVZBSUxB
QkxFKG1hY29zeCgxMC4xMSksIGlvcyg5LjApKTsKIAogLyohCiBAbWV0aG9kCkBAIC01NjksMTMg
KzU5MywxNiBAQCBDcmVhdGUgYSBKU1ZhbHVlIGZyb20gYSBDR1JlY3QuCiBAL3RleHRibG9jawog
CiAgQW4gb2JqZWN0IGtleSBwYXNzZWQgYXMgYSBzdWJzY3JpcHQgd2lsbCBiZSBjb252ZXJ0ZWQg
dG8gYSBKYXZhU2NyaXB0IHZhbHVlLAotIGFuZCB0aGVuIHRoZSB2YWx1ZSBjb252ZXJ0ZWQgdG8g
YSBzdHJpbmcgdXNlZCBhcyBhIHByb3BlcnR5IG5hbWUuCisgYW5kIHRoZW4gdGhlIHZhbHVlIGNv
bnZlcnRlZCB0byBhIHN0cmluZyB1c2VkIGFzIGEgcHJvcGVydHkgbmFtZS4gSW4gbWFjT1MKKyAx
MC4xMyBhbmQgaU9TIDExIGFuZCBiZWxvdywgdGhlIDxjb2RlPmtleTwvY29kZT4gYXJndW1lbnQg
b2YKKyA8Y29kZT5zZXRPYmplY3Q6b2JqZWN0IGZvcktleWVkU3Vic2NyaXB0OmtleTwvY29kZT4g
d2FzIHJlc3RyaWN0ZWQgdG8gYW4KKyA8Y29kZT5OU1N0cmluZyA8TlNDb3B5aW5nPiAqPC9jb2Rl
PiBidXQgdGhhdCByZXN0cmljdGlvbiB3YXMgbmV2ZXIgdXNlZC4KICovCiBAaW50ZXJmYWNlIEpT
VmFsdWUgKFN1YnNjcmlwdFN1cHBvcnQpCiAKIC0gKEpTVmFsdWUgKilvYmplY3RGb3JLZXllZFN1
YnNjcmlwdDooaWQpa2V5OwogLSAoSlNWYWx1ZSAqKW9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoo
TlNVSW50ZWdlcilpbmRleDsKLS0gKHZvaWQpc2V0T2JqZWN0OihpZClvYmplY3QgZm9yS2V5ZWRT
dWJzY3JpcHQ6KE5TT2JqZWN0IDxOU0NvcHlpbmc+ICopa2V5OworLSAodm9pZClzZXRPYmplY3Q6
KGlkKW9iamVjdCBmb3JLZXllZFN1YnNjcmlwdDooaWQpa2V5OwogLSAodm9pZClzZXRPYmplY3Q6
KGlkKW9iamVjdCBhdEluZGV4ZWRTdWJzY3JpcHQ6KE5TVUludGVnZXIpaW5kZXg7CiAKIEBlbmQK
QEAgLTY2Miw2ICs2ODksNTMgQEAgSlNfRVhQT1JUIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IEpT
UHJvcGVydHlEZXNjcmlwdG9yU2V0S2V5OwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9IC8vIGV4dGVy
biAiQyIKICNlbmRpZgorIAorI2lmIChkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDApIHx8IChk
ZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKKworLy8gVGhlc2UgZGVjbGFyYXRpb25zIHBy
b3ZpZGUgY29tcGF0aWJpbGl0eSB3aGVuIHRhcmdldGluZyBTREtzIGZvciBsZWdhY3kgT1NzLiBJ
biBtYWNPUyAxMC4xMyBhbmQgaU9TIDExIGFuZCBiZWxvdywgJ3Byb3BlcnR5JyB3YXMgYW4gTlNT
dHJpbmcgKi4KK0BpbnRlcmZhY2UgSlNWYWx1ZSAoTGVnYWN5U0RLU3VwcG9ydCkKKworLyohCitA
bWV0aG9kCitAYWJzdHJhY3QgQWNjZXNzIGEgcHJvcGVydHkgb2YgYSBKU1ZhbHVlLgorQHJlc3Vs
dCBUaGUgSlNWYWx1ZSBmb3IgdGhlIHJlcXVlc3RlZCBwcm9wZXJ0eSBvciB0aGUgSlNWYWx1ZSA8
Y29kZT51bmRlZmluZWQ8L2NvZGU+CitpZiB0aGUgcHJvcGVydHkgZG9lcyBub3QgZXhpc3QuCisq
LworLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7CisK
Ky8qIQorQG1ldGhvZAorQGFic3RyYWN0IFNldCBhIHByb3BlcnR5IG9uIGEgSlNWYWx1ZS4KKyov
CistICh2b2lkKXNldFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9w
ZXJ0eTsKKworLyohCisgQG1ldGhvZAorIEBhYnN0cmFjdCBEZWxldGUgYSBwcm9wZXJ0eSBmcm9t
IGEgSlNWYWx1ZS4KKyBAcmVzdWx0IFlFUyBpZiBkZWxldGlvbiBpcyBzdWNjZXNzZnVsLCBOTyBv
dGhlcndpc2UuCisgKi8KKy0gKEJPT0wpZGVsZXRlUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVy
dHk7CisKKy8qIQorIEBtZXRob2QKKyBAYWJzdHJhY3QgQ2hlY2sgaWYgYSBKU1ZhbHVlIGhhcyBh
IHByb3BlcnR5LgorIEBkaXNjdXNzaW9uIFRoaXMgbWV0aG9kIGhhcyB0aGUgc2FtZSBmdW5jdGlv
biBhcyB0aGUgSmF2YVNjcmlwdCBvcGVyYXRvciA8Y29kZT5pbjwvY29kZT4uCisgQHJlc3VsdCBS
ZXR1cm5zIFlFUyBpZiBwcm9wZXJ0eSBpcyBwcmVzZW50IG9uIHRoZSB2YWx1ZS4KKyAqLworLSAo
Qk9PTCloYXNQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKworLyohCisgQG1ldGhvZAor
IEBhYnN0cmFjdCBEZWZpbmUgcHJvcGVydGllcyB3aXRoIGN1c3RvbSBkZXNjcmlwdG9ycyBvbiBK
U1ZhbHVlcy4KKyBAZGlzY3Vzc2lvbiBUaGlzIG1ldGhvZCBtYXkgYmUgdXNlZCB0byBjcmVhdGUg
YSBkYXRhIG9yIGFjY2Vzc29yIHByb3BlcnR5IG9uIGFuIG9iamVjdC4KKyBUaGlzIG1ldGhvZCBv
cGVyYXRlcyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBtZXRo
b2QgaW4gdGhlCisgSmF2YVNjcmlwdCBsYW5ndWFnZS4KKyAqLworLSAodm9pZClkZWZpbmVQcm9w
ZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eSBkZXNjcmlwdG9yOihpZClkZXNjcmlwdG9yOworCitA
ZW5kCisKKyNlbmRpZgogCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1ZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1t
CmluZGV4IGM4ZjQ5N2EwYzE0YjA0OGExMTRkMmU3NDBjZWIxOTliNjMzYzNhYmMuLmZkNTIyNmY4
NGNlNWE5ZDQyYzI3YzEwNTY2OWI0MDk3ZTRlNGNiM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVmFsdWUubW0KQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQgIkpTQ0pTVmFsdWUuaCIKICNp
bXBvcnQgIlN0cm9uZy5oIgogI2ltcG9ydCAiU3Ryb25nSW5saW5lcy5oIgorI2ltcG9ydCA8d3Rm
L0V4cGVjdGVkLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL0hhc2hT
ZXQuaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CkBAIC0xNTEsNiArMTUyLDEzIEBAIE5TU3RyaW5n
ICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXkgPSBAInNldCI7CiAgICAgcmV0dXJu
IFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6SlNWYWx1ZU1ha2VVbmRlZmluZWQoW2NvbnRl
eHQgSlNHbG9iYWxDb250ZXh0UmVmXSkgaW5Db250ZXh0OmNvbnRleHRdOwogfQogCisrIChKU1Zh
bHVlICopdmFsdWVXaXRoTmV3U3ltYm9sRnJvbURlc2NyaXB0aW9uOihOU1N0cmluZyAqKWRlc2Ny
aXB0aW9uIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAoreworICAgIEpTU3RyaW5nUmVm
IHN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZT
dHJpbmdSZWY+KGRlc2NyaXB0aW9uKSk7CisgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpT
VmFsdWVSZWY6SlNWYWx1ZU1ha2VTeW1ib2woW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwg
c3RyaW5nKSBpbkNvbnRleHQ6Y29udGV4dF07Cit9CisKKwogLSAoaWQpdG9PYmplY3QKIHsKICAg
ICByZXR1cm4gdmFsdWVUb09iamVjdChfY29udGV4dCwgbV92YWx1ZSk7CkBAIC0yMzQsNzQgKzI0
MiwxMDYgQEAgTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5RGVzY3JpcHRvclNldEtleSA9IEAi
c2V0IjsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi0tIChKU1ZhbHVlICopdmFsdWVGb3JQcm9w
ZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKK3RlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdCwg
dHlwZW5hbWUgTlNTdHJpbmdGdW5jdGlvbiwgdHlwZW5hbWUgSlNWYWx1ZUZ1bmN0aW9uLCB0eXBl
bmFtZS4uLiBUeXBlcz4KK2lubGluZSBFeHBlY3RlZDxSZXN1bHQsIEpTVmFsdWVSZWY+IHBlcmZv
cm1Qcm9wZXJ0eU9wZXJhdGlvbihOU1N0cmluZ0Z1bmN0aW9uIHN0cmluZ0Z1bmN0aW9uLCBKU1Zh
bHVlRnVuY3Rpb24ganNGdW5jdGlvbiwgSlNWYWx1ZSogdmFsdWUsIGlkIHByb3BlcnR5S2V5LCBU
eXBlcy4uLiBhcmd1bWVudHMpCiB7Ci0gICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAg
IEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChbX2NvbnRleHQgSlNHbG9iYWxD
b250ZXh0UmVmXSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7CisgICAgSlNDb250ZXh0KiBjb250ZXh0
ID0gW3ZhbHVlIGNvbnRleHRdOworICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0cjsK
KyAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoW2NvbnRleHQgSlNHbG9i
YWxDb250ZXh0UmVmXSwgW3ZhbHVlIEpTVmFsdWVSZWZdLCAmZXhjZXB0aW9uKTsKICAgICBpZiAo
ZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW19jb250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4Y2Vw
dGlvbjpleGNlcHRpb25dOworICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxKU1ZhbHVlUmVmPihl
eGNlcHRpb24pOwogCi0gICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENG
U3RyaW5nKChDRlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwotICAgIEpTVmFsdWVSZWYgcmVzdWx0
ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgb2Jq
ZWN0LCBuYW1lLCAmZXhjZXB0aW9uKTsKLSAgICBKU1N0cmluZ1JlbGVhc2UobmFtZSk7Ci0gICAg
aWYgKGV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlF
eGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICBSZXN1bHQgcmVzdWx0OworICAgIC8vIElmIGl0J3Mg
YSBOU1N0cmluZyBhbHJlYWR5LCByZWR1Y2UgaW5kaXJlY3Rpb24gYW5kIGp1c3QgcGFzcyB0aGUg
TlNTdHJpbmcuCisgICAgaWYgKFtwcm9wZXJ0eUtleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBj
bGFzc11dKSB7CisgICAgICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhD
RlN0cmluZyhyZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihwcm9wZXJ0eUtleSkpOworICAg
ICAgICByZXN1bHQgPSBzdHJpbmdGdW5jdGlvbihbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZd
LCBvYmplY3QsIG5hbWUsIGFyZ3VtZW50cy4uLiwgJmV4Y2VwdGlvbik7CisgICAgICAgIEpTU3Ry
aW5nUmVsZWFzZShuYW1lKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0ID0ganNGdW5jdGlv
bihbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIFtbSlNWYWx1ZSB2YWx1ZVdp
dGhPYmplY3Q6cHJvcGVydHlLZXkgaW5Db250ZXh0OmNvbnRleHRdIEpTVmFsdWVSZWZdLCBhcmd1
bWVudHMuLi4sICZleGNlcHRpb24pOworICAgIHJldHVybiBFeHBlY3RlZDxSZXN1bHQsIEpTVmFs
dWVSZWY+KHJlc3VsdCk7Cit9CiAKLSAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1
ZVJlZjpyZXN1bHQgaW5Db250ZXh0Ol9jb250ZXh0XTsKKyNkZWZpbmUgVVNFX05TU1RSSU5HX0ZP
Ul9QUk9QRVJUWV9LRVkgKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMwMCkgfHwgKGRlZmluZWQo
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEIDwgMTEwMDAwKQorCisjaWYgVVNFX05TU1RSSU5HX0ZPUl9QUk9QRVJUWV9L
RVkKKy0gKEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihOU1N0cmluZyAqKWtleQorI2Vsc2UK
Ky0gKEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihpZClrZXkKKyNlbmRpZgoreworICAgIGF1
dG8gcmVzdWx0ID0gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uPEpTVmFsdWVSZWY+KEpTT2JqZWN0
R2V0UHJvcGVydHksIEpTT2JqZWN0R2V0UHJvcGVydHlLZXksIHNlbGYsIGtleSk7CisgICAgaWYg
KCFyZXN1bHQpCisgICAgICAgIHJldHVybiBbX2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0
aW9uOnJlc3VsdC5lcnJvcigpXTsKKworICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1Zh
bHVlUmVmOnJlc3VsdC52YWx1ZSgpIGluQ29udGV4dDpfY29udGV4dF07CiB9CiAKLS0gKHZvaWQp
c2V0VmFsdWU6KGlkKXZhbHVlIGZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQor
I2lmIFVTRV9OU1NUUklOR19GT1JfUFJPUEVSVFlfS0VZCistICh2b2lkKXNldFZhbHVlOihpZCl2
YWx1ZSBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXkKKyNlbHNlCistICh2b2lkKXNldFZhbHVl
OihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooaWQpa2V5CisjZW5kaWYKIHsKLSAgICBKU1ZhbHVlUmVm
IGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0
KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKLSAg
ICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIFtfY29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhj
ZXB0aW9uXTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAvLyBXZSBuZWVkIFVuaXQgYnVz
aW5lc3MgYmVjYXVzZSB2b2lkIGNhbid0IGJlIGFzc2lnbmVkIHRvIGluIHBlcmZvcm1Qcm9wZXJ0
eU9wZXJhdGlvbiBhbmQgSSBkb24ndCB3YW50IHRvIGR1cGxpY2F0ZSB0aGUgY29kZS4uLgorICAg
IHVzaW5nIFVuaXQgPSBzdGQ6OnR1cGxlPD47CisgICAgYXV0byBzdHJpbmdTZXRQcm9wZXJ0eSA9
IFtdIChhdXRvLi4uIGFyZ3MpIC0+IFVuaXQgeworICAgICAgICBKU09iamVjdFNldFByb3BlcnR5
KGFyZ3MuLi4pOworICAgICAgICByZXR1cm4geyB9OworICAgIH07CiAKLSAgICBKU1N0cmluZ1Jl
ZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKXByb3BlcnR5
TmFtZSk7Ci0gICAgSlNPYmplY3RTZXRQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0
UmVmXSwgb2JqZWN0LCBuYW1lLCBvYmplY3RUb1ZhbHVlKF9jb250ZXh0LCB2YWx1ZSksIDAsICZl
eGNlcHRpb24pOwotICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKLSAgICBpZiAoZXhjZXB0aW9u
KSB7Ci0gICAgICAgIFtfY29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICBh
dXRvIGpzVmFsdWVTZXRQcm9wZXJ0eSA9IFtdIChhdXRvLi4uIGFyZ3MpIC0+IFVuaXQgeworICAg
ICAgICBKU09iamVjdFNldFByb3BlcnR5S2V5KGFyZ3MuLi4pOworICAgICAgICByZXR1cm4geyB9
OworICAgIH07CisKKyAgICBhdXRvIHJlc3VsdCA9IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbjxV
bml0PihzdHJpbmdTZXRQcm9wZXJ0eSwganNWYWx1ZVNldFByb3BlcnR5LCBzZWxmLCBrZXksIG9i
amVjdFRvVmFsdWUoX2NvbnRleHQsIHZhbHVlKSwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lKTsK
KyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBbX2NvbnRleHQgbm90aWZ5RXhjZXB0aW9uOnJl
c3VsdC5lcnJvcigpXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KIAotLSAoQk9PTClkZWxl
dGVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKKyNpZiBVU0VfTlNTVFJJTkdfRk9S
X1BST1BFUlRZX0tFWQorLSAoQk9PTClkZWxldGVQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXkKKyNl
bHNlCistIChCT09MKWRlbGV0ZVByb3BlcnR5OihpZClrZXkKKyNlbmRpZgogewotICAgIEpTVmFs
dWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9P
YmplY3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUsICZleGNlcHRpb24p
OwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbX2NvbnRleHQgYm9vbEZyb21O
b3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKLQotICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0
cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsKLSAgICBC
T09MIHJlc3VsdCA9IEpTT2JqZWN0RGVsZXRlUHJvcGVydHkoW19jb250ZXh0IEpTR2xvYmFsQ29u
dGV4dFJlZl0sIG9iamVjdCwgbmFtZSwgJmV4Y2VwdGlvbik7Ci0gICAgSlNTdHJpbmdSZWxlYXNl
KG5hbWUpOwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbX2NvbnRleHQgYm9v
bEZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKLQotICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgRXhwZWN0ZWQ8Qk9PTCwgSlNWYWx1ZVJlZj4gcmVzdWx0ID0gcGVyZm9ybVByb3BlcnR5T3Bl
cmF0aW9uPEJPT0w+KEpTT2JqZWN0RGVsZXRlUHJvcGVydHksIEpTT2JqZWN0RGVsZXRlUHJvcGVy
dHlLZXksIHNlbGYsIGtleSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBbX2Nv
bnRleHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246cmVzdWx0LmVycm9yKCldOworICAgIHJldHVy
biByZXN1bHQudmFsdWUoKTsKIH0KIAotLSAoQk9PTCloYXNQcm9wZXJ0eTooTlNTdHJpbmcgKilw
cm9wZXJ0eU5hbWUKKyNpZiBVU0VfTlNTVFJJTkdfRk9SX1BST1BFUlRZX0tFWQorLSAoQk9PTClo
YXNQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXkKKyNlbHNlCistIChCT09MKWhhc1Byb3BlcnR5Oihp
ZClrZXkKKyNlbmRpZgogewotICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBKU09i
amVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4
dFJlZl0sIG1fdmFsdWUsICZleGNlcHRpb24pOwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAg
IHJldHVybiBbX2NvbnRleHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAg
ICAvLyBUaGUgQy1hcGkgZG9lc24ndCByZXR1cm4gYW4gZXhjZXB0aW9uIHZhbHVlIGZvciB0aGUg
c3RyaW5nIHZlcnNpb24gb2YgaGFzIHByb3BlcnR5LgorICAgIGF1dG8gc3RyaW5nSGFzUHJvcGVy
dHkgPSBbXSAoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1Jl
ZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqKSAtPiBCT09MIHsKKyAgICAgICAgcmV0dXJuIEpT
T2JqZWN0SGFzUHJvcGVydHkoY3R4LCBvYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgfTsKIAot
ICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJp
bmdSZWYpcHJvcGVydHlOYW1lKTsKLSAgICBCT09MIHJlc3VsdCA9IEpTT2JqZWN0SGFzUHJvcGVy
dHkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgbmFtZSk7Ci0gICAgSlNT
dHJpbmdSZWxlYXNlKG5hbWUpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgRXhwZWN0ZWQ8Qk9P
TCwgSlNWYWx1ZVJlZj4gcmVzdWx0ID0gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uPEJPT0w+KHN0
cmluZ0hhc1Byb3BlcnR5LCBKU09iamVjdEhhc1Byb3BlcnR5S2V5LCBzZWxmLCBrZXkpOworICAg
IGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gW19jb250ZXh0IGJvb2xGcm9tTm90aWZ5RXhj
ZXB0aW9uOnJlc3VsdC5lcnJvcigpXTsKKyAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7CiB9CiAK
LS0gKHZvaWQpZGVmaW5lUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHkgZGVzY3JpcHRvcjoo
aWQpZGVzY3JpcHRvcgorI2lmIFVTRV9OU1NUUklOR19GT1JfUFJPUEVSVFlfS0VZCistICh2b2lk
KWRlZmluZVByb3BlcnR5OihOU1N0cmluZyAqKWtleSBkZXNjcmlwdG9yOihpZClkZXNjcmlwdG9y
CisjZWxzZQorLSAodm9pZClkZWZpbmVQcm9wZXJ0eTooaWQpa2V5IGRlc2NyaXB0b3I6KGlkKWRl
c2NyaXB0b3IKKyNlbmRpZgogewotICAgIFtbX2NvbnRleHQgZ2xvYmFsT2JqZWN0XVtAIk9iamVj
dCJdIGludm9rZU1ldGhvZDpAImRlZmluZVByb3BlcnR5IiB3aXRoQXJndW1lbnRzOkBbIHNlbGYs
IHByb3BlcnR5LCBkZXNjcmlwdG9yIF1dOworICAgIFtbX2NvbnRleHQgZ2xvYmFsT2JqZWN0XVtA
Ik9iamVjdCJdIGludm9rZU1ldGhvZDpAImRlZmluZVByb3BlcnR5IiB3aXRoQXJndW1lbnRzOkBb
IHNlbGYsIGtleSwgZGVzY3JpcHRvciBdXTsKIH0KIAorI3VuZGVmIFVTRV9OU1NUUklOR19GT1Jf
UFJPUEVSVFlfS0VZCisKIC0gKEpTVmFsdWUgKil2YWx1ZUF0SW5kZXg6KE5TVUludGVnZXIpaW5k
ZXgKIHsKICAgICAvLyBQcm9wZXJ0aWVzIHRoYXQgYXJlIGhpZ2hlciB0aGFuIGFuIHVuc2lnbmVk
IHZhbHVlIGNhbiBob2xkIGFyZSBjb252ZXJ0ZWQgdG8gYSBkb3VibGUgdGhlbiBpbnNlcnRlZCBh
cyBhIG5vcm1hbCBwcm9wZXJ0eS4KQEAgLTM3Miw2ICs0MTIsMTEgQEAgTlNTdHJpbmcgKiBjb25z
dCBKU1Byb3BlcnR5RGVzY3JpcHRvclNldEtleSA9IEAic2V0IjsKICAgICByZXR1cm4gSlNWYWx1
ZUlzT2JqZWN0KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlKTsKIH0KIAor
LSAoQk9PTClpc1N5bWJvbAoreworICAgIHJldHVybiBKU1ZhbHVlSXNTeW1ib2woW19jb250ZXh0
IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUpOworfQorCiAtIChCT09MKWlzQXJyYXkKIHsK
ICAgICByZXR1cm4gSlNWYWx1ZUlzQXJyYXkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0s
IG1fdmFsdWUpOwpAQCAtNTU0LDEzICs1OTksNyBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVy
dHlEZXNjcmlwdG9yU2V0S2V5ID0gQCJzZXQiOwogCiAtIChKU1ZhbHVlICopb2JqZWN0Rm9yS2V5
ZWRTdWJzY3JpcHQ6KGlkKWtleQogewotICAgIGlmICghW2tleSBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dKSB7Ci0gICAgICAgIGtleSA9IFtbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6
a2V5IGluQ29udGV4dDpfY29udGV4dF0gdG9TdHJpbmddOwotICAgICAgICBpZiAoIWtleSkKLSAg
ICAgICAgICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRleHQ6X2Nv
bnRleHRdOwotICAgIH0KLQotICAgIHJldHVybiBbc2VsZiB2YWx1ZUZvclByb3BlcnR5OihOU1N0
cmluZyAqKWtleV07CisgICAgcmV0dXJuIFtzZWxmIHZhbHVlRm9yUHJvcGVydHk6a2V5XTsKIH0K
IAogLSAoSlNWYWx1ZSAqKW9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRl
eApAQCAtNTY4LDE1ICs2MDcsOSBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlw
dG9yU2V0S2V5ID0gQCJzZXQiOwogICAgIHJldHVybiBbc2VsZiB2YWx1ZUF0SW5kZXg6aW5kZXhd
OwogfQogCi0tICh2b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGZvcktleWVkU3Vic2NyaXB0OihO
U09iamVjdCA8TlNDb3B5aW5nPiAqKWtleQorLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBm
b3JLZXllZFN1YnNjcmlwdDooaWQpa2V5CiB7Ci0gICAgaWYgKCFba2V5IGlzS2luZE9mQ2xhc3M6
W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAga2V5ID0gW1tKU1ZhbHVlIHZhbHVlV2l0aE9i
amVjdDprZXkgaW5Db250ZXh0Ol9jb250ZXh0XSB0b1N0cmluZ107Ci0gICAgICAgIGlmICgha2V5
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFtzZWxmIHNldFZhbHVlOm9iamVj
dCBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXldOworICAgIFtzZWxmIHNldFZhbHVlOm9iamVj
dCBmb3JQcm9wZXJ0eTprZXldOwogfQogCiAtICh2b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGF0
SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRleApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNWYWx1ZVJlZi5jcHAKaW5kZXggNzk1NTliZTkwNzk4NzE1MWIyZmE3ZDkzMTI2NDI0NTE4
ODgxMGZkYy4uZGFjYTBlMWI0OWRkOGQ1MTJlNTY1ZGMxM2NjY2FmMmI5N2YyMDhiNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCkBAIC04Niw2ICs4Niw4IEBAIHN0
YXRpYyBib29sIGV2ZXJub3RlSGFja05lZWRlZCgpCiAgICAgICAgIHJldHVybiBrSlNUeXBlTnVt
YmVyOwogICAgIGlmIChqc1ZhbHVlLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBrSlNUeXBl
U3RyaW5nOworICAgIGlmIChqc1ZhbHVlLmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiBrSlNU
eXBlU3ltYm9sOwogICAgIEFTU0VSVChqc1ZhbHVlLmlzT2JqZWN0KCkpOwogICAgIHJldHVybiBr
SlNUeXBlT2JqZWN0OwogfQpAQCAtMTYyLDYgKzE2NCwxOCBAQCBib29sIEpTVmFsdWVJc09iamVj
dChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQogICAgIHJldHVybiB0b0pTKGV4
ZWMsIHZhbHVlKS5pc09iamVjdCgpOwogfQogCitib29sIEpTVmFsdWVJc1N5bWJvbChKU0NvbnRl
eHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4
ZWMpOworCisgICAgcmV0dXJuIHRvSlMoZXhlYywgdmFsdWUpLmlzU3ltYm9sKCk7Cit9CisKIGJv
b2wgSlNWYWx1ZUlzQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkKIHsK
ICAgICBpZiAoIWN0eCkgewpAQCAtMzIwLDYgKzMzNCwyMiBAQCBKU1ZhbHVlUmVmIEpTVmFsdWVN
YWtlTnVtYmVyKEpTQ29udGV4dFJlZiBjdHgsIGRvdWJsZSB2YWx1ZSkKICAgICByZXR1cm4gdG9S
ZWYoZXhlYywganNOdW1iZXIocHVyaWZ5TmFOKHZhbHVlKSkpOwogfQogCitKU1ZhbHVlUmVmIEpT
VmFsdWVNYWtlU3ltYm9sKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIGRlc2NyaXB0aW9u
KQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhj
dHgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfQ0FUQ0hfU0NPUEUoZXhlYy0+dm0oKSk7CisKKyAgICBKU1N0cmluZyoganNEZXNjcmlw
dGlvbiA9IGpzU3RyaW5nKGV4ZWMsIGRlc2NyaXB0aW9uID8gZGVzY3JpcHRpb24tPnN0cmluZygp
IDogU3RyaW5nKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwor
CisgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIFN5bWJvbDo6Y3JlYXRlKGV4ZWMsIGpzRGVzY3JpcHRp
b24pKTsKK30KKwogSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZVN0cmluZyhKU0NvbnRleHRSZWYgY3R4
LCBKU1N0cmluZ1JlZiBzdHJpbmcpCiB7CiAgICAgaWYgKCFjdHgpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1ZhbHVlUmVmLmgKaW5kZXggOTgxNWRlNzgzYzBhZWUwNzNlM2E0NDhiZDBjN2Nh
ZGQ0YTk1MmMwNi4uYTQyN2Q5OGI1NThmZWM5NGMzZGJlZGVjYTNlN2IwMTZhOTRmMjFiMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmgKQEAgLTQyLDYgKzQyLDcgQEAKIEBj
b25zdGFudCAgICAga0pTVHlwZU51bWJlciAgICAgQSBwcmltaXRpdmUgbnVtYmVyIHZhbHVlLgog
QGNvbnN0YW50ICAgICBrSlNUeXBlU3RyaW5nICAgICBBIHByaW1pdGl2ZSBzdHJpbmcgdmFsdWUu
CiBAY29uc3RhbnQgICAgIGtKU1R5cGVPYmplY3QgICAgIEFuIG9iamVjdCB2YWx1ZSAobWVhbmlu
ZyB0aGF0IHRoaXMgSlNWYWx1ZVJlZiBpcyBhIEpTT2JqZWN0UmVmKS4KK0Bjb25zdGFudCAgICAg
a0pTVHlwZVN5bWJvbCAgICAgQSBwcmltaXRpdmUgc3ltYm9sIHZhbHVlLgogKi8KIHR5cGVkZWYg
ZW51bSB7CiAgICAga0pTVHlwZVVuZGVmaW5lZCwKQEAgLTQ5LDcgKzUwLDggQEAgdHlwZWRlZiBl
bnVtIHsKICAgICBrSlNUeXBlQm9vbGVhbiwKICAgICBrSlNUeXBlTnVtYmVyLAogICAgIGtKU1R5
cGVTdHJpbmcsCi0gICAga0pTVHlwZU9iamVjdAorICAgIGtKU1R5cGVPYmplY3QsCisgICAga0pT
VHlwZVN5bWJvbCBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goSlNDX01BQ19UQkEpLCBpb3MoSlND
X0lPU19UQkEpKQogfSBKU1R5cGU7CiAKIC8qIQpAQCAtODAsNyArODIsNyBAQCB0eXBlZGVmIGVu
dW0gewogICAgIGtKU1R5cGVkQXJyYXlUeXBlRmxvYXQ2NEFycmF5LAogICAgIGtKU1R5cGVkQXJy
YXlUeXBlQXJyYXlCdWZmZXIsCiAgICAga0pTVHlwZWRBcnJheVR5cGVOb25lLAotfSBKU1R5cGVk
QXJyYXlUeXBlIENGX0VOVU1fQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK30gSlNUeXBlZEFycmF5
VHlwZSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAjaWZk
ZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewpAQCAtMTQ5LDYgKzE1MSwxNiBAQCBKU19FWFBP
UlQgYm9vbCBKU1ZhbHVlSXNTdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1
ZSk7CiAqLwogSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzT2JqZWN0KEpTQ29udGV4dFJlZiBjdHgs
IEpTVmFsdWVSZWYgdmFsdWUpOwogCisvKiEKK0BmdW5jdGlvbgorQGFic3RyYWN0ICAgICAgIFRl
c3RzIHdoZXRoZXIgYSBKYXZhU2NyaXB0IHZhbHVlJ3MgdHlwZSBpcyB0aGUgc3ltYm9sIHR5cGUu
CitAcGFyYW0gY3R4ICAgICAgVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KK0BwYXJhbSB2
YWx1ZSAgICBUaGUgSlNWYWx1ZSB0byB0ZXN0LgorQHJlc3VsdCAgICAgICAgIHRydWUgaWYgdmFs
dWUncyB0eXBlIGlzIHRoZSBzeW1ib2wgdHlwZSwgb3RoZXJ3aXNlIGZhbHNlLgorKi8KK0pTX0VY
UE9SVCBib29sIEpTVmFsdWVJc1N5bWJvbChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZh
bHVlKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goSlNDX01BQ19UQkEpLCBpb3MoSlNDX0lPU19U
QkEpKTsKKworCiAvKiEKIEBmdW5jdGlvbgogQGFic3RyYWN0IFRlc3RzIHdoZXRoZXIgYSBKYXZh
U2NyaXB0IHZhbHVlIGlzIGFuIG9iamVjdCB3aXRoIGEgZ2l2ZW4gY2xhc3MgaW4gaXRzIGNsYXNz
IGNoYWluLgpAQCAtMTY2LDcgKzE3OCw3IEBAIEpTX0VYUE9SVCBib29sIEpTVmFsdWVJc09iamVj
dE9mQ2xhc3MoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNDbGFzCiBAcGFy
YW0gdmFsdWUgICAgVGhlIEpTVmFsdWUgdG8gdGVzdC4KIEByZXN1bHQgICAgICAgICB0cnVlIGlm
IHZhbHVlIGlzIGFuIGFycmF5LCBvdGhlcndpc2UgZmFsc2UuCiAqLwotSlNfRVhQT1JUIGJvb2wg
SlNWYWx1ZUlzQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkgQ0ZfQVZB
SUxBQkxFKDEwXzExLCA5XzApOworSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzQXJyYXkoSlNDb250
ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEw
LjExKSwgaW9zKDkuMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTc1LDcgKzE4Nyw3IEBAIEpT
X0VYUE9SVCBib29sIEpTVmFsdWVJc0FycmF5KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYg
dmFsdWUpIENGX0FWQUlMQUJMRSgxCiBAcGFyYW0gdmFsdWUgICAgVGhlIEpTVmFsdWUgdG8gdGVz
dC4KIEByZXN1bHQgICAgICAgICB0cnVlIGlmIHZhbHVlIGlzIGEgZGF0ZSwgb3RoZXJ3aXNlIGZh
bHNlLgogKi8KLUpTX0VYUE9SVCBib29sIEpTVmFsdWVJc0RhdGUoSlNDb250ZXh0UmVmIGN0eCwg
SlNWYWx1ZVJlZiB2YWx1ZSkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzApOworSlNfRVhQT1JUIGJv
b2wgSlNWYWx1ZUlzRGF0ZShKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CiAKIC8qIQogQGZ1bmN0aW9u
CkBAIC0xODUsNyArMTk3LDcgQEAgSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzRGF0ZShKU0NvbnRl
eHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKSBDRl9BVkFJTEFCTEUoMTAKIEBwYXJhbSBleGNl
cHRpb24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBl
eGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBh
biBleGNlcHRpb24uCiBAcmVzdWx0ICAgICAgICAgICAgIEEgdmFsdWUgb2YgdHlwZSBKU1R5cGVk
QXJyYXlUeXBlIHRoYXQgaWRlbnRpZmllcyB2YWx1ZSdzIFR5cGVkIEFycmF5IHR5cGUsIG9yIGtK
U1R5cGVkQXJyYXlUeXBlTm9uZSBpZiB0aGUgdmFsdWUgaXMgbm90IGEgVHlwZWQgQXJyYXkgb2Jq
ZWN0LgogICovCi1KU19FWFBPUlQgSlNUeXBlZEFycmF5VHlwZSBKU1ZhbHVlR2V0VHlwZWRBcnJh
eVR5cGUoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTVHlwZWRBcnJh
eVR5cGUgSlNWYWx1ZUdldFR5cGVkQXJyYXlUeXBlKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVS
ZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyogQ29tcGFyaW5nIHZhbHVlcyAqLwogCkBAIC0yNTcs
NiArMjY5LDE1IEBAIEpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlQm9vbGVhbihKU0Nv
bnRleHRSZWYgY3R4LCBib29sIGJvb2xlYW4pOwogKi8KIEpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpT
VmFsdWVNYWtlTnVtYmVyKEpTQ29udGV4dFJlZiBjdHgsIGRvdWJsZSBudW1iZXIpOwogCisvKiEK
K0BmdW5jdGlvbgorQGFic3RyYWN0ICAgICAgICAgICAgQ3JlYXRlcyBhIEphdmFTY3JpcHQgdmFs
dWUgb2YgdGhlIHN5bWJvbCB0eXBlLgorQHBhcmFtIGN0eCAgICAgICAgICAgVGhlIGV4ZWN1dGlv
biBjb250ZXh0IHRvIHVzZS4KK0BwYXJhbSBkZXNjcmlwdGlvbiAgIEEgZGVzY3JpcHRpb24gb2Yg
dGhlIG5ld2x5IGNyZWF0ZWQgc3ltYm9sIHZhbHVlLgorQHJlc3VsdCAgICAgICAgICAgICAgQSB1
bmlxdWUgSlNWYWx1ZSBvZiB0aGUgc3ltYm9sIHR5cGUsIHdob3NlIGRlc2NyaXB0aW9uIG1hdGNo
ZXMgdGhlIG9uZSBwcm92aWRlZC4KKyovCitKU19FWFBPUlQgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFr
ZVN5bWJvbChKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBkZXNjcmlwdGlvbikgSlNDX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KEpTQ19NQUNfVEJBKSwgaW9zKEpTQ19JT1NfVEJBKSk7CisKIC8q
IQogQGZ1bmN0aW9uCiBAYWJzdHJhY3QgICAgICAgQ3JlYXRlcyBhIEphdmFTY3JpcHQgdmFsdWUg
b2YgdGhlIHN0cmluZyB0eXBlLgpAQCAtMjc2LDcgKzI5Nyw3IEBAIEpTX0VYUE9SVCBKU1ZhbHVl
UmVmIEpTVmFsdWVNYWtlU3RyaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHN0cmlu
Zyk7CiAgQHBhcmFtIHN0cmluZyAgIFRoZSBKU1N0cmluZyBjb250YWluaW5nIHRoZSBKU09OIHN0
cmluZyB0byBiZSBwYXJzZWQuCiAgQHJlc3VsdCAgICAgICAgIEEgSlNWYWx1ZSBjb250YWluaW5n
IHRoZSBwYXJzZWQgdmFsdWUsIG9yIE5VTEwgaWYgdGhlIGlucHV0IGlzIGludmFsaWQuCiAgKi8K
LUpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlRnJvbUpTT05TdHJpbmcoSlNDb250ZXh0
UmVmIGN0eCwgSlNTdHJpbmdSZWYgc3RyaW5nKSBDRl9BVkFJTEFCTEUoMTBfNywgN18wKTsKK0pT
X0VYUE9SVCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlRnJvbUpTT05TdHJpbmcoSlNDb250ZXh0UmVm
IGN0eCwgSlNTdHJpbmdSZWYgc3RyaW5nKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNyks
IGlvcyg3LjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC0yODcsNyArMzA4LDcgQEAgSlNfRVhQ
T1JUIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VGcm9tSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4
LCBKU1N0cmluZ1JlZiBzdHIKICBAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFs
dWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBp
ZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1bHQgICAgICAg
ICBBIEpTU3RyaW5nIHdpdGggdGhlIHJlc3VsdCBvZiBzZXJpYWxpemF0aW9uLCBvciBOVUxMIGlm
IGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uCiAgKi8KLUpTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU1Zh
bHVlQ3JlYXRlSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlLCB1
bnNpZ25lZCBpbmRlbnQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzcs
IDdfMCk7CitKU19FWFBPUlQgSlNTdHJpbmdSZWYgSlNWYWx1ZUNyZWF0ZUpTT05TdHJpbmcoSlND
b250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgdW5zaWduZWQgaW5kZW50LCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC43KSwgaW9zKDcuMCkp
OwogCiAvKiBDb252ZXJ0aW5nIHRvIHByaW1pdGl2ZSB2YWx1ZXMgKi8KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUuaAppbmRleCBlOWM3NWRhMDc3MmM1NTQ0
MDE5YTRhY2RmNGM5MDU1YzRjZWY0NDdjLi43ZDJmMGE3MDdjNTlhY2RiZDdhYjFiNTBjZjQ3MjIy
N2IyYzA1MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVh
bE1hY2hpbmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hp
bmUuaApAQCAtMzksNyArMzksNyBAQAogIG9mIHRoZSB0aHJlYWQgaXQgd2FzIGluaXRpYWxpemVk
IG9uLiBDdXJyZW50bHksIHRoZXJlIGlzIG5vIEFQSSB0byBjaGFuZ2UgYQogIEpTVmlydHVhbE1h
Y2hpbmUncyBydW4gbG9vcCBvbmNlIGl0IGhhcyBiZWVuIGluaXRpYWxpemVkLgogKi8KLU5TX0NM
QVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCitKU0NfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeCgxMC45
KSwgaW9zKDcuMCkpCiBAaW50ZXJmYWNlIEpTVmlydHVhbE1hY2hpbmUgOiBOU09iamVjdAogCiAv
KiEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvV2ViS2l0QXZhaWxhYmls
aXR5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL1dlYktpdEF2YWlsYWJpbGl0eS5oCmlu
ZGV4IDgyMjc1MjAzZGM5ODAxODMzMWE5MWJiOTViOWQ2ZGIxNmU1OWY5YWEuLjBmNmFmYjZiMWRi
ZDYxOTgxZGVkZWQwYTFlNWIyNGM4ZmRjYjUzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvV2ViS2l0QXZhaWxhYmlsaXR5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9XZWJLaXRBdmFpbGFiaWxpdHkuaApAQCAtNjksMTUgKzY5LDEyIEBACiAjZW5kaWYg
LyogIVRBUkdFVF9PU19JUEhPTkUgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8
IDEwMTEwMCAqLwogCiAjaWYgZGVmaW5lZChCVUlMRElOR19HVEtfXykKLSN1bmRlZiBDRl9BVkFJ
TEFCTEUKLSNkZWZpbmUgQ0ZfQVZBSUxBQkxFKF9tYWMsIF9pb3MpCi0jdW5kZWYgQ0ZfRU5VTV9B
VkFJTEFCTEUKLSNkZWZpbmUgQ0ZfRU5VTV9BVkFJTEFCTEUoX21hYywgX2lvcykKKyN1bmRlZiBK
U0NfQVBJX0FWQUlMQUJMRQorI2RlZmluZSBKU0NfQVBJX0FWQUlMQUJMRSguLi4pCiAjZW5kaWYK
IAogI2Vsc2UKLSNkZWZpbmUgQ0ZfQVZBSUxBQkxFKF9tYWMsIF9pb3MpCi0jZGVmaW5lIENGX0VO
VU1fQVZBSUxBQkxFKF9tYWMsIF9pb3MpCisjZGVmaW5lIEpTQ19BUElfQVZBSUxBQkxFKC4uLikK
ICNlbmRpZgogCiAjZW5kaWYgLyogX19XZWJLaXRBdmFpbGFiaWxpdHlfXyAqLwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9DdXJyZW50VGhpc0luc2lkZUJsb2Nr
R2V0dGVyVGVzdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VycmVudFRo
aXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0KaW5kZXggNTMxODhmYmE4OGY5NTQyN2M4YWU5MzM5
YWFjODhkMGM2OGExN2ViMS4uYmQ3ZThhNjg2MDdlNWY4ZGQ3OGQ5NDZiZGRhNzRhNjFkMjVmN2Uw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9DdXJyZW50VGhp
c0luc2lkZUJsb2NrR2V0dGVyVGVzdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL0N1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lm1tCkBAIC0yMyw2ICsyMyw3
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkN1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lmgi
CiAKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy9DdXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuYyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmMKaW5k
ZXggYWM1NDcxYTY3NDFiZmY5M2M3MDBiZjNiM2FhYzZlZDM4NzQ5ZjBiZi4uOWZmZTIzM2Y0Yjc5
NmY1YTBiOTViMzc0YTQ4M2IwMTRlZDViZGQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy9DdXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuYworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0N1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVzdC5j
CkBAIC0yMyw2ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJDdXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuaCIKIAogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmUHJpdmF0ZS5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9EYXRlVGVzdHMubW0gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL0RhdGVUZXN0cy5tbQppbmRleCAyYmRhM2FkYTZiMTU4ZTAxMDhh
ZWM1ZjQyZTc2NTM5NzMwZWMyZWQ5Li42NjUyMTc3ZGU0MTdiMTJlZTk0ZGU4ODNiOGZiMGJkNzA5
ZGQ2NzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0RhdGVU
ZXN0cy5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0RhdGVUZXN0cy5t
bQpAQCAtMjMsNiArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKKyNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRGF0ZVRlc3RzLmgiCiAjaW1wb3J0
IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy9KU0V4cG9ydFRlc3RzLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS90ZXN0cy9KU0V4cG9ydFRlc3RzLm1tCmluZGV4IDFjZWM5Mzk3OWM0MTZmNGMwZjA0OTA1
ZWU3NDc2ZTc4NjRkODQyNTIuLmRmZGM5NWY0N2JjNzc1YjA4YjM2NjczZDBiYmJmZTZiY2UzNDFi
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNFeHBvcnRU
ZXN0cy5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTRXhwb3J0VGVz
dHMubW0KQEAgLTIzLDYgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCisjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkpTRXhwb3J0VGVzdHMuaCIK
IAogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL0pTTm9kZS5jIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy9KU05vZGUuYwppbmRleCBkMGEwZGMzZWM3MjM3MjU3ZmExODBkMDUxNGY3NGM2YWQyZTRiNWI3
Li5iYzAwNDBhZTZiYTQwOTg1MzgzOGNhZWFkNmEyMzg0ZWM5OTkwMDQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZS5jCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNOb2RlLmMKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAogICovCiAKLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlICJjb25m
aWcuaCIKIAogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNOb2RlTGlzdC5jIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU05vZGVMaXN0LmMKaW5kZXggZjAzN2Uw
OTRhMDllMWEyMjYwNDRlZWQxZjIzZDBhNTE4NjFhM2Y0Yi4uOTlhMzI5NTE4ZTZhOWExY2ZiMTI2
NzY0NzM5YTBiNjljZmE1ZDQwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy9KU05vZGVMaXN0LmMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy9KU05vZGVMaXN0LmMKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAK
LSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1
ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9kZS5jIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS90ZXN0cy9Ob2RlLmMKaW5kZXggZGI2ODdlOTUyZjFhOWQ4YzEzNGI5MDY3N2QyOWE2NDA2
ZDhkYjFhMi4uOGY3ZDA2YjJhYTRhZGUyNjlkNjFlZmM2MWMwMTg0Y2NjMzE5NWEwNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Ob2RlLmMKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Ob2RlLmMKQEAgLTIzLDcgKzIzLDkgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAogICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOb2RlLmgi
CisKICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Ob2RlTGlzdC5jIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Ob2RlTGlzdC5jCmluZGV4IDY5ZjRjZDVjNDg3MzEyYmQ2
Mzk5NjM0ZmIwNjg0YTEyMjY2NGRjMTguLjIyZDM4N2MwZDQyMjZmYmFkMTE5N2M2NDgzMWNkNTdh
ZjMxYWZkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9k
ZUxpc3QuYworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL05vZGVMaXN0LmMK
QEAgLTIzLDYgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKKyNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogCiAjaW5jbHVkZSA8c3RkbGliLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL21pbmlkb20uYyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvbWluaWRvbS5jCmluZGV4IDAyYjQxYTljN2Y5ZGEx
MTNiMDAzZDRmOTE5YTQyMDhkMzg5Yjc4YmQuLjQxZjE4Y2RmNzI5MDQzNjkwY2ZlNzczYmE0MGQ4
YjViNDRjYTcwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
bWluaWRvbS5jCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvbWluaWRvbS5j
CkBAIC0yNCw3ICsyNCw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJKU0NvbnRleHRS
ZWYuaCIKICNpbmNsdWRlICJKU05vZGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy90ZXN0YXBpLmMKaW5kZXggN2JlY2RmZTA0MTE1YmY5NDg5ZWY4NDE5N2MxNjcxYzViODNiYTRl
Mi4uODZkMWMyNWMyN2U5NTJkNjFhYjllNDFiZTE0NTc0MTBmYmM0OGY0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgImNv
bmZpZy5oIgogCiAjaWYgVVNFKENGKQogI2luY2x1ZGUgIkphdmFTY3JpcHRDb3JlLmgiCkBAIC02
Niw2ICs2Niw4IEBACiB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKHZvaWQpOwogI2VuZGlmCiAKK2lu
dCB0ZXN0Q0FQSVZpYUNwcCh2b2lkKTsKKwogYm9vbCBhc3NlcnRUcnVlKGJvb2wgdmFsdWUsIGNv
bnN0IGNoYXIqIG1lc3NhZ2UpOwogCiBzdGF0aWMgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQ7
CkBAIC0xMzYxLDYgKzEzNjMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQog
I2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgdGVzdE9iamVjdGl2ZUNBUEkoKTsKICNlbmRp
ZgorICAgIFJFTEVBU0VfQVNTRVJUKCF0ZXN0Q0FQSVZpYUNwcCgpKTsKIAogICAgIGNvbnN0IGNo
YXIgKnNjcmlwdFBhdGggPSAidGVzdGFwaS5qcyI7CiAgICAgaWYgKGFyZ2MgPiAxKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDk0
NGFkMTA4YTZkN2I5MWUxMzUwZmY5MDNlMTViNmMxZDBjZGNmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmNwcApAQCAtMCwwICsxLDM4
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkFQSUNh
c3QuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCisjaW5jbHVkZSAiSmF2YVNjcmlwdENvcmUuaCIKKworI2luY2x1ZGUgPHd0Zi9EYXRhTG9n
Lmg+CisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitleHRlcm4gIkMiIGludCB0ZXN0Q0FQSVZp
YUNwcCgpOworCitjbGFzcyBBUElTdHJpbmcgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFQ
SVN0cmluZyk7CitwdWJsaWM6CisKKyAgICBBUElTdHJpbmcoY29uc3QgY2hhciogc3RyaW5nKQor
ICAgICAgICA6IG1fc3RyaW5nKEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHN0cmluZykp
CisgICAgeworICAgIH0KKworICAgIH5BUElTdHJpbmcoKQorICAgIHsKKyAgICAgICAgSlNTdHJp
bmdSZWxlYXNlKG1fc3RyaW5nKTsKKyAgICB9CisKKyAgICBvcGVyYXRvciBKU1N0cmluZ1JlZigp
IHsgcmV0dXJuIG1fc3RyaW5nOyB9CisKK3ByaXZhdGU6CisgICAgSlNTdHJpbmdSZWYgbV9zdHJp
bmc7Cit9OworCitjbGFzcyBBUElDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShB
UElDb250ZXh0KTsKK3B1YmxpYzoKKworICAgIEFQSUNvbnRleHQoKQorICAgICAgICA6IG1fY29u
dGV4dChKU0dsb2JhbENvbnRleHRDcmVhdGUobnVsbHB0cikpCisgICAgeworICAgICAgICBBUElT
dHJpbmcgcHJpbnQoInByaW50Iik7CisgICAgICAgIEpTT2JqZWN0UmVmIHByaW50RnVuY3Rpb24g
PSBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayhtX2NvbnRleHQsIHByaW50LCBbXSAo
SlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmLCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiopIHsKKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyBpKyspCisg
ICAgICAgICAgICAgICAgZGF0YUxvZyh0b0pTKHRvSlMoY3R4KSwgYXJndW1lbnRzW2ldKSk7Cisg
ICAgICAgICAgICBkYXRhTG9nTG4oKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjdHgpOworICAgICAgICB9KTsKKworICAgICAgICBKU09iamVjdFNldFByb3BlcnR5
KG1fY29udGV4dCwgSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KG1fY29udGV4dCksIHByaW50LCBw
cmludEZ1bmN0aW9uLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUsIG51bGxwdHIpOworICAgIH0K
KworICAgIH5BUElDb250ZXh0KCkKKyAgICB7CisgICAgICAgIEpTR2xvYmFsQ29udGV4dFJlbGVh
c2UobV9jb250ZXh0KTsKKyAgICB9CisKKyAgICBvcGVyYXRvciBKU0dsb2JhbENvbnRleHRSZWYo
KSB7IHJldHVybiBtX2NvbnRleHQ7IH0KKworcHJpdmF0ZToKKyAgICBKU0dsb2JhbENvbnRleHRS
ZWYgbV9jb250ZXh0OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIEFQSVZlY3Rv
ciA6IHByb3RlY3RlZCBWZWN0b3I8VD4geworICAgIHVzaW5nIEJhc2UgPSBWZWN0b3I8VD47Citw
dWJsaWM6CisgICAgQVBJVmVjdG9yKEFQSUNvbnRleHQmIGNvbnRleHQpCisgICAgICAgIDogQmFz
ZSgpCisgICAgICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgeworICAgIH0KKworICAgIH5B
UElWZWN0b3IoKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvJiB2YWx1ZSA6ICp0aGlzKQorICAg
ICAgICAgICAgSlNWYWx1ZVVucHJvdGVjdChtX2NvbnRleHQsIHZhbHVlKTsKKyAgICB9CisKKyAg
ICB1c2luZyBWZWN0b3I8VD46Om9wZXJhdG9yW107CisgICAgdXNpbmcgVmVjdG9yPFQ+OjpzaXpl
OworICAgIHVzaW5nIFZlY3RvcjxUPjo6YmVnaW47CisgICAgdXNpbmcgVmVjdG9yPFQ+OjplbmQ7
CisgICAgdXNpbmcgdHlwZW5hbWUgVmVjdG9yPFQ+OjppdGVyYXRvcjsKKworICAgIHZvaWQgYXBw
ZW5kKFQgdmFsdWUpCisgICAgeworICAgICAgICBKU1ZhbHVlUHJvdGVjdChtX2NvbnRleHQsIHZh
bHVlKTsKKyAgICAgICAgQmFzZTo6YXBwZW5kKFdURk1vdmUodmFsdWUpKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgQVBJQ29udGV4dCYgbV9jb250ZXh0OworfTsKKworY2xhc3MgVGVzdEFQSSB7
CitwdWJsaWM6CisgICAgaW50IHJ1bigpOworcHJpdmF0ZToKKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lLi4uIFN0cmluZ3M+CisgICAgYm9vbCBjaGVjayhib29sIGNvbmRpdGlvbiwgU3RyaW5ncy4u
LiBtZXNzYWdlKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEpTRnVuY3RvciwgdHlwZW5hbWUg
QVBJRnVuY3Rvcj4KKyAgICB2b2lkIGNoZWNrSlNBbmRBUElNYXRjaChjb25zdCBKU0Z1bmN0b3Im
LCBjb25zdCBBUElGdW5jdG9yJiwgY29uc3QgY2hhciogZGVzY3JpcHRpb24pOworCisgICAgLy8g
SGVscGVyIG1ldGhvZHMuCisgICAgdXNpbmcgU2NyaXB0UmVzdWx0ID0gRXhwZWN0ZWQ8SlNWYWx1
ZVJlZiwgSlNWYWx1ZVJlZj47CisgICAgU2NyaXB0UmVzdWx0IGV2YWx1YXRlU2NyaXB0KGNvbnN0
IGNoYXIqIHNjcmlwdCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCA9IG51bGxwdHIpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CisgICAgU2NyaXB0UmVzdWx0IGNhbGxG
dW5jdGlvbihjb25zdCBjaGFyKiBmdW5jdGlvblNvdXJjZSwgQXJndW1lbnRUeXBlcy4uLiBhcmd1
bWVudHMpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CisgICAgYm9v
bCBmdW5jdGlvblJldHVybnNUcnVlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uU291cmNlLCBBcmd1bWVu
dFR5cGVzLi4uIGFyZ3VtZW50cyk7CisKKyAgICAvLyBXYXlzIHRvIG1ha2Ugc2V0cyBvZiBpbnRl
cmVzdGluZyB0aGluZ3MuCisgICAgQVBJVmVjdG9yPEpTT2JqZWN0UmVmPiBpbnRlcmVzdGluZ09i
amVjdHMoKTsKKyAgICBBUElWZWN0b3I8SlNWYWx1ZVJlZj4gaW50ZXJlc3RpbmdLZXlzKCk7CisK
KyAgICBpbnQgZmFpbGVkIHsgMCB9OworICAgIEFQSUNvbnRleHQgY29udGV4dDsKK307CisKK2lu
dCB0ZXN0Q0FQSVZpYUNwcCgpCit7CisgICAgVGVzdEFQSSB0ZXN0ZXI7CisgICAgcmV0dXJuIHRl
c3Rlci5ydW4oKTsKK30KKworVGVzdEFQSTo6U2NyaXB0UmVzdWx0IFRlc3RBUEk6OmV2YWx1YXRl
U2NyaXB0KGNvbnN0IGNoYXIqIHNjcmlwdCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCkKK3sKKyAg
ICBBUElTdHJpbmcgc2NyaXB0QVBJU3RyaW5nKHNjcmlwdCk7CisgICAgSlNWYWx1ZVJlZiBleGNl
cHRpb24gPSBudWxscHRyOworCisgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU0V2YWx1YXRlU2Ny
aXB0KGNvbnRleHQsIHNjcmlwdEFQSVN0cmluZywgdGhpc09iamVjdCwgbnVsbHB0ciwgMCwgJmV4
Y2VwdGlvbik7CisgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8
SlNWYWx1ZVJlZj4oZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gU2NyaXB0UmVzdWx0KHJlc3VsdCk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CitUZXN0QVBJOjpTY3Jp
cHRSZXN1bHQgVGVzdEFQSTo6Y2FsbEZ1bmN0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uU291cmNl
LCBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBKU1ZhbHVlUmVmIGZ1bmN0aW9u
OworICAgIHsKKyAgICAgICAgU2NyaXB0UmVzdWx0IGZ1bmN0aW9uUmVzdWx0ID0gZXZhbHVhdGVT
Y3JpcHQoZnVuY3Rpb25Tb3VyY2UpOworICAgICAgICBpZiAoIWZ1bmN0aW9uUmVzdWx0KQorICAg
ICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uUmVzdWx0OworICAgICAgICBmdW5jdGlvbiA9IGZ1bmN0
aW9uUmVzdWx0LnZhbHVlKCk7CisgICAgfQorCisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBu
dWxscHRyOworICAgIGlmIChKU09iamVjdFJlZiBmdW5jdGlvbk9iamVjdCA9IEpTVmFsdWVUb09i
amVjdChjb250ZXh0LCBmdW5jdGlvbiwgJmV4Y2VwdGlvbikpIHsKKyAgICAgICAgSlNWYWx1ZVJl
ZiBhcmdzW3NpemVvZi4uLihhcmd1bWVudHMpXSB7IGFyZ3VtZW50cy4uLiB9OworICAgICAgICBK
U1ZhbHVlUmVmIHJlc3VsdCA9IEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oY29udGV4dCwgZnVuY3Rp
b25PYmplY3QsIGZ1bmN0aW9uT2JqZWN0LCBzaXplb2YuLi4oYXJndW1lbnRzKSwgYXJncywgJmV4
Y2VwdGlvbik7CisgICAgICAgIGlmICghZXhjZXB0aW9uKQorICAgICAgICAgICAgcmV0dXJuIFNj
cmlwdFJlc3VsdChyZXN1bHQpOworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUKGV4Y2VwdGlv
bik7CisgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8SlNWYWx1ZVJlZj4oZXhjZXB0aW9uKTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KK2Jvb2wgVGVzdEFQSTo6ZnVuY3Rp
b25SZXR1cm5zVHJ1ZShjb25zdCBjaGFyKiBmdW5jdGlvblNvdXJjZSwgQXJndW1lbnRUeXBlcy4u
LiBhcmd1bWVudHMpCit7CisgICAgSlNWYWx1ZVJlZiB0cnVlVmFsdWUgPSBKU1ZhbHVlTWFrZUJv
b2xlYW4oY29udGV4dCwgdHJ1ZSk7CisgICAgU2NyaXB0UmVzdWx0IHJlc3VsdCA9IGNhbGxGdW5j
dGlvbihmdW5jdGlvblNvdXJjZSwgYXJndW1lbnRzLi4uKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBKU1ZhbHVlSXNTdHJpY3RFcXVhbChjb250
ZXh0LCB0cnVlVmFsdWUsIHJlc3VsdC52YWx1ZSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUu
Li4gU3RyaW5ncz4KK2Jvb2wgVGVzdEFQSTo6Y2hlY2soYm9vbCBjb25kaXRpb24sIFN0cmluZ3Mu
Li4gbWVzc2FnZXMpCit7CisgICAgaWYgKCFjb25kaXRpb24pIHsKKyAgICAgICAgZGF0YUxvZ0xu
KG1lc3NhZ2VzLi4uLCAiOiBGQUlMRUQiKTsKKyAgICAgICAgZmFpbGVkKys7CisgICAgfSBlbHNl
CisgICAgICAgIGRhdGFMb2dMbihtZXNzYWdlcy4uLiwgIjogUEFTU0VEIik7CisKKyAgICByZXR1
cm4gY29uZGl0aW9uOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0Z1bmN0b3IsIHR5cGVuYW1l
IEFQSUZ1bmN0b3I+Cit2b2lkIFRlc3RBUEk6OmNoZWNrSlNBbmRBUElNYXRjaChjb25zdCBKU0Z1
bmN0b3ImIGpzRnVuY3RvciwgY29uc3QgQVBJRnVuY3RvciYgYXBpRnVuY3RvciwgY29uc3QgY2hh
ciogZGVzY3JpcHRpb24pCit7CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOwor
ICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gYXBpRnVuY3RvcigmZXhjZXB0aW9uKTsKKyAgICBTY3Jp
cHRSZXN1bHQganNSZXN1bHQgPSBqc0Z1bmN0b3IoKTsKKyAgICBpZiAoIWpzUmVzdWx0KSB7Cisg
ICAgICAgIGNoZWNrKGV4Y2VwdGlvbiwgIkpTIGFuZCBBUEkgY2FsbHMgc2hvdWxkIGJvdGggdGhy
b3cgYW4gZXhjZXB0aW9uIHdoaWxlICIsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgY2hlY2soZnVu
Y3Rpb25SZXR1cm5zVHJ1ZSgiKGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEuY29uc3RydWN0b3Ig
PT09IGIuY29uc3RydWN0b3I7IH0pIiwgZXhjZXB0aW9uLCBqc1Jlc3VsdC5lcnJvcigpKSwgIkpT
IGFuZCBBUEkgY2FsbHMgc2hvdWxkIGJvdGggdGhyb3cgdGhlIHNhbWUgZXhjZXB0aW9uIHdoaWxl
ICIsIGRlc2NyaXB0aW9uKTsKKyAgICB9IGVsc2UgeworICAgICAgICBjaGVjayghZXhjZXB0aW9u
LCAiSlMgYW5kIEFQSSBjYWxscyBzaG91bGQgYm90aCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uIHdo
aWxlICIsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgY2hlY2soSlNWYWx1ZUlzU3RyaWN0RXF1YWwo
Y29udGV4dCwgcmVzdWx0LCBqc1Jlc3VsdC52YWx1ZSgpKSwgIkpTIHJlc3VsdCBhbmQgQVBJIGNh
bGxzIHNob3VsZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUgd2hpbGUgIiwgZGVzY3JpcHRpb24pOwor
ICAgIH0KK30KKworQVBJVmVjdG9yPEpTT2JqZWN0UmVmPiBUZXN0QVBJOjppbnRlcmVzdGluZ09i
amVjdHMoKQoreworICAgIEFQSVZlY3RvcjxKU09iamVjdFJlZj4gcmVzdWx0KGNvbnRleHQpOwor
ICAgIEpTT2JqZWN0UmVmIGFycmF5ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGV2YWx1YXRl
U2NyaXB0KAorICAgICAgICAiW3t9LCBbXSwgeyBbU3ltYm9sLml0ZXJhdG9yXTogMSB9LCBuZXcg
RGF0ZSgpLCBuZXcgU3RyaW5nKCdzdHInKSwgbmV3IE1hcCgpLCBuZXcgU2V0KCksIG5ldyBXZWFr
TWFwKCksIG5ldyBXZWFrU2V0KCksIG5ldyBFcnJvcigpLCBuZXcgTnVtYmVyKDQyKSwgbmV3IEJv
b2xlYW4oKSwgeyBnZXQgbGVuZ3RoKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSB9XTsiKS52YWx1
ZSgpLCBudWxscHRyKTsKKworICAgIEFQSVN0cmluZyBsZW5ndGhTdHJpbmcoImxlbmd0aCIpOwor
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBKU09iamVjdEdl
dFByb3BlcnR5KGNvbnRleHQsIGFycmF5LCBsZW5ndGhTdHJpbmcsIG51bGxwdHIpLCBudWxscHRy
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAg
SlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIEpTT2JqZWN0R2V0
UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIGFycmF5LCBpLCBudWxscHRyKSwgbnVsbHB0cik7Cisg
ICAgICAgIEFTU0VSVChvYmplY3QpOworICAgICAgICByZXN1bHQuYXBwZW5kKG9iamVjdCk7Cisg
ICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQVBJVmVjdG9yPEpTVmFsdWVSZWY+IFRl
c3RBUEk6OmludGVyZXN0aW5nS2V5cygpCit7CisgICAgQVBJVmVjdG9yPEpTVmFsdWVSZWY+IHJl
c3VsdChjb250ZXh0KTsKKyAgICBKU09iamVjdFJlZiBhcnJheSA9IEpTVmFsdWVUb09iamVjdChj
b250ZXh0LCBldmFsdWF0ZVNjcmlwdCgiW3t9LCBbXSwgMSwgU3ltYm9sLml0ZXJhdG9yLCAnbGVu
Z3RoJ10iKS52YWx1ZSgpLCBudWxscHRyKTsKKworICAgIEFQSVN0cmluZyBsZW5ndGhTdHJpbmco
Imxlbmd0aCIpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0
LCBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGFycmF5LCBsZW5ndGhTdHJpbmcsIG51bGxw
dHIpLCBudWxscHRyKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHlBdEluZGV4
KGNvbnRleHQsIGFycmF5LCBpLCBudWxscHRyKTsKKyAgICAgICAgQVNTRVJUKHZhbHVlKTsKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZCh2YWx1ZSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworaW50IFRlc3RBUEk6OnJ1bigpCit7CisgICAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKKyAg
ICBkYXRhTG9nTG4oIlN0YXJ0aW5nIEMtQVBJIHRlc3RzIGluIEMrKyIpOworICAgIGNvbnN0IGNo
YXIqIGlzU3ltYm9sRnVuY3Rpb24gPSAiKGZ1bmN0aW9uIGlzU3ltYm9sKHN5bWJvbCkgeyByZXR1
cm4gdHlwZW9mKHN5bWJvbCkgPT09ICdzeW1ib2wnOyB9KSI7CisgICAgY29uc3QgY2hhciogZ2V0
RnVuY3Rpb24gPSAiKGZ1bmN0aW9uIGdldChvYmplY3QsIGtleSkgeyByZXR1cm4gb2JqZWN0W2tl
eV07IH0pIjsKKyAgICBjb25zdCBjaGFyKiBzZXRGdW5jdGlvbiA9ICIoZnVuY3Rpb24gc2V0KG9i
amVjdCwga2V5LCB2YWx1ZSkgeyBvYmplY3Rba2V5XSA9IHZhbHVlOyB9KSI7CisgICAgY29uc3Qg
Y2hhciogaGFzRnVuY3Rpb24gPSAiKGZ1bmN0aW9uIGhhcyhvYmplY3QsIGtleSkgeyByZXR1cm4g
a2V5IGluIG9iamVjdDsgfSkiOworICAgIGNvbnN0IGNoYXIqIGRlbGV0ZUZ1bmN0aW9uID0gIihm
dW5jdGlvbiBkZWwob2JqZWN0LCBrZXkpIHsgcmV0dXJuIGRlbGV0ZSBvYmplY3Rba2V5XTsgfSki
OworCisgICAgeworICAgICAgICAvLyBDYW4ndCBjYWxsIFN5bWJvbCBhcyBhIGNvbnN0cnVjdG9y
IHNpbmNlIGl0J3Mgbm90IHN1YmNsYXNzYWJsZS4KKyAgICAgICAgYXV0byByZXN1bHQgPSBldmFs
dWF0ZVNjcmlwdCgiU3ltYm9sKCdkb3BlJyk7Iik7CisgICAgICAgIGNoZWNrKEpTVmFsdWVHZXRU
eXBlKGNvbnRleHQsIHJlc3VsdC52YWx1ZSgpKSA9PSBrSlNUeXBlU3ltYm9sLCAiZG9wZSBnZXQg
dHlwZSBpcyBhIHN5bWJvbCIpOworICAgICAgICBjaGVjayhKU1ZhbHVlSXNTeW1ib2woY29udGV4
dCwgcmVzdWx0LnZhbHVlKCkpLCAiZG9wZSBpcyBhIHN5bWJvbCIpOworICAgIH0KKworICAgIHsK
KyAgICAgICAgQVBJU3RyaW5nIGRlc2NyaXB0aW9uKCJkb3BlIik7CisgICAgICAgIEpTVmFsdWVS
ZWYgc3ltYm9sID0gSlNWYWx1ZU1ha2VTeW1ib2woY29udGV4dCwgZGVzY3JpcHRpb24pOworICAg
ICAgICBjaGVjayhmdW5jdGlvblJldHVybnNUcnVlKGlzU3ltYm9sRnVuY3Rpb24sIHN5bWJvbCks
ICJKU1ZhbHVlTWFrZVN5bWJvbCBtYWtlcyBhIHN5bWJvbCB2YWx1ZSIpOworICAgIH0KKworICAg
IHsKKyAgICAgICAgYXV0byBvYmplY3RzID0gaW50ZXJlc3RpbmdPYmplY3RzKCk7CisgICAgICAg
IGF1dG8ga2V5cyA9IGludGVyZXN0aW5nS2V5cygpOworCisgICAgICAgIGZvciAoYXV0byYgb2Jq
ZWN0IDogb2JqZWN0cykgeworICAgICAgICAgICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzKSB7Cisg
ICAgICAgICAgICAgICAgY2hlY2tKU0FuZEFQSU1hdGNoKAorICAgICAgICAgICAgICAgICAgICBb
Jl0geworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxGdW5jdGlvbihnZXRGdW5j
dGlvbiwgb2JqZWN0LCBrZXkpOworICAgICAgICAgICAgICAgICAgICB9LCBbJl0gKEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT2JqZWN0
R2V0UHJvcGVydHlLZXkoY29udGV4dCwgb2JqZWN0LCBrZXksIGV4Y2VwdGlvbik7CisgICAgICAg
ICAgICAgICAgICAgIH0sICJjaGVja2luZyBnZXQgcHJvcGVydHkga2V5cyIpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgeworICAgICAgICBhdXRvIGpzT2JqZWN0cyA9
IGludGVyZXN0aW5nT2JqZWN0cygpOworICAgICAgICBhdXRvIGFwaU9iamVjdHMgPSBpbnRlcmVz
dGluZ09iamVjdHMoKTsKKyAgICAgICAgYXV0byBrZXlzID0gaW50ZXJlc3RpbmdLZXlzKCk7CisK
KyAgICAgICAgSlNWYWx1ZVJlZiB0aGVBbnN3ZXIgPSBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0
LCA0Mik7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwganNPYmplY3RzLnNpemUoKTsg
aSsrKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGtleSA6IGtleXMpIHsKKyAgICAgICAgICAg
ICAgICBKU09iamVjdFJlZiBqc09iamVjdCA9IGpzT2JqZWN0c1tpXTsKKyAgICAgICAgICAgICAg
ICBKU09iamVjdFJlZiBhcGlPYmplY3QgPSBhcGlPYmplY3RzW2ldOworICAgICAgICAgICAgICAg
IGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oc2V0RnVuY3Rpb24sIGpzT2JqZWN0
LCBrZXksIHRoZUFuc3dlcik7CisgICAgICAgICAgICAgICAgICAgIH0gLCBbJl0gKEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3RTZXRQcm9w
ZXJ0eUtleShjb250ZXh0LCBhcGlPYmplY3QsIGtleSwgdGhlQW5zd2VyLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZU5vbmUsIGV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisgICAgICAgICAgICAgICAgICAgIH0sICJz
ZXR0aW5nIHByb3BlcnR5IGtleXMgdG8gdGhlIGFuc3dlciIpOworICAgICAgICAgICAgICAgIC8v
IENoZWNrIGdldCBpcyB0aGUgc2FtZSBvbiBBUEkgb2JqZWN0LgorICAgICAgICAgICAgICAgIGNo
ZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oZ2V0RnVuY3Rpb24sIGFwaU9iamVjdCwg
a2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24p
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09iamVjdEdldFByb3BlcnR5S2V5
KGNvbnRleHQsIGFwaU9iamVjdCwga2V5LCBleGNlcHRpb24pOworICAgICAgICAgICAgICAgICAg
ICB9LCAiZ2V0dGluZyBwcm9wZXJ0eSBrZXlzIGZyb20gQVBJIG9iamVjdHMiKTsKKyAgICAgICAg
ICAgICAgICAvLyBDaGVjayBnZXQgaXMgdGhlIHNhbWUgb24gcmVzcGVjdGl2ZSBvYmplY3RzLgor
ICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAg
WyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oZ2V0RnVu
Y3Rpb24sIGpzT2JqZWN0LCBrZXkpOworICAgICAgICAgICAgICAgICAgICB9LCBbJl0gKEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT2Jq
ZWN0R2V0UHJvcGVydHlLZXkoY29udGV4dCwgYXBpT2JqZWN0LCBrZXksIGV4Y2VwdGlvbik7Cisg
ICAgICAgICAgICAgICAgICAgIH0sICJnZXR0aW5nIHByb3BlcnR5IGtleXMgZnJvbSByZXNwZWN0
aXZlIG9iamVjdHMiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHsK
KyAgICAgICAgYXV0byBvYmplY3RzID0gaW50ZXJlc3RpbmdPYmplY3RzKCk7CisgICAgICAgIGF1
dG8ga2V5cyA9IGludGVyZXN0aW5nS2V5cygpOworCisgICAgICAgIEpTVmFsdWVSZWYgdGhlQW5z
d2VyID0gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgNDIpOworICAgICAgICBmb3IgKGF1dG8m
IG9iamVjdCA6IG9iamVjdHMpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYga2V5IDoga2V5cykg
eworICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAg
ICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oaGFz
RnVuY3Rpb24sIG9iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgWyZdIChKU1Zh
bHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlTWFrZUJvb2xlYW4oY29udGV4dCwgSlNPYmplY3RIYXNQcm9wZXJ0eUtleShjb250ZXh0LCBv
YmplY3QsIGtleSwgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIH0sICJjaGVja2lu
ZyBoYXMgcHJvcGVydHkga2V5cyB1bnNldCIpOworCisgICAgICAgICAgICAgICAgY2hlY2soISFj
YWxsRnVuY3Rpb24oc2V0RnVuY3Rpb24sIG9iamVjdCwga2V5LCB0aGVBbnN3ZXIpLCAic2V0IHBy
b3BlcnR5IHRvIHRoZSBhbnN3ZXIiKTsKKworICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElN
YXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBjYWxsRnVuY3Rpb24oaGFzRnVuY3Rpb24sIG9iamVjdCwga2V5KTsKKyAgICAgICAg
ICAgICAgICAgICAgfSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgSlNPYmplY3RI
YXNQcm9wZXJ0eUtleShjb250ZXh0LCBvYmplY3QsIGtleSwgZXhjZXB0aW9uKSk7CisgICAgICAg
ICAgICAgICAgICAgIH0sICJjaGVja2luZyBoYXMgcHJvcGVydHkga2V5cyBzZXQiKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0byBvYmplY3Rz
ID0gaW50ZXJlc3RpbmdPYmplY3RzKCk7CisgICAgICAgIGF1dG8ga2V5cyA9IGludGVyZXN0aW5n
S2V5cygpOworCisgICAgICAgIEpTVmFsdWVSZWYgdGhlQW5zd2VyID0gSlNWYWx1ZU1ha2VOdW1i
ZXIoY29udGV4dCwgNDIpOworICAgICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IG9iamVjdHMpIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byYga2V5IDoga2V5cykgeworICAgICAgICAgICAgICAgIGNo
ZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oZGVsZXRlRnVuY3Rpb24sIG9iamVjdCwg
a2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24p
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29u
dGV4dCwgSlNPYmplY3REZWxldGVQcm9wZXJ0eUtleShjb250ZXh0LCBvYmplY3QsIGtleSwgZXhj
ZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIH0sICJjaGVja2luZyBoYXMgcHJvcGVydHkg
a2V5cyB1bnNldCIpOworCisgICAgICAgICAgICAgICAgY2hlY2soISFjYWxsRnVuY3Rpb24oc2V0
RnVuY3Rpb24sIG9iamVjdCwga2V5LCB0aGVBbnN3ZXIpLCAic2V0IHByb3BlcnR5IHRvIHRoZSBh
bnN3ZXIiKTsKKworICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAg
ICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVu
Y3Rpb24oZGVsZXRlRnVuY3Rpb24sIG9iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAg
fSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgSlNPYmplY3REZWxldGVQcm9wZXJ0
eUtleShjb250ZXh0LCBvYmplY3QsIGtleSwgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAg
ICAgIH0sICJjaGVja2luZyBoYXMgcHJvcGVydHkga2V5cyBzZXQiKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIGRhdGFMb2dMbigiQy1BUEkgdGVzdHMgaW4gQysrIGhh
ZCAiLCBmYWlsZWQsICIgZmFpbHVyZXMiKTsKKyAgICByZXR1cm4gZmFpbGVkOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCmluZGV4IDQxMTljYjdmMmQxMjRk
MTU2OTNkMTQ5NTZmZDg4NGQ1NzIyMGQzMDEuLjg3YjAxZTc3MWU3ZDRjZDcyZjAyYjZhZTMwOTQw
YzY0MWQ4ZTY3YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
dGVzdGFwaS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGku
bW0KQEAgLTIzLDYgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgogCiAjaW1w
b3J0ICJDdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5oIgpAQCAtNTg1LDYgKzU4Niw3
MSBAQCBzdGF0aWMgdm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSU1haW4oKQogICAgICAgICBjaGVja1Jl
c3VsdChAIm5ldyBEYXRlIiwgcmVzdWx0LmlzRGF0ZSk7CiAgICAgfQogCisgICAgQGF1dG9yZWxl
YXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9j
XSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAqc3ltYm9sID0gW2NvbnRleHQgZXZhbHVhdGVTY3Jp
cHQ6QCJTeW1ib2woJ2RvcGUnKTsiXTsKKyAgICAgICAgSlNWYWx1ZSAqbm90U3ltYm9sID0gW2Nv
bnRleHQgZXZhbHVhdGVTY3JpcHQ6QCInZG9wZSciXTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJT
aG91bGQgYmUgYSBzeW1ib2wgdmFsdWUiLCBzeW1ib2wuaXNTeW1ib2wpOworICAgICAgICBjaGVj
a1Jlc3VsdChAIlNob3VsZCBub3QgYmUgYSBzeW1ib2wgdmFsdWUiLCAhbm90U3ltYm9sLmlzU3lt
Ym9sKTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0
ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICpz
eW1ib2wgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246QCJkb3Bl
IiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIGNoZWNrUmVzdWx0KEAiU2hvdWxkIGJlIGEg
Y3JlYXRlZCBmcm9tIE9iYy1DIiwgc3ltYm9sLmlzU3ltYm9sKTsKKyAgICB9CisKKyNpZiAhKGRl
ZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA8IDEwMTMwMCkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEw
MDAwKQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4
dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAqYXJyYXlJdGVy
YXRvciA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiQXJyYXkucHJvdG90eXBlW1N5bWJvbC5p
dGVyYXRvcl0iXTsKKyAgICAgICAgSlNWYWx1ZSAqaXRlcmF0b3JTeW1ib2wgPSBjb250ZXh0W0Ai
U3ltYm9sIl1bQCJpdGVyYXRvciJdOworICAgICAgICBKU1ZhbHVlICphcnJheSA9IFtKU1ZhbHVl
IHZhbHVlV2l0aE5ld0FycmF5SW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBjaGVja1Jlc3Vs
dChAIkxvb2tpbmcgdXAgYnkgc3Vic2NyaXB0IHdpdGggc3ltYm9sIHNob3VsZCB3b3JrIiwgW2Fy
cmF5W2l0ZXJhdG9yU3ltYm9sXSBpc0VxdWFsOmFycmF5SXRlcmF0b3JdKTsKKyAgICAgICAgY2hl
Y2tSZXN1bHQoQCJMb29raW5nIHVwIGJ5IG1ldGhvZCB3aXRoIHN5bWJvbCBzaG91bGQgd29yayIs
IFtbYXJyYXkgdmFsdWVGb3JQcm9wZXJ0eTppdGVyYXRvclN5bWJvbF0gaXNFcXVhbDphcnJheUl0
ZXJhdG9yXSk7CisgICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29u
dGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1
ZSAqaXRlcmF0b3JTeW1ib2wgPSBjb250ZXh0W0AiU3ltYm9sIl1bQCJpdGVyYXRvciJdOworICAg
ICAgICBKU1ZhbHVlICpvYmplY3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdPYmplY3RJbkNvbnRl
eHQ6Y29udGV4dF07CisgICAgICAgIEpTVmFsdWUgKnRoZUFuc3dlciA9IFtKU1ZhbHVlIHZhbHVl
V2l0aFVJbnQzMjo0MiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIG9iamVjdFtpdGVyYXRv
clN5bWJvbF0gPSB0aGVBbnN3ZXI7CisgICAgICAgIGNoZWNrUmVzdWx0KEAiU2V0dGluZyBieSBz
dWJzY3JpcHQgd2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsiLCBbb2JqZWN0W2l0ZXJhdG9yU3ltYm9s
XSBpc0VxdWFsOnRoZUFuc3dlcl0pOworICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgewor
ICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07Cisg
ICAgICAgIEpTVmFsdWUgKml0ZXJhdG9yU3ltYm9sID0gY29udGV4dFtAIlN5bWJvbCJdW0AiaXRl
cmF0b3IiXTsKKyAgICAgICAgSlNWYWx1ZSAqb2JqZWN0ID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3
T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBKU1ZhbHVlICp0aGVBbnN3ZXIgPSBb
SlNWYWx1ZSB2YWx1ZVdpdGhVSW50MzI6NDIgaW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBb
b2JqZWN0IHNldFZhbHVlOnRoZUFuc3dlciBmb3JQcm9wZXJ0eTppdGVyYXRvclN5bWJvbF07Cisg
ICAgICAgIGNoZWNrUmVzdWx0KEAiU2V0dGluZyBieSBtZXRob2Qgd2l0aCBzeW1ib2wgc2hvdWxk
IHdvcmsiLCBbb2JqZWN0W2l0ZXJhdG9yU3ltYm9sXSBpc0VxdWFsOnRoZUFuc3dlcl0pOworICAg
IH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQg
PSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUgKml0ZXJhdG9yU3lt
Ym9sID0gY29udGV4dFtAIlN5bWJvbCJdW0AiaXRlcmF0b3IiXTsKKyAgICAgICAgSlNWYWx1ZSAq
b2JqZWN0ID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOwor
ICAgICAgICBKU1ZhbHVlICp0aGVBbnN3ZXIgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhVSW50MzI6NDIg
aW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBvYmplY3RbaXRlcmF0b3JTeW1ib2xdID0gdGhl
QW5zd2VyOworICAgICAgICBjaGVja1Jlc3VsdChAImhhcyBwcm9wZXJ0eSB3aXRoIHN5bWJvbCBz
aG91bGQgd29yayIsIFtvYmplY3QgaGFzUHJvcGVydHk6aXRlcmF0b3JTeW1ib2xdKTsKKyAgICB9
CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0g
W1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICppdGVyYXRvclN5bWJv
bCA9IGNvbnRleHRbQCJTeW1ib2wiXVtAIml0ZXJhdG9yIl07CisgICAgICAgIEpTVmFsdWUgKm9i
amVjdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld09iamVjdEluQ29udGV4dDpjb250ZXh0XTsKKyAg
ICAgICAgSlNWYWx1ZSAqdGhlQW5zd2VyID0gW0pTVmFsdWUgdmFsdWVXaXRoVUludDMyOjQyIGlu
Q29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJkZWxldGUgcHJvcGVydHkg
d2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsgd2l0aG91dCBwcm9wZXJ0eSIsIFtvYmplY3QgZGVsZXRl
UHJvcGVydHk6aXRlcmF0b3JTeW1ib2xdKTsKKyAgICAgICAgb2JqZWN0W2l0ZXJhdG9yU3ltYm9s
XSA9IHRoZUFuc3dlcjsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJkZWxldGUgcHJvcGVydHkgd2l0
aCBzeW1ib2wgc2hvdWxkIHdvcmsgd2l0aCBwcm9wZXJ0eSIsIFtvYmplY3QgZGVsZXRlUHJvcGVy
dHk6aXRlcmF0b3JTeW1ib2xdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJkZWxldGUgc2hvdWxk
IGJlIGZhbHNlIHdpdGggbm9uLWNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSIsICFbY29udGV4dFtAIkFy
cmF5Il0gZGVsZXRlUHJvcGVydHk6QCJwcm90b3R5cGUiXSk7CisgICAgfQorCisjZW5kaWYgLy8g
IShkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDApIHx8IChkZWZpbmVkKF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8
IDExMDAwMCkKKwogICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICBKU0NvbGxlY3Rpb24q
IG15UHJpdmF0ZVByb3BlcnRpZXMgPSBbW0pTQ29sbGVjdGlvbiBhbGxvY10gaW5pdF07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjk4ZDYxNDExYTI4NmRhN2NkMzVmOTRiYzdi
MWM3ZDE5NGFkNGEzNC4uMzg2ODg2MjE5MjI0OGViNjA1MTY0NjIyNDdjMzA1YmNmNGVjYTcxNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMzMsNiArMTAzMyw3IEBACiAJCTUz
RTc3N0U0MUU5MkUyNjUwMDdDQkVDNCAvKiBXYXNtTW9kdWxlSW5mb3JtYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRTc3N0UyMUU5MkUyNjUw
MDdDQkVDNCAvKiBXYXNtTW9kdWxlSW5mb3JtYXRpb24uaCAqLzsgfTsKIAkJNTNFOUUwQUMxRUFF
ODNERjAwRkVFMjUxIC8qIFdhc21NYWNoaW5lVGhyZWFkcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFOUUwQUExRUFFODNERTAwRkVFMjUxIC8qIFdh
c21NYWNoaW5lVGhyZWFkcy5oICovOyB9OwogCQk1M0U5RTBBRjFFQUVDNDU3MDBGRUUyNTEgLyog
V2FzbVRpZXJVcENvdW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1M0U5RTBBRTFFQUVDNDU3MDBGRUUyNTEgLyogV2FzbVRpZXJVcENvdW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTNFQUZFMkYy
MDhERkFCNDAwN0Q1MjRCIC8qIHRlc3RhcGkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxRDRFMTkxRjU5Q0REMjAwRUM4MzZDIC8qIHRlc3RhcGku
Y3BwICovOyB9OwogCQk1M0YxMUY0MTIwOTEzOEQ3MDBFNDExQTcgLyogSlNJbW11dGFibGVCdXR0
ZXJmbHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
RjExRjQwMjA5MTM4RDcwMEU0MTFBNyAvKiBKU0ltbXV0YWJsZUJ1dHRlcmZseS5oICovOyB9Owog
CQk1M0Y0MEU4NTFENThGOTc3MDA5OUExQjYgLyogV2FzbVNlY3Rpb25zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU4NDFENThGOTc3MDA5OUEx
QjYgLyogV2FzbVNlY3Rpb25zLmggKi87IH07CiAJCTUzRjQwRThCMUQ1OTAxQkIwMDk5QTFCNiAv
KiBXYXNtRnVuY3Rpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzRjQwRThBMUQ1OTAxQkIwMDk5QTFCNiAvKiBXYXNtRnVuY3Rpb25QYXJz
ZXIuaCAqLzsgfTsKQEAgLTMyODMsNiArMzI4NCw3IEBACiAJCTUzMTFCRDQ5MUVBNTgxRTUwMDUy
NTI4MSAvKiBXYXNtT01HUGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
YXNtT01HUGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzEzNzRCQzFENUNF
Njc2MDBBRjdBMEIgLyogV2FzbVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2FzbVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxMzc0QkUxRDVD
RTk1MDAwQUY3QTBCIC8qIFdhc21QbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdhc21QbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMx
RDRFMTkxRjU5Q0REMjAwRUM4MzZDIC8qIHRlc3RhcGkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
dGVzdGFwaS5jcHA7IHBhdGggPSBBUEkvdGVzdHMvdGVzdGFwaS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUzM0IxNURFMURDN0Y0NjMwMDRENTAwQSAvKiBXYXNtT3BzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21PcHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTM0MUZDNkYxREFDMzNFNTAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0No
ZWNrVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNXYXNt
Qm91bmRzQ2hlY2tWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0MUZDNzExREFDMzQzQzAwRTdFNEQ3
IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBwYXRoID0gYjMvQjNXYXNtQm91bmRzQ2hl
Y2tWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ1Myw3ICszNDU1LDYg
QEAKIAkJNTM5MTdFN0ExQjc5MDZFNDAwMEVCRDMzIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUzOTE3RTdDMUI3OTExMDYwMDBFQkQzMyAvKiBKU1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZWRB
cnJheVZpZXdQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM5MTdF
ODMxQjc5MUNCODAwMEVCRDMzIC8qIFR5cGVkQXJyYXlQcm90b3R5cGUuanMgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBUeXBlZEFycmF5UHJvdG90eXBlLmpzOyBwYXRo
ID0gYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OwotCQk1MzlFQjA3MTFENTUzREY4MDBDODJFRjcgLyogdGVzdFdhc20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdGVzdFdhc20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MzlGQjhCOTFDOTlEQTdDMDA5NDBGQTEgLyogSlNBcnJheUlu
bGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJheUlubGluZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNCMEJFMzMxRTU2MUFDOTAwQThGQzI5
IC8qIEdldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUzQjBCRTM1MUU1NjFCMDkwMEE4RkMyOSAvKiBQcm94eWFibGVBY2Nlc3ND
YXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3h5YWJsZUFj
Y2Vzc0Nhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTQ0MiwxMCArNTQ0
MywxMCBAQAogCQkJCUZFQjUxRjZCMUE5N0I2ODgwMDFGOTIxQyAvKiBSZWdyZXNzMTQxODA5Lm1t
ICovLAogCQkJCUZFQ0I4QjI5MUQyNUNBQkIwMDZGMjQ2MyAvKiB0ZXN0YXBpLWZ1bmN0aW9uLW92
ZXJyaWRlcy5qcyAqLywKIAkJCQkxNEJENUEyRDBBM0U5MUY2MDBCQUY1OUMgLyogdGVzdGFwaS5j
ICovLAorCQkJCTUzMUQ0RTE5MUY1OUNERDIwMEVDODM2QyAvKiB0ZXN0YXBpLmNwcCAqLywKIAkJ
CQkxNEQ4NTc3NDBBNDY5NkM4MDAzMjE0NkMgLyogdGVzdGFwaS5qcyAqLywKIAkJCQk4NkQyMjIx
OTE2N0VGOTQ0MDAyNEM4MDQgLyogdGVzdGFwaS5tbSAqLywKIAkJCQk2NTExMjJFNTE0MDQ2OUJB
MDAyQjEwMUQgLyogdGVzdFJlZ0V4cC5jcHAgKi8sCi0JCQkJNTM5RUIwNzExRDU1M0RGODAwQzgy
RUY3IC8qIHRlc3RXYXNtLmNwcCAqLywKIAkJCQk1MzQ5MDI4MjFDNzI0MkM4MDAxMkJDQjggLyog
VHlwZWRBcnJheUNUZXN0LmNwcCAqLywKIAkJCQk1MzQ5MDI4MzFDNzI0MkM4MDAxMkJDQjggLyog
VHlwZWRBcnJheUNUZXN0LmggKi8sCiAJCQkpOwpAQCAtOTkzMyw2ICs5OTM0LDEwIEBACiAJCQkJ
IiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvSlNWYWx1
ZS5oIiwKIAkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9Q
QVRIKS9KU1ZpcnR1YWxNYWNoaW5lLmgiLAogCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVC
TElDX0hFQURFUlNfRk9MREVSX1BBVEgpL1dlYktpdEF2YWlsYWJpbGl0eS5oIiwKKwkJCQkiJChU
QVJHRVRfQlVJTERfRElSKS8kKFBSSVZBVEVfSEVBREVSU19GT0xERVJfUEFUSCkvSlNDb250ZXh0
UmVmUHJpdmF0ZS5oIiwKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBSSVZBVEVfSEVBREVS
U19GT0xERVJfUEFUSCkvSlNCYXNlUHJpdmF0ZS5oIiwKKwkJCQkiJChUQVJHRVRfQlVJTERfRElS
KS8kKFBSSVZBVEVfSEVBREVSU19GT0xERVJfUEFUSCkvSlNSZW1vdGVJbnNwZWN0b3IuaCIsCisJ
CQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvSlNU
eXBlZEFycmF5LmgiLAogCQkJKTsKIAkJCW5hbWUgPSAiUG9zdHByb2Nlc3MgSGVhZGVycyI7CiAJ
CQlvdXRwdXRQYXRocyA9ICgKQEAgLTEwMTU3LDYgKzEwMTYyLDcgQEAKIAkJCQk2NTU3MEY1QTFB
QTRDM0VBMDA5QjNDMjMgLyogUmVncmVzczE0MTI3NS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUZF
QjUxRjZDMUE5N0I2ODgwMDFGOTIxQyAvKiBSZWdyZXNzMTQxODA5Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQ0MEY2MTAwQTRGODU2NzAwMDVGMDYxIC8qIHRlc3RhcGkuYyBpbiBTb3VyY2VzICov
LAorCQkJCTUzRUFGRTJGMjA4REZBQjQwMDdENTI0QiAvKiB0ZXN0YXBpLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTg2RDIyMjFBMTY3RUY5NDQwMDI0QzgwNCAvKiB0ZXN0YXBpLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTM0OTAyODUxQzcyNzZCNzAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CkBAIC0xMDYyNCw2ICsxMDYzMCwxMCBAQAogCQkJaXNh
ID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9
IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsK
IAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJ
IlwiJChKQVZBU0NSSVBUQ09SRV9GUkFNRVdPUktTX0RJUikvSmF2YVNjcmlwdENvcmUuZnJhbWV3
b3JrL1ByaXZhdGVIZWFkZXJzXCIiLAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkpOwogCQkJ
fTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTEwNjMxLDYgKzEwNjQxLDEwIEBACiAJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNl
ID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICov
OwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJ
CQkiXCIkKEpBVkFTQ1JJUFRDT1JFX0ZSQU1FV09SS1NfRElSKS9KYXZhU2NyaXB0Q29yZS5mcmFt
ZXdvcmsvUHJpdmF0ZUhlYWRlcnNcIiIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CiAJ
CQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJCX07CkBAIC0xMDYzOCw2ICsxMDY1MiwxMCBAQAog
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVy
ZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZp
ZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICgK
KwkJCQkJIlwiJChKQVZBU0NSSVBUQ09SRV9GUkFNRVdPUktTX0RJUikvSmF2YVNjcmlwdENvcmUu
ZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzXCIiLAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkp
OwogCQkJfTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OwpAQCAtMTA5NjIsNiArMTA5ODAs
MTAgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRp
b25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUu
eGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUhFQURFUl9TRUFSQ0hfUEFU
SFMgPSAoCisJCQkJCSJcIiQoSkFWQVNDUklQVENPUkVfRlJBTUVXT1JLU19ESVIpL0phdmFTY3Jp
cHRDb3JlLmZyYW1ld29yay9Qcml2YXRlSGVhZGVyc1wiIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIs
CisJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gUHJvZmlsaW5nOwogCQl9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2NvbmZpZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Nv
bmZpZy5oCmluZGV4IDFkMWVkN2I2ZjhjNmFjMDlmMTQ0NDRmNmVmMzgwNTYyOTk4MTlkN2UuLmVk
Yzc3Y2YyNTU2MGJiMWFhOTdkYTBhMWI4ODM2MGRiZjI2YjUxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29u
ZmlnLmgKQEAgLTIzLDYgKzIzLDkgQEAKICNpbmNsdWRlICJjbWFrZWNvbmZpZy5oIgogI2VuZGlm
CiAKKyNkZWZpbmUgSlNDX0FQSV9BVkFJTEFCTEUoLi4uKQorI2RlZmluZSBKU0NfQ0xBU1NfQVZB
SUxBQkxFKC4uLikgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKKwogI2lu
Y2x1ZGUgIkpTRXhwb3J0TWFjcm9zLmgiCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGwuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBDZWxsLmgKaW5kZXggNjhmN2IxN2ZmYjUxZmQzNzVhY2ZmOTQyMDBk
MTFkNTRkNjg1NjQ1NC4uZDkwNmYzNTQzZjRlNzI0YzE3ZjFiZjI0MTU5M2MyYTEwYTM3NDA4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGwuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5oCkBAIC01NSw3ICs1NSw3IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgaXNMYXJnZUFsbG9jYXRpb24oKSBjb25zdDsKICAgICBDZWxsQ29u
dGFpbmVyIGNlbGxDb250YWluZXIoKSBjb25zdDsKLSAgICBNYXJrZWRCbG9jayYgbWFya2VkQmxv
Y2soKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBNYXJrZWRCbG9jayYgbWFya2VkQmxv
Y2soKSBjb25zdDsKICAgICBMYXJnZUFsbG9jYXRpb24mIGxhcmdlQWxsb2NhdGlvbigpIGNvbnN0
OwogCiAgICAgLy8gSWYgeW91IHdhbnQgcGVyZm9ybWFuY2UgYW5kIHlvdSBrbm93IHRoYXQgeW91
ciBjZWxsIGlzIHNtYWxsLCB5b3UgY2FuIGRvIHRoaXMgaW5zdGVhZDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wb3N0cHJvY2Vzcy1oZWFkZXJzLnNoIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Bvc3Rwcm9jZXNzLWhlYWRlcnMuc2gKaW5kZXggYzg2MTg0MzdkMmEwNzc5NDlh
NTkwYWM3MDE3ZjgyNmI1MmQ2ZDJiMy4uODhjYWRjMTAxMzQzZDU1ZDNmY2I2ODBkZDJmYjc1ZjNj
MzFhNTkzNiAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bvc3Rwcm9jZXNzLWhl
YWRlcnMuc2gKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bvc3Rwcm9jZXNzLWhlYWRlcnMu
c2gKQEAgLTEsMTggKzEsMTI0IEBACi1jZCAiJHtUQVJHRVRfQlVJTERfRElSfS8ke1BVQkxJQ19I
RUFERVJTX0ZPTERFUl9QQVRIfSIKLQotVU5JRkRFRl9PUFRJT05TPSItRF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQ9JHtUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUn0iCi0KLWZv
ciAoKGkgPSAwOyBpIDwgJHtTQ1JJUFRfSU5QVVRfRklMRV9DT1VOVH07ICsraSkpOyBkbwotICAg
IGV2YWwgSEVBREVSPVwke1NDUklQVF9JTlBVVF9GSUxFXyR7aX19OwotICAgIHVuaWZkZWYgLUIg
JHtVTklGREVGX09QVElPTlN9IC1vICIke0hFQURFUn0iLnVuaWZkZWYgIiR7SEVBREVSfSIKLSAg
ICBjYXNlICQ/IGluCi0gICAgMCkKLSAgICAgICAgcm0gIiR7SEVBREVSfSIudW5pZmRlZgotICAg
ICAgICA7OwotICAgIDEpCi0gICAgICAgIG12ICIke0hFQURFUn0iey51bmlmZGVmLH0KLSAgICAg
ICAgOzsKLSAgICAqKQotICAgICAgICBleGl0IDEKLSAgICBlc2FjCi1kb25lCisjIS9iaW4vc2gK
KyMKKyMgQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisjCisKK2lmIFtbICIke0pT
Q19GUkFNRVdPUktfSEVBREVSX1BPU1RQUk9DRVNTSU5HX0RJU0FCTEVEfSIgPT0gIllFUyIgXV07
IHRoZW4KKyAgICBleGl0IDA7CitmaQorCitUSU1FU1RBTVBfUEFUSD0ke1RBUkdFVF9URU1QX0RJ
Un0vJHswIyMqL30KKworaWYgW1sgLWUgJFRJTUVTVEFNUF9QQVRIICYmICQwIC1udCAkVElNRVNU
QU1QX1BBVEggXV07IHRoZW4KKyAgICBybSAiJHtUSU1FU1RBTVBfUEFUSH0iOworZmkKKworZnVu
Y3Rpb24gcHJvY2Vzc19kZWZpbml0aW9ucyAoKSB7CisgICAgbG9jYWwgREVGSU5JVElPTlNfRklM
RT0kMQorCisgICAgaWYgW1sgISAtZiAiJHtERUZJTklUSU9OU19GSUxFfSIgXV07IHRoZW4KKyAg
ICAgICAgcmV0dXJuIDEKKyAgICBmaQorCisgICAgaWYgW1sgLWUgJFRJTUVTVEFNUF9QQVRIICYm
ICIke0RFRklOSVRJT05TX0ZJTEV9IiAtbnQgJFRJTUVTVEFNUF9QQVRIIF1dOyB0aGVuCisgICAg
ICAgIHJtICIke1RJTUVTVEFNUF9QQVRIfSI7CisgICAgZmkKKworICAgIHNvdXJjZSAiJHtERUZJ
TklUSU9OU19GSUxFfSIKK30KKworZnVuY3Rpb24gcmV3cml0ZV9oZWFkZXJzICgpIHsKKyAgICBp
ZiBbWyAiJHtQTEFURk9STV9OQU1FfSIgPT0gIm1hY29zeCIgXV07IHRoZW4KKyAgICAgICAgW1sg
LW4gJHtPU1hfVkVSU0lPTn0gXV0gfHwgT1NYX1ZFUlNJT049JHtNQUNPU1hfREVQTE9ZTUVOVF9U
QVJHRVR9CisgICAgICAgIFtbIC1uICR7SU9TX1ZFUlNJT059IF1dIHx8IElPU19WRVJTSU9OPSJO
QSIKKyAgICBlbGlmIFtbICIke1BMQVRGT1JNX05BTUV9IiA9fiAiaXBob25lIiBdXTsgdGhlbgor
ICAgICAgICBbWyAtbiAke0lPU19WRVJTSU9OfSBdXSB8fCBJT1NfVkVSU0lPTj0ke0lQSE9ORU9T
X0RFUExPWU1FTlRfVEFSR0VUfQorICAgICAgICBbWyAtbiAke09TWF9WRVJTSU9OfSBdXSB8fCBP
U1hfVkVSU0lPTj0iTkEiCisgICAgZmkKKworICAgIFNFRF9PUFRJT05TPSgKKyAgICApCisKKyAg
ICBpZiBbWyAtbiAiJE9TWF9WRVJTSU9OIiAmJiAtbiAiJElPU19WRVJTSU9OIiBdXTsgdGhlbgor
ICAgICAgICBTRURfT1BUSU9OUys9KAorICAgICAgICAgICAgLWUgcy9KU0NfTUFDX1RCQS8ke09T
WF9WRVJTSU9OfS9nCisgICAgICAgICAgICAtZSBzL0pTQ19JT1NfVEJBLyR7SU9TX1ZFUlNJT059
L2cKKyAgICAgICAgICAgIC1lIHMvSlNDX0FQSV9BVkFJTEFCTEUvQVBJX0FWQUlMQUJMRS8KKyAg
ICAgICAgICAgIC1lIHMvSlNDX0FQSV9ERVBSRUNBVEVEL0FQSV9ERVBSRUNBVEVELworICAgICAg
ICAgICAgLWUgInMvXkpTQ19DTEFTU19BVkFJTEFCTEUvQVBJX0FWQUlMQUJMRS8iCisgICAgICAg
ICAgICAtZSAicy9eSlNDX0NMQVNTX0RFUFJFQ0FURUQvQVBJX0RFUFJFQ0FURUQvIgorICAgICAg
ICApCisgICAgZWxzZQorICAgICAgICBTRURfT1BUSU9OUys9KC1lICdzL0pTQ18oQVBJX3xDTEFT
U18pQVZBSUxBQkxFXCguKlwpXHMqXCkvL2cnIC1lICdzL0pTQ18oQVBJX3xDTEFTU18pREVQUkVD
QVRFRChfV0lUSF9SRVBMQUNFTUVOVCk/XCguKlwpXHMqXCkvL2cnKQorICAgIGZpCisKKyAgICBT
RURfT1BUSU9OUys9KCR7T1RIRVJfU0VEX09QVElPTlNbKl19KQorCisgICAgZm9yIEhFQURFUl9Q
QVRIIGluICIkezF9LyIqLmg7IGRvCisgICAgICAgIGlmIFtbICIkSEVBREVSX1BBVEgiIC1udCAk
VElNRVNUQU1QX1BBVEggXV07IHRoZW4KKyAgICAgICAgICAgIGRpdHRvICIke0hFQURFUl9QQVRI
fSIgIiR7VEFSR0VUX1RFTVBfRElSfS8ke0hFQURFUl9QQVRIIyMqL30iCisgICAgICAgICAgICBz
ZWQgLWkgLnRtcCAtRSAiJHtTRURfT1BUSU9OU1tAXX0iICIke1RBUkdFVF9URU1QX0RJUn0vJHtI
RUFERVJfUEFUSCMjKi99IiB8fCBleGl0ICQ/CisgICAgICAgICAgICBtdiAiJHtUQVJHRVRfVEVN
UF9ESVJ9LyR7SEVBREVSX1BBVEgjIyovfSIgIiRIRUFERVJfUEFUSCIKKyAgICAgICAgZmkKKyAg
ICBkb25lCit9CisKK2Z1bmN0aW9uIHJld3JpdGVfdmVyc2lvbl9taW5fcmVxdWlyZWRfbWFjcm9z
KCkgeworICAgIGVjaG8gInJld3JpdGVfdmVyc2lvbl9taW5fcmVxdWlyZWRfbWFjcm9zIgorICAg
IGVjaG8gIiR7MX0iCisgICAgIyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSB1bnNldCB0aGUgb3Ro
ZXIgdGFyZ2V0IG90aGVyd2lzZSB1bmlmZGVmIHdpbGwgZmFpbCB0byBoYW5kbGUgY29uZGl0aW9u
cyB0aGF0IGFyZSBhbiB8fCBvZiBib3RoIHRhcmdldHMuCisgICAgaWYgW1sgLXogJHtJT1NfVkVS
U0lPTn0gXV07IHRoZW4KKyAgICAgICAgVU5JRkRFRl9PUFRJT05TPSItRF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQ9JHtUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUn0gLVVfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCIKKyAgICBlbHNlCisgICAgICAgIFVOSUZERUZf
T1BUSU9OUz0iLVVfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIC1EX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQ9JHtUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUn0iCisg
ICAgZmkKKworICAgIGZvciBIRUFERVJfUEFUSCBpbiAiJHsxfS8iKi5oOyBkbworICAgICAgICBp
ZiBbWyAiJEhFQURFUl9QQVRIIiAtbnQgJFRJTUVTVEFNUF9QQVRIIF1dOyB0aGVuCisgICAgICAg
ICAgICB1bmlmZGVmIC1CICR7VU5JRkRFRl9PUFRJT05TfSAtbyAiJHtIRUFERVJfUEFUSH0iLnVu
aWZkZWYgIiR7SEVBREVSX1BBVEh9IgorICAgICAgICAgICAgY2FzZSAkPyBpbgorICAgICAgICAg
ICAgICAgIDApCisgICAgICAgICAgICAgICAgICAgIHJtICIke0hFQURFUl9QQVRIfSIudW5pZmRl
ZgorICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgIDEpCisgICAgICAgICAg
ICAgICAgICAgIG12ICIke0hFQURFUl9QQVRIfSJ7LnVuaWZkZWYsfQorICAgICAgICAgICAgICAg
ICAgICA7OworICAgICAgICAgICAgICAgICopCisgICAgICAgICAgICAgICAgICAgIGV4aXQgMQor
ICAgICAgICAgICAgZXNhYworICAgICAgICBmaQorICAgIGRvbmUKK30KKworREVGSU5JVElPTlNf
UEFUSD11c3IvbG9jYWwvaW5jbHVkZS9XZWJLaXRBZGRpdGlvbnMvU2NyaXB0cy9wb3N0cHJvY2Vz
cy1mcmFtZXdvcmstaGVhZGVycy1kZWZpbml0aW9ucworCitwcm9jZXNzX2RlZmluaXRpb25zICIk
e0JVSUxUX1BST0RVQ1RTX0RJUn0vJHtERUZJTklUSU9OU19QQVRIfSIgfHwgcHJvY2Vzc19kZWZp
bml0aW9ucyAiJHtTREtST09UfS8ke0RFRklOSVRJT05TX1BBVEh9IgorCityZXdyaXRlX2hlYWRl
cnMgIiR7VEFSR0VUX0JVSUxEX0RJUn0vJHtQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSH0iCity
ZXdyaXRlX3ZlcnNpb25fbWluX3JlcXVpcmVkX21hY3JvcyAiJHtUQVJHRVRfQlVJTERfRElSfS8k
e1BVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIfSIKKworcmV3cml0ZV9oZWFkZXJzICIke1RBUkdF
VF9CVUlMRF9ESVJ9LyR7UFJJVkFURV9IRUFERVJTX0ZPTERFUl9QQVRIfSIKK3Jld3JpdGVfdmVy
c2lvbl9taW5fcmVxdWlyZWRfbWFjcm9zICIke1RBUkdFVF9CVUlMRF9ESVJ9LyR7UFJJVkFURV9I
RUFERVJTX0ZPTERFUl9QQVRIfSIKKwordG91Y2ggJHtUSU1FU1RBTVBfUEFUSH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0bWVtL3Rlc3RtZW0ubW0gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdG1lbS90ZXN0bWVtLm1tCmluZGV4IGI0ZDJhZDM5MTE5YmM1NTU4Y2Qz
OWM5YzgxODJmYWNlZGNiZWFmMjQuLjliYzRiNDBlMWVhYzAyMzE3ZmQzZTg0NWI0NTRkMGY0OGI2
ZWU1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0bWVtL3Rlc3RtZW0u
bW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RtZW0vdGVzdG1lbS5tbQpAQCAtMjMs
NiArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisjaW1wb3J0ICJjb25maWcuaCIKICNp
bXBvcnQgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CiAjaW1wb3J0IDxpbnR0eXBl
cy5oPgogI2ltcG9ydCA8c3RkaW8uaD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342333</attachid>
            <date>2018-06-08 14:32:57 -0700</date>
            <delta_ts>2018-07-23 11:21:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175836-20180608143256.patch</filename>
            <type>text/plain</type>
            <size>105078</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyNjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YTg5OWQ5MzQ5NDNjNjBmYWYzYzI0YjJkMmQ4MzkxNzNiOWU5NGM2Li5lMzAyZjc3ZTZlN2ZkZjc1
NDY0OGIyNjkzMTdkN2FlMWI5ZGQxODhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMTgtMDQtMjMgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0pTQyBBUEldIFdlIHNob3VsZCBzdXBwb3J0IHRoZSBzeW1ib2wg
dHlwZSBpbiBvdXIgQy9PYmotQyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTgzNgorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxv
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIGZvbGxvd2luZyBBUEkgYWRkaXRpb25z
OgorICAgICAgICAxKSBUZXN0IGlmIGEgSlNWYWx1ZS9KU1ZhbHVlUmVmIGlzIGEgc3ltYm9sIHZp
YSBhbnkgb2YgdGhlIG1ldGhvZHMgQVBJIGFyZSBhYmxlIHRvIHRlc3QgZm9yIHRoZSB0eXBlcyBv
ZiBvdGhlciBKU1ZhbHVlcy4KKyAgICAgICAgMikgQ3JlYXRlIGEgc3ltYm9sIG9uIGJvdGggQVBJ
cy4KKyAgICAgICAgMykgR2V0L1NldC9EZWxldGUvRGVmaW5lIHByb3BlcnR5IG5vdyB0YWtlIGlk
cyBpbiB0aGUgT2JqLUMgQVBJLgorICAgICAgICA0KSBBZGQgR2V0L1NldC9EZWxldGUgaW4gdGhl
IEMgQVBJLgorCisgICAgICAgIFdlIGNhbiBkbyAzIGJlY2F1c2UgaXQgaXMgYm90aCBiaW5hcnkg
YW5kIHNvdXJjZSBjb21wYXRhYmxlIHdpdGgKKyAgICAgICAgdGhlIGV4aXN0aW5nIEFQSS4gSSBh
ZGRlZCAoNCkgYmVjYXVzZSB0aGUgY3VycmVudCBwcm9wZXJ0eSBhY2Nlc3MKKyAgICAgICAgQVBJ
cyBvbmx5IGhhdmUgdGhlIGFiaWxpdHkgdG8gZ2V0IFN0cmluZ3MuIEl0IHdhcyBwb3NzaWJsZSB0
bworICAgICAgICBtZXJnZSBzeW1ib2xzIGludG8gSlNTdHJpbmdSZWYgYnV0IHRoYXQgZmVsdCBj
b25mdXNpbmcgYW5kIGV4cG9zZXMKKyAgICAgICAgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBv
dXIgZW5naW5lLiBUaGUgbmV3IGZ1bmN0aW9ucyBtYXRjaCB0aGUKKyAgICAgICAgc2FtZSBtZWFu
aW5nIHRoYXQgdGhleSBoYXZlIGluIEpTLCB0aHVzIHNob3VsZCBiZSBmb3J3YXJkCisgICAgICAg
IGNvbXBhdGlibGUgd2l0aCBhbnkgZnV0dXJlIGxhbmd1YWdlIGV4dGVuc2lvbnMuCisKKyAgICAg
ICAgTGFzdGx5LCB0aGlzIHBhdGNoIGFkZHMgdGhlIHNhbWUgYXZhaWxhYmlsaXR5IHByZXByb2Nj
ZXNzaW5nIHBoYXNlCisgICAgICAgIGluIFdlYkNvcmUgdG8gSmF2YVNjcmlwdENvcmUsIHdoaWNo
IGVuYWJsZXMgVEJBIGZlYXR1cmVzIGZvcgorICAgICAgICB0ZXN0aW5nIG9uIHByZXZpb3VzIHJl
bGVhc2VzLgorCisgICAgICAgICogQVBJL0pTQmFzZVByaXZhdGUuaDoKKyAgICAgICAgKiBBUEkv
SlNDb250ZXh0Lmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFByaXZhdGUuaDoKKyAgICAgICAg
KiBBUEkvSlNDb250ZXh0UmVmLmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZkludGVybmFs
Lmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaDoKKyAgICAgICAgKiBBUEkv
SlNNYW5hZ2VkVmFsdWUuaDoKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAg
ICAoSlNPYmplY3RIYXNQcm9wZXJ0eUtleSk6CisgICAgICAgIChKU09iamVjdEdldFByb3BlcnR5
S2V5KToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJvcGVydHlLZXkpOgorICAgICAgICAoSlNPYmpl
Y3REZWxldGVQcm9wZXJ0eUtleSk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmg6CisgICAg
ICAgICogQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmg6CisgICAgICAgICogQVBJL0pTVHlwZWRBcnJh
eS5oOgorICAgICAgICAqIEFQSS9KU1ZhbHVlLmg6CisgICAgICAgICogQVBJL0pTVmFsdWUubW06
CisgICAgICAgICgrW0pTVmFsdWUgdmFsdWVXaXRoTmV3U3ltYm9sRnJvbURlc2NyaXB0aW9uOmlu
Q29udGV4dDpdKToKKyAgICAgICAgKHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbik6CisgICAgICAg
ICgtW0pTVmFsdWUgdmFsdWVGb3JQcm9wZXJ0eTp2YWx1ZUZvclByb3BlcnR5Ol0pOgorICAgICAg
ICAoLVtKU1ZhbHVlIHNldFZhbHVlOmZvclByb3BlcnR5OnNldFZhbHVlOmZvclByb3BlcnR5Ol0p
OgorICAgICAgICAoLVtKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5OmRlbGV0ZVByb3BlcnR5Ol0pOgor
ICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Omhhc1Byb3BlcnR5Ol0pOgorICAgICAgICAo
LVtKU1ZhbHVlIGRlZmluZVByb3BlcnR5OmRlc2NyaXB0b3I6ZGVmaW5lUHJvcGVydHk6ZGVzY3Jp
cHRvcjpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSBpc1N5bWJvbF0pOgorICAgICAgICAoLVtKU1Zh
bHVlIG9iamVjdEZvcktleWVkU3Vic2NyaXB0Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIHNldE9i
amVjdDpmb3JLZXllZFN1YnNjcmlwdDpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSB2YWx1ZUZvclBy
b3BlcnR5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIHNldFZhbHVlOmZvclByb3Bl
cnR5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5Ol0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Ol0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtKU1ZhbHVlIGRlZmluZVByb3BlcnR5OmRlc2NyaXB0b3I6XSk6IERlbGV0ZWQuCisg
ICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgorICAgICAgICAoSlNWYWx1ZUdldFR5cGUpOgor
ICAgICAgICAoSlNWYWx1ZUlzU3ltYm9sKToKKyAgICAgICAgKEpTVmFsdWVNYWtlU3ltYm9sKToK
KyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5oOgorICAgICAgICAqIEFQSS9XZWJLaXRBdmFpbGFi
aWxpdHkuaDoKKyAgICAgICAgKiBBUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRl
clRlc3QubW06CisgICAgICAgICogQVBJL3Rlc3RzL0N1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVz
dC5jOgorICAgICAgICAqIEFQSS90ZXN0cy9EYXRlVGVzdHMubW06CisgICAgICAgICogQVBJL3Rl
c3RzL0pTRXhwb3J0VGVzdHMubW06CisgICAgICAgICogQVBJL3Rlc3RzL0pTTm9kZS5jOgorICAg
ICAgICAqIEFQSS90ZXN0cy9KU05vZGVMaXN0LmM6CisgICAgICAgICogQVBJL3Rlc3RzL05vZGUu
YzoKKyAgICAgICAgKiBBUEkvdGVzdHMvTm9kZUxpc3QuYzoKKyAgICAgICAgKiBBUEkvdGVzdHMv
bWluaWRvbS5jOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLmM6CisgICAgICAgIChtYWlu
KToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5jcHA6IEFkZGVkLgorICAgICAgICAoQVBJ
U3RyaW5nOjpBUElTdHJpbmcpOgorICAgICAgICAoQVBJU3RyaW5nOjp+QVBJU3RyaW5nKToKKyAg
ICAgICAgKEFQSVN0cmluZzo6b3BlcmF0b3IgSlNTdHJpbmdSZWYpOgorICAgICAgICAoQVBJQ29u
dGV4dDo6QVBJQ29udGV4dCk6CisgICAgICAgIChBUElDb250ZXh0Ojp+QVBJQ29udGV4dCk6Cisg
ICAgICAgIChBUElDb250ZXh0OjpvcGVyYXRvciBKU0dsb2JhbENvbnRleHRSZWYpOgorICAgICAg
ICAoQVBJVmVjdG9yOjpBUElWZWN0b3IpOgorICAgICAgICAoQVBJVmVjdG9yOjp+QVBJVmVjdG9y
KToKKyAgICAgICAgKEFQSVZlY3Rvcjo6YXBwZW5kKToKKyAgICAgICAgKHRlc3RDQVBJVmlhQ3Bw
KToKKyAgICAgICAgKFRlc3RBUEk6OmV2YWx1YXRlU2NyaXB0KToKKyAgICAgICAgKFRlc3RBUEk6
OmNhbGxGdW5jdGlvbik6CisgICAgICAgIChUZXN0QVBJOjpmdW5jdGlvblJldHVybnNUcnVlKToK
KyAgICAgICAgKFRlc3RBUEk6OmNoZWNrKToKKyAgICAgICAgKFRlc3RBUEk6OmNoZWNrSlNBbmRB
UElNYXRjaCk6CisgICAgICAgIChUZXN0QVBJOjppbnRlcmVzdGluZ09iamVjdHMpOgorICAgICAg
ICAoVGVzdEFQSTo6aW50ZXJlc3RpbmdLZXlzKToKKyAgICAgICAgKFRlc3RBUEk6OnJ1bik6Cisg
ICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkubW06CisgICAgICAgICh0ZXN0T2JqZWN0aXZlQ0FQ
SU1haW4pOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogY29uZmlnLmg6CisgICAgICAgICogcG9zdHByb2Nlc3MtaGVhZGVycy5z
aDoKKwogMjAxOC0wNi0wNyAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBEb24ndCB0cnkgdG8gYWxsb2NhdGUgSklUIG1lbW9yeSBpZiB3ZSBkb24ndCBoYXZl
IHRoZSBKSVQgZW50aXRsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNCYXNlUHJpdmF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VQcml2
YXRlLmgKaW5kZXggMTM3NTk0OTcyNzVlNThiZWIwYzEyMjEzNTVmOWZiZWQ0M2QzYjFhNS4uYjZj
OTIwNGM0Y2JkNzJjNGY3YzlmNmExZjU0Y2Q1ZDM0MTU2ZDE0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VQcml2YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0Jhc2VQcml2YXRlLmgKQEAgLTQzLDcgKzQzLDcgQEAgb3ducyBhIGxhcmdl
IG5vbi1HQyBtZW1vcnkgcmVnaW9uLiBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBlbmNvdXJh
Z2UgdGhlCiBnYXJiYWdlIGNvbGxlY3RvciB0byBjb2xsZWN0IHNvb24sIGhvcGluZyB0byByZWNs
YWltIHRoYXQgbGFyZ2Ugbm9uLUdDIG1lbW9yeQogcmVnaW9uLgogKi8KLUpTX0VYUE9SVCB2b2lk
IEpTUmVwb3J0RXh0cmFNZW1vcnlDb3N0KEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBzaXplKSBD
Rl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCB2b2lkIEpTUmVwb3J0RXh0cmFNZW1v
cnlDb3N0KEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBzaXplKSBKU0NfQVBJX0FWQUlMQUJMRSht
YWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogSlNfRVhQT1JUIHZvaWQgSlNEaXNhYmxlR0NUaW1l
cih2b2lkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRl
eHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmgKaW5kZXggMTk0ZTM1
MmJmZTdhZTc1ZjIzNThjZWU2M2Q0NDhmZTFmYTI0ZDM4Mi4uYjFiYmE2OTk0ODIzZjc2ZjY4OGY3
OTdmZjkyOWY5MzllNDc4NWIyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NvbnRleHQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5o
CkBAIC0zOSw3ICszOSw3IEBACiAgSmF2YVNjcmlwdCBleGVjdXRpb24gdGFrZXMgcGxhY2Ugd2l0
aGluIGEgY29udGV4dCwgYW5kIGFsbCBKYXZhU2NyaXB0IHZhbHVlcwogIGFyZSB0aWVkIHRvIGEg
Y29udGV4dC4KICovCi1OU19DTEFTU19BVkFJTEFCTEUoMTBfOSwgN18wKQorSlNDX0NMQVNTX0FW
QUlMQUJMRShtYWNvc3goMTAuOSksIGlvcyg3LjApKQogQGludGVyZmFjZSBKU0NvbnRleHQgOiBO
U09iamVjdAogCiAvKiEKQEAgLTc4LDcgKzc4LDcgQEAgTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzks
IDdfMCkKIEBwYXJhbSBzb3VyY2VVUkwgQSBVUkwgZm9yIHRoZSBzY3JpcHQncyBzb3VyY2UgZmls
ZS4gVXNlZCBieSBkZWJ1Z2dlcnMgYW5kIHdoZW4gcmVwb3J0aW5nIGV4Y2VwdGlvbnMuIFRoaXMg
cGFyYW1ldGVyIGlzIGluZm9ybWF0aXZlIG9ubHk6IGl0IGRvZXMgbm90IGNoYW5nZSB0aGUgYmVo
YXZpb3Igb2YgdGhlIHNjcmlwdC4KIEByZXN1bHQgVGhlIGxhc3QgdmFsdWUgZ2VuZXJhdGVkIGJ5
IHRoZSBzY3JpcHQuCiAqLwotLSAoSlNWYWx1ZSAqKWV2YWx1YXRlU2NyaXB0OihOU1N0cmluZyAq
KXNjcmlwdCB3aXRoU291cmNlVVJMOihOU1VSTCAqKXNvdXJjZVVSTCBOU19BVkFJTEFCTEUoMTBf
MTAsIDhfMCk7CistIChKU1ZhbHVlICopZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0
IHdpdGhTb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMIEpTQ19BUElfQVZBSUxBQkxFKG1hY29z
eCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBAbWV0aG9kZ3JvdXAgQ2FsbGJhY2sgQWNjZXNz
b3JzCkBAIC0xMDEsNyArMTAxLDcgQEAgTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzksIDdfMCkKICBh
IGNhbGxiYWNrIGZyb20gSmF2YVNjcmlwdCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiBuaWwuCiBA
cmVzdWx0IFRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIEphdmFTY3JpcHQgZnVuY3Rpb24gb3Igbmls
IGlmIHRoZXJlIGlzbid0IG9uZS4KICovCi0rIChKU1ZhbHVlICopY3VycmVudENhbGxlZSBOU19B
VkFJTEFCTEUoMTBfMTAsIDhfMCk7CisrIChKU1ZhbHVlICopY3VycmVudENhbGxlZSBKU0NfQVBJ
X0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qIQogQG1ldGhvZApAQCAt
MTc2LDcgKzE3Niw3IEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCiBAcHJvcGVydHkK
IEBkaXNjdXNzaW9uIE5hbWUgb2YgdGhlIEpTQ29udGV4dC4gRXhwb3NlZCB3aGVuIHJlbW90ZSBk
ZWJ1Z2dpbmcgdGhlIGNvbnRleHQuCiAqLwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqbmFt
ZSBOU19BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpu
YW1lIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogQGVuZAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFByaXZhdGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UHJpdmF0ZS5oCmluZGV4IDdk
MWQwY2JkYmI0OGMxNzBlYTc2ZDJiZDYyZDczMGMyMDM5ZDZhOTQuLmZmOTYyMmFkZGY2MGI3YzEw
MzU3ZGFjY2YxYzZmNDFlY2I4NjFmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDb250ZXh0UHJpdmF0ZS5oCkBAIC0zNiwxOSArMzYsMTkgQEAKIEBwcm9wZXJ0eQogQGRpc2N1
c3Npb24gUmVtb3RlIGluc3BlY3Rpb24gc2V0dGluZyBvZiB0aGUgSlNDb250ZXh0LiBEZWZhdWx0
IHZhbHVlIGlzIFlFUy4KICovCi1AcHJvcGVydHkgKHNldHRlcj1fc2V0UmVtb3RlSW5zcGVjdGlv
bkVuYWJsZWQ6KSBCT09MIF9yZW1vdGVJbnNwZWN0aW9uRW5hYmxlZCBOU19BVkFJTEFCTEUoMTBf
MTAsIDhfMCk7CitAcHJvcGVydHkgKHNldHRlcj1fc2V0UmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQ6
KSBCT09MIF9yZW1vdGVJbnNwZWN0aW9uRW5hYmxlZCBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3go
MTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qIQogQHByb3BlcnR5CiBAZGlzY3Vzc2lvbiBTZXQgd2hl
dGhlciBvciBub3QgdGhlIG5hdGl2ZSBjYWxsIHN0YWNrIGlzIGluY2x1ZGVkIHdoZW4gcmVwb3J0
aW5nIGV4Y2VwdGlvbnMuIERlZmF1bHQgdmFsdWUgaXMgWUVTLgogKi8KLUBwcm9wZXJ0eSAoc2V0
dGVyPV9zZXRJbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zOikg
Qk9PTCBfaW5jbHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucyBOU19B
VkFJTEFCTEUoMTBfMTAsIDhfMCk7CitAcHJvcGVydHkgKHNldHRlcj1fc2V0SW5jbHVkZXNOYXRp
dmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9uczopIEJPT0wgX2luY2x1ZGVzTmF0aXZl
Q2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEKIEBwcm9wZXJ0eQogQGRpc2N1c3Npb24gU2V0IHRo
ZSBydW4gbG9vcCB0aGUgV2ViIEluc3BlY3RvciBkZWJ1Z2dlciBzaG91bGQgdXNlIHdoZW4gZXZh
bHVhdGluZyBKYXZhU2NyaXB0IGluIHRoZSBKU0NvbnRleHQuCiAqLwotQHByb3BlcnR5IChzZXR0
ZXI9X3NldERlYnVnZ2VyUnVuTG9vcDopIENGUnVuTG9vcFJlZiBfZGVidWdnZXJSdW5Mb29wIE5T
X0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0Bwcm9wZXJ0eSAoc2V0dGVyPV9zZXREZWJ1Z2dlclJ1
bkxvb3A6KSBDRlJ1bkxvb3BSZWYgX2RlYnVnZ2VyUnVuTG9vcCBKU0NfQVBJX0FWQUlMQUJMRSht
YWNvc3goMTAuMTApLCBpb3MoOC4wKSk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0UmVmLmgKaW5kZXggZTE1Y2FlNTc1NzY0OGEyZmM4ZWEyMTcyMWVlZjUzNWJh
ZDM1N2IyNy4uMjhkMGE2N2U5YWUzMjYyMTFhZDk0ZGUzNmM1MjY0YTc1NDJmYWY4OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oCkBAIC01Myw3ICs1Myw3IEBAIGV4
dGVybiAiQyIgewogIEpTQ29udGV4dEdyb3VwJ3MgcnVuIGxvb3Agb25jZSBpdCBoYXMgYmVlbiBj
cmVhdGVkLgogQHJlc3VsdCBUaGUgY3JlYXRlZCBKU0NvbnRleHRHcm91cC4KICovCi1KU19FWFBP
UlQgSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R3JvdXBDcmVhdGUodm9pZCkgQ0ZfQVZBSUxB
QkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R3Jv
dXBDcmVhdGUodm9pZCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7
CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC02MSwxNCArNjEsMTQgQEAgSlNfRVhQT1JUIEpTQ29udGV4
dEdyb3VwUmVmIEpTQ29udGV4dEdyb3VwQ3JlYXRlKHZvaWQpIENGX0FWQUlMQUJMRSgxMF82LCA3
XzApOwogQHBhcmFtIGdyb3VwIFRoZSBKU0NvbnRleHRHcm91cCB0byByZXRhaW4uCiBAcmVzdWx0
IEEgSlNDb250ZXh0R3JvdXAgdGhhdCBpcyB0aGUgc2FtZSBhcyBncm91cC4KICovCi1KU19FWFBP
UlQgSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R3JvdXBSZXRhaW4oSlNDb250ZXh0R3JvdXBS
ZWYgZ3JvdXApIENGX0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQT1JUIEpTQ29udGV4dEdy
b3VwUmVmIEpTQ29udGV4dEdyb3VwUmV0YWluKEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwKSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24K
IEBhYnN0cmFjdCBSZWxlYXNlcyBhIEphdmFTY3JpcHQgY29udGV4dCBncm91cC4KIEBwYXJhbSBn
cm91cCBUaGUgSlNDb250ZXh0R3JvdXAgdG8gcmVsZWFzZS4KICovCi1KU19FWFBPUlQgdm9pZCBK
U0NvbnRleHRHcm91cFJlbGVhc2UoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXApIENGX0FWQUlMQUJM
RSgxMF82LCA3XzApOworSlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3JvdXBSZWxlYXNlKEpTQ29u
dGV4dEdyb3VwUmVmIGdyb3VwKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3
LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTgzLDcgKzgzLDcgQEAgSlNfRVhQT1JUIHZvaWQg
SlNDb250ZXh0R3JvdXBSZWxlYXNlKEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwKSBDRl9BVkFJTEFC
TEUoMTBfNiwKICBOVUxMIHRvIHVzZSB0aGUgZGVmYXVsdCBvYmplY3QgY2xhc3MuCiBAcmVzdWx0
IEEgSlNHbG9iYWxDb250ZXh0IHdpdGggYSBnbG9iYWwgb2JqZWN0IG9mIGNsYXNzIGdsb2JhbE9i
amVjdENsYXNzLgogKi8KLUpTX0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgSlNHbG9iYWxDb250
ZXh0Q3JlYXRlKEpTQ2xhc3NSZWYgZ2xvYmFsT2JqZWN0Q2xhc3MpIENGX0FWQUlMQUJMRSgxMF81
LCA3XzApOworSlNfRVhQT1JUIEpTR2xvYmFsQ29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVh
dGUoSlNDbGFzc1JlZiBnbG9iYWxPYmplY3RDbGFzcykgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjUpLCBpb3MoNy4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC05Nyw3ICs5Nyw3IEBAIEpT
X0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgSlNHbG9iYWxDb250ZXh0Q3JlYXRlKEpTQ2xhc3NS
ZWYgZ2xvYmFsT2JqZWN0Q2xhc3MpCiBAcmVzdWx0IEEgSlNHbG9iYWxDb250ZXh0IHdpdGggYSBn
bG9iYWwgb2JqZWN0IG9mIGNsYXNzIGdsb2JhbE9iamVjdENsYXNzIGFuZCBhIGNvbnRleHQKICBn
cm91cCBlcXVhbCB0byBncm91cC4KICovCi1KU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpT
R2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIEpTQ2xh
c3NSZWYgZ2xvYmFsT2JqZWN0Q2xhc3MpIENGX0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQ
T1JUIEpTR2xvYmFsQ29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKEpTQ29u
dGV4dEdyb3VwUmVmIGdyb3VwLCBKU0NsYXNzUmVmIGdsb2JhbE9iamVjdENsYXNzKSBKU0NfQVBJ
X0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAg
LTEyOCw3ICsxMjgsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNDb250ZXh0R2V0R2xvYmFs
T2JqZWN0KEpTQ29udGV4dFJlZiBjdHgpOwogQHBhcmFtIGN0eCBUaGUgSlNDb250ZXh0IHdob3Nl
IGdyb3VwIHlvdSB3YW50IHRvIGdldC4KIEByZXN1bHQgY3R4J3MgZ3JvdXAuCiAqLwotSlNfRVhQ
T1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdldEdyb3VwKEpTQ29udGV4dFJlZiBjdHgp
IENGX0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQT1JUIEpTQ29udGV4dEdyb3VwUmVmIEpT
Q29udGV4dEdldEdyb3VwKEpTQ29udGV4dFJlZiBjdHgpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29z
eCgxMC42KSwgaW9zKDcuMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTM2LDcgKzEzNiw3IEBA
IEpTX0VYUE9SVCBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHZXRHcm91cChKU0NvbnRleHRS
ZWYgY3R4KSBDRl9BVkFJTEFCTEUoMTBfCiBAcGFyYW0gY3R4IFRoZSBKU0NvbnRleHQgd2hvc2Ug
Z2xvYmFsIGNvbnRleHQgeW91IHdhbnQgdG8gZ2V0LgogQHJlc3VsdCBjdHgncyBnbG9iYWwgY29u
dGV4dC4KICovCi1KU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpTQ29udGV4dEdldEdsb2Jh
bENvbnRleHQoSlNDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEwXzcsIDdfMCk7CitKU19F
WFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpTQ29udGV4dEdldEdsb2JhbENvbnRleHQoSlNDb250
ZXh0UmVmIGN0eCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjcpLCBpb3MoNy4wKSk7CiAK
IC8qIQogQGZ1bmN0aW9uCkBAIC0xNDYsNyArMTQ2LDcgQEAgSlNfRVhQT1JUIEpTR2xvYmFsQ29u
dGV4dFJlZiBKU0NvbnRleHRHZXRHbG9iYWxDb250ZXh0KEpTQ29udGV4dFJlZiBjdHgpIENGX0FW
QUkKIEBkaXNjdXNzaW9uIEEgSlNHbG9iYWxDb250ZXh0J3MgbmFtZSBpcyBleHBvc2VkIGZvciBy
ZW1vdGUgZGVidWdnaW5nIHRvIG1ha2UgaXQKIGVhc2llciB0byBpZGVudGlmeSB0aGUgY29udGV4
dCB5b3Ugd291bGQgbGlrZSB0byBhdHRhY2ggdG8uCiAqLwotSlNfRVhQT1JUIEpTU3RyaW5nUmVm
IEpTR2xvYmFsQ29udGV4dENvcHlOYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpIENGX0FWQUlM
QUJMRSgxMF8xMCwgOF8wKTsKK0pTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU0dsb2JhbENvbnRleHRD
b3B5TmFtZShKU0dsb2JhbENvbnRleHRSZWYgY3R4KSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3go
MTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC0xNTQsNyArMTU0LDcgQEAg
SlNfRVhQT1JUIEpTU3RyaW5nUmVmIEpTR2xvYmFsQ29udGV4dENvcHlOYW1lKEpTR2xvYmFsQ29u
dGV4dFJlZiBjdHgpIENGX0FWQUlMQUIKIEBwYXJhbSBjdHggVGhlIEpTR2xvYmFsQ29udGV4dCB0
aGF0IHlvdSB3YW50IHRvIG5hbWUuCiBAcGFyYW0gbmFtZSBUaGUgcmVtb3RlIGRlYnVnZ2luZyBu
YW1lIHRvIHNldCBvbiBjdHguCiAqLwotSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0
TmFtZShKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBuYW1lKSBDRl9BVkFJTEFC
TEUoMTBfMTAsIDhfMCk7CitKU19FWFBPUlQgdm9pZCBKU0dsb2JhbENvbnRleHRTZXROYW1lKEpT
R2xvYmFsQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIG5hbWUpIEpTQ19BUElfQVZBSUxBQkxF
KG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZkludGVybmFsLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZkludGVybmFsLmgKaW5kZXgg
NzlkN2ViNmYzOWU3ZTJjYThmNGE5Yjk0ZjI3MjI2ZGIyZjcwNTI5NS4uOWQ0ZjE4YTIyOTUwNzI2
ZDkxMDJkMjUwYjVjYWEwY2U3YWQ1YzcyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NvbnRleHRSZWZJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDb250ZXh0UmVmSW50ZXJuYWwuaApAQCAtNDIsNyArNDIsNyBAQCBleHRlcm4gIkMi
IHsKIEBhYnN0cmFjdCBHZXRzIHRoZSBydW4gbG9vcCB1c2VkIGJ5IHRoZSBXZWIgSW5zcGVjdG9y
IGRlYnVnZ2VyIHdoZW4gZXZhbHVhdGluZyBKYXZhU2NyaXB0IGluIHRoaXMgY29udGV4dC4KIEBw
YXJhbSBjdHggVGhlIEpTR2xvYmFsQ29udGV4dCB3aG9zZSBzZXR0aW5nIHlvdSB3YW50IHRvIGdl
dC4KICovCi1KU19FWFBPUlQgQ0ZSdW5Mb29wUmVmIEpTR2xvYmFsQ29udGV4dEdldERlYnVnZ2Vy
UnVuTG9vcChKU0dsb2JhbENvbnRleHRSZWYgY3R4KSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7
CitKU19FWFBPUlQgQ0ZSdW5Mb29wUmVmIEpTR2xvYmFsQ29udGV4dEdldERlYnVnZ2VyUnVuTG9v
cChKU0dsb2JhbENvbnRleHRSZWYgY3R4KSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTAp
LCBpb3MoOC4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC01MCw3ICs1MCw3IEBAIEpTX0VYUE9S
VCBDRlJ1bkxvb3BSZWYgSlNHbG9iYWxDb250ZXh0R2V0RGVidWdnZXJSdW5Mb29wKEpTR2xvYmFs
Q29udGV4dFJlZiBjdHgpCiBAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgdGhhdCB5b3Ug
d2FudCB0byBjaGFuZ2UuCiBAcGFyYW0gcnVuTG9vcCBUaGUgbmV3IHZhbHVlIG9mIHRoZSBzZXR0
aW5nIGZvciB0aGUgY29udGV4dC4KICovCi1KU19FWFBPUlQgdm9pZCBKU0dsb2JhbENvbnRleHRT
ZXREZWJ1Z2dlclJ1bkxvb3AoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwgQ0ZSdW5Mb29wUmVmIHJ1
bkxvb3ApIENGX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0pTX0VYUE9SVCB2b2lkIEpTR2xvYmFs
Q29udGV4dFNldERlYnVnZ2VyUnVuTG9vcChKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBDRlJ1bkxv
b3BSZWYgcnVuTG9vcCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkp
OwogI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWZQcml2YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaAppbmRleCAxOTYwNGVhNzQ5MzdlZmRhOTY3Y2Uz
ZGY1Nzc3ZDJhMTUxNGRhOGRjLi5lYzY3NmQ4Yzg3MTQ4M2Y4M2ZjYzNjNTY0YjU1NGU4MTcwMzcy
MmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZlBy
aXZhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZlByaXZh
dGUuaApAQCAtNDQsNyArNDQsNyBAQCBleHRlcm4gIkMiIHsKIEBwYXJhbSBjdHggVGhlIEpTQ29u
dGV4dCB3aG9zZSBiYWNrdHJhY2UgeW91IHdhbnQgdG8gZ2V0CiBAcmVzdWx0IEEgc3RyaW5nIGNv
bnRhaW5pbmcgdGhlIGJhY2t0cmFjZQogKi8KLUpTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU0NvbnRl
eHRDcmVhdGVCYWNrdHJhY2UoSlNDb250ZXh0UmVmIGN0eCwgdW5zaWduZWQgbWF4U3RhY2tTaXpl
KSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU0NvbnRl
eHRDcmVhdGVCYWNrdHJhY2UoSlNDb250ZXh0UmVmIGN0eCwgdW5zaWduZWQgbWF4U3RhY2tTaXpl
KSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKICAgICAKIAogLyoh
IApAQCAtODUsMTQgKzg1LDE0IEBAIHR5cGVkZWYgYm9vbAogIG5lZWQgdG8gY2FsbCBKU0NvbnRl
eHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdCBiZWZvcmUgeW91IHN0YXJ0IGV4ZWN1dGluZwog
IGFueSBzY3JpcHRzLgogKi8KLUpTX0VYUE9SVCB2b2lkIEpTQ29udGV4dEdyb3VwU2V0RXhlY3V0
aW9uVGltZUxpbWl0KEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwLCBkb3VibGUgbGltaXQsIEpTU2hv
dWxkVGVybWluYXRlQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpIENGX0FWQUlMQUJM
RSgxMF82LCA3XzApOworSlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25U
aW1lTGltaXQoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIGRvdWJsZSBsaW1pdCwgSlNTaG91bGRU
ZXJtaW5hdGVDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogY29udGV4dCkgSlNDX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCiBAYWJzdHJhY3Qg
Q2xlYXJzIHRoZSBzY3JpcHQgZXhlY3V0aW9uIHRpbWUgbGltaXQuCiBAcGFyYW0gZ3JvdXAgVGhl
IEphdmFTY3JpcHQgY29udGV4dCBncm91cCB0aGF0IHRoZSB0aW1lIGxpbWl0IGlzIGNsZWFyZWQg
b24uCiAqLwotSlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3JvdXBDbGVhckV4ZWN1dGlvblRpbWVM
aW1pdChKU0NvbnRleHRHcm91cFJlZiBncm91cCkgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitK
U19FWFBPUlQgdm9pZCBKU0NvbnRleHRHcm91cENsZWFyRXhlY3V0aW9uVGltZUxpbWl0KEpTQ29u
dGV4dEdyb3VwUmVmIGdyb3VwKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3
LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTEwMSw3ICsxMDEsNyBAQCBKU19FWFBPUlQgdm9p
ZCBKU0NvbnRleHRHcm91cENsZWFyRXhlY3V0aW9uVGltZUxpbWl0KEpTQ29udGV4dEdyb3VwUmVm
IGdyb3VwKSBDRgogQHJlc3VsdCBUaGUgdmFsdWUgb2YgdGhlIHNldHRpbmcsIHRydWUgaWYgcmVt
b3RlIGluc3BlY3Rpb24gaXMgZW5hYmxlZCwgb3RoZXJ3aXNlIGZhbHNlLgogQGRpc2N1c3Npb24g
UmVtb3RlIGluc3BlY3Rpb24gaXMgdHJ1ZSBieSBkZWZhdWx0LgogKi8KLUpTX0VYUE9SVCBib29s
IEpTR2xvYmFsQ29udGV4dEdldFJlbW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4
dFJlZiBjdHgpIENGX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0pTX0VYUE9SVCBib29sIEpTR2xv
YmFsQ29udGV4dEdldFJlbW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4dFJlZiBj
dHgpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBA
ZnVuY3Rpb24KQEAgLTEwOSw3ICsxMDksNyBAQCBKU19FWFBPUlQgYm9vbCBKU0dsb2JhbENvbnRl
eHRHZXRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZChKU0dsb2JhbENvbnRleHRSZWYgY3R4KQogQHBh
cmFtIGN0eCBUaGUgSlNHbG9iYWxDb250ZXh0IHRoYXQgeW91IHdhbnQgdG8gY2hhbmdlLgogQHBh
cmFtIGVuYWJsZWQgVGhlIG5ldyByZW1vdGUgaW5zcGVjdGlvbiBlbmFibGVkIHNldHRpbmcgZm9y
IHRoZSBjb250ZXh0LgogKi8KLUpTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldFJlbW90
ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIGJvb2wgZW5hYmxlZCkg
Q0ZfQVZBSUxBQkxFKDEwXzEwLCA4XzApOyAgICAKK0pTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29u
dGV4dFNldFJlbW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIGJv
b2wgZW5hYmxlZCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOyAg
ICAKIAogLyohCiBAZnVuY3Rpb24KQEAgLTExOCw3ICsxMTgsNyBAQCBKU19FWFBPUlQgdm9pZCBK
U0dsb2JhbENvbnRleHRTZXRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZChKU0dsb2JhbENvbnRleHRS
ZWYgY3R4LAogQHJlc3VsdCBUaGUgdmFsdWUgb2YgdGhlIHNldHRpbmcsIHRydWUgaWYgcmVtb3Rl
IGluc3BlY3Rpb24gaXMgZW5hYmxlZCwgb3RoZXJ3aXNlIGZhbHNlLgogQGRpc2N1c3Npb24gVGhp
cyBzZXR0aW5nIGlzIHRydWUgYnkgZGVmYXVsdC4KICovCi1KU19FWFBPUlQgYm9vbCBKU0dsb2Jh
bENvbnRleHRHZXRJbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25z
KEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpIENGX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0pTX0VY
UE9SVCBib29sIEpTR2xvYmFsQ29udGV4dEdldEluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJl
cG9ydGluZ0V4Y2VwdGlvbnMoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkgSlNDX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTI2LDcg
KzEyNiw3IEBAIEpTX0VYUE9SVCBib29sIEpTR2xvYmFsQ29udGV4dEdldEluY2x1ZGVzTmF0aXZl
Q2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMoCiBAcGFyYW0gY3R4IFRoZSBKU0dsb2Jh
bENvbnRleHQgdGhhdCB5b3Ugd2FudCB0byBjaGFuZ2UuCiBAcGFyYW0gaW5jbHVkZXNOYXRpdmVD
YWxsU3RhY2sgVGhlIG5ldyB2YWx1ZSBvZiB0aGUgc2V0dGluZyBmb3IgdGhlIGNvbnRleHQuCiAq
LwotSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0SW5jbHVkZXNOYXRpdmVDYWxsU3Rh
Y2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucyhKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBib29sIGlu
Y2x1ZGVzTmF0aXZlQ2FsbFN0YWNrKSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitKU19FWFBP
UlQgdm9pZCBKU0dsb2JhbENvbnRleHRTZXRJbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBv
cnRpbmdFeGNlcHRpb25zKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIGJvb2wgaW5jbHVkZXNOYXRp
dmVDYWxsU3RhY2spIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsK
IAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTTWFuYWdlZFZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFu
YWdlZFZhbHVlLmgKaW5kZXggMDEwNzNmYWQ5N2U3MGI3NmJkNmI2NmEzNzMzYWYyNjFjYzUyNzQ5
Yy4uOGMyMzExZDA5OGM5ZTdkMmFkNGQ4ZDc5NTI5ZGU1MDE3NDllYWZmZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUuaApAQCAtNDgsNyArNDgsNyBAQCBUaGUg
cHJpbWFyeSB1c2UgZm9yIGEgSlNNYW5hZ2VkVmFsdWUgaXMgdG8gc3RvcmUgYSBKU1ZhbHVlIGlu
IGFuIE9iamVjdGl2ZS1DCiBvciBTd2lmdCBvYmplY3QgdGhhdCBpcyBleHBvcnRlZCB0byBKYXZh
U2NyaXB0LiBJdCBpcyBpbmNvcnJlY3QgdG8gc3RvcmUgYSBKU1ZhbHVlCiBpbiBhbiBvYmplY3Qg
dGhhdCBpcyBleHBvcnRlZCB0byBKYXZhU2NyaXB0LCBzaW5jZSBkb2luZyBzbyBjcmVhdGVzIGEg
cmV0YWluIGN5Y2xlLgogKi8gCi1OU19DTEFTU19BVkFJTEFCTEUoMTBfOSwgN18wKQorSlNDX0NM
QVNTX0FWQUlMQUJMRShtYWNvc3goMTAuOSksIGlvcyg3LjApKQogQGludGVyZmFjZSBKU01hbmFn
ZWRWYWx1ZSA6IE5TT2JqZWN0CiAKIC8qIQpAQCAtNTcsNyArNTcsNyBAQCBOU19DTEFTU19BVkFJ
TEFCTEUoMTBfOSwgN18wKQogQHJlc3VsdCBUaGUgbmV3IEpTTWFuYWdlZFZhbHVlLgogKi8KICsg
KEpTTWFuYWdlZFZhbHVlICopbWFuYWdlZFZhbHVlV2l0aFZhbHVlOihKU1ZhbHVlICopdmFsdWU7
Ci0rIChKU01hbmFnZWRWYWx1ZSAqKW1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZh
bHVlIGFuZE93bmVyOihpZClvd25lciBOU19BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CisrIChKU01h
bmFnZWRWYWx1ZSAqKW1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIGFuZE93
bmVyOihpZClvd25lciBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSk7
CiAKIC8qIQogQG1ldGhvZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNw
cAppbmRleCBkODBhMDcwYjdhYjY5OGZiNDhhNzEwZGU1YTc2MzM5NWJiNDliMjA3Li4wOThlMDNi
ZmIwM2U1Mjg5MGI3OWM1MWQ2MGVmODdjY2VjMjZiM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtMzY2LDYgKzM2NiwxMDAgQEAgdm9pZCBKU09iamVj
dFNldFByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJp
bmdSZWYgcHJvcGUKICAgICBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhj
ZXB0aW9uKTsKIH0KIAorYm9vbCBKU09iamVjdEhhc1Byb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKK3sKKyAgICBpZiAoIWN0eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pT
KGN0eCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2Vy
KHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisKKyAgICBK
U09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9
IHRvSlMoZXhlYywga2V5KS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGlmIChoYW5kbGVFeGNl
cHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6
OkRpZFRocm93KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHJlc3VsdCA9IGpz
T2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBpZGVudCk7CisgICAgaGFuZGxlRXhjZXB0aW9uSWZO
ZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
SlNWYWx1ZVJlZiBKU09iamVjdEdldFByb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2Jq
ZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sK
KyAgICBpZiAoIWN0eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0
KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gdG9KUyhl
eGVjLCBrZXkpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklm
TmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhy
b3cpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgSlNWYWx1ZSBqc1ZhbHVlID0ganNP
YmplY3QtPmdldChleGVjLCBpZGVudCk7CisgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2Nv
cGUsIGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIGpzVmFsdWUpOwor
fQorCit2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmpl
Y3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIGtleSwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNQcm9wZXJ0
eUF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlm
ICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRv
SlMob2JqZWN0KTsKKyAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVlKTsKKwor
ICAgIElkZW50aWZpZXIgaWRlbnQgPSB0b0pTKGV4ZWMsIGtleSkudG9Qcm9wZXJ0eUtleShleGVj
KTsKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlv
bikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ym9vbCBkb2VzTm90SGF2ZVByb3BlcnR5ID0gYXR0cmlidXRlcyAmJiAhanNPYmplY3QtPmhhc1By
b3BlcnR5KGV4ZWMsIGlkZW50KTsKKyAgICBpZiAoTElLRUxZKCFzY29wZS5leGNlcHRpb24oKSkp
IHsKKyAgICAgICAgaWYgKGRvZXNOb3RIYXZlUHJvcGVydHkpIHsKKyAgICAgICAgICAgIFByb3Bl
cnR5RGVzY3JpcHRvciBkZXNjKGpzVmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAganNP
YmplY3QtPm1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KGpzT2JqZWN0LCBleGVjLCBp
ZGVudCwgZGVzYywgZmFsc2UpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QoanNPYmplY3QpOworICAgICAgICAgICAganNPYmplY3QtPm1ldGhvZFRh
YmxlKCktPnB1dChqc09iamVjdCwgZXhlYywgaWRlbnQsIGpzVmFsdWUsIHNsb3QpOworICAgICAg
ICB9CisgICAgfQorICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNl
cHRpb24pOworfQorCitib29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHlLZXkoSlNDb250ZXh0UmVm
IGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIGtleSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRv
SlMoY3R4KTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2Nr
ZXIodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKworICAg
IEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAgICBJZGVudGlmaWVyIGlkZW50
ID0gdG9KUyhleGVjLCBrZXkpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4
Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1
czo6RGlkVGhyb3cpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgcmVzdWx0ID0g
anNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGpzT2JqZWN0LCBleGVjLCBp
ZGVudCk7CisgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlv
bik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogSlNWYWx1ZVJlZiBKU09iamVjdEdldFByb3Bl
cnR5QXRJbmRleChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIHVuc2lnbmVk
IHByb3BlcnR5SW5kZXgsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBpZiAoIWN0eCkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oCmluZGV4IDk1ZDUzYjdmNGU1
OGU5NmYwY2JjMzE1OTVhZjljNDYxOTc4YWE0M2QuLjAxZGY1MTQ4ZjdkZDNlNzM5ZDA2ZDA1NmQ4
MGExZmQ5Njc2NWUzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgK
QEAgLTQ0MSw3ICs0NDEsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQ29u
c3RydWN0b3IoSlNDb250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYQogIEBkaXNjdXNzaW9u
IFRoZSBiZWhhdmlvciBvZiB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGV4YWN0bHkgbWF0Y2ggdGhl
IGJlaGF2aW9yIG9mIHRoZSBidWlsdC1pbiBBcnJheSBjb25zdHJ1Y3Rvci4gU3BlY2lmaWNhbGx5
LCBpZiBvbmUgYXJndW1lbnQgCiAgaXMgc3VwcGxpZWQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBh
biBhcnJheSB3aXRoIG9uZSBlbGVtZW50LgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNP
YmplY3RNYWtlQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZB
SUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQXJy
YXkoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtNDUyLDcgKzQ1
Miw3IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VBcnJheShKU0NvbnRleHRS
ZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwKICBAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRl
ciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnku
IFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEBy
ZXN1bHQgQSBKU09iamVjdCB0aGF0IGlzIGEgRGF0ZS4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0
UmVmIEpTT2JqZWN0TWFrZURhdGUoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikg
Q0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RN
YWtlRGF0ZShKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlM
QUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC00NjMs
NyArNDYzLDcgQEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZURhdGUoSlNDb250
ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGMKICBAcGFyYW0gZXhjZXB0aW9uIEEg
cG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBp
ZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9u
LgogIEByZXN1bHQgQSBKU09iamVjdCB0aGF0IGlzIGEgRXJyb3IuCiAgKi8KLUpTX0VYUE9SVCBK
U09iamVjdFJlZiBKU09iamVjdE1ha2VFcnJvcihKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCBKU09iamVjdFJlZiBK
U09iamVjdE1ha2VFcnJvcihKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiAgQGZ1bmN0aW9u
CkBAIC00NzQsNyArNDc0LDcgQEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUVy
cm9yKEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LAogIEBwYXJhbSBleGNl
cHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNl
cHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBl
eGNlcHRpb24uCiAgQHJlc3VsdCBBIEpTT2JqZWN0IHRoYXQgaXMgYSBSZWdFeHAuCiAgKi8KLUpT
X0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VSZWdFeHAoSlNDb250ZXh0UmVmIGN0eCwg
c2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgSlNP
YmplY3RSZWYgSlNPYmplY3RNYWtlUmVnRXhwKEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1
bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9zKDcuMCkpOwogCiAvKiEK
IEBmdW5jdGlvbgpAQCAtNTM2LDkgKzUzNiw5IEBAIEpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpTT2Jq
ZWN0R2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKCiBA
cGFyYW0gY3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCiBAcGFyYW0gb2JqZWN0IFRo
ZSBKU09iamVjdCB3aG9zZSBwcm9wZXJ0eSB5b3Ugd2FudCB0byBzZXQuCiBAcGFyYW0gcHJvcGVy
dHlOYW1lIEEgSlNTdHJpbmcgY29udGFpbmluZyB0aGUgcHJvcGVydHkncyBuYW1lLgotQHBhcmFt
IHZhbHVlIEEgSlNWYWx1ZSB0byB1c2UgYXMgdGhlIHByb3BlcnR5J3MgdmFsdWUuCi1AcGFyYW0g
ZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4g
ZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUg
YW4gZXhjZXB0aW9uLgorQHBhcmFtIHZhbHVlIEEgSlNWYWx1ZVJlZiB0byB1c2UgYXMgdGhlIHBy
b3BlcnR5J3MgdmFsdWUuCiBAcGFyYW0gYXR0cmlidXRlcyBBIGxvZ2ljYWxseSBPUmVkIHNldCBv
ZiBKU1Byb3BlcnR5QXR0cmlidXRlcyB0byBnaXZlIHRvIHRoZSBwcm9wZXJ0eS4KK0BwYXJhbSBl
eGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBl
eGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBh
biBleGNlcHRpb24uCiAqLwogSlNfRVhQT1JUIHZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eShKU0Nv
bnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKTsKIApAQCAtNTUzLDYgKzU1Myw1NCBAQCBKU19FWFBPUlQgdm9p
ZCBKU09iamVjdFNldFByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVj
dCwgSlNTdHJpbgogKi8KIEpTX0VYUE9SVCBib29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHkoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3Qg
VGVzdHMgd2hldGhlciBhbiBvYmplY3QgaGFzIGEgZ2l2ZW4gcHJvcGVydHkgdXNpbmcgYSBKU1Zh
bHVlUmVmIGFzIHRoZSBwcm9wZXJ0eSBrZXkuCitAcGFyYW0gb2JqZWN0IFRoZSBKU09iamVjdCB0
byB0ZXN0LgorQHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBw
cm9wZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0g
ZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4g
ZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUg
YW4gZXhjZXB0aW9uLgorQHJlc3VsdCB0cnVlIGlmIHRoZSBvYmplY3QgaGFzIGEgcHJvcGVydHkg
d2hvc2UgbmFtZSBtYXRjaGVzIHByb3BlcnR5S2V5LCBvdGhlcndpc2UgZmFsc2UuCitAZGlzY3Vz
c2lvbiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHBlcmZvcm1pbmcgInByb3BlcnR5S2V5
IGluIG9iamVjdCIgZnJvbSBKYXZhU2NyaXB0LgorKi8KK0pTX0VYUE9SVCBib29sIEpTT2JqZWN0
SGFzUHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1Zh
bHVlUmVmIHByb3BlcnR5S2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxB
QkxFKG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CisKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJh
Y3QgR2V0cyBhIHByb3BlcnR5IGZyb20gYW4gb2JqZWN0IHVzaW5nIGEgSlNWYWx1ZVJlZiBhcyB0
aGUgcHJvcGVydHkga2V5LgorQHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNl
LgorQHBhcmFtIG9iamVjdCBUaGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQgdG8g
Z2V0LgorQHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBwcm9w
ZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0gZXhj
ZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhj
ZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4g
ZXhjZXB0aW9uLgorQHJlc3VsdCBUaGUgcHJvcGVydHkncyB2YWx1ZSBpZiBvYmplY3QgaGFzIHRo
ZSBwcm9wZXJ0eSBrZXksIG90aGVyd2lzZSB0aGUgdW5kZWZpbmVkIHZhbHVlLgorQGRpc2N1c3Np
b24gVGhpcyBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyBwZXJmb3JtaW5nICJvYmplY3RbcHJvcGVy
dHlLZXldIiBmcm9tIEphdmFTY3JpcHQuCisqLworSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNPYmpl
Y3RHZXRQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpT
VmFsdWVSZWYgcHJvcGVydHlLZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKKworLyohCitAZnVuY3Rpb24KK0BhYnN0
cmFjdCBTZXRzIGEgcHJvcGVydHkgb24gYW4gb2JqZWN0IHVzaW5nIGEgSlNWYWx1ZVJlZiBhcyB0
aGUgcHJvcGVydHkga2V5LgorQHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNl
LgorQHBhcmFtIG9iamVjdCBUaGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQgdG8g
c2V0LgorQHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBwcm9w
ZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0gdmFs
dWUgQSBKU1ZhbHVlUmVmIHRvIHVzZSBhcyB0aGUgcHJvcGVydHkncyB2YWx1ZS4KK0BwYXJhbSBh
dHRyaWJ1dGVzIEEgbG9naWNhbGx5IE9SZWQgc2V0IG9mIEpTUHJvcGVydHlBdHRyaWJ1dGVzIHRv
IGdpdmUgdG8gdGhlIHByb3BlcnR5LgorQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBK
U1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5V
TEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KK0BkaXNjdXNzaW9u
IFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXMgcGVyZm9ybWluZyAib2JqZWN0W3Byb3BlcnR5
S2V5XSA9IHZhbHVlIiBmcm9tIEphdmFTY3JpcHQuCisqLworSlNfRVhQT1JUIHZvaWQgSlNPYmpl
Y3RTZXRQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpT
VmFsdWVSZWYgcHJvcGVydHlLZXksIEpTVmFsdWVSZWYgdmFsdWUsIEpTUHJvcGVydHlBdHRyaWJ1
dGVzIGF0dHJpYnV0ZXMsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKKworLyohCitAZnVuY3Rpb24KK0BhYnN0cmFjdCBE
ZWxldGVzIGEgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QgdXNpbmcgYSBKU1ZhbHVlUmVmIGFzIHRo
ZSBwcm9wZXJ0eSBrZXkuCitAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2Uu
CitAcGFyYW0gb2JqZWN0IFRoZSBKU09iamVjdCB3aG9zZSBwcm9wZXJ0eSB5b3Ugd2FudCB0byBk
ZWxldGUuCitAcGFyYW0gcHJvcGVydHlLZXkgQSBKU1ZhbHVlUmVmIGNvbnRhaW5pbmcgdGhlIHBy
b3BlcnR5IGtleSB0byB1c2Ugd2hlbiBsb29raW5nIHVwIHRoZSBwcm9wZXJ0eS4KK0BwYXJhbSBl
eGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBl
eGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBh
biBleGNlcHRpb24uCitAcmVzdWx0IHRydWUgaWYgdGhlIGRlbGV0ZSBvcGVyYXRpb24gc3VjY2Vl
ZHMsIG90aGVyd2lzZSBmYWxzZSAoZm9yIGV4YW1wbGUsIGlmIHRoZSBwcm9wZXJ0eSBoYXMgdGhl
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSBhdHRyaWJ1dGUgc2V0KS4KK0BkaXNjdXNz
aW9uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXMgcGVyZm9ybWluZyAiZGVsZXRlIG9iamVj
dFtwcm9wZXJ0eUtleV0iIGZyb20gSmF2YVNjcmlwdC4KKyovCitKU19FWFBPUlQgYm9vbCBKU09i
amVjdERlbGV0ZVByb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVj
dCwgSlNWYWx1ZVJlZiBwcm9wZXJ0eUtleSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJ
X0FWQUlMQUJMRShtYWNvc3goMTAuMTMpLCBpb3MoMTEuMCkpOworCiAvKiEKIEBmdW5jdGlvbgog
QGFic3RyYWN0IEdldHMgYSBwcm9wZXJ0eSBmcm9tIGFuIG9iamVjdCBieSBudW1lcmljIGluZGV4
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1JlbW90ZUluc3BlY3Rv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1JlbW90ZUluc3BlY3Rvci5oCmluZGV4
IGM4YmFjNmRkMGU0YTY0ODA5Y2IzNDUwY2RiYTRjMDM5N2E0OGEwNTcuLjYxODZiOTIzZWM4YWI4
Yjk0OGU3OTNhZjA0YmRkODQzMjc0MDAzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTUmVtb3RlSW5zcGVjdG9yLmgKQEAgLTQwLDE0ICs0MCwxNCBAQCB0eXBlZGVmIHBpZF90
IEpTUHJvY2Vzc0lEOwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotSlNfRVhQT1JUIHZvaWQgSlNS
ZW1vdGVJbnNwZWN0b3JEaXNhYmxlQXV0b1N0YXJ0KHZvaWQpIENGX0FWQUlMQUJMRSgxMF8xMSwg
OV8wKTsKLUpTX0VYUE9SVCB2b2lkIEpTUmVtb3RlSW5zcGVjdG9yU3RhcnQodm9pZCkgQ0ZfQVZB
SUxBQkxFKDEwXzExLCA5XzApOwotSlNfRVhQT1JUIHZvaWQgSlNSZW1vdGVJbnNwZWN0b3JTZXRQ
YXJlbnRQcm9jZXNzSW5mb3JtYXRpb24oSlNQcm9jZXNzSUQsIGNvbnN0IHVpbnQ4X3QqIGF1ZGl0
RGF0YSwgc2l6ZV90IGF1ZGl0TGVuZ3RoKSBDRl9BVkFJTEFCTEUoMTBfMTEsIDlfMCk7CitKU19F
WFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvckRpc2FibGVBdXRvU3RhcnQodm9pZCkgSlNDX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOworSlNfRVhQT1JUIHZvaWQgSlNS
ZW1vdGVJbnNwZWN0b3JTdGFydCh2b2lkKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEp
LCBpb3MoOS4wKSk7CitKU19FWFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvclNldFBhcmVudFBy
b2Nlc3NJbmZvcm1hdGlvbihKU1Byb2Nlc3NJRCwgY29uc3QgdWludDhfdCogYXVkaXREYXRhLCBz
aXplX3QgYXVkaXRMZW5ndGgpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSksIGlvcyg5
LjApKTsKIAotSlNfRVhQT1JUIHZvaWQgSlNSZW1vdGVJbnNwZWN0b3JTZXRMb2dUb1N5c3RlbUNv
bnNvbGUoYm9vbCkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzApOworSlNfRVhQT1JUIHZvaWQgSlNS
ZW1vdGVJbnNwZWN0b3JTZXRMb2dUb1N5c3RlbUNvbnNvbGUoYm9vbCkgSlNDX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOwogCi1KU19FWFBPUlQgYm9vbCBKU1JlbW90ZUlu
c3BlY3RvckdldEluc3BlY3Rpb25FbmFibGVkQnlEZWZhdWx0KHZvaWQpIENGX0FWQUlMQUJMRSgx
MF8xMSwgOV8wKTsKLUpTX0VYUE9SVCB2b2lkIEpTUmVtb3RlSW5zcGVjdG9yU2V0SW5zcGVjdGlv
bkVuYWJsZWRCeURlZmF1bHQoYm9vbCkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzApOworSlNfRVhQ
T1JUIGJvb2wgSlNSZW1vdGVJbnNwZWN0b3JHZXRJbnNwZWN0aW9uRW5hYmxlZEJ5RGVmYXVsdCh2
b2lkKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CitKU19FWFBP
UlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvclNldEluc3BlY3Rpb25FbmFibGVkQnlEZWZhdWx0KGJv
b2wpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSksIGlvcyg5LjApKTsKIAogI2lmZGVm
IF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VHlwZWRBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuaApp
bmRleCBlMjNiNzZkMmViNGFhNWE0OThiNTVlYmE0NzM3NDYzZjZjYjkzOWFjLi42ZDg2MDIyZmE1
Njk5NTQ2NDZiZWVhM2FlOWVmZjdiMmNhMzZhMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNUeXBlZEFycmF5LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgZXh0ZXJuICJDIiB7CiAgQHBhcmFt
IGV4Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3Jl
IGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0
b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAgICAgIEEgSlNPYmplY3RSZWYgdGhh
dCBpcyBhIFR5cGVkIEFycmF5IHdpdGggYWxsIGVsZW1lbnRzIHNldCB0byB6ZXJvIG9yIE5VTEwg
aWYgdGhlcmUgd2FzIGFuIGVycm9yLgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmpl
Y3RNYWtlVHlwZWRBcnJheShKU0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5
VHlwZSwgc2l6ZV90IGxlbmd0aCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUo
MTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVR5cGVkQXJy
YXkoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBlZEFycmF5VHlwZSBhcnJheVR5cGUsIHNpemVfdCBs
ZW5ndGgsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEw
LjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC02MCw3ICs2MCw3IEBAIEpT
X0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5KEpTQ29udGV4dFJlZiBj
dHgsIEpTVHlwZWRBcnJheVR5cGUKICBAcmVzdWx0ICAgICAgICAgICAgICAgICAgIEEgSlNPYmpl
Y3RSZWYgVHlwZWQgQXJyYXkgd2hvc2UgYmFja2luZyBzdG9yZSBpcyB0aGUgc2FtZSBhcyB0aGUg
b25lIHBvaW50ZWQgdG8gYnkgYnl0ZXMgb3IgTlVMTCBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAg
QGRpc2N1c3Npb24gICAgICAgICAgICAgICBJZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGR1cmlu
ZyB0aGlzIGZ1bmN0aW9uIHRoZSBieXRlc0RlYWxsb2NhdG9yIHdpbGwgYWx3YXlzIGJlIGNhbGxl
ZC4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVR5cGVkQXJyYXlXaXRo
Qnl0ZXNOb0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBlZEFycmF5VHlwZSBhcnJheVR5cGUs
IHZvaWQqIGJ5dGVzLCBzaXplX3QgYnl0ZUxlbmd0aCwgSlNUeXBlZEFycmF5Qnl0ZXNEZWFsbG9j
YXRvciBieXRlc0RlYWxsb2NhdG9yLCB2b2lkKiBkZWFsbG9jYXRvckNvbnRleHQsIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK0pTX0VYUE9SVCBKU09i
amVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEJ5dGVzTm9Db3B5KEpTQ29udGV4dFJl
ZiBjdHgsIEpTVHlwZWRBcnJheVR5cGUgYXJyYXlUeXBlLCB2b2lkKiBieXRlcywgc2l6ZV90IGJ5
dGVMZW5ndGgsIEpTVHlwZWRBcnJheUJ5dGVzRGVhbGxvY2F0b3IgYnl0ZXNEZWFsbG9jYXRvciwg
dm9pZCogZGVhbGxvY2F0b3JDb250ZXh0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElf
QVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpA
QCAtNzEsNyArNzEsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRB
cnJheVdpdGhCeXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4LCBKUwogIEBwYXJhbSBleGNlcHRp
b24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNl
cHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBl
eGNlcHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgICBBIEpTT2JqZWN0UmVmIHRoYXQgaXMgYSBU
eXBlZCBBcnJheSBvciBOVUxMIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4gVGhlIGJhY2tpbmcgc3Rv
cmUgb2YgdGhlIFR5cGVkIEFycmF5IHdpbGwgYmUgYnVmZmVyLgogICovCi1KU19FWFBPUlQgSlNP
YmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhBcnJheUJ1ZmZlcihKU0NvbnRleHRS
ZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgSlNPYmplY3RSZWYgYnVmZmVyLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBP
UlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhBcnJheUJ1ZmZlcihKU0Nv
bnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgSlNPYmplY3RSZWYgYnVm
ZmVyLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4x
MiksIGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtODQsNyArODQsNyBAQCBKU19F
WFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhBcnJheUJ1ZmZlcihK
U0NvbnRleHRSZWYgY3R4LCBKUwogIEBwYXJhbSBleGNlcHRpb24gICAgQSBwb2ludGVyIHRvIGEg
SlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBO
VUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCAg
ICAgICAgICAgICBBIEpTT2JqZWN0UmVmIHRoYXQgaXMgYSBUeXBlZCBBcnJheSBvciBOVUxMIGlm
IHRoZXJlIHdhcyBhbiBlcnJvci4gVGhlIGJhY2tpbmcgc3RvcmUgb2YgdGhlIFR5cGVkIEFycmF5
IHdpbGwgYmUgYnVmZmVyLgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtl
VHlwZWRBcnJheVdpdGhBcnJheUJ1ZmZlckFuZE9mZnNldChKU0NvbnRleHRSZWYgY3R4LCBKU1R5
cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgSlNPYmplY3RSZWYgYnVmZmVyLCBzaXplX3QgYnl0ZU9m
ZnNldCwgc2l6ZV90IGxlbmd0aCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUo
MTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVR5cGVkQXJy
YXlXaXRoQXJyYXlCdWZmZXJBbmRPZmZzZXQoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBlZEFycmF5
VHlwZSBhcnJheVR5cGUsIEpTT2JqZWN0UmVmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNp
emVfdCBsZW5ndGgsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFj
b3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC05NSw3ICs5NSw3
IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEFycmF5
QnVmZmVyQW5kT2Zmc2V0KEpTQ29udGV4dFJlCiAgQHJlc3VsdCAgICAgICAgICAgICBBIHBvaW50
ZXIgdG8gdGhlIHJhdyBkYXRhIGJ1ZmZlciB0aGF0IHNlcnZlcyBhcyBvYmplY3QncyBiYWNraW5n
IHN0b3JlIG9yIE5VTEwgaWYgb2JqZWN0IGlzIG5vdCBhIFR5cGVkIEFycmF5IG9iamVjdC4KICBA
ZGlzY3Vzc2lvbiAgICAgICAgIFRoZSBwb2ludGVyIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24g
aXMgdGVtcG9yYXJ5IGFuZCBpcyBub3QgZ3VhcmFudGVlZCB0byByZW1haW4gdmFsaWQgYWNyb3Nz
IEphdmFTY3JpcHRDb3JlIEFQSSBjYWxscy4KICAqLwotSlNfRVhQT1JUIHZvaWQqIEpTT2JqZWN0
R2V0VHlwZWRBcnJheUJ5dGVzUHRyKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVj
dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNf
RVhQT1JUIHZvaWQqIEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5dGVzUHRyKEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FW
QUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAvKiEKICBAZnVuY3Rpb24KQEAg
LTEwNSw3ICsxMDUsNyBAQCBKU19FWFBPUlQgdm9pZCogSlNPYmplY3RHZXRUeXBlZEFycmF5Qnl0
ZXNQdHIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZQogIEBwYXJhbSBleGNlcHRp
b24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNl
cHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBl
eGNlcHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgICBUaGUgbGVuZ3RoIG9mIHRoZSBUeXBlZCBB
cnJheSBvYmplY3Qgb3IgMCBpZiB0aGUgb2JqZWN0IGlzIG5vdCBhIFR5cGVkIEFycmF5IG9iamVj
dC4KICAqLwotSlNfRVhQT1JUIHNpemVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlMZW5ndGgoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
IENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0
VHlwZWRBcnJheUxlbmd0aChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9z
KDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC0xMTUsNyArMTE1LDcgQEAgSlNfRVhQT1JU
IHNpemVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlMZW5ndGgoSlNDb250ZXh0UmVmIGN0eCwgSlNP
YmplY3RSZWYgb2JqZWMKICBAcGFyYW0gZXhjZXB0aW9uICAgIEEgcG9pbnRlciB0byBhIEpTVmFs
dWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBp
ZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1bHQgICAgICAg
ICAgICAgVGhlIGJ5dGUgbGVuZ3RoIG9mIHRoZSBUeXBlZCBBcnJheSBvYmplY3Qgb3IgMCBpZiB0
aGUgb2JqZWN0IGlzIG5vdCBhIFR5cGVkIEFycmF5IG9iamVjdC4KICAqLwotSlNfRVhQT1JUIHNp
emVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlCeXRlTGVuZ3RoKEpTQ29udGV4dFJlZiBjdHgsIEpT
T2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBf
MTIsIDEwXzApOworSlNfRVhQT1JUIHNpemVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlCeXRlTGVu
Z3RoKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAv
KiEKICBAZnVuY3Rpb24KQEAgLTEyNSw3ICsxMjUsNyBAQCBKU19FWFBPUlQgc2l6ZV90IEpTT2Jq
ZWN0R2V0VHlwZWRBcnJheUJ5dGVMZW5ndGgoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYg
bwogIEBwYXJhbSBleGNlcHRpb24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGlj
aCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3Qg
Y2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgICBUaGUgYnl0
ZSBvZmZzZXQgb2YgdGhlIFR5cGVkIEFycmF5IG9iamVjdCBvciAwIGlmIHRoZSBvYmplY3QgaXMg
bm90IGEgVHlwZWQgQXJyYXkgb2JqZWN0LgogICovCi1KU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2Jq
ZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitK
U19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoSlNDb250ZXh0
UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19B
UElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlv
bgpAQCAtMTM1LDcgKzEzNSw3IEBAIEpTX0VYUE9SVCBzaXplX3QgSlNPYmplY3RHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvCiAgQHBhcmFtIGV4
Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFu
IGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3Jl
IGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAgICAgIEEgSlNPYmplY3RSZWYgd2l0aCBh
IEpTVHlwZWRBcnJheVR5cGUgb2Yga0pTVHlwZWRBcnJheVR5cGVBcnJheUJ1ZmZlciBvciBOVUxM
IGlmIG9iamVjdCBpcyBub3QgYSBUeXBlZCBBcnJheS4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0
UmVmIEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ1ZmZlcihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVj
dFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAx
MF8wKTsKK0pTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdEdldFR5cGVkQXJyYXlCdWZmZXIo
SlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKIC8vIC0t
LS0tLS0tLS0tLS0gQXJyYXkgQnVmZmVyIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tCiAKQEAgLTE1
MSw3ICsxNTEsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RHZXRUeXBlZEFycmF5
QnVmZmVyKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmCiAgQHJlc3VsdCAgICAgICAgICAg
ICAgICAgICBBIEpTT2JqZWN0UmVmIEFycmF5IEJ1ZmZlciB3aG9zZSBiYWNraW5nIHN0b3JlIGlz
IHRoZSBzYW1lIGFzIHRoZSBvbmUgcG9pbnRlZCB0byBieSBieXRlcyBvciBOVUxMIGlmIHRoZXJl
IHdhcyBhbiBlcnJvci4KICBAZGlzY3Vzc2lvbiAgICAgICAgICAgICAgIElmIGFuIGV4Y2VwdGlv
biBpcyB0aHJvd24gZHVyaW5nIHRoaXMgZnVuY3Rpb24gdGhlIGJ5dGVzRGVhbGxvY2F0b3Igd2ls
bCBhbHdheXMgYmUgY2FsbGVkLgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RN
YWtlQXJyYXlCdWZmZXJXaXRoQnl0ZXNOb0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgdm9pZCogYnl0
ZXMsIHNpemVfdCBieXRlTGVuZ3RoLCBKU1R5cGVkQXJyYXlCeXRlc0RlYWxsb2NhdG9yIGJ5dGVz
RGVhbGxvY2F0b3IsIHZvaWQqIGRlYWxsb2NhdG9yQ29udGV4dCwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpT
T2JqZWN0TWFrZUFycmF5QnVmZmVyV2l0aEJ5dGVzTm9Db3B5KEpTQ29udGV4dFJlZiBjdHgsIHZv
aWQqIGJ5dGVzLCBzaXplX3QgYnl0ZUxlbmd0aCwgSlNUeXBlZEFycmF5Qnl0ZXNEZWFsbG9jYXRv
ciBieXRlc0RlYWxsb2NhdG9yLCB2b2lkKiBkZWFsbG9jYXRvckNvbnRleHQsIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsK
IAogLyohCiAgQGZ1bmN0aW9uCkBAIC0xNjEsNyArMTYxLDcgQEAgSlNfRVhQT1JUIEpTT2JqZWN0
UmVmIEpTT2JqZWN0TWFrZUFycmF5QnVmZmVyV2l0aEJ5dGVzTm9Db3B5KEpTQ29udGV4dFJlZiBj
dHgsIHYKICBAcmVzdWx0ICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIHJhdyBkYXRhIGJ1ZmZl
ciB0aGF0IHNlcnZlcyBhcyBvYmplY3QncyBiYWNraW5nIHN0b3JlIG9yIE5VTEwgaWYgb2JqZWN0
IGlzIG5vdCBhbiBBcnJheSBCdWZmZXIgb2JqZWN0LgogIEBkaXNjdXNzaW9uICAgICAgIFRoZSBw
b2ludGVyIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24gaXMgdGVtcG9yYXJ5IGFuZCBpcyBub3Qg
Z3VhcmFudGVlZCB0byByZW1haW4gdmFsaWQgYWNyb3NzIEphdmFTY3JpcHRDb3JlIEFQSSBjYWxs
cy4KICAqLwotSlNfRVhQT1JUIHZvaWQqIEpTT2JqZWN0R2V0QXJyYXlCdWZmZXJCeXRlc1B0cihK
U0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK0pTX0VYUE9SVCB2b2lkKiBKU09iamVjdEdl
dEFycmF5QnVmZmVyQnl0ZXNQdHIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiks
IGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtMTcxLDcgKzE3MSw3IEBAIEpTX0VY
UE9SVCB2b2lkKiBKU09iamVjdEdldEFycmF5QnVmZmVyQnl0ZXNQdHIoSlNDb250ZXh0UmVmIGN0
eCwgSlNPYmplY3RSZWYgb2JqCiAgQHBhcmFtIGV4Y2VwdGlvbiAgQSBwb2ludGVyIHRvIGEgSlNW
YWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxM
IGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCAgICAg
ICAgICAgVGhlIG51bWJlciBvZiBieXRlcyBzdG9yZWQgaW4gdGhlIGRhdGEgb2JqZWN0LgogICov
Ci1KU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0QXJyYXlCdWZmZXJCeXRlTGVuZ3RoKEpTQ29u
dGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBD
Rl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIHNpemVfdCBKU09iamVjdEdldEFy
cmF5QnVmZmVyQnl0ZUxlbmd0aChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3Qs
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwg
aW9zKDEwLjApKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNWYWx1ZS5oCmluZGV4IDE0MTBkZDc0YTE3Zjk3MDcwNmU0NGRlZDI0Y2NkMTcwYzM0NzljMmUu
LjYyY2JlMjFhOWIyMWI2MzViMmNhZTRkNWQ2OTg0MTI2MzIxNmM2MjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNWYWx1ZS5oCkBAIC00NCw3ICs0NCw3IEBACiAgSlNWYWx1ZSB0byBhIG1ldGhv
ZCBvciBwcm9wZXJ0eSBvZiBhIEpTVmFsdWUgb3IgSlNDb250ZXh0IG9yaWdpbmF0aW5nIGZyb20g
YQogIGRpZmZlcmVudCBKU1ZpcnR1YWxNYWNoaW5lLiBEb2luZyBzbyB3aWxsIHJhaXNlIGFuIE9i
amVjdGl2ZS1DIGV4Y2VwdGlvbi4KICovCi1OU19DTEFTU19BVkFJTEFCTEUoMTBfOSwgN18wKQor
SlNDX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goMTAuOSksIGlvcyg3LjApKQogQGludGVyZmFjZSBK
U1ZhbHVlIDogTlNPYmplY3QKIAogLyohCkBAIC0xNDgsNiArMTQ4LDE1IEBAIE5TX0NMQVNTX0FW
QUlMQUJMRSgxMF85LCA3XzApCiAqLwogKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFVuZGVmaW5lZElu
Q29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKIAorLyohCisgQG1ldGhvZAorIEBhYnN0cmFj
dCBDcmVhdGUgYSBuZXcsIHVuaXF1ZSwgc3ltYm9sIG9iamVjdC4KKyBAcGFyYW0gZGVzY3JpcHRp
b24gVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBzeW1ib2wgb2JqZWN0IGJlaW5nIGNyZWF0ZWQuCisg
QHBhcmFtIGNvbnRleHQgVGhlIEpTQ29udGV4dCB0byB3aGljaCB0aGUgcmVzdWx0aW5nIEpTVmFs
dWUgYmVsb25ncy4KKyBAcmVzdWx0IFRoZSBKU1ZhbHVlIHJlcHJlc2VudGluZyBhIHVuaXF1ZSBK
YXZhU2NyaXB0IHZhbHVlIHdpdGggdHlwZSBzeW1ib2wuCisgKi8KKysgKEpTVmFsdWUgKil2YWx1
ZVdpdGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246KE5TU3RyaW5nICopZGVzY3JpcHRpb24gaW5D
b250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0IEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeChKU0Nf
TUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpOworCiAvKiEKIEBtZXRob2Rncm91cCBDb252ZXJ0
aW5nIHRvIE9iamVjdGl2ZS1DIFR5cGVzCiBAZGlzY3Vzc2lvbiBXaGVuIGNvbnZlcnRpbmcgYmV0
d2VlbiBKYXZhU2NyaXB0IHZhbHVlcyBhbmQgT2JqZWN0aXZlLUMgb2JqZWN0cyBhIGNvcHkgaXMK
QEAgLTMwNSw0MyArMzE0LDUyIEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCiAvKiEK
IEBtZXRob2Rncm91cCBBY2Nlc3NpbmcgUHJvcGVydGllcwogKi8KKworI2lmICEoZGVmaW5lZChf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAoZGVmaW5lZChfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMTAwMDApCisK
IC8qIQogQG1ldGhvZAogQGFic3RyYWN0IEFjY2VzcyBhIHByb3BlcnR5IG9mIGEgSlNWYWx1ZS4K
IEByZXN1bHQgVGhlIEpTVmFsdWUgZm9yIHRoZSByZXF1ZXN0ZWQgcHJvcGVydHkgb3IgdGhlIEpT
VmFsdWUgPGNvZGU+dW5kZWZpbmVkPC9jb2RlPiAKICBpZiB0aGUgcHJvcGVydHkgZG9lcyBub3Qg
ZXhpc3QuCitAZGlzY3Vzc2lvbiBDb3JyZXNwb25kcyB0byB0aGUgSmF2YVNjcmlwdCBvcGVyYXRp
b24gPGNvZGU+b2JqZWN0W3Byb3BlcnR5XTwvY29kZT4uIFBhc3MgYW4gTlNTdHJpbmcgKiB0byBh
Y2Nlc3MgYSBuYW1lZCBwcm9wZXJ0eS4gT3RoZXIgdmFsaWQgcHJvcGVydGllcyBpbmNsdWRlIHN5
bWJvbHMsIG51bWJlcnMsIGFuZCBzdHJpbmdpZmlhYmxlIG9iamVjdHMuIEluIG1hY09TIDEwLjEz
IGFuZCBpT1MgMTEgYW5kIGJlbG93LCAncHJvcGVydHknIHdhcyBhbiBOU1N0cmluZyAqLgogKi8K
LS0gKEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLSAo
SlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KGlkKXByb3BlcnR5OwogCiAvKiEKIEBtZXRob2QK
IEBhYnN0cmFjdCBTZXQgYSBwcm9wZXJ0eSBvbiBhIEpTVmFsdWUuCitAZGlzY3Vzc2lvbiBDb3Jy
ZXNwb25kcyB0byB0aGUgSmF2YVNjcmlwdCBvcGVyYXRpb24gPGNvZGU+b2JqZWN0W3Byb3BlcnR5
XSA9IHZhbHVlPC9jb2RlPi4gUGFzcyBhbiBOU1N0cmluZyAqIHRvIGFjY2VzcyBhIG5hbWVkIHBy
b3BlcnR5LiBPdGhlciB2YWxpZCBwcm9wZXJ0aWVzIGluY2x1ZGUgc3ltYm9scywgbnVtYmVycywg
YW5kIHN0cmluZ2lmaWFibGUgb2JqZWN0cy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUyAxMSBhbmQg
YmVsb3csICdwcm9wZXJ0eScgd2FzIGFuIE5TU3RyaW5nICouCiAqLwotLSAodm9pZClzZXRWYWx1
ZTooaWQpdmFsdWUgZm9yUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7CistICh2b2lkKXNl
dFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooaWQpcHJvcGVydHk7CiAKIC8qIQogQG1ldGhv
ZAogQGFic3RyYWN0IERlbGV0ZSBhIHByb3BlcnR5IGZyb20gYSBKU1ZhbHVlLgogQHJlc3VsdCBZ
RVMgaWYgZGVsZXRpb24gaXMgc3VjY2Vzc2Z1bCwgTk8gb3RoZXJ3aXNlLgorQGRpc2N1c3Npb24g
Q29ycmVzcG9uZHMgdG8gdGhlIEphdmFTY3JpcHQgb3BlcmF0aW9uIDxjb2RlPmRlbGV0ZSBvYmpl
Y3RbcHJvcGVydHldPC9jb2RlPi4gUGFzcyBhbiBOU1N0cmluZyAqIHRvIGFjY2VzcyBhIG5hbWVk
IHByb3BlcnR5LiBPdGhlciB2YWxpZCBwcm9wZXJ0aWVzIGluY2x1ZGUgc3ltYm9scywgbnVtYmVy
cywgYW5kIHN0cmluZ2lmaWFibGUgb2JqZWN0cy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUyAxMSBh
bmQgYmVsb3csICdwcm9wZXJ0eScgd2FzIGFuIE5TU3RyaW5nICouCiAqLwotLSAoQk9PTClkZWxl
dGVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKEJPT0wpZGVsZXRlUHJvcGVydHk6
KGlkKXByb3BlcnR5OwogCiAvKiEKIEBtZXRob2QKIEBhYnN0cmFjdCBDaGVjayBpZiBhIEpTVmFs
dWUgaGFzIGEgcHJvcGVydHkuCiBAZGlzY3Vzc2lvbiBUaGlzIG1ldGhvZCBoYXMgdGhlIHNhbWUg
ZnVuY3Rpb24gYXMgdGhlIEphdmFTY3JpcHQgb3BlcmF0b3IgPGNvZGU+aW48L2NvZGU+LgogQHJl
c3VsdCBSZXR1cm5zIFlFUyBpZiBwcm9wZXJ0eSBpcyBwcmVzZW50IG9uIHRoZSB2YWx1ZS4KK0Bk
aXNjdXNzaW9uIENvcnJlc3BvbmRzIHRvIHRoZSBKYXZhU2NyaXB0IG9wZXJhdGlvbiA8Y29kZT5w
cm9wZXJ0eSBpbiBvYmplY3Q8L2NvZGU+LiBQYXNzIGFuIE5TU3RyaW5nICogdG8gYWNjZXNzIGEg
bmFtZWQgcHJvcGVydHkuIE90aGVyIHZhbGlkIHByb3BlcnRpZXMgaW5jbHVkZSBzeW1ib2xzLCBu
dW1iZXJzLCBhbmQgc3RyaW5naWZpYWJsZSBvYmplY3RzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9T
IDExIGFuZCBiZWxvdywgJ3Byb3BlcnR5JyB3YXMgYW4gTlNTdHJpbmcgKi4KICovCi0tIChCT09M
KWhhc1Byb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLSAoQk9PTCloYXNQcm9wZXJ0eToo
aWQpcHJvcGVydHk7CiAKIC8qIQogQG1ldGhvZAogQGFic3RyYWN0IERlZmluZSBwcm9wZXJ0aWVz
IHdpdGggY3VzdG9tIGRlc2NyaXB0b3JzIG9uIEpTVmFsdWVzLgogQGRpc2N1c3Npb24gVGhpcyBt
ZXRob2QgbWF5IGJlIHVzZWQgdG8gY3JlYXRlIGEgZGF0YSBvciBhY2Nlc3NvciBwcm9wZXJ0eSBv
biBhbiBvYmplY3QuCiAgVGhpcyBtZXRob2Qgb3BlcmF0ZXMgaW4gYWNjb3JkYW5jZSB3aXRoIHRo
ZSBPYmplY3QuZGVmaW5lUHJvcGVydHkgbWV0aG9kIGluIHRoZSAKLSBKYXZhU2NyaXB0IGxhbmd1
YWdlLgorIEphdmFTY3JpcHQgbGFuZ3VhZ2UuIFBhc3MgYW4gTlNTdHJpbmcgKiB0byBhY2Nlc3Mg
YSBuYW1lZCBwcm9wZXJ0eS4gT3RoZXIgdmFsaWQgcHJvcGVydGllcyBpbmNsdWRlIHN5bWJvbHMs
IG51bWJlcnMsIGFuZCBzdHJpbmdpZmlhYmxlIG9iamVjdHMuIEluIG1hY09TIDEwLjEzIGFuZCBp
T1MgMTEgYW5kIGJlbG93LCAncHJvcGVydHknIHdhcyBhbiBOU1N0cmluZyAqLgogKi8KLS0gKHZv
aWQpZGVmaW5lUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHkgZGVzY3JpcHRvcjooaWQpZGVz
Y3JpcHRvcjsKKy0gKHZvaWQpZGVmaW5lUHJvcGVydHk6KGlkKXByb3BlcnR5IGRlc2NyaXB0b3I6
KGlkKWRlc2NyaXB0b3I7CisKKyNlbmRpZiAvLyAhKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMw
MCkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQogCiAvKiEKIEBtZXRob2QKQEAg
LTQwMiwxNyArNDIwLDIzIEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCiAqLwogQHBy
b3BlcnR5IChyZWFkb25seSkgQk9PTCBpc09iamVjdDsKIAorLyohCitAcHJvcGVydHkKK0BhYnN0
cmFjdCBDaGVjayBpZiBhIEpTVmFsdWUgaXMgYSBzeW1ib2wuCisqLworQHByb3BlcnR5IChyZWFk
b25seSkgQk9PTCBpc1N5bWJvbCBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goSlNDX01BQ19UQkEp
LCBpb3MoSlNDX0lPU19UQkEpKTsKKwogLyohCiBAcHJvcGVydHkKIEBhYnN0cmFjdCBDaGVjayBp
ZiBhIEpTVmFsdWUgaXMgYW4gYXJyYXkuCiAqLyAKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wg
aXNBcnJheSBOU19BVkFJTEFCTEUoMTBfMTEsIDlfMCk7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBC
T09MIGlzQXJyYXkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOwog
CiAvKiEKIEBwcm9wZXJ0eQogQGFic3RyYWN0IENoZWNrIGlmIGEgSlNWYWx1ZSBpcyBhIGRhdGUu
CiAqLyAKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaXNEYXRlIE5TX0FWQUlMQUJMRSgxMF8x
MSwgOV8wKTsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaXNEYXRlIEpTQ19BUElfQVZBSUxB
QkxFKG1hY29zeCgxMC4xMSksIGlvcyg5LjApKTsKIAogLyohCiBAbWV0aG9kCkBAIC01NjksMTMg
KzU5MywxNiBAQCBDcmVhdGUgYSBKU1ZhbHVlIGZyb20gYSBDR1JlY3QuCiBAL3RleHRibG9jawog
CiAgQW4gb2JqZWN0IGtleSBwYXNzZWQgYXMgYSBzdWJzY3JpcHQgd2lsbCBiZSBjb252ZXJ0ZWQg
dG8gYSBKYXZhU2NyaXB0IHZhbHVlLAotIGFuZCB0aGVuIHRoZSB2YWx1ZSBjb252ZXJ0ZWQgdG8g
YSBzdHJpbmcgdXNlZCBhcyBhIHByb3BlcnR5IG5hbWUuCisgYW5kIHRoZW4gdGhlIHZhbHVlIGNv
bnZlcnRlZCB0byBhIHN0cmluZyB1c2VkIGFzIGEgcHJvcGVydHkgbmFtZS4gSW4gbWFjT1MKKyAx
MC4xMyBhbmQgaU9TIDExIGFuZCBiZWxvdywgdGhlIDxjb2RlPmtleTwvY29kZT4gYXJndW1lbnQg
b2YKKyA8Y29kZT5zZXRPYmplY3Q6b2JqZWN0IGZvcktleWVkU3Vic2NyaXB0OmtleTwvY29kZT4g
d2FzIHJlc3RyaWN0ZWQgdG8gYW4KKyA8Y29kZT5OU1N0cmluZyA8TlNDb3B5aW5nPiAqPC9jb2Rl
PiBidXQgdGhhdCByZXN0cmljdGlvbiB3YXMgbmV2ZXIgdXNlZC4KICovCiBAaW50ZXJmYWNlIEpT
VmFsdWUgKFN1YnNjcmlwdFN1cHBvcnQpCiAKIC0gKEpTVmFsdWUgKilvYmplY3RGb3JLZXllZFN1
YnNjcmlwdDooaWQpa2V5OwogLSAoSlNWYWx1ZSAqKW9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoo
TlNVSW50ZWdlcilpbmRleDsKLS0gKHZvaWQpc2V0T2JqZWN0OihpZClvYmplY3QgZm9yS2V5ZWRT
dWJzY3JpcHQ6KE5TT2JqZWN0IDxOU0NvcHlpbmc+ICopa2V5OworLSAodm9pZClzZXRPYmplY3Q6
KGlkKW9iamVjdCBmb3JLZXllZFN1YnNjcmlwdDooaWQpa2V5OwogLSAodm9pZClzZXRPYmplY3Q6
KGlkKW9iamVjdCBhdEluZGV4ZWRTdWJzY3JpcHQ6KE5TVUludGVnZXIpaW5kZXg7CiAKIEBlbmQK
QEAgLTY2Miw2ICs2ODksNTMgQEAgSlNfRVhQT1JUIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IEpT
UHJvcGVydHlEZXNjcmlwdG9yU2V0S2V5OwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9IC8vIGV4dGVy
biAiQyIKICNlbmRpZgorIAorI2lmIChkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDApIHx8IChk
ZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKKworLy8gVGhlc2UgZGVjbGFyYXRpb25zIHBy
b3ZpZGUgY29tcGF0aWJpbGl0eSB3aGVuIHRhcmdldGluZyBTREtzIGZvciBsZWdhY3kgT1NzLiBJ
biBtYWNPUyAxMC4xMyBhbmQgaU9TIDExIGFuZCBiZWxvdywgJ3Byb3BlcnR5JyB3YXMgYW4gTlNT
dHJpbmcgKi4KK0BpbnRlcmZhY2UgSlNWYWx1ZSAoTGVnYWN5U0RLU3VwcG9ydCkKKworLyohCitA
bWV0aG9kCitAYWJzdHJhY3QgQWNjZXNzIGEgcHJvcGVydHkgb2YgYSBKU1ZhbHVlLgorQHJlc3Vs
dCBUaGUgSlNWYWx1ZSBmb3IgdGhlIHJlcXVlc3RlZCBwcm9wZXJ0eSBvciB0aGUgSlNWYWx1ZSA8
Y29kZT51bmRlZmluZWQ8L2NvZGU+CitpZiB0aGUgcHJvcGVydHkgZG9lcyBub3QgZXhpc3QuCisq
LworLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7CisK
Ky8qIQorQG1ldGhvZAorQGFic3RyYWN0IFNldCBhIHByb3BlcnR5IG9uIGEgSlNWYWx1ZS4KKyov
CistICh2b2lkKXNldFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9w
ZXJ0eTsKKworLyohCisgQG1ldGhvZAorIEBhYnN0cmFjdCBEZWxldGUgYSBwcm9wZXJ0eSBmcm9t
IGEgSlNWYWx1ZS4KKyBAcmVzdWx0IFlFUyBpZiBkZWxldGlvbiBpcyBzdWNjZXNzZnVsLCBOTyBv
dGhlcndpc2UuCisgKi8KKy0gKEJPT0wpZGVsZXRlUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVy
dHk7CisKKy8qIQorIEBtZXRob2QKKyBAYWJzdHJhY3QgQ2hlY2sgaWYgYSBKU1ZhbHVlIGhhcyBh
IHByb3BlcnR5LgorIEBkaXNjdXNzaW9uIFRoaXMgbWV0aG9kIGhhcyB0aGUgc2FtZSBmdW5jdGlv
biBhcyB0aGUgSmF2YVNjcmlwdCBvcGVyYXRvciA8Y29kZT5pbjwvY29kZT4uCisgQHJlc3VsdCBS
ZXR1cm5zIFlFUyBpZiBwcm9wZXJ0eSBpcyBwcmVzZW50IG9uIHRoZSB2YWx1ZS4KKyAqLworLSAo
Qk9PTCloYXNQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKworLyohCisgQG1ldGhvZAor
IEBhYnN0cmFjdCBEZWZpbmUgcHJvcGVydGllcyB3aXRoIGN1c3RvbSBkZXNjcmlwdG9ycyBvbiBK
U1ZhbHVlcy4KKyBAZGlzY3Vzc2lvbiBUaGlzIG1ldGhvZCBtYXkgYmUgdXNlZCB0byBjcmVhdGUg
YSBkYXRhIG9yIGFjY2Vzc29yIHByb3BlcnR5IG9uIGFuIG9iamVjdC4KKyBUaGlzIG1ldGhvZCBv
cGVyYXRlcyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBtZXRo
b2QgaW4gdGhlCisgSmF2YVNjcmlwdCBsYW5ndWFnZS4KKyAqLworLSAodm9pZClkZWZpbmVQcm9w
ZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eSBkZXNjcmlwdG9yOihpZClkZXNjcmlwdG9yOworCitA
ZW5kCisKKyNlbmRpZgogCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1ZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1t
CmluZGV4IGM4ZjQ5N2EwYzE0YjA0OGExMTRkMmU3NDBjZWIxOTliNjMzYzNhYmMuLmZkNTIyNmY4
NGNlNWE5ZDQyYzI3YzEwNTY2OWI0MDk3ZTRlNGNiM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVmFsdWUubW0KQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQgIkpTQ0pTVmFsdWUuaCIKICNp
bXBvcnQgIlN0cm9uZy5oIgogI2ltcG9ydCAiU3Ryb25nSW5saW5lcy5oIgorI2ltcG9ydCA8d3Rm
L0V4cGVjdGVkLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL0hhc2hT
ZXQuaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CkBAIC0xNTEsNiArMTUyLDEzIEBAIE5TU3RyaW5n
ICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXkgPSBAInNldCI7CiAgICAgcmV0dXJu
IFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6SlNWYWx1ZU1ha2VVbmRlZmluZWQoW2NvbnRl
eHQgSlNHbG9iYWxDb250ZXh0UmVmXSkgaW5Db250ZXh0OmNvbnRleHRdOwogfQogCisrIChKU1Zh
bHVlICopdmFsdWVXaXRoTmV3U3ltYm9sRnJvbURlc2NyaXB0aW9uOihOU1N0cmluZyAqKWRlc2Ny
aXB0aW9uIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAoreworICAgIEpTU3RyaW5nUmVm
IHN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZT
dHJpbmdSZWY+KGRlc2NyaXB0aW9uKSk7CisgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpT
VmFsdWVSZWY6SlNWYWx1ZU1ha2VTeW1ib2woW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwg
c3RyaW5nKSBpbkNvbnRleHQ6Y29udGV4dF07Cit9CisKKwogLSAoaWQpdG9PYmplY3QKIHsKICAg
ICByZXR1cm4gdmFsdWVUb09iamVjdChfY29udGV4dCwgbV92YWx1ZSk7CkBAIC0yMzQsNzQgKzI0
MiwxMDYgQEAgTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5RGVzY3JpcHRvclNldEtleSA9IEAi
c2V0IjsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi0tIChKU1ZhbHVlICopdmFsdWVGb3JQcm9w
ZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKK3RlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdCwg
dHlwZW5hbWUgTlNTdHJpbmdGdW5jdGlvbiwgdHlwZW5hbWUgSlNWYWx1ZUZ1bmN0aW9uLCB0eXBl
bmFtZS4uLiBUeXBlcz4KK2lubGluZSBFeHBlY3RlZDxSZXN1bHQsIEpTVmFsdWVSZWY+IHBlcmZv
cm1Qcm9wZXJ0eU9wZXJhdGlvbihOU1N0cmluZ0Z1bmN0aW9uIHN0cmluZ0Z1bmN0aW9uLCBKU1Zh
bHVlRnVuY3Rpb24ganNGdW5jdGlvbiwgSlNWYWx1ZSogdmFsdWUsIGlkIHByb3BlcnR5S2V5LCBU
eXBlcy4uLiBhcmd1bWVudHMpCiB7Ci0gICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAg
IEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChbX2NvbnRleHQgSlNHbG9iYWxD
b250ZXh0UmVmXSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7CisgICAgSlNDb250ZXh0KiBjb250ZXh0
ID0gW3ZhbHVlIGNvbnRleHRdOworICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0cjsK
KyAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoW2NvbnRleHQgSlNHbG9i
YWxDb250ZXh0UmVmXSwgW3ZhbHVlIEpTVmFsdWVSZWZdLCAmZXhjZXB0aW9uKTsKICAgICBpZiAo
ZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW19jb250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4Y2Vw
dGlvbjpleGNlcHRpb25dOworICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxKU1ZhbHVlUmVmPihl
eGNlcHRpb24pOwogCi0gICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENG
U3RyaW5nKChDRlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwotICAgIEpTVmFsdWVSZWYgcmVzdWx0
ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgb2Jq
ZWN0LCBuYW1lLCAmZXhjZXB0aW9uKTsKLSAgICBKU1N0cmluZ1JlbGVhc2UobmFtZSk7Ci0gICAg
aWYgKGV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlF
eGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICBSZXN1bHQgcmVzdWx0OworICAgIC8vIElmIGl0J3Mg
YSBOU1N0cmluZyBhbHJlYWR5LCByZWR1Y2UgaW5kaXJlY3Rpb24gYW5kIGp1c3QgcGFzcyB0aGUg
TlNTdHJpbmcuCisgICAgaWYgKFtwcm9wZXJ0eUtleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBj
bGFzc11dKSB7CisgICAgICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhD
RlN0cmluZyhyZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihwcm9wZXJ0eUtleSkpOworICAg
ICAgICByZXN1bHQgPSBzdHJpbmdGdW5jdGlvbihbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZd
LCBvYmplY3QsIG5hbWUsIGFyZ3VtZW50cy4uLiwgJmV4Y2VwdGlvbik7CisgICAgICAgIEpTU3Ry
aW5nUmVsZWFzZShuYW1lKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0ID0ganNGdW5jdGlv
bihbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIFtbSlNWYWx1ZSB2YWx1ZVdp
dGhPYmplY3Q6cHJvcGVydHlLZXkgaW5Db250ZXh0OmNvbnRleHRdIEpTVmFsdWVSZWZdLCBhcmd1
bWVudHMuLi4sICZleGNlcHRpb24pOworICAgIHJldHVybiBFeHBlY3RlZDxSZXN1bHQsIEpTVmFs
dWVSZWY+KHJlc3VsdCk7Cit9CiAKLSAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1
ZVJlZjpyZXN1bHQgaW5Db250ZXh0Ol9jb250ZXh0XTsKKyNkZWZpbmUgVVNFX05TU1RSSU5HX0ZP
Ul9QUk9QRVJUWV9LRVkgKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMwMCkgfHwgKGRlZmluZWQo
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEIDwgMTEwMDAwKQorCisjaWYgVVNFX05TU1RSSU5HX0ZPUl9QUk9QRVJUWV9L
RVkKKy0gKEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihOU1N0cmluZyAqKWtleQorI2Vsc2UK
Ky0gKEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihpZClrZXkKKyNlbmRpZgoreworICAgIGF1
dG8gcmVzdWx0ID0gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uPEpTVmFsdWVSZWY+KEpTT2JqZWN0
R2V0UHJvcGVydHksIEpTT2JqZWN0R2V0UHJvcGVydHlLZXksIHNlbGYsIGtleSk7CisgICAgaWYg
KCFyZXN1bHQpCisgICAgICAgIHJldHVybiBbX2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0
aW9uOnJlc3VsdC5lcnJvcigpXTsKKworICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1Zh
bHVlUmVmOnJlc3VsdC52YWx1ZSgpIGluQ29udGV4dDpfY29udGV4dF07CiB9CiAKLS0gKHZvaWQp
c2V0VmFsdWU6KGlkKXZhbHVlIGZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQor
I2lmIFVTRV9OU1NUUklOR19GT1JfUFJPUEVSVFlfS0VZCistICh2b2lkKXNldFZhbHVlOihpZCl2
YWx1ZSBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXkKKyNlbHNlCistICh2b2lkKXNldFZhbHVl
OihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooaWQpa2V5CisjZW5kaWYKIHsKLSAgICBKU1ZhbHVlUmVm
IGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0
KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKLSAg
ICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIFtfY29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhj
ZXB0aW9uXTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAvLyBXZSBuZWVkIFVuaXQgYnVz
aW5lc3MgYmVjYXVzZSB2b2lkIGNhbid0IGJlIGFzc2lnbmVkIHRvIGluIHBlcmZvcm1Qcm9wZXJ0
eU9wZXJhdGlvbiBhbmQgSSBkb24ndCB3YW50IHRvIGR1cGxpY2F0ZSB0aGUgY29kZS4uLgorICAg
IHVzaW5nIFVuaXQgPSBzdGQ6OnR1cGxlPD47CisgICAgYXV0byBzdHJpbmdTZXRQcm9wZXJ0eSA9
IFtdIChhdXRvLi4uIGFyZ3MpIC0+IFVuaXQgeworICAgICAgICBKU09iamVjdFNldFByb3BlcnR5
KGFyZ3MuLi4pOworICAgICAgICByZXR1cm4geyB9OworICAgIH07CiAKLSAgICBKU1N0cmluZ1Jl
ZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKXByb3BlcnR5
TmFtZSk7Ci0gICAgSlNPYmplY3RTZXRQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0
UmVmXSwgb2JqZWN0LCBuYW1lLCBvYmplY3RUb1ZhbHVlKF9jb250ZXh0LCB2YWx1ZSksIDAsICZl
eGNlcHRpb24pOwotICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKLSAgICBpZiAoZXhjZXB0aW9u
KSB7Ci0gICAgICAgIFtfY29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICBh
dXRvIGpzVmFsdWVTZXRQcm9wZXJ0eSA9IFtdIChhdXRvLi4uIGFyZ3MpIC0+IFVuaXQgeworICAg
ICAgICBKU09iamVjdFNldFByb3BlcnR5S2V5KGFyZ3MuLi4pOworICAgICAgICByZXR1cm4geyB9
OworICAgIH07CisKKyAgICBhdXRvIHJlc3VsdCA9IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbjxV
bml0PihzdHJpbmdTZXRQcm9wZXJ0eSwganNWYWx1ZVNldFByb3BlcnR5LCBzZWxmLCBrZXksIG9i
amVjdFRvVmFsdWUoX2NvbnRleHQsIHZhbHVlKSwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lKTsK
KyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBbX2NvbnRleHQgbm90aWZ5RXhjZXB0aW9uOnJl
c3VsdC5lcnJvcigpXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KIAotLSAoQk9PTClkZWxl
dGVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKKyNpZiBVU0VfTlNTVFJJTkdfRk9S
X1BST1BFUlRZX0tFWQorLSAoQk9PTClkZWxldGVQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXkKKyNl
bHNlCistIChCT09MKWRlbGV0ZVByb3BlcnR5OihpZClrZXkKKyNlbmRpZgogewotICAgIEpTVmFs
dWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9P
YmplY3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUsICZleGNlcHRpb24p
OwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbX2NvbnRleHQgYm9vbEZyb21O
b3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKLQotICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0
cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsKLSAgICBC
T09MIHJlc3VsdCA9IEpTT2JqZWN0RGVsZXRlUHJvcGVydHkoW19jb250ZXh0IEpTR2xvYmFsQ29u
dGV4dFJlZl0sIG9iamVjdCwgbmFtZSwgJmV4Y2VwdGlvbik7Ci0gICAgSlNTdHJpbmdSZWxlYXNl
KG5hbWUpOwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbX2NvbnRleHQgYm9v
bEZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKLQotICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgRXhwZWN0ZWQ8Qk9PTCwgSlNWYWx1ZVJlZj4gcmVzdWx0ID0gcGVyZm9ybVByb3BlcnR5T3Bl
cmF0aW9uPEJPT0w+KEpTT2JqZWN0RGVsZXRlUHJvcGVydHksIEpTT2JqZWN0RGVsZXRlUHJvcGVy
dHlLZXksIHNlbGYsIGtleSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBbX2Nv
bnRleHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246cmVzdWx0LmVycm9yKCldOworICAgIHJldHVy
biByZXN1bHQudmFsdWUoKTsKIH0KIAotLSAoQk9PTCloYXNQcm9wZXJ0eTooTlNTdHJpbmcgKilw
cm9wZXJ0eU5hbWUKKyNpZiBVU0VfTlNTVFJJTkdfRk9SX1BST1BFUlRZX0tFWQorLSAoQk9PTClo
YXNQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXkKKyNlbHNlCistIChCT09MKWhhc1Byb3BlcnR5Oihp
ZClrZXkKKyNlbmRpZgogewotICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBKU09i
amVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4
dFJlZl0sIG1fdmFsdWUsICZleGNlcHRpb24pOwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAg
IHJldHVybiBbX2NvbnRleHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAg
ICAvLyBUaGUgQy1hcGkgZG9lc24ndCByZXR1cm4gYW4gZXhjZXB0aW9uIHZhbHVlIGZvciB0aGUg
c3RyaW5nIHZlcnNpb24gb2YgaGFzIHByb3BlcnR5LgorICAgIGF1dG8gc3RyaW5nSGFzUHJvcGVy
dHkgPSBbXSAoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1Jl
ZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqKSAtPiBCT09MIHsKKyAgICAgICAgcmV0dXJuIEpT
T2JqZWN0SGFzUHJvcGVydHkoY3R4LCBvYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgfTsKIAot
ICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJp
bmdSZWYpcHJvcGVydHlOYW1lKTsKLSAgICBCT09MIHJlc3VsdCA9IEpTT2JqZWN0SGFzUHJvcGVy
dHkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgbmFtZSk7Ci0gICAgSlNT
dHJpbmdSZWxlYXNlKG5hbWUpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgRXhwZWN0ZWQ8Qk9P
TCwgSlNWYWx1ZVJlZj4gcmVzdWx0ID0gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uPEJPT0w+KHN0
cmluZ0hhc1Byb3BlcnR5LCBKU09iamVjdEhhc1Byb3BlcnR5S2V5LCBzZWxmLCBrZXkpOworICAg
IGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gW19jb250ZXh0IGJvb2xGcm9tTm90aWZ5RXhj
ZXB0aW9uOnJlc3VsdC5lcnJvcigpXTsKKyAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7CiB9CiAK
LS0gKHZvaWQpZGVmaW5lUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHkgZGVzY3JpcHRvcjoo
aWQpZGVzY3JpcHRvcgorI2lmIFVTRV9OU1NUUklOR19GT1JfUFJPUEVSVFlfS0VZCistICh2b2lk
KWRlZmluZVByb3BlcnR5OihOU1N0cmluZyAqKWtleSBkZXNjcmlwdG9yOihpZClkZXNjcmlwdG9y
CisjZWxzZQorLSAodm9pZClkZWZpbmVQcm9wZXJ0eTooaWQpa2V5IGRlc2NyaXB0b3I6KGlkKWRl
c2NyaXB0b3IKKyNlbmRpZgogewotICAgIFtbX2NvbnRleHQgZ2xvYmFsT2JqZWN0XVtAIk9iamVj
dCJdIGludm9rZU1ldGhvZDpAImRlZmluZVByb3BlcnR5IiB3aXRoQXJndW1lbnRzOkBbIHNlbGYs
IHByb3BlcnR5LCBkZXNjcmlwdG9yIF1dOworICAgIFtbX2NvbnRleHQgZ2xvYmFsT2JqZWN0XVtA
Ik9iamVjdCJdIGludm9rZU1ldGhvZDpAImRlZmluZVByb3BlcnR5IiB3aXRoQXJndW1lbnRzOkBb
IHNlbGYsIGtleSwgZGVzY3JpcHRvciBdXTsKIH0KIAorI3VuZGVmIFVTRV9OU1NUUklOR19GT1Jf
UFJPUEVSVFlfS0VZCisKIC0gKEpTVmFsdWUgKil2YWx1ZUF0SW5kZXg6KE5TVUludGVnZXIpaW5k
ZXgKIHsKICAgICAvLyBQcm9wZXJ0aWVzIHRoYXQgYXJlIGhpZ2hlciB0aGFuIGFuIHVuc2lnbmVk
IHZhbHVlIGNhbiBob2xkIGFyZSBjb252ZXJ0ZWQgdG8gYSBkb3VibGUgdGhlbiBpbnNlcnRlZCBh
cyBhIG5vcm1hbCBwcm9wZXJ0eS4KQEAgLTM3Miw2ICs0MTIsMTEgQEAgTlNTdHJpbmcgKiBjb25z
dCBKU1Byb3BlcnR5RGVzY3JpcHRvclNldEtleSA9IEAic2V0IjsKICAgICByZXR1cm4gSlNWYWx1
ZUlzT2JqZWN0KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlKTsKIH0KIAor
LSAoQk9PTClpc1N5bWJvbAoreworICAgIHJldHVybiBKU1ZhbHVlSXNTeW1ib2woW19jb250ZXh0
IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUpOworfQorCiAtIChCT09MKWlzQXJyYXkKIHsK
ICAgICByZXR1cm4gSlNWYWx1ZUlzQXJyYXkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0s
IG1fdmFsdWUpOwpAQCAtNTU0LDEzICs1OTksNyBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVy
dHlEZXNjcmlwdG9yU2V0S2V5ID0gQCJzZXQiOwogCiAtIChKU1ZhbHVlICopb2JqZWN0Rm9yS2V5
ZWRTdWJzY3JpcHQ6KGlkKWtleQogewotICAgIGlmICghW2tleSBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dKSB7Ci0gICAgICAgIGtleSA9IFtbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6
a2V5IGluQ29udGV4dDpfY29udGV4dF0gdG9TdHJpbmddOwotICAgICAgICBpZiAoIWtleSkKLSAg
ICAgICAgICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRleHQ6X2Nv
bnRleHRdOwotICAgIH0KLQotICAgIHJldHVybiBbc2VsZiB2YWx1ZUZvclByb3BlcnR5OihOU1N0
cmluZyAqKWtleV07CisgICAgcmV0dXJuIFtzZWxmIHZhbHVlRm9yUHJvcGVydHk6a2V5XTsKIH0K
IAogLSAoSlNWYWx1ZSAqKW9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRl
eApAQCAtNTY4LDE1ICs2MDcsOSBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlw
dG9yU2V0S2V5ID0gQCJzZXQiOwogICAgIHJldHVybiBbc2VsZiB2YWx1ZUF0SW5kZXg6aW5kZXhd
OwogfQogCi0tICh2b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGZvcktleWVkU3Vic2NyaXB0OihO
U09iamVjdCA8TlNDb3B5aW5nPiAqKWtleQorLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBm
b3JLZXllZFN1YnNjcmlwdDooaWQpa2V5CiB7Ci0gICAgaWYgKCFba2V5IGlzS2luZE9mQ2xhc3M6
W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAga2V5ID0gW1tKU1ZhbHVlIHZhbHVlV2l0aE9i
amVjdDprZXkgaW5Db250ZXh0Ol9jb250ZXh0XSB0b1N0cmluZ107Ci0gICAgICAgIGlmICgha2V5
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFtzZWxmIHNldFZhbHVlOm9iamVj
dCBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXldOworICAgIFtzZWxmIHNldFZhbHVlOm9iamVj
dCBmb3JQcm9wZXJ0eTprZXldOwogfQogCiAtICh2b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGF0
SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRleApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNWYWx1ZVJlZi5jcHAKaW5kZXggNzk1NTliZTkwNzk4NzE1MWIyZmE3ZDkzMTI2NDI0NTE4
ODgxMGZkYy4uZGFjYTBlMWI0OWRkOGQ1MTJlNTY1ZGMxM2NjY2FmMmI5N2YyMDhiNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCkBAIC04Niw2ICs4Niw4IEBAIHN0
YXRpYyBib29sIGV2ZXJub3RlSGFja05lZWRlZCgpCiAgICAgICAgIHJldHVybiBrSlNUeXBlTnVt
YmVyOwogICAgIGlmIChqc1ZhbHVlLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBrSlNUeXBl
U3RyaW5nOworICAgIGlmIChqc1ZhbHVlLmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiBrSlNU
eXBlU3ltYm9sOwogICAgIEFTU0VSVChqc1ZhbHVlLmlzT2JqZWN0KCkpOwogICAgIHJldHVybiBr
SlNUeXBlT2JqZWN0OwogfQpAQCAtMTYyLDYgKzE2NCwxOCBAQCBib29sIEpTVmFsdWVJc09iamVj
dChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQogICAgIHJldHVybiB0b0pTKGV4
ZWMsIHZhbHVlKS5pc09iamVjdCgpOwogfQogCitib29sIEpTVmFsdWVJc1N5bWJvbChKU0NvbnRl
eHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4
ZWMpOworCisgICAgcmV0dXJuIHRvSlMoZXhlYywgdmFsdWUpLmlzU3ltYm9sKCk7Cit9CisKIGJv
b2wgSlNWYWx1ZUlzQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkKIHsK
ICAgICBpZiAoIWN0eCkgewpAQCAtMzIwLDYgKzMzNCwyMiBAQCBKU1ZhbHVlUmVmIEpTVmFsdWVN
YWtlTnVtYmVyKEpTQ29udGV4dFJlZiBjdHgsIGRvdWJsZSB2YWx1ZSkKICAgICByZXR1cm4gdG9S
ZWYoZXhlYywganNOdW1iZXIocHVyaWZ5TmFOKHZhbHVlKSkpOwogfQogCitKU1ZhbHVlUmVmIEpT
VmFsdWVNYWtlU3ltYm9sKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIGRlc2NyaXB0aW9u
KQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhj
dHgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfQ0FUQ0hfU0NPUEUoZXhlYy0+dm0oKSk7CisKKyAgICBKU1N0cmluZyoganNEZXNjcmlw
dGlvbiA9IGpzU3RyaW5nKGV4ZWMsIGRlc2NyaXB0aW9uID8gZGVzY3JpcHRpb24tPnN0cmluZygp
IDogU3RyaW5nKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwor
CisgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIFN5bWJvbDo6Y3JlYXRlKGV4ZWMsIGpzRGVzY3JpcHRp
b24pKTsKK30KKwogSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZVN0cmluZyhKU0NvbnRleHRSZWYgY3R4
LCBKU1N0cmluZ1JlZiBzdHJpbmcpCiB7CiAgICAgaWYgKCFjdHgpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1ZhbHVlUmVmLmgKaW5kZXggOTgxNWRlNzgzYzBhZWUwNzNlM2E0NDhiZDBjN2Nh
ZGQ0YTk1MmMwNi4uYTQyN2Q5OGI1NThmZWM5NGMzZGJlZGVjYTNlN2IwMTZhOTRmMjFiMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmgKQEAgLTQyLDYgKzQyLDcgQEAKIEBj
b25zdGFudCAgICAga0pTVHlwZU51bWJlciAgICAgQSBwcmltaXRpdmUgbnVtYmVyIHZhbHVlLgog
QGNvbnN0YW50ICAgICBrSlNUeXBlU3RyaW5nICAgICBBIHByaW1pdGl2ZSBzdHJpbmcgdmFsdWUu
CiBAY29uc3RhbnQgICAgIGtKU1R5cGVPYmplY3QgICAgIEFuIG9iamVjdCB2YWx1ZSAobWVhbmlu
ZyB0aGF0IHRoaXMgSlNWYWx1ZVJlZiBpcyBhIEpTT2JqZWN0UmVmKS4KK0Bjb25zdGFudCAgICAg
a0pTVHlwZVN5bWJvbCAgICAgQSBwcmltaXRpdmUgc3ltYm9sIHZhbHVlLgogKi8KIHR5cGVkZWYg
ZW51bSB7CiAgICAga0pTVHlwZVVuZGVmaW5lZCwKQEAgLTQ5LDcgKzUwLDggQEAgdHlwZWRlZiBl
bnVtIHsKICAgICBrSlNUeXBlQm9vbGVhbiwKICAgICBrSlNUeXBlTnVtYmVyLAogICAgIGtKU1R5
cGVTdHJpbmcsCi0gICAga0pTVHlwZU9iamVjdAorICAgIGtKU1R5cGVPYmplY3QsCisgICAga0pT
VHlwZVN5bWJvbCBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goSlNDX01BQ19UQkEpLCBpb3MoSlND
X0lPU19UQkEpKQogfSBKU1R5cGU7CiAKIC8qIQpAQCAtODAsNyArODIsNyBAQCB0eXBlZGVmIGVu
dW0gewogICAgIGtKU1R5cGVkQXJyYXlUeXBlRmxvYXQ2NEFycmF5LAogICAgIGtKU1R5cGVkQXJy
YXlUeXBlQXJyYXlCdWZmZXIsCiAgICAga0pTVHlwZWRBcnJheVR5cGVOb25lLAotfSBKU1R5cGVk
QXJyYXlUeXBlIENGX0VOVU1fQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK30gSlNUeXBlZEFycmF5
VHlwZSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAjaWZk
ZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewpAQCAtMTQ5LDYgKzE1MSwxNiBAQCBKU19FWFBP
UlQgYm9vbCBKU1ZhbHVlSXNTdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1
ZSk7CiAqLwogSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzT2JqZWN0KEpTQ29udGV4dFJlZiBjdHgs
IEpTVmFsdWVSZWYgdmFsdWUpOwogCisvKiEKK0BmdW5jdGlvbgorQGFic3RyYWN0ICAgICAgIFRl
c3RzIHdoZXRoZXIgYSBKYXZhU2NyaXB0IHZhbHVlJ3MgdHlwZSBpcyB0aGUgc3ltYm9sIHR5cGUu
CitAcGFyYW0gY3R4ICAgICAgVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KK0BwYXJhbSB2
YWx1ZSAgICBUaGUgSlNWYWx1ZSB0byB0ZXN0LgorQHJlc3VsdCAgICAgICAgIHRydWUgaWYgdmFs
dWUncyB0eXBlIGlzIHRoZSBzeW1ib2wgdHlwZSwgb3RoZXJ3aXNlIGZhbHNlLgorKi8KK0pTX0VY
UE9SVCBib29sIEpTVmFsdWVJc1N5bWJvbChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZh
bHVlKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goSlNDX01BQ19UQkEpLCBpb3MoSlNDX0lPU19U
QkEpKTsKKworCiAvKiEKIEBmdW5jdGlvbgogQGFic3RyYWN0IFRlc3RzIHdoZXRoZXIgYSBKYXZh
U2NyaXB0IHZhbHVlIGlzIGFuIG9iamVjdCB3aXRoIGEgZ2l2ZW4gY2xhc3MgaW4gaXRzIGNsYXNz
IGNoYWluLgpAQCAtMTY2LDcgKzE3OCw3IEBAIEpTX0VYUE9SVCBib29sIEpTVmFsdWVJc09iamVj
dE9mQ2xhc3MoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNDbGFzCiBAcGFy
YW0gdmFsdWUgICAgVGhlIEpTVmFsdWUgdG8gdGVzdC4KIEByZXN1bHQgICAgICAgICB0cnVlIGlm
IHZhbHVlIGlzIGFuIGFycmF5LCBvdGhlcndpc2UgZmFsc2UuCiAqLwotSlNfRVhQT1JUIGJvb2wg
SlNWYWx1ZUlzQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkgQ0ZfQVZB
SUxBQkxFKDEwXzExLCA5XzApOworSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzQXJyYXkoSlNDb250
ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEw
LjExKSwgaW9zKDkuMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTc1LDcgKzE4Nyw3IEBAIEpT
X0VYUE9SVCBib29sIEpTVmFsdWVJc0FycmF5KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYg
dmFsdWUpIENGX0FWQUlMQUJMRSgxCiBAcGFyYW0gdmFsdWUgICAgVGhlIEpTVmFsdWUgdG8gdGVz
dC4KIEByZXN1bHQgICAgICAgICB0cnVlIGlmIHZhbHVlIGlzIGEgZGF0ZSwgb3RoZXJ3aXNlIGZh
bHNlLgogKi8KLUpTX0VYUE9SVCBib29sIEpTVmFsdWVJc0RhdGUoSlNDb250ZXh0UmVmIGN0eCwg
SlNWYWx1ZVJlZiB2YWx1ZSkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzApOworSlNfRVhQT1JUIGJv
b2wgSlNWYWx1ZUlzRGF0ZShKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CiAKIC8qIQogQGZ1bmN0aW9u
CkBAIC0xODUsNyArMTk3LDcgQEAgSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzRGF0ZShKU0NvbnRl
eHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKSBDRl9BVkFJTEFCTEUoMTAKIEBwYXJhbSBleGNl
cHRpb24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBl
eGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBh
biBleGNlcHRpb24uCiBAcmVzdWx0ICAgICAgICAgICAgIEEgdmFsdWUgb2YgdHlwZSBKU1R5cGVk
QXJyYXlUeXBlIHRoYXQgaWRlbnRpZmllcyB2YWx1ZSdzIFR5cGVkIEFycmF5IHR5cGUsIG9yIGtK
U1R5cGVkQXJyYXlUeXBlTm9uZSBpZiB0aGUgdmFsdWUgaXMgbm90IGEgVHlwZWQgQXJyYXkgb2Jq
ZWN0LgogICovCi1KU19FWFBPUlQgSlNUeXBlZEFycmF5VHlwZSBKU1ZhbHVlR2V0VHlwZWRBcnJh
eVR5cGUoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTVHlwZWRBcnJh
eVR5cGUgSlNWYWx1ZUdldFR5cGVkQXJyYXlUeXBlKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVS
ZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyogQ29tcGFyaW5nIHZhbHVlcyAqLwogCkBAIC0yNTcs
NiArMjY5LDE1IEBAIEpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlQm9vbGVhbihKU0Nv
bnRleHRSZWYgY3R4LCBib29sIGJvb2xlYW4pOwogKi8KIEpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpT
VmFsdWVNYWtlTnVtYmVyKEpTQ29udGV4dFJlZiBjdHgsIGRvdWJsZSBudW1iZXIpOwogCisvKiEK
K0BmdW5jdGlvbgorQGFic3RyYWN0ICAgICAgICAgICAgQ3JlYXRlcyBhIEphdmFTY3JpcHQgdmFs
dWUgb2YgdGhlIHN5bWJvbCB0eXBlLgorQHBhcmFtIGN0eCAgICAgICAgICAgVGhlIGV4ZWN1dGlv
biBjb250ZXh0IHRvIHVzZS4KK0BwYXJhbSBkZXNjcmlwdGlvbiAgIEEgZGVzY3JpcHRpb24gb2Yg
dGhlIG5ld2x5IGNyZWF0ZWQgc3ltYm9sIHZhbHVlLgorQHJlc3VsdCAgICAgICAgICAgICAgQSB1
bmlxdWUgSlNWYWx1ZSBvZiB0aGUgc3ltYm9sIHR5cGUsIHdob3NlIGRlc2NyaXB0aW9uIG1hdGNo
ZXMgdGhlIG9uZSBwcm92aWRlZC4KKyovCitKU19FWFBPUlQgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFr
ZVN5bWJvbChKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBkZXNjcmlwdGlvbikgSlNDX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KEpTQ19NQUNfVEJBKSwgaW9zKEpTQ19JT1NfVEJBKSk7CisKIC8q
IQogQGZ1bmN0aW9uCiBAYWJzdHJhY3QgICAgICAgQ3JlYXRlcyBhIEphdmFTY3JpcHQgdmFsdWUg
b2YgdGhlIHN0cmluZyB0eXBlLgpAQCAtMjc2LDcgKzI5Nyw3IEBAIEpTX0VYUE9SVCBKU1ZhbHVl
UmVmIEpTVmFsdWVNYWtlU3RyaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHN0cmlu
Zyk7CiAgQHBhcmFtIHN0cmluZyAgIFRoZSBKU1N0cmluZyBjb250YWluaW5nIHRoZSBKU09OIHN0
cmluZyB0byBiZSBwYXJzZWQuCiAgQHJlc3VsdCAgICAgICAgIEEgSlNWYWx1ZSBjb250YWluaW5n
IHRoZSBwYXJzZWQgdmFsdWUsIG9yIE5VTEwgaWYgdGhlIGlucHV0IGlzIGludmFsaWQuCiAgKi8K
LUpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlRnJvbUpTT05TdHJpbmcoSlNDb250ZXh0
UmVmIGN0eCwgSlNTdHJpbmdSZWYgc3RyaW5nKSBDRl9BVkFJTEFCTEUoMTBfNywgN18wKTsKK0pT
X0VYUE9SVCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlRnJvbUpTT05TdHJpbmcoSlNDb250ZXh0UmVm
IGN0eCwgSlNTdHJpbmdSZWYgc3RyaW5nKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNyks
IGlvcyg3LjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC0yODcsNyArMzA4LDcgQEAgSlNfRVhQ
T1JUIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VGcm9tSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4
LCBKU1N0cmluZ1JlZiBzdHIKICBAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFs
dWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBp
ZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1bHQgICAgICAg
ICBBIEpTU3RyaW5nIHdpdGggdGhlIHJlc3VsdCBvZiBzZXJpYWxpemF0aW9uLCBvciBOVUxMIGlm
IGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uCiAgKi8KLUpTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU1Zh
bHVlQ3JlYXRlSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlLCB1
bnNpZ25lZCBpbmRlbnQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzcs
IDdfMCk7CitKU19FWFBPUlQgSlNTdHJpbmdSZWYgSlNWYWx1ZUNyZWF0ZUpTT05TdHJpbmcoSlND
b250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgdW5zaWduZWQgaW5kZW50LCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC43KSwgaW9zKDcuMCkp
OwogCiAvKiBDb252ZXJ0aW5nIHRvIHByaW1pdGl2ZSB2YWx1ZXMgKi8KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUuaAppbmRleCBlOWM3NWRhMDc3MmM1NTQ0
MDE5YTRhY2RmNGM5MDU1YzRjZWY0NDdjLi43ZDJmMGE3MDdjNTlhY2RiZDdhYjFiNTBjZjQ3MjIy
N2IyYzA1MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVh
bE1hY2hpbmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hp
bmUuaApAQCAtMzksNyArMzksNyBAQAogIG9mIHRoZSB0aHJlYWQgaXQgd2FzIGluaXRpYWxpemVk
IG9uLiBDdXJyZW50bHksIHRoZXJlIGlzIG5vIEFQSSB0byBjaGFuZ2UgYQogIEpTVmlydHVhbE1h
Y2hpbmUncyBydW4gbG9vcCBvbmNlIGl0IGhhcyBiZWVuIGluaXRpYWxpemVkLgogKi8KLU5TX0NM
QVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCitKU0NfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeCgxMC45
KSwgaW9zKDcuMCkpCiBAaW50ZXJmYWNlIEpTVmlydHVhbE1hY2hpbmUgOiBOU09iamVjdAogCiAv
KiEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvV2ViS2l0QXZhaWxhYmls
aXR5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL1dlYktpdEF2YWlsYWJpbGl0eS5oCmlu
ZGV4IDgyMjc1MjAzZGM5ODAxODMzMWE5MWJiOTViOWQ2ZGIxNmU1OWY5YWEuLjBmNmFmYjZiMWRi
ZDYxOTgxZGVkZWQwYTFlNWIyNGM4ZmRjYjUzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvV2ViS2l0QXZhaWxhYmlsaXR5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9XZWJLaXRBdmFpbGFiaWxpdHkuaApAQCAtNjksMTUgKzY5LDEyIEBACiAjZW5kaWYg
LyogIVRBUkdFVF9PU19JUEhPTkUgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8
IDEwMTEwMCAqLwogCiAjaWYgZGVmaW5lZChCVUlMRElOR19HVEtfXykKLSN1bmRlZiBDRl9BVkFJ
TEFCTEUKLSNkZWZpbmUgQ0ZfQVZBSUxBQkxFKF9tYWMsIF9pb3MpCi0jdW5kZWYgQ0ZfRU5VTV9B
VkFJTEFCTEUKLSNkZWZpbmUgQ0ZfRU5VTV9BVkFJTEFCTEUoX21hYywgX2lvcykKKyN1bmRlZiBK
U0NfQVBJX0FWQUlMQUJMRQorI2RlZmluZSBKU0NfQVBJX0FWQUlMQUJMRSguLi4pCiAjZW5kaWYK
IAogI2Vsc2UKLSNkZWZpbmUgQ0ZfQVZBSUxBQkxFKF9tYWMsIF9pb3MpCi0jZGVmaW5lIENGX0VO
VU1fQVZBSUxBQkxFKF9tYWMsIF9pb3MpCisjZGVmaW5lIEpTQ19BUElfQVZBSUxBQkxFKC4uLikK
ICNlbmRpZgogCiAjZW5kaWYgLyogX19XZWJLaXRBdmFpbGFiaWxpdHlfXyAqLwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9DdXJyZW50VGhpc0luc2lkZUJsb2Nr
R2V0dGVyVGVzdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VycmVudFRo
aXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0KaW5kZXggNTMxODhmYmE4OGY5NTQyN2M4YWU5MzM5
YWFjODhkMGM2OGExN2ViMS4uYmQ3ZThhNjg2MDdlNWY4ZGQ3OGQ5NDZiZGRhNzRhNjFkMjVmN2Uw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9DdXJyZW50VGhp
c0luc2lkZUJsb2NrR2V0dGVyVGVzdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL0N1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lm1tCkBAIC0yMyw2ICsyMyw3
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkN1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lmgi
CiAKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy9DdXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuYyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmMKaW5k
ZXggYWM1NDcxYTY3NDFiZmY5M2M3MDBiZjNiM2FhYzZlZDM4NzQ5ZjBiZi4uOWZmZTIzM2Y0Yjc5
NmY1YTBiOTViMzc0YTQ4M2IwMTRlZDViZGQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy9DdXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuYworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0N1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVzdC5j
CkBAIC0yMyw2ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJDdXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuaCIKIAogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmUHJpdmF0ZS5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9EYXRlVGVzdHMubW0gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL0RhdGVUZXN0cy5tbQppbmRleCAyYmRhM2FkYTZiMTU4ZTAxMDhh
ZWM1ZjQyZTc2NTM5NzMwZWMyZWQ5Li42NjUyMTc3ZGU0MTdiMTJlZTk0ZGU4ODNiOGZiMGJkNzA5
ZGQ2NzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0RhdGVU
ZXN0cy5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0RhdGVUZXN0cy5t
bQpAQCAtMjMsNiArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKKyNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRGF0ZVRlc3RzLmgiCiAjaW1wb3J0
IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy9KU0V4cG9ydFRlc3RzLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS90ZXN0cy9KU0V4cG9ydFRlc3RzLm1tCmluZGV4IDFjZWM5Mzk3OWM0MTZmNGMwZjA0OTA1
ZWU3NDc2ZTc4NjRkODQyNTIuLmRmZGM5NWY0N2JjNzc1YjA4YjM2NjczZDBiYmJmZTZiY2UzNDFi
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNFeHBvcnRU
ZXN0cy5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTRXhwb3J0VGVz
dHMubW0KQEAgLTIzLDYgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCisjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkpTRXhwb3J0VGVzdHMuaCIK
IAogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL0pTTm9kZS5jIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy9KU05vZGUuYwppbmRleCBkMGEwZGMzZWM3MjM3MjU3ZmExODBkMDUxNGY3NGM2YWQyZTRiNWI3
Li5iYzAwNDBhZTZiYTQwOTg1MzgzOGNhZWFkNmEyMzg0ZWM5OTkwMDQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZS5jCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNOb2RlLmMKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAogICovCiAKLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlICJjb25m
aWcuaCIKIAogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNOb2RlTGlzdC5jIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU05vZGVMaXN0LmMKaW5kZXggZjAzN2Uw
OTRhMDllMWEyMjYwNDRlZWQxZjIzZDBhNTE4NjFhM2Y0Yi4uOTlhMzI5NTE4ZTZhOWExY2ZiMTI2
NzY0NzM5YTBiNjljZmE1ZDQwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy9KU05vZGVMaXN0LmMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy9KU05vZGVMaXN0LmMKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAK
LSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1
ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9kZS5jIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS90ZXN0cy9Ob2RlLmMKaW5kZXggZGI2ODdlOTUyZjFhOWQ4YzEzNGI5MDY3N2QyOWE2NDA2
ZDhkYjFhMi4uOGY3ZDA2YjJhYTRhZGUyNjlkNjFlZmM2MWMwMTg0Y2NjMzE5NWEwNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Ob2RlLmMKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Ob2RlLmMKQEAgLTIzLDcgKzIzLDkgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAogICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOb2RlLmgi
CisKICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Ob2RlTGlzdC5jIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Ob2RlTGlzdC5jCmluZGV4IDY5ZjRjZDVjNDg3MzEyYmQ2
Mzk5NjM0ZmIwNjg0YTEyMjY2NGRjMTguLjIyZDM4N2MwZDQyMjZmYmFkMTE5N2M2NDgzMWNkNTdh
ZjMxYWZkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9k
ZUxpc3QuYworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL05vZGVMaXN0LmMK
QEAgLTIzLDYgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKKyNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogCiAjaW5jbHVkZSA8c3RkbGliLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL21pbmlkb20uYyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvbWluaWRvbS5jCmluZGV4IDAyYjQxYTljN2Y5ZGEx
MTNiMDAzZDRmOTE5YTQyMDhkMzg5Yjc4YmQuLjQxZjE4Y2RmNzI5MDQzNjkwY2ZlNzczYmE0MGQ4
YjViNDRjYTcwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
bWluaWRvbS5jCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvbWluaWRvbS5j
CkBAIC0yNCw3ICsyNCw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJKU0NvbnRleHRS
ZWYuaCIKICNpbmNsdWRlICJKU05vZGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy90ZXN0YXBpLmMKaW5kZXggN2JlY2RmZTA0MTE1YmY5NDg5ZWY4NDE5N2MxNjcxYzViODNiYTRl
Mi4uODZkMWMyNWMyN2U5NTJkNjFhYjllNDFiZTE0NTc0MTBmYmM0OGY0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgImNv
bmZpZy5oIgogCiAjaWYgVVNFKENGKQogI2luY2x1ZGUgIkphdmFTY3JpcHRDb3JlLmgiCkBAIC02
Niw2ICs2Niw4IEBACiB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKHZvaWQpOwogI2VuZGlmCiAKK2lu
dCB0ZXN0Q0FQSVZpYUNwcCh2b2lkKTsKKwogYm9vbCBhc3NlcnRUcnVlKGJvb2wgdmFsdWUsIGNv
bnN0IGNoYXIqIG1lc3NhZ2UpOwogCiBzdGF0aWMgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQ7
CkBAIC0xMzYxLDYgKzEzNjMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQog
I2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgdGVzdE9iamVjdGl2ZUNBUEkoKTsKICNlbmRp
ZgorICAgIFJFTEVBU0VfQVNTRVJUKCF0ZXN0Q0FQSVZpYUNwcCgpKTsKIAogICAgIGNvbnN0IGNo
YXIgKnNjcmlwdFBhdGggPSAidGVzdGFwaS5qcyI7CiAgICAgaWYgKGFyZ2MgPiAxKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMzk5
YzJkYWQ1ODZhZjhiOTE3Yzc2NDhjM2E5MjQzMTY4ZjYwMGNkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmNwcApAQCAtMCwwICsxLDM4
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkFQSUNh
c3QuaCIKKyNpbmNsdWRlICJIZWFwQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSmF2YVNjcmlwdENv
cmUuaCIKKworI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CisjaW5jbHVkZSA8d3RmL0V4cGVjdGVk
Lmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCitleHRlcm4gIkMiIGludCB0ZXN0Q0FQSVZpYUNwcCgpOworCitjbGFzcyBBUElTdHJpbmcg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFQSVN0cmluZyk7CitwdWJsaWM6CisKKyAgICBB
UElTdHJpbmcoY29uc3QgY2hhciogc3RyaW5nKQorICAgICAgICA6IG1fc3RyaW5nKEpTU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKHN0cmluZykpCisgICAgeworICAgIH0KKworICAgIH5BUElT
dHJpbmcoKQorICAgIHsKKyAgICAgICAgSlNTdHJpbmdSZWxlYXNlKG1fc3RyaW5nKTsKKyAgICB9
CisKKyAgICBvcGVyYXRvciBKU1N0cmluZ1JlZigpIHsgcmV0dXJuIG1fc3RyaW5nOyB9CisKK3By
aXZhdGU6CisgICAgSlNTdHJpbmdSZWYgbV9zdHJpbmc7Cit9OworCitjbGFzcyBBUElDb250ZXh0
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBUElDb250ZXh0KTsKK3B1YmxpYzoKKworICAg
IEFQSUNvbnRleHQoKQorICAgICAgICA6IG1fY29udGV4dChKU0dsb2JhbENvbnRleHRDcmVhdGUo
bnVsbHB0cikpCisgICAgeworICAgICAgICBBUElTdHJpbmcgcHJpbnQoInByaW50Iik7CisgICAg
ICAgIEpTT2JqZWN0UmVmIHByaW50RnVuY3Rpb24gPSBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhD
YWxsYmFjayhtX2NvbnRleHQsIHByaW50LCBbXSAoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RS
ZWYsIEpTT2JqZWN0UmVmLCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSwgSlNWYWx1ZVJlZiopIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBhcmd1bWVudENvdW50OyBpKyspCisgICAgICAgICAgICAgICAgZGF0YUxvZyh0b0pT
KHRvSlMoY3R4KSwgYXJndW1lbnRzW2ldKSk7CisgICAgICAgICAgICBkYXRhTG9nTG4oKTsKKyAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworICAgICAgICB9KTsK
KworICAgICAgICBKU09iamVjdFNldFByb3BlcnR5KG1fY29udGV4dCwgSlNDb250ZXh0R2V0R2xv
YmFsT2JqZWN0KG1fY29udGV4dCksIHByaW50LCBwcmludEZ1bmN0aW9uLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZU5vbmUsIG51bGxwdHIpOworICAgIH0KKworICAgIH5BUElDb250ZXh0KCkKKyAgICB7
CisgICAgICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2UobV9jb250ZXh0KTsKKyAgICB9CisKKyAg
ICBvcGVyYXRvciBKU0dsb2JhbENvbnRleHRSZWYoKSB7IHJldHVybiBtX2NvbnRleHQ7IH0KKwor
cHJpdmF0ZToKKyAgICBKU0dsb2JhbENvbnRleHRSZWYgbV9jb250ZXh0OworfTsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4KK2NsYXNzIEFQSVZlY3RvciA6IHByb3RlY3RlZCBWZWN0b3I8VD4gewor
ICAgIHVzaW5nIEJhc2UgPSBWZWN0b3I8VD47CitwdWJsaWM6CisgICAgQVBJVmVjdG9yKEFQSUNv
bnRleHQmIGNvbnRleHQpCisgICAgICAgIDogQmFzZSgpCisgICAgICAgICwgbV9jb250ZXh0KGNv
bnRleHQpCisgICAgeworICAgIH0KKworICAgIH5BUElWZWN0b3IoKQorICAgIHsKKyAgICAgICAg
Zm9yIChhdXRvJiB2YWx1ZSA6ICp0aGlzKQorICAgICAgICAgICAgSlNWYWx1ZVVucHJvdGVjdCht
X2NvbnRleHQsIHZhbHVlKTsKKyAgICB9CisKKyAgICB1c2luZyBWZWN0b3I8VD46Om9wZXJhdG9y
W107CisgICAgdXNpbmcgVmVjdG9yPFQ+OjpzaXplOworICAgIHVzaW5nIFZlY3RvcjxUPjo6YmVn
aW47CisgICAgdXNpbmcgVmVjdG9yPFQ+OjplbmQ7CisgICAgdXNpbmcgdHlwZW5hbWUgVmVjdG9y
PFQ+OjppdGVyYXRvcjsKKworICAgIHZvaWQgYXBwZW5kKFQgdmFsdWUpCisgICAgeworICAgICAg
ICBKU1ZhbHVlUHJvdGVjdChtX2NvbnRleHQsIHZhbHVlKTsKKyAgICAgICAgQmFzZTo6YXBwZW5k
KFdURk1vdmUodmFsdWUpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQVBJQ29udGV4dCYgbV9j
b250ZXh0OworfTsKKworY2xhc3MgVGVzdEFQSSB7CitwdWJsaWM6CisgICAgaW50IHJ1bigpOwor
cHJpdmF0ZToKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ3M+CisgICAgYm9vbCBj
aGVjayhib29sIGNvbmRpdGlvbiwgU3RyaW5ncy4uLiBtZXNzYWdlKTsKKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEpTRnVuY3RvciwgdHlwZW5hbWUgQVBJRnVuY3Rvcj4KKyAgICB2b2lkIGNoZWNr
SlNBbmRBUElNYXRjaChjb25zdCBKU0Z1bmN0b3ImLCBjb25zdCBBUElGdW5jdG9yJiwgY29uc3Qg
Y2hhciogZGVzY3JpcHRpb24pOworCisgICAgLy8gSGVscGVyIG1ldGhvZHMuCisgICAgdXNpbmcg
U2NyaXB0UmVzdWx0ID0gRXhwZWN0ZWQ8SlNWYWx1ZVJlZiwgSlNWYWx1ZVJlZj47CisgICAgU2Ny
aXB0UmVzdWx0IGV2YWx1YXRlU2NyaXB0KGNvbnN0IGNoYXIqIHNjcmlwdCwgSlNPYmplY3RSZWYg
dGhpc09iamVjdCA9IG51bGxwdHIpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50
VHlwZXM+CisgICAgU2NyaXB0UmVzdWx0IGNhbGxGdW5jdGlvbihjb25zdCBjaGFyKiBmdW5jdGlv
blNvdXJjZSwgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMpOworICAgIHRlbXBsYXRlPHR5cGVu
YW1lLi4uIEFyZ3VtZW50VHlwZXM+CisgICAgYm9vbCBmdW5jdGlvblJldHVybnNUcnVlKGNvbnN0
IGNoYXIqIGZ1bmN0aW9uU291cmNlLCBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cyk7CisKKyAg
ICAvLyBXYXlzIHRvIG1ha2Ugc2V0cyBvZiBpbnRlcmVzdGluZyB0aGluZ3MuCisgICAgQVBJVmVj
dG9yPEpTT2JqZWN0UmVmPiBpbnRlcmVzdGluZ09iamVjdHMoKTsKKyAgICBBUElWZWN0b3I8SlNW
YWx1ZVJlZj4gaW50ZXJlc3RpbmdLZXlzKCk7CisKKyAgICBpbnQgZmFpbGVkIHsgMCB9OworICAg
IEFQSUNvbnRleHQgY29udGV4dDsKK307CisKK2ludCB0ZXN0Q0FQSVZpYUNwcCgpCit7CisgICAg
VGVzdEFQSSB0ZXN0ZXI7CisgICAgcmV0dXJuIHRlc3Rlci5ydW4oKTsKK30KKworVGVzdEFQSTo6
U2NyaXB0UmVzdWx0IFRlc3RBUEk6OmV2YWx1YXRlU2NyaXB0KGNvbnN0IGNoYXIqIHNjcmlwdCwg
SlNPYmplY3RSZWYgdGhpc09iamVjdCkKK3sKKyAgICBBUElTdHJpbmcgc2NyaXB0QVBJU3RyaW5n
KHNjcmlwdCk7CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOworCisgICAgSlNW
YWx1ZVJlZiByZXN1bHQgPSBKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIHNjcmlwdEFQSVN0cmlu
ZywgdGhpc09iamVjdCwgbnVsbHB0ciwgMCwgJmV4Y2VwdGlvbik7CisgICAgaWYgKGV4Y2VwdGlv
bikKKyAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8SlNWYWx1ZVJlZj4oZXhjZXB0aW9uKTsKKyAg
ICByZXR1cm4gU2NyaXB0UmVzdWx0KHJlc3VsdCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4u
IEFyZ3VtZW50VHlwZXM+CitUZXN0QVBJOjpTY3JpcHRSZXN1bHQgVGVzdEFQSTo6Y2FsbEZ1bmN0
aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uU291cmNlLCBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50
cykKK3sKKyAgICBKU1ZhbHVlUmVmIGZ1bmN0aW9uOworICAgIHsKKyAgICAgICAgU2NyaXB0UmVz
dWx0IGZ1bmN0aW9uUmVzdWx0ID0gZXZhbHVhdGVTY3JpcHQoZnVuY3Rpb25Tb3VyY2UpOworICAg
ICAgICBpZiAoIWZ1bmN0aW9uUmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uUmVz
dWx0OworICAgICAgICBmdW5jdGlvbiA9IGZ1bmN0aW9uUmVzdWx0LnZhbHVlKCk7CisgICAgfQor
CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOworICAgIGlmIChKU09iamVjdFJl
ZiBmdW5jdGlvbk9iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBmdW5jdGlvbiwgJmV4
Y2VwdGlvbikpIHsKKyAgICAgICAgSlNWYWx1ZVJlZiBhcmdzW3NpemVvZi4uLihhcmd1bWVudHMp
XSB7IGFyZ3VtZW50cy4uLiB9OworICAgICAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpTT2JqZWN0
Q2FsbEFzRnVuY3Rpb24oY29udGV4dCwgZnVuY3Rpb25PYmplY3QsIGZ1bmN0aW9uT2JqZWN0LCBz
aXplb2YuLi4oYXJndW1lbnRzKSwgYXJncywgJmV4Y2VwdGlvbik7CisgICAgICAgIGlmICghZXhj
ZXB0aW9uKQorICAgICAgICAgICAgcmV0dXJuIFNjcmlwdFJlc3VsdChyZXN1bHQpOworICAgIH0K
KworICAgIFJFTEVBU0VfQVNTRVJUKGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8
SlNWYWx1ZVJlZj4oZXhjZXB0aW9uKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1l
bnRUeXBlcz4KK2Jvb2wgVGVzdEFQSTo6ZnVuY3Rpb25SZXR1cm5zVHJ1ZShjb25zdCBjaGFyKiBm
dW5jdGlvblNvdXJjZSwgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMpCit7CisgICAgSlNWYWx1
ZVJlZiB0cnVlVmFsdWUgPSBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgdHJ1ZSk7CisgICAg
U2NyaXB0UmVzdWx0IHJlc3VsdCA9IGNhbGxGdW5jdGlvbihmdW5jdGlvblNvdXJjZSwgYXJndW1l
bnRzLi4uKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiBKU1ZhbHVlSXNTdHJpY3RFcXVhbChjb250ZXh0LCB0cnVlVmFsdWUsIHJlc3VsdC52YWx1
ZSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUuLi4gU3RyaW5ncz4KK2Jvb2wgVGVzdEFQSTo6
Y2hlY2soYm9vbCBjb25kaXRpb24sIFN0cmluZ3MuLi4gbWVzc2FnZXMpCit7CisgICAgaWYgKCFj
b25kaXRpb24pIHsKKyAgICAgICAgZGF0YUxvZ0xuKG1lc3NhZ2VzLi4uLCAiOiBGQUlMRUQiKTsK
KyAgICAgICAgZmFpbGVkKys7CisgICAgfSBlbHNlCisgICAgICAgIGRhdGFMb2dMbihtZXNzYWdl
cy4uLiwgIjogUEFTU0VEIik7CisKKyAgICByZXR1cm4gY29uZGl0aW9uOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBKU0Z1bmN0b3IsIHR5cGVuYW1lIEFQSUZ1bmN0b3I+Cit2b2lkIFRlc3RBUEk6
OmNoZWNrSlNBbmRBUElNYXRjaChjb25zdCBKU0Z1bmN0b3ImIGpzRnVuY3RvciwgY29uc3QgQVBJ
RnVuY3RvciYgYXBpRnVuY3RvciwgY29uc3QgY2hhciogZGVzY3JpcHRpb24pCit7CisgICAgSlNW
YWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOworICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gYXBp
RnVuY3RvcigmZXhjZXB0aW9uKTsKKyAgICBTY3JpcHRSZXN1bHQganNSZXN1bHQgPSBqc0Z1bmN0
b3IoKTsKKyAgICBpZiAoIWpzUmVzdWx0KSB7CisgICAgICAgIGNoZWNrKGV4Y2VwdGlvbiwgIkpT
IGFuZCBBUEkgY2FsbHMgc2hvdWxkIGJvdGggdGhyb3cgYW4gZXhjZXB0aW9uIHdoaWxlICIsIGRl
c2NyaXB0aW9uKTsKKyAgICAgICAgY2hlY2soZnVuY3Rpb25SZXR1cm5zVHJ1ZSgiKGZ1bmN0aW9u
KGEsIGIpIHsgcmV0dXJuIGEuY29uc3RydWN0b3IgPT09IGIuY29uc3RydWN0b3I7IH0pIiwgZXhj
ZXB0aW9uLCBqc1Jlc3VsdC5lcnJvcigpKSwgIkpTIGFuZCBBUEkgY2FsbHMgc2hvdWxkIGJvdGgg
dGhyb3cgdGhlIHNhbWUgZXhjZXB0aW9uIHdoaWxlICIsIGRlc2NyaXB0aW9uKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBjaGVjayghZXhjZXB0aW9uLCAiSlMgYW5kIEFQSSBjYWxscyBzaG91bGQg
Ym90aCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uIHdoaWxlICIsIGRlc2NyaXB0aW9uKTsKKyAgICAg
ICAgY2hlY2soSlNWYWx1ZUlzU3RyaWN0RXF1YWwoY29udGV4dCwgcmVzdWx0LCBqc1Jlc3VsdC52
YWx1ZSgpKSwgIkpTIHJlc3VsdCBhbmQgQVBJIGNhbGxzIHNob3VsZCByZXR1cm4gdGhlIHNhbWUg
dmFsdWUgd2hpbGUgIiwgZGVzY3JpcHRpb24pOworICAgIH0KK30KKworQVBJVmVjdG9yPEpTT2Jq
ZWN0UmVmPiBUZXN0QVBJOjppbnRlcmVzdGluZ09iamVjdHMoKQoreworICAgIEFQSVZlY3RvcjxK
U09iamVjdFJlZj4gcmVzdWx0KGNvbnRleHQpOworICAgIEpTT2JqZWN0UmVmIGFycmF5ID0gSlNW
YWx1ZVRvT2JqZWN0KGNvbnRleHQsIGV2YWx1YXRlU2NyaXB0KAorICAgICAgICAiW3t9LCBbXSwg
eyBbU3ltYm9sLml0ZXJhdG9yXTogMSB9LCBuZXcgRGF0ZSgpLCBuZXcgU3RyaW5nKCdzdHInKSwg
bmV3IE1hcCgpLCBuZXcgU2V0KCksIG5ldyBXZWFrTWFwKCksIG5ldyBXZWFrU2V0KCksIG5ldyBF
cnJvcigpLCBuZXcgTnVtYmVyKDQyKSwgbmV3IEJvb2xlYW4oKSwgeyBnZXQgbGVuZ3RoKCkgeyB0
aHJvdyBuZXcgRXJyb3IoKTsgfSB9XTsiKS52YWx1ZSgpLCBudWxscHRyKTsKKworICAgIEFQSVN0
cmluZyBsZW5ndGhTdHJpbmcoImxlbmd0aCIpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IEpTVmFs
dWVUb051bWJlcihjb250ZXh0LCBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGFycmF5LCBs
ZW5ndGhTdHJpbmcsIG51bGxwdHIpLCBudWxscHRyKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1
ZVRvT2JqZWN0KGNvbnRleHQsIEpTT2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIGFy
cmF5LCBpLCBudWxscHRyKSwgbnVsbHB0cik7CisgICAgICAgIEFTU0VSVChvYmplY3QpOworICAg
ICAgICByZXN1bHQuYXBwZW5kKG9iamVjdCk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworQVBJVmVjdG9yPEpTVmFsdWVSZWY+IFRlc3RBUEk6OmludGVyZXN0aW5nS2V5cygpCit7
CisgICAgQVBJVmVjdG9yPEpTVmFsdWVSZWY+IHJlc3VsdChjb250ZXh0KTsKKyAgICBKU09iamVj
dFJlZiBhcnJheSA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBldmFsdWF0ZVNjcmlwdCgiW3t9
LCBbXSwgMSwgU3ltYm9sLml0ZXJhdG9yLCAnbGVuZ3RoJ10iKS52YWx1ZSgpLCBudWxscHRyKTsK
KworICAgIEFQSVN0cmluZyBsZW5ndGhTdHJpbmcoImxlbmd0aCIpOworICAgIHVuc2lnbmVkIGxl
bmd0aCA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBKU09iamVjdEdldFByb3BlcnR5KGNvbnRl
eHQsIGFycmF5LCBsZW5ndGhTdHJpbmcsIG51bGxwdHIpLCBudWxscHRyKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgSlNWYWx1ZVJlZiB2YWx1
ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIGFycmF5LCBpLCBudWxscHRy
KTsKKyAgICAgICAgQVNTRVJUKHZhbHVlKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCh2YWx1ZSk7
CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW50IFRlc3RBUEk6OnJ1bigpCit7
CisgICAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKKyAgICBkYXRhTG9nTG4oIlN0YXJ0aW5nIEMtQVBJ
IHRlc3RzIGluIEMrKyIpOworICAgIGNvbnN0IGNoYXIqIGlzU3ltYm9sRnVuY3Rpb24gPSAiKGZ1
bmN0aW9uIGlzU3ltYm9sKHN5bWJvbCkgeyByZXR1cm4gdHlwZW9mKHN5bWJvbCkgPT09ICdzeW1i
b2wnOyB9KSI7CisgICAgY29uc3QgY2hhciogZ2V0RnVuY3Rpb24gPSAiKGZ1bmN0aW9uIGdldChv
YmplY3QsIGtleSkgeyByZXR1cm4gb2JqZWN0W2tleV07IH0pIjsKKyAgICBjb25zdCBjaGFyKiBz
ZXRGdW5jdGlvbiA9ICIoZnVuY3Rpb24gc2V0KG9iamVjdCwga2V5LCB2YWx1ZSkgeyBvYmplY3Rb
a2V5XSA9IHZhbHVlOyB9KSI7CisgICAgY29uc3QgY2hhciogaGFzRnVuY3Rpb24gPSAiKGZ1bmN0
aW9uIGhhcyhvYmplY3QsIGtleSkgeyByZXR1cm4ga2V5IGluIG9iamVjdDsgfSkiOworICAgIGNv
bnN0IGNoYXIqIGRlbGV0ZUZ1bmN0aW9uID0gIihmdW5jdGlvbiBkZWwob2JqZWN0LCBrZXkpIHsg
cmV0dXJuIGRlbGV0ZSBvYmplY3Rba2V5XTsgfSkiOworCisgICAgeworICAgICAgICAvLyBDYW4n
dCBjYWxsIFN5bWJvbCBhcyBhIGNvbnN0cnVjdG9yIHNpbmNlIGl0J3Mgbm90IHN1YmNsYXNzYWJs
ZS4KKyAgICAgICAgYXV0byByZXN1bHQgPSBldmFsdWF0ZVNjcmlwdCgiU3ltYm9sKCdkb3BlJyk7
Iik7CisgICAgICAgIGNoZWNrKEpTVmFsdWVHZXRUeXBlKGNvbnRleHQsIHJlc3VsdC52YWx1ZSgp
KSA9PSBrSlNUeXBlU3ltYm9sLCAiZG9wZSBnZXQgdHlwZSBpcyBhIHN5bWJvbCIpOworICAgICAg
ICBjaGVjayhKU1ZhbHVlSXNTeW1ib2woY29udGV4dCwgcmVzdWx0LnZhbHVlKCkpLCAiZG9wZSBp
cyBhIHN5bWJvbCIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQVBJU3RyaW5nIGRlc2NyaXB0
aW9uKCJkb3BlIik7CisgICAgICAgIEpTVmFsdWVSZWYgc3ltYm9sID0gSlNWYWx1ZU1ha2VTeW1i
b2woY29udGV4dCwgZGVzY3JpcHRpb24pOworICAgICAgICBjaGVjayhmdW5jdGlvblJldHVybnNU
cnVlKGlzU3ltYm9sRnVuY3Rpb24sIHN5bWJvbCksICJKU1ZhbHVlTWFrZVN5bWJvbCBtYWtlcyBh
IHN5bWJvbCB2YWx1ZSIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0byBvYmplY3RzID0g
aW50ZXJlc3RpbmdPYmplY3RzKCk7CisgICAgICAgIGF1dG8ga2V5cyA9IGludGVyZXN0aW5nS2V5
cygpOworCisgICAgICAgIGZvciAoYXV0byYgb2JqZWN0IDogb2JqZWN0cykgeworICAgICAgICAg
ICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzKSB7CisgICAgICAgICAgICAgICAgY2hlY2tKU0FuZEFQ
SU1hdGNoKAorICAgICAgICAgICAgICAgICAgICBbJl0geworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGNhbGxGdW5jdGlvbihnZXRGdW5jdGlvbiwgb2JqZWN0LCBrZXkpOworICAgICAg
ICAgICAgICAgICAgICB9LCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEpTT2JqZWN0R2V0UHJvcGVydHlLZXkoY29udGV4dCwgb2Jq
ZWN0LCBrZXksIGV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAgICAgIH0sICJjaGVja2luZyBn
ZXQgcHJvcGVydHkga2V5cyIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgeworICAgICAgICBhdXRvIGpzT2JqZWN0cyA9IGludGVyZXN0aW5nT2JqZWN0cygpOworICAg
ICAgICBhdXRvIGFwaU9iamVjdHMgPSBpbnRlcmVzdGluZ09iamVjdHMoKTsKKyAgICAgICAgYXV0
byBrZXlzID0gaW50ZXJlc3RpbmdLZXlzKCk7CisKKyAgICAgICAgSlNWYWx1ZVJlZiB0aGVBbnN3
ZXIgPSBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCA0Mik7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwganNPYmplY3RzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBmb3IgKGF1
dG8mIGtleSA6IGtleXMpIHsKKyAgICAgICAgICAgICAgICBKU09iamVjdFJlZiBqc09iamVjdCA9
IGpzT2JqZWN0c1tpXTsKKyAgICAgICAgICAgICAgICBKU09iamVjdFJlZiBhcGlPYmplY3QgPSBh
cGlPYmplY3RzW2ldOworICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAg
ICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxs
RnVuY3Rpb24oc2V0RnVuY3Rpb24sIGpzT2JqZWN0LCBrZXksIHRoZUFuc3dlcik7CisgICAgICAg
ICAgICAgICAgICAgIH0gLCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eUtleShjb250ZXh0LCBhcGlPYmplY3Qs
IGtleSwgdGhlQW5zd2VyLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUsIGV4Y2VwdGlvbik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4
dCk7CisgICAgICAgICAgICAgICAgICAgIH0sICJzZXR0aW5nIHByb3BlcnR5IGtleXMgdG8gdGhl
IGFuc3dlciIpOworICAgICAgICAgICAgICAgIC8vIENoZWNrIGdldCBpcyB0aGUgc2FtZSBvbiBB
UEkgb2JqZWN0LgorICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAg
ICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVu
Y3Rpb24oZ2V0RnVuY3Rpb24sIGFwaU9iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAg
fSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBKU09iamVjdEdldFByb3BlcnR5S2V5KGNvbnRleHQsIGFwaU9iamVjdCwga2V5LCBl
eGNlcHRpb24pOworICAgICAgICAgICAgICAgICAgICB9LCAiZ2V0dGluZyBwcm9wZXJ0eSBrZXlz
IGZyb20gQVBJIG9iamVjdHMiKTsKKyAgICAgICAgICAgICAgICAvLyBDaGVjayBnZXQgaXMgdGhl
IHNhbWUgb24gcmVzcGVjdGl2ZSBvYmplY3RzLgorICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRB
UElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBjYWxsRnVuY3Rpb24oZ2V0RnVuY3Rpb24sIGpzT2JqZWN0LCBrZXkpOworICAg
ICAgICAgICAgICAgICAgICB9LCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT2JqZWN0R2V0UHJvcGVydHlLZXkoY29udGV4dCwg
YXBpT2JqZWN0LCBrZXksIGV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAgICAgIH0sICJnZXR0
aW5nIHByb3BlcnR5IGtleXMgZnJvbSByZXNwZWN0aXZlIG9iamVjdHMiKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0byBvYmplY3RzID0gaW50
ZXJlc3RpbmdPYmplY3RzKCk7CisgICAgICAgIGF1dG8ga2V5cyA9IGludGVyZXN0aW5nS2V5cygp
OworCisgICAgICAgIEpTVmFsdWVSZWYgdGhlQW5zd2VyID0gSlNWYWx1ZU1ha2VOdW1iZXIoY29u
dGV4dCwgNDIpOworICAgICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IG9iamVjdHMpIHsKKyAgICAg
ICAgICAgIGZvciAoYXV0byYga2V5IDoga2V5cykgeworICAgICAgICAgICAgICAgIGNoZWNrSlNB
bmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oaGFzRnVuY3Rpb24sIG9iamVjdCwga2V5KTsKKyAg
ICAgICAgICAgICAgICAgICAgfSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgSlNP
YmplY3RIYXNQcm9wZXJ0eUtleShjb250ZXh0LCBvYmplY3QsIGtleSwgZXhjZXB0aW9uKSk7Cisg
ICAgICAgICAgICAgICAgICAgIH0sICJjaGVja2luZyBoYXMgcHJvcGVydHkga2V5cyB1bnNldCIp
OworCisgICAgICAgICAgICAgICAgY2hlY2soISFjYWxsRnVuY3Rpb24oc2V0RnVuY3Rpb24sIG9i
amVjdCwga2V5LCB0aGVBbnN3ZXIpLCAic2V0IHByb3BlcnR5IHRvIHRoZSBhbnN3ZXIiKTsKKwor
ICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAg
WyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oaGFzRnVu
Y3Rpb24sIG9iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgWyZdIChKU1ZhbHVl
UmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
TWFrZUJvb2xlYW4oY29udGV4dCwgSlNPYmplY3RIYXNQcm9wZXJ0eUtleShjb250ZXh0LCBvYmpl
Y3QsIGtleSwgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIH0sICJjaGVja2luZyBo
YXMgcHJvcGVydHkga2V5cyBzZXQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIHsKKyAgICAgICAgYXV0byBvYmplY3RzID0gaW50ZXJlc3RpbmdPYmplY3RzKCk7Cisg
ICAgICAgIGF1dG8ga2V5cyA9IGludGVyZXN0aW5nS2V5cygpOworCisgICAgICAgIEpTVmFsdWVS
ZWYgdGhlQW5zd2VyID0gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgNDIpOworICAgICAgICBm
b3IgKGF1dG8mIG9iamVjdCA6IG9iamVjdHMpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYga2V5
IDoga2V5cykgeworICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAg
ICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVu
Y3Rpb24oZGVsZXRlRnVuY3Rpb24sIG9iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAg
fSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgSlNPYmplY3REZWxldGVQcm9wZXJ0
eUtleShjb250ZXh0LCBvYmplY3QsIGtleSwgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAg
ICAgIH0sICJjaGVja2luZyBoYXMgcHJvcGVydHkga2V5cyB1bnNldCIpOworCisgICAgICAgICAg
ICAgICAgY2hlY2soISFjYWxsRnVuY3Rpb24oc2V0RnVuY3Rpb24sIG9iamVjdCwga2V5LCB0aGVB
bnN3ZXIpLCAic2V0IHByb3BlcnR5IHRvIHRoZSBhbnN3ZXIiKTsKKworICAgICAgICAgICAgICAg
IGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oZGVsZXRlRnVuY3Rpb24sIG9iamVj
dCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRp
b24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4o
Y29udGV4dCwgSlNPYmplY3REZWxldGVQcm9wZXJ0eUtleShjb250ZXh0LCBvYmplY3QsIGtleSwg
ZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIH0sICJjaGVja2luZyBoYXMgcHJvcGVy
dHkga2V5cyBzZXQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGRh
dGFMb2dMbigiQy1BUEkgdGVzdHMgaW4gQysrIGhhZCAiLCBmYWlsZWQsICIgZmFpbHVyZXMiKTsK
KyAgICByZXR1cm4gZmFpbGVkOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS90ZXN0cy90ZXN0YXBpLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90
ZXN0YXBpLm1tCmluZGV4IDQxMTljYjdmMmQxMjRkMTU2OTNkMTQ5NTZmZDg4NGQ1NzIyMGQzMDEu
Ljg3YjAxZTc3MWU3ZDRjZDcyZjAyYjZhZTMwOTQwYzY0MWQ4ZTY3YzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KQEAgLTIzLDYgKzIzLDcgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAorI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgogCiAjaW1wb3J0ICJDdXJyZW50VGhpc0luc2lkZUJsb2Nr
R2V0dGVyVGVzdC5oIgpAQCAtNTg1LDYgKzU4Niw3MSBAQCBzdGF0aWMgdm9pZCB0ZXN0T2JqZWN0
aXZlQ0FQSU1haW4oKQogICAgICAgICBjaGVja1Jlc3VsdChAIm5ldyBEYXRlIiwgcmVzdWx0Lmlz
RGF0ZSk7CiAgICAgfQogCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4
dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAq
c3ltYm9sID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJTeW1ib2woJ2RvcGUnKTsiXTsKKyAg
ICAgICAgSlNWYWx1ZSAqbm90U3ltYm9sID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCInZG9w
ZSciXTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJTaG91bGQgYmUgYSBzeW1ib2wgdmFsdWUiLCBz
eW1ib2wuaXNTeW1ib2wpOworICAgICAgICBjaGVja1Jlc3VsdChAIlNob3VsZCBub3QgYmUgYSBz
eW1ib2wgdmFsdWUiLCAhbm90U3ltYm9sLmlzU3ltYm9sKTsKKyAgICB9CisKKyAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxs
b2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICpzeW1ib2wgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhO
ZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246QCJkb3BlIiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAg
ICAgIGNoZWNrUmVzdWx0KEAiU2hvdWxkIGJlIGEgY3JlYXRlZCBmcm9tIE9iYy1DIiwgc3ltYm9s
LmlzU3ltYm9sKTsKKyAgICB9CisKKyNpZiAhKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMwMCkg
fHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQorCisgICAgQGF1dG9yZWxlYXNlcG9v
bCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0
XTsKKyAgICAgICAgSlNWYWx1ZSAqYXJyYXlJdGVyYXRvciA9IFtjb250ZXh0IGV2YWx1YXRlU2Ny
aXB0OkAiQXJyYXkucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0iXTsKKyAgICAgICAgSlNWYWx1
ZSAqaXRlcmF0b3JTeW1ib2wgPSBjb250ZXh0W0AiU3ltYm9sIl1bQCJpdGVyYXRvciJdOworICAg
ICAgICBKU1ZhbHVlICphcnJheSA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld0FycmF5SW5Db250ZXh0
OmNvbnRleHRdOworICAgICAgICBjaGVja1Jlc3VsdChAIkxvb2tpbmcgdXAgYnkgc3Vic2NyaXB0
IHdpdGggc3ltYm9sIHNob3VsZCB3b3JrIiwgW2FycmF5W2l0ZXJhdG9yU3ltYm9sXSBpc0VxdWFs
OmFycmF5SXRlcmF0b3JdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJMb29raW5nIHVwIGJ5IG1l
dGhvZCB3aXRoIHN5bWJvbCBzaG91bGQgd29yayIsIFtbYXJyYXkgdmFsdWVGb3JQcm9wZXJ0eTpp
dGVyYXRvclN5bWJvbF0gaXNFcXVhbDphcnJheUl0ZXJhdG9yXSk7CisgICAgfQorCisgICAgQGF1
dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0
IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAqaXRlcmF0b3JTeW1ib2wgPSBjb250ZXh0
W0AiU3ltYm9sIl1bQCJpdGVyYXRvciJdOworICAgICAgICBKU1ZhbHVlICpvYmplY3QgPSBbSlNW
YWx1ZSB2YWx1ZVdpdGhOZXdPYmplY3RJbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIEpTVmFs
dWUgKnRoZUFuc3dlciA9IFtKU1ZhbHVlIHZhbHVlV2l0aFVJbnQzMjo0MiBpbkNvbnRleHQ6Y29u
dGV4dF07CisgICAgICAgIG9iamVjdFtpdGVyYXRvclN5bWJvbF0gPSB0aGVBbnN3ZXI7CisgICAg
ICAgIGNoZWNrUmVzdWx0KEAiU2V0dGluZyBieSBzdWJzY3JpcHQgd2l0aCBzeW1ib2wgc2hvdWxk
IHdvcmsiLCBbb2JqZWN0W2l0ZXJhdG9yU3ltYm9sXSBpc0VxdWFsOnRoZUFuc3dlcl0pOworICAg
IH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQg
PSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUgKml0ZXJhdG9yU3lt
Ym9sID0gY29udGV4dFtAIlN5bWJvbCJdW0AiaXRlcmF0b3IiXTsKKyAgICAgICAgSlNWYWx1ZSAq
b2JqZWN0ID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOwor
ICAgICAgICBKU1ZhbHVlICp0aGVBbnN3ZXIgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhVSW50MzI6NDIg
aW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBbb2JqZWN0IHNldFZhbHVlOnRoZUFuc3dlciBm
b3JQcm9wZXJ0eTppdGVyYXRvclN5bWJvbF07CisgICAgICAgIGNoZWNrUmVzdWx0KEAiU2V0dGlu
ZyBieSBtZXRob2Qgd2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsiLCBbb2JqZWN0W2l0ZXJhdG9yU3lt
Ym9sXSBpc0VxdWFsOnRoZUFuc3dlcl0pOworICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wg
eworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07
CisgICAgICAgIEpTVmFsdWUgKml0ZXJhdG9yU3ltYm9sID0gY29udGV4dFtAIlN5bWJvbCJdW0Ai
aXRlcmF0b3IiXTsKKyAgICAgICAgSlNWYWx1ZSAqb2JqZWN0ID0gW0pTVmFsdWUgdmFsdWVXaXRo
TmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBKU1ZhbHVlICp0aGVBbnN3ZXIg
PSBbSlNWYWx1ZSB2YWx1ZVdpdGhVSW50MzI6NDIgaW5Db250ZXh0OmNvbnRleHRdOworICAgICAg
ICBvYmplY3RbaXRlcmF0b3JTeW1ib2xdID0gdGhlQW5zd2VyOworICAgICAgICBjaGVja1Jlc3Vs
dChAImhhcyBwcm9wZXJ0eSB3aXRoIHN5bWJvbCBzaG91bGQgd29yayIsIFtvYmplY3QgaGFzUHJv
cGVydHk6aXRlcmF0b3JTeW1ib2xdKTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsK
KyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOwor
ICAgICAgICBKU1ZhbHVlICppdGVyYXRvclN5bWJvbCA9IGNvbnRleHRbQCJTeW1ib2wiXVtAIml0
ZXJhdG9yIl07CisgICAgICAgIEpTVmFsdWUgKm9iamVjdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5l
d09iamVjdEluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgSlNWYWx1ZSAqdGhlQW5zd2VyID0g
W0pTVmFsdWUgdmFsdWVXaXRoVUludDMyOjQyIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAg
Y2hlY2tSZXN1bHQoQCJkZWxldGUgcHJvcGVydHkgd2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsgd2l0
aG91dCBwcm9wZXJ0eSIsIFtvYmplY3QgZGVsZXRlUHJvcGVydHk6aXRlcmF0b3JTeW1ib2xdKTsK
KyAgICAgICAgb2JqZWN0W2l0ZXJhdG9yU3ltYm9sXSA9IHRoZUFuc3dlcjsKKyAgICAgICAgY2hl
Y2tSZXN1bHQoQCJkZWxldGUgcHJvcGVydHkgd2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsgd2l0aCBw
cm9wZXJ0eSIsIFtvYmplY3QgZGVsZXRlUHJvcGVydHk6aXRlcmF0b3JTeW1ib2xdKTsKKyAgICAg
ICAgY2hlY2tSZXN1bHQoQCJkZWxldGUgc2hvdWxkIGJlIGZhbHNlIHdpdGggbm9uLWNvbmZpZ3Vy
YWJsZSBwcm9wZXJ0eSIsICFbY29udGV4dFtAIkFycmF5Il0gZGVsZXRlUHJvcGVydHk6QCJwcm90
b3R5cGUiXSk7CisgICAgfQorCisjZW5kaWYgLy8gIShkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEz
MDApIHx8IChkZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKKwogICAgIEBhdXRvcmVsZWFz
ZXBvb2wgewogICAgICAgICBKU0NvbGxlY3Rpb24qIG15UHJpdmF0ZVByb3BlcnRpZXMgPSBbW0pT
Q29sbGVjdGlvbiBhbGxvY10gaW5pdF07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMjk4ZDYxNDExYTI4NmRhN2NkMzVmOTRiYzdiMWM3ZDE5NGFkNGEzNC4uMzg2ODg2MjE5MjI0
OGViNjA1MTY0NjIyNDdjMzA1YmNmNGVjYTcxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEwMzMsNiArMTAzMyw3IEBACiAJCTUzRTc3N0U0MUU5MkUyNjUwMDdDQkVDNCAvKiBX
YXNtTW9kdWxlSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzRTc3N0UyMUU5MkUyNjUwMDdDQkVDNCAvKiBXYXNtTW9kdWxlSW5mb3Jt
YXRpb24uaCAqLzsgfTsKIAkJNTNFOUUwQUMxRUFFODNERjAwRkVFMjUxIC8qIFdhc21NYWNoaW5l
VGhyZWFkcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTNFOUUwQUExRUFFODNERTAwRkVFMjUxIC8qIFdhc21NYWNoaW5lVGhyZWFkcy5oICovOyB9Owog
CQk1M0U5RTBBRjFFQUVDNDU3MDBGRUUyNTEgLyogV2FzbVRpZXJVcENvdW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0U5RTBBRTFFQUVDNDU3MDBG
RUUyNTEgLyogV2FzbVRpZXJVcENvdW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTNFQUZFMkYyMDhERkFCNDAwN0Q1MjRCIC8qIHRlc3RhcGku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxRDRF
MTkxRjU5Q0REMjAwRUM4MzZDIC8qIHRlc3RhcGkuY3BwICovOyB9OwogCQk1M0YxMUY0MTIwOTEz
OEQ3MDBFNDExQTcgLyogSlNJbW11dGFibGVCdXR0ZXJmbHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjExRjQwMjA5MTM4RDcwMEU0MTFBNyAvKiBK
U0ltbXV0YWJsZUJ1dHRlcmZseS5oICovOyB9OwogCQk1M0Y0MEU4NTFENThGOTc3MDA5OUExQjYg
LyogV2FzbVNlY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1M0Y0MEU4NDFENThGOTc3MDA5OUExQjYgLyogV2FzbVNlY3Rpb25zLmggKi87IH07
CiAJCTUzRjQwRThCMUQ1OTAxQkIwMDk5QTFCNiAvKiBXYXNtRnVuY3Rpb25QYXJzZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQwRThBMUQ1OTAx
QkIwMDk5QTFCNiAvKiBXYXNtRnVuY3Rpb25QYXJzZXIuaCAqLzsgfTsKQEAgLTMyODMsNiArMzI4
NCw3IEBACiAJCTUzMTFCRDQ5MUVBNTgxRTUwMDUyNTI4MSAvKiBXYXNtT01HUGxhbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtT01HUGxhbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MzEzNzRCQzFENUNFNjc2MDBBRjdBMEIgLyogV2FzbVBsYW4uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbVBsYW4uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTMxMzc0QkUxRDVDRTk1MDAwQUY3QTBCIC8qIFdhc21QbGFuLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21QbGFuLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMxRDRFMTkxRjU5Q0REMjAwRUM4MzZDIC8qIHRl
c3RhcGkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdGVzdGFwaS5jcHA7IHBhdGggPSBBUEkvdGVz
dHMvdGVzdGFwaS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzM0IxNURFMURD
N0Y0NjMwMDRENTAwQSAvKiBXYXNtT3BzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdhc21PcHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0MUZDNkYxREFD
MzNFNTAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHA7IHBhdGgg
PSBiMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTM0MUZDNzExREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1
ZS5oOyBwYXRoID0gYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMzQ1Myw3ICszNDU1LDYgQEAKIAkJNTM5MTdFN0ExQjc5MDZFNDAwMEVC
RDMzIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90
eXBlRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzOTE3RTdDMUI3
OTExMDYwMDBFQkQzMyAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM5MTdFODMxQjc5MUNCODAwMEVCRDMzIC8qIFR5cGVk
QXJyYXlQcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUg
PSBUeXBlZEFycmF5UHJvdG90eXBlLmpzOyBwYXRoID0gYnVpbHRpbnMvVHlwZWRBcnJheVByb3Rv
dHlwZS5qczsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQk1MzlFQjA3MTFENTUzREY4
MDBDODJFRjcgLyogdGVzdFdhc20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gdGVzdFdhc20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzlGQjhC
OTFDOTlEQTdDMDA5NDBGQTEgLyogSlNBcnJheUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNBcnJheUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTNCMEJFMzMxRTU2MUFDOTAwQThGQzI5IC8qIEdldHRlclNldHRlckFjY2Vzc0Nhc2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzQjBCRTM1MUU1NjFC
MDkwMEE4RkMyOSAvKiBQcm94eWFibGVBY2Nlc3NDYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFByb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTQ0MiwxMCArNTQ0MywxMCBAQAogCQkJCUZFQjUxRjZCMUE5N0I2
ODgwMDFGOTIxQyAvKiBSZWdyZXNzMTQxODA5Lm1tICovLAogCQkJCUZFQ0I4QjI5MUQyNUNBQkIw
MDZGMjQ2MyAvKiB0ZXN0YXBpLWZ1bmN0aW9uLW92ZXJyaWRlcy5qcyAqLywKIAkJCQkxNEJENUEy
RDBBM0U5MUY2MDBCQUY1OUMgLyogdGVzdGFwaS5jICovLAorCQkJCTUzMUQ0RTE5MUY1OUNERDIw
MEVDODM2QyAvKiB0ZXN0YXBpLmNwcCAqLywKIAkJCQkxNEQ4NTc3NDBBNDY5NkM4MDAzMjE0NkMg
LyogdGVzdGFwaS5qcyAqLywKIAkJCQk4NkQyMjIxOTE2N0VGOTQ0MDAyNEM4MDQgLyogdGVzdGFw
aS5tbSAqLywKIAkJCQk2NTExMjJFNTE0MDQ2OUJBMDAyQjEwMUQgLyogdGVzdFJlZ0V4cC5jcHAg
Ki8sCi0JCQkJNTM5RUIwNzExRDU1M0RGODAwQzgyRUY3IC8qIHRlc3RXYXNtLmNwcCAqLywKIAkJ
CQk1MzQ5MDI4MjFDNzI0MkM4MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCAqLywKIAkJ
CQk1MzQ5MDI4MzFDNzI0MkM4MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmggKi8sCiAJCQkp
OwpAQCAtOTkzMyw2ICs5OTM0LDEwIEBACiAJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJM
SUNfSEVBREVSU19GT0xERVJfUEFUSCkvSlNWYWx1ZS5oIiwKIAkJCQkiJChUQVJHRVRfQlVJTERf
RElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9KU1ZpcnR1YWxNYWNoaW5lLmgiLAog
CQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL1dl
YktpdEF2YWlsYWJpbGl0eS5oIiwKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBSSVZBVEVf
SEVBREVSU19GT0xERVJfUEFUSCkvSlNDb250ZXh0UmVmUHJpdmF0ZS5oIiwKKwkJCQkiJChUQVJH
RVRfQlVJTERfRElSKS8kKFBSSVZBVEVfSEVBREVSU19GT0xERVJfUEFUSCkvSlNCYXNlUHJpdmF0
ZS5oIiwKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBSSVZBVEVfSEVBREVSU19GT0xERVJf
UEFUSCkvSlNSZW1vdGVJbnNwZWN0b3IuaCIsCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQ
VUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvSlNUeXBlZEFycmF5LmgiLAogCQkJKTsKIAkJCW5h
bWUgPSAiUG9zdHByb2Nlc3MgSGVhZGVycyI7CiAJCQlvdXRwdXRQYXRocyA9ICgKQEAgLTEwMTU3
LDYgKzEwMTYyLDcgQEAKIAkJCQk2NTU3MEY1QTFBQTRDM0VBMDA5QjNDMjMgLyogUmVncmVzczE0
MTI3NS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUZFQjUxRjZDMUE5N0I2ODgwMDFGOTIxQyAvKiBS
ZWdyZXNzMTQxODA5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0MEY2MTAwQTRGODU2NzAwMDVG
MDYxIC8qIHRlc3RhcGkuYyBpbiBTb3VyY2VzICovLAorCQkJCTUzRUFGRTJGMjA4REZBQjQwMDdE
NTI0QiAvKiB0ZXN0YXBpLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RDIyMjFBMTY3RUY5NDQw
MDI0QzgwNCAvKiB0ZXN0YXBpLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM0OTAyODUxQzcyNzZC
NzAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CkBA
IC0xMDYyNCw2ICsxMDYzMCwxMCBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJ
CQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAv
KiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJ
SEVBREVSX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIlwiJChKQVZBU0NSSVBUQ09SRV9GUkFNRVdP
UktTX0RJUikvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzXCIiLAorCQkJ
CQkiJChpbmhlcml0ZWQpIiwKKwkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsK
QEAgLTEwNjMxLDYgKzEwNjQxLDEwIEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
IAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3
IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJ
CQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkiXCIkKEpBVkFTQ1JJUFRDT1JFX0ZSQU1F
V09SS1NfRElSKS9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnNcIiIsCisJ
CQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJ
CX07CkBAIC0xMDYzOCw2ICsxMDY1MiwxMCBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZD
NTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIlwiJChKQVZBU0NSSVBUQ09SRV9G
UkFNRVdPUktTX0RJUikvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzXCIi
LAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9kdWN0
aW9uOwogCQl9OwpAQCAtMTA5NjIsNiArMTA5ODAsMTAgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkw
MEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRp
bmdzID0geworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSJcIiQoSkFWQVNDUklQ
VENPUkVfRlJBTUVXT1JLU19ESVIpL0phdmFTY3JpcHRDb3JlLmZyYW1ld29yay9Qcml2YXRlSGVh
ZGVyc1wiIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJKTsKIAkJCX07CiAJCQluYW1lID0g
UHJvZmlsaW5nOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbmZp
Zy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbmZpZy5oCmluZGV4IDFkMWVkN2I2ZjhjNmFj
MDlmMTQ0NDRmNmVmMzgwNTYyOTk4MTlkN2UuLmVkYzc3Y2YyNTU2MGJiMWFhOTdkYTBhMWI4ODM2
MGRiZjI2YjUxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgKQEAgLTIzLDYgKzIzLDkgQEAKICNp
bmNsdWRlICJjbWFrZWNvbmZpZy5oIgogI2VuZGlmCiAKKyNkZWZpbmUgSlNDX0FQSV9BVkFJTEFC
TEUoLi4uKQorI2RlZmluZSBKU0NfQ0xBU1NfQVZBSUxBQkxFKC4uLikgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKKwogI2luY2x1ZGUgIkpTRXhwb3J0TWFjcm9zLmgiCiAK
ICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bv
c3Rwcm9jZXNzLWhlYWRlcnMuc2ggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcG9zdHByb2Nlc3Mt
aGVhZGVycy5zaAppbmRleCBjODYxODQzN2QyYTA3Nzk0OWE1OTBhYzcwMTdmODI2YjUyZDZkMmIz
Li44OGNhZGMxMDEzNDNkNTVkM2ZjYjY4MGRkMmZiNzVmM2MzMWE1OTM2IDEwMDc1NQotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcG9zdHByb2Nlc3MtaGVhZGVycy5zaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcG9zdHByb2Nlc3MtaGVhZGVycy5zaApAQCAtMSwxOCArMSwxMjQgQEAK
LWNkICIke1RBUkdFVF9CVUlMRF9ESVJ9LyR7UFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEh9Igot
Ci1VTklGREVGX09QVElPTlM9Ii1EX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRD0ke1RB
UkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SfSIKLQotZm9yICgoaSA9IDA7IGkgPCAke1NDUklQ
VF9JTlBVVF9GSUxFX0NPVU5UfTsgKytpKSk7IGRvCi0gICAgZXZhbCBIRUFERVI9XCR7U0NSSVBU
X0lOUFVUX0ZJTEVfJHtpfX07Ci0gICAgdW5pZmRlZiAtQiAke1VOSUZERUZfT1BUSU9OU30gLW8g
IiR7SEVBREVSfSIudW5pZmRlZiAiJHtIRUFERVJ9IgotICAgIGNhc2UgJD8gaW4KLSAgICAwKQot
ICAgICAgICBybSAiJHtIRUFERVJ9Ii51bmlmZGVmCi0gICAgICAgIDs7Ci0gICAgMSkKLSAgICAg
ICAgbXYgIiR7SEVBREVSfSJ7LnVuaWZkZWYsfQotICAgICAgICA7OwotICAgICopCi0gICAgICAg
IGV4aXQgMQotICAgIGVzYWMKLWRvbmUKKyMhL2Jpbi9zaAorIworIyBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisj
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyMKKworaWYgW1sgIiR7SlNDX0ZSQU1FV09SS19IRUFERVJfUE9T
VFBST0NFU1NJTkdfRElTQUJMRUR9IiA9PSAiWUVTIiBdXTsgdGhlbgorICAgIGV4aXQgMDsKK2Zp
CisKK1RJTUVTVEFNUF9QQVRIPSR7VEFSR0VUX1RFTVBfRElSfS8kezAjIyovfQorCitpZiBbWyAt
ZSAkVElNRVNUQU1QX1BBVEggJiYgJDAgLW50ICRUSU1FU1RBTVBfUEFUSCBdXTsgdGhlbgorICAg
IHJtICIke1RJTUVTVEFNUF9QQVRIfSI7CitmaQorCitmdW5jdGlvbiBwcm9jZXNzX2RlZmluaXRp
b25zICgpIHsKKyAgICBsb2NhbCBERUZJTklUSU9OU19GSUxFPSQxCisKKyAgICBpZiBbWyAhIC1m
ICIke0RFRklOSVRJT05TX0ZJTEV9IiBdXTsgdGhlbgorICAgICAgICByZXR1cm4gMQorICAgIGZp
CisKKyAgICBpZiBbWyAtZSAkVElNRVNUQU1QX1BBVEggJiYgIiR7REVGSU5JVElPTlNfRklMRX0i
IC1udCAkVElNRVNUQU1QX1BBVEggXV07IHRoZW4KKyAgICAgICAgcm0gIiR7VElNRVNUQU1QX1BB
VEh9IjsKKyAgICBmaQorCisgICAgc291cmNlICIke0RFRklOSVRJT05TX0ZJTEV9IgorfQorCitm
dW5jdGlvbiByZXdyaXRlX2hlYWRlcnMgKCkgeworICAgIGlmIFtbICIke1BMQVRGT1JNX05BTUV9
IiA9PSAibWFjb3N4IiBdXTsgdGhlbgorICAgICAgICBbWyAtbiAke09TWF9WRVJTSU9OfSBdXSB8
fCBPU1hfVkVSU0lPTj0ke01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVH0KKyAgICAgICAgW1sgLW4g
JHtJT1NfVkVSU0lPTn0gXV0gfHwgSU9TX1ZFUlNJT049Ik5BIgorICAgIGVsaWYgW1sgIiR7UExB
VEZPUk1fTkFNRX0iID1+ICJpcGhvbmUiIF1dOyB0aGVuCisgICAgICAgIFtbIC1uICR7SU9TX1ZF
UlNJT059IF1dIHx8IElPU19WRVJTSU9OPSR7SVBIT05FT1NfREVQTE9ZTUVOVF9UQVJHRVR9Cisg
ICAgICAgIFtbIC1uICR7T1NYX1ZFUlNJT059IF1dIHx8IE9TWF9WRVJTSU9OPSJOQSIKKyAgICBm
aQorCisgICAgU0VEX09QVElPTlM9KAorICAgICkKKworICAgIGlmIFtbIC1uICIkT1NYX1ZFUlNJ
T04iICYmIC1uICIkSU9TX1ZFUlNJT04iIF1dOyB0aGVuCisgICAgICAgIFNFRF9PUFRJT05TKz0o
CisgICAgICAgICAgICAtZSBzL0pTQ19NQUNfVEJBLyR7T1NYX1ZFUlNJT059L2cKKyAgICAgICAg
ICAgIC1lIHMvSlNDX0lPU19UQkEvJHtJT1NfVkVSU0lPTn0vZworICAgICAgICAgICAgLWUgcy9K
U0NfQVBJX0FWQUlMQUJMRS9BUElfQVZBSUxBQkxFLworICAgICAgICAgICAgLWUgcy9KU0NfQVBJ
X0RFUFJFQ0FURUQvQVBJX0RFUFJFQ0FURUQvCisgICAgICAgICAgICAtZSAicy9eSlNDX0NMQVNT
X0FWQUlMQUJMRS9BUElfQVZBSUxBQkxFLyIKKyAgICAgICAgICAgIC1lICJzL15KU0NfQ0xBU1Nf
REVQUkVDQVRFRC9BUElfREVQUkVDQVRFRC8iCisgICAgICAgICkKKyAgICBlbHNlCisgICAgICAg
IFNFRF9PUFRJT05TKz0oLWUgJ3MvSlNDXyhBUElffENMQVNTXylBVkFJTEFCTEVcKC4qXClccypc
KS8vZycgLWUgJ3MvSlNDXyhBUElffENMQVNTXylERVBSRUNBVEVEKF9XSVRIX1JFUExBQ0VNRU5U
KT9cKC4qXClccypcKS8vZycpCisgICAgZmkKKworICAgIFNFRF9PUFRJT05TKz0oJHtPVEhFUl9T
RURfT1BUSU9OU1sqXX0pCisKKyAgICBmb3IgSEVBREVSX1BBVEggaW4gIiR7MX0vIiouaDsgZG8K
KyAgICAgICAgaWYgW1sgIiRIRUFERVJfUEFUSCIgLW50ICRUSU1FU1RBTVBfUEFUSCBdXTsgdGhl
bgorICAgICAgICAgICAgZGl0dG8gIiR7SEVBREVSX1BBVEh9IiAiJHtUQVJHRVRfVEVNUF9ESVJ9
LyR7SEVBREVSX1BBVEgjIyovfSIKKyAgICAgICAgICAgIHNlZCAtaSAudG1wIC1FICIke1NFRF9P
UFRJT05TW0BdfSIgIiR7VEFSR0VUX1RFTVBfRElSfS8ke0hFQURFUl9QQVRIIyMqL30iIHx8IGV4
aXQgJD8KKyAgICAgICAgICAgIG12ICIke1RBUkdFVF9URU1QX0RJUn0vJHtIRUFERVJfUEFUSCMj
Ki99IiAiJEhFQURFUl9QQVRIIgorICAgICAgICBmaQorICAgIGRvbmUKK30KKworZnVuY3Rpb24g
cmV3cml0ZV92ZXJzaW9uX21pbl9yZXF1aXJlZF9tYWNyb3MoKSB7CisgICAgZWNobyAicmV3cml0
ZV92ZXJzaW9uX21pbl9yZXF1aXJlZF9tYWNyb3MiCisgICAgZWNobyAiJHsxfSIKKyAgICAjIFdl
IG5lZWQgdG8gbWFrZSBzdXJlIHdlIHVuc2V0IHRoZSBvdGhlciB0YXJnZXQgb3RoZXJ3aXNlIHVu
aWZkZWYgd2lsbCBmYWlsIHRvIGhhbmRsZSBjb25kaXRpb25zIHRoYXQgYXJlIGFuIHx8IG9mIGJv
dGggdGFyZ2V0cy4KKyAgICBpZiBbWyAteiAke0lPU19WRVJTSU9OfSBdXTsgdGhlbgorICAgICAg
ICBVTklGREVGX09QVElPTlM9Ii1EX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRD0ke1RB
UkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SfSAtVV9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEIgorICAgIGVsc2UKKyAgICAgICAgVU5JRkRFRl9PUFRJT05TPSItVV9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgLURfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRD0k
e1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SfSIKKyAgICBmaQorCisgICAgZm9yIEhFQURF
Ul9QQVRIIGluICIkezF9LyIqLmg7IGRvCisgICAgICAgIGlmIFtbICIkSEVBREVSX1BBVEgiIC1u
dCAkVElNRVNUQU1QX1BBVEggXV07IHRoZW4KKyAgICAgICAgICAgIHVuaWZkZWYgLUIgJHtVTklG
REVGX09QVElPTlN9IC1vICIke0hFQURFUl9QQVRIfSIudW5pZmRlZiAiJHtIRUFERVJfUEFUSH0i
CisgICAgICAgICAgICBjYXNlICQ/IGluCisgICAgICAgICAgICAgICAgMCkKKyAgICAgICAgICAg
ICAgICAgICAgcm0gIiR7SEVBREVSX1BBVEh9Ii51bmlmZGVmCisgICAgICAgICAgICAgICAgICAg
IDs7CisgICAgICAgICAgICAgICAgMSkKKyAgICAgICAgICAgICAgICAgICAgbXYgIiR7SEVBREVS
X1BBVEh9InsudW5pZmRlZix9CisgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAg
ICAgKikKKyAgICAgICAgICAgICAgICAgICAgZXhpdCAxCisgICAgICAgICAgICBlc2FjCisgICAg
ICAgIGZpCisgICAgZG9uZQorfQorCitERUZJTklUSU9OU19QQVRIPXVzci9sb2NhbC9pbmNsdWRl
L1dlYktpdEFkZGl0aW9ucy9TY3JpcHRzL3Bvc3Rwcm9jZXNzLWZyYW1ld29yay1oZWFkZXJzLWRl
ZmluaXRpb25zCisKK3Byb2Nlc3NfZGVmaW5pdGlvbnMgIiR7QlVJTFRfUFJPRFVDVFNfRElSfS8k
e0RFRklOSVRJT05TX1BBVEh9IiB8fCBwcm9jZXNzX2RlZmluaXRpb25zICIke1NES1JPT1R9LyR7
REVGSU5JVElPTlNfUEFUSH0iCisKK3Jld3JpdGVfaGVhZGVycyAiJHtUQVJHRVRfQlVJTERfRElS
fS8ke1BVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIfSIKK3Jld3JpdGVfdmVyc2lvbl9taW5fcmVx
dWlyZWRfbWFjcm9zICIke1RBUkdFVF9CVUlMRF9ESVJ9LyR7UFVCTElDX0hFQURFUlNfRk9MREVS
X1BBVEh9IgorCityZXdyaXRlX2hlYWRlcnMgIiR7VEFSR0VUX0JVSUxEX0RJUn0vJHtQUklWQVRF
X0hFQURFUlNfRk9MREVSX1BBVEh9IgorcmV3cml0ZV92ZXJzaW9uX21pbl9yZXF1aXJlZF9tYWNy
b3MgIiR7VEFSR0VUX0JVSUxEX0RJUn0vJHtQUklWQVRFX0hFQURFUlNfRk9MREVSX1BBVEh9Igor
Cit0b3VjaCAke1RJTUVTVEFNUF9QQVRIfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3NoZWxsL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3NoZWxsL0NN
YWtlTGlzdHMudHh0CmluZGV4IGIzYzdlMGIxZTY4MWIyZWVhOTEwNTJjNmE4YjdhYjk3NWU1YTA5
NmUuLjVkNjlkYjYxNDUwN2NkZTY1YTRhMmRjMjhlZjliMWI3OTVkMjEzMDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9zaGVsbC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvc2hlbGwvQ01ha2VMaXN0cy50eHQKQEAgLTI3LDYgKzI3LDcgQEAgc2V0
KFRFU1RBUElfU09VUkNFUwogICAgIC4uL0FQSS90ZXN0cy9NdWx0aXRocmVhZGVkTXVsdGlWTUV4
ZWN1dGlvblRlc3QuY3BwCiAgICAgLi4vQVBJL3Rlc3RzL1BpbmdQb25nU3RhY2tPdmVyZmxvd1Rl
c3QuY3BwCiAgICAgLi4vQVBJL3Rlc3RzL1R5cGVkQXJyYXlDVGVzdC5jcHAKKyAgICAuLi9BUEkv
dGVzdHMvdGVzdGFwaS5jcHAKICAgICAuLi9BUEkvdGVzdHMvdGVzdGFwaS5jCiApCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0bWVtL3Rlc3RtZW0ubW0gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdG1lbS90ZXN0bWVtLm1tCmluZGV4IGI0ZDJhZDM5MTE5YmM1NTU4
Y2QzOWM5YzgxODJmYWNlZGNiZWFmMjQuLjliYzRiNDBlMWVhYzAyMzE3ZmQzZTg0NWI0NTRkMGY0
OGI2ZWU1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0bWVtL3Rlc3Rt
ZW0ubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RtZW0vdGVzdG1lbS5tbQpAQCAt
MjMsNiArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisjaW1wb3J0ICJjb25maWcuaCIK
ICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CiAjaW1wb3J0IDxpbnR0
eXBlcy5oPgogI2ltcG9ydCA8c3RkaW8uaD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345586</attachid>
            <date>2018-07-23 11:21:10 -0700</date>
            <delta_ts>2018-07-25 12:59:22 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-175836-20180723142107.patch</filename>
            <type>text/plain</type>
            <size>104749</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0MDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZjhhNGJkZDkzZGZjOTc3NjJlY2I2MDBkNzY4NmQyMTdiMzY5ZTI1Li42OGU2MGJhNDdjNTdhMDgz
NzUyNmU0NjliOWMxNThkNGUwNGJlMTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMTgtMDQtMjMgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0pTQyBBUEldIFdlIHNob3VsZCBzdXBwb3J0IHRoZSBzeW1ib2wg
dHlwZSBpbiBvdXIgQy9PYmotQyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTgzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIGZvbGxvd2luZyBBUEkgYWRkaXRp
b25zOgorICAgICAgICAxKSBUZXN0IGlmIGEgSlNWYWx1ZS9KU1ZhbHVlUmVmIGlzIGEgc3ltYm9s
IHZpYSBhbnkgb2YgdGhlIG1ldGhvZHMgQVBJIGFyZSBhYmxlIHRvIHRlc3QgZm9yIHRoZSB0eXBl
cyBvZiBvdGhlciBKU1ZhbHVlcy4KKyAgICAgICAgMikgQ3JlYXRlIGEgc3ltYm9sIG9uIGJvdGgg
QVBJcy4KKyAgICAgICAgMykgR2V0L1NldC9EZWxldGUvRGVmaW5lIHByb3BlcnR5IG5vdyB0YWtl
IGlkcyBpbiB0aGUgT2JqLUMgQVBJLgorICAgICAgICA0KSBBZGQgR2V0L1NldC9EZWxldGUgaW4g
dGhlIEMgQVBJLgorCisgICAgICAgIFdlIGNhbiBkbyAzIGJlY2F1c2UgaXQgaXMgYm90aCBiaW5h
cnkgYW5kIHNvdXJjZSBjb21wYXRhYmxlIHdpdGgKKyAgICAgICAgdGhlIGV4aXN0aW5nIEFQSS4g
SSBhZGRlZCAoNCkgYmVjYXVzZSB0aGUgY3VycmVudCBwcm9wZXJ0eSBhY2Nlc3MKKyAgICAgICAg
QVBJcyBvbmx5IGhhdmUgdGhlIGFiaWxpdHkgdG8gZ2V0IFN0cmluZ3MuIEl0IHdhcyBwb3NzaWJs
ZSB0bworICAgICAgICBtZXJnZSBzeW1ib2xzIGludG8gSlNTdHJpbmdSZWYgYnV0IHRoYXQgZmVs
dCBjb25mdXNpbmcgYW5kIGV4cG9zZXMKKyAgICAgICAgaW1wbGVtZW50YXRpb24gZGV0YWlscyBv
ZiBvdXIgZW5naW5lLiBUaGUgbmV3IGZ1bmN0aW9ucyBtYXRjaCB0aGUKKyAgICAgICAgc2FtZSBt
ZWFuaW5nIHRoYXQgdGhleSBoYXZlIGluIEpTLCB0aHVzIHNob3VsZCBiZSBmb3J3YXJkCisgICAg
ICAgIGNvbXBhdGlibGUgd2l0aCBhbnkgZnV0dXJlIGxhbmd1YWdlIGV4dGVuc2lvbnMuCisKKyAg
ICAgICAgTGFzdGx5LCB0aGlzIHBhdGNoIGFkZHMgdGhlIHNhbWUgYXZhaWxhYmlsaXR5IHByZXBy
b2NjZXNzaW5nIHBoYXNlCisgICAgICAgIGluIFdlYkNvcmUgdG8gSmF2YVNjcmlwdENvcmUsIHdo
aWNoIGVuYWJsZXMgVEJBIGZlYXR1cmVzIGZvcgorICAgICAgICB0ZXN0aW5nIG9uIHByZXZpb3Vz
IHJlbGVhc2VzLgorCisgICAgICAgICogQVBJL0pTQmFzZVByaXZhdGUuaDoKKyAgICAgICAgKiBB
UEkvSlNDb250ZXh0Lmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFByaXZhdGUuaDoKKyAgICAg
ICAgKiBBUEkvSlNDb250ZXh0UmVmLmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZkludGVy
bmFsLmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaDoKKyAgICAgICAgKiBB
UEkvSlNNYW5hZ2VkVmFsdWUuaDoKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAg
ICAgICAoSlNPYmplY3RIYXNQcm9wZXJ0eUtleSk6CisgICAgICAgIChKU09iamVjdEdldFByb3Bl
cnR5S2V5KToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJvcGVydHlLZXkpOgorICAgICAgICAoSlNP
YmplY3REZWxldGVQcm9wZXJ0eUtleSk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmg6Cisg
ICAgICAgICogQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmg6CisgICAgICAgICogQVBJL0pTVHlwZWRB
cnJheS5oOgorICAgICAgICAqIEFQSS9KU1ZhbHVlLmg6CisgICAgICAgICogQVBJL0pTVmFsdWUu
bW06CisgICAgICAgICgrW0pTVmFsdWUgdmFsdWVXaXRoTmV3U3ltYm9sRnJvbURlc2NyaXB0aW9u
OmluQ29udGV4dDpdKToKKyAgICAgICAgKHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbik6CisgICAg
ICAgICgtW0pTVmFsdWUgdmFsdWVGb3JQcm9wZXJ0eTp2YWx1ZUZvclByb3BlcnR5Ol0pOgorICAg
ICAgICAoLVtKU1ZhbHVlIHNldFZhbHVlOmZvclByb3BlcnR5OnNldFZhbHVlOmZvclByb3BlcnR5
Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5OmRlbGV0ZVByb3BlcnR5Ol0p
OgorICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Omhhc1Byb3BlcnR5Ol0pOgorICAgICAg
ICAoLVtKU1ZhbHVlIGRlZmluZVByb3BlcnR5OmRlc2NyaXB0b3I6ZGVmaW5lUHJvcGVydHk6ZGVz
Y3JpcHRvcjpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSBpc1N5bWJvbF0pOgorICAgICAgICAoLVtK
U1ZhbHVlIG9iamVjdEZvcktleWVkU3Vic2NyaXB0Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIHNl
dE9iamVjdDpmb3JLZXllZFN1YnNjcmlwdDpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSB2YWx1ZUZv
clByb3BlcnR5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIHNldFZhbHVlOmZvclBy
b3BlcnR5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5Ol0p
OiBEZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Ol0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtKU1ZhbHVlIGRlZmluZVByb3BlcnR5OmRlc2NyaXB0b3I6XSk6IERlbGV0ZWQu
CisgICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgorICAgICAgICAoSlNWYWx1ZUdldFR5cGUp
OgorICAgICAgICAoSlNWYWx1ZUlzU3ltYm9sKToKKyAgICAgICAgKEpTVmFsdWVNYWtlU3ltYm9s
KToKKyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5oOgorICAgICAgICAqIEFQSS9XZWJLaXRBdmFp
bGFiaWxpdHkuaDoKKyAgICAgICAgKiBBUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dl
dHRlclRlc3QubW06CisgICAgICAgICogQVBJL3Rlc3RzL0N1c3RvbUdsb2JhbE9iamVjdENsYXNz
VGVzdC5jOgorICAgICAgICAqIEFQSS90ZXN0cy9EYXRlVGVzdHMubW06CisgICAgICAgICogQVBJ
L3Rlc3RzL0pTRXhwb3J0VGVzdHMubW06CisgICAgICAgICogQVBJL3Rlc3RzL0pTTm9kZS5jOgor
ICAgICAgICAqIEFQSS90ZXN0cy9KU05vZGVMaXN0LmM6CisgICAgICAgICogQVBJL3Rlc3RzL05v
ZGUuYzoKKyAgICAgICAgKiBBUEkvdGVzdHMvTm9kZUxpc3QuYzoKKyAgICAgICAgKiBBUEkvdGVz
dHMvbWluaWRvbS5jOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLmM6CisgICAgICAgICht
YWluKToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5jcHA6IEFkZGVkLgorICAgICAgICAo
QVBJU3RyaW5nOjpBUElTdHJpbmcpOgorICAgICAgICAoQVBJU3RyaW5nOjp+QVBJU3RyaW5nKToK
KyAgICAgICAgKEFQSVN0cmluZzo6b3BlcmF0b3IgSlNTdHJpbmdSZWYpOgorICAgICAgICAoQVBJ
Q29udGV4dDo6QVBJQ29udGV4dCk6CisgICAgICAgIChBUElDb250ZXh0Ojp+QVBJQ29udGV4dCk6
CisgICAgICAgIChBUElDb250ZXh0OjpvcGVyYXRvciBKU0dsb2JhbENvbnRleHRSZWYpOgorICAg
ICAgICAoQVBJVmVjdG9yOjpBUElWZWN0b3IpOgorICAgICAgICAoQVBJVmVjdG9yOjp+QVBJVmVj
dG9yKToKKyAgICAgICAgKEFQSVZlY3Rvcjo6YXBwZW5kKToKKyAgICAgICAgKHRlc3RDQVBJVmlh
Q3BwKToKKyAgICAgICAgKFRlc3RBUEk6OmV2YWx1YXRlU2NyaXB0KToKKyAgICAgICAgKFRlc3RB
UEk6OmNhbGxGdW5jdGlvbik6CisgICAgICAgIChUZXN0QVBJOjpmdW5jdGlvblJldHVybnNUcnVl
KToKKyAgICAgICAgKFRlc3RBUEk6OmNoZWNrKToKKyAgICAgICAgKFRlc3RBUEk6OmNoZWNrSlNB
bmRBUElNYXRjaCk6CisgICAgICAgIChUZXN0QVBJOjppbnRlcmVzdGluZ09iamVjdHMpOgorICAg
ICAgICAoVGVzdEFQSTo6aW50ZXJlc3RpbmdLZXlzKToKKyAgICAgICAgKFRlc3RBUEk6OnJ1bik6
CisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkubW06CisgICAgICAgICh0ZXN0T2JqZWN0aXZl
Q0FQSU1haW4pOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogY29uZmlnLmg6CisgICAgICAgICogcG9zdHByb2Nlc3MtaGVhZGVy
cy5zaDoKKwogMjAxOC0wNy0xOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzMzk5OC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VQcml2YXRlLmgKaW5kZXggMTM3NTk0OTcyNzVlNThiZWIw
YzEyMjEzNTVmOWZiZWQ0M2QzYjFhNS4uYjZjOTIwNGM0Y2JkNzJjNGY3YzlmNmExZjU0Y2Q1ZDM0
MTU2ZDE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VQcml2
YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VQcml2YXRlLmgKQEAg
LTQzLDcgKzQzLDcgQEAgb3ducyBhIGxhcmdlIG5vbi1HQyBtZW1vcnkgcmVnaW9uLiBDYWxsaW5n
IHRoaXMgZnVuY3Rpb24gd2lsbCBlbmNvdXJhZ2UgdGhlCiBnYXJiYWdlIGNvbGxlY3RvciB0byBj
b2xsZWN0IHNvb24sIGhvcGluZyB0byByZWNsYWltIHRoYXQgbGFyZ2Ugbm9uLUdDIG1lbW9yeQog
cmVnaW9uLgogKi8KLUpTX0VYUE9SVCB2b2lkIEpTUmVwb3J0RXh0cmFNZW1vcnlDb3N0KEpTQ29u
dGV4dFJlZiBjdHgsIHNpemVfdCBzaXplKSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VY
UE9SVCB2b2lkIEpTUmVwb3J0RXh0cmFNZW1vcnlDb3N0KEpTQ29udGV4dFJlZiBjdHgsIHNpemVf
dCBzaXplKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogSlNf
RVhQT1JUIHZvaWQgSlNEaXNhYmxlR0NUaW1lcih2b2lkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0LmgKaW5kZXggMTk0ZTM1MmJmZTdhZTc1ZjIzNThjZWU2M2Q0NDhmZTFmYTI0
ZDM4Mi4uODljODdmOWUyZTFmZjFiMTcxYjFlYmJhOGM0NTIxNTlmNDRmNDc1YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5oCkBAIC03OCw3ICs3OCw3IEBAIE5TX0NMQVNTX0FW
QUlMQUJMRSgxMF85LCA3XzApCiBAcGFyYW0gc291cmNlVVJMIEEgVVJMIGZvciB0aGUgc2NyaXB0
J3Mgc291cmNlIGZpbGUuIFVzZWQgYnkgZGVidWdnZXJzIGFuZCB3aGVuIHJlcG9ydGluZyBleGNl
cHRpb25zLiBUaGlzIHBhcmFtZXRlciBpcyBpbmZvcm1hdGl2ZSBvbmx5OiBpdCBkb2VzIG5vdCBj
aGFuZ2UgdGhlIGJlaGF2aW9yIG9mIHRoZSBzY3JpcHQuCiBAcmVzdWx0IFRoZSBsYXN0IHZhbHVl
IGdlbmVyYXRlZCBieSB0aGUgc2NyaXB0LgogKi8KLS0gKEpTVmFsdWUgKilldmFsdWF0ZVNjcmlw
dDooTlNTdHJpbmcgKilzY3JpcHQgd2l0aFNvdXJjZVVSTDooTlNVUkwgKilzb3VyY2VVUkwgTlNf
QVZBSUxBQkxFKDEwXzEwLCA4XzApOworLSAoSlNWYWx1ZSAqKWV2YWx1YXRlU2NyaXB0OihOU1N0
cmluZyAqKXNjcmlwdCB3aXRoU291cmNlVVJMOihOU1VSTCAqKXNvdXJjZVVSTCBKU0NfQVBJX0FW
QUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qIQogQG1ldGhvZGdyb3VwIENh
bGxiYWNrIEFjY2Vzc29ycwpAQCAtMTAxLDcgKzEwMSw3IEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgx
MF85LCA3XzApCiAgYSBjYWxsYmFjayBmcm9tIEphdmFTY3JpcHQgdGhpcyBtZXRob2Qgd2lsbCBy
ZXR1cm4gbmlsLgogQHJlc3VsdCBUaGUgY3VycmVudGx5IGV4ZWN1dGluZyBKYXZhU2NyaXB0IGZ1
bmN0aW9uIG9yIG5pbCBpZiB0aGVyZSBpc24ndCBvbmUuCiAqLwotKyAoSlNWYWx1ZSAqKWN1cnJl
bnRDYWxsZWUgTlNfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworKyAoSlNWYWx1ZSAqKWN1cnJlbnRD
YWxsZWUgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEK
IEBtZXRob2QKQEAgLTE3Niw3ICsxNzYsNyBAQCBOU19DTEFTU19BVkFJTEFCTEUoMTBfOSwgN18w
KQogQHByb3BlcnR5CiBAZGlzY3Vzc2lvbiBOYW1lIG9mIHRoZSBKU0NvbnRleHQuIEV4cG9zZWQg
d2hlbiByZW1vdGUgZGVidWdnaW5nIHRoZSBjb250ZXh0LgogKi8KLUBwcm9wZXJ0eSAoY29weSkg
TlNTdHJpbmcgKm5hbWUgTlNfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworQHByb3BlcnR5IChjb3B5
KSBOU1N0cmluZyAqbmFtZSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4w
KSk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHRQcml2YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFByaXZh
dGUuaAppbmRleCA3ZDFkMGNiZGJiNDhjMTcwZWE3NmQyYmQ2MmQ3MzBjMjAzOWQ2YTk0Li5mZjk2
MjJhZGRmNjBiN2MxMDM1N2RhY2NmMWM2ZjQxZWNiODYxZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFByaXZhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ29udGV4dFByaXZhdGUuaApAQCAtMzYsMTkgKzM2LDE5IEBACiBAcHJv
cGVydHkKIEBkaXNjdXNzaW9uIFJlbW90ZSBpbnNwZWN0aW9uIHNldHRpbmcgb2YgdGhlIEpTQ29u
dGV4dC4gRGVmYXVsdCB2YWx1ZSBpcyBZRVMuCiAqLwotQHByb3BlcnR5IChzZXR0ZXI9X3NldFJl
bW90ZUluc3BlY3Rpb25FbmFibGVkOikgQk9PTCBfcmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQgTlNf
QVZBSUxBQkxFKDEwXzEwLCA4XzApOworQHByb3BlcnR5IChzZXR0ZXI9X3NldFJlbW90ZUluc3Bl
Y3Rpb25FbmFibGVkOikgQk9PTCBfcmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQgSlNDX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEKIEBwcm9wZXJ0eQogQGRpc2N1
c3Npb24gU2V0IHdoZXRoZXIgb3Igbm90IHRoZSBuYXRpdmUgY2FsbCBzdGFjayBpcyBpbmNsdWRl
ZCB3aGVuIHJlcG9ydGluZyBleGNlcHRpb25zLiBEZWZhdWx0IHZhbHVlIGlzIFlFUy4KICovCi1A
cHJvcGVydHkgKHNldHRlcj1fc2V0SW5jbHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5n
RXhjZXB0aW9uczopIEJPT0wgX2luY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4
Y2VwdGlvbnMgTlNfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworQHByb3BlcnR5IChzZXR0ZXI9X3Nl
dEluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnM6KSBCT09MIF9p
bmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zIEpTQ19BUElfQVZB
SUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBAcHJvcGVydHkKIEBkaXNj
dXNzaW9uIFNldCB0aGUgcnVuIGxvb3AgdGhlIFdlYiBJbnNwZWN0b3IgZGVidWdnZXIgc2hvdWxk
IHVzZSB3aGVuIGV2YWx1YXRpbmcgSmF2YVNjcmlwdCBpbiB0aGUgSlNDb250ZXh0LgogKi8KLUBw
cm9wZXJ0eSAoc2V0dGVyPV9zZXREZWJ1Z2dlclJ1bkxvb3A6KSBDRlJ1bkxvb3BSZWYgX2RlYnVn
Z2VyUnVuTG9vcCBOU19BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitAcHJvcGVydHkgKHNldHRlcj1f
c2V0RGVidWdnZXJSdW5Mb29wOikgQ0ZSdW5Mb29wUmVmIF9kZWJ1Z2dlclJ1bkxvb3AgSlNDX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiBAZW5kCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oCmluZGV4IGUxNWNhZTU3NTc2NDhhMmZjOGVh
MjE3MjFlZWY1MzViYWQzNTdiMjcuLjI4ZDBhNjdlOWFlMzI2MjExYWQ5NGRlMzZjNTI2NGE3NTQy
ZmFmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVm
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuaApAQCAtNTMs
NyArNTMsNyBAQCBleHRlcm4gIkMiIHsKICBKU0NvbnRleHRHcm91cCdzIHJ1biBsb29wIG9uY2Ug
aXQgaGFzIGJlZW4gY3JlYXRlZC4KIEByZXN1bHQgVGhlIGNyZWF0ZWQgSlNDb250ZXh0R3JvdXAu
CiAqLwotSlNfRVhQT1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdyb3VwQ3JlYXRlKHZv
aWQpIENGX0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQT1JUIEpTQ29udGV4dEdyb3VwUmVm
IEpTQ29udGV4dEdyb3VwQ3JlYXRlKHZvaWQpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42
KSwgaW9zKDcuMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtNjEsMTQgKzYxLDE0IEBAIEpTX0VY
UE9SVCBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHcm91cENyZWF0ZSh2b2lkKSBDRl9BVkFJ
TEFCTEUoMTBfNiwgN18wKTsKIEBwYXJhbSBncm91cCBUaGUgSlNDb250ZXh0R3JvdXAgdG8gcmV0
YWluLgogQHJlc3VsdCBBIEpTQ29udGV4dEdyb3VwIHRoYXQgaXMgdGhlIHNhbWUgYXMgZ3JvdXAu
CiAqLwotSlNfRVhQT1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdyb3VwUmV0YWluKEpT
Q29udGV4dEdyb3VwUmVmIGdyb3VwKSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9S
VCBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHcm91cFJldGFpbihKU0NvbnRleHRHcm91cFJl
ZiBncm91cCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7CiAKIC8q
IQogQGZ1bmN0aW9uCiBAYWJzdHJhY3QgUmVsZWFzZXMgYSBKYXZhU2NyaXB0IGNvbnRleHQgZ3Jv
dXAuCiBAcGFyYW0gZ3JvdXAgVGhlIEpTQ29udGV4dEdyb3VwIHRvIHJlbGVhc2UuCiAqLwotSlNf
RVhQT1JUIHZvaWQgSlNDb250ZXh0R3JvdXBSZWxlYXNlKEpTQ29udGV4dEdyb3VwUmVmIGdyb3Vw
KSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCB2b2lkIEpTQ29udGV4dEdyb3Vw
UmVsZWFzZShKU0NvbnRleHRHcm91cFJlZiBncm91cCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjYpLCBpb3MoNy4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC04Myw3ICs4Myw3IEBAIEpT
X0VYUE9SVCB2b2lkIEpTQ29udGV4dEdyb3VwUmVsZWFzZShKU0NvbnRleHRHcm91cFJlZiBncm91
cCkgQ0ZfQVZBSUxBQkxFKDEwXzYsCiAgTlVMTCB0byB1c2UgdGhlIGRlZmF1bHQgb2JqZWN0IGNs
YXNzLgogQHJlc3VsdCBBIEpTR2xvYmFsQ29udGV4dCB3aXRoIGEgZ2xvYmFsIG9iamVjdCBvZiBj
bGFzcyBnbG9iYWxPYmplY3RDbGFzcy4KICovCi1KU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVm
IEpTR2xvYmFsQ29udGV4dENyZWF0ZShKU0NsYXNzUmVmIGdsb2JhbE9iamVjdENsYXNzKSBDRl9B
VkFJTEFCTEUoMTBfNSwgN18wKTsKK0pTX0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgSlNHbG9i
YWxDb250ZXh0Q3JlYXRlKEpTQ2xhc3NSZWYgZ2xvYmFsT2JqZWN0Q2xhc3MpIEpTQ19BUElfQVZB
SUxBQkxFKG1hY29zeCgxMC41KSwgaW9zKDcuMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtOTcs
NyArOTcsNyBAQCBKU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpTR2xvYmFsQ29udGV4dENy
ZWF0ZShKU0NsYXNzUmVmIGdsb2JhbE9iamVjdENsYXNzKQogQHJlc3VsdCBBIEpTR2xvYmFsQ29u
dGV4dCB3aXRoIGEgZ2xvYmFsIG9iamVjdCBvZiBjbGFzcyBnbG9iYWxPYmplY3RDbGFzcyBhbmQg
YSBjb250ZXh0CiAgZ3JvdXAgZXF1YWwgdG8gZ3JvdXAuCiAqLwotSlNfRVhQT1JUIEpTR2xvYmFs
Q29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKEpTQ29udGV4dEdyb3VwUmVm
IGdyb3VwLCBKU0NsYXNzUmVmIGdsb2JhbE9iamVjdENsYXNzKSBDRl9BVkFJTEFCTEUoMTBfNiwg
N18wKTsKK0pTX0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgSlNHbG9iYWxDb250ZXh0Q3JlYXRl
SW5Hcm91cChKU0NvbnRleHRHcm91cFJlZiBncm91cCwgSlNDbGFzc1JlZiBnbG9iYWxPYmplY3RD
bGFzcykgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7CiAKIC8qIQog
QGZ1bmN0aW9uCkBAIC0xMjgsNyArMTI4LDcgQEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTQ29u
dGV4dEdldEdsb2JhbE9iamVjdChKU0NvbnRleHRSZWYgY3R4KTsKIEBwYXJhbSBjdHggVGhlIEpT
Q29udGV4dCB3aG9zZSBncm91cCB5b3Ugd2FudCB0byBnZXQuCiBAcmVzdWx0IGN0eCdzIGdyb3Vw
LgogKi8KLUpTX0VYUE9SVCBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHZXRHcm91cChKU0Nv
bnRleHRSZWYgY3R4KSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCBKU0NvbnRl
eHRHcm91cFJlZiBKU0NvbnRleHRHZXRHcm91cChKU0NvbnRleHRSZWYgY3R4KSBKU0NfQVBJX0FW
QUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTEz
Niw3ICsxMzYsNyBAQCBKU19FWFBPUlQgSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R2V0R3Jv
dXAoSlNDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEwXwogQHBhcmFtIGN0eCBUaGUgSlND
b250ZXh0IHdob3NlIGdsb2JhbCBjb250ZXh0IHlvdSB3YW50IHRvIGdldC4KIEByZXN1bHQgY3R4
J3MgZ2xvYmFsIGNvbnRleHQuCiAqLwotSlNfRVhQT1JUIEpTR2xvYmFsQ29udGV4dFJlZiBKU0Nv
bnRleHRHZXRHbG9iYWxDb250ZXh0KEpTQ29udGV4dFJlZiBjdHgpIENGX0FWQUlMQUJMRSgxMF83
LCA3XzApOworSlNfRVhQT1JUIEpTR2xvYmFsQ29udGV4dFJlZiBKU0NvbnRleHRHZXRHbG9iYWxD
b250ZXh0KEpTQ29udGV4dFJlZiBjdHgpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC43KSwg
aW9zKDcuMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTQ2LDcgKzE0Niw3IEBAIEpTX0VYUE9S
VCBKU0dsb2JhbENvbnRleHRSZWYgSlNDb250ZXh0R2V0R2xvYmFsQ29udGV4dChKU0NvbnRleHRS
ZWYgY3R4KSBDRl9BVkFJCiBAZGlzY3Vzc2lvbiBBIEpTR2xvYmFsQ29udGV4dCdzIG5hbWUgaXMg
ZXhwb3NlZCBmb3IgcmVtb3RlIGRlYnVnZ2luZyB0byBtYWtlIGl0CiBlYXNpZXIgdG8gaWRlbnRp
ZnkgdGhlIGNvbnRleHQgeW91IHdvdWxkIGxpa2UgdG8gYXR0YWNoIHRvLgogKi8KLUpTX0VYUE9S
VCBKU1N0cmluZ1JlZiBKU0dsb2JhbENvbnRleHRDb3B5TmFtZShKU0dsb2JhbENvbnRleHRSZWYg
Y3R4KSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitKU19FWFBPUlQgSlNTdHJpbmdSZWYgSlNH
bG9iYWxDb250ZXh0Q29weU5hbWUoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkgSlNDX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTU0
LDcgKzE1NCw3IEBAIEpTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU0dsb2JhbENvbnRleHRDb3B5TmFt
ZShKU0dsb2JhbENvbnRleHRSZWYgY3R4KSBDRl9BVkFJTEFCCiBAcGFyYW0gY3R4IFRoZSBKU0ds
b2JhbENvbnRleHQgdGhhdCB5b3Ugd2FudCB0byBuYW1lLgogQHBhcmFtIG5hbWUgVGhlIHJlbW90
ZSBkZWJ1Z2dpbmcgbmFtZSB0byBzZXQgb24gY3R4LgogKi8KLUpTX0VYUE9SVCB2b2lkIEpTR2xv
YmFsQ29udGV4dFNldE5hbWUoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgbmFt
ZSkgQ0ZfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxDb250
ZXh0U2V0TmFtZShKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBuYW1lKSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSk7CiAKICNpZmRlZiBfX2NwbHVz
cGx1cwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRS
ZWZJbnRlcm5hbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWZJbnRl
cm5hbC5oCmluZGV4IDc5ZDdlYjZmMzllN2UyY2E4ZjRhOWI5NGYyNzIyNmRiMmY3MDUyOTUuLjlk
NGYxOGEyMjk1MDcyNmQ5MTAyZDI1MGI1Y2FhMGNlN2FkNWM3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmSW50ZXJuYWwuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZkludGVybmFsLmgKQEAgLTQyLDcgKzQyLDcg
QEAgZXh0ZXJuICJDIiB7CiBAYWJzdHJhY3QgR2V0cyB0aGUgcnVuIGxvb3AgdXNlZCBieSB0aGUg
V2ViIEluc3BlY3RvciBkZWJ1Z2dlciB3aGVuIGV2YWx1YXRpbmcgSmF2YVNjcmlwdCBpbiB0aGlz
IGNvbnRleHQuCiBAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgd2hvc2Ugc2V0dGluZyB5
b3Ugd2FudCB0byBnZXQuCiAqLwotSlNfRVhQT1JUIENGUnVuTG9vcFJlZiBKU0dsb2JhbENvbnRl
eHRHZXREZWJ1Z2dlclJ1bkxvb3AoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxF
KDEwXzEwLCA4XzApOworSlNfRVhQT1JUIENGUnVuTG9vcFJlZiBKU0dsb2JhbENvbnRleHRHZXRE
ZWJ1Z2dlclJ1bkxvb3AoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkgSlNDX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtNTAsNyArNTAs
NyBAQCBKU19FWFBPUlQgQ0ZSdW5Mb29wUmVmIEpTR2xvYmFsQ29udGV4dEdldERlYnVnZ2VyUnVu
TG9vcChKU0dsb2JhbENvbnRleHRSZWYgY3R4KQogQHBhcmFtIGN0eCBUaGUgSlNHbG9iYWxDb250
ZXh0IHRoYXQgeW91IHdhbnQgdG8gY2hhbmdlLgogQHBhcmFtIHJ1bkxvb3AgVGhlIG5ldyB2YWx1
ZSBvZiB0aGUgc2V0dGluZyBmb3IgdGhlIGNvbnRleHQuCiAqLwotSlNfRVhQT1JUIHZvaWQgSlNH
bG9iYWxDb250ZXh0U2V0RGVidWdnZXJSdW5Mb29wKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIENG
UnVuTG9vcFJlZiBydW5Mb29wKSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitKU19FWFBPUlQg
dm9pZCBKU0dsb2JhbENvbnRleHRTZXREZWJ1Z2dlclJ1bkxvb3AoSlNHbG9iYWxDb250ZXh0UmVm
IGN0eCwgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4x
MCksIGlvcyg4LjApKTsKICNlbmRpZgogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmUHJpdmF0ZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWZQcml2YXRlLmgKaW5kZXggMTk2MDRlYTc0
OTM3ZWZkYTk2N2NlM2RmNTc3N2QyYTE1MTRkYThkYy4uZWM2NzZkOGM4NzE0ODNmODNmY2MzYzU2
NGI1NTRlODE3MDM3MjJlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NvbnRleHRSZWZQcml2YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHRSZWZQcml2YXRlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgZXh0ZXJuICJDIiB7CiBAcGFyYW0g
Y3R4IFRoZSBKU0NvbnRleHQgd2hvc2UgYmFja3RyYWNlIHlvdSB3YW50IHRvIGdldAogQHJlc3Vs
dCBBIHN0cmluZyBjb250YWluaW5nIHRoZSBiYWNrdHJhY2UKICovCi1KU19FWFBPUlQgSlNTdHJp
bmdSZWYgSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKEpTQ29udGV4dFJlZiBjdHgsIHVuc2lnbmVk
IG1heFN0YWNrU2l6ZSkgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgSlNTdHJp
bmdSZWYgSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKEpTQ29udGV4dFJlZiBjdHgsIHVuc2lnbmVk
IG1heFN0YWNrU2l6ZSkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7
CiAgICAgCiAKIC8qISAKQEAgLTg1LDE0ICs4NSwxNCBAQCB0eXBlZGVmIGJvb2wKICBuZWVkIHRv
IGNhbGwgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGltaXQgYmVmb3JlIHlvdSBzdGFy
dCBleGVjdXRpbmcKICBhbnkgc2NyaXB0cy4KICovCi1KU19FWFBPUlQgdm9pZCBKU0NvbnRleHRH
cm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdChKU0NvbnRleHRHcm91cFJlZiBncm91cCwgZG91Ymxl
IGxpbWl0LCBKU1Nob3VsZFRlcm1pbmF0ZUNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0
KSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCB2b2lkIEpTQ29udGV4dEdyb3Vw
U2V0RXhlY3V0aW9uVGltZUxpbWl0KEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwLCBkb3VibGUgbGlt
aXQsIEpTU2hvdWxkVGVybWluYXRlQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpIEpT
Q19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9zKDcuMCkpOwogCiAvKiEKIEBmdW5jdGlv
bgogQGFic3RyYWN0IENsZWFycyB0aGUgc2NyaXB0IGV4ZWN1dGlvbiB0aW1lIGxpbWl0LgogQHBh
cmFtIGdyb3VwIFRoZSBKYXZhU2NyaXB0IGNvbnRleHQgZ3JvdXAgdGhhdCB0aGUgdGltZSBsaW1p
dCBpcyBjbGVhcmVkIG9uLgogKi8KLUpTX0VYUE9SVCB2b2lkIEpTQ29udGV4dEdyb3VwQ2xlYXJF
eGVjdXRpb25UaW1lTGltaXQoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXApIENGX0FWQUlMQUJMRSgx
MF82LCA3XzApOworSlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3JvdXBDbGVhckV4ZWN1dGlvblRp
bWVMaW1pdChKU0NvbnRleHRHcm91cFJlZiBncm91cCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjYpLCBpb3MoNy4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC0xMDEsNyArMTAxLDcgQEAg
SlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3JvdXBDbGVhckV4ZWN1dGlvblRpbWVMaW1pdChKU0Nv
bnRleHRHcm91cFJlZiBncm91cCkgQ0YKIEByZXN1bHQgVGhlIHZhbHVlIG9mIHRoZSBzZXR0aW5n
LCB0cnVlIGlmIHJlbW90ZSBpbnNwZWN0aW9uIGlzIGVuYWJsZWQsIG90aGVyd2lzZSBmYWxzZS4K
IEBkaXNjdXNzaW9uIFJlbW90ZSBpbnNwZWN0aW9uIGlzIHRydWUgYnkgZGVmYXVsdC4KICovCi1K
U19FWFBPUlQgYm9vbCBKU0dsb2JhbENvbnRleHRHZXRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZChK
U0dsb2JhbENvbnRleHRSZWYgY3R4KSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitKU19FWFBP
UlQgYm9vbCBKU0dsb2JhbENvbnRleHRHZXRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZChKU0dsb2Jh
bENvbnRleHRSZWYgY3R4KSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4w
KSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC0xMDksNyArMTA5LDcgQEAgSlNfRVhQT1JUIGJvb2wg
SlNHbG9iYWxDb250ZXh0R2V0UmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQoSlNHbG9iYWxDb250ZXh0
UmVmIGN0eCkKIEBwYXJhbSBjdHggVGhlIEpTR2xvYmFsQ29udGV4dCB0aGF0IHlvdSB3YW50IHRv
IGNoYW5nZS4KIEBwYXJhbSBlbmFibGVkIFRoZSBuZXcgcmVtb3RlIGluc3BlY3Rpb24gZW5hYmxl
ZCBzZXR0aW5nIGZvciB0aGUgY29udGV4dC4KICovCi1KU19FWFBPUlQgdm9pZCBKU0dsb2JhbENv
bnRleHRTZXRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZChKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBi
b29sIGVuYWJsZWQpIENGX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsgICAgCitKU19FWFBPUlQgdm9p
ZCBKU0dsb2JhbENvbnRleHRTZXRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZChKU0dsb2JhbENvbnRl
eHRSZWYgY3R4LCBib29sIGVuYWJsZWQpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCks
IGlvcyg4LjApKTsgICAgCiAKIC8qIQogQGZ1bmN0aW9uCkBAIC0xMTgsNyArMTE4LDcgQEAgSlNf
RVhQT1JUIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0UmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQoSlNH
bG9iYWxDb250ZXh0UmVmIGN0eCwKIEByZXN1bHQgVGhlIHZhbHVlIG9mIHRoZSBzZXR0aW5nLCB0
cnVlIGlmIHJlbW90ZSBpbnNwZWN0aW9uIGlzIGVuYWJsZWQsIG90aGVyd2lzZSBmYWxzZS4KIEBk
aXNjdXNzaW9uIFRoaXMgc2V0dGluZyBpcyB0cnVlIGJ5IGRlZmF1bHQuCiAqLwotSlNfRVhQT1JU
IGJvb2wgSlNHbG9iYWxDb250ZXh0R2V0SW5jbHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0
aW5nRXhjZXB0aW9ucyhKU0dsb2JhbENvbnRleHRSZWYgY3R4KSBDRl9BVkFJTEFCTEUoMTBfMTAs
IDhfMCk7CitKU19FWFBPUlQgYm9vbCBKU0dsb2JhbENvbnRleHRHZXRJbmNsdWRlc05hdGl2ZUNh
bGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpIEpT
Q19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBAZnVuY3Rp
b24KQEAgLTEyNiw3ICsxMjYsNyBAQCBKU19FWFBPUlQgYm9vbCBKU0dsb2JhbENvbnRleHRHZXRJ
bmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zKAogQHBhcmFtIGN0
eCBUaGUgSlNHbG9iYWxDb250ZXh0IHRoYXQgeW91IHdhbnQgdG8gY2hhbmdlLgogQHBhcmFtIGlu
Y2x1ZGVzTmF0aXZlQ2FsbFN0YWNrIFRoZSBuZXcgdmFsdWUgb2YgdGhlIHNldHRpbmcgZm9yIHRo
ZSBjb250ZXh0LgogKi8KLUpTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldEluY2x1ZGVz
TmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMoSlNHbG9iYWxDb250ZXh0UmVm
IGN0eCwgYm9vbCBpbmNsdWRlc05hdGl2ZUNhbGxTdGFjaykgQ0ZfQVZBSUxBQkxFKDEwXzEwLCA4
XzApOworSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0SW5jbHVkZXNOYXRpdmVDYWxs
U3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucyhKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBib29s
IGluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTAp
LCBpb3MoOC4wKSk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5oCmluZGV4IDAxMDczZmFkOTdlNzBiNzZiZDZiNjZhMzcz
M2FmMjYxY2M1Mjc0OWMuLjQxODA3NGJjNDdkNjZjMTU4NDA3ZmU1ODM4MzY5YTUxNWMwMzM1ZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLmgKQEAgLTU3LDcg
KzU3LDcgQEAgTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzksIDdfMCkKIEByZXN1bHQgVGhlIG5ldyBK
U01hbmFnZWRWYWx1ZS4KICovCiArIChKU01hbmFnZWRWYWx1ZSAqKW1hbmFnZWRWYWx1ZVdpdGhW
YWx1ZTooSlNWYWx1ZSAqKXZhbHVlOwotKyAoSlNNYW5hZ2VkVmFsdWUgKiltYW5hZ2VkVmFsdWVX
aXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBhbmRPd25lcjooaWQpb3duZXIgTlNfQVZBSUxBQkxF
KDEwXzEwLCA4XzApOworKyAoSlNNYW5hZ2VkVmFsdWUgKiltYW5hZ2VkVmFsdWVXaXRoVmFsdWU6
KEpTVmFsdWUgKil2YWx1ZSBhbmRPd25lcjooaWQpb3duZXIgSlNDX0FQSV9BVkFJTEFCTEUobWFj
b3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEKIEBtZXRob2QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU09iamVjdFJlZi5jcHAKaW5kZXggNTY2YjczNjJmMWI1ZGZlNDllZjNkOTZjZjU3
MjRlZjQ4NzhmYmY4MS4uNTQ1MWEyZjlhNTYxMzQ3YTkyNTgxZDVmM2U0NDI0NjI5NjlkNDBmZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKQEAgLTM2Niw2ICsz
NjYsMTAwIEBAIHZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09i
amVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlCiAgICAgaGFuZGxlRXhjZXB0aW9uSWZO
ZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbik7CiB9CiAKK2Jvb2wgSlNPYmplY3RIYXNQcm9w
ZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYg
a2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwor
ICAgIElkZW50aWZpZXIgaWRlbnQgPSB0b0pTKGV4ZWMsIGtleSkudG9Qcm9wZXJ0eUtleShleGVj
KTsKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlv
bikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpOwor
ICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK0pTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9wZXJ0eUtleShK
U0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYga2V5LCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0xv
Y2tIb2xkZXIgbG9ja2VyKHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09Q
RSh2bSk7CisKKyAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CisgICAgSWRl
bnRpZmllciBpZGVudCA9IHRvSlMoZXhlYywga2V5KS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAg
IGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhjZXB0aW9uKSA9PSBF
eGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IEpTVmFsdWUganNWYWx1ZSA9IGpzT2JqZWN0LT5nZXQoZXhlYywgaWRlbnQpOworICAgIGhhbmRs
ZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pOworICAgIHJldHVybiB0
b1JlZihleGVjLCBqc1ZhbHVlKTsKK30KKwordm9pZCBKU09iamVjdFNldFByb3BlcnR5S2V5KEpT
Q29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFs
dWVSZWYgdmFsdWUsIEpTUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoIWN0eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pT
KGN0eCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2Vy
KHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisKKyAgICBK
U09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CisgICAgSlNWYWx1ZSBqc1ZhbHVlID0g
dG9KUyhleGVjLCB2YWx1ZSk7CisKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gdG9KUyhleGVjLCBr
ZXkpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVk
KHNjb3BlLCBleGVjLCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCisg
ICAgICAgIHJldHVybjsKKworICAgIGJvb2wgZG9lc05vdEhhdmVQcm9wZXJ0eSA9IGF0dHJpYnV0
ZXMgJiYgIWpzT2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBpZGVudCk7CisgICAgaWYgKExJS0VM
WSghc2NvcGUuZXhjZXB0aW9uKCkpKSB7CisgICAgICAgIGlmIChkb2VzTm90SGF2ZVByb3BlcnR5
KSB7CisgICAgICAgICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzYyhqc1ZhbHVlLCBhdHRyaWJ1
dGVzKTsKKyAgICAgICAgICAgIGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blBy
b3BlcnR5KGpzT2JqZWN0LCBleGVjLCBpZGVudCwgZGVzYywgZmFsc2UpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoanNPYmplY3QpOworICAgICAg
ICAgICAganNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KGpzT2JqZWN0LCBleGVjLCBpZGVu
dCwganNWYWx1ZSwgc2xvdCk7CisgICAgICAgIH0KKyAgICB9CisgICAgaGFuZGxlRXhjZXB0aW9u
SWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbik7Cit9CisKK2Jvb2wgSlNPYmplY3REZWxl
dGVQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFs
dWVSZWYga2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKCFjdHgpIHsKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfQ0FUQ0hfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmpl
Y3QpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSB0b0pTKGV4ZWMsIGtleSkudG9Qcm9wZXJ0eUtl
eShleGVjKTsKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4
Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxl
dGVQcm9wZXJ0eShqc09iamVjdCwgZXhlYywgaWRlbnQpOworICAgIGhhbmRsZUV4Y2VwdGlvbklm
TmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
IEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoSlNDb250ZXh0UmVmIGN0eCwg
SlNPYmplY3RSZWYgb2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pCiB7CiAgICAgaWYgKCFjdHgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuaAppbmRleCA5NWQ1M2I3ZjRlNThlOTZmMGNiYzMxNTk1YWY5YzQ2MTk3OGFhNDNk
Li5kYjU1NjlhNmNiZDBlZTBiN2JjYmZjYzNlMjkyZjUzMjk3NWU2NzZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oCkBAIC00NDEsNyArNDQxLDcgQEAgSlNfRVhQT1JU
IEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUNvbnN0cnVjdG9yKEpTQ29udGV4dFJlZiBjdHgsIEpT
Q2xhc3NSZWYganNDbGEKICBAZGlzY3Vzc2lvbiBUaGUgYmVoYXZpb3Igb2YgdGhpcyBmdW5jdGlv
biBkb2VzIG5vdCBleGFjdGx5IG1hdGNoIHRoZSBiZWhhdmlvciBvZiB0aGUgYnVpbHQtaW4gQXJy
YXkgY29uc3RydWN0b3IuIFNwZWNpZmljYWxseSwgaWYgb25lIGFyZ3VtZW50IAogIGlzIHN1cHBs
aWVkLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gYXJyYXkgd2l0aCBvbmUgZWxlbWVudC4KICAq
LwotSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUFycmF5KEpTQ29udGV4dFJlZiBj
dHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQT1JU
IEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUFycmF5KEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBh
cmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9zKDcuMCkpOwogCiAv
KiEKICBAZnVuY3Rpb24KQEAgLTQ1Miw3ICs0NTIsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYg
SlNPYmplY3RNYWtlQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQs
CiAgQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRv
IHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJl
IHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0IEEgSlNPYmplY3QgdGhhdCBpcyBhIERh
dGUuCiAgKi8KLUpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VEYXRlKEpTQ29udGV4
dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50
c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNf
RVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZURhdGUoSlNDb250ZXh0UmVmIGN0eCwgc2l6
ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7
CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtNDYzLDcgKzQ2Myw3IEBAIEpTX0VYUE9SVCBKU09iamVj
dFJlZiBKU09iamVjdE1ha2VEYXRlKEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjCiAgQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdo
aWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5v
dCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0IEEgSlNPYmplY3QgdGhhdCBp
cyBhIEVycm9yLgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRXJyb3Io
SlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdf
MCk7CitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRXJyb3IoSlNDb250ZXh0UmVm
IGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjYpLCBp
b3MoNy4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtNDc0LDcgKzQ3NCw3IEBAIEpTX0VYUE9S
VCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VFcnJvcihKU0NvbnRleHRSZWYgY3R4LCBzaXplX3Qg
YXJndW1lbnRDb3VudCwKICBAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVS
ZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5
b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1bHQgQSBKU09iamVj
dCB0aGF0IGlzIGEgUmVnRXhwLgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RN
YWtlUmVnRXhwKEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBK
U1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJM
RSgxMF82LCA3XzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVJlZ0V4cChK
U0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNv
c3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTUzNiw5ICs1MzYsOSBA
QCBKU19FWFBPUlQgSlNWYWx1ZVJlZiBKU09iamVjdEdldFByb3BlcnR5KEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSgogQHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRl
eHQgdG8gdXNlLgogQHBhcmFtIG9iamVjdCBUaGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91
IHdhbnQgdG8gc2V0LgogQHBhcmFtIHByb3BlcnR5TmFtZSBBIEpTU3RyaW5nIGNvbnRhaW5pbmcg
dGhlIHByb3BlcnR5J3MgbmFtZS4KLUBwYXJhbSB2YWx1ZSBBIEpTVmFsdWUgdG8gdXNlIGFzIHRo
ZSBwcm9wZXJ0eSdzIHZhbHVlLgotQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1Zh
bHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwg
aWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KK0BwYXJhbSB2YWx1ZSBB
IEpTVmFsdWVSZWYgdG8gdXNlIGFzIHRoZSBwcm9wZXJ0eSdzIHZhbHVlLgogQHBhcmFtIGF0dHJp
YnV0ZXMgQSBsb2dpY2FsbHkgT1JlZCBzZXQgb2YgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgdG8gZ2l2
ZSB0byB0aGUgcHJvcGVydHkuCitAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFs
dWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBp
ZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogKi8KIEpTX0VYUE9SVCB2
b2lkIEpTT2JqZWN0U2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2Jq
ZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYgdmFsdWUsIEpTUHJvcGVy
dHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAKQEAgLTU1
Myw2ICs1NTMsNTQgQEAgSlNfRVhQT1JUIHZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eShKU0NvbnRl
eHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW4KICovCiBKU19FWFBPUlQgYm9v
bCBKU09iamVjdERlbGV0ZVByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9i
amVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwog
CisvKiEKK0BmdW5jdGlvbgorQGFic3RyYWN0IFRlc3RzIHdoZXRoZXIgYW4gb2JqZWN0IGhhcyBh
IGdpdmVuIHByb3BlcnR5IHVzaW5nIGEgSlNWYWx1ZVJlZiBhcyB0aGUgcHJvcGVydHkga2V5Lgor
QHBhcmFtIG9iamVjdCBUaGUgSlNPYmplY3QgdG8gdGVzdC4KK0BwYXJhbSBwcm9wZXJ0eUtleSBB
IEpTVmFsdWVSZWYgY29udGFpbmluZyB0aGUgcHJvcGVydHkga2V5IHRvIHVzZSB3aGVuIGxvb2tp
bmcgdXAgdGhlIHByb3BlcnR5LgorQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1Zh
bHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwg
aWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KK0ByZXN1bHQgdHJ1ZSBp
ZiB0aGUgb2JqZWN0IGhhcyBhIHByb3BlcnR5IHdob3NlIG5hbWUgbWF0Y2hlcyBwcm9wZXJ0eUtl
eSwgb3RoZXJ3aXNlIGZhbHNlLgorQGRpc2N1c3Npb24gVGhpcyBmdW5jdGlvbiBpcyB0aGUgc2Ft
ZSBhcyBwZXJmb3JtaW5nICJwcm9wZXJ0eUtleSBpbiBvYmplY3QiIGZyb20gSmF2YVNjcmlwdC4K
KyovCitKU19FWFBPUlQgYm9vbCBKU09iamVjdEhhc1Byb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBwcm9wZXJ0eUtleSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goSlNDX01BQ19UQkEpLCBpb3Mo
SlNDX0lPU19UQkEpKTsKKworLyohCitAZnVuY3Rpb24KK0BhYnN0cmFjdCBHZXRzIGEgcHJvcGVy
dHkgZnJvbSBhbiBvYmplY3QgdXNpbmcgYSBKU1ZhbHVlUmVmIGFzIHRoZSBwcm9wZXJ0eSBrZXku
CitAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCitAcGFyYW0gb2JqZWN0
IFRoZSBKU09iamVjdCB3aG9zZSBwcm9wZXJ0eSB5b3Ugd2FudCB0byBnZXQuCitAcGFyYW0gcHJv
cGVydHlLZXkgQSBKU1ZhbHVlUmVmIGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5IGtleSB0byB1c2Ug
d2hlbiBsb29raW5nIHVwIHRoZSBwcm9wZXJ0eS4KK0BwYXJhbSBleGNlcHRpb24gQSBwb2ludGVy
IHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4g
UGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCitAcmVz
dWx0IFRoZSBwcm9wZXJ0eSdzIHZhbHVlIGlmIG9iamVjdCBoYXMgdGhlIHByb3BlcnR5IGtleSwg
b3RoZXJ3aXNlIHRoZSB1bmRlZmluZWQgdmFsdWUuCitAZGlzY3Vzc2lvbiBUaGlzIGZ1bmN0aW9u
IGlzIHRoZSBzYW1lIGFzIHBlcmZvcm1pbmcgIm9iamVjdFtwcm9wZXJ0eUtleV0iIGZyb20gSmF2
YVNjcmlwdC4KKyovCitKU19FWFBPUlQgSlNWYWx1ZVJlZiBKU09iamVjdEdldFByb3BlcnR5S2V5
KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBwcm9wZXJ0
eUtleSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goSlND
X01BQ19UQkEpLCBpb3MoSlNDX0lPU19UQkEpKTsKKworLyohCitAZnVuY3Rpb24KK0BhYnN0cmFj
dCBTZXRzIGEgcHJvcGVydHkgb24gYW4gb2JqZWN0IHVzaW5nIGEgSlNWYWx1ZVJlZiBhcyB0aGUg
cHJvcGVydHkga2V5LgorQHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgor
QHBhcmFtIG9iamVjdCBUaGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQgdG8gc2V0
LgorQHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBwcm9wZXJ0
eSBrZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0gdmFsdWUg
QSBKU1ZhbHVlUmVmIHRvIHVzZSBhcyB0aGUgcHJvcGVydHkncyB2YWx1ZS4KK0BwYXJhbSBhdHRy
aWJ1dGVzIEEgbG9naWNhbGx5IE9SZWQgc2V0IG9mIEpTUHJvcGVydHlBdHRyaWJ1dGVzIHRvIGdp
dmUgdG8gdGhlIHByb3BlcnR5LgorQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1Zh
bHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwg
aWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KK0BkaXNjdXNzaW9uIFRo
aXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXMgcGVyZm9ybWluZyAib2JqZWN0W3Byb3BlcnR5S2V5
XSA9IHZhbHVlIiBmcm9tIEphdmFTY3JpcHQuCisqLworSlNfRVhQT1JUIHZvaWQgSlNPYmplY3RT
ZXRQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFs
dWVSZWYgcHJvcGVydHlLZXksIEpTVmFsdWVSZWYgdmFsdWUsIEpTUHJvcGVydHlBdHRyaWJ1dGVz
IGF0dHJpYnV0ZXMsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFj
b3N4KEpTQ19NQUNfVEJBKSwgaW9zKEpTQ19JT1NfVEJBKSk7CisKKy8qIQorQGZ1bmN0aW9uCitA
YWJzdHJhY3QgRGVsZXRlcyBhIHByb3BlcnR5IGZyb20gYW4gb2JqZWN0IHVzaW5nIGEgSlNWYWx1
ZVJlZiBhcyB0aGUgcHJvcGVydHkga2V5LgorQHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRl
eHQgdG8gdXNlLgorQHBhcmFtIG9iamVjdCBUaGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91
IHdhbnQgdG8gZGVsZXRlLgorQHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWlu
aW5nIHRoZSBwcm9wZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHku
CitAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8g
c3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUg
dG8gc3RvcmUgYW4gZXhjZXB0aW9uLgorQHJlc3VsdCB0cnVlIGlmIHRoZSBkZWxldGUgb3BlcmF0
aW9uIHN1Y2NlZWRzLCBvdGhlcndpc2UgZmFsc2UgKGZvciBleGFtcGxlLCBpZiB0aGUgcHJvcGVy
dHkgaGFzIHRoZSBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgYXR0cmlidXRlIHNldCku
CitAZGlzY3Vzc2lvbiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHBlcmZvcm1pbmcgImRl
bGV0ZSBvYmplY3RbcHJvcGVydHlLZXldIiBmcm9tIEphdmFTY3JpcHQuCisqLworSlNfRVhQT1JU
IGJvb2wgSlNPYmplY3REZWxldGVQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVj
dFJlZiBvYmplY3QsIEpTVmFsdWVSZWYgcHJvcGVydHlLZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KEpTQ19NQUNfVEJBKSwgaW9zKEpTQ19JT1NfVEJB
KSk7CisKIC8qIQogQGZ1bmN0aW9uCiBAYWJzdHJhY3QgR2V0cyBhIHByb3BlcnR5IGZyb20gYW4g
b2JqZWN0IGJ5IG51bWVyaWMgaW5kZXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
UmVtb3RlSW5zcGVjdG9yLmgKaW5kZXggYzhiYWM2ZGQwZTRhNjQ4MDljYjM0NTBjZGJhNGMwMzk3
YTQ4YTA1Ny4uNjE4NmI5MjNlYzhhYjhiOTQ4ZTc5M2FmMDRiZGQ4NDMyNzQwMDM0NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1JlbW90ZUluc3BlY3Rvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3IuaApAQCAtNDAsMTQg
KzQwLDE0IEBAIHR5cGVkZWYgcGlkX3QgSlNQcm9jZXNzSUQ7CiBleHRlcm4gIkMiIHsKICNlbmRp
ZgogCi1KU19FWFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvckRpc2FibGVBdXRvU3RhcnQodm9p
ZCkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzApOwotSlNfRVhQT1JUIHZvaWQgSlNSZW1vdGVJbnNw
ZWN0b3JTdGFydCh2b2lkKSBDRl9BVkFJTEFCTEUoMTBfMTEsIDlfMCk7Ci1KU19FWFBPUlQgdm9p
ZCBKU1JlbW90ZUluc3BlY3RvclNldFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbihKU1Byb2Nlc3NJ
RCwgY29uc3QgdWludDhfdCogYXVkaXREYXRhLCBzaXplX3QgYXVkaXRMZW5ndGgpIENGX0FWQUlM
QUJMRSgxMF8xMSwgOV8wKTsKK0pTX0VYUE9SVCB2b2lkIEpTUmVtb3RlSW5zcGVjdG9yRGlzYWJs
ZUF1dG9TdGFydCh2b2lkKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4w
KSk7CitKU19FWFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvclN0YXJ0KHZvaWQpIEpTQ19BUElf
QVZBSUxBQkxFKG1hY29zeCgxMC4xMSksIGlvcyg5LjApKTsKK0pTX0VYUE9SVCB2b2lkIEpTUmVt
b3RlSW5zcGVjdG9yU2V0UGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uKEpTUHJvY2Vzc0lELCBjb25z
dCB1aW50OF90KiBhdWRpdERhdGEsIHNpemVfdCBhdWRpdExlbmd0aCkgSlNDX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOwogCi1KU19FWFBPUlQgdm9pZCBKU1JlbW90ZUlu
c3BlY3RvclNldExvZ1RvU3lzdGVtQ29uc29sZShib29sKSBDRl9BVkFJTEFCTEUoMTBfMTEsIDlf
MCk7CitKU19FWFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvclNldExvZ1RvU3lzdGVtQ29uc29s
ZShib29sKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CiAKLUpT
X0VYUE9SVCBib29sIEpTUmVtb3RlSW5zcGVjdG9yR2V0SW5zcGVjdGlvbkVuYWJsZWRCeURlZmF1
bHQodm9pZCkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzApOwotSlNfRVhQT1JUIHZvaWQgSlNSZW1v
dGVJbnNwZWN0b3JTZXRJbnNwZWN0aW9uRW5hYmxlZEJ5RGVmYXVsdChib29sKSBDRl9BVkFJTEFC
TEUoMTBfMTEsIDlfMCk7CitKU19FWFBPUlQgYm9vbCBKU1JlbW90ZUluc3BlY3RvckdldEluc3Bl
Y3Rpb25FbmFibGVkQnlEZWZhdWx0KHZvaWQpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4x
MSksIGlvcyg5LjApKTsKK0pTX0VYUE9SVCB2b2lkIEpTUmVtb3RlSW5zcGVjdG9yU2V0SW5zcGVj
dGlvbkVuYWJsZWRCeURlZmF1bHQoYm9vbCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEx
KSwgaW9zKDkuMCkpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVHlwZWRBcnJheS5oCmluZGV4IGUyM2I3NmQyZWI0YWE1YTQ5OGI1NWViYTQ3Mzc0
NjNmNmNiOTM5YWMuLjZkODYwMjJmYTU2OTk1NDY0NmJlZWEzYWU5ZWZmN2IyY2EzNmEwMWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuaApAQCAtNDUsNyArNDUsNyBA
QCBleHRlcm4gIkMiIHsKICBAcGFyYW0gZXhjZXB0aW9uICAgIEEgcG9pbnRlciB0byBhIEpTVmFs
dWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBp
ZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1bHQgICAgICAg
ICAgICAgQSBKU09iamVjdFJlZiB0aGF0IGlzIGEgVHlwZWQgQXJyYXkgd2l0aCBhbGwgZWxlbWVu
dHMgc2V0IHRvIHplcm8gb3IgTlVMTCBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAgKi8KLUpTX0VY
UE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5KEpTQ29udGV4dFJlZiBjdHgs
IEpTVHlwZWRBcnJheVR5cGUgYXJyYXlUeXBlLCBzaXplX3QgbGVuZ3RoLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBPUlQgSlNPYmplY3RS
ZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheShKU0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlU
eXBlIGFycmF5VHlwZSwgc2l6ZV90IGxlbmd0aCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAvKiEKICBAZnVuY3Rp
b24KQEAgLTYwLDcgKzYwLDcgQEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVR5
cGVkQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBlZEFycmF5VHlwZQogIEByZXN1bHQgICAg
ICAgICAgICAgICAgICAgQSBKU09iamVjdFJlZiBUeXBlZCBBcnJheSB3aG9zZSBiYWNraW5nIHN0
b3JlIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgcG9pbnRlZCB0byBieSBieXRlcyBvciBOVUxMIGlm
IHRoZXJlIHdhcyBhbiBlcnJvci4KICBAZGlzY3Vzc2lvbiAgICAgICAgICAgICAgIElmIGFuIGV4
Y2VwdGlvbiBpcyB0aHJvd24gZHVyaW5nIHRoaXMgZnVuY3Rpb24gdGhlIGJ5dGVzRGVhbGxvY2F0
b3Igd2lsbCBhbHdheXMgYmUgY2FsbGVkLgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNP
YmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4LCBKU1R5
cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgdm9pZCogYnl0ZXMsIHNpemVfdCBieXRlTGVuZ3RoLCBK
U1R5cGVkQXJyYXlCeXRlc0RlYWxsb2NhdG9yIGJ5dGVzRGVhbGxvY2F0b3IsIHZvaWQqIGRlYWxs
b2NhdG9yQ29udGV4dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIs
IDEwXzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVR5cGVkQXJyYXlXaXRo
Qnl0ZXNOb0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBlZEFycmF5VHlwZSBhcnJheVR5cGUs
IHZvaWQqIGJ5dGVzLCBzaXplX3QgYnl0ZUxlbmd0aCwgSlNUeXBlZEFycmF5Qnl0ZXNEZWFsbG9j
YXRvciBieXRlc0RlYWxsb2NhdG9yLCB2b2lkKiBkZWFsbG9jYXRvckNvbnRleHQsIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjAp
KTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC03MSw3ICs3MSw3IEBAIEpTX0VYUE9SVCBKU09iamVj
dFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEJ5dGVzTm9Db3B5KEpTQ29udGV4dFJlZiBj
dHgsIEpTCiAgQHBhcmFtIGV4Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGlu
IHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRv
IG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAgICAgIEEg
SlNPYmplY3RSZWYgdGhhdCBpcyBhIFR5cGVkIEFycmF5IG9yIE5VTEwgaWYgdGhlcmUgd2FzIGFu
IGVycm9yLiBUaGUgYmFja2luZyBzdG9yZSBvZiB0aGUgVHlwZWQgQXJyYXkgd2lsbCBiZSBidWZm
ZXIuCiAgKi8KLUpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0
aEFycmF5QnVmZmVyKEpTQ29udGV4dFJlZiBjdHgsIEpTVHlwZWRBcnJheVR5cGUgYXJyYXlUeXBl
LCBKU09iamVjdFJlZiBidWZmZXIsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxF
KDEwXzEyLCAxMF8wKTsKK0pTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFy
cmF5V2l0aEFycmF5QnVmZmVyKEpTQ29udGV4dFJlZiBjdHgsIEpTVHlwZWRBcnJheVR5cGUgYXJy
YXlUeXBlLCBKU09iamVjdFJlZiBidWZmZXIsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9u
CkBAIC04NCw3ICs4NCw3IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBl
ZEFycmF5V2l0aEFycmF5QnVmZmVyKEpTQ29udGV4dFJlZiBjdHgsIEpTCiAgQHBhcmFtIGV4Y2Vw
dGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4
Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFu
IGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAgICAgIEEgSlNPYmplY3RSZWYgdGhhdCBpcyBh
IFR5cGVkIEFycmF5IG9yIE5VTEwgaWYgdGhlcmUgd2FzIGFuIGVycm9yLiBUaGUgYmFja2luZyBz
dG9yZSBvZiB0aGUgVHlwZWQgQXJyYXkgd2lsbCBiZSBidWZmZXIuCiAgKi8KLUpTX0VYUE9SVCBK
U09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEFycmF5QnVmZmVyQW5kT2Zmc2V0
KEpTQ29udGV4dFJlZiBjdHgsIEpTVHlwZWRBcnJheVR5cGUgYXJyYXlUeXBlLCBKU09iamVjdFJl
ZiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBPUlQgSlNPYmplY3RS
ZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhBcnJheUJ1ZmZlckFuZE9mZnNldChKU0NvbnRl
eHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgSlNPYmplY3RSZWYgYnVmZmVy
LCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAvKiEKICBA
ZnVuY3Rpb24KQEAgLTk1LDcgKzk1LDcgQEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0
TWFrZVR5cGVkQXJyYXlXaXRoQXJyYXlCdWZmZXJBbmRPZmZzZXQoSlNDb250ZXh0UmUKICBAcmVz
dWx0ICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgcmF3IGRhdGEgYnVmZmVyIHRoYXQgc2Vy
dmVzIGFzIG9iamVjdCdzIGJhY2tpbmcgc3RvcmUgb3IgTlVMTCBpZiBvYmplY3QgaXMgbm90IGEg
VHlwZWQgQXJyYXkgb2JqZWN0LgogIEBkaXNjdXNzaW9uICAgICAgICAgVGhlIHBvaW50ZXIgcmV0
dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiBpcyB0ZW1wb3JhcnkgYW5kIGlzIG5vdCBndWFyYW50ZWVk
IHRvIHJlbWFpbiB2YWxpZCBhY3Jvc3MgSmF2YVNjcmlwdENvcmUgQVBJIGNhbGxzLgogICovCi1K
U19FWFBPUlQgdm9pZCogSlNPYmplY3RHZXRUeXBlZEFycmF5Qnl0ZXNQdHIoSlNDb250ZXh0UmVm
IGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlM
QUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBPUlQgdm9pZCogSlNPYmplY3RHZXRUeXBlZEFycmF5
Qnl0ZXNQdHIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7
CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtMTA1LDcgKzEwNSw3IEBAIEpTX0VYUE9SVCB2b2lkKiBK
U09iamVjdEdldFR5cGVkQXJyYXlCeXRlc1B0cihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJl
ZiBvYmplCiAgQHBhcmFtIGV4Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGlu
IHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRv
IG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAgICAgIFRo
ZSBsZW5ndGggb2YgdGhlIFR5cGVkIEFycmF5IG9iamVjdCBvciAwIGlmIHRoZSBvYmplY3QgaXMg
bm90IGEgVHlwZWQgQXJyYXkgb2JqZWN0LgogICovCi1KU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0
R2V0VHlwZWRBcnJheUxlbmd0aChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3Qs
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK0pTX0VY
UE9SVCBzaXplX3QgSlNPYmplY3RHZXRUeXBlZEFycmF5TGVuZ3RoKEpTQ29udGV4dFJlZiBjdHgs
IEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlM
QUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAvKiEKICBAZnVuY3Rpb24KQEAgLTEx
NSw3ICsxMTUsNyBAQCBKU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0VHlwZWRBcnJheUxlbmd0
aChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplYwogIEBwYXJhbSBleGNlcHRpb24g
ICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRp
b24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNl
cHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgICBUaGUgYnl0ZSBsZW5ndGggb2YgdGhlIFR5cGVk
IEFycmF5IG9iamVjdCBvciAwIGlmIHRoZSBvYmplY3QgaXMgbm90IGEgVHlwZWQgQXJyYXkgb2Jq
ZWN0LgogICovCi1KU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5dGVMZW5n
dGgoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBPUlQgc2l6ZV90IEpTT2Jq
ZWN0R2V0VHlwZWRBcnJheUJ5dGVMZW5ndGgoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYg
b2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgx
MC4xMiksIGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtMTI1LDcgKzEyNSw3IEBA
IEpTX0VYUE9SVCBzaXplX3QgSlNPYmplY3RHZXRUeXBlZEFycmF5Qnl0ZUxlbmd0aChKU0NvbnRl
eHRSZWYgY3R4LCBKU09iamVjdFJlZiBvCiAgQHBhcmFtIGV4Y2VwdGlvbiAgICBBIHBvaW50ZXIg
dG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQ
YXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVz
dWx0ICAgICAgICAgICAgIFRoZSBieXRlIG9mZnNldCBvZiB0aGUgVHlwZWQgQXJyYXkgb2JqZWN0
IG9yIDAgaWYgdGhlIG9iamVjdCBpcyBub3QgYSBUeXBlZCBBcnJheSBvYmplY3QuCiAgKi8KLUpT
X0VYUE9SVCBzaXplX3QgSlNPYmplY3RHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldChKU0NvbnRleHRS
ZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZB
SUxBQkxFKDEwXzEyLCAxMF8wKTsKK0pTX0VYUE9SVCBzaXplX3QgSlNPYmplY3RHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEw
LjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC0xMzUsNyArMTM1LDcgQEAgSlNfRVhQT1JUIHNp
emVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KEpTQ29udGV4dFJlZiBjdHgsIEpT
T2JqZWN0UmVmIG8KICBAcGFyYW0gZXhjZXB0aW9uICAgIEEgcG9pbnRlciB0byBhIEpTVmFsdWVS
ZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5
b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1bHQgICAgICAgICAg
ICAgQSBKU09iamVjdFJlZiB3aXRoIGEgSlNUeXBlZEFycmF5VHlwZSBvZiBrSlNUeXBlZEFycmF5
VHlwZUFycmF5QnVmZmVyIG9yIE5VTEwgaWYgb2JqZWN0IGlzIG5vdCBhIFR5cGVkIEFycmF5Lgog
ICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RHZXRUeXBlZEFycmF5QnVmZmVyKEpT
Q29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2Jq
ZWN0R2V0VHlwZWRBcnJheUJ1ZmZlcihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmpl
Y3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEy
KSwgaW9zKDEwLjApKTsKIAogLy8gLS0tLS0tLS0tLS0tLSBBcnJheSBCdWZmZXIgZnVuY3Rpb25z
IC0tLS0tLS0tLS0tLS0KIApAQCAtMTUxLDcgKzE1MSw3IEBAIEpTX0VYUE9SVCBKU09iamVjdFJl
ZiBKU09iamVjdEdldFR5cGVkQXJyYXlCdWZmZXIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RS
ZWYKICBAcmVzdWx0ICAgICAgICAgICAgICAgICAgIEEgSlNPYmplY3RSZWYgQXJyYXkgQnVmZmVy
IHdob3NlIGJhY2tpbmcgc3RvcmUgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBwb2ludGVkIHRvIGJ5
IGJ5dGVzIG9yIE5VTEwgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgogIEBkaXNjdXNzaW9uICAgICAg
ICAgICAgICAgSWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biBkdXJpbmcgdGhpcyBmdW5jdGlvbiB0
aGUgYnl0ZXNEZWFsbG9jYXRvciB3aWxsIGFsd2F5cyBiZSBjYWxsZWQuCiAgKi8KLUpTX0VYUE9S
VCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VBcnJheUJ1ZmZlcldpdGhCeXRlc05vQ29weShKU0Nv
bnRleHRSZWYgY3R4LCB2b2lkKiBieXRlcywgc2l6ZV90IGJ5dGVMZW5ndGgsIEpTVHlwZWRBcnJh
eUJ5dGVzRGVhbGxvY2F0b3IgYnl0ZXNEZWFsbG9jYXRvciwgdm9pZCogZGVhbGxvY2F0b3JDb250
ZXh0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitK
U19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQXJyYXlCdWZmZXJXaXRoQnl0ZXNOb0Nv
cHkoSlNDb250ZXh0UmVmIGN0eCwgdm9pZCogYnl0ZXMsIHNpemVfdCBieXRlTGVuZ3RoLCBKU1R5
cGVkQXJyYXlCeXRlc0RlYWxsb2NhdG9yIGJ5dGVzRGVhbGxvY2F0b3IsIHZvaWQqIGRlYWxsb2Nh
dG9yQ29udGV4dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNv
c3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAvKiEKICBAZnVuY3Rpb24KQEAgLTE2MSw3ICsxNjEs
NyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQXJyYXlCdWZmZXJXaXRoQnl0
ZXNOb0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgdgogIEByZXN1bHQgICAgICAgICAgIEEgcG9pbnRl
ciB0byB0aGUgcmF3IGRhdGEgYnVmZmVyIHRoYXQgc2VydmVzIGFzIG9iamVjdCdzIGJhY2tpbmcg
c3RvcmUgb3IgTlVMTCBpZiBvYmplY3QgaXMgbm90IGFuIEFycmF5IEJ1ZmZlciBvYmplY3QuCiAg
QGRpc2N1c3Npb24gICAgICAgVGhlIHBvaW50ZXIgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiBp
cyB0ZW1wb3JhcnkgYW5kIGlzIG5vdCBndWFyYW50ZWVkIHRvIHJlbWFpbiB2YWxpZCBhY3Jvc3Mg
SmF2YVNjcmlwdENvcmUgQVBJIGNhbGxzLgogICovCi1KU19FWFBPUlQgdm9pZCogSlNPYmplY3RH
ZXRBcnJheUJ1ZmZlckJ5dGVzUHRyKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVj
dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNf
RVhQT1JUIHZvaWQqIEpTT2JqZWN0R2V0QXJyYXlCdWZmZXJCeXRlc1B0cihKU0NvbnRleHRSZWYg
Y3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9B
VkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBA
IC0xNzEsNyArMTcxLDcgQEAgSlNfRVhQT1JUIHZvaWQqIEpTT2JqZWN0R2V0QXJyYXlCdWZmZXJC
eXRlc1B0cihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmoKICBAcGFyYW0gZXhjZXB0
aW9uICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2Vw
dGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4
Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAgICBUaGUgbnVtYmVyIG9mIGJ5dGVzIHN0b3JlZCBp
biB0aGUgZGF0YSBvYmplY3QuCiAgKi8KLUpTX0VYUE9SVCBzaXplX3QgSlNPYmplY3RHZXRBcnJh
eUJ1ZmZlckJ5dGVMZW5ndGgoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBP
UlQgc2l6ZV90IEpTT2JqZWN0R2V0QXJyYXlCdWZmZXJCeXRlTGVuZ3RoKEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FW
QUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLmgKaW5kZXggMTQxMGRkNzRhMTdmOTcwNzA2
ZTQ0ZGVkMjRjY2QxNzBjMzQ3OWMyZS4uNmQ1Y2E1NDRiN2QzYzViMGE2MjI4MTc1NjlhYmM4ZmI0
NDg4MDI2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLmgKQEAgLTE0OCw2ICsxNDgs
MTUgQEAgTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzksIDdfMCkKICovCiArIChKU1ZhbHVlICopdmFs
dWVXaXRoVW5kZWZpbmVkSW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OwogCisvKiEKKyBA
bWV0aG9kCisgQGFic3RyYWN0IENyZWF0ZSBhIG5ldywgdW5pcXVlLCBzeW1ib2wgb2JqZWN0Lgor
IEBwYXJhbSBkZXNjcmlwdGlvbiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIHN5bWJvbCBvYmplY3Qg
YmVpbmcgY3JlYXRlZC4KKyBAcGFyYW0gY29udGV4dCBUaGUgSlNDb250ZXh0IHRvIHdoaWNoIHRo
ZSByZXN1bHRpbmcgSlNWYWx1ZSBiZWxvbmdzLgorIEByZXN1bHQgVGhlIEpTVmFsdWUgcmVwcmVz
ZW50aW5nIGEgdW5pcXVlIEphdmFTY3JpcHQgdmFsdWUgd2l0aCB0eXBlIHN5bWJvbC4KKyAqLwor
KyAoSlNWYWx1ZSAqKXZhbHVlV2l0aE5ld1N5bWJvbEZyb21EZXNjcmlwdGlvbjooTlNTdHJpbmcg
KilkZXNjcmlwdGlvbiBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQgSlNDX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KEpTQ19NQUNfVEJBKSwgaW9zKEpTQ19JT1NfVEJBKSk7CisKIC8qIQogQG1l
dGhvZGdyb3VwIENvbnZlcnRpbmcgdG8gT2JqZWN0aXZlLUMgVHlwZXMKIEBkaXNjdXNzaW9uIFdo
ZW4gY29udmVydGluZyBiZXR3ZWVuIEphdmFTY3JpcHQgdmFsdWVzIGFuZCBPYmplY3RpdmUtQyBv
YmplY3RzIGEgY29weSBpcwpAQCAtMzA1LDQzICszMTQsNTIgQEAgTlNfQ0xBU1NfQVZBSUxBQkxF
KDEwXzksIDdfMCkKIC8qIQogQG1ldGhvZGdyb3VwIEFjY2Vzc2luZyBQcm9wZXJ0aWVzCiAqLwor
CisjaWYgIShkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDApIHx8IChkZWZpbmVkKF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA8IDExMDAwMCkKKwogLyohCiBAbWV0aG9kCiBAYWJzdHJhY3QgQWNjZXNzIGEgcHJvcGVy
dHkgb2YgYSBKU1ZhbHVlLgogQHJlc3VsdCBUaGUgSlNWYWx1ZSBmb3IgdGhlIHJlcXVlc3RlZCBw
cm9wZXJ0eSBvciB0aGUgSlNWYWx1ZSA8Y29kZT51bmRlZmluZWQ8L2NvZGU+IAogIGlmIHRoZSBw
cm9wZXJ0eSBkb2VzIG5vdCBleGlzdC4KK0BkaXNjdXNzaW9uIENvcnJlc3BvbmRzIHRvIHRoZSBK
YXZhU2NyaXB0IG9wZXJhdGlvbiA8Y29kZT5vYmplY3RbcHJvcGVydHldPC9jb2RlPi4gUGFzcyBh
biBOU1N0cmluZyAqIHRvIGFjY2VzcyBhIG5hbWVkIHByb3BlcnR5LiBPdGhlciB2YWxpZCBwcm9w
ZXJ0aWVzIGluY2x1ZGUgc3ltYm9scywgbnVtYmVycywgYW5kIHN0cmluZ2lmaWFibGUgb2JqZWN0
cy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUyAxMSBhbmQgYmVsb3csICdwcm9wZXJ0eScgd2FzIGFu
IE5TU3RyaW5nICouCiAqLwotLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KE5TU3RyaW5n
ICopcHJvcGVydHk7CistIChKU1ZhbHVlICopdmFsdWVGb3JQcm9wZXJ0eTooaWQpcHJvcGVydHk7
CiAKIC8qIQogQG1ldGhvZAogQGFic3RyYWN0IFNldCBhIHByb3BlcnR5IG9uIGEgSlNWYWx1ZS4K
K0BkaXNjdXNzaW9uIENvcnJlc3BvbmRzIHRvIHRoZSBKYXZhU2NyaXB0IG9wZXJhdGlvbiA8Y29k
ZT5vYmplY3RbcHJvcGVydHldID0gdmFsdWU8L2NvZGU+LiBQYXNzIGFuIE5TU3RyaW5nICogdG8g
YWNjZXNzIGEgbmFtZWQgcHJvcGVydHkuIE90aGVyIHZhbGlkIHByb3BlcnRpZXMgaW5jbHVkZSBz
eW1ib2xzLCBudW1iZXJzLCBhbmQgc3RyaW5naWZpYWJsZSBvYmplY3RzLiBJbiBtYWNPUyAxMC4x
MyBhbmQgaU9TIDExIGFuZCBiZWxvdywgJ3Byb3BlcnR5JyB3YXMgYW4gTlNTdHJpbmcgKi4KICov
Ci0tICh2b2lkKXNldFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9w
ZXJ0eTsKKy0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZvclByb3BlcnR5OihpZClwcm9wZXJ0
eTsKIAogLyohCiBAbWV0aG9kCiBAYWJzdHJhY3QgRGVsZXRlIGEgcHJvcGVydHkgZnJvbSBhIEpT
VmFsdWUuCiBAcmVzdWx0IFlFUyBpZiBkZWxldGlvbiBpcyBzdWNjZXNzZnVsLCBOTyBvdGhlcndp
c2UuCitAZGlzY3Vzc2lvbiBDb3JyZXNwb25kcyB0byB0aGUgSmF2YVNjcmlwdCBvcGVyYXRpb24g
PGNvZGU+ZGVsZXRlIG9iamVjdFtwcm9wZXJ0eV08L2NvZGU+LiBQYXNzIGFuIE5TU3RyaW5nICog
dG8gYWNjZXNzIGEgbmFtZWQgcHJvcGVydHkuIE90aGVyIHZhbGlkIHByb3BlcnRpZXMgaW5jbHVk
ZSBzeW1ib2xzLCBudW1iZXJzLCBhbmQgc3RyaW5naWZpYWJsZSBvYmplY3RzLiBJbiBtYWNPUyAx
MC4xMyBhbmQgaU9TIDExIGFuZCBiZWxvdywgJ3Byb3BlcnR5JyB3YXMgYW4gTlNTdHJpbmcgKi4K
ICovCi0tIChCT09MKWRlbGV0ZVByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLSAoQk9P
TClkZWxldGVQcm9wZXJ0eTooaWQpcHJvcGVydHk7CiAKIC8qIQogQG1ldGhvZAogQGFic3RyYWN0
IENoZWNrIGlmIGEgSlNWYWx1ZSBoYXMgYSBwcm9wZXJ0eS4KIEBkaXNjdXNzaW9uIFRoaXMgbWV0
aG9kIGhhcyB0aGUgc2FtZSBmdW5jdGlvbiBhcyB0aGUgSmF2YVNjcmlwdCBvcGVyYXRvciA8Y29k
ZT5pbjwvY29kZT4uCiBAcmVzdWx0IFJldHVybnMgWUVTIGlmIHByb3BlcnR5IGlzIHByZXNlbnQg
b24gdGhlIHZhbHVlLgorQGRpc2N1c3Npb24gQ29ycmVzcG9uZHMgdG8gdGhlIEphdmFTY3JpcHQg
b3BlcmF0aW9uIDxjb2RlPnByb3BlcnR5IGluIG9iamVjdDwvY29kZT4uIFBhc3MgYW4gTlNTdHJp
bmcgKiB0byBhY2Nlc3MgYSBuYW1lZCBwcm9wZXJ0eS4gT3RoZXIgdmFsaWQgcHJvcGVydGllcyBp
bmNsdWRlIHN5bWJvbHMsIG51bWJlcnMsIGFuZCBzdHJpbmdpZmlhYmxlIG9iamVjdHMuIEluIG1h
Y09TIDEwLjEzIGFuZCBpT1MgMTEgYW5kIGJlbG93LCAncHJvcGVydHknIHdhcyBhbiBOU1N0cmlu
ZyAqLgogKi8KLS0gKEJPT0wpaGFzUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7CistIChC
T09MKWhhc1Byb3BlcnR5OihpZClwcm9wZXJ0eTsKIAogLyohCiBAbWV0aG9kCiBAYWJzdHJhY3Qg
RGVmaW5lIHByb3BlcnRpZXMgd2l0aCBjdXN0b20gZGVzY3JpcHRvcnMgb24gSlNWYWx1ZXMuCiBA
ZGlzY3Vzc2lvbiBUaGlzIG1ldGhvZCBtYXkgYmUgdXNlZCB0byBjcmVhdGUgYSBkYXRhIG9yIGFj
Y2Vzc29yIHByb3BlcnR5IG9uIGFuIG9iamVjdC4KICBUaGlzIG1ldGhvZCBvcGVyYXRlcyBpbiBh
Y2NvcmRhbmNlIHdpdGggdGhlIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBtZXRob2QgaW4gdGhlIAot
IEphdmFTY3JpcHQgbGFuZ3VhZ2UuCisgSmF2YVNjcmlwdCBsYW5ndWFnZS4gUGFzcyBhbiBOU1N0
cmluZyAqIHRvIGFjY2VzcyBhIG5hbWVkIHByb3BlcnR5LiBPdGhlciB2YWxpZCBwcm9wZXJ0aWVz
IGluY2x1ZGUgc3ltYm9scywgbnVtYmVycywgYW5kIHN0cmluZ2lmaWFibGUgb2JqZWN0cy4gSW4g
bWFjT1MgMTAuMTMgYW5kIGlPUyAxMSBhbmQgYmVsb3csICdwcm9wZXJ0eScgd2FzIGFuIE5TU3Ry
aW5nICouCiAqLwotLSAodm9pZClkZWZpbmVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eSBk
ZXNjcmlwdG9yOihpZClkZXNjcmlwdG9yOworLSAodm9pZClkZWZpbmVQcm9wZXJ0eTooaWQpcHJv
cGVydHkgZGVzY3JpcHRvcjooaWQpZGVzY3JpcHRvcjsKKworI2VuZGlmIC8vICEoZGVmaW5lZChf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAoZGVmaW5lZChfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMTAwMDApCiAK
IC8qIQogQG1ldGhvZApAQCAtNDAyLDE3ICs0MjAsMjMgQEAgTlNfQ0xBU1NfQVZBSUxBQkxFKDEw
XzksIDdfMCkKICovCiBAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGlzT2JqZWN0OwogCisvKiEK
K0Bwcm9wZXJ0eQorQGFic3RyYWN0IENoZWNrIGlmIGEgSlNWYWx1ZSBpcyBhIHN5bWJvbC4KKyov
CitAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGlzU3ltYm9sIEpTQ19BUElfQVZBSUxBQkxFKG1h
Y29zeChKU0NfTUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpOworCiAvKiEKIEBwcm9wZXJ0eQog
QGFic3RyYWN0IENoZWNrIGlmIGEgSlNWYWx1ZSBpcyBhbiBhcnJheS4KICovIAotQHByb3BlcnR5
IChyZWFkb25seSkgQk9PTCBpc0FycmF5IE5TX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsKK0Bwcm9w
ZXJ0eSAocmVhZG9ubHkpIEJPT0wgaXNBcnJheSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAu
MTEpLCBpb3MoOS4wKSk7CiAKIC8qIQogQHByb3BlcnR5CiBAYWJzdHJhY3QgQ2hlY2sgaWYgYSBK
U1ZhbHVlIGlzIGEgZGF0ZS4KICovIAotQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBpc0RhdGUg
TlNfQVZBSUxBQkxFKDEwXzExLCA5XzApOworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBpc0Rh
dGUgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOwogCiAvKiEKIEBt
ZXRob2QKQEAgLTU2OSwxMyArNTkzLDE2IEBAIENyZWF0ZSBhIEpTVmFsdWUgZnJvbSBhIENHUmVj
dC4KIEAvdGV4dGJsb2NrCiAKICBBbiBvYmplY3Qga2V5IHBhc3NlZCBhcyBhIHN1YnNjcmlwdCB3
aWxsIGJlIGNvbnZlcnRlZCB0byBhIEphdmFTY3JpcHQgdmFsdWUsCi0gYW5kIHRoZW4gdGhlIHZh
bHVlIGNvbnZlcnRlZCB0byBhIHN0cmluZyB1c2VkIGFzIGEgcHJvcGVydHkgbmFtZS4KKyBhbmQg
dGhlbiB0aGUgdmFsdWUgY29udmVydGVkIHRvIGEgc3RyaW5nIHVzZWQgYXMgYSBwcm9wZXJ0eSBu
YW1lLiBJbiBtYWNPUworIDEwLjEzIGFuZCBpT1MgMTEgYW5kIGJlbG93LCB0aGUgPGNvZGU+a2V5
PC9jb2RlPiBhcmd1bWVudCBvZgorIDxjb2RlPnNldE9iamVjdDpvYmplY3QgZm9yS2V5ZWRTdWJz
Y3JpcHQ6a2V5PC9jb2RlPiB3YXMgcmVzdHJpY3RlZCB0byBhbgorIDxjb2RlPk5TU3RyaW5nIDxO
U0NvcHlpbmc+ICo8L2NvZGU+IGJ1dCB0aGF0IHJlc3RyaWN0aW9uIHdhcyBuZXZlciB1c2VkLgog
Ki8KIEBpbnRlcmZhY2UgSlNWYWx1ZSAoU3Vic2NyaXB0U3VwcG9ydCkKIAogLSAoSlNWYWx1ZSAq
KW9iamVjdEZvcktleWVkU3Vic2NyaXB0OihpZClrZXk7CiAtIChKU1ZhbHVlICopb2JqZWN0QXRJ
bmRleGVkU3Vic2NyaXB0OihOU1VJbnRlZ2VyKWluZGV4OwotLSAodm9pZClzZXRPYmplY3Q6KGlk
KW9iamVjdCBmb3JLZXllZFN1YnNjcmlwdDooTlNPYmplY3QgPE5TQ29weWluZz4gKilrZXk7Cist
ICh2b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGZvcktleWVkU3Vic2NyaXB0OihpZClrZXk7CiAt
ICh2b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGF0SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdl
cilpbmRleDsKIAogQGVuZApAQCAtNjYyLDYgKzY4OSw1MyBAQCBKU19FWFBPUlQgZXh0ZXJuIE5T
U3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXk7CiAjaWZkZWYgX19jcGx1
c3BsdXMKIH0gLy8gZXh0ZXJuICJDIgogI2VuZGlmCisgCisjaWYgKGRlZmluZWQoX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA8IDEwMTMwMCkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQorCisvLyBUaGVz
ZSBkZWNsYXJhdGlvbnMgcHJvdmlkZSBjb21wYXRpYmlsaXR5IHdoZW4gdGFyZ2V0aW5nIFNES3Mg
Zm9yIGxlZ2FjeSBPU3MuIEluIG1hY09TIDEwLjEzIGFuZCBpT1MgMTEgYW5kIGJlbG93LCAncHJv
cGVydHknIHdhcyBhbiBOU1N0cmluZyAqLgorQGludGVyZmFjZSBKU1ZhbHVlIChMZWdhY3lTREtT
dXBwb3J0KQorCisvKiEKK0BtZXRob2QKK0BhYnN0cmFjdCBBY2Nlc3MgYSBwcm9wZXJ0eSBvZiBh
IEpTVmFsdWUuCitAcmVzdWx0IFRoZSBKU1ZhbHVlIGZvciB0aGUgcmVxdWVzdGVkIHByb3BlcnR5
IG9yIHRoZSBKU1ZhbHVlIDxjb2RlPnVuZGVmaW5lZDwvY29kZT4KK2lmIHRoZSBwcm9wZXJ0eSBk
b2VzIG5vdCBleGlzdC4KKyovCistIChKU1ZhbHVlICopdmFsdWVGb3JQcm9wZXJ0eTooTlNTdHJp
bmcgKilwcm9wZXJ0eTsKKworLyohCitAbWV0aG9kCitAYWJzdHJhY3QgU2V0IGEgcHJvcGVydHkg
b24gYSBKU1ZhbHVlLgorKi8KKy0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZvclByb3BlcnR5
OihOU1N0cmluZyAqKXByb3BlcnR5OworCisvKiEKKyBAbWV0aG9kCisgQGFic3RyYWN0IERlbGV0
ZSBhIHByb3BlcnR5IGZyb20gYSBKU1ZhbHVlLgorIEByZXN1bHQgWUVTIGlmIGRlbGV0aW9uIGlz
IHN1Y2Nlc3NmdWwsIE5PIG90aGVyd2lzZS4KKyAqLworLSAoQk9PTClkZWxldGVQcm9wZXJ0eToo
TlNTdHJpbmcgKilwcm9wZXJ0eTsKKworLyohCisgQG1ldGhvZAorIEBhYnN0cmFjdCBDaGVjayBp
ZiBhIEpTVmFsdWUgaGFzIGEgcHJvcGVydHkuCisgQGRpc2N1c3Npb24gVGhpcyBtZXRob2QgaGFz
IHRoZSBzYW1lIGZ1bmN0aW9uIGFzIHRoZSBKYXZhU2NyaXB0IG9wZXJhdG9yIDxjb2RlPmluPC9j
b2RlPi4KKyBAcmVzdWx0IFJldHVybnMgWUVTIGlmIHByb3BlcnR5IGlzIHByZXNlbnQgb24gdGhl
IHZhbHVlLgorICovCistIChCT09MKWhhc1Byb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5Owor
CisvKiEKKyBAbWV0aG9kCisgQGFic3RyYWN0IERlZmluZSBwcm9wZXJ0aWVzIHdpdGggY3VzdG9t
IGRlc2NyaXB0b3JzIG9uIEpTVmFsdWVzLgorIEBkaXNjdXNzaW9uIFRoaXMgbWV0aG9kIG1heSBi
ZSB1c2VkIHRvIGNyZWF0ZSBhIGRhdGEgb3IgYWNjZXNzb3IgcHJvcGVydHkgb24gYW4gb2JqZWN0
LgorIFRoaXMgbWV0aG9kIG9wZXJhdGVzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgT2JqZWN0LmRl
ZmluZVByb3BlcnR5IG1ldGhvZCBpbiB0aGUKKyBKYXZhU2NyaXB0IGxhbmd1YWdlLgorICovCist
ICh2b2lkKWRlZmluZVByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5IGRlc2NyaXB0b3I6KGlk
KWRlc2NyaXB0b3I7CisKK0BlbmQKKworI2VuZGlmCiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWUubW0KaW5kZXggYTI2Njg0NDhmZmJjN2JmNTUzNDM3NGQxN2RhMmJlYjRj
NzQxOTg4My4uOWM5NmM5ZDY5NTAzOTQzMzZkMTY4NTIzYjNjNjMwNjdmM2EzNzFiZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCAi
SlNDSlNWYWx1ZS5oIgogI2ltcG9ydCAiU3Ryb25nLmgiCiAjaW1wb3J0ICJTdHJvbmdJbmxpbmVz
LmgiCisjaW1wb3J0IDx3dGYvRXhwZWN0ZWQuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CiAj
aW1wb3J0IDx3dGYvSGFzaFNldC5oPgogI2ltcG9ydCA8d3RmL0xvY2suaD4KQEAgLTE1MSw2ICsx
NTIsMTMgQEAgTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5RGVzY3JpcHRvclNldEtleSA9IEAi
c2V0IjsKICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKSBpbkNvbnRleHQ6Y29udGV4
dF07CiB9CiAKKysgKEpTVmFsdWUgKil2YWx1ZVdpdGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246
KE5TU3RyaW5nICopZGVzY3JpcHRpb24gaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0Cit7
CisgICAgSlNTdHJpbmdSZWYgc3RyaW5nID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcocmVp
bnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oZGVzY3JpcHRpb24pKTsKKyAgICByZXR1cm4gW0pT
VmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpKU1ZhbHVlTWFrZVN5bWJvbChbY29udGV4dCBKU0ds
b2JhbENvbnRleHRSZWZdLCBzdHJpbmcpIGluQ29udGV4dDpjb250ZXh0XTsKK30KKworCiAtIChp
ZCl0b09iamVjdAogewogICAgIHJldHVybiB2YWx1ZVRvT2JqZWN0KF9jb250ZXh0LCBtX3ZhbHVl
KTsKQEAgLTIzNCw3MiArMjQyLDEwMCBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNj
cmlwdG9yU2V0S2V5ID0gQCJzZXQiOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLS0gKEpTVmFs
dWUgKil2YWx1ZUZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQordGVtcGxhdGU8
dHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFtZSBOU1N0cmluZ0Z1bmN0aW9uLCB0eXBlbmFtZSBKU1Zh
bHVlRnVuY3Rpb24sIHR5cGVuYW1lLi4uIFR5cGVzPgoraW5saW5lIEV4cGVjdGVkPFJlc3VsdCwg
SlNWYWx1ZVJlZj4gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uKE5TU3RyaW5nRnVuY3Rpb24gc3Ry
aW5nRnVuY3Rpb24sIEpTVmFsdWVGdW5jdGlvbiBqc0Z1bmN0aW9uLCBKU1ZhbHVlKiB2YWx1ZSwg
aWQgcHJvcGVydHlLZXksIFR5cGVzLi4uIGFyZ3VtZW50cykKIHsKLSAgICBKU1ZhbHVlUmVmIGV4
Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KFtf
Y29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKLSAgICBp
ZiAoZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW19jb250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4
Y2VwdGlvbjpleGNlcHRpb25dOwotCi0gICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3Jl
YXRlV2l0aENGU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwotICAg
IEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9i
YWxDb250ZXh0UmVmXSwgb2JqZWN0LCBuYW1lLCAmZXhjZXB0aW9uKTsKLSAgICBKU1N0cmluZ1Jl
bGVhc2UobmFtZSk7CisgICAgSlNDb250ZXh0KiBjb250ZXh0ID0gW3ZhbHVlIGNvbnRleHRdOwor
ICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0cjsKKyAgICBKU09iamVjdFJlZiBvYmpl
Y3QgPSBKU1ZhbHVlVG9PYmplY3QoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgW3ZhbHVl
IEpTVmFsdWVSZWZdLCAmZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICBy
ZXR1cm4gW19jb250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOworICAg
ICAgICByZXR1cm4gVW5leHBlY3RlZDxKU1ZhbHVlUmVmPihleGNlcHRpb24pOworCisgICAgUmVz
dWx0IHJlc3VsdDsKKyAgICAvLyBJZiBpdCdzIGEgTlNTdHJpbmcgYWxyZWFkeSwgcmVkdWNlIGlu
ZGlyZWN0aW9uIGFuZCBqdXN0IHBhc3MgdGhlIE5TU3RyaW5nLgorICAgIGlmIChbcHJvcGVydHlL
ZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgeworICAgICAgICBKU1N0cmluZ1Jl
ZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVm
KXByb3BlcnR5S2V5KTsKKyAgICAgICAgcmVzdWx0ID0gc3RyaW5nRnVuY3Rpb24oW2NvbnRleHQg
SlNHbG9iYWxDb250ZXh0UmVmXSwgb2JqZWN0LCBuYW1lLCBhcmd1bWVudHMuLi4sICZleGNlcHRp
b24pOworICAgICAgICBKU1N0cmluZ1JlbGVhc2UobmFtZSk7CisgICAgfSBlbHNlCisgICAgICAg
IHJlc3VsdCA9IGpzRnVuY3Rpb24oW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgb2JqZWN0
LCBbW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OnByb3BlcnR5S2V5IGluQ29udGV4dDpjb250ZXh0
XSBKU1ZhbHVlUmVmXSwgYXJndW1lbnRzLi4uLCAmZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gRXhw
ZWN0ZWQ8UmVzdWx0LCBKU1ZhbHVlUmVmPihyZXN1bHQpOworfQorCisjaWYgKGRlZmluZWQoX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA8IDEwMTMwMCkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQorLSAo
SlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KE5TU3RyaW5nICopa2V5CisjZWxzZQorLSAoSlNW
YWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KGlkKWtleQorI2VuZGlmCit7CisgICAgYXV0byByZXN1
bHQgPSBwZXJmb3JtUHJvcGVydHlPcGVyYXRpb248SlNWYWx1ZVJlZj4oSlNPYmplY3RHZXRQcm9w
ZXJ0eSwgSlNPYmplY3RHZXRQcm9wZXJ0eUtleSwgc2VsZiwga2V5KTsKKyAgICBpZiAoIXJlc3Vs
dCkKKyAgICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246cmVz
dWx0LmVycm9yKCldOwogCi0gICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6
cmVzdWx0IGluQ29udGV4dDpfY29udGV4dF07CisgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0
aEpTVmFsdWVSZWY6cmVzdWx0LnZhbHVlKCkgaW5Db250ZXh0Ol9jb250ZXh0XTsKIH0KIAotLSAo
dm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHlO
YW1lCisjaWYgKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMwMCkgfHwgKGRlZmluZWQoX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEIDwgMTEwMDAwKQorLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yUHJvcGVydHk6
KE5TU3RyaW5nICopa2V5CisjZWxzZQorLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yUHJv
cGVydHk6KGlkKWtleQorI2VuZGlmCiB7Ci0gICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwot
ICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChbX2NvbnRleHQgSlNHbG9i
YWxDb250ZXh0UmVmXSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7Ci0gICAgaWYgKGV4Y2VwdGlvbikg
ewotICAgICAgICBbX2NvbnRleHQgbm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CisgICAgLy8gV2UgbmVlZCBVbml0IGJ1c2luZXNzIGJlY2F1c2Ugdm9p
ZCBjYW4ndCBiZSBhc3NpZ25lZCB0byBpbiBwZXJmb3JtUHJvcGVydHlPcGVyYXRpb24gYW5kIEkg
ZG9uJ3Qgd2FudCB0byBkdXBsaWNhdGUgdGhlIGNvZGUuLi4KKyAgICB1c2luZyBVbml0ID0gc3Rk
Ojp0dXBsZTw+OworICAgIGF1dG8gc3RyaW5nU2V0UHJvcGVydHkgPSBbXSAoYXV0by4uLiBhcmdz
KSAtPiBVbml0IHsKKyAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShhcmdzLi4uKTsKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICB9OwogCi0gICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5n
Q3JlYXRlV2l0aENGU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwot
ICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9i
amVjdCwgbmFtZSwgb2JqZWN0VG9WYWx1ZShfY29udGV4dCwgdmFsdWUpLCAwLCAmZXhjZXB0aW9u
KTsKLSAgICBKU1N0cmluZ1JlbGVhc2UobmFtZSk7Ci0gICAgaWYgKGV4Y2VwdGlvbikgewotICAg
ICAgICBbX2NvbnRleHQgbm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgYXV0byBqc1Zh
bHVlU2V0UHJvcGVydHkgPSBbXSAoYXV0by4uLiBhcmdzKSAtPiBVbml0IHsKKyAgICAgICAgSlNP
YmplY3RTZXRQcm9wZXJ0eUtleShhcmdzLi4uKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9
OworCisgICAgYXV0byByZXN1bHQgPSBwZXJmb3JtUHJvcGVydHlPcGVyYXRpb248VW5pdD4oc3Ry
aW5nU2V0UHJvcGVydHksIGpzVmFsdWVTZXRQcm9wZXJ0eSwgc2VsZiwga2V5LCBvYmplY3RUb1Zh
bHVlKF9jb250ZXh0LCB2YWx1ZSksIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSk7CisgICAgaWYg
KCFyZXN1bHQpIHsKKyAgICAgICAgW19jb250ZXh0IG5vdGlmeUV4Y2VwdGlvbjpyZXN1bHQuZXJy
b3IoKV07CiAgICAgICAgIHJldHVybjsKICAgICB9CiB9CiAKLS0gKEJPT0wpZGVsZXRlUHJvcGVy
dHk6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lCisjaWYgKGRlZmluZWQoX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEw
MTMwMCkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQorLSAoQk9PTClkZWxldGVQ
cm9wZXJ0eTooTlNTdHJpbmcgKilrZXkKKyNlbHNlCistIChCT09MKWRlbGV0ZVByb3BlcnR5Oihp
ZClrZXkKKyNlbmRpZgogewotICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBKU09i
amVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4
dFJlZl0sIG1fdmFsdWUsICZleGNlcHRpb24pOwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAg
IHJldHVybiBbX2NvbnRleHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKLQot
ICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlk
Z2UgQ0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsKLSAgICBCT09MIHJlc3VsdCA9IEpTT2JqZWN0
RGVsZXRlUHJvcGVydHkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgbmFt
ZSwgJmV4Y2VwdGlvbik7Ci0gICAgSlNTdHJpbmdSZWxlYXNlKG5hbWUpOwotICAgIGlmIChleGNl
cHRpb24pCi0gICAgICAgIHJldHVybiBbX2NvbnRleHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246
ZXhjZXB0aW9uXTsKLQotICAgIHJldHVybiByZXN1bHQ7CisgICAgRXhwZWN0ZWQ8Qk9PTCwgSlNW
YWx1ZVJlZj4gcmVzdWx0ID0gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uPEJPT0w+KEpTT2JqZWN0
RGVsZXRlUHJvcGVydHksIEpTT2JqZWN0RGVsZXRlUHJvcGVydHlLZXksIHNlbGYsIGtleSk7Cisg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBbX2NvbnRleHQgYm9vbEZyb21Ob3RpZnlF
eGNlcHRpb246cmVzdWx0LmVycm9yKCldOworICAgIHJldHVybiByZXN1bHQudmFsdWUoKTsKIH0K
IAotLSAoQk9PTCloYXNQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKKyNpZiAoZGVm
aW5lZChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAoZGVmaW5lZChfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMTAw
MDApCistIChCT09MKWhhc1Byb3BlcnR5OihOU1N0cmluZyAqKWtleQorI2Vsc2UKKy0gKEJPT0wp
aGFzUHJvcGVydHk6KGlkKWtleQorI2VuZGlmCiB7Ci0gICAgSlNWYWx1ZVJlZiBleGNlcHRpb24g
PSAwOwotICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChbX2NvbnRleHQg
SlNHbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7Ci0gICAgaWYgKGV4Y2Vw
dGlvbikKLSAgICAgICAgcmV0dXJuIFtfY29udGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpl
eGNlcHRpb25dOworICAgIC8vIFRoZSBDLWFwaSBkb2Vzbid0IHJldHVybiBhbiBleGNlcHRpb24g
dmFsdWUgZm9yIHRoZSBzdHJpbmcgdmVyc2lvbiBvZiBoYXMgcHJvcGVydHkuCisgICAgYXV0byBz
dHJpbmdIYXNQcm9wZXJ0eSA9IFtdIChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmpl
Y3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiopIC0+IEJPT0wgeworICAg
ICAgICByZXR1cm4gSlNPYmplY3RIYXNQcm9wZXJ0eShjdHgsIG9iamVjdCwgcHJvcGVydHlOYW1l
KTsKKyAgICB9OwogCi0gICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENG
U3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwotICAgIEJPT0wgcmVz
dWx0ID0gSlNPYmplY3RIYXNQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwg
b2JqZWN0LCBuYW1lKTsKLSAgICBKU1N0cmluZ1JlbGVhc2UobmFtZSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICBFeHBlY3RlZDxCT09MLCBKU1ZhbHVlUmVmPiByZXN1bHQgPSBwZXJmb3JtUHJv
cGVydHlPcGVyYXRpb248Qk9PTD4oc3RyaW5nSGFzUHJvcGVydHksIEpTT2JqZWN0SGFzUHJvcGVy
dHlLZXksIHNlbGYsIGtleSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBbX2Nv
bnRleHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246cmVzdWx0LmVycm9yKCldOworICAgIHJldHVy
biByZXN1bHQudmFsdWUoKTsKIH0KIAotLSAodm9pZClkZWZpbmVQcm9wZXJ0eTooTlNTdHJpbmcg
Kilwcm9wZXJ0eSBkZXNjcmlwdG9yOihpZClkZXNjcmlwdG9yCisjaWYgKGRlZmluZWQoX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA8IDEwMTMwMCkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQorLSAodm9p
ZClkZWZpbmVQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXkgZGVzY3JpcHRvcjooaWQpZGVzY3JpcHRv
cgorI2Vsc2UKKy0gKHZvaWQpZGVmaW5lUHJvcGVydHk6KGlkKWtleSBkZXNjcmlwdG9yOihpZClk
ZXNjcmlwdG9yCisjZW5kaWYKIHsKLSAgICBbW19jb250ZXh0IGdsb2JhbE9iamVjdF1bQCJPYmpl
Y3QiXSBpbnZva2VNZXRob2Q6QCJkZWZpbmVQcm9wZXJ0eSIgd2l0aEFyZ3VtZW50czpAWyBzZWxm
LCBwcm9wZXJ0eSwgZGVzY3JpcHRvciBdXTsKKyAgICBbW19jb250ZXh0IGdsb2JhbE9iamVjdF1b
QCJPYmplY3QiXSBpbnZva2VNZXRob2Q6QCJkZWZpbmVQcm9wZXJ0eSIgd2l0aEFyZ3VtZW50czpA
WyBzZWxmLCBrZXksIGRlc2NyaXB0b3IgXV07CiB9CiAKIC0gKEpTVmFsdWUgKil2YWx1ZUF0SW5k
ZXg6KE5TVUludGVnZXIpaW5kZXgKQEAgLTM3Miw2ICs0MDgsMTEgQEAgTlNTdHJpbmcgKiBjb25z
dCBKU1Byb3BlcnR5RGVzY3JpcHRvclNldEtleSA9IEAic2V0IjsKICAgICByZXR1cm4gSlNWYWx1
ZUlzT2JqZWN0KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlKTsKIH0KIAor
LSAoQk9PTClpc1N5bWJvbAoreworICAgIHJldHVybiBKU1ZhbHVlSXNTeW1ib2woW19jb250ZXh0
IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUpOworfQorCiAtIChCT09MKWlzQXJyYXkKIHsK
ICAgICByZXR1cm4gSlNWYWx1ZUlzQXJyYXkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0s
IG1fdmFsdWUpOwpAQCAtNTU0LDEzICs1OTUsNyBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVy
dHlEZXNjcmlwdG9yU2V0S2V5ID0gQCJzZXQiOwogCiAtIChKU1ZhbHVlICopb2JqZWN0Rm9yS2V5
ZWRTdWJzY3JpcHQ6KGlkKWtleQogewotICAgIGlmICghW2tleSBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dKSB7Ci0gICAgICAgIGtleSA9IFtbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6
a2V5IGluQ29udGV4dDpfY29udGV4dF0gdG9TdHJpbmddOwotICAgICAgICBpZiAoIWtleSkKLSAg
ICAgICAgICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRleHQ6X2Nv
bnRleHRdOwotICAgIH0KLQotICAgIHJldHVybiBbc2VsZiB2YWx1ZUZvclByb3BlcnR5OihOU1N0
cmluZyAqKWtleV07CisgICAgcmV0dXJuIFtzZWxmIHZhbHVlRm9yUHJvcGVydHk6a2V5XTsKIH0K
IAogLSAoSlNWYWx1ZSAqKW9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRl
eApAQCAtNTY4LDE1ICs2MDMsOSBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlw
dG9yU2V0S2V5ID0gQCJzZXQiOwogICAgIHJldHVybiBbc2VsZiB2YWx1ZUF0SW5kZXg6aW5kZXhd
OwogfQogCi0tICh2b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGZvcktleWVkU3Vic2NyaXB0OihO
U09iamVjdCA8TlNDb3B5aW5nPiAqKWtleQorLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBm
b3JLZXllZFN1YnNjcmlwdDooaWQpa2V5CiB7Ci0gICAgaWYgKCFba2V5IGlzS2luZE9mQ2xhc3M6
W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAga2V5ID0gW1tKU1ZhbHVlIHZhbHVlV2l0aE9i
amVjdDprZXkgaW5Db250ZXh0Ol9jb250ZXh0XSB0b1N0cmluZ107Ci0gICAgICAgIGlmICgha2V5
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFtzZWxmIHNldFZhbHVlOm9iamVj
dCBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXldOworICAgIFtzZWxmIHNldFZhbHVlOm9iamVj
dCBmb3JQcm9wZXJ0eTprZXldOwogfQogCiAtICh2b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGF0
SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRleApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNWYWx1ZVJlZi5jcHAKaW5kZXggNzk1NTliZTkwNzk4NzE1MWIyZmE3ZDkzMTI2NDI0NTE4
ODgxMGZkYy4uZGFjYTBlMWI0OWRkOGQ1MTJlNTY1ZGMxM2NjY2FmMmI5N2YyMDhiNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCkBAIC04Niw2ICs4Niw4IEBAIHN0
YXRpYyBib29sIGV2ZXJub3RlSGFja05lZWRlZCgpCiAgICAgICAgIHJldHVybiBrSlNUeXBlTnVt
YmVyOwogICAgIGlmIChqc1ZhbHVlLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBrSlNUeXBl
U3RyaW5nOworICAgIGlmIChqc1ZhbHVlLmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiBrSlNU
eXBlU3ltYm9sOwogICAgIEFTU0VSVChqc1ZhbHVlLmlzT2JqZWN0KCkpOwogICAgIHJldHVybiBr
SlNUeXBlT2JqZWN0OwogfQpAQCAtMTYyLDYgKzE2NCwxOCBAQCBib29sIEpTVmFsdWVJc09iamVj
dChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQogICAgIHJldHVybiB0b0pTKGV4
ZWMsIHZhbHVlKS5pc09iamVjdCgpOwogfQogCitib29sIEpTVmFsdWVJc1N5bWJvbChKU0NvbnRl
eHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4
ZWMpOworCisgICAgcmV0dXJuIHRvSlMoZXhlYywgdmFsdWUpLmlzU3ltYm9sKCk7Cit9CisKIGJv
b2wgSlNWYWx1ZUlzQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkKIHsK
ICAgICBpZiAoIWN0eCkgewpAQCAtMzIwLDYgKzMzNCwyMiBAQCBKU1ZhbHVlUmVmIEpTVmFsdWVN
YWtlTnVtYmVyKEpTQ29udGV4dFJlZiBjdHgsIGRvdWJsZSB2YWx1ZSkKICAgICByZXR1cm4gdG9S
ZWYoZXhlYywganNOdW1iZXIocHVyaWZ5TmFOKHZhbHVlKSkpOwogfQogCitKU1ZhbHVlUmVmIEpT
VmFsdWVNYWtlU3ltYm9sKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIGRlc2NyaXB0aW9u
KQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhj
dHgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfQ0FUQ0hfU0NPUEUoZXhlYy0+dm0oKSk7CisKKyAgICBKU1N0cmluZyoganNEZXNjcmlw
dGlvbiA9IGpzU3RyaW5nKGV4ZWMsIGRlc2NyaXB0aW9uID8gZGVzY3JpcHRpb24tPnN0cmluZygp
IDogU3RyaW5nKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwor
CisgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIFN5bWJvbDo6Y3JlYXRlKGV4ZWMsIGpzRGVzY3JpcHRp
b24pKTsKK30KKwogSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZVN0cmluZyhKU0NvbnRleHRSZWYgY3R4
LCBKU1N0cmluZ1JlZiBzdHJpbmcpCiB7CiAgICAgaWYgKCFjdHgpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1ZhbHVlUmVmLmgKaW5kZXggOTgxNWRlNzgzYzBhZWUwNzNlM2E0NDhiZDBjN2Nh
ZGQ0YTk1MmMwNi4uMTJmMmRjYzA0NGU2ZThhZTMwYWMyMDMxZDBiMmRhNWIzNzNhZGIzYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmgKQEAgLTQyLDYgKzQyLDcgQEAKIEBj
b25zdGFudCAgICAga0pTVHlwZU51bWJlciAgICAgQSBwcmltaXRpdmUgbnVtYmVyIHZhbHVlLgog
QGNvbnN0YW50ICAgICBrSlNUeXBlU3RyaW5nICAgICBBIHByaW1pdGl2ZSBzdHJpbmcgdmFsdWUu
CiBAY29uc3RhbnQgICAgIGtKU1R5cGVPYmplY3QgICAgIEFuIG9iamVjdCB2YWx1ZSAobWVhbmlu
ZyB0aGF0IHRoaXMgSlNWYWx1ZVJlZiBpcyBhIEpTT2JqZWN0UmVmKS4KK0Bjb25zdGFudCAgICAg
a0pTVHlwZVN5bWJvbCAgICAgQSBwcmltaXRpdmUgc3ltYm9sIHZhbHVlLgogKi8KIHR5cGVkZWYg
ZW51bSB7CiAgICAga0pTVHlwZVVuZGVmaW5lZCwKQEAgLTQ5LDcgKzUwLDggQEAgdHlwZWRlZiBl
bnVtIHsKICAgICBrSlNUeXBlQm9vbGVhbiwKICAgICBrSlNUeXBlTnVtYmVyLAogICAgIGtKU1R5
cGVTdHJpbmcsCi0gICAga0pTVHlwZU9iamVjdAorICAgIGtKU1R5cGVPYmplY3QsCisgICAga0pT
VHlwZVN5bWJvbCBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goSlNDX01BQ19UQkEpLCBpb3MoSlND
X0lPU19UQkEpKQogfSBKU1R5cGU7CiAKIC8qIQpAQCAtODAsNyArODIsNyBAQCB0eXBlZGVmIGVu
dW0gewogICAgIGtKU1R5cGVkQXJyYXlUeXBlRmxvYXQ2NEFycmF5LAogICAgIGtKU1R5cGVkQXJy
YXlUeXBlQXJyYXlCdWZmZXIsCiAgICAga0pTVHlwZWRBcnJheVR5cGVOb25lLAotfSBKU1R5cGVk
QXJyYXlUeXBlIENGX0VOVU1fQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK30gSlNUeXBlZEFycmF5
VHlwZSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAjaWZk
ZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewpAQCAtMTQ5LDYgKzE1MSwxNiBAQCBKU19FWFBP
UlQgYm9vbCBKU1ZhbHVlSXNTdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1
ZSk7CiAqLwogSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzT2JqZWN0KEpTQ29udGV4dFJlZiBjdHgs
IEpTVmFsdWVSZWYgdmFsdWUpOwogCisvKiEKK0BmdW5jdGlvbgorQGFic3RyYWN0ICAgICAgIFRl
c3RzIHdoZXRoZXIgYSBKYXZhU2NyaXB0IHZhbHVlJ3MgdHlwZSBpcyB0aGUgc3ltYm9sIHR5cGUu
CitAcGFyYW0gY3R4ICAgICAgVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KK0BwYXJhbSB2
YWx1ZSAgICBUaGUgSlNWYWx1ZSB0byB0ZXN0LgorQHJlc3VsdCAgICAgICAgIHRydWUgaWYgdmFs
dWUncyB0eXBlIGlzIHRoZSBzeW1ib2wgdHlwZSwgb3RoZXJ3aXNlIGZhbHNlLgorKi8KK0pTX0VY
UE9SVCBib29sIEpTVmFsdWVJc1N5bWJvbChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZh
bHVlKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goSlNDX01BQ19UQkEpLCBpb3MoSlNDX0lPU19U
QkEpKTsKKworCiAvKiEKIEBmdW5jdGlvbgogQGFic3RyYWN0IFRlc3RzIHdoZXRoZXIgYSBKYXZh
U2NyaXB0IHZhbHVlIGlzIGFuIG9iamVjdCB3aXRoIGEgZ2l2ZW4gY2xhc3MgaW4gaXRzIGNsYXNz
IGNoYWluLgpAQCAtMTY2LDcgKzE3OCw3IEBAIEpTX0VYUE9SVCBib29sIEpTVmFsdWVJc09iamVj
dE9mQ2xhc3MoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNDbGFzCiBAcGFy
YW0gdmFsdWUgICAgVGhlIEpTVmFsdWUgdG8gdGVzdC4KIEByZXN1bHQgICAgICAgICB0cnVlIGlm
IHZhbHVlIGlzIGFuIGFycmF5LCBvdGhlcndpc2UgZmFsc2UuCiAqLwotSlNfRVhQT1JUIGJvb2wg
SlNWYWx1ZUlzQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkgQ0ZfQVZB
SUxBQkxFKDEwXzExLCA5XzApOworSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzQXJyYXkoSlNDb250
ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEw
LjExKSwgaW9zKDkuMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTc1LDcgKzE4Nyw3IEBAIEpT
X0VYUE9SVCBib29sIEpTVmFsdWVJc0FycmF5KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYg
dmFsdWUpIENGX0FWQUlMQUJMRSgxCiBAcGFyYW0gdmFsdWUgICAgVGhlIEpTVmFsdWUgdG8gdGVz
dC4KIEByZXN1bHQgICAgICAgICB0cnVlIGlmIHZhbHVlIGlzIGEgZGF0ZSwgb3RoZXJ3aXNlIGZh
bHNlLgogKi8KLUpTX0VYUE9SVCBib29sIEpTVmFsdWVJc0RhdGUoSlNDb250ZXh0UmVmIGN0eCwg
SlNWYWx1ZVJlZiB2YWx1ZSkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzApOworSlNfRVhQT1JUIGJv
b2wgSlNWYWx1ZUlzRGF0ZShKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CiAKIC8qIQogQGZ1bmN0aW9u
CkBAIC0xODUsNyArMTk3LDcgQEAgSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzRGF0ZShKU0NvbnRl
eHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKSBDRl9BVkFJTEFCTEUoMTAKIEBwYXJhbSBleGNl
cHRpb24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBl
eGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBh
biBleGNlcHRpb24uCiBAcmVzdWx0ICAgICAgICAgICAgIEEgdmFsdWUgb2YgdHlwZSBKU1R5cGVk
QXJyYXlUeXBlIHRoYXQgaWRlbnRpZmllcyB2YWx1ZSdzIFR5cGVkIEFycmF5IHR5cGUsIG9yIGtK
U1R5cGVkQXJyYXlUeXBlTm9uZSBpZiB0aGUgdmFsdWUgaXMgbm90IGEgVHlwZWQgQXJyYXkgb2Jq
ZWN0LgogICovCi1KU19FWFBPUlQgSlNUeXBlZEFycmF5VHlwZSBKU1ZhbHVlR2V0VHlwZWRBcnJh
eVR5cGUoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTVHlwZWRBcnJh
eVR5cGUgSlNWYWx1ZUdldFR5cGVkQXJyYXlUeXBlKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVS
ZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyogQ29tcGFyaW5nIHZhbHVlcyAqLwogCkBAIC0yNTcs
NiArMjY5LDE1IEBAIEpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlQm9vbGVhbihKU0Nv
bnRleHRSZWYgY3R4LCBib29sIGJvb2xlYW4pOwogKi8KIEpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpT
VmFsdWVNYWtlTnVtYmVyKEpTQ29udGV4dFJlZiBjdHgsIGRvdWJsZSBudW1iZXIpOwogCisvKiEK
K0BmdW5jdGlvbgorQGFic3RyYWN0ICAgICAgICAgICAgQ3JlYXRlcyBhIEphdmFTY3JpcHQgdmFs
dWUgb2YgdGhlIHN5bWJvbCB0eXBlLgorQHBhcmFtIGN0eCAgICAgICAgICAgVGhlIGV4ZWN1dGlv
biBjb250ZXh0IHRvIHVzZS4KK0BwYXJhbSBkZXNjcmlwdGlvbiAgIEEgZGVzY3JpcHRpb24gb2Yg
dGhlIG5ld2x5IGNyZWF0ZWQgc3ltYm9sIHZhbHVlLgorQHJlc3VsdCAgICAgICAgICAgICAgQSB1
bmlxdWUgSlNWYWx1ZSBvZiB0aGUgc3ltYm9sIHR5cGUsIHdob3NlIGRlc2NyaXB0aW9uIG1hdGNo
ZXMgdGhlIG9uZSBwcm92aWRlZC4KKyovCitKU19FWFBPUlQgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFr
ZVN5bWJvbChKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBkZXNjcmlwdGlvbik7CisKIC8q
IQogQGZ1bmN0aW9uCiBAYWJzdHJhY3QgICAgICAgQ3JlYXRlcyBhIEphdmFTY3JpcHQgdmFsdWUg
b2YgdGhlIHN0cmluZyB0eXBlLgpAQCAtMjc2LDcgKzI5Nyw3IEBAIEpTX0VYUE9SVCBKU1ZhbHVl
UmVmIEpTVmFsdWVNYWtlU3RyaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHN0cmlu
Zyk7CiAgQHBhcmFtIHN0cmluZyAgIFRoZSBKU1N0cmluZyBjb250YWluaW5nIHRoZSBKU09OIHN0
cmluZyB0byBiZSBwYXJzZWQuCiAgQHJlc3VsdCAgICAgICAgIEEgSlNWYWx1ZSBjb250YWluaW5n
IHRoZSBwYXJzZWQgdmFsdWUsIG9yIE5VTEwgaWYgdGhlIGlucHV0IGlzIGludmFsaWQuCiAgKi8K
LUpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlRnJvbUpTT05TdHJpbmcoSlNDb250ZXh0
UmVmIGN0eCwgSlNTdHJpbmdSZWYgc3RyaW5nKSBDRl9BVkFJTEFCTEUoMTBfNywgN18wKTsKK0pT
X0VYUE9SVCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlRnJvbUpTT05TdHJpbmcoSlNDb250ZXh0UmVm
IGN0eCwgSlNTdHJpbmdSZWYgc3RyaW5nKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNyks
IGlvcyg3LjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC0yODcsNyArMzA4LDcgQEAgSlNfRVhQ
T1JUIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VGcm9tSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4
LCBKU1N0cmluZ1JlZiBzdHIKICBAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFs
dWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBp
ZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1bHQgICAgICAg
ICBBIEpTU3RyaW5nIHdpdGggdGhlIHJlc3VsdCBvZiBzZXJpYWxpemF0aW9uLCBvciBOVUxMIGlm
IGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uCiAgKi8KLUpTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU1Zh
bHVlQ3JlYXRlSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlLCB1
bnNpZ25lZCBpbmRlbnQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzcs
IDdfMCk7CitKU19FWFBPUlQgSlNTdHJpbmdSZWYgSlNWYWx1ZUNyZWF0ZUpTT05TdHJpbmcoSlND
b250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgdW5zaWduZWQgaW5kZW50LCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC43KSwgaW9zKDcuMCkp
OwogCiAvKiBDb252ZXJ0aW5nIHRvIHByaW1pdGl2ZSB2YWx1ZXMgKi8KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9XZWJLaXRBdmFpbGFiaWxpdHkuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvV2ViS2l0QXZhaWxhYmlsaXR5LmgKaW5kZXggODIyNzUyMDNkYzk4
MDE4MzMxYTkxYmI5NWI5ZDZkYjE2ZTU5ZjlhYS4uMGY2YWZiNmIxZGJkNjE5ODFkZWRlZDBhMWU1
YjI0YzhmZGNiNTNmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9XZWJL
aXRBdmFpbGFiaWxpdHkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL1dlYktpdEF2
YWlsYWJpbGl0eS5oCkBAIC02OSwxNSArNjksMTIgQEAKICNlbmRpZiAvKiAhVEFSR0VUX09TX0lQ
SE9ORSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMTAwICovCiAKICNp
ZiBkZWZpbmVkKEJVSUxESU5HX0dUS19fKQotI3VuZGVmIENGX0FWQUlMQUJMRQotI2RlZmluZSBD
Rl9BVkFJTEFCTEUoX21hYywgX2lvcykKLSN1bmRlZiBDRl9FTlVNX0FWQUlMQUJMRQotI2RlZmlu
ZSBDRl9FTlVNX0FWQUlMQUJMRShfbWFjLCBfaW9zKQorI3VuZGVmIEpTQ19BUElfQVZBSUxBQkxF
CisjZGVmaW5lIEpTQ19BUElfQVZBSUxBQkxFKC4uLikKICNlbmRpZgogCiAjZWxzZQotI2RlZmlu
ZSBDRl9BVkFJTEFCTEUoX21hYywgX2lvcykKLSNkZWZpbmUgQ0ZfRU5VTV9BVkFJTEFCTEUoX21h
YywgX2lvcykKKyNkZWZpbmUgSlNDX0FQSV9BVkFJTEFCTEUoLi4uKQogI2VuZGlmCiAKICNlbmRp
ZiAvKiBfX1dlYktpdEF2YWlsYWJpbGl0eV9fICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL0N1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lm1tIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9DdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0
dGVyVGVzdC5tbQppbmRleCA1MzE4OGZiYTg4Zjk1NDI3YzhhZTkzMzlhYWM4OGQwYzY4YTE3ZWIx
Li5iZDdlOGE2ODYwN2U1ZjhkZDc4ZDk0NmJkZGE3NGE2MWQyNWY3ZTBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0N1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0
ZXJUZXN0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VycmVudFRo
aXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0KQEAgLTIzLDYgKzIzLDcgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QuaCIKIAogI2lmIEpTQ19PQkpD
X0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3Rz
L0N1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVzdC5jIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy9DdXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuYwppbmRleCBhYzU0NzFhNjc0MWJm
ZjkzYzcwMGJmM2IzYWFjNmVkMzg3NDlmMGJmLi45ZmZlMjMzZjRiNzk2ZjVhMGI5NWIzNzRhNDgz
YjAxNGVkNWJkZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3Rz
L0N1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVzdC5jCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvdGVzdHMvQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmMKQEAgLTIzLDYgKzIzLDcg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkN1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVzdC5oIgogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNPYmplY3RSZWZQcml2YXRlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL3Rlc3RzL0RhdGVUZXN0cy5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVz
dHMvRGF0ZVRlc3RzLm1tCmluZGV4IDJiZGEzYWRhNmIxNThlMDEwOGFlYzVmNDJlNzY1Mzk3MzBl
YzJlZDkuLjY2NTIxNzdkZTQxN2IxMmVlOTRkZTg4M2I4ZmIwYmQ3MDlkZDY3MmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRGF0ZVRlc3RzLm1tCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRGF0ZVRlc3RzLm1tCkBAIC0yMyw2ICsyMyw3
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2ltcG9ydCAi
Y29uZmlnLmgiCiAjaW1wb3J0ICJEYXRlVGVzdHMuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3Rz
L0pTRXhwb3J0VGVzdHMubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTRXhw
b3J0VGVzdHMubW0KaW5kZXggMWNlYzkzOTc5YzQxNmY0YzBmMDQ5MDVlZTc0NzZlNzg2NGQ4NDI1
Mi4uZGZkYzk1ZjQ3YmM3NzViMDhiMzY2NzNkMGJiYmZlNmJjZTM0MWI3OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU0V4cG9ydFRlc3RzLm1tCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNFeHBvcnRUZXN0cy5tbQpAQCAtMjMsNiAr
MjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbXBv
cnQgImNvbmZpZy5oIgogI2ltcG9ydCAiSlNFeHBvcnRUZXN0cy5oIgogCiAjaW1wb3J0IDxvYmpj
L3J1bnRpbWUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
SlNOb2RlLmMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZS5jCmluZGV4
IGQwYTBkYzNlYzcyMzcyNTdmYTE4MGQwNTE0Zjc0YzZhZDJlNGI1YjcuLmJjMDA0MGFlNmJhNDA5
ODUzODM4Y2FlYWQ2YTIzODRlYzk5OTAwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvSlNOb2RlLmMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90
ZXN0cy9KU05vZGUuYwpAQCAtMjMsNyArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAot
I2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVk
ZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiSlNOb2RlTGlzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU05vZGVMaXN0LmMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL0pTTm9kZUxpc3QuYwppbmRleCBmMDM3ZTA5NGEwOWUxYTIyNjA0NGVl
ZDFmMjNkMGE1MTg2MWEzZjRiLi45OWEzMjk1MThlNmE5YTFjZmIxMjY3NjQ3MzlhMGI2OWNmYTVk
NDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZUxp
c3QuYworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZUxpc3QuYwpA
QCAtMjMsNyArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2luY2x1ZGUgPHd0Zi9Q
bGF0Zm9ybS5oPgorI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAj
aW5jbHVkZSAiSlNOb2RlTGlzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS90ZXN0cy9Ob2RlLmMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL05vZGUu
YwppbmRleCBkYjY4N2U5NTJmMWE5ZDhjMTM0YjkwNjc3ZDI5YTY0MDZkOGRiMWEyLi44ZjdkMDZi
MmFhNGFkZTI2OWQ2MWVmYzYxYzAxODRjY2MzMTk1YTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL3Rlc3RzL05vZGUuYworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL05vZGUuYwpAQCAtMjMsNyArMjMsOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8K
IAorI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5vZGUuaCIKKwogI2luY2x1ZGUgPHN0
ZGRlZi5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL05vZGVMaXN0LmMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL05vZGVMaXN0LmMKaW5kZXggNjlmNGNkNWM0ODczMTJiZDYzOTk2MzRmYjA2ODRhMTIy
NjY0ZGMxOC4uMjJkMzg3YzBkNDIyNmZiYWQxMTk3YzY0ODMxY2Q1N2FmMzFhZmRmNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Ob2RlTGlzdC5jCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9kZUxpc3QuYwpAQCAtMjMsNiArMjMsNyBA
QAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
Ik5vZGVMaXN0LmgiCiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvbWluaWRvbS5jIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS90ZXN0cy9taW5pZG9tLmMKaW5kZXggMDJiNDFhOWM3ZjlkYTExM2IwMDNkNGY5MTlhNDIw
OGQzODliNzhiZC4uNDFmMThjZGY3MjkwNDM2OTBjZmU3NzNiYTQwZDhiNWI0NGNhNzA5OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9taW5pZG9tLmMKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9taW5pZG9tLmMKQEAgLTI0LDcgKzI0LDcg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNp
bmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIkpTQ29udGV4dFJlZi5oIgogI2luY2x1ZGUg
IkpTTm9kZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90
ZXN0YXBpLmMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwppbmRl
eCA3YmVjZGZlMDQxMTViZjk0ODllZjg0MTk3YzE2NzFjNWI4M2JhNGUyLi44NmQxYzI1YzI3ZTk1
MmQ2MWFiOWU0MWJlMTQ1NzQxMGZiYzQ4ZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL3Rlc3RhcGkuYwpAQCAtMjMsNyArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpZiBV
U0UoQ0YpCiAjaW5jbHVkZSAiSmF2YVNjcmlwdENvcmUuaCIKQEAgLTY2LDYgKzY2LDggQEAKIHZv
aWQgdGVzdE9iamVjdGl2ZUNBUEkodm9pZCk7CiAjZW5kaWYKIAoraW50IHRlc3RDQVBJVmlhQ3Bw
KHZvaWQpOworCiBib29sIGFzc2VydFRydWUoYm9vbCB2YWx1ZSwgY29uc3QgY2hhciogbWVzc2Fn
ZSk7CiAKIHN0YXRpYyBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dDsKQEAgLTEzNjEsNiArMTM2
Myw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAjaWYgSlNDX09CSkNfQVBJ
X0VOQUJMRUQKICAgICB0ZXN0T2JqZWN0aXZlQ0FQSSgpOwogI2VuZGlmCisgICAgUkVMRUFTRV9B
U1NFUlQoIXRlc3RDQVBJVmlhQ3BwKCkpOwogCiAgICAgY29uc3QgY2hhciAqc2NyaXB0UGF0aCA9
ICJ0ZXN0YXBpLmpzIjsKICAgICBpZiAoYXJnYyA+IDEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL3Rlc3RzL3Rlc3RhcGkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjMWI0NTA3ZjlhOTY5OWM0NjRi
NjQ2ZjkyMmZlODE4ZTU3NGZlZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuY3BwCkBAIC0wLDAgKzEsMzkxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
KyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkphdmFTY3JpcHRDb3JlLmgiCisKKyNp
bmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgorI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworZXh0ZXJu
ICJDIiBpbnQgdGVzdENBUElWaWFDcHAoKTsKKworY2xhc3MgQVBJU3RyaW5nIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShBUElTdHJpbmcpOworcHVibGljOgorCisgICAgQVBJU3RyaW5nKGNv
bnN0IGNoYXIqIHN0cmluZykKKyAgICAgICAgOiBtX3N0cmluZyhKU1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhzdHJpbmcpKQorICAgIHsKKyAgICB9CisKKyAgICB+QVBJU3RyaW5nKCkKKyAg
ICB7CisgICAgICAgIEpTU3RyaW5nUmVsZWFzZShtX3N0cmluZyk7CisgICAgfQorCisgICAgb3Bl
cmF0b3IgSlNTdHJpbmdSZWYoKSB7IHJldHVybiBtX3N0cmluZzsgfQorCitwcml2YXRlOgorICAg
IEpTU3RyaW5nUmVmIG1fc3RyaW5nOworfTsKKworY2xhc3MgQVBJQ29udGV4dCB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQVBJQ29udGV4dCk7CitwdWJsaWM6CisKKyAgICBBUElDb250ZXh0
KCkKKyAgICAgICAgOiBtX2NvbnRleHQoSlNHbG9iYWxDb250ZXh0Q3JlYXRlKG51bGxwdHIpKQor
ICAgIHsKKyAgICAgICAgQVBJU3RyaW5nIHByaW50KCJwcmludCIpOworICAgICAgICBKU09iamVj
dFJlZiBwcmludEZ1bmN0aW9uID0gSlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2sobV9j
b250ZXh0LCBwcmludCwgW10gKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmLCBKU09iamVj
dFJlZiwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqKSB7CisKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBh
cmd1bWVudENvdW50OyBpKyspCisgICAgICAgICAgICAgICAgZGF0YUxvZyhiaXR3aXNlX2Nhc3Q8
SlNDOjpKU1ZhbHVlPihhcmd1bWVudHNbaV0pKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigpOwor
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisgICAgICAgIH0p
OworCisgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHkobV9jb250ZXh0LCBKU0NvbnRleHRHZXRH
bG9iYWxPYmplY3QobV9jb250ZXh0KSwgcHJpbnQsIHByaW50RnVuY3Rpb24sIGtKU1Byb3BlcnR5
QXR0cmlidXRlTm9uZSwgbnVsbHB0cik7CisgICAgfQorCisgICAgfkFQSUNvbnRleHQoKQorICAg
IHsKKyAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShtX2NvbnRleHQpOworICAgIH0KKwor
ICAgIG9wZXJhdG9yIEpTR2xvYmFsQ29udGV4dFJlZigpIHsgcmV0dXJuIG1fY29udGV4dDsgfQor
Citwcml2YXRlOgorICAgIEpTR2xvYmFsQ29udGV4dFJlZiBtX2NvbnRleHQ7Cit9OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgQVBJVmVjdG9yIDogcHJvdGVjdGVkIFZlY3RvcjxUPiB7
CisgICAgdXNpbmcgQmFzZSA9IFZlY3RvcjxUPjsKK3B1YmxpYzoKKyAgICBBUElWZWN0b3IoQVBJ
Q29udGV4dCYgY29udGV4dCkKKyAgICAgICAgOiBCYXNlKCkKKyAgICAgICAgLCBtX2NvbnRleHQo
Y29udGV4dCkKKyAgICB7CisgICAgfQorCisgICAgfkFQSVZlY3RvcigpCisgICAgeworICAgICAg
ICBmb3IgKGF1dG8mIHZhbHVlIDogKnRoaXMpCisgICAgICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0
KG1fY29udGV4dCwgdmFsdWUpOworICAgIH0KKworICAgIHVzaW5nIFZlY3RvcjxUPjo6b3BlcmF0
b3JbXTsKKyAgICB1c2luZyBWZWN0b3I8VD46OnNpemU7CisgICAgdXNpbmcgVmVjdG9yPFQ+Ojpi
ZWdpbjsKKyAgICB1c2luZyBWZWN0b3I8VD46OmVuZDsKKyAgICB1c2luZyB0eXBlbmFtZSBWZWN0
b3I8VD46Oml0ZXJhdG9yOworCisgICAgdm9pZCBhcHBlbmQoVCB2YWx1ZSkKKyAgICB7CisgICAg
ICAgIEpTVmFsdWVQcm90ZWN0KG1fY29udGV4dCwgdmFsdWUpOworICAgICAgICBCYXNlOjphcHBl
bmQoV1RGTW92ZSh2YWx1ZSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBUElDb250ZXh0JiBt
X2NvbnRleHQ7Cit9OworCitjbGFzcyBUZXN0QVBJIHsKK3B1YmxpYzoKKyAgICBpbnQgcnVuKCk7
Citwcml2YXRlOgorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gU3RyaW5ncz4KKyAgICBib29s
IGNoZWNrKGJvb2wgY29uZGl0aW9uLCBTdHJpbmdzLi4uIG1lc3NhZ2UpOworCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgSlNGdW5jdG9yLCB0eXBlbmFtZSBBUElGdW5jdG9yPgorICAgIHZvaWQgY2hl
Y2tKU0FuZEFQSU1hdGNoKGNvbnN0IEpTRnVuY3RvciYsIGNvbnN0IEFQSUZ1bmN0b3ImLCBjb25z
dCBjaGFyKiBkZXNjcmlwdGlvbik7CisKKyAgICAvLyBIZWxwZXIgbWV0aG9kcy4KKyAgICB1c2lu
ZyBTY3JpcHRSZXN1bHQgPSBFeHBlY3RlZDxKU1ZhbHVlUmVmLCBKU1ZhbHVlUmVmPjsKKyAgICBT
Y3JpcHRSZXN1bHQgZXZhbHVhdGVTY3JpcHQoY29uc3QgY2hhciogc2NyaXB0LCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0ID0gbnVsbHB0cik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1l
bnRUeXBlcz4KKyAgICBTY3JpcHRSZXN1bHQgY2FsbEZ1bmN0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0
aW9uU291cmNlLCBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cyk7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KKyAgICBib29sIGZ1bmN0aW9uUmV0dXJuc1RydWUoY29u
c3QgY2hhciogZnVuY3Rpb25Tb3VyY2UsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKTsKKwor
ICAgIC8vIFdheXMgdG8gbWFrZSBzZXRzIG9mIGludGVyZXN0aW5nIHRoaW5ncy4KKyAgICBBUElW
ZWN0b3I8SlNPYmplY3RSZWY+IGludGVyZXN0aW5nT2JqZWN0cygpOworICAgIEFQSVZlY3RvcjxK
U1ZhbHVlUmVmPiBpbnRlcmVzdGluZ0tleXMoKTsKKworICAgIGludCBmYWlsZWQgeyAwIH07Cisg
ICAgQVBJQ29udGV4dCBjb250ZXh0OworfTsKKworaW50IHRlc3RDQVBJVmlhQ3BwKCkKK3sKKyAg
ICBUZXN0QVBJIHRlc3RlcjsKKyAgICByZXR1cm4gdGVzdGVyLnJ1bigpOworfQorCitUZXN0QVBJ
OjpTY3JpcHRSZXN1bHQgVGVzdEFQSTo6ZXZhbHVhdGVTY3JpcHQoY29uc3QgY2hhciogc2NyaXB0
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0KQoreworICAgIEFQSVN0cmluZyBzY3JpcHRBUElTdHJp
bmcoc2NyaXB0KTsKKyAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IG51bGxwdHI7CisKKyAgICBK
U1ZhbHVlUmVmIHJlc3VsdCA9IEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgc2NyaXB0QVBJU3Ry
aW5nLCB0aGlzT2JqZWN0LCBudWxscHRyLCAwLCAmZXhjZXB0aW9uKTsKKyAgICBpZiAoZXhjZXB0
aW9uKQorICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxKU1ZhbHVlUmVmPihleGNlcHRpb24pOwor
ICAgIHJldHVybiBTY3JpcHRSZXN1bHQocmVzdWx0KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUu
Li4gQXJndW1lbnRUeXBlcz4KK1Rlc3RBUEk6OlNjcmlwdFJlc3VsdCBUZXN0QVBJOjpjYWxsRnVu
Y3Rpb24oY29uc3QgY2hhciogZnVuY3Rpb25Tb3VyY2UsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1l
bnRzKQoreworICAgIEpTVmFsdWVSZWYgZnVuY3Rpb247CisgICAgeworICAgICAgICBTY3JpcHRS
ZXN1bHQgZnVuY3Rpb25SZXN1bHQgPSBldmFsdWF0ZVNjcmlwdChmdW5jdGlvblNvdXJjZSk7Cisg
ICAgICAgIGlmICghZnVuY3Rpb25SZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25S
ZXN1bHQ7CisgICAgICAgIGZ1bmN0aW9uID0gZnVuY3Rpb25SZXN1bHQudmFsdWUoKTsKKyAgICB9
CisKKyAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IG51bGxwdHI7CisgICAgaWYgKEpTT2JqZWN0
UmVmIGZ1bmN0aW9uT2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGZ1bmN0aW9uLCAm
ZXhjZXB0aW9uKSkgeworICAgICAgICBKU1ZhbHVlUmVmIGFyZ3Nbc2l6ZW9mLi4uKGFyZ3VtZW50
cyldIHsgYXJndW1lbnRzLi4uIH07CisgICAgICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNPYmpl
Y3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBmdW5jdGlvbk9iamVjdCwgZnVuY3Rpb25PYmplY3Qs
IHNpemVvZi4uLihhcmd1bWVudHMpLCBhcmdzLCAmZXhjZXB0aW9uKTsKKyAgICAgICAgaWYgKCFl
eGNlcHRpb24pCisgICAgICAgICAgICByZXR1cm4gU2NyaXB0UmVzdWx0KHJlc3VsdCk7CisgICAg
fQorCisgICAgUkVMRUFTRV9BU1NFUlQoZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gVW5leHBlY3Rl
ZDxKU1ZhbHVlUmVmPihleGNlcHRpb24pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1
bWVudFR5cGVzPgorYm9vbCBUZXN0QVBJOjpmdW5jdGlvblJldHVybnNUcnVlKGNvbnN0IGNoYXIq
IGZ1bmN0aW9uU291cmNlLCBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBKU1Zh
bHVlUmVmIHRydWVWYWx1ZSA9IEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCB0cnVlKTsKKyAg
ICBTY3JpcHRSZXN1bHQgcmVzdWx0ID0gY2FsbEZ1bmN0aW9uKGZ1bmN0aW9uU291cmNlLCBhcmd1
bWVudHMuLi4pOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIEpTVmFsdWVJc1N0cmljdEVxdWFsKGNvbnRleHQsIHRydWVWYWx1ZSwgcmVzdWx0LnZh
bHVlKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBTdHJpbmdzPgorYm9vbCBUZXN0QVBJ
OjpjaGVjayhib29sIGNvbmRpdGlvbiwgU3RyaW5ncy4uLiBtZXNzYWdlcykKK3sKKyAgICBpZiAo
IWNvbmRpdGlvbikgeworICAgICAgICBkYXRhTG9nTG4obWVzc2FnZXMuLi4sICI6IEZBSUxFRCIp
OworICAgICAgICBmYWlsZWQrKzsKKyAgICB9IGVsc2UKKyAgICAgICAgZGF0YUxvZ0xuKG1lc3Nh
Z2VzLi4uLCAiOiBQQVNTRUQiKTsKKworICAgIHJldHVybiBjb25kaXRpb247Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIEpTRnVuY3RvciwgdHlwZW5hbWUgQVBJRnVuY3Rvcj4KK3ZvaWQgVGVzdEFQ
STo6Y2hlY2tKU0FuZEFQSU1hdGNoKGNvbnN0IEpTRnVuY3RvciYganNGdW5jdG9yLCBjb25zdCBB
UElGdW5jdG9yJiBhcGlGdW5jdG9yLCBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbikKK3sKKyAgICBK
U1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IG51bGxwdHI7CisgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBh
cGlGdW5jdG9yKCZleGNlcHRpb24pOworICAgIFNjcmlwdFJlc3VsdCBqc1Jlc3VsdCA9IGpzRnVu
Y3RvcigpOworICAgIGlmICghanNSZXN1bHQpIHsKKyAgICAgICAgY2hlY2soZXhjZXB0aW9uLCAi
SlMgYW5kIEFQSSBjYWxscyBzaG91bGQgYm90aCB0aHJvdyBhbiBleGNlcHRpb24gd2hpbGUgIiwg
ZGVzY3JpcHRpb24pOworICAgICAgICBjaGVjayhmdW5jdGlvblJldHVybnNUcnVlKCIoZnVuY3Rp
b24oYSwgYikgeyByZXR1cm4gYS5jb25zdHJ1Y3RvciA9PT0gYi5jb25zdHJ1Y3RvcjsgfSkiLCBl
eGNlcHRpb24sIGpzUmVzdWx0LmVycm9yKCkpLCAiSlMgYW5kIEFQSSBjYWxscyBzaG91bGQgYm90
aCB0aHJvdyB0aGUgc2FtZSBleGNlcHRpb24gd2hpbGUgIiwgZGVzY3JpcHRpb24pOworICAgIH0g
ZWxzZSB7CisgICAgICAgIGNoZWNrKCFleGNlcHRpb24sICJKUyBhbmQgQVBJIGNhbGxzIHNob3Vs
ZCBib3RoIG5vdCB0aHJvdyBhbiBleGNlcHRpb24gd2hpbGUgIiwgZGVzY3JpcHRpb24pOworICAg
ICAgICBjaGVjayhKU1ZhbHVlSXNTdHJpY3RFcXVhbChjb250ZXh0LCByZXN1bHQsIGpzUmVzdWx0
LnZhbHVlKCkpLCAiSlMgcmVzdWx0IGFuZCBBUEkgY2FsbHMgc2hvdWxkIHJldHVybiB0aGUgc2Ft
ZSB2YWx1ZSB3aGlsZSAiLCBkZXNjcmlwdGlvbik7CisgICAgfQorfQorCitBUElWZWN0b3I8SlNP
YmplY3RSZWY+IFRlc3RBUEk6OmludGVyZXN0aW5nT2JqZWN0cygpCit7CisgICAgQVBJVmVjdG9y
PEpTT2JqZWN0UmVmPiByZXN1bHQoY29udGV4dCk7CisgICAgSlNPYmplY3RSZWYgYXJyYXkgPSBK
U1ZhbHVlVG9PYmplY3QoY29udGV4dCwgZXZhbHVhdGVTY3JpcHQoCisgICAgICAgICJbe30sIFtd
LCB7IFtTeW1ib2wuaXRlcmF0b3JdOiAxIH0sIG5ldyBEYXRlKCksIG5ldyBTdHJpbmcoJ3N0cicp
LCBuZXcgTWFwKCksIG5ldyBTZXQoKSwgbmV3IFdlYWtNYXAoKSwgbmV3IFdlYWtTZXQoKSwgbmV3
IEVycm9yKCksIG5ldyBOdW1iZXIoNDIpLCBuZXcgQm9vbGVhbigpLCB7IGdldCBsZW5ndGgoKSB7
IHRocm93IG5ldyBFcnJvcigpOyB9IH1dOyIpLnZhbHVlKCksIG51bGxwdHIpOworCisgICAgQVBJ
U3RyaW5nIGxlbmd0aFN0cmluZygibGVuZ3RoIik7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gSlNW
YWx1ZVRvTnVtYmVyKGNvbnRleHQsIEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgYXJyYXks
IGxlbmd0aFN0cmluZywgbnVsbHB0ciksIG51bGxwdHIpOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1Zh
bHVlVG9PYmplY3QoY29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwg
YXJyYXksIGksIG51bGxwdHIpLCBudWxscHRyKTsKKyAgICAgICAgQVNTRVJUKG9iamVjdCk7Cisg
ICAgICAgIHJlc3VsdC5hcHBlbmQob2JqZWN0KTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitBUElWZWN0b3I8SlNWYWx1ZVJlZj4gVGVzdEFQSTo6aW50ZXJlc3RpbmdLZXlzKCkK
K3sKKyAgICBBUElWZWN0b3I8SlNWYWx1ZVJlZj4gcmVzdWx0KGNvbnRleHQpOworICAgIEpTT2Jq
ZWN0UmVmIGFycmF5ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGV2YWx1YXRlU2NyaXB0KCJb
e30sIFtdLCAxLCBTeW1ib2wuaXRlcmF0b3IsICdsZW5ndGgnXSIpLnZhbHVlKCksIG51bGxwdHIp
OworCisgICAgQVBJU3RyaW5nIGxlbmd0aFN0cmluZygibGVuZ3RoIik7CisgICAgdW5zaWduZWQg
bGVuZ3RoID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIEpTT2JqZWN0R2V0UHJvcGVydHkoY29u
dGV4dCwgYXJyYXksIGxlbmd0aFN0cmluZywgbnVsbHB0ciksIG51bGxwdHIpOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBKU1ZhbHVlUmVmIHZh
bHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgYXJyYXksIGksIG51bGxw
dHIpOworICAgICAgICBBU1NFUlQodmFsdWUpOworICAgICAgICByZXN1bHQuYXBwZW5kKHZhbHVl
KTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitpbnQgVGVzdEFQSTo6cnVuKCkK
K3sKKyAgICBkYXRhTG9nTG4oIlN0YXJ0aW5nIEMtQVBJIHRlc3RzIGluIEMrKyIpOworICAgIGNv
bnN0IGNoYXIqIGlzU3ltYm9sRnVuY3Rpb24gPSAiKGZ1bmN0aW9uIGlzU3ltYm9sKHN5bWJvbCkg
eyByZXR1cm4gdHlwZW9mKHN5bWJvbCkgPT09ICdzeW1ib2wnOyB9KSI7CisgICAgY29uc3QgY2hh
ciogZ2V0RnVuY3Rpb24gPSAiKGZ1bmN0aW9uIGdldChvYmplY3QsIGtleSkgeyByZXR1cm4gb2Jq
ZWN0W2tleV07IH0pIjsKKyAgICBjb25zdCBjaGFyKiBzZXRGdW5jdGlvbiA9ICIoZnVuY3Rpb24g
c2V0KG9iamVjdCwga2V5LCB2YWx1ZSkgeyBvYmplY3Rba2V5XSA9IHZhbHVlOyB9KSI7CisgICAg
Y29uc3QgY2hhciogaGFzRnVuY3Rpb24gPSAiKGZ1bmN0aW9uIGhhcyhvYmplY3QsIGtleSkgeyBy
ZXR1cm4ga2V5IGluIG9iamVjdDsgfSkiOworICAgIGNvbnN0IGNoYXIqIGRlbGV0ZUZ1bmN0aW9u
ID0gIihmdW5jdGlvbiBkZWwob2JqZWN0LCBrZXkpIHsgcmV0dXJuIGRlbGV0ZSBvYmplY3Rba2V5
XTsgfSkiOworCisgICAgeworICAgICAgICAvLyBDYW4ndCBjYWxsIFN5bWJvbCBhcyBhIGNvbnN0
cnVjdG9yIHNpbmNlIGl0J3Mgbm90IHN1YmNsYXNzYWJsZS4KKyAgICAgICAgYXV0byByZXN1bHQg
PSBldmFsdWF0ZVNjcmlwdCgiU3ltYm9sKCdkb3BlJyk7Iik7CisgICAgICAgIGNoZWNrKEpTVmFs
dWVHZXRUeXBlKGNvbnRleHQsIHJlc3VsdC52YWx1ZSgpKSA9PSBrSlNUeXBlU3ltYm9sLCAiZG9w
ZSBnZXQgdHlwZSBpcyBhIHN5bWJvbCIpOworICAgICAgICBjaGVjayhKU1ZhbHVlSXNTeW1ib2wo
Y29udGV4dCwgcmVzdWx0LnZhbHVlKCkpLCAiZG9wZSBpcyBhIHN5bWJvbCIpOworICAgIH0KKwor
ICAgIHsKKyAgICAgICAgQVBJU3RyaW5nIGRlc2NyaXB0aW9uKCJkb3BlIik7CisgICAgICAgIEpT
VmFsdWVSZWYgc3ltYm9sID0gSlNWYWx1ZU1ha2VTeW1ib2woY29udGV4dCwgZGVzY3JpcHRpb24p
OworICAgICAgICBjaGVjayhmdW5jdGlvblJldHVybnNUcnVlKGlzU3ltYm9sRnVuY3Rpb24sIHN5
bWJvbCksICJKU1ZhbHVlTWFrZVN5bWJvbCBtYWtlcyBhIHN5bWJvbCB2YWx1ZSIpOworICAgIH0K
KworICAgIHsKKyAgICAgICAgYXV0byBvYmplY3RzID0gaW50ZXJlc3RpbmdPYmplY3RzKCk7Cisg
ICAgICAgIGF1dG8ga2V5cyA9IGludGVyZXN0aW5nS2V5cygpOworCisgICAgICAgIGZvciAoYXV0
byYgb2JqZWN0IDogb2JqZWN0cykgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJcbm5leHQgb2Jq
ZWN0OiAiLCBiaXR3aXNlX2Nhc3Q8SlNDOjpKU1ZhbHVlPihvYmplY3QpKTsKKyAgICAgICAgICAg
IGZvciAoYXV0byYga2V5IDoga2V5cykgeworICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiVXNp
bmcga2V5OiAiLCBiaXR3aXNlX2Nhc3Q8SlNDOjpKU1ZhbHVlPihrZXkpKTsKKyAgICAgICAgICAg
ICAgICBjaGVja0pTQW5kQVBJTWF0Y2goCisgICAgICAgICAgICAgICAgICAgIFsmXSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbEZ1bmN0aW9uKGdldEZ1bmN0aW9uLCBvYmpl
Y3QsIGtleSk7CisgICAgICAgICAgICAgICAgICAgIH0sIFsmXSAoSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPYmplY3RHZXRQcm9wZXJ0
eUtleShjb250ZXh0LCBvYmplY3QsIGtleSwgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICAg
ICAgfSwgImNoZWNraW5nIGdldCBwcm9wZXJ0eSBrZXlzIik7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICB7CisgICAgICAgIGF1dG8ganNPYmplY3RzID0gaW50ZXJlc3Rp
bmdPYmplY3RzKCk7CisgICAgICAgIGF1dG8gYXBpT2JqZWN0cyA9IGludGVyZXN0aW5nT2JqZWN0
cygpOworICAgICAgICBhdXRvIGtleXMgPSBpbnRlcmVzdGluZ0tleXMoKTsKKworICAgICAgICBK
U1ZhbHVlUmVmIHRoZUFuc3dlciA9IEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIDQyKTsKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqc09iamVjdHMuc2l6ZSgpOyBpKyspIHsKKyAg
ICAgICAgICAgIGZvciAoYXV0byYga2V5IDoga2V5cykgeworICAgICAgICAgICAgICAgIEpTT2Jq
ZWN0UmVmIGpzT2JqZWN0ID0ganNPYmplY3RzW2ldOworICAgICAgICAgICAgICAgIEpTT2JqZWN0
UmVmIGFwaU9iamVjdCA9IGFwaU9iamVjdHNbaV07CisgICAgICAgICAgICAgICAgY2hlY2tKU0Fu
ZEFQSU1hdGNoKAorICAgICAgICAgICAgICAgICAgICBbJl0geworICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGNhbGxGdW5jdGlvbihzZXRGdW5jdGlvbiwganNPYmplY3QsIGtleSwgdGhl
QW5zd2VyKTsKKyAgICAgICAgICAgICAgICAgICAgfSAsIFsmXSAoSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdFNldFByb3BlcnR5S2V5KGNv
bnRleHQsIGFwaU9iamVjdCwga2V5LCB0aGVBbnN3ZXIsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9u
ZSwgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjb250ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgInNldHRpbmcgcHJv
cGVydHkga2V5cyB0byB0aGUgYW5zd2VyIik7CisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZ2V0
IGlzIHRoZSBzYW1lIG9uIEFQSSBvYmplY3QuCisgICAgICAgICAgICAgICAgY2hlY2tKU0FuZEFQ
SU1hdGNoKAorICAgICAgICAgICAgICAgICAgICBbJl0geworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGNhbGxGdW5jdGlvbihnZXRGdW5jdGlvbiwgYXBpT2JqZWN0LCBrZXkpOworICAg
ICAgICAgICAgICAgICAgICB9LCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT2JqZWN0R2V0UHJvcGVydHlLZXkoY29udGV4dCwg
YXBpT2JqZWN0LCBrZXksIGV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAgICAgIH0sICJnZXR0
aW5nIHByb3BlcnR5IGtleXMgZnJvbSBBUEkgb2JqZWN0cyIpOworICAgICAgICAgICAgICAgIC8v
IENoZWNrIGdldCBpcyB0aGUgc2FtZSBvbiByZXNwZWN0aXZlIG9iamVjdHMuCisgICAgICAgICAg
ICAgICAgY2hlY2tKU0FuZEFQSU1hdGNoKAorICAgICAgICAgICAgICAgICAgICBbJl0geworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxGdW5jdGlvbihnZXRGdW5jdGlvbiwganNP
YmplY3QsIGtleSk7CisgICAgICAgICAgICAgICAgICAgIH0sIFsmXSAoSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPYmplY3RHZXRQcm9w
ZXJ0eUtleShjb250ZXh0LCBhcGlPYmplY3QsIGtleSwgZXhjZXB0aW9uKTsKKyAgICAgICAgICAg
ICAgICAgICAgfSwgImdldHRpbmcgcHJvcGVydHkga2V5cyBmcm9tIHJlc3BlY3RpdmUgb2JqZWN0
cyIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgeworICAgICAgICBh
dXRvIG9iamVjdHMgPSBpbnRlcmVzdGluZ09iamVjdHMoKTsKKyAgICAgICAgYXV0byBrZXlzID0g
aW50ZXJlc3RpbmdLZXlzKCk7CisKKyAgICAgICAgSlNWYWx1ZVJlZiB0aGVBbnN3ZXIgPSBKU1Zh
bHVlTWFrZU51bWJlcihjb250ZXh0LCA0Mik7CisgICAgICAgIGZvciAoYXV0byYgb2JqZWN0IDog
b2JqZWN0cykgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJcbk5leHQgb2JqZWN0OiAiLCBiaXR3
aXNlX2Nhc3Q8SlNDOjpKU1ZhbHVlPihvYmplY3QpKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYg
a2V5IDoga2V5cykgeworICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiVXNpbmcga2V5OiAiLCBi
aXR3aXNlX2Nhc3Q8SlNDOjpKU1ZhbHVlPihrZXkpKTsKKyAgICAgICAgICAgICAgICBjaGVja0pT
QW5kQVBJTWF0Y2goCisgICAgICAgICAgICAgICAgICAgIFsmXSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gY2FsbEZ1bmN0aW9uKGhhc0Z1bmN0aW9uLCBvYmplY3QsIGtleSk7Cisg
ICAgICAgICAgICAgICAgICAgIH0sIFsmXSAoSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIEpT
T2JqZWN0SGFzUHJvcGVydHlLZXkoY29udGV4dCwgb2JqZWN0LCBrZXksIGV4Y2VwdGlvbikpOwor
ICAgICAgICAgICAgICAgICAgICB9LCAiY2hlY2tpbmcgaGFzIHByb3BlcnR5IGtleXMgdW5zZXQi
KTsKKworICAgICAgICAgICAgICAgIGNoZWNrKCEhY2FsbEZ1bmN0aW9uKHNldEZ1bmN0aW9uLCBv
YmplY3QsIGtleSwgdGhlQW5zd2VyKSwgInNldCBwcm9wZXJ0eSB0byB0aGUgYW5zd2VyIik7CisK
KyAgICAgICAgICAgICAgICBjaGVja0pTQW5kQVBJTWF0Y2goCisgICAgICAgICAgICAgICAgICAg
IFsmXSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbEZ1bmN0aW9uKGhhc0Z1
bmN0aW9uLCBvYmplY3QsIGtleSk7CisgICAgICAgICAgICAgICAgICAgIH0sIFsmXSAoSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VCb29sZWFuKGNvbnRleHQsIEpTT2JqZWN0SGFzUHJvcGVydHlLZXkoY29udGV4dCwgb2Jq
ZWN0LCBrZXksIGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgICAgICB9LCAiY2hlY2tpbmcg
aGFzIHByb3BlcnR5IGtleXMgc2V0Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisKKyAgICB7CisgICAgICAgIGF1dG8gb2JqZWN0cyA9IGludGVyZXN0aW5nT2JqZWN0cygpOwor
ICAgICAgICBhdXRvIGtleXMgPSBpbnRlcmVzdGluZ0tleXMoKTsKKworICAgICAgICBKU1ZhbHVl
UmVmIHRoZUFuc3dlciA9IEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIDQyKTsKKyAgICAgICAg
Zm9yIChhdXRvJiBvYmplY3QgOiBvYmplY3RzKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIlxu
TmV4dCBvYmplY3Q6ICIsIGJpdHdpc2VfY2FzdDxKU0M6OkpTVmFsdWU+KG9iamVjdCkpOworICAg
ICAgICAgICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzKSB7CisgICAgICAgICAgICAgICAgZGF0YUxv
Z0xuKCJVc2luZyBrZXk6ICIsIGJpdHdpc2VfY2FzdDxKU0M6OkpTVmFsdWU+KGtleSkpOworICAg
ICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZd
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oZGVsZXRlRnVu
Y3Rpb24sIG9iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgWyZdIChKU1ZhbHVl
UmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
TWFrZUJvb2xlYW4oY29udGV4dCwgSlNPYmplY3REZWxldGVQcm9wZXJ0eUtleShjb250ZXh0LCBv
YmplY3QsIGtleSwgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIH0sICJjaGVja2lu
ZyBoYXMgcHJvcGVydHkga2V5cyB1bnNldCIpOworCisgICAgICAgICAgICAgICAgY2hlY2soISFj
YWxsRnVuY3Rpb24oc2V0RnVuY3Rpb24sIG9iamVjdCwga2V5LCB0aGVBbnN3ZXIpLCAic2V0IHBy
b3BlcnR5IHRvIHRoZSBhbnN3ZXIiKTsKKworICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElN
YXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBjYWxsRnVuY3Rpb24oZGVsZXRlRnVuY3Rpb24sIG9iamVjdCwga2V5KTsKKyAgICAg
ICAgICAgICAgICAgICAgfSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgSlNPYmpl
Y3REZWxldGVQcm9wZXJ0eUtleShjb250ZXh0LCBvYmplY3QsIGtleSwgZXhjZXB0aW9uKSk7Cisg
ICAgICAgICAgICAgICAgICAgIH0sICJjaGVja2luZyBoYXMgcHJvcGVydHkga2V5cyBzZXQiKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGRhdGFMb2dMbigiQy1BUEkg
dGVzdHMgaW4gQysrIGhhZCAiLCBmYWlsZWQsICIgZmFpbHVyZXMiKTsKKyAgICByZXR1cm4gZmFp
bGVkOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCmluZGV4
IGExNjU0YWUxMWUxOTFhNjQ5MmM1NTM2OGQ4ZWJkMGQ1NjE5ZDE4YTIuLjY0NDJhMzRhYTVhZDU1
MWRjNDdjY2U4MGNmNWRmMmY0YzM4M2U3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL3Rlc3RhcGkubW0KQEAgLTIzLDYgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAorI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJKU0V4cG9ydE1hY3Jvcy5oIgogI2ltcG9y
dCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KIApAQCAtNjI2LDYgKzYyNyw3MSBA
QCBzdGF0aWMgdm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSU1haW4oKQogICAgICAgICBjaGVja1Jlc3Vs
dChAIm5ldyBEYXRlIiwgcmVzdWx0LmlzRGF0ZSk7CiAgICAgfQogCisgICAgQGF1dG9yZWxlYXNl
cG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBp
bml0XTsKKyAgICAgICAgSlNWYWx1ZSAqc3ltYm9sID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6
QCJTeW1ib2woJ2RvcGUnKTsiXTsKKyAgICAgICAgSlNWYWx1ZSAqbm90U3ltYm9sID0gW2NvbnRl
eHQgZXZhbHVhdGVTY3JpcHQ6QCInZG9wZSciXTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJTaG91
bGQgYmUgYSBzeW1ib2wgdmFsdWUiLCBzeW1ib2wuaXNTeW1ib2wpOworICAgICAgICBjaGVja1Jl
c3VsdChAIlNob3VsZCBub3QgYmUgYSBzeW1ib2wgdmFsdWUiLCAhbm90U3ltYm9sLmlzU3ltYm9s
KTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpj
b250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICpzeW1i
b2wgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246QCJkb3BlIiBp
bkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIGNoZWNrUmVzdWx0KEAiU2hvdWxkIGJlIGEgY3Jl
YXRlZCBmcm9tIE9iYy1DIiwgc3ltYm9sLmlzU3ltYm9sKTsKKyAgICB9CisKKyNpZiAhKGRlZmlu
ZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA8IDEwMTMwMCkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAw
KQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9
IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAqYXJyYXlJdGVyYXRv
ciA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiQXJyYXkucHJvdG90eXBlW1N5bWJvbC5pdGVy
YXRvcl0iXTsKKyAgICAgICAgSlNWYWx1ZSAqaXRlcmF0b3JTeW1ib2wgPSBjb250ZXh0W0AiU3lt
Ym9sIl1bQCJpdGVyYXRvciJdOworICAgICAgICBKU1ZhbHVlICphcnJheSA9IFtKU1ZhbHVlIHZh
bHVlV2l0aE5ld0FycmF5SW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBjaGVja1Jlc3VsdChA
Ikxvb2tpbmcgdXAgYnkgc3Vic2NyaXB0IHdpdGggc3ltYm9sIHNob3VsZCB3b3JrIiwgW2FycmF5
W2l0ZXJhdG9yU3ltYm9sXSBpc0VxdWFsOmFycmF5SXRlcmF0b3JdKTsKKyAgICAgICAgY2hlY2tS
ZXN1bHQoQCJMb29raW5nIHVwIGJ5IG1ldGhvZCB3aXRoIHN5bWJvbCBzaG91bGQgd29yayIsIFtb
YXJyYXkgdmFsdWVGb3JQcm9wZXJ0eTppdGVyYXRvclN5bWJvbF0gaXNFcXVhbDphcnJheUl0ZXJh
dG9yXSk7CisgICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4
dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAq
aXRlcmF0b3JTeW1ib2wgPSBjb250ZXh0W0AiU3ltYm9sIl1bQCJpdGVyYXRvciJdOworICAgICAg
ICBKU1ZhbHVlICpvYmplY3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdPYmplY3RJbkNvbnRleHQ6
Y29udGV4dF07CisgICAgICAgIEpTVmFsdWUgKnRoZUFuc3dlciA9IFtKU1ZhbHVlIHZhbHVlV2l0
aFVJbnQzMjo0MiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIG9iamVjdFtpdGVyYXRvclN5
bWJvbF0gPSB0aGVBbnN3ZXI7CisgICAgICAgIGNoZWNrUmVzdWx0KEAiU2V0dGluZyBieSBzdWJz
Y3JpcHQgd2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsiLCBbb2JqZWN0W2l0ZXJhdG9yU3ltYm9sXSBp
c0VxdWFsOnRoZUFuc3dlcl0pOworICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAg
ICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAg
ICAgIEpTVmFsdWUgKml0ZXJhdG9yU3ltYm9sID0gY29udGV4dFtAIlN5bWJvbCJdW0AiaXRlcmF0
b3IiXTsKKyAgICAgICAgSlNWYWx1ZSAqb2JqZWN0ID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3T2Jq
ZWN0SW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBKU1ZhbHVlICp0aGVBbnN3ZXIgPSBbSlNW
YWx1ZSB2YWx1ZVdpdGhVSW50MzI6NDIgaW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBbb2Jq
ZWN0IHNldFZhbHVlOnRoZUFuc3dlciBmb3JQcm9wZXJ0eTppdGVyYXRvclN5bWJvbF07CisgICAg
ICAgIGNoZWNrUmVzdWx0KEAiU2V0dGluZyBieSBtZXRob2Qgd2l0aCBzeW1ib2wgc2hvdWxkIHdv
cmsiLCBbb2JqZWN0W2l0ZXJhdG9yU3ltYm9sXSBpc0VxdWFsOnRoZUFuc3dlcl0pOworICAgIH0K
KworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBb
W0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUgKml0ZXJhdG9yU3ltYm9s
ID0gY29udGV4dFtAIlN5bWJvbCJdW0AiaXRlcmF0b3IiXTsKKyAgICAgICAgSlNWYWx1ZSAqb2Jq
ZWN0ID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOworICAg
ICAgICBKU1ZhbHVlICp0aGVBbnN3ZXIgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhVSW50MzI6NDIgaW5D
b250ZXh0OmNvbnRleHRdOworICAgICAgICBvYmplY3RbaXRlcmF0b3JTeW1ib2xdID0gdGhlQW5z
d2VyOworICAgICAgICBjaGVja1Jlc3VsdChAImhhcyBwcm9wZXJ0eSB3aXRoIHN5bWJvbCBzaG91
bGQgd29yayIsIFtvYmplY3QgaGFzUHJvcGVydHk6aXRlcmF0b3JTeW1ib2xdKTsKKyAgICB9CisK
KyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tK
U0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICppdGVyYXRvclN5bWJvbCA9
IGNvbnRleHRbQCJTeW1ib2wiXVtAIml0ZXJhdG9yIl07CisgICAgICAgIEpTVmFsdWUgKm9iamVj
dCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld09iamVjdEluQ29udGV4dDpjb250ZXh0XTsKKyAgICAg
ICAgSlNWYWx1ZSAqdGhlQW5zd2VyID0gW0pTVmFsdWUgdmFsdWVXaXRoVUludDMyOjQyIGluQ29u
dGV4dDpjb250ZXh0XTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJkZWxldGUgcHJvcGVydHkgd2l0
aCBzeW1ib2wgc2hvdWxkIHdvcmsgd2l0aG91dCBwcm9wZXJ0eSIsIFtvYmplY3QgZGVsZXRlUHJv
cGVydHk6aXRlcmF0b3JTeW1ib2xdKTsKKyAgICAgICAgb2JqZWN0W2l0ZXJhdG9yU3ltYm9sXSA9
IHRoZUFuc3dlcjsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJkZWxldGUgcHJvcGVydHkgd2l0aCBz
eW1ib2wgc2hvdWxkIHdvcmsgd2l0aCBwcm9wZXJ0eSIsIFtvYmplY3QgZGVsZXRlUHJvcGVydHk6
aXRlcmF0b3JTeW1ib2xdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJkZWxldGUgc2hvdWxkIGJl
IGZhbHNlIHdpdGggbm9uLWNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSIsICFbY29udGV4dFtAIkFycmF5
Il0gZGVsZXRlUHJvcGVydHk6QCJwcm90b3R5cGUiXSk7CisgICAgfQorCisjZW5kaWYgLy8gIShk
ZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDApIHx8IChkZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEx
MDAwMCkKKwogICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICBKU0NvbGxlY3Rpb24qIG15
UHJpdmF0ZVByb3BlcnRpZXMgPSBbW0pTQ29sbGVjdGlvbiBhbGxvY10gaW5pdF07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWRkYTE0YzE3NWU2ZTVmNGM5ZDZmMTI4NTY3ZDM1
NmEwZjY4MjExMS4uOTZmZjBiOGVlNjhlYzk0ZTU1MDdhMGJjNjMzNTIxMzI2ZjIwZGY0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMzQsOCArMTAzNCw5IEBACiAJCTUzRTc3
N0U0MUU5MkUyNjUwMDdDQkVDNCAvKiBXYXNtTW9kdWxlSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRTc3N0UyMUU5MkUyNjUwMDdD
QkVDNCAvKiBXYXNtTW9kdWxlSW5mb3JtYXRpb24uaCAqLzsgfTsKIAkJNTNFOUUwQUMxRUFFODNE
RjAwRkVFMjUxIC8qIFdhc21NYWNoaW5lVGhyZWFkcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFOUUwQUExRUFFODNERTAwRkVFMjUxIC8qIFdhc21N
YWNoaW5lVGhyZWFkcy5oICovOyB9OwogCQk1M0U5RTBBRjFFQUVDNDU3MDBGRUUyNTEgLyogV2Fz
bVRpZXJVcENvdW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1M0U5RTBBRTFFQUVDNDU3MDBGRUUyNTEgLyogV2FzbVRpZXJVcENvdW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTNGMTFGNDEyMDkx
MzhENzAwRTQxMUE3IC8qIEpTSW1tdXRhYmxlQnV0dGVyZmx5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0YxMUY0MDIwOTEzOEQ3MDBFNDExQTcgLyog
SlNJbW11dGFibGVCdXR0ZXJmbHkuaCAqLzsgfTsKLQkJNTNGNDBFODUxRDU4Rjk3NzAwOTlBMUI2
IC8qIFdhc21TZWN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTNGNDBFODQxRDU4Rjk3NzAwOTlBMUI2IC8qIFdhc21TZWN0aW9ucy5oICovOyB9
OworICAgICAgICAgICAgICAgIDUzRjExRjQxMjA5MTM4RDcwMEU0MTFBNyAvKiBKU0ltbXV0YWJs
ZUJ1dHRlcmZseS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTNGMTFGNDAyMDkxMzhENzAwRTQxMUE3IC8qIEpTSW1tdXRhYmxlQnV0dGVyZmx5LmggKi87
IH07CisgICAgICAgICAgICAgICAgNTNFQUZFMkYyMDhERkFCNDAwN0Q1MjRCIC8qIHRlc3RhcGku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxRDRF
MTkxRjU5Q0REMjAwRUM4MzZDIC8qIHRlc3RhcGkuY3BwICovOyB9OworICAgICAgICAgICAgICAg
IDUzRjQwRTg1MUQ1OEY5NzcwMDk5QTFCNiAvKiBXYXNtU2VjdGlvbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQwRTg0MUQ1OEY5NzcwMDk5QTFC
NiAvKiBXYXNtU2VjdGlvbnMuaCAqLzsgfTsKIAkJNTNGNDBFOEIxRDU5MDFCQjAwOTlBMUI2IC8q
IFdhc21GdW5jdGlvblBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTNGNDBFOEExRDU5MDFCQjAwOTlBMUI2IC8qIFdhc21GdW5jdGlvblBhcnNl
ci5oICovOyB9OwogCQk1M0Y0MEU4RDFENTkwMUYyMDA5OUExQjYgLyogV2FzbVBhcnNlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGNDBFOEMxRDU5
MDFGMjAwOTlBMUI2IC8qIFdhc21QYXJzZXIuaCAqLzsgfTsKIAkJNTNGNDBFOTMxRDVBNEFCMzAw
OTlBMUI2IC8qIFdhc21CM0lSR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU5MjFENUE0QUIzMDA5OUExQjYgLyogV2FzbUIzSVJH
ZW5lcmF0b3IuaCAqLzsgfTsKQEAgLTMyODcsNiArMzI4OCw3IEBACiAJCTUzMTFCRDQ5MUVBNTgx
RTUwMDUyNTI4MSAvKiBXYXNtT01HUGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXYXNtT01HUGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzEzNzRC
QzFENUNFNjc2MDBBRjdBMEIgLyogV2FzbVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2FzbVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxMzc0
QkUxRDVDRTk1MDAwQUY3QTBCIC8qIFdhc21QbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdhc21QbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTMxRDRFMTkxRjU5Q0REMjAwRUM4MzZDIC8qIHRlc3RhcGkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gdGVzdGFwaS5jcHA7IHBhdGggPSBBUEkvdGVzdHMvdGVzdGFwaS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzM0IxNURFMURDN0Y0NjMwMDRENTAwQSAvKiBXYXNtT3Bz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21PcHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0MUZDNkYxREFDMzNFNTAwRTdFNEQ3IC8qIEIzV2FzbUJv
dW5kc0NoZWNrVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
QjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM1dhc21Cb3VuZHNDaGVja1Zh
bHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0MUZDNzExREFDMzQzQzAw
RTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBwYXRoID0gYjMvQjNXYXNtQm91
bmRzQ2hlY2tWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ1Nyw3ICsz
NDU5LDYgQEAKIAkJNTM5MTdFN0ExQjc5MDZFNDAwMEVCRDMzIC8qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzOTE3RTdDMUI3OTExMDYwMDBFQkQzMyAvKiBKU1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
VHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTM5MTdFODMxQjc5MUNCODAwMEVCRDMzIC8qIFR5cGVkQXJyYXlQcm90b3R5cGUuanMgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBUeXBlZEFycmF5UHJvdG90eXBlLmpz
OyBwYXRoID0gYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9IFNP
VVJDRV9ST09UOyB9OwotCQk1MzlFQjA3MTFENTUzREY4MDBDODJFRjcgLyogdGVzdFdhc20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdGVzdFdhc20uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzlGQjhCOTFDOTlEQTdDMDA5NDBGQTEgLyogSlNB
cnJheUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJheUlu
bGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNCMEJFMzMxRTU2MUFDOTAw
QThGQzI5IC8qIEdldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUzQjBCRTM1MUU1NjFCMDkwMEE4RkMyOSAvKiBQcm94eWFibGVB
Y2Nlc3NDYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3h5
YWJsZUFjY2Vzc0Nhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTQ0OCwx
MCArNTQ0OSwxMCBAQAogCQkJCUZFQjUxRjZCMUE5N0I2ODgwMDFGOTIxQyAvKiBSZWdyZXNzMTQx
ODA5Lm1tICovLAogCQkJCUZFQ0I4QjI5MUQyNUNBQkIwMDZGMjQ2MyAvKiB0ZXN0YXBpLWZ1bmN0
aW9uLW92ZXJyaWRlcy5qcyAqLywKIAkJCQkxNEJENUEyRDBBM0U5MUY2MDBCQUY1OUMgLyogdGVz
dGFwaS5jICovLAorCQkJCTUzMUQ0RTE5MUY1OUNERDIwMEVDODM2QyAvKiB0ZXN0YXBpLmNwcCAq
LywKIAkJCQkxNEQ4NTc3NDBBNDY5NkM4MDAzMjE0NkMgLyogdGVzdGFwaS5qcyAqLywKIAkJCQk4
NkQyMjIxOTE2N0VGOTQ0MDAyNEM4MDQgLyogdGVzdGFwaS5tbSAqLywKIAkJCQk2NTExMjJFNTE0
MDQ2OUJBMDAyQjEwMUQgLyogdGVzdFJlZ0V4cC5jcHAgKi8sCi0JCQkJNTM5RUIwNzExRDU1M0RG
ODAwQzgyRUY3IC8qIHRlc3RXYXNtLmNwcCAqLywKIAkJCQk1MzQ5MDI4MjFDNzI0MkM4MDAxMkJD
QjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCAqLywKIAkJCQk1MzQ5MDI4MzFDNzI0MkM4MDAxMkJD
QjggLyogVHlwZWRBcnJheUNUZXN0LmggKi8sCiAJCQkpOwpAQCAtODk0Nyw4ICs4OTQ4LDggQEAK
IAkJCQkwRkI0Njc4MDFGRERBNkYxMDAzRkNCMDkgLyogSXNvQ2VsbFNldC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZCNDY3ODExRkREQTZGNzAwM0ZDQjA5IC8qIElzb0NlbGxTZXRJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkRDRTEyRDFGQUZCNEU1MDA2RjM5MDEgLyogSXNvU3Vic3Bh
Y2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGRDJGRDk1MjBCNTJCRTIwMEYwOTQ0MSAvKiBJc29T
dWJzcGFjZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGNUUwRkU3MjA4NkFENDgwMDk3
RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmggaW4gSGVhZGVycyAqLywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMEZEMkZEOTUyMEI1MkJFMjAwRjA5NDQxIC8qIElzb1N1YnNwYWNl
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDBGNUUwRkU3MjA4NkFENDgwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4QjlGNkQ1NjFENTkxMkZBMDAxQzczOUYgLyogSXRlcmF0aW9uS2luZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkU0RDU1QjgxQUU3MTZDQTAwNTJFNDU5IC8qIEl0ZXJhdGlvblN0
YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzAxMTNENEMxQThEQjA5MzAwMzg0OEM0IC8qIEl0
ZXJhdG9yT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDE2NSw2ICsxMDE2Niw3IEBA
CiAJCQkJNjU1NzBGNUExQUE0QzNFQTAwOUIzQzIzIC8qIFJlZ3Jlc3MxNDEyNzUubW0gaW4gU291
cmNlcyAqLywKIAkJCQlGRUI1MUY2QzFBOTdCNjg4MDAxRjkyMUMgLyogUmVncmVzczE0MTgwOS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTE0NDBGNjEwMEE0Rjg1NjcwMDA1RjA2MSAvKiB0ZXN0YXBp
LmMgaW4gU291cmNlcyAqLywKKwkJCQk1M0VBRkUyRjIwOERGQUI0MDA3RDUyNEIgLyogdGVzdGFw
aS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkQyMjIxQTE2N0VGOTQ0MDAyNEM4MDQgLyogdGVz
dGFwaS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzNDkwMjg1MUM3Mjc2QjcwMDEyQkNCOCAvKiBU
eXBlZEFycmF5Q1Rlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwpAQCAtMTA2MzIsNiArMTA2
MzQsMTAgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3Vy
YXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFi
bGUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUhFQURFUl9TRUFSQ0hf
UEFUSFMgPSAoCisJCQkJCSJcIiQoSkFWQVNDUklQVENPUkVfRlJBTUVXT1JLU19ESVIpL0phdmFT
Y3JpcHRDb3JlLmZyYW1ld29yay9Qcml2YXRlSGVhZGVyc1wiIiwKKwkJCQkJIiQoaW5oZXJpdGVk
KSIsCisJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07CkBAIC0xMDYzOSw2ICsx
MDY0NSwxMCBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmln
dXJhdGlvblJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0
YWJsZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJSEVBREVSX1NFQVJD
SF9QQVRIUyA9ICgKKwkJCQkJIlwiJChKQVZBU0NSSVBUQ09SRV9GUkFNRVdPUktTX0RJUikvSmF2
YVNjcmlwdENvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzXCIiLAorCQkJCQkiJChpbmhlcml0
ZWQpIiwKKwkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwpAQCAtMTA2NDYs
NiArMTA2NTYsMTAgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNv
bmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4
ZWN1dGFibGUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUhFQURFUl9T
RUFSQ0hfUEFUSFMgPSAoCisJCQkJCSJcIiQoSkFWQVNDUklQVENPUkVfRlJBTUVXT1JLU19ESVIp
L0phdmFTY3JpcHRDb3JlLmZyYW1ld29yay9Qcml2YXRlSGVhZGVyc1wiIiwKKwkJCQkJIiQoaW5o
ZXJpdGVkKSIsCisJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKQEAg
LTEwOTcwLDYgKzEwOTg0LDEwIEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJ
CWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8q
IFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlI
RUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkiXCIkKEpBVkFTQ1JJUFRDT1JFX0ZSQU1FV09S
S1NfRElSKS9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnNcIiIsCisJCQkJ
CSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IFByb2ZpbGluZzsKIAkJ
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9jb25maWcuaAppbmRleCAxZDFlZDdiNmY4YzZhYzA5ZjE0NDQ0ZjZlZjM4
MDU2Mjk5ODE5ZDdlLi5jZGM1MjhmMTA3Y2NkM2QxNDljOWEyZDI1MmJhMDgzNjAzMDBhOTA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2NvbmZpZy5oCkBAIC0yMyw2ICsyMyw4IEBACiAjaW5jbHVkZSAiY21ha2Vj
b25maWcuaCIKICNlbmRpZgogCisjZGVmaW5lIEpTQ19BUElfQVZBSUxBQkxFKC4uLikKKwogI2lu
Y2x1ZGUgIkpTRXhwb3J0TWFjcm9zLmgiCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bvc3Rwcm9jZXNzLWhlYWRlcnMuc2ggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcG9zdHByb2Nlc3MtaGVhZGVycy5zaAppbmRleCBjODYxODQzN2QyYTA3
Nzk0OWE1OTBhYzcwMTdmODI2YjUyZDZkMmIzLi43NTQzYmMzMWNmODQxZWI1ZmIwMGVkNzM3MTc3
NjRjNmM0MzZkMDUwIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcG9zdHByb2Nl
c3MtaGVhZGVycy5zaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcG9zdHByb2Nlc3MtaGVh
ZGVycy5zaApAQCAtMSwxOCArMSwxMjEgQEAKLWNkICIke1RBUkdFVF9CVUlMRF9ESVJ9LyR7UFVC
TElDX0hFQURFUlNfRk9MREVSX1BBVEh9IgotCi1VTklGREVGX09QVElPTlM9Ii1EX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRD0ke1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SfSIK
LQotZm9yICgoaSA9IDA7IGkgPCAke1NDUklQVF9JTlBVVF9GSUxFX0NPVU5UfTsgKytpKSk7IGRv
Ci0gICAgZXZhbCBIRUFERVI9XCR7U0NSSVBUX0lOUFVUX0ZJTEVfJHtpfX07Ci0gICAgdW5pZmRl
ZiAtQiAke1VOSUZERUZfT1BUSU9OU30gLW8gIiR7SEVBREVSfSIudW5pZmRlZiAiJHtIRUFERVJ9
IgotICAgIGNhc2UgJD8gaW4KLSAgICAwKQotICAgICAgICBybSAiJHtIRUFERVJ9Ii51bmlmZGVm
Ci0gICAgICAgIDs7Ci0gICAgMSkKLSAgICAgICAgbXYgIiR7SEVBREVSfSJ7LnVuaWZkZWYsfQot
ICAgICAgICA7OwotICAgICopCi0gICAgICAgIGV4aXQgMQotICAgIGVzYWMKLWRvbmUKKyMhL2Jp
bi9zaAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKworaWYgW1sg
IiR7SlNDX0ZSQU1FV09SS19IRUFERVJfUE9TVFBST0NFU1NJTkdfRElTQUJMRUR9IiA9PSAiWUVT
IiBdXTsgdGhlbgorICAgIGV4aXQgMDsKK2ZpCisKK1RJTUVTVEFNUF9QQVRIPSR7VEFSR0VUX1RF
TVBfRElSfS8kezAjIyovfQorCitpZiBbWyAtZSAkVElNRVNUQU1QX1BBVEggJiYgJDAgLW50ICRU
SU1FU1RBTVBfUEFUSCBdXTsgdGhlbgorICAgIHJtICIke1RJTUVTVEFNUF9QQVRIfSI7CitmaQor
CitmdW5jdGlvbiBwcm9jZXNzX2RlZmluaXRpb25zICgpIHsKKyAgICBsb2NhbCBERUZJTklUSU9O
U19GSUxFPSQxCisKKyAgICBpZiBbWyAhIC1mICIke0RFRklOSVRJT05TX0ZJTEV9IiBdXTsgdGhl
bgorICAgICAgICByZXR1cm4gMQorICAgIGZpCisKKyAgICBpZiBbWyAtZSAkVElNRVNUQU1QX1BB
VEggJiYgIiR7REVGSU5JVElPTlNfRklMRX0iIC1udCAkVElNRVNUQU1QX1BBVEggXV07IHRoZW4K
KyAgICAgICAgcm0gIiR7VElNRVNUQU1QX1BBVEh9IjsKKyAgICBmaQorCisgICAgc291cmNlICIk
e0RFRklOSVRJT05TX0ZJTEV9IgorfQorCitmdW5jdGlvbiByZXdyaXRlX2hlYWRlcnMgKCkgewor
ICAgIGlmIFtbICIke1BMQVRGT1JNX05BTUV9IiA9PSAibWFjb3N4IiBdXTsgdGhlbgorICAgICAg
ICBbWyAtbiAke09TWF9WRVJTSU9OfSBdXSB8fCBPU1hfVkVSU0lPTj0ke01BQ09TWF9ERVBMT1lN
RU5UX1RBUkdFVH0KKyAgICAgICAgW1sgLW4gJHtJT1NfVkVSU0lPTn0gXV0gfHwgSU9TX1ZFUlNJ
T049Ik5BIgorICAgIGVsaWYgW1sgIiR7UExBVEZPUk1fTkFNRX0iID1+ICJpcGhvbmUiIF1dOyB0
aGVuCisgICAgICAgIFtbIC1uICR7SU9TX1ZFUlNJT059IF1dIHx8IElPU19WRVJTSU9OPSR7SVBI
T05FT1NfREVQTE9ZTUVOVF9UQVJHRVR9CisgICAgICAgIFtbIC1uICR7T1NYX1ZFUlNJT059IF1d
IHx8IE9TWF9WRVJTSU9OPSJOQSIKKyAgICBmaQorCisgICAgU0VEX09QVElPTlM9KAorICAgICkK
KworICAgIGlmIFtbIC1uICIkT1NYX1ZFUlNJT04iICYmIC1uICIkSU9TX1ZFUlNJT04iIF1dOyB0
aGVuCisgICAgICAgIFNFRF9PUFRJT05TKz0oCisgICAgICAgICAgICAtZSBzL0pTQ19NQUNfVEJB
LyR7T1NYX1ZFUlNJT059L2cKKyAgICAgICAgICAgIC1lIHMvSlNDX0lPU19UQkEvJHtJT1NfVkVS
U0lPTn0vZworICAgICAgICAgICAgLWUgcy9KU0NfQVBJX0FWQUlMQUJMRS9BUElfQVZBSUxBQkxF
LworICAgICAgICAgICAgLWUgcy9KU0NfQVBJX0RFUFJFQ0FURUQvQVBJX0RFUFJFQ0FURUQvCisg
ICAgICAgICAgICAtZSAicy9eSlNDX0NMQVNTX0FWQUlMQUJMRS9KU0NfRVhURVJOIEFQSV9BVkFJ
TEFCTEUvIgorICAgICAgICAgICAgLWUgInMvXkpTQ19DTEFTU19ERVBSRUNBVEVEL0pTQ19FWFRF
Uk4gQVBJX0RFUFJFQ0FURUQvIgorICAgICAgICApCisgICAgZWxzZQorICAgICAgICBTRURfT1BU
SU9OUys9KC1lICdzL0pTQ18oQVBJX3xDTEFTU18pQVZBSUxBQkxFXCguKlwpXHMqXCkvL2cnIC1l
ICdzL0pTQ18oQVBJX3xDTEFTU18pREVQUkVDQVRFRChfV0lUSF9SRVBMQUNFTUVOVCk/XCguKlwp
XHMqXCkvL2cnKQorICAgIGZpCisKKyAgICBTRURfT1BUSU9OUys9KCR7T1RIRVJfU0VEX09QVElP
TlNbKl19KQorCisgICAgZm9yIEhFQURFUl9QQVRIIGluICIkezF9LyIqLmg7IGRvCisgICAgICAg
IGlmIFtbICIkSEVBREVSX1BBVEgiIC1udCAkVElNRVNUQU1QX1BBVEggXV07IHRoZW4KKyAgICAg
ICAgICAgIGRpdHRvICIke0hFQURFUl9QQVRIfSIgIiR7VEFSR0VUX1RFTVBfRElSfS8ke0hFQURF
Ul9QQVRIIyMqL30iCisgICAgICAgICAgICBzZWQgLWkgLnRtcCAtRSAiJHtTRURfT1BUSU9OU1tA
XX0iICIke1RBUkdFVF9URU1QX0RJUn0vJHtIRUFERVJfUEFUSCMjKi99IiB8fCBleGl0ICQ/Cisg
ICAgICAgICAgICBtdiAiJHtUQVJHRVRfVEVNUF9ESVJ9LyR7SEVBREVSX1BBVEgjIyovfSIgIiRI
RUFERVJfUEFUSCIKKyAgICAgICAgZmkKKyAgICBkb25lCit9CisKK2Z1bmN0aW9uIHJld3JpdGVf
dmVyc2lvbl9taW5fcmVxdWlyZWRfbWFjcm9zKCkgeworICAgIGVjaG8gInJld3JpdGVfdmVyc2lv
bl9taW5fcmVxdWlyZWRfbWFjcm9zIgorICAgIGVjaG8gIiR7MX0iCisgICAgIyBXZSBuZWVkIHRv
IG1ha2Ugc3VyZSB3ZSB1bnNldCB0aGUgb3RoZXIgdGFyZ2V0IG90aGVyd2lzZSB1bmlmZGVmIHdp
bGwgZmFpbCB0byBoYW5kbGUgY29uZGl0aW9ucyB0aGF0IGFyZSBhbiB8fCBvZiBib3RoIHRhcmdl
dHMuCisgICAgaWYgW1sgLXogJHtJT1NfVkVSU0lPTn0gXV07IHRoZW4KKyAgICAgICAgVU5JRkRF
Rl9PUFRJT05TPSItRF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQ9JHtUQVJHRVRfTUFD
X09TX1hfVkVSU0lPTl9NQUpPUn0gLVVfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCIK
KyAgICBlbHNlCisgICAgICAgIFVOSUZERUZfT1BUSU9OUz0iLVVfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEIC1EX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQ9JHtUQVJHRVRf
TUFDX09TX1hfVkVSU0lPTl9NQUpPUn0iCisgICAgZmkKKworICAgIGZvciBIRUFERVJfUEFUSCBp
biAiJHsxfS8iKi5oOyBkbworICAgICAgICBpZiBbWyAiJEhFQURFUl9QQVRIIiAtbnQgJFRJTUVT
VEFNUF9QQVRIIF1dOyB0aGVuCisgICAgICAgICAgICB1bmlmZGVmIC1CICR7VU5JRkRFRl9PUFRJ
T05TfSAtbyAiJHtIRUFERVJfUEFUSH0iLnVuaWZkZWYgIiR7SEVBREVSX1BBVEh9IgorICAgICAg
ICAgICAgY2FzZSAkPyBpbgorICAgICAgICAgICAgICAgIDApCisgICAgICAgICAgICAgICAgICAg
IHJtICIke0hFQURFUl9QQVRIfSIudW5pZmRlZgorICAgICAgICAgICAgICAgICAgICA7OworICAg
ICAgICAgICAgICAgIDEpCisgICAgICAgICAgICAgICAgICAgIG12ICIke0hFQURFUl9QQVRIfSJ7
LnVuaWZkZWYsfQorICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgICopCisg
ICAgICAgICAgICAgICAgICAgIGV4aXQgMQorICAgICAgICAgICAgZXNhYworICAgICAgICBmaQor
ICAgIGRvbmUKKyAgICB9CisKK0RFRklOSVRJT05TX1BBVEg9dXNyL2xvY2FsL2luY2x1ZGUvV2Vi
S2l0QWRkaXRpb25zL1NjcmlwdHMvcG9zdHByb2Nlc3MtZnJhbWV3b3JrLWhlYWRlcnMtZGVmaW5p
dGlvbnMKKworcHJvY2Vzc19kZWZpbml0aW9ucyAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9LyR7REVG
SU5JVElPTlNfUEFUSH0iIHx8IHByb2Nlc3NfZGVmaW5pdGlvbnMgIiR7U0RLUk9PVH0vJHtERUZJ
TklUSU9OU19QQVRIfSIKKworcmV3cml0ZV9oZWFkZXJzICIke1RBUkdFVF9CVUlMRF9ESVJ9LyR7
UFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEh9IgorcmV3cml0ZV92ZXJzaW9uX21pbl9yZXF1aXJl
ZF9tYWNyb3MgIiR7VEFSR0VUX0JVSUxEX0RJUn0vJHtQVUJMSUNfSEVBREVSU19GT0xERVJfUEFU
SH0iCisKK3RvdWNoICR7VElNRVNUQU1QX1BBVEh9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdG1lbS90ZXN0bWVtLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rt
ZW0vdGVzdG1lbS5tbQppbmRleCBiNGQyYWQzOTExOWJjNTU1OGNkMzljOWM4MTgyZmFjZWRjYmVh
ZjI0Li45YmM0YjQwZTFlYWMwMjMxN2ZkM2U4NDViNDU0ZDBmNDhiNmVlNWM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdG1lbS90ZXN0bWVtLm1tCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0bWVtL3Rlc3RtZW0ubW0KQEAgLTIzLDYgKzIzLDcgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAorI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgogI2ltcG9ydCA8aW50dHlwZXMuaD4KICNpbXBvcnQgPHN0
ZGlvLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDgwNTIwYWIwZmNlMGRmNDgzMmY3
ODdiNDVjMTEwYThhZjM4NzgxYmEuLjExZDdjODY0ZWIwNWQzODhmYmVlMzU0ZTVmNmMzYjk2ZTky
MmE3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0yMyw3ICsyMyw2IEBAIGZpbmRf
cGFja2FnZShaTElCIFJFUVVJUkVEKQogCiBsaXN0KEFQUEVORCBXZWJDb3JlX1VOSUZJRURfU09V
UkNFX0xJU1RfRklMRVMKICAgICAiU291cmNlc0NvY29hLnR4dCIKLSAgICAiU291cmNlc01hYy50
eHQiCiApCiAKIGxpc3QoQVBQRU5EIFdlYkNvcmVfTElCUkFSSUVTCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345773</attachid>
            <date>2018-07-25 12:59:24 -0700</date>
            <delta_ts>2018-07-25 13:21:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175836-20180725125923.patch</filename>
            <type>text/plain</type>
            <size>111461</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0MTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ODdiNjU3MGU2MDA0Yjk5ODk1MjVmNGYwNzg5NzY5NTFlMTY5M2Y2Li43MGRhMmQyYzBjZmMyZDli
ZTI3ZGEwY2YwNjJmZWM2YjhmMmQyMGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDMgQEAKKzIwMTgtMDctMjUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0pTQyBBUEldIFdlIHNob3VsZCBzdXBwb3J0IHRoZSBzeW1ib2wg
dHlwZSBpbiBvdXIgQy9PYmotQyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTgzNgorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxv
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIGZvbGxvd2luZyBBUEkgYWRkaXRpb25z
OgorICAgICAgICAxKSBUZXN0IGlmIGEgSlNWYWx1ZS9KU1ZhbHVlUmVmIGlzIGEgc3ltYm9sIHZp
YSBhbnkgb2YgdGhlIG1ldGhvZHMgQVBJIGFyZSBhYmxlIHRvIHRlc3QgZm9yIHRoZSB0eXBlcyBv
ZiBvdGhlciBKU1ZhbHVlcy4KKyAgICAgICAgMikgQ3JlYXRlIGEgc3ltYm9sIG9uIGJvdGggQVBJ
cy4KKyAgICAgICAgMykgR2V0L1NldC9EZWxldGUvRGVmaW5lIHByb3BlcnR5IG5vdyB0YWtlIGlk
cyBpbiB0aGUgT2JqLUMgQVBJLgorICAgICAgICA0KSBBZGQgR2V0L1NldC9EZWxldGUgaW4gdGhl
IEMgQVBJLgorCisgICAgICAgIFdlIGNhbiBkbyAzIGJlY2F1c2UgaXQgaXMgYm90aCBiaW5hcnkg
YW5kIHNvdXJjZSBjb21wYXRhYmxlIHdpdGgKKyAgICAgICAgdGhlIGV4aXN0aW5nIEFQSS4gSSBh
ZGRlZCAoNCkgYmVjYXVzZSB0aGUgY3VycmVudCBwcm9wZXJ0eSBhY2Nlc3MKKyAgICAgICAgQVBJ
cyBvbmx5IGhhdmUgdGhlIGFiaWxpdHkgdG8gZ2V0IFN0cmluZ3MuIEl0IHdhcyBwb3NzaWJsZSB0
bworICAgICAgICBtZXJnZSBzeW1ib2xzIGludG8gSlNTdHJpbmdSZWYgYnV0IHRoYXQgZmVsdCBj
b25mdXNpbmcgYW5kIGV4cG9zZXMKKyAgICAgICAgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBv
dXIgZW5naW5lLiBUaGUgbmV3IGZ1bmN0aW9ucyBtYXRjaCB0aGUKKyAgICAgICAgc2FtZSBtZWFu
aW5nIHRoYXQgdGhleSBoYXZlIGluIEpTLCB0aHVzIHNob3VsZCBiZSBmb3J3YXJkCisgICAgICAg
IGNvbXBhdGlibGUgd2l0aCBhbnkgZnV0dXJlIGxhbmd1YWdlIGV4dGVuc2lvbnMuCisKKyAgICAg
ICAgTGFzdGx5LCB0aGlzIHBhdGNoIGFkZHMgdGhlIHNhbWUgYXZhaWxhYmlsaXR5IHByZXByb2Nj
ZXNzaW5nIHBoYXNlCisgICAgICAgIGluIFdlYkNvcmUgdG8gSmF2YVNjcmlwdENvcmUsIHdoaWNo
IGVuYWJsZXMgVEJBIGZlYXR1cmVzIGZvcgorICAgICAgICB0ZXN0aW5nIG9uIHByZXZpb3VzIHJl
bGVhc2VzLgorCisgICAgICAgICogQVBJL0pTQmFzZVByaXZhdGUuaDoKKyAgICAgICAgKiBBUEkv
SlNDb250ZXh0Lmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFByaXZhdGUuaDoKKyAgICAgICAg
KiBBUEkvSlNDb250ZXh0UmVmLmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZkludGVybmFs
Lmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaDoKKyAgICAgICAgKiBBUEkv
SlNNYW5hZ2VkVmFsdWUuaDoKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAg
ICAoSlNPYmplY3RIYXNQcm9wZXJ0eUtleSk6CisgICAgICAgIChKU09iamVjdEdldFByb3BlcnR5
S2V5KToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJvcGVydHlLZXkpOgorICAgICAgICAoSlNPYmpl
Y3REZWxldGVQcm9wZXJ0eUtleSk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmg6CisgICAg
ICAgICogQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmg6CisgICAgICAgICogQVBJL0pTVHlwZWRBcnJh
eS5oOgorICAgICAgICAqIEFQSS9KU1ZhbHVlLmg6CisgICAgICAgICogQVBJL0pTVmFsdWUubW06
CisgICAgICAgICgrW0pTVmFsdWUgdmFsdWVXaXRoTmV3U3ltYm9sRnJvbURlc2NyaXB0aW9uOmlu
Q29udGV4dDpdKToKKyAgICAgICAgKHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbik6CisgICAgICAg
ICgtW0pTVmFsdWUgdmFsdWVGb3JQcm9wZXJ0eTp2YWx1ZUZvclByb3BlcnR5Ol0pOgorICAgICAg
ICAoLVtKU1ZhbHVlIHNldFZhbHVlOmZvclByb3BlcnR5OnNldFZhbHVlOmZvclByb3BlcnR5Ol0p
OgorICAgICAgICAoLVtKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5OmRlbGV0ZVByb3BlcnR5Ol0pOgor
ICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Omhhc1Byb3BlcnR5Ol0pOgorICAgICAgICAo
LVtKU1ZhbHVlIGRlZmluZVByb3BlcnR5OmRlc2NyaXB0b3I6ZGVmaW5lUHJvcGVydHk6ZGVzY3Jp
cHRvcjpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSBpc1N5bWJvbF0pOgorICAgICAgICAoLVtKU1Zh
bHVlIG9iamVjdEZvcktleWVkU3Vic2NyaXB0Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIHNldE9i
amVjdDpmb3JLZXllZFN1YnNjcmlwdDpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSB2YWx1ZUZvclBy
b3BlcnR5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIHNldFZhbHVlOmZvclByb3Bl
cnR5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5Ol0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Ol0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtKU1ZhbHVlIGRlZmluZVByb3BlcnR5OmRlc2NyaXB0b3I6XSk6IERlbGV0ZWQuCisg
ICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgorICAgICAgICAoSlNWYWx1ZUdldFR5cGUpOgor
ICAgICAgICAoSlNWYWx1ZUlzU3ltYm9sKToKKyAgICAgICAgKEpTVmFsdWVNYWtlU3ltYm9sKToK
KyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5oOgorICAgICAgICAqIEFQSS9XZWJLaXRBdmFpbGFi
aWxpdHkuaDoKKyAgICAgICAgKiBBUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRl
clRlc3QubW06CisgICAgICAgICogQVBJL3Rlc3RzL0N1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVz
dC5jOgorICAgICAgICAqIEFQSS90ZXN0cy9EYXRlVGVzdHMubW06CisgICAgICAgICogQVBJL3Rl
c3RzL0pTRXhwb3J0VGVzdHMubW06CisgICAgICAgICogQVBJL3Rlc3RzL0pTTm9kZS5jOgorICAg
ICAgICAqIEFQSS90ZXN0cy9KU05vZGVMaXN0LmM6CisgICAgICAgICogQVBJL3Rlc3RzL05vZGUu
YzoKKyAgICAgICAgKiBBUEkvdGVzdHMvTm9kZUxpc3QuYzoKKyAgICAgICAgKiBBUEkvdGVzdHMv
bWluaWRvbS5jOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLmM6CisgICAgICAgIChtYWlu
KToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5jcHA6IEFkZGVkLgorICAgICAgICAoQVBJ
U3RyaW5nOjpBUElTdHJpbmcpOgorICAgICAgICAoQVBJU3RyaW5nOjp+QVBJU3RyaW5nKToKKyAg
ICAgICAgKEFQSVN0cmluZzo6b3BlcmF0b3IgSlNTdHJpbmdSZWYpOgorICAgICAgICAoQVBJQ29u
dGV4dDo6QVBJQ29udGV4dCk6CisgICAgICAgIChBUElDb250ZXh0Ojp+QVBJQ29udGV4dCk6Cisg
ICAgICAgIChBUElDb250ZXh0OjpvcGVyYXRvciBKU0dsb2JhbENvbnRleHRSZWYpOgorICAgICAg
ICAoQVBJVmVjdG9yOjpBUElWZWN0b3IpOgorICAgICAgICAoQVBJVmVjdG9yOjp+QVBJVmVjdG9y
KToKKyAgICAgICAgKEFQSVZlY3Rvcjo6YXBwZW5kKToKKyAgICAgICAgKHRlc3RDQVBJVmlhQ3Bw
KToKKyAgICAgICAgKFRlc3RBUEk6OmV2YWx1YXRlU2NyaXB0KToKKyAgICAgICAgKFRlc3RBUEk6
OmNhbGxGdW5jdGlvbik6CisgICAgICAgIChUZXN0QVBJOjpmdW5jdGlvblJldHVybnNUcnVlKToK
KyAgICAgICAgKFRlc3RBUEk6OmNoZWNrKToKKyAgICAgICAgKFRlc3RBUEk6OmNoZWNrSlNBbmRB
UElNYXRjaCk6CisgICAgICAgIChUZXN0QVBJOjppbnRlcmVzdGluZ09iamVjdHMpOgorICAgICAg
ICAoVGVzdEFQSTo6aW50ZXJlc3RpbmdLZXlzKToKKyAgICAgICAgKFRlc3RBUEk6OnJ1bik6Cisg
ICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkubW06CisgICAgICAgICh0ZXN0T2JqZWN0aXZlQ0FQ
SU1haW4pOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogY29uZmlnLmg6CisgICAgICAgICogcG9zdHByb2Nlc3MtaGVhZGVycy5z
aDoKKyAgICAgICAgKiB0ZXN0bWVtL3Rlc3RtZW0ubW06CisKIDIwMTgtMDctMjMgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggbm8tSklU
IGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VQcml2
YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZVByaXZhdGUuaAppbmRleCAx
Mzc1OTQ5NzI3NWU1OGJlYjBjMTIyMTM1NWY5ZmJlZDQzZDNiMWE1Li5iNmM5MjA0YzRjYmQ3MmM0
ZjdjOWY2YTFmNTRjZDVkMzQxNTZkMTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQmFzZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
QmFzZVByaXZhdGUuaApAQCAtNDMsNyArNDMsNyBAQCBvd25zIGEgbGFyZ2Ugbm9uLUdDIG1lbW9y
eSByZWdpb24uIENhbGxpbmcgdGhpcyBmdW5jdGlvbiB3aWxsIGVuY291cmFnZSB0aGUKIGdhcmJh
Z2UgY29sbGVjdG9yIHRvIGNvbGxlY3Qgc29vbiwgaG9waW5nIHRvIHJlY2xhaW0gdGhhdCBsYXJn
ZSBub24tR0MgbWVtb3J5CiByZWdpb24uCiAqLwotSlNfRVhQT1JUIHZvaWQgSlNSZXBvcnRFeHRy
YU1lbW9yeUNvc3QoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IHNpemUpIENGX0FWQUlMQUJMRSgx
MF82LCA3XzApOworSlNfRVhQT1JUIHZvaWQgSlNSZXBvcnRFeHRyYU1lbW9yeUNvc3QoSlNDb250
ZXh0UmVmIGN0eCwgc2l6ZV90IHNpemUpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwg
aW9zKDcuMCkpOwogCiBKU19FWFBPUlQgdm9pZCBKU0Rpc2FibGVHQ1RpbWVyKHZvaWQpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQuaAppbmRleCAxOTRlMzUyYmZlN2FlNzVmMjM1
OGNlZTYzZDQ0OGZlMWZhMjRkMzgyLi44OWM4N2Y5ZTJlMWZmMWIxNzFiMWViYmE4YzQ1MjE1OWY0
NGY0NzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmgKQEAgLTc4LDcgKzc4
LDcgQEAgTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzksIDdfMCkKIEBwYXJhbSBzb3VyY2VVUkwgQSBV
UkwgZm9yIHRoZSBzY3JpcHQncyBzb3VyY2UgZmlsZS4gVXNlZCBieSBkZWJ1Z2dlcnMgYW5kIHdo
ZW4gcmVwb3J0aW5nIGV4Y2VwdGlvbnMuIFRoaXMgcGFyYW1ldGVyIGlzIGluZm9ybWF0aXZlIG9u
bHk6IGl0IGRvZXMgbm90IGNoYW5nZSB0aGUgYmVoYXZpb3Igb2YgdGhlIHNjcmlwdC4KIEByZXN1
bHQgVGhlIGxhc3QgdmFsdWUgZ2VuZXJhdGVkIGJ5IHRoZSBzY3JpcHQuCiAqLwotLSAoSlNWYWx1
ZSAqKWV2YWx1YXRlU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdCB3aXRoU291cmNlVVJMOihOU1VS
TCAqKXNvdXJjZVVSTCBOU19BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CistIChKU1ZhbHVlICopZXZh
bHVhdGVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0IHdpdGhTb3VyY2VVUkw6KE5TVVJMICopc291
cmNlVVJMIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyoh
CiBAbWV0aG9kZ3JvdXAgQ2FsbGJhY2sgQWNjZXNzb3JzCkBAIC0xMDEsNyArMTAxLDcgQEAgTlNf
Q0xBU1NfQVZBSUxBQkxFKDEwXzksIDdfMCkKICBhIGNhbGxiYWNrIGZyb20gSmF2YVNjcmlwdCB0
aGlzIG1ldGhvZCB3aWxsIHJldHVybiBuaWwuCiBAcmVzdWx0IFRoZSBjdXJyZW50bHkgZXhlY3V0
aW5nIEphdmFTY3JpcHQgZnVuY3Rpb24gb3IgbmlsIGlmIHRoZXJlIGlzbid0IG9uZS4KICovCi0r
IChKU1ZhbHVlICopY3VycmVudENhbGxlZSBOU19BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CisrIChK
U1ZhbHVlICopY3VycmVudENhbGxlZSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBp
b3MoOC4wKSk7CiAKIC8qIQogQG1ldGhvZApAQCAtMTc2LDcgKzE3Niw3IEBAIE5TX0NMQVNTX0FW
QUlMQUJMRSgxMF85LCA3XzApCiBAcHJvcGVydHkKIEBkaXNjdXNzaW9uIE5hbWUgb2YgdGhlIEpT
Q29udGV4dC4gRXhwb3NlZCB3aGVuIHJlbW90ZSBkZWJ1Z2dpbmcgdGhlIGNvbnRleHQuCiAqLwot
QHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqbmFtZSBOU19BVkFJTEFCTEUoMTBfMTAsIDhfMCk7
CitAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpuYW1lIEpTQ19BUElfQVZBSUxBQkxFKG1hY29z
eCgxMC4xMCksIGlvcyg4LjApKTsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ29udGV4dFByaXZhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0UHJpdmF0ZS5oCmluZGV4IDdkMWQwY2JkYmI0OGMxNzBlYTc2ZDJiZDYyZDcz
MGMyMDM5ZDZhOTQuLmZmOTYyMmFkZGY2MGI3YzEwMzU3ZGFjY2YxYzZmNDFlY2I4NjFmMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UHJpdmF0ZS5oCkBAIC0zNiwx
OSArMzYsMTkgQEAKIEBwcm9wZXJ0eQogQGRpc2N1c3Npb24gUmVtb3RlIGluc3BlY3Rpb24gc2V0
dGluZyBvZiB0aGUgSlNDb250ZXh0LiBEZWZhdWx0IHZhbHVlIGlzIFlFUy4KICovCi1AcHJvcGVy
dHkgKHNldHRlcj1fc2V0UmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQ6KSBCT09MIF9yZW1vdGVJbnNw
ZWN0aW9uRW5hYmxlZCBOU19BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitAcHJvcGVydHkgKHNldHRl
cj1fc2V0UmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQ6KSBCT09MIF9yZW1vdGVJbnNwZWN0aW9uRW5h
YmxlZCBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qIQog
QHByb3BlcnR5CiBAZGlzY3Vzc2lvbiBTZXQgd2hldGhlciBvciBub3QgdGhlIG5hdGl2ZSBjYWxs
IHN0YWNrIGlzIGluY2x1ZGVkIHdoZW4gcmVwb3J0aW5nIGV4Y2VwdGlvbnMuIERlZmF1bHQgdmFs
dWUgaXMgWUVTLgogKi8KLUBwcm9wZXJ0eSAoc2V0dGVyPV9zZXRJbmNsdWRlc05hdGl2ZUNhbGxT
dGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zOikgQk9PTCBfaW5jbHVkZXNOYXRpdmVDYWxsU3Rh
Y2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucyBOU19BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitAcHJv
cGVydHkgKHNldHRlcj1fc2V0SW5jbHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhj
ZXB0aW9uczopIEJPT0wgX2luY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2Vw
dGlvbnMgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEK
IEBwcm9wZXJ0eQogQGRpc2N1c3Npb24gU2V0IHRoZSBydW4gbG9vcCB0aGUgV2ViIEluc3BlY3Rv
ciBkZWJ1Z2dlciBzaG91bGQgdXNlIHdoZW4gZXZhbHVhdGluZyBKYXZhU2NyaXB0IGluIHRoZSBK
U0NvbnRleHQuCiAqLwotQHByb3BlcnR5IChzZXR0ZXI9X3NldERlYnVnZ2VyUnVuTG9vcDopIENG
UnVuTG9vcFJlZiBfZGVidWdnZXJSdW5Mb29wIE5TX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0Bw
cm9wZXJ0eSAoc2V0dGVyPV9zZXREZWJ1Z2dlclJ1bkxvb3A6KSBDRlJ1bkxvb3BSZWYgX2RlYnVn
Z2VyUnVuTG9vcCBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSk7CiAK
IEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRS
ZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmgKaW5kZXggZTE1
Y2FlNTc1NzY0OGEyZmM4ZWEyMTcyMWVlZjUzNWJhZDM1N2IyNy4uMjhkMGE2N2U5YWUzMjYyMTFh
ZDk0ZGUzNmM1MjY0YTc1NDJmYWY4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NvbnRleHRSZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dFJlZi5oCkBAIC01Myw3ICs1Myw3IEBAIGV4dGVybiAiQyIgewogIEpTQ29udGV4dEdyb3Vw
J3MgcnVuIGxvb3Agb25jZSBpdCBoYXMgYmVlbiBjcmVhdGVkLgogQHJlc3VsdCBUaGUgY3JlYXRl
ZCBKU0NvbnRleHRHcm91cC4KICovCi1KU19FWFBPUlQgSlNDb250ZXh0R3JvdXBSZWYgSlNDb250
ZXh0R3JvdXBDcmVhdGUodm9pZCkgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQg
SlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R3JvdXBDcmVhdGUodm9pZCkgSlNDX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC02MSwx
NCArNjEsMTQgQEAgSlNfRVhQT1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdyb3VwQ3Jl
YXRlKHZvaWQpIENGX0FWQUlMQUJMRSgxMF82LCA3XzApOwogQHBhcmFtIGdyb3VwIFRoZSBKU0Nv
bnRleHRHcm91cCB0byByZXRhaW4uCiBAcmVzdWx0IEEgSlNDb250ZXh0R3JvdXAgdGhhdCBpcyB0
aGUgc2FtZSBhcyBncm91cC4KICovCi1KU19FWFBPUlQgSlNDb250ZXh0R3JvdXBSZWYgSlNDb250
ZXh0R3JvdXBSZXRhaW4oSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXApIENGX0FWQUlMQUJMRSgxMF82
LCA3XzApOworSlNfRVhQT1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdyb3VwUmV0YWlu
KEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiks
IGlvcyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24KIEBhYnN0cmFjdCBSZWxlYXNlcyBhIEphdmFT
Y3JpcHQgY29udGV4dCBncm91cC4KIEBwYXJhbSBncm91cCBUaGUgSlNDb250ZXh0R3JvdXAgdG8g
cmVsZWFzZS4KICovCi1KU19FWFBPUlQgdm9pZCBKU0NvbnRleHRHcm91cFJlbGVhc2UoSlNDb250
ZXh0R3JvdXBSZWYgZ3JvdXApIENGX0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQT1JUIHZv
aWQgSlNDb250ZXh0R3JvdXBSZWxlYXNlKEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwKSBKU0NfQVBJ
X0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAg
LTgzLDcgKzgzLDcgQEAgSlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3JvdXBSZWxlYXNlKEpTQ29u
dGV4dEdyb3VwUmVmIGdyb3VwKSBDRl9BVkFJTEFCTEUoMTBfNiwKICBOVUxMIHRvIHVzZSB0aGUg
ZGVmYXVsdCBvYmplY3QgY2xhc3MuCiBAcmVzdWx0IEEgSlNHbG9iYWxDb250ZXh0IHdpdGggYSBn
bG9iYWwgb2JqZWN0IG9mIGNsYXNzIGdsb2JhbE9iamVjdENsYXNzLgogKi8KLUpTX0VYUE9SVCBK
U0dsb2JhbENvbnRleHRSZWYgSlNHbG9iYWxDb250ZXh0Q3JlYXRlKEpTQ2xhc3NSZWYgZ2xvYmFs
T2JqZWN0Q2xhc3MpIENGX0FWQUlMQUJMRSgxMF81LCA3XzApOworSlNfRVhQT1JUIEpTR2xvYmFs
Q29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVhdGUoSlNDbGFzc1JlZiBnbG9iYWxPYmplY3RD
bGFzcykgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjUpLCBpb3MoNy4wKSk7CiAKIC8qIQog
QGZ1bmN0aW9uCkBAIC05Nyw3ICs5Nyw3IEBAIEpTX0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYg
SlNHbG9iYWxDb250ZXh0Q3JlYXRlKEpTQ2xhc3NSZWYgZ2xvYmFsT2JqZWN0Q2xhc3MpCiBAcmVz
dWx0IEEgSlNHbG9iYWxDb250ZXh0IHdpdGggYSBnbG9iYWwgb2JqZWN0IG9mIGNsYXNzIGdsb2Jh
bE9iamVjdENsYXNzIGFuZCBhIGNvbnRleHQKICBncm91cCBlcXVhbCB0byBncm91cC4KICovCi1K
U19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAo
SlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIEpTQ2xhc3NSZWYgZ2xvYmFsT2JqZWN0Q2xhc3MpIENG
X0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQT1JUIEpTR2xvYmFsQ29udGV4dFJlZiBKU0ds
b2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwLCBKU0NsYXNz
UmVmIGdsb2JhbE9iamVjdENsYXNzKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlv
cyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTEyOCw3ICsxMjgsNyBAQCBKU19FWFBPUlQg
SlNPYmplY3RSZWYgSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KEpTQ29udGV4dFJlZiBjdHgpOwog
QHBhcmFtIGN0eCBUaGUgSlNDb250ZXh0IHdob3NlIGdyb3VwIHlvdSB3YW50IHRvIGdldC4KIEBy
ZXN1bHQgY3R4J3MgZ3JvdXAuCiAqLwotSlNfRVhQT1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29u
dGV4dEdldEdyb3VwKEpTQ29udGV4dFJlZiBjdHgpIENGX0FWQUlMQUJMRSgxMF82LCA3XzApOwor
SlNfRVhQT1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdldEdyb3VwKEpTQ29udGV4dFJl
ZiBjdHgpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9zKDcuMCkpOwogCiAvKiEK
IEBmdW5jdGlvbgpAQCAtMTM2LDcgKzEzNiw3IEBAIEpTX0VYUE9SVCBKU0NvbnRleHRHcm91cFJl
ZiBKU0NvbnRleHRHZXRHcm91cChKU0NvbnRleHRSZWYgY3R4KSBDRl9BVkFJTEFCTEUoMTBfCiBA
cGFyYW0gY3R4IFRoZSBKU0NvbnRleHQgd2hvc2UgZ2xvYmFsIGNvbnRleHQgeW91IHdhbnQgdG8g
Z2V0LgogQHJlc3VsdCBjdHgncyBnbG9iYWwgY29udGV4dC4KICovCi1KU19FWFBPUlQgSlNHbG9i
YWxDb250ZXh0UmVmIEpTQ29udGV4dEdldEdsb2JhbENvbnRleHQoSlNDb250ZXh0UmVmIGN0eCkg
Q0ZfQVZBSUxBQkxFKDEwXzcsIDdfMCk7CitKU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpT
Q29udGV4dEdldEdsb2JhbENvbnRleHQoSlNDb250ZXh0UmVmIGN0eCkgSlNDX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjcpLCBpb3MoNy4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC0xNDYsNyAr
MTQ2LDcgQEAgSlNfRVhQT1JUIEpTR2xvYmFsQ29udGV4dFJlZiBKU0NvbnRleHRHZXRHbG9iYWxD
b250ZXh0KEpTQ29udGV4dFJlZiBjdHgpIENGX0FWQUkKIEBkaXNjdXNzaW9uIEEgSlNHbG9iYWxD
b250ZXh0J3MgbmFtZSBpcyBleHBvc2VkIGZvciByZW1vdGUgZGVidWdnaW5nIHRvIG1ha2UgaXQK
IGVhc2llciB0byBpZGVudGlmeSB0aGUgY29udGV4dCB5b3Ugd291bGQgbGlrZSB0byBhdHRhY2gg
dG8uCiAqLwotSlNfRVhQT1JUIEpTU3RyaW5nUmVmIEpTR2xvYmFsQ29udGV4dENvcHlOYW1lKEpT
R2xvYmFsQ29udGV4dFJlZiBjdHgpIENGX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0pTX0VYUE9S
VCBKU1N0cmluZ1JlZiBKU0dsb2JhbENvbnRleHRDb3B5TmFtZShKU0dsb2JhbENvbnRleHRSZWYg
Y3R4KSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qIQog
QGZ1bmN0aW9uCkBAIC0xNTQsNyArMTU0LDcgQEAgSlNfRVhQT1JUIEpTU3RyaW5nUmVmIEpTR2xv
YmFsQ29udGV4dENvcHlOYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpIENGX0FWQUlMQUIKIEBw
YXJhbSBjdHggVGhlIEpTR2xvYmFsQ29udGV4dCB0aGF0IHlvdSB3YW50IHRvIG5hbWUuCiBAcGFy
YW0gbmFtZSBUaGUgcmVtb3RlIGRlYnVnZ2luZyBuYW1lIHRvIHNldCBvbiBjdHguCiAqLwotSlNf
RVhQT1JUIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0TmFtZShKU0dsb2JhbENvbnRleHRSZWYgY3R4
LCBKU1N0cmluZ1JlZiBuYW1lKSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitKU19FWFBPUlQg
dm9pZCBKU0dsb2JhbENvbnRleHRTZXROYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIEpTU3Ry
aW5nUmVmIG5hbWUpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsK
IAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ29udGV4dFJlZkludGVybmFsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ29udGV4dFJlZkludGVybmFsLmgKaW5kZXggNzlkN2ViNmYzOWU3ZTJjYThmNGE5Yjk0ZjI3
MjI2ZGIyZjcwNTI5NS4uOWQ0ZjE4YTIyOTUwNzI2ZDkxMDJkMjUwYjVjYWEwY2U3YWQ1YzcyYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWZJbnRlcm5h
bC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmSW50ZXJuYWwu
aApAQCAtNDIsNyArNDIsNyBAQCBleHRlcm4gIkMiIHsKIEBhYnN0cmFjdCBHZXRzIHRoZSBydW4g
bG9vcCB1c2VkIGJ5IHRoZSBXZWIgSW5zcGVjdG9yIGRlYnVnZ2VyIHdoZW4gZXZhbHVhdGluZyBK
YXZhU2NyaXB0IGluIHRoaXMgY29udGV4dC4KIEBwYXJhbSBjdHggVGhlIEpTR2xvYmFsQ29udGV4
dCB3aG9zZSBzZXR0aW5nIHlvdSB3YW50IHRvIGdldC4KICovCi1KU19FWFBPUlQgQ0ZSdW5Mb29w
UmVmIEpTR2xvYmFsQ29udGV4dEdldERlYnVnZ2VyUnVuTG9vcChKU0dsb2JhbENvbnRleHRSZWYg
Y3R4KSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitKU19FWFBPUlQgQ0ZSdW5Mb29wUmVmIEpT
R2xvYmFsQ29udGV4dEdldERlYnVnZ2VyUnVuTG9vcChKU0dsb2JhbENvbnRleHRSZWYgY3R4KSBK
U0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qIQogQGZ1bmN0
aW9uCkBAIC01MCw3ICs1MCw3IEBAIEpTX0VYUE9SVCBDRlJ1bkxvb3BSZWYgSlNHbG9iYWxDb250
ZXh0R2V0RGVidWdnZXJSdW5Mb29wKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCiBAcGFyYW0gY3R4
IFRoZSBKU0dsb2JhbENvbnRleHQgdGhhdCB5b3Ugd2FudCB0byBjaGFuZ2UuCiBAcGFyYW0gcnVu
TG9vcCBUaGUgbmV3IHZhbHVlIG9mIHRoZSBzZXR0aW5nIGZvciB0aGUgY29udGV4dC4KICovCi1K
U19FWFBPUlQgdm9pZCBKU0dsb2JhbENvbnRleHRTZXREZWJ1Z2dlclJ1bkxvb3AoSlNHbG9iYWxD
b250ZXh0UmVmIGN0eCwgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApIENGX0FWQUlMQUJMRSgxMF8xMCwg
OF8wKTsKK0pTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldERlYnVnZ2VyUnVuTG9vcChK
U0dsb2JhbENvbnRleHRSZWYgY3R4LCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkgSlNDX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVz
cGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWZQ
cml2YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZlByaXZhdGUu
aAppbmRleCAxOTYwNGVhNzQ5MzdlZmRhOTY3Y2UzZGY1Nzc3ZDJhMTUxNGRhOGRjLi5lYzY3NmQ4
Yzg3MTQ4M2Y4M2ZjYzNjNTY0YjU1NGU4MTcwMzcyMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaApAQCAtNDQsNyArNDQsNyBAQCBleHRl
cm4gIkMiIHsKIEBwYXJhbSBjdHggVGhlIEpTQ29udGV4dCB3aG9zZSBiYWNrdHJhY2UgeW91IHdh
bnQgdG8gZ2V0CiBAcmVzdWx0IEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGJhY2t0cmFjZQogKi8K
LUpTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU0NvbnRleHRDcmVhdGVCYWNrdHJhY2UoSlNDb250ZXh0
UmVmIGN0eCwgdW5zaWduZWQgbWF4U3RhY2tTaXplKSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsK
K0pTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU0NvbnRleHRDcmVhdGVCYWNrdHJhY2UoSlNDb250ZXh0
UmVmIGN0eCwgdW5zaWduZWQgbWF4U3RhY2tTaXplKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3go
MTAuNiksIGlvcyg3LjApKTsKICAgICAKIAogLyohIApAQCAtODUsMTQgKzg1LDE0IEBAIHR5cGVk
ZWYgYm9vbAogIG5lZWQgdG8gY2FsbCBKU0NvbnRleHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1p
dCBiZWZvcmUgeW91IHN0YXJ0IGV4ZWN1dGluZwogIGFueSBzY3JpcHRzLgogKi8KLUpTX0VYUE9S
VCB2b2lkIEpTQ29udGV4dEdyb3VwU2V0RXhlY3V0aW9uVGltZUxpbWl0KEpTQ29udGV4dEdyb3Vw
UmVmIGdyb3VwLCBkb3VibGUgbGltaXQsIEpTU2hvdWxkVGVybWluYXRlQ2FsbGJhY2sgY2FsbGJh
Y2ssIHZvaWQqIGNvbnRleHQpIENGX0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQT1JUIHZv
aWQgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGltaXQoSlNDb250ZXh0R3JvdXBSZWYg
Z3JvdXAsIGRvdWJsZSBsaW1pdCwgSlNTaG91bGRUZXJtaW5hdGVDYWxsYmFjayBjYWxsYmFjaywg
dm9pZCogY29udGV4dCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7
CiAKIC8qIQogQGZ1bmN0aW9uCiBAYWJzdHJhY3QgQ2xlYXJzIHRoZSBzY3JpcHQgZXhlY3V0aW9u
IHRpbWUgbGltaXQuCiBAcGFyYW0gZ3JvdXAgVGhlIEphdmFTY3JpcHQgY29udGV4dCBncm91cCB0
aGF0IHRoZSB0aW1lIGxpbWl0IGlzIGNsZWFyZWQgb24uCiAqLwotSlNfRVhQT1JUIHZvaWQgSlND
b250ZXh0R3JvdXBDbGVhckV4ZWN1dGlvblRpbWVMaW1pdChKU0NvbnRleHRHcm91cFJlZiBncm91
cCkgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgdm9pZCBKU0NvbnRleHRHcm91
cENsZWFyRXhlY3V0aW9uVGltZUxpbWl0KEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwKSBKU0NfQVBJ
X0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAg
LTEwMSw3ICsxMDEsNyBAQCBKU19FWFBPUlQgdm9pZCBKU0NvbnRleHRHcm91cENsZWFyRXhlY3V0
aW9uVGltZUxpbWl0KEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwKSBDRgogQHJlc3VsdCBUaGUgdmFs
dWUgb2YgdGhlIHNldHRpbmcsIHRydWUgaWYgcmVtb3RlIGluc3BlY3Rpb24gaXMgZW5hYmxlZCwg
b3RoZXJ3aXNlIGZhbHNlLgogQGRpc2N1c3Npb24gUmVtb3RlIGluc3BlY3Rpb24gaXMgdHJ1ZSBi
eSBkZWZhdWx0LgogKi8KLUpTX0VYUE9SVCBib29sIEpTR2xvYmFsQ29udGV4dEdldFJlbW90ZUlu
c3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpIENGX0FWQUlMQUJMRSgxMF8x
MCwgOF8wKTsKK0pTX0VYUE9SVCBib29sIEpTR2xvYmFsQ29udGV4dEdldFJlbW90ZUluc3BlY3Rp
b25FbmFibGVkKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29z
eCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTEwOSw3ICsxMDksNyBA
QCBKU19FWFBPUlQgYm9vbCBKU0dsb2JhbENvbnRleHRHZXRSZW1vdGVJbnNwZWN0aW9uRW5hYmxl
ZChKU0dsb2JhbENvbnRleHRSZWYgY3R4KQogQHBhcmFtIGN0eCBUaGUgSlNHbG9iYWxDb250ZXh0
IHRoYXQgeW91IHdhbnQgdG8gY2hhbmdlLgogQHBhcmFtIGVuYWJsZWQgVGhlIG5ldyByZW1vdGUg
aW5zcGVjdGlvbiBlbmFibGVkIHNldHRpbmcgZm9yIHRoZSBjb250ZXh0LgogKi8KLUpTX0VYUE9S
VCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldFJlbW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFs
Q29udGV4dFJlZiBjdHgsIGJvb2wgZW5hYmxlZCkgQ0ZfQVZBSUxBQkxFKDEwXzEwLCA4XzApOyAg
ICAKK0pTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldFJlbW90ZUluc3BlY3Rpb25FbmFi
bGVkKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIGJvb2wgZW5hYmxlZCkgSlNDX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOyAgICAKIAogLyohCiBAZnVuY3Rpb24KQEAgLTEx
OCw3ICsxMTgsNyBAQCBKU19FWFBPUlQgdm9pZCBKU0dsb2JhbENvbnRleHRTZXRSZW1vdGVJbnNw
ZWN0aW9uRW5hYmxlZChKU0dsb2JhbENvbnRleHRSZWYgY3R4LAogQHJlc3VsdCBUaGUgdmFsdWUg
b2YgdGhlIHNldHRpbmcsIHRydWUgaWYgcmVtb3RlIGluc3BlY3Rpb24gaXMgZW5hYmxlZCwgb3Ro
ZXJ3aXNlIGZhbHNlLgogQGRpc2N1c3Npb24gVGhpcyBzZXR0aW5nIGlzIHRydWUgYnkgZGVmYXVs
dC4KICovCi1KU19FWFBPUlQgYm9vbCBKU0dsb2JhbENvbnRleHRHZXRJbmNsdWRlc05hdGl2ZUNh
bGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpIENG
X0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0pTX0VYUE9SVCBib29sIEpTR2xvYmFsQ29udGV4dEdl
dEluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMoSlNHbG9iYWxD
b250ZXh0UmVmIGN0eCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkp
OwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTI2LDcgKzEyNiw3IEBAIEpTX0VYUE9SVCBib29sIEpT
R2xvYmFsQ29udGV4dEdldEluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2Vw
dGlvbnMoCiBAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgdGhhdCB5b3Ugd2FudCB0byBj
aGFuZ2UuCiBAcGFyYW0gaW5jbHVkZXNOYXRpdmVDYWxsU3RhY2sgVGhlIG5ldyB2YWx1ZSBvZiB0
aGUgc2V0dGluZyBmb3IgdGhlIGNvbnRleHQuCiAqLwotSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxD
b250ZXh0U2V0SW5jbHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucyhK
U0dsb2JhbENvbnRleHRSZWYgY3R4LCBib29sIGluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrKSBDRl9B
VkFJTEFCTEUoMTBfMTAsIDhfMCk7CitKU19FWFBPUlQgdm9pZCBKU0dsb2JhbENvbnRleHRTZXRJ
bmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zKEpTR2xvYmFsQ29u
dGV4dFJlZiBjdHgsIGJvb2wgaW5jbHVkZXNOYXRpdmVDYWxsU3RhY2spIEpTQ19BUElfQVZBSUxB
QkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLmgKaW5kZXggMDEwNzNmYWQ5
N2U3MGI3NmJkNmI2NmEzNzMzYWYyNjFjYzUyNzQ5Yy4uNDE4MDc0YmM0N2Q2NmMxNTg0MDdmZTU4
MzgzNjlhNTE1YzAzMzVlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U01hbmFnZWRWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2Vk
VmFsdWUuaApAQCAtNTcsNyArNTcsNyBAQCBOU19DTEFTU19BVkFJTEFCTEUoMTBfOSwgN18wKQog
QHJlc3VsdCBUaGUgbmV3IEpTTWFuYWdlZFZhbHVlLgogKi8KICsgKEpTTWFuYWdlZFZhbHVlICop
bWFuYWdlZFZhbHVlV2l0aFZhbHVlOihKU1ZhbHVlICopdmFsdWU7Ci0rIChKU01hbmFnZWRWYWx1
ZSAqKW1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIGFuZE93bmVyOihpZClv
d25lciBOU19BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CisrIChKU01hbmFnZWRWYWx1ZSAqKW1hbmFn
ZWRWYWx1ZVdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIGFuZE93bmVyOihpZClvd25lciBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qIQogQG1ldGhvZApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCA1NjZiNzM2MmYx
YjVkZmU0OWVmM2Q5NmNmNTcyNGVmNDg3OGZiZjgxLi41NDUxYTJmOWE1NjEzNDdhOTI1ODFkNWYz
ZTQ0MjQ2Mjk2OWQ0MGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
T2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVm
LmNwcApAQCAtMzY2LDYgKzM2NiwxMDAgQEAgdm9pZCBKU09iamVjdFNldFByb3BlcnR5KEpTQ29u
dGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGUKICAgICBo
YW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhjZXB0aW9uKTsKIH0KIAorYm9v
bCBKU09iamVjdEhhc1Byb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9i
amVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAo
IWN0eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCoganNPYmplY3Qg
PSB0b0pTKG9iamVjdCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IHRvSlMoZXhlYywga2V5KS50
b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29w
ZSwgZXhlYywgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHJlc3VsdCA9IGpzT2JqZWN0LT5oYXNQcm9wZXJ0
eShleGVjLCBpZGVudCk7CisgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMs
IGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSlNWYWx1ZVJlZiBKU09iamVj
dEdldFByb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNW
YWx1ZVJlZiBrZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoIWN0eCkgewor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMo
b2JqZWN0KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gdG9KUyhleGVjLCBrZXkpLnRvUHJvcGVy
dHlLZXkoZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBleGVj
LCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgSlNWYWx1ZSBqc1ZhbHVlID0ganNPYmplY3QtPmdldChleGVjLCBp
ZGVudCk7CisgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlv
bik7CisgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIGpzVmFsdWUpOworfQorCit2b2lkIEpTT2JqZWN0
U2V0UHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1Zh
bHVlUmVmIGtleSwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmli
dXRlcywgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpT
TG9ja0hvbGRlciBsb2NrZXIodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1ND
T1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAgICBK
U1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVlKTsKKworICAgIElkZW50aWZpZXIgaWRl
bnQgPSB0b0pTKGV4ZWMsIGtleSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBpZiAoaGFuZGxl
RXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3Rh
dHVzOjpEaWRUaHJvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBkb2VzTm90SGF2ZVBy
b3BlcnR5ID0gYXR0cmlidXRlcyAmJiAhanNPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIGlkZW50
KTsKKyAgICBpZiAoTElLRUxZKCFzY29wZS5leGNlcHRpb24oKSkpIHsKKyAgICAgICAgaWYgKGRv
ZXNOb3RIYXZlUHJvcGVydHkpIHsKKyAgICAgICAgICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNj
KGpzVmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAganNPYmplY3QtPm1ldGhvZFRhYmxl
KHZtKS0+ZGVmaW5lT3duUHJvcGVydHkoanNPYmplY3QsIGV4ZWMsIGlkZW50LCBkZXNjLCBmYWxz
ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChq
c09iamVjdCk7CisgICAgICAgICAgICBqc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXQoanNP
YmplY3QsIGV4ZWMsIGlkZW50LCBqc1ZhbHVlLCBzbG90KTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhjZXB0aW9uKTsKK30KKwor
Ym9vbCBKU09iamVjdERlbGV0ZVByb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0
UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAg
ICBpZiAoIWN0eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCoganNP
YmplY3QgPSB0b0pTKG9iamVjdCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IHRvSlMoZXhlYywg
a2V5KS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRl
ZChzY29wZSwgZXhlYywgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHJlc3VsdCA9IGpzT2JqZWN0LT5tZXRo
b2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGpzT2JqZWN0LCBleGVjLCBpZGVudCk7CisgICAg
aGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwogSlNWYWx1ZVJlZiBKU09iamVjdEdldFByb3BlcnR5QXRJbmRleChK
U0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIHVuc2lnbmVkIHByb3BlcnR5SW5k
ZXgsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBpZiAoIWN0eCkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oCmluZGV4IDk1ZDUzYjdmNGU1OGU5NmYwY2JjMzE1
OTVhZjljNDYxOTc4YWE0M2QuLmRiNTU2OWE2Y2JkMGVlMGI3YmNiZmNjM2UyOTJmNTMyOTc1ZTY3
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgKQEAgLTQ0MSw3ICs0
NDEsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQ29uc3RydWN0b3IoSlND
b250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYQogIEBkaXNjdXNzaW9uIFRoZSBiZWhhdmlv
ciBvZiB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGV4YWN0bHkgbWF0Y2ggdGhlIGJlaGF2aW9yIG9m
IHRoZSBidWlsdC1pbiBBcnJheSBjb25zdHJ1Y3Rvci4gU3BlY2lmaWNhbGx5LCBpZiBvbmUgYXJn
dW1lbnQgCiAgaXMgc3VwcGxpZWQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbiBhcnJheSB3aXRo
IG9uZSBlbGVtZW50LgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQXJy
YXkoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzYs
IDdfMCk7CitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQXJyYXkoSlNDb250ZXh0
UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRz
W10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjYp
LCBpb3MoNy4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtNDUyLDcgKzQ1Miw3IEBAIEpTX0VY
UE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VBcnJheShKU0NvbnRleHRSZWYgY3R4LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwKICBAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFs
dWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBp
ZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1bHQgQSBKU09i
amVjdCB0aGF0IGlzIGEgRGF0ZS4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0
TWFrZURhdGUoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpT
VmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxF
KDEwXzYsIDdfMCk7CitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRGF0ZShKU0Nv
bnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1
bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3go
MTAuNiksIGlvcyg3LjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC00NjMsNyArNDYzLDcgQEAg
SlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZURhdGUoSlNDb250ZXh0UmVmIGN0eCwg
c2l6ZV90IGFyZ3VtZW50Q291bnQsIGMKICBAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBh
IEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3Mg
TlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1bHQg
QSBKU09iamVjdCB0aGF0IGlzIGEgRXJyb3IuCiAgKi8KLUpTX0VYUE9SVCBKU09iamVjdFJlZiBK
U09iamVjdE1ha2VFcnJvcihKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9B
VkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VF
cnJvcihKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1
ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJM
RShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC00NzQsNyAr
NDc0LDcgQEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUVycm9yKEpTQ29udGV4
dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LAogIEBwYXJhbSBleGNlcHRpb24gQSBwb2lu
dGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFu
eS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAg
QHJlc3VsdCBBIEpTT2JqZWN0IHRoYXQgaXMgYSBSZWdFeHAuCiAgKi8KLUpTX0VYUE9SVCBKU09i
amVjdFJlZiBKU09iamVjdE1ha2VSZWdFeHAoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNP
YmplY3RNYWtlUmVnRXhwKEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBj
b25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19B
UElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9zKDcuMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpA
QCAtNTM2LDkgKzUzNiw5IEBAIEpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpTT2JqZWN0R2V0UHJvcGVy
dHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKCiBAcGFyYW0gY3R4IFRo
ZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCiBAcGFyYW0gb2JqZWN0IFRoZSBKU09iamVjdCB3
aG9zZSBwcm9wZXJ0eSB5b3Ugd2FudCB0byBzZXQuCiBAcGFyYW0gcHJvcGVydHlOYW1lIEEgSlNT
dHJpbmcgY29udGFpbmluZyB0aGUgcHJvcGVydHkncyBuYW1lLgotQHBhcmFtIHZhbHVlIEEgSlNW
YWx1ZSB0byB1c2UgYXMgdGhlIHByb3BlcnR5J3MgdmFsdWUuCi1AcGFyYW0gZXhjZXB0aW9uIEEg
cG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBp
ZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9u
LgorQHBhcmFtIHZhbHVlIEEgSlNWYWx1ZVJlZiB0byB1c2UgYXMgdGhlIHByb3BlcnR5J3MgdmFs
dWUuCiBAcGFyYW0gYXR0cmlidXRlcyBBIGxvZ2ljYWxseSBPUmVkIHNldCBvZiBKU1Byb3BlcnR5
QXR0cmlidXRlcyB0byBnaXZlIHRvIHRoZSBwcm9wZXJ0eS4KK0BwYXJhbSBleGNlcHRpb24gQSBw
b2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlm
IGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24u
CiAqLwogSlNfRVhQT1JUIHZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4
LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJl
ZiB2YWx1ZSwgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKTsKIApAQCAtNTUzLDYgKzU1Myw1NCBAQCBKU19FWFBPUlQgdm9pZCBKU09iamVjdFNl
dFByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbgog
Ki8KIEpTX0VYUE9SVCBib29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHkoSlNDb250ZXh0UmVmIGN0
eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbik7CiAKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgVGVzdHMgd2hldGhl
ciBhbiBvYmplY3QgaGFzIGEgZ2l2ZW4gcHJvcGVydHkgdXNpbmcgYSBKU1ZhbHVlUmVmIGFzIHRo
ZSBwcm9wZXJ0eSBrZXkuCitAcGFyYW0gb2JqZWN0IFRoZSBKU09iamVjdCB0byB0ZXN0LgorQHBh
cmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBwcm9wZXJ0eSBrZXkg
dG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0gZXhjZXB0aW9uIEEg
cG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBp
ZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9u
LgorQHJlc3VsdCB0cnVlIGlmIHRoZSBvYmplY3QgaGFzIGEgcHJvcGVydHkgd2hvc2UgbmFtZSBt
YXRjaGVzIHByb3BlcnR5S2V5LCBvdGhlcndpc2UgZmFsc2UuCitAZGlzY3Vzc2lvbiBUaGlzIGZ1
bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHBlcmZvcm1pbmcgInByb3BlcnR5S2V5IGluIG9iamVjdCIg
ZnJvbSBKYXZhU2NyaXB0LgorKi8KK0pTX0VYUE9SVCBib29sIEpTT2JqZWN0SGFzUHJvcGVydHlL
ZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIHByb3Bl
cnR5S2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeChK
U0NfTUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpOworCisvKiEKK0BmdW5jdGlvbgorQGFic3Ry
YWN0IEdldHMgYSBwcm9wZXJ0eSBmcm9tIGFuIG9iamVjdCB1c2luZyBhIEpTVmFsdWVSZWYgYXMg
dGhlIHByb3BlcnR5IGtleS4KK0BwYXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVz
ZS4KK0BwYXJhbSBvYmplY3QgVGhlIEpTT2JqZWN0IHdob3NlIHByb3BlcnR5IHlvdSB3YW50IHRv
IGdldC4KK0BwYXJhbSBwcm9wZXJ0eUtleSBBIEpTVmFsdWVSZWYgY29udGFpbmluZyB0aGUgcHJv
cGVydHkga2V5IHRvIHVzZSB3aGVuIGxvb2tpbmcgdXAgdGhlIHByb3BlcnR5LgorQHBhcmFtIGV4
Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4
Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFu
IGV4Y2VwdGlvbi4KK0ByZXN1bHQgVGhlIHByb3BlcnR5J3MgdmFsdWUgaWYgb2JqZWN0IGhhcyB0
aGUgcHJvcGVydHkga2V5LCBvdGhlcndpc2UgdGhlIHVuZGVmaW5lZCB2YWx1ZS4KK0BkaXNjdXNz
aW9uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXMgcGVyZm9ybWluZyAib2JqZWN0W3Byb3Bl
cnR5S2V5XSIgZnJvbSBKYXZhU2NyaXB0LgorKi8KK0pTX0VYUE9SVCBKU1ZhbHVlUmVmIEpTT2Jq
ZWN0R2V0UHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBK
U1ZhbHVlUmVmIHByb3BlcnR5S2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZB
SUxBQkxFKG1hY29zeChKU0NfTUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpOworCisvKiEKK0Bm
dW5jdGlvbgorQGFic3RyYWN0IFNldHMgYSBwcm9wZXJ0eSBvbiBhbiBvYmplY3QgdXNpbmcgYSBK
U1ZhbHVlUmVmIGFzIHRoZSBwcm9wZXJ0eSBrZXkuCitAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24g
Y29udGV4dCB0byB1c2UuCitAcGFyYW0gb2JqZWN0IFRoZSBKU09iamVjdCB3aG9zZSBwcm9wZXJ0
eSB5b3Ugd2FudCB0byBzZXQuCitAcGFyYW0gcHJvcGVydHlLZXkgQSBKU1ZhbHVlUmVmIGNvbnRh
aW5pbmcgdGhlIHByb3BlcnR5IGtleSB0byB1c2Ugd2hlbiBsb29raW5nIHVwIHRoZSBwcm9wZXJ0
eS4KK0BwYXJhbSB2YWx1ZSBBIEpTVmFsdWVSZWYgdG8gdXNlIGFzIHRoZSBwcm9wZXJ0eSdzIHZh
bHVlLgorQHBhcmFtIGF0dHJpYnV0ZXMgQSBsb2dpY2FsbHkgT1JlZCBzZXQgb2YgSlNQcm9wZXJ0
eUF0dHJpYnV0ZXMgdG8gZ2l2ZSB0byB0aGUgcHJvcGVydHkuCitAcGFyYW0gZXhjZXB0aW9uIEEg
cG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBp
ZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9u
LgorQGRpc2N1c3Npb24gVGhpcyBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyBwZXJmb3JtaW5nICJv
YmplY3RbcHJvcGVydHlLZXldID0gdmFsdWUiIGZyb20gSmF2YVNjcmlwdC4KKyovCitKU19FWFBP
UlQgdm9pZCBKU09iamVjdFNldFByb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0
UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBwcm9wZXJ0eUtleSwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNQ
cm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goSlNDX01BQ19UQkEpLCBpb3MoSlNDX0lPU19UQkEpKTsKKwor
LyohCitAZnVuY3Rpb24KK0BhYnN0cmFjdCBEZWxldGVzIGEgcHJvcGVydHkgZnJvbSBhbiBvYmpl
Y3QgdXNpbmcgYSBKU1ZhbHVlUmVmIGFzIHRoZSBwcm9wZXJ0eSBrZXkuCitAcGFyYW0gY3R4IFRo
ZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCitAcGFyYW0gb2JqZWN0IFRoZSBKU09iamVjdCB3
aG9zZSBwcm9wZXJ0eSB5b3Ugd2FudCB0byBkZWxldGUuCitAcGFyYW0gcHJvcGVydHlLZXkgQSBK
U1ZhbHVlUmVmIGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5IGtleSB0byB1c2Ugd2hlbiBsb29raW5n
IHVwIHRoZSBwcm9wZXJ0eS4KK0BwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1
ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlm
IHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCitAcmVzdWx0IHRydWUgaWYg
dGhlIGRlbGV0ZSBvcGVyYXRpb24gc3VjY2VlZHMsIG90aGVyd2lzZSBmYWxzZSAoZm9yIGV4YW1w
bGUsIGlmIHRoZSBwcm9wZXJ0eSBoYXMgdGhlIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSBhdHRyaWJ1dGUgc2V0KS4KK0BkaXNjdXNzaW9uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUg
YXMgcGVyZm9ybWluZyAiZGVsZXRlIG9iamVjdFtwcm9wZXJ0eUtleV0iIGZyb20gSmF2YVNjcmlw
dC4KKyovCitKU19FWFBPUlQgYm9vbCBKU09iamVjdERlbGV0ZVByb3BlcnR5S2V5KEpTQ29udGV4
dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBwcm9wZXJ0eUtleSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goSlNDX01BQ19UQkEp
LCBpb3MoSlNDX0lPU19UQkEpKTsKKwogLyohCiBAZnVuY3Rpb24KIEBhYnN0cmFjdCBHZXRzIGEg
cHJvcGVydHkgZnJvbSBhbiBvYmplY3QgYnkgbnVtZXJpYyBpbmRleC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3IuaAppbmRleCBjOGJhYzZkZDBlNGE2NDgw
OWNiMzQ1MGNkYmE0YzAzOTdhNDhhMDU3Li42MTg2YjkyM2VjOGFiOGI5NDhlNzkzYWYwNGJkZDg0
MzI3NDAwMzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTUmVtb3Rl
SW5zcGVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1JlbW90ZUluc3Bl
Y3Rvci5oCkBAIC00MCwxNCArNDAsMTQgQEAgdHlwZWRlZiBwaWRfdCBKU1Byb2Nlc3NJRDsKIGV4
dGVybiAiQyIgewogI2VuZGlmCiAKLUpTX0VYUE9SVCB2b2lkIEpTUmVtb3RlSW5zcGVjdG9yRGlz
YWJsZUF1dG9TdGFydCh2b2lkKSBDRl9BVkFJTEFCTEUoMTBfMTEsIDlfMCk7Ci1KU19FWFBPUlQg
dm9pZCBKU1JlbW90ZUluc3BlY3RvclN0YXJ0KHZvaWQpIENGX0FWQUlMQUJMRSgxMF8xMSwgOV8w
KTsKLUpTX0VYUE9SVCB2b2lkIEpTUmVtb3RlSW5zcGVjdG9yU2V0UGFyZW50UHJvY2Vzc0luZm9y
bWF0aW9uKEpTUHJvY2Vzc0lELCBjb25zdCB1aW50OF90KiBhdWRpdERhdGEsIHNpemVfdCBhdWRp
dExlbmd0aCkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzApOworSlNfRVhQT1JUIHZvaWQgSlNSZW1v
dGVJbnNwZWN0b3JEaXNhYmxlQXV0b1N0YXJ0KHZvaWQpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29z
eCgxMC4xMSksIGlvcyg5LjApKTsKK0pTX0VYUE9SVCB2b2lkIEpTUmVtb3RlSW5zcGVjdG9yU3Rh
cnQodm9pZCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOworSlNf
RVhQT1JUIHZvaWQgSlNSZW1vdGVJbnNwZWN0b3JTZXRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24o
SlNQcm9jZXNzSUQsIGNvbnN0IHVpbnQ4X3QqIGF1ZGl0RGF0YSwgc2l6ZV90IGF1ZGl0TGVuZ3Ro
KSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CiAKLUpTX0VYUE9S
VCB2b2lkIEpTUmVtb3RlSW5zcGVjdG9yU2V0TG9nVG9TeXN0ZW1Db25zb2xlKGJvb2wpIENGX0FW
QUlMQUJMRSgxMF8xMSwgOV8wKTsKK0pTX0VYUE9SVCB2b2lkIEpTUmVtb3RlSW5zcGVjdG9yU2V0
TG9nVG9TeXN0ZW1Db25zb2xlKGJvb2wpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSks
IGlvcyg5LjApKTsKIAotSlNfRVhQT1JUIGJvb2wgSlNSZW1vdGVJbnNwZWN0b3JHZXRJbnNwZWN0
aW9uRW5hYmxlZEJ5RGVmYXVsdCh2b2lkKSBDRl9BVkFJTEFCTEUoMTBfMTEsIDlfMCk7Ci1KU19F
WFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvclNldEluc3BlY3Rpb25FbmFibGVkQnlEZWZhdWx0
KGJvb2wpIENGX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsKK0pTX0VYUE9SVCBib29sIEpTUmVtb3Rl
SW5zcGVjdG9yR2V0SW5zcGVjdGlvbkVuYWJsZWRCeURlZmF1bHQodm9pZCkgSlNDX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOworSlNfRVhQT1JUIHZvaWQgSlNSZW1vdGVJ
bnNwZWN0b3JTZXRJbnNwZWN0aW9uRW5hYmxlZEJ5RGVmYXVsdChib29sKSBKU0NfQVBJX0FWQUlM
QUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmgKaW5kZXggZTIzYjc2ZDJlYjRh
YTVhNDk4YjU1ZWJhNDczNzQ2M2Y2Y2I5MzlhYy4uNmQ4NjAyMmZhNTY5OTU0NjQ2YmVlYTNhZTll
ZmY3YjJjYTM2YTAxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5
cGVkQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5o
CkBAIC00NSw3ICs0NSw3IEBAIGV4dGVybiAiQyIgewogIEBwYXJhbSBleGNlcHRpb24gICAgQSBw
b2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlm
IGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24u
CiAgQHJlc3VsdCAgICAgICAgICAgICBBIEpTT2JqZWN0UmVmIHRoYXQgaXMgYSBUeXBlZCBBcnJh
eSB3aXRoIGFsbCBlbGVtZW50cyBzZXQgdG8gemVybyBvciBOVUxMIGlmIHRoZXJlIHdhcyBhbiBl
cnJvci4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVR5cGVkQXJyYXko
SlNDb250ZXh0UmVmIGN0eCwgSlNUeXBlZEFycmF5VHlwZSBhcnJheVR5cGUsIHNpemVfdCBsZW5n
dGgsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK0pT
X0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5KEpTQ29udGV4dFJlZiBj
dHgsIEpTVHlwZWRBcnJheVR5cGUgYXJyYXlUeXBlLCBzaXplX3QgbGVuZ3RoLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7
CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtNjAsNyArNjAsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RS
ZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheShKU0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlU
eXBlCiAgQHJlc3VsdCAgICAgICAgICAgICAgICAgICBBIEpTT2JqZWN0UmVmIFR5cGVkIEFycmF5
IHdob3NlIGJhY2tpbmcgc3RvcmUgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBwb2ludGVkIHRvIGJ5
IGJ5dGVzIG9yIE5VTEwgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgogIEBkaXNjdXNzaW9uICAgICAg
ICAgICAgICAgSWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biBkdXJpbmcgdGhpcyBmdW5jdGlvbiB0
aGUgYnl0ZXNEZWFsbG9jYXRvciB3aWxsIGFsd2F5cyBiZSBjYWxsZWQuCiAgKi8KLUpTX0VYUE9S
VCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEJ5dGVzTm9Db3B5KEpTQ29u
dGV4dFJlZiBjdHgsIEpTVHlwZWRBcnJheVR5cGUgYXJyYXlUeXBlLCB2b2lkKiBieXRlcywgc2l6
ZV90IGJ5dGVMZW5ndGgsIEpTVHlwZWRBcnJheUJ5dGVzRGVhbGxvY2F0b3IgYnl0ZXNEZWFsbG9j
YXRvciwgdm9pZCogZGVhbGxvY2F0b3JDb250ZXh0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENG
X0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RN
YWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJy
YXlUeXBlIGFycmF5VHlwZSwgdm9pZCogYnl0ZXMsIHNpemVfdCBieXRlTGVuZ3RoLCBKU1R5cGVk
QXJyYXlCeXRlc0RlYWxsb2NhdG9yIGJ5dGVzRGVhbGxvY2F0b3IsIHZvaWQqIGRlYWxsb2NhdG9y
Q29udGV4dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3go
MTAuMTIpLCBpb3MoMTAuMCkpOwogCiAvKiEKICBAZnVuY3Rpb24KQEAgLTcxLDcgKzcxLDcgQEAg
SlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVR5cGVkQXJyYXlXaXRoQnl0ZXNOb0Nv
cHkoSlNDb250ZXh0UmVmIGN0eCwgSlMKICBAcGFyYW0gZXhjZXB0aW9uICAgIEEgcG9pbnRlciB0
byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBh
c3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1
bHQgICAgICAgICAgICAgQSBKU09iamVjdFJlZiB0aGF0IGlzIGEgVHlwZWQgQXJyYXkgb3IgTlVM
TCBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuIFRoZSBiYWNraW5nIHN0b3JlIG9mIHRoZSBUeXBlZCBB
cnJheSB3aWxsIGJlIGJ1ZmZlci4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0
TWFrZVR5cGVkQXJyYXlXaXRoQXJyYXlCdWZmZXIoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBlZEFy
cmF5VHlwZSBhcnJheVR5cGUsIEpTT2JqZWN0UmVmIGJ1ZmZlciwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpT
T2JqZWN0TWFrZVR5cGVkQXJyYXlXaXRoQXJyYXlCdWZmZXIoSlNDb250ZXh0UmVmIGN0eCwgSlNU
eXBlZEFycmF5VHlwZSBhcnJheVR5cGUsIEpTT2JqZWN0UmVmIGJ1ZmZlciwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwog
CiAvKiEKICBAZnVuY3Rpb24KQEAgLTg0LDcgKzg0LDcgQEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVm
IEpTT2JqZWN0TWFrZVR5cGVkQXJyYXlXaXRoQXJyYXlCdWZmZXIoSlNDb250ZXh0UmVmIGN0eCwg
SlMKICBAcGFyYW0gZXhjZXB0aW9uICAgIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hp
Y2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90
IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1bHQgICAgICAgICAgICAgQSBKU09i
amVjdFJlZiB0aGF0IGlzIGEgVHlwZWQgQXJyYXkgb3IgTlVMTCBpZiB0aGVyZSB3YXMgYW4gZXJy
b3IuIFRoZSBiYWNraW5nIHN0b3JlIG9mIHRoZSBUeXBlZCBBcnJheSB3aWxsIGJlIGJ1ZmZlci4K
ICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVR5cGVkQXJyYXlXaXRoQXJy
YXlCdWZmZXJBbmRPZmZzZXQoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBlZEFycmF5VHlwZSBhcnJh
eVR5cGUsIEpTT2JqZWN0UmVmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5n
dGgsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK0pT
X0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEFycmF5QnVmZmVy
QW5kT2Zmc2V0KEpTQ29udGV4dFJlZiBjdHgsIEpTVHlwZWRBcnJheVR5cGUgYXJyYXlUeXBlLCBK
U09iamVjdFJlZiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygx
MC4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtOTUsNyArOTUsNyBAQCBKU19FWFBPUlQgSlNP
YmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhBcnJheUJ1ZmZlckFuZE9mZnNldChK
U0NvbnRleHRSZQogIEByZXN1bHQgICAgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSByYXcgZGF0
YSBidWZmZXIgdGhhdCBzZXJ2ZXMgYXMgb2JqZWN0J3MgYmFja2luZyBzdG9yZSBvciBOVUxMIGlm
IG9iamVjdCBpcyBub3QgYSBUeXBlZCBBcnJheSBvYmplY3QuCiAgQGRpc2N1c3Npb24gICAgICAg
ICBUaGUgcG9pbnRlciByZXR1cm5lZCBieSB0aGlzIGZ1bmN0aW9uIGlzIHRlbXBvcmFyeSBhbmQg
aXMgbm90IGd1YXJhbnRlZWQgdG8gcmVtYWluIHZhbGlkIGFjcm9zcyBKYXZhU2NyaXB0Q29yZSBB
UEkgY2FsbHMuCiAgKi8KLUpTX0VYUE9SVCB2b2lkKiBKU09iamVjdEdldFR5cGVkQXJyYXlCeXRl
c1B0cihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK0pTX0VYUE9SVCB2b2lkKiBKU09i
amVjdEdldFR5cGVkQXJyYXlCeXRlc1B0cihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBv
YmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEw
LjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC0xMDUsNyArMTA1LDcgQEAg
SlNfRVhQT1JUIHZvaWQqIEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5dGVzUHRyKEpTQ29udGV4dFJl
ZiBjdHgsIEpTT2JqZWN0UmVmIG9iamUKICBAcGFyYW0gZXhjZXB0aW9uICAgIEEgcG9pbnRlciB0
byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBh
c3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1
bHQgICAgICAgICAgICAgVGhlIGxlbmd0aCBvZiB0aGUgVHlwZWQgQXJyYXkgb2JqZWN0IG9yIDAg
aWYgdGhlIG9iamVjdCBpcyBub3QgYSBUeXBlZCBBcnJheSBvYmplY3QuCiAgKi8KLUpTX0VYUE9S
VCBzaXplX3QgSlNPYmplY3RHZXRUeXBlZEFycmF5TGVuZ3RoKEpTQ29udGV4dFJlZiBjdHgsIEpT
T2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBf
MTIsIDEwXzApOworSlNfRVhQT1JUIHNpemVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlMZW5ndGgo
SlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKIC8qIQog
IEBmdW5jdGlvbgpAQCAtMTE1LDcgKzExNSw3IEBAIEpTX0VYUE9SVCBzaXplX3QgSlNPYmplY3RH
ZXRUeXBlZEFycmF5TGVuZ3RoKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjCiAg
QHBhcmFtIGV4Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRv
IHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJl
IHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAgICAgIFRoZSBieXRlIGxl
bmd0aCBvZiB0aGUgVHlwZWQgQXJyYXkgb2JqZWN0IG9yIDAgaWYgdGhlIG9iamVjdCBpcyBub3Qg
YSBUeXBlZCBBcnJheSBvYmplY3QuCiAgKi8KLUpTX0VYUE9SVCBzaXplX3QgSlNPYmplY3RHZXRU
eXBlZEFycmF5Qnl0ZUxlbmd0aChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3Qs
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK0pTX0VY
UE9SVCBzaXplX3QgSlNPYmplY3RHZXRUeXBlZEFycmF5Qnl0ZUxlbmd0aChKU0NvbnRleHRSZWYg
Y3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9B
VkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBA
IC0xMjUsNyArMTI1LDcgQEAgSlNfRVhQT1JUIHNpemVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlC
eXRlTGVuZ3RoKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG8KICBAcGFyYW0gZXhjZXB0
aW9uICAgIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhj
ZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4g
ZXhjZXB0aW9uLgogIEByZXN1bHQgICAgICAgICAgICAgVGhlIGJ5dGUgb2Zmc2V0IG9mIHRoZSBU
eXBlZCBBcnJheSBvYmplY3Qgb3IgMCBpZiB0aGUgb2JqZWN0IGlzIG5vdCBhIFR5cGVkIEFycmF5
IG9iamVjdC4KICAqLwotSlNfRVhQT1JUIHNpemVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIHNpemVfdCBK
U09iamVjdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0
UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNv
c3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAvKiEKICBAZnVuY3Rpb24KQEAgLTEzNSw3ICsxMzUs
NyBAQCBKU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgbwogIEBwYXJhbSBleGNlcHRpb24gICAgQSBwb2lu
dGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFu
eS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAg
QHJlc3VsdCAgICAgICAgICAgICBBIEpTT2JqZWN0UmVmIHdpdGggYSBKU1R5cGVkQXJyYXlUeXBl
IG9mIGtKU1R5cGVkQXJyYXlUeXBlQXJyYXlCdWZmZXIgb3IgTlVMTCBpZiBvYmplY3QgaXMgbm90
IGEgVHlwZWQgQXJyYXkuCiAgKi8KLUpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdEdldFR5
cGVkQXJyYXlCdWZmZXIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBPUlQg
SlNPYmplY3RSZWYgSlNPYmplY3RHZXRUeXBlZEFycmF5QnVmZmVyKEpTQ29udGV4dFJlZiBjdHgs
IEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlM
QUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAvLyAtLS0tLS0tLS0tLS0tIEFycmF5
IEJ1ZmZlciBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLQogCkBAIC0xNTEsNyArMTUxLDcgQEAgSlNf
RVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ1ZmZlcihKU0NvbnRleHRS
ZWYgY3R4LCBKU09iamVjdFJlZgogIEByZXN1bHQgICAgICAgICAgICAgICAgICAgQSBKU09iamVj
dFJlZiBBcnJheSBCdWZmZXIgd2hvc2UgYmFja2luZyBzdG9yZSBpcyB0aGUgc2FtZSBhcyB0aGUg
b25lIHBvaW50ZWQgdG8gYnkgYnl0ZXMgb3IgTlVMTCBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAg
QGRpc2N1c3Npb24gICAgICAgICAgICAgICBJZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGR1cmlu
ZyB0aGlzIGZ1bmN0aW9uIHRoZSBieXRlc0RlYWxsb2NhdG9yIHdpbGwgYWx3YXlzIGJlIGNhbGxl
ZC4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUFycmF5QnVmZmVyV2l0
aEJ5dGVzTm9Db3B5KEpTQ29udGV4dFJlZiBjdHgsIHZvaWQqIGJ5dGVzLCBzaXplX3QgYnl0ZUxl
bmd0aCwgSlNUeXBlZEFycmF5Qnl0ZXNEZWFsbG9jYXRvciBieXRlc0RlYWxsb2NhdG9yLCB2b2lk
KiBkZWFsbG9jYXRvckNvbnRleHQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxF
KDEwXzEyLCAxMF8wKTsKK0pTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VBcnJheUJ1
ZmZlcldpdGhCeXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4LCB2b2lkKiBieXRlcywgc2l6ZV90
IGJ5dGVMZW5ndGgsIEpTVHlwZWRBcnJheUJ5dGVzRGVhbGxvY2F0b3IgYnl0ZXNEZWFsbG9jYXRv
ciwgdm9pZCogZGVhbGxvY2F0b3JDb250ZXh0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19B
UElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlv
bgpAQCAtMTYxLDcgKzE2MSw3IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VB
cnJheUJ1ZmZlcldpdGhCeXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4LCB2CiAgQHJlc3VsdCAg
ICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSByYXcgZGF0YSBidWZmZXIgdGhhdCBzZXJ2ZXMgYXMg
b2JqZWN0J3MgYmFja2luZyBzdG9yZSBvciBOVUxMIGlmIG9iamVjdCBpcyBub3QgYW4gQXJyYXkg
QnVmZmVyIG9iamVjdC4KICBAZGlzY3Vzc2lvbiAgICAgICBUaGUgcG9pbnRlciByZXR1cm5lZCBi
eSB0aGlzIGZ1bmN0aW9uIGlzIHRlbXBvcmFyeSBhbmQgaXMgbm90IGd1YXJhbnRlZWQgdG8gcmVt
YWluIHZhbGlkIGFjcm9zcyBKYXZhU2NyaXB0Q29yZSBBUEkgY2FsbHMuCiAgKi8KLUpTX0VYUE9S
VCB2b2lkKiBKU09iamVjdEdldEFycmF5QnVmZmVyQnl0ZXNQdHIoSlNDb250ZXh0UmVmIGN0eCwg
SlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgx
MF8xMiwgMTBfMCk7CitKU19FWFBPUlQgdm9pZCogSlNPYmplY3RHZXRBcnJheUJ1ZmZlckJ5dGVz
UHRyKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAv
KiEKICBAZnVuY3Rpb24KQEAgLTE3MSw3ICsxNzEsNyBAQCBKU19FWFBPUlQgdm9pZCogSlNPYmpl
Y3RHZXRBcnJheUJ1ZmZlckJ5dGVzUHRyKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9i
agogIEBwYXJhbSBleGNlcHRpb24gIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2gg
dG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNh
cmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1bHQgICAgICAgICAgIFRoZSBudW1iZXIg
b2YgYnl0ZXMgc3RvcmVkIGluIHRoZSBkYXRhIG9iamVjdC4KICAqLwotSlNfRVhQT1JUIHNpemVf
dCBKU09iamVjdEdldEFycmF5QnVmZmVyQnl0ZUxlbmd0aChKU0NvbnRleHRSZWYgY3R4LCBKU09i
amVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEy
LCAxMF8wKTsKK0pTX0VYUE9SVCBzaXplX3QgSlNPYmplY3RHZXRBcnJheUJ1ZmZlckJ5dGVMZW5n
dGgoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKICNp
ZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUuaAppbmRleCAx
NDEwZGQ3NGExN2Y5NzA3MDZlNDRkZWQyNGNjZDE3MGMzNDc5YzJlLi44M2U5ZjVhYWMxOWE0ZjYz
YjlmMDM4MTc3Y2Y4YzZjYjk4NGRlYzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUu
aApAQCAtMTQ4LDYgKzE0OCwxNSBAQCBOU19DTEFTU19BVkFJTEFCTEUoMTBfOSwgN18wKQogKi8K
ICsgKEpTVmFsdWUgKil2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNv
bnRleHQ7CiAKKy8qIQorIEBtZXRob2QKKyBAYWJzdHJhY3QgQ3JlYXRlIGEgbmV3LCB1bmlxdWUs
IHN5bWJvbCBvYmplY3QuCisgQHBhcmFtIGRlc2NyaXB0aW9uIFRoZSBkZXNjcmlwdGlvbiBvZiB0
aGUgc3ltYm9sIG9iamVjdCBiZWluZyBjcmVhdGVkLgorIEBwYXJhbSBjb250ZXh0IFRoZSBKU0Nv
bnRleHQgdG8gd2hpY2ggdGhlIHJlc3VsdGluZyBKU1ZhbHVlIGJlbG9uZ3MuCisgQHJlc3VsdCBU
aGUgSlNWYWx1ZSByZXByZXNlbnRpbmcgYSB1bmlxdWUgSmF2YVNjcmlwdCB2YWx1ZSB3aXRoIHR5
cGUgc3ltYm9sLgorICovCisrIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3U3ltYm9sRnJvbURlc2Ny
aXB0aW9uOihOU1N0cmluZyAqKWRlc2NyaXB0aW9uIGluQ29udGV4dDooSlNDb250ZXh0ICopY29u
dGV4dCBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goSlNDX01BQ19UQkEpLCBpb3MoSlNDX0lPU19U
QkEpKTsKKwogLyohCiBAbWV0aG9kZ3JvdXAgQ29udmVydGluZyB0byBPYmplY3RpdmUtQyBUeXBl
cwogQGRpc2N1c3Npb24gV2hlbiBjb252ZXJ0aW5nIGJldHdlZW4gSmF2YVNjcmlwdCB2YWx1ZXMg
YW5kIE9iamVjdGl2ZS1DIG9iamVjdHMgYSBjb3B5IGlzCkBAIC0zMDUsNDMgKzMxNCw1MiBAQCBO
U19DTEFTU19BVkFJTEFCTEUoMTBfOSwgN18wKQogLyohCiBAbWV0aG9kZ3JvdXAgQWNjZXNzaW5n
IFByb3BlcnRpZXMKICovCisKKyNpZiAhKChkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCBKU0NfTUFDX1ZF
UlNJT05fVEJBKSB8fCAoZGVmaW5lZChfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCkg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCBKU0NfSU9TX1ZFUlNJT05fVEJB
KSkKKwogLyohCiBAbWV0aG9kCiBAYWJzdHJhY3QgQWNjZXNzIGEgcHJvcGVydHkgb2YgYSBKU1Zh
bHVlLgogQHJlc3VsdCBUaGUgSlNWYWx1ZSBmb3IgdGhlIHJlcXVlc3RlZCBwcm9wZXJ0eSBvciB0
aGUgSlNWYWx1ZSA8Y29kZT51bmRlZmluZWQ8L2NvZGU+IAogIGlmIHRoZSBwcm9wZXJ0eSBkb2Vz
IG5vdCBleGlzdC4KK0BkaXNjdXNzaW9uIENvcnJlc3BvbmRzIHRvIHRoZSBKYXZhU2NyaXB0IG9w
ZXJhdGlvbiA8Y29kZT5vYmplY3RbcHJvcGVydHldPC9jb2RlPi4gUGFzcyBhbiBOU1N0cmluZyAq
IHRvIGFjY2VzcyBhIG5hbWVkIHByb3BlcnR5LiBPdGhlciB2YWxpZCBwcm9wZXJ0aWVzIGluY2x1
ZGUgc3ltYm9scywgbnVtYmVycywgYW5kIHN0cmluZ2lmaWFibGUgb2JqZWN0cy4gSW4gbWFjT1Mg
MTAuMTMgYW5kIGlPUyAxMSBhbmQgYmVsb3csICdwcm9wZXJ0eScgd2FzIGFuIE5TU3RyaW5nICou
CiAqLwotLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7
CistIChKU1ZhbHVlICopdmFsdWVGb3JQcm9wZXJ0eTooaWQpcHJvcGVydHk7CiAKIC8qIQogQG1l
dGhvZAogQGFic3RyYWN0IFNldCBhIHByb3BlcnR5IG9uIGEgSlNWYWx1ZS4KK0BkaXNjdXNzaW9u
IENvcnJlc3BvbmRzIHRvIHRoZSBKYXZhU2NyaXB0IG9wZXJhdGlvbiA8Y29kZT5vYmplY3RbcHJv
cGVydHldID0gdmFsdWU8L2NvZGU+LiBQYXNzIGFuIE5TU3RyaW5nICogdG8gYWNjZXNzIGEgbmFt
ZWQgcHJvcGVydHkuIE90aGVyIHZhbGlkIHByb3BlcnRpZXMgaW5jbHVkZSBzeW1ib2xzLCBudW1i
ZXJzLCBhbmQgc3RyaW5naWZpYWJsZSBvYmplY3RzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9TIDEx
IGFuZCBiZWxvdywgJ3Byb3BlcnR5JyB3YXMgYW4gTlNTdHJpbmcgKi4KICovCi0tICh2b2lkKXNl
dFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKHZv
aWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZvclByb3BlcnR5OihpZClwcm9wZXJ0eTsKIAogLyohCiBA
bWV0aG9kCiBAYWJzdHJhY3QgRGVsZXRlIGEgcHJvcGVydHkgZnJvbSBhIEpTVmFsdWUuCiBAcmVz
dWx0IFlFUyBpZiBkZWxldGlvbiBpcyBzdWNjZXNzZnVsLCBOTyBvdGhlcndpc2UuCitAZGlzY3Vz
c2lvbiBDb3JyZXNwb25kcyB0byB0aGUgSmF2YVNjcmlwdCBvcGVyYXRpb24gPGNvZGU+ZGVsZXRl
IG9iamVjdFtwcm9wZXJ0eV08L2NvZGU+LiBQYXNzIGFuIE5TU3RyaW5nICogdG8gYWNjZXNzIGEg
bmFtZWQgcHJvcGVydHkuIE90aGVyIHZhbGlkIHByb3BlcnRpZXMgaW5jbHVkZSBzeW1ib2xzLCBu
dW1iZXJzLCBhbmQgc3RyaW5naWZpYWJsZSBvYmplY3RzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9T
IDExIGFuZCBiZWxvdywgJ3Byb3BlcnR5JyB3YXMgYW4gTlNTdHJpbmcgKi4KICovCi0tIChCT09M
KWRlbGV0ZVByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLSAoQk9PTClkZWxldGVQcm9w
ZXJ0eTooaWQpcHJvcGVydHk7CiAKIC8qIQogQG1ldGhvZAogQGFic3RyYWN0IENoZWNrIGlmIGEg
SlNWYWx1ZSBoYXMgYSBwcm9wZXJ0eS4KIEBkaXNjdXNzaW9uIFRoaXMgbWV0aG9kIGhhcyB0aGUg
c2FtZSBmdW5jdGlvbiBhcyB0aGUgSmF2YVNjcmlwdCBvcGVyYXRvciA8Y29kZT5pbjwvY29kZT4u
CiBAcmVzdWx0IFJldHVybnMgWUVTIGlmIHByb3BlcnR5IGlzIHByZXNlbnQgb24gdGhlIHZhbHVl
LgorQGRpc2N1c3Npb24gQ29ycmVzcG9uZHMgdG8gdGhlIEphdmFTY3JpcHQgb3BlcmF0aW9uIDxj
b2RlPnByb3BlcnR5IGluIG9iamVjdDwvY29kZT4uIFBhc3MgYW4gTlNTdHJpbmcgKiB0byBhY2Nl
c3MgYSBuYW1lZCBwcm9wZXJ0eS4gT3RoZXIgdmFsaWQgcHJvcGVydGllcyBpbmNsdWRlIHN5bWJv
bHMsIG51bWJlcnMsIGFuZCBzdHJpbmdpZmlhYmxlIG9iamVjdHMuIEluIG1hY09TIDEwLjEzIGFu
ZCBpT1MgMTEgYW5kIGJlbG93LCAncHJvcGVydHknIHdhcyBhbiBOU1N0cmluZyAqLgogKi8KLS0g
KEJPT0wpaGFzUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7CistIChCT09MKWhhc1Byb3Bl
cnR5OihpZClwcm9wZXJ0eTsKIAogLyohCiBAbWV0aG9kCiBAYWJzdHJhY3QgRGVmaW5lIHByb3Bl
cnRpZXMgd2l0aCBjdXN0b20gZGVzY3JpcHRvcnMgb24gSlNWYWx1ZXMuCiBAZGlzY3Vzc2lvbiBU
aGlzIG1ldGhvZCBtYXkgYmUgdXNlZCB0byBjcmVhdGUgYSBkYXRhIG9yIGFjY2Vzc29yIHByb3Bl
cnR5IG9uIGFuIG9iamVjdC4KICBUaGlzIG1ldGhvZCBvcGVyYXRlcyBpbiBhY2NvcmRhbmNlIHdp
dGggdGhlIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBtZXRob2QgaW4gdGhlIAotIEphdmFTY3JpcHQg
bGFuZ3VhZ2UuCisgSmF2YVNjcmlwdCBsYW5ndWFnZS4gUGFzcyBhbiBOU1N0cmluZyAqIHRvIGFj
Y2VzcyBhIG5hbWVkIHByb3BlcnR5LiBPdGhlciB2YWxpZCBwcm9wZXJ0aWVzIGluY2x1ZGUgc3lt
Ym9scywgbnVtYmVycywgYW5kIHN0cmluZ2lmaWFibGUgb2JqZWN0cy4gSW4gbWFjT1MgMTAuMTMg
YW5kIGlPUyAxMSBhbmQgYmVsb3csICdwcm9wZXJ0eScgd2FzIGFuIE5TU3RyaW5nICouCiAqLwot
LSAodm9pZClkZWZpbmVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eSBkZXNjcmlwdG9yOihp
ZClkZXNjcmlwdG9yOworLSAodm9pZClkZWZpbmVQcm9wZXJ0eTooaWQpcHJvcGVydHkgZGVzY3Jp
cHRvcjooaWQpZGVzY3JpcHRvcjsKKworI2VuZGlmIC8vICEoKGRlZmluZWQoX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8
IEpTQ19NQUNfVkVSU0lPTl9UQkEpIHx8IChkZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IEpTQ19JT1Nf
VkVSU0lPTl9UQkEpKQogCiAvKiEKIEBtZXRob2QKQEAgLTQwMiwxNyArNDIwLDIzIEBAIE5TX0NM
QVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCiAqLwogQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBp
c09iamVjdDsKIAorLyohCitAcHJvcGVydHkKK0BhYnN0cmFjdCBDaGVjayBpZiBhIEpTVmFsdWUg
aXMgYSBzeW1ib2wuCisqLworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBpc1N5bWJvbCBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goSlNDX01BQ19UQkEpLCBpb3MoSlNDX0lPU19UQkEpKTsKKwog
LyohCiBAcHJvcGVydHkKIEBhYnN0cmFjdCBDaGVjayBpZiBhIEpTVmFsdWUgaXMgYW4gYXJyYXku
CiAqLyAKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaXNBcnJheSBOU19BVkFJTEFCTEUoMTBf
MTEsIDlfMCk7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGlzQXJyYXkgSlNDX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOwogCiAvKiEKIEBwcm9wZXJ0eQogQGFic3Ry
YWN0IENoZWNrIGlmIGEgSlNWYWx1ZSBpcyBhIGRhdGUuCiAqLyAKLUBwcm9wZXJ0eSAocmVhZG9u
bHkpIEJPT0wgaXNEYXRlIE5TX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsKK0Bwcm9wZXJ0eSAocmVh
ZG9ubHkpIEJPT0wgaXNEYXRlIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSksIGlvcyg5
LjApKTsKIAogLyohCiBAbWV0aG9kCkBAIC01NjksMTMgKzU5MywxNiBAQCBDcmVhdGUgYSBKU1Zh
bHVlIGZyb20gYSBDR1JlY3QuCiBAL3RleHRibG9jawogCiAgQW4gb2JqZWN0IGtleSBwYXNzZWQg
YXMgYSBzdWJzY3JpcHQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBKYXZhU2NyaXB0IHZhbHVlLAot
IGFuZCB0aGVuIHRoZSB2YWx1ZSBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcgdXNlZCBhcyBhIHByb3Bl
cnR5IG5hbWUuCisgYW5kIHRoZW4gdGhlIHZhbHVlIGNvbnZlcnRlZCB0byBhIHN0cmluZyB1c2Vk
IGFzIGEgcHJvcGVydHkgbmFtZS4gSW4gbWFjT1MKKyAxMC4xMyBhbmQgaU9TIDExIGFuZCBiZWxv
dywgdGhlIDxjb2RlPmtleTwvY29kZT4gYXJndW1lbnQgb2YKKyA8Y29kZT5zZXRPYmplY3Q6b2Jq
ZWN0IGZvcktleWVkU3Vic2NyaXB0OmtleTwvY29kZT4gd2FzIHJlc3RyaWN0ZWQgdG8gYW4KKyA8
Y29kZT5OU1N0cmluZyA8TlNDb3B5aW5nPiAqPC9jb2RlPiBidXQgdGhhdCByZXN0cmljdGlvbiB3
YXMgbmV2ZXIgdXNlZC4KICovCiBAaW50ZXJmYWNlIEpTVmFsdWUgKFN1YnNjcmlwdFN1cHBvcnQp
CiAKIC0gKEpTVmFsdWUgKilvYmplY3RGb3JLZXllZFN1YnNjcmlwdDooaWQpa2V5OwogLSAoSlNW
YWx1ZSAqKW9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRleDsKLS0gKHZv
aWQpc2V0T2JqZWN0OihpZClvYmplY3QgZm9yS2V5ZWRTdWJzY3JpcHQ6KE5TT2JqZWN0IDxOU0Nv
cHlpbmc+ICopa2V5OworLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBmb3JLZXllZFN1YnNj
cmlwdDooaWQpa2V5OwogLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBhdEluZGV4ZWRTdWJz
Y3JpcHQ6KE5TVUludGVnZXIpaW5kZXg7CiAKIEBlbmQKQEAgLTY2Myw2ICs2OTAsNTMgQEAgSlNf
RVhQT1JUIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yU2V0S2V5
OwogfSAvLyBleHRlcm4gIkMiCiAjZW5kaWYKIAorI2lmIChkZWZpbmVkKF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCBK
U0NfTUFDX1ZFUlNJT05fVEJBKSB8fCAoZGVmaW5lZChfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCBKU0NfSU9TX1ZF
UlNJT05fVEJBKQorCisvLyBUaGVzZSBkZWNsYXJhdGlvbnMgcHJvdmlkZSBjb21wYXRpYmlsaXR5
IHdoZW4gdGFyZ2V0aW5nIFNES3MgZm9yIGxlZ2FjeSBPU3MuIEluIG1hY09TIDEwLjEzIGFuZCBp
T1MgMTEgYW5kIGJlbG93LCAncHJvcGVydHknIHdhcyBhbiBOU1N0cmluZyAqLgorQGludGVyZmFj
ZSBKU1ZhbHVlIChMZWdhY3lTREtTdXBwb3J0KQorCisvKiEKK0BtZXRob2QKK0BhYnN0cmFjdCBB
Y2Nlc3MgYSBwcm9wZXJ0eSBvZiBhIEpTVmFsdWUuCitAcmVzdWx0IFRoZSBKU1ZhbHVlIGZvciB0
aGUgcmVxdWVzdGVkIHByb3BlcnR5IG9yIHRoZSBKU1ZhbHVlIDxjb2RlPnVuZGVmaW5lZDwvY29k
ZT4KK2lmIHRoZSBwcm9wZXJ0eSBkb2VzIG5vdCBleGlzdC4KKyovCistIChKU1ZhbHVlICopdmFs
dWVGb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKworLyohCitAbWV0aG9kCitAYWJz
dHJhY3QgU2V0IGEgcHJvcGVydHkgb24gYSBKU1ZhbHVlLgorKi8KKy0gKHZvaWQpc2V0VmFsdWU6
KGlkKXZhbHVlIGZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworCisvKiEKKyBAbWV0
aG9kCisgQGFic3RyYWN0IERlbGV0ZSBhIHByb3BlcnR5IGZyb20gYSBKU1ZhbHVlLgorIEByZXN1
bHQgWUVTIGlmIGRlbGV0aW9uIGlzIHN1Y2Nlc3NmdWwsIE5PIG90aGVyd2lzZS4KKyAqLworLSAo
Qk9PTClkZWxldGVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKworLyohCisgQG1ldGhv
ZAorIEBhYnN0cmFjdCBDaGVjayBpZiBhIEpTVmFsdWUgaGFzIGEgcHJvcGVydHkuCisgQGRpc2N1
c3Npb24gVGhpcyBtZXRob2QgaGFzIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIHRoZSBKYXZhU2NyaXB0
IG9wZXJhdG9yIDxjb2RlPmluPC9jb2RlPi4KKyBAcmVzdWx0IFJldHVybnMgWUVTIGlmIHByb3Bl
cnR5IGlzIHByZXNlbnQgb24gdGhlIHZhbHVlLgorICovCistIChCT09MKWhhc1Byb3BlcnR5OihO
U1N0cmluZyAqKXByb3BlcnR5OworCisvKiEKKyBAbWV0aG9kCisgQGFic3RyYWN0IERlZmluZSBw
cm9wZXJ0aWVzIHdpdGggY3VzdG9tIGRlc2NyaXB0b3JzIG9uIEpTVmFsdWVzLgorIEBkaXNjdXNz
aW9uIFRoaXMgbWV0aG9kIG1heSBiZSB1c2VkIHRvIGNyZWF0ZSBhIGRhdGEgb3IgYWNjZXNzb3Ig
cHJvcGVydHkgb24gYW4gb2JqZWN0LgorIFRoaXMgbWV0aG9kIG9wZXJhdGVzIGluIGFjY29yZGFu
Y2Ugd2l0aCB0aGUgT2JqZWN0LmRlZmluZVByb3BlcnR5IG1ldGhvZCBpbiB0aGUKKyBKYXZhU2Ny
aXB0IGxhbmd1YWdlLgorICovCistICh2b2lkKWRlZmluZVByb3BlcnR5OihOU1N0cmluZyAqKXBy
b3BlcnR5IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0b3I7CisKK0BlbmQKKworI2VuZGlmCisKICNl
bmRpZgogCiAjZW5kaWYgLy8gSlNWYWx1ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUu
bW0KaW5kZXggYTI2Njg0NDhmZmJjN2JmNTUzNDM3NGQxN2RhMmJlYjRjNzQxOTg4My4uOWM5NmM5
ZDY5NTAzOTQzMzZkMTY4NTIzYjNjNjMwNjdmM2EzNzFiZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNWYWx1ZS5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCAiSlNDSlNWYWx1ZS5oIgog
I2ltcG9ydCAiU3Ryb25nLmgiCiAjaW1wb3J0ICJTdHJvbmdJbmxpbmVzLmgiCisjaW1wb3J0IDx3
dGYvRXhwZWN0ZWQuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvSGFz
aFNldC5oPgogI2ltcG9ydCA8d3RmL0xvY2suaD4KQEAgLTE1MSw2ICsxNTIsMTMgQEAgTlNTdHJp
bmcgKiBjb25zdCBKU1Byb3BlcnR5RGVzY3JpcHRvclNldEtleSA9IEAic2V0IjsKICAgICByZXR1
cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpKU1ZhbHVlTWFrZVVuZGVmaW5lZChbY29u
dGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKSBpbkNvbnRleHQ6Y29udGV4dF07CiB9CiAKKysgKEpT
VmFsdWUgKil2YWx1ZVdpdGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246KE5TU3RyaW5nICopZGVz
Y3JpcHRpb24gaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0Cit7CisgICAgSlNTdHJpbmdS
ZWYgc3RyaW5nID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxD
RlN0cmluZ1JlZj4oZGVzY3JpcHRpb24pKTsKKyAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRo
SlNWYWx1ZVJlZjpKU1ZhbHVlTWFrZVN5bWJvbChbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZd
LCBzdHJpbmcpIGluQ29udGV4dDpjb250ZXh0XTsKK30KKworCiAtIChpZCl0b09iamVjdAogewog
ICAgIHJldHVybiB2YWx1ZVRvT2JqZWN0KF9jb250ZXh0LCBtX3ZhbHVlKTsKQEAgLTIzNCw3MiAr
MjQyLDEwMCBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yU2V0S2V5ID0g
QCJzZXQiOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLS0gKEpTVmFsdWUgKil2YWx1ZUZvclBy
b3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQordGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0
LCB0eXBlbmFtZSBOU1N0cmluZ0Z1bmN0aW9uLCB0eXBlbmFtZSBKU1ZhbHVlRnVuY3Rpb24sIHR5
cGVuYW1lLi4uIFR5cGVzPgoraW5saW5lIEV4cGVjdGVkPFJlc3VsdCwgSlNWYWx1ZVJlZj4gcGVy
Zm9ybVByb3BlcnR5T3BlcmF0aW9uKE5TU3RyaW5nRnVuY3Rpb24gc3RyaW5nRnVuY3Rpb24sIEpT
VmFsdWVGdW5jdGlvbiBqc0Z1bmN0aW9uLCBKU1ZhbHVlKiB2YWx1ZSwgaWQgcHJvcGVydHlLZXks
IFR5cGVzLi4uIGFyZ3VtZW50cykKIHsKLSAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0g
ICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KFtfY29udGV4dCBKU0dsb2Jh
bENvbnRleHRSZWZdLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKLSAgICBpZiAoZXhjZXB0aW9uKQot
ICAgICAgICByZXR1cm4gW19jb250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRp
b25dOwotCi0gICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5n
KChfX2JyaWRnZSBDRlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwotICAgIEpTVmFsdWVSZWYgcmVz
dWx0ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwg
b2JqZWN0LCBuYW1lLCAmZXhjZXB0aW9uKTsKLSAgICBKU1N0cmluZ1JlbGVhc2UobmFtZSk7Cisg
ICAgSlNDb250ZXh0KiBjb250ZXh0ID0gW3ZhbHVlIGNvbnRleHRdOworICAgIEpTVmFsdWVSZWYg
ZXhjZXB0aW9uID0gbnVsbHB0cjsKKyAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9P
YmplY3QoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgW3ZhbHVlIEpTVmFsdWVSZWZdLCAm
ZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW19jb250ZXh0
IHZhbHVlRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOworICAgICAgICByZXR1cm4gVW5l
eHBlY3RlZDxKU1ZhbHVlUmVmPihleGNlcHRpb24pOworCisgICAgUmVzdWx0IHJlc3VsdDsKKyAg
ICAvLyBJZiBpdCdzIGEgTlNTdHJpbmcgYWxyZWFkeSwgcmVkdWNlIGluZGlyZWN0aW9uIGFuZCBq
dXN0IHBhc3MgdGhlIE5TU3RyaW5nLgorICAgIGlmIChbcHJvcGVydHlLZXkgaXNLaW5kT2ZDbGFz
czpbTlNTdHJpbmcgY2xhc3NdXSkgeworICAgICAgICBKU1N0cmluZ1JlZiBuYW1lID0gSlNTdHJp
bmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXByb3BlcnR5S2V5KTsK
KyAgICAgICAgcmVzdWx0ID0gc3RyaW5nRnVuY3Rpb24oW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0
UmVmXSwgb2JqZWN0LCBuYW1lLCBhcmd1bWVudHMuLi4sICZleGNlcHRpb24pOworICAgICAgICBK
U1N0cmluZ1JlbGVhc2UobmFtZSk7CisgICAgfSBlbHNlCisgICAgICAgIHJlc3VsdCA9IGpzRnVu
Y3Rpb24oW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgb2JqZWN0LCBbW0pTVmFsdWUgdmFs
dWVXaXRoT2JqZWN0OnByb3BlcnR5S2V5IGluQ29udGV4dDpjb250ZXh0XSBKU1ZhbHVlUmVmXSwg
YXJndW1lbnRzLi4uLCAmZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gRXhwZWN0ZWQ8UmVzdWx0LCBK
U1ZhbHVlUmVmPihyZXN1bHQpOworfQorCisjaWYgKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMw
MCkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQorLSAoSlNWYWx1ZSAqKXZhbHVl
Rm9yUHJvcGVydHk6KE5TU3RyaW5nICopa2V5CisjZWxzZQorLSAoSlNWYWx1ZSAqKXZhbHVlRm9y
UHJvcGVydHk6KGlkKWtleQorI2VuZGlmCit7CisgICAgYXV0byByZXN1bHQgPSBwZXJmb3JtUHJv
cGVydHlPcGVyYXRpb248SlNWYWx1ZVJlZj4oSlNPYmplY3RHZXRQcm9wZXJ0eSwgSlNPYmplY3RH
ZXRQcm9wZXJ0eUtleSwgc2VsZiwga2V5KTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0
dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246cmVzdWx0LmVycm9yKCldOwog
Ci0gICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6cmVzdWx0IGluQ29udGV4
dDpfY29udGV4dF07CisgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6cmVz
dWx0LnZhbHVlKCkgaW5Db250ZXh0Ol9jb250ZXh0XTsKIH0KIAotLSAodm9pZClzZXRWYWx1ZToo
aWQpdmFsdWUgZm9yUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lCisjaWYgKGRlZmlu
ZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA8IDEwMTMwMCkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAw
KQorLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yUHJvcGVydHk6KE5TU3RyaW5nICopa2V5
CisjZWxzZQorLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yUHJvcGVydHk6KGlkKWtleQor
I2VuZGlmCiB7Ci0gICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAgIEpTT2JqZWN0UmVm
IG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwg
bV92YWx1ZSwgJmV4Y2VwdGlvbik7Ci0gICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICBbX2Nv
bnRleHQgbm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07Ci0gICAgICAgIHJldHVybjsKLSAgICB9
CisgICAgLy8gV2UgbmVlZCBVbml0IGJ1c2luZXNzIGJlY2F1c2Ugdm9pZCBjYW4ndCBiZSBhc3Np
Z25lZCB0byBpbiBwZXJmb3JtUHJvcGVydHlPcGVyYXRpb24gYW5kIEkgZG9uJ3Qgd2FudCB0byBk
dXBsaWNhdGUgdGhlIGNvZGUuLi4KKyAgICB1c2luZyBVbml0ID0gc3RkOjp0dXBsZTw+OworICAg
IGF1dG8gc3RyaW5nU2V0UHJvcGVydHkgPSBbXSAoYXV0by4uLiBhcmdzKSAtPiBVbml0IHsKKyAg
ICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShhcmdzLi4uKTsKKyAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICB9OwogCi0gICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3Ry
aW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwotICAgIEpTT2JqZWN0U2V0
UHJvcGVydHkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgbmFtZSwgb2Jq
ZWN0VG9WYWx1ZShfY29udGV4dCwgdmFsdWUpLCAwLCAmZXhjZXB0aW9uKTsKLSAgICBKU1N0cmlu
Z1JlbGVhc2UobmFtZSk7Ci0gICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICBbX2NvbnRleHQg
bm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgYXV0byBqc1ZhbHVlU2V0UHJvcGVydHkg
PSBbXSAoYXV0by4uLiBhcmdzKSAtPiBVbml0IHsKKyAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0
eUtleShhcmdzLi4uKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9OworCisgICAgYXV0byBy
ZXN1bHQgPSBwZXJmb3JtUHJvcGVydHlPcGVyYXRpb248VW5pdD4oc3RyaW5nU2V0UHJvcGVydHks
IGpzVmFsdWVTZXRQcm9wZXJ0eSwgc2VsZiwga2V5LCBvYmplY3RUb1ZhbHVlKF9jb250ZXh0LCB2
YWx1ZSksIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSk7CisgICAgaWYgKCFyZXN1bHQpIHsKKyAg
ICAgICAgW19jb250ZXh0IG5vdGlmeUV4Y2VwdGlvbjpyZXN1bHQuZXJyb3IoKV07CiAgICAgICAg
IHJldHVybjsKICAgICB9CiB9CiAKLS0gKEJPT0wpZGVsZXRlUHJvcGVydHk6KE5TU3RyaW5nICop
cHJvcGVydHlOYW1lCisjaWYgKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMwMCkgfHwgKGRlZmlu
ZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQorLSAoQk9PTClkZWxldGVQcm9wZXJ0eTooTlNTdHJp
bmcgKilrZXkKKyNlbHNlCistIChCT09MKWRlbGV0ZVByb3BlcnR5OihpZClrZXkKKyNlbmRpZgog
ewotICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBKU09iamVjdFJlZiBvYmplY3Qg
PSBKU1ZhbHVlVG9PYmplY3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUs
ICZleGNlcHRpb24pOwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbX2NvbnRl
eHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKLQotICAgIEpTU3RyaW5nUmVm
IG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYp
cHJvcGVydHlOYW1lKTsKLSAgICBCT09MIHJlc3VsdCA9IEpTT2JqZWN0RGVsZXRlUHJvcGVydHko
W19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgbmFtZSwgJmV4Y2VwdGlvbik7
Ci0gICAgSlNTdHJpbmdSZWxlYXNlKG5hbWUpOwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAg
IHJldHVybiBbX2NvbnRleHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKLQot
ICAgIHJldHVybiByZXN1bHQ7CisgICAgRXhwZWN0ZWQ8Qk9PTCwgSlNWYWx1ZVJlZj4gcmVzdWx0
ID0gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uPEJPT0w+KEpTT2JqZWN0RGVsZXRlUHJvcGVydHks
IEpTT2JqZWN0RGVsZXRlUHJvcGVydHlLZXksIHNlbGYsIGtleSk7CisgICAgaWYgKCFyZXN1bHQp
CisgICAgICAgIHJldHVybiBbX2NvbnRleHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246cmVzdWx0
LmVycm9yKCldOworICAgIHJldHVybiByZXN1bHQudmFsdWUoKTsKIH0KIAotLSAoQk9PTCloYXNQ
cm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKKyNpZiAoZGVmaW5lZChfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
IDwgMTAxMzAwKSB8fCAoZGVmaW5lZChfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCkg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMTAwMDApCistIChCT09MKWhh
c1Byb3BlcnR5OihOU1N0cmluZyAqKWtleQorI2Vsc2UKKy0gKEJPT0wpaGFzUHJvcGVydHk6KGlk
KWtleQorI2VuZGlmCiB7Ci0gICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAgIEpTT2Jq
ZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0
UmVmXSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7Ci0gICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAg
cmV0dXJuIFtfY29udGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOworICAg
IC8vIFRoZSBDLWFwaSBkb2Vzbid0IHJldHVybiBhbiBleGNlcHRpb24gdmFsdWUgZm9yIHRoZSBz
dHJpbmcgdmVyc2lvbiBvZiBoYXMgcHJvcGVydHkuCisgICAgYXV0byBzdHJpbmdIYXNQcm9wZXJ0
eSA9IFtdIChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiopIC0+IEJPT0wgeworICAgICAgICByZXR1cm4gSlNP
YmplY3RIYXNQcm9wZXJ0eShjdHgsIG9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICB9OwogCi0g
ICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChfX2JyaWRn
ZSBDRlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwotICAgIEJPT0wgcmVzdWx0ID0gSlNPYmplY3RI
YXNQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgb2JqZWN0LCBuYW1lKTsK
LSAgICBKU1N0cmluZ1JlbGVhc2UobmFtZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBFeHBl
Y3RlZDxCT09MLCBKU1ZhbHVlUmVmPiByZXN1bHQgPSBwZXJmb3JtUHJvcGVydHlPcGVyYXRpb248
Qk9PTD4oc3RyaW5nSGFzUHJvcGVydHksIEpTT2JqZWN0SGFzUHJvcGVydHlLZXksIHNlbGYsIGtl
eSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBbX2NvbnRleHQgYm9vbEZyb21O
b3RpZnlFeGNlcHRpb246cmVzdWx0LmVycm9yKCldOworICAgIHJldHVybiByZXN1bHQudmFsdWUo
KTsKIH0KIAotLSAodm9pZClkZWZpbmVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eSBkZXNj
cmlwdG9yOihpZClkZXNjcmlwdG9yCisjaWYgKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMwMCkg
fHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQorLSAodm9pZClkZWZpbmVQcm9wZXJ0
eTooTlNTdHJpbmcgKilrZXkgZGVzY3JpcHRvcjooaWQpZGVzY3JpcHRvcgorI2Vsc2UKKy0gKHZv
aWQpZGVmaW5lUHJvcGVydHk6KGlkKWtleSBkZXNjcmlwdG9yOihpZClkZXNjcmlwdG9yCisjZW5k
aWYKIHsKLSAgICBbW19jb250ZXh0IGdsb2JhbE9iamVjdF1bQCJPYmplY3QiXSBpbnZva2VNZXRo
b2Q6QCJkZWZpbmVQcm9wZXJ0eSIgd2l0aEFyZ3VtZW50czpAWyBzZWxmLCBwcm9wZXJ0eSwgZGVz
Y3JpcHRvciBdXTsKKyAgICBbW19jb250ZXh0IGdsb2JhbE9iamVjdF1bQCJPYmplY3QiXSBpbnZv
a2VNZXRob2Q6QCJkZWZpbmVQcm9wZXJ0eSIgd2l0aEFyZ3VtZW50czpAWyBzZWxmLCBrZXksIGRl
c2NyaXB0b3IgXV07CiB9CiAKIC0gKEpTVmFsdWUgKil2YWx1ZUF0SW5kZXg6KE5TVUludGVnZXIp
aW5kZXgKQEAgLTM3Miw2ICs0MDgsMTEgQEAgTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5RGVz
Y3JpcHRvclNldEtleSA9IEAic2V0IjsKICAgICByZXR1cm4gSlNWYWx1ZUlzT2JqZWN0KFtfY29u
dGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlKTsKIH0KIAorLSAoQk9PTClpc1N5bWJv
bAoreworICAgIHJldHVybiBKU1ZhbHVlSXNTeW1ib2woW19jb250ZXh0IEpTR2xvYmFsQ29udGV4
dFJlZl0sIG1fdmFsdWUpOworfQorCiAtIChCT09MKWlzQXJyYXkKIHsKICAgICByZXR1cm4gSlNW
YWx1ZUlzQXJyYXkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUpOwpAQCAt
NTU0LDEzICs1OTUsNyBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yU2V0
S2V5ID0gQCJzZXQiOwogCiAtIChKU1ZhbHVlICopb2JqZWN0Rm9yS2V5ZWRTdWJzY3JpcHQ6KGlk
KWtleQogewotICAgIGlmICghW2tleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7
Ci0gICAgICAgIGtleSA9IFtbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6a2V5IGluQ29udGV4dDpf
Y29udGV4dF0gdG9TdHJpbmddOwotICAgICAgICBpZiAoIWtleSkKLSAgICAgICAgICAgIHJldHVy
biBbSlNWYWx1ZSB2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRleHQ6X2NvbnRleHRdOwotICAgIH0K
LQotICAgIHJldHVybiBbc2VsZiB2YWx1ZUZvclByb3BlcnR5OihOU1N0cmluZyAqKWtleV07Cisg
ICAgcmV0dXJuIFtzZWxmIHZhbHVlRm9yUHJvcGVydHk6a2V5XTsKIH0KIAogLSAoSlNWYWx1ZSAq
KW9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRleApAQCAtNTY4LDE1ICs2
MDMsOSBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yU2V0S2V5ID0gQCJz
ZXQiOwogICAgIHJldHVybiBbc2VsZiB2YWx1ZUF0SW5kZXg6aW5kZXhdOwogfQogCi0tICh2b2lk
KXNldE9iamVjdDooaWQpb2JqZWN0IGZvcktleWVkU3Vic2NyaXB0OihOU09iamVjdCA8TlNDb3B5
aW5nPiAqKWtleQorLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBmb3JLZXllZFN1YnNjcmlw
dDooaWQpa2V5CiB7Ci0gICAgaWYgKCFba2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNz
XV0pIHsKLSAgICAgICAga2V5ID0gW1tKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDprZXkgaW5Db250
ZXh0Ol9jb250ZXh0XSB0b1N0cmluZ107Ci0gICAgICAgIGlmICgha2V5KQotICAgICAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIFtzZWxmIHNldFZhbHVlOm9iamVjdCBmb3JQcm9wZXJ0eToo
TlNTdHJpbmcgKilrZXldOworICAgIFtzZWxmIHNldFZhbHVlOm9iamVjdCBmb3JQcm9wZXJ0eTpr
ZXldOwogfQogCiAtICh2b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGF0SW5kZXhlZFN1YnNjcmlw
dDooTlNVSW50ZWdlcilpbmRleApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1ZhbHVlUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5j
cHAKaW5kZXggNzk1NTliZTkwNzk4NzE1MWIyZmE3ZDkzMTI2NDI0NTE4ODgxMGZkYy4uZGFjYTBl
MWI0OWRkOGQ1MTJlNTY1ZGMxM2NjY2FmMmI5N2YyMDhiNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWVSZWYuY3BwCkBAIC04Niw2ICs4Niw4IEBAIHN0YXRpYyBib29sIGV2ZXJu
b3RlSGFja05lZWRlZCgpCiAgICAgICAgIHJldHVybiBrSlNUeXBlTnVtYmVyOwogICAgIGlmIChq
c1ZhbHVlLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBrSlNUeXBlU3RyaW5nOworICAgIGlm
IChqc1ZhbHVlLmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiBrSlNUeXBlU3ltYm9sOwogICAg
IEFTU0VSVChqc1ZhbHVlLmlzT2JqZWN0KCkpOwogICAgIHJldHVybiBrSlNUeXBlT2JqZWN0Owog
fQpAQCAtMTYyLDYgKzE2NCwxOCBAQCBib29sIEpTVmFsdWVJc09iamVjdChKU0NvbnRleHRSZWYg
Y3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQogICAgIHJldHVybiB0b0pTKGV4ZWMsIHZhbHVlKS5pc09i
amVjdCgpOwogfQogCitib29sIEpTVmFsdWVJc1N5bWJvbChKU0NvbnRleHRSZWYgY3R4LCBKU1Zh
bHVlUmVmIHZhbHVlKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IHRvSlMoY3R4KTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOworCisgICAgcmV0
dXJuIHRvSlMoZXhlYywgdmFsdWUpLmlzU3ltYm9sKCk7Cit9CisKIGJvb2wgSlNWYWx1ZUlzQXJy
YXkoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkKIHsKICAgICBpZiAoIWN0eCkg
ewpAQCAtMzIwLDYgKzMzNCwyMiBAQCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlTnVtYmVyKEpTQ29u
dGV4dFJlZiBjdHgsIGRvdWJsZSB2YWx1ZSkKICAgICByZXR1cm4gdG9SZWYoZXhlYywganNOdW1i
ZXIocHVyaWZ5TmFOKHZhbHVlKSkpOwogfQogCitKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlU3ltYm9s
KEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIGRlc2NyaXB0aW9uKQoreworICAgIGlmICgh
Y3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIEpTTG9j
a0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NP
UEUoZXhlYy0+dm0oKSk7CisKKyAgICBKU1N0cmluZyoganNEZXNjcmlwdGlvbiA9IGpzU3RyaW5n
KGV4ZWMsIGRlc2NyaXB0aW9uID8gZGVzY3JpcHRpb24tPnN0cmluZygpIDogU3RyaW5nKCkpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgcmV0dXJuIHRv
UmVmKGV4ZWMsIFN5bWJvbDo6Y3JlYXRlKGV4ZWMsIGpzRGVzY3JpcHRpb24pKTsKK30KKwogSlNW
YWx1ZVJlZiBKU1ZhbHVlTWFrZVN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBz
dHJpbmcpCiB7CiAgICAgaWYgKCFjdHgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNWYWx1ZVJlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVl
UmVmLmgKaW5kZXggOTgxNWRlNzgzYzBhZWUwNzNlM2E0NDhiZDBjN2NhZGQ0YTk1MmMwNi4uMTJm
MmRjYzA0NGU2ZThhZTMwYWMyMDMxZDBiMmRhNWIzNzNhZGIzYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1ZhbHVlUmVmLmgKQEAgLTQyLDYgKzQyLDcgQEAKIEBjb25zdGFudCAgICAga0pT
VHlwZU51bWJlciAgICAgQSBwcmltaXRpdmUgbnVtYmVyIHZhbHVlLgogQGNvbnN0YW50ICAgICBr
SlNUeXBlU3RyaW5nICAgICBBIHByaW1pdGl2ZSBzdHJpbmcgdmFsdWUuCiBAY29uc3RhbnQgICAg
IGtKU1R5cGVPYmplY3QgICAgIEFuIG9iamVjdCB2YWx1ZSAobWVhbmluZyB0aGF0IHRoaXMgSlNW
YWx1ZVJlZiBpcyBhIEpTT2JqZWN0UmVmKS4KK0Bjb25zdGFudCAgICAga0pTVHlwZVN5bWJvbCAg
ICAgQSBwcmltaXRpdmUgc3ltYm9sIHZhbHVlLgogKi8KIHR5cGVkZWYgZW51bSB7CiAgICAga0pT
VHlwZVVuZGVmaW5lZCwKQEAgLTQ5LDcgKzUwLDggQEAgdHlwZWRlZiBlbnVtIHsKICAgICBrSlNU
eXBlQm9vbGVhbiwKICAgICBrSlNUeXBlTnVtYmVyLAogICAgIGtKU1R5cGVTdHJpbmcsCi0gICAg
a0pTVHlwZU9iamVjdAorICAgIGtKU1R5cGVPYmplY3QsCisgICAga0pTVHlwZVN5bWJvbCBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goSlNDX01BQ19UQkEpLCBpb3MoSlNDX0lPU19UQkEpKQogfSBK
U1R5cGU7CiAKIC8qIQpAQCAtODAsNyArODIsNyBAQCB0eXBlZGVmIGVudW0gewogICAgIGtKU1R5
cGVkQXJyYXlUeXBlRmxvYXQ2NEFycmF5LAogICAgIGtKU1R5cGVkQXJyYXlUeXBlQXJyYXlCdWZm
ZXIsCiAgICAga0pTVHlwZWRBcnJheVR5cGVOb25lLAotfSBKU1R5cGVkQXJyYXlUeXBlIENGX0VO
VU1fQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK30gSlNUeXBlZEFycmF5VHlwZSBKU0NfQVBJX0FW
QUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMK
IGV4dGVybiAiQyIgewpAQCAtMTQ5LDYgKzE1MSwxNiBAQCBKU19FWFBPUlQgYm9vbCBKU1ZhbHVl
SXNTdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSk7CiAqLwogSlNfRVhQ
T1JUIGJvb2wgSlNWYWx1ZUlzT2JqZWN0KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFs
dWUpOwogCisvKiEKK0BmdW5jdGlvbgorQGFic3RyYWN0ICAgICAgIFRlc3RzIHdoZXRoZXIgYSBK
YXZhU2NyaXB0IHZhbHVlJ3MgdHlwZSBpcyB0aGUgc3ltYm9sIHR5cGUuCitAcGFyYW0gY3R4ICAg
ICAgVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KK0BwYXJhbSB2YWx1ZSAgICBUaGUgSlNW
YWx1ZSB0byB0ZXN0LgorQHJlc3VsdCAgICAgICAgIHRydWUgaWYgdmFsdWUncyB0eXBlIGlzIHRo
ZSBzeW1ib2wgdHlwZSwgb3RoZXJ3aXNlIGZhbHNlLgorKi8KK0pTX0VYUE9SVCBib29sIEpTVmFs
dWVJc1N5bWJvbChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKSBKU0NfQVBJX0FW
QUlMQUJMRShtYWNvc3goSlNDX01BQ19UQkEpLCBpb3MoSlNDX0lPU19UQkEpKTsKKworCiAvKiEK
IEBmdW5jdGlvbgogQGFic3RyYWN0IFRlc3RzIHdoZXRoZXIgYSBKYXZhU2NyaXB0IHZhbHVlIGlz
IGFuIG9iamVjdCB3aXRoIGEgZ2l2ZW4gY2xhc3MgaW4gaXRzIGNsYXNzIGNoYWluLgpAQCAtMTY2
LDcgKzE3OCw3IEBAIEpTX0VYUE9SVCBib29sIEpTVmFsdWVJc09iamVjdE9mQ2xhc3MoSlNDb250
ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNDbGFzCiBAcGFyYW0gdmFsdWUgICAgVGhl
IEpTVmFsdWUgdG8gdGVzdC4KIEByZXN1bHQgICAgICAgICB0cnVlIGlmIHZhbHVlIGlzIGFuIGFy
cmF5LCBvdGhlcndpc2UgZmFsc2UuCiAqLwotSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzQXJyYXko
SlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5
XzApOworSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgSlNW
YWx1ZVJlZiB2YWx1ZSkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkp
OwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTc1LDcgKzE4Nyw3IEBAIEpTX0VYUE9SVCBib29sIEpT
VmFsdWVJc0FycmF5KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpIENGX0FWQUlM
QUJMRSgxCiBAcGFyYW0gdmFsdWUgICAgVGhlIEpTVmFsdWUgdG8gdGVzdC4KIEByZXN1bHQgICAg
ICAgICB0cnVlIGlmIHZhbHVlIGlzIGEgZGF0ZSwgb3RoZXJ3aXNlIGZhbHNlLgogKi8KLUpTX0VY
UE9SVCBib29sIEpTVmFsdWVJc0RhdGUoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1
ZSkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzApOworSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzRGF0
ZShKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKSBKU0NfQVBJX0FWQUlMQUJMRSht
YWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC0xODUsNyArMTk3
LDcgQEAgSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzRGF0ZShKU0NvbnRleHRSZWYgY3R4LCBKU1Zh
bHVlUmVmIHZhbHVlKSBDRl9BVkFJTEFCTEUoMTAKIEBwYXJhbSBleGNlcHRpb24gICAgQSBwb2lu
dGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFu
eS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiBA
cmVzdWx0ICAgICAgICAgICAgIEEgdmFsdWUgb2YgdHlwZSBKU1R5cGVkQXJyYXlUeXBlIHRoYXQg
aWRlbnRpZmllcyB2YWx1ZSdzIFR5cGVkIEFycmF5IHR5cGUsIG9yIGtKU1R5cGVkQXJyYXlUeXBl
Tm9uZSBpZiB0aGUgdmFsdWUgaXMgbm90IGEgVHlwZWQgQXJyYXkgb2JqZWN0LgogICovCi1KU19F
WFBPUlQgSlNUeXBlZEFycmF5VHlwZSBKU1ZhbHVlR2V0VHlwZWRBcnJheVR5cGUoSlNDb250ZXh0
UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJ
TEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTVHlwZWRBcnJheVR5cGUgSlNWYWx1ZUdl
dFR5cGVkQXJyYXlUeXBlKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEw
LjApKTsKIAogLyogQ29tcGFyaW5nIHZhbHVlcyAqLwogCkBAIC0yNTcsNiArMjY5LDE1IEBAIEpT
X0VYUE9SVCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlQm9vbGVhbihKU0NvbnRleHRSZWYgY3R4LCBi
b29sIGJvb2xlYW4pOwogKi8KIEpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlTnVtYmVy
KEpTQ29udGV4dFJlZiBjdHgsIGRvdWJsZSBudW1iZXIpOwogCisvKiEKK0BmdW5jdGlvbgorQGFi
c3RyYWN0ICAgICAgICAgICAgQ3JlYXRlcyBhIEphdmFTY3JpcHQgdmFsdWUgb2YgdGhlIHN5bWJv
bCB0eXBlLgorQHBhcmFtIGN0eCAgICAgICAgICAgVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVz
ZS4KK0BwYXJhbSBkZXNjcmlwdGlvbiAgIEEgZGVzY3JpcHRpb24gb2YgdGhlIG5ld2x5IGNyZWF0
ZWQgc3ltYm9sIHZhbHVlLgorQHJlc3VsdCAgICAgICAgICAgICAgQSB1bmlxdWUgSlNWYWx1ZSBv
ZiB0aGUgc3ltYm9sIHR5cGUsIHdob3NlIGRlc2NyaXB0aW9uIG1hdGNoZXMgdGhlIG9uZSBwcm92
aWRlZC4KKyovCitKU19FWFBPUlQgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZVN5bWJvbChKU0NvbnRl
eHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBkZXNjcmlwdGlvbik7CisKIC8qIQogQGZ1bmN0aW9uCiBA
YWJzdHJhY3QgICAgICAgQ3JlYXRlcyBhIEphdmFTY3JpcHQgdmFsdWUgb2YgdGhlIHN0cmluZyB0
eXBlLgpAQCAtMjc2LDcgKzI5Nyw3IEBAIEpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtl
U3RyaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHN0cmluZyk7CiAgQHBhcmFtIHN0
cmluZyAgIFRoZSBKU1N0cmluZyBjb250YWluaW5nIHRoZSBKU09OIHN0cmluZyB0byBiZSBwYXJz
ZWQuCiAgQHJlc3VsdCAgICAgICAgIEEgSlNWYWx1ZSBjb250YWluaW5nIHRoZSBwYXJzZWQgdmFs
dWUsIG9yIE5VTEwgaWYgdGhlIGlucHV0IGlzIGludmFsaWQuCiAgKi8KLUpTX0VYUE9SVCBKU1Zh
bHVlUmVmIEpTVmFsdWVNYWtlRnJvbUpTT05TdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJp
bmdSZWYgc3RyaW5nKSBDRl9BVkFJTEFCTEUoMTBfNywgN18wKTsKK0pTX0VYUE9SVCBKU1ZhbHVl
UmVmIEpTVmFsdWVNYWtlRnJvbUpTT05TdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdS
ZWYgc3RyaW5nKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNyksIGlvcyg3LjApKTsKIAog
LyohCiAgQGZ1bmN0aW9uCkBAIC0yODcsNyArMzA4LDcgQEAgSlNfRVhQT1JUIEpTVmFsdWVSZWYg
SlNWYWx1ZU1ha2VGcm9tSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBz
dHIKICBAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2gg
dG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNh
cmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1bHQgICAgICAgICBBIEpTU3RyaW5nIHdp
dGggdGhlIHJlc3VsdCBvZiBzZXJpYWxpemF0aW9uLCBvciBOVUxMIGlmIGFuIGV4Y2VwdGlvbiBp
cyB0aHJvd24uCiAgKi8KLUpTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU1ZhbHVlQ3JlYXRlSlNPTlN0
cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlLCB1bnNpZ25lZCBpbmRlbnQs
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzcsIDdfMCk7CitKU19FWFBP
UlQgSlNTdHJpbmdSZWYgSlNWYWx1ZUNyZWF0ZUpTT05TdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwg
SlNWYWx1ZVJlZiB2YWx1ZSwgdW5zaWduZWQgaW5kZW50LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
IEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC43KSwgaW9zKDcuMCkpOwogCiAvKiBDb252ZXJ0
aW5nIHRvIHByaW1pdGl2ZSB2YWx1ZXMgKi8KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9XZWJLaXRBdmFpbGFiaWxpdHkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvV2ViS2l0QXZhaWxhYmlsaXR5LmgKaW5kZXggODIyNzUyMDNkYzk4MDE4MzMxYTkxYmI5NWI5
ZDZkYjE2ZTU5ZjlhYS4uMGY2YWZiNmIxZGJkNjE5ODFkZWRlZDBhMWU1YjI0YzhmZGNiNTNmMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9XZWJLaXRBdmFpbGFiaWxpdHku
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL1dlYktpdEF2YWlsYWJpbGl0eS5oCkBA
IC02OSwxNSArNjksMTIgQEAKICNlbmRpZiAvKiAhVEFSR0VUX09TX0lQSE9ORSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMTAwICovCiAKICNpZiBkZWZpbmVkKEJVSUxE
SU5HX0dUS19fKQotI3VuZGVmIENGX0FWQUlMQUJMRQotI2RlZmluZSBDRl9BVkFJTEFCTEUoX21h
YywgX2lvcykKLSN1bmRlZiBDRl9FTlVNX0FWQUlMQUJMRQotI2RlZmluZSBDRl9FTlVNX0FWQUlM
QUJMRShfbWFjLCBfaW9zKQorI3VuZGVmIEpTQ19BUElfQVZBSUxBQkxFCisjZGVmaW5lIEpTQ19B
UElfQVZBSUxBQkxFKC4uLikKICNlbmRpZgogCiAjZWxzZQotI2RlZmluZSBDRl9BVkFJTEFCTEUo
X21hYywgX2lvcykKLSNkZWZpbmUgQ0ZfRU5VTV9BVkFJTEFCTEUoX21hYywgX2lvcykKKyNkZWZp
bmUgSlNDX0FQSV9BVkFJTEFCTEUoLi4uKQogI2VuZGlmCiAKICNlbmRpZiAvKiBfX1dlYktpdEF2
YWlsYWJpbGl0eV9fICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL0N1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lm1tIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy9DdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5tbQppbmRl
eCA1MzE4OGZiYTg4Zjk1NDI3YzhhZTkzMzlhYWM4OGQwYzY4YTE3ZWIxLi5iZDdlOGE2ODYwN2U1
ZjhkZDc4ZDk0NmJkZGE3NGE2MWQyNWY3ZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL0N1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lm1tCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dl
dHRlclRlc3QubW0KQEAgLTIzLDYgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ3VycmVudFRo
aXNJbnNpZGVCbG9ja0dldHRlclRlc3QuaCIKIAogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0N1c3RvbUdsb2JhbE9i
amVjdENsYXNzVGVzdC5jIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9DdXN0b21H
bG9iYWxPYmplY3RDbGFzc1Rlc3QuYwppbmRleCBhYzU0NzFhNjc0MWJmZjkzYzcwMGJmM2IzYWFj
NmVkMzg3NDlmMGJmLi45ZmZlMjMzZjRiNzk2ZjVhMGI5NWIzNzRhNDgzYjAxNGVkNWJkZDk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0N1c3RvbUdsb2JhbE9i
amVjdENsYXNzVGVzdC5jCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3Vz
dG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmMKQEAgLTIzLDYgKzIzLDcgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkN1c3RvbUdsb2JhbE9i
amVjdENsYXNzVGVzdC5oIgogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWZQ
cml2YXRlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0Rh
dGVUZXN0cy5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRGF0ZVRlc3RzLm1t
CmluZGV4IDJiZGEzYWRhNmIxNThlMDEwOGFlYzVmNDJlNzY1Mzk3MzBlYzJlZDkuLjY2NTIxNzdk
ZTQxN2IxMmVlOTRkZTg4M2I4ZmIwYmQ3MDlkZDY3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvRGF0ZVRlc3RzLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvRGF0ZVRlc3RzLm1tCkBAIC0yMyw2ICsyMyw3IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1w
b3J0ICJEYXRlVGVzdHMuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTRXhwb3J0VGVzdHMu
bW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTRXhwb3J0VGVzdHMubW0KaW5k
ZXggMWNlYzkzOTc5YzQxNmY0YzBmMDQ5MDVlZTc0NzZlNzg2NGQ4NDI1Mi4uZGZkYzk1ZjQ3YmM3
NzViMDhiMzY2NzNkMGJiYmZlNmJjZTM0MWI3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy9KU0V4cG9ydFRlc3RzLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvSlNFeHBvcnRUZXN0cy5tbQpAQCAtMjMsNiArMjMsNyBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbXBvcnQgImNvbmZpZy5oIgog
I2ltcG9ydCAiSlNFeHBvcnRUZXN0cy5oIgogCiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNOb2RlLmMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZS5jCmluZGV4IGQwYTBkYzNlYzcyMzcy
NTdmYTE4MGQwNTE0Zjc0YzZhZDJlNGI1YjcuLmJjMDA0MGFlNmJhNDA5ODUzODM4Y2FlYWQ2YTIz
ODRlYzk5OTAwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
SlNOb2RlLmMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU05vZGUuYwpA
QCAtMjMsNyArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2luY2x1ZGUgPHd0Zi9Q
bGF0Zm9ybS5oPgorI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAj
aW5jbHVkZSAiSlNOb2RlTGlzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS90ZXN0cy9KU05vZGVMaXN0LmMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3Rz
L0pTTm9kZUxpc3QuYwppbmRleCBmMDM3ZTA5NGEwOWUxYTIyNjA0NGVlZDFmMjNkMGE1MTg2MWEz
ZjRiLi45OWEzMjk1MThlNmE5YTFjZmIxMjY3NjQ3MzlhMGI2OWNmYTVkNDBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZUxpc3QuYworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZUxpc3QuYwpAQCAtMjMsNyArMjMsNyBA
QAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2lu
Y2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiSlNOb2Rl
TGlzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Ob2Rl
LmMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL05vZGUuYwppbmRleCBkYjY4N2U5
NTJmMWE5ZDhjMTM0YjkwNjc3ZDI5YTY0MDZkOGRiMWEyLi44ZjdkMDZiMmFhNGFkZTI2OWQ2MWVm
YzYxYzAxODRjY2MzMTk1YTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL05vZGUuYworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL05vZGUu
YwpAQCAtMjMsNyArMjMsOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAorI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIk5vZGUuaCIKKwogI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1
ZGUgPHN0ZGxpYi5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL05vZGVMaXN0LmMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL05vZGVMaXN0
LmMKaW5kZXggNjlmNGNkNWM0ODczMTJiZDYzOTk2MzRmYjA2ODRhMTIyNjY0ZGMxOC4uMjJkMzg3
YzBkNDIyNmZiYWQxMTk3YzY0ODMxY2Q1N2FmMzFhZmRmNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Ob2RlTGlzdC5jCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvTm9kZUxpc3QuYwpAQCAtMjMsNiArMjMsNyBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAK
ICNpbmNsdWRlIDxzdGRsaWIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvbWluaWRvbS5jIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9taW5p
ZG9tLmMKaW5kZXggMDJiNDFhOWM3ZjlkYTExM2IwMDNkNGY5MTlhNDIwOGQzODliNzhiZC4uNDFm
MThjZGY3MjkwNDM2OTBjZmU3NzNiYTQwZDhiNWI0NGNhNzA5OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9taW5pZG9tLmMKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy9taW5pZG9tLmMKQEAgLTI0LDcgKzI0LDcgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAogICovCiAKLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlICJjb25maWcu
aCIKIAogI2luY2x1ZGUgIkpTQ29udGV4dFJlZi5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwppbmRleCA3YmVjZGZlMDQxMTVi
Zjk0ODllZjg0MTk3YzE2NzFjNWI4M2JhNGUyLi44NmQxYzI1YzI3ZTk1MmQ2MWFiOWU0MWJlMTQ1
NzQxMGZiYzQ4ZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3Rz
L3Rlc3RhcGkuYworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGku
YwpAQCAtMjMsNyArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpZiBVU0UoQ0YpCiAjaW5jbHVk
ZSAiSmF2YVNjcmlwdENvcmUuaCIKQEAgLTY2LDYgKzY2LDggQEAKIHZvaWQgdGVzdE9iamVjdGl2
ZUNBUEkodm9pZCk7CiAjZW5kaWYKIAoraW50IHRlc3RDQVBJVmlhQ3BwKHZvaWQpOworCiBib29s
IGFzc2VydFRydWUoYm9vbCB2YWx1ZSwgY29uc3QgY2hhciogbWVzc2FnZSk7CiAKIHN0YXRpYyBK
U0dsb2JhbENvbnRleHRSZWYgY29udGV4dDsKQEAgLTEzNjEsNiArMTM2Myw3IEBAIGludCBtYWlu
KGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICB0
ZXN0T2JqZWN0aXZlQ0FQSSgpOwogI2VuZGlmCisgICAgUkVMRUFTRV9BU1NFUlQoIXRlc3RDQVBJ
VmlhQ3BwKCkpOwogCiAgICAgY29uc3QgY2hhciAqc2NyaXB0UGF0aCA9ICJ0ZXN0YXBpLmpzIjsK
ICAgICBpZiAoYXJnYyA+IDEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvdGVzdGFwaS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rl
c3RhcGkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjMWI0NTA3ZjlhOTY5OWM0NjRiNjQ2ZjkyMmZlODE4ZTU3
NGZlZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3Rz
L3Rlc3RhcGkuY3BwCkBAIC0wLDAgKzEsMzkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU09i
amVjdC5oIgorI2luY2x1ZGUgIkphdmFTY3JpcHRDb3JlLmgiCisKKyNpbmNsdWRlIDx3dGYvRGF0
YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworZXh0ZXJuICJDIiBpbnQgdGVzdENB
UElWaWFDcHAoKTsKKworY2xhc3MgQVBJU3RyaW5nIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShBUElTdHJpbmcpOworcHVibGljOgorCisgICAgQVBJU3RyaW5nKGNvbnN0IGNoYXIqIHN0cmlu
ZykKKyAgICAgICAgOiBtX3N0cmluZyhKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzdHJp
bmcpKQorICAgIHsKKyAgICB9CisKKyAgICB+QVBJU3RyaW5nKCkKKyAgICB7CisgICAgICAgIEpT
U3RyaW5nUmVsZWFzZShtX3N0cmluZyk7CisgICAgfQorCisgICAgb3BlcmF0b3IgSlNTdHJpbmdS
ZWYoKSB7IHJldHVybiBtX3N0cmluZzsgfQorCitwcml2YXRlOgorICAgIEpTU3RyaW5nUmVmIG1f
c3RyaW5nOworfTsKKworY2xhc3MgQVBJQ29udGV4dCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQVBJQ29udGV4dCk7CitwdWJsaWM6CisKKyAgICBBUElDb250ZXh0KCkKKyAgICAgICAgOiBt
X2NvbnRleHQoSlNHbG9iYWxDb250ZXh0Q3JlYXRlKG51bGxwdHIpKQorICAgIHsKKyAgICAgICAg
QVBJU3RyaW5nIHByaW50KCJwcmludCIpOworICAgICAgICBKU09iamVjdFJlZiBwcmludEZ1bmN0
aW9uID0gSlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2sobV9jb250ZXh0LCBwcmludCwg
W10gKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiwgc2l6ZV90IGFy
Z3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqKSB7
CisKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyBp
KyspCisgICAgICAgICAgICAgICAgZGF0YUxvZyhiaXR3aXNlX2Nhc3Q8SlNDOjpKU1ZhbHVlPihh
cmd1bWVudHNbaV0pKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigpOworICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisgICAgICAgIH0pOworCisgICAgICAgIEpT
T2JqZWN0U2V0UHJvcGVydHkobV9jb250ZXh0LCBKU0NvbnRleHRHZXRHbG9iYWxPYmplY3QobV9j
b250ZXh0KSwgcHJpbnQsIHByaW50RnVuY3Rpb24sIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSwg
bnVsbHB0cik7CisgICAgfQorCisgICAgfkFQSUNvbnRleHQoKQorICAgIHsKKyAgICAgICAgSlNH
bG9iYWxDb250ZXh0UmVsZWFzZShtX2NvbnRleHQpOworICAgIH0KKworICAgIG9wZXJhdG9yIEpT
R2xvYmFsQ29udGV4dFJlZigpIHsgcmV0dXJuIG1fY29udGV4dDsgfQorCitwcml2YXRlOgorICAg
IEpTR2xvYmFsQ29udGV4dFJlZiBtX2NvbnRleHQ7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorY2xhc3MgQVBJVmVjdG9yIDogcHJvdGVjdGVkIFZlY3RvcjxUPiB7CisgICAgdXNpbmcgQmFz
ZSA9IFZlY3RvcjxUPjsKK3B1YmxpYzoKKyAgICBBUElWZWN0b3IoQVBJQ29udGV4dCYgY29udGV4
dCkKKyAgICAgICAgOiBCYXNlKCkKKyAgICAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKKyAgICB7
CisgICAgfQorCisgICAgfkFQSVZlY3RvcigpCisgICAgeworICAgICAgICBmb3IgKGF1dG8mIHZh
bHVlIDogKnRoaXMpCisgICAgICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KG1fY29udGV4dCwgdmFs
dWUpOworICAgIH0KKworICAgIHVzaW5nIFZlY3RvcjxUPjo6b3BlcmF0b3JbXTsKKyAgICB1c2lu
ZyBWZWN0b3I8VD46OnNpemU7CisgICAgdXNpbmcgVmVjdG9yPFQ+OjpiZWdpbjsKKyAgICB1c2lu
ZyBWZWN0b3I8VD46OmVuZDsKKyAgICB1c2luZyB0eXBlbmFtZSBWZWN0b3I8VD46Oml0ZXJhdG9y
OworCisgICAgdm9pZCBhcHBlbmQoVCB2YWx1ZSkKKyAgICB7CisgICAgICAgIEpTVmFsdWVQcm90
ZWN0KG1fY29udGV4dCwgdmFsdWUpOworICAgICAgICBCYXNlOjphcHBlbmQoV1RGTW92ZSh2YWx1
ZSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBUElDb250ZXh0JiBtX2NvbnRleHQ7Cit9Owor
CitjbGFzcyBUZXN0QVBJIHsKK3B1YmxpYzoKKyAgICBpbnQgcnVuKCk7Citwcml2YXRlOgorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gU3RyaW5ncz4KKyAgICBib29sIGNoZWNrKGJvb2wgY29u
ZGl0aW9uLCBTdHJpbmdzLi4uIG1lc3NhZ2UpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSlNG
dW5jdG9yLCB0eXBlbmFtZSBBUElGdW5jdG9yPgorICAgIHZvaWQgY2hlY2tKU0FuZEFQSU1hdGNo
KGNvbnN0IEpTRnVuY3RvciYsIGNvbnN0IEFQSUZ1bmN0b3ImLCBjb25zdCBjaGFyKiBkZXNjcmlw
dGlvbik7CisKKyAgICAvLyBIZWxwZXIgbWV0aG9kcy4KKyAgICB1c2luZyBTY3JpcHRSZXN1bHQg
PSBFeHBlY3RlZDxKU1ZhbHVlUmVmLCBKU1ZhbHVlUmVmPjsKKyAgICBTY3JpcHRSZXN1bHQgZXZh
bHVhdGVTY3JpcHQoY29uc3QgY2hhciogc2NyaXB0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0ID0g
bnVsbHB0cik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KKyAgICBT
Y3JpcHRSZXN1bHQgY2FsbEZ1bmN0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uU291cmNlLCBBcmd1
bWVudFR5cGVzLi4uIGFyZ3VtZW50cyk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1l
bnRUeXBlcz4KKyAgICBib29sIGZ1bmN0aW9uUmV0dXJuc1RydWUoY29uc3QgY2hhciogZnVuY3Rp
b25Tb3VyY2UsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKTsKKworICAgIC8vIFdheXMgdG8g
bWFrZSBzZXRzIG9mIGludGVyZXN0aW5nIHRoaW5ncy4KKyAgICBBUElWZWN0b3I8SlNPYmplY3RS
ZWY+IGludGVyZXN0aW5nT2JqZWN0cygpOworICAgIEFQSVZlY3RvcjxKU1ZhbHVlUmVmPiBpbnRl
cmVzdGluZ0tleXMoKTsKKworICAgIGludCBmYWlsZWQgeyAwIH07CisgICAgQVBJQ29udGV4dCBj
b250ZXh0OworfTsKKworaW50IHRlc3RDQVBJVmlhQ3BwKCkKK3sKKyAgICBUZXN0QVBJIHRlc3Rl
cjsKKyAgICByZXR1cm4gdGVzdGVyLnJ1bigpOworfQorCitUZXN0QVBJOjpTY3JpcHRSZXN1bHQg
VGVzdEFQSTo6ZXZhbHVhdGVTY3JpcHQoY29uc3QgY2hhciogc2NyaXB0LCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0KQoreworICAgIEFQSVN0cmluZyBzY3JpcHRBUElTdHJpbmcoc2NyaXB0KTsKKyAg
ICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IG51bGxwdHI7CisKKyAgICBKU1ZhbHVlUmVmIHJlc3Vs
dCA9IEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgc2NyaXB0QVBJU3RyaW5nLCB0aGlzT2JqZWN0
LCBudWxscHRyLCAwLCAmZXhjZXB0aW9uKTsKKyAgICBpZiAoZXhjZXB0aW9uKQorICAgICAgICBy
ZXR1cm4gVW5leHBlY3RlZDxKU1ZhbHVlUmVmPihleGNlcHRpb24pOworICAgIHJldHVybiBTY3Jp
cHRSZXN1bHQocmVzdWx0KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBl
cz4KK1Rlc3RBUEk6OlNjcmlwdFJlc3VsdCBUZXN0QVBJOjpjYWxsRnVuY3Rpb24oY29uc3QgY2hh
ciogZnVuY3Rpb25Tb3VyY2UsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKQoreworICAgIEpT
VmFsdWVSZWYgZnVuY3Rpb247CisgICAgeworICAgICAgICBTY3JpcHRSZXN1bHQgZnVuY3Rpb25S
ZXN1bHQgPSBldmFsdWF0ZVNjcmlwdChmdW5jdGlvblNvdXJjZSk7CisgICAgICAgIGlmICghZnVu
Y3Rpb25SZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25SZXN1bHQ7CisgICAgICAg
IGZ1bmN0aW9uID0gZnVuY3Rpb25SZXN1bHQudmFsdWUoKTsKKyAgICB9CisKKyAgICBKU1ZhbHVl
UmVmIGV4Y2VwdGlvbiA9IG51bGxwdHI7CisgICAgaWYgKEpTT2JqZWN0UmVmIGZ1bmN0aW9uT2Jq
ZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGZ1bmN0aW9uLCAmZXhjZXB0aW9uKSkgewor
ICAgICAgICBKU1ZhbHVlUmVmIGFyZ3Nbc2l6ZW9mLi4uKGFyZ3VtZW50cyldIHsgYXJndW1lbnRz
Li4uIH07CisgICAgICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNPYmplY3RDYWxsQXNGdW5jdGlv
bihjb250ZXh0LCBmdW5jdGlvbk9iamVjdCwgZnVuY3Rpb25PYmplY3QsIHNpemVvZi4uLihhcmd1
bWVudHMpLCBhcmdzLCAmZXhjZXB0aW9uKTsKKyAgICAgICAgaWYgKCFleGNlcHRpb24pCisgICAg
ICAgICAgICByZXR1cm4gU2NyaXB0UmVzdWx0KHJlc3VsdCk7CisgICAgfQorCisgICAgUkVMRUFT
RV9BU1NFUlQoZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gVW5leHBlY3RlZDxKU1ZhbHVlUmVmPihl
eGNlcHRpb24pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVzPgorYm9v
bCBUZXN0QVBJOjpmdW5jdGlvblJldHVybnNUcnVlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uU291cmNl
LCBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBKU1ZhbHVlUmVmIHRydWVWYWx1
ZSA9IEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCB0cnVlKTsKKyAgICBTY3JpcHRSZXN1bHQg
cmVzdWx0ID0gY2FsbEZ1bmN0aW9uKGZ1bmN0aW9uU291cmNlLCBhcmd1bWVudHMuLi4pOworICAg
IGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIEpTVmFsdWVJ
c1N0cmljdEVxdWFsKGNvbnRleHQsIHRydWVWYWx1ZSwgcmVzdWx0LnZhbHVlKCkpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBTdHJpbmdzPgorYm9vbCBUZXN0QVBJOjpjaGVjayhib29sIGNv
bmRpdGlvbiwgU3RyaW5ncy4uLiBtZXNzYWdlcykKK3sKKyAgICBpZiAoIWNvbmRpdGlvbikgewor
ICAgICAgICBkYXRhTG9nTG4obWVzc2FnZXMuLi4sICI6IEZBSUxFRCIpOworICAgICAgICBmYWls
ZWQrKzsKKyAgICB9IGVsc2UKKyAgICAgICAgZGF0YUxvZ0xuKG1lc3NhZ2VzLi4uLCAiOiBQQVNT
RUQiKTsKKworICAgIHJldHVybiBjb25kaXRpb247Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEpT
RnVuY3RvciwgdHlwZW5hbWUgQVBJRnVuY3Rvcj4KK3ZvaWQgVGVzdEFQSTo6Y2hlY2tKU0FuZEFQ
SU1hdGNoKGNvbnN0IEpTRnVuY3RvciYganNGdW5jdG9yLCBjb25zdCBBUElGdW5jdG9yJiBhcGlG
dW5jdG9yLCBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbikKK3sKKyAgICBKU1ZhbHVlUmVmIGV4Y2Vw
dGlvbiA9IG51bGxwdHI7CisgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBhcGlGdW5jdG9yKCZleGNl
cHRpb24pOworICAgIFNjcmlwdFJlc3VsdCBqc1Jlc3VsdCA9IGpzRnVuY3RvcigpOworICAgIGlm
ICghanNSZXN1bHQpIHsKKyAgICAgICAgY2hlY2soZXhjZXB0aW9uLCAiSlMgYW5kIEFQSSBjYWxs
cyBzaG91bGQgYm90aCB0aHJvdyBhbiBleGNlcHRpb24gd2hpbGUgIiwgZGVzY3JpcHRpb24pOwor
ICAgICAgICBjaGVjayhmdW5jdGlvblJldHVybnNUcnVlKCIoZnVuY3Rpb24oYSwgYikgeyByZXR1
cm4gYS5jb25zdHJ1Y3RvciA9PT0gYi5jb25zdHJ1Y3RvcjsgfSkiLCBleGNlcHRpb24sIGpzUmVz
dWx0LmVycm9yKCkpLCAiSlMgYW5kIEFQSSBjYWxscyBzaG91bGQgYm90aCB0aHJvdyB0aGUgc2Ft
ZSBleGNlcHRpb24gd2hpbGUgIiwgZGVzY3JpcHRpb24pOworICAgIH0gZWxzZSB7CisgICAgICAg
IGNoZWNrKCFleGNlcHRpb24sICJKUyBhbmQgQVBJIGNhbGxzIHNob3VsZCBib3RoIG5vdCB0aHJv
dyBhbiBleGNlcHRpb24gd2hpbGUgIiwgZGVzY3JpcHRpb24pOworICAgICAgICBjaGVjayhKU1Zh
bHVlSXNTdHJpY3RFcXVhbChjb250ZXh0LCByZXN1bHQsIGpzUmVzdWx0LnZhbHVlKCkpLCAiSlMg
cmVzdWx0IGFuZCBBUEkgY2FsbHMgc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZSB3aGlsZSAi
LCBkZXNjcmlwdGlvbik7CisgICAgfQorfQorCitBUElWZWN0b3I8SlNPYmplY3RSZWY+IFRlc3RB
UEk6OmludGVyZXN0aW5nT2JqZWN0cygpCit7CisgICAgQVBJVmVjdG9yPEpTT2JqZWN0UmVmPiBy
ZXN1bHQoY29udGV4dCk7CisgICAgSlNPYmplY3RSZWYgYXJyYXkgPSBKU1ZhbHVlVG9PYmplY3Qo
Y29udGV4dCwgZXZhbHVhdGVTY3JpcHQoCisgICAgICAgICJbe30sIFtdLCB7IFtTeW1ib2wuaXRl
cmF0b3JdOiAxIH0sIG5ldyBEYXRlKCksIG5ldyBTdHJpbmcoJ3N0cicpLCBuZXcgTWFwKCksIG5l
dyBTZXQoKSwgbmV3IFdlYWtNYXAoKSwgbmV3IFdlYWtTZXQoKSwgbmV3IEVycm9yKCksIG5ldyBO
dW1iZXIoNDIpLCBuZXcgQm9vbGVhbigpLCB7IGdldCBsZW5ndGgoKSB7IHRocm93IG5ldyBFcnJv
cigpOyB9IH1dOyIpLnZhbHVlKCksIG51bGxwdHIpOworCisgICAgQVBJU3RyaW5nIGxlbmd0aFN0
cmluZygibGVuZ3RoIik7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gSlNWYWx1ZVRvTnVtYmVyKGNv
bnRleHQsIEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgYXJyYXksIGxlbmd0aFN0cmluZywg
bnVsbHB0ciksIG51bGxwdHIpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7
IGkrKykgeworICAgICAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29u
dGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgYXJyYXksIGksIG51bGxw
dHIpLCBudWxscHRyKTsKKyAgICAgICAgQVNTRVJUKG9iamVjdCk7CisgICAgICAgIHJlc3VsdC5h
cHBlbmQob2JqZWN0KTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitBUElWZWN0
b3I8SlNWYWx1ZVJlZj4gVGVzdEFQSTo6aW50ZXJlc3RpbmdLZXlzKCkKK3sKKyAgICBBUElWZWN0
b3I8SlNWYWx1ZVJlZj4gcmVzdWx0KGNvbnRleHQpOworICAgIEpTT2JqZWN0UmVmIGFycmF5ID0g
SlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGV2YWx1YXRlU2NyaXB0KCJbe30sIFtdLCAxLCBTeW1i
b2wuaXRlcmF0b3IsICdsZW5ndGgnXSIpLnZhbHVlKCksIG51bGxwdHIpOworCisgICAgQVBJU3Ry
aW5nIGxlbmd0aFN0cmluZygibGVuZ3RoIik7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gSlNWYWx1
ZVRvTnVtYmVyKGNvbnRleHQsIEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgYXJyYXksIGxl
bmd0aFN0cmluZywgbnVsbHB0ciksIG51bGxwdHIpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBKU1ZhbHVlUmVmIHZhbHVlID0gSlNPYmplY3RH
ZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgYXJyYXksIGksIG51bGxwdHIpOworICAgICAgICBB
U1NFUlQodmFsdWUpOworICAgICAgICByZXN1bHQuYXBwZW5kKHZhbHVlKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitpbnQgVGVzdEFQSTo6cnVuKCkKK3sKKyAgICBkYXRhTG9n
TG4oIlN0YXJ0aW5nIEMtQVBJIHRlc3RzIGluIEMrKyIpOworICAgIGNvbnN0IGNoYXIqIGlzU3lt
Ym9sRnVuY3Rpb24gPSAiKGZ1bmN0aW9uIGlzU3ltYm9sKHN5bWJvbCkgeyByZXR1cm4gdHlwZW9m
KHN5bWJvbCkgPT09ICdzeW1ib2wnOyB9KSI7CisgICAgY29uc3QgY2hhciogZ2V0RnVuY3Rpb24g
PSAiKGZ1bmN0aW9uIGdldChvYmplY3QsIGtleSkgeyByZXR1cm4gb2JqZWN0W2tleV07IH0pIjsK
KyAgICBjb25zdCBjaGFyKiBzZXRGdW5jdGlvbiA9ICIoZnVuY3Rpb24gc2V0KG9iamVjdCwga2V5
LCB2YWx1ZSkgeyBvYmplY3Rba2V5XSA9IHZhbHVlOyB9KSI7CisgICAgY29uc3QgY2hhciogaGFz
RnVuY3Rpb24gPSAiKGZ1bmN0aW9uIGhhcyhvYmplY3QsIGtleSkgeyByZXR1cm4ga2V5IGluIG9i
amVjdDsgfSkiOworICAgIGNvbnN0IGNoYXIqIGRlbGV0ZUZ1bmN0aW9uID0gIihmdW5jdGlvbiBk
ZWwob2JqZWN0LCBrZXkpIHsgcmV0dXJuIGRlbGV0ZSBvYmplY3Rba2V5XTsgfSkiOworCisgICAg
eworICAgICAgICAvLyBDYW4ndCBjYWxsIFN5bWJvbCBhcyBhIGNvbnN0cnVjdG9yIHNpbmNlIGl0
J3Mgbm90IHN1YmNsYXNzYWJsZS4KKyAgICAgICAgYXV0byByZXN1bHQgPSBldmFsdWF0ZVNjcmlw
dCgiU3ltYm9sKCdkb3BlJyk7Iik7CisgICAgICAgIGNoZWNrKEpTVmFsdWVHZXRUeXBlKGNvbnRl
eHQsIHJlc3VsdC52YWx1ZSgpKSA9PSBrSlNUeXBlU3ltYm9sLCAiZG9wZSBnZXQgdHlwZSBpcyBh
IHN5bWJvbCIpOworICAgICAgICBjaGVjayhKU1ZhbHVlSXNTeW1ib2woY29udGV4dCwgcmVzdWx0
LnZhbHVlKCkpLCAiZG9wZSBpcyBhIHN5bWJvbCIpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
QVBJU3RyaW5nIGRlc2NyaXB0aW9uKCJkb3BlIik7CisgICAgICAgIEpTVmFsdWVSZWYgc3ltYm9s
ID0gSlNWYWx1ZU1ha2VTeW1ib2woY29udGV4dCwgZGVzY3JpcHRpb24pOworICAgICAgICBjaGVj
ayhmdW5jdGlvblJldHVybnNUcnVlKGlzU3ltYm9sRnVuY3Rpb24sIHN5bWJvbCksICJKU1ZhbHVl
TWFrZVN5bWJvbCBtYWtlcyBhIHN5bWJvbCB2YWx1ZSIpOworICAgIH0KKworICAgIHsKKyAgICAg
ICAgYXV0byBvYmplY3RzID0gaW50ZXJlc3RpbmdPYmplY3RzKCk7CisgICAgICAgIGF1dG8ga2V5
cyA9IGludGVyZXN0aW5nS2V5cygpOworCisgICAgICAgIGZvciAoYXV0byYgb2JqZWN0IDogb2Jq
ZWN0cykgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJcbm5leHQgb2JqZWN0OiAiLCBiaXR3aXNl
X2Nhc3Q8SlNDOjpKU1ZhbHVlPihvYmplY3QpKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYga2V5
IDoga2V5cykgeworICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiVXNpbmcga2V5OiAiLCBiaXR3
aXNlX2Nhc3Q8SlNDOjpKU1ZhbHVlPihrZXkpKTsKKyAgICAgICAgICAgICAgICBjaGVja0pTQW5k
QVBJTWF0Y2goCisgICAgICAgICAgICAgICAgICAgIFsmXSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gY2FsbEZ1bmN0aW9uKGdldEZ1bmN0aW9uLCBvYmplY3QsIGtleSk7CisgICAg
ICAgICAgICAgICAgICAgIH0sIFsmXSAoSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gSlNPYmplY3RHZXRQcm9wZXJ0eUtleShjb250ZXh0LCBv
YmplY3QsIGtleSwgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgfSwgImNoZWNraW5n
IGdldCBwcm9wZXJ0eSBrZXlzIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICB7CisgICAgICAgIGF1dG8ganNPYmplY3RzID0gaW50ZXJlc3RpbmdPYmplY3RzKCk7Cisg
ICAgICAgIGF1dG8gYXBpT2JqZWN0cyA9IGludGVyZXN0aW5nT2JqZWN0cygpOworICAgICAgICBh
dXRvIGtleXMgPSBpbnRlcmVzdGluZ0tleXMoKTsKKworICAgICAgICBKU1ZhbHVlUmVmIHRoZUFu
c3dlciA9IEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIDQyKTsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBqc09iamVjdHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIGZvciAo
YXV0byYga2V5IDoga2V5cykgeworICAgICAgICAgICAgICAgIEpTT2JqZWN0UmVmIGpzT2JqZWN0
ID0ganNPYmplY3RzW2ldOworICAgICAgICAgICAgICAgIEpTT2JqZWN0UmVmIGFwaU9iamVjdCA9
IGFwaU9iamVjdHNbaV07CisgICAgICAgICAgICAgICAgY2hlY2tKU0FuZEFQSU1hdGNoKAorICAg
ICAgICAgICAgICAgICAgICBbJl0geworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNh
bGxGdW5jdGlvbihzZXRGdW5jdGlvbiwganNPYmplY3QsIGtleSwgdGhlQW5zd2VyKTsKKyAgICAg
ICAgICAgICAgICAgICAgfSAsIFsmXSAoSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBKU09iamVjdFNldFByb3BlcnR5S2V5KGNvbnRleHQsIGFwaU9iamVj
dCwga2V5LCB0aGVBbnN3ZXIsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSwgZXhjZXB0aW9uKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250
ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgInNldHRpbmcgcHJvcGVydHkga2V5cyB0byB0
aGUgYW5zd2VyIik7CisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZ2V0IGlzIHRoZSBzYW1lIG9u
IEFQSSBvYmplY3QuCisgICAgICAgICAgICAgICAgY2hlY2tKU0FuZEFQSU1hdGNoKAorICAgICAg
ICAgICAgICAgICAgICBbJl0geworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxG
dW5jdGlvbihnZXRGdW5jdGlvbiwgYXBpT2JqZWN0LCBrZXkpOworICAgICAgICAgICAgICAgICAg
ICB9LCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTT2JqZWN0R2V0UHJvcGVydHlLZXkoY29udGV4dCwgYXBpT2JqZWN0LCBrZXks
IGV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAgICAgIH0sICJnZXR0aW5nIHByb3BlcnR5IGtl
eXMgZnJvbSBBUEkgb2JqZWN0cyIpOworICAgICAgICAgICAgICAgIC8vIENoZWNrIGdldCBpcyB0
aGUgc2FtZSBvbiByZXNwZWN0aXZlIG9iamVjdHMuCisgICAgICAgICAgICAgICAgY2hlY2tKU0Fu
ZEFQSU1hdGNoKAorICAgICAgICAgICAgICAgICAgICBbJl0geworICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGNhbGxGdW5jdGlvbihnZXRGdW5jdGlvbiwganNPYmplY3QsIGtleSk7Cisg
ICAgICAgICAgICAgICAgICAgIH0sIFsmXSAoSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPYmplY3RHZXRQcm9wZXJ0eUtleShjb250ZXh0
LCBhcGlPYmplY3QsIGtleSwgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgfSwgImdl
dHRpbmcgcHJvcGVydHkga2V5cyBmcm9tIHJlc3BlY3RpdmUgb2JqZWN0cyIpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgeworICAgICAgICBhdXRvIG9iamVjdHMgPSBp
bnRlcmVzdGluZ09iamVjdHMoKTsKKyAgICAgICAgYXV0byBrZXlzID0gaW50ZXJlc3RpbmdLZXlz
KCk7CisKKyAgICAgICAgSlNWYWx1ZVJlZiB0aGVBbnN3ZXIgPSBKU1ZhbHVlTWFrZU51bWJlcihj
b250ZXh0LCA0Mik7CisgICAgICAgIGZvciAoYXV0byYgb2JqZWN0IDogb2JqZWN0cykgeworICAg
ICAgICAgICAgZGF0YUxvZ0xuKCJcbk5leHQgb2JqZWN0OiAiLCBiaXR3aXNlX2Nhc3Q8SlNDOjpK
U1ZhbHVlPihvYmplY3QpKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYga2V5IDoga2V5cykgewor
ICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiVXNpbmcga2V5OiAiLCBiaXR3aXNlX2Nhc3Q8SlND
OjpKU1ZhbHVlPihrZXkpKTsKKyAgICAgICAgICAgICAgICBjaGVja0pTQW5kQVBJTWF0Y2goCisg
ICAgICAgICAgICAgICAgICAgIFsmXSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Y2FsbEZ1bmN0aW9uKGhhc0Z1bmN0aW9uLCBvYmplY3QsIGtleSk7CisgICAgICAgICAgICAgICAg
ICAgIH0sIFsmXSAoSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIEpTT2JqZWN0SGFzUHJvcGVy
dHlLZXkoY29udGV4dCwgb2JqZWN0LCBrZXksIGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAg
ICAgICB9LCAiY2hlY2tpbmcgaGFzIHByb3BlcnR5IGtleXMgdW5zZXQiKTsKKworICAgICAgICAg
ICAgICAgIGNoZWNrKCEhY2FsbEZ1bmN0aW9uKHNldEZ1bmN0aW9uLCBvYmplY3QsIGtleSwgdGhl
QW5zd2VyKSwgInNldCBwcm9wZXJ0eSB0byB0aGUgYW5zd2VyIik7CisKKyAgICAgICAgICAgICAg
ICBjaGVja0pTQW5kQVBJTWF0Y2goCisgICAgICAgICAgICAgICAgICAgIFsmXSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbEZ1bmN0aW9uKGhhc0Z1bmN0aW9uLCBvYmplY3Qs
IGtleSk7CisgICAgICAgICAgICAgICAgICAgIH0sIFsmXSAoSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNv
bnRleHQsIEpTT2JqZWN0SGFzUHJvcGVydHlLZXkoY29udGV4dCwgb2JqZWN0LCBrZXksIGV4Y2Vw
dGlvbikpOworICAgICAgICAgICAgICAgICAgICB9LCAiY2hlY2tpbmcgaGFzIHByb3BlcnR5IGtl
eXMgc2V0Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB7CisgICAg
ICAgIGF1dG8gb2JqZWN0cyA9IGludGVyZXN0aW5nT2JqZWN0cygpOworICAgICAgICBhdXRvIGtl
eXMgPSBpbnRlcmVzdGluZ0tleXMoKTsKKworICAgICAgICBKU1ZhbHVlUmVmIHRoZUFuc3dlciA9
IEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIDQyKTsKKyAgICAgICAgZm9yIChhdXRvJiBvYmpl
Y3QgOiBvYmplY3RzKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIlxuTmV4dCBvYmplY3Q6ICIs
IGJpdHdpc2VfY2FzdDxKU0M6OkpTVmFsdWU+KG9iamVjdCkpOworICAgICAgICAgICAgZm9yIChh
dXRvJiBrZXkgOiBrZXlzKSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJVc2luZyBrZXk6
ICIsIGJpdHdpc2VfY2FzdDxKU0M6OkpTVmFsdWU+KGtleSkpOworICAgICAgICAgICAgICAgIGNo
ZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oZGVsZXRlRnVuY3Rpb24sIG9iamVjdCwg
a2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24p
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29u
dGV4dCwgSlNPYmplY3REZWxldGVQcm9wZXJ0eUtleShjb250ZXh0LCBvYmplY3QsIGtleSwgZXhj
ZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIH0sICJjaGVja2luZyBoYXMgcHJvcGVydHkg
a2V5cyB1bnNldCIpOworCisgICAgICAgICAgICAgICAgY2hlY2soISFjYWxsRnVuY3Rpb24oc2V0
RnVuY3Rpb24sIG9iamVjdCwga2V5LCB0aGVBbnN3ZXIpLCAic2V0IHByb3BlcnR5IHRvIHRoZSBh
bnN3ZXIiKTsKKworICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAg
ICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVu
Y3Rpb24oZGVsZXRlRnVuY3Rpb24sIG9iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAg
fSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgSlNPYmplY3REZWxldGVQcm9wZXJ0
eUtleShjb250ZXh0LCBvYmplY3QsIGtleSwgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAg
ICAgIH0sICJjaGVja2luZyBoYXMgcHJvcGVydHkga2V5cyBzZXQiKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIGRhdGFMb2dMbigiQy1BUEkgdGVzdHMgaW4gQysrIGhh
ZCAiLCBmYWlsZWQsICIgZmFpbHVyZXMiKTsKKyAgICByZXR1cm4gZmFpbGVkOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCmluZGV4IDkxMDBhZDRlODM3ZTk0
MTI0NTg3MTQwY2FiODQ0ODA5MDM4YTU4OWQuLjlmYjUwMTQyMzlmM2VmYTgwMTE4YjE4YjkzMmJm
ZjZiMWQyOWFlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
dGVzdGFwaS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGku
bW0KQEAgLTIzLDYgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJKU0V4cG9ydE1hY3Jvcy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuaD4KIApAQCAtNDIsNiArNDMsMTEgQEAKICNpbXBvcnQgPHZlY3Rv
cj4KICNpbXBvcnQgPHd0Zi9NZW1vcnlGb290cHJpbnQuaD4KICNpbXBvcnQgPHd0Zi9PcHRpb25h
bC5oPgorI2ltcG9ydCA8d3RmL0RhdGFMb2cuaD4KKworI2lmIGRlZmluZWQoX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQpCitzdGF0aWMgaW50IGkgPSAxOworI2VuZGlmCiAKIGV4dGVy
biAiQyIgdm9pZCBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoSlNDb250
ZXh0UmVmKTsKIGV4dGVybiAiQyIgdm9pZCBKU1N5bmNocm9ub3VzRWRlbkNvbGxlY3RGb3JEZWJ1
Z2dpbmcoSlNDb250ZXh0UmVmKTsKQEAgLTYyOSw2ICs2MzUsMTA5IEBAIHN0YXRpYyB2b2lkIHRl
c3RPYmplY3RpdmVDQVBJTWFpbigpCiAgICAgICAgIGNoZWNrUmVzdWx0KEAibmV3IERhdGUiLCBy
ZXN1bHQuaXNEYXRlKTsKICAgICB9CiAKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAg
SlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICBK
U1ZhbHVlICpzeW1ib2wgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIlN5bWJvbCgnZG9wZScp
OyJdOworICAgICAgICBKU1ZhbHVlICpub3RTeW1ib2wgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlw
dDpAIidkb3BlJyJdOworICAgICAgICBjaGVja1Jlc3VsdChAIlNob3VsZCBiZSBhIHN5bWJvbCB2
YWx1ZSIsIHN5bWJvbC5pc1N5bWJvbCk7CisgICAgICAgIGNoZWNrUmVzdWx0KEAiU2hvdWxkIG5v
dCBiZSBhIHN5bWJvbCB2YWx1ZSIsICFub3RTeW1ib2wuaXNTeW1ib2wpOworICAgIH0KKworICAg
IEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29u
dGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUgKnN5bWJvbCA9IFtKU1ZhbHVlIHZh
bHVlV2l0aE5ld1N5bWJvbEZyb21EZXNjcmlwdGlvbjpAImRvcGUiIGluQ29udGV4dDpjb250ZXh0
XTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJTaG91bGQgYmUgYSBjcmVhdGVkIGZyb20gT2JqLUMi
LCBzeW1ib2wuaXNTeW1ib2wpOworICAgIH0KKworI2lmICEoZGVmaW5lZChfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwg
MTAxMzAwKSB8fCAoZGVmaW5lZChfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMTAwMDApCisKKyAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxs
b2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICphcnJheUl0ZXJhdG9yID0gW2NvbnRleHQgZXZh
bHVhdGVTY3JpcHQ6QCJBcnJheS5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSJdOworICAgICAg
ICBKU1ZhbHVlICppdGVyYXRvclN5bWJvbCA9IGNvbnRleHRbQCJTeW1ib2wiXVtAIml0ZXJhdG9y
Il07CisgICAgICAgIEpTVmFsdWUgKmFycmF5ID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3QXJyYXlJ
bkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIGNoZWNrUmVzdWx0KEAiTG9va2luZyB1cCBieSBz
dWJzY3JpcHQgd2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsiLCBbYXJyYXlbaXRlcmF0b3JTeW1ib2xd
IGlzRXF1YWw6YXJyYXlJdGVyYXRvcl0pOworICAgICAgICBjaGVja1Jlc3VsdChAIkxvb2tpbmcg
dXAgYnkgbWV0aG9kIHdpdGggc3ltYm9sIHNob3VsZCB3b3JrIiwgW1thcnJheSB2YWx1ZUZvclBy
b3BlcnR5Oml0ZXJhdG9yU3ltYm9sXSBpc0VxdWFsOmFycmF5SXRlcmF0b3JdKTsKKyAgICB9CisK
KyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tK
U0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICppdGVyYXRvclN5bWJvbCA9
IGNvbnRleHRbQCJTeW1ib2wiXVtAIml0ZXJhdG9yIl07CisgICAgICAgIEpTVmFsdWUgKm9iamVj
dCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld09iamVjdEluQ29udGV4dDpjb250ZXh0XTsKKyAgICAg
ICAgSlNWYWx1ZSAqdGhlQW5zd2VyID0gW0pTVmFsdWUgdmFsdWVXaXRoVUludDMyOjQyIGluQ29u
dGV4dDpjb250ZXh0XTsKKyAgICAgICAgb2JqZWN0W2l0ZXJhdG9yU3ltYm9sXSA9IHRoZUFuc3dl
cjsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJTZXR0aW5nIGJ5IHN1YnNjcmlwdCB3aXRoIHN5bWJv
bCBzaG91bGQgd29yayIsIFtvYmplY3RbaXRlcmF0b3JTeW1ib2xdIGlzRXF1YWw6dGhlQW5zd2Vy
XSk7CisgICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAq
Y29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAqaXRl
cmF0b3JTeW1ib2wgPSBjb250ZXh0W0AiU3ltYm9sIl1bQCJpdGVyYXRvciJdOworICAgICAgICBK
U1ZhbHVlICpvYmplY3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdPYmplY3RJbkNvbnRleHQ6Y29u
dGV4dF07CisgICAgICAgIEpTVmFsdWUgKnRoZUFuc3dlciA9IFtKU1ZhbHVlIHZhbHVlV2l0aFVJ
bnQzMjo0MiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIFtvYmplY3Qgc2V0VmFsdWU6dGhl
QW5zd2VyIGZvclByb3BlcnR5Oml0ZXJhdG9yU3ltYm9sXTsKKyAgICAgICAgY2hlY2tSZXN1bHQo
QCJTZXR0aW5nIGJ5IG1ldGhvZCB3aXRoIHN5bWJvbCBzaG91bGQgd29yayIsIFtvYmplY3RbaXRl
cmF0b3JTeW1ib2xdIGlzRXF1YWw6dGhlQW5zd2VyXSk7CisgICAgfQorCisgICAgQGF1dG9yZWxl
YXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9j
XSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAqaXRlcmF0b3JTeW1ib2wgPSBjb250ZXh0W0AiU3lt
Ym9sIl1bQCJpdGVyYXRvciJdOworICAgICAgICBKU1ZhbHVlICpvYmplY3QgPSBbSlNWYWx1ZSB2
YWx1ZVdpdGhOZXdPYmplY3RJbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIEpTVmFsdWUgKnRo
ZUFuc3dlciA9IFtKU1ZhbHVlIHZhbHVlV2l0aFVJbnQzMjo0MiBpbkNvbnRleHQ6Y29udGV4dF07
CisgICAgICAgIG9iamVjdFtpdGVyYXRvclN5bWJvbF0gPSB0aGVBbnN3ZXI7CisgICAgICAgIGNo
ZWNrUmVzdWx0KEAiaGFzIHByb3BlcnR5IHdpdGggc3ltYm9sIHNob3VsZCB3b3JrIiwgW29iamVj
dCBoYXNQcm9wZXJ0eTppdGVyYXRvclN5bWJvbF0pOworICAgIH0KKworICAgIEBhdXRvcmVsZWFz
ZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10g
aW5pdF07CisgICAgICAgIEpTVmFsdWUgKml0ZXJhdG9yU3ltYm9sID0gY29udGV4dFtAIlN5bWJv
bCJdW0AiaXRlcmF0b3IiXTsKKyAgICAgICAgSlNWYWx1ZSAqb2JqZWN0ID0gW0pTVmFsdWUgdmFs
dWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBKU1ZhbHVlICp0aGVB
bnN3ZXIgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhVSW50MzI6NDIgaW5Db250ZXh0OmNvbnRleHRdOwor
ICAgICAgICBjaGVja1Jlc3VsdChAImRlbGV0ZSBwcm9wZXJ0eSB3aXRoIHN5bWJvbCBzaG91bGQg
d29yayB3aXRob3V0IHByb3BlcnR5IiwgW29iamVjdCBkZWxldGVQcm9wZXJ0eTppdGVyYXRvclN5
bWJvbF0pOworICAgICAgICBvYmplY3RbaXRlcmF0b3JTeW1ib2xdID0gdGhlQW5zd2VyOworICAg
ICAgICBjaGVja1Jlc3VsdChAImRlbGV0ZSBwcm9wZXJ0eSB3aXRoIHN5bWJvbCBzaG91bGQgd29y
ayB3aXRoIHByb3BlcnR5IiwgW29iamVjdCBkZWxldGVQcm9wZXJ0eTppdGVyYXRvclN5bWJvbF0p
OworICAgICAgICBjaGVja1Jlc3VsdChAImRlbGV0ZSBzaG91bGQgYmUgZmFsc2Ugd2l0aCBub24t
Y29uZmlndXJhYmxlIHByb3BlcnR5IiwgIVtjb250ZXh0W0AiQXJyYXkiXSBkZWxldGVQcm9wZXJ0
eTpAInByb3RvdHlwZSJdKTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAg
ICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAg
ICBKU1ZhbHVlICpvYmplY3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdPYmplY3RJbkNvbnRleHQ6
Y29udGV4dF07CisgICAgICAgIE5TT2JqZWN0ICpvYmpDT2JqZWN0ID0gW1tOU09iamVjdCBhbGxv
Y10gaW5pdF07CisgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IG9iamVjdFtvYmpDT2JqZWN0XTsK
KyAgICAgICAgY2hlY2tSZXN1bHQoQCJnZXR0aW5nIGEgbm9uLWNvbnZlcnRhYmxlIG9iamVjdCBz
aG91bGQgcmV0dXJuIHVuZGVmaW5lZCIsIFtyZXN1bHQgaXNVbmRlZmluZWRdKTsKKyAgICAgICAg
b2JqZWN0W29iakNPYmplY3RdID0gQCgxKTsKKyAgICAgICAgcmVzdWx0ID0gb2JqZWN0W29iakNP
YmplY3RdOworICAgICAgICBjaGVja1Jlc3VsdChAImdldHRpbmcgYSBub24tY29udmVydGFibGUg
b2JqZWN0IHNob3VsZCByZXR1cm4gdGhlIHN0b3JlZCB2YWx1ZSIsIFtyZXN1bHQgdG9VSW50MzJd
ID09IDEpOworICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRl
eHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUg
Km9iamVjdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld09iamVjdEluQ29udGV4dDpjb250ZXh0XTsK
KyAgICAgICAgSlNWYWx1ZSAqaXRlcmF0b3JTeW1ib2wgPSBjb250ZXh0W0AiU3ltYm9sIl1bQCJp
dGVyYXRvciJdOworICAgICAgICBvYmplY3RbQCJ2YWx1ZSJdID0gQCgxKTsKKyAgICAgICAgY29u
dGV4dFtAIm9iamVjdCJdID0gb2JqZWN0OworCisgICAgICAgIG9iamVjdFtpdGVyYXRvclN5bWJv
bF0gPSBeeworICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW0pTVmFsdWUgdmFsdWVXaXRo
TmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICAgICAgcmVzdWx0W0Aib2JqZWN0
Il0gPSBbSlNDb250ZXh0IGN1cnJlbnRUaGlzXTsKKyAgICAgICAgICAgIHJlc3VsdFtAIm5leHQi
XSA9IF57CisgICAgICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW0pTVmFsdWUgdmFsdWVX
aXRoTmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICAgICAgICAgIEpTVmFsdWUg
KnZhbHVlID0gW0pTQ29udGV4dCBjdXJyZW50VGhpc11bQCJvYmplY3QiXVtAInZhbHVlIl07Cisg
ICAgICAgICAgICAgICAgW1tKU0NvbnRleHQgY3VycmVudFRoaXNdW0Aib2JqZWN0Il0gZGVsZXRl
UHJvcGVydHk6QCJ2YWx1ZSJdOworICAgICAgICAgICAgICAgIHJlc3VsdFtAInZhbHVlIl0gPSB2
YWx1ZTsKKyAgICAgICAgICAgICAgICByZXN1bHRbQCJkb25lIl0gPSBbSlNWYWx1ZSB2YWx1ZVdp
dGhCb29sOlt2YWx1ZSBpc1VuZGVmaW5lZF0gaW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICAgICAgfTsKKworCisgICAgICAgIEpTVmFsdWUgKmNvdW50ID0gW2NvbnRl
eHQgZXZhbHVhdGVTY3JpcHQ6QCJsZXQgY291bnQgPSAwOyBmb3IgKGxldCB2IG9mIG9iamVjdCkg
eyBpZiAodiAhPT0gMSkgdGhyb3cgbmV3IEVycm9yKCk7IGNvdW50Kys7IH0gY291bnQ7Il07Cisg
ICAgICAgIGNoZWNrUmVzdWx0KEAiaXRlcmF0b3Igc2hvdWxkIG5vdCB0aHJvdyIsICFbY29udGV4
dCBleGNlcHRpb25dKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJpdGVyYXRpb24gY291bnQgc2hv
dWxkIGJlIDEiLCBbY291bnQgdG9VSW50MzJdID09IDEpOworICAgIH0KKworI2VuZGlmIC8vICEo
ZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAoZGVmaW5lZChfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAx
MTAwMDApCisKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKICAgICAgICAgSlNDb2xsZWN0aW9uKiBt
eVByaXZhdGVQcm9wZXJ0aWVzID0gW1tKU0NvbGxlY3Rpb24gYWxsb2NdIGluaXRdOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMyNWRmNmU5ZWJhMGM4ZTg0ZDIxNmU4MTA1OGM5
ODEwZDViMzEwY2EuLmU2MGY4MDk3OGVlMDhlNGI3Nzc2Njc2ZTk0YjNjNDE0YTdkNmY3MzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDQwLDggKzEwNDAsOSBAQAogCQk1M0U3
NzdFNDFFOTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0U3NzdFMjFFOTJFMjY1MDA3
Q0JFQzQgLyogV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggKi87IH07CiAJCTUzRTlFMEFDMUVBRTgz
REYwMEZFRTI1MSAvKiBXYXNtTWFjaGluZVRocmVhZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRTlFMEFBMUVBRTgzREUwMEZFRTI1MSAvKiBXYXNt
TWFjaGluZVRocmVhZHMuaCAqLzsgfTsKIAkJNTNFOUUwQUYxRUFFQzQ1NzAwRkVFMjUxIC8qIFdh
c21UaWVyVXBDb3VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTNFOUUwQUUxRUFFQzQ1NzAwRkVFMjUxIC8qIFdhc21UaWVyVXBDb3VudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUzRjExRjQxMjA5
MTM4RDcwMEU0MTFBNyAvKiBKU0ltbXV0YWJsZUJ1dHRlcmZseS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGMTFGNDAyMDkxMzhENzAwRTQxMUE3IC8q
IEpTSW1tdXRhYmxlQnV0dGVyZmx5LmggKi87IH07Ci0JCTUzRjQwRTg1MUQ1OEY5NzcwMDk5QTFC
NiAvKiBXYXNtU2VjdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzRjQwRTg0MUQ1OEY5NzcwMDk5QTFCNiAvKiBXYXNtU2VjdGlvbnMuaCAqLzsg
fTsKKyAgICAgICAgICAgICAgICA1M0YxMUY0MTIwOTEzOEQ3MDBFNDExQTcgLyogSlNJbW11dGFi
bGVCdXR0ZXJmbHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzRjExRjQwMjA5MTM4RDcwMEU0MTFBNyAvKiBKU0ltbXV0YWJsZUJ1dHRlcmZseS5oICov
OyB9OworICAgICAgICAgICAgICAgIDUzRUFGRTJGMjA4REZBQjQwMDdENTI0QiAvKiB0ZXN0YXBp
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMUQ0
RTE5MUY1OUNERDIwMEVDODM2QyAvKiB0ZXN0YXBpLmNwcCAqLzsgfTsKKyAgICAgICAgICAgICAg
ICA1M0Y0MEU4NTFENThGOTc3MDA5OUExQjYgLyogV2FzbVNlY3Rpb25zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU4NDFENThGOTc3MDA5OUEx
QjYgLyogV2FzbVNlY3Rpb25zLmggKi87IH07CiAJCTUzRjQwRThCMUQ1OTAxQkIwMDk5QTFCNiAv
KiBXYXNtRnVuY3Rpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzRjQwRThBMUQ1OTAxQkIwMDk5QTFCNiAvKiBXYXNtRnVuY3Rpb25QYXJz
ZXIuaCAqLzsgfTsKIAkJNTNGNDBFOEQxRDU5MDFGMjAwOTlBMUI2IC8qIFdhc21QYXJzZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQwRThDMUQ1
OTAxRjIwMDk5QTFCNiAvKiBXYXNtUGFyc2VyLmggKi87IH07CiAJCTUzRjQwRTkzMUQ1QTRBQjMw
MDk5QTFCNiAvKiBXYXNtQjNJUkdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGNDBFOTIxRDVBNEFCMzAwOTlBMUI2IC8qIFdhc21CM0lS
R2VuZXJhdG9yLmggKi87IH07CkBAIC0zMzA1LDYgKzMzMDYsNyBAQAogCQk1MzExQkQ0OTFFQTU4
MUU1MDA1MjUyODEgLyogV2FzbU9NR1BsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2FzbU9NR1BsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxMzc0
QkMxRDVDRTY3NjAwQUY3QTBCIC8qIFdhc21QbGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdhc21QbGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMTM3
NEJFMUQ1Q0U5NTAwMEFGN0EwQiAvKiBXYXNtUGxhbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXYXNtUGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUzMUQ0RTE5MUY1OUNERDIwMEVDODM2QyAvKiB0ZXN0YXBpLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IHRlc3RhcGkuY3BwOyBwYXRoID0gQVBJL3Rlc3RzL3Rlc3RhcGkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MzNCMTVERTFEQzdGNDYzMDA0RDUwMEEgLyogV2FzbU9w
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtT3BzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDFGQzZGMURBQzMzRTUwMEU3RTRENyAvKiBCM1dhc21C
b3VuZHNDaGVja1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNXYXNtQm91bmRzQ2hlY2tW
YWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDFGQzcxMURBQzM0M0Mw
MEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaDsgcGF0aCA9IGIzL0IzV2FzbUJv
dW5kc0NoZWNrVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM0NzUsNyAr
MzQ3Nyw2IEBACiAJCTUzOTE3RTdBMUI3OTA2RTQwMDBFQkQzMyAvKiBKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MzkxN0U3QzFCNzkxMTA2MDAwRUJEMzMgLyogSlNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUzOTE3RTgzMUI3OTFDQjgwMDBFQkQzMyAvKiBUeXBlZEFycmF5UHJvdG90eXBlLmpzICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gVHlwZWRBcnJheVByb3RvdHlwZS5q
czsgcGF0aCA9IGJ1aWx0aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSBT
T1VSQ0VfUk9PVDsgfTsKLQkJNTM5RUIwNzExRDU1M0RGODAwQzgyRUY3IC8qIHRlc3RXYXNtLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHRlc3RXYXNtLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM5RkI4QjkxQzk5REE3QzAwOTQwRkExIC8qIEpT
QXJyYXlJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXJyYXlJ
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzQjBCRTMzMUU1NjFBQzkw
MEE4RkMyOSAvKiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1M0IwQkUzNTFFNTYxQjA5MDBBOEZDMjkgLyogUHJveHlhYmxl
QWNjZXNzQ2FzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm94
eWFibGVBY2Nlc3NDYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU0NjYs
MTAgKzU0NjcsMTAgQEAKIAkJCQlGRUI1MUY2QjFBOTdCNjg4MDAxRjkyMUMgLyogUmVncmVzczE0
MTgwOS5tbSAqLywKIAkJCQlGRUNCOEIyOTFEMjVDQUJCMDA2RjI0NjMgLyogdGVzdGFwaS1mdW5j
dGlvbi1vdmVycmlkZXMuanMgKi8sCiAJCQkJMTRCRDVBMkQwQTNFOTFGNjAwQkFGNTlDIC8qIHRl
c3RhcGkuYyAqLywKKwkJCQk1MzFENEUxOTFGNTlDREQyMDBFQzgzNkMgLyogdGVzdGFwaS5jcHAg
Ki8sCiAJCQkJMTREODU3NzQwQTQ2OTZDODAwMzIxNDZDIC8qIHRlc3RhcGkuanMgKi8sCiAJCQkJ
ODZEMjIyMTkxNjdFRjk0NDAwMjRDODA0IC8qIHRlc3RhcGkubW0gKi8sCiAJCQkJNjUxMTIyRTUx
NDA0NjlCQTAwMkIxMDFEIC8qIHRlc3RSZWdFeHAuY3BwICovLAotCQkJCTUzOUVCMDcxMUQ1NTNE
RjgwMEM4MkVGNyAvKiB0ZXN0V2FzbS5jcHAgKi8sCiAJCQkJNTM0OTAyODIxQzcyNDJDODAwMTJC
Q0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgKi8sCiAJCQkJNTM0OTAyODMxQzcyNDJDODAwMTJC
Q0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5oICovLAogCQkJKTsKQEAgLTgzODcsNyArODM4OCw2IEBA
CiAJCQkJNTNENDQ0REMxREFGMDhBQjAwQjkyNzg0IC8qIEIzV2FzbUFkZHJlc3NWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTM0MUZDNzIxREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5k
c0NoZWNrVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkM2M0IyMUU2MEFFNDcwMEMxMzgz
OSAvKiBCM1dpZHRoLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjQ0QTdCMjIwQkY2OENFMDAyMkIx
NzEgLyogSUNTdGF0dXNNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyNjc4RjhGMUEwMzEwMDkw
MDZBMzA2RCAvKiBCYXNpY0Jsb2NrTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTE0N0I4
M0FDMEU2REI4QzkwMDQ3NzVBNCAvKiBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODY5NzZFNUYxRkEzRThCQzAwRTdDNEUxIC8qIEJpZ0ludENvbnN0cnVj
dG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTg2MDgsNyArODYwOCw2IEBACiAJCQkJODZFQzlEQzYx
MzI4REY4MjAwMkIyQUQ3IC8qIERGR0dlbmVyYXRpb25JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NkVDOURDODEzMjhERjgyMDAyQjJBRDcgLyogREZHR3JhcGguaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMkZDQ0ZBMThBNjAwNzAwMDFBMjdGOCAvKiBERkdHcmFwaFNhZmVwb2ludC5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMEY0NEE3QjEyMEJGNjhDOTAwMjJCMTcxIC8qIEV4aXRpbmdJbmxpbmVL
aW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxNzY2MTE5NkI4RjlFMDA5MTA1MkEgLyogREZH
SGVhcExvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkM4NDE2OTFCQThDMzIxMDA2MTgz
N0QgLyogREZHSW5mZXJyZWRUeXBlQ2hlY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjE0RTIx
MTgxMjU3MEIwMDlCNkI0RCAvKiBERkdJbmxpbmVDYWNoZVdyYXBwZXIuaCBpbiBIZWFkZXJzICov
LApAQCAtODc1Miw2ICs4NzUxLDggQEAKIAkJCQkxNDE0MkU1MzFCNzk2RUREMDBGNEJGNEIgLyog
RXhlY3V0YWJsZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjBGRTkwMUZGQzM3MDIwMDAz
MzIwQSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjU2QTFEMzE1MDAwRjM1MDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEY0NEE3QjAyMEJGNjg2MjAwMjJCMTcxIC8qIEV4aXRGbGFnLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjQ0QTdCMTIwQkY2OEM5MDAyMkIxNzEgLyogRXhpdGluZ0lubGluZUtpbmQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGM0FDNzU0MTg4RTVFQzgwMDMyMDI5RiAvKiBFeGl0aW5n
SklUVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTA1ODYxNjc1NDgxMjAwRjhBQjZFIC8q
IEV4aXRLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYg
LyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC04NzU5LDcgKzg3NjAs
NiBAQAogCQkJCUE3QThBRjM4MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDMyQXJyYXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3QThBRjM5MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDY0QXJyYXku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTQzMTdFQTlGNTkwMEFCQjIxNyAvKiBGUFJJbmZv
LmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjQ0QTdCMzIwQkY2OEQxMDAyMkIxNzEgLyogUmVjb3Jk
ZWRTdGF0dXNlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM0RURCRjcxREI1RkZDOTAwREM4N0E1
IC8qIEZyYW1lVHJhY2Vycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NTEzQTYxRDVBNjgyQzAw
QzMyQkQ4IC8qIEZyZWVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY1ODVFMTFFRTA4MDVB
MDA5NTE3NkQgLyogRnJlZUxpc3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTg4OTksNiAr
ODg5OSw3IEBACiAJCQkJRkUxQkQwMjUxRTcyMDUzODAwMTM0QkM5IC8qIEhlYXBWZXJpZmllci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxs
UmV0dXJuVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCURDMjE0MzA3MUNBMzJFNTUwMDBBODg2
OSAvKiBJQ1N0YXRzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ0QTdCMjIwQkY2OENFMDAyMkIx
NzEgLyogSUNTdGF0dXNNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjM5OUJFMjBBRjZCM0Qw
MDE3RTIxMyAvKiBJQ1N0YXR1c1V0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQwRjBF
MTZGNUNEMDBCMzQ0NjAgLyogSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYwNkRE
RUExOERBNDRBQjAwQTM4M0QwIC8qIElkZW50aWZpZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
QEAgLTg5ODAsOCArODk4MSw4IEBACiAJCQkJMEZCNDY3ODAxRkREQTZGMTAwM0ZDQjA5IC8qIElz
b0NlbGxTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjQ2NzgxMUZEREE2RjcwMDNGQ0IwOSAv
KiBJc29DZWxsU2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEQ0UxMkQxRkFGQjRF
NTAwNkYzOTAxIC8qIElzb1N1YnNwYWNlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkQyRkQ5NTIw
QjUyQkUyMDBGMDk0NDEgLyogSXNvU3Vic3BhY2VJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKLQkJ
CQkwRjVFMEZFNzIwODZBRDQ4MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQZXJWTS5oIGluIEhlYWRl
cnMgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBGRDJGRDk1MjBCNTJCRTIw
MEYwOTQ0MSAvKiBJc29TdWJzcGFjZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwRjVFMEZFNzIwODZBRDQ4MDA5N0YwREUgLyogSXNvU3Vi
c3BhY2VQZXJWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEI5RjZENTYxRDU5MTJGQTAwMUM3MzlG
IC8qIEl0ZXJhdGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNEQ1NUI4MUFFNzE2Q0Ew
MDUyRTQ1OSAvKiBJdGVyYXRpb25TdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwMTEzRDRD
MUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLApA
QCAtOTEwOSw3ICs5MTEwLDYgQEAKIAkJCQk3MDEzQ0E4QzFCNDkxQTk0MDBDQUU2MTMgLyogSlNK
b2IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xl
eGljYWxFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjMwRTE2RjVDRDAw
QjM0NDYwIC8qIEpTTG9jay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY0NEE3QjAyMEJGNjg2MjAw
MjJCMTcxIC8qIEV4aXRGbGFnLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjVENzA5QzE2REU5OUY0
MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBNEJCN0Yz
MThBNDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1ZUludGVybmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNzAwODc0MjE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuaCBpbiBIZWFkZXJzICov
LApAQCAtOTM2Niw2ICs5MzY2LDcgQEAKIAkJCQkwRjBDRDRDMjE1RjFBNjA3MDAzMkYxQzAgLyog
UHV0RGlyZWN0SW5kZXhNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlGQzhDNTE0RTFCNjA0
MDBENTJBRTAgLyogUHV0S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3Qjg0NjMwRTZERTZC
MTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NEE3
QjMyMEJGNjhEMTAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRjYwQUMyMTY3NDBGODMwMDAyOTc3OSAvKiBSZWR1Y2VXaGl0ZXNwYWNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFMzM2MzdBNjFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTk2QjczMjMxQkRBMDhFRjAwMzMxQjg0IC8qIFJlZmxlY3RP
YmplY3QubHV0LmggaW4gSGVhZGVycyAqLywKQEAgLTk0MjUsNyArOTQyNiw2IEBACiAJCQkJQTcy
OTlEQTIxN0QxMjg0ODAwNUY1RkY5IC8qIFNldFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZFRTk4NDExQTg4NjVCNzAwNzU0RTkzIC8qIFNldHVwVmFyYXJnc0ZyYW1lLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlEQzE3RTgxODFDOUM5MUQ5MDA4QTZBQjMgLyogU2hhZG93Q2hpY2tlbi5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMEY0NEE3QjQyMEJGNjhEOTAwMjJCMTcxIC8qIFRlcm1pbmF0
ZWRDb2RlT3JpZ2luLmggaW4gSGVhZGVycyAqLywKIAkJCQlEQzE3RTgxOTFDOUM5MURCMDA4QTZB
QjMgLyogU2hhZG93Q2hpY2tlbklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzAyMkQz
MUUzRDczQTUwMEJBQzQ5MyAvKiBTaWdpbGxDcmFzaEFuYWx5emVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjREOEM3ODFGQ0EzQ0ZBMDAxRDMyQUMgLyogU2ltcGxlTWFya2luZ0NvbnN0cmFpbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtOTQ4MCw2ICs5NDgwLDcgQEAKIAkJCQkwRjc2NkQzOTE1QUU0
QTFGMDA4RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNDRjBEMDgwRUYwQUFCOTAwNDEzQzhGIC8qIFN0cnVjdHVyZVN0dWJJbmZv
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzkwNDE0ODBFQjkyNTA5MDBGRTI2RkEgLyogU3RydWN0
dXJlVHJhbnNpdGlvblRhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ0NzY3MDIwQzVFMkI0
MDA4QjJDMzYgLyogU3R1YkluZm9TdW1tYXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdERjEz
NzFFMjk3MEUxMDA5NTk1MUIgLyogU3Vic3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0RG
MTM4MUUyOTcwRTQwMDk1OTUxQiAvKiBTdWJzcGFjZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNEEzOEZBMUM4RTEzREYwMDE5MDMxOCAvKiBTdXBlclNhbXBsZXIuaCBpbiBIZWFkZXJz
ICovLApAQCAtOTQ5OCw2ICs5NDk5LDcgQEAKIAkJCQlEQzc5OTc4MzFDREU5RkEwMDA0RDRBMDkg
LyogVGFnUmVnaXN0ZXJzTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzBFQ0E2MDkxQUZEQkVB
MjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYyNEU1NEYxN0VFMjc0OTAwQUJCMjE3IC8qIFRlbXBSZWdpc3RlclNldC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEY0NEE3QjQyMEJGNjhEOTAwMjJCMTcxIC8qIFRlcm1pbmF0ZWRDb2RlT3Jp
Z2luLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkEyQzE3QzE3RDdDRjg0MDA5RDAxNUYgLyogVGVz
dFJ1bm5lclV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTM0MjIxMjFENkI4MUMzMDAzMkJF
ODggLyogVGhyb3dTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NzJENEYxNjg3OUZERDAw
RTU3RkJEIC8qIFRodW5rR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTk1ODEsNyArOTU4
Myw2IEBACiAJCQkJQUQ1QjQxNkYxRUJBRkI3NzAwOEVGQTQzIC8qIFdhc21OYW1lLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBRDdCNEIyRTFGQTNFMjk4MDBDOURGNzkgLyogV2FzbU5hbWVTZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBREQ4RkE0NjFFQjMwNzk3MDBERjU0MkYgLyogV2FzbU5h
bWVTZWN0aW9uUGFyc2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjQ0NzY3MDIwQzVFMkI0MDA4
QjJDMzYgLyogU3R1YkluZm9TdW1tYXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzExQkQ0QjFF
QTU4MUU1MDA1MjUyODEgLyogV2FzbU9NR1BsYW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTUzQzZG
RUVGMUU4QURGQTkwMEIxODQyNSAvKiBXYXNtT3Bjb2RlT3JpZ2luLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1M0I0QkQxMjFGNjhCMzI1MDBEMkJFQTMgLyogV2FzbU9wcy5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMDIwMSw2ICsxMDIwMiw3IEBACiAJCQkJNjU1NzBGNUExQUE0QzNFQTAwOUIzQzIzIC8q
IFJlZ3Jlc3MxNDEyNzUubW0gaW4gU291cmNlcyAqLywKIAkJCQlGRUI1MUY2QzFBOTdCNjg4MDAx
RjkyMUMgLyogUmVncmVzczE0MTgwOS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTE0NDBGNjEwMEE0
Rjg1NjcwMDA1RjA2MSAvKiB0ZXN0YXBpLmMgaW4gU291cmNlcyAqLywKKwkJCQk1M0VBRkUyRjIw
OERGQUI0MDA3RDUyNEIgLyogdGVzdGFwaS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkQyMjIx
QTE2N0VGOTQ0MDAyNEM4MDQgLyogdGVzdGFwaS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzNDkw
Mjg1MUM3Mjc2QjcwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwpAQCAtMTA2NjgsNiArMTA2NzAsMTAgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMz
MDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSJcIiQoSkFWQVNDUklQVENP
UkVfRlJBTUVXT1JLU19ESVIpL0phdmFTY3JpcHRDb3JlLmZyYW1ld29yay9Qcml2YXRlSGVhZGVy
c1wiIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gRGVi
dWc7CiAJCX07CkBAIC0xMDY3NSw2ICsxMDY4MSwxMCBAQAogCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAw
QzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGlu
Z3MgPSB7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIlwiJChKQVZBU0NSSVBU
Q09SRV9GUkFNRVdPUktTX0RJUikvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFk
ZXJzXCIiLAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBS
ZWxlYXNlOwogCQl9OwpAQCAtMTA2ODIsNiArMTA2OTIsMTAgQEAKIAkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEz
NjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87CiAJCQlidWlsZFNl
dHRpbmdzID0geworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSJcIiQoSkFWQVND
UklQVENPUkVfRlJBTUVXT1JLU19ESVIpL0phdmFTY3JpcHRDb3JlLmZyYW1ld29yay9Qcml2YXRl
SGVhZGVyc1wiIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJKTsKIAkJCX07CiAJCQluYW1l
ID0gUHJvZHVjdGlvbjsKIAkJfTsKQEAgLTExMDA2LDYgKzExMDIwLDEwIEBACiAJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMw
MjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOwogCQkJ
YnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkiXCIk
KEpBVkFTQ1JJUFRDT1JFX0ZSQU1FV09SS1NfRElSKS9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsv
UHJpdmF0ZUhlYWRlcnNcIiIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CiAJCQl9Owog
CQkJbmFtZSA9IFByb2ZpbGluZzsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9jb25maWcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAppbmRleCAxZDFl
ZDdiNmY4YzZhYzA5ZjE0NDQ0ZjZlZjM4MDU2Mjk5ODE5ZDdlLi41NmVjN2Y2NjdiMmUwOWMyOTNm
NTMzOWMzNTdlMTMzMjNkYTk5MThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Y29uZmlnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbmZpZy5oCkBAIC0yMyw2ICsy
MywxMSBAQAogI2luY2x1ZGUgImNtYWtlY29uZmlnLmgiCiAjZW5kaWYKIAorI2RlZmluZSBKU0Nf
QVBJX0FWQUlMQUJMRSguLi4pCisvLyBQaWNrIHNvbWUgb2JzZW5lbHkgbGFyZ2UgbnVtYmVyIGJl
Y2F1c2Ugd2h5IG5vdC4KKyNkZWZpbmUgSlNDX01BQ19WRVJTSU9OX1RCQSAwCisjZGVmaW5lIEpT
Q19JT1NfVkVSU0lPTl9UQkEgMAorCiAjaW5jbHVkZSAiSlNFeHBvcnRNYWNyb3MuaCIKIAogI2lm
ZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcG9zdHBy
b2Nlc3MtaGVhZGVycy5zaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wb3N0cHJvY2Vzcy1oZWFk
ZXJzLnNoCmluZGV4IGM4NjE4NDM3ZDJhMDc3OTQ5YTU5MGFjNzAxN2Y4MjZiNTJkNmQyYjMuLjc4
YjRmZDQ4NWFlZjBjNzc3YmEyZTIzOWJjMjY2YTI5ZWFkYTRmNzYgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wb3N0cHJvY2Vzcy1oZWFkZXJzLnNoCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wb3N0cHJvY2Vzcy1oZWFkZXJzLnNoCkBAIC0xLDE4ICsxLDEwMCBAQAotY2Qg
IiR7VEFSR0VUX0JVSUxEX0RJUn0vJHtQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSH0iCi0KLVVO
SUZERUZfT1BUSU9OUz0iLURfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEPSR7VEFSR0VU
X01BQ19PU19YX1ZFUlNJT05fTUFKT1J9IgotCi1mb3IgKChpID0gMDsgaSA8ICR7U0NSSVBUX0lO
UFVUX0ZJTEVfQ09VTlR9OyArK2kpKTsgZG8KLSAgICBldmFsIEhFQURFUj1cJHtTQ1JJUFRfSU5Q
VVRfRklMRV8ke2l9fTsKLSAgICB1bmlmZGVmIC1CICR7VU5JRkRFRl9PUFRJT05TfSAtbyAiJHtI
RUFERVJ9Ii51bmlmZGVmICIke0hFQURFUn0iCi0gICAgY2FzZSAkPyBpbgotICAgIDApCi0gICAg
ICAgIHJtICIke0hFQURFUn0iLnVuaWZkZWYKLSAgICAgICAgOzsKLSAgICAxKQotICAgICAgICBt
diAiJHtIRUFERVJ9InsudW5pZmRlZix9Ci0gICAgICAgIDs7Ci0gICAgKikKLSAgICAgICAgZXhp
dCAxCi0gICAgZXNhYwotZG9uZQorIyEvYmluL3NoCisjCisjIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorIworCitpZiBbWyAiJHtKU0NfRlJBTUVXT1JLX0hFQURFUl9QT1NUUFJP
Q0VTU0lOR19ESVNBQkxFRH0iID09ICJZRVMiIF1dOyB0aGVuCisgICAgZXhpdCAwOworZmkKKwor
VElNRVNUQU1QX1BBVEg9JHtUQVJHRVRfVEVNUF9ESVJ9LyR7MCMjKi99CisKK2lmIFtbIC1lICRU
SU1FU1RBTVBfUEFUSCAmJiAkMCAtbnQgJFRJTUVTVEFNUF9QQVRIIF1dOyB0aGVuCisgICAgcm0g
IiR7VElNRVNUQU1QX1BBVEh9IjsKK2ZpCisKK2Z1bmN0aW9uIHByb2Nlc3NfZGVmaW5pdGlvbnMg
KCkgeworICAgIGxvY2FsIERFRklOSVRJT05TX0ZJTEU9JDEKKworICAgIGlmIFtbICEgLWYgIiR7
REVGSU5JVElPTlNfRklMRX0iIF1dOyB0aGVuCisgICAgICAgIHJldHVybiAxCisgICAgZmkKKwor
ICAgIGlmIFtbIC1lICRUSU1FU1RBTVBfUEFUSCAmJiAiJHtERUZJTklUSU9OU19GSUxFfSIgLW50
ICRUSU1FU1RBTVBfUEFUSCBdXTsgdGhlbgorICAgICAgICBybSAiJHtUSU1FU1RBTVBfUEFUSH0i
OworICAgIGZpCisKKyAgICBzb3VyY2UgIiR7REVGSU5JVElPTlNfRklMRX0iCit9CisKK2Z1bmN0
aW9uIHJld3JpdGVfaGVhZGVycyAoKSB7CisgICAgaWYgW1sgIiR7UExBVEZPUk1fTkFNRX0iID09
ICJtYWNvc3giIF1dOyB0aGVuCisgICAgICAgIFtbIC1uICR7T1NYX1ZFUlNJT059IF1dIHx8IE9T
WF9WRVJTSU9OPSR7TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUfQorICAgICAgICBbWyAtbiAke0lP
U19WRVJTSU9OfSBdXSB8fCBJT1NfVkVSU0lPTj0iTkEiCisgICAgICAgIFtbIC1uICR7T1NYX1ZF
UlNJT05fTlVNQkVSfSBdXSB8fCBPU1hfVkVSU0lPTl9OVU1CRVI9JHtUQVJHRVRfTUFDX09TX1hf
VkVSU0lPTl9NQUpPUn0KKyAgICAgICAgW1sgLW4gJHtJT1NfVkVSU0lPTl9OVU1CRVJ9IF1dIHx8
IElPU19WRVJTSU9OX05VTUJFUj0iMCIKKyAgICBlbGlmIFtbICIke1BMQVRGT1JNX05BTUV9IiA9
fiAiaXBob25lIiBdXTsgdGhlbgorICAgICAgICBbWyAtbiAke0lPU19WRVJTSU9OfSBdXSB8fCBJ
T1NfVkVSU0lPTj0ke0lQSE9ORU9TX0RFUExPWU1FTlRfVEFSR0VUfQorICAgICAgICBbWyAtbiAk
e09TWF9WRVJTSU9OfSBdXSB8fCBPU1hfVkVSU0lPTj0iTkEiCisgICAgICAgIFtbIC1uICR7T1NY
X1ZFUlNJT05fTlVNQkVSfSBdXSB8fCBPU1hfVkVSU0lPTl9OVU1CRVI9IjAiCisgICAgICAgIFtb
IC1uICR7SU9TX1ZFUlNJT05fTlVNQkVSfSBdXSB8fCBJT1NfVkVSU0lPTl9OVU1CRVI9JHtUQVJH
RVRfSVBIT05FX09TX1ZFUlNJT05fTUFKT1J9CisgICAgZmkKKworICAgIFNFRF9PUFRJT05TPSgK
KyAgICApCisKKyAgICBpZiBbWyAtbiAiJE9TWF9WRVJTSU9OIiAmJiAtbiAiJElPU19WRVJTSU9O
IiBdXTsgdGhlbgorICAgICAgICBTRURfT1BUSU9OUys9KAorICAgICAgICAgICAgLWUgcy9KU0Nf
TUFDX1RCQS8ke09TWF9WRVJTSU9OfS9nCisgICAgICAgICAgICAtZSBzL0pTQ19JT1NfVEJBLyR7
SU9TX1ZFUlNJT059L2cKKyAgICAgICAgICAgIC1lIHMvSlNDX01BQ19WRVJTSU9OX1RCQS8ke09T
WF9WRVJTSU9OX05VTUJFUn0vZworICAgICAgICAgICAgLWUgcy9KU0NfSU9TX1ZFUlNJT05fVEJB
LyR7SU9TX1ZFUlNJT05fTlVNQkVSfS9nCisgICAgICAgICAgICAtZSBzL0pTQ19BUElfQVZBSUxB
QkxFL0FQSV9BVkFJTEFCTEUvCisgICAgICAgICAgICAtZSBzL0pTQ19BUElfREVQUkVDQVRFRC9B
UElfREVQUkVDQVRFRC8KKyAgICAgICAgICAgIC1lICJzL15KU0NfQ0xBU1NfQVZBSUxBQkxFL0pT
Q19FWFRFUk4gQVBJX0FWQUlMQUJMRS8iCisgICAgICAgICAgICAtZSAicy9eSlNDX0NMQVNTX0RF
UFJFQ0FURUQvSlNDX0VYVEVSTiBBUElfREVQUkVDQVRFRC8iCisgICAgICAgICkKKyAgICBlbHNl
CisgICAgICAgIFNFRF9PUFRJT05TKz0oLWUgJ3MvSlNDXyhBUElffENMQVNTXylBVkFJTEFCTEVc
KC4qXClccypcKS8vZycgLWUgJ3MvSlNDXyhBUElffENMQVNTXylERVBSRUNBVEVEKF9XSVRIX1JF
UExBQ0VNRU5UKT9cKC4qXClccypcKS8vZycpCisgICAgZmkKKworICAgIFNFRF9PUFRJT05TKz0o
JHtPVEhFUl9TRURfT1BUSU9OU1sqXX0pCisKKyAgICBmb3IgSEVBREVSX1BBVEggaW4gIiR7MX0v
IiouaDsgZG8KKyAgICAgICAgaWYgW1sgIiRIRUFERVJfUEFUSCIgLW50ICRUSU1FU1RBTVBfUEFU
SCBdXTsgdGhlbgorICAgICAgICAgICAgZGl0dG8gIiR7SEVBREVSX1BBVEh9IiAiJHtUQVJHRVRf
VEVNUF9ESVJ9LyR7SEVBREVSX1BBVEgjIyovfSIKKyAgICAgICAgICAgIHNlZCAtaSAudG1wIC1F
ICIke1NFRF9PUFRJT05TW0BdfSIgIiR7VEFSR0VUX1RFTVBfRElSfS8ke0hFQURFUl9QQVRIIyMq
L30iIHx8IGV4aXQgJD8KKyAgICAgICAgICAgIG12ICIke1RBUkdFVF9URU1QX0RJUn0vJHtIRUFE
RVJfUEFUSCMjKi99IiAiJEhFQURFUl9QQVRIIgorICAgICAgICBmaQorICAgIGRvbmUKK30KKwor
REVGSU5JVElPTlNfUEFUSD11c3IvbG9jYWwvaW5jbHVkZS9XZWJLaXRBZGRpdGlvbnMvU2NyaXB0
cy9wb3N0cHJvY2Vzcy1mcmFtZXdvcmstaGVhZGVycy1kZWZpbml0aW9ucworCitwcm9jZXNzX2Rl
ZmluaXRpb25zICIke0JVSUxUX1BST0RVQ1RTX0RJUn0vJHtERUZJTklUSU9OU19QQVRIfSIgfHwg
cHJvY2Vzc19kZWZpbml0aW9ucyAiJHtTREtST09UfS8ke0RFRklOSVRJT05TX1BBVEh9IgorCity
ZXdyaXRlX2hlYWRlcnMgIiR7VEFSR0VUX0JVSUxEX0RJUn0vJHtQVUJMSUNfSEVBREVSU19GT0xE
RVJfUEFUSH0iCityZXdyaXRlX2hlYWRlcnMgIiR7VEFSR0VUX0JVSUxEX0RJUn0vJHtQUklWQVRF
X0hFQURFUlNfRk9MREVSX1BBVEh9IgorCit0b3VjaCAke1RJTUVTVEFNUF9QQVRIfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RtZW0vdGVzdG1lbS5tbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0bWVtL3Rlc3RtZW0ubW0KaW5kZXggYjRkMmFkMzkxMTliYzU1NThj
ZDM5YzljODE4MmZhY2VkY2JlYWYyNC4uOWJjNGI0MGUxZWFjMDIzMTdmZDNlODQ1YjQ1NGQwZjQ4
YjZlZTVjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RtZW0vdGVzdG1l
bS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdG1lbS90ZXN0bWVtLm1tCkBAIC0y
Myw2ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbXBvcnQgImNvbmZpZy5oIgog
I2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KICNpbXBvcnQgPGludHR5
cGVzLmg+CiAjaW1wb3J0IDxzdGRpby5oPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345777</attachid>
            <date>2018-07-25 13:21:11 -0700</date>
            <delta_ts>2018-07-25 15:02:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175836-20180725132111.patch</filename>
            <type>text/plain</type>
            <size>106132</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0MjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZWEwMDgyMjk3Zjg5ODZhYTA3NDM4Y2Q2OWMzZGE2NmEzZjA1MjdlLi5hNGU1NjY2OGUzOTc4MmQx
Yjg3Y2JmNDllZDBjNTcxNDAyODE4M2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDMgQEAKKzIwMTgtMDctMjUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0pTQyBBUEldIFdlIHNob3VsZCBzdXBwb3J0IHRoZSBzeW1ib2wg
dHlwZSBpbiBvdXIgQy9PYmotQyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTgzNgorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxv
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIGZvbGxvd2luZyBBUEkgYWRkaXRpb25z
OgorICAgICAgICAxKSBUZXN0IGlmIGEgSlNWYWx1ZS9KU1ZhbHVlUmVmIGlzIGEgc3ltYm9sIHZp
YSBhbnkgb2YgdGhlIG1ldGhvZHMgQVBJIGFyZSBhYmxlIHRvIHRlc3QgZm9yIHRoZSB0eXBlcyBv
ZiBvdGhlciBKU1ZhbHVlcy4KKyAgICAgICAgMikgQ3JlYXRlIGEgc3ltYm9sIG9uIGJvdGggQVBJ
cy4KKyAgICAgICAgMykgR2V0L1NldC9EZWxldGUvRGVmaW5lIHByb3BlcnR5IG5vdyB0YWtlIGlk
cyBpbiB0aGUgT2JqLUMgQVBJLgorICAgICAgICA0KSBBZGQgR2V0L1NldC9EZWxldGUgaW4gdGhl
IEMgQVBJLgorCisgICAgICAgIFdlIGNhbiBkbyAzIGJlY2F1c2UgaXQgaXMgYm90aCBiaW5hcnkg
YW5kIHNvdXJjZSBjb21wYXRhYmxlIHdpdGgKKyAgICAgICAgdGhlIGV4aXN0aW5nIEFQSS4gSSBh
ZGRlZCAoNCkgYmVjYXVzZSB0aGUgY3VycmVudCBwcm9wZXJ0eSBhY2Nlc3MKKyAgICAgICAgQVBJ
cyBvbmx5IGhhdmUgdGhlIGFiaWxpdHkgdG8gZ2V0IFN0cmluZ3MuIEl0IHdhcyBwb3NzaWJsZSB0
bworICAgICAgICBtZXJnZSBzeW1ib2xzIGludG8gSlNTdHJpbmdSZWYgYnV0IHRoYXQgZmVsdCBj
b25mdXNpbmcgYW5kIGV4cG9zZXMKKyAgICAgICAgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBv
dXIgZW5naW5lLiBUaGUgbmV3IGZ1bmN0aW9ucyBtYXRjaCB0aGUKKyAgICAgICAgc2FtZSBtZWFu
aW5nIHRoYXQgdGhleSBoYXZlIGluIEpTLCB0aHVzIHNob3VsZCBiZSBmb3J3YXJkCisgICAgICAg
IGNvbXBhdGlibGUgd2l0aCBhbnkgZnV0dXJlIGxhbmd1YWdlIGV4dGVuc2lvbnMuCisKKyAgICAg
ICAgTGFzdGx5LCB0aGlzIHBhdGNoIGFkZHMgdGhlIHNhbWUgYXZhaWxhYmlsaXR5IHByZXByb2Nj
ZXNzaW5nIHBoYXNlCisgICAgICAgIGluIFdlYkNvcmUgdG8gSmF2YVNjcmlwdENvcmUsIHdoaWNo
IGVuYWJsZXMgVEJBIGZlYXR1cmVzIGZvcgorICAgICAgICB0ZXN0aW5nIG9uIHByZXZpb3VzIHJl
bGVhc2VzLgorCisgICAgICAgICogQVBJL0pTQmFzZVByaXZhdGUuaDoKKyAgICAgICAgKiBBUEkv
SlNDb250ZXh0Lmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFByaXZhdGUuaDoKKyAgICAgICAg
KiBBUEkvSlNDb250ZXh0UmVmLmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZkludGVybmFs
Lmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaDoKKyAgICAgICAgKiBBUEkv
SlNNYW5hZ2VkVmFsdWUuaDoKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAg
ICAoSlNPYmplY3RIYXNQcm9wZXJ0eUtleSk6CisgICAgICAgIChKU09iamVjdEdldFByb3BlcnR5
S2V5KToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJvcGVydHlLZXkpOgorICAgICAgICAoSlNPYmpl
Y3REZWxldGVQcm9wZXJ0eUtleSk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmg6CisgICAg
ICAgICogQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmg6CisgICAgICAgICogQVBJL0pTVHlwZWRBcnJh
eS5oOgorICAgICAgICAqIEFQSS9KU1ZhbHVlLmg6CisgICAgICAgICogQVBJL0pTVmFsdWUubW06
CisgICAgICAgICgrW0pTVmFsdWUgdmFsdWVXaXRoTmV3U3ltYm9sRnJvbURlc2NyaXB0aW9uOmlu
Q29udGV4dDpdKToKKyAgICAgICAgKHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbik6CisgICAgICAg
ICgtW0pTVmFsdWUgdmFsdWVGb3JQcm9wZXJ0eTp2YWx1ZUZvclByb3BlcnR5Ol0pOgorICAgICAg
ICAoLVtKU1ZhbHVlIHNldFZhbHVlOmZvclByb3BlcnR5OnNldFZhbHVlOmZvclByb3BlcnR5Ol0p
OgorICAgICAgICAoLVtKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5OmRlbGV0ZVByb3BlcnR5Ol0pOgor
ICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Omhhc1Byb3BlcnR5Ol0pOgorICAgICAgICAo
LVtKU1ZhbHVlIGRlZmluZVByb3BlcnR5OmRlc2NyaXB0b3I6ZGVmaW5lUHJvcGVydHk6ZGVzY3Jp
cHRvcjpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSBpc1N5bWJvbF0pOgorICAgICAgICAoLVtKU1Zh
bHVlIG9iamVjdEZvcktleWVkU3Vic2NyaXB0Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIHNldE9i
amVjdDpmb3JLZXllZFN1YnNjcmlwdDpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSB2YWx1ZUZvclBy
b3BlcnR5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIHNldFZhbHVlOmZvclByb3Bl
cnR5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5Ol0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Ol0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtKU1ZhbHVlIGRlZmluZVByb3BlcnR5OmRlc2NyaXB0b3I6XSk6IERlbGV0ZWQuCisg
ICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgorICAgICAgICAoSlNWYWx1ZUdldFR5cGUpOgor
ICAgICAgICAoSlNWYWx1ZUlzU3ltYm9sKToKKyAgICAgICAgKEpTVmFsdWVNYWtlU3ltYm9sKToK
KyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5oOgorICAgICAgICAqIEFQSS9XZWJLaXRBdmFpbGFi
aWxpdHkuaDoKKyAgICAgICAgKiBBUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRl
clRlc3QubW06CisgICAgICAgICogQVBJL3Rlc3RzL0N1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVz
dC5jOgorICAgICAgICAqIEFQSS90ZXN0cy9EYXRlVGVzdHMubW06CisgICAgICAgICogQVBJL3Rl
c3RzL0pTRXhwb3J0VGVzdHMubW06CisgICAgICAgICogQVBJL3Rlc3RzL0pTTm9kZS5jOgorICAg
ICAgICAqIEFQSS90ZXN0cy9KU05vZGVMaXN0LmM6CisgICAgICAgICogQVBJL3Rlc3RzL05vZGUu
YzoKKyAgICAgICAgKiBBUEkvdGVzdHMvTm9kZUxpc3QuYzoKKyAgICAgICAgKiBBUEkvdGVzdHMv
bWluaWRvbS5jOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLmM6CisgICAgICAgIChtYWlu
KToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5jcHA6IEFkZGVkLgorICAgICAgICAoQVBJ
U3RyaW5nOjpBUElTdHJpbmcpOgorICAgICAgICAoQVBJU3RyaW5nOjp+QVBJU3RyaW5nKToKKyAg
ICAgICAgKEFQSVN0cmluZzo6b3BlcmF0b3IgSlNTdHJpbmdSZWYpOgorICAgICAgICAoQVBJQ29u
dGV4dDo6QVBJQ29udGV4dCk6CisgICAgICAgIChBUElDb250ZXh0Ojp+QVBJQ29udGV4dCk6Cisg
ICAgICAgIChBUElDb250ZXh0OjpvcGVyYXRvciBKU0dsb2JhbENvbnRleHRSZWYpOgorICAgICAg
ICAoQVBJVmVjdG9yOjpBUElWZWN0b3IpOgorICAgICAgICAoQVBJVmVjdG9yOjp+QVBJVmVjdG9y
KToKKyAgICAgICAgKEFQSVZlY3Rvcjo6YXBwZW5kKToKKyAgICAgICAgKHRlc3RDQVBJVmlhQ3Bw
KToKKyAgICAgICAgKFRlc3RBUEk6OmV2YWx1YXRlU2NyaXB0KToKKyAgICAgICAgKFRlc3RBUEk6
OmNhbGxGdW5jdGlvbik6CisgICAgICAgIChUZXN0QVBJOjpmdW5jdGlvblJldHVybnNUcnVlKToK
KyAgICAgICAgKFRlc3RBUEk6OmNoZWNrKToKKyAgICAgICAgKFRlc3RBUEk6OmNoZWNrSlNBbmRB
UElNYXRjaCk6CisgICAgICAgIChUZXN0QVBJOjppbnRlcmVzdGluZ09iamVjdHMpOgorICAgICAg
ICAoVGVzdEFQSTo6aW50ZXJlc3RpbmdLZXlzKToKKyAgICAgICAgKFRlc3RBUEk6OnJ1bik6Cisg
ICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkubW06CisgICAgICAgICh0ZXN0T2JqZWN0aXZlQ0FQ
SU1haW4pOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogY29uZmlnLmg6CisgICAgICAgICogcG9zdHByb2Nlc3MtaGVhZGVycy5z
aDoKKyAgICAgICAgKiB0ZXN0bWVtL3Rlc3RtZW0ubW06CisKIDIwMTgtMDctMjUgIEFuZHkgVmFu
V2Fnb25lciAgPGFuZHlAdmFud2Fnb25lci5mYW1pbHk+CiAKICAgICAgICAgW0lOVExdIENhbGwg
VHlwZWQgQXJyYXkgZWxlbWVudHMgdG9Mb2NhbGVTdHJpbmcgd2l0aCBsb2NhbGUgYW5kIG9wdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VQcml2YXRlLmgKaW5kZXggMTM3NTk0
OTcyNzVlNThiZWIwYzEyMjEzNTVmOWZiZWQ0M2QzYjFhNS4uYjZjOTIwNGM0Y2JkNzJjNGY3Yzlm
NmExZjU0Y2Q1ZDM0MTU2ZDE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0Jhc2VQcml2YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VQ
cml2YXRlLmgKQEAgLTQzLDcgKzQzLDcgQEAgb3ducyBhIGxhcmdlIG5vbi1HQyBtZW1vcnkgcmVn
aW9uLiBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBlbmNvdXJhZ2UgdGhlCiBnYXJiYWdlIGNv
bGxlY3RvciB0byBjb2xsZWN0IHNvb24sIGhvcGluZyB0byByZWNsYWltIHRoYXQgbGFyZ2Ugbm9u
LUdDIG1lbW9yeQogcmVnaW9uLgogKi8KLUpTX0VYUE9SVCB2b2lkIEpTUmVwb3J0RXh0cmFNZW1v
cnlDb3N0KEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBzaXplKSBDRl9BVkFJTEFCTEUoMTBfNiwg
N18wKTsKK0pTX0VYUE9SVCB2b2lkIEpTUmVwb3J0RXh0cmFNZW1vcnlDb3N0KEpTQ29udGV4dFJl
ZiBjdHgsIHNpemVfdCBzaXplKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3
LjApKTsKIAogSlNfRVhQT1JUIHZvaWQgSlNEaXNhYmxlR0NUaW1lcih2b2lkKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmgKaW5kZXggMTk0ZTM1MmJmZTdhZTc1ZjIzNThjZWU2
M2Q0NDhmZTFmYTI0ZDM4Mi4uODljODdmOWUyZTFmZjFiMTcxYjFlYmJhOGM0NTIxNTlmNDRmNDc1
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5oCkBAIC03OCw3ICs3OCw3IEBA
IE5TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCiBAcGFyYW0gc291cmNlVVJMIEEgVVJMIGZv
ciB0aGUgc2NyaXB0J3Mgc291cmNlIGZpbGUuIFVzZWQgYnkgZGVidWdnZXJzIGFuZCB3aGVuIHJl
cG9ydGluZyBleGNlcHRpb25zLiBUaGlzIHBhcmFtZXRlciBpcyBpbmZvcm1hdGl2ZSBvbmx5OiBp
dCBkb2VzIG5vdCBjaGFuZ2UgdGhlIGJlaGF2aW9yIG9mIHRoZSBzY3JpcHQuCiBAcmVzdWx0IFRo
ZSBsYXN0IHZhbHVlIGdlbmVyYXRlZCBieSB0aGUgc2NyaXB0LgogKi8KLS0gKEpTVmFsdWUgKill
dmFsdWF0ZVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHQgd2l0aFNvdXJjZVVSTDooTlNVUkwgKilz
b3VyY2VVUkwgTlNfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworLSAoSlNWYWx1ZSAqKWV2YWx1YXRl
U2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdCB3aXRoU291cmNlVVJMOihOU1VSTCAqKXNvdXJjZVVS
TCBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qIQogQG1l
dGhvZGdyb3VwIENhbGxiYWNrIEFjY2Vzc29ycwpAQCAtMTAxLDcgKzEwMSw3IEBAIE5TX0NMQVNT
X0FWQUlMQUJMRSgxMF85LCA3XzApCiAgYSBjYWxsYmFjayBmcm9tIEphdmFTY3JpcHQgdGhpcyBt
ZXRob2Qgd2lsbCByZXR1cm4gbmlsLgogQHJlc3VsdCBUaGUgY3VycmVudGx5IGV4ZWN1dGluZyBK
YXZhU2NyaXB0IGZ1bmN0aW9uIG9yIG5pbCBpZiB0aGVyZSBpc24ndCBvbmUuCiAqLwotKyAoSlNW
YWx1ZSAqKWN1cnJlbnRDYWxsZWUgTlNfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworKyAoSlNWYWx1
ZSAqKWN1cnJlbnRDYWxsZWUgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDgu
MCkpOwogCiAvKiEKIEBtZXRob2QKQEAgLTE3Niw3ICsxNzYsNyBAQCBOU19DTEFTU19BVkFJTEFC
TEUoMTBfOSwgN18wKQogQHByb3BlcnR5CiBAZGlzY3Vzc2lvbiBOYW1lIG9mIHRoZSBKU0NvbnRl
eHQuIEV4cG9zZWQgd2hlbiByZW1vdGUgZGVidWdnaW5nIHRoZSBjb250ZXh0LgogKi8KLUBwcm9w
ZXJ0eSAoY29weSkgTlNTdHJpbmcgKm5hbWUgTlNfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworQHBy
b3BlcnR5IChjb3B5KSBOU1N0cmluZyAqbmFtZSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAu
MTApLCBpb3MoOC4wKSk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NvbnRleHRQcml2YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q29udGV4dFByaXZhdGUuaAppbmRleCA3ZDFkMGNiZGJiNDhjMTcwZWE3NmQyYmQ2MmQ3MzBjMjAz
OWQ2YTk0Li5mZjk2MjJhZGRmNjBiN2MxMDM1N2RhY2NmMWM2ZjQxZWNiODYxZjFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFByaXZhdGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFByaXZhdGUuaApAQCAtMzYsMTkgKzM2
LDE5IEBACiBAcHJvcGVydHkKIEBkaXNjdXNzaW9uIFJlbW90ZSBpbnNwZWN0aW9uIHNldHRpbmcg
b2YgdGhlIEpTQ29udGV4dC4gRGVmYXVsdCB2YWx1ZSBpcyBZRVMuCiAqLwotQHByb3BlcnR5IChz
ZXR0ZXI9X3NldFJlbW90ZUluc3BlY3Rpb25FbmFibGVkOikgQk9PTCBfcmVtb3RlSW5zcGVjdGlv
bkVuYWJsZWQgTlNfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworQHByb3BlcnR5IChzZXR0ZXI9X3Nl
dFJlbW90ZUluc3BlY3Rpb25FbmFibGVkOikgQk9PTCBfcmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQg
SlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEKIEBwcm9w
ZXJ0eQogQGRpc2N1c3Npb24gU2V0IHdoZXRoZXIgb3Igbm90IHRoZSBuYXRpdmUgY2FsbCBzdGFj
ayBpcyBpbmNsdWRlZCB3aGVuIHJlcG9ydGluZyBleGNlcHRpb25zLiBEZWZhdWx0IHZhbHVlIGlz
IFlFUy4KICovCi1AcHJvcGVydHkgKHNldHRlcj1fc2V0SW5jbHVkZXNOYXRpdmVDYWxsU3RhY2tX
aGVuUmVwb3J0aW5nRXhjZXB0aW9uczopIEJPT0wgX2luY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hl
blJlcG9ydGluZ0V4Y2VwdGlvbnMgTlNfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworQHByb3BlcnR5
IChzZXR0ZXI9X3NldEluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlv
bnM6KSBCT09MIF9pbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25z
IEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBAcHJv
cGVydHkKIEBkaXNjdXNzaW9uIFNldCB0aGUgcnVuIGxvb3AgdGhlIFdlYiBJbnNwZWN0b3IgZGVi
dWdnZXIgc2hvdWxkIHVzZSB3aGVuIGV2YWx1YXRpbmcgSmF2YVNjcmlwdCBpbiB0aGUgSlNDb250
ZXh0LgogKi8KLUBwcm9wZXJ0eSAoc2V0dGVyPV9zZXREZWJ1Z2dlclJ1bkxvb3A6KSBDRlJ1bkxv
b3BSZWYgX2RlYnVnZ2VyUnVuTG9vcCBOU19BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitAcHJvcGVy
dHkgKHNldHRlcj1fc2V0RGVidWdnZXJSdW5Mb29wOikgQ0ZSdW5Mb29wUmVmIF9kZWJ1Z2dlclJ1
bkxvb3AgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiBAZW5k
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oCmluZGV4IGUxNWNhZTU3
NTc2NDhhMmZjOGVhMjE3MjFlZWY1MzViYWQzNTdiMjcuLjI4ZDBhNjdlOWFlMzI2MjExYWQ5NGRl
MzZjNTI2NGE3NTQyZmFmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDb250ZXh0UmVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRS
ZWYuaApAQCAtNTMsNyArNTMsNyBAQCBleHRlcm4gIkMiIHsKICBKU0NvbnRleHRHcm91cCdzIHJ1
biBsb29wIG9uY2UgaXQgaGFzIGJlZW4gY3JlYXRlZC4KIEByZXN1bHQgVGhlIGNyZWF0ZWQgSlND
b250ZXh0R3JvdXAuCiAqLwotSlNfRVhQT1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdy
b3VwQ3JlYXRlKHZvaWQpIENGX0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQT1JUIEpTQ29u
dGV4dEdyb3VwUmVmIEpTQ29udGV4dEdyb3VwQ3JlYXRlKHZvaWQpIEpTQ19BUElfQVZBSUxBQkxF
KG1hY29zeCgxMC42KSwgaW9zKDcuMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtNjEsMTQgKzYx
LDE0IEBAIEpTX0VYUE9SVCBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHcm91cENyZWF0ZSh2
b2lkKSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKIEBwYXJhbSBncm91cCBUaGUgSlNDb250ZXh0
R3JvdXAgdG8gcmV0YWluLgogQHJlc3VsdCBBIEpTQ29udGV4dEdyb3VwIHRoYXQgaXMgdGhlIHNh
bWUgYXMgZ3JvdXAuCiAqLwotSlNfRVhQT1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdy
b3VwUmV0YWluKEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwKSBDRl9BVkFJTEFCTEUoMTBfNiwgN18w
KTsKK0pTX0VYUE9SVCBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHcm91cFJldGFpbihKU0Nv
bnRleHRHcm91cFJlZiBncm91cCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjYpLCBpb3Mo
Ny4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCiBAYWJzdHJhY3QgUmVsZWFzZXMgYSBKYXZhU2NyaXB0
IGNvbnRleHQgZ3JvdXAuCiBAcGFyYW0gZ3JvdXAgVGhlIEpTQ29udGV4dEdyb3VwIHRvIHJlbGVh
c2UuCiAqLwotSlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3JvdXBSZWxlYXNlKEpTQ29udGV4dEdy
b3VwUmVmIGdyb3VwKSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCB2b2lkIEpT
Q29udGV4dEdyb3VwUmVsZWFzZShKU0NvbnRleHRHcm91cFJlZiBncm91cCkgSlNDX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC04Myw3
ICs4Myw3IEBAIEpTX0VYUE9SVCB2b2lkIEpTQ29udGV4dEdyb3VwUmVsZWFzZShKU0NvbnRleHRH
cm91cFJlZiBncm91cCkgQ0ZfQVZBSUxBQkxFKDEwXzYsCiAgTlVMTCB0byB1c2UgdGhlIGRlZmF1
bHQgb2JqZWN0IGNsYXNzLgogQHJlc3VsdCBBIEpTR2xvYmFsQ29udGV4dCB3aXRoIGEgZ2xvYmFs
IG9iamVjdCBvZiBjbGFzcyBnbG9iYWxPYmplY3RDbGFzcy4KICovCi1KU19FWFBPUlQgSlNHbG9i
YWxDb250ZXh0UmVmIEpTR2xvYmFsQ29udGV4dENyZWF0ZShKU0NsYXNzUmVmIGdsb2JhbE9iamVj
dENsYXNzKSBDRl9BVkFJTEFCTEUoMTBfNSwgN18wKTsKK0pTX0VYUE9SVCBKU0dsb2JhbENvbnRl
eHRSZWYgSlNHbG9iYWxDb250ZXh0Q3JlYXRlKEpTQ2xhc3NSZWYgZ2xvYmFsT2JqZWN0Q2xhc3Mp
IEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC41KSwgaW9zKDcuMCkpOwogCiAvKiEKIEBmdW5j
dGlvbgpAQCAtOTcsNyArOTcsNyBAQCBKU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpTR2xv
YmFsQ29udGV4dENyZWF0ZShKU0NsYXNzUmVmIGdsb2JhbE9iamVjdENsYXNzKQogQHJlc3VsdCBB
IEpTR2xvYmFsQ29udGV4dCB3aXRoIGEgZ2xvYmFsIG9iamVjdCBvZiBjbGFzcyBnbG9iYWxPYmpl
Y3RDbGFzcyBhbmQgYSBjb250ZXh0CiAgZ3JvdXAgZXF1YWwgdG8gZ3JvdXAuCiAqLwotSlNfRVhQ
T1JUIEpTR2xvYmFsQ29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKEpTQ29u
dGV4dEdyb3VwUmVmIGdyb3VwLCBKU0NsYXNzUmVmIGdsb2JhbE9iamVjdENsYXNzKSBDRl9BVkFJ
TEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgSlNHbG9iYWxD
b250ZXh0Q3JlYXRlSW5Hcm91cChKU0NvbnRleHRHcm91cFJlZiBncm91cCwgSlNDbGFzc1JlZiBn
bG9iYWxPYmplY3RDbGFzcykgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjYpLCBpb3MoNy4w
KSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC0xMjgsNyArMTI4LDcgQEAgSlNfRVhQT1JUIEpTT2Jq
ZWN0UmVmIEpTQ29udGV4dEdldEdsb2JhbE9iamVjdChKU0NvbnRleHRSZWYgY3R4KTsKIEBwYXJh
bSBjdHggVGhlIEpTQ29udGV4dCB3aG9zZSBncm91cCB5b3Ugd2FudCB0byBnZXQuCiBAcmVzdWx0
IGN0eCdzIGdyb3VwLgogKi8KLUpTX0VYUE9SVCBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRH
ZXRHcm91cChKU0NvbnRleHRSZWYgY3R4KSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VY
UE9SVCBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHZXRHcm91cChKU0NvbnRleHRSZWYgY3R4
KSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiBAZnVu
Y3Rpb24KQEAgLTEzNiw3ICsxMzYsNyBAQCBKU19FWFBPUlQgSlNDb250ZXh0R3JvdXBSZWYgSlND
b250ZXh0R2V0R3JvdXAoSlNDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEwXwogQHBhcmFt
IGN0eCBUaGUgSlNDb250ZXh0IHdob3NlIGdsb2JhbCBjb250ZXh0IHlvdSB3YW50IHRvIGdldC4K
IEByZXN1bHQgY3R4J3MgZ2xvYmFsIGNvbnRleHQuCiAqLwotSlNfRVhQT1JUIEpTR2xvYmFsQ29u
dGV4dFJlZiBKU0NvbnRleHRHZXRHbG9iYWxDb250ZXh0KEpTQ29udGV4dFJlZiBjdHgpIENGX0FW
QUlMQUJMRSgxMF83LCA3XzApOworSlNfRVhQT1JUIEpTR2xvYmFsQ29udGV4dFJlZiBKU0NvbnRl
eHRHZXRHbG9iYWxDb250ZXh0KEpTQ29udGV4dFJlZiBjdHgpIEpTQ19BUElfQVZBSUxBQkxFKG1h
Y29zeCgxMC43KSwgaW9zKDcuMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTQ2LDcgKzE0Niw3
IEBAIEpTX0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgSlNDb250ZXh0R2V0R2xvYmFsQ29udGV4
dChKU0NvbnRleHRSZWYgY3R4KSBDRl9BVkFJCiBAZGlzY3Vzc2lvbiBBIEpTR2xvYmFsQ29udGV4
dCdzIG5hbWUgaXMgZXhwb3NlZCBmb3IgcmVtb3RlIGRlYnVnZ2luZyB0byBtYWtlIGl0CiBlYXNp
ZXIgdG8gaWRlbnRpZnkgdGhlIGNvbnRleHQgeW91IHdvdWxkIGxpa2UgdG8gYXR0YWNoIHRvLgog
Ki8KLUpTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU0dsb2JhbENvbnRleHRDb3B5TmFtZShKU0dsb2Jh
bENvbnRleHRSZWYgY3R4KSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitKU19FWFBPUlQgSlNT
dHJpbmdSZWYgSlNHbG9iYWxDb250ZXh0Q29weU5hbWUoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkg
SlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEKIEBmdW5j
dGlvbgpAQCAtMTU0LDcgKzE1NCw3IEBAIEpTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU0dsb2JhbENv
bnRleHRDb3B5TmFtZShKU0dsb2JhbENvbnRleHRSZWYgY3R4KSBDRl9BVkFJTEFCCiBAcGFyYW0g
Y3R4IFRoZSBKU0dsb2JhbENvbnRleHQgdGhhdCB5b3Ugd2FudCB0byBuYW1lLgogQHBhcmFtIG5h
bWUgVGhlIHJlbW90ZSBkZWJ1Z2dpbmcgbmFtZSB0byBzZXQgb24gY3R4LgogKi8KLUpTX0VYUE9S
VCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldE5hbWUoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwgSlNT
dHJpbmdSZWYgbmFtZSkgQ0ZfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworSlNfRVhQT1JUIHZvaWQg
SlNHbG9iYWxDb250ZXh0U2V0TmFtZShKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1Jl
ZiBuYW1lKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSk7CiAKICNp
ZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NvbnRleHRSZWZJbnRlcm5hbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHRSZWZJbnRlcm5hbC5oCmluZGV4IDc5ZDdlYjZmMzllN2UyY2E4ZjRhOWI5NGYyNzIyNmRi
MmY3MDUyOTUuLjlkNGYxOGEyMjk1MDcyNmQ5MTAyZDI1MGI1Y2FhMGNlN2FkNWM3MmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmSW50ZXJuYWwuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZkludGVybmFsLmgKQEAg
LTQyLDcgKzQyLDcgQEAgZXh0ZXJuICJDIiB7CiBAYWJzdHJhY3QgR2V0cyB0aGUgcnVuIGxvb3Ag
dXNlZCBieSB0aGUgV2ViIEluc3BlY3RvciBkZWJ1Z2dlciB3aGVuIGV2YWx1YXRpbmcgSmF2YVNj
cmlwdCBpbiB0aGlzIGNvbnRleHQuCiBAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgd2hv
c2Ugc2V0dGluZyB5b3Ugd2FudCB0byBnZXQuCiAqLwotSlNfRVhQT1JUIENGUnVuTG9vcFJlZiBK
U0dsb2JhbENvbnRleHRHZXREZWJ1Z2dlclJ1bkxvb3AoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkg
Q0ZfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworSlNfRVhQT1JUIENGUnVuTG9vcFJlZiBKU0dsb2Jh
bENvbnRleHRHZXREZWJ1Z2dlclJ1bkxvb3AoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkgSlNDX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpA
QCAtNTAsNyArNTAsNyBAQCBKU19FWFBPUlQgQ0ZSdW5Mb29wUmVmIEpTR2xvYmFsQ29udGV4dEdl
dERlYnVnZ2VyUnVuTG9vcChKU0dsb2JhbENvbnRleHRSZWYgY3R4KQogQHBhcmFtIGN0eCBUaGUg
SlNHbG9iYWxDb250ZXh0IHRoYXQgeW91IHdhbnQgdG8gY2hhbmdlLgogQHBhcmFtIHJ1bkxvb3Ag
VGhlIG5ldyB2YWx1ZSBvZiB0aGUgc2V0dGluZyBmb3IgdGhlIGNvbnRleHQuCiAqLwotSlNfRVhQ
T1JUIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0RGVidWdnZXJSdW5Mb29wKEpTR2xvYmFsQ29udGV4
dFJlZiBjdHgsIENGUnVuTG9vcFJlZiBydW5Mb29wKSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7
CitKU19FWFBPUlQgdm9pZCBKU0dsb2JhbENvbnRleHRTZXREZWJ1Z2dlclJ1bkxvb3AoSlNHbG9i
YWxDb250ZXh0UmVmIGN0eCwgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApIEpTQ19BUElfQVZBSUxBQkxF
KG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKICNlbmRpZgogCiAjaWZkZWYgX19jcGx1c3BsdXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmUHJpdmF0
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWZQcml2YXRlLmgKaW5k
ZXggMTk2MDRlYTc0OTM3ZWZkYTk2N2NlM2RmNTc3N2QyYTE1MTRkYThkYy4uZWM2NzZkOGM4NzE0
ODNmODNmY2MzYzU2NGI1NTRlODE3MDM3MjJlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NvbnRleHRSZWZQcml2YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NvbnRleHRSZWZQcml2YXRlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgZXh0ZXJuICJD
IiB7CiBAcGFyYW0gY3R4IFRoZSBKU0NvbnRleHQgd2hvc2UgYmFja3RyYWNlIHlvdSB3YW50IHRv
IGdldAogQHJlc3VsdCBBIHN0cmluZyBjb250YWluaW5nIHRoZSBiYWNrdHJhY2UKICovCi1KU19F
WFBPUlQgSlNTdHJpbmdSZWYgSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKEpTQ29udGV4dFJlZiBj
dHgsIHVuc2lnbmVkIG1heFN0YWNrU2l6ZSkgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19F
WFBPUlQgSlNTdHJpbmdSZWYgSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKEpTQ29udGV4dFJlZiBj
dHgsIHVuc2lnbmVkIG1heFN0YWNrU2l6ZSkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjYp
LCBpb3MoNy4wKSk7CiAgICAgCiAKIC8qISAKQEAgLTg1LDE0ICs4NSwxNCBAQCB0eXBlZGVmIGJv
b2wKICBuZWVkIHRvIGNhbGwgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGltaXQgYmVm
b3JlIHlvdSBzdGFydCBleGVjdXRpbmcKICBhbnkgc2NyaXB0cy4KICovCi1KU19FWFBPUlQgdm9p
ZCBKU0NvbnRleHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdChKU0NvbnRleHRHcm91cFJlZiBn
cm91cCwgZG91YmxlIGxpbWl0LCBKU1Nob3VsZFRlcm1pbmF0ZUNhbGxiYWNrIGNhbGxiYWNrLCB2
b2lkKiBjb250ZXh0KSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCB2b2lkIEpT
Q29udGV4dEdyb3VwU2V0RXhlY3V0aW9uVGltZUxpbWl0KEpTQ29udGV4dEdyb3VwUmVmIGdyb3Vw
LCBkb3VibGUgbGltaXQsIEpTU2hvdWxkVGVybWluYXRlQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQq
IGNvbnRleHQpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9zKDcuMCkpOwogCiAv
KiEKIEBmdW5jdGlvbgogQGFic3RyYWN0IENsZWFycyB0aGUgc2NyaXB0IGV4ZWN1dGlvbiB0aW1l
IGxpbWl0LgogQHBhcmFtIGdyb3VwIFRoZSBKYXZhU2NyaXB0IGNvbnRleHQgZ3JvdXAgdGhhdCB0
aGUgdGltZSBsaW1pdCBpcyBjbGVhcmVkIG9uLgogKi8KLUpTX0VYUE9SVCB2b2lkIEpTQ29udGV4
dEdyb3VwQ2xlYXJFeGVjdXRpb25UaW1lTGltaXQoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXApIENG
X0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3JvdXBDbGVh
ckV4ZWN1dGlvblRpbWVMaW1pdChKU0NvbnRleHRHcm91cFJlZiBncm91cCkgSlNDX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC0xMDEs
NyArMTAxLDcgQEAgSlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3JvdXBDbGVhckV4ZWN1dGlvblRp
bWVMaW1pdChKU0NvbnRleHRHcm91cFJlZiBncm91cCkgQ0YKIEByZXN1bHQgVGhlIHZhbHVlIG9m
IHRoZSBzZXR0aW5nLCB0cnVlIGlmIHJlbW90ZSBpbnNwZWN0aW9uIGlzIGVuYWJsZWQsIG90aGVy
d2lzZSBmYWxzZS4KIEBkaXNjdXNzaW9uIFJlbW90ZSBpbnNwZWN0aW9uIGlzIHRydWUgYnkgZGVm
YXVsdC4KICovCi1KU19FWFBPUlQgYm9vbCBKU0dsb2JhbENvbnRleHRHZXRSZW1vdGVJbnNwZWN0
aW9uRW5hYmxlZChKU0dsb2JhbENvbnRleHRSZWYgY3R4KSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhf
MCk7CitKU19FWFBPUlQgYm9vbCBKU0dsb2JhbENvbnRleHRHZXRSZW1vdGVJbnNwZWN0aW9uRW5h
YmxlZChKU0dsb2JhbENvbnRleHRSZWYgY3R4KSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAu
MTApLCBpb3MoOC4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC0xMDksNyArMTA5LDcgQEAgSlNf
RVhQT1JUIGJvb2wgSlNHbG9iYWxDb250ZXh0R2V0UmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQoSlNH
bG9iYWxDb250ZXh0UmVmIGN0eCkKIEBwYXJhbSBjdHggVGhlIEpTR2xvYmFsQ29udGV4dCB0aGF0
IHlvdSB3YW50IHRvIGNoYW5nZS4KIEBwYXJhbSBlbmFibGVkIFRoZSBuZXcgcmVtb3RlIGluc3Bl
Y3Rpb24gZW5hYmxlZCBzZXR0aW5nIGZvciB0aGUgY29udGV4dC4KICovCi1KU19FWFBPUlQgdm9p
ZCBKU0dsb2JhbENvbnRleHRTZXRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZChKU0dsb2JhbENvbnRl
eHRSZWYgY3R4LCBib29sIGVuYWJsZWQpIENGX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsgICAgCitK
U19FWFBPUlQgdm9pZCBKU0dsb2JhbENvbnRleHRTZXRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZChK
U0dsb2JhbENvbnRleHRSZWYgY3R4LCBib29sIGVuYWJsZWQpIEpTQ19BUElfQVZBSUxBQkxFKG1h
Y29zeCgxMC4xMCksIGlvcyg4LjApKTsgICAgCiAKIC8qIQogQGZ1bmN0aW9uCkBAIC0xMTgsNyAr
MTE4LDcgQEAgSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0UmVtb3RlSW5zcGVjdGlv
bkVuYWJsZWQoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwKIEByZXN1bHQgVGhlIHZhbHVlIG9mIHRo
ZSBzZXR0aW5nLCB0cnVlIGlmIHJlbW90ZSBpbnNwZWN0aW9uIGlzIGVuYWJsZWQsIG90aGVyd2lz
ZSBmYWxzZS4KIEBkaXNjdXNzaW9uIFRoaXMgc2V0dGluZyBpcyB0cnVlIGJ5IGRlZmF1bHQuCiAq
LwotSlNfRVhQT1JUIGJvb2wgSlNHbG9iYWxDb250ZXh0R2V0SW5jbHVkZXNOYXRpdmVDYWxsU3Rh
Y2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucyhKU0dsb2JhbENvbnRleHRSZWYgY3R4KSBDRl9BVkFJ
TEFCTEUoMTBfMTAsIDhfMCk7CitKU19FWFBPUlQgYm9vbCBKU0dsb2JhbENvbnRleHRHZXRJbmNs
dWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zKEpTR2xvYmFsQ29udGV4
dFJlZiBjdHgpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAog
LyohCiBAZnVuY3Rpb24KQEAgLTEyNiw3ICsxMjYsNyBAQCBKU19FWFBPUlQgYm9vbCBKU0dsb2Jh
bENvbnRleHRHZXRJbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25z
KAogQHBhcmFtIGN0eCBUaGUgSlNHbG9iYWxDb250ZXh0IHRoYXQgeW91IHdhbnQgdG8gY2hhbmdl
LgogQHBhcmFtIGluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrIFRoZSBuZXcgdmFsdWUgb2YgdGhlIHNl
dHRpbmcgZm9yIHRoZSBjb250ZXh0LgogKi8KLUpTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29udGV4
dFNldEluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMoSlNHbG9i
YWxDb250ZXh0UmVmIGN0eCwgYm9vbCBpbmNsdWRlc05hdGl2ZUNhbGxTdGFjaykgQ0ZfQVZBSUxB
QkxFKDEwXzEwLCA4XzApOworSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0SW5jbHVk
ZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucyhKU0dsb2JhbENvbnRleHRS
ZWYgY3R4LCBib29sIGluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrKSBKU0NfQVBJX0FWQUlMQUJMRSht
YWNvc3goMTAuMTApLCBpb3MoOC4wKSk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5oCmluZGV4IDAxMDczZmFkOTdlNzBi
NzZiZDZiNjZhMzczM2FmMjYxY2M1Mjc0OWMuLjQxODA3NGJjNDdkNjZjMTU4NDA3ZmU1ODM4MzY5
YTUxNWMwMzM1ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5h
Z2VkVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVl
LmgKQEAgLTU3LDcgKzU3LDcgQEAgTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzksIDdfMCkKIEByZXN1
bHQgVGhlIG5ldyBKU01hbmFnZWRWYWx1ZS4KICovCiArIChKU01hbmFnZWRWYWx1ZSAqKW1hbmFn
ZWRWYWx1ZVdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlOwotKyAoSlNNYW5hZ2VkVmFsdWUgKilt
YW5hZ2VkVmFsdWVXaXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBhbmRPd25lcjooaWQpb3duZXIg
TlNfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworKyAoSlNNYW5hZ2VkVmFsdWUgKiltYW5hZ2VkVmFs
dWVXaXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBhbmRPd25lcjooaWQpb3duZXIgSlNDX0FQSV9B
VkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEKIEBtZXRob2QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKaW5kZXggNTY2YjczNjJmMWI1ZGZl
NDllZjNkOTZjZjU3MjRlZjQ4NzhmYmY4MS4uNTQ1MWEyZjlhNTYxMzQ3YTkyNTgxZDVmM2U0NDI0
NjI5NjlkNDBmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVj
dFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAK
QEAgLTM2Niw2ICszNjYsMTAwIEBAIHZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eShKU0NvbnRleHRS
ZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlCiAgICAgaGFuZGxl
RXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbik7CiB9CiAKK2Jvb2wgSlNP
YmplY3RIYXNQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3Qs
IEpTVmFsdWVSZWYga2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKCFjdHgp
IHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9K
UyhvYmplY3QpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSB0b0pTKGV4ZWMsIGtleSkudG9Qcm9w
ZXJ0eUtleShleGVjKTsKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4
ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+aGFzUHJvcGVydHkoZXhl
YywgaWRlbnQpOworICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNl
cHRpb24pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0pTVmFsdWVSZWYgSlNPYmplY3RHZXRQ
cm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVS
ZWYga2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKCFjdHgpIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
KyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9DQVRDSF9TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVj
dCk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IHRvSlMoZXhlYywga2V5KS50b1Byb3BlcnR5S2V5
KGV4ZWMpOworICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhj
ZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIEpTVmFsdWUganNWYWx1ZSA9IGpzT2JqZWN0LT5nZXQoZXhlYywgaWRlbnQp
OworICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pOwor
ICAgIHJldHVybiB0b1JlZihleGVjLCBqc1ZhbHVlKTsKK30KKwordm9pZCBKU09iamVjdFNldFBy
b3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJl
ZiBrZXksIEpTVmFsdWVSZWYgdmFsdWUsIEpTUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMs
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoIWN0eCkgeworICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBFeGVjU3RhdGUq
IGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0xvY2tI
b2xkZXIgbG9ja2VyKHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2
bSk7CisKKyAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CisgICAgSlNWYWx1
ZSBqc1ZhbHVlID0gdG9KUyhleGVjLCB2YWx1ZSk7CisKKyAgICBJZGVudGlmaWVyIGlkZW50ID0g
dG9KUyhleGVjLCBrZXkpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4Y2Vw
dGlvbklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6
RGlkVGhyb3cpCisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgZG9lc05vdEhhdmVQcm9wZXJ0
eSA9IGF0dHJpYnV0ZXMgJiYgIWpzT2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBpZGVudCk7Cisg
ICAgaWYgKExJS0VMWSghc2NvcGUuZXhjZXB0aW9uKCkpKSB7CisgICAgICAgIGlmIChkb2VzTm90
SGF2ZVByb3BlcnR5KSB7CisgICAgICAgICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzYyhqc1Zh
bHVlLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSkt
PmRlZmluZU93blByb3BlcnR5KGpzT2JqZWN0LCBleGVjLCBpZGVudCwgZGVzYywgZmFsc2UpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoanNPYmpl
Y3QpOworICAgICAgICAgICAganNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KGpzT2JqZWN0
LCBleGVjLCBpZGVudCwganNWYWx1ZSwgc2xvdCk7CisgICAgICAgIH0KKyAgICB9CisgICAgaGFu
ZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbik7Cit9CisKK2Jvb2wg
SlNPYmplY3REZWxldGVQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBv
YmplY3QsIEpTVmFsdWVSZWYga2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYg
KCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIGpzT2JqZWN0
ID0gdG9KUyhvYmplY3QpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSB0b0pTKGV4ZWMsIGtleSku
dG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2Nv
cGUsIGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5kZWxldGVQcm9wZXJ0eShqc09iamVjdCwgZXhlYywgaWRlbnQpOworICAgIGhhbmRs
ZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoSlNDb250
ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgaWYgKCFjdHgpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNPYmplY3RSZWYuaAppbmRleCA5NWQ1M2I3ZjRlNThlOTZmMGNiYzMxNTk1YWY5
YzQ2MTk3OGFhNDNkLi5kYjU1NjlhNmNiZDBlZTBiN2JjYmZjYzNlMjkyZjUzMjk3NWU2NzZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oCkBAIC00NDEsNyArNDQxLDcg
QEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUNvbnN0cnVjdG9yKEpTQ29udGV4
dFJlZiBjdHgsIEpTQ2xhc3NSZWYganNDbGEKICBAZGlzY3Vzc2lvbiBUaGUgYmVoYXZpb3Igb2Yg
dGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBleGFjdGx5IG1hdGNoIHRoZSBiZWhhdmlvciBvZiB0aGUg
YnVpbHQtaW4gQXJyYXkgY29uc3RydWN0b3IuIFNwZWNpZmljYWxseSwgaWYgb25lIGFyZ3VtZW50
IAogIGlzIHN1cHBsaWVkLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gYXJyYXkgd2l0aCBvbmUg
ZWxlbWVudC4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUFycmF5KEpT
Q29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFy
Z3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF82LCA3XzAp
OworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUFycmF5KEpTQ29udGV4dFJlZiBj
dHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9z
KDcuMCkpOwogCiAvKiEKICBAZnVuY3Rpb24KQEAgLTQ1Miw3ICs0NTIsNyBAQCBKU19FWFBPUlQg
SlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFy
Z3VtZW50Q291bnQsCiAgQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVm
IGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91
IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0IEEgSlNPYmplY3Qg
dGhhdCBpcyBhIERhdGUuCiAgKi8KLUpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VE
YXRlKEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVl
UmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF82
LCA3XzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZURhdGUoSlNDb250ZXh0
UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRz
W10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjYp
LCBpb3MoNy4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtNDYzLDcgKzQ2Myw3IEBAIEpTX0VY
UE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VEYXRlKEpTQ29udGV4dFJlZiBjdHgsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjCiAgQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1Zh
bHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwg
aWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0IEEgSlNP
YmplY3QgdGhhdCBpcyBhIEVycm9yLgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmpl
Y3RNYWtlRXJyb3IoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0
IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxB
QkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRXJyb3Io
SlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFj
b3N4KDEwLjYpLCBpb3MoNy4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtNDc0LDcgKzQ3NCw3
IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VFcnJvcihKU0NvbnRleHRSZWYg
Y3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwKICBAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0
byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBh
c3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1
bHQgQSBKU09iamVjdCB0aGF0IGlzIGEgUmVnRXhwLgogICovCi1KU19FWFBPUlQgSlNPYmplY3RS
ZWYgSlNPYmplY3RNYWtlUmVnRXhwKEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
IENGX0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0
TWFrZVJlZ0V4cChKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3Qg
SlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FW
QUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTUz
Niw5ICs1MzYsOSBAQCBKU19FWFBPUlQgSlNWYWx1ZVJlZiBKU09iamVjdEdldFByb3BlcnR5KEpT
Q29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSgogQHBhcmFtIGN0eCBUaGUgZXhl
Y3V0aW9uIGNvbnRleHQgdG8gdXNlLgogQHBhcmFtIG9iamVjdCBUaGUgSlNPYmplY3Qgd2hvc2Ug
cHJvcGVydHkgeW91IHdhbnQgdG8gc2V0LgogQHBhcmFtIHByb3BlcnR5TmFtZSBBIEpTU3RyaW5n
IGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5J3MgbmFtZS4KLUBwYXJhbSB2YWx1ZSBBIEpTVmFsdWUg
dG8gdXNlIGFzIHRoZSBwcm9wZXJ0eSdzIHZhbHVlLgotQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50
ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55
LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KK0Bw
YXJhbSB2YWx1ZSBBIEpTVmFsdWVSZWYgdG8gdXNlIGFzIHRoZSBwcm9wZXJ0eSdzIHZhbHVlLgog
QHBhcmFtIGF0dHJpYnV0ZXMgQSBsb2dpY2FsbHkgT1JlZCBzZXQgb2YgSlNQcm9wZXJ0eUF0dHJp
YnV0ZXMgdG8gZ2l2ZSB0byB0aGUgcHJvcGVydHkuCitAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRl
ciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnku
IFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogKi8K
IEpTX0VYUE9SVCB2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNP
YmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYgdmFs
dWUsIEpTUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bik7CiAKQEAgLTU1Myw2ICs1NTMsNTQgQEAgSlNfRVhQT1JUIHZvaWQgSlNPYmplY3RTZXRQcm9w
ZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW4KICovCiBK
U19FWFBPUlQgYm9vbCBKU09iamVjdERlbGV0ZVByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpT
T2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pOwogCisvKiEKK0BmdW5jdGlvbgorQGFic3RyYWN0IFRlc3RzIHdoZXRoZXIgYW4g
b2JqZWN0IGhhcyBhIGdpdmVuIHByb3BlcnR5IHVzaW5nIGEgSlNWYWx1ZVJlZiBhcyB0aGUgcHJv
cGVydHkga2V5LgorQHBhcmFtIG9iamVjdCBUaGUgSlNPYmplY3QgdG8gdGVzdC4KK0BwYXJhbSBw
cm9wZXJ0eUtleSBBIEpTVmFsdWVSZWYgY29udGFpbmluZyB0aGUgcHJvcGVydHkga2V5IHRvIHVz
ZSB3aGVuIGxvb2tpbmcgdXAgdGhlIHByb3BlcnR5LgorQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50
ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55
LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KK0By
ZXN1bHQgdHJ1ZSBpZiB0aGUgb2JqZWN0IGhhcyBhIHByb3BlcnR5IHdob3NlIG5hbWUgbWF0Y2hl
cyBwcm9wZXJ0eUtleSwgb3RoZXJ3aXNlIGZhbHNlLgorQGRpc2N1c3Npb24gVGhpcyBmdW5jdGlv
biBpcyB0aGUgc2FtZSBhcyBwZXJmb3JtaW5nICJwcm9wZXJ0eUtleSBpbiBvYmplY3QiIGZyb20g
SmF2YVNjcmlwdC4KKyovCitKU19FWFBPUlQgYm9vbCBKU09iamVjdEhhc1Byb3BlcnR5S2V5KEpT
Q29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBwcm9wZXJ0eUtl
eSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goSlNDX01B
Q19UQkEpLCBpb3MoSlNDX0lPU19UQkEpKTsKKworLyohCitAZnVuY3Rpb24KK0BhYnN0cmFjdCBH
ZXRzIGEgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QgdXNpbmcgYSBKU1ZhbHVlUmVmIGFzIHRoZSBw
cm9wZXJ0eSBrZXkuCitAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCitA
cGFyYW0gb2JqZWN0IFRoZSBKU09iamVjdCB3aG9zZSBwcm9wZXJ0eSB5b3Ugd2FudCB0byBnZXQu
CitAcGFyYW0gcHJvcGVydHlLZXkgQSBKU1ZhbHVlUmVmIGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5
IGtleSB0byB1c2Ugd2hlbiBsb29raW5nIHVwIHRoZSBwcm9wZXJ0eS4KK0BwYXJhbSBleGNlcHRp
b24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRp
b24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNl
cHRpb24uCitAcmVzdWx0IFRoZSBwcm9wZXJ0eSdzIHZhbHVlIGlmIG9iamVjdCBoYXMgdGhlIHBy
b3BlcnR5IGtleSwgb3RoZXJ3aXNlIHRoZSB1bmRlZmluZWQgdmFsdWUuCitAZGlzY3Vzc2lvbiBU
aGlzIGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHBlcmZvcm1pbmcgIm9iamVjdFtwcm9wZXJ0eUtl
eV0iIGZyb20gSmF2YVNjcmlwdC4KKyovCitKU19FWFBPUlQgSlNWYWx1ZVJlZiBKU09iamVjdEdl
dFByb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1
ZVJlZiBwcm9wZXJ0eUtleSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJM
RShtYWNvc3goSlNDX01BQ19UQkEpLCBpb3MoSlNDX0lPU19UQkEpKTsKKworLyohCitAZnVuY3Rp
b24KK0BhYnN0cmFjdCBTZXRzIGEgcHJvcGVydHkgb24gYW4gb2JqZWN0IHVzaW5nIGEgSlNWYWx1
ZVJlZiBhcyB0aGUgcHJvcGVydHkga2V5LgorQHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRl
eHQgdG8gdXNlLgorQHBhcmFtIG9iamVjdCBUaGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91
IHdhbnQgdG8gc2V0LgorQHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWluaW5n
IHRoZSBwcm9wZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHkuCitA
cGFyYW0gdmFsdWUgQSBKU1ZhbHVlUmVmIHRvIHVzZSBhcyB0aGUgcHJvcGVydHkncyB2YWx1ZS4K
K0BwYXJhbSBhdHRyaWJ1dGVzIEEgbG9naWNhbGx5IE9SZWQgc2V0IG9mIEpTUHJvcGVydHlBdHRy
aWJ1dGVzIHRvIGdpdmUgdG8gdGhlIHByb3BlcnR5LgorQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50
ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55
LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KK0Bk
aXNjdXNzaW9uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXMgcGVyZm9ybWluZyAib2JqZWN0
W3Byb3BlcnR5S2V5XSA9IHZhbHVlIiBmcm9tIEphdmFTY3JpcHQuCisqLworSlNfRVhQT1JUIHZv
aWQgSlNPYmplY3RTZXRQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBv
YmplY3QsIEpTVmFsdWVSZWYgcHJvcGVydHlLZXksIEpTVmFsdWVSZWYgdmFsdWUsIEpTUHJvcGVy
dHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9B
VkFJTEFCTEUobWFjb3N4KEpTQ19NQUNfVEJBKSwgaW9zKEpTQ19JT1NfVEJBKSk7CisKKy8qIQor
QGZ1bmN0aW9uCitAYWJzdHJhY3QgRGVsZXRlcyBhIHByb3BlcnR5IGZyb20gYW4gb2JqZWN0IHVz
aW5nIGEgSlNWYWx1ZVJlZiBhcyB0aGUgcHJvcGVydHkga2V5LgorQHBhcmFtIGN0eCBUaGUgZXhl
Y3V0aW9uIGNvbnRleHQgdG8gdXNlLgorQHBhcmFtIG9iamVjdCBUaGUgSlNPYmplY3Qgd2hvc2Ug
cHJvcGVydHkgeW91IHdhbnQgdG8gZGVsZXRlLgorQHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1
ZVJlZiBjb250YWluaW5nIHRoZSBwcm9wZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0
aGUgcHJvcGVydHkuCitAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYg
aW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3Ug
ZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgorQHJlc3VsdCB0cnVlIGlmIHRoZSBk
ZWxldGUgb3BlcmF0aW9uIHN1Y2NlZWRzLCBvdGhlcndpc2UgZmFsc2UgKGZvciBleGFtcGxlLCBp
ZiB0aGUgcHJvcGVydHkgaGFzIHRoZSBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgYXR0
cmlidXRlIHNldCkuCitAZGlzY3Vzc2lvbiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHBl
cmZvcm1pbmcgImRlbGV0ZSBvYmplY3RbcHJvcGVydHlLZXldIiBmcm9tIEphdmFTY3JpcHQuCisq
LworSlNfRVhQT1JUIGJvb2wgSlNPYmplY3REZWxldGVQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYg
Y3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYgcHJvcGVydHlLZXksIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KEpTQ19NQUNfVEJBKSwgaW9z
KEpTQ19JT1NfVEJBKSk7CisKIC8qIQogQGZ1bmN0aW9uCiBAYWJzdHJhY3QgR2V0cyBhIHByb3Bl
cnR5IGZyb20gYW4gb2JqZWN0IGJ5IG51bWVyaWMgaW5kZXguCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmgKaW5kZXggYzhiYWM2ZGQwZTRhNjQ4MDljYjM0
NTBjZGJhNGMwMzk3YTQ4YTA1Ny4uNjE4NmI5MjNlYzhhYjhiOTQ4ZTc5M2FmMDRiZGQ4NDMyNzQw
MDM0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1JlbW90ZUluc3Bl
Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3Iu
aApAQCAtNDAsMTQgKzQwLDE0IEBAIHR5cGVkZWYgcGlkX3QgSlNQcm9jZXNzSUQ7CiBleHRlcm4g
IkMiIHsKICNlbmRpZgogCi1KU19FWFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvckRpc2FibGVB
dXRvU3RhcnQodm9pZCkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzApOwotSlNfRVhQT1JUIHZvaWQg
SlNSZW1vdGVJbnNwZWN0b3JTdGFydCh2b2lkKSBDRl9BVkFJTEFCTEUoMTBfMTEsIDlfMCk7Ci1K
U19FWFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvclNldFBhcmVudFByb2Nlc3NJbmZvcm1hdGlv
bihKU1Byb2Nlc3NJRCwgY29uc3QgdWludDhfdCogYXVkaXREYXRhLCBzaXplX3QgYXVkaXRMZW5n
dGgpIENGX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsKK0pTX0VYUE9SVCB2b2lkIEpTUmVtb3RlSW5z
cGVjdG9yRGlzYWJsZUF1dG9TdGFydCh2b2lkKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAu
MTEpLCBpb3MoOS4wKSk7CitKU19FWFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvclN0YXJ0KHZv
aWQpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSksIGlvcyg5LjApKTsKK0pTX0VYUE9S
VCB2b2lkIEpTUmVtb3RlSW5zcGVjdG9yU2V0UGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uKEpTUHJv
Y2Vzc0lELCBjb25zdCB1aW50OF90KiBhdWRpdERhdGEsIHNpemVfdCBhdWRpdExlbmd0aCkgSlND
X0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOwogCi1KU19FWFBPUlQgdm9p
ZCBKU1JlbW90ZUluc3BlY3RvclNldExvZ1RvU3lzdGVtQ29uc29sZShib29sKSBDRl9BVkFJTEFC
TEUoMTBfMTEsIDlfMCk7CitKU19FWFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvclNldExvZ1Rv
U3lzdGVtQ29uc29sZShib29sKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3Mo
OS4wKSk7CiAKLUpTX0VYUE9SVCBib29sIEpTUmVtb3RlSW5zcGVjdG9yR2V0SW5zcGVjdGlvbkVu
YWJsZWRCeURlZmF1bHQodm9pZCkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzApOwotSlNfRVhQT1JU
IHZvaWQgSlNSZW1vdGVJbnNwZWN0b3JTZXRJbnNwZWN0aW9uRW5hYmxlZEJ5RGVmYXVsdChib29s
KSBDRl9BVkFJTEFCTEUoMTBfMTEsIDlfMCk7CitKU19FWFBPUlQgYm9vbCBKU1JlbW90ZUluc3Bl
Y3RvckdldEluc3BlY3Rpb25FbmFibGVkQnlEZWZhdWx0KHZvaWQpIEpTQ19BUElfQVZBSUxBQkxF
KG1hY29zeCgxMC4xMSksIGlvcyg5LjApKTsKK0pTX0VYUE9SVCB2b2lkIEpTUmVtb3RlSW5zcGVj
dG9yU2V0SW5zcGVjdGlvbkVuYWJsZWRCeURlZmF1bHQoYm9vbCkgSlNDX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5oCmluZGV4IGUyM2I3NmQyZWI0YWE1YTQ5
OGI1NWViYTQ3Mzc0NjNmNmNiOTM5YWMuLjZkODYwMjJmYTU2OTk1NDY0NmJlZWEzYWU5ZWZmN2Iy
Y2EzNmEwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFy
cmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuaApAQCAt
NDUsNyArNDUsNyBAQCBleHRlcm4gIkMiIHsKICBAcGFyYW0gZXhjZXB0aW9uICAgIEEgcG9pbnRl
ciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnku
IFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEBy
ZXN1bHQgICAgICAgICAgICAgQSBKU09iamVjdFJlZiB0aGF0IGlzIGEgVHlwZWQgQXJyYXkgd2l0
aCBhbGwgZWxlbWVudHMgc2V0IHRvIHplcm8gb3IgTlVMTCBpZiB0aGVyZSB3YXMgYW4gZXJyb3Iu
CiAgKi8KLUpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5KEpTQ29u
dGV4dFJlZiBjdHgsIEpTVHlwZWRBcnJheVR5cGUgYXJyYXlUeXBlLCBzaXplX3QgbGVuZ3RoLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBP
UlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheShKU0NvbnRleHRSZWYgY3R4LCBK
U1R5cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgc2l6ZV90IGxlbmd0aCwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAv
KiEKICBAZnVuY3Rpb24KQEAgLTYwLDcgKzYwLDcgQEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpT
T2JqZWN0TWFrZVR5cGVkQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBlZEFycmF5VHlwZQog
IEByZXN1bHQgICAgICAgICAgICAgICAgICAgQSBKU09iamVjdFJlZiBUeXBlZCBBcnJheSB3aG9z
ZSBiYWNraW5nIHN0b3JlIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgcG9pbnRlZCB0byBieSBieXRl
cyBvciBOVUxMIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KICBAZGlzY3Vzc2lvbiAgICAgICAgICAg
ICAgIElmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZHVyaW5nIHRoaXMgZnVuY3Rpb24gdGhlIGJ5
dGVzRGVhbGxvY2F0b3Igd2lsbCBhbHdheXMgYmUgY2FsbGVkLgogICovCi1KU19FWFBPUlQgSlNP
YmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29weShKU0NvbnRleHRS
ZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgdm9pZCogYnl0ZXMsIHNpemVfdCBi
eXRlTGVuZ3RoLCBKU1R5cGVkQXJyYXlCeXRlc0RlYWxsb2NhdG9yIGJ5dGVzRGVhbGxvY2F0b3Is
IHZvaWQqIGRlYWxsb2NhdG9yQ29udGV4dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJ
TEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVR5
cGVkQXJyYXlXaXRoQnl0ZXNOb0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBlZEFycmF5VHlw
ZSBhcnJheVR5cGUsIHZvaWQqIGJ5dGVzLCBzaXplX3QgYnl0ZUxlbmd0aCwgSlNUeXBlZEFycmF5
Qnl0ZXNEZWFsbG9jYXRvciBieXRlc0RlYWxsb2NhdG9yLCB2b2lkKiBkZWFsbG9jYXRvckNvbnRl
eHQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEy
KSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC03MSw3ICs3MSw3IEBAIEpTX0VY
UE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEJ5dGVzTm9Db3B5KEpT
Q29udGV4dFJlZiBjdHgsIEpTCiAgQHBhcmFtIGV4Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBK
U1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5V
TEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAg
ICAgICAgICAgIEEgSlNPYmplY3RSZWYgdGhhdCBpcyBhIFR5cGVkIEFycmF5IG9yIE5VTEwgaWYg
dGhlcmUgd2FzIGFuIGVycm9yLiBUaGUgYmFja2luZyBzdG9yZSBvZiB0aGUgVHlwZWQgQXJyYXkg
d2lsbCBiZSBidWZmZXIuCiAgKi8KLUpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VU
eXBlZEFycmF5V2l0aEFycmF5QnVmZmVyKEpTQ29udGV4dFJlZiBjdHgsIEpTVHlwZWRBcnJheVR5
cGUgYXJyYXlUeXBlLCBKU09iamVjdFJlZiBidWZmZXIsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikg
Q0ZfQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK0pTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVj
dE1ha2VUeXBlZEFycmF5V2l0aEFycmF5QnVmZmVyKEpTQ29udGV4dFJlZiBjdHgsIEpTVHlwZWRB
cnJheVR5cGUgYXJyYXlUeXBlLCBKU09iamVjdFJlZiBidWZmZXIsIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyoh
CiAgQGZ1bmN0aW9uCkBAIC04NCw3ICs4NCw3IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09i
amVjdE1ha2VUeXBlZEFycmF5V2l0aEFycmF5QnVmZmVyKEpTQ29udGV4dFJlZiBjdHgsIEpTCiAg
QHBhcmFtIGV4Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRv
IHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJl
IHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAgICAgIEEgSlNPYmplY3RS
ZWYgdGhhdCBpcyBhIFR5cGVkIEFycmF5IG9yIE5VTEwgaWYgdGhlcmUgd2FzIGFuIGVycm9yLiBU
aGUgYmFja2luZyBzdG9yZSBvZiB0aGUgVHlwZWQgQXJyYXkgd2lsbCBiZSBidWZmZXIuCiAgKi8K
LUpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEFycmF5QnVm
ZmVyQW5kT2Zmc2V0KEpTQ29udGV4dFJlZiBjdHgsIEpTVHlwZWRBcnJheVR5cGUgYXJyYXlUeXBl
LCBKU09iamVjdFJlZiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBP
UlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhBcnJheUJ1ZmZlckFuZE9m
ZnNldChKU0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgSlNPYmpl
Y3RSZWYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkp
OwogCiAvKiEKICBAZnVuY3Rpb24KQEAgLTk1LDcgKzk1LDcgQEAgSlNfRVhQT1JUIEpTT2JqZWN0
UmVmIEpTT2JqZWN0TWFrZVR5cGVkQXJyYXlXaXRoQXJyYXlCdWZmZXJBbmRPZmZzZXQoSlNDb250
ZXh0UmUKICBAcmVzdWx0ICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgcmF3IGRhdGEgYnVm
ZmVyIHRoYXQgc2VydmVzIGFzIG9iamVjdCdzIGJhY2tpbmcgc3RvcmUgb3IgTlVMTCBpZiBvYmpl
Y3QgaXMgbm90IGEgVHlwZWQgQXJyYXkgb2JqZWN0LgogIEBkaXNjdXNzaW9uICAgICAgICAgVGhl
IHBvaW50ZXIgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiBpcyB0ZW1wb3JhcnkgYW5kIGlzIG5v
dCBndWFyYW50ZWVkIHRvIHJlbWFpbiB2YWxpZCBhY3Jvc3MgSmF2YVNjcmlwdENvcmUgQVBJIGNh
bGxzLgogICovCi1KU19FWFBPUlQgdm9pZCogSlNPYmplY3RHZXRUeXBlZEFycmF5Qnl0ZXNQdHIo
SlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBPUlQgdm9pZCogSlNPYmplY3RH
ZXRUeXBlZEFycmF5Qnl0ZXNQdHIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiks
IGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtMTA1LDcgKzEwNSw3IEBAIEpTX0VY
UE9SVCB2b2lkKiBKU09iamVjdEdldFR5cGVkQXJyYXlCeXRlc1B0cihKU0NvbnRleHRSZWYgY3R4
LCBKU09iamVjdFJlZiBvYmplCiAgQHBhcmFtIGV4Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBK
U1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5V
TEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAg
ICAgICAgICAgIFRoZSBsZW5ndGggb2YgdGhlIFR5cGVkIEFycmF5IG9iamVjdCBvciAwIGlmIHRo
ZSBvYmplY3QgaXMgbm90IGEgVHlwZWQgQXJyYXkgb2JqZWN0LgogICovCi1KU19FWFBPUlQgc2l6
ZV90IEpTT2JqZWN0R2V0VHlwZWRBcnJheUxlbmd0aChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVj
dFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAx
MF8wKTsKK0pTX0VYUE9SVCBzaXplX3QgSlNPYmplY3RHZXRUeXBlZEFycmF5TGVuZ3RoKEpTQ29u
dGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBK
U0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAvKiEKICBAZnVu
Y3Rpb24KQEAgLTExNSw3ICsxMTUsNyBAQCBKU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0VHlw
ZWRBcnJheUxlbmd0aChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplYwogIEBwYXJh
bSBleGNlcHRpb24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9y
ZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBz
dG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgICBUaGUgYnl0ZSBsZW5ndGgg
b2YgdGhlIFR5cGVkIEFycmF5IG9iamVjdCBvciAwIGlmIHRoZSBvYmplY3QgaXMgbm90IGEgVHlw
ZWQgQXJyYXkgb2JqZWN0LgogICovCi1KU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0VHlwZWRB
cnJheUJ5dGVMZW5ndGgoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBPUlQg
c2l6ZV90IEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5dGVMZW5ndGgoSlNDb250ZXh0UmVmIGN0eCwg
SlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxB
QkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtMTI1
LDcgKzEyNSw3IEBAIEpTX0VYUE9SVCBzaXplX3QgSlNPYmplY3RHZXRUeXBlZEFycmF5Qnl0ZUxl
bmd0aChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvCiAgQHBhcmFtIGV4Y2VwdGlvbiAg
ICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlv
biwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2Vw
dGlvbi4KICBAcmVzdWx0ICAgICAgICAgICAgIFRoZSBieXRlIG9mZnNldCBvZiB0aGUgVHlwZWQg
QXJyYXkgb2JqZWN0IG9yIDAgaWYgdGhlIG9iamVjdCBpcyBub3QgYSBUeXBlZCBBcnJheSBvYmpl
Y3QuCiAgKi8KLUpTX0VYUE9SVCBzaXplX3QgSlNPYmplY3RHZXRUeXBlZEFycmF5Qnl0ZU9mZnNl
dChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK0pTX0VYUE9SVCBzaXplX3QgSlNPYmpl
Y3RHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBv
YmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEw
LjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC0xMzUsNyArMTM1LDcgQEAg
SlNfRVhQT1JUIHNpemVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KEpTQ29udGV4
dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG8KICBAcGFyYW0gZXhjZXB0aW9uICAgIEEgcG9pbnRlciB0
byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBh
c3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1
bHQgICAgICAgICAgICAgQSBKU09iamVjdFJlZiB3aXRoIGEgSlNUeXBlZEFycmF5VHlwZSBvZiBr
SlNUeXBlZEFycmF5VHlwZUFycmF5QnVmZmVyIG9yIE5VTEwgaWYgb2JqZWN0IGlzIG5vdCBhIFR5
cGVkIEFycmF5LgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RHZXRUeXBlZEFy
cmF5QnVmZmVyKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTT2Jq
ZWN0UmVmIEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ1ZmZlcihKU0NvbnRleHRSZWYgY3R4LCBKU09i
amVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLy8gLS0tLS0tLS0tLS0tLSBBcnJheSBCdWZm
ZXIgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0KIApAQCAtMTUxLDcgKzE1MSw3IEBAIEpTX0VYUE9S
VCBKU09iamVjdFJlZiBKU09iamVjdEdldFR5cGVkQXJyYXlCdWZmZXIoSlNDb250ZXh0UmVmIGN0
eCwgSlNPYmplY3RSZWYKICBAcmVzdWx0ICAgICAgICAgICAgICAgICAgIEEgSlNPYmplY3RSZWYg
QXJyYXkgQnVmZmVyIHdob3NlIGJhY2tpbmcgc3RvcmUgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBw
b2ludGVkIHRvIGJ5IGJ5dGVzIG9yIE5VTEwgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgogIEBkaXNj
dXNzaW9uICAgICAgICAgICAgICAgSWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biBkdXJpbmcgdGhp
cyBmdW5jdGlvbiB0aGUgYnl0ZXNEZWFsbG9jYXRvciB3aWxsIGFsd2F5cyBiZSBjYWxsZWQuCiAg
Ki8KLUpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VBcnJheUJ1ZmZlcldpdGhCeXRl
c05vQ29weShKU0NvbnRleHRSZWYgY3R4LCB2b2lkKiBieXRlcywgc2l6ZV90IGJ5dGVMZW5ndGgs
IEpTVHlwZWRBcnJheUJ5dGVzRGVhbGxvY2F0b3IgYnl0ZXNEZWFsbG9jYXRvciwgdm9pZCogZGVh
bGxvY2F0b3JDb250ZXh0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8x
MiwgMTBfMCk7CitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQXJyYXlCdWZmZXJX
aXRoQnl0ZXNOb0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgdm9pZCogYnl0ZXMsIHNpemVfdCBieXRl
TGVuZ3RoLCBKU1R5cGVkQXJyYXlCeXRlc0RlYWxsb2NhdG9yIGJ5dGVzRGVhbGxvY2F0b3IsIHZv
aWQqIGRlYWxsb2NhdG9yQ29udGV4dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FW
QUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAvKiEKICBAZnVuY3Rpb24KQEAg
LTE2MSw3ICsxNjEsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQXJyYXlC
dWZmZXJXaXRoQnl0ZXNOb0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgdgogIEByZXN1bHQgICAgICAg
ICAgIEEgcG9pbnRlciB0byB0aGUgcmF3IGRhdGEgYnVmZmVyIHRoYXQgc2VydmVzIGFzIG9iamVj
dCdzIGJhY2tpbmcgc3RvcmUgb3IgTlVMTCBpZiBvYmplY3QgaXMgbm90IGFuIEFycmF5IEJ1ZmZl
ciBvYmplY3QuCiAgQGRpc2N1c3Npb24gICAgICAgVGhlIHBvaW50ZXIgcmV0dXJuZWQgYnkgdGhp
cyBmdW5jdGlvbiBpcyB0ZW1wb3JhcnkgYW5kIGlzIG5vdCBndWFyYW50ZWVkIHRvIHJlbWFpbiB2
YWxpZCBhY3Jvc3MgSmF2YVNjcmlwdENvcmUgQVBJIGNhbGxzLgogICovCi1KU19FWFBPUlQgdm9p
ZCogSlNPYmplY3RHZXRBcnJheUJ1ZmZlckJ5dGVzUHRyKEpTQ29udGV4dFJlZiBjdHgsIEpTT2Jq
ZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIs
IDEwXzApOworSlNfRVhQT1JUIHZvaWQqIEpTT2JqZWN0R2V0QXJyYXlCdWZmZXJCeXRlc1B0cihK
U0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAg
QGZ1bmN0aW9uCkBAIC0xNzEsNyArMTcxLDcgQEAgSlNfRVhQT1JUIHZvaWQqIEpTT2JqZWN0R2V0
QXJyYXlCdWZmZXJCeXRlc1B0cihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmoKICBA
cGFyYW0gZXhjZXB0aW9uICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0
b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRv
IHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAgICBUaGUgbnVtYmVyIG9mIGJ5
dGVzIHN0b3JlZCBpbiB0aGUgZGF0YSBvYmplY3QuCiAgKi8KLUpTX0VYUE9SVCBzaXplX3QgSlNP
YmplY3RHZXRBcnJheUJ1ZmZlckJ5dGVMZW5ndGgoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RS
ZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBf
MCk7CitKU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0QXJyYXlCdWZmZXJCeXRlTGVuZ3RoKEpT
Q29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAjaWZkZWYg
X19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNW
YWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLmgKaW5kZXggMTQxMGRk
NzRhMTdmOTcwNzA2ZTQ0ZGVkMjRjY2QxNzBjMzQ3OWMyZS4uODNlOWY1YWFjMTlhNGY2M2I5ZjAz
ODE3N2NmOGM2Y2I5ODRkZWM5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLmgKQEAg
LTE0OCw2ICsxNDgsMTUgQEAgTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzksIDdfMCkKICovCiArIChK
U1ZhbHVlICopdmFsdWVXaXRoVW5kZWZpbmVkSW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0
OwogCisvKiEKKyBAbWV0aG9kCisgQGFic3RyYWN0IENyZWF0ZSBhIG5ldywgdW5pcXVlLCBzeW1i
b2wgb2JqZWN0LgorIEBwYXJhbSBkZXNjcmlwdGlvbiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIHN5
bWJvbCBvYmplY3QgYmVpbmcgY3JlYXRlZC4KKyBAcGFyYW0gY29udGV4dCBUaGUgSlNDb250ZXh0
IHRvIHdoaWNoIHRoZSByZXN1bHRpbmcgSlNWYWx1ZSBiZWxvbmdzLgorIEByZXN1bHQgVGhlIEpT
VmFsdWUgcmVwcmVzZW50aW5nIGEgdW5pcXVlIEphdmFTY3JpcHQgdmFsdWUgd2l0aCB0eXBlIHN5
bWJvbC4KKyAqLworKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aE5ld1N5bWJvbEZyb21EZXNjcmlwdGlv
bjooTlNTdHJpbmcgKilkZXNjcmlwdGlvbiBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQg
SlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KEpTQ19NQUNfVEJBKSwgaW9zKEpTQ19JT1NfVEJBKSk7
CisKIC8qIQogQG1ldGhvZGdyb3VwIENvbnZlcnRpbmcgdG8gT2JqZWN0aXZlLUMgVHlwZXMKIEBk
aXNjdXNzaW9uIFdoZW4gY29udmVydGluZyBiZXR3ZWVuIEphdmFTY3JpcHQgdmFsdWVzIGFuZCBP
YmplY3RpdmUtQyBvYmplY3RzIGEgY29weSBpcwpAQCAtMzA1LDQzICszMTQsNTIgQEAgTlNfQ0xB
U1NfQVZBSUxBQkxFKDEwXzksIDdfMCkKIC8qIQogQG1ldGhvZGdyb3VwIEFjY2Vzc2luZyBQcm9w
ZXJ0aWVzCiAqLworCisjaWYgISgoZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgSlNDX01BQ19WRVJTSU9O
X1RCQSkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgSlNDX0lPU19WRVJTSU9OX1RCQSkpCisK
IC8qIQogQG1ldGhvZAogQGFic3RyYWN0IEFjY2VzcyBhIHByb3BlcnR5IG9mIGEgSlNWYWx1ZS4K
IEByZXN1bHQgVGhlIEpTVmFsdWUgZm9yIHRoZSByZXF1ZXN0ZWQgcHJvcGVydHkgb3IgdGhlIEpT
VmFsdWUgPGNvZGU+dW5kZWZpbmVkPC9jb2RlPiAKICBpZiB0aGUgcHJvcGVydHkgZG9lcyBub3Qg
ZXhpc3QuCitAZGlzY3Vzc2lvbiBDb3JyZXNwb25kcyB0byB0aGUgSmF2YVNjcmlwdCBvcGVyYXRp
b24gPGNvZGU+b2JqZWN0W3Byb3BlcnR5XTwvY29kZT4uIFBhc3MgYW4gTlNTdHJpbmcgKiB0byBh
Y2Nlc3MgYSBuYW1lZCBwcm9wZXJ0eS4gT3RoZXIgdmFsaWQgcHJvcGVydGllcyBpbmNsdWRlIHN5
bWJvbHMsIG51bWJlcnMsIGFuZCBzdHJpbmdpZmlhYmxlIG9iamVjdHMuIEluIG1hY09TIDEwLjEz
IGFuZCBpT1MgMTEgYW5kIGJlbG93LCAncHJvcGVydHknIHdhcyBhbiBOU1N0cmluZyAqLgogKi8K
LS0gKEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLSAo
SlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KGlkKXByb3BlcnR5OwogCiAvKiEKIEBtZXRob2QK
IEBhYnN0cmFjdCBTZXQgYSBwcm9wZXJ0eSBvbiBhIEpTVmFsdWUuCitAZGlzY3Vzc2lvbiBDb3Jy
ZXNwb25kcyB0byB0aGUgSmF2YVNjcmlwdCBvcGVyYXRpb24gPGNvZGU+b2JqZWN0W3Byb3BlcnR5
XSA9IHZhbHVlPC9jb2RlPi4gUGFzcyBhbiBOU1N0cmluZyAqIHRvIGFjY2VzcyBhIG5hbWVkIHBy
b3BlcnR5LiBPdGhlciB2YWxpZCBwcm9wZXJ0aWVzIGluY2x1ZGUgc3ltYm9scywgbnVtYmVycywg
YW5kIHN0cmluZ2lmaWFibGUgb2JqZWN0cy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUyAxMSBhbmQg
YmVsb3csICdwcm9wZXJ0eScgd2FzIGFuIE5TU3RyaW5nICouCiAqLwotLSAodm9pZClzZXRWYWx1
ZTooaWQpdmFsdWUgZm9yUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7CistICh2b2lkKXNl
dFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooaWQpcHJvcGVydHk7CiAKIC8qIQogQG1ldGhv
ZAogQGFic3RyYWN0IERlbGV0ZSBhIHByb3BlcnR5IGZyb20gYSBKU1ZhbHVlLgogQHJlc3VsdCBZ
RVMgaWYgZGVsZXRpb24gaXMgc3VjY2Vzc2Z1bCwgTk8gb3RoZXJ3aXNlLgorQGRpc2N1c3Npb24g
Q29ycmVzcG9uZHMgdG8gdGhlIEphdmFTY3JpcHQgb3BlcmF0aW9uIDxjb2RlPmRlbGV0ZSBvYmpl
Y3RbcHJvcGVydHldPC9jb2RlPi4gUGFzcyBhbiBOU1N0cmluZyAqIHRvIGFjY2VzcyBhIG5hbWVk
IHByb3BlcnR5LiBPdGhlciB2YWxpZCBwcm9wZXJ0aWVzIGluY2x1ZGUgc3ltYm9scywgbnVtYmVy
cywgYW5kIHN0cmluZ2lmaWFibGUgb2JqZWN0cy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUyAxMSBh
bmQgYmVsb3csICdwcm9wZXJ0eScgd2FzIGFuIE5TU3RyaW5nICouCiAqLwotLSAoQk9PTClkZWxl
dGVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKEJPT0wpZGVsZXRlUHJvcGVydHk6
KGlkKXByb3BlcnR5OwogCiAvKiEKIEBtZXRob2QKIEBhYnN0cmFjdCBDaGVjayBpZiBhIEpTVmFs
dWUgaGFzIGEgcHJvcGVydHkuCiBAZGlzY3Vzc2lvbiBUaGlzIG1ldGhvZCBoYXMgdGhlIHNhbWUg
ZnVuY3Rpb24gYXMgdGhlIEphdmFTY3JpcHQgb3BlcmF0b3IgPGNvZGU+aW48L2NvZGU+LgogQHJl
c3VsdCBSZXR1cm5zIFlFUyBpZiBwcm9wZXJ0eSBpcyBwcmVzZW50IG9uIHRoZSB2YWx1ZS4KK0Bk
aXNjdXNzaW9uIENvcnJlc3BvbmRzIHRvIHRoZSBKYXZhU2NyaXB0IG9wZXJhdGlvbiA8Y29kZT5w
cm9wZXJ0eSBpbiBvYmplY3Q8L2NvZGU+LiBQYXNzIGFuIE5TU3RyaW5nICogdG8gYWNjZXNzIGEg
bmFtZWQgcHJvcGVydHkuIE90aGVyIHZhbGlkIHByb3BlcnRpZXMgaW5jbHVkZSBzeW1ib2xzLCBu
dW1iZXJzLCBhbmQgc3RyaW5naWZpYWJsZSBvYmplY3RzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9T
IDExIGFuZCBiZWxvdywgJ3Byb3BlcnR5JyB3YXMgYW4gTlNTdHJpbmcgKi4KICovCi0tIChCT09M
KWhhc1Byb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLSAoQk9PTCloYXNQcm9wZXJ0eToo
aWQpcHJvcGVydHk7CiAKIC8qIQogQG1ldGhvZAogQGFic3RyYWN0IERlZmluZSBwcm9wZXJ0aWVz
IHdpdGggY3VzdG9tIGRlc2NyaXB0b3JzIG9uIEpTVmFsdWVzLgogQGRpc2N1c3Npb24gVGhpcyBt
ZXRob2QgbWF5IGJlIHVzZWQgdG8gY3JlYXRlIGEgZGF0YSBvciBhY2Nlc3NvciBwcm9wZXJ0eSBv
biBhbiBvYmplY3QuCiAgVGhpcyBtZXRob2Qgb3BlcmF0ZXMgaW4gYWNjb3JkYW5jZSB3aXRoIHRo
ZSBPYmplY3QuZGVmaW5lUHJvcGVydHkgbWV0aG9kIGluIHRoZSAKLSBKYXZhU2NyaXB0IGxhbmd1
YWdlLgorIEphdmFTY3JpcHQgbGFuZ3VhZ2UuIFBhc3MgYW4gTlNTdHJpbmcgKiB0byBhY2Nlc3Mg
YSBuYW1lZCBwcm9wZXJ0eS4gT3RoZXIgdmFsaWQgcHJvcGVydGllcyBpbmNsdWRlIHN5bWJvbHMs
IG51bWJlcnMsIGFuZCBzdHJpbmdpZmlhYmxlIG9iamVjdHMuIEluIG1hY09TIDEwLjEzIGFuZCBp
T1MgMTEgYW5kIGJlbG93LCAncHJvcGVydHknIHdhcyBhbiBOU1N0cmluZyAqLgogKi8KLS0gKHZv
aWQpZGVmaW5lUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHkgZGVzY3JpcHRvcjooaWQpZGVz
Y3JpcHRvcjsKKy0gKHZvaWQpZGVmaW5lUHJvcGVydHk6KGlkKXByb3BlcnR5IGRlc2NyaXB0b3I6
KGlkKWRlc2NyaXB0b3I7CisKKyNlbmRpZiAvLyAhKChkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCBKU0Nf
TUFDX1ZFUlNJT05fVEJBKSB8fCAoZGVmaW5lZChfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCBKU0NfSU9TX1ZFUlNJ
T05fVEJBKSkKIAogLyohCiBAbWV0aG9kCkBAIC00MDIsMTcgKzQyMCwyMyBAQCBOU19DTEFTU19B
VkFJTEFCTEUoMTBfOSwgN18wKQogKi8KIEBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaXNPYmpl
Y3Q7CiAKKy8qIQorQHByb3BlcnR5CitAYWJzdHJhY3QgQ2hlY2sgaWYgYSBKU1ZhbHVlIGlzIGEg
c3ltYm9sLgorKi8KK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaXNTeW1ib2wgSlNDX0FQSV9B
VkFJTEFCTEUobWFjb3N4KEpTQ19NQUNfVEJBKSwgaW9zKEpTQ19JT1NfVEJBKSk7CisKIC8qIQog
QHByb3BlcnR5CiBAYWJzdHJhY3QgQ2hlY2sgaWYgYSBKU1ZhbHVlIGlzIGFuIGFycmF5LgogKi8g
Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGlzQXJyYXkgTlNfQVZBSUxBQkxFKDEwXzExLCA5
XzApOworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBpc0FycmF5IEpTQ19BUElfQVZBSUxBQkxF
KG1hY29zeCgxMC4xMSksIGlvcyg5LjApKTsKIAogLyohCiBAcHJvcGVydHkKIEBhYnN0cmFjdCBD
aGVjayBpZiBhIEpTVmFsdWUgaXMgYSBkYXRlLgogKi8gCi1AcHJvcGVydHkgKHJlYWRvbmx5KSBC
T09MIGlzRGF0ZSBOU19BVkFJTEFCTEUoMTBfMTEsIDlfMCk7CitAcHJvcGVydHkgKHJlYWRvbmx5
KSBCT09MIGlzRGF0ZSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7
CiAKIC8qIQogQG1ldGhvZApAQCAtNTY5LDEzICs1OTMsMTYgQEAgQ3JlYXRlIGEgSlNWYWx1ZSBm
cm9tIGEgQ0dSZWN0LgogQC90ZXh0YmxvY2sKIAogIEFuIG9iamVjdCBrZXkgcGFzc2VkIGFzIGEg
c3Vic2NyaXB0IHdpbGwgYmUgY29udmVydGVkIHRvIGEgSmF2YVNjcmlwdCB2YWx1ZSwKLSBhbmQg
dGhlbiB0aGUgdmFsdWUgY29udmVydGVkIHRvIGEgc3RyaW5nIHVzZWQgYXMgYSBwcm9wZXJ0eSBu
YW1lLgorIGFuZCB0aGVuIHRoZSB2YWx1ZSBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcgdXNlZCBhcyBh
IHByb3BlcnR5IG5hbWUuIEluIG1hY09TCisgMTAuMTMgYW5kIGlPUyAxMSBhbmQgYmVsb3csIHRo
ZSA8Y29kZT5rZXk8L2NvZGU+IGFyZ3VtZW50IG9mCisgPGNvZGU+c2V0T2JqZWN0Om9iamVjdCBm
b3JLZXllZFN1YnNjcmlwdDprZXk8L2NvZGU+IHdhcyByZXN0cmljdGVkIHRvIGFuCisgPGNvZGU+
TlNTdHJpbmcgPE5TQ29weWluZz4gKjwvY29kZT4gYnV0IHRoYXQgcmVzdHJpY3Rpb24gd2FzIG5l
dmVyIHVzZWQuCiAqLwogQGludGVyZmFjZSBKU1ZhbHVlIChTdWJzY3JpcHRTdXBwb3J0KQogCiAt
IChKU1ZhbHVlICopb2JqZWN0Rm9yS2V5ZWRTdWJzY3JpcHQ6KGlkKWtleTsKIC0gKEpTVmFsdWUg
KilvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6KE5TVUludGVnZXIpaW5kZXg7Ci0tICh2b2lkKXNl
dE9iamVjdDooaWQpb2JqZWN0IGZvcktleWVkU3Vic2NyaXB0OihOU09iamVjdCA8TlNDb3B5aW5n
PiAqKWtleTsKKy0gKHZvaWQpc2V0T2JqZWN0OihpZClvYmplY3QgZm9yS2V5ZWRTdWJzY3JpcHQ6
KGlkKWtleTsKIC0gKHZvaWQpc2V0T2JqZWN0OihpZClvYmplY3QgYXRJbmRleGVkU3Vic2NyaXB0
OihOU1VJbnRlZ2VyKWluZGV4OwogCiBAZW5kCkBAIC02NjMsNiArNjkwLDUzIEBAIEpTX0VYUE9S
VCBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5RGVzY3JpcHRvclNldEtleTsKIH0g
Ly8gZXh0ZXJuICJDIgogI2VuZGlmCiAKKyNpZiAoZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgSlNDX01B
Q19WRVJTSU9OX1RCQSkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgSlNDX0lPU19WRVJTSU9O
X1RCQSkKKworLy8gVGhlc2UgZGVjbGFyYXRpb25zIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aGVu
IHRhcmdldGluZyBTREtzIGZvciBsZWdhY3kgT1NzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9TIDEx
IGFuZCBiZWxvdywgJ3Byb3BlcnR5JyB3YXMgYW4gTlNTdHJpbmcgKi4KK0BpbnRlcmZhY2UgSlNW
YWx1ZSAoTGVnYWN5U0RLU3VwcG9ydCkKKworLyohCitAbWV0aG9kCitAYWJzdHJhY3QgQWNjZXNz
IGEgcHJvcGVydHkgb2YgYSBKU1ZhbHVlLgorQHJlc3VsdCBUaGUgSlNWYWx1ZSBmb3IgdGhlIHJl
cXVlc3RlZCBwcm9wZXJ0eSBvciB0aGUgSlNWYWx1ZSA8Y29kZT51bmRlZmluZWQ8L2NvZGU+Citp
ZiB0aGUgcHJvcGVydHkgZG9lcyBub3QgZXhpc3QuCisqLworLSAoSlNWYWx1ZSAqKXZhbHVlRm9y
UHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7CisKKy8qIQorQG1ldGhvZAorQGFic3RyYWN0
IFNldCBhIHByb3BlcnR5IG9uIGEgSlNWYWx1ZS4KKyovCistICh2b2lkKXNldFZhbHVlOihpZCl2
YWx1ZSBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKworLyohCisgQG1ldGhvZAor
IEBhYnN0cmFjdCBEZWxldGUgYSBwcm9wZXJ0eSBmcm9tIGEgSlNWYWx1ZS4KKyBAcmVzdWx0IFlF
UyBpZiBkZWxldGlvbiBpcyBzdWNjZXNzZnVsLCBOTyBvdGhlcndpc2UuCisgKi8KKy0gKEJPT0wp
ZGVsZXRlUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7CisKKy8qIQorIEBtZXRob2QKKyBA
YWJzdHJhY3QgQ2hlY2sgaWYgYSBKU1ZhbHVlIGhhcyBhIHByb3BlcnR5LgorIEBkaXNjdXNzaW9u
IFRoaXMgbWV0aG9kIGhhcyB0aGUgc2FtZSBmdW5jdGlvbiBhcyB0aGUgSmF2YVNjcmlwdCBvcGVy
YXRvciA8Y29kZT5pbjwvY29kZT4uCisgQHJlc3VsdCBSZXR1cm5zIFlFUyBpZiBwcm9wZXJ0eSBp
cyBwcmVzZW50IG9uIHRoZSB2YWx1ZS4KKyAqLworLSAoQk9PTCloYXNQcm9wZXJ0eTooTlNTdHJp
bmcgKilwcm9wZXJ0eTsKKworLyohCisgQG1ldGhvZAorIEBhYnN0cmFjdCBEZWZpbmUgcHJvcGVy
dGllcyB3aXRoIGN1c3RvbSBkZXNjcmlwdG9ycyBvbiBKU1ZhbHVlcy4KKyBAZGlzY3Vzc2lvbiBU
aGlzIG1ldGhvZCBtYXkgYmUgdXNlZCB0byBjcmVhdGUgYSBkYXRhIG9yIGFjY2Vzc29yIHByb3Bl
cnR5IG9uIGFuIG9iamVjdC4KKyBUaGlzIG1ldGhvZCBvcGVyYXRlcyBpbiBhY2NvcmRhbmNlIHdp
dGggdGhlIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBtZXRob2QgaW4gdGhlCisgSmF2YVNjcmlwdCBs
YW5ndWFnZS4KKyAqLworLSAodm9pZClkZWZpbmVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0
eSBkZXNjcmlwdG9yOihpZClkZXNjcmlwdG9yOworCitAZW5kCisKKyNlbmRpZgorCiAjZW5kaWYK
IAogI2VuZGlmIC8vIEpTVmFsdWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1ZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCmlu
ZGV4IGEyNjY4NDQ4ZmZiYzdiZjU1MzQzNzRkMTdkYTJiZWI0Yzc0MTk4ODMuLjljOTZjOWQ2OTUw
Mzk0MzM2ZDE2ODUyM2IzYzYzMDY3ZjNhMzcxYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWUubW0KQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQgIkpTQ0pTVmFsdWUuaCIKICNpbXBv
cnQgIlN0cm9uZy5oIgogI2ltcG9ydCAiU3Ryb25nSW5saW5lcy5oIgorI2ltcG9ydCA8d3RmL0V4
cGVjdGVkLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQu
aD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CkBAIC0xNTEsNiArMTUyLDEzIEBAIE5TU3RyaW5nICog
Y29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXkgPSBAInNldCI7CiAgICAgcmV0dXJuIFtK
U1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6SlNWYWx1ZU1ha2VVbmRlZmluZWQoW2NvbnRleHQg
SlNHbG9iYWxDb250ZXh0UmVmXSkgaW5Db250ZXh0OmNvbnRleHRdOwogfQogCisrIChKU1ZhbHVl
ICopdmFsdWVXaXRoTmV3U3ltYm9sRnJvbURlc2NyaXB0aW9uOihOU1N0cmluZyAqKWRlc2NyaXB0
aW9uIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAoreworICAgIEpTU3RyaW5nUmVmIHN0
cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJp
bmdSZWY+KGRlc2NyaXB0aW9uKSk7CisgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFs
dWVSZWY6SlNWYWx1ZU1ha2VTeW1ib2woW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgc3Ry
aW5nKSBpbkNvbnRleHQ6Y29udGV4dF07Cit9CisKKwogLSAoaWQpdG9PYmplY3QKIHsKICAgICBy
ZXR1cm4gdmFsdWVUb09iamVjdChfY29udGV4dCwgbV92YWx1ZSk7CkBAIC0yMzQsNzIgKzI0Miwx
MDAgQEAgTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5RGVzY3JpcHRvclNldEtleSA9IEAic2V0
IjsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi0tIChKU1ZhbHVlICopdmFsdWVGb3JQcm9wZXJ0
eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKK3RlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdCwgdHlw
ZW5hbWUgTlNTdHJpbmdGdW5jdGlvbiwgdHlwZW5hbWUgSlNWYWx1ZUZ1bmN0aW9uLCB0eXBlbmFt
ZS4uLiBUeXBlcz4KK2lubGluZSBFeHBlY3RlZDxSZXN1bHQsIEpTVmFsdWVSZWY+IHBlcmZvcm1Q
cm9wZXJ0eU9wZXJhdGlvbihOU1N0cmluZ0Z1bmN0aW9uIHN0cmluZ0Z1bmN0aW9uLCBKU1ZhbHVl
RnVuY3Rpb24ganNGdW5jdGlvbiwgSlNWYWx1ZSogdmFsdWUsIGlkIHByb3BlcnR5S2V5LCBUeXBl
cy4uLiBhcmd1bWVudHMpCiB7Ci0gICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAgIEpT
T2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChbX2NvbnRleHQgSlNHbG9iYWxDb250
ZXh0UmVmXSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7Ci0gICAgaWYgKGV4Y2VwdGlvbikKLSAgICAg
ICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsK
LQotICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19i
cmlkZ2UgQ0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsKLSAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9
IEpTT2JqZWN0R2V0UHJvcGVydHkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVj
dCwgbmFtZSwgJmV4Y2VwdGlvbik7Ci0gICAgSlNTdHJpbmdSZWxlYXNlKG5hbWUpOworICAgIEpT
Q29udGV4dCogY29udGV4dCA9IFt2YWx1ZSBjb250ZXh0XTsKKyAgICBKU1ZhbHVlUmVmIGV4Y2Vw
dGlvbiA9IG51bGxwdHI7CisgICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0
KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIFt2YWx1ZSBKU1ZhbHVlUmVmXSwgJmV4Y2Vw
dGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1
ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICAgICAgcmV0dXJuIFVuZXhwZWN0
ZWQ8SlNWYWx1ZVJlZj4oZXhjZXB0aW9uKTsKKworICAgIFJlc3VsdCByZXN1bHQ7CisgICAgLy8g
SWYgaXQncyBhIE5TU3RyaW5nIGFscmVhZHksIHJlZHVjZSBpbmRpcmVjdGlvbiBhbmQganVzdCBw
YXNzIHRoZSBOU1N0cmluZy4KKyAgICBpZiAoW3Byb3BlcnR5S2V5IGlzS2luZE9mQ2xhc3M6W05T
U3RyaW5nIGNsYXNzXV0pIHsKKyAgICAgICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3Jl
YXRlV2l0aENGU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZilwcm9wZXJ0eUtleSk7CisgICAg
ICAgIHJlc3VsdCA9IHN0cmluZ0Z1bmN0aW9uKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0s
IG9iamVjdCwgbmFtZSwgYXJndW1lbnRzLi4uLCAmZXhjZXB0aW9uKTsKKyAgICAgICAgSlNTdHJp
bmdSZWxlYXNlKG5hbWUpOworICAgIH0gZWxzZQorICAgICAgICByZXN1bHQgPSBqc0Z1bmN0aW9u
KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgW1tKU1ZhbHVlIHZhbHVlV2l0
aE9iamVjdDpwcm9wZXJ0eUtleSBpbkNvbnRleHQ6Y29udGV4dF0gSlNWYWx1ZVJlZl0sIGFyZ3Vt
ZW50cy4uLiwgJmV4Y2VwdGlvbik7CisgICAgcmV0dXJuIEV4cGVjdGVkPFJlc3VsdCwgSlNWYWx1
ZVJlZj4ocmVzdWx0KTsKK30KKworI2lmIChkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDApIHx8
IChkZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKKy0gKEpTVmFsdWUgKil2YWx1ZUZvclBy
b3BlcnR5OihOU1N0cmluZyAqKWtleQorI2Vsc2UKKy0gKEpTVmFsdWUgKil2YWx1ZUZvclByb3Bl
cnR5OihpZClrZXkKKyNlbmRpZgoreworICAgIGF1dG8gcmVzdWx0ID0gcGVyZm9ybVByb3BlcnR5
T3BlcmF0aW9uPEpTVmFsdWVSZWY+KEpTT2JqZWN0R2V0UHJvcGVydHksIEpTT2JqZWN0R2V0UHJv
cGVydHlLZXksIHNlbGYsIGtleSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBb
X2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOnJlc3VsdC5lcnJvcigpXTsKIAotICAg
IHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOnJlc3VsdCBpbkNvbnRleHQ6X2Nv
bnRleHRdOworICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOnJlc3VsdC52
YWx1ZSgpIGluQ29udGV4dDpfY29udGV4dF07CiB9CiAKLS0gKHZvaWQpc2V0VmFsdWU6KGlkKXZh
bHVlIGZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQorI2lmIChkZWZpbmVkKF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPCAxMDEzMDApIHx8IChkZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKKy0g
KHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZvclByb3BlcnR5OihOU1N0cmluZyAqKWtleQorI2Vs
c2UKKy0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZvclByb3BlcnR5OihpZClrZXkKKyNlbmRp
ZgogewotICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBKU09iamVjdFJlZiBvYmpl
Y3QgPSBKU1ZhbHVlVG9PYmplY3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFs
dWUsICZleGNlcHRpb24pOwotICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgW19jb250ZXh0
IG5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAg
IC8vIFdlIG5lZWQgVW5pdCBidXNpbmVzcyBiZWNhdXNlIHZvaWQgY2FuJ3QgYmUgYXNzaWduZWQg
dG8gaW4gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uIGFuZCBJIGRvbid0IHdhbnQgdG8gZHVwbGlj
YXRlIHRoZSBjb2RlLi4uCisgICAgdXNpbmcgVW5pdCA9IHN0ZDo6dHVwbGU8PjsKKyAgICBhdXRv
IHN0cmluZ1NldFByb3BlcnR5ID0gW10gKGF1dG8uLi4gYXJncykgLT4gVW5pdCB7CisgICAgICAg
IEpTT2JqZWN0U2V0UHJvcGVydHkoYXJncy4uLik7CisgICAgICAgIHJldHVybiB7IH07CisgICAg
fTsKIAotICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygo
X19icmlkZ2UgQ0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsKLSAgICBKU09iamVjdFNldFByb3Bl
cnR5KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIG5hbWUsIG9iamVjdFRv
VmFsdWUoX2NvbnRleHQsIHZhbHVlKSwgMCwgJmV4Y2VwdGlvbik7Ci0gICAgSlNTdHJpbmdSZWxl
YXNlKG5hbWUpOwotICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgW19jb250ZXh0IG5vdGlm
eUV4Y2VwdGlvbjpleGNlcHRpb25dOworICAgIGF1dG8ganNWYWx1ZVNldFByb3BlcnR5ID0gW10g
KGF1dG8uLi4gYXJncykgLT4gVW5pdCB7CisgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHlLZXko
YXJncy4uLik7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfTsKKworICAgIGF1dG8gcmVzdWx0
ID0gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uPFVuaXQ+KHN0cmluZ1NldFByb3BlcnR5LCBqc1Zh
bHVlU2V0UHJvcGVydHksIHNlbGYsIGtleSwgb2JqZWN0VG9WYWx1ZShfY29udGV4dCwgdmFsdWUp
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUpOworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAg
IFtfY29udGV4dCBub3RpZnlFeGNlcHRpb246cmVzdWx0LmVycm9yKCldOwogICAgICAgICByZXR1
cm47CiAgICAgfQogfQogCi0tIChCT09MKWRlbGV0ZVByb3BlcnR5OihOU1N0cmluZyAqKXByb3Bl
cnR5TmFtZQorI2lmIChkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDApIHx8IChkZWZpbmVkKF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA8IDExMDAwMCkKKy0gKEJPT0wpZGVsZXRlUHJvcGVydHk6KE5TU3RyaW5nICop
a2V5CisjZWxzZQorLSAoQk9PTClkZWxldGVQcm9wZXJ0eTooaWQpa2V5CisjZW5kaWYKIHsKLSAg
ICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNW
YWx1ZVRvT2JqZWN0KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlLCAmZXhj
ZXB0aW9uKTsKLSAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW19jb250ZXh0IGJv
b2xGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07Ci0KLSAgICBKU1N0cmluZ1JlZiBuYW1l
ID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXByb3Bl
cnR5TmFtZSk7Ci0gICAgQk9PTCByZXN1bHQgPSBKU09iamVjdERlbGV0ZVByb3BlcnR5KFtfY29u
dGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIG5hbWUsICZleGNlcHRpb24pOwotICAg
IEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKLSAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICByZXR1
cm4gW19jb250ZXh0IGJvb2xGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07Ci0KLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIEV4cGVjdGVkPEJPT0wsIEpTVmFsdWVSZWY+IHJlc3VsdCA9IHBl
cmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbjxCT09MPihKU09iamVjdERlbGV0ZVByb3BlcnR5LCBKU09i
amVjdERlbGV0ZVByb3BlcnR5S2V5LCBzZWxmLCBrZXkpOworICAgIGlmICghcmVzdWx0KQorICAg
ICAgICByZXR1cm4gW19jb250ZXh0IGJvb2xGcm9tTm90aWZ5RXhjZXB0aW9uOnJlc3VsdC5lcnJv
cigpXTsKKyAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7CiB9CiAKLS0gKEJPT0wpaGFzUHJvcGVy
dHk6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lCisjaWYgKGRlZmluZWQoX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEw
MTMwMCkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQorLSAoQk9PTCloYXNQcm9w
ZXJ0eTooTlNTdHJpbmcgKilrZXkKKyNlbHNlCistIChCT09MKWhhc1Byb3BlcnR5OihpZClrZXkK
KyNlbmRpZgogewotICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBKU09iamVjdFJl
ZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0s
IG1fdmFsdWUsICZleGNlcHRpb24pOwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVy
biBbX2NvbnRleHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICAvLyBU
aGUgQy1hcGkgZG9lc24ndCByZXR1cm4gYW4gZXhjZXB0aW9uIHZhbHVlIGZvciB0aGUgc3RyaW5n
IHZlcnNpb24gb2YgaGFzIHByb3BlcnR5LgorICAgIGF1dG8gc3RyaW5nSGFzUHJvcGVydHkgPSBb
XSAoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWVSZWYqKSAtPiBCT09MIHsKKyAgICAgICAgcmV0dXJuIEpTT2JqZWN0
SGFzUHJvcGVydHkoY3R4LCBvYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgfTsKIAotICAgIEpT
U3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZT
dHJpbmdSZWYpcHJvcGVydHlOYW1lKTsKLSAgICBCT09MIHJlc3VsdCA9IEpTT2JqZWN0SGFzUHJv
cGVydHkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgbmFtZSk7Ci0gICAg
SlNTdHJpbmdSZWxlYXNlKG5hbWUpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgRXhwZWN0ZWQ8
Qk9PTCwgSlNWYWx1ZVJlZj4gcmVzdWx0ID0gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uPEJPT0w+
KHN0cmluZ0hhc1Byb3BlcnR5LCBKU09iamVjdEhhc1Byb3BlcnR5S2V5LCBzZWxmLCBrZXkpOwor
ICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gW19jb250ZXh0IGJvb2xGcm9tTm90aWZ5
RXhjZXB0aW9uOnJlc3VsdC5lcnJvcigpXTsKKyAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7CiB9
CiAKLS0gKHZvaWQpZGVmaW5lUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHkgZGVzY3JpcHRv
cjooaWQpZGVzY3JpcHRvcgorI2lmIChkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDApIHx8IChk
ZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKKy0gKHZvaWQpZGVmaW5lUHJvcGVydHk6KE5T
U3RyaW5nICopa2V5IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0b3IKKyNlbHNlCistICh2b2lkKWRl
ZmluZVByb3BlcnR5OihpZClrZXkgZGVzY3JpcHRvcjooaWQpZGVzY3JpcHRvcgorI2VuZGlmCiB7
Ci0gICAgW1tfY29udGV4dCBnbG9iYWxPYmplY3RdW0AiT2JqZWN0Il0gaW52b2tlTWV0aG9kOkAi
ZGVmaW5lUHJvcGVydHkiIHdpdGhBcmd1bWVudHM6QFsgc2VsZiwgcHJvcGVydHksIGRlc2NyaXB0
b3IgXV07CisgICAgW1tfY29udGV4dCBnbG9iYWxPYmplY3RdW0AiT2JqZWN0Il0gaW52b2tlTWV0
aG9kOkAiZGVmaW5lUHJvcGVydHkiIHdpdGhBcmd1bWVudHM6QFsgc2VsZiwga2V5LCBkZXNjcmlw
dG9yIF1dOwogfQogCiAtIChKU1ZhbHVlICopdmFsdWVBdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4
CkBAIC0zNzIsNiArNDA4LDExIEBAIE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0
b3JTZXRLZXkgPSBAInNldCI7CiAgICAgcmV0dXJuIEpTVmFsdWVJc09iamVjdChbX2NvbnRleHQg
SlNHbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSk7CiB9CiAKKy0gKEJPT0wpaXNTeW1ib2wKK3sK
KyAgICByZXR1cm4gSlNWYWx1ZUlzU3ltYm9sKFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZd
LCBtX3ZhbHVlKTsKK30KKwogLSAoQk9PTClpc0FycmF5CiB7CiAgICAgcmV0dXJuIEpTVmFsdWVJ
c0FycmF5KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlKTsKQEAgLTU1NCwx
MyArNTk1LDcgQEAgTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5RGVzY3JpcHRvclNldEtleSA9
IEAic2V0IjsKIAogLSAoSlNWYWx1ZSAqKW9iamVjdEZvcktleWVkU3Vic2NyaXB0OihpZClrZXkK
IHsKLSAgICBpZiAoIVtrZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgewotICAg
ICAgICBrZXkgPSBbW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OmtleSBpbkNvbnRleHQ6X2NvbnRl
eHRdIHRvU3RyaW5nXTsKLSAgICAgICAgaWYgKCFrZXkpCi0gICAgICAgICAgICByZXR1cm4gW0pT
VmFsdWUgdmFsdWVXaXRoVW5kZWZpbmVkSW5Db250ZXh0Ol9jb250ZXh0XTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gW3NlbGYgdmFsdWVGb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXldOworICAgIHJl
dHVybiBbc2VsZiB2YWx1ZUZvclByb3BlcnR5OmtleV07CiB9CiAKIC0gKEpTVmFsdWUgKilvYmpl
Y3RBdEluZGV4ZWRTdWJzY3JpcHQ6KE5TVUludGVnZXIpaW5kZXgKQEAgLTU2OCwxNSArNjAzLDkg
QEAgTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5RGVzY3JpcHRvclNldEtleSA9IEAic2V0IjsK
ICAgICByZXR1cm4gW3NlbGYgdmFsdWVBdEluZGV4OmluZGV4XTsKIH0KIAotLSAodm9pZClzZXRP
YmplY3Q6KGlkKW9iamVjdCBmb3JLZXllZFN1YnNjcmlwdDooTlNPYmplY3QgPE5TQ29weWluZz4g
KilrZXkKKy0gKHZvaWQpc2V0T2JqZWN0OihpZClvYmplY3QgZm9yS2V5ZWRTdWJzY3JpcHQ6KGlk
KWtleQogewotICAgIGlmICghW2tleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7
Ci0gICAgICAgIGtleSA9IFtbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6a2V5IGluQ29udGV4dDpf
Y29udGV4dF0gdG9TdHJpbmddOwotICAgICAgICBpZiAoIWtleSkKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBbc2VsZiBzZXRWYWx1ZTpvYmplY3QgZm9yUHJvcGVydHk6KE5TU3Ry
aW5nICopa2V5XTsKKyAgICBbc2VsZiBzZXRWYWx1ZTpvYmplY3QgZm9yUHJvcGVydHk6a2V5XTsK
IH0KIAogLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBhdEluZGV4ZWRTdWJzY3JpcHQ6KE5T
VUludGVnZXIpaW5kZXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNW
YWx1ZVJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCmlu
ZGV4IDc5NTU5YmU5MDc5ODcxNTFiMmZhN2Q5MzEyNjQyNDUxODg4MTBmZGMuLmRhY2EwZTFiNDlk
ZDhkNTEyZTU2NWRjMTNjY2NhZjJiOTdmMjA4YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1ZhbHVlUmVmLmNwcApAQCAtODYsNiArODYsOCBAQCBzdGF0aWMgYm9vbCBldmVybm90ZUhh
Y2tOZWVkZWQoKQogICAgICAgICByZXR1cm4ga0pTVHlwZU51bWJlcjsKICAgICBpZiAoanNWYWx1
ZS5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4ga0pTVHlwZVN0cmluZzsKKyAgICBpZiAoanNW
YWx1ZS5pc1N5bWJvbCgpKQorICAgICAgICByZXR1cm4ga0pTVHlwZVN5bWJvbDsKICAgICBBU1NF
UlQoanNWYWx1ZS5pc09iamVjdCgpKTsKICAgICByZXR1cm4ga0pTVHlwZU9iamVjdDsKIH0KQEAg
LTE2Miw2ICsxNjQsMTggQEAgYm9vbCBKU1ZhbHVlSXNPYmplY3QoSlNDb250ZXh0UmVmIGN0eCwg
SlNWYWx1ZVJlZiB2YWx1ZSkKICAgICByZXR1cm4gdG9KUyhleGVjLCB2YWx1ZSkuaXNPYmplY3Qo
KTsKIH0KIAorYm9vbCBKU1ZhbHVlSXNTeW1ib2woSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJl
ZiB2YWx1ZSkKK3sKKyAgICBpZiAoIWN0eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0
b0pTKGN0eCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKworICAgIHJldHVybiB0
b0pTKGV4ZWMsIHZhbHVlKS5pc1N5bWJvbCgpOworfQorCiBib29sIEpTVmFsdWVJc0FycmF5KEpT
Q29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpCiB7CiAgICAgaWYgKCFjdHgpIHsKQEAg
LTMyMCw2ICszMzQsMjIgQEAgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZU51bWJlcihKU0NvbnRleHRS
ZWYgY3R4LCBkb3VibGUgdmFsdWUpCiAgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIGpzTnVtYmVyKHB1
cmlmeU5hTih2YWx1ZSkpKTsKIH0KIAorSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZVN5bWJvbChKU0Nv
bnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBkZXNjcmlwdGlvbikKK3sKKyAgICBpZiAoIWN0eCkg
eworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBKU0xvY2tIb2xk
ZXIgbG9ja2VyKGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKGV4
ZWMtPnZtKCkpOworCisgICAgSlNTdHJpbmcqIGpzRGVzY3JpcHRpb24gPSBqc1N0cmluZyhleGVj
LCBkZXNjcmlwdGlvbiA/IGRlc2NyaXB0aW9uLT5zdHJpbmcoKSA6IFN0cmluZygpKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworICAgIHJldHVybiB0b1JlZihl
eGVjLCBTeW1ib2w6OmNyZWF0ZShleGVjLCBqc0Rlc2NyaXB0aW9uKSk7Cit9CisKIEpTVmFsdWVS
ZWYgSlNWYWx1ZU1ha2VTdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgc3RyaW5n
KQogewogICAgIGlmICghY3R4KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTVmFsdWVSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5o
CmluZGV4IDk4MTVkZTc4M2MwYWVlMDczZTNhNDQ4YmQwYzdjYWRkNGE5NTJjMDYuLjEyZjJkY2Mw
NDRlNmU4YWUzMGFjMjAzMWQwYjJkYTViMzczYWRiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNWYWx1ZVJlZi5oCkBAIC00Miw2ICs0Miw3IEBACiBAY29uc3RhbnQgICAgIGtKU1R5cGVO
dW1iZXIgICAgIEEgcHJpbWl0aXZlIG51bWJlciB2YWx1ZS4KIEBjb25zdGFudCAgICAga0pTVHlw
ZVN0cmluZyAgICAgQSBwcmltaXRpdmUgc3RyaW5nIHZhbHVlLgogQGNvbnN0YW50ICAgICBrSlNU
eXBlT2JqZWN0ICAgICBBbiBvYmplY3QgdmFsdWUgKG1lYW5pbmcgdGhhdCB0aGlzIEpTVmFsdWVS
ZWYgaXMgYSBKU09iamVjdFJlZikuCitAY29uc3RhbnQgICAgIGtKU1R5cGVTeW1ib2wgICAgIEEg
cHJpbWl0aXZlIHN5bWJvbCB2YWx1ZS4KICovCiB0eXBlZGVmIGVudW0gewogICAgIGtKU1R5cGVV
bmRlZmluZWQsCkBAIC00OSw3ICs1MCw4IEBAIHR5cGVkZWYgZW51bSB7CiAgICAga0pTVHlwZUJv
b2xlYW4sCiAgICAga0pTVHlwZU51bWJlciwKICAgICBrSlNUeXBlU3RyaW5nLAotICAgIGtKU1R5
cGVPYmplY3QKKyAgICBrSlNUeXBlT2JqZWN0LAorICAgIGtKU1R5cGVTeW1ib2wgSlNDX0FQSV9B
VkFJTEFCTEUobWFjb3N4KEpTQ19NQUNfVEJBKSwgaW9zKEpTQ19JT1NfVEJBKSkKIH0gSlNUeXBl
OwogCiAvKiEKQEAgLTgwLDcgKzgyLDcgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBrSlNUeXBlZEFy
cmF5VHlwZUZsb2F0NjRBcnJheSwKICAgICBrSlNUeXBlZEFycmF5VHlwZUFycmF5QnVmZmVyLAog
ICAgIGtKU1R5cGVkQXJyYXlUeXBlTm9uZSwKLX0gSlNUeXBlZEFycmF5VHlwZSBDRl9FTlVNX0FW
QUlMQUJMRSgxMF8xMiwgMTBfMCk7Cit9IEpTVHlwZWRBcnJheVR5cGUgSlNDX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRl
cm4gIkMiIHsKQEAgLTE0OSw2ICsxNTEsMTYgQEAgSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzU3Ry
aW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpOwogKi8KIEpTX0VYUE9SVCBi
b29sIEpTVmFsdWVJc09iamVjdChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKTsK
IAorLyohCitAZnVuY3Rpb24KK0BhYnN0cmFjdCAgICAgICBUZXN0cyB3aGV0aGVyIGEgSmF2YVNj
cmlwdCB2YWx1ZSdzIHR5cGUgaXMgdGhlIHN5bWJvbCB0eXBlLgorQHBhcmFtIGN0eCAgICAgIFRo
ZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCitAcGFyYW0gdmFsdWUgICAgVGhlIEpTVmFsdWUg
dG8gdGVzdC4KK0ByZXN1bHQgICAgICAgICB0cnVlIGlmIHZhbHVlJ3MgdHlwZSBpcyB0aGUgc3lt
Ym9sIHR5cGUsIG90aGVyd2lzZSBmYWxzZS4KKyovCitKU19FWFBPUlQgYm9vbCBKU1ZhbHVlSXNT
eW1ib2woSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkgSlNDX0FQSV9BVkFJTEFC
TEUobWFjb3N4KEpTQ19NQUNfVEJBKSwgaW9zKEpTQ19JT1NfVEJBKSk7CisKKwogLyohCiBAZnVu
Y3Rpb24KIEBhYnN0cmFjdCBUZXN0cyB3aGV0aGVyIGEgSmF2YVNjcmlwdCB2YWx1ZSBpcyBhbiBv
YmplY3Qgd2l0aCBhIGdpdmVuIGNsYXNzIGluIGl0cyBjbGFzcyBjaGFpbi4KQEAgLTE2Niw3ICsx
NzgsNyBAQCBKU19FWFBPUlQgYm9vbCBKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKEpTQ29udGV4dFJl
ZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUsIEpTQ2xhcwogQHBhcmFtIHZhbHVlICAgIFRoZSBKU1Zh
bHVlIHRvIHRlc3QuCiBAcmVzdWx0ICAgICAgICAgdHJ1ZSBpZiB2YWx1ZSBpcyBhbiBhcnJheSwg
b3RoZXJ3aXNlIGZhbHNlLgogKi8KLUpTX0VYUE9SVCBib29sIEpTVmFsdWVJc0FycmF5KEpTQ29u
dGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpIENGX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsK
K0pTX0VYUE9SVCBib29sIEpTVmFsdWVJc0FycmF5KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVS
ZWYgdmFsdWUpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSksIGlvcyg5LjApKTsKIAog
LyohCiBAZnVuY3Rpb24KQEAgLTE3NSw3ICsxODcsNyBAQCBKU19FWFBPUlQgYm9vbCBKU1ZhbHVl
SXNBcnJheShKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKSBDRl9BVkFJTEFCTEUo
MQogQHBhcmFtIHZhbHVlICAgIFRoZSBKU1ZhbHVlIHRvIHRlc3QuCiBAcmVzdWx0ICAgICAgICAg
dHJ1ZSBpZiB2YWx1ZSBpcyBhIGRhdGUsIG90aGVyd2lzZSBmYWxzZS4KICovCi1KU19FWFBPUlQg
Ym9vbCBKU1ZhbHVlSXNEYXRlKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpIENG
X0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsKK0pTX0VYUE9SVCBib29sIEpTVmFsdWVJc0RhdGUoSlND
b250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjExKSwgaW9zKDkuMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTg1LDcgKzE5Nyw3IEBA
IEpTX0VYUE9SVCBib29sIEpTVmFsdWVJc0RhdGUoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJl
ZiB2YWx1ZSkgQ0ZfQVZBSUxBQkxFKDEwCiBAcGFyYW0gZXhjZXB0aW9uICAgIEEgcG9pbnRlciB0
byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBh
c3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogQHJlc3Vs
dCAgICAgICAgICAgICBBIHZhbHVlIG9mIHR5cGUgSlNUeXBlZEFycmF5VHlwZSB0aGF0IGlkZW50
aWZpZXMgdmFsdWUncyBUeXBlZCBBcnJheSB0eXBlLCBvciBrSlNUeXBlZEFycmF5VHlwZU5vbmUg
aWYgdGhlIHZhbHVlIGlzIG5vdCBhIFR5cGVkIEFycmF5IG9iamVjdC4KICAqLwotSlNfRVhQT1JU
IEpTVHlwZWRBcnJheVR5cGUgSlNWYWx1ZUdldFR5cGVkQXJyYXlUeXBlKEpTQ29udGV4dFJlZiBj
dHgsIEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxF
KDEwXzEyLCAxMF8wKTsKK0pTX0VYUE9SVCBKU1R5cGVkQXJyYXlUeXBlIEpTVmFsdWVHZXRUeXBl
ZEFycmF5VHlwZShKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7
CiAKIC8qIENvbXBhcmluZyB2YWx1ZXMgKi8KIApAQCAtMjU3LDYgKzI2OSwxNSBAQCBKU19FWFBP
UlQgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZUJvb2xlYW4oSlNDb250ZXh0UmVmIGN0eCwgYm9vbCBi
b29sZWFuKTsKICovCiBKU19FWFBPUlQgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZU51bWJlcihKU0Nv
bnRleHRSZWYgY3R4LCBkb3VibGUgbnVtYmVyKTsKIAorLyohCitAZnVuY3Rpb24KK0BhYnN0cmFj
dCAgICAgICAgICAgIENyZWF0ZXMgYSBKYXZhU2NyaXB0IHZhbHVlIG9mIHRoZSBzeW1ib2wgdHlw
ZS4KK0BwYXJhbSBjdHggICAgICAgICAgIFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCitA
cGFyYW0gZGVzY3JpcHRpb24gICBBIGRlc2NyaXB0aW9uIG9mIHRoZSBuZXdseSBjcmVhdGVkIHN5
bWJvbCB2YWx1ZS4KK0ByZXN1bHQgICAgICAgICAgICAgIEEgdW5pcXVlIEpTVmFsdWUgb2YgdGhl
IHN5bWJvbCB0eXBlLCB3aG9zZSBkZXNjcmlwdGlvbiBtYXRjaGVzIHRoZSBvbmUgcHJvdmlkZWQu
CisqLworSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VTeW1ib2woSlNDb250ZXh0UmVm
IGN0eCwgSlNTdHJpbmdSZWYgZGVzY3JpcHRpb24pOworCiAvKiEKIEBmdW5jdGlvbgogQGFic3Ry
YWN0ICAgICAgIENyZWF0ZXMgYSBKYXZhU2NyaXB0IHZhbHVlIG9mIHRoZSBzdHJpbmcgdHlwZS4K
QEAgLTI3Niw3ICsyOTcsNyBAQCBKU19FWFBPUlQgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZVN0cmlu
ZyhKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBzdHJpbmcpOwogIEBwYXJhbSBzdHJpbmcg
ICBUaGUgSlNTdHJpbmcgY29udGFpbmluZyB0aGUgSlNPTiBzdHJpbmcgdG8gYmUgcGFyc2VkLgog
IEByZXN1bHQgICAgICAgICBBIEpTVmFsdWUgY29udGFpbmluZyB0aGUgcGFyc2VkIHZhbHVlLCBv
ciBOVUxMIGlmIHRoZSBpbnB1dCBpcyBpbnZhbGlkLgogICovCi1KU19FWFBPUlQgSlNWYWx1ZVJl
ZiBKU1ZhbHVlTWFrZUZyb21KU09OU3RyaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVm
IHN0cmluZykgQ0ZfQVZBSUxBQkxFKDEwXzcsIDdfMCk7CitKU19FWFBPUlQgSlNWYWx1ZVJlZiBK
U1ZhbHVlTWFrZUZyb21KU09OU3RyaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHN0
cmluZykgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjcpLCBpb3MoNy4wKSk7CiAKIC8qIQog
IEBmdW5jdGlvbgpAQCAtMjg3LDcgKzMwOCw3IEBAIEpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpTVmFs
dWVNYWtlRnJvbUpTT05TdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgc3RyCiAg
QHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0
b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRv
IHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAgQSBKU1N0cmluZyB3aXRoIHRo
ZSByZXN1bHQgb2Ygc2VyaWFsaXphdGlvbiwgb3IgTlVMTCBpZiBhbiBleGNlcHRpb24gaXMgdGhy
b3duLgogICovCi1KU19FWFBPUlQgSlNTdHJpbmdSZWYgSlNWYWx1ZUNyZWF0ZUpTT05TdHJpbmco
SlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgdW5zaWduZWQgaW5kZW50LCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF83LCA3XzApOworSlNfRVhQT1JUIEpT
U3RyaW5nUmVmIEpTVmFsdWVDcmVhdGVKU09OU3RyaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFs
dWVSZWYgdmFsdWUsIHVuc2lnbmVkIGluZGVudCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNyksIGlvcyg3LjApKTsKIAogLyogQ29udmVydGluZyB0
byBwcmltaXRpdmUgdmFsdWVzICovCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvV2ViS2l0QXZhaWxhYmlsaXR5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL1dl
YktpdEF2YWlsYWJpbGl0eS5oCmluZGV4IDgyMjc1MjAzZGM5ODAxODMzMWE5MWJiOTViOWQ2ZGIx
NmU1OWY5YWEuLjBmNmFmYjZiMWRiZDYxOTgxZGVkZWQwYTFlNWIyNGM4ZmRjYjUzZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvV2ViS2l0QXZhaWxhYmlsaXR5LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9XZWJLaXRBdmFpbGFiaWxpdHkuaApAQCAtNjks
MTUgKzY5LDEyIEBACiAjZW5kaWYgLyogIVRBUkdFVF9PU19JUEhPTkUgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTEwMCAqLwogCiAjaWYgZGVmaW5lZChCVUlMRElOR19H
VEtfXykKLSN1bmRlZiBDRl9BVkFJTEFCTEUKLSNkZWZpbmUgQ0ZfQVZBSUxBQkxFKF9tYWMsIF9p
b3MpCi0jdW5kZWYgQ0ZfRU5VTV9BVkFJTEFCTEUKLSNkZWZpbmUgQ0ZfRU5VTV9BVkFJTEFCTEUo
X21hYywgX2lvcykKKyN1bmRlZiBKU0NfQVBJX0FWQUlMQUJMRQorI2RlZmluZSBKU0NfQVBJX0FW
QUlMQUJMRSguLi4pCiAjZW5kaWYKIAogI2Vsc2UKLSNkZWZpbmUgQ0ZfQVZBSUxBQkxFKF9tYWMs
IF9pb3MpCi0jZGVmaW5lIENGX0VOVU1fQVZBSUxBQkxFKF9tYWMsIF9pb3MpCisjZGVmaW5lIEpT
Q19BUElfQVZBSUxBQkxFKC4uLikKICNlbmRpZgogCiAjZW5kaWYgLyogX19XZWJLaXRBdmFpbGFi
aWxpdHlfXyAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9D
dXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0KaW5kZXggNTMx
ODhmYmE4OGY5NTQyN2M4YWU5MzM5YWFjODhkMGM2OGExN2ViMS4uYmQ3ZThhNjg2MDdlNWY4ZGQ3
OGQ5NDZiZGRhNzRhNjFkMjVmN2UwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS90ZXN0cy9DdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5tbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0N1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJU
ZXN0Lm1tCkBAIC0yMyw2ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkN1cnJlbnRUaGlzSW5z
aWRlQmxvY2tHZXR0ZXJUZXN0LmgiCiAKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9DdXN0b21HbG9iYWxPYmplY3RD
bGFzc1Rlc3QuYyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VzdG9tR2xvYmFs
T2JqZWN0Q2xhc3NUZXN0LmMKaW5kZXggYWM1NDcxYTY3NDFiZmY5M2M3MDBiZjNiM2FhYzZlZDM4
NzQ5ZjBiZi4uOWZmZTIzM2Y0Yjc5NmY1YTBiOTViMzc0YTQ4M2IwMTRlZDViZGQ5NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9DdXN0b21HbG9iYWxPYmplY3RD
bGFzc1Rlc3QuYworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0N1c3RvbUds
b2JhbE9iamVjdENsYXNzVGVzdC5jCkBAIC0yMyw2ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDdXN0b21HbG9iYWxPYmplY3RD
bGFzc1Rlc3QuaCIKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmUHJpdmF0
ZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9EYXRlVGVz
dHMubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0RhdGVUZXN0cy5tbQppbmRl
eCAyYmRhM2FkYTZiMTU4ZTAxMDhhZWM1ZjQyZTc2NTM5NzMwZWMyZWQ5Li42NjUyMTc3ZGU0MTdi
MTJlZTk0ZGU4ODNiOGZiMGJkNzA5ZGQ2NzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL0RhdGVUZXN0cy5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL0RhdGVUZXN0cy5tbQpAQCAtMjMsNiArMjMsNyBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
RGF0ZVRlc3RzLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU0V4cG9ydFRlc3RzLm1tIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU0V4cG9ydFRlc3RzLm1tCmluZGV4IDFj
ZWM5Mzk3OWM0MTZmNGMwZjA0OTA1ZWU3NDc2ZTc4NjRkODQyNTIuLmRmZGM5NWY0N2JjNzc1YjA4
YjM2NjczZDBiYmJmZTZiY2UzNDFiNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvdGVzdHMvSlNFeHBvcnRUZXN0cy5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL0pTRXhwb3J0VGVzdHMubW0KQEAgLTIzLDYgKzIzLDcgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIkpTRXhwb3J0VGVzdHMuaCIKIAogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZS5jIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU05vZGUuYwppbmRleCBkMGEwZGMzZWM3MjM3MjU3ZmEx
ODBkMDUxNGY3NGM2YWQyZTRiNWI3Li5iYzAwNDBhZTZiYTQwOTg1MzgzOGNhZWFkNmEyMzg0ZWM5
OTkwMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9k
ZS5jCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNOb2RlLmMKQEAgLTIz
LDcgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpbmNsdWRlIDx3dGYvUGxhdGZv
cm0uaD4KKyNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1
ZGUgIkpTTm9kZUxpc3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
dGVzdHMvSlNOb2RlTGlzdC5jIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU05v
ZGVMaXN0LmMKaW5kZXggZjAzN2UwOTRhMDllMWEyMjYwNDRlZWQxZjIzZDBhNTE4NjFhM2Y0Yi4u
OTlhMzI5NTE4ZTZhOWExY2ZiMTI2NzY0NzM5YTBiNjljZmE1ZDQwZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU05vZGVMaXN0LmMKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU05vZGVMaXN0LmMKQEAgLTIzLDcgKzIzLDcgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAogICovCiAKLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRl
ICJjb25maWcuaCIKIAogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkpTTm9kZUxpc3Qu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9kZS5jIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Ob2RlLmMKaW5kZXggZGI2ODdlOTUyZjFh
OWQ4YzEzNGI5MDY3N2QyOWE2NDA2ZDhkYjFhMi4uOGY3ZDA2YjJhYTRhZGUyNjlkNjFlZmM2MWMw
MTg0Y2NjMzE5NWEwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy9Ob2RlLmMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Ob2RlLmMKQEAg
LTIzLDcgKzIzLDkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKKyNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJOb2RlLmgiCisKICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxz
dGRsaWIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9O
b2RlTGlzdC5jIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Ob2RlTGlzdC5jCmlu
ZGV4IDY5ZjRjZDVjNDg3MzEyYmQ2Mzk5NjM0ZmIwNjg0YTEyMjY2NGRjMTguLjIyZDM4N2MwZDQy
MjZmYmFkMTE5N2M2NDgzMWNkNTdhZjMxYWZkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvTm9kZUxpc3QuYworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL05vZGVMaXN0LmMKQEAgLTIzLDYgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAog
ICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogCiAjaW5j
bHVkZSA8c3RkbGliLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL21pbmlkb20uYyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvbWluaWRvbS5j
CmluZGV4IDAyYjQxYTljN2Y5ZGExMTNiMDAzZDRmOTE5YTQyMDhkMzg5Yjc4YmQuLjQxZjE4Y2Rm
NzI5MDQzNjkwY2ZlNzczYmE0MGQ4YjViNDRjYTcwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvbWluaWRvbS5jCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvdGVzdHMvbWluaWRvbS5jCkBAIC0yNCw3ICsyNCw3IEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
ICAqLwogCi0jaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSAiY29uZmlnLmgiCiAK
ICNpbmNsdWRlICJKU0NvbnRleHRSZWYuaCIKICNpbmNsdWRlICJKU05vZGUuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKaW5kZXggN2JlY2RmZTA0MTE1YmY5NDg5
ZWY4NDE5N2MxNjcxYzViODNiYTRlMi4uODZkMWMyNWMyN2U5NTJkNjFhYjllNDFiZTE0NTc0MTBm
YmM0OGY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLmMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKQEAg
LTIzLDcgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2luY2x1ZGUgPHd0Zi9QbGF0
Zm9ybS5oPgorI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgVVNFKENGKQogI2luY2x1ZGUgIkph
dmFTY3JpcHRDb3JlLmgiCkBAIC02Niw2ICs2Niw4IEBACiB2b2lkIHRlc3RPYmplY3RpdmVDQVBJ
KHZvaWQpOwogI2VuZGlmCiAKK2ludCB0ZXN0Q0FQSVZpYUNwcCh2b2lkKTsKKwogYm9vbCBhc3Nl
cnRUcnVlKGJvb2wgdmFsdWUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwogCiBzdGF0aWMgSlNHbG9i
YWxDb250ZXh0UmVmIGNvbnRleHQ7CkBAIC0xMzYxLDYgKzEzNjMsNyBAQCBpbnQgbWFpbihpbnQg
YXJnYywgY2hhciogYXJndltdKQogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgdGVzdE9i
amVjdGl2ZUNBUEkoKTsKICNlbmRpZgorICAgIFJFTEVBU0VfQVNTRVJUKCF0ZXN0Q0FQSVZpYUNw
cCgpKTsKIAogICAgIGNvbnN0IGNoYXIgKnNjcmlwdFBhdGggPSAidGVzdGFwaS5qcyI7CiAgICAg
aWYgKGFyZ2MgPiAxKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL3Rlc3RhcGkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBp
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jYzFiNDUwN2Y5YTk2OTljNDY0YjY0NmY5MjJmZTgxOGU1NzRmZWU1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLmNwcApAQCAtMCwwICsxLDM5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKKyNpbmNsdWRlICJKYXZhU2NyaXB0Q29yZS5oIgorCisjaW5jbHVkZSA8d3RmL0RhdGFMb2cu
aD4KKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK2V4dGVybiAiQyIgaW50IHRlc3RDQVBJVmlh
Q3BwKCk7CisKK2NsYXNzIEFQSVN0cmluZyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQVBJ
U3RyaW5nKTsKK3B1YmxpYzoKKworICAgIEFQSVN0cmluZyhjb25zdCBjaGFyKiBzdHJpbmcpCisg
ICAgICAgIDogbV9zdHJpbmcoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc3RyaW5nKSkK
KyAgICB7CisgICAgfQorCisgICAgfkFQSVN0cmluZygpCisgICAgeworICAgICAgICBKU1N0cmlu
Z1JlbGVhc2UobV9zdHJpbmcpOworICAgIH0KKworICAgIG9wZXJhdG9yIEpTU3RyaW5nUmVmKCkg
eyByZXR1cm4gbV9zdHJpbmc7IH0KKworcHJpdmF0ZToKKyAgICBKU1N0cmluZ1JlZiBtX3N0cmlu
ZzsKK307CisKK2NsYXNzIEFQSUNvbnRleHQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFQ
SUNvbnRleHQpOworcHVibGljOgorCisgICAgQVBJQ29udGV4dCgpCisgICAgICAgIDogbV9jb250
ZXh0KEpTR2xvYmFsQ29udGV4dENyZWF0ZShudWxscHRyKSkKKyAgICB7CisgICAgICAgIEFQSVN0
cmluZyBwcmludCgicHJpbnQiKTsKKyAgICAgICAgSlNPYmplY3RSZWYgcHJpbnRGdW5jdGlvbiA9
IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrKG1fY29udGV4dCwgcHJpbnQsIFtdIChK
U0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYsIHNpemVfdCBhcmd1bWVu
dENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKikgeworCisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgaSsrKQor
ICAgICAgICAgICAgICAgIGRhdGFMb2coYml0d2lzZV9jYXN0PEpTQzo6SlNWYWx1ZT4oYXJndW1l
bnRzW2ldKSk7CisgICAgICAgICAgICBkYXRhTG9nTG4oKTsKKyAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworICAgICAgICB9KTsKKworICAgICAgICBKU09iamVj
dFNldFByb3BlcnR5KG1fY29udGV4dCwgSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KG1fY29udGV4
dCksIHByaW50LCBwcmludEZ1bmN0aW9uLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUsIG51bGxw
dHIpOworICAgIH0KKworICAgIH5BUElDb250ZXh0KCkKKyAgICB7CisgICAgICAgIEpTR2xvYmFs
Q29udGV4dFJlbGVhc2UobV9jb250ZXh0KTsKKyAgICB9CisKKyAgICBvcGVyYXRvciBKU0dsb2Jh
bENvbnRleHRSZWYoKSB7IHJldHVybiBtX2NvbnRleHQ7IH0KKworcHJpdmF0ZToKKyAgICBKU0ds
b2JhbENvbnRleHRSZWYgbV9jb250ZXh0OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2Ns
YXNzIEFQSVZlY3RvciA6IHByb3RlY3RlZCBWZWN0b3I8VD4geworICAgIHVzaW5nIEJhc2UgPSBW
ZWN0b3I8VD47CitwdWJsaWM6CisgICAgQVBJVmVjdG9yKEFQSUNvbnRleHQmIGNvbnRleHQpCisg
ICAgICAgIDogQmFzZSgpCisgICAgICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgeworICAg
IH0KKworICAgIH5BUElWZWN0b3IoKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvJiB2YWx1ZSA6
ICp0aGlzKQorICAgICAgICAgICAgSlNWYWx1ZVVucHJvdGVjdChtX2NvbnRleHQsIHZhbHVlKTsK
KyAgICB9CisKKyAgICB1c2luZyBWZWN0b3I8VD46Om9wZXJhdG9yW107CisgICAgdXNpbmcgVmVj
dG9yPFQ+OjpzaXplOworICAgIHVzaW5nIFZlY3RvcjxUPjo6YmVnaW47CisgICAgdXNpbmcgVmVj
dG9yPFQ+OjplbmQ7CisgICAgdXNpbmcgdHlwZW5hbWUgVmVjdG9yPFQ+OjppdGVyYXRvcjsKKwor
ICAgIHZvaWQgYXBwZW5kKFQgdmFsdWUpCisgICAgeworICAgICAgICBKU1ZhbHVlUHJvdGVjdCht
X2NvbnRleHQsIHZhbHVlKTsKKyAgICAgICAgQmFzZTo6YXBwZW5kKFdURk1vdmUodmFsdWUpKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgQVBJQ29udGV4dCYgbV9jb250ZXh0OworfTsKKworY2xh
c3MgVGVzdEFQSSB7CitwdWJsaWM6CisgICAgaW50IHJ1bigpOworcHJpdmF0ZToKKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ3M+CisgICAgYm9vbCBjaGVjayhib29sIGNvbmRpdGlv
biwgU3RyaW5ncy4uLiBtZXNzYWdlKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEpTRnVuY3Rv
ciwgdHlwZW5hbWUgQVBJRnVuY3Rvcj4KKyAgICB2b2lkIGNoZWNrSlNBbmRBUElNYXRjaChjb25z
dCBKU0Z1bmN0b3ImLCBjb25zdCBBUElGdW5jdG9yJiwgY29uc3QgY2hhciogZGVzY3JpcHRpb24p
OworCisgICAgLy8gSGVscGVyIG1ldGhvZHMuCisgICAgdXNpbmcgU2NyaXB0UmVzdWx0ID0gRXhw
ZWN0ZWQ8SlNWYWx1ZVJlZiwgSlNWYWx1ZVJlZj47CisgICAgU2NyaXB0UmVzdWx0IGV2YWx1YXRl
U2NyaXB0KGNvbnN0IGNoYXIqIHNjcmlwdCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCA9IG51bGxw
dHIpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CisgICAgU2NyaXB0
UmVzdWx0IGNhbGxGdW5jdGlvbihjb25zdCBjaGFyKiBmdW5jdGlvblNvdXJjZSwgQXJndW1lbnRU
eXBlcy4uLiBhcmd1bWVudHMpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlw
ZXM+CisgICAgYm9vbCBmdW5jdGlvblJldHVybnNUcnVlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uU291
cmNlLCBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cyk7CisKKyAgICAvLyBXYXlzIHRvIG1ha2Ug
c2V0cyBvZiBpbnRlcmVzdGluZyB0aGluZ3MuCisgICAgQVBJVmVjdG9yPEpTT2JqZWN0UmVmPiBp
bnRlcmVzdGluZ09iamVjdHMoKTsKKyAgICBBUElWZWN0b3I8SlNWYWx1ZVJlZj4gaW50ZXJlc3Rp
bmdLZXlzKCk7CisKKyAgICBpbnQgZmFpbGVkIHsgMCB9OworICAgIEFQSUNvbnRleHQgY29udGV4
dDsKK307CisKK2ludCB0ZXN0Q0FQSVZpYUNwcCgpCit7CisgICAgVGVzdEFQSSB0ZXN0ZXI7Cisg
ICAgcmV0dXJuIHRlc3Rlci5ydW4oKTsKK30KKworVGVzdEFQSTo6U2NyaXB0UmVzdWx0IFRlc3RB
UEk6OmV2YWx1YXRlU2NyaXB0KGNvbnN0IGNoYXIqIHNjcmlwdCwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCkKK3sKKyAgICBBUElTdHJpbmcgc2NyaXB0QVBJU3RyaW5nKHNjcmlwdCk7CisgICAgSlNW
YWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOworCisgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBK
U0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIHNjcmlwdEFQSVN0cmluZywgdGhpc09iamVjdCwgbnVs
bHB0ciwgMCwgJmV4Y2VwdGlvbik7CisgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJu
IFVuZXhwZWN0ZWQ8SlNWYWx1ZVJlZj4oZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gU2NyaXB0UmVz
dWx0KHJlc3VsdCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CitU
ZXN0QVBJOjpTY3JpcHRSZXN1bHQgVGVzdEFQSTo6Y2FsbEZ1bmN0aW9uKGNvbnN0IGNoYXIqIGZ1
bmN0aW9uU291cmNlLCBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBKU1ZhbHVl
UmVmIGZ1bmN0aW9uOworICAgIHsKKyAgICAgICAgU2NyaXB0UmVzdWx0IGZ1bmN0aW9uUmVzdWx0
ID0gZXZhbHVhdGVTY3JpcHQoZnVuY3Rpb25Tb3VyY2UpOworICAgICAgICBpZiAoIWZ1bmN0aW9u
UmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uUmVzdWx0OworICAgICAgICBmdW5j
dGlvbiA9IGZ1bmN0aW9uUmVzdWx0LnZhbHVlKCk7CisgICAgfQorCisgICAgSlNWYWx1ZVJlZiBl
eGNlcHRpb24gPSBudWxscHRyOworICAgIGlmIChKU09iamVjdFJlZiBmdW5jdGlvbk9iamVjdCA9
IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBmdW5jdGlvbiwgJmV4Y2VwdGlvbikpIHsKKyAgICAg
ICAgSlNWYWx1ZVJlZiBhcmdzW3NpemVvZi4uLihhcmd1bWVudHMpXSB7IGFyZ3VtZW50cy4uLiB9
OworICAgICAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oY29u
dGV4dCwgZnVuY3Rpb25PYmplY3QsIGZ1bmN0aW9uT2JqZWN0LCBzaXplb2YuLi4oYXJndW1lbnRz
KSwgYXJncywgJmV4Y2VwdGlvbik7CisgICAgICAgIGlmICghZXhjZXB0aW9uKQorICAgICAgICAg
ICAgcmV0dXJuIFNjcmlwdFJlc3VsdChyZXN1bHQpOworICAgIH0KKworICAgIFJFTEVBU0VfQVNT
RVJUKGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8SlNWYWx1ZVJlZj4oZXhjZXB0
aW9uKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KK2Jvb2wgVGVz
dEFQSTo6ZnVuY3Rpb25SZXR1cm5zVHJ1ZShjb25zdCBjaGFyKiBmdW5jdGlvblNvdXJjZSwgQXJn
dW1lbnRUeXBlcy4uLiBhcmd1bWVudHMpCit7CisgICAgSlNWYWx1ZVJlZiB0cnVlVmFsdWUgPSBK
U1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgdHJ1ZSk7CisgICAgU2NyaXB0UmVzdWx0IHJlc3Vs
dCA9IGNhbGxGdW5jdGlvbihmdW5jdGlvblNvdXJjZSwgYXJndW1lbnRzLi4uKTsKKyAgICBpZiAo
IXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBKU1ZhbHVlSXNTdHJp
Y3RFcXVhbChjb250ZXh0LCB0cnVlVmFsdWUsIHJlc3VsdC52YWx1ZSgpKTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUuLi4gU3RyaW5ncz4KK2Jvb2wgVGVzdEFQSTo6Y2hlY2soYm9vbCBjb25kaXRp
b24sIFN0cmluZ3MuLi4gbWVzc2FnZXMpCit7CisgICAgaWYgKCFjb25kaXRpb24pIHsKKyAgICAg
ICAgZGF0YUxvZ0xuKG1lc3NhZ2VzLi4uLCAiOiBGQUlMRUQiKTsKKyAgICAgICAgZmFpbGVkKys7
CisgICAgfSBlbHNlCisgICAgICAgIGRhdGFMb2dMbihtZXNzYWdlcy4uLiwgIjogUEFTU0VEIik7
CisKKyAgICByZXR1cm4gY29uZGl0aW9uOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0Z1bmN0
b3IsIHR5cGVuYW1lIEFQSUZ1bmN0b3I+Cit2b2lkIFRlc3RBUEk6OmNoZWNrSlNBbmRBUElNYXRj
aChjb25zdCBKU0Z1bmN0b3ImIGpzRnVuY3RvciwgY29uc3QgQVBJRnVuY3RvciYgYXBpRnVuY3Rv
ciwgY29uc3QgY2hhciogZGVzY3JpcHRpb24pCit7CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24g
PSBudWxscHRyOworICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gYXBpRnVuY3RvcigmZXhjZXB0aW9u
KTsKKyAgICBTY3JpcHRSZXN1bHQganNSZXN1bHQgPSBqc0Z1bmN0b3IoKTsKKyAgICBpZiAoIWpz
UmVzdWx0KSB7CisgICAgICAgIGNoZWNrKGV4Y2VwdGlvbiwgIkpTIGFuZCBBUEkgY2FsbHMgc2hv
dWxkIGJvdGggdGhyb3cgYW4gZXhjZXB0aW9uIHdoaWxlICIsIGRlc2NyaXB0aW9uKTsKKyAgICAg
ICAgY2hlY2soZnVuY3Rpb25SZXR1cm5zVHJ1ZSgiKGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEu
Y29uc3RydWN0b3IgPT09IGIuY29uc3RydWN0b3I7IH0pIiwgZXhjZXB0aW9uLCBqc1Jlc3VsdC5l
cnJvcigpKSwgIkpTIGFuZCBBUEkgY2FsbHMgc2hvdWxkIGJvdGggdGhyb3cgdGhlIHNhbWUgZXhj
ZXB0aW9uIHdoaWxlICIsIGRlc2NyaXB0aW9uKTsKKyAgICB9IGVsc2UgeworICAgICAgICBjaGVj
ayghZXhjZXB0aW9uLCAiSlMgYW5kIEFQSSBjYWxscyBzaG91bGQgYm90aCBub3QgdGhyb3cgYW4g
ZXhjZXB0aW9uIHdoaWxlICIsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgY2hlY2soSlNWYWx1ZUlz
U3RyaWN0RXF1YWwoY29udGV4dCwgcmVzdWx0LCBqc1Jlc3VsdC52YWx1ZSgpKSwgIkpTIHJlc3Vs
dCBhbmQgQVBJIGNhbGxzIHNob3VsZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUgd2hpbGUgIiwgZGVz
Y3JpcHRpb24pOworICAgIH0KK30KKworQVBJVmVjdG9yPEpTT2JqZWN0UmVmPiBUZXN0QVBJOjpp
bnRlcmVzdGluZ09iamVjdHMoKQoreworICAgIEFQSVZlY3RvcjxKU09iamVjdFJlZj4gcmVzdWx0
KGNvbnRleHQpOworICAgIEpTT2JqZWN0UmVmIGFycmF5ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRl
eHQsIGV2YWx1YXRlU2NyaXB0KAorICAgICAgICAiW3t9LCBbXSwgeyBbU3ltYm9sLml0ZXJhdG9y
XTogMSB9LCBuZXcgRGF0ZSgpLCBuZXcgU3RyaW5nKCdzdHInKSwgbmV3IE1hcCgpLCBuZXcgU2V0
KCksIG5ldyBXZWFrTWFwKCksIG5ldyBXZWFrU2V0KCksIG5ldyBFcnJvcigpLCBuZXcgTnVtYmVy
KDQyKSwgbmV3IEJvb2xlYW4oKSwgeyBnZXQgbGVuZ3RoKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsg
fSB9XTsiKS52YWx1ZSgpLCBudWxscHRyKTsKKworICAgIEFQSVN0cmluZyBsZW5ndGhTdHJpbmco
Imxlbmd0aCIpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0
LCBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGFycmF5LCBsZW5ndGhTdHJpbmcsIG51bGxw
dHIpLCBudWxscHRyKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQs
IEpTT2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIGFycmF5LCBpLCBudWxscHRyKSwg
bnVsbHB0cik7CisgICAgICAgIEFTU0VSVChvYmplY3QpOworICAgICAgICByZXN1bHQuYXBwZW5k
KG9iamVjdCk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQVBJVmVjdG9yPEpT
VmFsdWVSZWY+IFRlc3RBUEk6OmludGVyZXN0aW5nS2V5cygpCit7CisgICAgQVBJVmVjdG9yPEpT
VmFsdWVSZWY+IHJlc3VsdChjb250ZXh0KTsKKyAgICBKU09iamVjdFJlZiBhcnJheSA9IEpTVmFs
dWVUb09iamVjdChjb250ZXh0LCBldmFsdWF0ZVNjcmlwdCgiW3t9LCBbXSwgMSwgU3ltYm9sLml0
ZXJhdG9yLCAnbGVuZ3RoJ10iKS52YWx1ZSgpLCBudWxscHRyKTsKKworICAgIEFQSVN0cmluZyBs
ZW5ndGhTdHJpbmcoImxlbmd0aCIpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IEpTVmFsdWVUb051
bWJlcihjb250ZXh0LCBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGFycmF5LCBsZW5ndGhT
dHJpbmcsIG51bGxwdHIpLCBudWxscHRyKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IEpTT2JqZWN0R2V0UHJv
cGVydHlBdEluZGV4KGNvbnRleHQsIGFycmF5LCBpLCBudWxscHRyKTsKKyAgICAgICAgQVNTRVJU
KHZhbHVlKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCh2YWx1ZSk7CisgICAgfQorCisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworaW50IFRlc3RBUEk6OnJ1bigpCit7CisgICAgZGF0YUxvZ0xuKCJT
dGFydGluZyBDLUFQSSB0ZXN0cyBpbiBDKysiKTsKKyAgICBjb25zdCBjaGFyKiBpc1N5bWJvbEZ1
bmN0aW9uID0gIihmdW5jdGlvbiBpc1N5bWJvbChzeW1ib2wpIHsgcmV0dXJuIHR5cGVvZihzeW1i
b2wpID09PSAnc3ltYm9sJzsgfSkiOworICAgIGNvbnN0IGNoYXIqIGdldEZ1bmN0aW9uID0gIihm
dW5jdGlvbiBnZXQob2JqZWN0LCBrZXkpIHsgcmV0dXJuIG9iamVjdFtrZXldOyB9KSI7CisgICAg
Y29uc3QgY2hhciogc2V0RnVuY3Rpb24gPSAiKGZ1bmN0aW9uIHNldChvYmplY3QsIGtleSwgdmFs
dWUpIHsgb2JqZWN0W2tleV0gPSB2YWx1ZTsgfSkiOworICAgIGNvbnN0IGNoYXIqIGhhc0Z1bmN0
aW9uID0gIihmdW5jdGlvbiBoYXMob2JqZWN0LCBrZXkpIHsgcmV0dXJuIGtleSBpbiBvYmplY3Q7
IH0pIjsKKyAgICBjb25zdCBjaGFyKiBkZWxldGVGdW5jdGlvbiA9ICIoZnVuY3Rpb24gZGVsKG9i
amVjdCwga2V5KSB7IHJldHVybiBkZWxldGUgb2JqZWN0W2tleV07IH0pIjsKKworICAgIHsKKyAg
ICAgICAgLy8gQ2FuJ3QgY2FsbCBTeW1ib2wgYXMgYSBjb25zdHJ1Y3RvciBzaW5jZSBpdCdzIG5v
dCBzdWJjbGFzc2FibGUuCisgICAgICAgIGF1dG8gcmVzdWx0ID0gZXZhbHVhdGVTY3JpcHQoIlN5
bWJvbCgnZG9wZScpOyIpOworICAgICAgICBjaGVjayhKU1ZhbHVlR2V0VHlwZShjb250ZXh0LCBy
ZXN1bHQudmFsdWUoKSkgPT0ga0pTVHlwZVN5bWJvbCwgImRvcGUgZ2V0IHR5cGUgaXMgYSBzeW1i
b2wiKTsKKyAgICAgICAgY2hlY2soSlNWYWx1ZUlzU3ltYm9sKGNvbnRleHQsIHJlc3VsdC52YWx1
ZSgpKSwgImRvcGUgaXMgYSBzeW1ib2wiKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIEFQSVN0
cmluZyBkZXNjcmlwdGlvbigiZG9wZSIpOworICAgICAgICBKU1ZhbHVlUmVmIHN5bWJvbCA9IEpT
VmFsdWVNYWtlU3ltYm9sKGNvbnRleHQsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgY2hlY2soZnVu
Y3Rpb25SZXR1cm5zVHJ1ZShpc1N5bWJvbEZ1bmN0aW9uLCBzeW1ib2wpLCAiSlNWYWx1ZU1ha2VT
eW1ib2wgbWFrZXMgYSBzeW1ib2wgdmFsdWUiKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGF1
dG8gb2JqZWN0cyA9IGludGVyZXN0aW5nT2JqZWN0cygpOworICAgICAgICBhdXRvIGtleXMgPSBp
bnRlcmVzdGluZ0tleXMoKTsKKworICAgICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IG9iamVjdHMp
IHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiXG5uZXh0IG9iamVjdDogIiwgYml0d2lzZV9jYXN0
PEpTQzo6SlNWYWx1ZT4ob2JqZWN0KSk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGtleSA6IGtl
eXMpIHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlVzaW5nIGtleTogIiwgYml0d2lzZV9j
YXN0PEpTQzo6SlNWYWx1ZT4oa2V5KSk7CisgICAgICAgICAgICAgICAgY2hlY2tKU0FuZEFQSU1h
dGNoKAorICAgICAgICAgICAgICAgICAgICBbJl0geworICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGNhbGxGdW5jdGlvbihnZXRGdW5jdGlvbiwgb2JqZWN0LCBrZXkpOworICAgICAgICAg
ICAgICAgICAgICB9LCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTT2JqZWN0R2V0UHJvcGVydHlLZXkoY29udGV4dCwgb2JqZWN0
LCBrZXksIGV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAgICAgIH0sICJjaGVja2luZyBnZXQg
cHJvcGVydHkga2V5cyIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
eworICAgICAgICBhdXRvIGpzT2JqZWN0cyA9IGludGVyZXN0aW5nT2JqZWN0cygpOworICAgICAg
ICBhdXRvIGFwaU9iamVjdHMgPSBpbnRlcmVzdGluZ09iamVjdHMoKTsKKyAgICAgICAgYXV0byBr
ZXlzID0gaW50ZXJlc3RpbmdLZXlzKCk7CisKKyAgICAgICAgSlNWYWx1ZVJlZiB0aGVBbnN3ZXIg
PSBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCA0Mik7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwganNPYmplY3RzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8m
IGtleSA6IGtleXMpIHsKKyAgICAgICAgICAgICAgICBKU09iamVjdFJlZiBqc09iamVjdCA9IGpz
T2JqZWN0c1tpXTsKKyAgICAgICAgICAgICAgICBKU09iamVjdFJlZiBhcGlPYmplY3QgPSBhcGlP
YmplY3RzW2ldOworICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAg
ICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVu
Y3Rpb24oc2V0RnVuY3Rpb24sIGpzT2JqZWN0LCBrZXksIHRoZUFuc3dlcik7CisgICAgICAgICAg
ICAgICAgICAgIH0gLCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAgICAg
ICAgICAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eUtleShjb250ZXh0LCBhcGlPYmplY3QsIGtl
eSwgdGhlQW5zd2VyLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUsIGV4Y2VwdGlvbik7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
CisgICAgICAgICAgICAgICAgICAgIH0sICJzZXR0aW5nIHByb3BlcnR5IGtleXMgdG8gdGhlIGFu
c3dlciIpOworICAgICAgICAgICAgICAgIC8vIENoZWNrIGdldCBpcyB0aGUgc2FtZSBvbiBBUEkg
b2JqZWN0LgorICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAg
ICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rp
b24oZ2V0RnVuY3Rpb24sIGFwaU9iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwg
WyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBKU09iamVjdEdldFByb3BlcnR5S2V5KGNvbnRleHQsIGFwaU9iamVjdCwga2V5LCBleGNl
cHRpb24pOworICAgICAgICAgICAgICAgICAgICB9LCAiZ2V0dGluZyBwcm9wZXJ0eSBrZXlzIGZy
b20gQVBJIG9iamVjdHMiKTsKKyAgICAgICAgICAgICAgICAvLyBDaGVjayBnZXQgaXMgdGhlIHNh
bWUgb24gcmVzcGVjdGl2ZSBvYmplY3RzLgorICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElN
YXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBjYWxsRnVuY3Rpb24oZ2V0RnVuY3Rpb24sIGpzT2JqZWN0LCBrZXkpOworICAgICAg
ICAgICAgICAgICAgICB9LCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEpTT2JqZWN0R2V0UHJvcGVydHlLZXkoY29udGV4dCwgYXBp
T2JqZWN0LCBrZXksIGV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAgICAgIH0sICJnZXR0aW5n
IHByb3BlcnR5IGtleXMgZnJvbSByZXNwZWN0aXZlIG9iamVjdHMiKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0byBvYmplY3RzID0gaW50ZXJl
c3RpbmdPYmplY3RzKCk7CisgICAgICAgIGF1dG8ga2V5cyA9IGludGVyZXN0aW5nS2V5cygpOwor
CisgICAgICAgIEpTVmFsdWVSZWYgdGhlQW5zd2VyID0gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4
dCwgNDIpOworICAgICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IG9iamVjdHMpIHsKKyAgICAgICAg
ICAgIGRhdGFMb2dMbigiXG5OZXh0IG9iamVjdDogIiwgYml0d2lzZV9jYXN0PEpTQzo6SlNWYWx1
ZT4ob2JqZWN0KSk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGtleSA6IGtleXMpIHsKKyAgICAg
ICAgICAgICAgICBkYXRhTG9nTG4oIlVzaW5nIGtleTogIiwgYml0d2lzZV9jYXN0PEpTQzo6SlNW
YWx1ZT4oa2V5KSk7CisgICAgICAgICAgICAgICAgY2hlY2tKU0FuZEFQSU1hdGNoKAorICAgICAg
ICAgICAgICAgICAgICBbJl0geworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxG
dW5jdGlvbihoYXNGdW5jdGlvbiwgb2JqZWN0LCBrZXkpOworICAgICAgICAgICAgICAgICAgICB9
LCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCBKU09iamVjdEhhc1Byb3BlcnR5S2V5
KGNvbnRleHQsIG9iamVjdCwga2V5LCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAg
fSwgImNoZWNraW5nIGhhcyBwcm9wZXJ0eSBrZXlzIHVuc2V0Iik7CisKKyAgICAgICAgICAgICAg
ICBjaGVjayghIWNhbGxGdW5jdGlvbihzZXRGdW5jdGlvbiwgb2JqZWN0LCBrZXksIHRoZUFuc3dl
ciksICJzZXQgcHJvcGVydHkgdG8gdGhlIGFuc3dlciIpOworCisgICAgICAgICAgICAgICAgY2hl
Y2tKU0FuZEFQSU1hdGNoKAorICAgICAgICAgICAgICAgICAgICBbJl0geworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNhbGxGdW5jdGlvbihoYXNGdW5jdGlvbiwgb2JqZWN0LCBrZXkp
OworICAgICAgICAgICAgICAgICAgICB9LCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgewor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0
LCBKU09iamVjdEhhc1Byb3BlcnR5S2V5KGNvbnRleHQsIG9iamVjdCwga2V5LCBleGNlcHRpb24p
KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgImNoZWNraW5nIGhhcyBwcm9wZXJ0eSBrZXlzIHNl
dCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgeworICAgICAgICBh
dXRvIG9iamVjdHMgPSBpbnRlcmVzdGluZ09iamVjdHMoKTsKKyAgICAgICAgYXV0byBrZXlzID0g
aW50ZXJlc3RpbmdLZXlzKCk7CisKKyAgICAgICAgSlNWYWx1ZVJlZiB0aGVBbnN3ZXIgPSBKU1Zh
bHVlTWFrZU51bWJlcihjb250ZXh0LCA0Mik7CisgICAgICAgIGZvciAoYXV0byYgb2JqZWN0IDog
b2JqZWN0cykgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJcbk5leHQgb2JqZWN0OiAiLCBiaXR3
aXNlX2Nhc3Q8SlNDOjpKU1ZhbHVlPihvYmplY3QpKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYg
a2V5IDoga2V5cykgeworICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiVXNpbmcga2V5OiAiLCBi
aXR3aXNlX2Nhc3Q8SlNDOjpKU1ZhbHVlPihrZXkpKTsKKyAgICAgICAgICAgICAgICBjaGVja0pT
QW5kQVBJTWF0Y2goCisgICAgICAgICAgICAgICAgICAgIFsmXSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gY2FsbEZ1bmN0aW9uKGRlbGV0ZUZ1bmN0aW9uLCBvYmplY3QsIGtleSk7
CisgICAgICAgICAgICAgICAgICAgIH0sIFsmXSAoSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQs
IEpTT2JqZWN0RGVsZXRlUHJvcGVydHlLZXkoY29udGV4dCwgb2JqZWN0LCBrZXksIGV4Y2VwdGlv
bikpOworICAgICAgICAgICAgICAgICAgICB9LCAiY2hlY2tpbmcgaGFzIHByb3BlcnR5IGtleXMg
dW5zZXQiKTsKKworICAgICAgICAgICAgICAgIGNoZWNrKCEhY2FsbEZ1bmN0aW9uKHNldEZ1bmN0
aW9uLCBvYmplY3QsIGtleSwgdGhlQW5zd2VyKSwgInNldCBwcm9wZXJ0eSB0byB0aGUgYW5zd2Vy
Iik7CisKKyAgICAgICAgICAgICAgICBjaGVja0pTQW5kQVBJTWF0Y2goCisgICAgICAgICAgICAg
ICAgICAgIFsmXSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbEZ1bmN0aW9u
KGRlbGV0ZUZ1bmN0aW9uLCBvYmplY3QsIGtleSk7CisgICAgICAgICAgICAgICAgICAgIH0sIFsm
XSAoSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIEpTT2JqZWN0RGVsZXRlUHJvcGVydHlLZXko
Y29udGV4dCwgb2JqZWN0LCBrZXksIGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgICAgICB9
LCAiY2hlY2tpbmcgaGFzIHByb3BlcnR5IGtleXMgc2V0Iik7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBkYXRhTG9nTG4oIkMtQVBJIHRlc3RzIGluIEMrKyBoYWQgIiwg
ZmFpbGVkLCAiIGZhaWx1cmVzIik7CisgICAgcmV0dXJuIGZhaWxlZDsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQppbmRleCBhMTY1NGFlMTFlMTkxYTY0OTJj
NTUzNjhkOGViZDBkNTYxOWQxOGEyLi4zMTRjZTdkZDliNGVlZGVlYWRlOGFlNGQ4ZmNjMDNmZjA0
MzhhOGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3Rh
cGkubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCkBA
IC0yMyw2ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiSlNFeHBvcnRNYWNyb3MuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmg+CiAKQEAgLTQyLDYgKzQzLDExIEBACiAjaW1wb3J0IDx2ZWN0b3I+CiAj
aW1wb3J0IDx3dGYvTWVtb3J5Rm9vdHByaW50Lmg+CiAjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4K
KyNpbXBvcnQgPHd0Zi9EYXRhTG9nLmg+CisKKyNpZiBkZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEKQorc3RhdGljIGludCBpID0gMTsKKyNlbmRpZgogCiBleHRlcm4gIkMi
IHZvaWQgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKEpTQ29udGV4dFJl
Zik7CiBleHRlcm4gIkMiIHZvaWQgSlNTeW5jaHJvbm91c0VkZW5Db2xsZWN0Rm9yRGVidWdnaW5n
KEpTQ29udGV4dFJlZik7CkBAIC02MjYsNiArNjMyLDEwOSBAQCBzdGF0aWMgdm9pZCB0ZXN0T2Jq
ZWN0aXZlQ0FQSU1haW4oKQogICAgICAgICBjaGVja1Jlc3VsdChAIm5ldyBEYXRlIiwgcmVzdWx0
LmlzRGF0ZSk7CiAgICAgfQogCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29u
dGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1
ZSAqc3ltYm9sID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJTeW1ib2woJ2RvcGUnKTsiXTsK
KyAgICAgICAgSlNWYWx1ZSAqbm90U3ltYm9sID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCIn
ZG9wZSciXTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJTaG91bGQgYmUgYSBzeW1ib2wgdmFsdWUi
LCBzeW1ib2wuaXNTeW1ib2wpOworICAgICAgICBjaGVja1Jlc3VsdChAIlNob3VsZCBub3QgYmUg
YSBzeW1ib2wgdmFsdWUiLCAhbm90U3ltYm9sLmlzU3ltYm9sKTsKKyAgICB9CisKKyAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQg
YWxsb2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICpzeW1ib2wgPSBbSlNWYWx1ZSB2YWx1ZVdp
dGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246QCJkb3BlIiBpbkNvbnRleHQ6Y29udGV4dF07Cisg
ICAgICAgIGNoZWNrUmVzdWx0KEAiU2hvdWxkIGJlIGEgY3JlYXRlZCBmcm9tIE9iai1DIiwgc3lt
Ym9sLmlzU3ltYm9sKTsKKyAgICB9CisKKyNpZiAhKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMw
MCkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQorCisgICAgQGF1dG9yZWxlYXNl
cG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBp
bml0XTsKKyAgICAgICAgSlNWYWx1ZSAqYXJyYXlJdGVyYXRvciA9IFtjb250ZXh0IGV2YWx1YXRl
U2NyaXB0OkAiQXJyYXkucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0iXTsKKyAgICAgICAgSlNW
YWx1ZSAqaXRlcmF0b3JTeW1ib2wgPSBjb250ZXh0W0AiU3ltYm9sIl1bQCJpdGVyYXRvciJdOwor
ICAgICAgICBKU1ZhbHVlICphcnJheSA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld0FycmF5SW5Db250
ZXh0OmNvbnRleHRdOworICAgICAgICBjaGVja1Jlc3VsdChAIkxvb2tpbmcgdXAgYnkgc3Vic2Ny
aXB0IHdpdGggc3ltYm9sIHNob3VsZCB3b3JrIiwgW2FycmF5W2l0ZXJhdG9yU3ltYm9sXSBpc0Vx
dWFsOmFycmF5SXRlcmF0b3JdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJMb29raW5nIHVwIGJ5
IG1ldGhvZCB3aXRoIHN5bWJvbCBzaG91bGQgd29yayIsIFtbYXJyYXkgdmFsdWVGb3JQcm9wZXJ0
eTppdGVyYXRvclN5bWJvbF0gaXNFcXVhbDphcnJheUl0ZXJhdG9yXSk7CisgICAgfQorCisgICAg
QGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250
ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAqaXRlcmF0b3JTeW1ib2wgPSBjb250
ZXh0W0AiU3ltYm9sIl1bQCJpdGVyYXRvciJdOworICAgICAgICBKU1ZhbHVlICpvYmplY3QgPSBb
SlNWYWx1ZSB2YWx1ZVdpdGhOZXdPYmplY3RJbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIEpT
VmFsdWUgKnRoZUFuc3dlciA9IFtKU1ZhbHVlIHZhbHVlV2l0aFVJbnQzMjo0MiBpbkNvbnRleHQ6
Y29udGV4dF07CisgICAgICAgIG9iamVjdFtpdGVyYXRvclN5bWJvbF0gPSB0aGVBbnN3ZXI7Cisg
ICAgICAgIGNoZWNrUmVzdWx0KEAiU2V0dGluZyBieSBzdWJzY3JpcHQgd2l0aCBzeW1ib2wgc2hv
dWxkIHdvcmsiLCBbb2JqZWN0W2l0ZXJhdG9yU3ltYm9sXSBpc0VxdWFsOnRoZUFuc3dlcl0pOwor
ICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRl
eHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUgKml0ZXJhdG9y
U3ltYm9sID0gY29udGV4dFtAIlN5bWJvbCJdW0AiaXRlcmF0b3IiXTsKKyAgICAgICAgSlNWYWx1
ZSAqb2JqZWN0ID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRd
OworICAgICAgICBKU1ZhbHVlICp0aGVBbnN3ZXIgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhVSW50MzI6
NDIgaW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBbb2JqZWN0IHNldFZhbHVlOnRoZUFuc3dl
ciBmb3JQcm9wZXJ0eTppdGVyYXRvclN5bWJvbF07CisgICAgICAgIGNoZWNrUmVzdWx0KEAiU2V0
dGluZyBieSBtZXRob2Qgd2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsiLCBbb2JqZWN0W2l0ZXJhdG9y
U3ltYm9sXSBpc0VxdWFsOnRoZUFuc3dlcl0pOworICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBv
b2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5p
dF07CisgICAgICAgIEpTVmFsdWUgKml0ZXJhdG9yU3ltYm9sID0gY29udGV4dFtAIlN5bWJvbCJd
W0AiaXRlcmF0b3IiXTsKKyAgICAgICAgSlNWYWx1ZSAqb2JqZWN0ID0gW0pTVmFsdWUgdmFsdWVX
aXRoTmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBKU1ZhbHVlICp0aGVBbnN3
ZXIgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhVSW50MzI6NDIgaW5Db250ZXh0OmNvbnRleHRdOworICAg
ICAgICBvYmplY3RbaXRlcmF0b3JTeW1ib2xdID0gdGhlQW5zd2VyOworICAgICAgICBjaGVja1Jl
c3VsdChAImhhcyBwcm9wZXJ0eSB3aXRoIHN5bWJvbCBzaG91bGQgd29yayIsIFtvYmplY3QgaGFz
UHJvcGVydHk6aXRlcmF0b3JTeW1ib2xdKTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29s
IHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRd
OworICAgICAgICBKU1ZhbHVlICppdGVyYXRvclN5bWJvbCA9IGNvbnRleHRbQCJTeW1ib2wiXVtA
Iml0ZXJhdG9yIl07CisgICAgICAgIEpTVmFsdWUgKm9iamVjdCA9IFtKU1ZhbHVlIHZhbHVlV2l0
aE5ld09iamVjdEluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgSlNWYWx1ZSAqdGhlQW5zd2Vy
ID0gW0pTVmFsdWUgdmFsdWVXaXRoVUludDMyOjQyIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICAg
ICAgY2hlY2tSZXN1bHQoQCJkZWxldGUgcHJvcGVydHkgd2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsg
d2l0aG91dCBwcm9wZXJ0eSIsIFtvYmplY3QgZGVsZXRlUHJvcGVydHk6aXRlcmF0b3JTeW1ib2xd
KTsKKyAgICAgICAgb2JqZWN0W2l0ZXJhdG9yU3ltYm9sXSA9IHRoZUFuc3dlcjsKKyAgICAgICAg
Y2hlY2tSZXN1bHQoQCJkZWxldGUgcHJvcGVydHkgd2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsgd2l0
aCBwcm9wZXJ0eSIsIFtvYmplY3QgZGVsZXRlUHJvcGVydHk6aXRlcmF0b3JTeW1ib2xdKTsKKyAg
ICAgICAgY2hlY2tSZXN1bHQoQCJkZWxldGUgc2hvdWxkIGJlIGZhbHNlIHdpdGggbm9uLWNvbmZp
Z3VyYWJsZSBwcm9wZXJ0eSIsICFbY29udGV4dFtAIkFycmF5Il0gZGVsZXRlUHJvcGVydHk6QCJw
cm90b3R5cGUiXSk7CisgICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpT
Q29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNW
YWx1ZSAqb2JqZWN0ID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OmNvbnRl
eHRdOworICAgICAgICBOU09iamVjdCAqb2JqQ09iamVjdCA9IFtbTlNPYmplY3QgYWxsb2NdIGlu
aXRdOworICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBvYmplY3Rbb2JqQ09iamVjdF07CisgICAg
ICAgIGNoZWNrUmVzdWx0KEAiZ2V0dGluZyBhIG5vbi1jb252ZXJ0YWJsZSBvYmplY3Qgc2hvdWxk
IHJldHVybiB1bmRlZmluZWQiLCBbcmVzdWx0IGlzVW5kZWZpbmVkXSk7CisgICAgICAgIG9iamVj
dFtvYmpDT2JqZWN0XSA9IEAoMSk7CisgICAgICAgIHJlc3VsdCA9IG9iamVjdFtvYmpDT2JqZWN0
XTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJnZXR0aW5nIGEgbm9uLWNvbnZlcnRhYmxlIG9iamVj
dCBzaG91bGQgcmV0dXJuIHRoZSBzdG9yZWQgdmFsdWUiLCBbcmVzdWx0IHRvVUludDMyXSA9PSAx
KTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpj
b250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICpvYmpl
Y3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdPYmplY3RJbkNvbnRleHQ6Y29udGV4dF07CisgICAg
ICAgIEpTVmFsdWUgKml0ZXJhdG9yU3ltYm9sID0gY29udGV4dFtAIlN5bWJvbCJdW0AiaXRlcmF0
b3IiXTsKKyAgICAgICAgb2JqZWN0W0AidmFsdWUiXSA9IEAoMSk7CisgICAgICAgIGNvbnRleHRb
QCJvYmplY3QiXSA9IG9iamVjdDsKKworICAgICAgICBvYmplY3RbaXRlcmF0b3JTeW1ib2xdID0g
XnsKKyAgICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld09i
amVjdEluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgICAgIHJlc3VsdFtAIm9iamVjdCJdID0g
W0pTQ29udGV4dCBjdXJyZW50VGhpc107CisgICAgICAgICAgICByZXN1bHRbQCJuZXh0Il0gPSBe
eworICAgICAgICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5l
d09iamVjdEluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlICp2YWx1
ZSA9IFtKU0NvbnRleHQgY3VycmVudFRoaXNdW0Aib2JqZWN0Il1bQCJ2YWx1ZSJdOworICAgICAg
ICAgICAgICAgIFtbSlNDb250ZXh0IGN1cnJlbnRUaGlzXVtAIm9iamVjdCJdIGRlbGV0ZVByb3Bl
cnR5OkAidmFsdWUiXTsKKyAgICAgICAgICAgICAgICByZXN1bHRbQCJ2YWx1ZSJdID0gdmFsdWU7
CisgICAgICAgICAgICAgICAgcmVzdWx0W0AiZG9uZSJdID0gW0pTVmFsdWUgdmFsdWVXaXRoQm9v
bDpbdmFsdWUgaXNVbmRlZmluZWRdIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgICAgIH07CisKKworICAgICAgICBKU1ZhbHVlICpjb3VudCA9IFtjb250ZXh0IGV2
YWx1YXRlU2NyaXB0OkAibGV0IGNvdW50ID0gMDsgZm9yIChsZXQgdiBvZiBvYmplY3QpIHsgaWYg
KHYgIT09IDEpIHRocm93IG5ldyBFcnJvcigpOyBjb3VudCsrOyB9IGNvdW50OyJdOworICAgICAg
ICBjaGVja1Jlc3VsdChAIml0ZXJhdG9yIHNob3VsZCBub3QgdGhyb3ciLCAhW2NvbnRleHQgZXhj
ZXB0aW9uXSk7CisgICAgICAgIGNoZWNrUmVzdWx0KEAiaXRlcmF0aW9uIGNvdW50IHNob3VsZCBi
ZSAxIiwgW2NvdW50IHRvVUludDMyXSA9PSAxKTsKKyAgICB9CisKKyNlbmRpZiAvLyAhKGRlZmlu
ZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA8IDEwMTMwMCkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAw
KQorCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgIEpTQ29sbGVjdGlvbiogbXlQcml2
YXRlUHJvcGVydGllcyA9IFtbSlNDb2xsZWN0aW9uIGFsbG9jXSBpbml0XTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBhZDA5ZmQwZGM2MjZlMDFkYzM1MjA1YzNiNThmNTM1MGVl
NzE4OGQ2Li5jMGZmYzhjYzFlYjdiOTgxMzBiZTNjYjBjNGVjMmRlZjU2MDRmMDgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA0MCw4ICsxMDQwLDkgQEAKIAkJNTNFNzc3RTQx
RTkyRTI2NTAwN0NCRUM0IC8qIFdhc21Nb2R1bGVJbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFNzc3RTIxRTkyRTI2NTAwN0NCRUM0
IC8qIFdhc21Nb2R1bGVJbmZvcm1hdGlvbi5oICovOyB9OwogCQk1M0U5RTBBQzFFQUU4M0RGMDBG
RUUyNTEgLyogV2FzbU1hY2hpbmVUaHJlYWRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1M0U5RTBBQTFFQUU4M0RFMDBGRUUyNTEgLyogV2FzbU1hY2hp
bmVUaHJlYWRzLmggKi87IH07CiAJCTUzRTlFMEFGMUVBRUM0NTcwMEZFRTI1MSAvKiBXYXNtVGll
clVwQ291bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzRTlFMEFFMUVBRUM0NTcwMEZFRTI1MSAvKiBXYXNtVGllclVwQ291bnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1M0YxMUY0MTIwOTEzOEQ3
MDBFNDExQTcgLyogSlNJbW11dGFibGVCdXR0ZXJmbHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjExRjQwMjA5MTM4RDcwMEU0MTFBNyAvKiBKU0lt
bXV0YWJsZUJ1dHRlcmZseS5oICovOyB9OwotCQk1M0Y0MEU4NTFENThGOTc3MDA5OUExQjYgLyog
V2FzbVNlY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1M0Y0MEU4NDFENThGOTc3MDA5OUExQjYgLyogV2FzbVNlY3Rpb25zLmggKi87IH07Cisg
ICAgICAgICAgICAgICAgNTNGMTFGNDEyMDkxMzhENzAwRTQxMUE3IC8qIEpTSW1tdXRhYmxlQnV0
dGVyZmx5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
M0YxMUY0MDIwOTEzOEQ3MDBFNDExQTcgLyogSlNJbW11dGFibGVCdXR0ZXJmbHkuaCAqLzsgfTsK
KyAgICAgICAgICAgICAgICA1M0VBRkUyRjIwOERGQUI0MDA3RDUyNEIgLyogdGVzdGFwaS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzFENEUxOTFG
NTlDREQyMDBFQzgzNkMgLyogdGVzdGFwaS5jcHAgKi87IH07CisgICAgICAgICAgICAgICAgNTNG
NDBFODUxRDU4Rjk3NzAwOTlBMUI2IC8qIFdhc21TZWN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGNDBFODQxRDU4Rjk3NzAwOTlBMUI2IC8q
IFdhc21TZWN0aW9ucy5oICovOyB9OwogCQk1M0Y0MEU4QjFENTkwMUJCMDA5OUExQjYgLyogV2Fz
bUZ1bmN0aW9uUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1M0Y0MEU4QTFENTkwMUJCMDA5OUExQjYgLyogV2FzbUZ1bmN0aW9uUGFyc2VyLmgg
Ki87IH07CiAJCTUzRjQwRThEMUQ1OTAxRjIwMDk5QTFCNiAvKiBXYXNtUGFyc2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU4QzFENTkwMUYy
MDA5OUExQjYgLyogV2FzbVBhcnNlci5oICovOyB9OwogCQk1M0Y0MEU5MzFENUE0QUIzMDA5OUEx
QjYgLyogV2FzbUIzSVJHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzRjQwRTkyMUQ1QTRBQjMwMDk5QTFCNiAvKiBXYXNtQjNJUkdlbmVy
YXRvci5oICovOyB9OwpAQCAtMzMwNSw2ICszMzA2LDcgQEAKIAkJNTMxMUJENDkxRUE1ODFFNTAw
NTI1MjgxIC8qIFdhc21PTUdQbGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdhc21PTUdQbGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMTM3NEJDMUQ1
Q0U2NzYwMEFGN0EwQiAvKiBXYXNtUGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXYXNtUGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzEzNzRCRTFE
NUNFOTUwMDBBRjdBMEIgLyogV2FzbVBsYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2FzbVBsYW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MzFENEUxOTFGNTlDREQyMDBFQzgzNkMgLyogdGVzdGFwaS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSB0ZXN0YXBpLmNwcDsgcGF0aCA9IEFQSS90ZXN0cy90ZXN0YXBpLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTMzQjE1REUxREM3RjQ2MzAwNEQ1MDBBIC8qIFdhc21PcHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbU9wcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MzQxRkM2RjFEQUMzM0U1MDBFN0U0RDcgLyogQjNXYXNtQm91bmRz
Q2hlY2tWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1dh
c21Cb3VuZHNDaGVja1ZhbHVlLmNwcDsgcGF0aCA9IGIzL0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQxRkM3MTFEQUMzNDNDMDBFN0U0
RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmg7IHBhdGggPSBiMy9CM1dhc21Cb3VuZHND
aGVja1ZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDc1LDcgKzM0Nzcs
NiBAQAogCQk1MzkxN0U3QTFCNzkwNkU0MDAwRUJEMzMgLyogSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGVGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTM5MTdFN0MxQjc5MTEwNjAwMEVCRDMzIC8qIEpTVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Mzkx
N0U4MzFCNzkxQ0I4MDAwRUJEMzMgLyogVHlwZWRBcnJheVByb3RvdHlwZS5qcyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgbmFtZSA9IFR5cGVkQXJyYXlQcm90b3R5cGUuanM7IHBh
dGggPSBidWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gU09VUkNF
X1JPT1Q7IH07Ci0JCTUzOUVCMDcxMUQ1NTNERjgwMEM4MkVGNyAvKiB0ZXN0V2FzbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSB0ZXN0V2FzbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzOUZCOEI5MUM5OURBN0MwMDk0MEZBMSAvKiBKU0FycmF5
SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FycmF5SW5saW5l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0IwQkUzMzFFNTYxQUM5MDBBOEZD
MjkgLyogR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTNCMEJFMzUxRTU2MUIwOTAwQThGQzI5IC8qIFByb3h5YWJsZUFjY2Vz
c0Nhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJveHlhYmxl
QWNjZXNzQ2FzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NDY3LDEwICs1
NDY4LDEwIEBACiAJCQkJRkVCNTFGNkIxQTk3QjY4ODAwMUY5MjFDIC8qIFJlZ3Jlc3MxNDE4MDku
bW0gKi8sCiAJCQkJRkVDQjhCMjkxRDI1Q0FCQjAwNkYyNDYzIC8qIHRlc3RhcGktZnVuY3Rpb24t
b3ZlcnJpZGVzLmpzICovLAogCQkJCTE0QkQ1QTJEMEEzRTkxRjYwMEJBRjU5QyAvKiB0ZXN0YXBp
LmMgKi8sCisJCQkJNTMxRDRFMTkxRjU5Q0REMjAwRUM4MzZDIC8qIHRlc3RhcGkuY3BwICovLAog
CQkJCTE0RDg1Nzc0MEE0Njk2QzgwMDMyMTQ2QyAvKiB0ZXN0YXBpLmpzICovLAogCQkJCTg2RDIy
MjE5MTY3RUY5NDQwMDI0QzgwNCAvKiB0ZXN0YXBpLm1tICovLAogCQkJCTY1MTEyMkU1MTQwNDY5
QkEwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwLmNwcCAqLywKLQkJCQk1MzlFQjA3MTFENTUzREY4MDBD
ODJFRjcgLyogdGVzdFdhc20uY3BwICovLAogCQkJCTUzNDkwMjgyMUM3MjQyQzgwMDEyQkNCOCAv
KiBUeXBlZEFycmF5Q1Rlc3QuY3BwICovLAogCQkJCTUzNDkwMjgzMUM3MjQyQzgwMDEyQkNCOCAv
KiBUeXBlZEFycmF5Q1Rlc3QuaCAqLywKIAkJCSk7CkBAIC04OTgyLDggKzg5ODMsOCBAQAogCQkJ
CTBGQjQ2NzgwMUZEREE2RjEwMDNGQ0IwOSAvKiBJc29DZWxsU2V0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkI0Njc4MTFGRERBNkY3MDAzRkNCMDkgLyogSXNvQ2VsbFNldElubGluZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRENFMTJEMUZBRkI0RTUwMDZGMzkwMSAvKiBJc29TdWJzcGFjZS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMEZEMkZEOTUyMEI1MkJFMjAwRjA5NDQxIC8qIElzb1N1YnNw
YWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY1RTBGRTcyMDg2QUQ0ODAwOTdGMERF
IC8qIElzb1N1YnNwYWNlUGVyVk0uaCBpbiBIZWFkZXJzICovLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwRkQyRkQ5NTIwQjUyQkUyMDBGMDk0NDEgLyogSXNvU3Vic3BhY2VJbmxp
bmVzLmggaW4gSGVhZGVycyAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMEY1
RTBGRTcyMDg2QUQ0ODAwOTdGMERFIC8qIElzb1N1YnNwYWNlUGVyVk0uaCBpbiBIZWFkZXJzICov
LAogCQkJCThCOUY2RDU2MUQ1OTEyRkEwMDFDNzM5RiAvKiBJdGVyYXRpb25LaW5kLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRTRENTVCODFBRTcxNkNBMDA1MkU0NTkgLyogSXRlcmF0aW9uU3RhdHVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDExM0Q0QzFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0
b3JPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMjAzLDYgKzEwMjA0LDcgQEAKIAkJ
CQk2NTU3MEY1QTFBQTRDM0VBMDA5QjNDMjMgLyogUmVncmVzczE0MTI3NS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUZFQjUxRjZDMUE5N0I2ODgwMDFGOTIxQyAvKiBSZWdyZXNzMTQxODA5Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMTQ0MEY2MTAwQTRGODU2NzAwMDVGMDYxIC8qIHRlc3RhcGkuYyBp
biBTb3VyY2VzICovLAorCQkJCTUzRUFGRTJGMjA4REZBQjQwMDdENTI0QiAvKiB0ZXN0YXBpLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTg2RDIyMjFBMTY3RUY5NDQwMDI0QzgwNCAvKiB0ZXN0YXBp
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM0OTAyODUxQzcyNzZCNzAwMTJCQ0I4IC8qIFR5cGVk
QXJyYXlDVGVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CkBAIC0xMDY3MCw2ICsxMDY3Miwx
MCBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlv
blJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54
Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRI
UyA9ICgKKwkJCQkJIlwiJChKQVZBU0NSSVBUQ09SRV9GUkFNRVdPUktTX0RJUikvSmF2YVNjcmlw
dENvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzXCIiLAorCQkJCQkiJChpbmhlcml0ZWQpIiwK
KwkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTEwNjc3LDYgKzEwNjgz
LDEwIEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0
aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxl
LnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlIRUFERVJfU0VBUkNIX1BB
VEhTID0gKAorCQkJCQkiXCIkKEpBVkFTQ1JJUFRDT1JFX0ZSQU1FV09SS1NfRElSKS9KYXZhU2Ny
aXB0Q29yZS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnNcIiIsCisJCQkJCSIkKGluaGVyaXRlZCki
LAorCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJCX07CkBAIC0xMDY4NCw2ICsx
MDY5NCwxMCBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmln
dXJhdGlvblJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0
YWJsZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJSEVBREVSX1NFQVJD
SF9QQVRIUyA9ICgKKwkJCQkJIlwiJChKQVZBU0NSSVBUQ09SRV9GUkFNRVdPUktTX0RJUikvSmF2
YVNjcmlwdENvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzXCIiLAorCQkJCQkiJChpbmhlcml0
ZWQpIiwKKwkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OwpAQCAtMTEw
MDgsNiArMTEwMjIsMTAgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFz
ZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9v
bEV4ZWN1dGFibGUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUhFQURF
Ul9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSJcIiQoSkFWQVNDUklQVENPUkVfRlJBTUVXT1JLU19E
SVIpL0phdmFTY3JpcHRDb3JlLmZyYW1ld29yay9Qcml2YXRlSGVhZGVyc1wiIiwKKwkJCQkJIiQo
aW5oZXJpdGVkKSIsCisJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gUHJvZmlsaW5nOwogCQl9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbmZpZy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2NvbmZpZy5oCmluZGV4IDFkMWVkN2I2ZjhjNmFjMDlmMTQ0NDRmNmVmMzgwNTYy
OTk4MTlkN2UuLjU2ZWM3ZjY2N2IyZTA5YzI5M2Y1MzM5YzM1N2UxMzMyM2RhOTkxOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvY29uZmlnLmgKQEAgLTIzLDYgKzIzLDExIEBACiAjaW5jbHVkZSAiY21ha2Vjb25m
aWcuaCIKICNlbmRpZgogCisjZGVmaW5lIEpTQ19BUElfQVZBSUxBQkxFKC4uLikKKy8vIFBpY2sg
c29tZSBvYnNlbmVseSBsYXJnZSBudW1iZXIgYmVjYXVzZSB3aHkgbm90LgorI2RlZmluZSBKU0Nf
TUFDX1ZFUlNJT05fVEJBIDAKKyNkZWZpbmUgSlNDX0lPU19WRVJTSU9OX1RCQSAwCisKICNpbmNs
dWRlICJKU0V4cG9ydE1hY3Jvcy5oIgogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wb3N0cHJvY2Vzcy1oZWFkZXJzLnNoIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Bvc3Rwcm9jZXNzLWhlYWRlcnMuc2gKaW5kZXggYzg2MTg0MzdkMmEwNzc5
NDlhNTkwYWM3MDE3ZjgyNmI1MmQ2ZDJiMy4uNzhiNGZkNDg1YWVmMGM3NzdiYTJlMjM5YmMyNjZh
MjllYWRhNGY3NiAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bvc3Rwcm9jZXNz
LWhlYWRlcnMuc2gKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bvc3Rwcm9jZXNzLWhlYWRl
cnMuc2gKQEAgLTEsMTggKzEsMTAwIEBACi1jZCAiJHtUQVJHRVRfQlVJTERfRElSfS8ke1BVQkxJ
Q19IRUFERVJTX0ZPTERFUl9QQVRIfSIKLQotVU5JRkRFRl9PUFRJT05TPSItRF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQ9JHtUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUn0iCi0K
LWZvciAoKGkgPSAwOyBpIDwgJHtTQ1JJUFRfSU5QVVRfRklMRV9DT1VOVH07ICsraSkpOyBkbwot
ICAgIGV2YWwgSEVBREVSPVwke1NDUklQVF9JTlBVVF9GSUxFXyR7aX19OwotICAgIHVuaWZkZWYg
LUIgJHtVTklGREVGX09QVElPTlN9IC1vICIke0hFQURFUn0iLnVuaWZkZWYgIiR7SEVBREVSfSIK
LSAgICBjYXNlICQ/IGluCi0gICAgMCkKLSAgICAgICAgcm0gIiR7SEVBREVSfSIudW5pZmRlZgot
ICAgICAgICA7OwotICAgIDEpCi0gICAgICAgIG12ICIke0hFQURFUn0iey51bmlmZGVmLH0KLSAg
ICAgICAgOzsKLSAgICAqKQotICAgICAgICBleGl0IDEKLSAgICBlc2FjCi1kb25lCisjIS9iaW4v
c2gKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisjCisKK2lmIFtbICIk
e0pTQ19GUkFNRVdPUktfSEVBREVSX1BPU1RQUk9DRVNTSU5HX0RJU0FCTEVEfSIgPT0gIllFUyIg
XV07IHRoZW4KKyAgICBleGl0IDA7CitmaQorCitUSU1FU1RBTVBfUEFUSD0ke1RBUkdFVF9URU1Q
X0RJUn0vJHswIyMqL30KKworaWYgW1sgLWUgJFRJTUVTVEFNUF9QQVRIICYmICQwIC1udCAkVElN
RVNUQU1QX1BBVEggXV07IHRoZW4KKyAgICBybSAiJHtUSU1FU1RBTVBfUEFUSH0iOworZmkKKwor
ZnVuY3Rpb24gcHJvY2Vzc19kZWZpbml0aW9ucyAoKSB7CisgICAgbG9jYWwgREVGSU5JVElPTlNf
RklMRT0kMQorCisgICAgaWYgW1sgISAtZiAiJHtERUZJTklUSU9OU19GSUxFfSIgXV07IHRoZW4K
KyAgICAgICAgcmV0dXJuIDEKKyAgICBmaQorCisgICAgaWYgW1sgLWUgJFRJTUVTVEFNUF9QQVRI
ICYmICIke0RFRklOSVRJT05TX0ZJTEV9IiAtbnQgJFRJTUVTVEFNUF9QQVRIIF1dOyB0aGVuCisg
ICAgICAgIHJtICIke1RJTUVTVEFNUF9QQVRIfSI7CisgICAgZmkKKworICAgIHNvdXJjZSAiJHtE
RUZJTklUSU9OU19GSUxFfSIKK30KKworZnVuY3Rpb24gcmV3cml0ZV9oZWFkZXJzICgpIHsKKyAg
ICBpZiBbWyAiJHtQTEFURk9STV9OQU1FfSIgPT0gIm1hY29zeCIgXV07IHRoZW4KKyAgICAgICAg
W1sgLW4gJHtPU1hfVkVSU0lPTn0gXV0gfHwgT1NYX1ZFUlNJT049JHtNQUNPU1hfREVQTE9ZTUVO
VF9UQVJHRVR9CisgICAgICAgIFtbIC1uICR7SU9TX1ZFUlNJT059IF1dIHx8IElPU19WRVJTSU9O
PSJOQSIKKyAgICAgICAgW1sgLW4gJHtPU1hfVkVSU0lPTl9OVU1CRVJ9IF1dIHx8IE9TWF9WRVJT
SU9OX05VTUJFUj0ke1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SfQorICAgICAgICBbWyAt
biAke0lPU19WRVJTSU9OX05VTUJFUn0gXV0gfHwgSU9TX1ZFUlNJT05fTlVNQkVSPSIwIgorICAg
IGVsaWYgW1sgIiR7UExBVEZPUk1fTkFNRX0iID1+ICJpcGhvbmUiIF1dOyB0aGVuCisgICAgICAg
IFtbIC1uICR7SU9TX1ZFUlNJT059IF1dIHx8IElPU19WRVJTSU9OPSR7SVBIT05FT1NfREVQTE9Z
TUVOVF9UQVJHRVR9CisgICAgICAgIFtbIC1uICR7T1NYX1ZFUlNJT059IF1dIHx8IE9TWF9WRVJT
SU9OPSJOQSIKKyAgICAgICAgW1sgLW4gJHtPU1hfVkVSU0lPTl9OVU1CRVJ9IF1dIHx8IE9TWF9W
RVJTSU9OX05VTUJFUj0iMCIKKyAgICAgICAgW1sgLW4gJHtJT1NfVkVSU0lPTl9OVU1CRVJ9IF1d
IHx8IElPU19WRVJTSU9OX05VTUJFUj0ke1RBUkdFVF9JUEhPTkVfT1NfVkVSU0lPTl9NQUpPUn0K
KyAgICBmaQorCisgICAgU0VEX09QVElPTlM9KAorICAgICkKKworICAgIGlmIFtbIC1uICIkT1NY
X1ZFUlNJT04iICYmIC1uICIkSU9TX1ZFUlNJT04iIF1dOyB0aGVuCisgICAgICAgIFNFRF9PUFRJ
T05TKz0oCisgICAgICAgICAgICAtZSBzL0pTQ19NQUNfVEJBLyR7T1NYX1ZFUlNJT059L2cKKyAg
ICAgICAgICAgIC1lIHMvSlNDX0lPU19UQkEvJHtJT1NfVkVSU0lPTn0vZworICAgICAgICAgICAg
LWUgcy9KU0NfTUFDX1ZFUlNJT05fVEJBLyR7T1NYX1ZFUlNJT05fTlVNQkVSfS9nCisgICAgICAg
ICAgICAtZSBzL0pTQ19JT1NfVkVSU0lPTl9UQkEvJHtJT1NfVkVSU0lPTl9OVU1CRVJ9L2cKKyAg
ICAgICAgICAgIC1lIHMvSlNDX0FQSV9BVkFJTEFCTEUvQVBJX0FWQUlMQUJMRS8KKyAgICAgICAg
ICAgIC1lIHMvSlNDX0FQSV9ERVBSRUNBVEVEL0FQSV9ERVBSRUNBVEVELworICAgICAgICAgICAg
LWUgInMvXkpTQ19DTEFTU19BVkFJTEFCTEUvSlNDX0VYVEVSTiBBUElfQVZBSUxBQkxFLyIKKyAg
ICAgICAgICAgIC1lICJzL15KU0NfQ0xBU1NfREVQUkVDQVRFRC9KU0NfRVhURVJOIEFQSV9ERVBS
RUNBVEVELyIKKyAgICAgICAgKQorICAgIGVsc2UKKyAgICAgICAgU0VEX09QVElPTlMrPSgtZSAn
cy9KU0NfKEFQSV98Q0xBU1NfKUFWQUlMQUJMRVwoLipcKVxzKlwpLy9nJyAtZSAncy9KU0NfKEFQ
SV98Q0xBU1NfKURFUFJFQ0FURUQoX1dJVEhfUkVQTEFDRU1FTlQpP1woLipcKVxzKlwpLy9nJykK
KyAgICBmaQorCisgICAgU0VEX09QVElPTlMrPSgke09USEVSX1NFRF9PUFRJT05TWypdfSkKKwor
ICAgIGZvciBIRUFERVJfUEFUSCBpbiAiJHsxfS8iKi5oOyBkbworICAgICAgICBpZiBbWyAiJEhF
QURFUl9QQVRIIiAtbnQgJFRJTUVTVEFNUF9QQVRIIF1dOyB0aGVuCisgICAgICAgICAgICBkaXR0
byAiJHtIRUFERVJfUEFUSH0iICIke1RBUkdFVF9URU1QX0RJUn0vJHtIRUFERVJfUEFUSCMjKi99
IgorICAgICAgICAgICAgc2VkIC1pIC50bXAgLUUgIiR7U0VEX09QVElPTlNbQF19IiAiJHtUQVJH
RVRfVEVNUF9ESVJ9LyR7SEVBREVSX1BBVEgjIyovfSIgfHwgZXhpdCAkPworICAgICAgICAgICAg
bXYgIiR7VEFSR0VUX1RFTVBfRElSfS8ke0hFQURFUl9QQVRIIyMqL30iICIkSEVBREVSX1BBVEgi
CisgICAgICAgIGZpCisgICAgZG9uZQorfQorCitERUZJTklUSU9OU19QQVRIPXVzci9sb2NhbC9p
bmNsdWRlL1dlYktpdEFkZGl0aW9ucy9TY3JpcHRzL3Bvc3Rwcm9jZXNzLWZyYW1ld29yay1oZWFk
ZXJzLWRlZmluaXRpb25zCisKK3Byb2Nlc3NfZGVmaW5pdGlvbnMgIiR7QlVJTFRfUFJPRFVDVFNf
RElSfS8ke0RFRklOSVRJT05TX1BBVEh9IiB8fCBwcm9jZXNzX2RlZmluaXRpb25zICIke1NES1JP
T1R9LyR7REVGSU5JVElPTlNfUEFUSH0iCisKK3Jld3JpdGVfaGVhZGVycyAiJHtUQVJHRVRfQlVJ
TERfRElSfS8ke1BVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIfSIKK3Jld3JpdGVfaGVhZGVycyAi
JHtUQVJHRVRfQlVJTERfRElSfS8ke1BSSVZBVEVfSEVBREVSU19GT0xERVJfUEFUSH0iCisKK3Rv
dWNoICR7VElNRVNUQU1QX1BBVEh9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdG1lbS90ZXN0bWVtLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RtZW0vdGVzdG1l
bS5tbQppbmRleCBiNGQyYWQzOTExOWJjNTU1OGNkMzljOWM4MTgyZmFjZWRjYmVhZjI0Li45YmM0
YjQwZTFlYWMwMjMxN2ZkM2U4NDViNDU0ZDBmNDhiNmVlNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdG1lbS90ZXN0bWVtLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0bWVtL3Rlc3RtZW0ubW0KQEAgLTIzLDYgKzIzLDcgQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAorI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5oPgogI2ltcG9ydCA8aW50dHlwZXMuaD4KICNpbXBvcnQgPHN0ZGlvLmg+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345788</attachid>
            <date>2018-07-25 15:02:22 -0700</date>
            <delta_ts>2018-07-25 15:10:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175836-20180725150219.patch</filename>
            <type>text/plain</type>
            <size>107813</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0MjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZWEwMDgyMjk3Zjg5ODZhYTA3NDM4Y2Q2OWMzZGE2NmEzZjA1MjdlLi5hNGU1NjY2OGUzOTc4MmQx
Yjg3Y2JmNDllZDBjNTcxNDAyODE4M2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDMgQEAKKzIwMTgtMDctMjUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0pTQyBBUEldIFdlIHNob3VsZCBzdXBwb3J0IHRoZSBzeW1ib2wg
dHlwZSBpbiBvdXIgQy9PYmotQyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTgzNgorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxv
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIGZvbGxvd2luZyBBUEkgYWRkaXRpb25z
OgorICAgICAgICAxKSBUZXN0IGlmIGEgSlNWYWx1ZS9KU1ZhbHVlUmVmIGlzIGEgc3ltYm9sIHZp
YSBhbnkgb2YgdGhlIG1ldGhvZHMgQVBJIGFyZSBhYmxlIHRvIHRlc3QgZm9yIHRoZSB0eXBlcyBv
ZiBvdGhlciBKU1ZhbHVlcy4KKyAgICAgICAgMikgQ3JlYXRlIGEgc3ltYm9sIG9uIGJvdGggQVBJ
cy4KKyAgICAgICAgMykgR2V0L1NldC9EZWxldGUvRGVmaW5lIHByb3BlcnR5IG5vdyB0YWtlIGlk
cyBpbiB0aGUgT2JqLUMgQVBJLgorICAgICAgICA0KSBBZGQgR2V0L1NldC9EZWxldGUgaW4gdGhl
IEMgQVBJLgorCisgICAgICAgIFdlIGNhbiBkbyAzIGJlY2F1c2UgaXQgaXMgYm90aCBiaW5hcnkg
YW5kIHNvdXJjZSBjb21wYXRhYmxlIHdpdGgKKyAgICAgICAgdGhlIGV4aXN0aW5nIEFQSS4gSSBh
ZGRlZCAoNCkgYmVjYXVzZSB0aGUgY3VycmVudCBwcm9wZXJ0eSBhY2Nlc3MKKyAgICAgICAgQVBJ
cyBvbmx5IGhhdmUgdGhlIGFiaWxpdHkgdG8gZ2V0IFN0cmluZ3MuIEl0IHdhcyBwb3NzaWJsZSB0
bworICAgICAgICBtZXJnZSBzeW1ib2xzIGludG8gSlNTdHJpbmdSZWYgYnV0IHRoYXQgZmVsdCBj
b25mdXNpbmcgYW5kIGV4cG9zZXMKKyAgICAgICAgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBv
dXIgZW5naW5lLiBUaGUgbmV3IGZ1bmN0aW9ucyBtYXRjaCB0aGUKKyAgICAgICAgc2FtZSBtZWFu
aW5nIHRoYXQgdGhleSBoYXZlIGluIEpTLCB0aHVzIHNob3VsZCBiZSBmb3J3YXJkCisgICAgICAg
IGNvbXBhdGlibGUgd2l0aCBhbnkgZnV0dXJlIGxhbmd1YWdlIGV4dGVuc2lvbnMuCisKKyAgICAg
ICAgTGFzdGx5LCB0aGlzIHBhdGNoIGFkZHMgdGhlIHNhbWUgYXZhaWxhYmlsaXR5IHByZXByb2Nj
ZXNzaW5nIHBoYXNlCisgICAgICAgIGluIFdlYkNvcmUgdG8gSmF2YVNjcmlwdENvcmUsIHdoaWNo
IGVuYWJsZXMgVEJBIGZlYXR1cmVzIGZvcgorICAgICAgICB0ZXN0aW5nIG9uIHByZXZpb3VzIHJl
bGVhc2VzLgorCisgICAgICAgICogQVBJL0pTQmFzZVByaXZhdGUuaDoKKyAgICAgICAgKiBBUEkv
SlNDb250ZXh0Lmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFByaXZhdGUuaDoKKyAgICAgICAg
KiBBUEkvSlNDb250ZXh0UmVmLmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZkludGVybmFs
Lmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaDoKKyAgICAgICAgKiBBUEkv
SlNNYW5hZ2VkVmFsdWUuaDoKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAg
ICAoSlNPYmplY3RIYXNQcm9wZXJ0eUtleSk6CisgICAgICAgIChKU09iamVjdEdldFByb3BlcnR5
S2V5KToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJvcGVydHlLZXkpOgorICAgICAgICAoSlNPYmpl
Y3REZWxldGVQcm9wZXJ0eUtleSk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmg6CisgICAg
ICAgICogQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmg6CisgICAgICAgICogQVBJL0pTVHlwZWRBcnJh
eS5oOgorICAgICAgICAqIEFQSS9KU1ZhbHVlLmg6CisgICAgICAgICogQVBJL0pTVmFsdWUubW06
CisgICAgICAgICgrW0pTVmFsdWUgdmFsdWVXaXRoTmV3U3ltYm9sRnJvbURlc2NyaXB0aW9uOmlu
Q29udGV4dDpdKToKKyAgICAgICAgKHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbik6CisgICAgICAg
ICgtW0pTVmFsdWUgdmFsdWVGb3JQcm9wZXJ0eTp2YWx1ZUZvclByb3BlcnR5Ol0pOgorICAgICAg
ICAoLVtKU1ZhbHVlIHNldFZhbHVlOmZvclByb3BlcnR5OnNldFZhbHVlOmZvclByb3BlcnR5Ol0p
OgorICAgICAgICAoLVtKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5OmRlbGV0ZVByb3BlcnR5Ol0pOgor
ICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Omhhc1Byb3BlcnR5Ol0pOgorICAgICAgICAo
LVtKU1ZhbHVlIGRlZmluZVByb3BlcnR5OmRlc2NyaXB0b3I6ZGVmaW5lUHJvcGVydHk6ZGVzY3Jp
cHRvcjpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSBpc1N5bWJvbF0pOgorICAgICAgICAoLVtKU1Zh
bHVlIG9iamVjdEZvcktleWVkU3Vic2NyaXB0Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIHNldE9i
amVjdDpmb3JLZXllZFN1YnNjcmlwdDpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSB2YWx1ZUZvclBy
b3BlcnR5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIHNldFZhbHVlOmZvclByb3Bl
cnR5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5Ol0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Ol0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtKU1ZhbHVlIGRlZmluZVByb3BlcnR5OmRlc2NyaXB0b3I6XSk6IERlbGV0ZWQuCisg
ICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgorICAgICAgICAoSlNWYWx1ZUdldFR5cGUpOgor
ICAgICAgICAoSlNWYWx1ZUlzU3ltYm9sKToKKyAgICAgICAgKEpTVmFsdWVNYWtlU3ltYm9sKToK
KyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5oOgorICAgICAgICAqIEFQSS9XZWJLaXRBdmFpbGFi
aWxpdHkuaDoKKyAgICAgICAgKiBBUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRl
clRlc3QubW06CisgICAgICAgICogQVBJL3Rlc3RzL0N1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVz
dC5jOgorICAgICAgICAqIEFQSS90ZXN0cy9EYXRlVGVzdHMubW06CisgICAgICAgICogQVBJL3Rl
c3RzL0pTRXhwb3J0VGVzdHMubW06CisgICAgICAgICogQVBJL3Rlc3RzL0pTTm9kZS5jOgorICAg
ICAgICAqIEFQSS90ZXN0cy9KU05vZGVMaXN0LmM6CisgICAgICAgICogQVBJL3Rlc3RzL05vZGUu
YzoKKyAgICAgICAgKiBBUEkvdGVzdHMvTm9kZUxpc3QuYzoKKyAgICAgICAgKiBBUEkvdGVzdHMv
bWluaWRvbS5jOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLmM6CisgICAgICAgIChtYWlu
KToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5jcHA6IEFkZGVkLgorICAgICAgICAoQVBJ
U3RyaW5nOjpBUElTdHJpbmcpOgorICAgICAgICAoQVBJU3RyaW5nOjp+QVBJU3RyaW5nKToKKyAg
ICAgICAgKEFQSVN0cmluZzo6b3BlcmF0b3IgSlNTdHJpbmdSZWYpOgorICAgICAgICAoQVBJQ29u
dGV4dDo6QVBJQ29udGV4dCk6CisgICAgICAgIChBUElDb250ZXh0Ojp+QVBJQ29udGV4dCk6Cisg
ICAgICAgIChBUElDb250ZXh0OjpvcGVyYXRvciBKU0dsb2JhbENvbnRleHRSZWYpOgorICAgICAg
ICAoQVBJVmVjdG9yOjpBUElWZWN0b3IpOgorICAgICAgICAoQVBJVmVjdG9yOjp+QVBJVmVjdG9y
KToKKyAgICAgICAgKEFQSVZlY3Rvcjo6YXBwZW5kKToKKyAgICAgICAgKHRlc3RDQVBJVmlhQ3Bw
KToKKyAgICAgICAgKFRlc3RBUEk6OmV2YWx1YXRlU2NyaXB0KToKKyAgICAgICAgKFRlc3RBUEk6
OmNhbGxGdW5jdGlvbik6CisgICAgICAgIChUZXN0QVBJOjpmdW5jdGlvblJldHVybnNUcnVlKToK
KyAgICAgICAgKFRlc3RBUEk6OmNoZWNrKToKKyAgICAgICAgKFRlc3RBUEk6OmNoZWNrSlNBbmRB
UElNYXRjaCk6CisgICAgICAgIChUZXN0QVBJOjppbnRlcmVzdGluZ09iamVjdHMpOgorICAgICAg
ICAoVGVzdEFQSTo6aW50ZXJlc3RpbmdLZXlzKToKKyAgICAgICAgKFRlc3RBUEk6OnJ1bik6Cisg
ICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkubW06CisgICAgICAgICh0ZXN0T2JqZWN0aXZlQ0FQ
SU1haW4pOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogY29uZmlnLmg6CisgICAgICAgICogcG9zdHByb2Nlc3MtaGVhZGVycy5z
aDoKKyAgICAgICAgKiB0ZXN0bWVtL3Rlc3RtZW0ubW06CisKIDIwMTgtMDctMjUgIEFuZHkgVmFu
V2Fnb25lciAgPGFuZHlAdmFud2Fnb25lci5mYW1pbHk+CiAKICAgICAgICAgW0lOVExdIENhbGwg
VHlwZWQgQXJyYXkgZWxlbWVudHMgdG9Mb2NhbGVTdHJpbmcgd2l0aCBsb2NhbGUgYW5kIG9wdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FzdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmgKaW5kZXggMmMyMjk3NWRjNzE0MDk1YTEx
ZWNiNjY5MWJmMGY3Zjk1MWFiZmQwMS4uNDkxYmI4YTU1MWJhOWVjODQ1ODA3ODViNGIzMzUwMmE4
Nzg2MmU4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmgKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkhlYXBDZWxsSW5saW5l
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFeGVjU3RhdGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZVByaXZhdGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5oCmluZGV4IDEzNzU5NDk3Mjc1ZTU4YmViMGMx
MjIxMzU1ZjlmYmVkNDNkM2IxYTUuLmI2YzkyMDRjNGNiZDcyYzRmN2M5ZjZhMWY1NGNkNWQzNDE1
NmQxNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5oCkBAIC00
Myw3ICs0Myw3IEBAIG93bnMgYSBsYXJnZSBub24tR0MgbWVtb3J5IHJlZ2lvbi4gQ2FsbGluZyB0
aGlzIGZ1bmN0aW9uIHdpbGwgZW5jb3VyYWdlIHRoZQogZ2FyYmFnZSBjb2xsZWN0b3IgdG8gY29s
bGVjdCBzb29uLCBob3BpbmcgdG8gcmVjbGFpbSB0aGF0IGxhcmdlIG5vbi1HQyBtZW1vcnkKIHJl
Z2lvbi4KICovCi1KU19FWFBPUlQgdm9pZCBKU1JlcG9ydEV4dHJhTWVtb3J5Q29zdChKU0NvbnRl
eHRSZWYgY3R4LCBzaXplX3Qgc2l6ZSkgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBP
UlQgdm9pZCBKU1JlcG9ydEV4dHJhTWVtb3J5Q29zdChKU0NvbnRleHRSZWYgY3R4LCBzaXplX3Qg
c2l6ZSkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7CiAKIEpTX0VY
UE9SVCB2b2lkIEpTRGlzYWJsZUdDVGltZXIodm9pZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ29udGV4dC5oCmluZGV4IDE5NGUzNTJiZmU3YWU3NWYyMzU4Y2VlNjNkNDQ4ZmUxZmEyNGQz
ODIuLjg5Yzg3ZjllMmUxZmYxYjE3MWIxZWJiYThjNDUyMTU5ZjQ0ZjQ3NWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHQuaApAQCAtNzgsNyArNzgsNyBAQCBOU19DTEFTU19BVkFJ
TEFCTEUoMTBfOSwgN18wKQogQHBhcmFtIHNvdXJjZVVSTCBBIFVSTCBmb3IgdGhlIHNjcmlwdCdz
IHNvdXJjZSBmaWxlLiBVc2VkIGJ5IGRlYnVnZ2VycyBhbmQgd2hlbiByZXBvcnRpbmcgZXhjZXB0
aW9ucy4gVGhpcyBwYXJhbWV0ZXIgaXMgaW5mb3JtYXRpdmUgb25seTogaXQgZG9lcyBub3QgY2hh
bmdlIHRoZSBiZWhhdmlvciBvZiB0aGUgc2NyaXB0LgogQHJlc3VsdCBUaGUgbGFzdCB2YWx1ZSBn
ZW5lcmF0ZWQgYnkgdGhlIHNjcmlwdC4KICovCi0tIChKU1ZhbHVlICopZXZhbHVhdGVTY3JpcHQ6
KE5TU3RyaW5nICopc2NyaXB0IHdpdGhTb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMIE5TX0FW
QUlMQUJMRSgxMF8xMCwgOF8wKTsKKy0gKEpTVmFsdWUgKilldmFsdWF0ZVNjcmlwdDooTlNTdHJp
bmcgKilzY3JpcHQgd2l0aFNvdXJjZVVSTDooTlNVUkwgKilzb3VyY2VVUkwgSlNDX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEKIEBtZXRob2Rncm91cCBDYWxs
YmFjayBBY2Nlc3NvcnMKQEAgLTEwMSw3ICsxMDEsNyBAQCBOU19DTEFTU19BVkFJTEFCTEUoMTBf
OSwgN18wKQogIGEgY2FsbGJhY2sgZnJvbSBKYXZhU2NyaXB0IHRoaXMgbWV0aG9kIHdpbGwgcmV0
dXJuIG5pbC4KIEByZXN1bHQgVGhlIGN1cnJlbnRseSBleGVjdXRpbmcgSmF2YVNjcmlwdCBmdW5j
dGlvbiBvciBuaWwgaWYgdGhlcmUgaXNuJ3Qgb25lLgogKi8KLSsgKEpTVmFsdWUgKiljdXJyZW50
Q2FsbGVlIE5TX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKKysgKEpTVmFsdWUgKiljdXJyZW50Q2Fs
bGVlIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBA
bWV0aG9kCkBAIC0xNzYsNyArMTc2LDcgQEAgTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzksIDdfMCkK
IEBwcm9wZXJ0eQogQGRpc2N1c3Npb24gTmFtZSBvZiB0aGUgSlNDb250ZXh0LiBFeHBvc2VkIHdo
ZW4gcmVtb3RlIGRlYnVnZ2luZyB0aGUgY29udGV4dC4KICovCi1AcHJvcGVydHkgKGNvcHkpIE5T
U3RyaW5nICpuYW1lIE5TX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0Bwcm9wZXJ0eSAoY29weSkg
TlNTdHJpbmcgKm5hbWUgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkp
OwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250
ZXh0UHJpdmF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRQcml2YXRl
LmgKaW5kZXggN2QxZDBjYmRiYjQ4YzE3MGVhNzZkMmJkNjJkNzMwYzIwMzlkNmE5NC4uZmY5NjIy
YWRkZjYwYjdjMTAzNTdkYWNjZjFjNmY0MWVjYjg2MWYxYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NvbnRleHRQcml2YXRlLmgKQEAgLTM2LDE5ICszNiwxOSBAQAogQHByb3Bl
cnR5CiBAZGlzY3Vzc2lvbiBSZW1vdGUgaW5zcGVjdGlvbiBzZXR0aW5nIG9mIHRoZSBKU0NvbnRl
eHQuIERlZmF1bHQgdmFsdWUgaXMgWUVTLgogKi8KLUBwcm9wZXJ0eSAoc2V0dGVyPV9zZXRSZW1v
dGVJbnNwZWN0aW9uRW5hYmxlZDopIEJPT0wgX3JlbW90ZUluc3BlY3Rpb25FbmFibGVkIE5TX0FW
QUlMQUJMRSgxMF8xMCwgOF8wKTsKK0Bwcm9wZXJ0eSAoc2V0dGVyPV9zZXRSZW1vdGVJbnNwZWN0
aW9uRW5hYmxlZDopIEJPT0wgX3JlbW90ZUluc3BlY3Rpb25FbmFibGVkIEpTQ19BUElfQVZBSUxB
QkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBAcHJvcGVydHkKIEBkaXNjdXNz
aW9uIFNldCB3aGV0aGVyIG9yIG5vdCB0aGUgbmF0aXZlIGNhbGwgc3RhY2sgaXMgaW5jbHVkZWQg
d2hlbiByZXBvcnRpbmcgZXhjZXB0aW9ucy4gRGVmYXVsdCB2YWx1ZSBpcyBZRVMuCiAqLwotQHBy
b3BlcnR5IChzZXR0ZXI9X3NldEluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4
Y2VwdGlvbnM6KSBCT09MIF9pbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNl
cHRpb25zIE5TX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0Bwcm9wZXJ0eSAoc2V0dGVyPV9zZXRJ
bmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zOikgQk9PTCBfaW5j
bHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucyBKU0NfQVBJX0FWQUlM
QUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qIQogQHByb3BlcnR5CiBAZGlzY3Vz
c2lvbiBTZXQgdGhlIHJ1biBsb29wIHRoZSBXZWIgSW5zcGVjdG9yIGRlYnVnZ2VyIHNob3VsZCB1
c2Ugd2hlbiBldmFsdWF0aW5nIEphdmFTY3JpcHQgaW4gdGhlIEpTQ29udGV4dC4KICovCi1AcHJv
cGVydHkgKHNldHRlcj1fc2V0RGVidWdnZXJSdW5Mb29wOikgQ0ZSdW5Mb29wUmVmIF9kZWJ1Z2dl
clJ1bkxvb3AgTlNfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworQHByb3BlcnR5IChzZXR0ZXI9X3Nl
dERlYnVnZ2VyUnVuTG9vcDopIENGUnVuTG9vcFJlZiBfZGVidWdnZXJSdW5Mb29wIEpTQ19BUElf
QVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogQGVuZAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuaAppbmRleCBlMTVjYWU1NzU3NjQ4YTJmYzhlYTIx
NzIxZWVmNTM1YmFkMzU3YjI3Li4yOGQwYTY3ZTlhZTMyNjIxMWFkOTRkZTM2YzUyNjRhNzU0MmZh
Zjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmgKQEAgLTUzLDcg
KzUzLDcgQEAgZXh0ZXJuICJDIiB7CiAgSlNDb250ZXh0R3JvdXAncyBydW4gbG9vcCBvbmNlIGl0
IGhhcyBiZWVuIGNyZWF0ZWQuCiBAcmVzdWx0IFRoZSBjcmVhdGVkIEpTQ29udGV4dEdyb3VwLgog
Ki8KLUpTX0VYUE9SVCBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHcm91cENyZWF0ZSh2b2lk
KSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCBKU0NvbnRleHRHcm91cFJlZiBK
U0NvbnRleHRHcm91cENyZWF0ZSh2b2lkKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiks
IGlvcyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTYxLDE0ICs2MSwxNCBAQCBKU19FWFBP
UlQgSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R3JvdXBDcmVhdGUodm9pZCkgQ0ZfQVZBSUxB
QkxFKDEwXzYsIDdfMCk7CiBAcGFyYW0gZ3JvdXAgVGhlIEpTQ29udGV4dEdyb3VwIHRvIHJldGFp
bi4KIEByZXN1bHQgQSBKU0NvbnRleHRHcm91cCB0aGF0IGlzIHRoZSBzYW1lIGFzIGdyb3VwLgog
Ki8KLUpTX0VYUE9SVCBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHcm91cFJldGFpbihKU0Nv
bnRleHRHcm91cFJlZiBncm91cCkgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQg
SlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R3JvdXBSZXRhaW4oSlNDb250ZXh0R3JvdXBSZWYg
Z3JvdXApIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9zKDcuMCkpOwogCiAvKiEK
IEBmdW5jdGlvbgogQGFic3RyYWN0IFJlbGVhc2VzIGEgSmF2YVNjcmlwdCBjb250ZXh0IGdyb3Vw
LgogQHBhcmFtIGdyb3VwIFRoZSBKU0NvbnRleHRHcm91cCB0byByZWxlYXNlLgogKi8KLUpTX0VY
UE9SVCB2b2lkIEpTQ29udGV4dEdyb3VwUmVsZWFzZShKU0NvbnRleHRHcm91cFJlZiBncm91cCkg
Q0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgdm9pZCBKU0NvbnRleHRHcm91cFJl
bGVhc2UoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXApIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgx
MC42KSwgaW9zKDcuMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtODMsNyArODMsNyBAQCBKU19F
WFBPUlQgdm9pZCBKU0NvbnRleHRHcm91cFJlbGVhc2UoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAp
IENGX0FWQUlMQUJMRSgxMF82LAogIE5VTEwgdG8gdXNlIHRoZSBkZWZhdWx0IG9iamVjdCBjbGFz
cy4KIEByZXN1bHQgQSBKU0dsb2JhbENvbnRleHQgd2l0aCBhIGdsb2JhbCBvYmplY3Qgb2YgY2xh
c3MgZ2xvYmFsT2JqZWN0Q2xhc3MuCiAqLwotSlNfRVhQT1JUIEpTR2xvYmFsQ29udGV4dFJlZiBK
U0dsb2JhbENvbnRleHRDcmVhdGUoSlNDbGFzc1JlZiBnbG9iYWxPYmplY3RDbGFzcykgQ0ZfQVZB
SUxBQkxFKDEwXzUsIDdfMCk7CitKU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpTR2xvYmFs
Q29udGV4dENyZWF0ZShKU0NsYXNzUmVmIGdsb2JhbE9iamVjdENsYXNzKSBKU0NfQVBJX0FWQUlM
QUJMRShtYWNvc3goMTAuNSksIGlvcyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTk3LDcg
Kzk3LDcgQEAgSlNfRVhQT1JUIEpTR2xvYmFsQ29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVh
dGUoSlNDbGFzc1JlZiBnbG9iYWxPYmplY3RDbGFzcykKIEByZXN1bHQgQSBKU0dsb2JhbENvbnRl
eHQgd2l0aCBhIGdsb2JhbCBvYmplY3Qgb2YgY2xhc3MgZ2xvYmFsT2JqZWN0Q2xhc3MgYW5kIGEg
Y29udGV4dAogIGdyb3VwIGVxdWFsIHRvIGdyb3VwLgogKi8KLUpTX0VYUE9SVCBKU0dsb2JhbENv
bnRleHRSZWYgSlNHbG9iYWxDb250ZXh0Q3JlYXRlSW5Hcm91cChKU0NvbnRleHRHcm91cFJlZiBn
cm91cCwgSlNDbGFzc1JlZiBnbG9iYWxPYmplY3RDbGFzcykgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdf
MCk7CitKU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpTR2xvYmFsQ29udGV4dENyZWF0ZUlu
R3JvdXAoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIEpTQ2xhc3NSZWYgZ2xvYmFsT2JqZWN0Q2xh
c3MpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9zKDcuMCkpOwogCiAvKiEKIEBm
dW5jdGlvbgpAQCAtMTI4LDcgKzEyOCw3IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU0NvbnRl
eHRHZXRHbG9iYWxPYmplY3QoSlNDb250ZXh0UmVmIGN0eCk7CiBAcGFyYW0gY3R4IFRoZSBKU0Nv
bnRleHQgd2hvc2UgZ3JvdXAgeW91IHdhbnQgdG8gZ2V0LgogQHJlc3VsdCBjdHgncyBncm91cC4K
ICovCi1KU19FWFBPUlQgSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R2V0R3JvdXAoSlNDb250
ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgSlNDb250ZXh0
R3JvdXBSZWYgSlNDb250ZXh0R2V0R3JvdXAoSlNDb250ZXh0UmVmIGN0eCkgSlNDX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC0xMzYs
NyArMTM2LDcgQEAgSlNfRVhQT1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdldEdyb3Vw
KEpTQ29udGV4dFJlZiBjdHgpIENGX0FWQUlMQUJMRSgxMF8KIEBwYXJhbSBjdHggVGhlIEpTQ29u
dGV4dCB3aG9zZSBnbG9iYWwgY29udGV4dCB5b3Ugd2FudCB0byBnZXQuCiBAcmVzdWx0IGN0eCdz
IGdsb2JhbCBjb250ZXh0LgogKi8KLUpTX0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgSlNDb250
ZXh0R2V0R2xvYmFsQ29udGV4dChKU0NvbnRleHRSZWYgY3R4KSBDRl9BVkFJTEFCTEUoMTBfNywg
N18wKTsKK0pTX0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgSlNDb250ZXh0R2V0R2xvYmFsQ29u
dGV4dChKU0NvbnRleHRSZWYgY3R4KSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNyksIGlv
cyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTE0Niw3ICsxNDYsNyBAQCBKU19FWFBPUlQg
SlNHbG9iYWxDb250ZXh0UmVmIEpTQ29udGV4dEdldEdsb2JhbENvbnRleHQoSlNDb250ZXh0UmVm
IGN0eCkgQ0ZfQVZBSQogQGRpc2N1c3Npb24gQSBKU0dsb2JhbENvbnRleHQncyBuYW1lIGlzIGV4
cG9zZWQgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcgdG8gbWFrZSBpdAogZWFzaWVyIHRvIGlkZW50aWZ5
IHRoZSBjb250ZXh0IHlvdSB3b3VsZCBsaWtlIHRvIGF0dGFjaCB0by4KICovCi1KU19FWFBPUlQg
SlNTdHJpbmdSZWYgSlNHbG9iYWxDb250ZXh0Q29weU5hbWUoSlNHbG9iYWxDb250ZXh0UmVmIGN0
eCkgQ0ZfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworSlNfRVhQT1JUIEpTU3RyaW5nUmVmIEpTR2xv
YmFsQ29udGV4dENvcHlOYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpIEpTQ19BUElfQVZBSUxB
QkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTE1NCw3
ICsxNTQsNyBAQCBKU19FWFBPUlQgSlNTdHJpbmdSZWYgSlNHbG9iYWxDb250ZXh0Q29weU5hbWUo
SlNHbG9iYWxDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQgogQHBhcmFtIGN0eCBUaGUgSlNHbG9i
YWxDb250ZXh0IHRoYXQgeW91IHdhbnQgdG8gbmFtZS4KIEBwYXJhbSBuYW1lIFRoZSByZW1vdGUg
ZGVidWdnaW5nIG5hbWUgdG8gc2V0IG9uIGN0eC4KICovCi1KU19FWFBPUlQgdm9pZCBKU0dsb2Jh
bENvbnRleHRTZXROYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIG5hbWUp
IENGX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0pTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29udGV4
dFNldE5hbWUoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgbmFtZSkgSlNDX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiAjaWZkZWYgX19jcGx1c3Bs
dXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVm
SW50ZXJuYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmSW50ZXJu
YWwuaAppbmRleCA3OWQ3ZWI2ZjM5ZTdlMmNhOGY0YTliOTRmMjcyMjZkYjJmNzA1Mjk1Li45ZDRm
MThhMjI5NTA3MjZkOTEwMmQyNTBiNWNhYTBjZTdhZDVjNzJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZkludGVybmFsLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWZJbnRlcm5hbC5oCkBAIC00Miw3ICs0Miw3IEBA
IGV4dGVybiAiQyIgewogQGFic3RyYWN0IEdldHMgdGhlIHJ1biBsb29wIHVzZWQgYnkgdGhlIFdl
YiBJbnNwZWN0b3IgZGVidWdnZXIgd2hlbiBldmFsdWF0aW5nIEphdmFTY3JpcHQgaW4gdGhpcyBj
b250ZXh0LgogQHBhcmFtIGN0eCBUaGUgSlNHbG9iYWxDb250ZXh0IHdob3NlIHNldHRpbmcgeW91
IHdhbnQgdG8gZ2V0LgogKi8KLUpTX0VYUE9SVCBDRlJ1bkxvb3BSZWYgSlNHbG9iYWxDb250ZXh0
R2V0RGVidWdnZXJSdW5Mb29wKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpIENGX0FWQUlMQUJMRSgx
MF8xMCwgOF8wKTsKK0pTX0VYUE9SVCBDRlJ1bkxvb3BSZWYgSlNHbG9iYWxDb250ZXh0R2V0RGVi
dWdnZXJSdW5Mb29wKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpIEpTQ19BUElfQVZBSUxBQkxFKG1h
Y29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTUwLDcgKzUwLDcg
QEAgSlNfRVhQT1JUIENGUnVuTG9vcFJlZiBKU0dsb2JhbENvbnRleHRHZXREZWJ1Z2dlclJ1bkxv
b3AoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkKIEBwYXJhbSBjdHggVGhlIEpTR2xvYmFsQ29udGV4
dCB0aGF0IHlvdSB3YW50IHRvIGNoYW5nZS4KIEBwYXJhbSBydW5Mb29wIFRoZSBuZXcgdmFsdWUg
b2YgdGhlIHNldHRpbmcgZm9yIHRoZSBjb250ZXh0LgogKi8KLUpTX0VYUE9SVCB2b2lkIEpTR2xv
YmFsQ29udGV4dFNldERlYnVnZ2VyUnVuTG9vcChKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBDRlJ1
bkxvb3BSZWYgcnVuTG9vcCkgQ0ZfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworSlNfRVhQT1JUIHZv
aWQgSlNHbG9iYWxDb250ZXh0U2V0RGVidWdnZXJSdW5Mb29wKEpTR2xvYmFsQ29udGV4dFJlZiBj
dHgsIENGUnVuTG9vcFJlZiBydW5Mb29wKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTAp
LCBpb3MoOC4wKSk7CiAjZW5kaWYKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmUHJpdmF0ZS5oCmluZGV4IDE5NjA0ZWE3NDkz
N2VmZGE5NjdjZTNkZjU3NzdkMmExNTE0ZGE4ZGMuLmVjNjc2ZDhjODcxNDgzZjgzZmNjM2M1NjRi
NTU0ZTgxNzAzNzIyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
b250ZXh0UmVmUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250
ZXh0UmVmUHJpdmF0ZS5oCkBAIC00NCw3ICs0NCw3IEBAIGV4dGVybiAiQyIgewogQHBhcmFtIGN0
eCBUaGUgSlNDb250ZXh0IHdob3NlIGJhY2t0cmFjZSB5b3Ugd2FudCB0byBnZXQKIEByZXN1bHQg
QSBzdHJpbmcgY29udGFpbmluZyB0aGUgYmFja3RyYWNlCiAqLwotSlNfRVhQT1JUIEpTU3RyaW5n
UmVmIEpTQ29udGV4dENyZWF0ZUJhY2t0cmFjZShKU0NvbnRleHRSZWYgY3R4LCB1bnNpZ25lZCBt
YXhTdGFja1NpemUpIENGX0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQT1JUIEpTU3RyaW5n
UmVmIEpTQ29udGV4dENyZWF0ZUJhY2t0cmFjZShKU0NvbnRleHRSZWYgY3R4LCB1bnNpZ25lZCBt
YXhTdGFja1NpemUpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9zKDcuMCkpOwog
ICAgIAogCiAvKiEgCkBAIC04NSwxNCArODUsMTQgQEAgdHlwZWRlZiBib29sCiAgbmVlZCB0byBj
YWxsIEpTQ29udGV4dEdyb3VwU2V0RXhlY3V0aW9uVGltZUxpbWl0IGJlZm9yZSB5b3Ugc3RhcnQg
ZXhlY3V0aW5nCiAgYW55IHNjcmlwdHMuCiAqLwotSlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3Jv
dXBTZXRFeGVjdXRpb25UaW1lTGltaXQoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIGRvdWJsZSBs
aW1pdCwgSlNTaG91bGRUZXJtaW5hdGVDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogY29udGV4dCkg
Q0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgdm9pZCBKU0NvbnRleHRHcm91cFNl
dEV4ZWN1dGlvblRpbWVMaW1pdChKU0NvbnRleHRHcm91cFJlZiBncm91cCwgZG91YmxlIGxpbWl0
LCBKU1Nob3VsZFRlcm1pbmF0ZUNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24K
IEBhYnN0cmFjdCBDbGVhcnMgdGhlIHNjcmlwdCBleGVjdXRpb24gdGltZSBsaW1pdC4KIEBwYXJh
bSBncm91cCBUaGUgSmF2YVNjcmlwdCBjb250ZXh0IGdyb3VwIHRoYXQgdGhlIHRpbWUgbGltaXQg
aXMgY2xlYXJlZCBvbi4KICovCi1KU19FWFBPUlQgdm9pZCBKU0NvbnRleHRHcm91cENsZWFyRXhl
Y3V0aW9uVGltZUxpbWl0KEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwKSBDRl9BVkFJTEFCTEUoMTBf
NiwgN18wKTsKK0pTX0VYUE9SVCB2b2lkIEpTQ29udGV4dEdyb3VwQ2xlYXJFeGVjdXRpb25UaW1l
TGltaXQoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXApIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgx
MC42KSwgaW9zKDcuMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTAxLDcgKzEwMSw3IEBAIEpT
X0VYUE9SVCB2b2lkIEpTQ29udGV4dEdyb3VwQ2xlYXJFeGVjdXRpb25UaW1lTGltaXQoSlNDb250
ZXh0R3JvdXBSZWYgZ3JvdXApIENGCiBAcmVzdWx0IFRoZSB2YWx1ZSBvZiB0aGUgc2V0dGluZywg
dHJ1ZSBpZiByZW1vdGUgaW5zcGVjdGlvbiBpcyBlbmFibGVkLCBvdGhlcndpc2UgZmFsc2UuCiBA
ZGlzY3Vzc2lvbiBSZW1vdGUgaW5zcGVjdGlvbiBpcyB0cnVlIGJ5IGRlZmF1bHQuCiAqLwotSlNf
RVhQT1JUIGJvb2wgSlNHbG9iYWxDb250ZXh0R2V0UmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQoSlNH
bG9iYWxDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworSlNfRVhQT1JU
IGJvb2wgSlNHbG9iYWxDb250ZXh0R2V0UmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQoSlNHbG9iYWxD
b250ZXh0UmVmIGN0eCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkp
OwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTA5LDcgKzEwOSw3IEBAIEpTX0VYUE9SVCBib29sIEpT
R2xvYmFsQ29udGV4dEdldFJlbW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4dFJl
ZiBjdHgpCiBAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgdGhhdCB5b3Ugd2FudCB0byBj
aGFuZ2UuCiBAcGFyYW0gZW5hYmxlZCBUaGUgbmV3IHJlbW90ZSBpbnNwZWN0aW9uIGVuYWJsZWQg
c2V0dGluZyBmb3IgdGhlIGNvbnRleHQuCiAqLwotSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxDb250
ZXh0U2V0UmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwgYm9v
bCBlbmFibGVkKSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7ICAgIAorSlNfRVhQT1JUIHZvaWQg
SlNHbG9iYWxDb250ZXh0U2V0UmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQoSlNHbG9iYWxDb250ZXh0
UmVmIGN0eCwgYm9vbCBlbmFibGVkKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBp
b3MoOC4wKSk7ICAgIAogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTE4LDcgKzExOCw3IEBAIEpTX0VY
UE9SVCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldFJlbW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xv
YmFsQ29udGV4dFJlZiBjdHgsCiBAcmVzdWx0IFRoZSB2YWx1ZSBvZiB0aGUgc2V0dGluZywgdHJ1
ZSBpZiByZW1vdGUgaW5zcGVjdGlvbiBpcyBlbmFibGVkLCBvdGhlcndpc2UgZmFsc2UuCiBAZGlz
Y3Vzc2lvbiBUaGlzIHNldHRpbmcgaXMgdHJ1ZSBieSBkZWZhdWx0LgogKi8KLUpTX0VYUE9SVCBi
b29sIEpTR2xvYmFsQ29udGV4dEdldEluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGlu
Z0V4Y2VwdGlvbnMoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEwXzEwLCA4
XzApOworSlNfRVhQT1JUIGJvb2wgSlNHbG9iYWxDb250ZXh0R2V0SW5jbHVkZXNOYXRpdmVDYWxs
U3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucyhKU0dsb2JhbENvbnRleHRSZWYgY3R4KSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qIQogQGZ1bmN0aW9u
CkBAIC0xMjYsNyArMTI2LDcgQEAgSlNfRVhQT1JUIGJvb2wgSlNHbG9iYWxDb250ZXh0R2V0SW5j
bHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucygKIEBwYXJhbSBjdHgg
VGhlIEpTR2xvYmFsQ29udGV4dCB0aGF0IHlvdSB3YW50IHRvIGNoYW5nZS4KIEBwYXJhbSBpbmNs
dWRlc05hdGl2ZUNhbGxTdGFjayBUaGUgbmV3IHZhbHVlIG9mIHRoZSBzZXR0aW5nIGZvciB0aGUg
Y29udGV4dC4KICovCi1KU19FWFBPUlQgdm9pZCBKU0dsb2JhbENvbnRleHRTZXRJbmNsdWRlc05h
dGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zKEpTR2xvYmFsQ29udGV4dFJlZiBj
dHgsIGJvb2wgaW5jbHVkZXNOYXRpdmVDYWxsU3RhY2spIENGX0FWQUlMQUJMRSgxMF8xMCwgOF8w
KTsKK0pTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldEluY2x1ZGVzTmF0aXZlQ2FsbFN0
YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwgYm9vbCBp
bmNsdWRlc05hdGl2ZUNhbGxTdGFjaykgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwg
aW9zKDguMCkpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNNYW5hZ2VkVmFsdWUuaAppbmRleCAwMTA3M2ZhZDk3ZTcwYjc2YmQ2YjY2YTM3MzNh
ZjI2MWNjNTI3NDljLi40MTgwNzRiYzQ3ZDY2YzE1ODQwN2ZlNTgzODM2OWE1MTVjMDMzNWVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5oCkBAIC01Nyw3ICs1
Nyw3IEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCiBAcmVzdWx0IFRoZSBuZXcgSlNN
YW5hZ2VkVmFsdWUuCiAqLwogKyAoSlNNYW5hZ2VkVmFsdWUgKiltYW5hZ2VkVmFsdWVXaXRoVmFs
dWU6KEpTVmFsdWUgKil2YWx1ZTsKLSsgKEpTTWFuYWdlZFZhbHVlICopbWFuYWdlZFZhbHVlV2l0
aFZhbHVlOihKU1ZhbHVlICopdmFsdWUgYW5kT3duZXI6KGlkKW93bmVyIE5TX0FWQUlMQUJMRSgx
MF8xMCwgOF8wKTsKKysgKEpTTWFuYWdlZFZhbHVlICopbWFuYWdlZFZhbHVlV2l0aFZhbHVlOihK
U1ZhbHVlICopdmFsdWUgYW5kT3duZXI6KGlkKW93bmVyIEpTQ19BUElfQVZBSUxBQkxFKG1hY29z
eCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBAbWV0aG9kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IDU2NmI3MzYyZjFiNWRmZTQ5ZWYzZDk2Y2Y1NzI0
ZWY0ODc4ZmJmODEuLjU0NTFhMmY5YTU2MTM0N2E5MjU4MWQ1ZjNlNDQyNDYyOTY5ZDQwZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCkBAIC0zNjYsNiArMzY2
LDEwMCBAQCB2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmpl
Y3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZQogICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVl
ZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pOwogfQogCitib29sIEpTT2JqZWN0SGFzUHJvcGVy
dHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIGtl
eSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEV4
ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENI
X1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAg
ICBJZGVudGlmaWVyIGlkZW50ID0gdG9KUyhleGVjLCBrZXkpLnRvUHJvcGVydHlLZXkoZXhlYyk7
CisgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24p
ID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGJvb2wgcmVzdWx0ID0ganNPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIGlkZW50KTsKKyAg
ICBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhjZXB0aW9uKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitKU1ZhbHVlUmVmIEpTT2JqZWN0R2V0UHJvcGVydHlLZXkoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIGtleSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgRXhlY1N0YXRl
KiBleGVjID0gdG9KUyhjdHgpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNMb2Nr
SG9sZGVyIGxvY2tlcih2bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUo
dm0pOworCisgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOworICAgIElkZW50
aWZpZXIgaWRlbnQgPSB0b0pTKGV4ZWMsIGtleSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBp
ZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhj
ZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBK
U1ZhbHVlIGpzVmFsdWUgPSBqc09iamVjdC0+Z2V0KGV4ZWMsIGlkZW50KTsKKyAgICBoYW5kbGVF
eGNlcHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gdG9S
ZWYoZXhlYywganNWYWx1ZSk7Cit9CisKK3ZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eUtleShKU0Nv
bnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYga2V5LCBKU1ZhbHVl
UmVmIHZhbHVlLCBKU1Byb3BlcnR5QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pCit7CisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhj
dHgpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2
bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworCisgICAgSlNP
YmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOworICAgIEpTVmFsdWUganNWYWx1ZSA9IHRv
SlMoZXhlYywgdmFsdWUpOworCisgICAgSWRlbnRpZmllciBpZGVudCA9IHRvSlMoZXhlYywga2V5
KS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChz
Y29wZSwgZXhlYywgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQorICAg
ICAgICByZXR1cm47CisKKyAgICBib29sIGRvZXNOb3RIYXZlUHJvcGVydHkgPSBhdHRyaWJ1dGVz
ICYmICFqc09iamVjdC0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpOworICAgIGlmIChMSUtFTFko
IXNjb3BlLmV4Y2VwdGlvbigpKSkgeworICAgICAgICBpZiAoZG9lc05vdEhhdmVQcm9wZXJ0eSkg
eworICAgICAgICAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2MoanNWYWx1ZSwgYXR0cmlidXRl
cyk7CisgICAgICAgICAgICBqc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9w
ZXJ0eShqc09iamVjdCwgZXhlYywgaWRlbnQsIGRlc2MsIGZhbHNlKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGpzT2JqZWN0KTsKKyAgICAgICAg
ICAgIGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dChqc09iamVjdCwgZXhlYywgaWRlbnQs
IGpzVmFsdWUsIHNsb3QpOworICAgICAgICB9CisgICAgfQorICAgIGhhbmRsZUV4Y2VwdGlvbklm
TmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pOworfQorCitib29sIEpTT2JqZWN0RGVsZXRl
UHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVl
UmVmIGtleSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmICghY3R4KSB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X0NBVENIX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0
KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gdG9KUyhleGVjLCBrZXkpLnRvUHJvcGVydHlLZXko
ZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNl
cHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGJvb2wgcmVzdWx0ID0ganNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRl
UHJvcGVydHkoanNPYmplY3QsIGV4ZWMsIGlkZW50KTsKKyAgICBoYW5kbGVFeGNlcHRpb25JZk5l
ZWRlZChzY29wZSwgZXhlYywgZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBK
U1ZhbHVlUmVmIEpTT2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KEpTQ29udGV4dFJlZiBjdHgsIEpT
T2JqZWN0UmVmIG9iamVjdCwgdW5zaWduZWQgcHJvcGVydHlJbmRleCwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKQogewogICAgIGlmICghY3R4KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2Jq
ZWN0UmVmLmgKaW5kZXggOTVkNTNiN2Y0ZTU4ZTk2ZjBjYmMzMTU5NWFmOWM0NjE5NzhhYTQzZC4u
ZGI1NTY5YTZjYmQwZWUwYjdiY2JmY2MzZTI5MmY1MzI5NzVlNjc2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaApAQCAtNDQxLDcgKzQ0MSw3IEBAIEpTX0VYUE9SVCBK
U09iamVjdFJlZiBKU09iamVjdE1ha2VDb25zdHJ1Y3RvcihKU0NvbnRleHRSZWYgY3R4LCBKU0Ns
YXNzUmVmIGpzQ2xhCiAgQGRpc2N1c3Npb24gVGhlIGJlaGF2aW9yIG9mIHRoaXMgZnVuY3Rpb24g
ZG9lcyBub3QgZXhhY3RseSBtYXRjaCB0aGUgYmVoYXZpb3Igb2YgdGhlIGJ1aWx0LWluIEFycmF5
IGNvbnN0cnVjdG9yLiBTcGVjaWZpY2FsbHksIGlmIG9uZSBhcmd1bWVudCAKICBpcyBzdXBwbGll
ZCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuIGFycmF5IHdpdGggb25lIGVsZW1lbnQuCiAgKi8K
LUpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VBcnJheShKU0NvbnRleHRSZWYgY3R4
LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCBK
U09iamVjdFJlZiBKU09iamVjdE1ha2VBcnJheShKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyoh
CiAgQGZ1bmN0aW9uCkBAIC00NTIsNyArNDUyLDcgQEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpT
T2JqZWN0TWFrZUFycmF5KEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LAog
IEBwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBz
dG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0
byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCBBIEpTT2JqZWN0IHRoYXQgaXMgYSBEYXRl
LgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRGF0ZShKU0NvbnRleHRS
ZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VY
UE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VEYXRlKEpTQ29udGV4dFJlZiBjdHgsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9zKDcuMCkpOwog
CiAvKiEKICBAZnVuY3Rpb24KQEAgLTQ2Myw3ICs0NjMsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RS
ZWYgSlNPYmplY3RNYWtlRGF0ZShKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgYwogIEBwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGlj
aCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3Qg
Y2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCBBIEpTT2JqZWN0IHRoYXQgaXMg
YSBFcnJvci4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUVycm9yKEpT
Q29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFy
Z3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF82LCA3XzAp
OworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUVycm9yKEpTQ29udGV4dFJlZiBj
dHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9z
KDcuMCkpOwogCiAvKiEKICBAZnVuY3Rpb24KQEAgLTQ3NCw3ICs0NzQsNyBAQCBKU19FWFBPUlQg
SlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRXJyb3IoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFy
Z3VtZW50Q291bnQsCiAgQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVm
IGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91
IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0IEEgSlNPYmplY3Qg
dGhhdCBpcyBhIFJlZ0V4cC4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFr
ZVJlZ0V4cChKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUo
MTBfNiwgN18wKTsKK0pTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VSZWdFeHAoSlND
b250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJn
dW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjYpLCBpb3MoNy4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC01MzYsOSArNTM2LDkgQEAg
SlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4
LCBKU09iamVjdFJlZiBvYmplY3QsIEoKIEBwYXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250ZXh0
IHRvIHVzZS4KIEBwYXJhbSBvYmplY3QgVGhlIEpTT2JqZWN0IHdob3NlIHByb3BlcnR5IHlvdSB3
YW50IHRvIHNldC4KIEBwYXJhbSBwcm9wZXJ0eU5hbWUgQSBKU1N0cmluZyBjb250YWluaW5nIHRo
ZSBwcm9wZXJ0eSdzIG5hbWUuCi1AcGFyYW0gdmFsdWUgQSBKU1ZhbHVlIHRvIHVzZSBhcyB0aGUg
cHJvcGVydHkncyB2YWx1ZS4KLUBwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1
ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlm
IHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCitAcGFyYW0gdmFsdWUgQSBK
U1ZhbHVlUmVmIHRvIHVzZSBhcyB0aGUgcHJvcGVydHkncyB2YWx1ZS4KIEBwYXJhbSBhdHRyaWJ1
dGVzIEEgbG9naWNhbGx5IE9SZWQgc2V0IG9mIEpTUHJvcGVydHlBdHRyaWJ1dGVzIHRvIGdpdmUg
dG8gdGhlIHByb3BlcnR5LgorQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVl
UmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYg
eW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICovCiBKU19FWFBPUlQgdm9p
ZCBKU09iamVjdFNldFByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVj
dCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1Byb3BlcnR5
QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCkBAIC01NTMs
NiArNTUzLDU0IEBAIEpTX0VYUE9SVCB2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHkoSlNDb250ZXh0
UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluCiAqLwogSlNfRVhQT1JUIGJvb2wg
SlNPYmplY3REZWxldGVQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmpl
Y3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKIAor
LyohCitAZnVuY3Rpb24KK0BhYnN0cmFjdCBUZXN0cyB3aGV0aGVyIGFuIG9iamVjdCBoYXMgYSBn
aXZlbiBwcm9wZXJ0eSB1c2luZyBhIEpTVmFsdWVSZWYgYXMgdGhlIHByb3BlcnR5IGtleS4KK0Bw
YXJhbSBvYmplY3QgVGhlIEpTT2JqZWN0IHRvIHRlc3QuCitAcGFyYW0gcHJvcGVydHlLZXkgQSBK
U1ZhbHVlUmVmIGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5IGtleSB0byB1c2Ugd2hlbiBsb29raW5n
IHVwIHRoZSBwcm9wZXJ0eS4KK0BwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1
ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlm
IHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCitAcmVzdWx0IHRydWUgaWYg
dGhlIG9iamVjdCBoYXMgYSBwcm9wZXJ0eSB3aG9zZSBuYW1lIG1hdGNoZXMgcHJvcGVydHlLZXks
IG90aGVyd2lzZSBmYWxzZS4KK0BkaXNjdXNzaW9uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUg
YXMgcGVyZm9ybWluZyAicHJvcGVydHlLZXkgaW4gb2JqZWN0IiBmcm9tIEphdmFTY3JpcHQuCisq
LworSlNfRVhQT1JUIGJvb2wgSlNPYmplY3RIYXNQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4
LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYgcHJvcGVydHlLZXksIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KEpTQ19NQUNfVEJBKSwgaW9zKEpT
Q19JT1NfVEJBKSk7CisKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgR2V0cyBhIHByb3BlcnR5
IGZyb20gYW4gb2JqZWN0IHVzaW5nIGEgSlNWYWx1ZVJlZiBhcyB0aGUgcHJvcGVydHkga2V5Lgor
QHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgorQHBhcmFtIG9iamVjdCBU
aGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQgdG8gZ2V0LgorQHBhcmFtIHByb3Bl
cnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBwcm9wZXJ0eSBrZXkgdG8gdXNlIHdo
ZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0
byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBh
c3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgorQHJlc3Vs
dCBUaGUgcHJvcGVydHkncyB2YWx1ZSBpZiBvYmplY3QgaGFzIHRoZSBwcm9wZXJ0eSBrZXksIG90
aGVyd2lzZSB0aGUgdW5kZWZpbmVkIHZhbHVlLgorQGRpc2N1c3Npb24gVGhpcyBmdW5jdGlvbiBp
cyB0aGUgc2FtZSBhcyBwZXJmb3JtaW5nICJvYmplY3RbcHJvcGVydHlLZXldIiBmcm9tIEphdmFT
Y3JpcHQuCisqLworSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9wZXJ0eUtleShK
U0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYgcHJvcGVydHlL
ZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KEpTQ19N
QUNfVEJBKSwgaW9zKEpTQ19JT1NfVEJBKSk7CisKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3Qg
U2V0cyBhIHByb3BlcnR5IG9uIGFuIG9iamVjdCB1c2luZyBhIEpTVmFsdWVSZWYgYXMgdGhlIHBy
b3BlcnR5IGtleS4KK0BwYXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KK0Bw
YXJhbSBvYmplY3QgVGhlIEpTT2JqZWN0IHdob3NlIHByb3BlcnR5IHlvdSB3YW50IHRvIHNldC4K
K0BwYXJhbSBwcm9wZXJ0eUtleSBBIEpTVmFsdWVSZWYgY29udGFpbmluZyB0aGUgcHJvcGVydHkg
a2V5IHRvIHVzZSB3aGVuIGxvb2tpbmcgdXAgdGhlIHByb3BlcnR5LgorQHBhcmFtIHZhbHVlIEEg
SlNWYWx1ZVJlZiB0byB1c2UgYXMgdGhlIHByb3BlcnR5J3MgdmFsdWUuCitAcGFyYW0gYXR0cmli
dXRlcyBBIGxvZ2ljYWxseSBPUmVkIHNldCBvZiBKU1Byb3BlcnR5QXR0cmlidXRlcyB0byBnaXZl
IHRvIHRoZSBwcm9wZXJ0eS4KK0BwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1
ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlm
IHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCitAZGlzY3Vzc2lvbiBUaGlz
IGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHBlcmZvcm1pbmcgIm9iamVjdFtwcm9wZXJ0eUtleV0g
PSB2YWx1ZSIgZnJvbSBKYXZhU2NyaXB0LgorKi8KK0pTX0VYUE9SVCB2b2lkIEpTT2JqZWN0U2V0
UHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVl
UmVmIHByb3BlcnR5S2V5LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1Byb3BlcnR5QXR0cmlidXRlcyBh
dHRyaWJ1dGVzLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29z
eChKU0NfTUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpOworCisvKiEKK0BmdW5jdGlvbgorQGFi
c3RyYWN0IERlbGV0ZXMgYSBwcm9wZXJ0eSBmcm9tIGFuIG9iamVjdCB1c2luZyBhIEpTVmFsdWVS
ZWYgYXMgdGhlIHByb3BlcnR5IGtleS4KK0BwYXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250ZXh0
IHRvIHVzZS4KK0BwYXJhbSBvYmplY3QgVGhlIEpTT2JqZWN0IHdob3NlIHByb3BlcnR5IHlvdSB3
YW50IHRvIGRlbGV0ZS4KK0BwYXJhbSBwcm9wZXJ0eUtleSBBIEpTVmFsdWVSZWYgY29udGFpbmlu
ZyB0aGUgcHJvcGVydHkga2V5IHRvIHVzZSB3aGVuIGxvb2tpbmcgdXAgdGhlIHByb3BlcnR5Lgor
QHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0
b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRv
IHN0b3JlIGFuIGV4Y2VwdGlvbi4KK0ByZXN1bHQgdHJ1ZSBpZiB0aGUgZGVsZXRlIG9wZXJhdGlv
biBzdWNjZWVkcywgb3RoZXJ3aXNlIGZhbHNlIChmb3IgZXhhbXBsZSwgaWYgdGhlIHByb3BlcnR5
IGhhcyB0aGUga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIGF0dHJpYnV0ZSBzZXQpLgor
QGRpc2N1c3Npb24gVGhpcyBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyBwZXJmb3JtaW5nICJkZWxl
dGUgb2JqZWN0W3Byb3BlcnR5S2V5XSIgZnJvbSBKYXZhU2NyaXB0LgorKi8KK0pTX0VYUE9SVCBi
b29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RS
ZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIHByb3BlcnR5S2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
IEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeChKU0NfTUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkp
OworCiAvKiEKIEBmdW5jdGlvbgogQGFic3RyYWN0IEdldHMgYSBwcm9wZXJ0eSBmcm9tIGFuIG9i
amVjdCBieSBudW1lcmljIGluZGV4LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1JlbW90ZUluc3BlY3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Jl
bW90ZUluc3BlY3Rvci5oCmluZGV4IGM4YmFjNmRkMGU0YTY0ODA5Y2IzNDUwY2RiYTRjMDM5N2E0
OGEwNTcuLjYxODZiOTIzZWM4YWI4Yjk0OGU3OTNhZjA0YmRkODQzMjc0MDAzNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmgKQEAgLTQwLDE0ICs0
MCwxNCBAQCB0eXBlZGVmIHBpZF90IEpTUHJvY2Vzc0lEOwogZXh0ZXJuICJDIiB7CiAjZW5kaWYK
IAotSlNfRVhQT1JUIHZvaWQgSlNSZW1vdGVJbnNwZWN0b3JEaXNhYmxlQXV0b1N0YXJ0KHZvaWQp
IENGX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsKLUpTX0VYUE9SVCB2b2lkIEpTUmVtb3RlSW5zcGVj
dG9yU3RhcnQodm9pZCkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzApOwotSlNfRVhQT1JUIHZvaWQg
SlNSZW1vdGVJbnNwZWN0b3JTZXRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24oSlNQcm9jZXNzSUQs
IGNvbnN0IHVpbnQ4X3QqIGF1ZGl0RGF0YSwgc2l6ZV90IGF1ZGl0TGVuZ3RoKSBDRl9BVkFJTEFC
TEUoMTBfMTEsIDlfMCk7CitKU19FWFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvckRpc2FibGVB
dXRvU3RhcnQodm9pZCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkp
OworSlNfRVhQT1JUIHZvaWQgSlNSZW1vdGVJbnNwZWN0b3JTdGFydCh2b2lkKSBKU0NfQVBJX0FW
QUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CitKU19FWFBPUlQgdm9pZCBKU1JlbW90
ZUluc3BlY3RvclNldFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbihKU1Byb2Nlc3NJRCwgY29uc3Qg
dWludDhfdCogYXVkaXREYXRhLCBzaXplX3QgYXVkaXRMZW5ndGgpIEpTQ19BUElfQVZBSUxBQkxF
KG1hY29zeCgxMC4xMSksIGlvcyg5LjApKTsKIAotSlNfRVhQT1JUIHZvaWQgSlNSZW1vdGVJbnNw
ZWN0b3JTZXRMb2dUb1N5c3RlbUNvbnNvbGUoYm9vbCkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzAp
OworSlNfRVhQT1JUIHZvaWQgSlNSZW1vdGVJbnNwZWN0b3JTZXRMb2dUb1N5c3RlbUNvbnNvbGUo
Ym9vbCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOwogCi1KU19F
WFBPUlQgYm9vbCBKU1JlbW90ZUluc3BlY3RvckdldEluc3BlY3Rpb25FbmFibGVkQnlEZWZhdWx0
KHZvaWQpIENGX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsKLUpTX0VYUE9SVCB2b2lkIEpTUmVtb3Rl
SW5zcGVjdG9yU2V0SW5zcGVjdGlvbkVuYWJsZWRCeURlZmF1bHQoYm9vbCkgQ0ZfQVZBSUxBQkxF
KDEwXzExLCA5XzApOworSlNfRVhQT1JUIGJvb2wgSlNSZW1vdGVJbnNwZWN0b3JHZXRJbnNwZWN0
aW9uRW5hYmxlZEJ5RGVmYXVsdCh2b2lkKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEp
LCBpb3MoOS4wKSk7CitKU19FWFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvclNldEluc3BlY3Rp
b25FbmFibGVkQnlEZWZhdWx0KGJvb2wpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSks
IGlvcyg5LjApKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1R5cGVkQXJyYXkuaAppbmRleCBlMjNiNzZkMmViNGFhNWE0OThiNTVlYmE0NzM3NDYz
ZjZjYjkzOWFjLi42ZDg2MDIyZmE1Njk5NTQ2NDZiZWVhM2FlOWVmZjdiMmNhMzZhMDFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmgKQEAgLTQ1LDcgKzQ1LDcgQEAg
ZXh0ZXJuICJDIiB7CiAgQHBhcmFtIGV4Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVl
UmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYg
eW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAg
ICAgIEEgSlNPYmplY3RSZWYgdGhhdCBpcyBhIFR5cGVkIEFycmF5IHdpdGggYWxsIGVsZW1lbnRz
IHNldCB0byB6ZXJvIG9yIE5VTEwgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgogICovCi1KU19FWFBP
UlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheShKU0NvbnRleHRSZWYgY3R4LCBK
U1R5cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgc2l6ZV90IGxlbmd0aCwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVm
IEpTT2JqZWN0TWFrZVR5cGVkQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBlZEFycmF5VHlw
ZSBhcnJheVR5cGUsIHNpemVfdCBsZW5ndGgsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9u
CkBAIC02MCw3ICs2MCw3IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBl
ZEFycmF5KEpTQ29udGV4dFJlZiBjdHgsIEpTVHlwZWRBcnJheVR5cGUKICBAcmVzdWx0ICAgICAg
ICAgICAgICAgICAgIEEgSlNPYmplY3RSZWYgVHlwZWQgQXJyYXkgd2hvc2UgYmFja2luZyBzdG9y
ZSBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIHBvaW50ZWQgdG8gYnkgYnl0ZXMgb3IgTlVMTCBpZiB0
aGVyZSB3YXMgYW4gZXJyb3IuCiAgQGRpc2N1c3Npb24gICAgICAgICAgICAgICBJZiBhbiBleGNl
cHRpb24gaXMgdGhyb3duIGR1cmluZyB0aGlzIGZ1bmN0aW9uIHRoZSBieXRlc0RlYWxsb2NhdG9y
IHdpbGwgYWx3YXlzIGJlIGNhbGxlZC4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2Jq
ZWN0TWFrZVR5cGVkQXJyYXlXaXRoQnl0ZXNOb0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBl
ZEFycmF5VHlwZSBhcnJheVR5cGUsIHZvaWQqIGJ5dGVzLCBzaXplX3QgYnl0ZUxlbmd0aCwgSlNU
eXBlZEFycmF5Qnl0ZXNEZWFsbG9jYXRvciBieXRlc0RlYWxsb2NhdG9yLCB2b2lkKiBkZWFsbG9j
YXRvckNvbnRleHQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAx
MF8wKTsKK0pTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEJ5
dGVzTm9Db3B5KEpTQ29udGV4dFJlZiBjdHgsIEpTVHlwZWRBcnJheVR5cGUgYXJyYXlUeXBlLCB2
b2lkKiBieXRlcywgc2l6ZV90IGJ5dGVMZW5ndGgsIEpTVHlwZWRBcnJheUJ5dGVzRGVhbGxvY2F0
b3IgYnl0ZXNEZWFsbG9jYXRvciwgdm9pZCogZGVhbGxvY2F0b3JDb250ZXh0LCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7
CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtNzEsNyArNzEsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RS
ZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4
LCBKUwogIEBwYXJhbSBleGNlcHRpb24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3
aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBu
b3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgICBBIEpT
T2JqZWN0UmVmIHRoYXQgaXMgYSBUeXBlZCBBcnJheSBvciBOVUxMIGlmIHRoZXJlIHdhcyBhbiBl
cnJvci4gVGhlIGJhY2tpbmcgc3RvcmUgb2YgdGhlIFR5cGVkIEFycmF5IHdpbGwgYmUgYnVmZmVy
LgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhB
cnJheUJ1ZmZlcihKU0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwg
SlNPYmplY3RSZWYgYnVmZmVyLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgx
MF8xMiwgMTBfMCk7CitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJh
eVdpdGhBcnJheUJ1ZmZlcihKU0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5
VHlwZSwgSlNPYmplY3RSZWYgYnVmZmVyLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElf
QVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpA
QCAtODQsNyArODQsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRB
cnJheVdpdGhBcnJheUJ1ZmZlcihKU0NvbnRleHRSZWYgY3R4LCBKUwogIEBwYXJhbSBleGNlcHRp
b24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNl
cHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBl
eGNlcHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgICBBIEpTT2JqZWN0UmVmIHRoYXQgaXMgYSBU
eXBlZCBBcnJheSBvciBOVUxMIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4gVGhlIGJhY2tpbmcgc3Rv
cmUgb2YgdGhlIFR5cGVkIEFycmF5IHdpbGwgYmUgYnVmZmVyLgogICovCi1KU19FWFBPUlQgSlNP
YmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhBcnJheUJ1ZmZlckFuZE9mZnNldChK
U0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgSlNPYmplY3RSZWYg
YnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVm
IEpTT2JqZWN0TWFrZVR5cGVkQXJyYXlXaXRoQXJyYXlCdWZmZXJBbmRPZmZzZXQoSlNDb250ZXh0
UmVmIGN0eCwgSlNUeXBlZEFycmF5VHlwZSBhcnJheVR5cGUsIEpTT2JqZWN0UmVmIGJ1ZmZlciwg
c2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikg
SlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1
bmN0aW9uCkBAIC05NSw3ICs5NSw3IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1h
a2VUeXBlZEFycmF5V2l0aEFycmF5QnVmZmVyQW5kT2Zmc2V0KEpTQ29udGV4dFJlCiAgQHJlc3Vs
dCAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIHJhdyBkYXRhIGJ1ZmZlciB0aGF0IHNlcnZl
cyBhcyBvYmplY3QncyBiYWNraW5nIHN0b3JlIG9yIE5VTEwgaWYgb2JqZWN0IGlzIG5vdCBhIFR5
cGVkIEFycmF5IG9iamVjdC4KICBAZGlzY3Vzc2lvbiAgICAgICAgIFRoZSBwb2ludGVyIHJldHVy
bmVkIGJ5IHRoaXMgZnVuY3Rpb24gaXMgdGVtcG9yYXJ5IGFuZCBpcyBub3QgZ3VhcmFudGVlZCB0
byByZW1haW4gdmFsaWQgYWNyb3NzIEphdmFTY3JpcHRDb3JlIEFQSSBjYWxscy4KICAqLwotSlNf
RVhQT1JUIHZvaWQqIEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5dGVzUHRyKEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFC
TEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIHZvaWQqIEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5
dGVzUHRyKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwog
CiAvKiEKICBAZnVuY3Rpb24KQEAgLTEwNSw3ICsxMDUsNyBAQCBKU19FWFBPUlQgdm9pZCogSlNP
YmplY3RHZXRUeXBlZEFycmF5Qnl0ZXNQdHIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYg
b2JqZQogIEBwYXJhbSBleGNlcHRpb24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3
aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBu
b3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgICBUaGUg
bGVuZ3RoIG9mIHRoZSBUeXBlZCBBcnJheSBvYmplY3Qgb3IgMCBpZiB0aGUgb2JqZWN0IGlzIG5v
dCBhIFR5cGVkIEFycmF5IG9iamVjdC4KICAqLwotSlNfRVhQT1JUIHNpemVfdCBKU09iamVjdEdl
dFR5cGVkQXJyYXlMZW5ndGgoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBP
UlQgc2l6ZV90IEpTT2JqZWN0R2V0VHlwZWRBcnJheUxlbmd0aChKU0NvbnRleHRSZWYgY3R4LCBK
U09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC0xMTUs
NyArMTE1LDcgQEAgSlNfRVhQT1JUIHNpemVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlMZW5ndGgo
SlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWMKICBAcGFyYW0gZXhjZXB0aW9uICAg
IEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9u
LCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0
aW9uLgogIEByZXN1bHQgICAgICAgICAgICAgVGhlIGJ5dGUgbGVuZ3RoIG9mIHRoZSBUeXBlZCBB
cnJheSBvYmplY3Qgb3IgMCBpZiB0aGUgb2JqZWN0IGlzIG5vdCBhIFR5cGVkIEFycmF5IG9iamVj
dC4KICAqLwotSlNfRVhQT1JUIHNpemVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlCeXRlTGVuZ3Ro
KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIHNpemVfdCBKU09iamVj
dEdldFR5cGVkQXJyYXlCeXRlTGVuZ3RoKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9i
amVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAu
MTIpLCBpb3MoMTAuMCkpOwogCiAvKiEKICBAZnVuY3Rpb24KQEAgLTEyNSw3ICsxMjUsNyBAQCBK
U19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5dGVMZW5ndGgoSlNDb250ZXh0
UmVmIGN0eCwgSlNPYmplY3RSZWYgbwogIEBwYXJhbSBleGNlcHRpb24gICAgQSBwb2ludGVyIHRv
IGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFz
cyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3Vs
dCAgICAgICAgICAgICBUaGUgYnl0ZSBvZmZzZXQgb2YgdGhlIFR5cGVkIEFycmF5IG9iamVjdCBv
ciAwIGlmIHRoZSBvYmplY3QgaXMgbm90IGEgVHlwZWQgQXJyYXkgb2JqZWN0LgogICovCi1KU19F
WFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoSlNDb250ZXh0UmVm
IGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlM
QUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4w
KSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtMTM1LDcgKzEzNSw3IEBAIEpTX0VYUE9SVCBzaXpl
X3QgSlNPYmplY3RHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldChKU0NvbnRleHRSZWYgY3R4LCBKU09i
amVjdFJlZiBvCiAgQHBhcmFtIGV4Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVm
IGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91
IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAgICAg
IEEgSlNPYmplY3RSZWYgd2l0aCBhIEpTVHlwZWRBcnJheVR5cGUgb2Yga0pTVHlwZWRBcnJheVR5
cGVBcnJheUJ1ZmZlciBvciBOVUxMIGlmIG9iamVjdCBpcyBub3QgYSBUeXBlZCBBcnJheS4KICAq
LwotSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ1ZmZlcihKU0Nv
bnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikg
Q0ZfQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK0pTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVj
dEdldFR5cGVkQXJyYXlCdWZmZXIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiks
IGlvcygxMC4wKSk7CiAKIC8vIC0tLS0tLS0tLS0tLS0gQXJyYXkgQnVmZmVyIGZ1bmN0aW9ucyAt
LS0tLS0tLS0tLS0tCiAKQEAgLTE1MSw3ICsxNTEsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYg
SlNPYmplY3RHZXRUeXBlZEFycmF5QnVmZmVyKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVm
CiAgQHJlc3VsdCAgICAgICAgICAgICAgICAgICBBIEpTT2JqZWN0UmVmIEFycmF5IEJ1ZmZlciB3
aG9zZSBiYWNraW5nIHN0b3JlIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgcG9pbnRlZCB0byBieSBi
eXRlcyBvciBOVUxMIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KICBAZGlzY3Vzc2lvbiAgICAgICAg
ICAgICAgIElmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZHVyaW5nIHRoaXMgZnVuY3Rpb24gdGhl
IGJ5dGVzRGVhbGxvY2F0b3Igd2lsbCBhbHdheXMgYmUgY2FsbGVkLgogICovCi1KU19FWFBPUlQg
SlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQXJyYXlCdWZmZXJXaXRoQnl0ZXNOb0NvcHkoSlNDb250
ZXh0UmVmIGN0eCwgdm9pZCogYnl0ZXMsIHNpemVfdCBieXRlTGVuZ3RoLCBKU1R5cGVkQXJyYXlC
eXRlc0RlYWxsb2NhdG9yIGJ5dGVzRGVhbGxvY2F0b3IsIHZvaWQqIGRlYWxsb2NhdG9yQ29udGV4
dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNf
RVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUFycmF5QnVmZmVyV2l0aEJ5dGVzTm9Db3B5
KEpTQ29udGV4dFJlZiBjdHgsIHZvaWQqIGJ5dGVzLCBzaXplX3QgYnl0ZUxlbmd0aCwgSlNUeXBl
ZEFycmF5Qnl0ZXNEZWFsbG9jYXRvciBieXRlc0RlYWxsb2NhdG9yLCB2b2lkKiBkZWFsbG9jYXRv
ckNvbnRleHQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC0xNjEsNyArMTYxLDcg
QEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUFycmF5QnVmZmVyV2l0aEJ5dGVz
Tm9Db3B5KEpTQ29udGV4dFJlZiBjdHgsIHYKICBAcmVzdWx0ICAgICAgICAgICBBIHBvaW50ZXIg
dG8gdGhlIHJhdyBkYXRhIGJ1ZmZlciB0aGF0IHNlcnZlcyBhcyBvYmplY3QncyBiYWNraW5nIHN0
b3JlIG9yIE5VTEwgaWYgb2JqZWN0IGlzIG5vdCBhbiBBcnJheSBCdWZmZXIgb2JqZWN0LgogIEBk
aXNjdXNzaW9uICAgICAgIFRoZSBwb2ludGVyIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24gaXMg
dGVtcG9yYXJ5IGFuZCBpcyBub3QgZ3VhcmFudGVlZCB0byByZW1haW4gdmFsaWQgYWNyb3NzIEph
dmFTY3JpcHRDb3JlIEFQSSBjYWxscy4KICAqLwotSlNfRVhQT1JUIHZvaWQqIEpTT2JqZWN0R2V0
QXJyYXlCdWZmZXJCeXRlc1B0cihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3Qs
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK0pTX0VY
UE9SVCB2b2lkKiBKU09iamVjdEdldEFycmF5QnVmZmVyQnl0ZXNQdHIoSlNDb250ZXh0UmVmIGN0
eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZB
SUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAt
MTcxLDcgKzE3MSw3IEBAIEpTX0VYUE9SVCB2b2lkKiBKU09iamVjdEdldEFycmF5QnVmZmVyQnl0
ZXNQdHIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqCiAgQHBhcmFtIGV4Y2VwdGlv
biAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRp
b24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNl
cHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgVGhlIG51bWJlciBvZiBieXRlcyBzdG9yZWQgaW4g
dGhlIGRhdGEgb2JqZWN0LgogICovCi1KU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0QXJyYXlC
dWZmZXJCeXRlTGVuZ3RoKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JU
IHNpemVfdCBKU09iamVjdEdldEFycmF5QnVmZmVyQnl0ZUxlbmd0aChKU0NvbnRleHRSZWYgY3R4
LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oCmluZGV4IDE0MTBkZDc0YTE3Zjk3MDcwNmU0
NGRlZDI0Y2NkMTcwYzM0NzljMmUuLjgzZTlmNWFhYzE5YTRmNjNiOWYwMzgxNzdjZjhjNmNiOTg0
ZGVjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oCkBAIC0xNDgsNiArMTQ4LDE1
IEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCiAqLwogKyAoSlNWYWx1ZSAqKXZhbHVl
V2l0aFVuZGVmaW5lZEluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKIAorLyohCisgQG1l
dGhvZAorIEBhYnN0cmFjdCBDcmVhdGUgYSBuZXcsIHVuaXF1ZSwgc3ltYm9sIG9iamVjdC4KKyBA
cGFyYW0gZGVzY3JpcHRpb24gVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBzeW1ib2wgb2JqZWN0IGJl
aW5nIGNyZWF0ZWQuCisgQHBhcmFtIGNvbnRleHQgVGhlIEpTQ29udGV4dCB0byB3aGljaCB0aGUg
cmVzdWx0aW5nIEpTVmFsdWUgYmVsb25ncy4KKyBAcmVzdWx0IFRoZSBKU1ZhbHVlIHJlcHJlc2Vu
dGluZyBhIHVuaXF1ZSBKYXZhU2NyaXB0IHZhbHVlIHdpdGggdHlwZSBzeW1ib2wuCisgKi8KKysg
KEpTVmFsdWUgKil2YWx1ZVdpdGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246KE5TU3RyaW5nICop
ZGVzY3JpcHRpb24gaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0IEpTQ19BUElfQVZBSUxB
QkxFKG1hY29zeChKU0NfTUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpOworCiAvKiEKIEBtZXRo
b2Rncm91cCBDb252ZXJ0aW5nIHRvIE9iamVjdGl2ZS1DIFR5cGVzCiBAZGlzY3Vzc2lvbiBXaGVu
IGNvbnZlcnRpbmcgYmV0d2VlbiBKYXZhU2NyaXB0IHZhbHVlcyBhbmQgT2JqZWN0aXZlLUMgb2Jq
ZWN0cyBhIGNvcHkgaXMKQEAgLTMwNSw0MyArMzE0LDUyIEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgx
MF85LCA3XzApCiAvKiEKIEBtZXRob2Rncm91cCBBY2Nlc3NpbmcgUHJvcGVydGllcwogKi8KKwor
I2lmICEoKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IEpTQ19NQUNfVkVSU0lPTl9UQkEpIHx8IChkZWZp
bmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA8IEpTQ19JT1NfVkVSU0lPTl9UQkEpKQorCiAvKiEKIEBtZXRob2QK
IEBhYnN0cmFjdCBBY2Nlc3MgYSBwcm9wZXJ0eSBvZiBhIEpTVmFsdWUuCiBAcmVzdWx0IFRoZSBK
U1ZhbHVlIGZvciB0aGUgcmVxdWVzdGVkIHByb3BlcnR5IG9yIHRoZSBKU1ZhbHVlIDxjb2RlPnVu
ZGVmaW5lZDwvY29kZT4gCiAgaWYgdGhlIHByb3BlcnR5IGRvZXMgbm90IGV4aXN0LgorQGRpc2N1
c3Npb24gQ29ycmVzcG9uZHMgdG8gdGhlIEphdmFTY3JpcHQgb3BlcmF0aW9uIDxjb2RlPm9iamVj
dFtwcm9wZXJ0eV08L2NvZGU+LiBQYXNzIGFuIE5TU3RyaW5nICogdG8gYWNjZXNzIGEgbmFtZWQg
cHJvcGVydHkuIE90aGVyIHZhbGlkIHByb3BlcnRpZXMgaW5jbHVkZSBzeW1ib2xzLCBudW1iZXJz
LCBhbmQgc3RyaW5naWZpYWJsZSBvYmplY3RzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9TIDExIGFu
ZCBiZWxvdywgJ3Byb3BlcnR5JyB3YXMgYW4gTlNTdHJpbmcgKi4KICovCi0tIChKU1ZhbHVlICop
dmFsdWVGb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKEpTVmFsdWUgKil2YWx1
ZUZvclByb3BlcnR5OihpZClwcm9wZXJ0eTsKIAogLyohCiBAbWV0aG9kCiBAYWJzdHJhY3QgU2V0
IGEgcHJvcGVydHkgb24gYSBKU1ZhbHVlLgorQGRpc2N1c3Npb24gQ29ycmVzcG9uZHMgdG8gdGhl
IEphdmFTY3JpcHQgb3BlcmF0aW9uIDxjb2RlPm9iamVjdFtwcm9wZXJ0eV0gPSB2YWx1ZTwvY29k
ZT4uIFBhc3MgYW4gTlNTdHJpbmcgKiB0byBhY2Nlc3MgYSBuYW1lZCBwcm9wZXJ0eS4gT3RoZXIg
dmFsaWQgcHJvcGVydGllcyBpbmNsdWRlIHN5bWJvbHMsIG51bWJlcnMsIGFuZCBzdHJpbmdpZmlh
YmxlIG9iamVjdHMuIEluIG1hY09TIDEwLjEzIGFuZCBpT1MgMTEgYW5kIGJlbG93LCAncHJvcGVy
dHknIHdhcyBhbiBOU1N0cmluZyAqLgogKi8KLS0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZv
clByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLSAodm9pZClzZXRWYWx1ZTooaWQpdmFs
dWUgZm9yUHJvcGVydHk6KGlkKXByb3BlcnR5OwogCiAvKiEKIEBtZXRob2QKIEBhYnN0cmFjdCBE
ZWxldGUgYSBwcm9wZXJ0eSBmcm9tIGEgSlNWYWx1ZS4KIEByZXN1bHQgWUVTIGlmIGRlbGV0aW9u
IGlzIHN1Y2Nlc3NmdWwsIE5PIG90aGVyd2lzZS4KK0BkaXNjdXNzaW9uIENvcnJlc3BvbmRzIHRv
IHRoZSBKYXZhU2NyaXB0IG9wZXJhdGlvbiA8Y29kZT5kZWxldGUgb2JqZWN0W3Byb3BlcnR5XTwv
Y29kZT4uIFBhc3MgYW4gTlNTdHJpbmcgKiB0byBhY2Nlc3MgYSBuYW1lZCBwcm9wZXJ0eS4gT3Ro
ZXIgdmFsaWQgcHJvcGVydGllcyBpbmNsdWRlIHN5bWJvbHMsIG51bWJlcnMsIGFuZCBzdHJpbmdp
ZmlhYmxlIG9iamVjdHMuIEluIG1hY09TIDEwLjEzIGFuZCBpT1MgMTEgYW5kIGJlbG93LCAncHJv
cGVydHknIHdhcyBhbiBOU1N0cmluZyAqLgogKi8KLS0gKEJPT0wpZGVsZXRlUHJvcGVydHk6KE5T
U3RyaW5nICopcHJvcGVydHk7CistIChCT09MKWRlbGV0ZVByb3BlcnR5OihpZClwcm9wZXJ0eTsK
IAogLyohCiBAbWV0aG9kCiBAYWJzdHJhY3QgQ2hlY2sgaWYgYSBKU1ZhbHVlIGhhcyBhIHByb3Bl
cnR5LgogQGRpc2N1c3Npb24gVGhpcyBtZXRob2QgaGFzIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIHRo
ZSBKYXZhU2NyaXB0IG9wZXJhdG9yIDxjb2RlPmluPC9jb2RlPi4KIEByZXN1bHQgUmV0dXJucyBZ
RVMgaWYgcHJvcGVydHkgaXMgcHJlc2VudCBvbiB0aGUgdmFsdWUuCitAZGlzY3Vzc2lvbiBDb3Jy
ZXNwb25kcyB0byB0aGUgSmF2YVNjcmlwdCBvcGVyYXRpb24gPGNvZGU+cHJvcGVydHkgaW4gb2Jq
ZWN0PC9jb2RlPi4gUGFzcyBhbiBOU1N0cmluZyAqIHRvIGFjY2VzcyBhIG5hbWVkIHByb3BlcnR5
LiBPdGhlciB2YWxpZCBwcm9wZXJ0aWVzIGluY2x1ZGUgc3ltYm9scywgbnVtYmVycywgYW5kIHN0
cmluZ2lmaWFibGUgb2JqZWN0cy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUyAxMSBhbmQgYmVsb3cs
ICdwcm9wZXJ0eScgd2FzIGFuIE5TU3RyaW5nICouCiAqLwotLSAoQk9PTCloYXNQcm9wZXJ0eToo
TlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKEJPT0wpaGFzUHJvcGVydHk6KGlkKXByb3BlcnR5Owog
CiAvKiEKIEBtZXRob2QKIEBhYnN0cmFjdCBEZWZpbmUgcHJvcGVydGllcyB3aXRoIGN1c3RvbSBk
ZXNjcmlwdG9ycyBvbiBKU1ZhbHVlcy4KIEBkaXNjdXNzaW9uIFRoaXMgbWV0aG9kIG1heSBiZSB1
c2VkIHRvIGNyZWF0ZSBhIGRhdGEgb3IgYWNjZXNzb3IgcHJvcGVydHkgb24gYW4gb2JqZWN0Lgog
IFRoaXMgbWV0aG9kIG9wZXJhdGVzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5IG1ldGhvZCBpbiB0aGUgCi0gSmF2YVNjcmlwdCBsYW5ndWFnZS4KKyBKYXZhU2Ny
aXB0IGxhbmd1YWdlLiBQYXNzIGFuIE5TU3RyaW5nICogdG8gYWNjZXNzIGEgbmFtZWQgcHJvcGVy
dHkuIE90aGVyIHZhbGlkIHByb3BlcnRpZXMgaW5jbHVkZSBzeW1ib2xzLCBudW1iZXJzLCBhbmQg
c3RyaW5naWZpYWJsZSBvYmplY3RzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9TIDExIGFuZCBiZWxv
dywgJ3Byb3BlcnR5JyB3YXMgYW4gTlNTdHJpbmcgKi4KICovCi0tICh2b2lkKWRlZmluZVByb3Bl
cnR5OihOU1N0cmluZyAqKXByb3BlcnR5IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0b3I7CistICh2
b2lkKWRlZmluZVByb3BlcnR5OihpZClwcm9wZXJ0eSBkZXNjcmlwdG9yOihpZClkZXNjcmlwdG9y
OworCisjZW5kaWYgLy8gISgoZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgSlNDX01BQ19WRVJTSU9OX1RC
QSkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgSlNDX0lPU19WRVJTSU9OX1RCQSkpCiAKIC8q
IQogQG1ldGhvZApAQCAtNDAyLDE3ICs0MjAsMjMgQEAgTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzks
IDdfMCkKICovCiBAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGlzT2JqZWN0OwogCisvKiEKK0Bw
cm9wZXJ0eQorQGFic3RyYWN0IENoZWNrIGlmIGEgSlNWYWx1ZSBpcyBhIHN5bWJvbC4KKyovCitA
cHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGlzU3ltYm9sIEpTQ19BUElfQVZBSUxBQkxFKG1hY29z
eChKU0NfTUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpOworCiAvKiEKIEBwcm9wZXJ0eQogQGFi
c3RyYWN0IENoZWNrIGlmIGEgSlNWYWx1ZSBpcyBhbiBhcnJheS4KICovIAotQHByb3BlcnR5IChy
ZWFkb25seSkgQk9PTCBpc0FycmF5IE5TX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsKK0Bwcm9wZXJ0
eSAocmVhZG9ubHkpIEJPT0wgaXNBcnJheSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEp
LCBpb3MoOS4wKSk7CiAKIC8qIQogQHByb3BlcnR5CiBAYWJzdHJhY3QgQ2hlY2sgaWYgYSBKU1Zh
bHVlIGlzIGEgZGF0ZS4KICovIAotQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBpc0RhdGUgTlNf
QVZBSUxBQkxFKDEwXzExLCA5XzApOworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBpc0RhdGUg
SlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOwogCiAvKiEKIEBtZXRo
b2QKQEAgLTU2OSwxMyArNTkzLDE2IEBAIENyZWF0ZSBhIEpTVmFsdWUgZnJvbSBhIENHUmVjdC4K
IEAvdGV4dGJsb2NrCiAKICBBbiBvYmplY3Qga2V5IHBhc3NlZCBhcyBhIHN1YnNjcmlwdCB3aWxs
IGJlIGNvbnZlcnRlZCB0byBhIEphdmFTY3JpcHQgdmFsdWUsCi0gYW5kIHRoZW4gdGhlIHZhbHVl
IGNvbnZlcnRlZCB0byBhIHN0cmluZyB1c2VkIGFzIGEgcHJvcGVydHkgbmFtZS4KKyBhbmQgdGhl
biB0aGUgdmFsdWUgY29udmVydGVkIHRvIGEgc3RyaW5nIHVzZWQgYXMgYSBwcm9wZXJ0eSBuYW1l
LiBJbiBtYWNPUworIDEwLjEzIGFuZCBpT1MgMTEgYW5kIGJlbG93LCB0aGUgPGNvZGU+a2V5PC9j
b2RlPiBhcmd1bWVudCBvZgorIDxjb2RlPnNldE9iamVjdDpvYmplY3QgZm9yS2V5ZWRTdWJzY3Jp
cHQ6a2V5PC9jb2RlPiB3YXMgcmVzdHJpY3RlZCB0byBhbgorIDxjb2RlPk5TU3RyaW5nIDxOU0Nv
cHlpbmc+ICo8L2NvZGU+IGJ1dCB0aGF0IHJlc3RyaWN0aW9uIHdhcyBuZXZlciB1c2VkLgogKi8K
IEBpbnRlcmZhY2UgSlNWYWx1ZSAoU3Vic2NyaXB0U3VwcG9ydCkKIAogLSAoSlNWYWx1ZSAqKW9i
amVjdEZvcktleWVkU3Vic2NyaXB0OihpZClrZXk7CiAtIChKU1ZhbHVlICopb2JqZWN0QXRJbmRl
eGVkU3Vic2NyaXB0OihOU1VJbnRlZ2VyKWluZGV4OwotLSAodm9pZClzZXRPYmplY3Q6KGlkKW9i
amVjdCBmb3JLZXllZFN1YnNjcmlwdDooTlNPYmplY3QgPE5TQ29weWluZz4gKilrZXk7CistICh2
b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGZvcktleWVkU3Vic2NyaXB0OihpZClrZXk7CiAtICh2
b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGF0SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilp
bmRleDsKIAogQGVuZApAQCAtNjYzLDYgKzY5MCw1MyBAQCBKU19FWFBPUlQgZXh0ZXJuIE5TU3Ry
aW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXk7CiB9IC8vIGV4dGVybiAiQyIK
ICNlbmRpZgogCisjaWYgKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IEpTQ19NQUNfVkVSU0lPTl9UQkEp
IHx8IChkZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IEpTQ19JT1NfVkVSU0lPTl9UQkEpCisKKy8vIFRo
ZXNlIGRlY2xhcmF0aW9ucyBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2hlbiB0YXJnZXRpbmcgU0RL
cyBmb3IgbGVnYWN5IE9Tcy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUyAxMSBhbmQgYmVsb3csICdw
cm9wZXJ0eScgd2FzIGFuIE5TU3RyaW5nICouCitAaW50ZXJmYWNlIEpTVmFsdWUgKExlZ2FjeVNE
S1N1cHBvcnQpCisKKy8qIQorQG1ldGhvZAorQGFic3RyYWN0IEFjY2VzcyBhIHByb3BlcnR5IG9m
IGEgSlNWYWx1ZS4KK0ByZXN1bHQgVGhlIEpTVmFsdWUgZm9yIHRoZSByZXF1ZXN0ZWQgcHJvcGVy
dHkgb3IgdGhlIEpTVmFsdWUgPGNvZGU+dW5kZWZpbmVkPC9jb2RlPgoraWYgdGhlIHByb3BlcnR5
IGRvZXMgbm90IGV4aXN0LgorKi8KKy0gKEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihOU1N0
cmluZyAqKXByb3BlcnR5OworCisvKiEKK0BtZXRob2QKK0BhYnN0cmFjdCBTZXQgYSBwcm9wZXJ0
eSBvbiBhIEpTVmFsdWUuCisqLworLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yUHJvcGVy
dHk6KE5TU3RyaW5nICopcHJvcGVydHk7CisKKy8qIQorIEBtZXRob2QKKyBAYWJzdHJhY3QgRGVs
ZXRlIGEgcHJvcGVydHkgZnJvbSBhIEpTVmFsdWUuCisgQHJlc3VsdCBZRVMgaWYgZGVsZXRpb24g
aXMgc3VjY2Vzc2Z1bCwgTk8gb3RoZXJ3aXNlLgorICovCistIChCT09MKWRlbGV0ZVByb3BlcnR5
OihOU1N0cmluZyAqKXByb3BlcnR5OworCisvKiEKKyBAbWV0aG9kCisgQGFic3RyYWN0IENoZWNr
IGlmIGEgSlNWYWx1ZSBoYXMgYSBwcm9wZXJ0eS4KKyBAZGlzY3Vzc2lvbiBUaGlzIG1ldGhvZCBo
YXMgdGhlIHNhbWUgZnVuY3Rpb24gYXMgdGhlIEphdmFTY3JpcHQgb3BlcmF0b3IgPGNvZGU+aW48
L2NvZGU+LgorIEByZXN1bHQgUmV0dXJucyBZRVMgaWYgcHJvcGVydHkgaXMgcHJlc2VudCBvbiB0
aGUgdmFsdWUuCisgKi8KKy0gKEJPT0wpaGFzUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7
CisKKy8qIQorIEBtZXRob2QKKyBAYWJzdHJhY3QgRGVmaW5lIHByb3BlcnRpZXMgd2l0aCBjdXN0
b20gZGVzY3JpcHRvcnMgb24gSlNWYWx1ZXMuCisgQGRpc2N1c3Npb24gVGhpcyBtZXRob2QgbWF5
IGJlIHVzZWQgdG8gY3JlYXRlIGEgZGF0YSBvciBhY2Nlc3NvciBwcm9wZXJ0eSBvbiBhbiBvYmpl
Y3QuCisgVGhpcyBtZXRob2Qgb3BlcmF0ZXMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkgbWV0aG9kIGluIHRoZQorIEphdmFTY3JpcHQgbGFuZ3VhZ2UuCisgKi8K
Ky0gKHZvaWQpZGVmaW5lUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHkgZGVzY3JpcHRvcjoo
aWQpZGVzY3JpcHRvcjsKKworQGVuZAorCisjZW5kaWYKKwogI2VuZGlmCiAKICNlbmRpZiAvLyBK
U1ZhbHVlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5t
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQppbmRleCBhMjY2ODQ0OGZm
YmM3YmY1NTM0Mzc0ZDE3ZGEyYmViNGM3NDE5ODgzLi45Yzk2YzlkNjk1MDM5NDMzNmQxNjg1MjNi
M2M2MzA2N2YzYTM3MWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWUubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCkBAIC0z
OSw2ICszOSw3IEBACiAjaW1wb3J0ICJKU0NKU1ZhbHVlLmgiCiAjaW1wb3J0ICJTdHJvbmcuaCIK
ICNpbXBvcnQgIlN0cm9uZ0lubGluZXMuaCIKKyNpbXBvcnQgPHd0Zi9FeHBlY3RlZC5oPgogI2lt
cG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0IDx3
dGYvTG9jay5oPgpAQCAtMTUxLDYgKzE1MiwxMyBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVy
dHlEZXNjcmlwdG9yU2V0S2V5ID0gQCJzZXQiOwogICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdp
dGhKU1ZhbHVlUmVmOkpTVmFsdWVNYWtlVW5kZWZpbmVkKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4
dFJlZl0pIGluQ29udGV4dDpjb250ZXh0XTsKIH0KIAorKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aE5l
d1N5bWJvbEZyb21EZXNjcmlwdGlvbjooTlNTdHJpbmcgKilkZXNjcmlwdGlvbiBpbkNvbnRleHQ6
KEpTQ29udGV4dCAqKWNvbnRleHQKK3sKKyAgICBKU1N0cmluZ1JlZiBzdHJpbmcgPSBKU1N0cmlu
Z0NyZWF0ZVdpdGhDRlN0cmluZyhyZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihkZXNjcmlw
dGlvbikpOworICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOkpTVmFsdWVN
YWtlU3ltYm9sKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIHN0cmluZykgaW5Db250ZXh0
OmNvbnRleHRdOworfQorCisKIC0gKGlkKXRvT2JqZWN0CiB7CiAgICAgcmV0dXJuIHZhbHVlVG9P
YmplY3QoX2NvbnRleHQsIG1fdmFsdWUpOwpAQCAtMjM0LDcyICsyNDIsMTAwIEBAIE5TU3RyaW5n
ICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXkgPSBAInNldCI7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KE5TU3RyaW5nICop
cHJvcGVydHlOYW1lCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHQsIHR5cGVuYW1lIE5TU3RyaW5n
RnVuY3Rpb24sIHR5cGVuYW1lIEpTVmFsdWVGdW5jdGlvbiwgdHlwZW5hbWUuLi4gVHlwZXM+Citp
bmxpbmUgRXhwZWN0ZWQ8UmVzdWx0LCBKU1ZhbHVlUmVmPiBwZXJmb3JtUHJvcGVydHlPcGVyYXRp
b24oTlNTdHJpbmdGdW5jdGlvbiBzdHJpbmdGdW5jdGlvbiwgSlNWYWx1ZUZ1bmN0aW9uIGpzRnVu
Y3Rpb24sIEpTVmFsdWUqIHZhbHVlLCBpZCBwcm9wZXJ0eUtleSwgVHlwZXMuLi4gYXJndW1lbnRz
KQogewotICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBKU09iamVjdFJlZiBvYmpl
Y3QgPSBKU1ZhbHVlVG9PYmplY3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFs
dWUsICZleGNlcHRpb24pOwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbX2Nv
bnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07Ci0KLSAgICBKU1N0cmlu
Z1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5n
UmVmKXByb3BlcnR5TmFtZSk7Ci0gICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU09iamVjdEdldFBy
b3BlcnR5KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIG5hbWUsICZleGNl
cHRpb24pOwotICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKKyAgICBKU0NvbnRleHQqIGNvbnRl
eHQgPSBbdmFsdWUgY29udGV4dF07CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRy
OworICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChbY29udGV4dCBKU0ds
b2JhbENvbnRleHRSZWZdLCBbdmFsdWUgSlNWYWx1ZVJlZl0sICZleGNlcHRpb24pOwogICAgIGlm
IChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbX2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhj
ZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgICAgIHJldHVybiBVbmV4cGVjdGVkPEpTVmFsdWVSZWY+
KGV4Y2VwdGlvbik7CisKKyAgICBSZXN1bHQgcmVzdWx0OworICAgIC8vIElmIGl0J3MgYSBOU1N0
cmluZyBhbHJlYWR5LCByZWR1Y2UgaW5kaXJlY3Rpb24gYW5kIGp1c3QgcGFzcyB0aGUgTlNTdHJp
bmcuCisgICAgaWYgKFtwcm9wZXJ0eUtleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11d
KSB7CisgICAgICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmlu
ZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcHJvcGVydHlLZXkpOworICAgICAgICByZXN1bHQgPSBz
dHJpbmdGdW5jdGlvbihbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIG5hbWUs
IGFyZ3VtZW50cy4uLiwgJmV4Y2VwdGlvbik7CisgICAgICAgIEpTU3RyaW5nUmVsZWFzZShuYW1l
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0ID0ganNGdW5jdGlvbihbY29udGV4dCBKU0ds
b2JhbENvbnRleHRSZWZdLCBvYmplY3QsIFtbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6cHJvcGVy
dHlLZXkgaW5Db250ZXh0OmNvbnRleHRdIEpTVmFsdWVSZWZdLCBhcmd1bWVudHMuLi4sICZleGNl
cHRpb24pOworICAgIHJldHVybiBFeHBlY3RlZDxSZXN1bHQsIEpTVmFsdWVSZWY+KHJlc3VsdCk7
Cit9CisKKyNpZiAoZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAoZGVmaW5lZChfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPCAxMTAwMDApCistIChKU1ZhbHVlICopdmFsdWVGb3JQcm9wZXJ0eTooTlNTdHJp
bmcgKilrZXkKKyNlbHNlCistIChKU1ZhbHVlICopdmFsdWVGb3JQcm9wZXJ0eTooaWQpa2V5Cisj
ZW5kaWYKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbjxKU1Zh
bHVlUmVmPihKU09iamVjdEdldFByb3BlcnR5LCBKU09iamVjdEdldFByb3BlcnR5S2V5LCBzZWxm
LCBrZXkpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gW19jb250ZXh0IHZhbHVl
RnJvbU5vdGlmeUV4Y2VwdGlvbjpyZXN1bHQuZXJyb3IoKV07CiAKLSAgICByZXR1cm4gW0pTVmFs
dWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpyZXN1bHQgaW5Db250ZXh0Ol9jb250ZXh0XTsKKyAgICBy
ZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpyZXN1bHQudmFsdWUoKSBpbkNvbnRl
eHQ6X2NvbnRleHRdOwogfQogCi0tICh2b2lkKXNldFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9wZXJ0
eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKKyNpZiAoZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAx
MzAwKSB8fCAoZGVmaW5lZChfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMTAwMDApCistICh2b2lkKXNldFZhbHVl
OihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXkKKyNlbHNlCistICh2b2lkKXNl
dFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooaWQpa2V5CisjZW5kaWYKIHsKLSAgICBKU1Zh
bHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRv
T2JqZWN0KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlLCAmZXhjZXB0aW9u
KTsKLSAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIFtfY29udGV4dCBub3RpZnlFeGNlcHRp
b246ZXhjZXB0aW9uXTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAvLyBXZSBuZWVkIFVu
aXQgYnVzaW5lc3MgYmVjYXVzZSB2b2lkIGNhbid0IGJlIGFzc2lnbmVkIHRvIGluIHBlcmZvcm1Q
cm9wZXJ0eU9wZXJhdGlvbiBhbmQgSSBkb24ndCB3YW50IHRvIGR1cGxpY2F0ZSB0aGUgY29kZS4u
LgorICAgIHVzaW5nIFVuaXQgPSBzdGQ6OnR1cGxlPD47CisgICAgYXV0byBzdHJpbmdTZXRQcm9w
ZXJ0eSA9IFtdIChhdXRvLi4uIGFyZ3MpIC0+IFVuaXQgeworICAgICAgICBKU09iamVjdFNldFBy
b3BlcnR5KGFyZ3MuLi4pOworICAgICAgICByZXR1cm4geyB9OworICAgIH07CiAKLSAgICBKU1N0
cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3Ry
aW5nUmVmKXByb3BlcnR5TmFtZSk7Ci0gICAgSlNPYmplY3RTZXRQcm9wZXJ0eShbX2NvbnRleHQg
SlNHbG9iYWxDb250ZXh0UmVmXSwgb2JqZWN0LCBuYW1lLCBvYmplY3RUb1ZhbHVlKF9jb250ZXh0
LCB2YWx1ZSksIDAsICZleGNlcHRpb24pOwotICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKLSAg
ICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIFtfY29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhj
ZXB0aW9uXTsKKyAgICBhdXRvIGpzVmFsdWVTZXRQcm9wZXJ0eSA9IFtdIChhdXRvLi4uIGFyZ3Mp
IC0+IFVuaXQgeworICAgICAgICBKU09iamVjdFNldFByb3BlcnR5S2V5KGFyZ3MuLi4pOworICAg
ICAgICByZXR1cm4geyB9OworICAgIH07CisKKyAgICBhdXRvIHJlc3VsdCA9IHBlcmZvcm1Qcm9w
ZXJ0eU9wZXJhdGlvbjxVbml0PihzdHJpbmdTZXRQcm9wZXJ0eSwganNWYWx1ZVNldFByb3BlcnR5
LCBzZWxmLCBrZXksIG9iamVjdFRvVmFsdWUoX2NvbnRleHQsIHZhbHVlKSwga0pTUHJvcGVydHlB
dHRyaWJ1dGVOb25lKTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBbX2NvbnRleHQgbm90
aWZ5RXhjZXB0aW9uOnJlc3VsdC5lcnJvcigpXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0K
IAotLSAoQk9PTClkZWxldGVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKKyNpZiAo
ZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAoZGVmaW5lZChfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAx
MTAwMDApCistIChCT09MKWRlbGV0ZVByb3BlcnR5OihOU1N0cmluZyAqKWtleQorI2Vsc2UKKy0g
KEJPT0wpZGVsZXRlUHJvcGVydHk6KGlkKWtleQorI2VuZGlmCiB7Ci0gICAgSlNWYWx1ZVJlZiBl
eGNlcHRpb24gPSAwOwotICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChb
X2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7Ci0gICAg
aWYgKGV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFtfY29udGV4dCBib29sRnJvbU5vdGlmeUV4
Y2VwdGlvbjpleGNlcHRpb25dOwotCi0gICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3Jl
YXRlV2l0aENGU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwotICAg
IEJPT0wgcmVzdWx0ID0gSlNPYmplY3REZWxldGVQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxD
b250ZXh0UmVmXSwgb2JqZWN0LCBuYW1lLCAmZXhjZXB0aW9uKTsKLSAgICBKU1N0cmluZ1JlbGVh
c2UobmFtZSk7Ci0gICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFtfY29udGV4dCBi
b29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwotCi0gICAgcmV0dXJuIHJlc3VsdDsK
KyAgICBFeHBlY3RlZDxCT09MLCBKU1ZhbHVlUmVmPiByZXN1bHQgPSBwZXJmb3JtUHJvcGVydHlP
cGVyYXRpb248Qk9PTD4oSlNPYmplY3REZWxldGVQcm9wZXJ0eSwgSlNPYmplY3REZWxldGVQcm9w
ZXJ0eUtleSwgc2VsZiwga2V5KTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFtf
Y29udGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpyZXN1bHQuZXJyb3IoKV07CisgICAgcmV0
dXJuIHJlc3VsdC52YWx1ZSgpOwogfQogCi0tIChCT09MKWhhc1Byb3BlcnR5OihOU1N0cmluZyAq
KXByb3BlcnR5TmFtZQorI2lmIChkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDApIHx8IChkZWZp
bmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKKy0gKEJPT0wpaGFzUHJvcGVydHk6KE5TU3RyaW5n
ICopa2V5CisjZWxzZQorLSAoQk9PTCloYXNQcm9wZXJ0eTooaWQpa2V5CisjZW5kaWYKIHsKLSAg
ICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNW
YWx1ZVRvT2JqZWN0KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlLCAmZXhj
ZXB0aW9uKTsKLSAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW19jb250ZXh0IGJv
b2xGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgLy8gVGhlIEMtYXBpIGRvZXNu
J3QgcmV0dXJuIGFuIGV4Y2VwdGlvbiB2YWx1ZSBmb3IgdGhlIHN0cmluZyB2ZXJzaW9uIG9mIGhh
cyBwcm9wZXJ0eS4KKyAgICBhdXRvIHN0cmluZ0hhc1Byb3BlcnR5ID0gW10gKEpTQ29udGV4dFJl
ZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlUmVmKikgLT4gQk9PTCB7CisgICAgICAgIHJldHVybiBKU09iamVjdEhhc1Byb3BlcnR5KGN0
eCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIH07CiAKLSAgICBKU1N0cmluZ1JlZiBuYW1l
ID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXByb3Bl
cnR5TmFtZSk7Ci0gICAgQk9PTCByZXN1bHQgPSBKU09iamVjdEhhc1Byb3BlcnR5KFtfY29udGV4
dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIG5hbWUpOwotICAgIEpTU3RyaW5nUmVsZWFz
ZShuYW1lKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIEV4cGVjdGVkPEJPT0wsIEpTVmFsdWVS
ZWY+IHJlc3VsdCA9IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbjxCT09MPihzdHJpbmdIYXNQcm9w
ZXJ0eSwgSlNPYmplY3RIYXNQcm9wZXJ0eUtleSwgc2VsZiwga2V5KTsKKyAgICBpZiAoIXJlc3Vs
dCkKKyAgICAgICAgcmV0dXJuIFtfY29udGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpyZXN1
bHQuZXJyb3IoKV07CisgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpOwogfQogCi0tICh2b2lkKWRl
ZmluZVByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0
b3IKKyNpZiAoZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAoZGVmaW5lZChfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPCAxMTAwMDApCistICh2b2lkKWRlZmluZVByb3BlcnR5OihOU1N0cmluZyAqKWtleSBk
ZXNjcmlwdG9yOihpZClkZXNjcmlwdG9yCisjZWxzZQorLSAodm9pZClkZWZpbmVQcm9wZXJ0eToo
aWQpa2V5IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0b3IKKyNlbmRpZgogewotICAgIFtbX2NvbnRl
eHQgZ2xvYmFsT2JqZWN0XVtAIk9iamVjdCJdIGludm9rZU1ldGhvZDpAImRlZmluZVByb3BlcnR5
IiB3aXRoQXJndW1lbnRzOkBbIHNlbGYsIHByb3BlcnR5LCBkZXNjcmlwdG9yIF1dOworICAgIFtb
X2NvbnRleHQgZ2xvYmFsT2JqZWN0XVtAIk9iamVjdCJdIGludm9rZU1ldGhvZDpAImRlZmluZVBy
b3BlcnR5IiB3aXRoQXJndW1lbnRzOkBbIHNlbGYsIGtleSwgZGVzY3JpcHRvciBdXTsKIH0KIAog
LSAoSlNWYWx1ZSAqKXZhbHVlQXRJbmRleDooTlNVSW50ZWdlcilpbmRleApAQCAtMzcyLDYgKzQw
OCwxMSBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yU2V0S2V5ID0gQCJz
ZXQiOwogICAgIHJldHVybiBKU1ZhbHVlSXNPYmplY3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4
dFJlZl0sIG1fdmFsdWUpOwogfQogCistIChCT09MKWlzU3ltYm9sCit7CisgICAgcmV0dXJuIEpT
VmFsdWVJc1N5bWJvbChbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSk7Cit9
CisKIC0gKEJPT0wpaXNBcnJheQogewogICAgIHJldHVybiBKU1ZhbHVlSXNBcnJheShbX2NvbnRl
eHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSk7CkBAIC01NTQsMTMgKzU5NSw3IEBAIE5T
U3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXkgPSBAInNldCI7CiAKIC0g
KEpTVmFsdWUgKilvYmplY3RGb3JLZXllZFN1YnNjcmlwdDooaWQpa2V5CiB7Ci0gICAgaWYgKCFb
a2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAga2V5ID0gW1tK
U1ZhbHVlIHZhbHVlV2l0aE9iamVjdDprZXkgaW5Db250ZXh0Ol9jb250ZXh0XSB0b1N0cmluZ107
Ci0gICAgICAgIGlmICgha2V5KQotICAgICAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0
aFVuZGVmaW5lZEluQ29udGV4dDpfY29udGV4dF07Ci0gICAgfQotCi0gICAgcmV0dXJuIFtzZWxm
IHZhbHVlRm9yUHJvcGVydHk6KE5TU3RyaW5nICopa2V5XTsKKyAgICByZXR1cm4gW3NlbGYgdmFs
dWVGb3JQcm9wZXJ0eTprZXldOwogfQogCiAtIChKU1ZhbHVlICopb2JqZWN0QXRJbmRleGVkU3Vi
c2NyaXB0OihOU1VJbnRlZ2VyKWluZGV4CkBAIC01NjgsMTUgKzYwMyw5IEBAIE5TU3RyaW5nICog
Y29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXkgPSBAInNldCI7CiAgICAgcmV0dXJuIFtz
ZWxmIHZhbHVlQXRJbmRleDppbmRleF07CiB9CiAKLS0gKHZvaWQpc2V0T2JqZWN0OihpZClvYmpl
Y3QgZm9yS2V5ZWRTdWJzY3JpcHQ6KE5TT2JqZWN0IDxOU0NvcHlpbmc+ICopa2V5CistICh2b2lk
KXNldE9iamVjdDooaWQpb2JqZWN0IGZvcktleWVkU3Vic2NyaXB0OihpZClrZXkKIHsKLSAgICBp
ZiAoIVtrZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgewotICAgICAgICBrZXkg
PSBbW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OmtleSBpbkNvbnRleHQ6X2NvbnRleHRdIHRvU3Ry
aW5nXTsKLSAgICAgICAgaWYgKCFrZXkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgW3NlbGYgc2V0VmFsdWU6b2JqZWN0IGZvclByb3BlcnR5OihOU1N0cmluZyAqKWtleV07Cisg
ICAgW3NlbGYgc2V0VmFsdWU6b2JqZWN0IGZvclByb3BlcnR5OmtleV07CiB9CiAKIC0gKHZvaWQp
c2V0T2JqZWN0OihpZClvYmplY3QgYXRJbmRleGVkU3Vic2NyaXB0OihOU1VJbnRlZ2VyKWluZGV4
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAppbmRleCA3OTU1OWJlOTA3
OTg3MTUxYjJmYTdkOTMxMjY0MjQ1MTg4ODEwZmRjLi5kYWNhMGUxYjQ5ZGQ4ZDUxMmU1NjVkYzEz
Y2NjYWYyYjk3ZjIwOGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWVSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5j
cHAKQEAgLTg2LDYgKzg2LDggQEAgc3RhdGljIGJvb2wgZXZlcm5vdGVIYWNrTmVlZGVkKCkKICAg
ICAgICAgcmV0dXJuIGtKU1R5cGVOdW1iZXI7CiAgICAgaWYgKGpzVmFsdWUuaXNTdHJpbmcoKSkK
ICAgICAgICAgcmV0dXJuIGtKU1R5cGVTdHJpbmc7CisgICAgaWYgKGpzVmFsdWUuaXNTeW1ib2wo
KSkKKyAgICAgICAgcmV0dXJuIGtKU1R5cGVTeW1ib2w7CiAgICAgQVNTRVJUKGpzVmFsdWUuaXNP
YmplY3QoKSk7CiAgICAgcmV0dXJuIGtKU1R5cGVPYmplY3Q7CiB9CkBAIC0xNjIsNiArMTY0LDE4
IEBAIGJvb2wgSlNWYWx1ZUlzT2JqZWN0KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFs
dWUpCiAgICAgcmV0dXJuIHRvSlMoZXhlYywgdmFsdWUpLmlzT2JqZWN0KCk7CiB9CiAKK2Jvb2wg
SlNWYWx1ZUlzU3ltYm9sKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpCit7Cisg
ICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAg
IEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisKKyAgICByZXR1cm4gdG9KUyhleGVjLCB2YWx1
ZSkuaXNTeW1ib2woKTsKK30KKwogYm9vbCBKU1ZhbHVlSXNBcnJheShKU0NvbnRleHRSZWYgY3R4
LCBKU1ZhbHVlUmVmIHZhbHVlKQogewogICAgIGlmICghY3R4KSB7CkBAIC0zMjAsNiArMzM0LDIy
IEBAIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VOdW1iZXIoSlNDb250ZXh0UmVmIGN0eCwgZG91Ymxl
IHZhbHVlKQogICAgIHJldHVybiB0b1JlZihleGVjLCBqc051bWJlcihwdXJpZnlOYU4odmFsdWUp
KSk7CiB9CiAKK0pTVmFsdWVSZWYgSlNWYWx1ZU1ha2VTeW1ib2woSlNDb250ZXh0UmVmIGN0eCwg
SlNTdHJpbmdSZWYgZGVzY3JpcHRpb24pCit7CisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBF
eGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVj
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRShleGVjLT52bSgpKTsKKwor
ICAgIEpTU3RyaW5nKiBqc0Rlc2NyaXB0aW9uID0ganNTdHJpbmcoZXhlYywgZGVzY3JpcHRpb24g
PyBkZXNjcmlwdGlvbi0+c3RyaW5nKCkgOiBTdHJpbmcoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gdG9SZWYoZXhlYywgU3ltYm9sOjpj
cmVhdGUoZXhlYywganNEZXNjcmlwdGlvbikpOworfQorCiBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtl
U3RyaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHN0cmluZykKIHsKICAgICBpZiAo
IWN0eCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVm
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuaAppbmRleCA5ODE1ZGU3
ODNjMGFlZTA3M2UzYTQ0OGJkMGM3Y2FkZDRhOTUyYzA2Li4xMmYyZGNjMDQ0ZTZlOGFlMzBhYzIw
MzFkMGIyZGE1YjM3M2FkYjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVmFsdWVSZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYu
aApAQCAtNDIsNiArNDIsNyBAQAogQGNvbnN0YW50ICAgICBrSlNUeXBlTnVtYmVyICAgICBBIHBy
aW1pdGl2ZSBudW1iZXIgdmFsdWUuCiBAY29uc3RhbnQgICAgIGtKU1R5cGVTdHJpbmcgICAgIEEg
cHJpbWl0aXZlIHN0cmluZyB2YWx1ZS4KIEBjb25zdGFudCAgICAga0pTVHlwZU9iamVjdCAgICAg
QW4gb2JqZWN0IHZhbHVlIChtZWFuaW5nIHRoYXQgdGhpcyBKU1ZhbHVlUmVmIGlzIGEgSlNPYmpl
Y3RSZWYpLgorQGNvbnN0YW50ICAgICBrSlNUeXBlU3ltYm9sICAgICBBIHByaW1pdGl2ZSBzeW1i
b2wgdmFsdWUuCiAqLwogdHlwZWRlZiBlbnVtIHsKICAgICBrSlNUeXBlVW5kZWZpbmVkLApAQCAt
NDksNyArNTAsOCBAQCB0eXBlZGVmIGVudW0gewogICAgIGtKU1R5cGVCb29sZWFuLAogICAgIGtK
U1R5cGVOdW1iZXIsCiAgICAga0pTVHlwZVN0cmluZywKLSAgICBrSlNUeXBlT2JqZWN0CisgICAg
a0pTVHlwZU9iamVjdCwKKyAgICBrSlNUeXBlU3ltYm9sIEpTQ19BUElfQVZBSUxBQkxFKG1hY29z
eChKU0NfTUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpCiB9IEpTVHlwZTsKIAogLyohCkBAIC04
MCw3ICs4Miw3IEBAIHR5cGVkZWYgZW51bSB7CiAgICAga0pTVHlwZWRBcnJheVR5cGVGbG9hdDY0
QXJyYXksCiAgICAga0pTVHlwZWRBcnJheVR5cGVBcnJheUJ1ZmZlciwKICAgICBrSlNUeXBlZEFy
cmF5VHlwZU5vbmUsCi19IEpTVHlwZWRBcnJheVR5cGUgQ0ZfRU5VTV9BVkFJTEFCTEUoMTBfMTIs
IDEwXzApOworfSBKU1R5cGVkQXJyYXlUeXBlIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4x
MiksIGlvcygxMC4wKSk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CkBAIC0x
NDksNiArMTUxLDE2IEBAIEpTX0VYUE9SVCBib29sIEpTVmFsdWVJc1N0cmluZyhKU0NvbnRleHRS
ZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKTsKICovCiBKU19FWFBPUlQgYm9vbCBKU1ZhbHVlSXNP
YmplY3QoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSk7CiAKKy8qIQorQGZ1bmN0
aW9uCitAYWJzdHJhY3QgICAgICAgVGVzdHMgd2hldGhlciBhIEphdmFTY3JpcHQgdmFsdWUncyB0
eXBlIGlzIHRoZSBzeW1ib2wgdHlwZS4KK0BwYXJhbSBjdHggICAgICBUaGUgZXhlY3V0aW9uIGNv
bnRleHQgdG8gdXNlLgorQHBhcmFtIHZhbHVlICAgIFRoZSBKU1ZhbHVlIHRvIHRlc3QuCitAcmVz
dWx0ICAgICAgICAgdHJ1ZSBpZiB2YWx1ZSdzIHR5cGUgaXMgdGhlIHN5bWJvbCB0eXBlLCBvdGhl
cndpc2UgZmFsc2UuCisqLworSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzU3ltYm9sKEpTQ29udGV4
dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeChKU0Nf
TUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpOworCisKIC8qIQogQGZ1bmN0aW9uCiBAYWJzdHJh
Y3QgVGVzdHMgd2hldGhlciBhIEphdmFTY3JpcHQgdmFsdWUgaXMgYW4gb2JqZWN0IHdpdGggYSBn
aXZlbiBjbGFzcyBpbiBpdHMgY2xhc3MgY2hhaW4uCkBAIC0xNjYsNyArMTc4LDcgQEAgSlNfRVhQ
T1JUIGJvb2wgSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVl
UmVmIHZhbHVlLCBKU0NsYXMKIEBwYXJhbSB2YWx1ZSAgICBUaGUgSlNWYWx1ZSB0byB0ZXN0Lgog
QHJlc3VsdCAgICAgICAgIHRydWUgaWYgdmFsdWUgaXMgYW4gYXJyYXksIG90aGVyd2lzZSBmYWxz
ZS4KICovCi1KU19FWFBPUlQgYm9vbCBKU1ZhbHVlSXNBcnJheShKU0NvbnRleHRSZWYgY3R4LCBK
U1ZhbHVlUmVmIHZhbHVlKSBDRl9BVkFJTEFCTEUoMTBfMTEsIDlfMCk7CitKU19FWFBPUlQgYm9v
bCBKU1ZhbHVlSXNBcnJheShKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CiAKIC8qIQogQGZ1bmN0aW9u
CkBAIC0xNzUsNyArMTg3LDcgQEAgSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzQXJyYXkoSlNDb250
ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkgQ0ZfQVZBSUxBQkxFKDEKIEBwYXJhbSB2YWx1
ZSAgICBUaGUgSlNWYWx1ZSB0byB0ZXN0LgogQHJlc3VsdCAgICAgICAgIHRydWUgaWYgdmFsdWUg
aXMgYSBkYXRlLCBvdGhlcndpc2UgZmFsc2UuCiAqLwotSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlz
RGF0ZShKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKSBDRl9BVkFJTEFCTEUoMTBf
MTEsIDlfMCk7CitKU19FWFBPUlQgYm9vbCBKU1ZhbHVlSXNEYXRlKEpTQ29udGV4dFJlZiBjdHgs
IEpTVmFsdWVSZWYgdmFsdWUpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSksIGlvcyg5
LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTE4NSw3ICsxOTcsNyBAQCBKU19FWFBPUlQgYm9v
bCBKU1ZhbHVlSXNEYXRlKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpIENGX0FW
QUlMQUJMRSgxMAogQHBhcmFtIGV4Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVm
IGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91
IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KIEByZXN1bHQgICAgICAgICAgICAg
QSB2YWx1ZSBvZiB0eXBlIEpTVHlwZWRBcnJheVR5cGUgdGhhdCBpZGVudGlmaWVzIHZhbHVlJ3Mg
VHlwZWQgQXJyYXkgdHlwZSwgb3Iga0pTVHlwZWRBcnJheVR5cGVOb25lIGlmIHRoZSB2YWx1ZSBp
cyBub3QgYSBUeXBlZCBBcnJheSBvYmplY3QuCiAgKi8KLUpTX0VYUE9SVCBKU1R5cGVkQXJyYXlU
eXBlIEpTVmFsdWVHZXRUeXBlZEFycmF5VHlwZShKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVm
IHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7
CitKU19FWFBPUlQgSlNUeXBlZEFycmF5VHlwZSBKU1ZhbHVlR2V0VHlwZWRBcnJheVR5cGUoSlND
b250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBK
U0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAvKiBDb21wYXJp
bmcgdmFsdWVzICovCiAKQEAgLTI1Nyw2ICsyNjksMTUgQEAgSlNfRVhQT1JUIEpTVmFsdWVSZWYg
SlNWYWx1ZU1ha2VCb29sZWFuKEpTQ29udGV4dFJlZiBjdHgsIGJvb2wgYm9vbGVhbik7CiAqLwog
SlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VOdW1iZXIoSlNDb250ZXh0UmVmIGN0eCwg
ZG91YmxlIG51bWJlcik7CiAKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgICAgICAgICAgICBD
cmVhdGVzIGEgSmF2YVNjcmlwdCB2YWx1ZSBvZiB0aGUgc3ltYm9sIHR5cGUuCitAcGFyYW0gY3R4
ICAgICAgICAgICBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgorQHBhcmFtIGRlc2NyaXB0
aW9uICAgQSBkZXNjcmlwdGlvbiBvZiB0aGUgbmV3bHkgY3JlYXRlZCBzeW1ib2wgdmFsdWUuCitA
cmVzdWx0ICAgICAgICAgICAgICBBIHVuaXF1ZSBKU1ZhbHVlIG9mIHRoZSBzeW1ib2wgdHlwZSwg
d2hvc2UgZGVzY3JpcHRpb24gbWF0Y2hlcyB0aGUgb25lIHByb3ZpZGVkLgorKi8KK0pTX0VYUE9S
VCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlU3ltYm9sKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5n
UmVmIGRlc2NyaXB0aW9uKTsKKwogLyohCiBAZnVuY3Rpb24KIEBhYnN0cmFjdCAgICAgICBDcmVh
dGVzIGEgSmF2YVNjcmlwdCB2YWx1ZSBvZiB0aGUgc3RyaW5nIHR5cGUuCkBAIC0yNzYsNyArMjk3
LDcgQEAgSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VTdHJpbmcoSlNDb250ZXh0UmVm
IGN0eCwgSlNTdHJpbmdSZWYgc3RyaW5nKTsKICBAcGFyYW0gc3RyaW5nICAgVGhlIEpTU3RyaW5n
IGNvbnRhaW5pbmcgdGhlIEpTT04gc3RyaW5nIHRvIGJlIHBhcnNlZC4KICBAcmVzdWx0ICAgICAg
ICAgQSBKU1ZhbHVlIGNvbnRhaW5pbmcgdGhlIHBhcnNlZCB2YWx1ZSwgb3IgTlVMTCBpZiB0aGUg
aW5wdXQgaXMgaW52YWxpZC4KICAqLwotSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VG
cm9tSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBzdHJpbmcpIENGX0FW
QUlMQUJMRSgxMF83LCA3XzApOworSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VGcm9t
SlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBzdHJpbmcpIEpTQ19BUElf
QVZBSUxBQkxFKG1hY29zeCgxMC43KSwgaW9zKDcuMCkpOwogCiAvKiEKICBAZnVuY3Rpb24KQEAg
LTI4Nyw3ICszMDgsNyBAQCBKU19FWFBPUlQgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZUZyb21KU09O
U3RyaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHN0cgogIEBwYXJhbSBleGNlcHRp
b24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRp
b24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNl
cHRpb24uCiAgQHJlc3VsdCAgICAgICAgIEEgSlNTdHJpbmcgd2l0aCB0aGUgcmVzdWx0IG9mIHNl
cmlhbGl6YXRpb24sIG9yIE5VTEwgaWYgYW4gZXhjZXB0aW9uIGlzIHRocm93bi4KICAqLwotSlNf
RVhQT1JUIEpTU3RyaW5nUmVmIEpTVmFsdWVDcmVhdGVKU09OU3RyaW5nKEpTQ29udGV4dFJlZiBj
dHgsIEpTVmFsdWVSZWYgdmFsdWUsIHVuc2lnbmVkIGluZGVudCwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKSBDRl9BVkFJTEFCTEUoMTBfNywgN18wKTsKK0pTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU1Zh
bHVlQ3JlYXRlSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlLCB1
bnNpZ25lZCBpbmRlbnQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KDEwLjcpLCBpb3MoNy4wKSk7CiAKIC8qIENvbnZlcnRpbmcgdG8gcHJpbWl0aXZlIHZh
bHVlcyAqLwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL1dlYktpdEF2
YWlsYWJpbGl0eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9XZWJLaXRBdmFpbGFiaWxp
dHkuaAppbmRleCA4MjI3NTIwM2RjOTgwMTgzMzFhOTFiYjk1YjlkNmRiMTZlNTlmOWFhLi4wZjZh
ZmI2YjFkYmQ2MTk4MWRlZGVkMGExZTViMjRjOGZkY2I1M2YyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL1dlYktpdEF2YWlsYWJpbGl0eS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvV2ViS2l0QXZhaWxhYmlsaXR5LmgKQEAgLTY5LDE1ICs2OSwxMiBAQAog
I2VuZGlmIC8qICFUQVJHRVRfT1NfSVBIT05FICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPCAxMDExMDAgKi8KIAogI2lmIGRlZmluZWQoQlVJTERJTkdfR1RLX18pCi0jdW5kZWYg
Q0ZfQVZBSUxBQkxFCi0jZGVmaW5lIENGX0FWQUlMQUJMRShfbWFjLCBfaW9zKQotI3VuZGVmIENG
X0VOVU1fQVZBSUxBQkxFCi0jZGVmaW5lIENGX0VOVU1fQVZBSUxBQkxFKF9tYWMsIF9pb3MpCisj
dW5kZWYgSlNDX0FQSV9BVkFJTEFCTEUKKyNkZWZpbmUgSlNDX0FQSV9BVkFJTEFCTEUoLi4uKQog
I2VuZGlmCiAKICNlbHNlCi0jZGVmaW5lIENGX0FWQUlMQUJMRShfbWFjLCBfaW9zKQotI2RlZmlu
ZSBDRl9FTlVNX0FWQUlMQUJMRShfbWFjLCBfaW9zKQorI2RlZmluZSBKU0NfQVBJX0FWQUlMQUJM
RSguLi4pCiAjZW5kaWYKIAogI2VuZGlmIC8qIF9fV2ViS2l0QXZhaWxhYmlsaXR5X18gKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNp
ZGVCbG9ja0dldHRlclRlc3QubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0N1
cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lm1tCmluZGV4IDUzMTg4ZmJhODhmOTU0Mjdj
OGFlOTMzOWFhYzg4ZDBjNjhhMTdlYjEuLmJkN2U4YTY4NjA3ZTVmOGRkNzhkOTQ2YmRkYTc0YTYx
ZDI1ZjdlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3Vy
cmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS90ZXN0cy9DdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5tbQpAQCAtMjMs
NiArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVy
VGVzdC5oIgogCiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0N1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVz
dC5jCmluZGV4IGFjNTQ3MWE2NzQxYmZmOTNjNzAwYmYzYjNhYWM2ZWQzODc0OWYwYmYuLjlmZmUy
MzNmNGI3OTZmNWEwYjk1YjM3NGE0ODNiMDE0ZWQ1YmRkOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmMKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9DdXN0b21HbG9iYWxPYmplY3RDbGFz
c1Rlc3QuYwpAQCAtMjMsNiArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmgiCiAK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZlByaXZhdGUuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRGF0ZVRlc3RzLm1tIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9EYXRlVGVzdHMubW0KaW5kZXggMmJkYTNhZGE2YjE1
OGUwMTA4YWVjNWY0MmU3NjUzOTczMGVjMmVkOS4uNjY1MjE3N2RlNDE3YjEyZWU5NGRlODgzYjhm
YjBiZDcwOWRkNjcyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy9EYXRlVGVzdHMubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9EYXRl
VGVzdHMubW0KQEAgLTIzLDYgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCisjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkRhdGVUZXN0cy5oIgog
I2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNFeHBvcnRUZXN0cy5tbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvSlNFeHBvcnRUZXN0cy5tbQppbmRleCAxY2VjOTM5NzljNDE2ZjRj
MGYwNDkwNWVlNzQ3NmU3ODY0ZDg0MjUyLi5kZmRjOTVmNDdiYzc3NWIwOGIzNjY3M2QwYmJiZmU2
YmNlMzQxYjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pT
RXhwb3J0VGVzdHMubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU0V4
cG9ydFRlc3RzLm1tCkBAIC0yMyw2ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAorI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJKU0V4cG9ydFRl
c3RzLmgiCiAKICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU05vZGUuYyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvSlNOb2RlLmMKaW5kZXggZDBhMGRjM2VjNzIzNzI1N2ZhMTgwZDA1MTRmNzRjNmFk
MmU0YjViNy4uYmMwMDQwYWU2YmE0MDk4NTM4MzhjYWVhZDZhMjM4NGVjOTk5MDA0OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU05vZGUuYworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZS5jCkBAIC0yMyw3ICsyMyw3IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVk
ZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJKU05vZGVMaXN0
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZUxp
c3QuYyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNOb2RlTGlzdC5jCmluZGV4
IGYwMzdlMDk0YTA5ZTFhMjI2MDQ0ZWVkMWYyM2QwYTUxODYxYTNmNGIuLjk5YTMyOTUxOGU2YTlh
MWNmYjEyNjc2NDczOWEwYjY5Y2ZhNWQ0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvSlNOb2RlTGlzdC5jCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvSlNOb2RlTGlzdC5jCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
ICAqLwogCi0jaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSAiY29uZmlnLmgiCiAK
ICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJKU05vZGVMaXN0LmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL05vZGUuYyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvTm9kZS5jCmluZGV4IGRiNjg3ZTk1MmYxYTlkOGMxMzRiOTA2Nzdk
MjlhNjQwNmQ4ZGIxYTIuLjhmN2QwNmIyYWE0YWRlMjY5ZDYxZWZjNjFjMDE4NGNjYzMxOTVhMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9kZS5jCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9kZS5jCkBAIC0yMyw3ICsyMyw5IEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Tm9kZS5oIgorCiAjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9kZUxpc3QuYyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9kZUxpc3QuYwppbmRleCA2OWY0Y2Q1YzQ4
NzMxMmJkNjM5OTYzNGZiMDY4NGExMjI2NjRkYzE4Li4yMmQzODdjMGQ0MjI2ZmJhZDExOTdjNjQ4
MzFjZDU3YWYzMWFmZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL05vZGVMaXN0LmMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Ob2Rl
TGlzdC5jCkBAIC0yMyw2ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCisjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKIAogI2luY2x1ZGUgPHN0ZGxpYi5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9taW5pZG9tLmMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL21pbmlkb20uYwppbmRleCAwMmI0MWE5
YzdmOWRhMTEzYjAwM2Q0ZjkxOWE0MjA4ZDM4OWI3OGJkLi40MWYxOGNkZjcyOTA0MzY5MGNmZTc3
M2JhNDBkOGI1YjQ0Y2E3MDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL21pbmlkb20uYworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL21p
bmlkb20uYwpAQCAtMjQsNyArMjQsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2luY2x1
ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiSlND
b250ZXh0UmVmLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvdGVzdGFwaS5jCmluZGV4IDdiZWNkZmUwNDExNWJmOTQ4OWVmODQxOTdjMTY3MWM1
YjgzYmE0ZTIuLjg2ZDFjMjVjMjdlOTUyZDYxYWI5ZTQxYmUxNDU3NDEwZmJjNDhmNGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCkBAIC0yMyw3ICsyMyw3IEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNs
dWRlICJjb25maWcuaCIKIAogI2lmIFVTRShDRikKICNpbmNsdWRlICJKYXZhU2NyaXB0Q29yZS5o
IgpAQCAtNjYsNiArNjYsOCBAQAogdm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSSh2b2lkKTsKICNlbmRp
ZgogCitpbnQgdGVzdENBUElWaWFDcHAodm9pZCk7CisKIGJvb2wgYXNzZXJ0VHJ1ZShib29sIHZh
bHVlLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKIAogc3RhdGljIEpTR2xvYmFsQ29udGV4dFJlZiBj
b250ZXh0OwpAQCAtMTM2MSw2ICsxMzYzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFy
Z3ZbXSkKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIHRlc3RPYmplY3RpdmVDQVBJKCk7
CiAjZW5kaWYKKyAgICBSRUxFQVNFX0FTU0VSVCghdGVzdENBUElWaWFDcHAoKSk7CiAKICAgICBj
b25zdCBjaGFyICpzY3JpcHRQYXRoID0gInRlc3RhcGkuanMiOwogICAgIGlmIChhcmdjID4gMSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTNjZGI3ZDM3YTE3NTE5Mzg1Y2Q5MTUzMzBiNmU2MDIxODRmZTU5OAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jcHAKQEAgLTAs
MCArMSwzOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRl
ICJBUElDYXN0LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJK
U09iamVjdC5oIgorI2luY2x1ZGUgIkphdmFTY3JpcHRDb3JlLmgiCisKKyNpbmNsdWRlIDx3dGYv
RGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworZXh0ZXJuICJDIiBpbnQgdGVz
dENBUElWaWFDcHAoKTsKKworY2xhc3MgQVBJU3RyaW5nIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShBUElTdHJpbmcpOworcHVibGljOgorCisgICAgQVBJU3RyaW5nKGNvbnN0IGNoYXIqIHN0
cmluZykKKyAgICAgICAgOiBtX3N0cmluZyhKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhz
dHJpbmcpKQorICAgIHsKKyAgICB9CisKKyAgICB+QVBJU3RyaW5nKCkKKyAgICB7CisgICAgICAg
IEpTU3RyaW5nUmVsZWFzZShtX3N0cmluZyk7CisgICAgfQorCisgICAgb3BlcmF0b3IgSlNTdHJp
bmdSZWYoKSB7IHJldHVybiBtX3N0cmluZzsgfQorCitwcml2YXRlOgorICAgIEpTU3RyaW5nUmVm
IG1fc3RyaW5nOworfTsKKworY2xhc3MgQVBJQ29udGV4dCB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoQVBJQ29udGV4dCk7CitwdWJsaWM6CisKKyAgICBBUElDb250ZXh0KCkKKyAgICAgICAg
OiBtX2NvbnRleHQoSlNHbG9iYWxDb250ZXh0Q3JlYXRlKG51bGxwdHIpKQorICAgIHsKKyAgICAg
ICAgQVBJU3RyaW5nIHByaW50KCJwcmludCIpOworICAgICAgICBKU09iamVjdFJlZiBwcmludEZ1
bmN0aW9uID0gSlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2sobV9jb250ZXh0LCBwcmlu
dCwgW10gKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
KSB7CisKKyAgICAgICAgICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7IGkrKykKKyAg
ICAgICAgICAgICAgICBkYXRhTG9nKHRvSlMoZXhlYywgYXJndW1lbnRzW2ldKSk7CisgICAgICAg
ICAgICBkYXRhTG9nTG4oKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjdHgpOworICAgICAgICB9KTsKKworICAgICAgICBKU09iamVjdFNldFByb3BlcnR5KG1fY29u
dGV4dCwgSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KG1fY29udGV4dCksIHByaW50LCBwcmludEZ1
bmN0aW9uLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUsIG51bGxwdHIpOworICAgIH0KKworICAg
IH5BUElDb250ZXh0KCkKKyAgICB7CisgICAgICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2UobV9j
b250ZXh0KTsKKyAgICB9CisKKyAgICBvcGVyYXRvciBKU0dsb2JhbENvbnRleHRSZWYoKSB7IHJl
dHVybiBtX2NvbnRleHQ7IH0KKworcHJpdmF0ZToKKyAgICBKU0dsb2JhbENvbnRleHRSZWYgbV9j
b250ZXh0OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIEFQSVZlY3RvciA6IHBy
b3RlY3RlZCBWZWN0b3I8VD4geworICAgIHVzaW5nIEJhc2UgPSBWZWN0b3I8VD47CitwdWJsaWM6
CisgICAgQVBJVmVjdG9yKEFQSUNvbnRleHQmIGNvbnRleHQpCisgICAgICAgIDogQmFzZSgpCisg
ICAgICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgeworICAgIH0KKworICAgIH5BUElWZWN0
b3IoKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvJiB2YWx1ZSA6ICp0aGlzKQorICAgICAgICAg
ICAgSlNWYWx1ZVVucHJvdGVjdChtX2NvbnRleHQsIHZhbHVlKTsKKyAgICB9CisKKyAgICB1c2lu
ZyBWZWN0b3I8VD46Om9wZXJhdG9yW107CisgICAgdXNpbmcgVmVjdG9yPFQ+OjpzaXplOworICAg
IHVzaW5nIFZlY3RvcjxUPjo6YmVnaW47CisgICAgdXNpbmcgVmVjdG9yPFQ+OjplbmQ7CisgICAg
dXNpbmcgdHlwZW5hbWUgVmVjdG9yPFQ+OjppdGVyYXRvcjsKKworICAgIHZvaWQgYXBwZW5kKFQg
dmFsdWUpCisgICAgeworICAgICAgICBKU1ZhbHVlUHJvdGVjdChtX2NvbnRleHQsIHZhbHVlKTsK
KyAgICAgICAgQmFzZTo6YXBwZW5kKFdURk1vdmUodmFsdWUpKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgQVBJQ29udGV4dCYgbV9jb250ZXh0OworfTsKKworY2xhc3MgVGVzdEFQSSB7CitwdWJs
aWM6CisgICAgaW50IHJ1bigpOworcHJpdmF0ZToKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IFN0cmluZ3M+CisgICAgYm9vbCBjaGVjayhib29sIGNvbmRpdGlvbiwgU3RyaW5ncy4uLiBtZXNz
YWdlKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEpTRnVuY3RvciwgdHlwZW5hbWUgQVBJRnVu
Y3Rvcj4KKyAgICB2b2lkIGNoZWNrSlNBbmRBUElNYXRjaChjb25zdCBKU0Z1bmN0b3ImLCBjb25z
dCBBUElGdW5jdG9yJiwgY29uc3QgY2hhciogZGVzY3JpcHRpb24pOworCisgICAgLy8gSGVscGVy
IG1ldGhvZHMuCisgICAgdXNpbmcgU2NyaXB0UmVzdWx0ID0gRXhwZWN0ZWQ8SlNWYWx1ZVJlZiwg
SlNWYWx1ZVJlZj47CisgICAgU2NyaXB0UmVzdWx0IGV2YWx1YXRlU2NyaXB0KGNvbnN0IGNoYXIq
IHNjcmlwdCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCA9IG51bGxwdHIpOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CisgICAgU2NyaXB0UmVzdWx0IGNhbGxGdW5jdGlv
bihjb25zdCBjaGFyKiBmdW5jdGlvblNvdXJjZSwgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMp
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CisgICAgYm9vbCBmdW5j
dGlvblJldHVybnNUcnVlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uU291cmNlLCBBcmd1bWVudFR5cGVz
Li4uIGFyZ3VtZW50cyk7CisKKyAgICAvLyBXYXlzIHRvIG1ha2Ugc2V0cyBvZiBpbnRlcmVzdGlu
ZyB0aGluZ3MuCisgICAgQVBJVmVjdG9yPEpTT2JqZWN0UmVmPiBpbnRlcmVzdGluZ09iamVjdHMo
KTsKKyAgICBBUElWZWN0b3I8SlNWYWx1ZVJlZj4gaW50ZXJlc3RpbmdLZXlzKCk7CisKKyAgICBp
bnQgZmFpbGVkIHsgMCB9OworICAgIEFQSUNvbnRleHQgY29udGV4dDsKK307CisKK2ludCB0ZXN0
Q0FQSVZpYUNwcCgpCit7CisgICAgVGVzdEFQSSB0ZXN0ZXI7CisgICAgcmV0dXJuIHRlc3Rlci5y
dW4oKTsKK30KKworVGVzdEFQSTo6U2NyaXB0UmVzdWx0IFRlc3RBUEk6OmV2YWx1YXRlU2NyaXB0
KGNvbnN0IGNoYXIqIHNjcmlwdCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCkKK3sKKyAgICBBUElT
dHJpbmcgc2NyaXB0QVBJU3RyaW5nKHNjcmlwdCk7CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24g
PSBudWxscHRyOworCisgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU0V2YWx1YXRlU2NyaXB0KGNv
bnRleHQsIHNjcmlwdEFQSVN0cmluZywgdGhpc09iamVjdCwgbnVsbHB0ciwgMCwgJmV4Y2VwdGlv
bik7CisgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8SlNWYWx1
ZVJlZj4oZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gU2NyaXB0UmVzdWx0KHJlc3VsdCk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CitUZXN0QVBJOjpTY3JpcHRSZXN1
bHQgVGVzdEFQSTo6Y2FsbEZ1bmN0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uU291cmNlLCBBcmd1
bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBKU1ZhbHVlUmVmIGZ1bmN0aW9uOworICAg
IHsKKyAgICAgICAgU2NyaXB0UmVzdWx0IGZ1bmN0aW9uUmVzdWx0ID0gZXZhbHVhdGVTY3JpcHQo
ZnVuY3Rpb25Tb3VyY2UpOworICAgICAgICBpZiAoIWZ1bmN0aW9uUmVzdWx0KQorICAgICAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uUmVzdWx0OworICAgICAgICBmdW5jdGlvbiA9IGZ1bmN0aW9uUmVz
dWx0LnZhbHVlKCk7CisgICAgfQorCisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRy
OworICAgIGlmIChKU09iamVjdFJlZiBmdW5jdGlvbk9iamVjdCA9IEpTVmFsdWVUb09iamVjdChj
b250ZXh0LCBmdW5jdGlvbiwgJmV4Y2VwdGlvbikpIHsKKyAgICAgICAgSlNWYWx1ZVJlZiBhcmdz
W3NpemVvZi4uLihhcmd1bWVudHMpXSB7IGFyZ3VtZW50cy4uLiB9OworICAgICAgICBKU1ZhbHVl
UmVmIHJlc3VsdCA9IEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oY29udGV4dCwgZnVuY3Rpb25PYmpl
Y3QsIGZ1bmN0aW9uT2JqZWN0LCBzaXplb2YuLi4oYXJndW1lbnRzKSwgYXJncywgJmV4Y2VwdGlv
bik7CisgICAgICAgIGlmICghZXhjZXB0aW9uKQorICAgICAgICAgICAgcmV0dXJuIFNjcmlwdFJl
c3VsdChyZXN1bHQpOworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUKGV4Y2VwdGlvbik7Cisg
ICAgcmV0dXJuIFVuZXhwZWN0ZWQ8SlNWYWx1ZVJlZj4oZXhjZXB0aW9uKTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KK2Jvb2wgVGVzdEFQSTo6ZnVuY3Rpb25SZXR1
cm5zVHJ1ZShjb25zdCBjaGFyKiBmdW5jdGlvblNvdXJjZSwgQXJndW1lbnRUeXBlcy4uLiBhcmd1
bWVudHMpCit7CisgICAgSlNWYWx1ZVJlZiB0cnVlVmFsdWUgPSBKU1ZhbHVlTWFrZUJvb2xlYW4o
Y29udGV4dCwgdHJ1ZSk7CisgICAgU2NyaXB0UmVzdWx0IHJlc3VsdCA9IGNhbGxGdW5jdGlvbihm
dW5jdGlvblNvdXJjZSwgYXJndW1lbnRzLi4uKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHJldHVybiBKU1ZhbHVlSXNTdHJpY3RFcXVhbChjb250ZXh0LCB0
cnVlVmFsdWUsIHJlc3VsdC52YWx1ZSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUuLi4gU3Ry
aW5ncz4KK2Jvb2wgVGVzdEFQSTo6Y2hlY2soYm9vbCBjb25kaXRpb24sIFN0cmluZ3MuLi4gbWVz
c2FnZXMpCit7CisgICAgaWYgKCFjb25kaXRpb24pIHsKKyAgICAgICAgZGF0YUxvZ0xuKG1lc3Nh
Z2VzLi4uLCAiOiBGQUlMRUQiKTsKKyAgICAgICAgZmFpbGVkKys7CisgICAgfSBlbHNlCisgICAg
ICAgIGRhdGFMb2dMbihtZXNzYWdlcy4uLiwgIjogUEFTU0VEIik7CisKKyAgICByZXR1cm4gY29u
ZGl0aW9uOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0Z1bmN0b3IsIHR5cGVuYW1lIEFQSUZ1
bmN0b3I+Cit2b2lkIFRlc3RBUEk6OmNoZWNrSlNBbmRBUElNYXRjaChjb25zdCBKU0Z1bmN0b3Im
IGpzRnVuY3RvciwgY29uc3QgQVBJRnVuY3RvciYgYXBpRnVuY3RvciwgY29uc3QgY2hhciogZGVz
Y3JpcHRpb24pCit7CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOworICAgIEpT
VmFsdWVSZWYgcmVzdWx0ID0gYXBpRnVuY3RvcigmZXhjZXB0aW9uKTsKKyAgICBTY3JpcHRSZXN1
bHQganNSZXN1bHQgPSBqc0Z1bmN0b3IoKTsKKyAgICBpZiAoIWpzUmVzdWx0KSB7CisgICAgICAg
IGNoZWNrKGV4Y2VwdGlvbiwgIkpTIGFuZCBBUEkgY2FsbHMgc2hvdWxkIGJvdGggdGhyb3cgYW4g
ZXhjZXB0aW9uIHdoaWxlICIsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgY2hlY2soZnVuY3Rpb25S
ZXR1cm5zVHJ1ZSgiKGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEuY29uc3RydWN0b3IgPT09IGIu
Y29uc3RydWN0b3I7IH0pIiwgZXhjZXB0aW9uLCBqc1Jlc3VsdC5lcnJvcigpKSwgIkpTIGFuZCBB
UEkgY2FsbHMgc2hvdWxkIGJvdGggdGhyb3cgdGhlIHNhbWUgZXhjZXB0aW9uIHdoaWxlICIsIGRl
c2NyaXB0aW9uKTsKKyAgICB9IGVsc2UgeworICAgICAgICBjaGVjayghZXhjZXB0aW9uLCAiSlMg
YW5kIEFQSSBjYWxscyBzaG91bGQgYm90aCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uIHdoaWxlICIs
IGRlc2NyaXB0aW9uKTsKKyAgICAgICAgY2hlY2soSlNWYWx1ZUlzU3RyaWN0RXF1YWwoY29udGV4
dCwgcmVzdWx0LCBqc1Jlc3VsdC52YWx1ZSgpKSwgIkpTIHJlc3VsdCBhbmQgQVBJIGNhbGxzIHNo
b3VsZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUgd2hpbGUgIiwgZGVzY3JpcHRpb24pOworICAgIH0K
K30KKworQVBJVmVjdG9yPEpTT2JqZWN0UmVmPiBUZXN0QVBJOjppbnRlcmVzdGluZ09iamVjdHMo
KQoreworICAgIEFQSVZlY3RvcjxKU09iamVjdFJlZj4gcmVzdWx0KGNvbnRleHQpOworICAgIEpT
T2JqZWN0UmVmIGFycmF5ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGV2YWx1YXRlU2NyaXB0
KAorICAgICAgICAiW3t9LCBbXSwgeyBbU3ltYm9sLml0ZXJhdG9yXTogMSB9LCBuZXcgRGF0ZSgp
LCBuZXcgU3RyaW5nKCdzdHInKSwgbmV3IE1hcCgpLCBuZXcgU2V0KCksIG5ldyBXZWFrTWFwKCks
IG5ldyBXZWFrU2V0KCksIG5ldyBFcnJvcigpLCBuZXcgTnVtYmVyKDQyKSwgbmV3IEJvb2xlYW4o
KSwgeyBnZXQgbGVuZ3RoKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSB9XTsiKS52YWx1ZSgpLCBu
dWxscHRyKTsKKworICAgIEFQSVN0cmluZyBsZW5ndGhTdHJpbmcoImxlbmd0aCIpOworICAgIHVu
c2lnbmVkIGxlbmd0aCA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBKU09iamVjdEdldFByb3Bl
cnR5KGNvbnRleHQsIGFycmF5LCBsZW5ndGhTdHJpbmcsIG51bGxwdHIpLCBudWxscHRyKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgSlNPYmpl
Y3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIEpTT2JqZWN0R2V0UHJvcGVy
dHlBdEluZGV4KGNvbnRleHQsIGFycmF5LCBpLCBudWxscHRyKSwgbnVsbHB0cik7CisgICAgICAg
IEFTU0VSVChvYmplY3QpOworICAgICAgICByZXN1bHQuYXBwZW5kKG9iamVjdCk7CisgICAgfQor
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQVBJVmVjdG9yPEpTVmFsdWVSZWY+IFRlc3RBUEk6
OmludGVyZXN0aW5nS2V5cygpCit7CisgICAgQVBJVmVjdG9yPEpTVmFsdWVSZWY+IHJlc3VsdChj
b250ZXh0KTsKKyAgICBKU09iamVjdFJlZiBhcnJheSA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0
LCBldmFsdWF0ZVNjcmlwdCgiW3t9LCBbXSwgMSwgU3ltYm9sLml0ZXJhdG9yLCAnbGVuZ3RoJ10i
KS52YWx1ZSgpLCBudWxscHRyKTsKKworICAgIEFQSVN0cmluZyBsZW5ndGhTdHJpbmcoImxlbmd0
aCIpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBKU09i
amVjdEdldFByb3BlcnR5KGNvbnRleHQsIGFycmF5LCBsZW5ndGhTdHJpbmcsIG51bGxwdHIpLCBu
dWxscHRyKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KGNvbnRl
eHQsIGFycmF5LCBpLCBudWxscHRyKTsKKyAgICAgICAgQVNTRVJUKHZhbHVlKTsKKyAgICAgICAg
cmVzdWx0LmFwcGVuZCh2YWx1ZSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
aW50IFRlc3RBUEk6OnJ1bigpCit7CisgICAgZGF0YUxvZ0xuKCJTdGFydGluZyBDLUFQSSB0ZXN0
cyBpbiBDKysiKTsKKyAgICBjb25zdCBjaGFyKiBpc1N5bWJvbEZ1bmN0aW9uID0gIihmdW5jdGlv
biBpc1N5bWJvbChzeW1ib2wpIHsgcmV0dXJuIHR5cGVvZihzeW1ib2wpID09PSAnc3ltYm9sJzsg
fSkiOworICAgIGNvbnN0IGNoYXIqIGdldEZ1bmN0aW9uID0gIihmdW5jdGlvbiBnZXQob2JqZWN0
LCBrZXkpIHsgcmV0dXJuIG9iamVjdFtrZXldOyB9KSI7CisgICAgY29uc3QgY2hhciogc2V0RnVu
Y3Rpb24gPSAiKGZ1bmN0aW9uIHNldChvYmplY3QsIGtleSwgdmFsdWUpIHsgb2JqZWN0W2tleV0g
PSB2YWx1ZTsgfSkiOworICAgIGNvbnN0IGNoYXIqIGhhc0Z1bmN0aW9uID0gIihmdW5jdGlvbiBo
YXMob2JqZWN0LCBrZXkpIHsgcmV0dXJuIGtleSBpbiBvYmplY3Q7IH0pIjsKKyAgICBjb25zdCBj
aGFyKiBkZWxldGVGdW5jdGlvbiA9ICIoZnVuY3Rpb24gZGVsKG9iamVjdCwga2V5KSB7IHJldHVy
biBkZWxldGUgb2JqZWN0W2tleV07IH0pIjsKKworICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0g
dG9KUyhjb250ZXh0KTsKKworICAgIHsKKyAgICAgICAgLy8gQ2FuJ3QgY2FsbCBTeW1ib2wgYXMg
YSBjb25zdHJ1Y3RvciBzaW5jZSBpdCdzIG5vdCBzdWJjbGFzc2FibGUuCisgICAgICAgIGF1dG8g
cmVzdWx0ID0gZXZhbHVhdGVTY3JpcHQoIlN5bWJvbCgnZG9wZScpOyIpOworICAgICAgICBjaGVj
ayhKU1ZhbHVlR2V0VHlwZShjb250ZXh0LCByZXN1bHQudmFsdWUoKSkgPT0ga0pTVHlwZVN5bWJv
bCwgImRvcGUgZ2V0IHR5cGUgaXMgYSBzeW1ib2wiKTsKKyAgICAgICAgY2hlY2soSlNWYWx1ZUlz
U3ltYm9sKGNvbnRleHQsIHJlc3VsdC52YWx1ZSgpKSwgImRvcGUgaXMgYSBzeW1ib2wiKTsKKyAg
ICB9CisKKyAgICB7CisgICAgICAgIEFQSVN0cmluZyBkZXNjcmlwdGlvbigiZG9wZSIpOworICAg
ICAgICBKU1ZhbHVlUmVmIHN5bWJvbCA9IEpTVmFsdWVNYWtlU3ltYm9sKGNvbnRleHQsIGRlc2Ny
aXB0aW9uKTsKKyAgICAgICAgY2hlY2soZnVuY3Rpb25SZXR1cm5zVHJ1ZShpc1N5bWJvbEZ1bmN0
aW9uLCBzeW1ib2wpLCAiSlNWYWx1ZU1ha2VTeW1ib2wgbWFrZXMgYSBzeW1ib2wgdmFsdWUiKTsK
KyAgICB9CisKKyAgICB7CisgICAgICAgIGF1dG8gb2JqZWN0cyA9IGludGVyZXN0aW5nT2JqZWN0
cygpOworICAgICAgICBhdXRvIGtleXMgPSBpbnRlcmVzdGluZ0tleXMoKTsKKworICAgICAgICBm
b3IgKGF1dG8mIG9iamVjdCA6IG9iamVjdHMpIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiXG5u
ZXh0IG9iamVjdDogIiwgdG9KUyhleGVjLCBvYmplY3QpKTsKKyAgICAgICAgICAgIGZvciAoYXV0
byYga2V5IDoga2V5cykgeworICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiVXNpbmcga2V5OiAi
LCB0b0pTKGV4ZWMsIGtleSkpOworICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgK
KyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBjYWxsRnVuY3Rpb24oZ2V0RnVuY3Rpb24sIG9iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAg
ICAgICAgfSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBKU09iamVjdEdldFByb3BlcnR5S2V5KGNvbnRleHQsIG9iamVjdCwga2V5
LCBleGNlcHRpb24pOworICAgICAgICAgICAgICAgICAgICB9LCAiY2hlY2tpbmcgZ2V0IHByb3Bl
cnR5IGtleXMiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHsKKyAg
ICAgICAgYXV0byBqc09iamVjdHMgPSBpbnRlcmVzdGluZ09iamVjdHMoKTsKKyAgICAgICAgYXV0
byBhcGlPYmplY3RzID0gaW50ZXJlc3RpbmdPYmplY3RzKCk7CisgICAgICAgIGF1dG8ga2V5cyA9
IGludGVyZXN0aW5nS2V5cygpOworCisgICAgICAgIEpTVmFsdWVSZWYgdGhlQW5zd2VyID0gSlNW
YWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgNDIpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGpzT2JqZWN0cy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgZm9yIChhdXRvJiBrZXkg
OiBrZXlzKSB7CisgICAgICAgICAgICAgICAgSlNPYmplY3RSZWYganNPYmplY3QgPSBqc09iamVj
dHNbaV07CisgICAgICAgICAgICAgICAgSlNPYmplY3RSZWYgYXBpT2JqZWN0ID0gYXBpT2JqZWN0
c1tpXTsKKyAgICAgICAgICAgICAgICBjaGVja0pTQW5kQVBJTWF0Y2goCisgICAgICAgICAgICAg
ICAgICAgIFsmXSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbEZ1bmN0aW9u
KHNldEZ1bmN0aW9uLCBqc09iamVjdCwga2V5LCB0aGVBbnN3ZXIpOworICAgICAgICAgICAgICAg
ICAgICB9ICwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHlLZXkoY29udGV4dCwgYXBpT2JqZWN0LCBrZXksIHRo
ZUFuc3dlciwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lLCBleGNlcHRpb24pOworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworICAg
ICAgICAgICAgICAgICAgICB9LCAic2V0dGluZyBwcm9wZXJ0eSBrZXlzIHRvIHRoZSBhbnN3ZXIi
KTsKKyAgICAgICAgICAgICAgICAvLyBDaGVjayBnZXQgaXMgdGhlIHNhbWUgb24gQVBJIG9iamVj
dC4KKyAgICAgICAgICAgICAgICBjaGVja0pTQW5kQVBJTWF0Y2goCisgICAgICAgICAgICAgICAg
ICAgIFsmXSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbEZ1bmN0aW9uKGdl
dEZ1bmN0aW9uLCBhcGlPYmplY3QsIGtleSk7CisgICAgICAgICAgICAgICAgICAgIH0sIFsmXSAo
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
SlNPYmplY3RHZXRQcm9wZXJ0eUtleShjb250ZXh0LCBhcGlPYmplY3QsIGtleSwgZXhjZXB0aW9u
KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgImdldHRpbmcgcHJvcGVydHkga2V5cyBmcm9tIEFQ
SSBvYmplY3RzIik7CisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZ2V0IGlzIHRoZSBzYW1lIG9u
IHJlc3BlY3RpdmUgb2JqZWN0cy4KKyAgICAgICAgICAgICAgICBjaGVja0pTQW5kQVBJTWF0Y2go
CisgICAgICAgICAgICAgICAgICAgIFsmXSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gY2FsbEZ1bmN0aW9uKGdldEZ1bmN0aW9uLCBqc09iamVjdCwga2V5KTsKKyAgICAgICAgICAg
ICAgICAgICAgfSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBKU09iamVjdEdldFByb3BlcnR5S2V5KGNvbnRleHQsIGFwaU9iamVj
dCwga2V5LCBleGNlcHRpb24pOworICAgICAgICAgICAgICAgICAgICB9LCAiZ2V0dGluZyBwcm9w
ZXJ0eSBrZXlzIGZyb20gcmVzcGVjdGl2ZSBvYmplY3RzIik7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICB7CisgICAgICAgIGF1dG8gb2JqZWN0cyA9IGludGVyZXN0aW5n
T2JqZWN0cygpOworICAgICAgICBhdXRvIGtleXMgPSBpbnRlcmVzdGluZ0tleXMoKTsKKworICAg
ICAgICBKU1ZhbHVlUmVmIHRoZUFuc3dlciA9IEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIDQy
KTsKKyAgICAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBvYmplY3RzKSB7CisgICAgICAgICAgICBk
YXRhTG9nTG4oIlxuTmV4dCBvYmplY3Q6ICIsIHRvSlMoZXhlYywgb2JqZWN0KSk7CisgICAgICAg
ICAgICBmb3IgKGF1dG8mIGtleSA6IGtleXMpIHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG4o
IlVzaW5nIGtleTogIiwgdG9KUyhleGVjLCBrZXkpKTsKKyAgICAgICAgICAgICAgICBjaGVja0pT
QW5kQVBJTWF0Y2goCisgICAgICAgICAgICAgICAgICAgIFsmXSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gY2FsbEZ1bmN0aW9uKGhhc0Z1bmN0aW9uLCBvYmplY3QsIGtleSk7Cisg
ICAgICAgICAgICAgICAgICAgIH0sIFsmXSAoSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIEpT
T2JqZWN0SGFzUHJvcGVydHlLZXkoY29udGV4dCwgb2JqZWN0LCBrZXksIGV4Y2VwdGlvbikpOwor
ICAgICAgICAgICAgICAgICAgICB9LCAiY2hlY2tpbmcgaGFzIHByb3BlcnR5IGtleXMgdW5zZXQi
KTsKKworICAgICAgICAgICAgICAgIGNoZWNrKCEhY2FsbEZ1bmN0aW9uKHNldEZ1bmN0aW9uLCBv
YmplY3QsIGtleSwgdGhlQW5zd2VyKSwgInNldCBwcm9wZXJ0eSB0byB0aGUgYW5zd2VyIik7CisK
KyAgICAgICAgICAgICAgICBjaGVja0pTQW5kQVBJTWF0Y2goCisgICAgICAgICAgICAgICAgICAg
IFsmXSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbEZ1bmN0aW9uKGhhc0Z1
bmN0aW9uLCBvYmplY3QsIGtleSk7CisgICAgICAgICAgICAgICAgICAgIH0sIFsmXSAoSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VCb29sZWFuKGNvbnRleHQsIEpTT2JqZWN0SGFzUHJvcGVydHlLZXkoY29udGV4dCwgb2Jq
ZWN0LCBrZXksIGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgICAgICB9LCAiY2hlY2tpbmcg
aGFzIHByb3BlcnR5IGtleXMgc2V0Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisKKyAgICB7CisgICAgICAgIGF1dG8gb2JqZWN0cyA9IGludGVyZXN0aW5nT2JqZWN0cygpOwor
ICAgICAgICBhdXRvIGtleXMgPSBpbnRlcmVzdGluZ0tleXMoKTsKKworICAgICAgICBKU1ZhbHVl
UmVmIHRoZUFuc3dlciA9IEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIDQyKTsKKyAgICAgICAg
Zm9yIChhdXRvJiBvYmplY3QgOiBvYmplY3RzKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIlxu
TmV4dCBvYmplY3Q6ICIsIHRvSlMoZXhlYywgb2JqZWN0KSk7CisgICAgICAgICAgICBmb3IgKGF1
dG8mIGtleSA6IGtleXMpIHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlVzaW5nIGtleTog
IiwgdG9KUyhleGVjLCBrZXkpKTsKKyAgICAgICAgICAgICAgICBjaGVja0pTQW5kQVBJTWF0Y2go
CisgICAgICAgICAgICAgICAgICAgIFsmXSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gY2FsbEZ1bmN0aW9uKGRlbGV0ZUZ1bmN0aW9uLCBvYmplY3QsIGtleSk7CisgICAgICAgICAg
ICAgICAgICAgIH0sIFsmXSAoSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIEpTT2JqZWN0RGVs
ZXRlUHJvcGVydHlLZXkoY29udGV4dCwgb2JqZWN0LCBrZXksIGV4Y2VwdGlvbikpOworICAgICAg
ICAgICAgICAgICAgICB9LCAiY2hlY2tpbmcgaGFzIHByb3BlcnR5IGtleXMgdW5zZXQiKTsKKwor
ICAgICAgICAgICAgICAgIGNoZWNrKCEhY2FsbEZ1bmN0aW9uKHNldEZ1bmN0aW9uLCBvYmplY3Qs
IGtleSwgdGhlQW5zd2VyKSwgInNldCBwcm9wZXJ0eSB0byB0aGUgYW5zd2VyIik7CisKKyAgICAg
ICAgICAgICAgICBjaGVja0pTQW5kQVBJTWF0Y2goCisgICAgICAgICAgICAgICAgICAgIFsmXSB7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbEZ1bmN0aW9uKGRlbGV0ZUZ1bmN0
aW9uLCBvYmplY3QsIGtleSk7CisgICAgICAgICAgICAgICAgICAgIH0sIFsmXSAoSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VCb29sZWFuKGNvbnRleHQsIEpTT2JqZWN0RGVsZXRlUHJvcGVydHlLZXkoY29udGV4dCwgb2Jq
ZWN0LCBrZXksIGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgICAgICB9LCAiY2hlY2tpbmcg
aGFzIHByb3BlcnR5IGtleXMgc2V0Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBkYXRhTG9nTG4oIkMtQVBJIHRlc3RzIGluIEMrKyBoYWQgIiwgZmFpbGVkLCAiIGZh
aWx1cmVzIik7CisgICAgcmV0dXJuIGZhaWxlZDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvdGVzdGFwaS5tbQppbmRleCBhMTY1NGFlMTFlMTkxYTY0OTJjNTUzNjhkOGViZDBk
NTYxOWQxOGEyLi4zODI4MDU0NjQ4MmFlNGQwNDgxZWQzM2FjODM5NTQ4NGU4YjllZjRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCkBAIC0yMyw2ICsyMyw3
IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
SlNFeHBvcnRNYWNyb3MuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lmg+CiAKQEAgLTQyLDYgKzQzLDcgQEAKICNpbXBvcnQgPHZlY3Rvcj4KICNpbXBvcnQgPHd0Zi9N
ZW1vcnlGb290cHJpbnQuaD4KICNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgorI2ltcG9ydCA8d3Rm
L0RhdGFMb2cuaD4KIAogZXh0ZXJuICJDIiB2b2lkIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVj
dEZvckRlYnVnZ2luZyhKU0NvbnRleHRSZWYpOwogZXh0ZXJuICJDIiB2b2lkIEpTU3luY2hyb25v
dXNFZGVuQ29sbGVjdEZvckRlYnVnZ2luZyhKU0NvbnRleHRSZWYpOwpAQCAtNjI2LDYgKzYyOCwx
MDUgQEAgc3RhdGljIHZvaWQgdGVzdE9iamVjdGl2ZUNBUElNYWluKCkKICAgICAgICAgY2hlY2tS
ZXN1bHQoQCJuZXcgRGF0ZSIsIHJlc3VsdC5pc0RhdGUpOwogICAgIH0KIAorICAgIEBhdXRvcmVs
ZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxv
Y10gaW5pdF07CisgICAgICAgIEpTVmFsdWUgKnN5bWJvbCA9IFtjb250ZXh0IGV2YWx1YXRlU2Ny
aXB0OkAiU3ltYm9sKCdkb3BlJyk7Il07CisgICAgICAgIEpTVmFsdWUgKm5vdFN5bWJvbCA9IFtj
b250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiJ2RvcGUnIl07CisgICAgICAgIGNoZWNrUmVzdWx0KEAi
U2hvdWxkIGJlIGEgc3ltYm9sIHZhbHVlIiwgc3ltYm9sLmlzU3ltYm9sKTsKKyAgICAgICAgY2hl
Y2tSZXN1bHQoQCJTaG91bGQgbm90IGJlIGEgc3ltYm9sIHZhbHVlIiwgIW5vdFN5bWJvbC5pc1N5
bWJvbCk7CisgICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4
dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAq
c3ltYm9sID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3U3ltYm9sRnJvbURlc2NyaXB0aW9uOkAiZG9w
ZSIgaW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBjaGVja1Jlc3VsdChAIlNob3VsZCBiZSBh
IGNyZWF0ZWQgZnJvbSBPYmotQyIsIHN5bWJvbC5pc1N5bWJvbCk7CisgICAgfQorCisgICAgQGF1
dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0
IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAqYXJyYXlJdGVyYXRvciA9IFtjb250ZXh0
IGV2YWx1YXRlU2NyaXB0OkAiQXJyYXkucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0iXTsKKyAg
ICAgICAgSlNWYWx1ZSAqaXRlcmF0b3JTeW1ib2wgPSBjb250ZXh0W0AiU3ltYm9sIl1bQCJpdGVy
YXRvciJdOworICAgICAgICBKU1ZhbHVlICphcnJheSA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld0Fy
cmF5SW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBjaGVja1Jlc3VsdChAIkxvb2tpbmcgdXAg
Ynkgc3Vic2NyaXB0IHdpdGggc3ltYm9sIHNob3VsZCB3b3JrIiwgW2FycmF5W2l0ZXJhdG9yU3lt
Ym9sXSBpc0VxdWFsOmFycmF5SXRlcmF0b3JdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJMb29r
aW5nIHVwIGJ5IG1ldGhvZCB3aXRoIHN5bWJvbCBzaG91bGQgd29yayIsIFtbYXJyYXkgdmFsdWVG
b3JQcm9wZXJ0eTppdGVyYXRvclN5bWJvbF0gaXNFcXVhbDphcnJheUl0ZXJhdG9yXSk7CisgICAg
fQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9
IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAqaXRlcmF0b3JTeW1i
b2wgPSBjb250ZXh0W0AiU3ltYm9sIl1bQCJpdGVyYXRvciJdOworICAgICAgICBKU1ZhbHVlICpv
YmplY3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdPYmplY3RJbkNvbnRleHQ6Y29udGV4dF07Cisg
ICAgICAgIEpTVmFsdWUgKnRoZUFuc3dlciA9IFtKU1ZhbHVlIHZhbHVlV2l0aFVJbnQzMjo0MiBp
bkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIG9iamVjdFtpdGVyYXRvclN5bWJvbF0gPSB0aGVB
bnN3ZXI7CisgICAgICAgIGNoZWNrUmVzdWx0KEAiU2V0dGluZyBieSBzdWJzY3JpcHQgd2l0aCBz
eW1ib2wgc2hvdWxkIHdvcmsiLCBbb2JqZWN0W2l0ZXJhdG9yU3ltYm9sXSBpc0VxdWFsOnRoZUFu
c3dlcl0pOworICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRl
eHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUg
Kml0ZXJhdG9yU3ltYm9sID0gY29udGV4dFtAIlN5bWJvbCJdW0AiaXRlcmF0b3IiXTsKKyAgICAg
ICAgSlNWYWx1ZSAqb2JqZWN0ID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0
OmNvbnRleHRdOworICAgICAgICBKU1ZhbHVlICp0aGVBbnN3ZXIgPSBbSlNWYWx1ZSB2YWx1ZVdp
dGhVSW50MzI6NDIgaW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBbb2JqZWN0IHNldFZhbHVl
OnRoZUFuc3dlciBmb3JQcm9wZXJ0eTppdGVyYXRvclN5bWJvbF07CisgICAgICAgIGNoZWNrUmVz
dWx0KEAiU2V0dGluZyBieSBtZXRob2Qgd2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsiLCBbb2JqZWN0
W2l0ZXJhdG9yU3ltYm9sXSBpc0VxdWFsOnRoZUFuc3dlcl0pOworICAgIH0KKworICAgIEBhdXRv
cmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBh
bGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUgKml0ZXJhdG9yU3ltYm9sID0gY29udGV4dFtA
IlN5bWJvbCJdW0AiaXRlcmF0b3IiXTsKKyAgICAgICAgSlNWYWx1ZSAqb2JqZWN0ID0gW0pTVmFs
dWUgdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBKU1ZhbHVl
ICp0aGVBbnN3ZXIgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhVSW50MzI6NDIgaW5Db250ZXh0OmNvbnRl
eHRdOworICAgICAgICBvYmplY3RbaXRlcmF0b3JTeW1ib2xdID0gdGhlQW5zd2VyOworICAgICAg
ICBjaGVja1Jlc3VsdChAImhhcyBwcm9wZXJ0eSB3aXRoIHN5bWJvbCBzaG91bGQgd29yayIsIFtv
YmplY3QgaGFzUHJvcGVydHk6aXRlcmF0b3JTeW1ib2xdKTsKKyAgICB9CisKKyAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxs
b2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICppdGVyYXRvclN5bWJvbCA9IGNvbnRleHRbQCJT
eW1ib2wiXVtAIml0ZXJhdG9yIl07CisgICAgICAgIEpTVmFsdWUgKm9iamVjdCA9IFtKU1ZhbHVl
IHZhbHVlV2l0aE5ld09iamVjdEluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgSlNWYWx1ZSAq
dGhlQW5zd2VyID0gW0pTVmFsdWUgdmFsdWVXaXRoVUludDMyOjQyIGluQ29udGV4dDpjb250ZXh0
XTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJkZWxldGUgcHJvcGVydHkgd2l0aCBzeW1ib2wgc2hv
dWxkIHdvcmsgd2l0aG91dCBwcm9wZXJ0eSIsIFtvYmplY3QgZGVsZXRlUHJvcGVydHk6aXRlcmF0
b3JTeW1ib2xdKTsKKyAgICAgICAgb2JqZWN0W2l0ZXJhdG9yU3ltYm9sXSA9IHRoZUFuc3dlcjsK
KyAgICAgICAgY2hlY2tSZXN1bHQoQCJkZWxldGUgcHJvcGVydHkgd2l0aCBzeW1ib2wgc2hvdWxk
IHdvcmsgd2l0aCBwcm9wZXJ0eSIsIFtvYmplY3QgZGVsZXRlUHJvcGVydHk6aXRlcmF0b3JTeW1i
b2xdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJkZWxldGUgc2hvdWxkIGJlIGZhbHNlIHdpdGgg
bm9uLWNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSIsICFbY29udGV4dFtAIkFycmF5Il0gZGVsZXRlUHJv
cGVydHk6QCJwcm90b3R5cGUiXSk7CisgICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7Cisg
ICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAg
ICAgICAgSlNWYWx1ZSAqb2JqZWN0ID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250
ZXh0OmNvbnRleHRdOworICAgICAgICBOU09iamVjdCAqb2JqQ09iamVjdCA9IFtbTlNPYmplY3Qg
YWxsb2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBvYmplY3Rbb2JqQ09iamVj
dF07CisgICAgICAgIGNoZWNrUmVzdWx0KEAiZ2V0dGluZyBhIG5vbi1jb252ZXJ0YWJsZSBvYmpl
Y3Qgc2hvdWxkIHJldHVybiB1bmRlZmluZWQiLCBbcmVzdWx0IGlzVW5kZWZpbmVkXSk7CisgICAg
ICAgIG9iamVjdFtvYmpDT2JqZWN0XSA9IEAoMSk7CisgICAgICAgIHJlc3VsdCA9IG9iamVjdFtv
YmpDT2JqZWN0XTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJnZXR0aW5nIGEgbm9uLWNvbnZlcnRh
YmxlIG9iamVjdCBzaG91bGQgcmV0dXJuIHRoZSBzdG9yZWQgdmFsdWUiLCBbcmVzdWx0IHRvVUlu
dDMyXSA9PSAxKTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlND
b250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICBKU1Zh
bHVlICpvYmplY3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdPYmplY3RJbkNvbnRleHQ6Y29udGV4
dF07CisgICAgICAgIEpTVmFsdWUgKml0ZXJhdG9yU3ltYm9sID0gY29udGV4dFtAIlN5bWJvbCJd
W0AiaXRlcmF0b3IiXTsKKyAgICAgICAgb2JqZWN0W0AidmFsdWUiXSA9IEAoMSk7CisgICAgICAg
IGNvbnRleHRbQCJvYmplY3QiXSA9IG9iamVjdDsKKworICAgICAgICBvYmplY3RbaXRlcmF0b3JT
eW1ib2xdID0gXnsKKyAgICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtKU1ZhbHVlIHZhbHVl
V2l0aE5ld09iamVjdEluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgICAgIHJlc3VsdFtAIm9i
amVjdCJdID0gW0pTQ29udGV4dCBjdXJyZW50VGhpc107CisgICAgICAgICAgICByZXN1bHRbQCJu
ZXh0Il0gPSBeeworICAgICAgICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtKU1ZhbHVlIHZh
bHVlV2l0aE5ld09iamVjdEluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgICAgICAgICBKU1Zh
bHVlICp2YWx1ZSA9IFtKU0NvbnRleHQgY3VycmVudFRoaXNdW0Aib2JqZWN0Il1bQCJ2YWx1ZSJd
OworICAgICAgICAgICAgICAgIFtbSlNDb250ZXh0IGN1cnJlbnRUaGlzXVtAIm9iamVjdCJdIGRl
bGV0ZVByb3BlcnR5OkAidmFsdWUiXTsKKyAgICAgICAgICAgICAgICByZXN1bHRbQCJ2YWx1ZSJd
ID0gdmFsdWU7CisgICAgICAgICAgICAgICAgcmVzdWx0W0AiZG9uZSJdID0gW0pTVmFsdWUgdmFs
dWVXaXRoQm9vbDpbdmFsdWUgaXNVbmRlZmluZWRdIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgICAgIH07CisKKworICAgICAgICBKU1ZhbHVlICpjb3VudCA9IFtj
b250ZXh0IGV2YWx1YXRlU2NyaXB0OkAibGV0IGNvdW50ID0gMDsgZm9yIChsZXQgdiBvZiBvYmpl
Y3QpIHsgaWYgKHYgIT09IDEpIHRocm93IG5ldyBFcnJvcigpOyBjb3VudCsrOyB9IGNvdW50OyJd
OworICAgICAgICBjaGVja1Jlc3VsdChAIml0ZXJhdG9yIHNob3VsZCBub3QgdGhyb3ciLCAhW2Nv
bnRleHQgZXhjZXB0aW9uXSk7CisgICAgICAgIGNoZWNrUmVzdWx0KEAiaXRlcmF0aW9uIGNvdW50
IHNob3VsZCBiZSAxIiwgW2NvdW50IHRvVUludDMyXSA9PSAxKTsKKyAgICB9CisKICAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKICAgICAgICAgSlNDb2xsZWN0aW9uKiBteVByaXZhdGVQcm9wZXJ0aWVz
ID0gW1tKU0NvbGxlY3Rpb24gYWxsb2NdIGluaXRdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGFkMDlmZDBkYzYyNmUwMWRjMzUyMDVjM2I1OGY1MzUwZWU3MTg4ZDYuLjI5M2Q3
MTQyNDIwYmFjOTUxYzJkMGViMGM0ZmEwMzNkMGM3ZDRkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xMDQwLDYgKzEwNDAsNyBAQAogCQk1M0U3NzdFNDFFOTJFMjY1MDA3Q0JF
QzQgLyogV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1M0U3NzdFMjFFOTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1vZHVs
ZUluZm9ybWF0aW9uLmggKi87IH07CiAJCTUzRTlFMEFDMUVBRTgzREYwMEZFRTI1MSAvKiBXYXNt
TWFjaGluZVRocmVhZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzRTlFMEFBMUVBRTgzREUwMEZFRTI1MSAvKiBXYXNtTWFjaGluZVRocmVhZHMuaCAq
LzsgfTsKIAkJNTNFOUUwQUYxRUFFQzQ1NzAwRkVFMjUxIC8qIFdhc21UaWVyVXBDb3VudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFOUUwQUUxRUFF
QzQ1NzAwRkVFMjUxIC8qIFdhc21UaWVyVXBDb3VudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUzRUFGRTJGMjA4REZBQjQwMDdENTI0QiAvKiB0
ZXN0YXBpLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzMUQ0RTE5MUY1OUNERDIwMEVDODM2QyAvKiB0ZXN0YXBpLmNwcCAqLzsgfTsKIAkJNTNGMTFG
NDEyMDkxMzhENzAwRTQxMUE3IC8qIEpTSW1tdXRhYmxlQnV0dGVyZmx5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0YxMUY0MDIwOTEzOEQ3MDBFNDEx
QTcgLyogSlNJbW11dGFibGVCdXR0ZXJmbHkuaCAqLzsgfTsKIAkJNTNGNDBFODUxRDU4Rjk3NzAw
OTlBMUI2IC8qIFdhc21TZWN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTNGNDBFODQxRDU4Rjk3NzAwOTlBMUI2IC8qIFdhc21TZWN0aW9ucy5o
ICovOyB9OwogCQk1M0Y0MEU4QjFENTkwMUJCMDA5OUExQjYgLyogV2FzbUZ1bmN0aW9uUGFyc2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU4
QTFENTkwMUJCMDA5OUExQjYgLyogV2FzbUZ1bmN0aW9uUGFyc2VyLmggKi87IH07CkBAIC0zMzA1
LDYgKzMzMDYsOCBAQAogCQk1MzExQkQ0OTFFQTU4MUU1MDA1MjUyODEgLyogV2FzbU9NR1BsYW4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbU9NR1BsYW4uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxMzc0QkMxRDVDRTY3NjAwQUY3QTBCIC8qIFdhc21Q
bGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21QbGFuLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMTM3NEJFMUQ1Q0U5NTAwMEFGN0EwQiAvKiBXYXNt
UGxhbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtUGxhbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzMUQ0RTE5MUY1OUNERDIwMEVDODM2
QyAvKiB0ZXN0YXBpLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHRlc3RhcGkuY3BwOyBwYXRoID0g
QVBJL3Rlc3RzL3Rlc3RhcGkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzMz
QkJENDIxMDkyOENEMDA3NjE4RUMgLyogcG9zdHByb2Nlc3MtaGVhZGVycy5zaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuc2NyaXB0LnNoOyBwYXRoID0gInBvc3Rwcm9jZXNzLWhlYWRlcnMuc2giOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MzNCMTVERTFEQzdGNDYzMDA0RDUwMEEgLyogV2FzbU9w
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtT3BzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDFGQzZGMURBQzMzRTUwMEU3RTRENyAvKiBCM1dhc21C
b3VuZHNDaGVja1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNXYXNtQm91bmRzQ2hlY2tW
YWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDFGQzcxMURBQzM0M0Mw
MEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaDsgcGF0aCA9IGIzL0IzV2FzbUJv
dW5kc0NoZWNrVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM0NzUsNyAr
MzQ3OCw2IEBACiAJCTUzOTE3RTdBMUI3OTA2RTQwMDBFQkQzMyAvKiBKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MzkxN0U3QzFCNzkxMTA2MDAwRUJEMzMgLyogSlNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUzOTE3RTgzMUI3OTFDQjgwMDBFQkQzMyAvKiBUeXBlZEFycmF5UHJvdG90eXBlLmpzICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gVHlwZWRBcnJheVByb3RvdHlwZS5q
czsgcGF0aCA9IGJ1aWx0aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSBT
T1VSQ0VfUk9PVDsgfTsKLQkJNTM5RUIwNzExRDU1M0RGODAwQzgyRUY3IC8qIHRlc3RXYXNtLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHRlc3RXYXNtLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM5RkI4QjkxQzk5REE3QzAwOTQwRkExIC8qIEpT
QXJyYXlJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXJyYXlJ
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzQjBCRTMzMUU1NjFBQzkw
MEE4RkMyOSAvKiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1M0IwQkUzNTFFNTYxQjA5MDBBOEZDMjkgLyogUHJveHlhYmxl
QWNjZXNzQ2FzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm94
eWFibGVBY2Nlc3NDYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM3MzYs
NyArMzczOCw3IEBACiAJCTdENUZCMTkwMjA3NDRCRjEwMDVEREY2NCAvKiBJbnRsUGx1cmFsUnVs
ZXNDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsUGx1
cmFsUnVsZXNDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RDVG
QjE5MTIwNzQ0QkYxMDA1RERGNjQgLyogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdENUZCMTkyMjA3NDRCRjIwMDVE
REY2NCAvKiBJbnRsUGx1cmFsUnVsZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW50bFBsdXJhbFJ1bGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdENzM0
RkU0MjBCNEQ4NDEwMDE4ODQ0QSAvKiBJbnRsQ2Fub25pY2FsaXplTGFuZ3VhZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gSW50bENhbm9uaWNhbGl6ZUxhbmd1YWdlLmg7IHBhdGggPSBJbnRsQ2Fub25pY2Fs
aXplTGFuZ3VhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0Q3MzRGRTQyMEI0
RDg0MTAwMTg4NDRBIC8qIEludGxDYW5vbmljYWxpemVMYW5ndWFnZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnRsQ2Fub25pY2FsaXplTGFuZ3VhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0U0RUU3MDgwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZUNoYWluLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdFNEVFNzBFMEVCQjdBNUIwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFp
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJ1Y3R1cmVDaGFp
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2MDE2MURGMEYzQTgzQzEwMEY4
NDcxMCAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTQ5MzIsNiArNDkzNCw3IEBACiAJCQkJRjY5MkE4NTQwMjU1NTk3RDAxRkY2MEY3
IC8qIGNyZWF0ZV9oYXNoX3RhYmxlICovLAogCQkJCTkzN0I2M0NDMDlFNzY2RDIwMEE2NzFERCAv
KiBEZXJpdmVkU291cmNlcy5tYWtlICovLAogCQkJCTBGOTMyNzVBMUMyMEJDREYwMENGNjU2NCAv
KiBkeW5iZW5jaC5jcHAgKi8sCisJCQkJNTMzM0JCRDQyMTA5MjhDRDAwNzYxOEVDIC8qIHBvc3Rw
cm9jZXNzLWhlYWRlcnMuc2ggKi8sCiAJCQkJNjUyOUZCMzAxOEIyRDYzOTAwQzYxMTAyIC8qIGdl
bmVyYXRlLWJ5dGVjb2RlLWZpbGVzICovLAogCQkJCUY1QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAv
KiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oICovLAogCQkJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4
NCAvKiBqc2MuY3BwICovLApAQCAtNTQ2NywxMCArNTQ3MCwxMCBAQAogCQkJCUZFQjUxRjZCMUE5
N0I2ODgwMDFGOTIxQyAvKiBSZWdyZXNzMTQxODA5Lm1tICovLAogCQkJCUZFQ0I4QjI5MUQyNUNB
QkIwMDZGMjQ2MyAvKiB0ZXN0YXBpLWZ1bmN0aW9uLW92ZXJyaWRlcy5qcyAqLywKIAkJCQkxNEJE
NUEyRDBBM0U5MUY2MDBCQUY1OUMgLyogdGVzdGFwaS5jICovLAorCQkJCTUzMUQ0RTE5MUY1OUNE
RDIwMEVDODM2QyAvKiB0ZXN0YXBpLmNwcCAqLywKIAkJCQkxNEQ4NTc3NDBBNDY5NkM4MDAzMjE0
NkMgLyogdGVzdGFwaS5qcyAqLywKIAkJCQk4NkQyMjIxOTE2N0VGOTQ0MDAyNEM4MDQgLyogdGVz
dGFwaS5tbSAqLywKIAkJCQk2NTExMjJFNTE0MDQ2OUJBMDAyQjEwMUQgLyogdGVzdFJlZ0V4cC5j
cHAgKi8sCi0JCQkJNTM5RUIwNzExRDU1M0RGODAwQzgyRUY3IC8qIHRlc3RXYXNtLmNwcCAqLywK
IAkJCQk1MzQ5MDI4MjFDNzI0MkM4MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCAqLywK
IAkJCQk1MzQ5MDI4MzFDNzI0MkM4MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmggKi8sCiAJ
CQkpOwpAQCAtOTk4NCw3ICs5OTg3LDcgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7Ci0JCQlzaGVsbFNj
cmlwdCA9ICJleGVjICR7U1JDUk9PVH0vcG9zdHByb2Nlc3MtaGVhZGVycy5zaCI7CisJCQlzaGVs
bFNjcmlwdCA9ICJleGVjICR7U1JDUk9PVH0vcG9zdHByb2Nlc3MtaGVhZGVycy5zaFxuIjsKIAkJ
fTsKIAkJMzc0Rjk1QzkyMDVGOTk3NTAwMkJGNjhGIC8qIE1ha2UgbGliV1RGLmEgU3ltYm9saWMg
TGluayAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKQEAgLTEwMjAz
LDYgKzEwMjA2LDcgQEAKIAkJCQk2NTU3MEY1QTFBQTRDM0VBMDA5QjNDMjMgLyogUmVncmVzczE0
MTI3NS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUZFQjUxRjZDMUE5N0I2ODgwMDFGOTIxQyAvKiBS
ZWdyZXNzMTQxODA5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0MEY2MTAwQTRGODU2NzAwMDVG
MDYxIC8qIHRlc3RhcGkuYyBpbiBTb3VyY2VzICovLAorCQkJCTUzRUFGRTJGMjA4REZBQjQwMDdE
NTI0QiAvKiB0ZXN0YXBpLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RDIyMjFBMTY3RUY5NDQw
MDI0QzgwNCAvKiB0ZXN0YXBpLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM0OTAyODUxQzcyNzZC
NzAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CkBA
IC0xMDY3MCw2ICsxMDY3NCwxMCBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJ
CQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAv
KiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJ
SEVBREVSX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIlwiJChKQVZBU0NSSVBUQ09SRV9GUkFNRVdP
UktTX0RJUikvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzXCIiLAorCQkJ
CQkiJChpbmhlcml0ZWQpIiwKKwkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsK
QEAgLTEwNjc3LDYgKzEwNjg1LDEwIEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
IAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3
IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJ
CQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkiXCIkKEpBVkFTQ1JJUFRDT1JFX0ZSQU1F
V09SS1NfRElSKS9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnNcIiIsCisJ
CQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJ
CX07CkBAIC0xMDY4NCw2ICsxMDY5NiwxMCBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZD
NTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIlwiJChKQVZBU0NSSVBUQ09SRV9G
UkFNRVdPUktTX0RJUikvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzXCIi
LAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9kdWN0
aW9uOwogCQl9OwpAQCAtMTEwMDgsNiArMTEwMjQsMTAgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkw
MEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRp
bmdzID0geworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSJcIiQoSkFWQVNDUklQ
VENPUkVfRlJBTUVXT1JLU19ESVIpL0phdmFTY3JpcHRDb3JlLmZyYW1ld29yay9Qcml2YXRlSGVh
ZGVyc1wiIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJKTsKIAkJCX07CiAJCQluYW1lID0g
UHJvZmlsaW5nOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbmZp
Zy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbmZpZy5oCmluZGV4IDFkMWVkN2I2ZjhjNmFj
MDlmMTQ0NDRmNmVmMzgwNTYyOTk4MTlkN2UuLjU2ZWM3ZjY2N2IyZTA5YzI5M2Y1MzM5YzM1N2Ux
MzMyM2RhOTkxOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgKQEAgLTIzLDYgKzIzLDExIEBACiAj
aW5jbHVkZSAiY21ha2Vjb25maWcuaCIKICNlbmRpZgogCisjZGVmaW5lIEpTQ19BUElfQVZBSUxB
QkxFKC4uLikKKy8vIFBpY2sgc29tZSBvYnNlbmVseSBsYXJnZSBudW1iZXIgYmVjYXVzZSB3aHkg
bm90LgorI2RlZmluZSBKU0NfTUFDX1ZFUlNJT05fVEJBIDAKKyNkZWZpbmUgSlNDX0lPU19WRVJT
SU9OX1RCQSAwCisKICNpbmNsdWRlICJKU0V4cG9ydE1hY3Jvcy5oIgogCiAjaWZkZWYgX19jcGx1
c3BsdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wb3N0cHJvY2Vzcy1oZWFk
ZXJzLnNoIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bvc3Rwcm9jZXNzLWhlYWRlcnMuc2gKaW5k
ZXggYzg2MTg0MzdkMmEwNzc5NDlhNTkwYWM3MDE3ZjgyNmI1MmQ2ZDJiMy4uNzhiNGZkNDg1YWVm
MGM3NzdiYTJlMjM5YmMyNjZhMjllYWRhNGY3NiAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Bvc3Rwcm9jZXNzLWhlYWRlcnMuc2gKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Bvc3Rwcm9jZXNzLWhlYWRlcnMuc2gKQEAgLTEsMTggKzEsMTAwIEBACi1jZCAiJHtUQVJHRVRf
QlVJTERfRElSfS8ke1BVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIfSIKLQotVU5JRkRFRl9PUFRJ
T05TPSItRF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQ9JHtUQVJHRVRfTUFDX09TX1hf
VkVSU0lPTl9NQUpPUn0iCi0KLWZvciAoKGkgPSAwOyBpIDwgJHtTQ1JJUFRfSU5QVVRfRklMRV9D
T1VOVH07ICsraSkpOyBkbwotICAgIGV2YWwgSEVBREVSPVwke1NDUklQVF9JTlBVVF9GSUxFXyR7
aX19OwotICAgIHVuaWZkZWYgLUIgJHtVTklGREVGX09QVElPTlN9IC1vICIke0hFQURFUn0iLnVu
aWZkZWYgIiR7SEVBREVSfSIKLSAgICBjYXNlICQ/IGluCi0gICAgMCkKLSAgICAgICAgcm0gIiR7
SEVBREVSfSIudW5pZmRlZgotICAgICAgICA7OwotICAgIDEpCi0gICAgICAgIG12ICIke0hFQURF
Un0iey51bmlmZGVmLH0KLSAgICAgICAgOzsKLSAgICAqKQotICAgICAgICBleGl0IDEKLSAgICBl
c2FjCi1kb25lCisjIS9iaW4vc2gKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisjCisKK2lmIFtbICIke0pTQ19GUkFNRVdPUktfSEVBREVSX1BPU1RQUk9DRVNTSU5HX0RJ
U0FCTEVEfSIgPT0gIllFUyIgXV07IHRoZW4KKyAgICBleGl0IDA7CitmaQorCitUSU1FU1RBTVBf
UEFUSD0ke1RBUkdFVF9URU1QX0RJUn0vJHswIyMqL30KKworaWYgW1sgLWUgJFRJTUVTVEFNUF9Q
QVRIICYmICQwIC1udCAkVElNRVNUQU1QX1BBVEggXV07IHRoZW4KKyAgICBybSAiJHtUSU1FU1RB
TVBfUEFUSH0iOworZmkKKworZnVuY3Rpb24gcHJvY2Vzc19kZWZpbml0aW9ucyAoKSB7CisgICAg
bG9jYWwgREVGSU5JVElPTlNfRklMRT0kMQorCisgICAgaWYgW1sgISAtZiAiJHtERUZJTklUSU9O
U19GSUxFfSIgXV07IHRoZW4KKyAgICAgICAgcmV0dXJuIDEKKyAgICBmaQorCisgICAgaWYgW1sg
LWUgJFRJTUVTVEFNUF9QQVRIICYmICIke0RFRklOSVRJT05TX0ZJTEV9IiAtbnQgJFRJTUVTVEFN
UF9QQVRIIF1dOyB0aGVuCisgICAgICAgIHJtICIke1RJTUVTVEFNUF9QQVRIfSI7CisgICAgZmkK
KworICAgIHNvdXJjZSAiJHtERUZJTklUSU9OU19GSUxFfSIKK30KKworZnVuY3Rpb24gcmV3cml0
ZV9oZWFkZXJzICgpIHsKKyAgICBpZiBbWyAiJHtQTEFURk9STV9OQU1FfSIgPT0gIm1hY29zeCIg
XV07IHRoZW4KKyAgICAgICAgW1sgLW4gJHtPU1hfVkVSU0lPTn0gXV0gfHwgT1NYX1ZFUlNJT049
JHtNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVR9CisgICAgICAgIFtbIC1uICR7SU9TX1ZFUlNJT059
IF1dIHx8IElPU19WRVJTSU9OPSJOQSIKKyAgICAgICAgW1sgLW4gJHtPU1hfVkVSU0lPTl9OVU1C
RVJ9IF1dIHx8IE9TWF9WRVJTSU9OX05VTUJFUj0ke1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01B
Sk9SfQorICAgICAgICBbWyAtbiAke0lPU19WRVJTSU9OX05VTUJFUn0gXV0gfHwgSU9TX1ZFUlNJ
T05fTlVNQkVSPSIwIgorICAgIGVsaWYgW1sgIiR7UExBVEZPUk1fTkFNRX0iID1+ICJpcGhvbmUi
IF1dOyB0aGVuCisgICAgICAgIFtbIC1uICR7SU9TX1ZFUlNJT059IF1dIHx8IElPU19WRVJTSU9O
PSR7SVBIT05FT1NfREVQTE9ZTUVOVF9UQVJHRVR9CisgICAgICAgIFtbIC1uICR7T1NYX1ZFUlNJ
T059IF1dIHx8IE9TWF9WRVJTSU9OPSJOQSIKKyAgICAgICAgW1sgLW4gJHtPU1hfVkVSU0lPTl9O
VU1CRVJ9IF1dIHx8IE9TWF9WRVJTSU9OX05VTUJFUj0iMCIKKyAgICAgICAgW1sgLW4gJHtJT1Nf
VkVSU0lPTl9OVU1CRVJ9IF1dIHx8IElPU19WRVJTSU9OX05VTUJFUj0ke1RBUkdFVF9JUEhPTkVf
T1NfVkVSU0lPTl9NQUpPUn0KKyAgICBmaQorCisgICAgU0VEX09QVElPTlM9KAorICAgICkKKwor
ICAgIGlmIFtbIC1uICIkT1NYX1ZFUlNJT04iICYmIC1uICIkSU9TX1ZFUlNJT04iIF1dOyB0aGVu
CisgICAgICAgIFNFRF9PUFRJT05TKz0oCisgICAgICAgICAgICAtZSBzL0pTQ19NQUNfVEJBLyR7
T1NYX1ZFUlNJT059L2cKKyAgICAgICAgICAgIC1lIHMvSlNDX0lPU19UQkEvJHtJT1NfVkVSU0lP
Tn0vZworICAgICAgICAgICAgLWUgcy9KU0NfTUFDX1ZFUlNJT05fVEJBLyR7T1NYX1ZFUlNJT05f
TlVNQkVSfS9nCisgICAgICAgICAgICAtZSBzL0pTQ19JT1NfVkVSU0lPTl9UQkEvJHtJT1NfVkVS
U0lPTl9OVU1CRVJ9L2cKKyAgICAgICAgICAgIC1lIHMvSlNDX0FQSV9BVkFJTEFCTEUvQVBJX0FW
QUlMQUJMRS8KKyAgICAgICAgICAgIC1lIHMvSlNDX0FQSV9ERVBSRUNBVEVEL0FQSV9ERVBSRUNB
VEVELworICAgICAgICAgICAgLWUgInMvXkpTQ19DTEFTU19BVkFJTEFCTEUvSlNDX0VYVEVSTiBB
UElfQVZBSUxBQkxFLyIKKyAgICAgICAgICAgIC1lICJzL15KU0NfQ0xBU1NfREVQUkVDQVRFRC9K
U0NfRVhURVJOIEFQSV9ERVBSRUNBVEVELyIKKyAgICAgICAgKQorICAgIGVsc2UKKyAgICAgICAg
U0VEX09QVElPTlMrPSgtZSAncy9KU0NfKEFQSV98Q0xBU1NfKUFWQUlMQUJMRVwoLipcKVxzKlwp
Ly9nJyAtZSAncy9KU0NfKEFQSV98Q0xBU1NfKURFUFJFQ0FURUQoX1dJVEhfUkVQTEFDRU1FTlQp
P1woLipcKVxzKlwpLy9nJykKKyAgICBmaQorCisgICAgU0VEX09QVElPTlMrPSgke09USEVSX1NF
RF9PUFRJT05TWypdfSkKKworICAgIGZvciBIRUFERVJfUEFUSCBpbiAiJHsxfS8iKi5oOyBkbwor
ICAgICAgICBpZiBbWyAiJEhFQURFUl9QQVRIIiAtbnQgJFRJTUVTVEFNUF9QQVRIIF1dOyB0aGVu
CisgICAgICAgICAgICBkaXR0byAiJHtIRUFERVJfUEFUSH0iICIke1RBUkdFVF9URU1QX0RJUn0v
JHtIRUFERVJfUEFUSCMjKi99IgorICAgICAgICAgICAgc2VkIC1pIC50bXAgLUUgIiR7U0VEX09Q
VElPTlNbQF19IiAiJHtUQVJHRVRfVEVNUF9ESVJ9LyR7SEVBREVSX1BBVEgjIyovfSIgfHwgZXhp
dCAkPworICAgICAgICAgICAgbXYgIiR7VEFSR0VUX1RFTVBfRElSfS8ke0hFQURFUl9QQVRIIyMq
L30iICIkSEVBREVSX1BBVEgiCisgICAgICAgIGZpCisgICAgZG9uZQorfQorCitERUZJTklUSU9O
U19QQVRIPXVzci9sb2NhbC9pbmNsdWRlL1dlYktpdEFkZGl0aW9ucy9TY3JpcHRzL3Bvc3Rwcm9j
ZXNzLWZyYW1ld29yay1oZWFkZXJzLWRlZmluaXRpb25zCisKK3Byb2Nlc3NfZGVmaW5pdGlvbnMg
IiR7QlVJTFRfUFJPRFVDVFNfRElSfS8ke0RFRklOSVRJT05TX1BBVEh9IiB8fCBwcm9jZXNzX2Rl
ZmluaXRpb25zICIke1NES1JPT1R9LyR7REVGSU5JVElPTlNfUEFUSH0iCisKK3Jld3JpdGVfaGVh
ZGVycyAiJHtUQVJHRVRfQlVJTERfRElSfS8ke1BVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIfSIK
K3Jld3JpdGVfaGVhZGVycyAiJHtUQVJHRVRfQlVJTERfRElSfS8ke1BSSVZBVEVfSEVBREVSU19G
T0xERVJfUEFUSH0iCisKK3RvdWNoICR7VElNRVNUQU1QX1BBVEh9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvc2hlbGwvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvc2hlbGwvQ01ha2VMaXN0cy50eHQKaW5kZXggYjNjN2UwYjFlNjgxYjJlZWE5MTA1MmM2
YThiN2FiOTc1ZTVhMDk2ZS4uODcxNTNlMzUxYjA3NTVhZDViOTk1NDQ2MzBjM2ZlMmY0NTQ0MjI4
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3NoZWxsL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9zaGVsbC9DTWFrZUxpc3RzLnR4dApAQCAtMjgs
NiArMjgsNyBAQCBzZXQoVEVTVEFQSV9TT1VSQ0VTCiAgICAgLi4vQVBJL3Rlc3RzL1BpbmdQb25n
U3RhY2tPdmVyZmxvd1Rlc3QuY3BwCiAgICAgLi4vQVBJL3Rlc3RzL1R5cGVkQXJyYXlDVGVzdC5j
cHAKICAgICAuLi9BUEkvdGVzdHMvdGVzdGFwaS5jCisgICAgLi4vQVBJL3Rlc3RzL3Rlc3RhcGku
Y3BwCiApCiAKIFdFQktJVF9JTkNMVURFX0NPTkZJR19GSUxFU19JRl9FWElTVFMoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RtZW0vdGVzdG1lbS5tbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0bWVtL3Rlc3RtZW0ubW0KaW5kZXggYjRkMmFkMzkxMTliYzU1NThj
ZDM5YzljODE4MmZhY2VkY2JlYWYyNC4uOWJjNGI0MGUxZWFjMDIzMTdmZDNlODQ1YjQ1NGQwZjQ4
YjZlZTVjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RtZW0vdGVzdG1l
bS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdG1lbS90ZXN0bWVtLm1tCkBAIC0y
Myw2ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbXBvcnQgImNvbmZpZy5oIgog
I2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KICNpbXBvcnQgPGludHR5
cGVzLmg+CiAjaW1wb3J0IDxzdGRpby5oPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345792</attachid>
            <date>2018-07-25 15:10:05 -0700</date>
            <delta_ts>2018-07-25 16:14:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175836-20180725151003.patch</filename>
            <type>text/plain</type>
            <size>107824</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0MjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZWEwMDgyMjk3Zjg5ODZhYTA3NDM4Y2Q2OWMzZGE2NmEzZjA1MjdlLi5hNGU1NjY2OGUzOTc4MmQx
Yjg3Y2JmNDllZDBjNTcxNDAyODE4M2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDMgQEAKKzIwMTgtMDctMjUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0pTQyBBUEldIFdlIHNob3VsZCBzdXBwb3J0IHRoZSBzeW1ib2wg
dHlwZSBpbiBvdXIgQy9PYmotQyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTgzNgorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxv
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIGZvbGxvd2luZyBBUEkgYWRkaXRpb25z
OgorICAgICAgICAxKSBUZXN0IGlmIGEgSlNWYWx1ZS9KU1ZhbHVlUmVmIGlzIGEgc3ltYm9sIHZp
YSBhbnkgb2YgdGhlIG1ldGhvZHMgQVBJIGFyZSBhYmxlIHRvIHRlc3QgZm9yIHRoZSB0eXBlcyBv
ZiBvdGhlciBKU1ZhbHVlcy4KKyAgICAgICAgMikgQ3JlYXRlIGEgc3ltYm9sIG9uIGJvdGggQVBJ
cy4KKyAgICAgICAgMykgR2V0L1NldC9EZWxldGUvRGVmaW5lIHByb3BlcnR5IG5vdyB0YWtlIGlk
cyBpbiB0aGUgT2JqLUMgQVBJLgorICAgICAgICA0KSBBZGQgR2V0L1NldC9EZWxldGUgaW4gdGhl
IEMgQVBJLgorCisgICAgICAgIFdlIGNhbiBkbyAzIGJlY2F1c2UgaXQgaXMgYm90aCBiaW5hcnkg
YW5kIHNvdXJjZSBjb21wYXRhYmxlIHdpdGgKKyAgICAgICAgdGhlIGV4aXN0aW5nIEFQSS4gSSBh
ZGRlZCAoNCkgYmVjYXVzZSB0aGUgY3VycmVudCBwcm9wZXJ0eSBhY2Nlc3MKKyAgICAgICAgQVBJ
cyBvbmx5IGhhdmUgdGhlIGFiaWxpdHkgdG8gZ2V0IFN0cmluZ3MuIEl0IHdhcyBwb3NzaWJsZSB0
bworICAgICAgICBtZXJnZSBzeW1ib2xzIGludG8gSlNTdHJpbmdSZWYgYnV0IHRoYXQgZmVsdCBj
b25mdXNpbmcgYW5kIGV4cG9zZXMKKyAgICAgICAgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBv
dXIgZW5naW5lLiBUaGUgbmV3IGZ1bmN0aW9ucyBtYXRjaCB0aGUKKyAgICAgICAgc2FtZSBtZWFu
aW5nIHRoYXQgdGhleSBoYXZlIGluIEpTLCB0aHVzIHNob3VsZCBiZSBmb3J3YXJkCisgICAgICAg
IGNvbXBhdGlibGUgd2l0aCBhbnkgZnV0dXJlIGxhbmd1YWdlIGV4dGVuc2lvbnMuCisKKyAgICAg
ICAgTGFzdGx5LCB0aGlzIHBhdGNoIGFkZHMgdGhlIHNhbWUgYXZhaWxhYmlsaXR5IHByZXByb2Nj
ZXNzaW5nIHBoYXNlCisgICAgICAgIGluIFdlYkNvcmUgdG8gSmF2YVNjcmlwdENvcmUsIHdoaWNo
IGVuYWJsZXMgVEJBIGZlYXR1cmVzIGZvcgorICAgICAgICB0ZXN0aW5nIG9uIHByZXZpb3VzIHJl
bGVhc2VzLgorCisgICAgICAgICogQVBJL0pTQmFzZVByaXZhdGUuaDoKKyAgICAgICAgKiBBUEkv
SlNDb250ZXh0Lmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFByaXZhdGUuaDoKKyAgICAgICAg
KiBBUEkvSlNDb250ZXh0UmVmLmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZkludGVybmFs
Lmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaDoKKyAgICAgICAgKiBBUEkv
SlNNYW5hZ2VkVmFsdWUuaDoKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAg
ICAoSlNPYmplY3RIYXNQcm9wZXJ0eUtleSk6CisgICAgICAgIChKU09iamVjdEdldFByb3BlcnR5
S2V5KToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJvcGVydHlLZXkpOgorICAgICAgICAoSlNPYmpl
Y3REZWxldGVQcm9wZXJ0eUtleSk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmg6CisgICAg
ICAgICogQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmg6CisgICAgICAgICogQVBJL0pTVHlwZWRBcnJh
eS5oOgorICAgICAgICAqIEFQSS9KU1ZhbHVlLmg6CisgICAgICAgICogQVBJL0pTVmFsdWUubW06
CisgICAgICAgICgrW0pTVmFsdWUgdmFsdWVXaXRoTmV3U3ltYm9sRnJvbURlc2NyaXB0aW9uOmlu
Q29udGV4dDpdKToKKyAgICAgICAgKHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbik6CisgICAgICAg
ICgtW0pTVmFsdWUgdmFsdWVGb3JQcm9wZXJ0eTp2YWx1ZUZvclByb3BlcnR5Ol0pOgorICAgICAg
ICAoLVtKU1ZhbHVlIHNldFZhbHVlOmZvclByb3BlcnR5OnNldFZhbHVlOmZvclByb3BlcnR5Ol0p
OgorICAgICAgICAoLVtKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5OmRlbGV0ZVByb3BlcnR5Ol0pOgor
ICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Omhhc1Byb3BlcnR5Ol0pOgorICAgICAgICAo
LVtKU1ZhbHVlIGRlZmluZVByb3BlcnR5OmRlc2NyaXB0b3I6ZGVmaW5lUHJvcGVydHk6ZGVzY3Jp
cHRvcjpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSBpc1N5bWJvbF0pOgorICAgICAgICAoLVtKU1Zh
bHVlIG9iamVjdEZvcktleWVkU3Vic2NyaXB0Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIHNldE9i
amVjdDpmb3JLZXllZFN1YnNjcmlwdDpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSB2YWx1ZUZvclBy
b3BlcnR5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIHNldFZhbHVlOmZvclByb3Bl
cnR5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5Ol0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Ol0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtKU1ZhbHVlIGRlZmluZVByb3BlcnR5OmRlc2NyaXB0b3I6XSk6IERlbGV0ZWQuCisg
ICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgorICAgICAgICAoSlNWYWx1ZUdldFR5cGUpOgor
ICAgICAgICAoSlNWYWx1ZUlzU3ltYm9sKToKKyAgICAgICAgKEpTVmFsdWVNYWtlU3ltYm9sKToK
KyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5oOgorICAgICAgICAqIEFQSS9XZWJLaXRBdmFpbGFi
aWxpdHkuaDoKKyAgICAgICAgKiBBUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRl
clRlc3QubW06CisgICAgICAgICogQVBJL3Rlc3RzL0N1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVz
dC5jOgorICAgICAgICAqIEFQSS90ZXN0cy9EYXRlVGVzdHMubW06CisgICAgICAgICogQVBJL3Rl
c3RzL0pTRXhwb3J0VGVzdHMubW06CisgICAgICAgICogQVBJL3Rlc3RzL0pTTm9kZS5jOgorICAg
ICAgICAqIEFQSS90ZXN0cy9KU05vZGVMaXN0LmM6CisgICAgICAgICogQVBJL3Rlc3RzL05vZGUu
YzoKKyAgICAgICAgKiBBUEkvdGVzdHMvTm9kZUxpc3QuYzoKKyAgICAgICAgKiBBUEkvdGVzdHMv
bWluaWRvbS5jOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLmM6CisgICAgICAgIChtYWlu
KToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5jcHA6IEFkZGVkLgorICAgICAgICAoQVBJ
U3RyaW5nOjpBUElTdHJpbmcpOgorICAgICAgICAoQVBJU3RyaW5nOjp+QVBJU3RyaW5nKToKKyAg
ICAgICAgKEFQSVN0cmluZzo6b3BlcmF0b3IgSlNTdHJpbmdSZWYpOgorICAgICAgICAoQVBJQ29u
dGV4dDo6QVBJQ29udGV4dCk6CisgICAgICAgIChBUElDb250ZXh0Ojp+QVBJQ29udGV4dCk6Cisg
ICAgICAgIChBUElDb250ZXh0OjpvcGVyYXRvciBKU0dsb2JhbENvbnRleHRSZWYpOgorICAgICAg
ICAoQVBJVmVjdG9yOjpBUElWZWN0b3IpOgorICAgICAgICAoQVBJVmVjdG9yOjp+QVBJVmVjdG9y
KToKKyAgICAgICAgKEFQSVZlY3Rvcjo6YXBwZW5kKToKKyAgICAgICAgKHRlc3RDQVBJVmlhQ3Bw
KToKKyAgICAgICAgKFRlc3RBUEk6OmV2YWx1YXRlU2NyaXB0KToKKyAgICAgICAgKFRlc3RBUEk6
OmNhbGxGdW5jdGlvbik6CisgICAgICAgIChUZXN0QVBJOjpmdW5jdGlvblJldHVybnNUcnVlKToK
KyAgICAgICAgKFRlc3RBUEk6OmNoZWNrKToKKyAgICAgICAgKFRlc3RBUEk6OmNoZWNrSlNBbmRB
UElNYXRjaCk6CisgICAgICAgIChUZXN0QVBJOjppbnRlcmVzdGluZ09iamVjdHMpOgorICAgICAg
ICAoVGVzdEFQSTo6aW50ZXJlc3RpbmdLZXlzKToKKyAgICAgICAgKFRlc3RBUEk6OnJ1bik6Cisg
ICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkubW06CisgICAgICAgICh0ZXN0T2JqZWN0aXZlQ0FQ
SU1haW4pOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogY29uZmlnLmg6CisgICAgICAgICogcG9zdHByb2Nlc3MtaGVhZGVycy5z
aDoKKyAgICAgICAgKiB0ZXN0bWVtL3Rlc3RtZW0ubW06CisKIDIwMTgtMDctMjUgIEFuZHkgVmFu
V2Fnb25lciAgPGFuZHlAdmFud2Fnb25lci5mYW1pbHk+CiAKICAgICAgICAgW0lOVExdIENhbGwg
VHlwZWQgQXJyYXkgZWxlbWVudHMgdG9Mb2NhbGVTdHJpbmcgd2l0aCBsb2NhbGUgYW5kIG9wdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FzdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmgKaW5kZXggMmMyMjk3NWRjNzE0MDk1YTEx
ZWNiNjY5MWJmMGY3Zjk1MWFiZmQwMS4uNDkxYmI4YTU1MWJhOWVjODQ1ODA3ODViNGIzMzUwMmE4
Nzg2MmU4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmgKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkhlYXBDZWxsSW5saW5l
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFeGVjU3RhdGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZVByaXZhdGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5oCmluZGV4IDEzNzU5NDk3Mjc1ZTU4YmViMGMx
MjIxMzU1ZjlmYmVkNDNkM2IxYTUuLmI2YzkyMDRjNGNiZDcyYzRmN2M5ZjZhMWY1NGNkNWQzNDE1
NmQxNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5oCkBAIC00
Myw3ICs0Myw3IEBAIG93bnMgYSBsYXJnZSBub24tR0MgbWVtb3J5IHJlZ2lvbi4gQ2FsbGluZyB0
aGlzIGZ1bmN0aW9uIHdpbGwgZW5jb3VyYWdlIHRoZQogZ2FyYmFnZSBjb2xsZWN0b3IgdG8gY29s
bGVjdCBzb29uLCBob3BpbmcgdG8gcmVjbGFpbSB0aGF0IGxhcmdlIG5vbi1HQyBtZW1vcnkKIHJl
Z2lvbi4KICovCi1KU19FWFBPUlQgdm9pZCBKU1JlcG9ydEV4dHJhTWVtb3J5Q29zdChKU0NvbnRl
eHRSZWYgY3R4LCBzaXplX3Qgc2l6ZSkgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBP
UlQgdm9pZCBKU1JlcG9ydEV4dHJhTWVtb3J5Q29zdChKU0NvbnRleHRSZWYgY3R4LCBzaXplX3Qg
c2l6ZSkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7CiAKIEpTX0VY
UE9SVCB2b2lkIEpTRGlzYWJsZUdDVGltZXIodm9pZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ29udGV4dC5oCmluZGV4IDE5NGUzNTJiZmU3YWU3NWYyMzU4Y2VlNjNkNDQ4ZmUxZmEyNGQz
ODIuLjg5Yzg3ZjllMmUxZmYxYjE3MWIxZWJiYThjNDUyMTU5ZjQ0ZjQ3NWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHQuaApAQCAtNzgsNyArNzgsNyBAQCBOU19DTEFTU19BVkFJ
TEFCTEUoMTBfOSwgN18wKQogQHBhcmFtIHNvdXJjZVVSTCBBIFVSTCBmb3IgdGhlIHNjcmlwdCdz
IHNvdXJjZSBmaWxlLiBVc2VkIGJ5IGRlYnVnZ2VycyBhbmQgd2hlbiByZXBvcnRpbmcgZXhjZXB0
aW9ucy4gVGhpcyBwYXJhbWV0ZXIgaXMgaW5mb3JtYXRpdmUgb25seTogaXQgZG9lcyBub3QgY2hh
bmdlIHRoZSBiZWhhdmlvciBvZiB0aGUgc2NyaXB0LgogQHJlc3VsdCBUaGUgbGFzdCB2YWx1ZSBn
ZW5lcmF0ZWQgYnkgdGhlIHNjcmlwdC4KICovCi0tIChKU1ZhbHVlICopZXZhbHVhdGVTY3JpcHQ6
KE5TU3RyaW5nICopc2NyaXB0IHdpdGhTb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMIE5TX0FW
QUlMQUJMRSgxMF8xMCwgOF8wKTsKKy0gKEpTVmFsdWUgKilldmFsdWF0ZVNjcmlwdDooTlNTdHJp
bmcgKilzY3JpcHQgd2l0aFNvdXJjZVVSTDooTlNVUkwgKilzb3VyY2VVUkwgSlNDX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEKIEBtZXRob2Rncm91cCBDYWxs
YmFjayBBY2Nlc3NvcnMKQEAgLTEwMSw3ICsxMDEsNyBAQCBOU19DTEFTU19BVkFJTEFCTEUoMTBf
OSwgN18wKQogIGEgY2FsbGJhY2sgZnJvbSBKYXZhU2NyaXB0IHRoaXMgbWV0aG9kIHdpbGwgcmV0
dXJuIG5pbC4KIEByZXN1bHQgVGhlIGN1cnJlbnRseSBleGVjdXRpbmcgSmF2YVNjcmlwdCBmdW5j
dGlvbiBvciBuaWwgaWYgdGhlcmUgaXNuJ3Qgb25lLgogKi8KLSsgKEpTVmFsdWUgKiljdXJyZW50
Q2FsbGVlIE5TX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKKysgKEpTVmFsdWUgKiljdXJyZW50Q2Fs
bGVlIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBA
bWV0aG9kCkBAIC0xNzYsNyArMTc2LDcgQEAgTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzksIDdfMCkK
IEBwcm9wZXJ0eQogQGRpc2N1c3Npb24gTmFtZSBvZiB0aGUgSlNDb250ZXh0LiBFeHBvc2VkIHdo
ZW4gcmVtb3RlIGRlYnVnZ2luZyB0aGUgY29udGV4dC4KICovCi1AcHJvcGVydHkgKGNvcHkpIE5T
U3RyaW5nICpuYW1lIE5TX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0Bwcm9wZXJ0eSAoY29weSkg
TlNTdHJpbmcgKm5hbWUgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkp
OwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250
ZXh0UHJpdmF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRQcml2YXRl
LmgKaW5kZXggN2QxZDBjYmRiYjQ4YzE3MGVhNzZkMmJkNjJkNzMwYzIwMzlkNmE5NC4uZmY5NjIy
YWRkZjYwYjdjMTAzNTdkYWNjZjFjNmY0MWVjYjg2MWYxYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NvbnRleHRQcml2YXRlLmgKQEAgLTM2LDE5ICszNiwxOSBAQAogQHByb3Bl
cnR5CiBAZGlzY3Vzc2lvbiBSZW1vdGUgaW5zcGVjdGlvbiBzZXR0aW5nIG9mIHRoZSBKU0NvbnRl
eHQuIERlZmF1bHQgdmFsdWUgaXMgWUVTLgogKi8KLUBwcm9wZXJ0eSAoc2V0dGVyPV9zZXRSZW1v
dGVJbnNwZWN0aW9uRW5hYmxlZDopIEJPT0wgX3JlbW90ZUluc3BlY3Rpb25FbmFibGVkIE5TX0FW
QUlMQUJMRSgxMF8xMCwgOF8wKTsKK0Bwcm9wZXJ0eSAoc2V0dGVyPV9zZXRSZW1vdGVJbnNwZWN0
aW9uRW5hYmxlZDopIEJPT0wgX3JlbW90ZUluc3BlY3Rpb25FbmFibGVkIEpTQ19BUElfQVZBSUxB
QkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBAcHJvcGVydHkKIEBkaXNjdXNz
aW9uIFNldCB3aGV0aGVyIG9yIG5vdCB0aGUgbmF0aXZlIGNhbGwgc3RhY2sgaXMgaW5jbHVkZWQg
d2hlbiByZXBvcnRpbmcgZXhjZXB0aW9ucy4gRGVmYXVsdCB2YWx1ZSBpcyBZRVMuCiAqLwotQHBy
b3BlcnR5IChzZXR0ZXI9X3NldEluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4
Y2VwdGlvbnM6KSBCT09MIF9pbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNl
cHRpb25zIE5TX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0Bwcm9wZXJ0eSAoc2V0dGVyPV9zZXRJ
bmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zOikgQk9PTCBfaW5j
bHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucyBKU0NfQVBJX0FWQUlM
QUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qIQogQHByb3BlcnR5CiBAZGlzY3Vz
c2lvbiBTZXQgdGhlIHJ1biBsb29wIHRoZSBXZWIgSW5zcGVjdG9yIGRlYnVnZ2VyIHNob3VsZCB1
c2Ugd2hlbiBldmFsdWF0aW5nIEphdmFTY3JpcHQgaW4gdGhlIEpTQ29udGV4dC4KICovCi1AcHJv
cGVydHkgKHNldHRlcj1fc2V0RGVidWdnZXJSdW5Mb29wOikgQ0ZSdW5Mb29wUmVmIF9kZWJ1Z2dl
clJ1bkxvb3AgTlNfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworQHByb3BlcnR5IChzZXR0ZXI9X3Nl
dERlYnVnZ2VyUnVuTG9vcDopIENGUnVuTG9vcFJlZiBfZGVidWdnZXJSdW5Mb29wIEpTQ19BUElf
QVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogQGVuZAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuaAppbmRleCBlMTVjYWU1NzU3NjQ4YTJmYzhlYTIx
NzIxZWVmNTM1YmFkMzU3YjI3Li4yOGQwYTY3ZTlhZTMyNjIxMWFkOTRkZTM2YzUyNjRhNzU0MmZh
Zjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmgKQEAgLTUzLDcg
KzUzLDcgQEAgZXh0ZXJuICJDIiB7CiAgSlNDb250ZXh0R3JvdXAncyBydW4gbG9vcCBvbmNlIGl0
IGhhcyBiZWVuIGNyZWF0ZWQuCiBAcmVzdWx0IFRoZSBjcmVhdGVkIEpTQ29udGV4dEdyb3VwLgog
Ki8KLUpTX0VYUE9SVCBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHcm91cENyZWF0ZSh2b2lk
KSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCBKU0NvbnRleHRHcm91cFJlZiBK
U0NvbnRleHRHcm91cENyZWF0ZSh2b2lkKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiks
IGlvcyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTYxLDE0ICs2MSwxNCBAQCBKU19FWFBP
UlQgSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R3JvdXBDcmVhdGUodm9pZCkgQ0ZfQVZBSUxB
QkxFKDEwXzYsIDdfMCk7CiBAcGFyYW0gZ3JvdXAgVGhlIEpTQ29udGV4dEdyb3VwIHRvIHJldGFp
bi4KIEByZXN1bHQgQSBKU0NvbnRleHRHcm91cCB0aGF0IGlzIHRoZSBzYW1lIGFzIGdyb3VwLgog
Ki8KLUpTX0VYUE9SVCBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHcm91cFJldGFpbihKU0Nv
bnRleHRHcm91cFJlZiBncm91cCkgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQg
SlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R3JvdXBSZXRhaW4oSlNDb250ZXh0R3JvdXBSZWYg
Z3JvdXApIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9zKDcuMCkpOwogCiAvKiEK
IEBmdW5jdGlvbgogQGFic3RyYWN0IFJlbGVhc2VzIGEgSmF2YVNjcmlwdCBjb250ZXh0IGdyb3Vw
LgogQHBhcmFtIGdyb3VwIFRoZSBKU0NvbnRleHRHcm91cCB0byByZWxlYXNlLgogKi8KLUpTX0VY
UE9SVCB2b2lkIEpTQ29udGV4dEdyb3VwUmVsZWFzZShKU0NvbnRleHRHcm91cFJlZiBncm91cCkg
Q0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgdm9pZCBKU0NvbnRleHRHcm91cFJl
bGVhc2UoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXApIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgx
MC42KSwgaW9zKDcuMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtODMsNyArODMsNyBAQCBKU19F
WFBPUlQgdm9pZCBKU0NvbnRleHRHcm91cFJlbGVhc2UoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAp
IENGX0FWQUlMQUJMRSgxMF82LAogIE5VTEwgdG8gdXNlIHRoZSBkZWZhdWx0IG9iamVjdCBjbGFz
cy4KIEByZXN1bHQgQSBKU0dsb2JhbENvbnRleHQgd2l0aCBhIGdsb2JhbCBvYmplY3Qgb2YgY2xh
c3MgZ2xvYmFsT2JqZWN0Q2xhc3MuCiAqLwotSlNfRVhQT1JUIEpTR2xvYmFsQ29udGV4dFJlZiBK
U0dsb2JhbENvbnRleHRDcmVhdGUoSlNDbGFzc1JlZiBnbG9iYWxPYmplY3RDbGFzcykgQ0ZfQVZB
SUxBQkxFKDEwXzUsIDdfMCk7CitKU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpTR2xvYmFs
Q29udGV4dENyZWF0ZShKU0NsYXNzUmVmIGdsb2JhbE9iamVjdENsYXNzKSBKU0NfQVBJX0FWQUlM
QUJMRShtYWNvc3goMTAuNSksIGlvcyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTk3LDcg
Kzk3LDcgQEAgSlNfRVhQT1JUIEpTR2xvYmFsQ29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVh
dGUoSlNDbGFzc1JlZiBnbG9iYWxPYmplY3RDbGFzcykKIEByZXN1bHQgQSBKU0dsb2JhbENvbnRl
eHQgd2l0aCBhIGdsb2JhbCBvYmplY3Qgb2YgY2xhc3MgZ2xvYmFsT2JqZWN0Q2xhc3MgYW5kIGEg
Y29udGV4dAogIGdyb3VwIGVxdWFsIHRvIGdyb3VwLgogKi8KLUpTX0VYUE9SVCBKU0dsb2JhbENv
bnRleHRSZWYgSlNHbG9iYWxDb250ZXh0Q3JlYXRlSW5Hcm91cChKU0NvbnRleHRHcm91cFJlZiBn
cm91cCwgSlNDbGFzc1JlZiBnbG9iYWxPYmplY3RDbGFzcykgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdf
MCk7CitKU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpTR2xvYmFsQ29udGV4dENyZWF0ZUlu
R3JvdXAoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIEpTQ2xhc3NSZWYgZ2xvYmFsT2JqZWN0Q2xh
c3MpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9zKDcuMCkpOwogCiAvKiEKIEBm
dW5jdGlvbgpAQCAtMTI4LDcgKzEyOCw3IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU0NvbnRl
eHRHZXRHbG9iYWxPYmplY3QoSlNDb250ZXh0UmVmIGN0eCk7CiBAcGFyYW0gY3R4IFRoZSBKU0Nv
bnRleHQgd2hvc2UgZ3JvdXAgeW91IHdhbnQgdG8gZ2V0LgogQHJlc3VsdCBjdHgncyBncm91cC4K
ICovCi1KU19FWFBPUlQgSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R2V0R3JvdXAoSlNDb250
ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgSlNDb250ZXh0
R3JvdXBSZWYgSlNDb250ZXh0R2V0R3JvdXAoSlNDb250ZXh0UmVmIGN0eCkgSlNDX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC0xMzYs
NyArMTM2LDcgQEAgSlNfRVhQT1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdldEdyb3Vw
KEpTQ29udGV4dFJlZiBjdHgpIENGX0FWQUlMQUJMRSgxMF8KIEBwYXJhbSBjdHggVGhlIEpTQ29u
dGV4dCB3aG9zZSBnbG9iYWwgY29udGV4dCB5b3Ugd2FudCB0byBnZXQuCiBAcmVzdWx0IGN0eCdz
IGdsb2JhbCBjb250ZXh0LgogKi8KLUpTX0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgSlNDb250
ZXh0R2V0R2xvYmFsQ29udGV4dChKU0NvbnRleHRSZWYgY3R4KSBDRl9BVkFJTEFCTEUoMTBfNywg
N18wKTsKK0pTX0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgSlNDb250ZXh0R2V0R2xvYmFsQ29u
dGV4dChKU0NvbnRleHRSZWYgY3R4KSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNyksIGlv
cyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTE0Niw3ICsxNDYsNyBAQCBKU19FWFBPUlQg
SlNHbG9iYWxDb250ZXh0UmVmIEpTQ29udGV4dEdldEdsb2JhbENvbnRleHQoSlNDb250ZXh0UmVm
IGN0eCkgQ0ZfQVZBSQogQGRpc2N1c3Npb24gQSBKU0dsb2JhbENvbnRleHQncyBuYW1lIGlzIGV4
cG9zZWQgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcgdG8gbWFrZSBpdAogZWFzaWVyIHRvIGlkZW50aWZ5
IHRoZSBjb250ZXh0IHlvdSB3b3VsZCBsaWtlIHRvIGF0dGFjaCB0by4KICovCi1KU19FWFBPUlQg
SlNTdHJpbmdSZWYgSlNHbG9iYWxDb250ZXh0Q29weU5hbWUoSlNHbG9iYWxDb250ZXh0UmVmIGN0
eCkgQ0ZfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworSlNfRVhQT1JUIEpTU3RyaW5nUmVmIEpTR2xv
YmFsQ29udGV4dENvcHlOYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpIEpTQ19BUElfQVZBSUxB
QkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTE1NCw3
ICsxNTQsNyBAQCBKU19FWFBPUlQgSlNTdHJpbmdSZWYgSlNHbG9iYWxDb250ZXh0Q29weU5hbWUo
SlNHbG9iYWxDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQgogQHBhcmFtIGN0eCBUaGUgSlNHbG9i
YWxDb250ZXh0IHRoYXQgeW91IHdhbnQgdG8gbmFtZS4KIEBwYXJhbSBuYW1lIFRoZSByZW1vdGUg
ZGVidWdnaW5nIG5hbWUgdG8gc2V0IG9uIGN0eC4KICovCi1KU19FWFBPUlQgdm9pZCBKU0dsb2Jh
bENvbnRleHRTZXROYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIG5hbWUp
IENGX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0pTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29udGV4
dFNldE5hbWUoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgbmFtZSkgSlNDX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiAjaWZkZWYgX19jcGx1c3Bs
dXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVm
SW50ZXJuYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmSW50ZXJu
YWwuaAppbmRleCA3OWQ3ZWI2ZjM5ZTdlMmNhOGY0YTliOTRmMjcyMjZkYjJmNzA1Mjk1Li45ZDRm
MThhMjI5NTA3MjZkOTEwMmQyNTBiNWNhYTBjZTdhZDVjNzJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZkludGVybmFsLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWZJbnRlcm5hbC5oCkBAIC00Miw3ICs0Miw3IEBA
IGV4dGVybiAiQyIgewogQGFic3RyYWN0IEdldHMgdGhlIHJ1biBsb29wIHVzZWQgYnkgdGhlIFdl
YiBJbnNwZWN0b3IgZGVidWdnZXIgd2hlbiBldmFsdWF0aW5nIEphdmFTY3JpcHQgaW4gdGhpcyBj
b250ZXh0LgogQHBhcmFtIGN0eCBUaGUgSlNHbG9iYWxDb250ZXh0IHdob3NlIHNldHRpbmcgeW91
IHdhbnQgdG8gZ2V0LgogKi8KLUpTX0VYUE9SVCBDRlJ1bkxvb3BSZWYgSlNHbG9iYWxDb250ZXh0
R2V0RGVidWdnZXJSdW5Mb29wKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpIENGX0FWQUlMQUJMRSgx
MF8xMCwgOF8wKTsKK0pTX0VYUE9SVCBDRlJ1bkxvb3BSZWYgSlNHbG9iYWxDb250ZXh0R2V0RGVi
dWdnZXJSdW5Mb29wKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpIEpTQ19BUElfQVZBSUxBQkxFKG1h
Y29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTUwLDcgKzUwLDcg
QEAgSlNfRVhQT1JUIENGUnVuTG9vcFJlZiBKU0dsb2JhbENvbnRleHRHZXREZWJ1Z2dlclJ1bkxv
b3AoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkKIEBwYXJhbSBjdHggVGhlIEpTR2xvYmFsQ29udGV4
dCB0aGF0IHlvdSB3YW50IHRvIGNoYW5nZS4KIEBwYXJhbSBydW5Mb29wIFRoZSBuZXcgdmFsdWUg
b2YgdGhlIHNldHRpbmcgZm9yIHRoZSBjb250ZXh0LgogKi8KLUpTX0VYUE9SVCB2b2lkIEpTR2xv
YmFsQ29udGV4dFNldERlYnVnZ2VyUnVuTG9vcChKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBDRlJ1
bkxvb3BSZWYgcnVuTG9vcCkgQ0ZfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworSlNfRVhQT1JUIHZv
aWQgSlNHbG9iYWxDb250ZXh0U2V0RGVidWdnZXJSdW5Mb29wKEpTR2xvYmFsQ29udGV4dFJlZiBj
dHgsIENGUnVuTG9vcFJlZiBydW5Mb29wKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTAp
LCBpb3MoOC4wKSk7CiAjZW5kaWYKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmUHJpdmF0ZS5oCmluZGV4IDE5NjA0ZWE3NDkz
N2VmZGE5NjdjZTNkZjU3NzdkMmExNTE0ZGE4ZGMuLmVjNjc2ZDhjODcxNDgzZjgzZmNjM2M1NjRi
NTU0ZTgxNzAzNzIyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
b250ZXh0UmVmUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250
ZXh0UmVmUHJpdmF0ZS5oCkBAIC00NCw3ICs0NCw3IEBAIGV4dGVybiAiQyIgewogQHBhcmFtIGN0
eCBUaGUgSlNDb250ZXh0IHdob3NlIGJhY2t0cmFjZSB5b3Ugd2FudCB0byBnZXQKIEByZXN1bHQg
QSBzdHJpbmcgY29udGFpbmluZyB0aGUgYmFja3RyYWNlCiAqLwotSlNfRVhQT1JUIEpTU3RyaW5n
UmVmIEpTQ29udGV4dENyZWF0ZUJhY2t0cmFjZShKU0NvbnRleHRSZWYgY3R4LCB1bnNpZ25lZCBt
YXhTdGFja1NpemUpIENGX0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQT1JUIEpTU3RyaW5n
UmVmIEpTQ29udGV4dENyZWF0ZUJhY2t0cmFjZShKU0NvbnRleHRSZWYgY3R4LCB1bnNpZ25lZCBt
YXhTdGFja1NpemUpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9zKDcuMCkpOwog
ICAgIAogCiAvKiEgCkBAIC04NSwxNCArODUsMTQgQEAgdHlwZWRlZiBib29sCiAgbmVlZCB0byBj
YWxsIEpTQ29udGV4dEdyb3VwU2V0RXhlY3V0aW9uVGltZUxpbWl0IGJlZm9yZSB5b3Ugc3RhcnQg
ZXhlY3V0aW5nCiAgYW55IHNjcmlwdHMuCiAqLwotSlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3Jv
dXBTZXRFeGVjdXRpb25UaW1lTGltaXQoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIGRvdWJsZSBs
aW1pdCwgSlNTaG91bGRUZXJtaW5hdGVDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogY29udGV4dCkg
Q0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgdm9pZCBKU0NvbnRleHRHcm91cFNl
dEV4ZWN1dGlvblRpbWVMaW1pdChKU0NvbnRleHRHcm91cFJlZiBncm91cCwgZG91YmxlIGxpbWl0
LCBKU1Nob3VsZFRlcm1pbmF0ZUNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24K
IEBhYnN0cmFjdCBDbGVhcnMgdGhlIHNjcmlwdCBleGVjdXRpb24gdGltZSBsaW1pdC4KIEBwYXJh
bSBncm91cCBUaGUgSmF2YVNjcmlwdCBjb250ZXh0IGdyb3VwIHRoYXQgdGhlIHRpbWUgbGltaXQg
aXMgY2xlYXJlZCBvbi4KICovCi1KU19FWFBPUlQgdm9pZCBKU0NvbnRleHRHcm91cENsZWFyRXhl
Y3V0aW9uVGltZUxpbWl0KEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwKSBDRl9BVkFJTEFCTEUoMTBf
NiwgN18wKTsKK0pTX0VYUE9SVCB2b2lkIEpTQ29udGV4dEdyb3VwQ2xlYXJFeGVjdXRpb25UaW1l
TGltaXQoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXApIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgx
MC42KSwgaW9zKDcuMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTAxLDcgKzEwMSw3IEBAIEpT
X0VYUE9SVCB2b2lkIEpTQ29udGV4dEdyb3VwQ2xlYXJFeGVjdXRpb25UaW1lTGltaXQoSlNDb250
ZXh0R3JvdXBSZWYgZ3JvdXApIENGCiBAcmVzdWx0IFRoZSB2YWx1ZSBvZiB0aGUgc2V0dGluZywg
dHJ1ZSBpZiByZW1vdGUgaW5zcGVjdGlvbiBpcyBlbmFibGVkLCBvdGhlcndpc2UgZmFsc2UuCiBA
ZGlzY3Vzc2lvbiBSZW1vdGUgaW5zcGVjdGlvbiBpcyB0cnVlIGJ5IGRlZmF1bHQuCiAqLwotSlNf
RVhQT1JUIGJvb2wgSlNHbG9iYWxDb250ZXh0R2V0UmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQoSlNH
bG9iYWxDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworSlNfRVhQT1JU
IGJvb2wgSlNHbG9iYWxDb250ZXh0R2V0UmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQoSlNHbG9iYWxD
b250ZXh0UmVmIGN0eCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkp
OwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTA5LDcgKzEwOSw3IEBAIEpTX0VYUE9SVCBib29sIEpT
R2xvYmFsQ29udGV4dEdldFJlbW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4dFJl
ZiBjdHgpCiBAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgdGhhdCB5b3Ugd2FudCB0byBj
aGFuZ2UuCiBAcGFyYW0gZW5hYmxlZCBUaGUgbmV3IHJlbW90ZSBpbnNwZWN0aW9uIGVuYWJsZWQg
c2V0dGluZyBmb3IgdGhlIGNvbnRleHQuCiAqLwotSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxDb250
ZXh0U2V0UmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwgYm9v
bCBlbmFibGVkKSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7ICAgIAorSlNfRVhQT1JUIHZvaWQg
SlNHbG9iYWxDb250ZXh0U2V0UmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQoSlNHbG9iYWxDb250ZXh0
UmVmIGN0eCwgYm9vbCBlbmFibGVkKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBp
b3MoOC4wKSk7ICAgIAogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTE4LDcgKzExOCw3IEBAIEpTX0VY
UE9SVCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldFJlbW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xv
YmFsQ29udGV4dFJlZiBjdHgsCiBAcmVzdWx0IFRoZSB2YWx1ZSBvZiB0aGUgc2V0dGluZywgdHJ1
ZSBpZiByZW1vdGUgaW5zcGVjdGlvbiBpcyBlbmFibGVkLCBvdGhlcndpc2UgZmFsc2UuCiBAZGlz
Y3Vzc2lvbiBUaGlzIHNldHRpbmcgaXMgdHJ1ZSBieSBkZWZhdWx0LgogKi8KLUpTX0VYUE9SVCBi
b29sIEpTR2xvYmFsQ29udGV4dEdldEluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGlu
Z0V4Y2VwdGlvbnMoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEwXzEwLCA4
XzApOworSlNfRVhQT1JUIGJvb2wgSlNHbG9iYWxDb250ZXh0R2V0SW5jbHVkZXNOYXRpdmVDYWxs
U3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucyhKU0dsb2JhbENvbnRleHRSZWYgY3R4KSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qIQogQGZ1bmN0aW9u
CkBAIC0xMjYsNyArMTI2LDcgQEAgSlNfRVhQT1JUIGJvb2wgSlNHbG9iYWxDb250ZXh0R2V0SW5j
bHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucygKIEBwYXJhbSBjdHgg
VGhlIEpTR2xvYmFsQ29udGV4dCB0aGF0IHlvdSB3YW50IHRvIGNoYW5nZS4KIEBwYXJhbSBpbmNs
dWRlc05hdGl2ZUNhbGxTdGFjayBUaGUgbmV3IHZhbHVlIG9mIHRoZSBzZXR0aW5nIGZvciB0aGUg
Y29udGV4dC4KICovCi1KU19FWFBPUlQgdm9pZCBKU0dsb2JhbENvbnRleHRTZXRJbmNsdWRlc05h
dGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zKEpTR2xvYmFsQ29udGV4dFJlZiBj
dHgsIGJvb2wgaW5jbHVkZXNOYXRpdmVDYWxsU3RhY2spIENGX0FWQUlMQUJMRSgxMF8xMCwgOF8w
KTsKK0pTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldEluY2x1ZGVzTmF0aXZlQ2FsbFN0
YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwgYm9vbCBp
bmNsdWRlc05hdGl2ZUNhbGxTdGFjaykgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwg
aW9zKDguMCkpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNNYW5hZ2VkVmFsdWUuaAppbmRleCAwMTA3M2ZhZDk3ZTcwYjc2YmQ2YjY2YTM3MzNh
ZjI2MWNjNTI3NDljLi40MTgwNzRiYzQ3ZDY2YzE1ODQwN2ZlNTgzODM2OWE1MTVjMDMzNWVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5oCkBAIC01Nyw3ICs1
Nyw3IEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCiBAcmVzdWx0IFRoZSBuZXcgSlNN
YW5hZ2VkVmFsdWUuCiAqLwogKyAoSlNNYW5hZ2VkVmFsdWUgKiltYW5hZ2VkVmFsdWVXaXRoVmFs
dWU6KEpTVmFsdWUgKil2YWx1ZTsKLSsgKEpTTWFuYWdlZFZhbHVlICopbWFuYWdlZFZhbHVlV2l0
aFZhbHVlOihKU1ZhbHVlICopdmFsdWUgYW5kT3duZXI6KGlkKW93bmVyIE5TX0FWQUlMQUJMRSgx
MF8xMCwgOF8wKTsKKysgKEpTTWFuYWdlZFZhbHVlICopbWFuYWdlZFZhbHVlV2l0aFZhbHVlOihK
U1ZhbHVlICopdmFsdWUgYW5kT3duZXI6KGlkKW93bmVyIEpTQ19BUElfQVZBSUxBQkxFKG1hY29z
eCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBAbWV0aG9kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IDU2NmI3MzYyZjFiNWRmZTQ5ZWYzZDk2Y2Y1NzI0
ZWY0ODc4ZmJmODEuLjU0NTFhMmY5YTU2MTM0N2E5MjU4MWQ1ZjNlNDQyNDYyOTY5ZDQwZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCkBAIC0zNjYsNiArMzY2
LDEwMCBAQCB2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmpl
Y3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZQogICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVl
ZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pOwogfQogCitib29sIEpTT2JqZWN0SGFzUHJvcGVy
dHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIGtl
eSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEV4
ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENI
X1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAg
ICBJZGVudGlmaWVyIGlkZW50ID0gdG9KUyhleGVjLCBrZXkpLnRvUHJvcGVydHlLZXkoZXhlYyk7
CisgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24p
ID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGJvb2wgcmVzdWx0ID0ganNPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIGlkZW50KTsKKyAg
ICBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhjZXB0aW9uKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitKU1ZhbHVlUmVmIEpTT2JqZWN0R2V0UHJvcGVydHlLZXkoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIGtleSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgRXhlY1N0YXRl
KiBleGVjID0gdG9KUyhjdHgpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNMb2Nr
SG9sZGVyIGxvY2tlcih2bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUo
dm0pOworCisgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOworICAgIElkZW50
aWZpZXIgaWRlbnQgPSB0b0pTKGV4ZWMsIGtleSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBp
ZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhj
ZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBK
U1ZhbHVlIGpzVmFsdWUgPSBqc09iamVjdC0+Z2V0KGV4ZWMsIGlkZW50KTsKKyAgICBoYW5kbGVF
eGNlcHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gdG9S
ZWYoZXhlYywganNWYWx1ZSk7Cit9CisKK3ZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eUtleShKU0Nv
bnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYga2V5LCBKU1ZhbHVl
UmVmIHZhbHVlLCBKU1Byb3BlcnR5QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pCit7CisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhj
dHgpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2
bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworCisgICAgSlNP
YmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOworICAgIEpTVmFsdWUganNWYWx1ZSA9IHRv
SlMoZXhlYywgdmFsdWUpOworCisgICAgSWRlbnRpZmllciBpZGVudCA9IHRvSlMoZXhlYywga2V5
KS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChz
Y29wZSwgZXhlYywgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQorICAg
ICAgICByZXR1cm47CisKKyAgICBib29sIGRvZXNOb3RIYXZlUHJvcGVydHkgPSBhdHRyaWJ1dGVz
ICYmICFqc09iamVjdC0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpOworICAgIGlmIChMSUtFTFko
IXNjb3BlLmV4Y2VwdGlvbigpKSkgeworICAgICAgICBpZiAoZG9lc05vdEhhdmVQcm9wZXJ0eSkg
eworICAgICAgICAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2MoanNWYWx1ZSwgYXR0cmlidXRl
cyk7CisgICAgICAgICAgICBqc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9w
ZXJ0eShqc09iamVjdCwgZXhlYywgaWRlbnQsIGRlc2MsIGZhbHNlKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGpzT2JqZWN0KTsKKyAgICAgICAg
ICAgIGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dChqc09iamVjdCwgZXhlYywgaWRlbnQs
IGpzVmFsdWUsIHNsb3QpOworICAgICAgICB9CisgICAgfQorICAgIGhhbmRsZUV4Y2VwdGlvbklm
TmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pOworfQorCitib29sIEpTT2JqZWN0RGVsZXRl
UHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVl
UmVmIGtleSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmICghY3R4KSB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X0NBVENIX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0
KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gdG9KUyhleGVjLCBrZXkpLnRvUHJvcGVydHlLZXko
ZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNl
cHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGJvb2wgcmVzdWx0ID0ganNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRl
UHJvcGVydHkoanNPYmplY3QsIGV4ZWMsIGlkZW50KTsKKyAgICBoYW5kbGVFeGNlcHRpb25JZk5l
ZWRlZChzY29wZSwgZXhlYywgZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBK
U1ZhbHVlUmVmIEpTT2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KEpTQ29udGV4dFJlZiBjdHgsIEpT
T2JqZWN0UmVmIG9iamVjdCwgdW5zaWduZWQgcHJvcGVydHlJbmRleCwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKQogewogICAgIGlmICghY3R4KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2Jq
ZWN0UmVmLmgKaW5kZXggOTVkNTNiN2Y0ZTU4ZTk2ZjBjYmMzMTU5NWFmOWM0NjE5NzhhYTQzZC4u
ZGI1NTY5YTZjYmQwZWUwYjdiY2JmY2MzZTI5MmY1MzI5NzVlNjc2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaApAQCAtNDQxLDcgKzQ0MSw3IEBAIEpTX0VYUE9SVCBK
U09iamVjdFJlZiBKU09iamVjdE1ha2VDb25zdHJ1Y3RvcihKU0NvbnRleHRSZWYgY3R4LCBKU0Ns
YXNzUmVmIGpzQ2xhCiAgQGRpc2N1c3Npb24gVGhlIGJlaGF2aW9yIG9mIHRoaXMgZnVuY3Rpb24g
ZG9lcyBub3QgZXhhY3RseSBtYXRjaCB0aGUgYmVoYXZpb3Igb2YgdGhlIGJ1aWx0LWluIEFycmF5
IGNvbnN0cnVjdG9yLiBTcGVjaWZpY2FsbHksIGlmIG9uZSBhcmd1bWVudCAKICBpcyBzdXBwbGll
ZCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuIGFycmF5IHdpdGggb25lIGVsZW1lbnQuCiAgKi8K
LUpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VBcnJheShKU0NvbnRleHRSZWYgY3R4
LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCBK
U09iamVjdFJlZiBKU09iamVjdE1ha2VBcnJheShKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyoh
CiAgQGZ1bmN0aW9uCkBAIC00NTIsNyArNDUyLDcgQEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpT
T2JqZWN0TWFrZUFycmF5KEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LAog
IEBwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBz
dG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0
byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCBBIEpTT2JqZWN0IHRoYXQgaXMgYSBEYXRl
LgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRGF0ZShKU0NvbnRleHRS
ZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VY
UE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VEYXRlKEpTQ29udGV4dFJlZiBjdHgsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9zKDcuMCkpOwog
CiAvKiEKICBAZnVuY3Rpb24KQEAgLTQ2Myw3ICs0NjMsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RS
ZWYgSlNPYmplY3RNYWtlRGF0ZShKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgYwogIEBwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGlj
aCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3Qg
Y2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCBBIEpTT2JqZWN0IHRoYXQgaXMg
YSBFcnJvci4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUVycm9yKEpT
Q29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFy
Z3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF82LCA3XzAp
OworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUVycm9yKEpTQ29udGV4dFJlZiBj
dHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9z
KDcuMCkpOwogCiAvKiEKICBAZnVuY3Rpb24KQEAgLTQ3NCw3ICs0NzQsNyBAQCBKU19FWFBPUlQg
SlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRXJyb3IoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFy
Z3VtZW50Q291bnQsCiAgQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVm
IGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91
IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0IEEgSlNPYmplY3Qg
dGhhdCBpcyBhIFJlZ0V4cC4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFr
ZVJlZ0V4cChKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUo
MTBfNiwgN18wKTsKK0pTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VSZWdFeHAoSlND
b250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJn
dW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjYpLCBpb3MoNy4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC01MzYsOSArNTM2LDkgQEAg
SlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4
LCBKU09iamVjdFJlZiBvYmplY3QsIEoKIEBwYXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250ZXh0
IHRvIHVzZS4KIEBwYXJhbSBvYmplY3QgVGhlIEpTT2JqZWN0IHdob3NlIHByb3BlcnR5IHlvdSB3
YW50IHRvIHNldC4KIEBwYXJhbSBwcm9wZXJ0eU5hbWUgQSBKU1N0cmluZyBjb250YWluaW5nIHRo
ZSBwcm9wZXJ0eSdzIG5hbWUuCi1AcGFyYW0gdmFsdWUgQSBKU1ZhbHVlIHRvIHVzZSBhcyB0aGUg
cHJvcGVydHkncyB2YWx1ZS4KLUBwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1
ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlm
IHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCitAcGFyYW0gdmFsdWUgQSBK
U1ZhbHVlUmVmIHRvIHVzZSBhcyB0aGUgcHJvcGVydHkncyB2YWx1ZS4KIEBwYXJhbSBhdHRyaWJ1
dGVzIEEgbG9naWNhbGx5IE9SZWQgc2V0IG9mIEpTUHJvcGVydHlBdHRyaWJ1dGVzIHRvIGdpdmUg
dG8gdGhlIHByb3BlcnR5LgorQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVl
UmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYg
eW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICovCiBKU19FWFBPUlQgdm9p
ZCBKU09iamVjdFNldFByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVj
dCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1Byb3BlcnR5
QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCkBAIC01NTMs
NiArNTUzLDU0IEBAIEpTX0VYUE9SVCB2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHkoSlNDb250ZXh0
UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluCiAqLwogSlNfRVhQT1JUIGJvb2wg
SlNPYmplY3REZWxldGVQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmpl
Y3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKIAor
LyohCitAZnVuY3Rpb24KK0BhYnN0cmFjdCBUZXN0cyB3aGV0aGVyIGFuIG9iamVjdCBoYXMgYSBn
aXZlbiBwcm9wZXJ0eSB1c2luZyBhIEpTVmFsdWVSZWYgYXMgdGhlIHByb3BlcnR5IGtleS4KK0Bw
YXJhbSBvYmplY3QgVGhlIEpTT2JqZWN0IHRvIHRlc3QuCitAcGFyYW0gcHJvcGVydHlLZXkgQSBK
U1ZhbHVlUmVmIGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5IGtleSB0byB1c2Ugd2hlbiBsb29raW5n
IHVwIHRoZSBwcm9wZXJ0eS4KK0BwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1
ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlm
IHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCitAcmVzdWx0IHRydWUgaWYg
dGhlIG9iamVjdCBoYXMgYSBwcm9wZXJ0eSB3aG9zZSBuYW1lIG1hdGNoZXMgcHJvcGVydHlLZXks
IG90aGVyd2lzZSBmYWxzZS4KK0BkaXNjdXNzaW9uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUg
YXMgcGVyZm9ybWluZyAicHJvcGVydHlLZXkgaW4gb2JqZWN0IiBmcm9tIEphdmFTY3JpcHQuCisq
LworSlNfRVhQT1JUIGJvb2wgSlNPYmplY3RIYXNQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4
LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYgcHJvcGVydHlLZXksIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KEpTQ19NQUNfVEJBKSwgaW9zKEpT
Q19JT1NfVEJBKSk7CisKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgR2V0cyBhIHByb3BlcnR5
IGZyb20gYW4gb2JqZWN0IHVzaW5nIGEgSlNWYWx1ZVJlZiBhcyB0aGUgcHJvcGVydHkga2V5Lgor
QHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgorQHBhcmFtIG9iamVjdCBU
aGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQgdG8gZ2V0LgorQHBhcmFtIHByb3Bl
cnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBwcm9wZXJ0eSBrZXkgdG8gdXNlIHdo
ZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0
byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBh
c3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgorQHJlc3Vs
dCBUaGUgcHJvcGVydHkncyB2YWx1ZSBpZiBvYmplY3QgaGFzIHRoZSBwcm9wZXJ0eSBrZXksIG90
aGVyd2lzZSB0aGUgdW5kZWZpbmVkIHZhbHVlLgorQGRpc2N1c3Npb24gVGhpcyBmdW5jdGlvbiBp
cyB0aGUgc2FtZSBhcyBwZXJmb3JtaW5nICJvYmplY3RbcHJvcGVydHlLZXldIiBmcm9tIEphdmFT
Y3JpcHQuCisqLworSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9wZXJ0eUtleShK
U0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYgcHJvcGVydHlL
ZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KEpTQ19N
QUNfVEJBKSwgaW9zKEpTQ19JT1NfVEJBKSk7CisKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3Qg
U2V0cyBhIHByb3BlcnR5IG9uIGFuIG9iamVjdCB1c2luZyBhIEpTVmFsdWVSZWYgYXMgdGhlIHBy
b3BlcnR5IGtleS4KK0BwYXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KK0Bw
YXJhbSBvYmplY3QgVGhlIEpTT2JqZWN0IHdob3NlIHByb3BlcnR5IHlvdSB3YW50IHRvIHNldC4K
K0BwYXJhbSBwcm9wZXJ0eUtleSBBIEpTVmFsdWVSZWYgY29udGFpbmluZyB0aGUgcHJvcGVydHkg
a2V5IHRvIHVzZSB3aGVuIGxvb2tpbmcgdXAgdGhlIHByb3BlcnR5LgorQHBhcmFtIHZhbHVlIEEg
SlNWYWx1ZVJlZiB0byB1c2UgYXMgdGhlIHByb3BlcnR5J3MgdmFsdWUuCitAcGFyYW0gYXR0cmli
dXRlcyBBIGxvZ2ljYWxseSBPUmVkIHNldCBvZiBKU1Byb3BlcnR5QXR0cmlidXRlcyB0byBnaXZl
IHRvIHRoZSBwcm9wZXJ0eS4KK0BwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1
ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlm
IHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCitAZGlzY3Vzc2lvbiBUaGlz
IGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHBlcmZvcm1pbmcgIm9iamVjdFtwcm9wZXJ0eUtleV0g
PSB2YWx1ZSIgZnJvbSBKYXZhU2NyaXB0LgorKi8KK0pTX0VYUE9SVCB2b2lkIEpTT2JqZWN0U2V0
UHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVl
UmVmIHByb3BlcnR5S2V5LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1Byb3BlcnR5QXR0cmlidXRlcyBh
dHRyaWJ1dGVzLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29z
eChKU0NfTUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpOworCisvKiEKK0BmdW5jdGlvbgorQGFi
c3RyYWN0IERlbGV0ZXMgYSBwcm9wZXJ0eSBmcm9tIGFuIG9iamVjdCB1c2luZyBhIEpTVmFsdWVS
ZWYgYXMgdGhlIHByb3BlcnR5IGtleS4KK0BwYXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250ZXh0
IHRvIHVzZS4KK0BwYXJhbSBvYmplY3QgVGhlIEpTT2JqZWN0IHdob3NlIHByb3BlcnR5IHlvdSB3
YW50IHRvIGRlbGV0ZS4KK0BwYXJhbSBwcm9wZXJ0eUtleSBBIEpTVmFsdWVSZWYgY29udGFpbmlu
ZyB0aGUgcHJvcGVydHkga2V5IHRvIHVzZSB3aGVuIGxvb2tpbmcgdXAgdGhlIHByb3BlcnR5Lgor
QHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0
b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRv
IHN0b3JlIGFuIGV4Y2VwdGlvbi4KK0ByZXN1bHQgdHJ1ZSBpZiB0aGUgZGVsZXRlIG9wZXJhdGlv
biBzdWNjZWVkcywgb3RoZXJ3aXNlIGZhbHNlIChmb3IgZXhhbXBsZSwgaWYgdGhlIHByb3BlcnR5
IGhhcyB0aGUga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIGF0dHJpYnV0ZSBzZXQpLgor
QGRpc2N1c3Npb24gVGhpcyBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyBwZXJmb3JtaW5nICJkZWxl
dGUgb2JqZWN0W3Byb3BlcnR5S2V5XSIgZnJvbSBKYXZhU2NyaXB0LgorKi8KK0pTX0VYUE9SVCBi
b29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RS
ZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIHByb3BlcnR5S2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
IEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeChKU0NfTUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkp
OworCiAvKiEKIEBmdW5jdGlvbgogQGFic3RyYWN0IEdldHMgYSBwcm9wZXJ0eSBmcm9tIGFuIG9i
amVjdCBieSBudW1lcmljIGluZGV4LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1JlbW90ZUluc3BlY3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Jl
bW90ZUluc3BlY3Rvci5oCmluZGV4IGM4YmFjNmRkMGU0YTY0ODA5Y2IzNDUwY2RiYTRjMDM5N2E0
OGEwNTcuLjYxODZiOTIzZWM4YWI4Yjk0OGU3OTNhZjA0YmRkODQzMjc0MDAzNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmgKQEAgLTQwLDE0ICs0
MCwxNCBAQCB0eXBlZGVmIHBpZF90IEpTUHJvY2Vzc0lEOwogZXh0ZXJuICJDIiB7CiAjZW5kaWYK
IAotSlNfRVhQT1JUIHZvaWQgSlNSZW1vdGVJbnNwZWN0b3JEaXNhYmxlQXV0b1N0YXJ0KHZvaWQp
IENGX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsKLUpTX0VYUE9SVCB2b2lkIEpTUmVtb3RlSW5zcGVj
dG9yU3RhcnQodm9pZCkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzApOwotSlNfRVhQT1JUIHZvaWQg
SlNSZW1vdGVJbnNwZWN0b3JTZXRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24oSlNQcm9jZXNzSUQs
IGNvbnN0IHVpbnQ4X3QqIGF1ZGl0RGF0YSwgc2l6ZV90IGF1ZGl0TGVuZ3RoKSBDRl9BVkFJTEFC
TEUoMTBfMTEsIDlfMCk7CitKU19FWFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvckRpc2FibGVB
dXRvU3RhcnQodm9pZCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkp
OworSlNfRVhQT1JUIHZvaWQgSlNSZW1vdGVJbnNwZWN0b3JTdGFydCh2b2lkKSBKU0NfQVBJX0FW
QUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CitKU19FWFBPUlQgdm9pZCBKU1JlbW90
ZUluc3BlY3RvclNldFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbihKU1Byb2Nlc3NJRCwgY29uc3Qg
dWludDhfdCogYXVkaXREYXRhLCBzaXplX3QgYXVkaXRMZW5ndGgpIEpTQ19BUElfQVZBSUxBQkxF
KG1hY29zeCgxMC4xMSksIGlvcyg5LjApKTsKIAotSlNfRVhQT1JUIHZvaWQgSlNSZW1vdGVJbnNw
ZWN0b3JTZXRMb2dUb1N5c3RlbUNvbnNvbGUoYm9vbCkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzAp
OworSlNfRVhQT1JUIHZvaWQgSlNSZW1vdGVJbnNwZWN0b3JTZXRMb2dUb1N5c3RlbUNvbnNvbGUo
Ym9vbCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOwogCi1KU19F
WFBPUlQgYm9vbCBKU1JlbW90ZUluc3BlY3RvckdldEluc3BlY3Rpb25FbmFibGVkQnlEZWZhdWx0
KHZvaWQpIENGX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsKLUpTX0VYUE9SVCB2b2lkIEpTUmVtb3Rl
SW5zcGVjdG9yU2V0SW5zcGVjdGlvbkVuYWJsZWRCeURlZmF1bHQoYm9vbCkgQ0ZfQVZBSUxBQkxF
KDEwXzExLCA5XzApOworSlNfRVhQT1JUIGJvb2wgSlNSZW1vdGVJbnNwZWN0b3JHZXRJbnNwZWN0
aW9uRW5hYmxlZEJ5RGVmYXVsdCh2b2lkKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEp
LCBpb3MoOS4wKSk7CitKU19FWFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvclNldEluc3BlY3Rp
b25FbmFibGVkQnlEZWZhdWx0KGJvb2wpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSks
IGlvcyg5LjApKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1R5cGVkQXJyYXkuaAppbmRleCBlMjNiNzZkMmViNGFhNWE0OThiNTVlYmE0NzM3NDYz
ZjZjYjkzOWFjLi42ZDg2MDIyZmE1Njk5NTQ2NDZiZWVhM2FlOWVmZjdiMmNhMzZhMDFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmgKQEAgLTQ1LDcgKzQ1LDcgQEAg
ZXh0ZXJuICJDIiB7CiAgQHBhcmFtIGV4Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVl
UmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYg
eW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAg
ICAgIEEgSlNPYmplY3RSZWYgdGhhdCBpcyBhIFR5cGVkIEFycmF5IHdpdGggYWxsIGVsZW1lbnRz
IHNldCB0byB6ZXJvIG9yIE5VTEwgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgogICovCi1KU19FWFBP
UlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheShKU0NvbnRleHRSZWYgY3R4LCBK
U1R5cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgc2l6ZV90IGxlbmd0aCwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVm
IEpTT2JqZWN0TWFrZVR5cGVkQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBlZEFycmF5VHlw
ZSBhcnJheVR5cGUsIHNpemVfdCBsZW5ndGgsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9u
CkBAIC02MCw3ICs2MCw3IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBl
ZEFycmF5KEpTQ29udGV4dFJlZiBjdHgsIEpTVHlwZWRBcnJheVR5cGUKICBAcmVzdWx0ICAgICAg
ICAgICAgICAgICAgIEEgSlNPYmplY3RSZWYgVHlwZWQgQXJyYXkgd2hvc2UgYmFja2luZyBzdG9y
ZSBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIHBvaW50ZWQgdG8gYnkgYnl0ZXMgb3IgTlVMTCBpZiB0
aGVyZSB3YXMgYW4gZXJyb3IuCiAgQGRpc2N1c3Npb24gICAgICAgICAgICAgICBJZiBhbiBleGNl
cHRpb24gaXMgdGhyb3duIGR1cmluZyB0aGlzIGZ1bmN0aW9uIHRoZSBieXRlc0RlYWxsb2NhdG9y
IHdpbGwgYWx3YXlzIGJlIGNhbGxlZC4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2Jq
ZWN0TWFrZVR5cGVkQXJyYXlXaXRoQnl0ZXNOb0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBl
ZEFycmF5VHlwZSBhcnJheVR5cGUsIHZvaWQqIGJ5dGVzLCBzaXplX3QgYnl0ZUxlbmd0aCwgSlNU
eXBlZEFycmF5Qnl0ZXNEZWFsbG9jYXRvciBieXRlc0RlYWxsb2NhdG9yLCB2b2lkKiBkZWFsbG9j
YXRvckNvbnRleHQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAx
MF8wKTsKK0pTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEJ5
dGVzTm9Db3B5KEpTQ29udGV4dFJlZiBjdHgsIEpTVHlwZWRBcnJheVR5cGUgYXJyYXlUeXBlLCB2
b2lkKiBieXRlcywgc2l6ZV90IGJ5dGVMZW5ndGgsIEpTVHlwZWRBcnJheUJ5dGVzRGVhbGxvY2F0
b3IgYnl0ZXNEZWFsbG9jYXRvciwgdm9pZCogZGVhbGxvY2F0b3JDb250ZXh0LCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7
CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtNzEsNyArNzEsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RS
ZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4
LCBKUwogIEBwYXJhbSBleGNlcHRpb24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3
aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBu
b3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgICBBIEpT
T2JqZWN0UmVmIHRoYXQgaXMgYSBUeXBlZCBBcnJheSBvciBOVUxMIGlmIHRoZXJlIHdhcyBhbiBl
cnJvci4gVGhlIGJhY2tpbmcgc3RvcmUgb2YgdGhlIFR5cGVkIEFycmF5IHdpbGwgYmUgYnVmZmVy
LgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhB
cnJheUJ1ZmZlcihKU0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwg
SlNPYmplY3RSZWYgYnVmZmVyLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgx
MF8xMiwgMTBfMCk7CitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJh
eVdpdGhBcnJheUJ1ZmZlcihKU0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5
VHlwZSwgSlNPYmplY3RSZWYgYnVmZmVyLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElf
QVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpA
QCAtODQsNyArODQsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRB
cnJheVdpdGhBcnJheUJ1ZmZlcihKU0NvbnRleHRSZWYgY3R4LCBKUwogIEBwYXJhbSBleGNlcHRp
b24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNl
cHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBl
eGNlcHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgICBBIEpTT2JqZWN0UmVmIHRoYXQgaXMgYSBU
eXBlZCBBcnJheSBvciBOVUxMIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4gVGhlIGJhY2tpbmcgc3Rv
cmUgb2YgdGhlIFR5cGVkIEFycmF5IHdpbGwgYmUgYnVmZmVyLgogICovCi1KU19FWFBPUlQgSlNP
YmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhBcnJheUJ1ZmZlckFuZE9mZnNldChK
U0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgSlNPYmplY3RSZWYg
YnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVm
IEpTT2JqZWN0TWFrZVR5cGVkQXJyYXlXaXRoQXJyYXlCdWZmZXJBbmRPZmZzZXQoSlNDb250ZXh0
UmVmIGN0eCwgSlNUeXBlZEFycmF5VHlwZSBhcnJheVR5cGUsIEpTT2JqZWN0UmVmIGJ1ZmZlciwg
c2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikg
SlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1
bmN0aW9uCkBAIC05NSw3ICs5NSw3IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1h
a2VUeXBlZEFycmF5V2l0aEFycmF5QnVmZmVyQW5kT2Zmc2V0KEpTQ29udGV4dFJlCiAgQHJlc3Vs
dCAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIHJhdyBkYXRhIGJ1ZmZlciB0aGF0IHNlcnZl
cyBhcyBvYmplY3QncyBiYWNraW5nIHN0b3JlIG9yIE5VTEwgaWYgb2JqZWN0IGlzIG5vdCBhIFR5
cGVkIEFycmF5IG9iamVjdC4KICBAZGlzY3Vzc2lvbiAgICAgICAgIFRoZSBwb2ludGVyIHJldHVy
bmVkIGJ5IHRoaXMgZnVuY3Rpb24gaXMgdGVtcG9yYXJ5IGFuZCBpcyBub3QgZ3VhcmFudGVlZCB0
byByZW1haW4gdmFsaWQgYWNyb3NzIEphdmFTY3JpcHRDb3JlIEFQSSBjYWxscy4KICAqLwotSlNf
RVhQT1JUIHZvaWQqIEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5dGVzUHRyKEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFC
TEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIHZvaWQqIEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5
dGVzUHRyKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwog
CiAvKiEKICBAZnVuY3Rpb24KQEAgLTEwNSw3ICsxMDUsNyBAQCBKU19FWFBPUlQgdm9pZCogSlNP
YmplY3RHZXRUeXBlZEFycmF5Qnl0ZXNQdHIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYg
b2JqZQogIEBwYXJhbSBleGNlcHRpb24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3
aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBu
b3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgICBUaGUg
bGVuZ3RoIG9mIHRoZSBUeXBlZCBBcnJheSBvYmplY3Qgb3IgMCBpZiB0aGUgb2JqZWN0IGlzIG5v
dCBhIFR5cGVkIEFycmF5IG9iamVjdC4KICAqLwotSlNfRVhQT1JUIHNpemVfdCBKU09iamVjdEdl
dFR5cGVkQXJyYXlMZW5ndGgoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBP
UlQgc2l6ZV90IEpTT2JqZWN0R2V0VHlwZWRBcnJheUxlbmd0aChKU0NvbnRleHRSZWYgY3R4LCBK
U09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC0xMTUs
NyArMTE1LDcgQEAgSlNfRVhQT1JUIHNpemVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlMZW5ndGgo
SlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWMKICBAcGFyYW0gZXhjZXB0aW9uICAg
IEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9u
LCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0
aW9uLgogIEByZXN1bHQgICAgICAgICAgICAgVGhlIGJ5dGUgbGVuZ3RoIG9mIHRoZSBUeXBlZCBB
cnJheSBvYmplY3Qgb3IgMCBpZiB0aGUgb2JqZWN0IGlzIG5vdCBhIFR5cGVkIEFycmF5IG9iamVj
dC4KICAqLwotSlNfRVhQT1JUIHNpemVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlCeXRlTGVuZ3Ro
KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIHNpemVfdCBKU09iamVj
dEdldFR5cGVkQXJyYXlCeXRlTGVuZ3RoKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9i
amVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAu
MTIpLCBpb3MoMTAuMCkpOwogCiAvKiEKICBAZnVuY3Rpb24KQEAgLTEyNSw3ICsxMjUsNyBAQCBK
U19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5dGVMZW5ndGgoSlNDb250ZXh0
UmVmIGN0eCwgSlNPYmplY3RSZWYgbwogIEBwYXJhbSBleGNlcHRpb24gICAgQSBwb2ludGVyIHRv
IGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFz
cyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3Vs
dCAgICAgICAgICAgICBUaGUgYnl0ZSBvZmZzZXQgb2YgdGhlIFR5cGVkIEFycmF5IG9iamVjdCBv
ciAwIGlmIHRoZSBvYmplY3QgaXMgbm90IGEgVHlwZWQgQXJyYXkgb2JqZWN0LgogICovCi1KU19F
WFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoSlNDb250ZXh0UmVm
IGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlM
QUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4w
KSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtMTM1LDcgKzEzNSw3IEBAIEpTX0VYUE9SVCBzaXpl
X3QgSlNPYmplY3RHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldChKU0NvbnRleHRSZWYgY3R4LCBKU09i
amVjdFJlZiBvCiAgQHBhcmFtIGV4Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVm
IGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91
IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAgICAg
IEEgSlNPYmplY3RSZWYgd2l0aCBhIEpTVHlwZWRBcnJheVR5cGUgb2Yga0pTVHlwZWRBcnJheVR5
cGVBcnJheUJ1ZmZlciBvciBOVUxMIGlmIG9iamVjdCBpcyBub3QgYSBUeXBlZCBBcnJheS4KICAq
LwotSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ1ZmZlcihKU0Nv
bnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikg
Q0ZfQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK0pTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVj
dEdldFR5cGVkQXJyYXlCdWZmZXIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiks
IGlvcygxMC4wKSk7CiAKIC8vIC0tLS0tLS0tLS0tLS0gQXJyYXkgQnVmZmVyIGZ1bmN0aW9ucyAt
LS0tLS0tLS0tLS0tCiAKQEAgLTE1MSw3ICsxNTEsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYg
SlNPYmplY3RHZXRUeXBlZEFycmF5QnVmZmVyKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVm
CiAgQHJlc3VsdCAgICAgICAgICAgICAgICAgICBBIEpTT2JqZWN0UmVmIEFycmF5IEJ1ZmZlciB3
aG9zZSBiYWNraW5nIHN0b3JlIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgcG9pbnRlZCB0byBieSBi
eXRlcyBvciBOVUxMIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KICBAZGlzY3Vzc2lvbiAgICAgICAg
ICAgICAgIElmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZHVyaW5nIHRoaXMgZnVuY3Rpb24gdGhl
IGJ5dGVzRGVhbGxvY2F0b3Igd2lsbCBhbHdheXMgYmUgY2FsbGVkLgogICovCi1KU19FWFBPUlQg
SlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQXJyYXlCdWZmZXJXaXRoQnl0ZXNOb0NvcHkoSlNDb250
ZXh0UmVmIGN0eCwgdm9pZCogYnl0ZXMsIHNpemVfdCBieXRlTGVuZ3RoLCBKU1R5cGVkQXJyYXlC
eXRlc0RlYWxsb2NhdG9yIGJ5dGVzRGVhbGxvY2F0b3IsIHZvaWQqIGRlYWxsb2NhdG9yQ29udGV4
dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNf
RVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUFycmF5QnVmZmVyV2l0aEJ5dGVzTm9Db3B5
KEpTQ29udGV4dFJlZiBjdHgsIHZvaWQqIGJ5dGVzLCBzaXplX3QgYnl0ZUxlbmd0aCwgSlNUeXBl
ZEFycmF5Qnl0ZXNEZWFsbG9jYXRvciBieXRlc0RlYWxsb2NhdG9yLCB2b2lkKiBkZWFsbG9jYXRv
ckNvbnRleHQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC0xNjEsNyArMTYxLDcg
QEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUFycmF5QnVmZmVyV2l0aEJ5dGVz
Tm9Db3B5KEpTQ29udGV4dFJlZiBjdHgsIHYKICBAcmVzdWx0ICAgICAgICAgICBBIHBvaW50ZXIg
dG8gdGhlIHJhdyBkYXRhIGJ1ZmZlciB0aGF0IHNlcnZlcyBhcyBvYmplY3QncyBiYWNraW5nIHN0
b3JlIG9yIE5VTEwgaWYgb2JqZWN0IGlzIG5vdCBhbiBBcnJheSBCdWZmZXIgb2JqZWN0LgogIEBk
aXNjdXNzaW9uICAgICAgIFRoZSBwb2ludGVyIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24gaXMg
dGVtcG9yYXJ5IGFuZCBpcyBub3QgZ3VhcmFudGVlZCB0byByZW1haW4gdmFsaWQgYWNyb3NzIEph
dmFTY3JpcHRDb3JlIEFQSSBjYWxscy4KICAqLwotSlNfRVhQT1JUIHZvaWQqIEpTT2JqZWN0R2V0
QXJyYXlCdWZmZXJCeXRlc1B0cihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3Qs
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK0pTX0VY
UE9SVCB2b2lkKiBKU09iamVjdEdldEFycmF5QnVmZmVyQnl0ZXNQdHIoSlNDb250ZXh0UmVmIGN0
eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZB
SUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAt
MTcxLDcgKzE3MSw3IEBAIEpTX0VYUE9SVCB2b2lkKiBKU09iamVjdEdldEFycmF5QnVmZmVyQnl0
ZXNQdHIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqCiAgQHBhcmFtIGV4Y2VwdGlv
biAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRp
b24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNl
cHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgVGhlIG51bWJlciBvZiBieXRlcyBzdG9yZWQgaW4g
dGhlIGRhdGEgb2JqZWN0LgogICovCi1KU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0QXJyYXlC
dWZmZXJCeXRlTGVuZ3RoKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JU
IHNpemVfdCBKU09iamVjdEdldEFycmF5QnVmZmVyQnl0ZUxlbmd0aChKU0NvbnRleHRSZWYgY3R4
LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oCmluZGV4IDE0MTBkZDc0YTE3Zjk3MDcwNmU0
NGRlZDI0Y2NkMTcwYzM0NzljMmUuLjgzZTlmNWFhYzE5YTRmNjNiOWYwMzgxNzdjZjhjNmNiOTg0
ZGVjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oCkBAIC0xNDgsNiArMTQ4LDE1
IEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCiAqLwogKyAoSlNWYWx1ZSAqKXZhbHVl
V2l0aFVuZGVmaW5lZEluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKIAorLyohCisgQG1l
dGhvZAorIEBhYnN0cmFjdCBDcmVhdGUgYSBuZXcsIHVuaXF1ZSwgc3ltYm9sIG9iamVjdC4KKyBA
cGFyYW0gZGVzY3JpcHRpb24gVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBzeW1ib2wgb2JqZWN0IGJl
aW5nIGNyZWF0ZWQuCisgQHBhcmFtIGNvbnRleHQgVGhlIEpTQ29udGV4dCB0byB3aGljaCB0aGUg
cmVzdWx0aW5nIEpTVmFsdWUgYmVsb25ncy4KKyBAcmVzdWx0IFRoZSBKU1ZhbHVlIHJlcHJlc2Vu
dGluZyBhIHVuaXF1ZSBKYXZhU2NyaXB0IHZhbHVlIHdpdGggdHlwZSBzeW1ib2wuCisgKi8KKysg
KEpTVmFsdWUgKil2YWx1ZVdpdGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246KE5TU3RyaW5nICop
ZGVzY3JpcHRpb24gaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0IEpTQ19BUElfQVZBSUxB
QkxFKG1hY29zeChKU0NfTUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpOworCiAvKiEKIEBtZXRo
b2Rncm91cCBDb252ZXJ0aW5nIHRvIE9iamVjdGl2ZS1DIFR5cGVzCiBAZGlzY3Vzc2lvbiBXaGVu
IGNvbnZlcnRpbmcgYmV0d2VlbiBKYXZhU2NyaXB0IHZhbHVlcyBhbmQgT2JqZWN0aXZlLUMgb2Jq
ZWN0cyBhIGNvcHkgaXMKQEAgLTMwNSw0MyArMzE0LDUyIEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgx
MF85LCA3XzApCiAvKiEKIEBtZXRob2Rncm91cCBBY2Nlc3NpbmcgUHJvcGVydGllcwogKi8KKwor
I2lmICEoKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IEpTQ19NQUNfVkVSU0lPTl9UQkEpIHx8IChkZWZp
bmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA8IEpTQ19JT1NfVkVSU0lPTl9UQkEpKQorCiAvKiEKIEBtZXRob2QK
IEBhYnN0cmFjdCBBY2Nlc3MgYSBwcm9wZXJ0eSBvZiBhIEpTVmFsdWUuCiBAcmVzdWx0IFRoZSBK
U1ZhbHVlIGZvciB0aGUgcmVxdWVzdGVkIHByb3BlcnR5IG9yIHRoZSBKU1ZhbHVlIDxjb2RlPnVu
ZGVmaW5lZDwvY29kZT4gCiAgaWYgdGhlIHByb3BlcnR5IGRvZXMgbm90IGV4aXN0LgorQGRpc2N1
c3Npb24gQ29ycmVzcG9uZHMgdG8gdGhlIEphdmFTY3JpcHQgb3BlcmF0aW9uIDxjb2RlPm9iamVj
dFtwcm9wZXJ0eV08L2NvZGU+LiBQYXNzIGFuIE5TU3RyaW5nICogdG8gYWNjZXNzIGEgbmFtZWQg
cHJvcGVydHkuIE90aGVyIHZhbGlkIHByb3BlcnRpZXMgaW5jbHVkZSBzeW1ib2xzLCBudW1iZXJz
LCBhbmQgc3RyaW5naWZpYWJsZSBvYmplY3RzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9TIDExIGFu
ZCBiZWxvdywgJ3Byb3BlcnR5JyB3YXMgYW4gTlNTdHJpbmcgKi4KICovCi0tIChKU1ZhbHVlICop
dmFsdWVGb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKEpTVmFsdWUgKil2YWx1
ZUZvclByb3BlcnR5OihpZClwcm9wZXJ0eTsKIAogLyohCiBAbWV0aG9kCiBAYWJzdHJhY3QgU2V0
IGEgcHJvcGVydHkgb24gYSBKU1ZhbHVlLgorQGRpc2N1c3Npb24gQ29ycmVzcG9uZHMgdG8gdGhl
IEphdmFTY3JpcHQgb3BlcmF0aW9uIDxjb2RlPm9iamVjdFtwcm9wZXJ0eV0gPSB2YWx1ZTwvY29k
ZT4uIFBhc3MgYW4gTlNTdHJpbmcgKiB0byBhY2Nlc3MgYSBuYW1lZCBwcm9wZXJ0eS4gT3RoZXIg
dmFsaWQgcHJvcGVydGllcyBpbmNsdWRlIHN5bWJvbHMsIG51bWJlcnMsIGFuZCBzdHJpbmdpZmlh
YmxlIG9iamVjdHMuIEluIG1hY09TIDEwLjEzIGFuZCBpT1MgMTEgYW5kIGJlbG93LCAncHJvcGVy
dHknIHdhcyBhbiBOU1N0cmluZyAqLgogKi8KLS0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZv
clByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLSAodm9pZClzZXRWYWx1ZTooaWQpdmFs
dWUgZm9yUHJvcGVydHk6KGlkKXByb3BlcnR5OwogCiAvKiEKIEBtZXRob2QKIEBhYnN0cmFjdCBE
ZWxldGUgYSBwcm9wZXJ0eSBmcm9tIGEgSlNWYWx1ZS4KIEByZXN1bHQgWUVTIGlmIGRlbGV0aW9u
IGlzIHN1Y2Nlc3NmdWwsIE5PIG90aGVyd2lzZS4KK0BkaXNjdXNzaW9uIENvcnJlc3BvbmRzIHRv
IHRoZSBKYXZhU2NyaXB0IG9wZXJhdGlvbiA8Y29kZT5kZWxldGUgb2JqZWN0W3Byb3BlcnR5XTwv
Y29kZT4uIFBhc3MgYW4gTlNTdHJpbmcgKiB0byBhY2Nlc3MgYSBuYW1lZCBwcm9wZXJ0eS4gT3Ro
ZXIgdmFsaWQgcHJvcGVydGllcyBpbmNsdWRlIHN5bWJvbHMsIG51bWJlcnMsIGFuZCBzdHJpbmdp
ZmlhYmxlIG9iamVjdHMuIEluIG1hY09TIDEwLjEzIGFuZCBpT1MgMTEgYW5kIGJlbG93LCAncHJv
cGVydHknIHdhcyBhbiBOU1N0cmluZyAqLgogKi8KLS0gKEJPT0wpZGVsZXRlUHJvcGVydHk6KE5T
U3RyaW5nICopcHJvcGVydHk7CistIChCT09MKWRlbGV0ZVByb3BlcnR5OihpZClwcm9wZXJ0eTsK
IAogLyohCiBAbWV0aG9kCiBAYWJzdHJhY3QgQ2hlY2sgaWYgYSBKU1ZhbHVlIGhhcyBhIHByb3Bl
cnR5LgogQGRpc2N1c3Npb24gVGhpcyBtZXRob2QgaGFzIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIHRo
ZSBKYXZhU2NyaXB0IG9wZXJhdG9yIDxjb2RlPmluPC9jb2RlPi4KIEByZXN1bHQgUmV0dXJucyBZ
RVMgaWYgcHJvcGVydHkgaXMgcHJlc2VudCBvbiB0aGUgdmFsdWUuCitAZGlzY3Vzc2lvbiBDb3Jy
ZXNwb25kcyB0byB0aGUgSmF2YVNjcmlwdCBvcGVyYXRpb24gPGNvZGU+cHJvcGVydHkgaW4gb2Jq
ZWN0PC9jb2RlPi4gUGFzcyBhbiBOU1N0cmluZyAqIHRvIGFjY2VzcyBhIG5hbWVkIHByb3BlcnR5
LiBPdGhlciB2YWxpZCBwcm9wZXJ0aWVzIGluY2x1ZGUgc3ltYm9scywgbnVtYmVycywgYW5kIHN0
cmluZ2lmaWFibGUgb2JqZWN0cy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUyAxMSBhbmQgYmVsb3cs
ICdwcm9wZXJ0eScgd2FzIGFuIE5TU3RyaW5nICouCiAqLwotLSAoQk9PTCloYXNQcm9wZXJ0eToo
TlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKEJPT0wpaGFzUHJvcGVydHk6KGlkKXByb3BlcnR5Owog
CiAvKiEKIEBtZXRob2QKIEBhYnN0cmFjdCBEZWZpbmUgcHJvcGVydGllcyB3aXRoIGN1c3RvbSBk
ZXNjcmlwdG9ycyBvbiBKU1ZhbHVlcy4KIEBkaXNjdXNzaW9uIFRoaXMgbWV0aG9kIG1heSBiZSB1
c2VkIHRvIGNyZWF0ZSBhIGRhdGEgb3IgYWNjZXNzb3IgcHJvcGVydHkgb24gYW4gb2JqZWN0Lgog
IFRoaXMgbWV0aG9kIG9wZXJhdGVzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5IG1ldGhvZCBpbiB0aGUgCi0gSmF2YVNjcmlwdCBsYW5ndWFnZS4KKyBKYXZhU2Ny
aXB0IGxhbmd1YWdlLiBQYXNzIGFuIE5TU3RyaW5nICogdG8gYWNjZXNzIGEgbmFtZWQgcHJvcGVy
dHkuIE90aGVyIHZhbGlkIHByb3BlcnRpZXMgaW5jbHVkZSBzeW1ib2xzLCBudW1iZXJzLCBhbmQg
c3RyaW5naWZpYWJsZSBvYmplY3RzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9TIDExIGFuZCBiZWxv
dywgJ3Byb3BlcnR5JyB3YXMgYW4gTlNTdHJpbmcgKi4KICovCi0tICh2b2lkKWRlZmluZVByb3Bl
cnR5OihOU1N0cmluZyAqKXByb3BlcnR5IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0b3I7CistICh2
b2lkKWRlZmluZVByb3BlcnR5OihpZClwcm9wZXJ0eSBkZXNjcmlwdG9yOihpZClkZXNjcmlwdG9y
OworCisjZW5kaWYgLy8gISgoZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgSlNDX01BQ19WRVJTSU9OX1RC
QSkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgSlNDX0lPU19WRVJTSU9OX1RCQSkpCiAKIC8q
IQogQG1ldGhvZApAQCAtNDAyLDE3ICs0MjAsMjMgQEAgTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzks
IDdfMCkKICovCiBAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGlzT2JqZWN0OwogCisvKiEKK0Bw
cm9wZXJ0eQorQGFic3RyYWN0IENoZWNrIGlmIGEgSlNWYWx1ZSBpcyBhIHN5bWJvbC4KKyovCitA
cHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGlzU3ltYm9sIEpTQ19BUElfQVZBSUxBQkxFKG1hY29z
eChKU0NfTUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpOworCiAvKiEKIEBwcm9wZXJ0eQogQGFi
c3RyYWN0IENoZWNrIGlmIGEgSlNWYWx1ZSBpcyBhbiBhcnJheS4KICovIAotQHByb3BlcnR5IChy
ZWFkb25seSkgQk9PTCBpc0FycmF5IE5TX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsKK0Bwcm9wZXJ0
eSAocmVhZG9ubHkpIEJPT0wgaXNBcnJheSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEp
LCBpb3MoOS4wKSk7CiAKIC8qIQogQHByb3BlcnR5CiBAYWJzdHJhY3QgQ2hlY2sgaWYgYSBKU1Zh
bHVlIGlzIGEgZGF0ZS4KICovIAotQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBpc0RhdGUgTlNf
QVZBSUxBQkxFKDEwXzExLCA5XzApOworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBpc0RhdGUg
SlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOwogCiAvKiEKIEBtZXRo
b2QKQEAgLTU2OSwxMyArNTkzLDE2IEBAIENyZWF0ZSBhIEpTVmFsdWUgZnJvbSBhIENHUmVjdC4K
IEAvdGV4dGJsb2NrCiAKICBBbiBvYmplY3Qga2V5IHBhc3NlZCBhcyBhIHN1YnNjcmlwdCB3aWxs
IGJlIGNvbnZlcnRlZCB0byBhIEphdmFTY3JpcHQgdmFsdWUsCi0gYW5kIHRoZW4gdGhlIHZhbHVl
IGNvbnZlcnRlZCB0byBhIHN0cmluZyB1c2VkIGFzIGEgcHJvcGVydHkgbmFtZS4KKyBhbmQgdGhl
biB0aGUgdmFsdWUgY29udmVydGVkIHRvIGEgc3RyaW5nIHVzZWQgYXMgYSBwcm9wZXJ0eSBuYW1l
LiBJbiBtYWNPUworIDEwLjEzIGFuZCBpT1MgMTEgYW5kIGJlbG93LCB0aGUgPGNvZGU+a2V5PC9j
b2RlPiBhcmd1bWVudCBvZgorIDxjb2RlPnNldE9iamVjdDpvYmplY3QgZm9yS2V5ZWRTdWJzY3Jp
cHQ6a2V5PC9jb2RlPiB3YXMgcmVzdHJpY3RlZCB0byBhbgorIDxjb2RlPk5TU3RyaW5nIDxOU0Nv
cHlpbmc+ICo8L2NvZGU+IGJ1dCB0aGF0IHJlc3RyaWN0aW9uIHdhcyBuZXZlciB1c2VkLgogKi8K
IEBpbnRlcmZhY2UgSlNWYWx1ZSAoU3Vic2NyaXB0U3VwcG9ydCkKIAogLSAoSlNWYWx1ZSAqKW9i
amVjdEZvcktleWVkU3Vic2NyaXB0OihpZClrZXk7CiAtIChKU1ZhbHVlICopb2JqZWN0QXRJbmRl
eGVkU3Vic2NyaXB0OihOU1VJbnRlZ2VyKWluZGV4OwotLSAodm9pZClzZXRPYmplY3Q6KGlkKW9i
amVjdCBmb3JLZXllZFN1YnNjcmlwdDooTlNPYmplY3QgPE5TQ29weWluZz4gKilrZXk7CistICh2
b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGZvcktleWVkU3Vic2NyaXB0OihpZClrZXk7CiAtICh2
b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGF0SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilp
bmRleDsKIAogQGVuZApAQCAtNjYzLDYgKzY5MCw1MyBAQCBKU19FWFBPUlQgZXh0ZXJuIE5TU3Ry
aW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXk7CiB9IC8vIGV4dGVybiAiQyIK
ICNlbmRpZgogCisjaWYgKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IEpTQ19NQUNfVkVSU0lPTl9UQkEp
IHx8IChkZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IEpTQ19JT1NfVkVSU0lPTl9UQkEpCisKKy8vIFRo
ZXNlIGRlY2xhcmF0aW9ucyBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2hlbiB0YXJnZXRpbmcgU0RL
cyBmb3IgbGVnYWN5IE9Tcy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUyAxMSBhbmQgYmVsb3csICdw
cm9wZXJ0eScgd2FzIGFuIE5TU3RyaW5nICouCitAaW50ZXJmYWNlIEpTVmFsdWUgKExlZ2FjeVNE
S1N1cHBvcnQpCisKKy8qIQorQG1ldGhvZAorQGFic3RyYWN0IEFjY2VzcyBhIHByb3BlcnR5IG9m
IGEgSlNWYWx1ZS4KK0ByZXN1bHQgVGhlIEpTVmFsdWUgZm9yIHRoZSByZXF1ZXN0ZWQgcHJvcGVy
dHkgb3IgdGhlIEpTVmFsdWUgPGNvZGU+dW5kZWZpbmVkPC9jb2RlPgoraWYgdGhlIHByb3BlcnR5
IGRvZXMgbm90IGV4aXN0LgorKi8KKy0gKEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihOU1N0
cmluZyAqKXByb3BlcnR5OworCisvKiEKK0BtZXRob2QKK0BhYnN0cmFjdCBTZXQgYSBwcm9wZXJ0
eSBvbiBhIEpTVmFsdWUuCisqLworLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yUHJvcGVy
dHk6KE5TU3RyaW5nICopcHJvcGVydHk7CisKKy8qIQorIEBtZXRob2QKKyBAYWJzdHJhY3QgRGVs
ZXRlIGEgcHJvcGVydHkgZnJvbSBhIEpTVmFsdWUuCisgQHJlc3VsdCBZRVMgaWYgZGVsZXRpb24g
aXMgc3VjY2Vzc2Z1bCwgTk8gb3RoZXJ3aXNlLgorICovCistIChCT09MKWRlbGV0ZVByb3BlcnR5
OihOU1N0cmluZyAqKXByb3BlcnR5OworCisvKiEKKyBAbWV0aG9kCisgQGFic3RyYWN0IENoZWNr
IGlmIGEgSlNWYWx1ZSBoYXMgYSBwcm9wZXJ0eS4KKyBAZGlzY3Vzc2lvbiBUaGlzIG1ldGhvZCBo
YXMgdGhlIHNhbWUgZnVuY3Rpb24gYXMgdGhlIEphdmFTY3JpcHQgb3BlcmF0b3IgPGNvZGU+aW48
L2NvZGU+LgorIEByZXN1bHQgUmV0dXJucyBZRVMgaWYgcHJvcGVydHkgaXMgcHJlc2VudCBvbiB0
aGUgdmFsdWUuCisgKi8KKy0gKEJPT0wpaGFzUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7
CisKKy8qIQorIEBtZXRob2QKKyBAYWJzdHJhY3QgRGVmaW5lIHByb3BlcnRpZXMgd2l0aCBjdXN0
b20gZGVzY3JpcHRvcnMgb24gSlNWYWx1ZXMuCisgQGRpc2N1c3Npb24gVGhpcyBtZXRob2QgbWF5
IGJlIHVzZWQgdG8gY3JlYXRlIGEgZGF0YSBvciBhY2Nlc3NvciBwcm9wZXJ0eSBvbiBhbiBvYmpl
Y3QuCisgVGhpcyBtZXRob2Qgb3BlcmF0ZXMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkgbWV0aG9kIGluIHRoZQorIEphdmFTY3JpcHQgbGFuZ3VhZ2UuCisgKi8K
Ky0gKHZvaWQpZGVmaW5lUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHkgZGVzY3JpcHRvcjoo
aWQpZGVzY3JpcHRvcjsKKworQGVuZAorCisjZW5kaWYKKwogI2VuZGlmCiAKICNlbmRpZiAvLyBK
U1ZhbHVlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5t
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQppbmRleCBhMjY2ODQ0OGZm
YmM3YmY1NTM0Mzc0ZDE3ZGEyYmViNGM3NDE5ODgzLi45Yzk2YzlkNjk1MDM5NDMzNmQxNjg1MjNi
M2M2MzA2N2YzYTM3MWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWUubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCkBAIC0z
OSw2ICszOSw3IEBACiAjaW1wb3J0ICJKU0NKU1ZhbHVlLmgiCiAjaW1wb3J0ICJTdHJvbmcuaCIK
ICNpbXBvcnQgIlN0cm9uZ0lubGluZXMuaCIKKyNpbXBvcnQgPHd0Zi9FeHBlY3RlZC5oPgogI2lt
cG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0IDx3
dGYvTG9jay5oPgpAQCAtMTUxLDYgKzE1MiwxMyBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVy
dHlEZXNjcmlwdG9yU2V0S2V5ID0gQCJzZXQiOwogICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdp
dGhKU1ZhbHVlUmVmOkpTVmFsdWVNYWtlVW5kZWZpbmVkKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4
dFJlZl0pIGluQ29udGV4dDpjb250ZXh0XTsKIH0KIAorKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aE5l
d1N5bWJvbEZyb21EZXNjcmlwdGlvbjooTlNTdHJpbmcgKilkZXNjcmlwdGlvbiBpbkNvbnRleHQ6
KEpTQ29udGV4dCAqKWNvbnRleHQKK3sKKyAgICBKU1N0cmluZ1JlZiBzdHJpbmcgPSBKU1N0cmlu
Z0NyZWF0ZVdpdGhDRlN0cmluZyhyZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihkZXNjcmlw
dGlvbikpOworICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOkpTVmFsdWVN
YWtlU3ltYm9sKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIHN0cmluZykgaW5Db250ZXh0
OmNvbnRleHRdOworfQorCisKIC0gKGlkKXRvT2JqZWN0CiB7CiAgICAgcmV0dXJuIHZhbHVlVG9P
YmplY3QoX2NvbnRleHQsIG1fdmFsdWUpOwpAQCAtMjM0LDcyICsyNDIsMTAwIEBAIE5TU3RyaW5n
ICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXkgPSBAInNldCI7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KE5TU3RyaW5nICop
cHJvcGVydHlOYW1lCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHQsIHR5cGVuYW1lIE5TU3RyaW5n
RnVuY3Rpb24sIHR5cGVuYW1lIEpTVmFsdWVGdW5jdGlvbiwgdHlwZW5hbWUuLi4gVHlwZXM+Citp
bmxpbmUgRXhwZWN0ZWQ8UmVzdWx0LCBKU1ZhbHVlUmVmPiBwZXJmb3JtUHJvcGVydHlPcGVyYXRp
b24oTlNTdHJpbmdGdW5jdGlvbiBzdHJpbmdGdW5jdGlvbiwgSlNWYWx1ZUZ1bmN0aW9uIGpzRnVu
Y3Rpb24sIEpTVmFsdWUqIHZhbHVlLCBpZCBwcm9wZXJ0eUtleSwgVHlwZXMuLi4gYXJndW1lbnRz
KQogewotICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBKU09iamVjdFJlZiBvYmpl
Y3QgPSBKU1ZhbHVlVG9PYmplY3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFs
dWUsICZleGNlcHRpb24pOwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbX2Nv
bnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07Ci0KLSAgICBKU1N0cmlu
Z1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5n
UmVmKXByb3BlcnR5TmFtZSk7Ci0gICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU09iamVjdEdldFBy
b3BlcnR5KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIG5hbWUsICZleGNl
cHRpb24pOwotICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKKyAgICBKU0NvbnRleHQqIGNvbnRl
eHQgPSBbdmFsdWUgY29udGV4dF07CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRy
OworICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChbY29udGV4dCBKU0ds
b2JhbENvbnRleHRSZWZdLCBbdmFsdWUgSlNWYWx1ZVJlZl0sICZleGNlcHRpb24pOwogICAgIGlm
IChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbX2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhj
ZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgICAgIHJldHVybiBVbmV4cGVjdGVkPEpTVmFsdWVSZWY+
KGV4Y2VwdGlvbik7CisKKyAgICBSZXN1bHQgcmVzdWx0OworICAgIC8vIElmIGl0J3MgYSBOU1N0
cmluZyBhbHJlYWR5LCByZWR1Y2UgaW5kaXJlY3Rpb24gYW5kIGp1c3QgcGFzcyB0aGUgTlNTdHJp
bmcuCisgICAgaWYgKFtwcm9wZXJ0eUtleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11d
KSB7CisgICAgICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmlu
ZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcHJvcGVydHlLZXkpOworICAgICAgICByZXN1bHQgPSBz
dHJpbmdGdW5jdGlvbihbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIG5hbWUs
IGFyZ3VtZW50cy4uLiwgJmV4Y2VwdGlvbik7CisgICAgICAgIEpTU3RyaW5nUmVsZWFzZShuYW1l
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0ID0ganNGdW5jdGlvbihbY29udGV4dCBKU0ds
b2JhbENvbnRleHRSZWZdLCBvYmplY3QsIFtbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6cHJvcGVy
dHlLZXkgaW5Db250ZXh0OmNvbnRleHRdIEpTVmFsdWVSZWZdLCBhcmd1bWVudHMuLi4sICZleGNl
cHRpb24pOworICAgIHJldHVybiBFeHBlY3RlZDxSZXN1bHQsIEpTVmFsdWVSZWY+KHJlc3VsdCk7
Cit9CisKKyNpZiAoZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAoZGVmaW5lZChfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPCAxMTAwMDApCistIChKU1ZhbHVlICopdmFsdWVGb3JQcm9wZXJ0eTooTlNTdHJp
bmcgKilrZXkKKyNlbHNlCistIChKU1ZhbHVlICopdmFsdWVGb3JQcm9wZXJ0eTooaWQpa2V5Cisj
ZW5kaWYKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbjxKU1Zh
bHVlUmVmPihKU09iamVjdEdldFByb3BlcnR5LCBKU09iamVjdEdldFByb3BlcnR5S2V5LCBzZWxm
LCBrZXkpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gW19jb250ZXh0IHZhbHVl
RnJvbU5vdGlmeUV4Y2VwdGlvbjpyZXN1bHQuZXJyb3IoKV07CiAKLSAgICByZXR1cm4gW0pTVmFs
dWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpyZXN1bHQgaW5Db250ZXh0Ol9jb250ZXh0XTsKKyAgICBy
ZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpyZXN1bHQudmFsdWUoKSBpbkNvbnRl
eHQ6X2NvbnRleHRdOwogfQogCi0tICh2b2lkKXNldFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9wZXJ0
eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKKyNpZiAoZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAx
MzAwKSB8fCAoZGVmaW5lZChfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMTAwMDApCistICh2b2lkKXNldFZhbHVl
OihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXkKKyNlbHNlCistICh2b2lkKXNl
dFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooaWQpa2V5CisjZW5kaWYKIHsKLSAgICBKU1Zh
bHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRv
T2JqZWN0KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlLCAmZXhjZXB0aW9u
KTsKLSAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIFtfY29udGV4dCBub3RpZnlFeGNlcHRp
b246ZXhjZXB0aW9uXTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAvLyBXZSBuZWVkIFVu
aXQgYnVzaW5lc3MgYmVjYXVzZSB2b2lkIGNhbid0IGJlIGFzc2lnbmVkIHRvIGluIHBlcmZvcm1Q
cm9wZXJ0eU9wZXJhdGlvbiBhbmQgSSBkb24ndCB3YW50IHRvIGR1cGxpY2F0ZSB0aGUgY29kZS4u
LgorICAgIHVzaW5nIFVuaXQgPSBzdGQ6OnR1cGxlPD47CisgICAgYXV0byBzdHJpbmdTZXRQcm9w
ZXJ0eSA9IFtdIChhdXRvLi4uIGFyZ3MpIC0+IFVuaXQgeworICAgICAgICBKU09iamVjdFNldFBy
b3BlcnR5KGFyZ3MuLi4pOworICAgICAgICByZXR1cm4geyB9OworICAgIH07CiAKLSAgICBKU1N0
cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3Ry
aW5nUmVmKXByb3BlcnR5TmFtZSk7Ci0gICAgSlNPYmplY3RTZXRQcm9wZXJ0eShbX2NvbnRleHQg
SlNHbG9iYWxDb250ZXh0UmVmXSwgb2JqZWN0LCBuYW1lLCBvYmplY3RUb1ZhbHVlKF9jb250ZXh0
LCB2YWx1ZSksIDAsICZleGNlcHRpb24pOwotICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKLSAg
ICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIFtfY29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhj
ZXB0aW9uXTsKKyAgICBhdXRvIGpzVmFsdWVTZXRQcm9wZXJ0eSA9IFtdIChhdXRvLi4uIGFyZ3Mp
IC0+IFVuaXQgeworICAgICAgICBKU09iamVjdFNldFByb3BlcnR5S2V5KGFyZ3MuLi4pOworICAg
ICAgICByZXR1cm4geyB9OworICAgIH07CisKKyAgICBhdXRvIHJlc3VsdCA9IHBlcmZvcm1Qcm9w
ZXJ0eU9wZXJhdGlvbjxVbml0PihzdHJpbmdTZXRQcm9wZXJ0eSwganNWYWx1ZVNldFByb3BlcnR5
LCBzZWxmLCBrZXksIG9iamVjdFRvVmFsdWUoX2NvbnRleHQsIHZhbHVlKSwga0pTUHJvcGVydHlB
dHRyaWJ1dGVOb25lKTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBbX2NvbnRleHQgbm90
aWZ5RXhjZXB0aW9uOnJlc3VsdC5lcnJvcigpXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0K
IAotLSAoQk9PTClkZWxldGVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKKyNpZiAo
ZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAoZGVmaW5lZChfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAx
MTAwMDApCistIChCT09MKWRlbGV0ZVByb3BlcnR5OihOU1N0cmluZyAqKWtleQorI2Vsc2UKKy0g
KEJPT0wpZGVsZXRlUHJvcGVydHk6KGlkKWtleQorI2VuZGlmCiB7Ci0gICAgSlNWYWx1ZVJlZiBl
eGNlcHRpb24gPSAwOwotICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChb
X2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7Ci0gICAg
aWYgKGV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFtfY29udGV4dCBib29sRnJvbU5vdGlmeUV4
Y2VwdGlvbjpleGNlcHRpb25dOwotCi0gICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3Jl
YXRlV2l0aENGU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwotICAg
IEJPT0wgcmVzdWx0ID0gSlNPYmplY3REZWxldGVQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxD
b250ZXh0UmVmXSwgb2JqZWN0LCBuYW1lLCAmZXhjZXB0aW9uKTsKLSAgICBKU1N0cmluZ1JlbGVh
c2UobmFtZSk7Ci0gICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFtfY29udGV4dCBi
b29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwotCi0gICAgcmV0dXJuIHJlc3VsdDsK
KyAgICBFeHBlY3RlZDxCT09MLCBKU1ZhbHVlUmVmPiByZXN1bHQgPSBwZXJmb3JtUHJvcGVydHlP
cGVyYXRpb248Qk9PTD4oSlNPYmplY3REZWxldGVQcm9wZXJ0eSwgSlNPYmplY3REZWxldGVQcm9w
ZXJ0eUtleSwgc2VsZiwga2V5KTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFtf
Y29udGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpyZXN1bHQuZXJyb3IoKV07CisgICAgcmV0
dXJuIHJlc3VsdC52YWx1ZSgpOwogfQogCi0tIChCT09MKWhhc1Byb3BlcnR5OihOU1N0cmluZyAq
KXByb3BlcnR5TmFtZQorI2lmIChkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDApIHx8IChkZWZp
bmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKKy0gKEJPT0wpaGFzUHJvcGVydHk6KE5TU3RyaW5n
ICopa2V5CisjZWxzZQorLSAoQk9PTCloYXNQcm9wZXJ0eTooaWQpa2V5CisjZW5kaWYKIHsKLSAg
ICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNW
YWx1ZVRvT2JqZWN0KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlLCAmZXhj
ZXB0aW9uKTsKLSAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW19jb250ZXh0IGJv
b2xGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgLy8gVGhlIEMtYXBpIGRvZXNu
J3QgcmV0dXJuIGFuIGV4Y2VwdGlvbiB2YWx1ZSBmb3IgdGhlIHN0cmluZyB2ZXJzaW9uIG9mIGhh
cyBwcm9wZXJ0eS4KKyAgICBhdXRvIHN0cmluZ0hhc1Byb3BlcnR5ID0gW10gKEpTQ29udGV4dFJl
ZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlUmVmKikgLT4gQk9PTCB7CisgICAgICAgIHJldHVybiBKU09iamVjdEhhc1Byb3BlcnR5KGN0
eCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIH07CiAKLSAgICBKU1N0cmluZ1JlZiBuYW1l
ID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXByb3Bl
cnR5TmFtZSk7Ci0gICAgQk9PTCByZXN1bHQgPSBKU09iamVjdEhhc1Byb3BlcnR5KFtfY29udGV4
dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIG5hbWUpOwotICAgIEpTU3RyaW5nUmVsZWFz
ZShuYW1lKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIEV4cGVjdGVkPEJPT0wsIEpTVmFsdWVS
ZWY+IHJlc3VsdCA9IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbjxCT09MPihzdHJpbmdIYXNQcm9w
ZXJ0eSwgSlNPYmplY3RIYXNQcm9wZXJ0eUtleSwgc2VsZiwga2V5KTsKKyAgICBpZiAoIXJlc3Vs
dCkKKyAgICAgICAgcmV0dXJuIFtfY29udGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpyZXN1
bHQuZXJyb3IoKV07CisgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpOwogfQogCi0tICh2b2lkKWRl
ZmluZVByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0
b3IKKyNpZiAoZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAoZGVmaW5lZChfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPCAxMTAwMDApCistICh2b2lkKWRlZmluZVByb3BlcnR5OihOU1N0cmluZyAqKWtleSBk
ZXNjcmlwdG9yOihpZClkZXNjcmlwdG9yCisjZWxzZQorLSAodm9pZClkZWZpbmVQcm9wZXJ0eToo
aWQpa2V5IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0b3IKKyNlbmRpZgogewotICAgIFtbX2NvbnRl
eHQgZ2xvYmFsT2JqZWN0XVtAIk9iamVjdCJdIGludm9rZU1ldGhvZDpAImRlZmluZVByb3BlcnR5
IiB3aXRoQXJndW1lbnRzOkBbIHNlbGYsIHByb3BlcnR5LCBkZXNjcmlwdG9yIF1dOworICAgIFtb
X2NvbnRleHQgZ2xvYmFsT2JqZWN0XVtAIk9iamVjdCJdIGludm9rZU1ldGhvZDpAImRlZmluZVBy
b3BlcnR5IiB3aXRoQXJndW1lbnRzOkBbIHNlbGYsIGtleSwgZGVzY3JpcHRvciBdXTsKIH0KIAog
LSAoSlNWYWx1ZSAqKXZhbHVlQXRJbmRleDooTlNVSW50ZWdlcilpbmRleApAQCAtMzcyLDYgKzQw
OCwxMSBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yU2V0S2V5ID0gQCJz
ZXQiOwogICAgIHJldHVybiBKU1ZhbHVlSXNPYmplY3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4
dFJlZl0sIG1fdmFsdWUpOwogfQogCistIChCT09MKWlzU3ltYm9sCit7CisgICAgcmV0dXJuIEpT
VmFsdWVJc1N5bWJvbChbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSk7Cit9
CisKIC0gKEJPT0wpaXNBcnJheQogewogICAgIHJldHVybiBKU1ZhbHVlSXNBcnJheShbX2NvbnRl
eHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSk7CkBAIC01NTQsMTMgKzU5NSw3IEBAIE5T
U3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXkgPSBAInNldCI7CiAKIC0g
KEpTVmFsdWUgKilvYmplY3RGb3JLZXllZFN1YnNjcmlwdDooaWQpa2V5CiB7Ci0gICAgaWYgKCFb
a2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAga2V5ID0gW1tK
U1ZhbHVlIHZhbHVlV2l0aE9iamVjdDprZXkgaW5Db250ZXh0Ol9jb250ZXh0XSB0b1N0cmluZ107
Ci0gICAgICAgIGlmICgha2V5KQotICAgICAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0
aFVuZGVmaW5lZEluQ29udGV4dDpfY29udGV4dF07Ci0gICAgfQotCi0gICAgcmV0dXJuIFtzZWxm
IHZhbHVlRm9yUHJvcGVydHk6KE5TU3RyaW5nICopa2V5XTsKKyAgICByZXR1cm4gW3NlbGYgdmFs
dWVGb3JQcm9wZXJ0eTprZXldOwogfQogCiAtIChKU1ZhbHVlICopb2JqZWN0QXRJbmRleGVkU3Vi
c2NyaXB0OihOU1VJbnRlZ2VyKWluZGV4CkBAIC01NjgsMTUgKzYwMyw5IEBAIE5TU3RyaW5nICog
Y29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXkgPSBAInNldCI7CiAgICAgcmV0dXJuIFtz
ZWxmIHZhbHVlQXRJbmRleDppbmRleF07CiB9CiAKLS0gKHZvaWQpc2V0T2JqZWN0OihpZClvYmpl
Y3QgZm9yS2V5ZWRTdWJzY3JpcHQ6KE5TT2JqZWN0IDxOU0NvcHlpbmc+ICopa2V5CistICh2b2lk
KXNldE9iamVjdDooaWQpb2JqZWN0IGZvcktleWVkU3Vic2NyaXB0OihpZClrZXkKIHsKLSAgICBp
ZiAoIVtrZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgewotICAgICAgICBrZXkg
PSBbW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OmtleSBpbkNvbnRleHQ6X2NvbnRleHRdIHRvU3Ry
aW5nXTsKLSAgICAgICAgaWYgKCFrZXkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgW3NlbGYgc2V0VmFsdWU6b2JqZWN0IGZvclByb3BlcnR5OihOU1N0cmluZyAqKWtleV07Cisg
ICAgW3NlbGYgc2V0VmFsdWU6b2JqZWN0IGZvclByb3BlcnR5OmtleV07CiB9CiAKIC0gKHZvaWQp
c2V0T2JqZWN0OihpZClvYmplY3QgYXRJbmRleGVkU3Vic2NyaXB0OihOU1VJbnRlZ2VyKWluZGV4
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAppbmRleCA3OTU1OWJlOTA3
OTg3MTUxYjJmYTdkOTMxMjY0MjQ1MTg4ODEwZmRjLi5kYWNhMGUxYjQ5ZGQ4ZDUxMmU1NjVkYzEz
Y2NjYWYyYjk3ZjIwOGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWVSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5j
cHAKQEAgLTg2LDYgKzg2LDggQEAgc3RhdGljIGJvb2wgZXZlcm5vdGVIYWNrTmVlZGVkKCkKICAg
ICAgICAgcmV0dXJuIGtKU1R5cGVOdW1iZXI7CiAgICAgaWYgKGpzVmFsdWUuaXNTdHJpbmcoKSkK
ICAgICAgICAgcmV0dXJuIGtKU1R5cGVTdHJpbmc7CisgICAgaWYgKGpzVmFsdWUuaXNTeW1ib2wo
KSkKKyAgICAgICAgcmV0dXJuIGtKU1R5cGVTeW1ib2w7CiAgICAgQVNTRVJUKGpzVmFsdWUuaXNP
YmplY3QoKSk7CiAgICAgcmV0dXJuIGtKU1R5cGVPYmplY3Q7CiB9CkBAIC0xNjIsNiArMTY0LDE4
IEBAIGJvb2wgSlNWYWx1ZUlzT2JqZWN0KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFs
dWUpCiAgICAgcmV0dXJuIHRvSlMoZXhlYywgdmFsdWUpLmlzT2JqZWN0KCk7CiB9CiAKK2Jvb2wg
SlNWYWx1ZUlzU3ltYm9sKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpCit7Cisg
ICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAg
IEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisKKyAgICByZXR1cm4gdG9KUyhleGVjLCB2YWx1
ZSkuaXNTeW1ib2woKTsKK30KKwogYm9vbCBKU1ZhbHVlSXNBcnJheShKU0NvbnRleHRSZWYgY3R4
LCBKU1ZhbHVlUmVmIHZhbHVlKQogewogICAgIGlmICghY3R4KSB7CkBAIC0zMjAsNiArMzM0LDIy
IEBAIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VOdW1iZXIoSlNDb250ZXh0UmVmIGN0eCwgZG91Ymxl
IHZhbHVlKQogICAgIHJldHVybiB0b1JlZihleGVjLCBqc051bWJlcihwdXJpZnlOYU4odmFsdWUp
KSk7CiB9CiAKK0pTVmFsdWVSZWYgSlNWYWx1ZU1ha2VTeW1ib2woSlNDb250ZXh0UmVmIGN0eCwg
SlNTdHJpbmdSZWYgZGVzY3JpcHRpb24pCit7CisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBF
eGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVj
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRShleGVjLT52bSgpKTsKKwor
ICAgIEpTU3RyaW5nKiBqc0Rlc2NyaXB0aW9uID0ganNTdHJpbmcoZXhlYywgZGVzY3JpcHRpb24g
PyBkZXNjcmlwdGlvbi0+c3RyaW5nKCkgOiBTdHJpbmcoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gdG9SZWYoZXhlYywgU3ltYm9sOjpj
cmVhdGUoZXhlYywganNEZXNjcmlwdGlvbikpOworfQorCiBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtl
U3RyaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHN0cmluZykKIHsKICAgICBpZiAo
IWN0eCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVm
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuaAppbmRleCA5ODE1ZGU3
ODNjMGFlZTA3M2UzYTQ0OGJkMGM3Y2FkZDRhOTUyYzA2Li4xMmYyZGNjMDQ0ZTZlOGFlMzBhYzIw
MzFkMGIyZGE1YjM3M2FkYjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVmFsdWVSZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYu
aApAQCAtNDIsNiArNDIsNyBAQAogQGNvbnN0YW50ICAgICBrSlNUeXBlTnVtYmVyICAgICBBIHBy
aW1pdGl2ZSBudW1iZXIgdmFsdWUuCiBAY29uc3RhbnQgICAgIGtKU1R5cGVTdHJpbmcgICAgIEEg
cHJpbWl0aXZlIHN0cmluZyB2YWx1ZS4KIEBjb25zdGFudCAgICAga0pTVHlwZU9iamVjdCAgICAg
QW4gb2JqZWN0IHZhbHVlIChtZWFuaW5nIHRoYXQgdGhpcyBKU1ZhbHVlUmVmIGlzIGEgSlNPYmpl
Y3RSZWYpLgorQGNvbnN0YW50ICAgICBrSlNUeXBlU3ltYm9sICAgICBBIHByaW1pdGl2ZSBzeW1i
b2wgdmFsdWUuCiAqLwogdHlwZWRlZiBlbnVtIHsKICAgICBrSlNUeXBlVW5kZWZpbmVkLApAQCAt
NDksNyArNTAsOCBAQCB0eXBlZGVmIGVudW0gewogICAgIGtKU1R5cGVCb29sZWFuLAogICAgIGtK
U1R5cGVOdW1iZXIsCiAgICAga0pTVHlwZVN0cmluZywKLSAgICBrSlNUeXBlT2JqZWN0CisgICAg
a0pTVHlwZU9iamVjdCwKKyAgICBrSlNUeXBlU3ltYm9sIEpTQ19BUElfQVZBSUxBQkxFKG1hY29z
eChKU0NfTUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpCiB9IEpTVHlwZTsKIAogLyohCkBAIC04
MCw3ICs4Miw3IEBAIHR5cGVkZWYgZW51bSB7CiAgICAga0pTVHlwZWRBcnJheVR5cGVGbG9hdDY0
QXJyYXksCiAgICAga0pTVHlwZWRBcnJheVR5cGVBcnJheUJ1ZmZlciwKICAgICBrSlNUeXBlZEFy
cmF5VHlwZU5vbmUsCi19IEpTVHlwZWRBcnJheVR5cGUgQ0ZfRU5VTV9BVkFJTEFCTEUoMTBfMTIs
IDEwXzApOworfSBKU1R5cGVkQXJyYXlUeXBlIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4x
MiksIGlvcygxMC4wKSk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CkBAIC0x
NDksNiArMTUxLDE2IEBAIEpTX0VYUE9SVCBib29sIEpTVmFsdWVJc1N0cmluZyhKU0NvbnRleHRS
ZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKTsKICovCiBKU19FWFBPUlQgYm9vbCBKU1ZhbHVlSXNP
YmplY3QoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSk7CiAKKy8qIQorQGZ1bmN0
aW9uCitAYWJzdHJhY3QgICAgICAgVGVzdHMgd2hldGhlciBhIEphdmFTY3JpcHQgdmFsdWUncyB0
eXBlIGlzIHRoZSBzeW1ib2wgdHlwZS4KK0BwYXJhbSBjdHggICAgICBUaGUgZXhlY3V0aW9uIGNv
bnRleHQgdG8gdXNlLgorQHBhcmFtIHZhbHVlICAgIFRoZSBKU1ZhbHVlIHRvIHRlc3QuCitAcmVz
dWx0ICAgICAgICAgdHJ1ZSBpZiB2YWx1ZSdzIHR5cGUgaXMgdGhlIHN5bWJvbCB0eXBlLCBvdGhl
cndpc2UgZmFsc2UuCisqLworSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzU3ltYm9sKEpTQ29udGV4
dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeChKU0Nf
TUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpOworCisKIC8qIQogQGZ1bmN0aW9uCiBAYWJzdHJh
Y3QgVGVzdHMgd2hldGhlciBhIEphdmFTY3JpcHQgdmFsdWUgaXMgYW4gb2JqZWN0IHdpdGggYSBn
aXZlbiBjbGFzcyBpbiBpdHMgY2xhc3MgY2hhaW4uCkBAIC0xNjYsNyArMTc4LDcgQEAgSlNfRVhQ
T1JUIGJvb2wgSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVl
UmVmIHZhbHVlLCBKU0NsYXMKIEBwYXJhbSB2YWx1ZSAgICBUaGUgSlNWYWx1ZSB0byB0ZXN0Lgog
QHJlc3VsdCAgICAgICAgIHRydWUgaWYgdmFsdWUgaXMgYW4gYXJyYXksIG90aGVyd2lzZSBmYWxz
ZS4KICovCi1KU19FWFBPUlQgYm9vbCBKU1ZhbHVlSXNBcnJheShKU0NvbnRleHRSZWYgY3R4LCBK
U1ZhbHVlUmVmIHZhbHVlKSBDRl9BVkFJTEFCTEUoMTBfMTEsIDlfMCk7CitKU19FWFBPUlQgYm9v
bCBKU1ZhbHVlSXNBcnJheShKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CiAKIC8qIQogQGZ1bmN0aW9u
CkBAIC0xNzUsNyArMTg3LDcgQEAgSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzQXJyYXkoSlNDb250
ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkgQ0ZfQVZBSUxBQkxFKDEKIEBwYXJhbSB2YWx1
ZSAgICBUaGUgSlNWYWx1ZSB0byB0ZXN0LgogQHJlc3VsdCAgICAgICAgIHRydWUgaWYgdmFsdWUg
aXMgYSBkYXRlLCBvdGhlcndpc2UgZmFsc2UuCiAqLwotSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlz
RGF0ZShKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKSBDRl9BVkFJTEFCTEUoMTBf
MTEsIDlfMCk7CitKU19FWFBPUlQgYm9vbCBKU1ZhbHVlSXNEYXRlKEpTQ29udGV4dFJlZiBjdHgs
IEpTVmFsdWVSZWYgdmFsdWUpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSksIGlvcyg5
LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTE4NSw3ICsxOTcsNyBAQCBKU19FWFBPUlQgYm9v
bCBKU1ZhbHVlSXNEYXRlKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpIENGX0FW
QUlMQUJMRSgxMAogQHBhcmFtIGV4Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVm
IGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91
IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KIEByZXN1bHQgICAgICAgICAgICAg
QSB2YWx1ZSBvZiB0eXBlIEpTVHlwZWRBcnJheVR5cGUgdGhhdCBpZGVudGlmaWVzIHZhbHVlJ3Mg
VHlwZWQgQXJyYXkgdHlwZSwgb3Iga0pTVHlwZWRBcnJheVR5cGVOb25lIGlmIHRoZSB2YWx1ZSBp
cyBub3QgYSBUeXBlZCBBcnJheSBvYmplY3QuCiAgKi8KLUpTX0VYUE9SVCBKU1R5cGVkQXJyYXlU
eXBlIEpTVmFsdWVHZXRUeXBlZEFycmF5VHlwZShKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVm
IHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7
CitKU19FWFBPUlQgSlNUeXBlZEFycmF5VHlwZSBKU1ZhbHVlR2V0VHlwZWRBcnJheVR5cGUoSlND
b250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBK
U0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAvKiBDb21wYXJp
bmcgdmFsdWVzICovCiAKQEAgLTI1Nyw2ICsyNjksMTUgQEAgSlNfRVhQT1JUIEpTVmFsdWVSZWYg
SlNWYWx1ZU1ha2VCb29sZWFuKEpTQ29udGV4dFJlZiBjdHgsIGJvb2wgYm9vbGVhbik7CiAqLwog
SlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VOdW1iZXIoSlNDb250ZXh0UmVmIGN0eCwg
ZG91YmxlIG51bWJlcik7CiAKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgICAgICAgICAgICBD
cmVhdGVzIGEgSmF2YVNjcmlwdCB2YWx1ZSBvZiB0aGUgc3ltYm9sIHR5cGUuCitAcGFyYW0gY3R4
ICAgICAgICAgICBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgorQHBhcmFtIGRlc2NyaXB0
aW9uICAgQSBkZXNjcmlwdGlvbiBvZiB0aGUgbmV3bHkgY3JlYXRlZCBzeW1ib2wgdmFsdWUuCitA
cmVzdWx0ICAgICAgICAgICAgICBBIHVuaXF1ZSBKU1ZhbHVlIG9mIHRoZSBzeW1ib2wgdHlwZSwg
d2hvc2UgZGVzY3JpcHRpb24gbWF0Y2hlcyB0aGUgb25lIHByb3ZpZGVkLgorKi8KK0pTX0VYUE9S
VCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlU3ltYm9sKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5n
UmVmIGRlc2NyaXB0aW9uKTsKKwogLyohCiBAZnVuY3Rpb24KIEBhYnN0cmFjdCAgICAgICBDcmVh
dGVzIGEgSmF2YVNjcmlwdCB2YWx1ZSBvZiB0aGUgc3RyaW5nIHR5cGUuCkBAIC0yNzYsNyArMjk3
LDcgQEAgSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VTdHJpbmcoSlNDb250ZXh0UmVm
IGN0eCwgSlNTdHJpbmdSZWYgc3RyaW5nKTsKICBAcGFyYW0gc3RyaW5nICAgVGhlIEpTU3RyaW5n
IGNvbnRhaW5pbmcgdGhlIEpTT04gc3RyaW5nIHRvIGJlIHBhcnNlZC4KICBAcmVzdWx0ICAgICAg
ICAgQSBKU1ZhbHVlIGNvbnRhaW5pbmcgdGhlIHBhcnNlZCB2YWx1ZSwgb3IgTlVMTCBpZiB0aGUg
aW5wdXQgaXMgaW52YWxpZC4KICAqLwotSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VG
cm9tSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBzdHJpbmcpIENGX0FW
QUlMQUJMRSgxMF83LCA3XzApOworSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VGcm9t
SlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBzdHJpbmcpIEpTQ19BUElf
QVZBSUxBQkxFKG1hY29zeCgxMC43KSwgaW9zKDcuMCkpOwogCiAvKiEKICBAZnVuY3Rpb24KQEAg
LTI4Nyw3ICszMDgsNyBAQCBKU19FWFBPUlQgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZUZyb21KU09O
U3RyaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHN0cgogIEBwYXJhbSBleGNlcHRp
b24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRp
b24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNl
cHRpb24uCiAgQHJlc3VsdCAgICAgICAgIEEgSlNTdHJpbmcgd2l0aCB0aGUgcmVzdWx0IG9mIHNl
cmlhbGl6YXRpb24sIG9yIE5VTEwgaWYgYW4gZXhjZXB0aW9uIGlzIHRocm93bi4KICAqLwotSlNf
RVhQT1JUIEpTU3RyaW5nUmVmIEpTVmFsdWVDcmVhdGVKU09OU3RyaW5nKEpTQ29udGV4dFJlZiBj
dHgsIEpTVmFsdWVSZWYgdmFsdWUsIHVuc2lnbmVkIGluZGVudCwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKSBDRl9BVkFJTEFCTEUoMTBfNywgN18wKTsKK0pTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU1Zh
bHVlQ3JlYXRlSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlLCB1
bnNpZ25lZCBpbmRlbnQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KDEwLjcpLCBpb3MoNy4wKSk7CiAKIC8qIENvbnZlcnRpbmcgdG8gcHJpbWl0aXZlIHZh
bHVlcyAqLwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL1dlYktpdEF2
YWlsYWJpbGl0eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9XZWJLaXRBdmFpbGFiaWxp
dHkuaAppbmRleCA4MjI3NTIwM2RjOTgwMTgzMzFhOTFiYjk1YjlkNmRiMTZlNTlmOWFhLi4wZjZh
ZmI2YjFkYmQ2MTk4MWRlZGVkMGExZTViMjRjOGZkY2I1M2YyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL1dlYktpdEF2YWlsYWJpbGl0eS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvV2ViS2l0QXZhaWxhYmlsaXR5LmgKQEAgLTY5LDE1ICs2OSwxMiBAQAog
I2VuZGlmIC8qICFUQVJHRVRfT1NfSVBIT05FICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPCAxMDExMDAgKi8KIAogI2lmIGRlZmluZWQoQlVJTERJTkdfR1RLX18pCi0jdW5kZWYg
Q0ZfQVZBSUxBQkxFCi0jZGVmaW5lIENGX0FWQUlMQUJMRShfbWFjLCBfaW9zKQotI3VuZGVmIENG
X0VOVU1fQVZBSUxBQkxFCi0jZGVmaW5lIENGX0VOVU1fQVZBSUxBQkxFKF9tYWMsIF9pb3MpCisj
dW5kZWYgSlNDX0FQSV9BVkFJTEFCTEUKKyNkZWZpbmUgSlNDX0FQSV9BVkFJTEFCTEUoLi4uKQog
I2VuZGlmCiAKICNlbHNlCi0jZGVmaW5lIENGX0FWQUlMQUJMRShfbWFjLCBfaW9zKQotI2RlZmlu
ZSBDRl9FTlVNX0FWQUlMQUJMRShfbWFjLCBfaW9zKQorI2RlZmluZSBKU0NfQVBJX0FWQUlMQUJM
RSguLi4pCiAjZW5kaWYKIAogI2VuZGlmIC8qIF9fV2ViS2l0QXZhaWxhYmlsaXR5X18gKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNp
ZGVCbG9ja0dldHRlclRlc3QubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0N1
cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lm1tCmluZGV4IDUzMTg4ZmJhODhmOTU0Mjdj
OGFlOTMzOWFhYzg4ZDBjNjhhMTdlYjEuLmJkN2U4YTY4NjA3ZTVmOGRkNzhkOTQ2YmRkYTc0YTYx
ZDI1ZjdlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3Vy
cmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS90ZXN0cy9DdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5tbQpAQCAtMjMs
NiArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVy
VGVzdC5oIgogCiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0N1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVz
dC5jCmluZGV4IGFjNTQ3MWE2NzQxYmZmOTNjNzAwYmYzYjNhYWM2ZWQzODc0OWYwYmYuLjlmZmUy
MzNmNGI3OTZmNWEwYjk1YjM3NGE0ODNiMDE0ZWQ1YmRkOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmMKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9DdXN0b21HbG9iYWxPYmplY3RDbGFz
c1Rlc3QuYwpAQCAtMjMsNiArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmgiCiAK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZlByaXZhdGUuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRGF0ZVRlc3RzLm1tIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9EYXRlVGVzdHMubW0KaW5kZXggMmJkYTNhZGE2YjE1
OGUwMTA4YWVjNWY0MmU3NjUzOTczMGVjMmVkOS4uNjY1MjE3N2RlNDE3YjEyZWU5NGRlODgzYjhm
YjBiZDcwOWRkNjcyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy9EYXRlVGVzdHMubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9EYXRl
VGVzdHMubW0KQEAgLTIzLDYgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCisjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkRhdGVUZXN0cy5oIgog
I2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNFeHBvcnRUZXN0cy5tbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvSlNFeHBvcnRUZXN0cy5tbQppbmRleCAxY2VjOTM5NzljNDE2ZjRj
MGYwNDkwNWVlNzQ3NmU3ODY0ZDg0MjUyLi5kZmRjOTVmNDdiYzc3NWIwOGIzNjY3M2QwYmJiZmU2
YmNlMzQxYjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pT
RXhwb3J0VGVzdHMubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU0V4
cG9ydFRlc3RzLm1tCkBAIC0yMyw2ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAorI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJKU0V4cG9ydFRl
c3RzLmgiCiAKICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU05vZGUuYyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvSlNOb2RlLmMKaW5kZXggZDBhMGRjM2VjNzIzNzI1N2ZhMTgwZDA1MTRmNzRjNmFk
MmU0YjViNy4uYmMwMDQwYWU2YmE0MDk4NTM4MzhjYWVhZDZhMjM4NGVjOTk5MDA0OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU05vZGUuYworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZS5jCkBAIC0yMyw3ICsyMyw3IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVk
ZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJKU05vZGVMaXN0
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZUxp
c3QuYyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNOb2RlTGlzdC5jCmluZGV4
IGYwMzdlMDk0YTA5ZTFhMjI2MDQ0ZWVkMWYyM2QwYTUxODYxYTNmNGIuLjk5YTMyOTUxOGU2YTlh
MWNmYjEyNjc2NDczOWEwYjY5Y2ZhNWQ0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvSlNOb2RlTGlzdC5jCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvSlNOb2RlTGlzdC5jCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
ICAqLwogCi0jaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSAiY29uZmlnLmgiCiAK
ICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJKU05vZGVMaXN0LmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL05vZGUuYyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvTm9kZS5jCmluZGV4IGRiNjg3ZTk1MmYxYTlkOGMxMzRiOTA2Nzdk
MjlhNjQwNmQ4ZGIxYTIuLjhmN2QwNmIyYWE0YWRlMjY5ZDYxZWZjNjFjMDE4NGNjYzMxOTVhMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9kZS5jCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9kZS5jCkBAIC0yMyw3ICsyMyw5IEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Tm9kZS5oIgorCiAjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9kZUxpc3QuYyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9kZUxpc3QuYwppbmRleCA2OWY0Y2Q1YzQ4
NzMxMmJkNjM5OTYzNGZiMDY4NGExMjI2NjRkYzE4Li4yMmQzODdjMGQ0MjI2ZmJhZDExOTdjNjQ4
MzFjZDU3YWYzMWFmZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL05vZGVMaXN0LmMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Ob2Rl
TGlzdC5jCkBAIC0yMyw2ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCisjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKIAogI2luY2x1ZGUgPHN0ZGxpYi5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9taW5pZG9tLmMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL21pbmlkb20uYwppbmRleCAwMmI0MWE5
YzdmOWRhMTEzYjAwM2Q0ZjkxOWE0MjA4ZDM4OWI3OGJkLi40MWYxOGNkZjcyOTA0MzY5MGNmZTc3
M2JhNDBkOGI1YjQ0Y2E3MDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL21pbmlkb20uYworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL21p
bmlkb20uYwpAQCAtMjQsNyArMjQsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2luY2x1
ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiSlND
b250ZXh0UmVmLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvdGVzdGFwaS5jCmluZGV4IDdiZWNkZmUwNDExNWJmOTQ4OWVmODQxOTdjMTY3MWM1
YjgzYmE0ZTIuLjg2ZDFjMjVjMjdlOTUyZDYxYWI5ZTQxYmUxNDU3NDEwZmJjNDhmNGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCkBAIC0yMyw3ICsyMyw3IEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNs
dWRlICJjb25maWcuaCIKIAogI2lmIFVTRShDRikKICNpbmNsdWRlICJKYXZhU2NyaXB0Q29yZS5o
IgpAQCAtNjYsNiArNjYsOCBAQAogdm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSSh2b2lkKTsKICNlbmRp
ZgogCitpbnQgdGVzdENBUElWaWFDcHAodm9pZCk7CisKIGJvb2wgYXNzZXJ0VHJ1ZShib29sIHZh
bHVlLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKIAogc3RhdGljIEpTR2xvYmFsQ29udGV4dFJlZiBj
b250ZXh0OwpAQCAtMTM2MSw2ICsxMzYzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFy
Z3ZbXSkKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIHRlc3RPYmplY3RpdmVDQVBJKCk7
CiAjZW5kaWYKKyAgICBSRUxFQVNFX0FTU0VSVCghdGVzdENBUElWaWFDcHAoKSk7CiAKICAgICBj
b25zdCBjaGFyICpzY3JpcHRQYXRoID0gInRlc3RhcGkuanMiOwogICAgIGlmIChhcmdjID4gMSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDVjMzZmODllYzJjZWZlNTFlN2RiNTljMzg1NzFhNTgwMzI2MzI4NgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jcHAKQEAgLTAs
MCArMSwzOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRl
ICJBUElDYXN0LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJK
U09iamVjdC5oIgorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdC5oPgorI2lu
Y2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitleHRlcm4g
IkMiIGludCB0ZXN0Q0FQSVZpYUNwcCgpOworCitjbGFzcyBBUElTdHJpbmcgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEFQSVN0cmluZyk7CitwdWJsaWM6CisKKyAgICBBUElTdHJpbmcoY29u
c3QgY2hhciogc3RyaW5nKQorICAgICAgICA6IG1fc3RyaW5nKEpTU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKHN0cmluZykpCisgICAgeworICAgIH0KKworICAgIH5BUElTdHJpbmcoKQorICAg
IHsKKyAgICAgICAgSlNTdHJpbmdSZWxlYXNlKG1fc3RyaW5nKTsKKyAgICB9CisKKyAgICBvcGVy
YXRvciBKU1N0cmluZ1JlZigpIHsgcmV0dXJuIG1fc3RyaW5nOyB9CisKK3ByaXZhdGU6CisgICAg
SlNTdHJpbmdSZWYgbV9zdHJpbmc7Cit9OworCitjbGFzcyBBUElDb250ZXh0IHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShBUElDb250ZXh0KTsKK3B1YmxpYzoKKworICAgIEFQSUNvbnRleHQo
KQorICAgICAgICA6IG1fY29udGV4dChKU0dsb2JhbENvbnRleHRDcmVhdGUobnVsbHB0cikpCisg
ICAgeworICAgICAgICBBUElTdHJpbmcgcHJpbnQoInByaW50Iik7CisgICAgICAgIEpTT2JqZWN0
UmVmIHByaW50RnVuY3Rpb24gPSBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayhtX2Nv
bnRleHQsIHByaW50LCBbXSAoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0
UmVmLCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwg
SlNWYWx1ZVJlZiopIHsKKworICAgICAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pT
KGN0eCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJndW1lbnRDb3Vu
dDsgaSsrKQorICAgICAgICAgICAgICAgIGRhdGFMb2codG9KUyhleGVjLCBhcmd1bWVudHNbaV0p
KTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGN0eCk7CisgICAgICAgIH0pOworCisgICAgICAgIEpTT2JqZWN0U2V0UHJv
cGVydHkobV9jb250ZXh0LCBKU0NvbnRleHRHZXRHbG9iYWxPYmplY3QobV9jb250ZXh0KSwgcHJp
bnQsIHByaW50RnVuY3Rpb24sIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSwgbnVsbHB0cik7Cisg
ICAgfQorCisgICAgfkFQSUNvbnRleHQoKQorICAgIHsKKyAgICAgICAgSlNHbG9iYWxDb250ZXh0
UmVsZWFzZShtX2NvbnRleHQpOworICAgIH0KKworICAgIG9wZXJhdG9yIEpTR2xvYmFsQ29udGV4
dFJlZigpIHsgcmV0dXJuIG1fY29udGV4dDsgfQorCitwcml2YXRlOgorICAgIEpTR2xvYmFsQ29u
dGV4dFJlZiBtX2NvbnRleHQ7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgQVBJ
VmVjdG9yIDogcHJvdGVjdGVkIFZlY3RvcjxUPiB7CisgICAgdXNpbmcgQmFzZSA9IFZlY3RvcjxU
PjsKK3B1YmxpYzoKKyAgICBBUElWZWN0b3IoQVBJQ29udGV4dCYgY29udGV4dCkKKyAgICAgICAg
OiBCYXNlKCkKKyAgICAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKKyAgICB7CisgICAgfQorCisg
ICAgfkFQSVZlY3RvcigpCisgICAgeworICAgICAgICBmb3IgKGF1dG8mIHZhbHVlIDogKnRoaXMp
CisgICAgICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KG1fY29udGV4dCwgdmFsdWUpOworICAgIH0K
KworICAgIHVzaW5nIFZlY3RvcjxUPjo6b3BlcmF0b3JbXTsKKyAgICB1c2luZyBWZWN0b3I8VD46
OnNpemU7CisgICAgdXNpbmcgVmVjdG9yPFQ+OjpiZWdpbjsKKyAgICB1c2luZyBWZWN0b3I8VD46
OmVuZDsKKyAgICB1c2luZyB0eXBlbmFtZSBWZWN0b3I8VD46Oml0ZXJhdG9yOworCisgICAgdm9p
ZCBhcHBlbmQoVCB2YWx1ZSkKKyAgICB7CisgICAgICAgIEpTVmFsdWVQcm90ZWN0KG1fY29udGV4
dCwgdmFsdWUpOworICAgICAgICBCYXNlOjphcHBlbmQoV1RGTW92ZSh2YWx1ZSkpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBBUElDb250ZXh0JiBtX2NvbnRleHQ7Cit9OworCitjbGFzcyBUZXN0
QVBJIHsKK3B1YmxpYzoKKyAgICBpbnQgcnVuKCk7Citwcml2YXRlOgorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUuLi4gU3RyaW5ncz4KKyAgICBib29sIGNoZWNrKGJvb2wgY29uZGl0aW9uLCBTdHJp
bmdzLi4uIG1lc3NhZ2UpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSlNGdW5jdG9yLCB0eXBl
bmFtZSBBUElGdW5jdG9yPgorICAgIHZvaWQgY2hlY2tKU0FuZEFQSU1hdGNoKGNvbnN0IEpTRnVu
Y3RvciYsIGNvbnN0IEFQSUZ1bmN0b3ImLCBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbik7CisKKyAg
ICAvLyBIZWxwZXIgbWV0aG9kcy4KKyAgICB1c2luZyBTY3JpcHRSZXN1bHQgPSBFeHBlY3RlZDxK
U1ZhbHVlUmVmLCBKU1ZhbHVlUmVmPjsKKyAgICBTY3JpcHRSZXN1bHQgZXZhbHVhdGVTY3JpcHQo
Y29uc3QgY2hhciogc2NyaXB0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0ID0gbnVsbHB0cik7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KKyAgICBTY3JpcHRSZXN1bHQg
Y2FsbEZ1bmN0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uU291cmNlLCBBcmd1bWVudFR5cGVzLi4u
IGFyZ3VtZW50cyk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KKyAg
ICBib29sIGZ1bmN0aW9uUmV0dXJuc1RydWUoY29uc3QgY2hhciogZnVuY3Rpb25Tb3VyY2UsIEFy
Z3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKTsKKworICAgIC8vIFdheXMgdG8gbWFrZSBzZXRzIG9m
IGludGVyZXN0aW5nIHRoaW5ncy4KKyAgICBBUElWZWN0b3I8SlNPYmplY3RSZWY+IGludGVyZXN0
aW5nT2JqZWN0cygpOworICAgIEFQSVZlY3RvcjxKU1ZhbHVlUmVmPiBpbnRlcmVzdGluZ0tleXMo
KTsKKworICAgIGludCBmYWlsZWQgeyAwIH07CisgICAgQVBJQ29udGV4dCBjb250ZXh0OworfTsK
KworaW50IHRlc3RDQVBJVmlhQ3BwKCkKK3sKKyAgICBUZXN0QVBJIHRlc3RlcjsKKyAgICByZXR1
cm4gdGVzdGVyLnJ1bigpOworfQorCitUZXN0QVBJOjpTY3JpcHRSZXN1bHQgVGVzdEFQSTo6ZXZh
bHVhdGVTY3JpcHQoY29uc3QgY2hhciogc2NyaXB0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0KQor
eworICAgIEFQSVN0cmluZyBzY3JpcHRBUElTdHJpbmcoc2NyaXB0KTsKKyAgICBKU1ZhbHVlUmVm
IGV4Y2VwdGlvbiA9IG51bGxwdHI7CisKKyAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpTRXZhbHVh
dGVTY3JpcHQoY29udGV4dCwgc2NyaXB0QVBJU3RyaW5nLCB0aGlzT2JqZWN0LCBudWxscHRyLCAw
LCAmZXhjZXB0aW9uKTsKKyAgICBpZiAoZXhjZXB0aW9uKQorICAgICAgICByZXR1cm4gVW5leHBl
Y3RlZDxKU1ZhbHVlUmVmPihleGNlcHRpb24pOworICAgIHJldHVybiBTY3JpcHRSZXN1bHQocmVz
dWx0KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KK1Rlc3RBUEk6
OlNjcmlwdFJlc3VsdCBUZXN0QVBJOjpjYWxsRnVuY3Rpb24oY29uc3QgY2hhciogZnVuY3Rpb25T
b3VyY2UsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKQoreworICAgIEpTVmFsdWVSZWYgZnVu
Y3Rpb247CisgICAgeworICAgICAgICBTY3JpcHRSZXN1bHQgZnVuY3Rpb25SZXN1bHQgPSBldmFs
dWF0ZVNjcmlwdChmdW5jdGlvblNvdXJjZSk7CisgICAgICAgIGlmICghZnVuY3Rpb25SZXN1bHQp
CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25SZXN1bHQ7CisgICAgICAgIGZ1bmN0aW9uID0g
ZnVuY3Rpb25SZXN1bHQudmFsdWUoKTsKKyAgICB9CisKKyAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlv
biA9IG51bGxwdHI7CisgICAgaWYgKEpTT2JqZWN0UmVmIGZ1bmN0aW9uT2JqZWN0ID0gSlNWYWx1
ZVRvT2JqZWN0KGNvbnRleHQsIGZ1bmN0aW9uLCAmZXhjZXB0aW9uKSkgeworICAgICAgICBKU1Zh
bHVlUmVmIGFyZ3Nbc2l6ZW9mLi4uKGFyZ3VtZW50cyldIHsgYXJndW1lbnRzLi4uIH07CisgICAg
ICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBm
dW5jdGlvbk9iamVjdCwgZnVuY3Rpb25PYmplY3QsIHNpemVvZi4uLihhcmd1bWVudHMpLCBhcmdz
LCAmZXhjZXB0aW9uKTsKKyAgICAgICAgaWYgKCFleGNlcHRpb24pCisgICAgICAgICAgICByZXR1
cm4gU2NyaXB0UmVzdWx0KHJlc3VsdCk7CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlQoZXhj
ZXB0aW9uKTsKKyAgICByZXR1cm4gVW5leHBlY3RlZDxKU1ZhbHVlUmVmPihleGNlcHRpb24pOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVzPgorYm9vbCBUZXN0QVBJOjpm
dW5jdGlvblJldHVybnNUcnVlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uU291cmNlLCBBcmd1bWVudFR5
cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBKU1ZhbHVlUmVmIHRydWVWYWx1ZSA9IEpTVmFsdWVN
YWtlQm9vbGVhbihjb250ZXh0LCB0cnVlKTsKKyAgICBTY3JpcHRSZXN1bHQgcmVzdWx0ID0gY2Fs
bEZ1bmN0aW9uKGZ1bmN0aW9uU291cmNlLCBhcmd1bWVudHMuLi4pOworICAgIGlmICghcmVzdWx0
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIEpTVmFsdWVJc1N0cmljdEVxdWFs
KGNvbnRleHQsIHRydWVWYWx1ZSwgcmVzdWx0LnZhbHVlKCkpOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBTdHJpbmdzPgorYm9vbCBUZXN0QVBJOjpjaGVjayhib29sIGNvbmRpdGlvbiwgU3Ry
aW5ncy4uLiBtZXNzYWdlcykKK3sKKyAgICBpZiAoIWNvbmRpdGlvbikgeworICAgICAgICBkYXRh
TG9nTG4obWVzc2FnZXMuLi4sICI6IEZBSUxFRCIpOworICAgICAgICBmYWlsZWQrKzsKKyAgICB9
IGVsc2UKKyAgICAgICAgZGF0YUxvZ0xuKG1lc3NhZ2VzLi4uLCAiOiBQQVNTRUQiKTsKKworICAg
IHJldHVybiBjb25kaXRpb247Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEpTRnVuY3RvciwgdHlw
ZW5hbWUgQVBJRnVuY3Rvcj4KK3ZvaWQgVGVzdEFQSTo6Y2hlY2tKU0FuZEFQSU1hdGNoKGNvbnN0
IEpTRnVuY3RvciYganNGdW5jdG9yLCBjb25zdCBBUElGdW5jdG9yJiBhcGlGdW5jdG9yLCBjb25z
dCBjaGFyKiBkZXNjcmlwdGlvbikKK3sKKyAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IG51bGxw
dHI7CisgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBhcGlGdW5jdG9yKCZleGNlcHRpb24pOworICAg
IFNjcmlwdFJlc3VsdCBqc1Jlc3VsdCA9IGpzRnVuY3RvcigpOworICAgIGlmICghanNSZXN1bHQp
IHsKKyAgICAgICAgY2hlY2soZXhjZXB0aW9uLCAiSlMgYW5kIEFQSSBjYWxscyBzaG91bGQgYm90
aCB0aHJvdyBhbiBleGNlcHRpb24gd2hpbGUgIiwgZGVzY3JpcHRpb24pOworICAgICAgICBjaGVj
ayhmdW5jdGlvblJldHVybnNUcnVlKCIoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gYS5jb25zdHJ1
Y3RvciA9PT0gYi5jb25zdHJ1Y3RvcjsgfSkiLCBleGNlcHRpb24sIGpzUmVzdWx0LmVycm9yKCkp
LCAiSlMgYW5kIEFQSSBjYWxscyBzaG91bGQgYm90aCB0aHJvdyB0aGUgc2FtZSBleGNlcHRpb24g
d2hpbGUgIiwgZGVzY3JpcHRpb24pOworICAgIH0gZWxzZSB7CisgICAgICAgIGNoZWNrKCFleGNl
cHRpb24sICJKUyBhbmQgQVBJIGNhbGxzIHNob3VsZCBib3RoIG5vdCB0aHJvdyBhbiBleGNlcHRp
b24gd2hpbGUgIiwgZGVzY3JpcHRpb24pOworICAgICAgICBjaGVjayhKU1ZhbHVlSXNTdHJpY3RF
cXVhbChjb250ZXh0LCByZXN1bHQsIGpzUmVzdWx0LnZhbHVlKCkpLCAiSlMgcmVzdWx0IGFuZCBB
UEkgY2FsbHMgc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZSB3aGlsZSAiLCBkZXNjcmlwdGlv
bik7CisgICAgfQorfQorCitBUElWZWN0b3I8SlNPYmplY3RSZWY+IFRlc3RBUEk6OmludGVyZXN0
aW5nT2JqZWN0cygpCit7CisgICAgQVBJVmVjdG9yPEpTT2JqZWN0UmVmPiByZXN1bHQoY29udGV4
dCk7CisgICAgSlNPYmplY3RSZWYgYXJyYXkgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgZXZh
bHVhdGVTY3JpcHQoCisgICAgICAgICJbe30sIFtdLCB7IFtTeW1ib2wuaXRlcmF0b3JdOiAxIH0s
IG5ldyBEYXRlKCksIG5ldyBTdHJpbmcoJ3N0cicpLCBuZXcgTWFwKCksIG5ldyBTZXQoKSwgbmV3
IFdlYWtNYXAoKSwgbmV3IFdlYWtTZXQoKSwgbmV3IEVycm9yKCksIG5ldyBOdW1iZXIoNDIpLCBu
ZXcgQm9vbGVhbigpLCB7IGdldCBsZW5ndGgoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9IH1dOyIp
LnZhbHVlKCksIG51bGxwdHIpOworCisgICAgQVBJU3RyaW5nIGxlbmd0aFN0cmluZygibGVuZ3Ro
Iik7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIEpTT2Jq
ZWN0R2V0UHJvcGVydHkoY29udGV4dCwgYXJyYXksIGxlbmd0aFN0cmluZywgbnVsbHB0ciksIG51
bGxwdHIpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAg
ICAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgSlNPYmpl
Y3RHZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgYXJyYXksIGksIG51bGxwdHIpLCBudWxscHRy
KTsKKyAgICAgICAgQVNTRVJUKG9iamVjdCk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQob2JqZWN0
KTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitBUElWZWN0b3I8SlNWYWx1ZVJl
Zj4gVGVzdEFQSTo6aW50ZXJlc3RpbmdLZXlzKCkKK3sKKyAgICBBUElWZWN0b3I8SlNWYWx1ZVJl
Zj4gcmVzdWx0KGNvbnRleHQpOworICAgIEpTT2JqZWN0UmVmIGFycmF5ID0gSlNWYWx1ZVRvT2Jq
ZWN0KGNvbnRleHQsIGV2YWx1YXRlU2NyaXB0KCJbe30sIFtdLCAxLCBTeW1ib2wuaXRlcmF0b3Is
ICdsZW5ndGgnXSIpLnZhbHVlKCksIG51bGxwdHIpOworCisgICAgQVBJU3RyaW5nIGxlbmd0aFN0
cmluZygibGVuZ3RoIik7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gSlNWYWx1ZVRvTnVtYmVyKGNv
bnRleHQsIEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgYXJyYXksIGxlbmd0aFN0cmluZywg
bnVsbHB0ciksIG51bGxwdHIpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7
IGkrKykgeworICAgICAgICBKU1ZhbHVlUmVmIHZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eUF0
SW5kZXgoY29udGV4dCwgYXJyYXksIGksIG51bGxwdHIpOworICAgICAgICBBU1NFUlQodmFsdWUp
OworICAgICAgICByZXN1bHQuYXBwZW5kKHZhbHVlKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitpbnQgVGVzdEFQSTo6cnVuKCkKK3sKKyAgICBkYXRhTG9nTG4oIlN0YXJ0aW5n
IEMtQVBJIHRlc3RzIGluIEMrKyIpOworICAgIGNvbnN0IGNoYXIqIGlzU3ltYm9sRnVuY3Rpb24g
PSAiKGZ1bmN0aW9uIGlzU3ltYm9sKHN5bWJvbCkgeyByZXR1cm4gdHlwZW9mKHN5bWJvbCkgPT09
ICdzeW1ib2wnOyB9KSI7CisgICAgY29uc3QgY2hhciogZ2V0RnVuY3Rpb24gPSAiKGZ1bmN0aW9u
IGdldChvYmplY3QsIGtleSkgeyByZXR1cm4gb2JqZWN0W2tleV07IH0pIjsKKyAgICBjb25zdCBj
aGFyKiBzZXRGdW5jdGlvbiA9ICIoZnVuY3Rpb24gc2V0KG9iamVjdCwga2V5LCB2YWx1ZSkgeyBv
YmplY3Rba2V5XSA9IHZhbHVlOyB9KSI7CisgICAgY29uc3QgY2hhciogaGFzRnVuY3Rpb24gPSAi
KGZ1bmN0aW9uIGhhcyhvYmplY3QsIGtleSkgeyByZXR1cm4ga2V5IGluIG9iamVjdDsgfSkiOwor
ICAgIGNvbnN0IGNoYXIqIGRlbGV0ZUZ1bmN0aW9uID0gIihmdW5jdGlvbiBkZWwob2JqZWN0LCBr
ZXkpIHsgcmV0dXJuIGRlbGV0ZSBvYmplY3Rba2V5XTsgfSkiOworCisgICAgSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQpOworCisgICAgeworICAgICAgICAvLyBDYW4ndCBjYWxs
IFN5bWJvbCBhcyBhIGNvbnN0cnVjdG9yIHNpbmNlIGl0J3Mgbm90IHN1YmNsYXNzYWJsZS4KKyAg
ICAgICAgYXV0byByZXN1bHQgPSBldmFsdWF0ZVNjcmlwdCgiU3ltYm9sKCdkb3BlJyk7Iik7Cisg
ICAgICAgIGNoZWNrKEpTVmFsdWVHZXRUeXBlKGNvbnRleHQsIHJlc3VsdC52YWx1ZSgpKSA9PSBr
SlNUeXBlU3ltYm9sLCAiZG9wZSBnZXQgdHlwZSBpcyBhIHN5bWJvbCIpOworICAgICAgICBjaGVj
ayhKU1ZhbHVlSXNTeW1ib2woY29udGV4dCwgcmVzdWx0LnZhbHVlKCkpLCAiZG9wZSBpcyBhIHN5
bWJvbCIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQVBJU3RyaW5nIGRlc2NyaXB0aW9uKCJk
b3BlIik7CisgICAgICAgIEpTVmFsdWVSZWYgc3ltYm9sID0gSlNWYWx1ZU1ha2VTeW1ib2woY29u
dGV4dCwgZGVzY3JpcHRpb24pOworICAgICAgICBjaGVjayhmdW5jdGlvblJldHVybnNUcnVlKGlz
U3ltYm9sRnVuY3Rpb24sIHN5bWJvbCksICJKU1ZhbHVlTWFrZVN5bWJvbCBtYWtlcyBhIHN5bWJv
bCB2YWx1ZSIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0byBvYmplY3RzID0gaW50ZXJl
c3RpbmdPYmplY3RzKCk7CisgICAgICAgIGF1dG8ga2V5cyA9IGludGVyZXN0aW5nS2V5cygpOwor
CisgICAgICAgIGZvciAoYXV0byYgb2JqZWN0IDogb2JqZWN0cykgeworICAgICAgICAgICAgZGF0
YUxvZ0xuKCJcbm5leHQgb2JqZWN0OiAiLCB0b0pTKGV4ZWMsIG9iamVjdCkpOworICAgICAgICAg
ICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzKSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJV
c2luZyBrZXk6ICIsIHRvSlMoZXhlYywga2V5KSk7CisgICAgICAgICAgICAgICAgY2hlY2tKU0Fu
ZEFQSU1hdGNoKAorICAgICAgICAgICAgICAgICAgICBbJl0geworICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGNhbGxGdW5jdGlvbihnZXRGdW5jdGlvbiwgb2JqZWN0LCBrZXkpOworICAg
ICAgICAgICAgICAgICAgICB9LCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT2JqZWN0R2V0UHJvcGVydHlLZXkoY29udGV4dCwg
b2JqZWN0LCBrZXksIGV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAgICAgIH0sICJjaGVja2lu
ZyBnZXQgcHJvcGVydHkga2V5cyIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgeworICAgICAgICBhdXRvIGpzT2JqZWN0cyA9IGludGVyZXN0aW5nT2JqZWN0cygpOwor
ICAgICAgICBhdXRvIGFwaU9iamVjdHMgPSBpbnRlcmVzdGluZ09iamVjdHMoKTsKKyAgICAgICAg
YXV0byBrZXlzID0gaW50ZXJlc3RpbmdLZXlzKCk7CisKKyAgICAgICAgSlNWYWx1ZVJlZiB0aGVB
bnN3ZXIgPSBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCA0Mik7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwganNPYmplY3RzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8mIGtleSA6IGtleXMpIHsKKyAgICAgICAgICAgICAgICBKU09iamVjdFJlZiBqc09iamVj
dCA9IGpzT2JqZWN0c1tpXTsKKyAgICAgICAgICAgICAgICBKU09iamVjdFJlZiBhcGlPYmplY3Qg
PSBhcGlPYmplY3RzW2ldOworICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAg
ICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBj
YWxsRnVuY3Rpb24oc2V0RnVuY3Rpb24sIGpzT2JqZWN0LCBrZXksIHRoZUFuc3dlcik7CisgICAg
ICAgICAgICAgICAgICAgIH0gLCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAg
ICAgICAgICAgICAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eUtleShjb250ZXh0LCBhcGlPYmpl
Y3QsIGtleSwgdGhlQW5zd2VyLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUsIGV4Y2VwdGlvbik7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCk7CisgICAgICAgICAgICAgICAgICAgIH0sICJzZXR0aW5nIHByb3BlcnR5IGtleXMgdG8g
dGhlIGFuc3dlciIpOworICAgICAgICAgICAgICAgIC8vIENoZWNrIGdldCBpcyB0aGUgc2FtZSBv
biBBUEkgb2JqZWN0LgorICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAg
ICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxs
RnVuY3Rpb24oZ2V0RnVuY3Rpb24sIGFwaU9iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAg
ICAgfSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBKU09iamVjdEdldFByb3BlcnR5S2V5KGNvbnRleHQsIGFwaU9iamVjdCwga2V5
LCBleGNlcHRpb24pOworICAgICAgICAgICAgICAgICAgICB9LCAiZ2V0dGluZyBwcm9wZXJ0eSBr
ZXlzIGZyb20gQVBJIG9iamVjdHMiKTsKKyAgICAgICAgICAgICAgICAvLyBDaGVjayBnZXQgaXMg
dGhlIHNhbWUgb24gcmVzcGVjdGl2ZSBvYmplY3RzLgorICAgICAgICAgICAgICAgIGNoZWNrSlNB
bmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oZ2V0RnVuY3Rpb24sIGpzT2JqZWN0LCBrZXkpOwor
ICAgICAgICAgICAgICAgICAgICB9LCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT2JqZWN0R2V0UHJvcGVydHlLZXkoY29udGV4
dCwgYXBpT2JqZWN0LCBrZXksIGV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAgICAgIH0sICJn
ZXR0aW5nIHByb3BlcnR5IGtleXMgZnJvbSByZXNwZWN0aXZlIG9iamVjdHMiKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0byBvYmplY3RzID0g
aW50ZXJlc3RpbmdPYmplY3RzKCk7CisgICAgICAgIGF1dG8ga2V5cyA9IGludGVyZXN0aW5nS2V5
cygpOworCisgICAgICAgIEpTVmFsdWVSZWYgdGhlQW5zd2VyID0gSlNWYWx1ZU1ha2VOdW1iZXIo
Y29udGV4dCwgNDIpOworICAgICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IG9iamVjdHMpIHsKKyAg
ICAgICAgICAgIGRhdGFMb2dMbigiXG5OZXh0IG9iamVjdDogIiwgdG9KUyhleGVjLCBvYmplY3Qp
KTsKKyAgICAgICAgICAgIGZvciAoYXV0byYga2V5IDoga2V5cykgeworICAgICAgICAgICAgICAg
IGRhdGFMb2dMbigiVXNpbmcga2V5OiAiLCB0b0pTKGV4ZWMsIGtleSkpOworICAgICAgICAgICAg
ICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oaGFzRnVuY3Rpb24sIG9iamVj
dCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRp
b24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4o
Y29udGV4dCwgSlNPYmplY3RIYXNQcm9wZXJ0eUtleShjb250ZXh0LCBvYmplY3QsIGtleSwgZXhj
ZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIH0sICJjaGVja2luZyBoYXMgcHJvcGVydHkg
a2V5cyB1bnNldCIpOworCisgICAgICAgICAgICAgICAgY2hlY2soISFjYWxsRnVuY3Rpb24oc2V0
RnVuY3Rpb24sIG9iamVjdCwga2V5LCB0aGVBbnN3ZXIpLCAic2V0IHByb3BlcnR5IHRvIHRoZSBh
bnN3ZXIiKTsKKworICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAg
ICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVu
Y3Rpb24oaGFzRnVuY3Rpb24sIG9iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwg
WyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgSlNPYmplY3RIYXNQcm9wZXJ0eUtleShj
b250ZXh0LCBvYmplY3QsIGtleSwgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIH0s
ICJjaGVja2luZyBoYXMgcHJvcGVydHkga2V5cyBzZXQiKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0byBvYmplY3RzID0gaW50ZXJlc3RpbmdP
YmplY3RzKCk7CisgICAgICAgIGF1dG8ga2V5cyA9IGludGVyZXN0aW5nS2V5cygpOworCisgICAg
ICAgIEpTVmFsdWVSZWYgdGhlQW5zd2VyID0gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgNDIp
OworICAgICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IG9iamVjdHMpIHsKKyAgICAgICAgICAgIGRh
dGFMb2dMbigiXG5OZXh0IG9iamVjdDogIiwgdG9KUyhleGVjLCBvYmplY3QpKTsKKyAgICAgICAg
ICAgIGZvciAoYXV0byYga2V5IDoga2V5cykgeworICAgICAgICAgICAgICAgIGRhdGFMb2dMbigi
VXNpbmcga2V5OiAiLCB0b0pTKGV4ZWMsIGtleSkpOworICAgICAgICAgICAgICAgIGNoZWNrSlNB
bmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oZGVsZXRlRnVuY3Rpb24sIG9iamVjdCwga2V5KTsK
KyAgICAgICAgICAgICAgICAgICAgfSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwg
SlNPYmplY3REZWxldGVQcm9wZXJ0eUtleShjb250ZXh0LCBvYmplY3QsIGtleSwgZXhjZXB0aW9u
KSk7CisgICAgICAgICAgICAgICAgICAgIH0sICJjaGVja2luZyBoYXMgcHJvcGVydHkga2V5cyB1
bnNldCIpOworCisgICAgICAgICAgICAgICAgY2hlY2soISFjYWxsRnVuY3Rpb24oc2V0RnVuY3Rp
b24sIG9iamVjdCwga2V5LCB0aGVBbnN3ZXIpLCAic2V0IHByb3BlcnR5IHRvIHRoZSBhbnN3ZXIi
KTsKKworICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAg
ICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24o
ZGVsZXRlRnVuY3Rpb24sIG9iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgWyZd
IChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgSlNPYmplY3REZWxldGVQcm9wZXJ0eUtleShj
b250ZXh0LCBvYmplY3QsIGtleSwgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIH0s
ICJjaGVja2luZyBoYXMgcHJvcGVydHkga2V5cyBzZXQiKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIGRhdGFMb2dMbigiQy1BUEkgdGVzdHMgaW4gQysrIGhhZCAiLCBm
YWlsZWQsICIgZmFpbHVyZXMiKTsKKyAgICByZXR1cm4gZmFpbGVkOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCmluZGV4IGExNjU0YWUxMWUxOTFhNjQ5MmM1
NTM2OGQ4ZWJkMGQ1NjE5ZDE4YTIuLjM4MjgwNTQ2NDgyYWU0ZDA0ODFlZDMzYWM4Mzk1NDg0ZThi
OWVmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFw
aS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KQEAg
LTIzLDYgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJKU0V4cG9ydE1hY3Jvcy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuaD4KIApAQCAtNDIsNiArNDMsNyBAQAogI2ltcG9ydCA8dmVjdG9yPgogI2lt
cG9ydCA8d3RmL01lbW9yeUZvb3RwcmludC5oPgogI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+Cisj
aW1wb3J0IDx3dGYvRGF0YUxvZy5oPgogCiBleHRlcm4gIkMiIHZvaWQgSlNTeW5jaHJvbm91c0dh
cmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKEpTQ29udGV4dFJlZik7CiBleHRlcm4gIkMiIHZvaWQg
SlNTeW5jaHJvbm91c0VkZW5Db2xsZWN0Rm9yRGVidWdnaW5nKEpTQ29udGV4dFJlZik7CkBAIC02
MjYsNiArNjI4LDEwNSBAQCBzdGF0aWMgdm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSU1haW4oKQogICAg
ICAgICBjaGVja1Jlc3VsdChAIm5ldyBEYXRlIiwgcmVzdWx0LmlzRGF0ZSk7CiAgICAgfQogCisg
ICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlND
b250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAqc3ltYm9sID0gW2NvbnRleHQg
ZXZhbHVhdGVTY3JpcHQ6QCJTeW1ib2woJ2RvcGUnKTsiXTsKKyAgICAgICAgSlNWYWx1ZSAqbm90
U3ltYm9sID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCInZG9wZSciXTsKKyAgICAgICAgY2hl
Y2tSZXN1bHQoQCJTaG91bGQgYmUgYSBzeW1ib2wgdmFsdWUiLCBzeW1ib2wuaXNTeW1ib2wpOwor
ICAgICAgICBjaGVja1Jlc3VsdChAIlNob3VsZCBub3QgYmUgYSBzeW1ib2wgdmFsdWUiLCAhbm90
U3ltYm9sLmlzU3ltYm9sKTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAg
ICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAg
ICBKU1ZhbHVlICpzeW1ib2wgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdTeW1ib2xGcm9tRGVzY3Jp
cHRpb246QCJkb3BlIiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIGNoZWNrUmVzdWx0KEAi
U2hvdWxkIGJlIGEgY3JlYXRlZCBmcm9tIE9iai1DIiwgc3ltYm9sLmlzU3ltYm9sKTsKKyAgICB9
CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0g
W1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICphcnJheUl0ZXJhdG9y
ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJBcnJheS5wcm90b3R5cGVbU3ltYm9sLml0ZXJh
dG9yXSJdOworICAgICAgICBKU1ZhbHVlICppdGVyYXRvclN5bWJvbCA9IGNvbnRleHRbQCJTeW1i
b2wiXVtAIml0ZXJhdG9yIl07CisgICAgICAgIEpTVmFsdWUgKmFycmF5ID0gW0pTVmFsdWUgdmFs
dWVXaXRoTmV3QXJyYXlJbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIGNoZWNrUmVzdWx0KEAi
TG9va2luZyB1cCBieSBzdWJzY3JpcHQgd2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsiLCBbYXJyYXlb
aXRlcmF0b3JTeW1ib2xdIGlzRXF1YWw6YXJyYXlJdGVyYXRvcl0pOworICAgICAgICBjaGVja1Jl
c3VsdChAIkxvb2tpbmcgdXAgYnkgbWV0aG9kIHdpdGggc3ltYm9sIHNob3VsZCB3b3JrIiwgW1th
cnJheSB2YWx1ZUZvclByb3BlcnR5Oml0ZXJhdG9yU3ltYm9sXSBpc0VxdWFsOmFycmF5SXRlcmF0
b3JdKTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0
ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICpp
dGVyYXRvclN5bWJvbCA9IGNvbnRleHRbQCJTeW1ib2wiXVtAIml0ZXJhdG9yIl07CisgICAgICAg
IEpTVmFsdWUgKm9iamVjdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld09iamVjdEluQ29udGV4dDpj
b250ZXh0XTsKKyAgICAgICAgSlNWYWx1ZSAqdGhlQW5zd2VyID0gW0pTVmFsdWUgdmFsdWVXaXRo
VUludDMyOjQyIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgb2JqZWN0W2l0ZXJhdG9yU3lt
Ym9sXSA9IHRoZUFuc3dlcjsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJTZXR0aW5nIGJ5IHN1YnNj
cmlwdCB3aXRoIHN5bWJvbCBzaG91bGQgd29yayIsIFtvYmplY3RbaXRlcmF0b3JTeW1ib2xdIGlz
RXF1YWw6dGhlQW5zd2VyXSk7CisgICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAg
ICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAg
ICAgSlNWYWx1ZSAqaXRlcmF0b3JTeW1ib2wgPSBjb250ZXh0W0AiU3ltYm9sIl1bQCJpdGVyYXRv
ciJdOworICAgICAgICBKU1ZhbHVlICpvYmplY3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdPYmpl
Y3RJbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIEpTVmFsdWUgKnRoZUFuc3dlciA9IFtKU1Zh
bHVlIHZhbHVlV2l0aFVJbnQzMjo0MiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIFtvYmpl
Y3Qgc2V0VmFsdWU6dGhlQW5zd2VyIGZvclByb3BlcnR5Oml0ZXJhdG9yU3ltYm9sXTsKKyAgICAg
ICAgY2hlY2tSZXN1bHQoQCJTZXR0aW5nIGJ5IG1ldGhvZCB3aXRoIHN5bWJvbCBzaG91bGQgd29y
ayIsIFtvYmplY3RbaXRlcmF0b3JTeW1ib2xdIGlzRXF1YWw6dGhlQW5zd2VyXSk7CisgICAgfQor
CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtb
SlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAqaXRlcmF0b3JTeW1ib2wg
PSBjb250ZXh0W0AiU3ltYm9sIl1bQCJpdGVyYXRvciJdOworICAgICAgICBKU1ZhbHVlICpvYmpl
Y3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdPYmplY3RJbkNvbnRleHQ6Y29udGV4dF07CisgICAg
ICAgIEpTVmFsdWUgKnRoZUFuc3dlciA9IFtKU1ZhbHVlIHZhbHVlV2l0aFVJbnQzMjo0MiBpbkNv
bnRleHQ6Y29udGV4dF07CisgICAgICAgIG9iamVjdFtpdGVyYXRvclN5bWJvbF0gPSB0aGVBbnN3
ZXI7CisgICAgICAgIGNoZWNrUmVzdWx0KEAiaGFzIHByb3BlcnR5IHdpdGggc3ltYm9sIHNob3Vs
ZCB3b3JrIiwgW29iamVjdCBoYXNQcm9wZXJ0eTppdGVyYXRvclN5bWJvbF0pOworICAgIH0KKwor
ICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pT
Q29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUgKml0ZXJhdG9yU3ltYm9sID0g
Y29udGV4dFtAIlN5bWJvbCJdW0AiaXRlcmF0b3IiXTsKKyAgICAgICAgSlNWYWx1ZSAqb2JqZWN0
ID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOworICAgICAg
ICBKU1ZhbHVlICp0aGVBbnN3ZXIgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhVSW50MzI6NDIgaW5Db250
ZXh0OmNvbnRleHRdOworICAgICAgICBjaGVja1Jlc3VsdChAImRlbGV0ZSBwcm9wZXJ0eSB3aXRo
IHN5bWJvbCBzaG91bGQgd29yayB3aXRob3V0IHByb3BlcnR5IiwgW29iamVjdCBkZWxldGVQcm9w
ZXJ0eTppdGVyYXRvclN5bWJvbF0pOworICAgICAgICBvYmplY3RbaXRlcmF0b3JTeW1ib2xdID0g
dGhlQW5zd2VyOworICAgICAgICBjaGVja1Jlc3VsdChAImRlbGV0ZSBwcm9wZXJ0eSB3aXRoIHN5
bWJvbCBzaG91bGQgd29yayB3aXRoIHByb3BlcnR5IiwgW29iamVjdCBkZWxldGVQcm9wZXJ0eTpp
dGVyYXRvclN5bWJvbF0pOworICAgICAgICBjaGVja1Jlc3VsdChAImRlbGV0ZSBzaG91bGQgYmUg
ZmFsc2Ugd2l0aCBub24tY29uZmlndXJhYmxlIHByb3BlcnR5IiwgIVtjb250ZXh0W0AiQXJyYXki
XSBkZWxldGVQcm9wZXJ0eTpAInByb3RvdHlwZSJdKTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVh
c2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2Nd
IGluaXRdOworICAgICAgICBKU1ZhbHVlICpvYmplY3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdP
YmplY3RJbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIE5TT2JqZWN0ICpvYmpDT2JqZWN0ID0g
W1tOU09iamVjdCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IG9iamVj
dFtvYmpDT2JqZWN0XTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJnZXR0aW5nIGEgbm9uLWNvbnZl
cnRhYmxlIG9iamVjdCBzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCIsIFtyZXN1bHQgaXNVbmRlZmlu
ZWRdKTsKKyAgICAgICAgb2JqZWN0W29iakNPYmplY3RdID0gQCgxKTsKKyAgICAgICAgcmVzdWx0
ID0gb2JqZWN0W29iakNPYmplY3RdOworICAgICAgICBjaGVja1Jlc3VsdChAImdldHRpbmcgYSBu
b24tY29udmVydGFibGUgb2JqZWN0IHNob3VsZCByZXR1cm4gdGhlIHN0b3JlZCB2YWx1ZSIsIFty
ZXN1bHQgdG9VSW50MzJdID09IDEpOworICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgewor
ICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07Cisg
ICAgICAgIEpTVmFsdWUgKm9iamVjdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld09iamVjdEluQ29u
dGV4dDpjb250ZXh0XTsKKyAgICAgICAgSlNWYWx1ZSAqaXRlcmF0b3JTeW1ib2wgPSBjb250ZXh0
W0AiU3ltYm9sIl1bQCJpdGVyYXRvciJdOworICAgICAgICBvYmplY3RbQCJ2YWx1ZSJdID0gQCgx
KTsKKyAgICAgICAgY29udGV4dFtAIm9iamVjdCJdID0gb2JqZWN0OworCisgICAgICAgIG9iamVj
dFtpdGVyYXRvclN5bWJvbF0gPSBeeworICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW0pT
VmFsdWUgdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICAgICAg
cmVzdWx0W0Aib2JqZWN0Il0gPSBbSlNDb250ZXh0IGN1cnJlbnRUaGlzXTsKKyAgICAgICAgICAg
IHJlc3VsdFtAIm5leHQiXSA9IF57CisgICAgICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0g
W0pTVmFsdWUgdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICAg
ICAgICAgIEpTVmFsdWUgKnZhbHVlID0gW0pTQ29udGV4dCBjdXJyZW50VGhpc11bQCJvYmplY3Qi
XVtAInZhbHVlIl07CisgICAgICAgICAgICAgICAgW1tKU0NvbnRleHQgY3VycmVudFRoaXNdW0Ai
b2JqZWN0Il0gZGVsZXRlUHJvcGVydHk6QCJ2YWx1ZSJdOworICAgICAgICAgICAgICAgIHJlc3Vs
dFtAInZhbHVlIl0gPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICByZXN1bHRbQCJkb25lIl0gPSBb
SlNWYWx1ZSB2YWx1ZVdpdGhCb29sOlt2YWx1ZSBpc1VuZGVmaW5lZF0gaW5Db250ZXh0OmNvbnRl
eHRdOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9OworICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfTsKKworCisgICAgICAgIEpTVmFsdWUg
KmNvdW50ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJsZXQgY291bnQgPSAwOyBmb3IgKGxl
dCB2IG9mIG9iamVjdCkgeyBpZiAodiAhPT0gMSkgdGhyb3cgbmV3IEVycm9yKCk7IGNvdW50Kys7
IH0gY291bnQ7Il07CisgICAgICAgIGNoZWNrUmVzdWx0KEAiaXRlcmF0b3Igc2hvdWxkIG5vdCB0
aHJvdyIsICFbY29udGV4dCBleGNlcHRpb25dKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJpdGVy
YXRpb24gY291bnQgc2hvdWxkIGJlIDEiLCBbY291bnQgdG9VSW50MzJdID09IDEpOworICAgIH0K
KwogICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICBKU0NvbGxlY3Rpb24qIG15UHJpdmF0
ZVByb3BlcnRpZXMgPSBbW0pTQ29sbGVjdGlvbiBhbGxvY10gaW5pdF07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYWQwOWZkMGRjNjI2ZTAxZGMzNTIwNWMzYjU4ZjUzNTBlZTcx
ODhkNi4uMjkzZDcxNDI0MjBiYWM5NTFjMmQwZWIwYzRmYTAzM2QwYzdkNGQyOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNDAsNiArMTA0MCw3IEBACiAJCTUzRTc3N0U0MUU5
MkUyNjUwMDdDQkVDNCAvKiBXYXNtTW9kdWxlSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRTc3N0UyMUU5MkUyNjUwMDdDQkVDNCAv
KiBXYXNtTW9kdWxlSW5mb3JtYXRpb24uaCAqLzsgfTsKIAkJNTNFOUUwQUMxRUFFODNERjAwRkVF
MjUxIC8qIFdhc21NYWNoaW5lVGhyZWFkcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTNFOUUwQUExRUFFODNERTAwRkVFMjUxIC8qIFdhc21NYWNoaW5l
VGhyZWFkcy5oICovOyB9OwogCQk1M0U5RTBBRjFFQUVDNDU3MDBGRUUyNTEgLyogV2FzbVRpZXJV
cENvdW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
M0U5RTBBRTFFQUVDNDU3MDBGRUUyNTEgLyogV2FzbVRpZXJVcENvdW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTNFQUZFMkYyMDhERkFCNDAw
N0Q1MjRCIC8qIHRlc3RhcGkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTMxRDRFMTkxRjU5Q0REMjAwRUM4MzZDIC8qIHRlc3RhcGkuY3BwICovOyB9
OwogCQk1M0YxMUY0MTIwOTEzOEQ3MDBFNDExQTcgLyogSlNJbW11dGFibGVCdXR0ZXJmbHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjExRjQwMjA5
MTM4RDcwMEU0MTFBNyAvKiBKU0ltbXV0YWJsZUJ1dHRlcmZseS5oICovOyB9OwogCQk1M0Y0MEU4
NTFENThGOTc3MDA5OUExQjYgLyogV2FzbVNlY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU4NDFENThGOTc3MDA5OUExQjYgLyogV2Fz
bVNlY3Rpb25zLmggKi87IH07CiAJCTUzRjQwRThCMUQ1OTAxQkIwMDk5QTFCNiAvKiBXYXNtRnVu
Y3Rpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzRjQwRThBMUQ1OTAxQkIwMDk5QTFCNiAvKiBXYXNtRnVuY3Rpb25QYXJzZXIuaCAqLzsg
fTsKQEAgLTMzMDUsNiArMzMwNiw4IEBACiAJCTUzMTFCRDQ5MUVBNTgxRTUwMDUyNTI4MSAvKiBX
YXNtT01HUGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtT01HUGxh
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzEzNzRCQzFENUNFNjc2MDBBRjdB
MEIgLyogV2FzbVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbVBs
YW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxMzc0QkUxRDVDRTk1MDAwQUY3
QTBCIC8qIFdhc21QbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdhc21QbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMxRDRFMTkxRjU5
Q0REMjAwRUM4MzZDIC8qIHRlc3RhcGkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdGVzdGFwaS5j
cHA7IHBhdGggPSBBUEkvdGVzdHMvdGVzdGFwaS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUzMzNCQkQ0MjEwOTI4Q0QwMDc2MThFQyAvKiBwb3N0cHJvY2Vzcy1oZWFkZXJzLnNo
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQuc2g7IHBhdGggPSAicG9zdHByb2Nlc3MtaGVhZGVycy5z
aCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzM0IxNURFMURDN0Y0NjMwMDRENTAw
QSAvKiBXYXNtT3BzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21PcHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0MUZDNkYxREFDMzNFNTAwRTdFNEQ3
IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM1dhc21C
b3VuZHNDaGVja1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0MUZD
NzExREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBwYXRoID0g
YjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMzQ3NSw3ICszNDc4LDYgQEAKIAkJNTM5MTdFN0ExQjc5MDZFNDAwMEVCRDMzIC8qIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzOTE3RTdDMUI3OTExMDYwMDBFQkQz
MyAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTM5MTdFODMxQjc5MUNCODAwMEVCRDMzIC8qIFR5cGVkQXJyYXlQcm90b3R5
cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBUeXBlZEFycmF5
UHJvdG90eXBlLmpzOyBwYXRoID0gYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qczsgc291
cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQk1MzlFQjA3MTFENTUzREY4MDBDODJFRjcgLyog
dGVzdFdhc20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdGVzdFdh
c20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzlGQjhCOTFDOTlEQTdDMDA5
NDBGQTEgLyogSlNBcnJheUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNBcnJheUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNCMEJF
MzMxRTU2MUFDOTAwQThGQzI5IC8qIEdldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzQjBCRTM1MUU1NjFCMDkwMEE4RkMyOSAv
KiBQcm94eWFibGVBY2Nlc3NDYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFByb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMzczNiw3ICszNzM4LDcgQEAKIAkJN0Q1RkIxOTAyMDc0NEJGMTAwNURERjY0IC8qIElu
dGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdENUZCMTkxMjA3NDRCRjEwMDVEREY2NCAvKiBJbnRsUGx1cmFsUnVsZXNQcm90b3R5
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bFBsdXJhbFJ1
bGVzUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0Q1RkIxOTIy
MDc0NEJGMjAwNURERjY0IC8qIEludGxQbHVyYWxSdWxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnRsUGx1cmFsUnVsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJN0Q3MzRGRTQyMEI0RDg0MTAwMTg4NDRBIC8qIEludGxDYW5vbmljYWxpemVMYW5ndWFn
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBJbnRsQ2Fub25pY2FsaXplTGFuZ3VhZ2UuaDsgcGF0aCA9IElu
dGxDYW5vbmljYWxpemVMYW5ndWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
RDczNEZFNDIwQjREODQxMDAxODg0NEEgLyogSW50bENhbm9uaWNhbGl6ZUxhbmd1YWdlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEludGxDYW5vbmljYWxpemVMYW5ndWFnZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3RTRFRTcwODBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlQ2hhaW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U0RUU3MEUwRUJCN0E1QjAwNTkzNEFBIC8qIFN0
cnVjdHVyZUNoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0
cnVjdHVyZUNoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYwMTYxREYw
RjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNDkzMiw2ICs0OTM0LDcgQEAKIAkJCQlGNjkyQTg1NDAyNTU1
OTdEMDFGRjYwRjcgLyogY3JlYXRlX2hhc2hfdGFibGUgKi8sCiAJCQkJOTM3QjYzQ0MwOUU3NjZE
MjAwQTY3MUREIC8qIERlcml2ZWRTb3VyY2VzLm1ha2UgKi8sCiAJCQkJMEY5MzI3NUExQzIwQkNE
RjAwQ0Y2NTY0IC8qIGR5bmJlbmNoLmNwcCAqLywKKwkJCQk1MzMzQkJENDIxMDkyOENEMDA3NjE4
RUMgLyogcG9zdHByb2Nlc3MtaGVhZGVycy5zaCAqLywKIAkJCQk2NTI5RkIzMDE4QjJENjM5MDBD
NjExMDIgLyogZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMgKi8sCiAJCQkJRjVDMjkwRTYwMjg0Rjk4
RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggKi8sCiAJCQkJNDVFMTJEODgwNkE0
OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAgKi8sCkBAIC01NDY3LDEwICs1NDcwLDEwIEBACiAJCQkJ
RkVCNTFGNkIxQTk3QjY4ODAwMUY5MjFDIC8qIFJlZ3Jlc3MxNDE4MDkubW0gKi8sCiAJCQkJRkVD
QjhCMjkxRDI1Q0FCQjAwNkYyNDYzIC8qIHRlc3RhcGktZnVuY3Rpb24tb3ZlcnJpZGVzLmpzICov
LAogCQkJCTE0QkQ1QTJEMEEzRTkxRjYwMEJBRjU5QyAvKiB0ZXN0YXBpLmMgKi8sCisJCQkJNTMx
RDRFMTkxRjU5Q0REMjAwRUM4MzZDIC8qIHRlc3RhcGkuY3BwICovLAogCQkJCTE0RDg1Nzc0MEE0
Njk2QzgwMDMyMTQ2QyAvKiB0ZXN0YXBpLmpzICovLAogCQkJCTg2RDIyMjE5MTY3RUY5NDQwMDI0
QzgwNCAvKiB0ZXN0YXBpLm1tICovLAogCQkJCTY1MTEyMkU1MTQwNDY5QkEwMDJCMTAxRCAvKiB0
ZXN0UmVnRXhwLmNwcCAqLywKLQkJCQk1MzlFQjA3MTFENTUzREY4MDBDODJFRjcgLyogdGVzdFdh
c20uY3BwICovLAogCQkJCTUzNDkwMjgyMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rl
c3QuY3BwICovLAogCQkJCTUzNDkwMjgzMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rl
c3QuaCAqLywKIAkJCSk7CkBAIC05OTg0LDcgKzk5ODcsNyBAQAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsK
LQkJCXNoZWxsU2NyaXB0ID0gImV4ZWMgJHtTUkNST09UfS9wb3N0cHJvY2Vzcy1oZWFkZXJzLnNo
IjsKKwkJCXNoZWxsU2NyaXB0ID0gImV4ZWMgJHtTUkNST09UfS9wb3N0cHJvY2Vzcy1oZWFkZXJz
LnNoXG4iOwogCQl9OwogCQkzNzRGOTVDOTIwNUY5OTc1MDAyQkY2OEYgLyogTWFrZSBsaWJXVEYu
YSBTeW1ib2xpYyBMaW5rICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNl
OwpAQCAtMTAyMDMsNiArMTAyMDYsNyBAQAogCQkJCTY1NTcwRjVBMUFBNEMzRUEwMDlCM0MyMyAv
KiBSZWdyZXNzMTQxMjc1Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVCNTFGNkMxQTk3QjY4ODAw
MUY5MjFDIC8qIFJlZ3Jlc3MxNDE4MDkubW0gaW4gU291cmNlcyAqLywKIAkJCQkxNDQwRjYxMDBB
NEY4NTY3MDAwNUYwNjEgLyogdGVzdGFwaS5jIGluIFNvdXJjZXMgKi8sCisJCQkJNTNFQUZFMkYy
MDhERkFCNDAwN0Q1MjRCIC8qIHRlc3RhcGkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZEMjIy
MUExNjdFRjk0NDAwMjRDODA0IC8qIHRlc3RhcGkubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzQ5
MDI4NTFDNzI3NkI3MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJKTsKQEAgLTEwNjcwLDYgKzEwNjc0LDEwIEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBD
MzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5n
cyA9IHsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkiXCIkKEpBVkFTQ1JJUFRD
T1JFX0ZSQU1FV09SS1NfRElSKS9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRl
cnNcIiIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IERl
YnVnOwogCQl9OwpAQCAtMTA2NzcsNiArMTA2ODUsMTAgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkw
MEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRp
bmdzID0geworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSJcIiQoSkFWQVNDUklQ
VENPUkVfRlJBTUVXT1JLU19ESVIpL0phdmFTY3JpcHRDb3JlLmZyYW1ld29yay9Qcml2YXRlSGVh
ZGVyc1wiIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJKTsKIAkJCX07CiAJCQluYW1lID0g
UmVsZWFzZTsKIAkJfTsKQEAgLTEwNjg0LDYgKzEwNjk2LDEwIEBACiAJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIx
MzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOwogCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkiXCIkKEpBVkFT
Q1JJUFRDT1JFX0ZSQU1FV09SS1NfRElSKS9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsvUHJpdmF0
ZUhlYWRlcnNcIiIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CiAJCQl9OwogCQkJbmFt
ZSA9IFByb2R1Y3Rpb247CiAJCX07CkBAIC0xMTAwOCw2ICsxMTAyNCwxMCBAQAogCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJD
MDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsKIAkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIlwi
JChKQVZBU0NSSVBUQ09SRV9GUkFNRVdPUktTX0RJUikvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3Jr
L1ByaXZhdGVIZWFkZXJzXCIiLAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkpOwogCQkJfTsK
IAkJCW5hbWUgPSBQcm9maWxpbmc7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvY29uZmlnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgKaW5kZXggMWQx
ZWQ3YjZmOGM2YWMwOWYxNDQ0NGY2ZWYzODA1NjI5OTgxOWQ3ZS4uNTZlYzdmNjY3YjJlMDljMjkz
ZjUzMzljMzU3ZTEzMzIzZGE5OTE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2NvbmZpZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaApAQCAtMjMsNiAr
MjMsMTEgQEAKICNpbmNsdWRlICJjbWFrZWNvbmZpZy5oIgogI2VuZGlmCiAKKyNkZWZpbmUgSlND
X0FQSV9BVkFJTEFCTEUoLi4uKQorLy8gUGljayBzb21lIG9ic2VuZWx5IGxhcmdlIG51bWJlciBi
ZWNhdXNlIHdoeSBub3QuCisjZGVmaW5lIEpTQ19NQUNfVkVSU0lPTl9UQkEgMAorI2RlZmluZSBK
U0NfSU9TX1ZFUlNJT05fVEJBIDAKKwogI2luY2x1ZGUgIkpTRXhwb3J0TWFjcm9zLmgiCiAKICNp
ZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bvc3Rw
cm9jZXNzLWhlYWRlcnMuc2ggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcG9zdHByb2Nlc3MtaGVh
ZGVycy5zaAppbmRleCBjODYxODQzN2QyYTA3Nzk0OWE1OTBhYzcwMTdmODI2YjUyZDZkMmIzLi43
OGI0ZmQ0ODVhZWYwYzc3N2JhMmUyMzliYzI2NmEyOWVhZGE0Zjc2IDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcG9zdHByb2Nlc3MtaGVhZGVycy5zaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcG9zdHByb2Nlc3MtaGVhZGVycy5zaApAQCAtMSwxOCArMSwxMDAgQEAKLWNk
ICIke1RBUkdFVF9CVUlMRF9ESVJ9LyR7UFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEh9IgotCi1V
TklGREVGX09QVElPTlM9Ii1EX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRD0ke1RBUkdF
VF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SfSIKLQotZm9yICgoaSA9IDA7IGkgPCAke1NDUklQVF9J
TlBVVF9GSUxFX0NPVU5UfTsgKytpKSk7IGRvCi0gICAgZXZhbCBIRUFERVI9XCR7U0NSSVBUX0lO
UFVUX0ZJTEVfJHtpfX07Ci0gICAgdW5pZmRlZiAtQiAke1VOSUZERUZfT1BUSU9OU30gLW8gIiR7
SEVBREVSfSIudW5pZmRlZiAiJHtIRUFERVJ9IgotICAgIGNhc2UgJD8gaW4KLSAgICAwKQotICAg
ICAgICBybSAiJHtIRUFERVJ9Ii51bmlmZGVmCi0gICAgICAgIDs7Ci0gICAgMSkKLSAgICAgICAg
bXYgIiR7SEVBREVSfSJ7LnVuaWZkZWYsfQotICAgICAgICA7OwotICAgICopCi0gICAgICAgIGV4
aXQgMQotICAgIGVzYWMKLWRvbmUKKyMhL2Jpbi9zaAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyMKKworaWYgW1sgIiR7SlNDX0ZSQU1FV09SS19IRUFERVJfUE9TVFBS
T0NFU1NJTkdfRElTQUJMRUR9IiA9PSAiWUVTIiBdXTsgdGhlbgorICAgIGV4aXQgMDsKK2ZpCisK
K1RJTUVTVEFNUF9QQVRIPSR7VEFSR0VUX1RFTVBfRElSfS8kezAjIyovfQorCitpZiBbWyAtZSAk
VElNRVNUQU1QX1BBVEggJiYgJDAgLW50ICRUSU1FU1RBTVBfUEFUSCBdXTsgdGhlbgorICAgIHJt
ICIke1RJTUVTVEFNUF9QQVRIfSI7CitmaQorCitmdW5jdGlvbiBwcm9jZXNzX2RlZmluaXRpb25z
ICgpIHsKKyAgICBsb2NhbCBERUZJTklUSU9OU19GSUxFPSQxCisKKyAgICBpZiBbWyAhIC1mICIk
e0RFRklOSVRJT05TX0ZJTEV9IiBdXTsgdGhlbgorICAgICAgICByZXR1cm4gMQorICAgIGZpCisK
KyAgICBpZiBbWyAtZSAkVElNRVNUQU1QX1BBVEggJiYgIiR7REVGSU5JVElPTlNfRklMRX0iIC1u
dCAkVElNRVNUQU1QX1BBVEggXV07IHRoZW4KKyAgICAgICAgcm0gIiR7VElNRVNUQU1QX1BBVEh9
IjsKKyAgICBmaQorCisgICAgc291cmNlICIke0RFRklOSVRJT05TX0ZJTEV9IgorfQorCitmdW5j
dGlvbiByZXdyaXRlX2hlYWRlcnMgKCkgeworICAgIGlmIFtbICIke1BMQVRGT1JNX05BTUV9IiA9
PSAibWFjb3N4IiBdXTsgdGhlbgorICAgICAgICBbWyAtbiAke09TWF9WRVJTSU9OfSBdXSB8fCBP
U1hfVkVSU0lPTj0ke01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVH0KKyAgICAgICAgW1sgLW4gJHtJ
T1NfVkVSU0lPTn0gXV0gfHwgSU9TX1ZFUlNJT049Ik5BIgorICAgICAgICBbWyAtbiAke09TWF9W
RVJTSU9OX05VTUJFUn0gXV0gfHwgT1NYX1ZFUlNJT05fTlVNQkVSPSR7VEFSR0VUX01BQ19PU19Y
X1ZFUlNJT05fTUFKT1J9CisgICAgICAgIFtbIC1uICR7SU9TX1ZFUlNJT05fTlVNQkVSfSBdXSB8
fCBJT1NfVkVSU0lPTl9OVU1CRVI9IjAiCisgICAgZWxpZiBbWyAiJHtQTEFURk9STV9OQU1FfSIg
PX4gImlwaG9uZSIgXV07IHRoZW4KKyAgICAgICAgW1sgLW4gJHtJT1NfVkVSU0lPTn0gXV0gfHwg
SU9TX1ZFUlNJT049JHtJUEhPTkVPU19ERVBMT1lNRU5UX1RBUkdFVH0KKyAgICAgICAgW1sgLW4g
JHtPU1hfVkVSU0lPTn0gXV0gfHwgT1NYX1ZFUlNJT049Ik5BIgorICAgICAgICBbWyAtbiAke09T
WF9WRVJTSU9OX05VTUJFUn0gXV0gfHwgT1NYX1ZFUlNJT05fTlVNQkVSPSIwIgorICAgICAgICBb
WyAtbiAke0lPU19WRVJTSU9OX05VTUJFUn0gXV0gfHwgSU9TX1ZFUlNJT05fTlVNQkVSPSR7VEFS
R0VUX0lQSE9ORV9PU19WRVJTSU9OX01BSk9SfQorICAgIGZpCisKKyAgICBTRURfT1BUSU9OUz0o
CisgICAgKQorCisgICAgaWYgW1sgLW4gIiRPU1hfVkVSU0lPTiIgJiYgLW4gIiRJT1NfVkVSU0lP
TiIgXV07IHRoZW4KKyAgICAgICAgU0VEX09QVElPTlMrPSgKKyAgICAgICAgICAgIC1lIHMvSlND
X01BQ19UQkEvJHtPU1hfVkVSU0lPTn0vZworICAgICAgICAgICAgLWUgcy9KU0NfSU9TX1RCQS8k
e0lPU19WRVJTSU9OfS9nCisgICAgICAgICAgICAtZSBzL0pTQ19NQUNfVkVSU0lPTl9UQkEvJHtP
U1hfVkVSU0lPTl9OVU1CRVJ9L2cKKyAgICAgICAgICAgIC1lIHMvSlNDX0lPU19WRVJTSU9OX1RC
QS8ke0lPU19WRVJTSU9OX05VTUJFUn0vZworICAgICAgICAgICAgLWUgcy9KU0NfQVBJX0FWQUlM
QUJMRS9BUElfQVZBSUxBQkxFLworICAgICAgICAgICAgLWUgcy9KU0NfQVBJX0RFUFJFQ0FURUQv
QVBJX0RFUFJFQ0FURUQvCisgICAgICAgICAgICAtZSAicy9eSlNDX0NMQVNTX0FWQUlMQUJMRS9K
U0NfRVhURVJOIEFQSV9BVkFJTEFCTEUvIgorICAgICAgICAgICAgLWUgInMvXkpTQ19DTEFTU19E
RVBSRUNBVEVEL0pTQ19FWFRFUk4gQVBJX0RFUFJFQ0FURUQvIgorICAgICAgICApCisgICAgZWxz
ZQorICAgICAgICBTRURfT1BUSU9OUys9KC1lICdzL0pTQ18oQVBJX3xDTEFTU18pQVZBSUxBQkxF
XCguKlwpXHMqXCkvL2cnIC1lICdzL0pTQ18oQVBJX3xDTEFTU18pREVQUkVDQVRFRChfV0lUSF9S
RVBMQUNFTUVOVCk/XCguKlwpXHMqXCkvL2cnKQorICAgIGZpCisKKyAgICBTRURfT1BUSU9OUys9
KCR7T1RIRVJfU0VEX09QVElPTlNbKl19KQorCisgICAgZm9yIEhFQURFUl9QQVRIIGluICIkezF9
LyIqLmg7IGRvCisgICAgICAgIGlmIFtbICIkSEVBREVSX1BBVEgiIC1udCAkVElNRVNUQU1QX1BB
VEggXV07IHRoZW4KKyAgICAgICAgICAgIGRpdHRvICIke0hFQURFUl9QQVRIfSIgIiR7VEFSR0VU
X1RFTVBfRElSfS8ke0hFQURFUl9QQVRIIyMqL30iCisgICAgICAgICAgICBzZWQgLWkgLnRtcCAt
RSAiJHtTRURfT1BUSU9OU1tAXX0iICIke1RBUkdFVF9URU1QX0RJUn0vJHtIRUFERVJfUEFUSCMj
Ki99IiB8fCBleGl0ICQ/CisgICAgICAgICAgICBtdiAiJHtUQVJHRVRfVEVNUF9ESVJ9LyR7SEVB
REVSX1BBVEgjIyovfSIgIiRIRUFERVJfUEFUSCIKKyAgICAgICAgZmkKKyAgICBkb25lCit9CisK
K0RFRklOSVRJT05TX1BBVEg9dXNyL2xvY2FsL2luY2x1ZGUvV2ViS2l0QWRkaXRpb25zL1Njcmlw
dHMvcG9zdHByb2Nlc3MtZnJhbWV3b3JrLWhlYWRlcnMtZGVmaW5pdGlvbnMKKworcHJvY2Vzc19k
ZWZpbml0aW9ucyAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9LyR7REVGSU5JVElPTlNfUEFUSH0iIHx8
IHByb2Nlc3NfZGVmaW5pdGlvbnMgIiR7U0RLUk9PVH0vJHtERUZJTklUSU9OU19QQVRIfSIKKwor
cmV3cml0ZV9oZWFkZXJzICIke1RBUkdFVF9CVUlMRF9ESVJ9LyR7UFVCTElDX0hFQURFUlNfRk9M
REVSX1BBVEh9IgorcmV3cml0ZV9oZWFkZXJzICIke1RBUkdFVF9CVUlMRF9ESVJ9LyR7UFJJVkFU
RV9IRUFERVJTX0ZPTERFUl9QQVRIfSIKKwordG91Y2ggJHtUSU1FU1RBTVBfUEFUSH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9zaGVsbC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9zaGVsbC9DTWFrZUxpc3RzLnR4dAppbmRleCBiM2M3ZTBiMWU2ODFi
MmVlYTkxMDUyYzZhOGI3YWI5NzVlNWEwOTZlLi44NzE1M2UzNTFiMDc1NWFkNWI5OTU0NDYzMGMz
ZmUyZjQ1NDQyMjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvc2hlbGwvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3NoZWxsL0NNYWtlTGlzdHMu
dHh0CkBAIC0yOCw2ICsyOCw3IEBAIHNldChURVNUQVBJX1NPVVJDRVMKICAgICAuLi9BUEkvdGVz
dHMvUGluZ1BvbmdTdGFja092ZXJmbG93VGVzdC5jcHAKICAgICAuLi9BUEkvdGVzdHMvVHlwZWRB
cnJheUNUZXN0LmNwcAogICAgIC4uL0FQSS90ZXN0cy90ZXN0YXBpLmMKKyAgICAuLi9BUEkvdGVz
dHMvdGVzdGFwaS5jcHAKICkKIAogV0VCS0lUX0lOQ0xVREVfQ09ORklHX0ZJTEVTX0lGX0VYSVNU
UygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdG1lbS90ZXN0bWVtLm1t
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RtZW0vdGVzdG1lbS5tbQppbmRleCBiNGQyYWQz
OTExOWJjNTU1OGNkMzljOWM4MTgyZmFjZWRjYmVhZjI0Li45YmM0YjQwZTFlYWMwMjMxN2ZkM2U4
NDViNDU0ZDBmNDhiNmVlNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dG1lbS90ZXN0bWVtLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0bWVtL3Rlc3Rt
ZW0ubW0KQEAgLTIzLDYgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2ltcG9ydCAi
Y29uZmlnLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgogI2lt
cG9ydCA8aW50dHlwZXMuaD4KICNpbXBvcnQgPHN0ZGlvLmg+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345797</attachid>
            <date>2018-07-25 16:14:56 -0700</date>
            <delta_ts>2018-07-25 18:52:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175836-20180725161455.patch</filename>
            <type>text/plain</type>
            <size>107816</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0MjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZWEwMDgyMjk3Zjg5ODZhYTA3NDM4Y2Q2OWMzZGE2NmEzZjA1MjdlLi5hNGU1NjY2OGUzOTc4MmQx
Yjg3Y2JmNDllZDBjNTcxNDAyODE4M2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDMgQEAKKzIwMTgtMDctMjUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0pTQyBBUEldIFdlIHNob3VsZCBzdXBwb3J0IHRoZSBzeW1ib2wg
dHlwZSBpbiBvdXIgQy9PYmotQyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTgzNgorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxv
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIGZvbGxvd2luZyBBUEkgYWRkaXRpb25z
OgorICAgICAgICAxKSBUZXN0IGlmIGEgSlNWYWx1ZS9KU1ZhbHVlUmVmIGlzIGEgc3ltYm9sIHZp
YSBhbnkgb2YgdGhlIG1ldGhvZHMgQVBJIGFyZSBhYmxlIHRvIHRlc3QgZm9yIHRoZSB0eXBlcyBv
ZiBvdGhlciBKU1ZhbHVlcy4KKyAgICAgICAgMikgQ3JlYXRlIGEgc3ltYm9sIG9uIGJvdGggQVBJ
cy4KKyAgICAgICAgMykgR2V0L1NldC9EZWxldGUvRGVmaW5lIHByb3BlcnR5IG5vdyB0YWtlIGlk
cyBpbiB0aGUgT2JqLUMgQVBJLgorICAgICAgICA0KSBBZGQgR2V0L1NldC9EZWxldGUgaW4gdGhl
IEMgQVBJLgorCisgICAgICAgIFdlIGNhbiBkbyAzIGJlY2F1c2UgaXQgaXMgYm90aCBiaW5hcnkg
YW5kIHNvdXJjZSBjb21wYXRhYmxlIHdpdGgKKyAgICAgICAgdGhlIGV4aXN0aW5nIEFQSS4gSSBh
ZGRlZCAoNCkgYmVjYXVzZSB0aGUgY3VycmVudCBwcm9wZXJ0eSBhY2Nlc3MKKyAgICAgICAgQVBJ
cyBvbmx5IGhhdmUgdGhlIGFiaWxpdHkgdG8gZ2V0IFN0cmluZ3MuIEl0IHdhcyBwb3NzaWJsZSB0
bworICAgICAgICBtZXJnZSBzeW1ib2xzIGludG8gSlNTdHJpbmdSZWYgYnV0IHRoYXQgZmVsdCBj
b25mdXNpbmcgYW5kIGV4cG9zZXMKKyAgICAgICAgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBv
dXIgZW5naW5lLiBUaGUgbmV3IGZ1bmN0aW9ucyBtYXRjaCB0aGUKKyAgICAgICAgc2FtZSBtZWFu
aW5nIHRoYXQgdGhleSBoYXZlIGluIEpTLCB0aHVzIHNob3VsZCBiZSBmb3J3YXJkCisgICAgICAg
IGNvbXBhdGlibGUgd2l0aCBhbnkgZnV0dXJlIGxhbmd1YWdlIGV4dGVuc2lvbnMuCisKKyAgICAg
ICAgTGFzdGx5LCB0aGlzIHBhdGNoIGFkZHMgdGhlIHNhbWUgYXZhaWxhYmlsaXR5IHByZXByb2Nj
ZXNzaW5nIHBoYXNlCisgICAgICAgIGluIFdlYkNvcmUgdG8gSmF2YVNjcmlwdENvcmUsIHdoaWNo
IGVuYWJsZXMgVEJBIGZlYXR1cmVzIGZvcgorICAgICAgICB0ZXN0aW5nIG9uIHByZXZpb3VzIHJl
bGVhc2VzLgorCisgICAgICAgICogQVBJL0pTQmFzZVByaXZhdGUuaDoKKyAgICAgICAgKiBBUEkv
SlNDb250ZXh0Lmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFByaXZhdGUuaDoKKyAgICAgICAg
KiBBUEkvSlNDb250ZXh0UmVmLmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZkludGVybmFs
Lmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaDoKKyAgICAgICAgKiBBUEkv
SlNNYW5hZ2VkVmFsdWUuaDoKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAg
ICAoSlNPYmplY3RIYXNQcm9wZXJ0eUtleSk6CisgICAgICAgIChKU09iamVjdEdldFByb3BlcnR5
S2V5KToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJvcGVydHlLZXkpOgorICAgICAgICAoSlNPYmpl
Y3REZWxldGVQcm9wZXJ0eUtleSk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmg6CisgICAg
ICAgICogQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmg6CisgICAgICAgICogQVBJL0pTVHlwZWRBcnJh
eS5oOgorICAgICAgICAqIEFQSS9KU1ZhbHVlLmg6CisgICAgICAgICogQVBJL0pTVmFsdWUubW06
CisgICAgICAgICgrW0pTVmFsdWUgdmFsdWVXaXRoTmV3U3ltYm9sRnJvbURlc2NyaXB0aW9uOmlu
Q29udGV4dDpdKToKKyAgICAgICAgKHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbik6CisgICAgICAg
ICgtW0pTVmFsdWUgdmFsdWVGb3JQcm9wZXJ0eTp2YWx1ZUZvclByb3BlcnR5Ol0pOgorICAgICAg
ICAoLVtKU1ZhbHVlIHNldFZhbHVlOmZvclByb3BlcnR5OnNldFZhbHVlOmZvclByb3BlcnR5Ol0p
OgorICAgICAgICAoLVtKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5OmRlbGV0ZVByb3BlcnR5Ol0pOgor
ICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Omhhc1Byb3BlcnR5Ol0pOgorICAgICAgICAo
LVtKU1ZhbHVlIGRlZmluZVByb3BlcnR5OmRlc2NyaXB0b3I6ZGVmaW5lUHJvcGVydHk6ZGVzY3Jp
cHRvcjpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSBpc1N5bWJvbF0pOgorICAgICAgICAoLVtKU1Zh
bHVlIG9iamVjdEZvcktleWVkU3Vic2NyaXB0Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIHNldE9i
amVjdDpmb3JLZXllZFN1YnNjcmlwdDpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSB2YWx1ZUZvclBy
b3BlcnR5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIHNldFZhbHVlOmZvclByb3Bl
cnR5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5Ol0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Ol0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtKU1ZhbHVlIGRlZmluZVByb3BlcnR5OmRlc2NyaXB0b3I6XSk6IERlbGV0ZWQuCisg
ICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgorICAgICAgICAoSlNWYWx1ZUdldFR5cGUpOgor
ICAgICAgICAoSlNWYWx1ZUlzU3ltYm9sKToKKyAgICAgICAgKEpTVmFsdWVNYWtlU3ltYm9sKToK
KyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5oOgorICAgICAgICAqIEFQSS9XZWJLaXRBdmFpbGFi
aWxpdHkuaDoKKyAgICAgICAgKiBBUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRl
clRlc3QubW06CisgICAgICAgICogQVBJL3Rlc3RzL0N1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVz
dC5jOgorICAgICAgICAqIEFQSS90ZXN0cy9EYXRlVGVzdHMubW06CisgICAgICAgICogQVBJL3Rl
c3RzL0pTRXhwb3J0VGVzdHMubW06CisgICAgICAgICogQVBJL3Rlc3RzL0pTTm9kZS5jOgorICAg
ICAgICAqIEFQSS90ZXN0cy9KU05vZGVMaXN0LmM6CisgICAgICAgICogQVBJL3Rlc3RzL05vZGUu
YzoKKyAgICAgICAgKiBBUEkvdGVzdHMvTm9kZUxpc3QuYzoKKyAgICAgICAgKiBBUEkvdGVzdHMv
bWluaWRvbS5jOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLmM6CisgICAgICAgIChtYWlu
KToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5jcHA6IEFkZGVkLgorICAgICAgICAoQVBJ
U3RyaW5nOjpBUElTdHJpbmcpOgorICAgICAgICAoQVBJU3RyaW5nOjp+QVBJU3RyaW5nKToKKyAg
ICAgICAgKEFQSVN0cmluZzo6b3BlcmF0b3IgSlNTdHJpbmdSZWYpOgorICAgICAgICAoQVBJQ29u
dGV4dDo6QVBJQ29udGV4dCk6CisgICAgICAgIChBUElDb250ZXh0Ojp+QVBJQ29udGV4dCk6Cisg
ICAgICAgIChBUElDb250ZXh0OjpvcGVyYXRvciBKU0dsb2JhbENvbnRleHRSZWYpOgorICAgICAg
ICAoQVBJVmVjdG9yOjpBUElWZWN0b3IpOgorICAgICAgICAoQVBJVmVjdG9yOjp+QVBJVmVjdG9y
KToKKyAgICAgICAgKEFQSVZlY3Rvcjo6YXBwZW5kKToKKyAgICAgICAgKHRlc3RDQVBJVmlhQ3Bw
KToKKyAgICAgICAgKFRlc3RBUEk6OmV2YWx1YXRlU2NyaXB0KToKKyAgICAgICAgKFRlc3RBUEk6
OmNhbGxGdW5jdGlvbik6CisgICAgICAgIChUZXN0QVBJOjpmdW5jdGlvblJldHVybnNUcnVlKToK
KyAgICAgICAgKFRlc3RBUEk6OmNoZWNrKToKKyAgICAgICAgKFRlc3RBUEk6OmNoZWNrSlNBbmRB
UElNYXRjaCk6CisgICAgICAgIChUZXN0QVBJOjppbnRlcmVzdGluZ09iamVjdHMpOgorICAgICAg
ICAoVGVzdEFQSTo6aW50ZXJlc3RpbmdLZXlzKToKKyAgICAgICAgKFRlc3RBUEk6OnJ1bik6Cisg
ICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkubW06CisgICAgICAgICh0ZXN0T2JqZWN0aXZlQ0FQ
SU1haW4pOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogY29uZmlnLmg6CisgICAgICAgICogcG9zdHByb2Nlc3MtaGVhZGVycy5z
aDoKKyAgICAgICAgKiB0ZXN0bWVtL3Rlc3RtZW0ubW06CisKIDIwMTgtMDctMjUgIEFuZHkgVmFu
V2Fnb25lciAgPGFuZHlAdmFud2Fnb25lci5mYW1pbHk+CiAKICAgICAgICAgW0lOVExdIENhbGwg
VHlwZWQgQXJyYXkgZWxlbWVudHMgdG9Mb2NhbGVTdHJpbmcgd2l0aCBsb2NhbGUgYW5kIG9wdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FzdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmgKaW5kZXggMmMyMjk3NWRjNzE0MDk1YTEx
ZWNiNjY5MWJmMGY3Zjk1MWFiZmQwMS4uNDkxYmI4YTU1MWJhOWVjODQ1ODA3ODViNGIzMzUwMmE4
Nzg2MmU4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmgKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkhlYXBDZWxsSW5saW5l
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFeGVjU3RhdGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZVByaXZhdGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5oCmluZGV4IDEzNzU5NDk3Mjc1ZTU4YmViMGMx
MjIxMzU1ZjlmYmVkNDNkM2IxYTUuLmI2YzkyMDRjNGNiZDcyYzRmN2M5ZjZhMWY1NGNkNWQzNDE1
NmQxNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5oCkBAIC00
Myw3ICs0Myw3IEBAIG93bnMgYSBsYXJnZSBub24tR0MgbWVtb3J5IHJlZ2lvbi4gQ2FsbGluZyB0
aGlzIGZ1bmN0aW9uIHdpbGwgZW5jb3VyYWdlIHRoZQogZ2FyYmFnZSBjb2xsZWN0b3IgdG8gY29s
bGVjdCBzb29uLCBob3BpbmcgdG8gcmVjbGFpbSB0aGF0IGxhcmdlIG5vbi1HQyBtZW1vcnkKIHJl
Z2lvbi4KICovCi1KU19FWFBPUlQgdm9pZCBKU1JlcG9ydEV4dHJhTWVtb3J5Q29zdChKU0NvbnRl
eHRSZWYgY3R4LCBzaXplX3Qgc2l6ZSkgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBP
UlQgdm9pZCBKU1JlcG9ydEV4dHJhTWVtb3J5Q29zdChKU0NvbnRleHRSZWYgY3R4LCBzaXplX3Qg
c2l6ZSkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7CiAKIEpTX0VY
UE9SVCB2b2lkIEpTRGlzYWJsZUdDVGltZXIodm9pZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ29udGV4dC5oCmluZGV4IDE5NGUzNTJiZmU3YWU3NWYyMzU4Y2VlNjNkNDQ4ZmUxZmEyNGQz
ODIuLjg5Yzg3ZjllMmUxZmYxYjE3MWIxZWJiYThjNDUyMTU5ZjQ0ZjQ3NWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHQuaApAQCAtNzgsNyArNzgsNyBAQCBOU19DTEFTU19BVkFJ
TEFCTEUoMTBfOSwgN18wKQogQHBhcmFtIHNvdXJjZVVSTCBBIFVSTCBmb3IgdGhlIHNjcmlwdCdz
IHNvdXJjZSBmaWxlLiBVc2VkIGJ5IGRlYnVnZ2VycyBhbmQgd2hlbiByZXBvcnRpbmcgZXhjZXB0
aW9ucy4gVGhpcyBwYXJhbWV0ZXIgaXMgaW5mb3JtYXRpdmUgb25seTogaXQgZG9lcyBub3QgY2hh
bmdlIHRoZSBiZWhhdmlvciBvZiB0aGUgc2NyaXB0LgogQHJlc3VsdCBUaGUgbGFzdCB2YWx1ZSBn
ZW5lcmF0ZWQgYnkgdGhlIHNjcmlwdC4KICovCi0tIChKU1ZhbHVlICopZXZhbHVhdGVTY3JpcHQ6
KE5TU3RyaW5nICopc2NyaXB0IHdpdGhTb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMIE5TX0FW
QUlMQUJMRSgxMF8xMCwgOF8wKTsKKy0gKEpTVmFsdWUgKilldmFsdWF0ZVNjcmlwdDooTlNTdHJp
bmcgKilzY3JpcHQgd2l0aFNvdXJjZVVSTDooTlNVUkwgKilzb3VyY2VVUkwgSlNDX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEKIEBtZXRob2Rncm91cCBDYWxs
YmFjayBBY2Nlc3NvcnMKQEAgLTEwMSw3ICsxMDEsNyBAQCBOU19DTEFTU19BVkFJTEFCTEUoMTBf
OSwgN18wKQogIGEgY2FsbGJhY2sgZnJvbSBKYXZhU2NyaXB0IHRoaXMgbWV0aG9kIHdpbGwgcmV0
dXJuIG5pbC4KIEByZXN1bHQgVGhlIGN1cnJlbnRseSBleGVjdXRpbmcgSmF2YVNjcmlwdCBmdW5j
dGlvbiBvciBuaWwgaWYgdGhlcmUgaXNuJ3Qgb25lLgogKi8KLSsgKEpTVmFsdWUgKiljdXJyZW50
Q2FsbGVlIE5TX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKKysgKEpTVmFsdWUgKiljdXJyZW50Q2Fs
bGVlIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBA
bWV0aG9kCkBAIC0xNzYsNyArMTc2LDcgQEAgTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzksIDdfMCkK
IEBwcm9wZXJ0eQogQGRpc2N1c3Npb24gTmFtZSBvZiB0aGUgSlNDb250ZXh0LiBFeHBvc2VkIHdo
ZW4gcmVtb3RlIGRlYnVnZ2luZyB0aGUgY29udGV4dC4KICovCi1AcHJvcGVydHkgKGNvcHkpIE5T
U3RyaW5nICpuYW1lIE5TX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0Bwcm9wZXJ0eSAoY29weSkg
TlNTdHJpbmcgKm5hbWUgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkp
OwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250
ZXh0UHJpdmF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRQcml2YXRl
LmgKaW5kZXggN2QxZDBjYmRiYjQ4YzE3MGVhNzZkMmJkNjJkNzMwYzIwMzlkNmE5NC4uZmY5NjIy
YWRkZjYwYjdjMTAzNTdkYWNjZjFjNmY0MWVjYjg2MWYxYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NvbnRleHRQcml2YXRlLmgKQEAgLTM2LDE5ICszNiwxOSBAQAogQHByb3Bl
cnR5CiBAZGlzY3Vzc2lvbiBSZW1vdGUgaW5zcGVjdGlvbiBzZXR0aW5nIG9mIHRoZSBKU0NvbnRl
eHQuIERlZmF1bHQgdmFsdWUgaXMgWUVTLgogKi8KLUBwcm9wZXJ0eSAoc2V0dGVyPV9zZXRSZW1v
dGVJbnNwZWN0aW9uRW5hYmxlZDopIEJPT0wgX3JlbW90ZUluc3BlY3Rpb25FbmFibGVkIE5TX0FW
QUlMQUJMRSgxMF8xMCwgOF8wKTsKK0Bwcm9wZXJ0eSAoc2V0dGVyPV9zZXRSZW1vdGVJbnNwZWN0
aW9uRW5hYmxlZDopIEJPT0wgX3JlbW90ZUluc3BlY3Rpb25FbmFibGVkIEpTQ19BUElfQVZBSUxB
QkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBAcHJvcGVydHkKIEBkaXNjdXNz
aW9uIFNldCB3aGV0aGVyIG9yIG5vdCB0aGUgbmF0aXZlIGNhbGwgc3RhY2sgaXMgaW5jbHVkZWQg
d2hlbiByZXBvcnRpbmcgZXhjZXB0aW9ucy4gRGVmYXVsdCB2YWx1ZSBpcyBZRVMuCiAqLwotQHBy
b3BlcnR5IChzZXR0ZXI9X3NldEluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4
Y2VwdGlvbnM6KSBCT09MIF9pbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNl
cHRpb25zIE5TX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0Bwcm9wZXJ0eSAoc2V0dGVyPV9zZXRJ
bmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zOikgQk9PTCBfaW5j
bHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucyBKU0NfQVBJX0FWQUlM
QUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qIQogQHByb3BlcnR5CiBAZGlzY3Vz
c2lvbiBTZXQgdGhlIHJ1biBsb29wIHRoZSBXZWIgSW5zcGVjdG9yIGRlYnVnZ2VyIHNob3VsZCB1
c2Ugd2hlbiBldmFsdWF0aW5nIEphdmFTY3JpcHQgaW4gdGhlIEpTQ29udGV4dC4KICovCi1AcHJv
cGVydHkgKHNldHRlcj1fc2V0RGVidWdnZXJSdW5Mb29wOikgQ0ZSdW5Mb29wUmVmIF9kZWJ1Z2dl
clJ1bkxvb3AgTlNfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworQHByb3BlcnR5IChzZXR0ZXI9X3Nl
dERlYnVnZ2VyUnVuTG9vcDopIENGUnVuTG9vcFJlZiBfZGVidWdnZXJSdW5Mb29wIEpTQ19BUElf
QVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogQGVuZAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuaAppbmRleCBlMTVjYWU1NzU3NjQ4YTJmYzhlYTIx
NzIxZWVmNTM1YmFkMzU3YjI3Li4yOGQwYTY3ZTlhZTMyNjIxMWFkOTRkZTM2YzUyNjRhNzU0MmZh
Zjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmgKQEAgLTUzLDcg
KzUzLDcgQEAgZXh0ZXJuICJDIiB7CiAgSlNDb250ZXh0R3JvdXAncyBydW4gbG9vcCBvbmNlIGl0
IGhhcyBiZWVuIGNyZWF0ZWQuCiBAcmVzdWx0IFRoZSBjcmVhdGVkIEpTQ29udGV4dEdyb3VwLgog
Ki8KLUpTX0VYUE9SVCBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHcm91cENyZWF0ZSh2b2lk
KSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCBKU0NvbnRleHRHcm91cFJlZiBK
U0NvbnRleHRHcm91cENyZWF0ZSh2b2lkKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiks
IGlvcyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTYxLDE0ICs2MSwxNCBAQCBKU19FWFBP
UlQgSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R3JvdXBDcmVhdGUodm9pZCkgQ0ZfQVZBSUxB
QkxFKDEwXzYsIDdfMCk7CiBAcGFyYW0gZ3JvdXAgVGhlIEpTQ29udGV4dEdyb3VwIHRvIHJldGFp
bi4KIEByZXN1bHQgQSBKU0NvbnRleHRHcm91cCB0aGF0IGlzIHRoZSBzYW1lIGFzIGdyb3VwLgog
Ki8KLUpTX0VYUE9SVCBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHcm91cFJldGFpbihKU0Nv
bnRleHRHcm91cFJlZiBncm91cCkgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQg
SlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R3JvdXBSZXRhaW4oSlNDb250ZXh0R3JvdXBSZWYg
Z3JvdXApIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9zKDcuMCkpOwogCiAvKiEK
IEBmdW5jdGlvbgogQGFic3RyYWN0IFJlbGVhc2VzIGEgSmF2YVNjcmlwdCBjb250ZXh0IGdyb3Vw
LgogQHBhcmFtIGdyb3VwIFRoZSBKU0NvbnRleHRHcm91cCB0byByZWxlYXNlLgogKi8KLUpTX0VY
UE9SVCB2b2lkIEpTQ29udGV4dEdyb3VwUmVsZWFzZShKU0NvbnRleHRHcm91cFJlZiBncm91cCkg
Q0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgdm9pZCBKU0NvbnRleHRHcm91cFJl
bGVhc2UoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXApIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgx
MC42KSwgaW9zKDcuMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtODMsNyArODMsNyBAQCBKU19F
WFBPUlQgdm9pZCBKU0NvbnRleHRHcm91cFJlbGVhc2UoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAp
IENGX0FWQUlMQUJMRSgxMF82LAogIE5VTEwgdG8gdXNlIHRoZSBkZWZhdWx0IG9iamVjdCBjbGFz
cy4KIEByZXN1bHQgQSBKU0dsb2JhbENvbnRleHQgd2l0aCBhIGdsb2JhbCBvYmplY3Qgb2YgY2xh
c3MgZ2xvYmFsT2JqZWN0Q2xhc3MuCiAqLwotSlNfRVhQT1JUIEpTR2xvYmFsQ29udGV4dFJlZiBK
U0dsb2JhbENvbnRleHRDcmVhdGUoSlNDbGFzc1JlZiBnbG9iYWxPYmplY3RDbGFzcykgQ0ZfQVZB
SUxBQkxFKDEwXzUsIDdfMCk7CitKU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpTR2xvYmFs
Q29udGV4dENyZWF0ZShKU0NsYXNzUmVmIGdsb2JhbE9iamVjdENsYXNzKSBKU0NfQVBJX0FWQUlM
QUJMRShtYWNvc3goMTAuNSksIGlvcyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTk3LDcg
Kzk3LDcgQEAgSlNfRVhQT1JUIEpTR2xvYmFsQ29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVh
dGUoSlNDbGFzc1JlZiBnbG9iYWxPYmplY3RDbGFzcykKIEByZXN1bHQgQSBKU0dsb2JhbENvbnRl
eHQgd2l0aCBhIGdsb2JhbCBvYmplY3Qgb2YgY2xhc3MgZ2xvYmFsT2JqZWN0Q2xhc3MgYW5kIGEg
Y29udGV4dAogIGdyb3VwIGVxdWFsIHRvIGdyb3VwLgogKi8KLUpTX0VYUE9SVCBKU0dsb2JhbENv
bnRleHRSZWYgSlNHbG9iYWxDb250ZXh0Q3JlYXRlSW5Hcm91cChKU0NvbnRleHRHcm91cFJlZiBn
cm91cCwgSlNDbGFzc1JlZiBnbG9iYWxPYmplY3RDbGFzcykgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdf
MCk7CitKU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpTR2xvYmFsQ29udGV4dENyZWF0ZUlu
R3JvdXAoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIEpTQ2xhc3NSZWYgZ2xvYmFsT2JqZWN0Q2xh
c3MpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9zKDcuMCkpOwogCiAvKiEKIEBm
dW5jdGlvbgpAQCAtMTI4LDcgKzEyOCw3IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU0NvbnRl
eHRHZXRHbG9iYWxPYmplY3QoSlNDb250ZXh0UmVmIGN0eCk7CiBAcGFyYW0gY3R4IFRoZSBKU0Nv
bnRleHQgd2hvc2UgZ3JvdXAgeW91IHdhbnQgdG8gZ2V0LgogQHJlc3VsdCBjdHgncyBncm91cC4K
ICovCi1KU19FWFBPUlQgSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R2V0R3JvdXAoSlNDb250
ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgSlNDb250ZXh0
R3JvdXBSZWYgSlNDb250ZXh0R2V0R3JvdXAoSlNDb250ZXh0UmVmIGN0eCkgSlNDX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC0xMzYs
NyArMTM2LDcgQEAgSlNfRVhQT1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdldEdyb3Vw
KEpTQ29udGV4dFJlZiBjdHgpIENGX0FWQUlMQUJMRSgxMF8KIEBwYXJhbSBjdHggVGhlIEpTQ29u
dGV4dCB3aG9zZSBnbG9iYWwgY29udGV4dCB5b3Ugd2FudCB0byBnZXQuCiBAcmVzdWx0IGN0eCdz
IGdsb2JhbCBjb250ZXh0LgogKi8KLUpTX0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgSlNDb250
ZXh0R2V0R2xvYmFsQ29udGV4dChKU0NvbnRleHRSZWYgY3R4KSBDRl9BVkFJTEFCTEUoMTBfNywg
N18wKTsKK0pTX0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgSlNDb250ZXh0R2V0R2xvYmFsQ29u
dGV4dChKU0NvbnRleHRSZWYgY3R4KSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNyksIGlv
cyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTE0Niw3ICsxNDYsNyBAQCBKU19FWFBPUlQg
SlNHbG9iYWxDb250ZXh0UmVmIEpTQ29udGV4dEdldEdsb2JhbENvbnRleHQoSlNDb250ZXh0UmVm
IGN0eCkgQ0ZfQVZBSQogQGRpc2N1c3Npb24gQSBKU0dsb2JhbENvbnRleHQncyBuYW1lIGlzIGV4
cG9zZWQgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcgdG8gbWFrZSBpdAogZWFzaWVyIHRvIGlkZW50aWZ5
IHRoZSBjb250ZXh0IHlvdSB3b3VsZCBsaWtlIHRvIGF0dGFjaCB0by4KICovCi1KU19FWFBPUlQg
SlNTdHJpbmdSZWYgSlNHbG9iYWxDb250ZXh0Q29weU5hbWUoSlNHbG9iYWxDb250ZXh0UmVmIGN0
eCkgQ0ZfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworSlNfRVhQT1JUIEpTU3RyaW5nUmVmIEpTR2xv
YmFsQ29udGV4dENvcHlOYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpIEpTQ19BUElfQVZBSUxB
QkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTE1NCw3
ICsxNTQsNyBAQCBKU19FWFBPUlQgSlNTdHJpbmdSZWYgSlNHbG9iYWxDb250ZXh0Q29weU5hbWUo
SlNHbG9iYWxDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQgogQHBhcmFtIGN0eCBUaGUgSlNHbG9i
YWxDb250ZXh0IHRoYXQgeW91IHdhbnQgdG8gbmFtZS4KIEBwYXJhbSBuYW1lIFRoZSByZW1vdGUg
ZGVidWdnaW5nIG5hbWUgdG8gc2V0IG9uIGN0eC4KICovCi1KU19FWFBPUlQgdm9pZCBKU0dsb2Jh
bENvbnRleHRTZXROYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIG5hbWUp
IENGX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKK0pTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29udGV4
dFNldE5hbWUoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgbmFtZSkgSlNDX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiAjaWZkZWYgX19jcGx1c3Bs
dXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVm
SW50ZXJuYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmSW50ZXJu
YWwuaAppbmRleCA3OWQ3ZWI2ZjM5ZTdlMmNhOGY0YTliOTRmMjcyMjZkYjJmNzA1Mjk1Li45ZDRm
MThhMjI5NTA3MjZkOTEwMmQyNTBiNWNhYTBjZTdhZDVjNzJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZkludGVybmFsLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWZJbnRlcm5hbC5oCkBAIC00Miw3ICs0Miw3IEBA
IGV4dGVybiAiQyIgewogQGFic3RyYWN0IEdldHMgdGhlIHJ1biBsb29wIHVzZWQgYnkgdGhlIFdl
YiBJbnNwZWN0b3IgZGVidWdnZXIgd2hlbiBldmFsdWF0aW5nIEphdmFTY3JpcHQgaW4gdGhpcyBj
b250ZXh0LgogQHBhcmFtIGN0eCBUaGUgSlNHbG9iYWxDb250ZXh0IHdob3NlIHNldHRpbmcgeW91
IHdhbnQgdG8gZ2V0LgogKi8KLUpTX0VYUE9SVCBDRlJ1bkxvb3BSZWYgSlNHbG9iYWxDb250ZXh0
R2V0RGVidWdnZXJSdW5Mb29wKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpIENGX0FWQUlMQUJMRSgx
MF8xMCwgOF8wKTsKK0pTX0VYUE9SVCBDRlJ1bkxvb3BSZWYgSlNHbG9iYWxDb250ZXh0R2V0RGVi
dWdnZXJSdW5Mb29wKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpIEpTQ19BUElfQVZBSUxBQkxFKG1h
Y29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTUwLDcgKzUwLDcg
QEAgSlNfRVhQT1JUIENGUnVuTG9vcFJlZiBKU0dsb2JhbENvbnRleHRHZXREZWJ1Z2dlclJ1bkxv
b3AoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkKIEBwYXJhbSBjdHggVGhlIEpTR2xvYmFsQ29udGV4
dCB0aGF0IHlvdSB3YW50IHRvIGNoYW5nZS4KIEBwYXJhbSBydW5Mb29wIFRoZSBuZXcgdmFsdWUg
b2YgdGhlIHNldHRpbmcgZm9yIHRoZSBjb250ZXh0LgogKi8KLUpTX0VYUE9SVCB2b2lkIEpTR2xv
YmFsQ29udGV4dFNldERlYnVnZ2VyUnVuTG9vcChKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBDRlJ1
bkxvb3BSZWYgcnVuTG9vcCkgQ0ZfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworSlNfRVhQT1JUIHZv
aWQgSlNHbG9iYWxDb250ZXh0U2V0RGVidWdnZXJSdW5Mb29wKEpTR2xvYmFsQ29udGV4dFJlZiBj
dHgsIENGUnVuTG9vcFJlZiBydW5Mb29wKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTAp
LCBpb3MoOC4wKSk7CiAjZW5kaWYKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmUHJpdmF0ZS5oCmluZGV4IDE5NjA0ZWE3NDkz
N2VmZGE5NjdjZTNkZjU3NzdkMmExNTE0ZGE4ZGMuLmVjNjc2ZDhjODcxNDgzZjgzZmNjM2M1NjRi
NTU0ZTgxNzAzNzIyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
b250ZXh0UmVmUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250
ZXh0UmVmUHJpdmF0ZS5oCkBAIC00NCw3ICs0NCw3IEBAIGV4dGVybiAiQyIgewogQHBhcmFtIGN0
eCBUaGUgSlNDb250ZXh0IHdob3NlIGJhY2t0cmFjZSB5b3Ugd2FudCB0byBnZXQKIEByZXN1bHQg
QSBzdHJpbmcgY29udGFpbmluZyB0aGUgYmFja3RyYWNlCiAqLwotSlNfRVhQT1JUIEpTU3RyaW5n
UmVmIEpTQ29udGV4dENyZWF0ZUJhY2t0cmFjZShKU0NvbnRleHRSZWYgY3R4LCB1bnNpZ25lZCBt
YXhTdGFja1NpemUpIENGX0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQT1JUIEpTU3RyaW5n
UmVmIEpTQ29udGV4dENyZWF0ZUJhY2t0cmFjZShKU0NvbnRleHRSZWYgY3R4LCB1bnNpZ25lZCBt
YXhTdGFja1NpemUpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9zKDcuMCkpOwog
ICAgIAogCiAvKiEgCkBAIC04NSwxNCArODUsMTQgQEAgdHlwZWRlZiBib29sCiAgbmVlZCB0byBj
YWxsIEpTQ29udGV4dEdyb3VwU2V0RXhlY3V0aW9uVGltZUxpbWl0IGJlZm9yZSB5b3Ugc3RhcnQg
ZXhlY3V0aW5nCiAgYW55IHNjcmlwdHMuCiAqLwotSlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3Jv
dXBTZXRFeGVjdXRpb25UaW1lTGltaXQoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIGRvdWJsZSBs
aW1pdCwgSlNTaG91bGRUZXJtaW5hdGVDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogY29udGV4dCkg
Q0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgdm9pZCBKU0NvbnRleHRHcm91cFNl
dEV4ZWN1dGlvblRpbWVMaW1pdChKU0NvbnRleHRHcm91cFJlZiBncm91cCwgZG91YmxlIGxpbWl0
LCBKU1Nob3VsZFRlcm1pbmF0ZUNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24K
IEBhYnN0cmFjdCBDbGVhcnMgdGhlIHNjcmlwdCBleGVjdXRpb24gdGltZSBsaW1pdC4KIEBwYXJh
bSBncm91cCBUaGUgSmF2YVNjcmlwdCBjb250ZXh0IGdyb3VwIHRoYXQgdGhlIHRpbWUgbGltaXQg
aXMgY2xlYXJlZCBvbi4KICovCi1KU19FWFBPUlQgdm9pZCBKU0NvbnRleHRHcm91cENsZWFyRXhl
Y3V0aW9uVGltZUxpbWl0KEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwKSBDRl9BVkFJTEFCTEUoMTBf
NiwgN18wKTsKK0pTX0VYUE9SVCB2b2lkIEpTQ29udGV4dEdyb3VwQ2xlYXJFeGVjdXRpb25UaW1l
TGltaXQoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXApIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgx
MC42KSwgaW9zKDcuMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTAxLDcgKzEwMSw3IEBAIEpT
X0VYUE9SVCB2b2lkIEpTQ29udGV4dEdyb3VwQ2xlYXJFeGVjdXRpb25UaW1lTGltaXQoSlNDb250
ZXh0R3JvdXBSZWYgZ3JvdXApIENGCiBAcmVzdWx0IFRoZSB2YWx1ZSBvZiB0aGUgc2V0dGluZywg
dHJ1ZSBpZiByZW1vdGUgaW5zcGVjdGlvbiBpcyBlbmFibGVkLCBvdGhlcndpc2UgZmFsc2UuCiBA
ZGlzY3Vzc2lvbiBSZW1vdGUgaW5zcGVjdGlvbiBpcyB0cnVlIGJ5IGRlZmF1bHQuCiAqLwotSlNf
RVhQT1JUIGJvb2wgSlNHbG9iYWxDb250ZXh0R2V0UmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQoSlNH
bG9iYWxDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworSlNfRVhQT1JU
IGJvb2wgSlNHbG9iYWxDb250ZXh0R2V0UmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQoSlNHbG9iYWxD
b250ZXh0UmVmIGN0eCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkp
OwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTA5LDcgKzEwOSw3IEBAIEpTX0VYUE9SVCBib29sIEpT
R2xvYmFsQ29udGV4dEdldFJlbW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4dFJl
ZiBjdHgpCiBAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgdGhhdCB5b3Ugd2FudCB0byBj
aGFuZ2UuCiBAcGFyYW0gZW5hYmxlZCBUaGUgbmV3IHJlbW90ZSBpbnNwZWN0aW9uIGVuYWJsZWQg
c2V0dGluZyBmb3IgdGhlIGNvbnRleHQuCiAqLwotSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxDb250
ZXh0U2V0UmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwgYm9v
bCBlbmFibGVkKSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7ICAgIAorSlNfRVhQT1JUIHZvaWQg
SlNHbG9iYWxDb250ZXh0U2V0UmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQoSlNHbG9iYWxDb250ZXh0
UmVmIGN0eCwgYm9vbCBlbmFibGVkKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBp
b3MoOC4wKSk7ICAgIAogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTE4LDcgKzExOCw3IEBAIEpTX0VY
UE9SVCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldFJlbW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xv
YmFsQ29udGV4dFJlZiBjdHgsCiBAcmVzdWx0IFRoZSB2YWx1ZSBvZiB0aGUgc2V0dGluZywgdHJ1
ZSBpZiByZW1vdGUgaW5zcGVjdGlvbiBpcyBlbmFibGVkLCBvdGhlcndpc2UgZmFsc2UuCiBAZGlz
Y3Vzc2lvbiBUaGlzIHNldHRpbmcgaXMgdHJ1ZSBieSBkZWZhdWx0LgogKi8KLUpTX0VYUE9SVCBi
b29sIEpTR2xvYmFsQ29udGV4dEdldEluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGlu
Z0V4Y2VwdGlvbnMoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEwXzEwLCA4
XzApOworSlNfRVhQT1JUIGJvb2wgSlNHbG9iYWxDb250ZXh0R2V0SW5jbHVkZXNOYXRpdmVDYWxs
U3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucyhKU0dsb2JhbENvbnRleHRSZWYgY3R4KSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qIQogQGZ1bmN0aW9u
CkBAIC0xMjYsNyArMTI2LDcgQEAgSlNfRVhQT1JUIGJvb2wgSlNHbG9iYWxDb250ZXh0R2V0SW5j
bHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucygKIEBwYXJhbSBjdHgg
VGhlIEpTR2xvYmFsQ29udGV4dCB0aGF0IHlvdSB3YW50IHRvIGNoYW5nZS4KIEBwYXJhbSBpbmNs
dWRlc05hdGl2ZUNhbGxTdGFjayBUaGUgbmV3IHZhbHVlIG9mIHRoZSBzZXR0aW5nIGZvciB0aGUg
Y29udGV4dC4KICovCi1KU19FWFBPUlQgdm9pZCBKU0dsb2JhbENvbnRleHRTZXRJbmNsdWRlc05h
dGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zKEpTR2xvYmFsQ29udGV4dFJlZiBj
dHgsIGJvb2wgaW5jbHVkZXNOYXRpdmVDYWxsU3RhY2spIENGX0FWQUlMQUJMRSgxMF8xMCwgOF8w
KTsKK0pTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldEluY2x1ZGVzTmF0aXZlQ2FsbFN0
YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwgYm9vbCBp
bmNsdWRlc05hdGl2ZUNhbGxTdGFjaykgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwg
aW9zKDguMCkpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNNYW5hZ2VkVmFsdWUuaAppbmRleCAwMTA3M2ZhZDk3ZTcwYjc2YmQ2YjY2YTM3MzNh
ZjI2MWNjNTI3NDljLi40MTgwNzRiYzQ3ZDY2YzE1ODQwN2ZlNTgzODM2OWE1MTVjMDMzNWVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5oCkBAIC01Nyw3ICs1
Nyw3IEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCiBAcmVzdWx0IFRoZSBuZXcgSlNN
YW5hZ2VkVmFsdWUuCiAqLwogKyAoSlNNYW5hZ2VkVmFsdWUgKiltYW5hZ2VkVmFsdWVXaXRoVmFs
dWU6KEpTVmFsdWUgKil2YWx1ZTsKLSsgKEpTTWFuYWdlZFZhbHVlICopbWFuYWdlZFZhbHVlV2l0
aFZhbHVlOihKU1ZhbHVlICopdmFsdWUgYW5kT3duZXI6KGlkKW93bmVyIE5TX0FWQUlMQUJMRSgx
MF8xMCwgOF8wKTsKKysgKEpTTWFuYWdlZFZhbHVlICopbWFuYWdlZFZhbHVlV2l0aFZhbHVlOihK
U1ZhbHVlICopdmFsdWUgYW5kT3duZXI6KGlkKW93bmVyIEpTQ19BUElfQVZBSUxBQkxFKG1hY29z
eCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBAbWV0aG9kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IDU2NmI3MzYyZjFiNWRmZTQ5ZWYzZDk2Y2Y1NzI0
ZWY0ODc4ZmJmODEuLjU0NTFhMmY5YTU2MTM0N2E5MjU4MWQ1ZjNlNDQyNDYyOTY5ZDQwZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCkBAIC0zNjYsNiArMzY2
LDEwMCBAQCB2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmpl
Y3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZQogICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVl
ZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pOwogfQogCitib29sIEpTT2JqZWN0SGFzUHJvcGVy
dHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIGtl
eSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEV4
ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENI
X1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAg
ICBJZGVudGlmaWVyIGlkZW50ID0gdG9KUyhleGVjLCBrZXkpLnRvUHJvcGVydHlLZXkoZXhlYyk7
CisgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24p
ID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGJvb2wgcmVzdWx0ID0ganNPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIGlkZW50KTsKKyAg
ICBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhjZXB0aW9uKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitKU1ZhbHVlUmVmIEpTT2JqZWN0R2V0UHJvcGVydHlLZXkoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIGtleSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgRXhlY1N0YXRl
KiBleGVjID0gdG9KUyhjdHgpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNMb2Nr
SG9sZGVyIGxvY2tlcih2bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUo
dm0pOworCisgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOworICAgIElkZW50
aWZpZXIgaWRlbnQgPSB0b0pTKGV4ZWMsIGtleSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBp
ZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhj
ZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBK
U1ZhbHVlIGpzVmFsdWUgPSBqc09iamVjdC0+Z2V0KGV4ZWMsIGlkZW50KTsKKyAgICBoYW5kbGVF
eGNlcHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gdG9S
ZWYoZXhlYywganNWYWx1ZSk7Cit9CisKK3ZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eUtleShKU0Nv
bnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYga2V5LCBKU1ZhbHVl
UmVmIHZhbHVlLCBKU1Byb3BlcnR5QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pCit7CisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhj
dHgpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2
bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworCisgICAgSlNP
YmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOworICAgIEpTVmFsdWUganNWYWx1ZSA9IHRv
SlMoZXhlYywgdmFsdWUpOworCisgICAgSWRlbnRpZmllciBpZGVudCA9IHRvSlMoZXhlYywga2V5
KS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChz
Y29wZSwgZXhlYywgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQorICAg
ICAgICByZXR1cm47CisKKyAgICBib29sIGRvZXNOb3RIYXZlUHJvcGVydHkgPSBhdHRyaWJ1dGVz
ICYmICFqc09iamVjdC0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpOworICAgIGlmIChMSUtFTFko
IXNjb3BlLmV4Y2VwdGlvbigpKSkgeworICAgICAgICBpZiAoZG9lc05vdEhhdmVQcm9wZXJ0eSkg
eworICAgICAgICAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2MoanNWYWx1ZSwgYXR0cmlidXRl
cyk7CisgICAgICAgICAgICBqc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9w
ZXJ0eShqc09iamVjdCwgZXhlYywgaWRlbnQsIGRlc2MsIGZhbHNlKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGpzT2JqZWN0KTsKKyAgICAgICAg
ICAgIGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dChqc09iamVjdCwgZXhlYywgaWRlbnQs
IGpzVmFsdWUsIHNsb3QpOworICAgICAgICB9CisgICAgfQorICAgIGhhbmRsZUV4Y2VwdGlvbklm
TmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pOworfQorCitib29sIEpTT2JqZWN0RGVsZXRl
UHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVl
UmVmIGtleSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmICghY3R4KSB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X0NBVENIX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0
KTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gdG9KUyhleGVjLCBrZXkpLnRvUHJvcGVydHlLZXko
ZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNl
cHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGJvb2wgcmVzdWx0ID0ganNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRl
UHJvcGVydHkoanNPYmplY3QsIGV4ZWMsIGlkZW50KTsKKyAgICBoYW5kbGVFeGNlcHRpb25JZk5l
ZWRlZChzY29wZSwgZXhlYywgZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBK
U1ZhbHVlUmVmIEpTT2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KEpTQ29udGV4dFJlZiBjdHgsIEpT
T2JqZWN0UmVmIG9iamVjdCwgdW5zaWduZWQgcHJvcGVydHlJbmRleCwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKQogewogICAgIGlmICghY3R4KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2Jq
ZWN0UmVmLmgKaW5kZXggOTVkNTNiN2Y0ZTU4ZTk2ZjBjYmMzMTU5NWFmOWM0NjE5NzhhYTQzZC4u
ZGI1NTY5YTZjYmQwZWUwYjdiY2JmY2MzZTI5MmY1MzI5NzVlNjc2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaApAQCAtNDQxLDcgKzQ0MSw3IEBAIEpTX0VYUE9SVCBK
U09iamVjdFJlZiBKU09iamVjdE1ha2VDb25zdHJ1Y3RvcihKU0NvbnRleHRSZWYgY3R4LCBKU0Ns
YXNzUmVmIGpzQ2xhCiAgQGRpc2N1c3Npb24gVGhlIGJlaGF2aW9yIG9mIHRoaXMgZnVuY3Rpb24g
ZG9lcyBub3QgZXhhY3RseSBtYXRjaCB0aGUgYmVoYXZpb3Igb2YgdGhlIGJ1aWx0LWluIEFycmF5
IGNvbnN0cnVjdG9yLiBTcGVjaWZpY2FsbHksIGlmIG9uZSBhcmd1bWVudCAKICBpcyBzdXBwbGll
ZCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuIGFycmF5IHdpdGggb25lIGVsZW1lbnQuCiAgKi8K
LUpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VBcnJheShKU0NvbnRleHRSZWYgY3R4
LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCBK
U09iamVjdFJlZiBKU09iamVjdE1ha2VBcnJheShKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyoh
CiAgQGZ1bmN0aW9uCkBAIC00NTIsNyArNDUyLDcgQEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpT
T2JqZWN0TWFrZUFycmF5KEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LAog
IEBwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBz
dG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0
byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCBBIEpTT2JqZWN0IHRoYXQgaXMgYSBEYXRl
LgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRGF0ZShKU0NvbnRleHRS
ZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VY
UE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VEYXRlKEpTQ29udGV4dFJlZiBjdHgsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9zKDcuMCkpOwog
CiAvKiEKICBAZnVuY3Rpb24KQEAgLTQ2Myw3ICs0NjMsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RS
ZWYgSlNPYmplY3RNYWtlRGF0ZShKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgYwogIEBwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGlj
aCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3Qg
Y2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCBBIEpTT2JqZWN0IHRoYXQgaXMg
YSBFcnJvci4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUVycm9yKEpT
Q29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFy
Z3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF82LCA3XzAp
OworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUVycm9yKEpTQ29udGV4dFJlZiBj
dHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9z
KDcuMCkpOwogCiAvKiEKICBAZnVuY3Rpb24KQEAgLTQ3NCw3ICs0NzQsNyBAQCBKU19FWFBPUlQg
SlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRXJyb3IoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFy
Z3VtZW50Q291bnQsCiAgQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVm
IGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91
IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0IEEgSlNPYmplY3Qg
dGhhdCBpcyBhIFJlZ0V4cC4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFr
ZVJlZ0V4cChKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUo
MTBfNiwgN18wKTsKK0pTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VSZWdFeHAoSlND
b250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJn
dW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjYpLCBpb3MoNy4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC01MzYsOSArNTM2LDkgQEAg
SlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4
LCBKU09iamVjdFJlZiBvYmplY3QsIEoKIEBwYXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250ZXh0
IHRvIHVzZS4KIEBwYXJhbSBvYmplY3QgVGhlIEpTT2JqZWN0IHdob3NlIHByb3BlcnR5IHlvdSB3
YW50IHRvIHNldC4KIEBwYXJhbSBwcm9wZXJ0eU5hbWUgQSBKU1N0cmluZyBjb250YWluaW5nIHRo
ZSBwcm9wZXJ0eSdzIG5hbWUuCi1AcGFyYW0gdmFsdWUgQSBKU1ZhbHVlIHRvIHVzZSBhcyB0aGUg
cHJvcGVydHkncyB2YWx1ZS4KLUBwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1
ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlm
IHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCitAcGFyYW0gdmFsdWUgQSBK
U1ZhbHVlUmVmIHRvIHVzZSBhcyB0aGUgcHJvcGVydHkncyB2YWx1ZS4KIEBwYXJhbSBhdHRyaWJ1
dGVzIEEgbG9naWNhbGx5IE9SZWQgc2V0IG9mIEpTUHJvcGVydHlBdHRyaWJ1dGVzIHRvIGdpdmUg
dG8gdGhlIHByb3BlcnR5LgorQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVl
UmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYg
eW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICovCiBKU19FWFBPUlQgdm9p
ZCBKU09iamVjdFNldFByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVj
dCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1Byb3BlcnR5
QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCkBAIC01NTMs
NiArNTUzLDU0IEBAIEpTX0VYUE9SVCB2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHkoSlNDb250ZXh0
UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluCiAqLwogSlNfRVhQT1JUIGJvb2wg
SlNPYmplY3REZWxldGVQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmpl
Y3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKIAor
LyohCitAZnVuY3Rpb24KK0BhYnN0cmFjdCBUZXN0cyB3aGV0aGVyIGFuIG9iamVjdCBoYXMgYSBn
aXZlbiBwcm9wZXJ0eSB1c2luZyBhIEpTVmFsdWVSZWYgYXMgdGhlIHByb3BlcnR5IGtleS4KK0Bw
YXJhbSBvYmplY3QgVGhlIEpTT2JqZWN0IHRvIHRlc3QuCitAcGFyYW0gcHJvcGVydHlLZXkgQSBK
U1ZhbHVlUmVmIGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5IGtleSB0byB1c2Ugd2hlbiBsb29raW5n
IHVwIHRoZSBwcm9wZXJ0eS4KK0BwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1
ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlm
IHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCitAcmVzdWx0IHRydWUgaWYg
dGhlIG9iamVjdCBoYXMgYSBwcm9wZXJ0eSB3aG9zZSBuYW1lIG1hdGNoZXMgcHJvcGVydHlLZXks
IG90aGVyd2lzZSBmYWxzZS4KK0BkaXNjdXNzaW9uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUg
YXMgcGVyZm9ybWluZyAicHJvcGVydHlLZXkgaW4gb2JqZWN0IiBmcm9tIEphdmFTY3JpcHQuCisq
LworSlNfRVhQT1JUIGJvb2wgSlNPYmplY3RIYXNQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4
LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYgcHJvcGVydHlLZXksIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KEpTQ19NQUNfVEJBKSwgaW9zKEpT
Q19JT1NfVEJBKSk7CisKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgR2V0cyBhIHByb3BlcnR5
IGZyb20gYW4gb2JqZWN0IHVzaW5nIGEgSlNWYWx1ZVJlZiBhcyB0aGUgcHJvcGVydHkga2V5Lgor
QHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgorQHBhcmFtIG9iamVjdCBU
aGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQgdG8gZ2V0LgorQHBhcmFtIHByb3Bl
cnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBwcm9wZXJ0eSBrZXkgdG8gdXNlIHdo
ZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0
byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBh
c3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgorQHJlc3Vs
dCBUaGUgcHJvcGVydHkncyB2YWx1ZSBpZiBvYmplY3QgaGFzIHRoZSBwcm9wZXJ0eSBrZXksIG90
aGVyd2lzZSB0aGUgdW5kZWZpbmVkIHZhbHVlLgorQGRpc2N1c3Npb24gVGhpcyBmdW5jdGlvbiBp
cyB0aGUgc2FtZSBhcyBwZXJmb3JtaW5nICJvYmplY3RbcHJvcGVydHlLZXldIiBmcm9tIEphdmFT
Y3JpcHQuCisqLworSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9wZXJ0eUtleShK
U0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYgcHJvcGVydHlL
ZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KEpTQ19N
QUNfVEJBKSwgaW9zKEpTQ19JT1NfVEJBKSk7CisKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3Qg
U2V0cyBhIHByb3BlcnR5IG9uIGFuIG9iamVjdCB1c2luZyBhIEpTVmFsdWVSZWYgYXMgdGhlIHBy
b3BlcnR5IGtleS4KK0BwYXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KK0Bw
YXJhbSBvYmplY3QgVGhlIEpTT2JqZWN0IHdob3NlIHByb3BlcnR5IHlvdSB3YW50IHRvIHNldC4K
K0BwYXJhbSBwcm9wZXJ0eUtleSBBIEpTVmFsdWVSZWYgY29udGFpbmluZyB0aGUgcHJvcGVydHkg
a2V5IHRvIHVzZSB3aGVuIGxvb2tpbmcgdXAgdGhlIHByb3BlcnR5LgorQHBhcmFtIHZhbHVlIEEg
SlNWYWx1ZVJlZiB0byB1c2UgYXMgdGhlIHByb3BlcnR5J3MgdmFsdWUuCitAcGFyYW0gYXR0cmli
dXRlcyBBIGxvZ2ljYWxseSBPUmVkIHNldCBvZiBKU1Byb3BlcnR5QXR0cmlidXRlcyB0byBnaXZl
IHRvIHRoZSBwcm9wZXJ0eS4KK0BwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1
ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlm
IHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCitAZGlzY3Vzc2lvbiBUaGlz
IGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHBlcmZvcm1pbmcgIm9iamVjdFtwcm9wZXJ0eUtleV0g
PSB2YWx1ZSIgZnJvbSBKYXZhU2NyaXB0LgorKi8KK0pTX0VYUE9SVCB2b2lkIEpTT2JqZWN0U2V0
UHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVl
UmVmIHByb3BlcnR5S2V5LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1Byb3BlcnR5QXR0cmlidXRlcyBh
dHRyaWJ1dGVzLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29z
eChKU0NfTUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpOworCisvKiEKK0BmdW5jdGlvbgorQGFi
c3RyYWN0IERlbGV0ZXMgYSBwcm9wZXJ0eSBmcm9tIGFuIG9iamVjdCB1c2luZyBhIEpTVmFsdWVS
ZWYgYXMgdGhlIHByb3BlcnR5IGtleS4KK0BwYXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250ZXh0
IHRvIHVzZS4KK0BwYXJhbSBvYmplY3QgVGhlIEpTT2JqZWN0IHdob3NlIHByb3BlcnR5IHlvdSB3
YW50IHRvIGRlbGV0ZS4KK0BwYXJhbSBwcm9wZXJ0eUtleSBBIEpTVmFsdWVSZWYgY29udGFpbmlu
ZyB0aGUgcHJvcGVydHkga2V5IHRvIHVzZSB3aGVuIGxvb2tpbmcgdXAgdGhlIHByb3BlcnR5Lgor
QHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0
b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRv
IHN0b3JlIGFuIGV4Y2VwdGlvbi4KK0ByZXN1bHQgdHJ1ZSBpZiB0aGUgZGVsZXRlIG9wZXJhdGlv
biBzdWNjZWVkcywgb3RoZXJ3aXNlIGZhbHNlIChmb3IgZXhhbXBsZSwgaWYgdGhlIHByb3BlcnR5
IGhhcyB0aGUga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIGF0dHJpYnV0ZSBzZXQpLgor
QGRpc2N1c3Npb24gVGhpcyBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyBwZXJmb3JtaW5nICJkZWxl
dGUgb2JqZWN0W3Byb3BlcnR5S2V5XSIgZnJvbSBKYXZhU2NyaXB0LgorKi8KK0pTX0VYUE9SVCBi
b29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHlLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RS
ZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIHByb3BlcnR5S2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
IEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeChKU0NfTUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkp
OworCiAvKiEKIEBmdW5jdGlvbgogQGFic3RyYWN0IEdldHMgYSBwcm9wZXJ0eSBmcm9tIGFuIG9i
amVjdCBieSBudW1lcmljIGluZGV4LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1JlbW90ZUluc3BlY3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Jl
bW90ZUluc3BlY3Rvci5oCmluZGV4IGM4YmFjNmRkMGU0YTY0ODA5Y2IzNDUwY2RiYTRjMDM5N2E0
OGEwNTcuLjYxODZiOTIzZWM4YWI4Yjk0OGU3OTNhZjA0YmRkODQzMjc0MDAzNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmgKQEAgLTQwLDE0ICs0
MCwxNCBAQCB0eXBlZGVmIHBpZF90IEpTUHJvY2Vzc0lEOwogZXh0ZXJuICJDIiB7CiAjZW5kaWYK
IAotSlNfRVhQT1JUIHZvaWQgSlNSZW1vdGVJbnNwZWN0b3JEaXNhYmxlQXV0b1N0YXJ0KHZvaWQp
IENGX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsKLUpTX0VYUE9SVCB2b2lkIEpTUmVtb3RlSW5zcGVj
dG9yU3RhcnQodm9pZCkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzApOwotSlNfRVhQT1JUIHZvaWQg
SlNSZW1vdGVJbnNwZWN0b3JTZXRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24oSlNQcm9jZXNzSUQs
IGNvbnN0IHVpbnQ4X3QqIGF1ZGl0RGF0YSwgc2l6ZV90IGF1ZGl0TGVuZ3RoKSBDRl9BVkFJTEFC
TEUoMTBfMTEsIDlfMCk7CitKU19FWFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvckRpc2FibGVB
dXRvU3RhcnQodm9pZCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkp
OworSlNfRVhQT1JUIHZvaWQgSlNSZW1vdGVJbnNwZWN0b3JTdGFydCh2b2lkKSBKU0NfQVBJX0FW
QUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CitKU19FWFBPUlQgdm9pZCBKU1JlbW90
ZUluc3BlY3RvclNldFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbihKU1Byb2Nlc3NJRCwgY29uc3Qg
dWludDhfdCogYXVkaXREYXRhLCBzaXplX3QgYXVkaXRMZW5ndGgpIEpTQ19BUElfQVZBSUxBQkxF
KG1hY29zeCgxMC4xMSksIGlvcyg5LjApKTsKIAotSlNfRVhQT1JUIHZvaWQgSlNSZW1vdGVJbnNw
ZWN0b3JTZXRMb2dUb1N5c3RlbUNvbnNvbGUoYm9vbCkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzAp
OworSlNfRVhQT1JUIHZvaWQgSlNSZW1vdGVJbnNwZWN0b3JTZXRMb2dUb1N5c3RlbUNvbnNvbGUo
Ym9vbCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOwogCi1KU19F
WFBPUlQgYm9vbCBKU1JlbW90ZUluc3BlY3RvckdldEluc3BlY3Rpb25FbmFibGVkQnlEZWZhdWx0
KHZvaWQpIENGX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsKLUpTX0VYUE9SVCB2b2lkIEpTUmVtb3Rl
SW5zcGVjdG9yU2V0SW5zcGVjdGlvbkVuYWJsZWRCeURlZmF1bHQoYm9vbCkgQ0ZfQVZBSUxBQkxF
KDEwXzExLCA5XzApOworSlNfRVhQT1JUIGJvb2wgSlNSZW1vdGVJbnNwZWN0b3JHZXRJbnNwZWN0
aW9uRW5hYmxlZEJ5RGVmYXVsdCh2b2lkKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEp
LCBpb3MoOS4wKSk7CitKU19FWFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvclNldEluc3BlY3Rp
b25FbmFibGVkQnlEZWZhdWx0KGJvb2wpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSks
IGlvcyg5LjApKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1R5cGVkQXJyYXkuaAppbmRleCBlMjNiNzZkMmViNGFhNWE0OThiNTVlYmE0NzM3NDYz
ZjZjYjkzOWFjLi42ZDg2MDIyZmE1Njk5NTQ2NDZiZWVhM2FlOWVmZjdiMmNhMzZhMDFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmgKQEAgLTQ1LDcgKzQ1LDcgQEAg
ZXh0ZXJuICJDIiB7CiAgQHBhcmFtIGV4Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVl
UmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYg
eW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAg
ICAgIEEgSlNPYmplY3RSZWYgdGhhdCBpcyBhIFR5cGVkIEFycmF5IHdpdGggYWxsIGVsZW1lbnRz
IHNldCB0byB6ZXJvIG9yIE5VTEwgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgogICovCi1KU19FWFBP
UlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheShKU0NvbnRleHRSZWYgY3R4LCBK
U1R5cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgc2l6ZV90IGxlbmd0aCwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVm
IEpTT2JqZWN0TWFrZVR5cGVkQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBlZEFycmF5VHlw
ZSBhcnJheVR5cGUsIHNpemVfdCBsZW5ndGgsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9u
CkBAIC02MCw3ICs2MCw3IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBl
ZEFycmF5KEpTQ29udGV4dFJlZiBjdHgsIEpTVHlwZWRBcnJheVR5cGUKICBAcmVzdWx0ICAgICAg
ICAgICAgICAgICAgIEEgSlNPYmplY3RSZWYgVHlwZWQgQXJyYXkgd2hvc2UgYmFja2luZyBzdG9y
ZSBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIHBvaW50ZWQgdG8gYnkgYnl0ZXMgb3IgTlVMTCBpZiB0
aGVyZSB3YXMgYW4gZXJyb3IuCiAgQGRpc2N1c3Npb24gICAgICAgICAgICAgICBJZiBhbiBleGNl
cHRpb24gaXMgdGhyb3duIGR1cmluZyB0aGlzIGZ1bmN0aW9uIHRoZSBieXRlc0RlYWxsb2NhdG9y
IHdpbGwgYWx3YXlzIGJlIGNhbGxlZC4KICAqLwotSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2Jq
ZWN0TWFrZVR5cGVkQXJyYXlXaXRoQnl0ZXNOb0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBl
ZEFycmF5VHlwZSBhcnJheVR5cGUsIHZvaWQqIGJ5dGVzLCBzaXplX3QgYnl0ZUxlbmd0aCwgSlNU
eXBlZEFycmF5Qnl0ZXNEZWFsbG9jYXRvciBieXRlc0RlYWxsb2NhdG9yLCB2b2lkKiBkZWFsbG9j
YXRvckNvbnRleHQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAx
MF8wKTsKK0pTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEJ5
dGVzTm9Db3B5KEpTQ29udGV4dFJlZiBjdHgsIEpTVHlwZWRBcnJheVR5cGUgYXJyYXlUeXBlLCB2
b2lkKiBieXRlcywgc2l6ZV90IGJ5dGVMZW5ndGgsIEpTVHlwZWRBcnJheUJ5dGVzRGVhbGxvY2F0
b3IgYnl0ZXNEZWFsbG9jYXRvciwgdm9pZCogZGVhbGxvY2F0b3JDb250ZXh0LCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7
CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtNzEsNyArNzEsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RS
ZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4
LCBKUwogIEBwYXJhbSBleGNlcHRpb24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3
aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBu
b3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgICBBIEpT
T2JqZWN0UmVmIHRoYXQgaXMgYSBUeXBlZCBBcnJheSBvciBOVUxMIGlmIHRoZXJlIHdhcyBhbiBl
cnJvci4gVGhlIGJhY2tpbmcgc3RvcmUgb2YgdGhlIFR5cGVkIEFycmF5IHdpbGwgYmUgYnVmZmVy
LgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhB
cnJheUJ1ZmZlcihKU0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwg
SlNPYmplY3RSZWYgYnVmZmVyLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgx
MF8xMiwgMTBfMCk7CitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJh
eVdpdGhBcnJheUJ1ZmZlcihKU0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5
VHlwZSwgSlNPYmplY3RSZWYgYnVmZmVyLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElf
QVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpA
QCAtODQsNyArODQsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRB
cnJheVdpdGhBcnJheUJ1ZmZlcihKU0NvbnRleHRSZWYgY3R4LCBKUwogIEBwYXJhbSBleGNlcHRp
b24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNl
cHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBl
eGNlcHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgICBBIEpTT2JqZWN0UmVmIHRoYXQgaXMgYSBU
eXBlZCBBcnJheSBvciBOVUxMIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4gVGhlIGJhY2tpbmcgc3Rv
cmUgb2YgdGhlIFR5cGVkIEFycmF5IHdpbGwgYmUgYnVmZmVyLgogICovCi1KU19FWFBPUlQgSlNP
YmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhBcnJheUJ1ZmZlckFuZE9mZnNldChK
U0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgSlNPYmplY3RSZWYg
YnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVm
IEpTT2JqZWN0TWFrZVR5cGVkQXJyYXlXaXRoQXJyYXlCdWZmZXJBbmRPZmZzZXQoSlNDb250ZXh0
UmVmIGN0eCwgSlNUeXBlZEFycmF5VHlwZSBhcnJheVR5cGUsIEpTT2JqZWN0UmVmIGJ1ZmZlciwg
c2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikg
SlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1
bmN0aW9uCkBAIC05NSw3ICs5NSw3IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1h
a2VUeXBlZEFycmF5V2l0aEFycmF5QnVmZmVyQW5kT2Zmc2V0KEpTQ29udGV4dFJlCiAgQHJlc3Vs
dCAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIHJhdyBkYXRhIGJ1ZmZlciB0aGF0IHNlcnZl
cyBhcyBvYmplY3QncyBiYWNraW5nIHN0b3JlIG9yIE5VTEwgaWYgb2JqZWN0IGlzIG5vdCBhIFR5
cGVkIEFycmF5IG9iamVjdC4KICBAZGlzY3Vzc2lvbiAgICAgICAgIFRoZSBwb2ludGVyIHJldHVy
bmVkIGJ5IHRoaXMgZnVuY3Rpb24gaXMgdGVtcG9yYXJ5IGFuZCBpcyBub3QgZ3VhcmFudGVlZCB0
byByZW1haW4gdmFsaWQgYWNyb3NzIEphdmFTY3JpcHRDb3JlIEFQSSBjYWxscy4KICAqLwotSlNf
RVhQT1JUIHZvaWQqIEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5dGVzUHRyKEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFC
TEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIHZvaWQqIEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5
dGVzUHRyKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwog
CiAvKiEKICBAZnVuY3Rpb24KQEAgLTEwNSw3ICsxMDUsNyBAQCBKU19FWFBPUlQgdm9pZCogSlNP
YmplY3RHZXRUeXBlZEFycmF5Qnl0ZXNQdHIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYg
b2JqZQogIEBwYXJhbSBleGNlcHRpb24gICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3
aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBu
b3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgICBUaGUg
bGVuZ3RoIG9mIHRoZSBUeXBlZCBBcnJheSBvYmplY3Qgb3IgMCBpZiB0aGUgb2JqZWN0IGlzIG5v
dCBhIFR5cGVkIEFycmF5IG9iamVjdC4KICAqLwotSlNfRVhQT1JUIHNpemVfdCBKU09iamVjdEdl
dFR5cGVkQXJyYXlMZW5ndGgoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBP
UlQgc2l6ZV90IEpTT2JqZWN0R2V0VHlwZWRBcnJheUxlbmd0aChKU0NvbnRleHRSZWYgY3R4LCBK
U09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC0xMTUs
NyArMTE1LDcgQEAgSlNfRVhQT1JUIHNpemVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlMZW5ndGgo
SlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWMKICBAcGFyYW0gZXhjZXB0aW9uICAg
IEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9u
LCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0
aW9uLgogIEByZXN1bHQgICAgICAgICAgICAgVGhlIGJ5dGUgbGVuZ3RoIG9mIHRoZSBUeXBlZCBB
cnJheSBvYmplY3Qgb3IgMCBpZiB0aGUgb2JqZWN0IGlzIG5vdCBhIFR5cGVkIEFycmF5IG9iamVj
dC4KICAqLwotSlNfRVhQT1JUIHNpemVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlCeXRlTGVuZ3Ro
KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIHNpemVfdCBKU09iamVj
dEdldFR5cGVkQXJyYXlCeXRlTGVuZ3RoKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9i
amVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAu
MTIpLCBpb3MoMTAuMCkpOwogCiAvKiEKICBAZnVuY3Rpb24KQEAgLTEyNSw3ICsxMjUsNyBAQCBK
U19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5dGVMZW5ndGgoSlNDb250ZXh0
UmVmIGN0eCwgSlNPYmplY3RSZWYgbwogIEBwYXJhbSBleGNlcHRpb24gICAgQSBwb2ludGVyIHRv
IGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFz
cyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCiAgQHJlc3Vs
dCAgICAgICAgICAgICBUaGUgYnl0ZSBvZmZzZXQgb2YgdGhlIFR5cGVkIEFycmF5IG9iamVjdCBv
ciAwIGlmIHRoZSBvYmplY3QgaXMgbm90IGEgVHlwZWQgQXJyYXkgb2JqZWN0LgogICovCi1KU19F
WFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoSlNDb250ZXh0UmVm
IGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlM
QUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4w
KSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtMTM1LDcgKzEzNSw3IEBAIEpTX0VYUE9SVCBzaXpl
X3QgSlNPYmplY3RHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldChKU0NvbnRleHRSZWYgY3R4LCBKU09i
amVjdFJlZiBvCiAgQHBhcmFtIGV4Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVm
IGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91
IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAgICAg
IEEgSlNPYmplY3RSZWYgd2l0aCBhIEpTVHlwZWRBcnJheVR5cGUgb2Yga0pTVHlwZWRBcnJheVR5
cGVBcnJheUJ1ZmZlciBvciBOVUxMIGlmIG9iamVjdCBpcyBub3QgYSBUeXBlZCBBcnJheS4KICAq
LwotSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ1ZmZlcihKU0Nv
bnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikg
Q0ZfQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK0pTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVj
dEdldFR5cGVkQXJyYXlCdWZmZXIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiks
IGlvcygxMC4wKSk7CiAKIC8vIC0tLS0tLS0tLS0tLS0gQXJyYXkgQnVmZmVyIGZ1bmN0aW9ucyAt
LS0tLS0tLS0tLS0tCiAKQEAgLTE1MSw3ICsxNTEsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYg
SlNPYmplY3RHZXRUeXBlZEFycmF5QnVmZmVyKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVm
CiAgQHJlc3VsdCAgICAgICAgICAgICAgICAgICBBIEpTT2JqZWN0UmVmIEFycmF5IEJ1ZmZlciB3
aG9zZSBiYWNraW5nIHN0b3JlIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgcG9pbnRlZCB0byBieSBi
eXRlcyBvciBOVUxMIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KICBAZGlzY3Vzc2lvbiAgICAgICAg
ICAgICAgIElmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZHVyaW5nIHRoaXMgZnVuY3Rpb24gdGhl
IGJ5dGVzRGVhbGxvY2F0b3Igd2lsbCBhbHdheXMgYmUgY2FsbGVkLgogICovCi1KU19FWFBPUlQg
SlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQXJyYXlCdWZmZXJXaXRoQnl0ZXNOb0NvcHkoSlNDb250
ZXh0UmVmIGN0eCwgdm9pZCogYnl0ZXMsIHNpemVfdCBieXRlTGVuZ3RoLCBKU1R5cGVkQXJyYXlC
eXRlc0RlYWxsb2NhdG9yIGJ5dGVzRGVhbGxvY2F0b3IsIHZvaWQqIGRlYWxsb2NhdG9yQ29udGV4
dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNf
RVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUFycmF5QnVmZmVyV2l0aEJ5dGVzTm9Db3B5
KEpTQ29udGV4dFJlZiBjdHgsIHZvaWQqIGJ5dGVzLCBzaXplX3QgYnl0ZUxlbmd0aCwgSlNUeXBl
ZEFycmF5Qnl0ZXNEZWFsbG9jYXRvciBieXRlc0RlYWxsb2NhdG9yLCB2b2lkKiBkZWFsbG9jYXRv
ckNvbnRleHQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC0xNjEsNyArMTYxLDcg
QEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUFycmF5QnVmZmVyV2l0aEJ5dGVz
Tm9Db3B5KEpTQ29udGV4dFJlZiBjdHgsIHYKICBAcmVzdWx0ICAgICAgICAgICBBIHBvaW50ZXIg
dG8gdGhlIHJhdyBkYXRhIGJ1ZmZlciB0aGF0IHNlcnZlcyBhcyBvYmplY3QncyBiYWNraW5nIHN0
b3JlIG9yIE5VTEwgaWYgb2JqZWN0IGlzIG5vdCBhbiBBcnJheSBCdWZmZXIgb2JqZWN0LgogIEBk
aXNjdXNzaW9uICAgICAgIFRoZSBwb2ludGVyIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24gaXMg
dGVtcG9yYXJ5IGFuZCBpcyBub3QgZ3VhcmFudGVlZCB0byByZW1haW4gdmFsaWQgYWNyb3NzIEph
dmFTY3JpcHRDb3JlIEFQSSBjYWxscy4KICAqLwotSlNfRVhQT1JUIHZvaWQqIEpTT2JqZWN0R2V0
QXJyYXlCdWZmZXJCeXRlc1B0cihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3Qs
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK0pTX0VY
UE9SVCB2b2lkKiBKU09iamVjdEdldEFycmF5QnVmZmVyQnl0ZXNQdHIoSlNDb250ZXh0UmVmIGN0
eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZB
SUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAt
MTcxLDcgKzE3MSw3IEBAIEpTX0VYUE9SVCB2b2lkKiBKU09iamVjdEdldEFycmF5QnVmZmVyQnl0
ZXNQdHIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqCiAgQHBhcmFtIGV4Y2VwdGlv
biAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRp
b24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNl
cHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgVGhlIG51bWJlciBvZiBieXRlcyBzdG9yZWQgaW4g
dGhlIGRhdGEgb2JqZWN0LgogICovCi1KU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0QXJyYXlC
dWZmZXJCeXRlTGVuZ3RoKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JU
IHNpemVfdCBKU09iamVjdEdldEFycmF5QnVmZmVyQnl0ZUxlbmd0aChKU0NvbnRleHRSZWYgY3R4
LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oCmluZGV4IDE0MTBkZDc0YTE3Zjk3MDcwNmU0
NGRlZDI0Y2NkMTcwYzM0NzljMmUuLjgzZTlmNWFhYzE5YTRmNjNiOWYwMzgxNzdjZjhjNmNiOTg0
ZGVjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oCkBAIC0xNDgsNiArMTQ4LDE1
IEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCiAqLwogKyAoSlNWYWx1ZSAqKXZhbHVl
V2l0aFVuZGVmaW5lZEluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKIAorLyohCisgQG1l
dGhvZAorIEBhYnN0cmFjdCBDcmVhdGUgYSBuZXcsIHVuaXF1ZSwgc3ltYm9sIG9iamVjdC4KKyBA
cGFyYW0gZGVzY3JpcHRpb24gVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBzeW1ib2wgb2JqZWN0IGJl
aW5nIGNyZWF0ZWQuCisgQHBhcmFtIGNvbnRleHQgVGhlIEpTQ29udGV4dCB0byB3aGljaCB0aGUg
cmVzdWx0aW5nIEpTVmFsdWUgYmVsb25ncy4KKyBAcmVzdWx0IFRoZSBKU1ZhbHVlIHJlcHJlc2Vu
dGluZyBhIHVuaXF1ZSBKYXZhU2NyaXB0IHZhbHVlIHdpdGggdHlwZSBzeW1ib2wuCisgKi8KKysg
KEpTVmFsdWUgKil2YWx1ZVdpdGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246KE5TU3RyaW5nICop
ZGVzY3JpcHRpb24gaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0IEpTQ19BUElfQVZBSUxB
QkxFKG1hY29zeChKU0NfTUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpOworCiAvKiEKIEBtZXRo
b2Rncm91cCBDb252ZXJ0aW5nIHRvIE9iamVjdGl2ZS1DIFR5cGVzCiBAZGlzY3Vzc2lvbiBXaGVu
IGNvbnZlcnRpbmcgYmV0d2VlbiBKYXZhU2NyaXB0IHZhbHVlcyBhbmQgT2JqZWN0aXZlLUMgb2Jq
ZWN0cyBhIGNvcHkgaXMKQEAgLTMwNSw0MyArMzE0LDUyIEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgx
MF85LCA3XzApCiAvKiEKIEBtZXRob2Rncm91cCBBY2Nlc3NpbmcgUHJvcGVydGllcwogKi8KKwor
I2lmICEoKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IEpTQ19NQUNfVkVSU0lPTl9UQkEpIHx8IChkZWZp
bmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA8IEpTQ19JT1NfVkVSU0lPTl9UQkEpKQorCiAvKiEKIEBtZXRob2QK
IEBhYnN0cmFjdCBBY2Nlc3MgYSBwcm9wZXJ0eSBvZiBhIEpTVmFsdWUuCiBAcmVzdWx0IFRoZSBK
U1ZhbHVlIGZvciB0aGUgcmVxdWVzdGVkIHByb3BlcnR5IG9yIHRoZSBKU1ZhbHVlIDxjb2RlPnVu
ZGVmaW5lZDwvY29kZT4gCiAgaWYgdGhlIHByb3BlcnR5IGRvZXMgbm90IGV4aXN0LgorQGRpc2N1
c3Npb24gQ29ycmVzcG9uZHMgdG8gdGhlIEphdmFTY3JpcHQgb3BlcmF0aW9uIDxjb2RlPm9iamVj
dFtwcm9wZXJ0eV08L2NvZGU+LiBQYXNzIGFuIE5TU3RyaW5nICogdG8gYWNjZXNzIGEgbmFtZWQg
cHJvcGVydHkuIE90aGVyIHZhbGlkIHByb3BlcnRpZXMgaW5jbHVkZSBzeW1ib2xzLCBudW1iZXJz
LCBhbmQgc3RyaW5naWZpYWJsZSBvYmplY3RzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9TIDExIGFu
ZCBiZWxvdywgJ3Byb3BlcnR5JyB3YXMgYW4gTlNTdHJpbmcgKi4KICovCi0tIChKU1ZhbHVlICop
dmFsdWVGb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKEpTVmFsdWUgKil2YWx1
ZUZvclByb3BlcnR5OihpZClwcm9wZXJ0eTsKIAogLyohCiBAbWV0aG9kCiBAYWJzdHJhY3QgU2V0
IGEgcHJvcGVydHkgb24gYSBKU1ZhbHVlLgorQGRpc2N1c3Npb24gQ29ycmVzcG9uZHMgdG8gdGhl
IEphdmFTY3JpcHQgb3BlcmF0aW9uIDxjb2RlPm9iamVjdFtwcm9wZXJ0eV0gPSB2YWx1ZTwvY29k
ZT4uIFBhc3MgYW4gTlNTdHJpbmcgKiB0byBhY2Nlc3MgYSBuYW1lZCBwcm9wZXJ0eS4gT3RoZXIg
dmFsaWQgcHJvcGVydGllcyBpbmNsdWRlIHN5bWJvbHMsIG51bWJlcnMsIGFuZCBzdHJpbmdpZmlh
YmxlIG9iamVjdHMuIEluIG1hY09TIDEwLjEzIGFuZCBpT1MgMTEgYW5kIGJlbG93LCAncHJvcGVy
dHknIHdhcyBhbiBOU1N0cmluZyAqLgogKi8KLS0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZv
clByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5OworLSAodm9pZClzZXRWYWx1ZTooaWQpdmFs
dWUgZm9yUHJvcGVydHk6KGlkKXByb3BlcnR5OwogCiAvKiEKIEBtZXRob2QKIEBhYnN0cmFjdCBE
ZWxldGUgYSBwcm9wZXJ0eSBmcm9tIGEgSlNWYWx1ZS4KIEByZXN1bHQgWUVTIGlmIGRlbGV0aW9u
IGlzIHN1Y2Nlc3NmdWwsIE5PIG90aGVyd2lzZS4KK0BkaXNjdXNzaW9uIENvcnJlc3BvbmRzIHRv
IHRoZSBKYXZhU2NyaXB0IG9wZXJhdGlvbiA8Y29kZT5kZWxldGUgb2JqZWN0W3Byb3BlcnR5XTwv
Y29kZT4uIFBhc3MgYW4gTlNTdHJpbmcgKiB0byBhY2Nlc3MgYSBuYW1lZCBwcm9wZXJ0eS4gT3Ro
ZXIgdmFsaWQgcHJvcGVydGllcyBpbmNsdWRlIHN5bWJvbHMsIG51bWJlcnMsIGFuZCBzdHJpbmdp
ZmlhYmxlIG9iamVjdHMuIEluIG1hY09TIDEwLjEzIGFuZCBpT1MgMTEgYW5kIGJlbG93LCAncHJv
cGVydHknIHdhcyBhbiBOU1N0cmluZyAqLgogKi8KLS0gKEJPT0wpZGVsZXRlUHJvcGVydHk6KE5T
U3RyaW5nICopcHJvcGVydHk7CistIChCT09MKWRlbGV0ZVByb3BlcnR5OihpZClwcm9wZXJ0eTsK
IAogLyohCiBAbWV0aG9kCiBAYWJzdHJhY3QgQ2hlY2sgaWYgYSBKU1ZhbHVlIGhhcyBhIHByb3Bl
cnR5LgogQGRpc2N1c3Npb24gVGhpcyBtZXRob2QgaGFzIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIHRo
ZSBKYXZhU2NyaXB0IG9wZXJhdG9yIDxjb2RlPmluPC9jb2RlPi4KIEByZXN1bHQgUmV0dXJucyBZ
RVMgaWYgcHJvcGVydHkgaXMgcHJlc2VudCBvbiB0aGUgdmFsdWUuCitAZGlzY3Vzc2lvbiBDb3Jy
ZXNwb25kcyB0byB0aGUgSmF2YVNjcmlwdCBvcGVyYXRpb24gPGNvZGU+cHJvcGVydHkgaW4gb2Jq
ZWN0PC9jb2RlPi4gUGFzcyBhbiBOU1N0cmluZyAqIHRvIGFjY2VzcyBhIG5hbWVkIHByb3BlcnR5
LiBPdGhlciB2YWxpZCBwcm9wZXJ0aWVzIGluY2x1ZGUgc3ltYm9scywgbnVtYmVycywgYW5kIHN0
cmluZ2lmaWFibGUgb2JqZWN0cy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUyAxMSBhbmQgYmVsb3cs
ICdwcm9wZXJ0eScgd2FzIGFuIE5TU3RyaW5nICouCiAqLwotLSAoQk9PTCloYXNQcm9wZXJ0eToo
TlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKEJPT0wpaGFzUHJvcGVydHk6KGlkKXByb3BlcnR5Owog
CiAvKiEKIEBtZXRob2QKIEBhYnN0cmFjdCBEZWZpbmUgcHJvcGVydGllcyB3aXRoIGN1c3RvbSBk
ZXNjcmlwdG9ycyBvbiBKU1ZhbHVlcy4KIEBkaXNjdXNzaW9uIFRoaXMgbWV0aG9kIG1heSBiZSB1
c2VkIHRvIGNyZWF0ZSBhIGRhdGEgb3IgYWNjZXNzb3IgcHJvcGVydHkgb24gYW4gb2JqZWN0Lgog
IFRoaXMgbWV0aG9kIG9wZXJhdGVzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5IG1ldGhvZCBpbiB0aGUgCi0gSmF2YVNjcmlwdCBsYW5ndWFnZS4KKyBKYXZhU2Ny
aXB0IGxhbmd1YWdlLiBQYXNzIGFuIE5TU3RyaW5nICogdG8gYWNjZXNzIGEgbmFtZWQgcHJvcGVy
dHkuIE90aGVyIHZhbGlkIHByb3BlcnRpZXMgaW5jbHVkZSBzeW1ib2xzLCBudW1iZXJzLCBhbmQg
c3RyaW5naWZpYWJsZSBvYmplY3RzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9TIDExIGFuZCBiZWxv
dywgJ3Byb3BlcnR5JyB3YXMgYW4gTlNTdHJpbmcgKi4KICovCi0tICh2b2lkKWRlZmluZVByb3Bl
cnR5OihOU1N0cmluZyAqKXByb3BlcnR5IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0b3I7CistICh2
b2lkKWRlZmluZVByb3BlcnR5OihpZClwcm9wZXJ0eSBkZXNjcmlwdG9yOihpZClkZXNjcmlwdG9y
OworCisjZW5kaWYgLy8gISgoZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgSlNDX01BQ19WRVJTSU9OX1RC
QSkgfHwgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgSlNDX0lPU19WRVJTSU9OX1RCQSkpCiAKIC8q
IQogQG1ldGhvZApAQCAtNDAyLDE3ICs0MjAsMjMgQEAgTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzks
IDdfMCkKICovCiBAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGlzT2JqZWN0OwogCisvKiEKK0Bw
cm9wZXJ0eQorQGFic3RyYWN0IENoZWNrIGlmIGEgSlNWYWx1ZSBpcyBhIHN5bWJvbC4KKyovCitA
cHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGlzU3ltYm9sIEpTQ19BUElfQVZBSUxBQkxFKG1hY29z
eChKU0NfTUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpOworCiAvKiEKIEBwcm9wZXJ0eQogQGFi
c3RyYWN0IENoZWNrIGlmIGEgSlNWYWx1ZSBpcyBhbiBhcnJheS4KICovIAotQHByb3BlcnR5IChy
ZWFkb25seSkgQk9PTCBpc0FycmF5IE5TX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsKK0Bwcm9wZXJ0
eSAocmVhZG9ubHkpIEJPT0wgaXNBcnJheSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEp
LCBpb3MoOS4wKSk7CiAKIC8qIQogQHByb3BlcnR5CiBAYWJzdHJhY3QgQ2hlY2sgaWYgYSBKU1Zh
bHVlIGlzIGEgZGF0ZS4KICovIAotQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBpc0RhdGUgTlNf
QVZBSUxBQkxFKDEwXzExLCA5XzApOworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBpc0RhdGUg
SlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOwogCiAvKiEKIEBtZXRo
b2QKQEAgLTU2OSwxMyArNTkzLDE2IEBAIENyZWF0ZSBhIEpTVmFsdWUgZnJvbSBhIENHUmVjdC4K
IEAvdGV4dGJsb2NrCiAKICBBbiBvYmplY3Qga2V5IHBhc3NlZCBhcyBhIHN1YnNjcmlwdCB3aWxs
IGJlIGNvbnZlcnRlZCB0byBhIEphdmFTY3JpcHQgdmFsdWUsCi0gYW5kIHRoZW4gdGhlIHZhbHVl
IGNvbnZlcnRlZCB0byBhIHN0cmluZyB1c2VkIGFzIGEgcHJvcGVydHkgbmFtZS4KKyBhbmQgdGhl
biB0aGUgdmFsdWUgY29udmVydGVkIHRvIGEgc3RyaW5nIHVzZWQgYXMgYSBwcm9wZXJ0eSBuYW1l
LiBJbiBtYWNPUworIDEwLjEzIGFuZCBpT1MgMTEgYW5kIGJlbG93LCB0aGUgPGNvZGU+a2V5PC9j
b2RlPiBhcmd1bWVudCBvZgorIDxjb2RlPnNldE9iamVjdDpvYmplY3QgZm9yS2V5ZWRTdWJzY3Jp
cHQ6a2V5PC9jb2RlPiB3YXMgcmVzdHJpY3RlZCB0byBhbgorIDxjb2RlPk5TU3RyaW5nIDxOU0Nv
cHlpbmc+ICo8L2NvZGU+IGJ1dCB0aGF0IHJlc3RyaWN0aW9uIHdhcyBuZXZlciB1c2VkLgogKi8K
IEBpbnRlcmZhY2UgSlNWYWx1ZSAoU3Vic2NyaXB0U3VwcG9ydCkKIAogLSAoSlNWYWx1ZSAqKW9i
amVjdEZvcktleWVkU3Vic2NyaXB0OihpZClrZXk7CiAtIChKU1ZhbHVlICopb2JqZWN0QXRJbmRl
eGVkU3Vic2NyaXB0OihOU1VJbnRlZ2VyKWluZGV4OwotLSAodm9pZClzZXRPYmplY3Q6KGlkKW9i
amVjdCBmb3JLZXllZFN1YnNjcmlwdDooTlNPYmplY3QgPE5TQ29weWluZz4gKilrZXk7CistICh2
b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGZvcktleWVkU3Vic2NyaXB0OihpZClrZXk7CiAtICh2
b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGF0SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilp
bmRleDsKIAogQGVuZApAQCAtNjYzLDYgKzY5MCw1MyBAQCBKU19FWFBPUlQgZXh0ZXJuIE5TU3Ry
aW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXk7CiB9IC8vIGV4dGVybiAiQyIK
ICNlbmRpZgogCisjaWYgKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IEpTQ19NQUNfVkVSU0lPTl9UQkEp
IHx8IChkZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IEpTQ19JT1NfVkVSU0lPTl9UQkEpCisKKy8vIFRo
ZXNlIGRlY2xhcmF0aW9ucyBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2hlbiB0YXJnZXRpbmcgU0RL
cyBmb3IgbGVnYWN5IE9Tcy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUyAxMSBhbmQgYmVsb3csICdw
cm9wZXJ0eScgd2FzIGFuIE5TU3RyaW5nICouCitAaW50ZXJmYWNlIEpTVmFsdWUgKExlZ2FjeVNE
S1N1cHBvcnQpCisKKy8qIQorQG1ldGhvZAorQGFic3RyYWN0IEFjY2VzcyBhIHByb3BlcnR5IG9m
IGEgSlNWYWx1ZS4KK0ByZXN1bHQgVGhlIEpTVmFsdWUgZm9yIHRoZSByZXF1ZXN0ZWQgcHJvcGVy
dHkgb3IgdGhlIEpTVmFsdWUgPGNvZGU+dW5kZWZpbmVkPC9jb2RlPgoraWYgdGhlIHByb3BlcnR5
IGRvZXMgbm90IGV4aXN0LgorKi8KKy0gKEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihOU1N0
cmluZyAqKXByb3BlcnR5OworCisvKiEKK0BtZXRob2QKK0BhYnN0cmFjdCBTZXQgYSBwcm9wZXJ0
eSBvbiBhIEpTVmFsdWUuCisqLworLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yUHJvcGVy
dHk6KE5TU3RyaW5nICopcHJvcGVydHk7CisKKy8qIQorIEBtZXRob2QKKyBAYWJzdHJhY3QgRGVs
ZXRlIGEgcHJvcGVydHkgZnJvbSBhIEpTVmFsdWUuCisgQHJlc3VsdCBZRVMgaWYgZGVsZXRpb24g
aXMgc3VjY2Vzc2Z1bCwgTk8gb3RoZXJ3aXNlLgorICovCistIChCT09MKWRlbGV0ZVByb3BlcnR5
OihOU1N0cmluZyAqKXByb3BlcnR5OworCisvKiEKKyBAbWV0aG9kCisgQGFic3RyYWN0IENoZWNr
IGlmIGEgSlNWYWx1ZSBoYXMgYSBwcm9wZXJ0eS4KKyBAZGlzY3Vzc2lvbiBUaGlzIG1ldGhvZCBo
YXMgdGhlIHNhbWUgZnVuY3Rpb24gYXMgdGhlIEphdmFTY3JpcHQgb3BlcmF0b3IgPGNvZGU+aW48
L2NvZGU+LgorIEByZXN1bHQgUmV0dXJucyBZRVMgaWYgcHJvcGVydHkgaXMgcHJlc2VudCBvbiB0
aGUgdmFsdWUuCisgKi8KKy0gKEJPT0wpaGFzUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7
CisKKy8qIQorIEBtZXRob2QKKyBAYWJzdHJhY3QgRGVmaW5lIHByb3BlcnRpZXMgd2l0aCBjdXN0
b20gZGVzY3JpcHRvcnMgb24gSlNWYWx1ZXMuCisgQGRpc2N1c3Npb24gVGhpcyBtZXRob2QgbWF5
IGJlIHVzZWQgdG8gY3JlYXRlIGEgZGF0YSBvciBhY2Nlc3NvciBwcm9wZXJ0eSBvbiBhbiBvYmpl
Y3QuCisgVGhpcyBtZXRob2Qgb3BlcmF0ZXMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkgbWV0aG9kIGluIHRoZQorIEphdmFTY3JpcHQgbGFuZ3VhZ2UuCisgKi8K
Ky0gKHZvaWQpZGVmaW5lUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHkgZGVzY3JpcHRvcjoo
aWQpZGVzY3JpcHRvcjsKKworQGVuZAorCisjZW5kaWYKKwogI2VuZGlmCiAKICNlbmRpZiAvLyBK
U1ZhbHVlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5t
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQppbmRleCBhMjY2ODQ0OGZm
YmM3YmY1NTM0Mzc0ZDE3ZGEyYmViNGM3NDE5ODgzLi45Yzk2YzlkNjk1MDM5NDMzNmQxNjg1MjNi
M2M2MzA2N2YzYTM3MWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWUubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCkBAIC0z
OSw2ICszOSw3IEBACiAjaW1wb3J0ICJKU0NKU1ZhbHVlLmgiCiAjaW1wb3J0ICJTdHJvbmcuaCIK
ICNpbXBvcnQgIlN0cm9uZ0lubGluZXMuaCIKKyNpbXBvcnQgPHd0Zi9FeHBlY3RlZC5oPgogI2lt
cG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0IDx3
dGYvTG9jay5oPgpAQCAtMTUxLDYgKzE1MiwxMyBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVy
dHlEZXNjcmlwdG9yU2V0S2V5ID0gQCJzZXQiOwogICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdp
dGhKU1ZhbHVlUmVmOkpTVmFsdWVNYWtlVW5kZWZpbmVkKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4
dFJlZl0pIGluQ29udGV4dDpjb250ZXh0XTsKIH0KIAorKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aE5l
d1N5bWJvbEZyb21EZXNjcmlwdGlvbjooTlNTdHJpbmcgKilkZXNjcmlwdGlvbiBpbkNvbnRleHQ6
KEpTQ29udGV4dCAqKWNvbnRleHQKK3sKKyAgICBKU1N0cmluZ1JlZiBzdHJpbmcgPSBKU1N0cmlu
Z0NyZWF0ZVdpdGhDRlN0cmluZyhyZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihkZXNjcmlw
dGlvbikpOworICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOkpTVmFsdWVN
YWtlU3ltYm9sKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIHN0cmluZykgaW5Db250ZXh0
OmNvbnRleHRdOworfQorCisKIC0gKGlkKXRvT2JqZWN0CiB7CiAgICAgcmV0dXJuIHZhbHVlVG9P
YmplY3QoX2NvbnRleHQsIG1fdmFsdWUpOwpAQCAtMjM0LDcyICsyNDIsMTAwIEBAIE5TU3RyaW5n
ICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXkgPSBAInNldCI7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KE5TU3RyaW5nICop
cHJvcGVydHlOYW1lCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHQsIHR5cGVuYW1lIE5TU3RyaW5n
RnVuY3Rpb24sIHR5cGVuYW1lIEpTVmFsdWVGdW5jdGlvbiwgdHlwZW5hbWUuLi4gVHlwZXM+Citp
bmxpbmUgRXhwZWN0ZWQ8UmVzdWx0LCBKU1ZhbHVlUmVmPiBwZXJmb3JtUHJvcGVydHlPcGVyYXRp
b24oTlNTdHJpbmdGdW5jdGlvbiBzdHJpbmdGdW5jdGlvbiwgSlNWYWx1ZUZ1bmN0aW9uIGpzRnVu
Y3Rpb24sIEpTVmFsdWUqIHZhbHVlLCBpZCBwcm9wZXJ0eUtleSwgVHlwZXMuLi4gYXJndW1lbnRz
KQogewotICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBKU09iamVjdFJlZiBvYmpl
Y3QgPSBKU1ZhbHVlVG9PYmplY3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFs
dWUsICZleGNlcHRpb24pOwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbX2Nv
bnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07Ci0KLSAgICBKU1N0cmlu
Z1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5n
UmVmKXByb3BlcnR5TmFtZSk7Ci0gICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU09iamVjdEdldFBy
b3BlcnR5KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIG5hbWUsICZleGNl
cHRpb24pOwotICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKKyAgICBKU0NvbnRleHQqIGNvbnRl
eHQgPSBbdmFsdWUgY29udGV4dF07CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRy
OworICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChbY29udGV4dCBKU0ds
b2JhbENvbnRleHRSZWZdLCBbdmFsdWUgSlNWYWx1ZVJlZl0sICZleGNlcHRpb24pOwogICAgIGlm
IChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbX2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhj
ZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgICAgIHJldHVybiBVbmV4cGVjdGVkPEpTVmFsdWVSZWY+
KGV4Y2VwdGlvbik7CisKKyAgICBSZXN1bHQgcmVzdWx0OworICAgIC8vIElmIGl0J3MgYSBOU1N0
cmluZyBhbHJlYWR5LCByZWR1Y2UgaW5kaXJlY3Rpb24gYW5kIGp1c3QgcGFzcyB0aGUgTlNTdHJp
bmcuCisgICAgaWYgKFtwcm9wZXJ0eUtleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11d
KSB7CisgICAgICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmlu
ZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcHJvcGVydHlLZXkpOworICAgICAgICByZXN1bHQgPSBz
dHJpbmdGdW5jdGlvbihbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIG5hbWUs
IGFyZ3VtZW50cy4uLiwgJmV4Y2VwdGlvbik7CisgICAgICAgIEpTU3RyaW5nUmVsZWFzZShuYW1l
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0ID0ganNGdW5jdGlvbihbY29udGV4dCBKU0ds
b2JhbENvbnRleHRSZWZdLCBvYmplY3QsIFtbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6cHJvcGVy
dHlLZXkgaW5Db250ZXh0OmNvbnRleHRdIEpTVmFsdWVSZWZdLCBhcmd1bWVudHMuLi4sICZleGNl
cHRpb24pOworICAgIHJldHVybiBFeHBlY3RlZDxSZXN1bHQsIEpTVmFsdWVSZWY+KHJlc3VsdCk7
Cit9CisKKyNpZiAoZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAoZGVmaW5lZChfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPCAxMTAwMDApCistIChKU1ZhbHVlICopdmFsdWVGb3JQcm9wZXJ0eTooTlNTdHJp
bmcgKilrZXkKKyNlbHNlCistIChKU1ZhbHVlICopdmFsdWVGb3JQcm9wZXJ0eTooaWQpa2V5Cisj
ZW5kaWYKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbjxKU1Zh
bHVlUmVmPihKU09iamVjdEdldFByb3BlcnR5LCBKU09iamVjdEdldFByb3BlcnR5S2V5LCBzZWxm
LCBrZXkpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gW19jb250ZXh0IHZhbHVl
RnJvbU5vdGlmeUV4Y2VwdGlvbjpyZXN1bHQuZXJyb3IoKV07CiAKLSAgICByZXR1cm4gW0pTVmFs
dWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpyZXN1bHQgaW5Db250ZXh0Ol9jb250ZXh0XTsKKyAgICBy
ZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpyZXN1bHQudmFsdWUoKSBpbkNvbnRl
eHQ6X2NvbnRleHRdOwogfQogCi0tICh2b2lkKXNldFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9wZXJ0
eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKKyNpZiAoZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAx
MzAwKSB8fCAoZGVmaW5lZChfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMTAwMDApCistICh2b2lkKXNldFZhbHVl
OihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilrZXkKKyNlbHNlCistICh2b2lkKXNl
dFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooaWQpa2V5CisjZW5kaWYKIHsKLSAgICBKU1Zh
bHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRv
T2JqZWN0KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlLCAmZXhjZXB0aW9u
KTsKLSAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIFtfY29udGV4dCBub3RpZnlFeGNlcHRp
b246ZXhjZXB0aW9uXTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAvLyBXZSBuZWVkIFVu
aXQgYnVzaW5lc3MgYmVjYXVzZSB2b2lkIGNhbid0IGJlIGFzc2lnbmVkIHRvIGluIHBlcmZvcm1Q
cm9wZXJ0eU9wZXJhdGlvbiBhbmQgSSBkb24ndCB3YW50IHRvIGR1cGxpY2F0ZSB0aGUgY29kZS4u
LgorICAgIHVzaW5nIFVuaXQgPSBzdGQ6OnR1cGxlPD47CisgICAgYXV0byBzdHJpbmdTZXRQcm9w
ZXJ0eSA9IFtdIChhdXRvLi4uIGFyZ3MpIC0+IFVuaXQgeworICAgICAgICBKU09iamVjdFNldFBy
b3BlcnR5KGFyZ3MuLi4pOworICAgICAgICByZXR1cm4geyB9OworICAgIH07CiAKLSAgICBKU1N0
cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3Ry
aW5nUmVmKXByb3BlcnR5TmFtZSk7Ci0gICAgSlNPYmplY3RTZXRQcm9wZXJ0eShbX2NvbnRleHQg
SlNHbG9iYWxDb250ZXh0UmVmXSwgb2JqZWN0LCBuYW1lLCBvYmplY3RUb1ZhbHVlKF9jb250ZXh0
LCB2YWx1ZSksIDAsICZleGNlcHRpb24pOwotICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKLSAg
ICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIFtfY29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhj
ZXB0aW9uXTsKKyAgICBhdXRvIGpzVmFsdWVTZXRQcm9wZXJ0eSA9IFtdIChhdXRvLi4uIGFyZ3Mp
IC0+IFVuaXQgeworICAgICAgICBKU09iamVjdFNldFByb3BlcnR5S2V5KGFyZ3MuLi4pOworICAg
ICAgICByZXR1cm4geyB9OworICAgIH07CisKKyAgICBhdXRvIHJlc3VsdCA9IHBlcmZvcm1Qcm9w
ZXJ0eU9wZXJhdGlvbjxVbml0PihzdHJpbmdTZXRQcm9wZXJ0eSwganNWYWx1ZVNldFByb3BlcnR5
LCBzZWxmLCBrZXksIG9iamVjdFRvVmFsdWUoX2NvbnRleHQsIHZhbHVlKSwga0pTUHJvcGVydHlB
dHRyaWJ1dGVOb25lKTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBbX2NvbnRleHQgbm90
aWZ5RXhjZXB0aW9uOnJlc3VsdC5lcnJvcigpXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0K
IAotLSAoQk9PTClkZWxldGVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKKyNpZiAo
ZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAoZGVmaW5lZChfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAx
MTAwMDApCistIChCT09MKWRlbGV0ZVByb3BlcnR5OihOU1N0cmluZyAqKWtleQorI2Vsc2UKKy0g
KEJPT0wpZGVsZXRlUHJvcGVydHk6KGlkKWtleQorI2VuZGlmCiB7Ci0gICAgSlNWYWx1ZVJlZiBl
eGNlcHRpb24gPSAwOwotICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChb
X2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7Ci0gICAg
aWYgKGV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFtfY29udGV4dCBib29sRnJvbU5vdGlmeUV4
Y2VwdGlvbjpleGNlcHRpb25dOwotCi0gICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3Jl
YXRlV2l0aENGU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwotICAg
IEJPT0wgcmVzdWx0ID0gSlNPYmplY3REZWxldGVQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxD
b250ZXh0UmVmXSwgb2JqZWN0LCBuYW1lLCAmZXhjZXB0aW9uKTsKLSAgICBKU1N0cmluZ1JlbGVh
c2UobmFtZSk7Ci0gICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFtfY29udGV4dCBi
b29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwotCi0gICAgcmV0dXJuIHJlc3VsdDsK
KyAgICBFeHBlY3RlZDxCT09MLCBKU1ZhbHVlUmVmPiByZXN1bHQgPSBwZXJmb3JtUHJvcGVydHlP
cGVyYXRpb248Qk9PTD4oSlNPYmplY3REZWxldGVQcm9wZXJ0eSwgSlNPYmplY3REZWxldGVQcm9w
ZXJ0eUtleSwgc2VsZiwga2V5KTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFtf
Y29udGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpyZXN1bHQuZXJyb3IoKV07CisgICAgcmV0
dXJuIHJlc3VsdC52YWx1ZSgpOwogfQogCi0tIChCT09MKWhhc1Byb3BlcnR5OihOU1N0cmluZyAq
KXByb3BlcnR5TmFtZQorI2lmIChkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDApIHx8IChkZWZp
bmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKKy0gKEJPT0wpaGFzUHJvcGVydHk6KE5TU3RyaW5n
ICopa2V5CisjZWxzZQorLSAoQk9PTCloYXNQcm9wZXJ0eTooaWQpa2V5CisjZW5kaWYKIHsKLSAg
ICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNW
YWx1ZVRvT2JqZWN0KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlLCAmZXhj
ZXB0aW9uKTsKLSAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW19jb250ZXh0IGJv
b2xGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgLy8gVGhlIEMtYXBpIGRvZXNu
J3QgcmV0dXJuIGFuIGV4Y2VwdGlvbiB2YWx1ZSBmb3IgdGhlIHN0cmluZyB2ZXJzaW9uIG9mIGhh
cyBwcm9wZXJ0eS4KKyAgICBhdXRvIHN0cmluZ0hhc1Byb3BlcnR5ID0gW10gKEpTQ29udGV4dFJl
ZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlUmVmKikgLT4gQk9PTCB7CisgICAgICAgIHJldHVybiBKU09iamVjdEhhc1Byb3BlcnR5KGN0
eCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIH07CiAKLSAgICBKU1N0cmluZ1JlZiBuYW1l
ID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXByb3Bl
cnR5TmFtZSk7Ci0gICAgQk9PTCByZXN1bHQgPSBKU09iamVjdEhhc1Byb3BlcnR5KFtfY29udGV4
dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIG5hbWUpOwotICAgIEpTU3RyaW5nUmVsZWFz
ZShuYW1lKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIEV4cGVjdGVkPEJPT0wsIEpTVmFsdWVS
ZWY+IHJlc3VsdCA9IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbjxCT09MPihzdHJpbmdIYXNQcm9w
ZXJ0eSwgSlNPYmplY3RIYXNQcm9wZXJ0eUtleSwgc2VsZiwga2V5KTsKKyAgICBpZiAoIXJlc3Vs
dCkKKyAgICAgICAgcmV0dXJuIFtfY29udGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpyZXN1
bHQuZXJyb3IoKV07CisgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpOwogfQogCi0tICh2b2lkKWRl
ZmluZVByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0
b3IKKyNpZiAoZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwKSB8fCAoZGVmaW5lZChfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPCAxMTAwMDApCistICh2b2lkKWRlZmluZVByb3BlcnR5OihOU1N0cmluZyAqKWtleSBk
ZXNjcmlwdG9yOihpZClkZXNjcmlwdG9yCisjZWxzZQorLSAodm9pZClkZWZpbmVQcm9wZXJ0eToo
aWQpa2V5IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0b3IKKyNlbmRpZgogewotICAgIFtbX2NvbnRl
eHQgZ2xvYmFsT2JqZWN0XVtAIk9iamVjdCJdIGludm9rZU1ldGhvZDpAImRlZmluZVByb3BlcnR5
IiB3aXRoQXJndW1lbnRzOkBbIHNlbGYsIHByb3BlcnR5LCBkZXNjcmlwdG9yIF1dOworICAgIFtb
X2NvbnRleHQgZ2xvYmFsT2JqZWN0XVtAIk9iamVjdCJdIGludm9rZU1ldGhvZDpAImRlZmluZVBy
b3BlcnR5IiB3aXRoQXJndW1lbnRzOkBbIHNlbGYsIGtleSwgZGVzY3JpcHRvciBdXTsKIH0KIAog
LSAoSlNWYWx1ZSAqKXZhbHVlQXRJbmRleDooTlNVSW50ZWdlcilpbmRleApAQCAtMzcyLDYgKzQw
OCwxMSBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yU2V0S2V5ID0gQCJz
ZXQiOwogICAgIHJldHVybiBKU1ZhbHVlSXNPYmplY3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4
dFJlZl0sIG1fdmFsdWUpOwogfQogCistIChCT09MKWlzU3ltYm9sCit7CisgICAgcmV0dXJuIEpT
VmFsdWVJc1N5bWJvbChbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSk7Cit9
CisKIC0gKEJPT0wpaXNBcnJheQogewogICAgIHJldHVybiBKU1ZhbHVlSXNBcnJheShbX2NvbnRl
eHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSk7CkBAIC01NTQsMTMgKzU5NSw3IEBAIE5T
U3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXkgPSBAInNldCI7CiAKIC0g
KEpTVmFsdWUgKilvYmplY3RGb3JLZXllZFN1YnNjcmlwdDooaWQpa2V5CiB7Ci0gICAgaWYgKCFb
a2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAga2V5ID0gW1tK
U1ZhbHVlIHZhbHVlV2l0aE9iamVjdDprZXkgaW5Db250ZXh0Ol9jb250ZXh0XSB0b1N0cmluZ107
Ci0gICAgICAgIGlmICgha2V5KQotICAgICAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0
aFVuZGVmaW5lZEluQ29udGV4dDpfY29udGV4dF07Ci0gICAgfQotCi0gICAgcmV0dXJuIFtzZWxm
IHZhbHVlRm9yUHJvcGVydHk6KE5TU3RyaW5nICopa2V5XTsKKyAgICByZXR1cm4gW3NlbGYgdmFs
dWVGb3JQcm9wZXJ0eTprZXldOwogfQogCiAtIChKU1ZhbHVlICopb2JqZWN0QXRJbmRleGVkU3Vi
c2NyaXB0OihOU1VJbnRlZ2VyKWluZGV4CkBAIC01NjgsMTUgKzYwMyw5IEBAIE5TU3RyaW5nICog
Y29uc3QgSlNQcm9wZXJ0eURlc2NyaXB0b3JTZXRLZXkgPSBAInNldCI7CiAgICAgcmV0dXJuIFtz
ZWxmIHZhbHVlQXRJbmRleDppbmRleF07CiB9CiAKLS0gKHZvaWQpc2V0T2JqZWN0OihpZClvYmpl
Y3QgZm9yS2V5ZWRTdWJzY3JpcHQ6KE5TT2JqZWN0IDxOU0NvcHlpbmc+ICopa2V5CistICh2b2lk
KXNldE9iamVjdDooaWQpb2JqZWN0IGZvcktleWVkU3Vic2NyaXB0OihpZClrZXkKIHsKLSAgICBp
ZiAoIVtrZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgewotICAgICAgICBrZXkg
PSBbW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OmtleSBpbkNvbnRleHQ6X2NvbnRleHRdIHRvU3Ry
aW5nXTsKLSAgICAgICAgaWYgKCFrZXkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgW3NlbGYgc2V0VmFsdWU6b2JqZWN0IGZvclByb3BlcnR5OihOU1N0cmluZyAqKWtleV07Cisg
ICAgW3NlbGYgc2V0VmFsdWU6b2JqZWN0IGZvclByb3BlcnR5OmtleV07CiB9CiAKIC0gKHZvaWQp
c2V0T2JqZWN0OihpZClvYmplY3QgYXRJbmRleGVkU3Vic2NyaXB0OihOU1VJbnRlZ2VyKWluZGV4
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAppbmRleCA3OTU1OWJlOTA3
OTg3MTUxYjJmYTdkOTMxMjY0MjQ1MTg4ODEwZmRjLi5kYWNhMGUxYjQ5ZGQ4ZDUxMmU1NjVkYzEz
Y2NjYWYyYjk3ZjIwOGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWVSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5j
cHAKQEAgLTg2LDYgKzg2LDggQEAgc3RhdGljIGJvb2wgZXZlcm5vdGVIYWNrTmVlZGVkKCkKICAg
ICAgICAgcmV0dXJuIGtKU1R5cGVOdW1iZXI7CiAgICAgaWYgKGpzVmFsdWUuaXNTdHJpbmcoKSkK
ICAgICAgICAgcmV0dXJuIGtKU1R5cGVTdHJpbmc7CisgICAgaWYgKGpzVmFsdWUuaXNTeW1ib2wo
KSkKKyAgICAgICAgcmV0dXJuIGtKU1R5cGVTeW1ib2w7CiAgICAgQVNTRVJUKGpzVmFsdWUuaXNP
YmplY3QoKSk7CiAgICAgcmV0dXJuIGtKU1R5cGVPYmplY3Q7CiB9CkBAIC0xNjIsNiArMTY0LDE4
IEBAIGJvb2wgSlNWYWx1ZUlzT2JqZWN0KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFs
dWUpCiAgICAgcmV0dXJuIHRvSlMoZXhlYywgdmFsdWUpLmlzT2JqZWN0KCk7CiB9CiAKK2Jvb2wg
SlNWYWx1ZUlzU3ltYm9sKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpCit7Cisg
ICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAg
IEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisKKyAgICByZXR1cm4gdG9KUyhleGVjLCB2YWx1
ZSkuaXNTeW1ib2woKTsKK30KKwogYm9vbCBKU1ZhbHVlSXNBcnJheShKU0NvbnRleHRSZWYgY3R4
LCBKU1ZhbHVlUmVmIHZhbHVlKQogewogICAgIGlmICghY3R4KSB7CkBAIC0zMjAsNiArMzM0LDIy
IEBAIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VOdW1iZXIoSlNDb250ZXh0UmVmIGN0eCwgZG91Ymxl
IHZhbHVlKQogICAgIHJldHVybiB0b1JlZihleGVjLCBqc051bWJlcihwdXJpZnlOYU4odmFsdWUp
KSk7CiB9CiAKK0pTVmFsdWVSZWYgSlNWYWx1ZU1ha2VTeW1ib2woSlNDb250ZXh0UmVmIGN0eCwg
SlNTdHJpbmdSZWYgZGVzY3JpcHRpb24pCit7CisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBF
eGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVj
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRShleGVjLT52bSgpKTsKKwor
ICAgIEpTU3RyaW5nKiBqc0Rlc2NyaXB0aW9uID0ganNTdHJpbmcoZXhlYywgZGVzY3JpcHRpb24g
PyBkZXNjcmlwdGlvbi0+c3RyaW5nKCkgOiBTdHJpbmcoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gdG9SZWYoZXhlYywgU3ltYm9sOjpj
cmVhdGUoZXhlYywganNEZXNjcmlwdGlvbikpOworfQorCiBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtl
U3RyaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHN0cmluZykKIHsKICAgICBpZiAo
IWN0eCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVm
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuaAppbmRleCA5ODE1ZGU3
ODNjMGFlZTA3M2UzYTQ0OGJkMGM3Y2FkZDRhOTUyYzA2Li4xMmYyZGNjMDQ0ZTZlOGFlMzBhYzIw
MzFkMGIyZGE1YjM3M2FkYjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVmFsdWVSZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYu
aApAQCAtNDIsNiArNDIsNyBAQAogQGNvbnN0YW50ICAgICBrSlNUeXBlTnVtYmVyICAgICBBIHBy
aW1pdGl2ZSBudW1iZXIgdmFsdWUuCiBAY29uc3RhbnQgICAgIGtKU1R5cGVTdHJpbmcgICAgIEEg
cHJpbWl0aXZlIHN0cmluZyB2YWx1ZS4KIEBjb25zdGFudCAgICAga0pTVHlwZU9iamVjdCAgICAg
QW4gb2JqZWN0IHZhbHVlIChtZWFuaW5nIHRoYXQgdGhpcyBKU1ZhbHVlUmVmIGlzIGEgSlNPYmpl
Y3RSZWYpLgorQGNvbnN0YW50ICAgICBrSlNUeXBlU3ltYm9sICAgICBBIHByaW1pdGl2ZSBzeW1i
b2wgdmFsdWUuCiAqLwogdHlwZWRlZiBlbnVtIHsKICAgICBrSlNUeXBlVW5kZWZpbmVkLApAQCAt
NDksNyArNTAsOCBAQCB0eXBlZGVmIGVudW0gewogICAgIGtKU1R5cGVCb29sZWFuLAogICAgIGtK
U1R5cGVOdW1iZXIsCiAgICAga0pTVHlwZVN0cmluZywKLSAgICBrSlNUeXBlT2JqZWN0CisgICAg
a0pTVHlwZU9iamVjdCwKKyAgICBrSlNUeXBlU3ltYm9sIEpTQ19BUElfQVZBSUxBQkxFKG1hY29z
eChKU0NfTUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpCiB9IEpTVHlwZTsKIAogLyohCkBAIC04
MCw3ICs4Miw3IEBAIHR5cGVkZWYgZW51bSB7CiAgICAga0pTVHlwZWRBcnJheVR5cGVGbG9hdDY0
QXJyYXksCiAgICAga0pTVHlwZWRBcnJheVR5cGVBcnJheUJ1ZmZlciwKICAgICBrSlNUeXBlZEFy
cmF5VHlwZU5vbmUsCi19IEpTVHlwZWRBcnJheVR5cGUgQ0ZfRU5VTV9BVkFJTEFCTEUoMTBfMTIs
IDEwXzApOworfSBKU1R5cGVkQXJyYXlUeXBlIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4x
MiksIGlvcygxMC4wKSk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CkBAIC0x
NDksNiArMTUxLDE2IEBAIEpTX0VYUE9SVCBib29sIEpTVmFsdWVJc1N0cmluZyhKU0NvbnRleHRS
ZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKTsKICovCiBKU19FWFBPUlQgYm9vbCBKU1ZhbHVlSXNP
YmplY3QoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSk7CiAKKy8qIQorQGZ1bmN0
aW9uCitAYWJzdHJhY3QgICAgICAgVGVzdHMgd2hldGhlciBhIEphdmFTY3JpcHQgdmFsdWUncyB0
eXBlIGlzIHRoZSBzeW1ib2wgdHlwZS4KK0BwYXJhbSBjdHggICAgICBUaGUgZXhlY3V0aW9uIGNv
bnRleHQgdG8gdXNlLgorQHBhcmFtIHZhbHVlICAgIFRoZSBKU1ZhbHVlIHRvIHRlc3QuCitAcmVz
dWx0ICAgICAgICAgdHJ1ZSBpZiB2YWx1ZSdzIHR5cGUgaXMgdGhlIHN5bWJvbCB0eXBlLCBvdGhl
cndpc2UgZmFsc2UuCisqLworSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzU3ltYm9sKEpTQ29udGV4
dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeChKU0Nf
TUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpOworCisKIC8qIQogQGZ1bmN0aW9uCiBAYWJzdHJh
Y3QgVGVzdHMgd2hldGhlciBhIEphdmFTY3JpcHQgdmFsdWUgaXMgYW4gb2JqZWN0IHdpdGggYSBn
aXZlbiBjbGFzcyBpbiBpdHMgY2xhc3MgY2hhaW4uCkBAIC0xNjYsNyArMTc4LDcgQEAgSlNfRVhQ
T1JUIGJvb2wgSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVl
UmVmIHZhbHVlLCBKU0NsYXMKIEBwYXJhbSB2YWx1ZSAgICBUaGUgSlNWYWx1ZSB0byB0ZXN0Lgog
QHJlc3VsdCAgICAgICAgIHRydWUgaWYgdmFsdWUgaXMgYW4gYXJyYXksIG90aGVyd2lzZSBmYWxz
ZS4KICovCi1KU19FWFBPUlQgYm9vbCBKU1ZhbHVlSXNBcnJheShKU0NvbnRleHRSZWYgY3R4LCBK
U1ZhbHVlUmVmIHZhbHVlKSBDRl9BVkFJTEFCTEUoMTBfMTEsIDlfMCk7CitKU19FWFBPUlQgYm9v
bCBKU1ZhbHVlSXNBcnJheShKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CiAKIC8qIQogQGZ1bmN0aW9u
CkBAIC0xNzUsNyArMTg3LDcgQEAgSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzQXJyYXkoSlNDb250
ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkgQ0ZfQVZBSUxBQkxFKDEKIEBwYXJhbSB2YWx1
ZSAgICBUaGUgSlNWYWx1ZSB0byB0ZXN0LgogQHJlc3VsdCAgICAgICAgIHRydWUgaWYgdmFsdWUg
aXMgYSBkYXRlLCBvdGhlcndpc2UgZmFsc2UuCiAqLwotSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlz
RGF0ZShKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKSBDRl9BVkFJTEFCTEUoMTBf
MTEsIDlfMCk7CitKU19FWFBPUlQgYm9vbCBKU1ZhbHVlSXNEYXRlKEpTQ29udGV4dFJlZiBjdHgs
IEpTVmFsdWVSZWYgdmFsdWUpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSksIGlvcyg5
LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTE4NSw3ICsxOTcsNyBAQCBKU19FWFBPUlQgYm9v
bCBKU1ZhbHVlSXNEYXRlKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpIENGX0FW
QUlMQUJMRSgxMAogQHBhcmFtIGV4Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVm
IGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91
IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KIEByZXN1bHQgICAgICAgICAgICAg
QSB2YWx1ZSBvZiB0eXBlIEpTVHlwZWRBcnJheVR5cGUgdGhhdCBpZGVudGlmaWVzIHZhbHVlJ3Mg
VHlwZWQgQXJyYXkgdHlwZSwgb3Iga0pTVHlwZWRBcnJheVR5cGVOb25lIGlmIHRoZSB2YWx1ZSBp
cyBub3QgYSBUeXBlZCBBcnJheSBvYmplY3QuCiAgKi8KLUpTX0VYUE9SVCBKU1R5cGVkQXJyYXlU
eXBlIEpTVmFsdWVHZXRUeXBlZEFycmF5VHlwZShKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVm
IHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7
CitKU19FWFBPUlQgSlNUeXBlZEFycmF5VHlwZSBKU1ZhbHVlR2V0VHlwZWRBcnJheVR5cGUoSlND
b250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBK
U0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAvKiBDb21wYXJp
bmcgdmFsdWVzICovCiAKQEAgLTI1Nyw2ICsyNjksMTUgQEAgSlNfRVhQT1JUIEpTVmFsdWVSZWYg
SlNWYWx1ZU1ha2VCb29sZWFuKEpTQ29udGV4dFJlZiBjdHgsIGJvb2wgYm9vbGVhbik7CiAqLwog
SlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VOdW1iZXIoSlNDb250ZXh0UmVmIGN0eCwg
ZG91YmxlIG51bWJlcik7CiAKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgICAgICAgICAgICBD
cmVhdGVzIGEgSmF2YVNjcmlwdCB2YWx1ZSBvZiB0aGUgc3ltYm9sIHR5cGUuCitAcGFyYW0gY3R4
ICAgICAgICAgICBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgorQHBhcmFtIGRlc2NyaXB0
aW9uICAgQSBkZXNjcmlwdGlvbiBvZiB0aGUgbmV3bHkgY3JlYXRlZCBzeW1ib2wgdmFsdWUuCitA
cmVzdWx0ICAgICAgICAgICAgICBBIHVuaXF1ZSBKU1ZhbHVlIG9mIHRoZSBzeW1ib2wgdHlwZSwg
d2hvc2UgZGVzY3JpcHRpb24gbWF0Y2hlcyB0aGUgb25lIHByb3ZpZGVkLgorKi8KK0pTX0VYUE9S
VCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlU3ltYm9sKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5n
UmVmIGRlc2NyaXB0aW9uKTsKKwogLyohCiBAZnVuY3Rpb24KIEBhYnN0cmFjdCAgICAgICBDcmVh
dGVzIGEgSmF2YVNjcmlwdCB2YWx1ZSBvZiB0aGUgc3RyaW5nIHR5cGUuCkBAIC0yNzYsNyArMjk3
LDcgQEAgSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VTdHJpbmcoSlNDb250ZXh0UmVm
IGN0eCwgSlNTdHJpbmdSZWYgc3RyaW5nKTsKICBAcGFyYW0gc3RyaW5nICAgVGhlIEpTU3RyaW5n
IGNvbnRhaW5pbmcgdGhlIEpTT04gc3RyaW5nIHRvIGJlIHBhcnNlZC4KICBAcmVzdWx0ICAgICAg
ICAgQSBKU1ZhbHVlIGNvbnRhaW5pbmcgdGhlIHBhcnNlZCB2YWx1ZSwgb3IgTlVMTCBpZiB0aGUg
aW5wdXQgaXMgaW52YWxpZC4KICAqLwotSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VG
cm9tSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBzdHJpbmcpIENGX0FW
QUlMQUJMRSgxMF83LCA3XzApOworSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VGcm9t
SlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBzdHJpbmcpIEpTQ19BUElf
QVZBSUxBQkxFKG1hY29zeCgxMC43KSwgaW9zKDcuMCkpOwogCiAvKiEKICBAZnVuY3Rpb24KQEAg
LTI4Nyw3ICszMDgsNyBAQCBKU19FWFBPUlQgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZUZyb21KU09O
U3RyaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHN0cgogIEBwYXJhbSBleGNlcHRp
b24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRp
b24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNl
cHRpb24uCiAgQHJlc3VsdCAgICAgICAgIEEgSlNTdHJpbmcgd2l0aCB0aGUgcmVzdWx0IG9mIHNl
cmlhbGl6YXRpb24sIG9yIE5VTEwgaWYgYW4gZXhjZXB0aW9uIGlzIHRocm93bi4KICAqLwotSlNf
RVhQT1JUIEpTU3RyaW5nUmVmIEpTVmFsdWVDcmVhdGVKU09OU3RyaW5nKEpTQ29udGV4dFJlZiBj
dHgsIEpTVmFsdWVSZWYgdmFsdWUsIHVuc2lnbmVkIGluZGVudCwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKSBDRl9BVkFJTEFCTEUoMTBfNywgN18wKTsKK0pTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU1Zh
bHVlQ3JlYXRlSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlLCB1
bnNpZ25lZCBpbmRlbnQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KDEwLjcpLCBpb3MoNy4wKSk7CiAKIC8qIENvbnZlcnRpbmcgdG8gcHJpbWl0aXZlIHZh
bHVlcyAqLwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL1dlYktpdEF2
YWlsYWJpbGl0eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9XZWJLaXRBdmFpbGFiaWxp
dHkuaAppbmRleCA4MjI3NTIwM2RjOTgwMTgzMzFhOTFiYjk1YjlkNmRiMTZlNTlmOWFhLi4wZjZh
ZmI2YjFkYmQ2MTk4MWRlZGVkMGExZTViMjRjOGZkY2I1M2YyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL1dlYktpdEF2YWlsYWJpbGl0eS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvV2ViS2l0QXZhaWxhYmlsaXR5LmgKQEAgLTY5LDE1ICs2OSwxMiBAQAog
I2VuZGlmIC8qICFUQVJHRVRfT1NfSVBIT05FICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPCAxMDExMDAgKi8KIAogI2lmIGRlZmluZWQoQlVJTERJTkdfR1RLX18pCi0jdW5kZWYg
Q0ZfQVZBSUxBQkxFCi0jZGVmaW5lIENGX0FWQUlMQUJMRShfbWFjLCBfaW9zKQotI3VuZGVmIENG
X0VOVU1fQVZBSUxBQkxFCi0jZGVmaW5lIENGX0VOVU1fQVZBSUxBQkxFKF9tYWMsIF9pb3MpCisj
dW5kZWYgSlNDX0FQSV9BVkFJTEFCTEUKKyNkZWZpbmUgSlNDX0FQSV9BVkFJTEFCTEUoLi4uKQog
I2VuZGlmCiAKICNlbHNlCi0jZGVmaW5lIENGX0FWQUlMQUJMRShfbWFjLCBfaW9zKQotI2RlZmlu
ZSBDRl9FTlVNX0FWQUlMQUJMRShfbWFjLCBfaW9zKQorI2RlZmluZSBKU0NfQVBJX0FWQUlMQUJM
RSguLi4pCiAjZW5kaWYKIAogI2VuZGlmIC8qIF9fV2ViS2l0QXZhaWxhYmlsaXR5X18gKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNp
ZGVCbG9ja0dldHRlclRlc3QubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0N1
cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lm1tCmluZGV4IDUzMTg4ZmJhODhmOTU0Mjdj
OGFlOTMzOWFhYzg4ZDBjNjhhMTdlYjEuLmJkN2U4YTY4NjA3ZTVmOGRkNzhkOTQ2YmRkYTc0YTYx
ZDI1ZjdlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3Vy
cmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS90ZXN0cy9DdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5tbQpAQCAtMjMs
NiArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVy
VGVzdC5oIgogCiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0N1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVz
dC5jCmluZGV4IGFjNTQ3MWE2NzQxYmZmOTNjNzAwYmYzYjNhYWM2ZWQzODc0OWYwYmYuLjlmZmUy
MzNmNGI3OTZmNWEwYjk1YjM3NGE0ODNiMDE0ZWQ1YmRkOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmMKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9DdXN0b21HbG9iYWxPYmplY3RDbGFz
c1Rlc3QuYwpAQCAtMjMsNiArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmgiCiAK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZlByaXZhdGUuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRGF0ZVRlc3RzLm1tIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9EYXRlVGVzdHMubW0KaW5kZXggMmJkYTNhZGE2YjE1
OGUwMTA4YWVjNWY0MmU3NjUzOTczMGVjMmVkOS4uNjY1MjE3N2RlNDE3YjEyZWU5NGRlODgzYjhm
YjBiZDcwOWRkNjcyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy9EYXRlVGVzdHMubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9EYXRl
VGVzdHMubW0KQEAgLTIzLDYgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCisjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkRhdGVUZXN0cy5oIgog
I2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNFeHBvcnRUZXN0cy5tbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvSlNFeHBvcnRUZXN0cy5tbQppbmRleCAxY2VjOTM5NzljNDE2ZjRj
MGYwNDkwNWVlNzQ3NmU3ODY0ZDg0MjUyLi5kZmRjOTVmNDdiYzc3NWIwOGIzNjY3M2QwYmJiZmU2
YmNlMzQxYjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pT
RXhwb3J0VGVzdHMubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU0V4
cG9ydFRlc3RzLm1tCkBAIC0yMyw2ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAorI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJKU0V4cG9ydFRl
c3RzLmgiCiAKICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU05vZGUuYyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvSlNOb2RlLmMKaW5kZXggZDBhMGRjM2VjNzIzNzI1N2ZhMTgwZDA1MTRmNzRjNmFk
MmU0YjViNy4uYmMwMDQwYWU2YmE0MDk4NTM4MzhjYWVhZDZhMjM4NGVjOTk5MDA0OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU05vZGUuYworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZS5jCkBAIC0yMyw3ICsyMyw3IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVk
ZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJKU05vZGVMaXN0
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZUxp
c3QuYyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNOb2RlTGlzdC5jCmluZGV4
IGYwMzdlMDk0YTA5ZTFhMjI2MDQ0ZWVkMWYyM2QwYTUxODYxYTNmNGIuLjk5YTMyOTUxOGU2YTlh
MWNmYjEyNjc2NDczOWEwYjY5Y2ZhNWQ0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvSlNOb2RlTGlzdC5jCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvSlNOb2RlTGlzdC5jCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
ICAqLwogCi0jaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSAiY29uZmlnLmgiCiAK
ICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJKU05vZGVMaXN0LmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL05vZGUuYyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvTm9kZS5jCmluZGV4IGRiNjg3ZTk1MmYxYTlkOGMxMzRiOTA2Nzdk
MjlhNjQwNmQ4ZGIxYTIuLjhmN2QwNmIyYWE0YWRlMjY5ZDYxZWZjNjFjMDE4NGNjYzMxOTVhMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9kZS5jCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9kZS5jCkBAIC0yMyw3ICsyMyw5IEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Tm9kZS5oIgorCiAjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9kZUxpc3QuYyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9kZUxpc3QuYwppbmRleCA2OWY0Y2Q1YzQ4
NzMxMmJkNjM5OTYzNGZiMDY4NGExMjI2NjRkYzE4Li4yMmQzODdjMGQ0MjI2ZmJhZDExOTdjNjQ4
MzFjZDU3YWYzMWFmZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL05vZGVMaXN0LmMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Ob2Rl
TGlzdC5jCkBAIC0yMyw2ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCisjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKIAogI2luY2x1ZGUgPHN0ZGxpYi5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9taW5pZG9tLmMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL21pbmlkb20uYwppbmRleCAwMmI0MWE5
YzdmOWRhMTEzYjAwM2Q0ZjkxOWE0MjA4ZDM4OWI3OGJkLi40MWYxOGNkZjcyOTA0MzY5MGNmZTc3
M2JhNDBkOGI1YjQ0Y2E3MDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL21pbmlkb20uYworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL21p
bmlkb20uYwpAQCAtMjQsNyArMjQsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2luY2x1
ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiSlND
b250ZXh0UmVmLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvdGVzdGFwaS5jCmluZGV4IDdiZWNkZmUwNDExNWJmOTQ4OWVmODQxOTdjMTY3MWM1
YjgzYmE0ZTIuLjg2ZDFjMjVjMjdlOTUyZDYxYWI5ZTQxYmUxNDU3NDEwZmJjNDhmNGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCkBAIC0yMyw3ICsyMyw3IEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNs
dWRlICJjb25maWcuaCIKIAogI2lmIFVTRShDRikKICNpbmNsdWRlICJKYXZhU2NyaXB0Q29yZS5o
IgpAQCAtNjYsNiArNjYsOCBAQAogdm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSSh2b2lkKTsKICNlbmRp
ZgogCitpbnQgdGVzdENBUElWaWFDcHAodm9pZCk7CisKIGJvb2wgYXNzZXJ0VHJ1ZShib29sIHZh
bHVlLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKIAogc3RhdGljIEpTR2xvYmFsQ29udGV4dFJlZiBj
b250ZXh0OwpAQCAtMTM2MSw2ICsxMzYzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFy
Z3ZbXSkKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIHRlc3RPYmplY3RpdmVDQVBJKCk7
CiAjZW5kaWYKKyAgICBSRUxFQVNFX0FTU0VSVCghdGVzdENBUElWaWFDcHAoKSk7CiAKICAgICBj
b25zdCBjaGFyICpzY3JpcHRQYXRoID0gInRlc3RhcGkuanMiOwogICAgIGlmIChhcmdjID4gMSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDVjMzZmODllYzJjZWZlNTFlN2RiNTljMzg1NzFhNTgwMzI2MzI4NgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jcHAKQEAgLTAs
MCArMSwzOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRl
ICJBUElDYXN0LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJK
U09iamVjdC5oIgorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdC5oPgorI2lu
Y2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitleHRlcm4g
IkMiIGludCB0ZXN0Q0FQSVZpYUNwcCgpOworCitjbGFzcyBBUElTdHJpbmcgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEFQSVN0cmluZyk7CitwdWJsaWM6CisKKyAgICBBUElTdHJpbmcoY29u
c3QgY2hhciogc3RyaW5nKQorICAgICAgICA6IG1fc3RyaW5nKEpTU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKHN0cmluZykpCisgICAgeworICAgIH0KKworICAgIH5BUElTdHJpbmcoKQorICAg
IHsKKyAgICAgICAgSlNTdHJpbmdSZWxlYXNlKG1fc3RyaW5nKTsKKyAgICB9CisKKyAgICBvcGVy
YXRvciBKU1N0cmluZ1JlZigpIHsgcmV0dXJuIG1fc3RyaW5nOyB9CisKK3ByaXZhdGU6CisgICAg
SlNTdHJpbmdSZWYgbV9zdHJpbmc7Cit9OworCitjbGFzcyBBUElDb250ZXh0IHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShBUElDb250ZXh0KTsKK3B1YmxpYzoKKworICAgIEFQSUNvbnRleHQo
KQorICAgICAgICA6IG1fY29udGV4dChKU0dsb2JhbENvbnRleHRDcmVhdGUobnVsbHB0cikpCisg
ICAgeworICAgICAgICBBUElTdHJpbmcgcHJpbnQoInByaW50Iik7CisgICAgICAgIEpTT2JqZWN0
UmVmIHByaW50RnVuY3Rpb24gPSBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayhtX2Nv
bnRleHQsIHByaW50LCBbXSAoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0
UmVmLCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwg
SlNWYWx1ZVJlZiopIHsKKworICAgICAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pT
KGN0eCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJndW1lbnRDb3Vu
dDsgaSsrKQorICAgICAgICAgICAgICAgIGRhdGFMb2codG9KUyhleGVjLCBhcmd1bWVudHNbaV0p
KTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGN0eCk7CisgICAgICAgIH0pOworCisgICAgICAgIEpTT2JqZWN0U2V0UHJv
cGVydHkobV9jb250ZXh0LCBKU0NvbnRleHRHZXRHbG9iYWxPYmplY3QobV9jb250ZXh0KSwgcHJp
bnQsIHByaW50RnVuY3Rpb24sIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSwgbnVsbHB0cik7Cisg
ICAgfQorCisgICAgfkFQSUNvbnRleHQoKQorICAgIHsKKyAgICAgICAgSlNHbG9iYWxDb250ZXh0
UmVsZWFzZShtX2NvbnRleHQpOworICAgIH0KKworICAgIG9wZXJhdG9yIEpTR2xvYmFsQ29udGV4
dFJlZigpIHsgcmV0dXJuIG1fY29udGV4dDsgfQorCitwcml2YXRlOgorICAgIEpTR2xvYmFsQ29u
dGV4dFJlZiBtX2NvbnRleHQ7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgQVBJ
VmVjdG9yIDogcHJvdGVjdGVkIFZlY3RvcjxUPiB7CisgICAgdXNpbmcgQmFzZSA9IFZlY3RvcjxU
PjsKK3B1YmxpYzoKKyAgICBBUElWZWN0b3IoQVBJQ29udGV4dCYgY29udGV4dCkKKyAgICAgICAg
OiBCYXNlKCkKKyAgICAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKKyAgICB7CisgICAgfQorCisg
ICAgfkFQSVZlY3RvcigpCisgICAgeworICAgICAgICBmb3IgKGF1dG8mIHZhbHVlIDogKnRoaXMp
CisgICAgICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KG1fY29udGV4dCwgdmFsdWUpOworICAgIH0K
KworICAgIHVzaW5nIFZlY3RvcjxUPjo6b3BlcmF0b3JbXTsKKyAgICB1c2luZyBWZWN0b3I8VD46
OnNpemU7CisgICAgdXNpbmcgVmVjdG9yPFQ+OjpiZWdpbjsKKyAgICB1c2luZyBWZWN0b3I8VD46
OmVuZDsKKyAgICB1c2luZyB0eXBlbmFtZSBWZWN0b3I8VD46Oml0ZXJhdG9yOworCisgICAgdm9p
ZCBhcHBlbmQoVCB2YWx1ZSkKKyAgICB7CisgICAgICAgIEpTVmFsdWVQcm90ZWN0KG1fY29udGV4
dCwgdmFsdWUpOworICAgICAgICBCYXNlOjphcHBlbmQoV1RGTW92ZSh2YWx1ZSkpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBBUElDb250ZXh0JiBtX2NvbnRleHQ7Cit9OworCitjbGFzcyBUZXN0
QVBJIHsKK3B1YmxpYzoKKyAgICBpbnQgcnVuKCk7Citwcml2YXRlOgorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUuLi4gU3RyaW5ncz4KKyAgICBib29sIGNoZWNrKGJvb2wgY29uZGl0aW9uLCBTdHJp
bmdzLi4uIG1lc3NhZ2UpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSlNGdW5jdG9yLCB0eXBl
bmFtZSBBUElGdW5jdG9yPgorICAgIHZvaWQgY2hlY2tKU0FuZEFQSU1hdGNoKGNvbnN0IEpTRnVu
Y3RvciYsIGNvbnN0IEFQSUZ1bmN0b3ImLCBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbik7CisKKyAg
ICAvLyBIZWxwZXIgbWV0aG9kcy4KKyAgICB1c2luZyBTY3JpcHRSZXN1bHQgPSBFeHBlY3RlZDxK
U1ZhbHVlUmVmLCBKU1ZhbHVlUmVmPjsKKyAgICBTY3JpcHRSZXN1bHQgZXZhbHVhdGVTY3JpcHQo
Y29uc3QgY2hhciogc2NyaXB0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0ID0gbnVsbHB0cik7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KKyAgICBTY3JpcHRSZXN1bHQg
Y2FsbEZ1bmN0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uU291cmNlLCBBcmd1bWVudFR5cGVzLi4u
IGFyZ3VtZW50cyk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KKyAg
ICBib29sIGZ1bmN0aW9uUmV0dXJuc1RydWUoY29uc3QgY2hhciogZnVuY3Rpb25Tb3VyY2UsIEFy
Z3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKTsKKworICAgIC8vIFdheXMgdG8gbWFrZSBzZXRzIG9m
IGludGVyZXN0aW5nIHRoaW5ncy4KKyAgICBBUElWZWN0b3I8SlNPYmplY3RSZWY+IGludGVyZXN0
aW5nT2JqZWN0cygpOworICAgIEFQSVZlY3RvcjxKU1ZhbHVlUmVmPiBpbnRlcmVzdGluZ0tleXMo
KTsKKworICAgIGludCBmYWlsZWQgeyAwIH07CisgICAgQVBJQ29udGV4dCBjb250ZXh0OworfTsK
KworaW50IHRlc3RDQVBJVmlhQ3BwKCkKK3sKKyAgICBUZXN0QVBJIHRlc3RlcjsKKyAgICByZXR1
cm4gdGVzdGVyLnJ1bigpOworfQorCitUZXN0QVBJOjpTY3JpcHRSZXN1bHQgVGVzdEFQSTo6ZXZh
bHVhdGVTY3JpcHQoY29uc3QgY2hhciogc2NyaXB0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0KQor
eworICAgIEFQSVN0cmluZyBzY3JpcHRBUElTdHJpbmcoc2NyaXB0KTsKKyAgICBKU1ZhbHVlUmVm
IGV4Y2VwdGlvbiA9IG51bGxwdHI7CisKKyAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpTRXZhbHVh
dGVTY3JpcHQoY29udGV4dCwgc2NyaXB0QVBJU3RyaW5nLCB0aGlzT2JqZWN0LCBudWxscHRyLCAw
LCAmZXhjZXB0aW9uKTsKKyAgICBpZiAoZXhjZXB0aW9uKQorICAgICAgICByZXR1cm4gVW5leHBl
Y3RlZDxKU1ZhbHVlUmVmPihleGNlcHRpb24pOworICAgIHJldHVybiBTY3JpcHRSZXN1bHQocmVz
dWx0KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KK1Rlc3RBUEk6
OlNjcmlwdFJlc3VsdCBUZXN0QVBJOjpjYWxsRnVuY3Rpb24oY29uc3QgY2hhciogZnVuY3Rpb25T
b3VyY2UsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKQoreworICAgIEpTVmFsdWVSZWYgZnVu
Y3Rpb247CisgICAgeworICAgICAgICBTY3JpcHRSZXN1bHQgZnVuY3Rpb25SZXN1bHQgPSBldmFs
dWF0ZVNjcmlwdChmdW5jdGlvblNvdXJjZSk7CisgICAgICAgIGlmICghZnVuY3Rpb25SZXN1bHQp
CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25SZXN1bHQ7CisgICAgICAgIGZ1bmN0aW9uID0g
ZnVuY3Rpb25SZXN1bHQudmFsdWUoKTsKKyAgICB9CisKKyAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlv
biA9IG51bGxwdHI7CisgICAgaWYgKEpTT2JqZWN0UmVmIGZ1bmN0aW9uT2JqZWN0ID0gSlNWYWx1
ZVRvT2JqZWN0KGNvbnRleHQsIGZ1bmN0aW9uLCAmZXhjZXB0aW9uKSkgeworICAgICAgICBKU1Zh
bHVlUmVmIGFyZ3Nbc2l6ZW9mLi4uKGFyZ3VtZW50cyldIHsgYXJndW1lbnRzLi4uIH07CisgICAg
ICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBm
dW5jdGlvbk9iamVjdCwgZnVuY3Rpb25PYmplY3QsIHNpemVvZi4uLihhcmd1bWVudHMpLCBhcmdz
LCAmZXhjZXB0aW9uKTsKKyAgICAgICAgaWYgKCFleGNlcHRpb24pCisgICAgICAgICAgICByZXR1
cm4gU2NyaXB0UmVzdWx0KHJlc3VsdCk7CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlQoZXhj
ZXB0aW9uKTsKKyAgICByZXR1cm4gVW5leHBlY3RlZDxKU1ZhbHVlUmVmPihleGNlcHRpb24pOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVzPgorYm9vbCBUZXN0QVBJOjpm
dW5jdGlvblJldHVybnNUcnVlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uU291cmNlLCBBcmd1bWVudFR5
cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBKU1ZhbHVlUmVmIHRydWVWYWx1ZSA9IEpTVmFsdWVN
YWtlQm9vbGVhbihjb250ZXh0LCB0cnVlKTsKKyAgICBTY3JpcHRSZXN1bHQgcmVzdWx0ID0gY2Fs
bEZ1bmN0aW9uKGZ1bmN0aW9uU291cmNlLCBhcmd1bWVudHMuLi4pOworICAgIGlmICghcmVzdWx0
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIEpTVmFsdWVJc1N0cmljdEVxdWFs
KGNvbnRleHQsIHRydWVWYWx1ZSwgcmVzdWx0LnZhbHVlKCkpOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBTdHJpbmdzPgorYm9vbCBUZXN0QVBJOjpjaGVjayhib29sIGNvbmRpdGlvbiwgU3Ry
aW5ncy4uLiBtZXNzYWdlcykKK3sKKyAgICBpZiAoIWNvbmRpdGlvbikgeworICAgICAgICBkYXRh
TG9nTG4obWVzc2FnZXMuLi4sICI6IEZBSUxFRCIpOworICAgICAgICBmYWlsZWQrKzsKKyAgICB9
IGVsc2UKKyAgICAgICAgZGF0YUxvZ0xuKG1lc3NhZ2VzLi4uLCAiOiBQQVNTRUQiKTsKKworICAg
IHJldHVybiBjb25kaXRpb247Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEpTRnVuY3RvciwgdHlw
ZW5hbWUgQVBJRnVuY3Rvcj4KK3ZvaWQgVGVzdEFQSTo6Y2hlY2tKU0FuZEFQSU1hdGNoKGNvbnN0
IEpTRnVuY3RvciYganNGdW5jdG9yLCBjb25zdCBBUElGdW5jdG9yJiBhcGlGdW5jdG9yLCBjb25z
dCBjaGFyKiBkZXNjcmlwdGlvbikKK3sKKyAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IG51bGxw
dHI7CisgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBhcGlGdW5jdG9yKCZleGNlcHRpb24pOworICAg
IFNjcmlwdFJlc3VsdCBqc1Jlc3VsdCA9IGpzRnVuY3RvcigpOworICAgIGlmICghanNSZXN1bHQp
IHsKKyAgICAgICAgY2hlY2soZXhjZXB0aW9uLCAiSlMgYW5kIEFQSSBjYWxscyBzaG91bGQgYm90
aCB0aHJvdyBhbiBleGNlcHRpb24gd2hpbGUgIiwgZGVzY3JpcHRpb24pOworICAgICAgICBjaGVj
ayhmdW5jdGlvblJldHVybnNUcnVlKCIoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gYS5jb25zdHJ1
Y3RvciA9PT0gYi5jb25zdHJ1Y3RvcjsgfSkiLCBleGNlcHRpb24sIGpzUmVzdWx0LmVycm9yKCkp
LCAiSlMgYW5kIEFQSSBjYWxscyBzaG91bGQgYm90aCB0aHJvdyB0aGUgc2FtZSBleGNlcHRpb24g
d2hpbGUgIiwgZGVzY3JpcHRpb24pOworICAgIH0gZWxzZSB7CisgICAgICAgIGNoZWNrKCFleGNl
cHRpb24sICJKUyBhbmQgQVBJIGNhbGxzIHNob3VsZCBib3RoIG5vdCB0aHJvdyBhbiBleGNlcHRp
b24gd2hpbGUgIiwgZGVzY3JpcHRpb24pOworICAgICAgICBjaGVjayhKU1ZhbHVlSXNTdHJpY3RF
cXVhbChjb250ZXh0LCByZXN1bHQsIGpzUmVzdWx0LnZhbHVlKCkpLCAiSlMgcmVzdWx0IGFuZCBB
UEkgY2FsbHMgc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZSB3aGlsZSAiLCBkZXNjcmlwdGlv
bik7CisgICAgfQorfQorCitBUElWZWN0b3I8SlNPYmplY3RSZWY+IFRlc3RBUEk6OmludGVyZXN0
aW5nT2JqZWN0cygpCit7CisgICAgQVBJVmVjdG9yPEpTT2JqZWN0UmVmPiByZXN1bHQoY29udGV4
dCk7CisgICAgSlNPYmplY3RSZWYgYXJyYXkgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgZXZh
bHVhdGVTY3JpcHQoCisgICAgICAgICJbe30sIFtdLCB7IFtTeW1ib2wuaXRlcmF0b3JdOiAxIH0s
IG5ldyBEYXRlKCksIG5ldyBTdHJpbmcoJ3N0cicpLCBuZXcgTWFwKCksIG5ldyBTZXQoKSwgbmV3
IFdlYWtNYXAoKSwgbmV3IFdlYWtTZXQoKSwgbmV3IEVycm9yKCksIG5ldyBOdW1iZXIoNDIpLCBu
ZXcgQm9vbGVhbigpLCB7IGdldCBsZW5ndGgoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9IH1dOyIp
LnZhbHVlKCksIG51bGxwdHIpOworCisgICAgQVBJU3RyaW5nIGxlbmd0aFN0cmluZygibGVuZ3Ro
Iik7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIEpTT2Jq
ZWN0R2V0UHJvcGVydHkoY29udGV4dCwgYXJyYXksIGxlbmd0aFN0cmluZywgbnVsbHB0ciksIG51
bGxwdHIpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAg
ICAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgSlNPYmpl
Y3RHZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgYXJyYXksIGksIG51bGxwdHIpLCBudWxscHRy
KTsKKyAgICAgICAgQVNTRVJUKG9iamVjdCk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQob2JqZWN0
KTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitBUElWZWN0b3I8SlNWYWx1ZVJl
Zj4gVGVzdEFQSTo6aW50ZXJlc3RpbmdLZXlzKCkKK3sKKyAgICBBUElWZWN0b3I8SlNWYWx1ZVJl
Zj4gcmVzdWx0KGNvbnRleHQpOworICAgIEpTT2JqZWN0UmVmIGFycmF5ID0gSlNWYWx1ZVRvT2Jq
ZWN0KGNvbnRleHQsIGV2YWx1YXRlU2NyaXB0KCJbe30sIFtdLCAxLCBTeW1ib2wuaXRlcmF0b3Is
ICdsZW5ndGgnXSIpLnZhbHVlKCksIG51bGxwdHIpOworCisgICAgQVBJU3RyaW5nIGxlbmd0aFN0
cmluZygibGVuZ3RoIik7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gSlNWYWx1ZVRvTnVtYmVyKGNv
bnRleHQsIEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgYXJyYXksIGxlbmd0aFN0cmluZywg
bnVsbHB0ciksIG51bGxwdHIpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7
IGkrKykgeworICAgICAgICBKU1ZhbHVlUmVmIHZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eUF0
SW5kZXgoY29udGV4dCwgYXJyYXksIGksIG51bGxwdHIpOworICAgICAgICBBU1NFUlQodmFsdWUp
OworICAgICAgICByZXN1bHQuYXBwZW5kKHZhbHVlKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitpbnQgVGVzdEFQSTo6cnVuKCkKK3sKKyAgICBkYXRhTG9nTG4oIlN0YXJ0aW5n
IEMtQVBJIHRlc3RzIGluIEMrKyIpOworICAgIGNvbnN0IGNoYXIqIGlzU3ltYm9sRnVuY3Rpb24g
PSAiKGZ1bmN0aW9uIGlzU3ltYm9sKHN5bWJvbCkgeyByZXR1cm4gdHlwZW9mKHN5bWJvbCkgPT09
ICdzeW1ib2wnOyB9KSI7CisgICAgY29uc3QgY2hhciogZ2V0RnVuY3Rpb24gPSAiKGZ1bmN0aW9u
IGdldChvYmplY3QsIGtleSkgeyByZXR1cm4gb2JqZWN0W2tleV07IH0pIjsKKyAgICBjb25zdCBj
aGFyKiBzZXRGdW5jdGlvbiA9ICIoZnVuY3Rpb24gc2V0KG9iamVjdCwga2V5LCB2YWx1ZSkgeyBv
YmplY3Rba2V5XSA9IHZhbHVlOyB9KSI7CisgICAgY29uc3QgY2hhciogaGFzRnVuY3Rpb24gPSAi
KGZ1bmN0aW9uIGhhcyhvYmplY3QsIGtleSkgeyByZXR1cm4ga2V5IGluIG9iamVjdDsgfSkiOwor
ICAgIGNvbnN0IGNoYXIqIGRlbGV0ZUZ1bmN0aW9uID0gIihmdW5jdGlvbiBkZWwob2JqZWN0LCBr
ZXkpIHsgcmV0dXJuIGRlbGV0ZSBvYmplY3Rba2V5XTsgfSkiOworCisgICAgSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQpOworCisgICAgeworICAgICAgICAvLyBDYW4ndCBjYWxs
IFN5bWJvbCBhcyBhIGNvbnN0cnVjdG9yIHNpbmNlIGl0J3Mgbm90IHN1YmNsYXNzYWJsZS4KKyAg
ICAgICAgYXV0byByZXN1bHQgPSBldmFsdWF0ZVNjcmlwdCgiU3ltYm9sKCdkb3BlJyk7Iik7Cisg
ICAgICAgIGNoZWNrKEpTVmFsdWVHZXRUeXBlKGNvbnRleHQsIHJlc3VsdC52YWx1ZSgpKSA9PSBr
SlNUeXBlU3ltYm9sLCAiZG9wZSBnZXQgdHlwZSBpcyBhIHN5bWJvbCIpOworICAgICAgICBjaGVj
ayhKU1ZhbHVlSXNTeW1ib2woY29udGV4dCwgcmVzdWx0LnZhbHVlKCkpLCAiZG9wZSBpcyBhIHN5
bWJvbCIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQVBJU3RyaW5nIGRlc2NyaXB0aW9uKCJk
b3BlIik7CisgICAgICAgIEpTVmFsdWVSZWYgc3ltYm9sID0gSlNWYWx1ZU1ha2VTeW1ib2woY29u
dGV4dCwgZGVzY3JpcHRpb24pOworICAgICAgICBjaGVjayhmdW5jdGlvblJldHVybnNUcnVlKGlz
U3ltYm9sRnVuY3Rpb24sIHN5bWJvbCksICJKU1ZhbHVlTWFrZVN5bWJvbCBtYWtlcyBhIHN5bWJv
bCB2YWx1ZSIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0byBvYmplY3RzID0gaW50ZXJl
c3RpbmdPYmplY3RzKCk7CisgICAgICAgIGF1dG8ga2V5cyA9IGludGVyZXN0aW5nS2V5cygpOwor
CisgICAgICAgIGZvciAoYXV0byYgb2JqZWN0IDogb2JqZWN0cykgeworICAgICAgICAgICAgZGF0
YUxvZ0xuKCJcbm5leHQgb2JqZWN0OiAiLCB0b0pTKGV4ZWMsIG9iamVjdCkpOworICAgICAgICAg
ICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzKSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJV
c2luZyBrZXk6ICIsIHRvSlMoZXhlYywga2V5KSk7CisgICAgICAgICAgICAgICAgY2hlY2tKU0Fu
ZEFQSU1hdGNoKAorICAgICAgICAgICAgICAgICAgICBbJl0geworICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGNhbGxGdW5jdGlvbihnZXRGdW5jdGlvbiwgb2JqZWN0LCBrZXkpOworICAg
ICAgICAgICAgICAgICAgICB9LCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT2JqZWN0R2V0UHJvcGVydHlLZXkoY29udGV4dCwg
b2JqZWN0LCBrZXksIGV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAgICAgIH0sICJjaGVja2lu
ZyBnZXQgcHJvcGVydHkga2V5cyIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgeworICAgICAgICBhdXRvIGpzT2JqZWN0cyA9IGludGVyZXN0aW5nT2JqZWN0cygpOwor
ICAgICAgICBhdXRvIGFwaU9iamVjdHMgPSBpbnRlcmVzdGluZ09iamVjdHMoKTsKKyAgICAgICAg
YXV0byBrZXlzID0gaW50ZXJlc3RpbmdLZXlzKCk7CisKKyAgICAgICAgSlNWYWx1ZVJlZiB0aGVB
bnN3ZXIgPSBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCA0Mik7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwganNPYmplY3RzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8mIGtleSA6IGtleXMpIHsKKyAgICAgICAgICAgICAgICBKU09iamVjdFJlZiBqc09iamVj
dCA9IGpzT2JqZWN0c1tpXTsKKyAgICAgICAgICAgICAgICBKU09iamVjdFJlZiBhcGlPYmplY3Qg
PSBhcGlPYmplY3RzW2ldOworICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAg
ICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBj
YWxsRnVuY3Rpb24oc2V0RnVuY3Rpb24sIGpzT2JqZWN0LCBrZXksIHRoZUFuc3dlcik7CisgICAg
ICAgICAgICAgICAgICAgIH0gLCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAg
ICAgICAgICAgICAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eUtleShjb250ZXh0LCBhcGlPYmpl
Y3QsIGtleSwgdGhlQW5zd2VyLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUsIGV4Y2VwdGlvbik7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCk7CisgICAgICAgICAgICAgICAgICAgIH0sICJzZXR0aW5nIHByb3BlcnR5IGtleXMgdG8g
dGhlIGFuc3dlciIpOworICAgICAgICAgICAgICAgIC8vIENoZWNrIGdldCBpcyB0aGUgc2FtZSBv
biBBUEkgb2JqZWN0LgorICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAg
ICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxs
RnVuY3Rpb24oZ2V0RnVuY3Rpb24sIGFwaU9iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAg
ICAgfSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBKU09iamVjdEdldFByb3BlcnR5S2V5KGNvbnRleHQsIGFwaU9iamVjdCwga2V5
LCBleGNlcHRpb24pOworICAgICAgICAgICAgICAgICAgICB9LCAiZ2V0dGluZyBwcm9wZXJ0eSBr
ZXlzIGZyb20gQVBJIG9iamVjdHMiKTsKKyAgICAgICAgICAgICAgICAvLyBDaGVjayBnZXQgaXMg
dGhlIHNhbWUgb24gcmVzcGVjdGl2ZSBvYmplY3RzLgorICAgICAgICAgICAgICAgIGNoZWNrSlNB
bmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oZ2V0RnVuY3Rpb24sIGpzT2JqZWN0LCBrZXkpOwor
ICAgICAgICAgICAgICAgICAgICB9LCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT2JqZWN0R2V0UHJvcGVydHlLZXkoY29udGV4
dCwgYXBpT2JqZWN0LCBrZXksIGV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAgICAgIH0sICJn
ZXR0aW5nIHByb3BlcnR5IGtleXMgZnJvbSByZXNwZWN0aXZlIG9iamVjdHMiKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0byBvYmplY3RzID0g
aW50ZXJlc3RpbmdPYmplY3RzKCk7CisgICAgICAgIGF1dG8ga2V5cyA9IGludGVyZXN0aW5nS2V5
cygpOworCisgICAgICAgIEpTVmFsdWVSZWYgdGhlQW5zd2VyID0gSlNWYWx1ZU1ha2VOdW1iZXIo
Y29udGV4dCwgNDIpOworICAgICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IG9iamVjdHMpIHsKKyAg
ICAgICAgICAgIGRhdGFMb2dMbigiXG5OZXh0IG9iamVjdDogIiwgdG9KUyhleGVjLCBvYmplY3Qp
KTsKKyAgICAgICAgICAgIGZvciAoYXV0byYga2V5IDoga2V5cykgeworICAgICAgICAgICAgICAg
IGRhdGFMb2dMbigiVXNpbmcga2V5OiAiLCB0b0pTKGV4ZWMsIGtleSkpOworICAgICAgICAgICAg
ICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oaGFzRnVuY3Rpb24sIG9iamVj
dCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRp
b24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4o
Y29udGV4dCwgSlNPYmplY3RIYXNQcm9wZXJ0eUtleShjb250ZXh0LCBvYmplY3QsIGtleSwgZXhj
ZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIH0sICJjaGVja2luZyBoYXMgcHJvcGVydHkg
a2V5cyB1bnNldCIpOworCisgICAgICAgICAgICAgICAgY2hlY2soISFjYWxsRnVuY3Rpb24oc2V0
RnVuY3Rpb24sIG9iamVjdCwga2V5LCB0aGVBbnN3ZXIpLCAic2V0IHByb3BlcnR5IHRvIHRoZSBh
bnN3ZXIiKTsKKworICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAg
ICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVu
Y3Rpb24oaGFzRnVuY3Rpb24sIG9iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwg
WyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgSlNPYmplY3RIYXNQcm9wZXJ0eUtleShj
b250ZXh0LCBvYmplY3QsIGtleSwgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIH0s
ICJjaGVja2luZyBoYXMgcHJvcGVydHkga2V5cyBzZXQiKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0byBvYmplY3RzID0gaW50ZXJlc3RpbmdP
YmplY3RzKCk7CisgICAgICAgIGF1dG8ga2V5cyA9IGludGVyZXN0aW5nS2V5cygpOworCisgICAg
ICAgIEpTVmFsdWVSZWYgdGhlQW5zd2VyID0gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgNDIp
OworICAgICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IG9iamVjdHMpIHsKKyAgICAgICAgICAgIGRh
dGFMb2dMbigiXG5OZXh0IG9iamVjdDogIiwgdG9KUyhleGVjLCBvYmplY3QpKTsKKyAgICAgICAg
ICAgIGZvciAoYXV0byYga2V5IDoga2V5cykgeworICAgICAgICAgICAgICAgIGRhdGFMb2dMbigi
VXNpbmcga2V5OiAiLCB0b0pTKGV4ZWMsIGtleSkpOworICAgICAgICAgICAgICAgIGNoZWNrSlNB
bmRBUElNYXRjaCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24oZGVsZXRlRnVuY3Rpb24sIG9iamVjdCwga2V5KTsK
KyAgICAgICAgICAgICAgICAgICAgfSwgWyZdIChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwg
SlNPYmplY3REZWxldGVQcm9wZXJ0eUtleShjb250ZXh0LCBvYmplY3QsIGtleSwgZXhjZXB0aW9u
KSk7CisgICAgICAgICAgICAgICAgICAgIH0sICJjaGVja2luZyBoYXMgcHJvcGVydHkga2V5cyB1
bnNldCIpOworCisgICAgICAgICAgICAgICAgY2hlY2soISFjYWxsRnVuY3Rpb24oc2V0RnVuY3Rp
b24sIG9iamVjdCwga2V5LCB0aGVBbnN3ZXIpLCAic2V0IHByb3BlcnR5IHRvIHRoZSBhbnN3ZXIi
KTsKKworICAgICAgICAgICAgICAgIGNoZWNrSlNBbmRBUElNYXRjaCgKKyAgICAgICAgICAgICAg
ICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb24o
ZGVsZXRlRnVuY3Rpb24sIG9iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgWyZd
IChKU1ZhbHVlUmVmKiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgSlNPYmplY3REZWxldGVQcm9wZXJ0eUtleShj
b250ZXh0LCBvYmplY3QsIGtleSwgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIH0s
ICJjaGVja2luZyBoYXMgcHJvcGVydHkga2V5cyBzZXQiKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIGRhdGFMb2dMbigiQy1BUEkgdGVzdHMgaW4gQysrIGhhZCAiLCBm
YWlsZWQsICIgZmFpbHVyZXMiKTsKKyAgICByZXR1cm4gZmFpbGVkOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCmluZGV4IGExNjU0YWUxMWUxOTFhNjQ5MmM1
NTM2OGQ4ZWJkMGQ1NjE5ZDE4YTIuLjM4MjgwNTQ2NDgyYWU0ZDA0ODFlZDMzYWM4Mzk1NDg0ZThi
OWVmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFw
aS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KQEAg
LTIzLDYgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJKU0V4cG9ydE1hY3Jvcy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuaD4KIApAQCAtNDIsNiArNDMsNyBAQAogI2ltcG9ydCA8dmVjdG9yPgogI2lt
cG9ydCA8d3RmL01lbW9yeUZvb3RwcmludC5oPgogI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+Cisj
aW1wb3J0IDx3dGYvRGF0YUxvZy5oPgogCiBleHRlcm4gIkMiIHZvaWQgSlNTeW5jaHJvbm91c0dh
cmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKEpTQ29udGV4dFJlZik7CiBleHRlcm4gIkMiIHZvaWQg
SlNTeW5jaHJvbm91c0VkZW5Db2xsZWN0Rm9yRGVidWdnaW5nKEpTQ29udGV4dFJlZik7CkBAIC02
MjYsNiArNjI4LDEwNSBAQCBzdGF0aWMgdm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSU1haW4oKQogICAg
ICAgICBjaGVja1Jlc3VsdChAIm5ldyBEYXRlIiwgcmVzdWx0LmlzRGF0ZSk7CiAgICAgfQogCisg
ICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlND
b250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAqc3ltYm9sID0gW2NvbnRleHQg
ZXZhbHVhdGVTY3JpcHQ6QCJTeW1ib2woJ2RvcGUnKTsiXTsKKyAgICAgICAgSlNWYWx1ZSAqbm90
U3ltYm9sID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCInZG9wZSciXTsKKyAgICAgICAgY2hl
Y2tSZXN1bHQoQCJTaG91bGQgYmUgYSBzeW1ib2wgdmFsdWUiLCBzeW1ib2wuaXNTeW1ib2wpOwor
ICAgICAgICBjaGVja1Jlc3VsdChAIlNob3VsZCBub3QgYmUgYSBzeW1ib2wgdmFsdWUiLCAhbm90
U3ltYm9sLmlzU3ltYm9sKTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAg
ICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAg
ICBKU1ZhbHVlICpzeW1ib2wgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdTeW1ib2xGcm9tRGVzY3Jp
cHRpb246QCJkb3BlIiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIGNoZWNrUmVzdWx0KEAi
U2hvdWxkIGJlIGEgY3JlYXRlZCBmcm9tIE9iai1DIiwgc3ltYm9sLmlzU3ltYm9sKTsKKyAgICB9
CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0g
W1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICphcnJheUl0ZXJhdG9y
ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJBcnJheS5wcm90b3R5cGVbU3ltYm9sLml0ZXJh
dG9yXSJdOworICAgICAgICBKU1ZhbHVlICppdGVyYXRvclN5bWJvbCA9IGNvbnRleHRbQCJTeW1i
b2wiXVtAIml0ZXJhdG9yIl07CisgICAgICAgIEpTVmFsdWUgKmFycmF5ID0gW0pTVmFsdWUgdmFs
dWVXaXRoTmV3QXJyYXlJbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIGNoZWNrUmVzdWx0KEAi
TG9va2luZyB1cCBieSBzdWJzY3JpcHQgd2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsiLCBbYXJyYXlb
aXRlcmF0b3JTeW1ib2xdIGlzRXF1YWw6YXJyYXlJdGVyYXRvcl0pOworICAgICAgICBjaGVja1Jl
c3VsdChAIkxvb2tpbmcgdXAgYnkgbWV0aG9kIHdpdGggc3ltYm9sIHNob3VsZCB3b3JrIiwgW1th
cnJheSB2YWx1ZUZvclByb3BlcnR5Oml0ZXJhdG9yU3ltYm9sXSBpc0VxdWFsOmFycmF5SXRlcmF0
b3JdKTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0
ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICpp
dGVyYXRvclN5bWJvbCA9IGNvbnRleHRbQCJTeW1ib2wiXVtAIml0ZXJhdG9yIl07CisgICAgICAg
IEpTVmFsdWUgKm9iamVjdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld09iamVjdEluQ29udGV4dDpj
b250ZXh0XTsKKyAgICAgICAgSlNWYWx1ZSAqdGhlQW5zd2VyID0gW0pTVmFsdWUgdmFsdWVXaXRo
VUludDMyOjQyIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgb2JqZWN0W2l0ZXJhdG9yU3lt
Ym9sXSA9IHRoZUFuc3dlcjsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJTZXR0aW5nIGJ5IHN1YnNj
cmlwdCB3aXRoIHN5bWJvbCBzaG91bGQgd29yayIsIFtvYmplY3RbaXRlcmF0b3JTeW1ib2xdIGlz
RXF1YWw6dGhlQW5zd2VyXSk7CisgICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAg
ICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAg
ICAgSlNWYWx1ZSAqaXRlcmF0b3JTeW1ib2wgPSBjb250ZXh0W0AiU3ltYm9sIl1bQCJpdGVyYXRv
ciJdOworICAgICAgICBKU1ZhbHVlICpvYmplY3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdPYmpl
Y3RJbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIEpTVmFsdWUgKnRoZUFuc3dlciA9IFtKU1Zh
bHVlIHZhbHVlV2l0aFVJbnQzMjo0MiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIFtvYmpl
Y3Qgc2V0VmFsdWU6dGhlQW5zd2VyIGZvclByb3BlcnR5Oml0ZXJhdG9yU3ltYm9sXTsKKyAgICAg
ICAgY2hlY2tSZXN1bHQoQCJTZXR0aW5nIGJ5IG1ldGhvZCB3aXRoIHN5bWJvbCBzaG91bGQgd29y
ayIsIFtvYmplY3RbaXRlcmF0b3JTeW1ib2xdIGlzRXF1YWw6dGhlQW5zd2VyXSk7CisgICAgfQor
CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtb
SlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAqaXRlcmF0b3JTeW1ib2wg
PSBjb250ZXh0W0AiU3ltYm9sIl1bQCJpdGVyYXRvciJdOworICAgICAgICBKU1ZhbHVlICpvYmpl
Y3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdPYmplY3RJbkNvbnRleHQ6Y29udGV4dF07CisgICAg
ICAgIEpTVmFsdWUgKnRoZUFuc3dlciA9IFtKU1ZhbHVlIHZhbHVlV2l0aFVJbnQzMjo0MiBpbkNv
bnRleHQ6Y29udGV4dF07CisgICAgICAgIG9iamVjdFtpdGVyYXRvclN5bWJvbF0gPSB0aGVBbnN3
ZXI7CisgICAgICAgIGNoZWNrUmVzdWx0KEAiaGFzIHByb3BlcnR5IHdpdGggc3ltYm9sIHNob3Vs
ZCB3b3JrIiwgW29iamVjdCBoYXNQcm9wZXJ0eTppdGVyYXRvclN5bWJvbF0pOworICAgIH0KKwor
ICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pT
Q29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUgKml0ZXJhdG9yU3ltYm9sID0g
Y29udGV4dFtAIlN5bWJvbCJdW0AiaXRlcmF0b3IiXTsKKyAgICAgICAgSlNWYWx1ZSAqb2JqZWN0
ID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOworICAgICAg
ICBKU1ZhbHVlICp0aGVBbnN3ZXIgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhVSW50MzI6NDIgaW5Db250
ZXh0OmNvbnRleHRdOworICAgICAgICBjaGVja1Jlc3VsdChAImRlbGV0ZSBwcm9wZXJ0eSB3aXRo
IHN5bWJvbCBzaG91bGQgd29yayB3aXRob3V0IHByb3BlcnR5IiwgW29iamVjdCBkZWxldGVQcm9w
ZXJ0eTppdGVyYXRvclN5bWJvbF0pOworICAgICAgICBvYmplY3RbaXRlcmF0b3JTeW1ib2xdID0g
dGhlQW5zd2VyOworICAgICAgICBjaGVja1Jlc3VsdChAImRlbGV0ZSBwcm9wZXJ0eSB3aXRoIHN5
bWJvbCBzaG91bGQgd29yayB3aXRoIHByb3BlcnR5IiwgW29iamVjdCBkZWxldGVQcm9wZXJ0eTpp
dGVyYXRvclN5bWJvbF0pOworICAgICAgICBjaGVja1Jlc3VsdChAImRlbGV0ZSBzaG91bGQgYmUg
ZmFsc2Ugd2l0aCBub24tY29uZmlndXJhYmxlIHByb3BlcnR5IiwgIVtjb250ZXh0W0AiQXJyYXki
XSBkZWxldGVQcm9wZXJ0eTpAInByb3RvdHlwZSJdKTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVh
c2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2Nd
IGluaXRdOworICAgICAgICBKU1ZhbHVlICpvYmplY3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdP
YmplY3RJbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIE5TT2JqZWN0ICpvYmpDT2JqZWN0ID0g
W1tOU09iamVjdCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IG9iamVj
dFtvYmpDT2JqZWN0XTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJnZXR0aW5nIGEgbm9uLWNvbnZl
cnRhYmxlIG9iamVjdCBzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCIsIFtyZXN1bHQgaXNVbmRlZmlu
ZWRdKTsKKyAgICAgICAgb2JqZWN0W29iakNPYmplY3RdID0gQCgxKTsKKyAgICAgICAgcmVzdWx0
ID0gb2JqZWN0W29iakNPYmplY3RdOworICAgICAgICBjaGVja1Jlc3VsdChAImdldHRpbmcgYSBu
b24tY29udmVydGFibGUgb2JqZWN0IHNob3VsZCByZXR1cm4gdGhlIHN0b3JlZCB2YWx1ZSIsIFty
ZXN1bHQgdG9VSW50MzJdID09IDEpOworICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgewor
ICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07Cisg
ICAgICAgIEpTVmFsdWUgKm9iamVjdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld09iamVjdEluQ29u
dGV4dDpjb250ZXh0XTsKKyAgICAgICAgSlNWYWx1ZSAqaXRlcmF0b3JTeW1ib2wgPSBjb250ZXh0
W0AiU3ltYm9sIl1bQCJpdGVyYXRvciJdOworICAgICAgICBvYmplY3RbQCJ2YWx1ZSJdID0gQCgx
KTsKKyAgICAgICAgY29udGV4dFtAIm9iamVjdCJdID0gb2JqZWN0OworCisgICAgICAgIG9iamVj
dFtpdGVyYXRvclN5bWJvbF0gPSBeeworICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW0pT
VmFsdWUgdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICAgICAg
cmVzdWx0W0Aib2JqZWN0Il0gPSBbSlNDb250ZXh0IGN1cnJlbnRUaGlzXTsKKyAgICAgICAgICAg
IHJlc3VsdFtAIm5leHQiXSA9IF57CisgICAgICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0g
W0pTVmFsdWUgdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICAg
ICAgICAgIEpTVmFsdWUgKnZhbHVlID0gW0pTQ29udGV4dCBjdXJyZW50VGhpc11bQCJvYmplY3Qi
XVtAInZhbHVlIl07CisgICAgICAgICAgICAgICAgW1tKU0NvbnRleHQgY3VycmVudFRoaXNdW0Ai
b2JqZWN0Il0gZGVsZXRlUHJvcGVydHk6QCJ2YWx1ZSJdOworICAgICAgICAgICAgICAgIHJlc3Vs
dFtAInZhbHVlIl0gPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICByZXN1bHRbQCJkb25lIl0gPSBb
SlNWYWx1ZSB2YWx1ZVdpdGhCb29sOlt2YWx1ZSBpc1VuZGVmaW5lZF0gaW5Db250ZXh0OmNvbnRl
eHRdOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9OworICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfTsKKworCisgICAgICAgIEpTVmFsdWUg
KmNvdW50ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJsZXQgY291bnQgPSAwOyBmb3IgKGxl
dCB2IG9mIG9iamVjdCkgeyBpZiAodiAhPT0gMSkgdGhyb3cgbmV3IEVycm9yKCk7IGNvdW50Kys7
IH0gY291bnQ7Il07CisgICAgICAgIGNoZWNrUmVzdWx0KEAiaXRlcmF0b3Igc2hvdWxkIG5vdCB0
aHJvdyIsICFbY29udGV4dCBleGNlcHRpb25dKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJpdGVy
YXRpb24gY291bnQgc2hvdWxkIGJlIDEiLCBbY291bnQgdG9VSW50MzJdID09IDEpOworICAgIH0K
KwogICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICBKU0NvbGxlY3Rpb24qIG15UHJpdmF0
ZVByb3BlcnRpZXMgPSBbW0pTQ29sbGVjdGlvbiBhbGxvY10gaW5pdF07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYWQwOWZkMGRjNjI2ZTAxZGMzNTIwNWMzYjU4ZjUzNTBlZTcx
ODhkNi4uMjkzZDcxNDI0MjBiYWM5NTFjMmQwZWIwYzRmYTAzM2QwYzdkNGQyOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNDAsNiArMTA0MCw3IEBACiAJCTUzRTc3N0U0MUU5
MkUyNjUwMDdDQkVDNCAvKiBXYXNtTW9kdWxlSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRTc3N0UyMUU5MkUyNjUwMDdDQkVDNCAv
KiBXYXNtTW9kdWxlSW5mb3JtYXRpb24uaCAqLzsgfTsKIAkJNTNFOUUwQUMxRUFFODNERjAwRkVF
MjUxIC8qIFdhc21NYWNoaW5lVGhyZWFkcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTNFOUUwQUExRUFFODNERTAwRkVFMjUxIC8qIFdhc21NYWNoaW5l
VGhyZWFkcy5oICovOyB9OwogCQk1M0U5RTBBRjFFQUVDNDU3MDBGRUUyNTEgLyogV2FzbVRpZXJV
cENvdW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
M0U5RTBBRTFFQUVDNDU3MDBGRUUyNTEgLyogV2FzbVRpZXJVcENvdW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTNFQUZFMkYyMDhERkFCNDAw
N0Q1MjRCIC8qIHRlc3RhcGkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTMxRDRFMTkxRjU5Q0REMjAwRUM4MzZDIC8qIHRlc3RhcGkuY3BwICovOyB9
OwogCQk1M0YxMUY0MTIwOTEzOEQ3MDBFNDExQTcgLyogSlNJbW11dGFibGVCdXR0ZXJmbHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjExRjQwMjA5
MTM4RDcwMEU0MTFBNyAvKiBKU0ltbXV0YWJsZUJ1dHRlcmZseS5oICovOyB9OwogCQk1M0Y0MEU4
NTFENThGOTc3MDA5OUExQjYgLyogV2FzbVNlY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU4NDFENThGOTc3MDA5OUExQjYgLyogV2Fz
bVNlY3Rpb25zLmggKi87IH07CiAJCTUzRjQwRThCMUQ1OTAxQkIwMDk5QTFCNiAvKiBXYXNtRnVu
Y3Rpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzRjQwRThBMUQ1OTAxQkIwMDk5QTFCNiAvKiBXYXNtRnVuY3Rpb25QYXJzZXIuaCAqLzsg
fTsKQEAgLTMzMDUsNiArMzMwNiw4IEBACiAJCTUzMTFCRDQ5MUVBNTgxRTUwMDUyNTI4MSAvKiBX
YXNtT01HUGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtT01HUGxh
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzEzNzRCQzFENUNFNjc2MDBBRjdB
MEIgLyogV2FzbVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbVBs
YW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxMzc0QkUxRDVDRTk1MDAwQUY3
QTBCIC8qIFdhc21QbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdhc21QbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMxRDRFMTkxRjU5
Q0REMjAwRUM4MzZDIC8qIHRlc3RhcGkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdGVzdGFwaS5j
cHA7IHBhdGggPSBBUEkvdGVzdHMvdGVzdGFwaS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUzMzNCQkQ0MjEwOTI4Q0QwMDc2MThFQyAvKiBwb3N0cHJvY2Vzcy1oZWFkZXJzLnNo
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQuc2g7IHBhdGggPSAicG9zdHByb2Nlc3MtaGVhZGVycy5z
aCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzM0IxNURFMURDN0Y0NjMwMDRENTAw
QSAvKiBXYXNtT3BzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21PcHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0MUZDNkYxREFDMzNFNTAwRTdFNEQ3
IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM1dhc21C
b3VuZHNDaGVja1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0MUZD
NzExREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBwYXRoID0g
YjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMzQ3NSw3ICszNDc4LDYgQEAKIAkJNTM5MTdFN0ExQjc5MDZFNDAwMEVCRDMzIC8qIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzOTE3RTdDMUI3OTExMDYwMDBFQkQz
MyAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTM5MTdFODMxQjc5MUNCODAwMEVCRDMzIC8qIFR5cGVkQXJyYXlQcm90b3R5
cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBUeXBlZEFycmF5
UHJvdG90eXBlLmpzOyBwYXRoID0gYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qczsgc291
cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQk1MzlFQjA3MTFENTUzREY4MDBDODJFRjcgLyog
dGVzdFdhc20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdGVzdFdh
c20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzlGQjhCOTFDOTlEQTdDMDA5
NDBGQTEgLyogSlNBcnJheUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNBcnJheUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNCMEJF
MzMxRTU2MUFDOTAwQThGQzI5IC8qIEdldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzQjBCRTM1MUU1NjFCMDkwMEE4RkMyOSAv
KiBQcm94eWFibGVBY2Nlc3NDYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFByb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMzczNiw3ICszNzM4LDcgQEAKIAkJN0Q1RkIxOTAyMDc0NEJGMTAwNURERjY0IC8qIElu
dGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdENUZCMTkxMjA3NDRCRjEwMDVEREY2NCAvKiBJbnRsUGx1cmFsUnVsZXNQcm90b3R5
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bFBsdXJhbFJ1
bGVzUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0Q1RkIxOTIy
MDc0NEJGMjAwNURERjY0IC8qIEludGxQbHVyYWxSdWxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnRsUGx1cmFsUnVsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJN0Q3MzRGRTQyMEI0RDg0MTAwMTg4NDRBIC8qIEludGxDYW5vbmljYWxpemVMYW5ndWFn
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBJbnRsQ2Fub25pY2FsaXplTGFuZ3VhZ2UuaDsgcGF0aCA9IElu
dGxDYW5vbmljYWxpemVMYW5ndWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
RDczNEZFNDIwQjREODQxMDAxODg0NEEgLyogSW50bENhbm9uaWNhbGl6ZUxhbmd1YWdlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEludGxDYW5vbmljYWxpemVMYW5ndWFnZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3RTRFRTcwODBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlQ2hhaW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U0RUU3MEUwRUJCN0E1QjAwNTkzNEFBIC8qIFN0
cnVjdHVyZUNoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0
cnVjdHVyZUNoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYwMTYxREYw
RjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNDkzMiw2ICs0OTM0LDcgQEAKIAkJCQlGNjkyQTg1NDAyNTU1
OTdEMDFGRjYwRjcgLyogY3JlYXRlX2hhc2hfdGFibGUgKi8sCiAJCQkJOTM3QjYzQ0MwOUU3NjZE
MjAwQTY3MUREIC8qIERlcml2ZWRTb3VyY2VzLm1ha2UgKi8sCiAJCQkJMEY5MzI3NUExQzIwQkNE
RjAwQ0Y2NTY0IC8qIGR5bmJlbmNoLmNwcCAqLywKKwkJCQk1MzMzQkJENDIxMDkyOENEMDA3NjE4
RUMgLyogcG9zdHByb2Nlc3MtaGVhZGVycy5zaCAqLywKIAkJCQk2NTI5RkIzMDE4QjJENjM5MDBD
NjExMDIgLyogZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMgKi8sCiAJCQkJRjVDMjkwRTYwMjg0Rjk4
RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggKi8sCiAJCQkJNDVFMTJEODgwNkE0
OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAgKi8sCkBAIC01NDY3LDEwICs1NDcwLDEwIEBACiAJCQkJ
RkVCNTFGNkIxQTk3QjY4ODAwMUY5MjFDIC8qIFJlZ3Jlc3MxNDE4MDkubW0gKi8sCiAJCQkJRkVD
QjhCMjkxRDI1Q0FCQjAwNkYyNDYzIC8qIHRlc3RhcGktZnVuY3Rpb24tb3ZlcnJpZGVzLmpzICov
LAogCQkJCTE0QkQ1QTJEMEEzRTkxRjYwMEJBRjU5QyAvKiB0ZXN0YXBpLmMgKi8sCisJCQkJNTMx
RDRFMTkxRjU5Q0REMjAwRUM4MzZDIC8qIHRlc3RhcGkuY3BwICovLAogCQkJCTE0RDg1Nzc0MEE0
Njk2QzgwMDMyMTQ2QyAvKiB0ZXN0YXBpLmpzICovLAogCQkJCTg2RDIyMjE5MTY3RUY5NDQwMDI0
QzgwNCAvKiB0ZXN0YXBpLm1tICovLAogCQkJCTY1MTEyMkU1MTQwNDY5QkEwMDJCMTAxRCAvKiB0
ZXN0UmVnRXhwLmNwcCAqLywKLQkJCQk1MzlFQjA3MTFENTUzREY4MDBDODJFRjcgLyogdGVzdFdh
c20uY3BwICovLAogCQkJCTUzNDkwMjgyMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rl
c3QuY3BwICovLAogCQkJCTUzNDkwMjgzMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rl
c3QuaCAqLywKIAkJCSk7CkBAIC05OTg0LDcgKzk5ODcsNyBAQAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsK
LQkJCXNoZWxsU2NyaXB0ID0gImV4ZWMgJHtTUkNST09UfS9wb3N0cHJvY2Vzcy1oZWFkZXJzLnNo
IjsKKwkJCXNoZWxsU2NyaXB0ID0gImV4ZWMgJHtTUkNST09UfS9wb3N0cHJvY2Vzcy1oZWFkZXJz
LnNoXG4iOwogCQl9OwogCQkzNzRGOTVDOTIwNUY5OTc1MDAyQkY2OEYgLyogTWFrZSBsaWJXVEYu
YSBTeW1ib2xpYyBMaW5rICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNl
OwpAQCAtMTAyMDMsNiArMTAyMDYsNyBAQAogCQkJCTY1NTcwRjVBMUFBNEMzRUEwMDlCM0MyMyAv
KiBSZWdyZXNzMTQxMjc1Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVCNTFGNkMxQTk3QjY4ODAw
MUY5MjFDIC8qIFJlZ3Jlc3MxNDE4MDkubW0gaW4gU291cmNlcyAqLywKIAkJCQkxNDQwRjYxMDBB
NEY4NTY3MDAwNUYwNjEgLyogdGVzdGFwaS5jIGluIFNvdXJjZXMgKi8sCisJCQkJNTNFQUZFMkYy
MDhERkFCNDAwN0Q1MjRCIC8qIHRlc3RhcGkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZEMjIy
MUExNjdFRjk0NDAwMjRDODA0IC8qIHRlc3RhcGkubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzQ5
MDI4NTFDNzI3NkI3MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJKTsKQEAgLTEwNjcwLDYgKzEwNjc0LDEwIEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBD
MzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5n
cyA9IHsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkiXCIkKEpBVkFTQ1JJUFRD
T1JFX0ZSQU1FV09SS1NfRElSKS9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRl
cnNcIiIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IERl
YnVnOwogCQl9OwpAQCAtMTA2NzcsNiArMTA2ODUsMTAgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkw
MEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRp
bmdzID0geworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSJcIiQoSkFWQVNDUklQ
VENPUkVfRlJBTUVXT1JLU19ESVIpL0phdmFTY3JpcHRDb3JlLmZyYW1ld29yay9Qcml2YXRlSGVh
ZGVyc1wiIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJKTsKIAkJCX07CiAJCQluYW1lID0g
UmVsZWFzZTsKIAkJfTsKQEAgLTEwNjg0LDYgKzEwNjk2LDEwIEBACiAJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIx
MzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOwogCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkiXCIkKEpBVkFT
Q1JJUFRDT1JFX0ZSQU1FV09SS1NfRElSKS9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsvUHJpdmF0
ZUhlYWRlcnNcIiIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CiAJCQl9OwogCQkJbmFt
ZSA9IFByb2R1Y3Rpb247CiAJCX07CkBAIC0xMTAwOCw2ICsxMTAyNCwxMCBAQAogCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJD
MDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsKIAkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIlwi
JChKQVZBU0NSSVBUQ09SRV9GUkFNRVdPUktTX0RJUikvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3Jr
L1ByaXZhdGVIZWFkZXJzXCIiLAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkpOwogCQkJfTsK
IAkJCW5hbWUgPSBQcm9maWxpbmc7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvY29uZmlnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgKaW5kZXggMWQx
ZWQ3YjZmOGM2YWMwOWYxNDQ0NGY2ZWYzODA1NjI5OTgxOWQ3ZS4uNTZlYzdmNjY3YjJlMDljMjkz
ZjUzMzljMzU3ZTEzMzIzZGE5OTE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2NvbmZpZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaApAQCAtMjMsNiAr
MjMsMTEgQEAKICNpbmNsdWRlICJjbWFrZWNvbmZpZy5oIgogI2VuZGlmCiAKKyNkZWZpbmUgSlND
X0FQSV9BVkFJTEFCTEUoLi4uKQorLy8gUGljayBzb21lIG9ic2VuZWx5IGxhcmdlIG51bWJlciBi
ZWNhdXNlIHdoeSBub3QuCisjZGVmaW5lIEpTQ19NQUNfVkVSU0lPTl9UQkEgMAorI2RlZmluZSBK
U0NfSU9TX1ZFUlNJT05fVEJBIDAKKwogI2luY2x1ZGUgIkpTRXhwb3J0TWFjcm9zLmgiCiAKICNp
ZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bvc3Rw
cm9jZXNzLWhlYWRlcnMuc2ggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcG9zdHByb2Nlc3MtaGVh
ZGVycy5zaAppbmRleCBjODYxODQzN2QyYTA3Nzk0OWE1OTBhYzcwMTdmODI2YjUyZDZkMmIzLi5m
Y2RlOGExMzcxMWE0YmJkMTFjOGEwYTIxMzBmNmMxMjI3YTE3MWY4IDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcG9zdHByb2Nlc3MtaGVhZGVycy5zaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcG9zdHByb2Nlc3MtaGVhZGVycy5zaApAQCAtMSwxOCArMSwxMDAgQEAKLWNk
ICIke1RBUkdFVF9CVUlMRF9ESVJ9LyR7UFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEh9IgotCi1V
TklGREVGX09QVElPTlM9Ii1EX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRD0ke1RBUkdF
VF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SfSIKLQotZm9yICgoaSA9IDA7IGkgPCAke1NDUklQVF9J
TlBVVF9GSUxFX0NPVU5UfTsgKytpKSk7IGRvCi0gICAgZXZhbCBIRUFERVI9XCR7U0NSSVBUX0lO
UFVUX0ZJTEVfJHtpfX07Ci0gICAgdW5pZmRlZiAtQiAke1VOSUZERUZfT1BUSU9OU30gLW8gIiR7
SEVBREVSfSIudW5pZmRlZiAiJHtIRUFERVJ9IgotICAgIGNhc2UgJD8gaW4KLSAgICAwKQotICAg
ICAgICBybSAiJHtIRUFERVJ9Ii51bmlmZGVmCi0gICAgICAgIDs7Ci0gICAgMSkKLSAgICAgICAg
bXYgIiR7SEVBREVSfSJ7LnVuaWZkZWYsfQotICAgICAgICA7OwotICAgICopCi0gICAgICAgIGV4
aXQgMQotICAgIGVzYWMKLWRvbmUKKyMhL2Jpbi9zaAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTQt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorIworCitpZiBbWyAiJHtKU0NfRlJBTUVXT1JLX0hFQURFUl9Q
T1NUUFJPQ0VTU0lOR19ESVNBQkxFRH0iID09ICJZRVMiIF1dOyB0aGVuCisgICAgZXhpdCAwOwor
ZmkKKworVElNRVNUQU1QX1BBVEg9JHtUQVJHRVRfVEVNUF9ESVJ9LyR7MCMjKi99CisKK2lmIFtb
IC1lICRUSU1FU1RBTVBfUEFUSCAmJiAkMCAtbnQgJFRJTUVTVEFNUF9QQVRIIF1dOyB0aGVuCisg
ICAgcm0gIiR7VElNRVNUQU1QX1BBVEh9IjsKK2ZpCisKK2Z1bmN0aW9uIHByb2Nlc3NfZGVmaW5p
dGlvbnMgKCkgeworICAgIGxvY2FsIERFRklOSVRJT05TX0ZJTEU9JDEKKworICAgIGlmIFtbICEg
LWYgIiR7REVGSU5JVElPTlNfRklMRX0iIF1dOyB0aGVuCisgICAgICAgIHJldHVybiAxCisgICAg
ZmkKKworICAgIGlmIFtbIC1lICRUSU1FU1RBTVBfUEFUSCAmJiAiJHtERUZJTklUSU9OU19GSUxF
fSIgLW50ICRUSU1FU1RBTVBfUEFUSCBdXTsgdGhlbgorICAgICAgICBybSAiJHtUSU1FU1RBTVBf
UEFUSH0iOworICAgIGZpCisKKyAgICBzb3VyY2UgIiR7REVGSU5JVElPTlNfRklMRX0iCit9CisK
K2Z1bmN0aW9uIHJld3JpdGVfaGVhZGVycyAoKSB7CisgICAgaWYgW1sgIiR7UExBVEZPUk1fTkFN
RX0iID09ICJtYWNvc3giIF1dOyB0aGVuCisgICAgICAgIFtbIC1uICR7T1NYX1ZFUlNJT059IF1d
IHx8IE9TWF9WRVJTSU9OPSR7TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUfQorICAgICAgICBbWyAt
biAke0lPU19WRVJTSU9OfSBdXSB8fCBJT1NfVkVSU0lPTj0iTkEiCisgICAgICAgIFtbIC1uICR7
T1NYX1ZFUlNJT05fTlVNQkVSfSBdXSB8fCBPU1hfVkVSU0lPTl9OVU1CRVI9JHtUQVJHRVRfTUFD
X09TX1hfVkVSU0lPTl9NQUpPUn0KKyAgICAgICAgW1sgLW4gJHtJT1NfVkVSU0lPTl9OVU1CRVJ9
IF1dIHx8IElPU19WRVJTSU9OX05VTUJFUj0iMCIKKyAgICBlbGlmIFtbICIke1BMQVRGT1JNX05B
TUV9IiA9fiAiaXBob25lIiBdXTsgdGhlbgorICAgICAgICBbWyAtbiAke0lPU19WRVJTSU9OfSBd
XSB8fCBJT1NfVkVSU0lPTj0ke0lQSE9ORU9TX0RFUExPWU1FTlRfVEFSR0VUfQorICAgICAgICBb
WyAtbiAke09TWF9WRVJTSU9OfSBdXSB8fCBPU1hfVkVSU0lPTj0iTkEiCisgICAgICAgIFtbIC1u
ICR7T1NYX1ZFUlNJT05fTlVNQkVSfSBdXSB8fCBPU1hfVkVSU0lPTl9OVU1CRVI9IjAiCisgICAg
ICAgIFtbIC1uICR7SU9TX1ZFUlNJT05fTlVNQkVSfSBdXSB8fCBJT1NfVkVSU0lPTl9OVU1CRVI9
JHtTREtfVkVSU0lPTl9NQUpPUn0KKyAgICBmaQorCisgICAgU0VEX09QVElPTlM9KAorICAgICkK
KworICAgIGlmIFtbIC1uICIkT1NYX1ZFUlNJT04iICYmIC1uICIkSU9TX1ZFUlNJT04iIF1dOyB0
aGVuCisgICAgICAgIFNFRF9PUFRJT05TKz0oCisgICAgICAgICAgICAtZSBzL0pTQ19NQUNfVEJB
LyR7T1NYX1ZFUlNJT059L2cKKyAgICAgICAgICAgIC1lIHMvSlNDX0lPU19UQkEvJHtJT1NfVkVS
U0lPTn0vZworICAgICAgICAgICAgLWUgcy9KU0NfTUFDX1ZFUlNJT05fVEJBLyR7T1NYX1ZFUlNJ
T05fTlVNQkVSfS9nCisgICAgICAgICAgICAtZSBzL0pTQ19JT1NfVkVSU0lPTl9UQkEvJHtJT1Nf
VkVSU0lPTl9OVU1CRVJ9L2cKKyAgICAgICAgICAgIC1lIHMvSlNDX0FQSV9BVkFJTEFCTEUvQVBJ
X0FWQUlMQUJMRS8KKyAgICAgICAgICAgIC1lIHMvSlNDX0FQSV9ERVBSRUNBVEVEL0FQSV9ERVBS
RUNBVEVELworICAgICAgICAgICAgLWUgInMvXkpTQ19DTEFTU19BVkFJTEFCTEUvSlNDX0VYVEVS
TiBBUElfQVZBSUxBQkxFLyIKKyAgICAgICAgICAgIC1lICJzL15KU0NfQ0xBU1NfREVQUkVDQVRF
RC9KU0NfRVhURVJOIEFQSV9ERVBSRUNBVEVELyIKKyAgICAgICAgKQorICAgIGVsc2UKKyAgICAg
ICAgU0VEX09QVElPTlMrPSgtZSAncy9KU0NfKEFQSV98Q0xBU1NfKUFWQUlMQUJMRVwoLipcKVxz
KlwpLy9nJyAtZSAncy9KU0NfKEFQSV98Q0xBU1NfKURFUFJFQ0FURUQoX1dJVEhfUkVQTEFDRU1F
TlQpP1woLipcKVxzKlwpLy9nJykKKyAgICBmaQorCisgICAgU0VEX09QVElPTlMrPSgke09USEVS
X1NFRF9PUFRJT05TWypdfSkKKworICAgIGZvciBIRUFERVJfUEFUSCBpbiAiJHsxfS8iKi5oOyBk
bworICAgICAgICBpZiBbWyAiJEhFQURFUl9QQVRIIiAtbnQgJFRJTUVTVEFNUF9QQVRIIF1dOyB0
aGVuCisgICAgICAgICAgICBkaXR0byAiJHtIRUFERVJfUEFUSH0iICIke1RBUkdFVF9URU1QX0RJ
Un0vJHtIRUFERVJfUEFUSCMjKi99IgorICAgICAgICAgICAgc2VkIC1pIC50bXAgLUUgIiR7U0VE
X09QVElPTlNbQF19IiAiJHtUQVJHRVRfVEVNUF9ESVJ9LyR7SEVBREVSX1BBVEgjIyovfSIgfHwg
ZXhpdCAkPworICAgICAgICAgICAgbXYgIiR7VEFSR0VUX1RFTVBfRElSfS8ke0hFQURFUl9QQVRI
IyMqL30iICIkSEVBREVSX1BBVEgiCisgICAgICAgIGZpCisgICAgZG9uZQorfQorCitERUZJTklU
SU9OU19QQVRIPXVzci9sb2NhbC9pbmNsdWRlL1dlYktpdEFkZGl0aW9ucy9TY3JpcHRzL3Bvc3Rw
cm9jZXNzLWZyYW1ld29yay1oZWFkZXJzLWRlZmluaXRpb25zCisKK3Byb2Nlc3NfZGVmaW5pdGlv
bnMgIiR7QlVJTFRfUFJPRFVDVFNfRElSfS8ke0RFRklOSVRJT05TX1BBVEh9IiB8fCBwcm9jZXNz
X2RlZmluaXRpb25zICIke1NES1JPT1R9LyR7REVGSU5JVElPTlNfUEFUSH0iCisKK3Jld3JpdGVf
aGVhZGVycyAiJHtUQVJHRVRfQlVJTERfRElSfS8ke1BVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRI
fSIKK3Jld3JpdGVfaGVhZGVycyAiJHtUQVJHRVRfQlVJTERfRElSfS8ke1BSSVZBVEVfSEVBREVS
U19GT0xERVJfUEFUSH0iCisKK3RvdWNoICR7VElNRVNUQU1QX1BBVEh9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvc2hlbGwvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvc2hlbGwvQ01ha2VMaXN0cy50eHQKaW5kZXggYjNjN2UwYjFlNjgxYjJlZWE5MTA1
MmM2YThiN2FiOTc1ZTVhMDk2ZS4uODcxNTNlMzUxYjA3NTVhZDViOTk1NDQ2MzBjM2ZlMmY0NTQ0
MjI4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3NoZWxsL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9zaGVsbC9DTWFrZUxpc3RzLnR4dApAQCAt
MjgsNiArMjgsNyBAQCBzZXQoVEVTVEFQSV9TT1VSQ0VTCiAgICAgLi4vQVBJL3Rlc3RzL1BpbmdQ
b25nU3RhY2tPdmVyZmxvd1Rlc3QuY3BwCiAgICAgLi4vQVBJL3Rlc3RzL1R5cGVkQXJyYXlDVGVz
dC5jcHAKICAgICAuLi9BUEkvdGVzdHMvdGVzdGFwaS5jCisgICAgLi4vQVBJL3Rlc3RzL3Rlc3Rh
cGkuY3BwCiApCiAKIFdFQktJVF9JTkNMVURFX0NPTkZJR19GSUxFU19JRl9FWElTVFMoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RtZW0vdGVzdG1lbS5tbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0bWVtL3Rlc3RtZW0ubW0KaW5kZXggYjRkMmFkMzkxMTliYzU1
NThjZDM5YzljODE4MmZhY2VkY2JlYWYyNC4uOWJjNGI0MGUxZWFjMDIzMTdmZDNlODQ1YjQ1NGQw
ZjQ4YjZlZTVjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RtZW0vdGVz
dG1lbS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdG1lbS90ZXN0bWVtLm1tCkBA
IC0yMyw2ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KICNpbXBvcnQgPGlu
dHR5cGVzLmg+CiAjaW1wb3J0IDxzdGRpby5oPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345810</attachid>
            <date>2018-07-25 18:53:00 -0700</date>
            <delta_ts>2018-07-25 19:32:32 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-175836-20180725185258.patch</filename>
            <type>text/plain</type>
            <size>104248</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0MjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZWEwMDgyMjk3Zjg5ODZhYTA3NDM4Y2Q2OWMzZGE2NmEzZjA1MjdlLi5kMWJkMDliYWY1ZDhmNzgy
ZjA0MDgzODBkNTQ0MjM5MTE1Y2I2OTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDUgQEAKKzIwMTgtMDctMjUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0pTQyBBUEldIFdlIHNob3VsZCBzdXBwb3J0IHRoZSBzeW1ib2wg
dHlwZSBpbiBvdXIgQy9PYmotQyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTgzNgorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxv
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIGZvbGxvd2luZyBBUEkgYWRkaXRpb25z
OgorICAgICAgICAxKSBUZXN0IGlmIGEgSlNWYWx1ZS9KU1ZhbHVlUmVmIGlzIGEgc3ltYm9sIHZp
YSBhbnkgb2YgdGhlIG1ldGhvZHMgQVBJIGFyZSBhYmxlIHRvIHRlc3QgZm9yIHRoZSB0eXBlcyBv
ZiBvdGhlciBKU1ZhbHVlcy4KKyAgICAgICAgMikgQ3JlYXRlIGEgc3ltYm9sIG9uIGJvdGggQVBJ
cy4KKyAgICAgICAgMykgR2V0L1NldC9EZWxldGUvRGVmaW5lIHByb3BlcnR5IG5vdyB0YWtlIGlk
cyBpbiB0aGUgT2JqLUMgQVBJLgorICAgICAgICA0KSBBZGQgR2V0L1NldC9EZWxldGUgaW4gdGhl
IEMgQVBJLgorCisgICAgICAgIFdlIGNhbiBkbyAzIGJlY2F1c2UgaXQgaXMgYm90aCBiaW5hcnkg
YW5kIHNvdXJjZSBjb21wYXRhYmxlIHdpdGgKKyAgICAgICAgdGhlIGV4aXN0aW5nIEFQSS4gSSBh
ZGRlZCAoNCkgYmVjYXVzZSB0aGUgY3VycmVudCBwcm9wZXJ0eSBhY2Nlc3MKKyAgICAgICAgQVBJ
cyBvbmx5IGhhdmUgdGhlIGFiaWxpdHkgdG8gZ2V0IFN0cmluZ3MuIEl0IHdhcyBwb3NzaWJsZSB0
bworICAgICAgICBtZXJnZSBzeW1ib2xzIGludG8gSlNTdHJpbmdSZWYgYnV0IHRoYXQgZmVsdCBj
b25mdXNpbmcgYW5kIGV4cG9zZXMKKyAgICAgICAgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBv
dXIgZW5naW5lLiBUaGUgbmV3IGZ1bmN0aW9ucyBtYXRjaCB0aGUKKyAgICAgICAgc2FtZSBtZWFu
aW5nIHRoYXQgdGhleSBoYXZlIGluIEpTLCB0aHVzIHNob3VsZCBiZSBmb3J3YXJkCisgICAgICAg
IGNvbXBhdGlibGUgd2l0aCBhbnkgZnV0dXJlIGxhbmd1YWdlIGV4dGVuc2lvbnMuCisKKyAgICAg
ICAgTGFzdGx5LCB0aGlzIHBhdGNoIGFkZHMgdGhlIHNhbWUgYXZhaWxhYmlsaXR5IHByZXByb2Nj
ZXNzaW5nIHBoYXNlCisgICAgICAgIGluIFdlYkNvcmUgdG8gSmF2YVNjcmlwdENvcmUsIHdoaWNo
IGVuYWJsZXMgVEJBIGZlYXR1cmVzIGZvcgorICAgICAgICB0ZXN0aW5nIG9uIHByZXZpb3VzIHJl
bGVhc2VzLgorCisgICAgICAgICogQVBJL0FQSUNhc3QuaDoKKyAgICAgICAgKiBBUEkvSlNCYXNl
UHJpdmF0ZS5oOgorICAgICAgICAqIEFQSS9KU0NvbnRleHQuaDoKKyAgICAgICAgKiBBUEkvSlND
b250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuaDoKKyAgICAgICAg
KiBBUEkvSlNDb250ZXh0UmVmSW50ZXJuYWwuaDoKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UmVm
UHJpdmF0ZS5oOgorICAgICAgICAqIEFQSS9KU01hbmFnZWRWYWx1ZS5oOgorICAgICAgICAqIEFQ
SS9KU09iamVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdEhhc1Byb3BlcnR5S2V5KToKKyAg
ICAgICAgKEpTT2JqZWN0R2V0UHJvcGVydHlLZXkpOgorICAgICAgICAoSlNPYmplY3RTZXRQcm9w
ZXJ0eUtleSk6CisgICAgICAgIChKU09iamVjdERlbGV0ZVByb3BlcnR5S2V5KToKKyAgICAgICAg
KiBBUEkvSlNPYmplY3RSZWYuaDoKKyAgICAgICAgKiBBUEkvSlNSZW1vdGVJbnNwZWN0b3IuaDoK
KyAgICAgICAgKiBBUEkvSlNUeXBlZEFycmF5Lmg6CisgICAgICAgICogQVBJL0pTVmFsdWUuaDoK
KyAgICAgICAgKiBBUEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKCtbSlNWYWx1ZSB2YWx1ZVdpdGhO
ZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246aW5Db250ZXh0Ol0pOgorICAgICAgICAocGVyZm9ybVBy
b3BlcnR5T3BlcmF0aW9uKToKKyAgICAgICAgKC1bSlNWYWx1ZSB2YWx1ZUZvclByb3BlcnR5OnZh
bHVlRm9yUHJvcGVydHk6XSk6CisgICAgICAgICgtW0pTVmFsdWUgc2V0VmFsdWU6Zm9yUHJvcGVy
dHk6c2V0VmFsdWU6Zm9yUHJvcGVydHk6XSk6CisgICAgICAgICgtW0pTVmFsdWUgZGVsZXRlUHJv
cGVydHk6ZGVsZXRlUHJvcGVydHk6XSk6CisgICAgICAgICgtW0pTVmFsdWUgaGFzUHJvcGVydHk6
aGFzUHJvcGVydHk6XSk6CisgICAgICAgICgtW0pTVmFsdWUgZGVmaW5lUHJvcGVydHk6ZGVzY3Jp
cHRvcjpkZWZpbmVQcm9wZXJ0eTpkZXNjcmlwdG9yOl0pOgorICAgICAgICAoLVtKU1ZhbHVlIGlz
U3ltYm9sXSk6CisgICAgICAgICgtW0pTVmFsdWUgb2JqZWN0Rm9yS2V5ZWRTdWJzY3JpcHQ6XSk6
CisgICAgICAgICgtW0pTVmFsdWUgc2V0T2JqZWN0OmZvcktleWVkU3Vic2NyaXB0Ol0pOgorICAg
ICAgICAoLVtKU1ZhbHVlIHZhbHVlRm9yUHJvcGVydHk6XSk6IERlbGV0ZWQuCisgICAgICAgICgt
W0pTVmFsdWUgc2V0VmFsdWU6Zm9yUHJvcGVydHk6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pT
VmFsdWUgZGVsZXRlUHJvcGVydHk6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmFsdWUgaGFz
UHJvcGVydHk6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmFsdWUgZGVmaW5lUHJvcGVydHk6
ZGVzY3JpcHRvcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5jcHA6Cisg
ICAgICAgIChKU1ZhbHVlR2V0VHlwZSk6CisgICAgICAgIChKU1ZhbHVlSXNTeW1ib2wpOgorICAg
ICAgICAoSlNWYWx1ZU1ha2VTeW1ib2wpOgorICAgICAgICAqIEFQSS9KU1ZhbHVlUmVmLmg6Cisg
ICAgICAgICogQVBJL1dlYktpdEF2YWlsYWJpbGl0eS5oOgorICAgICAgICAqIEFQSS90ZXN0cy9D
dXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5tbToKKyAgICAgICAgKiBBUEkvdGVzdHMv
Q3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmM6CisgICAgICAgICogQVBJL3Rlc3RzL0RhdGVU
ZXN0cy5tbToKKyAgICAgICAgKiBBUEkvdGVzdHMvSlNFeHBvcnRUZXN0cy5tbToKKyAgICAgICAg
KiBBUEkvdGVzdHMvSlNOb2RlLmM6CisgICAgICAgICogQVBJL3Rlc3RzL0pTTm9kZUxpc3QuYzoK
KyAgICAgICAgKiBBUEkvdGVzdHMvTm9kZS5jOgorICAgICAgICAqIEFQSS90ZXN0cy9Ob2RlTGlz
dC5jOgorICAgICAgICAqIEFQSS90ZXN0cy9taW5pZG9tLmM6CisgICAgICAgICogQVBJL3Rlc3Rz
L3Rlc3RhcGkuYzoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBp
LmNwcDogQWRkZWQuCisgICAgICAgIChBUElTdHJpbmc6OkFQSVN0cmluZyk6CisgICAgICAgIChB
UElTdHJpbmc6On5BUElTdHJpbmcpOgorICAgICAgICAoQVBJU3RyaW5nOjpvcGVyYXRvciBKU1N0
cmluZ1JlZik6CisgICAgICAgIChBUElDb250ZXh0OjpBUElDb250ZXh0KToKKyAgICAgICAgKEFQ
SUNvbnRleHQ6On5BUElDb250ZXh0KToKKyAgICAgICAgKEFQSUNvbnRleHQ6Om9wZXJhdG9yIEpT
R2xvYmFsQ29udGV4dFJlZik6CisgICAgICAgIChBUElWZWN0b3I6OkFQSVZlY3Rvcik6CisgICAg
ICAgIChBUElWZWN0b3I6On5BUElWZWN0b3IpOgorICAgICAgICAoQVBJVmVjdG9yOjphcHBlbmQp
OgorICAgICAgICAodGVzdENBUElWaWFDcHApOgorICAgICAgICAoVGVzdEFQSTo6ZXZhbHVhdGVT
Y3JpcHQpOgorICAgICAgICAoVGVzdEFQSTo6Y2FsbEZ1bmN0aW9uKToKKyAgICAgICAgKFRlc3RB
UEk6OmZ1bmN0aW9uUmV0dXJuc1RydWUpOgorICAgICAgICAoVGVzdEFQSTo6Y2hlY2spOgorICAg
ICAgICAoVGVzdEFQSTo6Y2hlY2tKU0FuZEFQSU1hdGNoKToKKyAgICAgICAgKFRlc3RBUEk6Omlu
dGVyZXN0aW5nT2JqZWN0cyk6CisgICAgICAgIChUZXN0QVBJOjppbnRlcmVzdGluZ0tleXMpOgor
ICAgICAgICAoVGVzdEFQSTo6cnVuKToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5tbToK
KyAgICAgICAgKHRlc3RPYmplY3RpdmVDQVBJTWFpbik6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjb25maWcuaDoKKyAgICAg
ICAgKiBwb3N0cHJvY2Vzcy1oZWFkZXJzLnNoOgorICAgICAgICAqIHNoZWxsL0NNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIHRlc3RtZW0vdGVzdG1lbS5tbToKKwogMjAxOC0wNy0yNSAgQW5keSBW
YW5XYWdvbmVyICA8YW5keUB2YW53YWdvbmVyLmZhbWlseT4KIAogICAgICAgICBbSU5UTF0gQ2Fs
bCBUeXBlZCBBcnJheSBlbGVtZW50cyB0b0xvY2FsZVN0cmluZyB3aXRoIGxvY2FsZSBhbmQgb3B0
aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhc3QuaAppbmRleCAyYzIyOTc1ZGM3MTQwOTVh
MTFlY2I2NjkxYmYwZjdmOTUxYWJmZDAxLi40OTFiYjhhNTUxYmE5ZWM4NDU4MDc4NWI0YjMzNTAy
YTg3ODYyZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhc3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhc3QuaApAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSGVhcENlbGxJbmxp
bmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VQcml2YXRlLmgKaW5kZXggMTM3NTk0OTcyNzVlNThiZWIw
YzEyMjEzNTVmOWZiZWQ0M2QzYjFhNS4uYjZjOTIwNGM0Y2JkNzJjNGY3YzlmNmExZjU0Y2Q1ZDM0
MTU2ZDE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VQcml2
YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VQcml2YXRlLmgKQEAg
LTQzLDcgKzQzLDcgQEAgb3ducyBhIGxhcmdlIG5vbi1HQyBtZW1vcnkgcmVnaW9uLiBDYWxsaW5n
IHRoaXMgZnVuY3Rpb24gd2lsbCBlbmNvdXJhZ2UgdGhlCiBnYXJiYWdlIGNvbGxlY3RvciB0byBj
b2xsZWN0IHNvb24sIGhvcGluZyB0byByZWNsYWltIHRoYXQgbGFyZ2Ugbm9uLUdDIG1lbW9yeQog
cmVnaW9uLgogKi8KLUpTX0VYUE9SVCB2b2lkIEpTUmVwb3J0RXh0cmFNZW1vcnlDb3N0KEpTQ29u
dGV4dFJlZiBjdHgsIHNpemVfdCBzaXplKSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VY
UE9SVCB2b2lkIEpTUmVwb3J0RXh0cmFNZW1vcnlDb3N0KEpTQ29udGV4dFJlZiBjdHgsIHNpemVf
dCBzaXplKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogSlNf
RVhQT1JUIHZvaWQgSlNEaXNhYmxlR0NUaW1lcih2b2lkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0LmgKaW5kZXggMTk0ZTM1MmJmZTdhZTc1ZjIzNThjZWU2M2Q0NDhmZTFmYTI0
ZDM4Mi4uODljODdmOWUyZTFmZjFiMTcxYjFlYmJhOGM0NTIxNTlmNDRmNDc1YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5oCkBAIC03OCw3ICs3OCw3IEBAIE5TX0NMQVNTX0FW
QUlMQUJMRSgxMF85LCA3XzApCiBAcGFyYW0gc291cmNlVVJMIEEgVVJMIGZvciB0aGUgc2NyaXB0
J3Mgc291cmNlIGZpbGUuIFVzZWQgYnkgZGVidWdnZXJzIGFuZCB3aGVuIHJlcG9ydGluZyBleGNl
cHRpb25zLiBUaGlzIHBhcmFtZXRlciBpcyBpbmZvcm1hdGl2ZSBvbmx5OiBpdCBkb2VzIG5vdCBj
aGFuZ2UgdGhlIGJlaGF2aW9yIG9mIHRoZSBzY3JpcHQuCiBAcmVzdWx0IFRoZSBsYXN0IHZhbHVl
IGdlbmVyYXRlZCBieSB0aGUgc2NyaXB0LgogKi8KLS0gKEpTVmFsdWUgKilldmFsdWF0ZVNjcmlw
dDooTlNTdHJpbmcgKilzY3JpcHQgd2l0aFNvdXJjZVVSTDooTlNVUkwgKilzb3VyY2VVUkwgTlNf
QVZBSUxBQkxFKDEwXzEwLCA4XzApOworLSAoSlNWYWx1ZSAqKWV2YWx1YXRlU2NyaXB0OihOU1N0
cmluZyAqKXNjcmlwdCB3aXRoU291cmNlVVJMOihOU1VSTCAqKXNvdXJjZVVSTCBKU0NfQVBJX0FW
QUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qIQogQG1ldGhvZGdyb3VwIENh
bGxiYWNrIEFjY2Vzc29ycwpAQCAtMTAxLDcgKzEwMSw3IEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgx
MF85LCA3XzApCiAgYSBjYWxsYmFjayBmcm9tIEphdmFTY3JpcHQgdGhpcyBtZXRob2Qgd2lsbCBy
ZXR1cm4gbmlsLgogQHJlc3VsdCBUaGUgY3VycmVudGx5IGV4ZWN1dGluZyBKYXZhU2NyaXB0IGZ1
bmN0aW9uIG9yIG5pbCBpZiB0aGVyZSBpc24ndCBvbmUuCiAqLwotKyAoSlNWYWx1ZSAqKWN1cnJl
bnRDYWxsZWUgTlNfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworKyAoSlNWYWx1ZSAqKWN1cnJlbnRD
YWxsZWUgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEK
IEBtZXRob2QKQEAgLTE3Niw3ICsxNzYsNyBAQCBOU19DTEFTU19BVkFJTEFCTEUoMTBfOSwgN18w
KQogQHByb3BlcnR5CiBAZGlzY3Vzc2lvbiBOYW1lIG9mIHRoZSBKU0NvbnRleHQuIEV4cG9zZWQg
d2hlbiByZW1vdGUgZGVidWdnaW5nIHRoZSBjb250ZXh0LgogKi8KLUBwcm9wZXJ0eSAoY29weSkg
TlNTdHJpbmcgKm5hbWUgTlNfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworQHByb3BlcnR5IChjb3B5
KSBOU1N0cmluZyAqbmFtZSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4w
KSk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHRQcml2YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFByaXZh
dGUuaAppbmRleCA3ZDFkMGNiZGJiNDhjMTcwZWE3NmQyYmQ2MmQ3MzBjMjAzOWQ2YTk0Li5mZjk2
MjJhZGRmNjBiN2MxMDM1N2RhY2NmMWM2ZjQxZWNiODYxZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFByaXZhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ29udGV4dFByaXZhdGUuaApAQCAtMzYsMTkgKzM2LDE5IEBACiBAcHJv
cGVydHkKIEBkaXNjdXNzaW9uIFJlbW90ZSBpbnNwZWN0aW9uIHNldHRpbmcgb2YgdGhlIEpTQ29u
dGV4dC4gRGVmYXVsdCB2YWx1ZSBpcyBZRVMuCiAqLwotQHByb3BlcnR5IChzZXR0ZXI9X3NldFJl
bW90ZUluc3BlY3Rpb25FbmFibGVkOikgQk9PTCBfcmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQgTlNf
QVZBSUxBQkxFKDEwXzEwLCA4XzApOworQHByb3BlcnR5IChzZXR0ZXI9X3NldFJlbW90ZUluc3Bl
Y3Rpb25FbmFibGVkOikgQk9PTCBfcmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQgSlNDX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEKIEBwcm9wZXJ0eQogQGRpc2N1
c3Npb24gU2V0IHdoZXRoZXIgb3Igbm90IHRoZSBuYXRpdmUgY2FsbCBzdGFjayBpcyBpbmNsdWRl
ZCB3aGVuIHJlcG9ydGluZyBleGNlcHRpb25zLiBEZWZhdWx0IHZhbHVlIGlzIFlFUy4KICovCi1A
cHJvcGVydHkgKHNldHRlcj1fc2V0SW5jbHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5n
RXhjZXB0aW9uczopIEJPT0wgX2luY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4
Y2VwdGlvbnMgTlNfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworQHByb3BlcnR5IChzZXR0ZXI9X3Nl
dEluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnM6KSBCT09MIF9p
bmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zIEpTQ19BUElfQVZB
SUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBAcHJvcGVydHkKIEBkaXNj
dXNzaW9uIFNldCB0aGUgcnVuIGxvb3AgdGhlIFdlYiBJbnNwZWN0b3IgZGVidWdnZXIgc2hvdWxk
IHVzZSB3aGVuIGV2YWx1YXRpbmcgSmF2YVNjcmlwdCBpbiB0aGUgSlNDb250ZXh0LgogKi8KLUBw
cm9wZXJ0eSAoc2V0dGVyPV9zZXREZWJ1Z2dlclJ1bkxvb3A6KSBDRlJ1bkxvb3BSZWYgX2RlYnVn
Z2VyUnVuTG9vcCBOU19BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitAcHJvcGVydHkgKHNldHRlcj1f
c2V0RGVidWdnZXJSdW5Mb29wOikgQ0ZSdW5Mb29wUmVmIF9kZWJ1Z2dlclJ1bkxvb3AgSlNDX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiBAZW5kCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oCmluZGV4IGUxNWNhZTU3NTc2NDhhMmZjOGVh
MjE3MjFlZWY1MzViYWQzNTdiMjcuLjI4ZDBhNjdlOWFlMzI2MjExYWQ5NGRlMzZjNTI2NGE3NTQy
ZmFmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVm
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuaApAQCAtNTMs
NyArNTMsNyBAQCBleHRlcm4gIkMiIHsKICBKU0NvbnRleHRHcm91cCdzIHJ1biBsb29wIG9uY2Ug
aXQgaGFzIGJlZW4gY3JlYXRlZC4KIEByZXN1bHQgVGhlIGNyZWF0ZWQgSlNDb250ZXh0R3JvdXAu
CiAqLwotSlNfRVhQT1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdyb3VwQ3JlYXRlKHZv
aWQpIENGX0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQT1JUIEpTQ29udGV4dEdyb3VwUmVm
IEpTQ29udGV4dEdyb3VwQ3JlYXRlKHZvaWQpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42
KSwgaW9zKDcuMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtNjEsMTQgKzYxLDE0IEBAIEpTX0VY
UE9SVCBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHcm91cENyZWF0ZSh2b2lkKSBDRl9BVkFJ
TEFCTEUoMTBfNiwgN18wKTsKIEBwYXJhbSBncm91cCBUaGUgSlNDb250ZXh0R3JvdXAgdG8gcmV0
YWluLgogQHJlc3VsdCBBIEpTQ29udGV4dEdyb3VwIHRoYXQgaXMgdGhlIHNhbWUgYXMgZ3JvdXAu
CiAqLwotSlNfRVhQT1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdyb3VwUmV0YWluKEpT
Q29udGV4dEdyb3VwUmVmIGdyb3VwKSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9S
VCBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHcm91cFJldGFpbihKU0NvbnRleHRHcm91cFJl
ZiBncm91cCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7CiAKIC8q
IQogQGZ1bmN0aW9uCiBAYWJzdHJhY3QgUmVsZWFzZXMgYSBKYXZhU2NyaXB0IGNvbnRleHQgZ3Jv
dXAuCiBAcGFyYW0gZ3JvdXAgVGhlIEpTQ29udGV4dEdyb3VwIHRvIHJlbGVhc2UuCiAqLwotSlNf
RVhQT1JUIHZvaWQgSlNDb250ZXh0R3JvdXBSZWxlYXNlKEpTQ29udGV4dEdyb3VwUmVmIGdyb3Vw
KSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCB2b2lkIEpTQ29udGV4dEdyb3Vw
UmVsZWFzZShKU0NvbnRleHRHcm91cFJlZiBncm91cCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjYpLCBpb3MoNy4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC04Myw3ICs4Myw3IEBAIEpT
X0VYUE9SVCB2b2lkIEpTQ29udGV4dEdyb3VwUmVsZWFzZShKU0NvbnRleHRHcm91cFJlZiBncm91
cCkgQ0ZfQVZBSUxBQkxFKDEwXzYsCiAgTlVMTCB0byB1c2UgdGhlIGRlZmF1bHQgb2JqZWN0IGNs
YXNzLgogQHJlc3VsdCBBIEpTR2xvYmFsQ29udGV4dCB3aXRoIGEgZ2xvYmFsIG9iamVjdCBvZiBj
bGFzcyBnbG9iYWxPYmplY3RDbGFzcy4KICovCi1KU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVm
IEpTR2xvYmFsQ29udGV4dENyZWF0ZShKU0NsYXNzUmVmIGdsb2JhbE9iamVjdENsYXNzKSBDRl9B
VkFJTEFCTEUoMTBfNSwgN18wKTsKK0pTX0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgSlNHbG9i
YWxDb250ZXh0Q3JlYXRlKEpTQ2xhc3NSZWYgZ2xvYmFsT2JqZWN0Q2xhc3MpIEpTQ19BUElfQVZB
SUxBQkxFKG1hY29zeCgxMC41KSwgaW9zKDcuMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtOTcs
NyArOTcsNyBAQCBKU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpTR2xvYmFsQ29udGV4dENy
ZWF0ZShKU0NsYXNzUmVmIGdsb2JhbE9iamVjdENsYXNzKQogQHJlc3VsdCBBIEpTR2xvYmFsQ29u
dGV4dCB3aXRoIGEgZ2xvYmFsIG9iamVjdCBvZiBjbGFzcyBnbG9iYWxPYmplY3RDbGFzcyBhbmQg
YSBjb250ZXh0CiAgZ3JvdXAgZXF1YWwgdG8gZ3JvdXAuCiAqLwotSlNfRVhQT1JUIEpTR2xvYmFs
Q29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKEpTQ29udGV4dEdyb3VwUmVm
IGdyb3VwLCBKU0NsYXNzUmVmIGdsb2JhbE9iamVjdENsYXNzKSBDRl9BVkFJTEFCTEUoMTBfNiwg
N18wKTsKK0pTX0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgSlNHbG9iYWxDb250ZXh0Q3JlYXRl
SW5Hcm91cChKU0NvbnRleHRHcm91cFJlZiBncm91cCwgSlNDbGFzc1JlZiBnbG9iYWxPYmplY3RD
bGFzcykgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7CiAKIC8qIQog
QGZ1bmN0aW9uCkBAIC0xMjgsNyArMTI4LDcgQEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTQ29u
dGV4dEdldEdsb2JhbE9iamVjdChKU0NvbnRleHRSZWYgY3R4KTsKIEBwYXJhbSBjdHggVGhlIEpT
Q29udGV4dCB3aG9zZSBncm91cCB5b3Ugd2FudCB0byBnZXQuCiBAcmVzdWx0IGN0eCdzIGdyb3Vw
LgogKi8KLUpTX0VYUE9SVCBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHZXRHcm91cChKU0Nv
bnRleHRSZWYgY3R4KSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCBKU0NvbnRl
eHRHcm91cFJlZiBKU0NvbnRleHRHZXRHcm91cChKU0NvbnRleHRSZWYgY3R4KSBKU0NfQVBJX0FW
QUlMQUJMRShtYWNvc3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTEz
Niw3ICsxMzYsNyBAQCBKU19FWFBPUlQgSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R2V0R3Jv
dXAoSlNDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEwXwogQHBhcmFtIGN0eCBUaGUgSlND
b250ZXh0IHdob3NlIGdsb2JhbCBjb250ZXh0IHlvdSB3YW50IHRvIGdldC4KIEByZXN1bHQgY3R4
J3MgZ2xvYmFsIGNvbnRleHQuCiAqLwotSlNfRVhQT1JUIEpTR2xvYmFsQ29udGV4dFJlZiBKU0Nv
bnRleHRHZXRHbG9iYWxDb250ZXh0KEpTQ29udGV4dFJlZiBjdHgpIENGX0FWQUlMQUJMRSgxMF83
LCA3XzApOworSlNfRVhQT1JUIEpTR2xvYmFsQ29udGV4dFJlZiBKU0NvbnRleHRHZXRHbG9iYWxD
b250ZXh0KEpTQ29udGV4dFJlZiBjdHgpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC43KSwg
aW9zKDcuMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTQ2LDcgKzE0Niw3IEBAIEpTX0VYUE9S
VCBKU0dsb2JhbENvbnRleHRSZWYgSlNDb250ZXh0R2V0R2xvYmFsQ29udGV4dChKU0NvbnRleHRS
ZWYgY3R4KSBDRl9BVkFJCiBAZGlzY3Vzc2lvbiBBIEpTR2xvYmFsQ29udGV4dCdzIG5hbWUgaXMg
ZXhwb3NlZCBmb3IgcmVtb3RlIGRlYnVnZ2luZyB0byBtYWtlIGl0CiBlYXNpZXIgdG8gaWRlbnRp
ZnkgdGhlIGNvbnRleHQgeW91IHdvdWxkIGxpa2UgdG8gYXR0YWNoIHRvLgogKi8KLUpTX0VYUE9S
VCBKU1N0cmluZ1JlZiBKU0dsb2JhbENvbnRleHRDb3B5TmFtZShKU0dsb2JhbENvbnRleHRSZWYg
Y3R4KSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitKU19FWFBPUlQgSlNTdHJpbmdSZWYgSlNH
bG9iYWxDb250ZXh0Q29weU5hbWUoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkgSlNDX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTU0
LDcgKzE1NCw3IEBAIEpTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU0dsb2JhbENvbnRleHRDb3B5TmFt
ZShKU0dsb2JhbENvbnRleHRSZWYgY3R4KSBDRl9BVkFJTEFCCiBAcGFyYW0gY3R4IFRoZSBKU0ds
b2JhbENvbnRleHQgdGhhdCB5b3Ugd2FudCB0byBuYW1lLgogQHBhcmFtIG5hbWUgVGhlIHJlbW90
ZSBkZWJ1Z2dpbmcgbmFtZSB0byBzZXQgb24gY3R4LgogKi8KLUpTX0VYUE9SVCB2b2lkIEpTR2xv
YmFsQ29udGV4dFNldE5hbWUoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgbmFt
ZSkgQ0ZfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxDb250
ZXh0U2V0TmFtZShKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBuYW1lKSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSk7CiAKICNpZmRlZiBfX2NwbHVz
cGx1cwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRS
ZWZJbnRlcm5hbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWZJbnRl
cm5hbC5oCmluZGV4IDc5ZDdlYjZmMzllN2UyY2E4ZjRhOWI5NGYyNzIyNmRiMmY3MDUyOTUuLjlk
NGYxOGEyMjk1MDcyNmQ5MTAyZDI1MGI1Y2FhMGNlN2FkNWM3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmSW50ZXJuYWwuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZkludGVybmFsLmgKQEAgLTQyLDcgKzQyLDcg
QEAgZXh0ZXJuICJDIiB7CiBAYWJzdHJhY3QgR2V0cyB0aGUgcnVuIGxvb3AgdXNlZCBieSB0aGUg
V2ViIEluc3BlY3RvciBkZWJ1Z2dlciB3aGVuIGV2YWx1YXRpbmcgSmF2YVNjcmlwdCBpbiB0aGlz
IGNvbnRleHQuCiBAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgd2hvc2Ugc2V0dGluZyB5
b3Ugd2FudCB0byBnZXQuCiAqLwotSlNfRVhQT1JUIENGUnVuTG9vcFJlZiBKU0dsb2JhbENvbnRl
eHRHZXREZWJ1Z2dlclJ1bkxvb3AoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxF
KDEwXzEwLCA4XzApOworSlNfRVhQT1JUIENGUnVuTG9vcFJlZiBKU0dsb2JhbENvbnRleHRHZXRE
ZWJ1Z2dlclJ1bkxvb3AoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkgSlNDX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtNTAsNyArNTAs
NyBAQCBKU19FWFBPUlQgQ0ZSdW5Mb29wUmVmIEpTR2xvYmFsQ29udGV4dEdldERlYnVnZ2VyUnVu
TG9vcChKU0dsb2JhbENvbnRleHRSZWYgY3R4KQogQHBhcmFtIGN0eCBUaGUgSlNHbG9iYWxDb250
ZXh0IHRoYXQgeW91IHdhbnQgdG8gY2hhbmdlLgogQHBhcmFtIHJ1bkxvb3AgVGhlIG5ldyB2YWx1
ZSBvZiB0aGUgc2V0dGluZyBmb3IgdGhlIGNvbnRleHQuCiAqLwotSlNfRVhQT1JUIHZvaWQgSlNH
bG9iYWxDb250ZXh0U2V0RGVidWdnZXJSdW5Mb29wKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIENG
UnVuTG9vcFJlZiBydW5Mb29wKSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitKU19FWFBPUlQg
dm9pZCBKU0dsb2JhbENvbnRleHRTZXREZWJ1Z2dlclJ1bkxvb3AoSlNHbG9iYWxDb250ZXh0UmVm
IGN0eCwgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4x
MCksIGlvcyg4LjApKTsKICNlbmRpZgogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmUHJpdmF0ZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWZQcml2YXRlLmgKaW5kZXggMTk2MDRlYTc0
OTM3ZWZkYTk2N2NlM2RmNTc3N2QyYTE1MTRkYThkYy4uZWM2NzZkOGM4NzE0ODNmODNmY2MzYzU2
NGI1NTRlODE3MDM3MjJlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NvbnRleHRSZWZQcml2YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHRSZWZQcml2YXRlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgZXh0ZXJuICJDIiB7CiBAcGFyYW0g
Y3R4IFRoZSBKU0NvbnRleHQgd2hvc2UgYmFja3RyYWNlIHlvdSB3YW50IHRvIGdldAogQHJlc3Vs
dCBBIHN0cmluZyBjb250YWluaW5nIHRoZSBiYWNrdHJhY2UKICovCi1KU19FWFBPUlQgSlNTdHJp
bmdSZWYgSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKEpTQ29udGV4dFJlZiBjdHgsIHVuc2lnbmVk
IG1heFN0YWNrU2l6ZSkgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdfMCk7CitKU19FWFBPUlQgSlNTdHJp
bmdSZWYgSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKEpTQ29udGV4dFJlZiBjdHgsIHVuc2lnbmVk
IG1heFN0YWNrU2l6ZSkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7
CiAgICAgCiAKIC8qISAKQEAgLTg1LDE0ICs4NSwxNCBAQCB0eXBlZGVmIGJvb2wKICBuZWVkIHRv
IGNhbGwgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGltaXQgYmVmb3JlIHlvdSBzdGFy
dCBleGVjdXRpbmcKICBhbnkgc2NyaXB0cy4KICovCi1KU19FWFBPUlQgdm9pZCBKU0NvbnRleHRH
cm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdChKU0NvbnRleHRHcm91cFJlZiBncm91cCwgZG91Ymxl
IGxpbWl0LCBKU1Nob3VsZFRlcm1pbmF0ZUNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0
KSBDRl9BVkFJTEFCTEUoMTBfNiwgN18wKTsKK0pTX0VYUE9SVCB2b2lkIEpTQ29udGV4dEdyb3Vw
U2V0RXhlY3V0aW9uVGltZUxpbWl0KEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwLCBkb3VibGUgbGlt
aXQsIEpTU2hvdWxkVGVybWluYXRlQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpIEpT
Q19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9zKDcuMCkpOwogCiAvKiEKIEBmdW5jdGlv
bgogQGFic3RyYWN0IENsZWFycyB0aGUgc2NyaXB0IGV4ZWN1dGlvbiB0aW1lIGxpbWl0LgogQHBh
cmFtIGdyb3VwIFRoZSBKYXZhU2NyaXB0IGNvbnRleHQgZ3JvdXAgdGhhdCB0aGUgdGltZSBsaW1p
dCBpcyBjbGVhcmVkIG9uLgogKi8KLUpTX0VYUE9SVCB2b2lkIEpTQ29udGV4dEdyb3VwQ2xlYXJF
eGVjdXRpb25UaW1lTGltaXQoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXApIENGX0FWQUlMQUJMRSgx
MF82LCA3XzApOworSlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3JvdXBDbGVhckV4ZWN1dGlvblRp
bWVMaW1pdChKU0NvbnRleHRHcm91cFJlZiBncm91cCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjYpLCBpb3MoNy4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC0xMDEsNyArMTAxLDcgQEAg
SlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3JvdXBDbGVhckV4ZWN1dGlvblRpbWVMaW1pdChKU0Nv
bnRleHRHcm91cFJlZiBncm91cCkgQ0YKIEByZXN1bHQgVGhlIHZhbHVlIG9mIHRoZSBzZXR0aW5n
LCB0cnVlIGlmIHJlbW90ZSBpbnNwZWN0aW9uIGlzIGVuYWJsZWQsIG90aGVyd2lzZSBmYWxzZS4K
IEBkaXNjdXNzaW9uIFJlbW90ZSBpbnNwZWN0aW9uIGlzIHRydWUgYnkgZGVmYXVsdC4KICovCi1K
U19FWFBPUlQgYm9vbCBKU0dsb2JhbENvbnRleHRHZXRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZChK
U0dsb2JhbENvbnRleHRSZWYgY3R4KSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CitKU19FWFBP
UlQgYm9vbCBKU0dsb2JhbENvbnRleHRHZXRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZChKU0dsb2Jh
bENvbnRleHRSZWYgY3R4KSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4w
KSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC0xMDksNyArMTA5LDcgQEAgSlNfRVhQT1JUIGJvb2wg
SlNHbG9iYWxDb250ZXh0R2V0UmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQoSlNHbG9iYWxDb250ZXh0
UmVmIGN0eCkKIEBwYXJhbSBjdHggVGhlIEpTR2xvYmFsQ29udGV4dCB0aGF0IHlvdSB3YW50IHRv
IGNoYW5nZS4KIEBwYXJhbSBlbmFibGVkIFRoZSBuZXcgcmVtb3RlIGluc3BlY3Rpb24gZW5hYmxl
ZCBzZXR0aW5nIGZvciB0aGUgY29udGV4dC4KICovCi1KU19FWFBPUlQgdm9pZCBKU0dsb2JhbENv
bnRleHRTZXRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZChKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBi
b29sIGVuYWJsZWQpIENGX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsgICAgCitKU19FWFBPUlQgdm9p
ZCBKU0dsb2JhbENvbnRleHRTZXRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZChKU0dsb2JhbENvbnRl
eHRSZWYgY3R4LCBib29sIGVuYWJsZWQpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCks
IGlvcyg4LjApKTsgICAgCiAKIC8qIQogQGZ1bmN0aW9uCkBAIC0xMTgsNyArMTE4LDcgQEAgSlNf
RVhQT1JUIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0UmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQoSlNH
bG9iYWxDb250ZXh0UmVmIGN0eCwKIEByZXN1bHQgVGhlIHZhbHVlIG9mIHRoZSBzZXR0aW5nLCB0
cnVlIGlmIHJlbW90ZSBpbnNwZWN0aW9uIGlzIGVuYWJsZWQsIG90aGVyd2lzZSBmYWxzZS4KIEBk
aXNjdXNzaW9uIFRoaXMgc2V0dGluZyBpcyB0cnVlIGJ5IGRlZmF1bHQuCiAqLwotSlNfRVhQT1JU
IGJvb2wgSlNHbG9iYWxDb250ZXh0R2V0SW5jbHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0
aW5nRXhjZXB0aW9ucyhKU0dsb2JhbENvbnRleHRSZWYgY3R4KSBDRl9BVkFJTEFCTEUoMTBfMTAs
IDhfMCk7CitKU19FWFBPUlQgYm9vbCBKU0dsb2JhbENvbnRleHRHZXRJbmNsdWRlc05hdGl2ZUNh
bGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpIEpT
Q19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKTsKIAogLyohCiBAZnVuY3Rp
b24KQEAgLTEyNiw3ICsxMjYsNyBAQCBKU19FWFBPUlQgYm9vbCBKU0dsb2JhbENvbnRleHRHZXRJ
bmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zKAogQHBhcmFtIGN0
eCBUaGUgSlNHbG9iYWxDb250ZXh0IHRoYXQgeW91IHdhbnQgdG8gY2hhbmdlLgogQHBhcmFtIGlu
Y2x1ZGVzTmF0aXZlQ2FsbFN0YWNrIFRoZSBuZXcgdmFsdWUgb2YgdGhlIHNldHRpbmcgZm9yIHRo
ZSBjb250ZXh0LgogKi8KLUpTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldEluY2x1ZGVz
TmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMoSlNHbG9iYWxDb250ZXh0UmVm
IGN0eCwgYm9vbCBpbmNsdWRlc05hdGl2ZUNhbGxTdGFjaykgQ0ZfQVZBSUxBQkxFKDEwXzEwLCA4
XzApOworSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0SW5jbHVkZXNOYXRpdmVDYWxs
U3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucyhKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBib29s
IGluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTAp
LCBpb3MoOC4wKSk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5oCmluZGV4IDAxMDczZmFkOTdlNzBiNzZiZDZiNjZhMzcz
M2FmMjYxY2M1Mjc0OWMuLjQxODA3NGJjNDdkNjZjMTU4NDA3ZmU1ODM4MzY5YTUxNWMwMzM1ZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLmgKQEAgLTU3LDcg
KzU3LDcgQEAgTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzksIDdfMCkKIEByZXN1bHQgVGhlIG5ldyBK
U01hbmFnZWRWYWx1ZS4KICovCiArIChKU01hbmFnZWRWYWx1ZSAqKW1hbmFnZWRWYWx1ZVdpdGhW
YWx1ZTooSlNWYWx1ZSAqKXZhbHVlOwotKyAoSlNNYW5hZ2VkVmFsdWUgKiltYW5hZ2VkVmFsdWVX
aXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBhbmRPd25lcjooaWQpb3duZXIgTlNfQVZBSUxBQkxF
KDEwXzEwLCA4XzApOworKyAoSlNNYW5hZ2VkVmFsdWUgKiltYW5hZ2VkVmFsdWVXaXRoVmFsdWU6
KEpTVmFsdWUgKil2YWx1ZSBhbmRPd25lcjooaWQpb3duZXIgSlNDX0FQSV9BVkFJTEFCTEUobWFj
b3N4KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEKIEBtZXRob2QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU09iamVjdFJlZi5jcHAKaW5kZXggNTY2YjczNjJmMWI1ZGZlNDllZjNkOTZjZjU3
MjRlZjQ4NzhmYmY4MS4uNTQ1MWEyZjlhNTYxMzQ3YTkyNTgxZDVmM2U0NDI0NjI5NjlkNDBmZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKQEAgLTM2Niw2ICsz
NjYsMTAwIEBAIHZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09i
amVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlCiAgICAgaGFuZGxlRXhjZXB0aW9uSWZO
ZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbik7CiB9CiAKK2Jvb2wgSlNPYmplY3RIYXNQcm9w
ZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYg
a2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwor
ICAgIElkZW50aWZpZXIgaWRlbnQgPSB0b0pTKGV4ZWMsIGtleSkudG9Qcm9wZXJ0eUtleShleGVj
KTsKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlv
bikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpOwor
ICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK0pTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9wZXJ0eUtleShK
U0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYga2V5LCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0xv
Y2tIb2xkZXIgbG9ja2VyKHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09Q
RSh2bSk7CisKKyAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CisgICAgSWRl
bnRpZmllciBpZGVudCA9IHRvSlMoZXhlYywga2V5KS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAg
IGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhjZXB0aW9uKSA9PSBF
eGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IEpTVmFsdWUganNWYWx1ZSA9IGpzT2JqZWN0LT5nZXQoZXhlYywgaWRlbnQpOworICAgIGhhbmRs
ZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pOworICAgIHJldHVybiB0
b1JlZihleGVjLCBqc1ZhbHVlKTsKK30KKwordm9pZCBKU09iamVjdFNldFByb3BlcnR5S2V5KEpT
Q29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBrZXksIEpTVmFs
dWVSZWYgdmFsdWUsIEpTUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoIWN0eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pT
KGN0eCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2Vy
KHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisKKyAgICBK
U09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CisgICAgSlNWYWx1ZSBqc1ZhbHVlID0g
dG9KUyhleGVjLCB2YWx1ZSk7CisKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gdG9KUyhleGVjLCBr
ZXkpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVk
KHNjb3BlLCBleGVjLCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCisg
ICAgICAgIHJldHVybjsKKworICAgIGJvb2wgZG9lc05vdEhhdmVQcm9wZXJ0eSA9IGF0dHJpYnV0
ZXMgJiYgIWpzT2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBpZGVudCk7CisgICAgaWYgKExJS0VM
WSghc2NvcGUuZXhjZXB0aW9uKCkpKSB7CisgICAgICAgIGlmIChkb2VzTm90SGF2ZVByb3BlcnR5
KSB7CisgICAgICAgICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzYyhqc1ZhbHVlLCBhdHRyaWJ1
dGVzKTsKKyAgICAgICAgICAgIGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blBy
b3BlcnR5KGpzT2JqZWN0LCBleGVjLCBpZGVudCwgZGVzYywgZmFsc2UpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoanNPYmplY3QpOworICAgICAg
ICAgICAganNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KGpzT2JqZWN0LCBleGVjLCBpZGVu
dCwganNWYWx1ZSwgc2xvdCk7CisgICAgICAgIH0KKyAgICB9CisgICAgaGFuZGxlRXhjZXB0aW9u
SWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbik7Cit9CisKK2Jvb2wgSlNPYmplY3REZWxl
dGVQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFs
dWVSZWYga2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKCFjdHgpIHsKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfQ0FUQ0hfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmpl
Y3QpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSB0b0pTKGV4ZWMsIGtleSkudG9Qcm9wZXJ0eUtl
eShleGVjKTsKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4
Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxl
dGVQcm9wZXJ0eShqc09iamVjdCwgZXhlYywgaWRlbnQpOworICAgIGhhbmRsZUV4Y2VwdGlvbklm
TmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
IEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoSlNDb250ZXh0UmVmIGN0eCwg
SlNPYmplY3RSZWYgb2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pCiB7CiAgICAgaWYgKCFjdHgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuaAppbmRleCA5NWQ1M2I3ZjRlNThlOTZmMGNiYzMxNTk1YWY5YzQ2MTk3OGFhNDNk
Li5kYjU1NjlhNmNiZDBlZTBiN2JjYmZjYzNlMjkyZjUzMjk3NWU2NzZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oCkBAIC00NDEsNyArNDQxLDcgQEAgSlNfRVhQT1JU
IEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUNvbnN0cnVjdG9yKEpTQ29udGV4dFJlZiBjdHgsIEpT
Q2xhc3NSZWYganNDbGEKICBAZGlzY3Vzc2lvbiBUaGUgYmVoYXZpb3Igb2YgdGhpcyBmdW5jdGlv
biBkb2VzIG5vdCBleGFjdGx5IG1hdGNoIHRoZSBiZWhhdmlvciBvZiB0aGUgYnVpbHQtaW4gQXJy
YXkgY29uc3RydWN0b3IuIFNwZWNpZmljYWxseSwgaWYgb25lIGFyZ3VtZW50IAogIGlzIHN1cHBs
aWVkLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gYXJyYXkgd2l0aCBvbmUgZWxlbWVudC4KICAq
LwotSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUFycmF5KEpTQ29udGV4dFJlZiBj
dHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNfRVhQT1JU
IEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUFycmF5KEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBh
cmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC42KSwgaW9zKDcuMCkpOwogCiAv
KiEKICBAZnVuY3Rpb24KQEAgLTQ1Miw3ICs0NTIsNyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYg
SlNPYmplY3RNYWtlQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQs
CiAgQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRv
IHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJl
IHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0IEEgSlNPYmplY3QgdGhhdCBpcyBhIERh
dGUuCiAgKi8KLUpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VEYXRlKEpTQ29udGV4
dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50
c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF82LCA3XzApOworSlNf
RVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZURhdGUoSlNDb250ZXh0UmVmIGN0eCwgc2l6
ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjYpLCBpb3MoNy4wKSk7
CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtNDYzLDcgKzQ2Myw3IEBAIEpTX0VYUE9SVCBKU09iamVj
dFJlZiBKU09iamVjdE1ha2VEYXRlKEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjCiAgQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdo
aWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5v
dCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0IEEgSlNPYmplY3QgdGhhdCBp
cyBhIEVycm9yLgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRXJyb3Io
SlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzYsIDdf
MCk7CitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRXJyb3IoSlNDb250ZXh0UmVm
IGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjYpLCBp
b3MoNy4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtNDc0LDcgKzQ3NCw3IEBAIEpTX0VYUE9S
VCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VFcnJvcihKU0NvbnRleHRSZWYgY3R4LCBzaXplX3Qg
YXJndW1lbnRDb3VudCwKICBAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVS
ZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5
b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1bHQgQSBKU09iamVj
dCB0aGF0IGlzIGEgUmVnRXhwLgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RN
YWtlUmVnRXhwKEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBK
U1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJM
RSgxMF82LCA3XzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVJlZ0V4cChK
U0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNv
c3goMTAuNiksIGlvcyg3LjApKTsKIAogLyohCiBAZnVuY3Rpb24KQEAgLTUzNiw5ICs1MzYsOSBA
QCBKU19FWFBPUlQgSlNWYWx1ZVJlZiBKU09iamVjdEdldFByb3BlcnR5KEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSgogQHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRl
eHQgdG8gdXNlLgogQHBhcmFtIG9iamVjdCBUaGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91
IHdhbnQgdG8gc2V0LgogQHBhcmFtIHByb3BlcnR5TmFtZSBBIEpTU3RyaW5nIGNvbnRhaW5pbmcg
dGhlIHByb3BlcnR5J3MgbmFtZS4KLUBwYXJhbSB2YWx1ZSBBIEpTVmFsdWUgdG8gdXNlIGFzIHRo
ZSBwcm9wZXJ0eSdzIHZhbHVlLgotQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1Zh
bHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwg
aWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KK0BwYXJhbSB2YWx1ZSBB
IEpTVmFsdWVSZWYgdG8gdXNlIGFzIHRoZSBwcm9wZXJ0eSdzIHZhbHVlLgogQHBhcmFtIGF0dHJp
YnV0ZXMgQSBsb2dpY2FsbHkgT1JlZCBzZXQgb2YgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgdG8gZ2l2
ZSB0byB0aGUgcHJvcGVydHkuCitAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFs
dWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBp
ZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogKi8KIEpTX0VYUE9SVCB2
b2lkIEpTT2JqZWN0U2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2Jq
ZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYgdmFsdWUsIEpTUHJvcGVy
dHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAKQEAgLTU1
Myw2ICs1NTMsNTQgQEAgSlNfRVhQT1JUIHZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eShKU0NvbnRl
eHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW4KICovCiBKU19FWFBPUlQgYm9v
bCBKU09iamVjdERlbGV0ZVByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9i
amVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwog
CisvKiEKK0BmdW5jdGlvbgorQGFic3RyYWN0IFRlc3RzIHdoZXRoZXIgYW4gb2JqZWN0IGhhcyBh
IGdpdmVuIHByb3BlcnR5IHVzaW5nIGEgSlNWYWx1ZVJlZiBhcyB0aGUgcHJvcGVydHkga2V5Lgor
QHBhcmFtIG9iamVjdCBUaGUgSlNPYmplY3QgdG8gdGVzdC4KK0BwYXJhbSBwcm9wZXJ0eUtleSBB
IEpTVmFsdWVSZWYgY29udGFpbmluZyB0aGUgcHJvcGVydHkga2V5IHRvIHVzZSB3aGVuIGxvb2tp
bmcgdXAgdGhlIHByb3BlcnR5LgorQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1Zh
bHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwg
aWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KK0ByZXN1bHQgdHJ1ZSBp
ZiB0aGUgb2JqZWN0IGhhcyBhIHByb3BlcnR5IHdob3NlIG5hbWUgbWF0Y2hlcyBwcm9wZXJ0eUtl
eSwgb3RoZXJ3aXNlIGZhbHNlLgorQGRpc2N1c3Npb24gVGhpcyBmdW5jdGlvbiBpcyB0aGUgc2Ft
ZSBhcyBwZXJmb3JtaW5nICJwcm9wZXJ0eUtleSBpbiBvYmplY3QiIGZyb20gSmF2YVNjcmlwdC4K
KyovCitKU19FWFBPUlQgYm9vbCBKU09iamVjdEhhc1Byb3BlcnR5S2V5KEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBwcm9wZXJ0eUtleSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goSlNDX01BQ19UQkEpLCBpb3Mo
SlNDX0lPU19UQkEpKTsKKworLyohCitAZnVuY3Rpb24KK0BhYnN0cmFjdCBHZXRzIGEgcHJvcGVy
dHkgZnJvbSBhbiBvYmplY3QgdXNpbmcgYSBKU1ZhbHVlUmVmIGFzIHRoZSBwcm9wZXJ0eSBrZXku
CitAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCitAcGFyYW0gb2JqZWN0
IFRoZSBKU09iamVjdCB3aG9zZSBwcm9wZXJ0eSB5b3Ugd2FudCB0byBnZXQuCitAcGFyYW0gcHJv
cGVydHlLZXkgQSBKU1ZhbHVlUmVmIGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5IGtleSB0byB1c2Ug
d2hlbiBsb29raW5nIHVwIHRoZSBwcm9wZXJ0eS4KK0BwYXJhbSBleGNlcHRpb24gQSBwb2ludGVy
IHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4g
UGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCitAcmVz
dWx0IFRoZSBwcm9wZXJ0eSdzIHZhbHVlIGlmIG9iamVjdCBoYXMgdGhlIHByb3BlcnR5IGtleSwg
b3RoZXJ3aXNlIHRoZSB1bmRlZmluZWQgdmFsdWUuCitAZGlzY3Vzc2lvbiBUaGlzIGZ1bmN0aW9u
IGlzIHRoZSBzYW1lIGFzIHBlcmZvcm1pbmcgIm9iamVjdFtwcm9wZXJ0eUtleV0iIGZyb20gSmF2
YVNjcmlwdC4KKyovCitKU19FWFBPUlQgSlNWYWx1ZVJlZiBKU09iamVjdEdldFByb3BlcnR5S2V5
KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiBwcm9wZXJ0
eUtleSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goSlND
X01BQ19UQkEpLCBpb3MoSlNDX0lPU19UQkEpKTsKKworLyohCitAZnVuY3Rpb24KK0BhYnN0cmFj
dCBTZXRzIGEgcHJvcGVydHkgb24gYW4gb2JqZWN0IHVzaW5nIGEgSlNWYWx1ZVJlZiBhcyB0aGUg
cHJvcGVydHkga2V5LgorQHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgor
QHBhcmFtIG9iamVjdCBUaGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91IHdhbnQgdG8gc2V0
LgorQHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWluaW5nIHRoZSBwcm9wZXJ0
eSBrZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHkuCitAcGFyYW0gdmFsdWUg
QSBKU1ZhbHVlUmVmIHRvIHVzZSBhcyB0aGUgcHJvcGVydHkncyB2YWx1ZS4KK0BwYXJhbSBhdHRy
aWJ1dGVzIEEgbG9naWNhbGx5IE9SZWQgc2V0IG9mIEpTUHJvcGVydHlBdHRyaWJ1dGVzIHRvIGdp
dmUgdG8gdGhlIHByb3BlcnR5LgorQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1Zh
bHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwg
aWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KK0BkaXNjdXNzaW9uIFRo
aXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXMgcGVyZm9ybWluZyAib2JqZWN0W3Byb3BlcnR5S2V5
XSA9IHZhbHVlIiBmcm9tIEphdmFTY3JpcHQuCisqLworSlNfRVhQT1JUIHZvaWQgSlNPYmplY3RT
ZXRQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFs
dWVSZWYgcHJvcGVydHlLZXksIEpTVmFsdWVSZWYgdmFsdWUsIEpTUHJvcGVydHlBdHRyaWJ1dGVz
IGF0dHJpYnV0ZXMsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFj
b3N4KEpTQ19NQUNfVEJBKSwgaW9zKEpTQ19JT1NfVEJBKSk7CisKKy8qIQorQGZ1bmN0aW9uCitA
YWJzdHJhY3QgRGVsZXRlcyBhIHByb3BlcnR5IGZyb20gYW4gb2JqZWN0IHVzaW5nIGEgSlNWYWx1
ZVJlZiBhcyB0aGUgcHJvcGVydHkga2V5LgorQHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRl
eHQgdG8gdXNlLgorQHBhcmFtIG9iamVjdCBUaGUgSlNPYmplY3Qgd2hvc2UgcHJvcGVydHkgeW91
IHdhbnQgdG8gZGVsZXRlLgorQHBhcmFtIHByb3BlcnR5S2V5IEEgSlNWYWx1ZVJlZiBjb250YWlu
aW5nIHRoZSBwcm9wZXJ0eSBrZXkgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgcHJvcGVydHku
CitAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8g
c3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUg
dG8gc3RvcmUgYW4gZXhjZXB0aW9uLgorQHJlc3VsdCB0cnVlIGlmIHRoZSBkZWxldGUgb3BlcmF0
aW9uIHN1Y2NlZWRzLCBvdGhlcndpc2UgZmFsc2UgKGZvciBleGFtcGxlLCBpZiB0aGUgcHJvcGVy
dHkgaGFzIHRoZSBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgYXR0cmlidXRlIHNldCku
CitAZGlzY3Vzc2lvbiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHBlcmZvcm1pbmcgImRl
bGV0ZSBvYmplY3RbcHJvcGVydHlLZXldIiBmcm9tIEphdmFTY3JpcHQuCisqLworSlNfRVhQT1JU
IGJvb2wgSlNPYmplY3REZWxldGVQcm9wZXJ0eUtleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVj
dFJlZiBvYmplY3QsIEpTVmFsdWVSZWYgcHJvcGVydHlLZXksIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KEpTQ19NQUNfVEJBKSwgaW9zKEpTQ19JT1NfVEJB
KSk7CisKIC8qIQogQGZ1bmN0aW9uCiBAYWJzdHJhY3QgR2V0cyBhIHByb3BlcnR5IGZyb20gYW4g
b2JqZWN0IGJ5IG51bWVyaWMgaW5kZXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
UmVtb3RlSW5zcGVjdG9yLmgKaW5kZXggYzhiYWM2ZGQwZTRhNjQ4MDljYjM0NTBjZGJhNGMwMzk3
YTQ4YTA1Ny4uNjE4NmI5MjNlYzhhYjhiOTQ4ZTc5M2FmMDRiZGQ4NDMyNzQwMDM0NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1JlbW90ZUluc3BlY3Rvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3IuaApAQCAtNDAsMTQg
KzQwLDE0IEBAIHR5cGVkZWYgcGlkX3QgSlNQcm9jZXNzSUQ7CiBleHRlcm4gIkMiIHsKICNlbmRp
ZgogCi1KU19FWFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvckRpc2FibGVBdXRvU3RhcnQodm9p
ZCkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzApOwotSlNfRVhQT1JUIHZvaWQgSlNSZW1vdGVJbnNw
ZWN0b3JTdGFydCh2b2lkKSBDRl9BVkFJTEFCTEUoMTBfMTEsIDlfMCk7Ci1KU19FWFBPUlQgdm9p
ZCBKU1JlbW90ZUluc3BlY3RvclNldFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbihKU1Byb2Nlc3NJ
RCwgY29uc3QgdWludDhfdCogYXVkaXREYXRhLCBzaXplX3QgYXVkaXRMZW5ndGgpIENGX0FWQUlM
QUJMRSgxMF8xMSwgOV8wKTsKK0pTX0VYUE9SVCB2b2lkIEpTUmVtb3RlSW5zcGVjdG9yRGlzYWJs
ZUF1dG9TdGFydCh2b2lkKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4w
KSk7CitKU19FWFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvclN0YXJ0KHZvaWQpIEpTQ19BUElf
QVZBSUxBQkxFKG1hY29zeCgxMC4xMSksIGlvcyg5LjApKTsKK0pTX0VYUE9SVCB2b2lkIEpTUmVt
b3RlSW5zcGVjdG9yU2V0UGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uKEpTUHJvY2Vzc0lELCBjb25z
dCB1aW50OF90KiBhdWRpdERhdGEsIHNpemVfdCBhdWRpdExlbmd0aCkgSlNDX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpOwogCi1KU19FWFBPUlQgdm9pZCBKU1JlbW90ZUlu
c3BlY3RvclNldExvZ1RvU3lzdGVtQ29uc29sZShib29sKSBDRl9BVkFJTEFCTEUoMTBfMTEsIDlf
MCk7CitKU19FWFBPUlQgdm9pZCBKU1JlbW90ZUluc3BlY3RvclNldExvZ1RvU3lzdGVtQ29uc29s
ZShib29sKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CiAKLUpT
X0VYUE9SVCBib29sIEpTUmVtb3RlSW5zcGVjdG9yR2V0SW5zcGVjdGlvbkVuYWJsZWRCeURlZmF1
bHQodm9pZCkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzApOwotSlNfRVhQT1JUIHZvaWQgSlNSZW1v
dGVJbnNwZWN0b3JTZXRJbnNwZWN0aW9uRW5hYmxlZEJ5RGVmYXVsdChib29sKSBDRl9BVkFJTEFC
TEUoMTBfMTEsIDlfMCk7CitKU19FWFBPUlQgYm9vbCBKU1JlbW90ZUluc3BlY3RvckdldEluc3Bl
Y3Rpb25FbmFibGVkQnlEZWZhdWx0KHZvaWQpIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4x
MSksIGlvcyg5LjApKTsKK0pTX0VYUE9SVCB2b2lkIEpTUmVtb3RlSW5zcGVjdG9yU2V0SW5zcGVj
dGlvbkVuYWJsZWRCeURlZmF1bHQoYm9vbCkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEx
KSwgaW9zKDkuMCkpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVHlwZWRBcnJheS5oCmluZGV4IGUyM2I3NmQyZWI0YWE1YTQ5OGI1NWViYTQ3Mzc0
NjNmNmNiOTM5YWMuLjZkODYwMjJmYTU2OTk1NDY0NmJlZWEzYWU5ZWZmN2IyY2EzNmEwMWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuaApAQCAtNDUsNyArNDUsNyBA
QCBleHRlcm4gIkMiIHsKICBAcGFyYW0gZXhjZXB0aW9uICAgIEEgcG9pbnRlciB0byBhIEpTVmFs
dWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBp
ZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1bHQgICAgICAg
ICAgICAgQSBKU09iamVjdFJlZiB0aGF0IGlzIGEgVHlwZWQgQXJyYXkgd2l0aCBhbGwgZWxlbWVu
dHMgc2V0IHRvIHplcm8gb3IgTlVMTCBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAgKi8KLUpTX0VY
UE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5KEpTQ29udGV4dFJlZiBjdHgs
IEpTVHlwZWRBcnJheVR5cGUgYXJyYXlUeXBlLCBzaXplX3QgbGVuZ3RoLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBPUlQgSlNPYmplY3RS
ZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheShKU0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlU
eXBlIGFycmF5VHlwZSwgc2l6ZV90IGxlbmd0aCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAvKiEKICBAZnVuY3Rp
b24KQEAgLTYwLDcgKzYwLDcgQEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVR5
cGVkQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBlZEFycmF5VHlwZQogIEByZXN1bHQgICAg
ICAgICAgICAgICAgICAgQSBKU09iamVjdFJlZiBUeXBlZCBBcnJheSB3aG9zZSBiYWNraW5nIHN0
b3JlIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgcG9pbnRlZCB0byBieSBieXRlcyBvciBOVUxMIGlm
IHRoZXJlIHdhcyBhbiBlcnJvci4KICBAZGlzY3Vzc2lvbiAgICAgICAgICAgICAgIElmIGFuIGV4
Y2VwdGlvbiBpcyB0aHJvd24gZHVyaW5nIHRoaXMgZnVuY3Rpb24gdGhlIGJ5dGVzRGVhbGxvY2F0
b3Igd2lsbCBhbHdheXMgYmUgY2FsbGVkLgogICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNP
YmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4LCBKU1R5
cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgdm9pZCogYnl0ZXMsIHNpemVfdCBieXRlTGVuZ3RoLCBK
U1R5cGVkQXJyYXlCeXRlc0RlYWxsb2NhdG9yIGJ5dGVzRGVhbGxvY2F0b3IsIHZvaWQqIGRlYWxs
b2NhdG9yQ29udGV4dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIs
IDEwXzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVR5cGVkQXJyYXlXaXRo
Qnl0ZXNOb0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBlZEFycmF5VHlwZSBhcnJheVR5cGUs
IHZvaWQqIGJ5dGVzLCBzaXplX3QgYnl0ZUxlbmd0aCwgSlNUeXBlZEFycmF5Qnl0ZXNEZWFsbG9j
YXRvciBieXRlc0RlYWxsb2NhdG9yLCB2b2lkKiBkZWFsbG9jYXRvckNvbnRleHQsIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjAp
KTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC03MSw3ICs3MSw3IEBAIEpTX0VYUE9SVCBKU09iamVj
dFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEJ5dGVzTm9Db3B5KEpTQ29udGV4dFJlZiBj
dHgsIEpTCiAgQHBhcmFtIGV4Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGlu
IHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRv
IG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAgICAgIEEg
SlNPYmplY3RSZWYgdGhhdCBpcyBhIFR5cGVkIEFycmF5IG9yIE5VTEwgaWYgdGhlcmUgd2FzIGFu
IGVycm9yLiBUaGUgYmFja2luZyBzdG9yZSBvZiB0aGUgVHlwZWQgQXJyYXkgd2lsbCBiZSBidWZm
ZXIuCiAgKi8KLUpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0
aEFycmF5QnVmZmVyKEpTQ29udGV4dFJlZiBjdHgsIEpTVHlwZWRBcnJheVR5cGUgYXJyYXlUeXBl
LCBKU09iamVjdFJlZiBidWZmZXIsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxF
KDEwXzEyLCAxMF8wKTsKK0pTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFy
cmF5V2l0aEFycmF5QnVmZmVyKEpTQ29udGV4dFJlZiBjdHgsIEpTVHlwZWRBcnJheVR5cGUgYXJy
YXlUeXBlLCBKU09iamVjdFJlZiBidWZmZXIsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9u
CkBAIC04NCw3ICs4NCw3IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBl
ZEFycmF5V2l0aEFycmF5QnVmZmVyKEpTQ29udGV4dFJlZiBjdHgsIEpTCiAgQHBhcmFtIGV4Y2Vw
dGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4
Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFu
IGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAgICAgIEEgSlNPYmplY3RSZWYgdGhhdCBpcyBh
IFR5cGVkIEFycmF5IG9yIE5VTEwgaWYgdGhlcmUgd2FzIGFuIGVycm9yLiBUaGUgYmFja2luZyBz
dG9yZSBvZiB0aGUgVHlwZWQgQXJyYXkgd2lsbCBiZSBidWZmZXIuCiAgKi8KLUpTX0VYUE9SVCBK
U09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEFycmF5QnVmZmVyQW5kT2Zmc2V0
KEpTQ29udGV4dFJlZiBjdHgsIEpTVHlwZWRBcnJheVR5cGUgYXJyYXlUeXBlLCBKU09iamVjdFJl
ZiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBPUlQgSlNPYmplY3RS
ZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhBcnJheUJ1ZmZlckFuZE9mZnNldChKU0NvbnRl
eHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgSlNPYmplY3RSZWYgYnVmZmVy
LCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAvKiEKICBA
ZnVuY3Rpb24KQEAgLTk1LDcgKzk1LDcgQEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0
TWFrZVR5cGVkQXJyYXlXaXRoQXJyYXlCdWZmZXJBbmRPZmZzZXQoSlNDb250ZXh0UmUKICBAcmVz
dWx0ICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgcmF3IGRhdGEgYnVmZmVyIHRoYXQgc2Vy
dmVzIGFzIG9iamVjdCdzIGJhY2tpbmcgc3RvcmUgb3IgTlVMTCBpZiBvYmplY3QgaXMgbm90IGEg
VHlwZWQgQXJyYXkgb2JqZWN0LgogIEBkaXNjdXNzaW9uICAgICAgICAgVGhlIHBvaW50ZXIgcmV0
dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiBpcyB0ZW1wb3JhcnkgYW5kIGlzIG5vdCBndWFyYW50ZWVk
IHRvIHJlbWFpbiB2YWxpZCBhY3Jvc3MgSmF2YVNjcmlwdENvcmUgQVBJIGNhbGxzLgogICovCi1K
U19FWFBPUlQgdm9pZCogSlNPYmplY3RHZXRUeXBlZEFycmF5Qnl0ZXNQdHIoSlNDb250ZXh0UmVm
IGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlM
QUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBPUlQgdm9pZCogSlNPYmplY3RHZXRUeXBlZEFycmF5
Qnl0ZXNQdHIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7
CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtMTA1LDcgKzEwNSw3IEBAIEpTX0VYUE9SVCB2b2lkKiBK
U09iamVjdEdldFR5cGVkQXJyYXlCeXRlc1B0cihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJl
ZiBvYmplCiAgQHBhcmFtIGV4Y2VwdGlvbiAgICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGlu
IHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRv
IG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAgICAgIFRo
ZSBsZW5ndGggb2YgdGhlIFR5cGVkIEFycmF5IG9iamVjdCBvciAwIGlmIHRoZSBvYmplY3QgaXMg
bm90IGEgVHlwZWQgQXJyYXkgb2JqZWN0LgogICovCi1KU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0
R2V0VHlwZWRBcnJheUxlbmd0aChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3Qs
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK0pTX0VY
UE9SVCBzaXplX3QgSlNPYmplY3RHZXRUeXBlZEFycmF5TGVuZ3RoKEpTQ29udGV4dFJlZiBjdHgs
IEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlM
QUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAvKiEKICBAZnVuY3Rpb24KQEAgLTEx
NSw3ICsxMTUsNyBAQCBKU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0VHlwZWRBcnJheUxlbmd0
aChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplYwogIEBwYXJhbSBleGNlcHRpb24g
ICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRp
b24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNl
cHRpb24uCiAgQHJlc3VsdCAgICAgICAgICAgICBUaGUgYnl0ZSBsZW5ndGggb2YgdGhlIFR5cGVk
IEFycmF5IG9iamVjdCBvciAwIGlmIHRoZSBvYmplY3QgaXMgbm90IGEgVHlwZWQgQXJyYXkgb2Jq
ZWN0LgogICovCi1KU19FWFBPUlQgc2l6ZV90IEpTT2JqZWN0R2V0VHlwZWRBcnJheUJ5dGVMZW5n
dGgoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBPUlQgc2l6ZV90IEpTT2Jq
ZWN0R2V0VHlwZWRBcnJheUJ5dGVMZW5ndGgoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYg
b2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgx
MC4xMiksIGlvcygxMC4wKSk7CiAKIC8qIQogIEBmdW5jdGlvbgpAQCAtMTI1LDcgKzEyNSw3IEBA
IEpTX0VYUE9SVCBzaXplX3QgSlNPYmplY3RHZXRUeXBlZEFycmF5Qnl0ZUxlbmd0aChKU0NvbnRl
eHRSZWYgY3R4LCBKU09iamVjdFJlZiBvCiAgQHBhcmFtIGV4Y2VwdGlvbiAgICBBIHBvaW50ZXIg
dG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQ
YXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KICBAcmVz
dWx0ICAgICAgICAgICAgIFRoZSBieXRlIG9mZnNldCBvZiB0aGUgVHlwZWQgQXJyYXkgb2JqZWN0
IG9yIDAgaWYgdGhlIG9iamVjdCBpcyBub3QgYSBUeXBlZCBBcnJheSBvYmplY3QuCiAgKi8KLUpT
X0VYUE9SVCBzaXplX3QgSlNPYmplY3RHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldChKU0NvbnRleHRS
ZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZB
SUxBQkxFKDEwXzEyLCAxMF8wKTsKK0pTX0VYUE9SVCBzaXplX3QgSlNPYmplY3RHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEw
LjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC0xMzUsNyArMTM1LDcgQEAgSlNfRVhQT1JUIHNp
emVfdCBKU09iamVjdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KEpTQ29udGV4dFJlZiBjdHgsIEpT
T2JqZWN0UmVmIG8KICBAcGFyYW0gZXhjZXB0aW9uICAgIEEgcG9pbnRlciB0byBhIEpTVmFsdWVS
ZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5
b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1bHQgICAgICAgICAg
ICAgQSBKU09iamVjdFJlZiB3aXRoIGEgSlNUeXBlZEFycmF5VHlwZSBvZiBrSlNUeXBlZEFycmF5
VHlwZUFycmF5QnVmZmVyIG9yIE5VTEwgaWYgb2JqZWN0IGlzIG5vdCBhIFR5cGVkIEFycmF5Lgog
ICovCi1KU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RHZXRUeXBlZEFycmF5QnVmZmVyKEpT
Q29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2Jq
ZWN0R2V0VHlwZWRBcnJheUJ1ZmZlcihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmpl
Y3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEy
KSwgaW9zKDEwLjApKTsKIAogLy8gLS0tLS0tLS0tLS0tLSBBcnJheSBCdWZmZXIgZnVuY3Rpb25z
IC0tLS0tLS0tLS0tLS0KIApAQCAtMTUxLDcgKzE1MSw3IEBAIEpTX0VYUE9SVCBKU09iamVjdFJl
ZiBKU09iamVjdEdldFR5cGVkQXJyYXlCdWZmZXIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RS
ZWYKICBAcmVzdWx0ICAgICAgICAgICAgICAgICAgIEEgSlNPYmplY3RSZWYgQXJyYXkgQnVmZmVy
IHdob3NlIGJhY2tpbmcgc3RvcmUgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBwb2ludGVkIHRvIGJ5
IGJ5dGVzIG9yIE5VTEwgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgogIEBkaXNjdXNzaW9uICAgICAg
ICAgICAgICAgSWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biBkdXJpbmcgdGhpcyBmdW5jdGlvbiB0
aGUgYnl0ZXNEZWFsbG9jYXRvciB3aWxsIGFsd2F5cyBiZSBjYWxsZWQuCiAgKi8KLUpTX0VYUE9S
VCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VBcnJheUJ1ZmZlcldpdGhCeXRlc05vQ29weShKU0Nv
bnRleHRSZWYgY3R4LCB2b2lkKiBieXRlcywgc2l6ZV90IGJ5dGVMZW5ndGgsIEpTVHlwZWRBcnJh
eUJ5dGVzRGVhbGxvY2F0b3IgYnl0ZXNEZWFsbG9jYXRvciwgdm9pZCogZGVhbGxvY2F0b3JDb250
ZXh0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitK
U19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQXJyYXlCdWZmZXJXaXRoQnl0ZXNOb0Nv
cHkoSlNDb250ZXh0UmVmIGN0eCwgdm9pZCogYnl0ZXMsIHNpemVfdCBieXRlTGVuZ3RoLCBKU1R5
cGVkQXJyYXlCeXRlc0RlYWxsb2NhdG9yIGJ5dGVzRGVhbGxvY2F0b3IsIHZvaWQqIGRlYWxsb2Nh
dG9yQ29udGV4dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNv
c3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAvKiEKICBAZnVuY3Rpb24KQEAgLTE2MSw3ICsxNjEs
NyBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQXJyYXlCdWZmZXJXaXRoQnl0
ZXNOb0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgdgogIEByZXN1bHQgICAgICAgICAgIEEgcG9pbnRl
ciB0byB0aGUgcmF3IGRhdGEgYnVmZmVyIHRoYXQgc2VydmVzIGFzIG9iamVjdCdzIGJhY2tpbmcg
c3RvcmUgb3IgTlVMTCBpZiBvYmplY3QgaXMgbm90IGFuIEFycmF5IEJ1ZmZlciBvYmplY3QuCiAg
QGRpc2N1c3Npb24gICAgICAgVGhlIHBvaW50ZXIgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiBp
cyB0ZW1wb3JhcnkgYW5kIGlzIG5vdCBndWFyYW50ZWVkIHRvIHJlbWFpbiB2YWxpZCBhY3Jvc3Mg
SmF2YVNjcmlwdENvcmUgQVBJIGNhbGxzLgogICovCi1KU19FWFBPUlQgdm9pZCogSlNPYmplY3RH
ZXRBcnJheUJ1ZmZlckJ5dGVzUHRyKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVj
dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNf
RVhQT1JUIHZvaWQqIEpTT2JqZWN0R2V0QXJyYXlCdWZmZXJCeXRlc1B0cihKU0NvbnRleHRSZWYg
Y3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9B
VkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBA
IC0xNzEsNyArMTcxLDcgQEAgSlNfRVhQT1JUIHZvaWQqIEpTT2JqZWN0R2V0QXJyYXlCdWZmZXJC
eXRlc1B0cihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmoKICBAcGFyYW0gZXhjZXB0
aW9uICBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2Vw
dGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4
Y2VwdGlvbi4KICBAcmVzdWx0ICAgICAgICAgICBUaGUgbnVtYmVyIG9mIGJ5dGVzIHN0b3JlZCBp
biB0aGUgZGF0YSBvYmplY3QuCiAgKi8KLUpTX0VYUE9SVCBzaXplX3QgSlNPYmplY3RHZXRBcnJh
eUJ1ZmZlckJ5dGVMZW5ndGgoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pIENGX0FWQUlMQUJMRSgxMF8xMiwgMTBfMCk7CitKU19FWFBP
UlQgc2l6ZV90IEpTT2JqZWN0R2V0QXJyYXlCdWZmZXJCeXRlTGVuZ3RoKEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBKU0NfQVBJX0FW
QUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLmgKaW5kZXggMTQxMGRkNzRhMTdmOTcwNzA2
ZTQ0ZGVkMjRjY2QxNzBjMzQ3OWMyZS4uMDI0ZWJiMGE3NTUwYjNlY2U2OTQ0MDQxMjdhZGNjM2U2
Y2M5N2RmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLmgKQEAgLTQ3LDYgKzQ3LDEy
IEBACiBOU19DTEFTU19BVkFJTEFCTEUoMTBfOSwgN18wKQogQGludGVyZmFjZSBKU1ZhbHVlIDog
TlNPYmplY3QKIAorI2lmIChkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCBKU0NfTUFDX1ZFUlNJT05fVEJB
KSB8fCAoZGVmaW5lZChfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCBKU0NfSU9TX1ZFUlNJT05fVEJBKQordHlwZWRl
ZiBOU1N0cmluZyAqSlNWYWx1ZVByb3BlcnR5S2V5VHlwZTsKKyNlbHNlCit0eXBlZGVmIGlkIEpT
VmFsdWVQcm9wZXJ0eUtleVR5cGU7CisjZW5kaWYKKwogLyohCiBAcHJvcGVydHkKIEBhYnN0cmFj
dCBUaGUgSlNDb250ZXh0IHRoYXQgdGhpcyB2YWx1ZSBvcmlnaW5hdGVzIGZyb20uCkBAIC0xNDgs
NiArMTU0LDE1IEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCA3XzApCiAqLwogKyAoSlNWYWx1
ZSAqKXZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKIAor
LyohCisgQG1ldGhvZAorIEBhYnN0cmFjdCBDcmVhdGUgYSBuZXcsIHVuaXF1ZSwgc3ltYm9sIG9i
amVjdC4KKyBAcGFyYW0gZGVzY3JpcHRpb24gVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBzeW1ib2wg
b2JqZWN0IGJlaW5nIGNyZWF0ZWQuCisgQHBhcmFtIGNvbnRleHQgVGhlIEpTQ29udGV4dCB0byB3
aGljaCB0aGUgcmVzdWx0aW5nIEpTVmFsdWUgYmVsb25ncy4KKyBAcmVzdWx0IFRoZSBKU1ZhbHVl
IHJlcHJlc2VudGluZyBhIHVuaXF1ZSBKYXZhU2NyaXB0IHZhbHVlIHdpdGggdHlwZSBzeW1ib2wu
CisgKi8KKysgKEpTVmFsdWUgKil2YWx1ZVdpdGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246KE5T
U3RyaW5nICopZGVzY3JpcHRpb24gaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0IEpTQ19B
UElfQVZBSUxBQkxFKG1hY29zeChKU0NfTUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpOworCiAv
KiEKIEBtZXRob2Rncm91cCBDb252ZXJ0aW5nIHRvIE9iamVjdGl2ZS1DIFR5cGVzCiBAZGlzY3Vz
c2lvbiBXaGVuIGNvbnZlcnRpbmcgYmV0d2VlbiBKYXZhU2NyaXB0IHZhbHVlcyBhbmQgT2JqZWN0
aXZlLUMgb2JqZWN0cyBhIGNvcHkgaXMKQEAgLTMwNSw0MyArMzIwLDQ4IEBAIE5TX0NMQVNTX0FW
QUlMQUJMRSgxMF85LCA3XzApCiAvKiEKIEBtZXRob2Rncm91cCBBY2Nlc3NpbmcgUHJvcGVydGll
cwogKi8KKwogLyohCiBAbWV0aG9kCiBAYWJzdHJhY3QgQWNjZXNzIGEgcHJvcGVydHkgb2YgYSBK
U1ZhbHVlLgogQHJlc3VsdCBUaGUgSlNWYWx1ZSBmb3IgdGhlIHJlcXVlc3RlZCBwcm9wZXJ0eSBv
ciB0aGUgSlNWYWx1ZSA8Y29kZT51bmRlZmluZWQ8L2NvZGU+IAogIGlmIHRoZSBwcm9wZXJ0eSBk
b2VzIG5vdCBleGlzdC4KK0BkaXNjdXNzaW9uIENvcnJlc3BvbmRzIHRvIHRoZSBKYXZhU2NyaXB0
IG9wZXJhdGlvbiA8Y29kZT5vYmplY3RbcHJvcGVydHldPC9jb2RlPi4gUGFzcyBhbiBOU1N0cmlu
ZyAqIHRvIGFjY2VzcyBhIG5hbWVkIHByb3BlcnR5LiBPdGhlciB2YWxpZCBwcm9wZXJ0aWVzIGlu
Y2x1ZGUgc3ltYm9scywgbnVtYmVycywgYW5kIHN0cmluZ2lmaWFibGUgb2JqZWN0cy4gSW4gbWFj
T1MgMTAuMTMgYW5kIGlPUyAxMSBhbmQgYmVsb3csICdwcm9wZXJ0eScgd2FzIGFuIE5TU3RyaW5n
ICouCiAqLwotLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVy
dHk7CistIChKU1ZhbHVlICopdmFsdWVGb3JQcm9wZXJ0eTooSlNWYWx1ZVByb3BlcnR5S2V5VHlw
ZSlwcm9wZXJ0eTsKIAogLyohCiBAbWV0aG9kCiBAYWJzdHJhY3QgU2V0IGEgcHJvcGVydHkgb24g
YSBKU1ZhbHVlLgorQGRpc2N1c3Npb24gQ29ycmVzcG9uZHMgdG8gdGhlIEphdmFTY3JpcHQgb3Bl
cmF0aW9uIDxjb2RlPm9iamVjdFtwcm9wZXJ0eV0gPSB2YWx1ZTwvY29kZT4uIFBhc3MgYW4gTlNT
dHJpbmcgKiB0byBhY2Nlc3MgYSBuYW1lZCBwcm9wZXJ0eS4gT3RoZXIgdmFsaWQgcHJvcGVydGll
cyBpbmNsdWRlIHN5bWJvbHMsIG51bWJlcnMsIGFuZCBzdHJpbmdpZmlhYmxlIG9iamVjdHMuIElu
IG1hY09TIDEwLjEzIGFuZCBpT1MgMTEgYW5kIGJlbG93LCAncHJvcGVydHknIHdhcyBhbiBOU1N0
cmluZyAqLgogKi8KLS0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZvclByb3BlcnR5OihOU1N0
cmluZyAqKXByb3BlcnR5OworLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yUHJvcGVydHk6
KEpTVmFsdWVQcm9wZXJ0eUtleVR5cGUpcHJvcGVydHk7CiAKIC8qIQogQG1ldGhvZAogQGFic3Ry
YWN0IERlbGV0ZSBhIHByb3BlcnR5IGZyb20gYSBKU1ZhbHVlLgogQHJlc3VsdCBZRVMgaWYgZGVs
ZXRpb24gaXMgc3VjY2Vzc2Z1bCwgTk8gb3RoZXJ3aXNlLgorQGRpc2N1c3Npb24gQ29ycmVzcG9u
ZHMgdG8gdGhlIEphdmFTY3JpcHQgb3BlcmF0aW9uIDxjb2RlPmRlbGV0ZSBvYmplY3RbcHJvcGVy
dHldPC9jb2RlPi4gUGFzcyBhbiBOU1N0cmluZyAqIHRvIGFjY2VzcyBhIG5hbWVkIHByb3BlcnR5
LiBPdGhlciB2YWxpZCBwcm9wZXJ0aWVzIGluY2x1ZGUgc3ltYm9scywgbnVtYmVycywgYW5kIHN0
cmluZ2lmaWFibGUgb2JqZWN0cy4gSW4gbWFjT1MgMTAuMTMgYW5kIGlPUyAxMSBhbmQgYmVsb3cs
ICdwcm9wZXJ0eScgd2FzIGFuIE5TU3RyaW5nICouCiAqLwotLSAoQk9PTClkZWxldGVQcm9wZXJ0
eTooTlNTdHJpbmcgKilwcm9wZXJ0eTsKKy0gKEJPT0wpZGVsZXRlUHJvcGVydHk6KEpTVmFsdWVQ
cm9wZXJ0eUtleVR5cGUpcHJvcGVydHk7CiAKIC8qIQogQG1ldGhvZAogQGFic3RyYWN0IENoZWNr
IGlmIGEgSlNWYWx1ZSBoYXMgYSBwcm9wZXJ0eS4KIEBkaXNjdXNzaW9uIFRoaXMgbWV0aG9kIGhh
cyB0aGUgc2FtZSBmdW5jdGlvbiBhcyB0aGUgSmF2YVNjcmlwdCBvcGVyYXRvciA8Y29kZT5pbjwv
Y29kZT4uCiBAcmVzdWx0IFJldHVybnMgWUVTIGlmIHByb3BlcnR5IGlzIHByZXNlbnQgb24gdGhl
IHZhbHVlLgorQGRpc2N1c3Npb24gQ29ycmVzcG9uZHMgdG8gdGhlIEphdmFTY3JpcHQgb3BlcmF0
aW9uIDxjb2RlPnByb3BlcnR5IGluIG9iamVjdDwvY29kZT4uIFBhc3MgYW4gTlNTdHJpbmcgKiB0
byBhY2Nlc3MgYSBuYW1lZCBwcm9wZXJ0eS4gT3RoZXIgdmFsaWQgcHJvcGVydGllcyBpbmNsdWRl
IHN5bWJvbHMsIG51bWJlcnMsIGFuZCBzdHJpbmdpZmlhYmxlIG9iamVjdHMuIEluIG1hY09TIDEw
LjEzIGFuZCBpT1MgMTEgYW5kIGJlbG93LCAncHJvcGVydHknIHdhcyBhbiBOU1N0cmluZyAqLgog
Ki8KLS0gKEJPT0wpaGFzUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHk7CistIChCT09MKWhh
c1Byb3BlcnR5OihKU1ZhbHVlUHJvcGVydHlLZXlUeXBlKXByb3BlcnR5OwogCiAvKiEKIEBtZXRo
b2QKIEBhYnN0cmFjdCBEZWZpbmUgcHJvcGVydGllcyB3aXRoIGN1c3RvbSBkZXNjcmlwdG9ycyBv
biBKU1ZhbHVlcy4KIEBkaXNjdXNzaW9uIFRoaXMgbWV0aG9kIG1heSBiZSB1c2VkIHRvIGNyZWF0
ZSBhIGRhdGEgb3IgYWNjZXNzb3IgcHJvcGVydHkgb24gYW4gb2JqZWN0LgogIFRoaXMgbWV0aG9k
IG9wZXJhdGVzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgT2JqZWN0LmRlZmluZVByb3BlcnR5IG1l
dGhvZCBpbiB0aGUgCi0gSmF2YVNjcmlwdCBsYW5ndWFnZS4KKyBKYXZhU2NyaXB0IGxhbmd1YWdl
LiBQYXNzIGFuIE5TU3RyaW5nICogdG8gYWNjZXNzIGEgbmFtZWQgcHJvcGVydHkuIE90aGVyIHZh
bGlkIHByb3BlcnRpZXMgaW5jbHVkZSBzeW1ib2xzLCBudW1iZXJzLCBhbmQgc3RyaW5naWZpYWJs
ZSBvYmplY3RzLiBJbiBtYWNPUyAxMC4xMyBhbmQgaU9TIDExIGFuZCBiZWxvdywgJ3Byb3BlcnR5
JyB3YXMgYW4gTlNTdHJpbmcgKi4KICovCi0tICh2b2lkKWRlZmluZVByb3BlcnR5OihOU1N0cmlu
ZyAqKXByb3BlcnR5IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0b3I7CistICh2b2lkKWRlZmluZVBy
b3BlcnR5OihKU1ZhbHVlUHJvcGVydHlLZXlUeXBlKXByb3BlcnR5IGRlc2NyaXB0b3I6KGlkKWRl
c2NyaXB0b3I7CiAKIC8qIQogQG1ldGhvZApAQCAtNDAyLDE3ICs0MjIsMjMgQEAgTlNfQ0xBU1Nf
QVZBSUxBQkxFKDEwXzksIDdfMCkKICovCiBAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGlzT2Jq
ZWN0OwogCisvKiEKK0Bwcm9wZXJ0eQorQGFic3RyYWN0IENoZWNrIGlmIGEgSlNWYWx1ZSBpcyBh
IHN5bWJvbC4KKyovCitAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGlzU3ltYm9sIEpTQ19BUElf
QVZBSUxBQkxFKG1hY29zeChKU0NfTUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpOworCiAvKiEK
IEBwcm9wZXJ0eQogQGFic3RyYWN0IENoZWNrIGlmIGEgSlNWYWx1ZSBpcyBhbiBhcnJheS4KICov
IAotQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBpc0FycmF5IE5TX0FWQUlMQUJMRSgxMF8xMSwg
OV8wKTsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaXNBcnJheSBKU0NfQVBJX0FWQUlMQUJM
RShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CiAKIC8qIQogQHByb3BlcnR5CiBAYWJzdHJhY3Qg
Q2hlY2sgaWYgYSBKU1ZhbHVlIGlzIGEgZGF0ZS4KICovIAotQHByb3BlcnR5IChyZWFkb25seSkg
Qk9PTCBpc0RhdGUgTlNfQVZBSUxBQkxFKDEwXzExLCA5XzApOworQHByb3BlcnR5IChyZWFkb25s
eSkgQk9PTCBpc0RhdGUgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkp
OwogCiAvKiEKIEBtZXRob2QKQEAgLTU2OSwxMyArNTk1LDE2IEBAIENyZWF0ZSBhIEpTVmFsdWUg
ZnJvbSBhIENHUmVjdC4KIEAvdGV4dGJsb2NrCiAKICBBbiBvYmplY3Qga2V5IHBhc3NlZCBhcyBh
IHN1YnNjcmlwdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhIEphdmFTY3JpcHQgdmFsdWUsCi0gYW5k
IHRoZW4gdGhlIHZhbHVlIGNvbnZlcnRlZCB0byBhIHN0cmluZyB1c2VkIGFzIGEgcHJvcGVydHkg
bmFtZS4KKyBhbmQgdGhlbiB0aGUgdmFsdWUgY29udmVydGVkIHRvIGEgc3RyaW5nIHVzZWQgYXMg
YSBwcm9wZXJ0eSBuYW1lLiBJbiBtYWNPUworIDEwLjEzIGFuZCBpT1MgMTEgYW5kIGJlbG93LCB0
aGUgPGNvZGU+a2V5PC9jb2RlPiBhcmd1bWVudCBvZgorIDxjb2RlPnNldE9iamVjdDpvYmplY3Qg
Zm9yS2V5ZWRTdWJzY3JpcHQ6a2V5PC9jb2RlPiB3YXMgcmVzdHJpY3RlZCB0byBhbgorIDxjb2Rl
Pk5TU3RyaW5nIDxOU0NvcHlpbmc+ICo8L2NvZGU+IGJ1dCB0aGF0IHJlc3RyaWN0aW9uIHdhcyBu
ZXZlciB1c2VkLgogKi8KIEBpbnRlcmZhY2UgSlNWYWx1ZSAoU3Vic2NyaXB0U3VwcG9ydCkKIAot
LSAoSlNWYWx1ZSAqKW9iamVjdEZvcktleWVkU3Vic2NyaXB0OihpZClrZXk7CistIChKU1ZhbHVl
ICopb2JqZWN0Rm9yS2V5ZWRTdWJzY3JpcHQ6KEpTVmFsdWVQcm9wZXJ0eUtleVR5cGUpa2V5Owog
LSAoSlNWYWx1ZSAqKW9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRleDsK
LS0gKHZvaWQpc2V0T2JqZWN0OihpZClvYmplY3QgZm9yS2V5ZWRTdWJzY3JpcHQ6KE5TT2JqZWN0
IDxOU0NvcHlpbmc+ICopa2V5OworLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBmb3JLZXll
ZFN1YnNjcmlwdDooSlNWYWx1ZVByb3BlcnR5S2V5VHlwZSlrZXk7CiAtICh2b2lkKXNldE9iamVj
dDooaWQpb2JqZWN0IGF0SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRleDsKIAogQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCmluZGV4IGEyNjY4NDQ4ZmZiYzdiZjU1
MzQzNzRkMTdkYTJiZWI0Yzc0MTk4ODMuLjNmZjVjNDc2ZDY4OTAyYzI2NDY2OWE5N2JmMjgyODUw
NDY1ZTk3YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5t
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KQEAgLTM5LDYgKzM5
LDcgQEAKICNpbXBvcnQgIkpTQ0pTVmFsdWUuaCIKICNpbXBvcnQgIlN0cm9uZy5oIgogI2ltcG9y
dCAiU3Ryb25nSW5saW5lcy5oIgorI2ltcG9ydCA8d3RmL0V4cGVjdGVkLmg+CiAjaW1wb3J0IDx3
dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9Mb2Nr
Lmg+CkBAIC0xNTEsNiArMTUyLDEzIEBAIE5TU3RyaW5nICogY29uc3QgSlNQcm9wZXJ0eURlc2Ny
aXB0b3JTZXRLZXkgPSBAInNldCI7CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFs
dWVSZWY6SlNWYWx1ZU1ha2VVbmRlZmluZWQoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSkg
aW5Db250ZXh0OmNvbnRleHRdOwogfQogCisrIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3U3ltYm9s
RnJvbURlc2NyaXB0aW9uOihOU1N0cmluZyAqKWRlc2NyaXB0aW9uIGluQ29udGV4dDooSlNDb250
ZXh0ICopY29udGV4dAoreworICAgIEpTU3RyaW5nUmVmIHN0cmluZyA9IEpTU3RyaW5nQ3JlYXRl
V2l0aENGU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KGRlc2NyaXB0aW9uKSk7
CisgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6SlNWYWx1ZU1ha2VTeW1i
b2woW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgc3RyaW5nKSBpbkNvbnRleHQ6Y29udGV4
dF07Cit9CisKKwogLSAoaWQpdG9PYmplY3QKIHsKICAgICByZXR1cm4gdmFsdWVUb09iamVjdChf
Y29udGV4dCwgbV92YWx1ZSk7CkBAIC0yMzQsNzIgKzI0Miw4MSBAQCBOU1N0cmluZyAqIGNvbnN0
IEpTUHJvcGVydHlEZXNjcmlwdG9yU2V0S2V5ID0gQCJzZXQiOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLS0gKEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5
TmFtZQordGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFtZSBOU1N0cmluZ0Z1bmN0aW9u
LCB0eXBlbmFtZSBKU1ZhbHVlRnVuY3Rpb24sIHR5cGVuYW1lLi4uIFR5cGVzPgoraW5saW5lIEV4
cGVjdGVkPFJlc3VsdCwgSlNWYWx1ZVJlZj4gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uKE5TU3Ry
aW5nRnVuY3Rpb24gc3RyaW5nRnVuY3Rpb24sIEpTVmFsdWVGdW5jdGlvbiBqc0Z1bmN0aW9uLCBK
U1ZhbHVlKiB2YWx1ZSwgaWQgcHJvcGVydHlLZXksIFR5cGVzLi4uIGFyZ3VtZW50cykKIHsKLSAg
ICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNW
YWx1ZVRvT2JqZWN0KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlLCAmZXhj
ZXB0aW9uKTsKKyAgICBKU0NvbnRleHQqIGNvbnRleHQgPSBbdmFsdWUgY29udGV4dF07CisgICAg
SlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOworICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9
IEpTVmFsdWVUb09iamVjdChbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBbdmFsdWUgSlNW
YWx1ZVJlZl0sICZleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVy
biBbX2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgICAg
IHJldHVybiBVbmV4cGVjdGVkPEpTVmFsdWVSZWY+KGV4Y2VwdGlvbik7CiAKLSAgICBKU1N0cmlu
Z1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5n
UmVmKXByb3BlcnR5TmFtZSk7Ci0gICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU09iamVjdEdldFBy
b3BlcnR5KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIG5hbWUsICZleGNl
cHRpb24pOwotICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKLSAgICBpZiAoZXhjZXB0aW9uKQot
ICAgICAgICByZXR1cm4gW19jb250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRp
b25dOworICAgIFJlc3VsdCByZXN1bHQ7CisgICAgLy8gSWYgaXQncyBhIE5TU3RyaW5nIGFscmVh
ZHksIHJlZHVjZSBpbmRpcmVjdGlvbiBhbmQganVzdCBwYXNzIHRoZSBOU1N0cmluZy4KKyAgICBp
ZiAoW3Byb3BlcnR5S2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKKyAgICAg
ICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChfX2JyaWRn
ZSBDRlN0cmluZ1JlZilwcm9wZXJ0eUtleSk7CisgICAgICAgIHJlc3VsdCA9IHN0cmluZ0Z1bmN0
aW9uKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgbmFtZSwgYXJndW1lbnRz
Li4uLCAmZXhjZXB0aW9uKTsKKyAgICAgICAgSlNTdHJpbmdSZWxlYXNlKG5hbWUpOworICAgIH0g
ZWxzZQorICAgICAgICByZXN1bHQgPSBqc0Z1bmN0aW9uKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4
dFJlZl0sIG9iamVjdCwgW1tKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpwcm9wZXJ0eUtleSBpbkNv
bnRleHQ6Y29udGV4dF0gSlNWYWx1ZVJlZl0sIGFyZ3VtZW50cy4uLiwgJmV4Y2VwdGlvbik7Cisg
ICAgcmV0dXJuIEV4cGVjdGVkPFJlc3VsdCwgSlNWYWx1ZVJlZj4ocmVzdWx0KTsKK30KIAotICAg
IHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOnJlc3VsdCBpbkNvbnRleHQ6X2Nv
bnRleHRdOworLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KGlkKWtleQoreworICAgIGF1
dG8gcmVzdWx0ID0gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uPEpTVmFsdWVSZWY+KEpTT2JqZWN0
R2V0UHJvcGVydHksIEpTT2JqZWN0R2V0UHJvcGVydHlLZXksIHNlbGYsIGtleSk7CisgICAgaWYg
KCFyZXN1bHQpCisgICAgICAgIHJldHVybiBbX2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0
aW9uOnJlc3VsdC5lcnJvcigpXTsKKworICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1Zh
bHVlUmVmOnJlc3VsdC52YWx1ZSgpIGluQ29udGV4dDpfY29udGV4dF07CiB9CiAKLS0gKHZvaWQp
c2V0VmFsdWU6KGlkKXZhbHVlIGZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQor
CistICh2b2lkKXNldFZhbHVlOihpZCl2YWx1ZSBmb3JQcm9wZXJ0eTooSlNWYWx1ZVByb3BlcnR5
S2V5VHlwZSlrZXkKIHsKLSAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmpl
Y3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRS
ZWZdLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKLSAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAg
IFtfY29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICAvLyBXZSBuZWVkIFVuaXQgYnVzaW5lc3MgYmVjYXVzZSB2b2lkIGNhbid0IGJl
IGFzc2lnbmVkIHRvIGluIHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbiBhbmQgSSBkb24ndCB3YW50
IHRvIGR1cGxpY2F0ZSB0aGUgY29kZS4uLgorICAgIHVzaW5nIFVuaXQgPSBzdGQ6OnR1cGxlPD47
CisgICAgYXV0byBzdHJpbmdTZXRQcm9wZXJ0eSA9IFtdIChhdXRvLi4uIGFyZ3MpIC0+IFVuaXQg
eworICAgICAgICBKU09iamVjdFNldFByb3BlcnR5KGFyZ3MuLi4pOworICAgICAgICByZXR1cm4g
eyB9OworICAgIH07CiAKLSAgICBKU1N0cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRo
Q0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXByb3BlcnR5TmFtZSk7Ci0gICAgSlNPYmpl
Y3RTZXRQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgb2JqZWN0LCBuYW1l
LCBvYmplY3RUb1ZhbHVlKF9jb250ZXh0LCB2YWx1ZSksIDAsICZleGNlcHRpb24pOwotICAgIEpT
U3RyaW5nUmVsZWFzZShuYW1lKTsKLSAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIFtfY29u
dGV4dCBub3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICBhdXRvIGpzVmFsdWVTZXRQcm9w
ZXJ0eSA9IFtdIChhdXRvLi4uIGFyZ3MpIC0+IFVuaXQgeworICAgICAgICBKU09iamVjdFNldFBy
b3BlcnR5S2V5KGFyZ3MuLi4pOworICAgICAgICByZXR1cm4geyB9OworICAgIH07CisKKyAgICBh
dXRvIHJlc3VsdCA9IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbjxVbml0PihzdHJpbmdTZXRQcm9w
ZXJ0eSwganNWYWx1ZVNldFByb3BlcnR5LCBzZWxmLCBrZXksIG9iamVjdFRvVmFsdWUoX2NvbnRl
eHQsIHZhbHVlKSwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lKTsKKyAgICBpZiAoIXJlc3VsdCkg
eworICAgICAgICBbX2NvbnRleHQgbm90aWZ5RXhjZXB0aW9uOnJlc3VsdC5lcnJvcigpXTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIH0KIAotLSAoQk9PTClkZWxldGVQcm9wZXJ0eTooTlNTdHJp
bmcgKilwcm9wZXJ0eU5hbWUKKy0gKEJPT0wpZGVsZXRlUHJvcGVydHk6KEpTVmFsdWVQcm9wZXJ0
eUtleVR5cGUpa2V5CiB7Ci0gICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAgIEpTT2Jq
ZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0
UmVmXSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7Ci0gICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAg
cmV0dXJuIFtfY29udGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwotCi0g
ICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChfX2JyaWRn
ZSBDRlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwotICAgIEJPT0wgcmVzdWx0ID0gSlNPYmplY3RE
ZWxldGVQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgb2JqZWN0LCBuYW1l
LCAmZXhjZXB0aW9uKTsKLSAgICBKU1N0cmluZ1JlbGVhc2UobmFtZSk7Ci0gICAgaWYgKGV4Y2Vw
dGlvbikKLSAgICAgICAgcmV0dXJuIFtfY29udGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpl
eGNlcHRpb25dOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBFeHBlY3RlZDxCT09MLCBKU1Zh
bHVlUmVmPiByZXN1bHQgPSBwZXJmb3JtUHJvcGVydHlPcGVyYXRpb248Qk9PTD4oSlNPYmplY3RE
ZWxldGVQcm9wZXJ0eSwgSlNPYmplY3REZWxldGVQcm9wZXJ0eUtleSwgc2VsZiwga2V5KTsKKyAg
ICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFtfY29udGV4dCBib29sRnJvbU5vdGlmeUV4
Y2VwdGlvbjpyZXN1bHQuZXJyb3IoKV07CisgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpOwogfQog
Ci0tIChCT09MKWhhc1Byb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQorLSAoQk9PTClo
YXNQcm9wZXJ0eTooSlNWYWx1ZVByb3BlcnR5S2V5VHlwZSlrZXkKIHsKLSAgICBKU1ZhbHVlUmVm
IGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0
KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKLSAg
ICBpZiAoZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW19jb250ZXh0IGJvb2xGcm9tTm90aWZ5
RXhjZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgLy8gVGhlIEMtYXBpIGRvZXNuJ3QgcmV0dXJuIGFu
IGV4Y2VwdGlvbiB2YWx1ZSBmb3IgdGhlIHN0cmluZyB2ZXJzaW9uIG9mIGhhcyBwcm9wZXJ0eS4K
KyAgICBhdXRvIHN0cmluZ0hhc1Byb3BlcnR5ID0gW10gKEpTQ29udGV4dFJlZiBjdHgsIEpTT2Jq
ZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKikgLT4g
Qk9PTCB7CisgICAgICAgIHJldHVybiBKU09iamVjdEhhc1Byb3BlcnR5KGN0eCwgb2JqZWN0LCBw
cm9wZXJ0eU5hbWUpOworICAgIH07CiAKLSAgICBKU1N0cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdD
cmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXByb3BlcnR5TmFtZSk7Ci0g
ICAgQk9PTCByZXN1bHQgPSBKU09iamVjdEhhc1Byb3BlcnR5KFtfY29udGV4dCBKU0dsb2JhbENv
bnRleHRSZWZdLCBvYmplY3QsIG5hbWUpOwotICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKLSAg
ICByZXR1cm4gcmVzdWx0OworICAgIEV4cGVjdGVkPEJPT0wsIEpTVmFsdWVSZWY+IHJlc3VsdCA9
IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbjxCT09MPihzdHJpbmdIYXNQcm9wZXJ0eSwgSlNPYmpl
Y3RIYXNQcm9wZXJ0eUtleSwgc2VsZiwga2V5KTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAg
cmV0dXJuIFtfY29udGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpyZXN1bHQuZXJyb3IoKV07
CisgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpOwogfQogCi0tICh2b2lkKWRlZmluZVByb3BlcnR5
OihOU1N0cmluZyAqKXByb3BlcnR5IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0b3IKKy0gKHZvaWQp
ZGVmaW5lUHJvcGVydHk6KEpTVmFsdWVQcm9wZXJ0eUtleVR5cGUpa2V5IGRlc2NyaXB0b3I6KGlk
KWRlc2NyaXB0b3IKIHsKLSAgICBbW19jb250ZXh0IGdsb2JhbE9iamVjdF1bQCJPYmplY3QiXSBp
bnZva2VNZXRob2Q6QCJkZWZpbmVQcm9wZXJ0eSIgd2l0aEFyZ3VtZW50czpAWyBzZWxmLCBwcm9w
ZXJ0eSwgZGVzY3JpcHRvciBdXTsKKyAgICBbW19jb250ZXh0IGdsb2JhbE9iamVjdF1bQCJPYmpl
Y3QiXSBpbnZva2VNZXRob2Q6QCJkZWZpbmVQcm9wZXJ0eSIgd2l0aEFyZ3VtZW50czpAWyBzZWxm
LCBrZXksIGRlc2NyaXB0b3IgXV07CiB9CiAKIC0gKEpTVmFsdWUgKil2YWx1ZUF0SW5kZXg6KE5T
VUludGVnZXIpaW5kZXgKQEAgLTM3Miw2ICszODksMTEgQEAgTlNTdHJpbmcgKiBjb25zdCBKU1By
b3BlcnR5RGVzY3JpcHRvclNldEtleSA9IEAic2V0IjsKICAgICByZXR1cm4gSlNWYWx1ZUlzT2Jq
ZWN0KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlKTsKIH0KIAorLSAoQk9P
TClpc1N5bWJvbAoreworICAgIHJldHVybiBKU1ZhbHVlSXNTeW1ib2woW19jb250ZXh0IEpTR2xv
YmFsQ29udGV4dFJlZl0sIG1fdmFsdWUpOworfQorCiAtIChCT09MKWlzQXJyYXkKIHsKICAgICBy
ZXR1cm4gSlNWYWx1ZUlzQXJyYXkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFs
dWUpOwpAQCAtNTU0LDEzICs1NzYsNyBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNj
cmlwdG9yU2V0S2V5ID0gQCJzZXQiOwogCiAtIChKU1ZhbHVlICopb2JqZWN0Rm9yS2V5ZWRTdWJz
Y3JpcHQ6KGlkKWtleQogewotICAgIGlmICghW2tleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBj
bGFzc11dKSB7Ci0gICAgICAgIGtleSA9IFtbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6a2V5IGlu
Q29udGV4dDpfY29udGV4dF0gdG9TdHJpbmddOwotICAgICAgICBpZiAoIWtleSkKLSAgICAgICAg
ICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRleHQ6X2NvbnRleHRd
OwotICAgIH0KLQotICAgIHJldHVybiBbc2VsZiB2YWx1ZUZvclByb3BlcnR5OihOU1N0cmluZyAq
KWtleV07CisgICAgcmV0dXJuIFtzZWxmIHZhbHVlRm9yUHJvcGVydHk6a2V5XTsKIH0KIAogLSAo
SlNWYWx1ZSAqKW9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRleApAQCAt
NTY4LDE1ICs1ODQsOSBAQCBOU1N0cmluZyAqIGNvbnN0IEpTUHJvcGVydHlEZXNjcmlwdG9yU2V0
S2V5ID0gQCJzZXQiOwogICAgIHJldHVybiBbc2VsZiB2YWx1ZUF0SW5kZXg6aW5kZXhdOwogfQog
Ci0tICh2b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGZvcktleWVkU3Vic2NyaXB0OihOU09iamVj
dCA8TlNDb3B5aW5nPiAqKWtleQorLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBmb3JLZXll
ZFN1YnNjcmlwdDooaWQpa2V5CiB7Ci0gICAgaWYgKCFba2V5IGlzS2luZE9mQ2xhc3M6W05TU3Ry
aW5nIGNsYXNzXV0pIHsKLSAgICAgICAga2V5ID0gW1tKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpr
ZXkgaW5Db250ZXh0Ol9jb250ZXh0XSB0b1N0cmluZ107Ci0gICAgICAgIGlmICgha2V5KQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFtzZWxmIHNldFZhbHVlOm9iamVjdCBmb3JQ
cm9wZXJ0eTooTlNTdHJpbmcgKilrZXldOworICAgIFtzZWxmIHNldFZhbHVlOm9iamVjdCBmb3JQ
cm9wZXJ0eTprZXldOwogfQogCiAtICh2b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGF0SW5kZXhl
ZFN1YnNjcmlwdDooTlNVSW50ZWdlcilpbmRleApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNW
YWx1ZVJlZi5jcHAKaW5kZXggNzk1NTliZTkwNzk4NzE1MWIyZmE3ZDkzMTI2NDI0NTE4ODgxMGZk
Yy4uZGFjYTBlMWI0OWRkOGQ1MTJlNTY1ZGMxM2NjY2FmMmI5N2YyMDhiNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCkBAIC04Niw2ICs4Niw4IEBAIHN0YXRpYyBi
b29sIGV2ZXJub3RlSGFja05lZWRlZCgpCiAgICAgICAgIHJldHVybiBrSlNUeXBlTnVtYmVyOwog
ICAgIGlmIChqc1ZhbHVlLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBrSlNUeXBlU3RyaW5n
OworICAgIGlmIChqc1ZhbHVlLmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiBrSlNUeXBlU3lt
Ym9sOwogICAgIEFTU0VSVChqc1ZhbHVlLmlzT2JqZWN0KCkpOwogICAgIHJldHVybiBrSlNUeXBl
T2JqZWN0OwogfQpAQCAtMTYyLDYgKzE2NCwxOCBAQCBib29sIEpTVmFsdWVJc09iamVjdChKU0Nv
bnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQogICAgIHJldHVybiB0b0pTKGV4ZWMsIHZh
bHVlKS5pc09iamVjdCgpOwogfQogCitib29sIEpTVmFsdWVJc1N5bWJvbChKU0NvbnRleHRSZWYg
Y3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwor
CisgICAgcmV0dXJuIHRvSlMoZXhlYywgdmFsdWUpLmlzU3ltYm9sKCk7Cit9CisKIGJvb2wgSlNW
YWx1ZUlzQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkKIHsKICAgICBp
ZiAoIWN0eCkgewpAQCAtMzIwLDYgKzMzNCwyMiBAQCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlTnVt
YmVyKEpTQ29udGV4dFJlZiBjdHgsIGRvdWJsZSB2YWx1ZSkKICAgICByZXR1cm4gdG9SZWYoZXhl
YywganNOdW1iZXIocHVyaWZ5TmFOKHZhbHVlKSkpOwogfQogCitKU1ZhbHVlUmVmIEpTVmFsdWVN
YWtlU3ltYm9sKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIGRlc2NyaXB0aW9uKQorewor
ICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwor
ICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
Q0FUQ0hfU0NPUEUoZXhlYy0+dm0oKSk7CisKKyAgICBKU1N0cmluZyoganNEZXNjcmlwdGlvbiA9
IGpzU3RyaW5nKGV4ZWMsIGRlc2NyaXB0aW9uID8gZGVzY3JpcHRpb24tPnN0cmluZygpIDogU3Ry
aW5nKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAg
cmV0dXJuIHRvUmVmKGV4ZWMsIFN5bWJvbDo6Y3JlYXRlKGV4ZWMsIGpzRGVzY3JpcHRpb24pKTsK
K30KKwogSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZVN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1N0
cmluZ1JlZiBzdHJpbmcpCiB7CiAgICAgaWYgKCFjdHgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1ZhbHVlUmVmLmgKaW5kZXggOTgxNWRlNzgzYzBhZWUwNzNlM2E0NDhiZDBjN2NhZGQ0YTk1
MmMwNi4uMTJmMmRjYzA0NGU2ZThhZTMwYWMyMDMxZDBiMmRhNWIzNzNhZGIzYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmgKQEAgLTQyLDYgKzQyLDcgQEAKIEBjb25zdGFu
dCAgICAga0pTVHlwZU51bWJlciAgICAgQSBwcmltaXRpdmUgbnVtYmVyIHZhbHVlLgogQGNvbnN0
YW50ICAgICBrSlNUeXBlU3RyaW5nICAgICBBIHByaW1pdGl2ZSBzdHJpbmcgdmFsdWUuCiBAY29u
c3RhbnQgICAgIGtKU1R5cGVPYmplY3QgICAgIEFuIG9iamVjdCB2YWx1ZSAobWVhbmluZyB0aGF0
IHRoaXMgSlNWYWx1ZVJlZiBpcyBhIEpTT2JqZWN0UmVmKS4KK0Bjb25zdGFudCAgICAga0pTVHlw
ZVN5bWJvbCAgICAgQSBwcmltaXRpdmUgc3ltYm9sIHZhbHVlLgogKi8KIHR5cGVkZWYgZW51bSB7
CiAgICAga0pTVHlwZVVuZGVmaW5lZCwKQEAgLTQ5LDcgKzUwLDggQEAgdHlwZWRlZiBlbnVtIHsK
ICAgICBrSlNUeXBlQm9vbGVhbiwKICAgICBrSlNUeXBlTnVtYmVyLAogICAgIGtKU1R5cGVTdHJp
bmcsCi0gICAga0pTVHlwZU9iamVjdAorICAgIGtKU1R5cGVPYmplY3QsCisgICAga0pTVHlwZVN5
bWJvbCBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goSlNDX01BQ19UQkEpLCBpb3MoSlNDX0lPU19U
QkEpKQogfSBKU1R5cGU7CiAKIC8qIQpAQCAtODAsNyArODIsNyBAQCB0eXBlZGVmIGVudW0gewog
ICAgIGtKU1R5cGVkQXJyYXlUeXBlRmxvYXQ2NEFycmF5LAogICAgIGtKU1R5cGVkQXJyYXlUeXBl
QXJyYXlCdWZmZXIsCiAgICAga0pTVHlwZWRBcnJheVR5cGVOb25lLAotfSBKU1R5cGVkQXJyYXlU
eXBlIENGX0VOVU1fQVZBSUxBQkxFKDEwXzEyLCAxMF8wKTsKK30gSlNUeXBlZEFycmF5VHlwZSBK
U0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAjaWZkZWYgX19j
cGx1c3BsdXMKIGV4dGVybiAiQyIgewpAQCAtMTQ5LDYgKzE1MSwxNiBAQCBKU19FWFBPUlQgYm9v
bCBKU1ZhbHVlSXNTdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSk7CiAq
LwogSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzT2JqZWN0KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFs
dWVSZWYgdmFsdWUpOwogCisvKiEKK0BmdW5jdGlvbgorQGFic3RyYWN0ICAgICAgIFRlc3RzIHdo
ZXRoZXIgYSBKYXZhU2NyaXB0IHZhbHVlJ3MgdHlwZSBpcyB0aGUgc3ltYm9sIHR5cGUuCitAcGFy
YW0gY3R4ICAgICAgVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KK0BwYXJhbSB2YWx1ZSAg
ICBUaGUgSlNWYWx1ZSB0byB0ZXN0LgorQHJlc3VsdCAgICAgICAgIHRydWUgaWYgdmFsdWUncyB0
eXBlIGlzIHRoZSBzeW1ib2wgdHlwZSwgb3RoZXJ3aXNlIGZhbHNlLgorKi8KK0pTX0VYUE9SVCBi
b29sIEpTVmFsdWVJc1N5bWJvbChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKSBK
U0NfQVBJX0FWQUlMQUJMRShtYWNvc3goSlNDX01BQ19UQkEpLCBpb3MoSlNDX0lPU19UQkEpKTsK
KworCiAvKiEKIEBmdW5jdGlvbgogQGFic3RyYWN0IFRlc3RzIHdoZXRoZXIgYSBKYXZhU2NyaXB0
IHZhbHVlIGlzIGFuIG9iamVjdCB3aXRoIGEgZ2l2ZW4gY2xhc3MgaW4gaXRzIGNsYXNzIGNoYWlu
LgpAQCAtMTY2LDcgKzE3OCw3IEBAIEpTX0VYUE9SVCBib29sIEpTVmFsdWVJc09iamVjdE9mQ2xh
c3MoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNDbGFzCiBAcGFyYW0gdmFs
dWUgICAgVGhlIEpTVmFsdWUgdG8gdGVzdC4KIEByZXN1bHQgICAgICAgICB0cnVlIGlmIHZhbHVl
IGlzIGFuIGFycmF5LCBvdGhlcndpc2UgZmFsc2UuCiAqLwotSlNfRVhQT1JUIGJvb2wgSlNWYWx1
ZUlzQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkgQ0ZfQVZBSUxBQkxF
KDEwXzExLCA5XzApOworSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzQXJyYXkoSlNDb250ZXh0UmVm
IGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwg
aW9zKDkuMCkpOwogCiAvKiEKIEBmdW5jdGlvbgpAQCAtMTc1LDcgKzE4Nyw3IEBAIEpTX0VYUE9S
VCBib29sIEpTVmFsdWVJc0FycmF5KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUp
IENGX0FWQUlMQUJMRSgxCiBAcGFyYW0gdmFsdWUgICAgVGhlIEpTVmFsdWUgdG8gdGVzdC4KIEBy
ZXN1bHQgICAgICAgICB0cnVlIGlmIHZhbHVlIGlzIGEgZGF0ZSwgb3RoZXJ3aXNlIGZhbHNlLgog
Ki8KLUpTX0VYUE9SVCBib29sIEpTVmFsdWVJc0RhdGUoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1
ZVJlZiB2YWx1ZSkgQ0ZfQVZBSUxBQkxFKDEwXzExLCA5XzApOworSlNfRVhQT1JUIGJvb2wgSlNW
YWx1ZUlzRGF0ZShKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKSBKU0NfQVBJX0FW
QUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CiAKIC8qIQogQGZ1bmN0aW9uCkBAIC0x
ODUsNyArMTk3LDcgQEAgSlNfRVhQT1JUIGJvb2wgSlNWYWx1ZUlzRGF0ZShKU0NvbnRleHRSZWYg
Y3R4LCBKU1ZhbHVlUmVmIHZhbHVlKSBDRl9BVkFJTEFCTEUoMTAKIEBwYXJhbSBleGNlcHRpb24g
ICAgQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRp
b24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNl
cHRpb24uCiBAcmVzdWx0ICAgICAgICAgICAgIEEgdmFsdWUgb2YgdHlwZSBKU1R5cGVkQXJyYXlU
eXBlIHRoYXQgaWRlbnRpZmllcyB2YWx1ZSdzIFR5cGVkIEFycmF5IHR5cGUsIG9yIGtKU1R5cGVk
QXJyYXlUeXBlTm9uZSBpZiB0aGUgdmFsdWUgaXMgbm90IGEgVHlwZWQgQXJyYXkgb2JqZWN0Lgog
ICovCi1KU19FWFBPUlQgSlNUeXBlZEFycmF5VHlwZSBKU1ZhbHVlR2V0VHlwZWRBcnJheVR5cGUo
SlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KSBDRl9BVkFJTEFCTEUoMTBfMTIsIDEwXzApOworSlNfRVhQT1JUIEpTVHlwZWRBcnJheVR5cGUg
SlNWYWx1ZUdldFR5cGVkQXJyYXlUeXBlKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFs
dWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEy
KSwgaW9zKDEwLjApKTsKIAogLyogQ29tcGFyaW5nIHZhbHVlcyAqLwogCkBAIC0yNTcsNiArMjY5
LDE1IEBAIEpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlQm9vbGVhbihKU0NvbnRleHRS
ZWYgY3R4LCBib29sIGJvb2xlYW4pOwogKi8KIEpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpTVmFsdWVN
YWtlTnVtYmVyKEpTQ29udGV4dFJlZiBjdHgsIGRvdWJsZSBudW1iZXIpOwogCisvKiEKK0BmdW5j
dGlvbgorQGFic3RyYWN0ICAgICAgICAgICAgQ3JlYXRlcyBhIEphdmFTY3JpcHQgdmFsdWUgb2Yg
dGhlIHN5bWJvbCB0eXBlLgorQHBhcmFtIGN0eCAgICAgICAgICAgVGhlIGV4ZWN1dGlvbiBjb250
ZXh0IHRvIHVzZS4KK0BwYXJhbSBkZXNjcmlwdGlvbiAgIEEgZGVzY3JpcHRpb24gb2YgdGhlIG5l
d2x5IGNyZWF0ZWQgc3ltYm9sIHZhbHVlLgorQHJlc3VsdCAgICAgICAgICAgICAgQSB1bmlxdWUg
SlNWYWx1ZSBvZiB0aGUgc3ltYm9sIHR5cGUsIHdob3NlIGRlc2NyaXB0aW9uIG1hdGNoZXMgdGhl
IG9uZSBwcm92aWRlZC4KKyovCitKU19FWFBPUlQgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZVN5bWJv
bChKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBkZXNjcmlwdGlvbik7CisKIC8qIQogQGZ1
bmN0aW9uCiBAYWJzdHJhY3QgICAgICAgQ3JlYXRlcyBhIEphdmFTY3JpcHQgdmFsdWUgb2YgdGhl
IHN0cmluZyB0eXBlLgpAQCAtMjc2LDcgKzI5Nyw3IEBAIEpTX0VYUE9SVCBKU1ZhbHVlUmVmIEpT
VmFsdWVNYWtlU3RyaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHN0cmluZyk7CiAg
QHBhcmFtIHN0cmluZyAgIFRoZSBKU1N0cmluZyBjb250YWluaW5nIHRoZSBKU09OIHN0cmluZyB0
byBiZSBwYXJzZWQuCiAgQHJlc3VsdCAgICAgICAgIEEgSlNWYWx1ZSBjb250YWluaW5nIHRoZSBw
YXJzZWQgdmFsdWUsIG9yIE5VTEwgaWYgdGhlIGlucHV0IGlzIGludmFsaWQuCiAgKi8KLUpTX0VY
UE9SVCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlRnJvbUpTT05TdHJpbmcoSlNDb250ZXh0UmVmIGN0
eCwgSlNTdHJpbmdSZWYgc3RyaW5nKSBDRl9BVkFJTEFCTEUoMTBfNywgN18wKTsKK0pTX0VYUE9S
VCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlRnJvbUpTT05TdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwg
SlNTdHJpbmdSZWYgc3RyaW5nKSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuNyksIGlvcyg3
LjApKTsKIAogLyohCiAgQGZ1bmN0aW9uCkBAIC0yODcsNyArMzA4LDcgQEAgSlNfRVhQT1JUIEpT
VmFsdWVSZWYgSlNWYWx1ZU1ha2VGcm9tSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1N0
cmluZ1JlZiBzdHIKICBAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYg
aW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3Ug
ZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgogIEByZXN1bHQgICAgICAgICBBIEpT
U3RyaW5nIHdpdGggdGhlIHJlc3VsdCBvZiBzZXJpYWxpemF0aW9uLCBvciBOVUxMIGlmIGFuIGV4
Y2VwdGlvbiBpcyB0aHJvd24uCiAgKi8KLUpTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU1ZhbHVlQ3Jl
YXRlSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlLCB1bnNpZ25l
ZCBpbmRlbnQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgQ0ZfQVZBSUxBQkxFKDEwXzcsIDdfMCk7
CitKU19FWFBPUlQgSlNTdHJpbmdSZWYgSlNWYWx1ZUNyZWF0ZUpTT05TdHJpbmcoSlNDb250ZXh0
UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgdW5zaWduZWQgaW5kZW50LCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC43KSwgaW9zKDcuMCkpOwogCiAv
KiBDb252ZXJ0aW5nIHRvIHByaW1pdGl2ZSB2YWx1ZXMgKi8KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9XZWJLaXRBdmFpbGFiaWxpdHkuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvV2ViS2l0QXZhaWxhYmlsaXR5LmgKaW5kZXggODIyNzUyMDNkYzk4MDE4MzMx
YTkxYmI5NWI5ZDZkYjE2ZTU5ZjlhYS4uMGY2YWZiNmIxZGJkNjE5ODFkZWRlZDBhMWU1YjI0Yzhm
ZGNiNTNmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9XZWJLaXRBdmFp
bGFiaWxpdHkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL1dlYktpdEF2YWlsYWJp
bGl0eS5oCkBAIC02OSwxNSArNjksMTIgQEAKICNlbmRpZiAvKiAhVEFSR0VUX09TX0lQSE9ORSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMTAwICovCiAKICNpZiBkZWZp
bmVkKEJVSUxESU5HX0dUS19fKQotI3VuZGVmIENGX0FWQUlMQUJMRQotI2RlZmluZSBDRl9BVkFJ
TEFCTEUoX21hYywgX2lvcykKLSN1bmRlZiBDRl9FTlVNX0FWQUlMQUJMRQotI2RlZmluZSBDRl9F
TlVNX0FWQUlMQUJMRShfbWFjLCBfaW9zKQorI3VuZGVmIEpTQ19BUElfQVZBSUxBQkxFCisjZGVm
aW5lIEpTQ19BUElfQVZBSUxBQkxFKC4uLikKICNlbmRpZgogCiAjZWxzZQotI2RlZmluZSBDRl9B
VkFJTEFCTEUoX21hYywgX2lvcykKLSNkZWZpbmUgQ0ZfRU5VTV9BVkFJTEFCTEUoX21hYywgX2lv
cykKKyNkZWZpbmUgSlNDX0FQSV9BVkFJTEFCTEUoLi4uKQogI2VuZGlmCiAKICNlbmRpZiAvKiBf
X1dlYktpdEF2YWlsYWJpbGl0eV9fICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL3Rlc3RzL0N1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lm1tIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9DdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVz
dC5tbQppbmRleCA1MzE4OGZiYTg4Zjk1NDI3YzhhZTkzMzlhYWM4OGQwYzY4YTE3ZWIxLi5iZDdl
OGE2ODYwN2U1ZjhkZDc4ZDk0NmJkZGE3NGE2MWQyNWY3ZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0N1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0
Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNp
ZGVCbG9ja0dldHRlclRlc3QubW0KQEAgLTIzLDYgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Q3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QuaCIKIAogI2lmIEpTQ19PQkpDX0FQSV9F
TkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0N1c3Rv
bUdsb2JhbE9iamVjdENsYXNzVGVzdC5jIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy9DdXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuYwppbmRleCBhYzU0NzFhNjc0MWJmZjkzYzcw
MGJmM2IzYWFjNmVkMzg3NDlmMGJmLi45ZmZlMjMzZjRiNzk2ZjVhMGI5NWIzNzRhNDgzYjAxNGVk
NWJkZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0N1c3Rv
bUdsb2JhbE9iamVjdENsYXNzVGVzdC5jCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
dGVzdHMvQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmMKQEAgLTIzLDYgKzIzLDcgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkN1c3Rv
bUdsb2JhbE9iamVjdENsYXNzVGVzdC5oIgogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNP
YmplY3RSZWZQcml2YXRlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL0RhdGVUZXN0cy5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRGF0
ZVRlc3RzLm1tCmluZGV4IDJiZGEzYWRhNmIxNThlMDEwOGFlYzVmNDJlNzY1Mzk3MzBlYzJlZDku
LjY2NTIxNzdkZTQxN2IxMmVlOTRkZTg4M2I4ZmIwYmQ3MDlkZDY3MmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRGF0ZVRlc3RzLm1tCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRGF0ZVRlc3RzLm1tCkBAIC0yMyw2ICsyMyw3IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJEYXRlVGVzdHMuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTRXhw
b3J0VGVzdHMubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTRXhwb3J0VGVz
dHMubW0KaW5kZXggMWNlYzkzOTc5YzQxNmY0YzBmMDQ5MDVlZTc0NzZlNzg2NGQ4NDI1Mi4uZGZk
Yzk1ZjQ3YmM3NzViMDhiMzY2NzNkMGJiYmZlNmJjZTM0MWI3OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU0V4cG9ydFRlc3RzLm1tCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNFeHBvcnRUZXN0cy5tbQpAQCAtMjMsNiArMjMsNyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbXBvcnQgImNv
bmZpZy5oIgogI2ltcG9ydCAiSlNFeHBvcnRUZXN0cy5oIgogCiAjaW1wb3J0IDxvYmpjL3J1bnRp
bWUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNOb2Rl
LmMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZS5jCmluZGV4IGQwYTBk
YzNlYzcyMzcyNTdmYTE4MGQwNTE0Zjc0YzZhZDJlNGI1YjcuLmJjMDA0MGFlNmJhNDA5ODUzODM4
Y2FlYWQ2YTIzODRlYzk5OTAwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvSlNOb2RlLmMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9K
U05vZGUuYwpAQCAtMjMsNyArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2luY2x1
ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiSlNO
b2RlLmgiCiAjaW5jbHVkZSAiSlNOb2RlTGlzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS90ZXN0cy9KU05vZGVMaXN0LmMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL0pTTm9kZUxpc3QuYwppbmRleCBmMDM3ZTA5NGEwOWUxYTIyNjA0NGVlZDFmMjNk
MGE1MTg2MWEzZjRiLi45OWEzMjk1MThlNmE5YTFjZmIxMjY3NjQ3MzlhMGI2OWNmYTVkNDBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZUxpc3QuYwor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZUxpc3QuYwpAQCAtMjMs
NyArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgorI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVk
ZSAiSlNOb2RlTGlzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90
ZXN0cy9Ob2RlLmMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL05vZGUuYwppbmRl
eCBkYjY4N2U5NTJmMWE5ZDhjMTM0YjkwNjc3ZDI5YTY0MDZkOGRiMWEyLi44ZjdkMDZiMmFhNGFk
ZTI2OWQ2MWVmYzYxYzAxODRjY2MzMTk1YTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL05vZGUuYworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL05vZGUuYwpAQCAtMjMsNyArMjMsOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAorI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5vZGUuaCIKKwogI2luY2x1ZGUgPHN0ZGRlZi5o
PgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL3Rlc3RzL05vZGVMaXN0LmMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3Rz
L05vZGVMaXN0LmMKaW5kZXggNjlmNGNkNWM0ODczMTJiZDYzOTk2MzRmYjA2ODRhMTIyNjY0ZGMx
OC4uMjJkMzg3YzBkNDIyNmZiYWQxMTk3YzY0ODMxY2Q1N2FmMzFhZmRmNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9Ob2RlTGlzdC5jCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTm9kZUxpc3QuYwpAQCAtMjMsNiArMjMsNyBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5vZGVM
aXN0LmgiCiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvbWluaWRvbS5jIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90
ZXN0cy9taW5pZG9tLmMKaW5kZXggMDJiNDFhOWM3ZjlkYTExM2IwMDNkNGY5MTlhNDIwOGQzODli
NzhiZC4uNDFmMThjZGY3MjkwNDM2OTBjZmU3NzNiYTQwZDhiNWI0NGNhNzA5OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9taW5pZG9tLmMKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9taW5pZG9tLmMKQEAgLTI0LDcgKzI0LDcgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAogICovCiAKLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRl
ICJjb25maWcuaCIKIAogI2luY2x1ZGUgIkpTQ29udGV4dFJlZi5oIgogI2luY2x1ZGUgIkpTTm9k
ZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBp
LmMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwppbmRleCA3YmVj
ZGZlMDQxMTViZjk0ODllZjg0MTk3YzE2NzFjNWI4M2JhNGUyLi45ZmI2OWE2NTc4Yjg3ZDVhY2Ey
NjczYWIzNWViODdhNzM2ZmViMzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL3Rlc3RhcGkuYworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3Rz
L3Rlc3RhcGkuYwpAQCAtMjMsNyArMjMsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW5j
bHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjZGVmaW5lIEFTU0VSVF9ESVNBQkxFRCAwCisjaW5jbHVk
ZSAiY29uZmlnLmgiCiAKICNpZiBVU0UoQ0YpCiAjaW5jbHVkZSAiSmF2YVNjcmlwdENvcmUuaCIK
QEAgLTQ0LDcgKzQ1LDYgQEAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmcu
aD4KICNpbmNsdWRlIDx0aW1lLmg+Ci0jZGVmaW5lIEFTU0VSVF9ESVNBQkxFRCAwCiAjaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogI2lmIE9TKFdJTkRPV1MpCkBAIC02Niw2ICs2Niw4IEBA
CiB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKHZvaWQpOwogI2VuZGlmCiAKK2ludCB0ZXN0Q0FQSVZp
YUNwcCh2b2lkKTsKKwogYm9vbCBhc3NlcnRUcnVlKGJvb2wgdmFsdWUsIGNvbnN0IGNoYXIqIG1l
c3NhZ2UpOwogCiBzdGF0aWMgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQ7CkBAIC0xMzYxLDYg
KzEzNjMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQogI2lmIEpTQ19PQkpD
X0FQSV9FTkFCTEVECiAgICAgdGVzdE9iamVjdGl2ZUNBUEkoKTsKICNlbmRpZgorICAgIFJFTEVB
U0VfQVNTRVJUKCF0ZXN0Q0FQSVZpYUNwcCgpKTsKIAogICAgIGNvbnN0IGNoYXIgKnNjcmlwdFBh
dGggPSAidGVzdGFwaS5qcyI7CiAgICAgaWYgKGFyZ2MgPiAxKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NWMzNmY4OWVjMmNlZmU1
MWU3ZGI1OWMzODU3MWE1ODAzMjYzMjg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmNwcApAQCAtMCwwICsxLDM5NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkFQSUNhc3QuaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Lmg+CisjaW5jbHVkZSA8d3RmL0RhdGFMb2cu
aD4KKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK2V4dGVybiAiQyIgaW50IHRlc3RDQVBJVmlh
Q3BwKCk7CisKK2NsYXNzIEFQSVN0cmluZyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQVBJ
U3RyaW5nKTsKK3B1YmxpYzoKKworICAgIEFQSVN0cmluZyhjb25zdCBjaGFyKiBzdHJpbmcpCisg
ICAgICAgIDogbV9zdHJpbmcoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc3RyaW5nKSkK
KyAgICB7CisgICAgfQorCisgICAgfkFQSVN0cmluZygpCisgICAgeworICAgICAgICBKU1N0cmlu
Z1JlbGVhc2UobV9zdHJpbmcpOworICAgIH0KKworICAgIG9wZXJhdG9yIEpTU3RyaW5nUmVmKCkg
eyByZXR1cm4gbV9zdHJpbmc7IH0KKworcHJpdmF0ZToKKyAgICBKU1N0cmluZ1JlZiBtX3N0cmlu
ZzsKK307CisKK2NsYXNzIEFQSUNvbnRleHQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFQ
SUNvbnRleHQpOworcHVibGljOgorCisgICAgQVBJQ29udGV4dCgpCisgICAgICAgIDogbV9jb250
ZXh0KEpTR2xvYmFsQ29udGV4dENyZWF0ZShudWxscHRyKSkKKyAgICB7CisgICAgICAgIEFQSVN0
cmluZyBwcmludCgicHJpbnQiKTsKKyAgICAgICAgSlNPYmplY3RSZWYgcHJpbnRGdW5jdGlvbiA9
IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrKG1fY29udGV4dCwgcHJpbnQsIFtdIChK
U0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYsIHNpemVfdCBhcmd1bWVu
dENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKikgeworCisg
ICAgICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyBpKyspCisgICAgICAgICAg
ICAgICAgZGF0YUxvZyh0b0pTKGV4ZWMsIGFyZ3VtZW50c1tpXSkpOworICAgICAgICAgICAgZGF0
YUxvZ0xuKCk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShtX2NvbnRleHQsIEpT
Q29udGV4dEdldEdsb2JhbE9iamVjdChtX2NvbnRleHQpLCBwcmludCwgcHJpbnRGdW5jdGlvbiwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lLCBudWxscHRyKTsKKyAgICB9CisKKyAgICB+QVBJQ29u
dGV4dCgpCisgICAgeworICAgICAgICBKU0dsb2JhbENvbnRleHRSZWxlYXNlKG1fY29udGV4dCk7
CisgICAgfQorCisgICAgb3BlcmF0b3IgSlNHbG9iYWxDb250ZXh0UmVmKCkgeyByZXR1cm4gbV9j
b250ZXh0OyB9CisKK3ByaXZhdGU6CisgICAgSlNHbG9iYWxDb250ZXh0UmVmIG1fY29udGV4dDsK
K307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBBUElWZWN0b3IgOiBwcm90ZWN0ZWQg
VmVjdG9yPFQ+IHsKKyAgICB1c2luZyBCYXNlID0gVmVjdG9yPFQ+OworcHVibGljOgorICAgIEFQ
SVZlY3RvcihBUElDb250ZXh0JiBjb250ZXh0KQorICAgICAgICA6IEJhc2UoKQorICAgICAgICAs
IG1fY29udGV4dChjb250ZXh0KQorICAgIHsKKyAgICB9CisKKyAgICB+QVBJVmVjdG9yKCkKKyAg
ICB7CisgICAgICAgIGZvciAoYXV0byYgdmFsdWUgOiAqdGhpcykKKyAgICAgICAgICAgIEpTVmFs
dWVVbnByb3RlY3QobV9jb250ZXh0LCB2YWx1ZSk7CisgICAgfQorCisgICAgdXNpbmcgVmVjdG9y
PFQ+OjpvcGVyYXRvcltdOworICAgIHVzaW5nIFZlY3RvcjxUPjo6c2l6ZTsKKyAgICB1c2luZyBW
ZWN0b3I8VD46OmJlZ2luOworICAgIHVzaW5nIFZlY3RvcjxUPjo6ZW5kOworICAgIHVzaW5nIHR5
cGVuYW1lIFZlY3RvcjxUPjo6aXRlcmF0b3I7CisKKyAgICB2b2lkIGFwcGVuZChUIHZhbHVlKQor
ICAgIHsKKyAgICAgICAgSlNWYWx1ZVByb3RlY3QobV9jb250ZXh0LCB2YWx1ZSk7CisgICAgICAg
IEJhc2U6OmFwcGVuZChXVEZNb3ZlKHZhbHVlKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEFQ
SUNvbnRleHQmIG1fY29udGV4dDsKK307CisKK2NsYXNzIFRlc3RBUEkgeworcHVibGljOgorICAg
IGludCBydW4oKTsKK3ByaXZhdGU6CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBTdHJpbmdz
PgorICAgIGJvb2wgY2hlY2soYm9vbCBjb25kaXRpb24sIFN0cmluZ3MuLi4gbWVzc2FnZSk7CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0Z1bmN0b3IsIHR5cGVuYW1lIEFQSUZ1bmN0b3I+Cisg
ICAgdm9pZCBjaGVja0pTQW5kQVBJTWF0Y2goY29uc3QgSlNGdW5jdG9yJiwgY29uc3QgQVBJRnVu
Y3RvciYsIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKTsKKworICAgIC8vIEhlbHBlciBtZXRob2Rz
LgorICAgIHVzaW5nIFNjcmlwdFJlc3VsdCA9IEV4cGVjdGVkPEpTVmFsdWVSZWYsIEpTVmFsdWVS
ZWY+OworICAgIFNjcmlwdFJlc3VsdCBldmFsdWF0ZVNjcmlwdChjb25zdCBjaGFyKiBzY3JpcHQs
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QgPSBudWxscHRyKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBBcmd1bWVudFR5cGVzPgorICAgIFNjcmlwdFJlc3VsdCBjYWxsRnVuY3Rpb24oY29uc3Qg
Y2hhciogZnVuY3Rpb25Tb3VyY2UsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKTsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVzPgorICAgIGJvb2wgZnVuY3Rpb25SZXR1
cm5zVHJ1ZShjb25zdCBjaGFyKiBmdW5jdGlvblNvdXJjZSwgQXJndW1lbnRUeXBlcy4uLiBhcmd1
bWVudHMpOworCisgICAgLy8gV2F5cyB0byBtYWtlIHNldHMgb2YgaW50ZXJlc3RpbmcgdGhpbmdz
LgorICAgIEFQSVZlY3RvcjxKU09iamVjdFJlZj4gaW50ZXJlc3RpbmdPYmplY3RzKCk7CisgICAg
QVBJVmVjdG9yPEpTVmFsdWVSZWY+IGludGVyZXN0aW5nS2V5cygpOworCisgICAgaW50IGZhaWxl
ZCB7IDAgfTsKKyAgICBBUElDb250ZXh0IGNvbnRleHQ7Cit9OworCitpbnQgdGVzdENBUElWaWFD
cHAoKQoreworICAgIFRlc3RBUEkgdGVzdGVyOworICAgIHJldHVybiB0ZXN0ZXIucnVuKCk7Cit9
CisKK1Rlc3RBUEk6OlNjcmlwdFJlc3VsdCBUZXN0QVBJOjpldmFsdWF0ZVNjcmlwdChjb25zdCBj
aGFyKiBzY3JpcHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QpCit7CisgICAgQVBJU3RyaW5nIHNj
cmlwdEFQSVN0cmluZyhzY3JpcHQpOworICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0
cjsKKworICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBz
Y3JpcHRBUElTdHJpbmcsIHRoaXNPYmplY3QsIG51bGxwdHIsIDAsICZleGNlcHRpb24pOworICAg
IGlmIChleGNlcHRpb24pCisgICAgICAgIHJldHVybiBVbmV4cGVjdGVkPEpTVmFsdWVSZWY+KGV4
Y2VwdGlvbik7CisgICAgcmV0dXJuIFNjcmlwdFJlc3VsdChyZXN1bHQpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVzPgorVGVzdEFQSTo6U2NyaXB0UmVzdWx0IFRlc3RB
UEk6OmNhbGxGdW5jdGlvbihjb25zdCBjaGFyKiBmdW5jdGlvblNvdXJjZSwgQXJndW1lbnRUeXBl
cy4uLiBhcmd1bWVudHMpCit7CisgICAgSlNWYWx1ZVJlZiBmdW5jdGlvbjsKKyAgICB7CisgICAg
ICAgIFNjcmlwdFJlc3VsdCBmdW5jdGlvblJlc3VsdCA9IGV2YWx1YXRlU2NyaXB0KGZ1bmN0aW9u
U291cmNlKTsKKyAgICAgICAgaWYgKCFmdW5jdGlvblJlc3VsdCkKKyAgICAgICAgICAgIHJldHVy
biBmdW5jdGlvblJlc3VsdDsKKyAgICAgICAgZnVuY3Rpb24gPSBmdW5jdGlvblJlc3VsdC52YWx1
ZSgpOworICAgIH0KKworICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0cjsKKyAgICBp
ZiAoSlNPYmplY3RSZWYgZnVuY3Rpb25PYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwg
ZnVuY3Rpb24sICZleGNlcHRpb24pKSB7CisgICAgICAgIEpTVmFsdWVSZWYgYXJnc1tzaXplb2Yu
Li4oYXJndW1lbnRzKV0geyBhcmd1bWVudHMuLi4gfTsKKyAgICAgICAgSlNWYWx1ZVJlZiByZXN1
bHQgPSBKU09iamVjdENhbGxBc0Z1bmN0aW9uKGNvbnRleHQsIGZ1bmN0aW9uT2JqZWN0LCBmdW5j
dGlvbk9iamVjdCwgc2l6ZW9mLi4uKGFyZ3VtZW50cyksIGFyZ3MsICZleGNlcHRpb24pOworICAg
ICAgICBpZiAoIWV4Y2VwdGlvbikKKyAgICAgICAgICAgIHJldHVybiBTY3JpcHRSZXN1bHQocmVz
dWx0KTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVChleGNlcHRpb24pOworICAgIHJldHVy
biBVbmV4cGVjdGVkPEpTVmFsdWVSZWY+KGV4Y2VwdGlvbik7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lLi4uIEFyZ3VtZW50VHlwZXM+Citib29sIFRlc3RBUEk6OmZ1bmN0aW9uUmV0dXJuc1RydWUo
Y29uc3QgY2hhciogZnVuY3Rpb25Tb3VyY2UsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKQor
eworICAgIEpTVmFsdWVSZWYgdHJ1ZVZhbHVlID0gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQs
IHRydWUpOworICAgIFNjcmlwdFJlc3VsdCByZXN1bHQgPSBjYWxsRnVuY3Rpb24oZnVuY3Rpb25T
b3VyY2UsIGFyZ3VtZW50cy4uLik7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gSlNWYWx1ZUlzU3RyaWN0RXF1YWwoY29udGV4dCwgdHJ1ZVZhbHVl
LCByZXN1bHQudmFsdWUoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ3M+Citi
b29sIFRlc3RBUEk6OmNoZWNrKGJvb2wgY29uZGl0aW9uLCBTdHJpbmdzLi4uIG1lc3NhZ2VzKQor
eworICAgIGlmICghY29uZGl0aW9uKSB7CisgICAgICAgIGRhdGFMb2dMbihtZXNzYWdlcy4uLiwg
IjogRkFJTEVEIik7CisgICAgICAgIGZhaWxlZCsrOworICAgIH0gZWxzZQorICAgICAgICBkYXRh
TG9nTG4obWVzc2FnZXMuLi4sICI6IFBBU1NFRCIpOworCisgICAgcmV0dXJuIGNvbmRpdGlvbjsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgSlNGdW5jdG9yLCB0eXBlbmFtZSBBUElGdW5jdG9yPgor
dm9pZCBUZXN0QVBJOjpjaGVja0pTQW5kQVBJTWF0Y2goY29uc3QgSlNGdW5jdG9yJiBqc0Z1bmN0
b3IsIGNvbnN0IEFQSUZ1bmN0b3ImIGFwaUZ1bmN0b3IsIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9u
KQoreworICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0cjsKKyAgICBKU1ZhbHVlUmVm
IHJlc3VsdCA9IGFwaUZ1bmN0b3IoJmV4Y2VwdGlvbik7CisgICAgU2NyaXB0UmVzdWx0IGpzUmVz
dWx0ID0ganNGdW5jdG9yKCk7CisgICAgaWYgKCFqc1Jlc3VsdCkgeworICAgICAgICBjaGVjayhl
eGNlcHRpb24sICJKUyBhbmQgQVBJIGNhbGxzIHNob3VsZCBib3RoIHRocm93IGFuIGV4Y2VwdGlv
biB3aGlsZSAiLCBkZXNjcmlwdGlvbik7CisgICAgICAgIGNoZWNrKGZ1bmN0aW9uUmV0dXJuc1Ry
dWUoIihmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhLmNvbnN0cnVjdG9yID09PSBiLmNvbnN0cnVj
dG9yOyB9KSIsIGV4Y2VwdGlvbiwganNSZXN1bHQuZXJyb3IoKSksICJKUyBhbmQgQVBJIGNhbGxz
IHNob3VsZCBib3RoIHRocm93IHRoZSBzYW1lIGV4Y2VwdGlvbiB3aGlsZSAiLCBkZXNjcmlwdGlv
bik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY2hlY2soIWV4Y2VwdGlvbiwgIkpTIGFuZCBBUEkg
Y2FsbHMgc2hvdWxkIGJvdGggbm90IHRocm93IGFuIGV4Y2VwdGlvbiB3aGlsZSAiLCBkZXNjcmlw
dGlvbik7CisgICAgICAgIGNoZWNrKEpTVmFsdWVJc1N0cmljdEVxdWFsKGNvbnRleHQsIHJlc3Vs
dCwganNSZXN1bHQudmFsdWUoKSksICJKUyByZXN1bHQgYW5kIEFQSSBjYWxscyBzaG91bGQgcmV0
dXJuIHRoZSBzYW1lIHZhbHVlIHdoaWxlICIsIGRlc2NyaXB0aW9uKTsKKyAgICB9Cit9CisKK0FQ
SVZlY3RvcjxKU09iamVjdFJlZj4gVGVzdEFQSTo6aW50ZXJlc3RpbmdPYmplY3RzKCkKK3sKKyAg
ICBBUElWZWN0b3I8SlNPYmplY3RSZWY+IHJlc3VsdChjb250ZXh0KTsKKyAgICBKU09iamVjdFJl
ZiBhcnJheSA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBldmFsdWF0ZVNjcmlwdCgKKyAgICAg
ICAgIlt7fSwgW10sIHsgW1N5bWJvbC5pdGVyYXRvcl06IDEgfSwgbmV3IERhdGUoKSwgbmV3IFN0
cmluZygnc3RyJyksIG5ldyBNYXAoKSwgbmV3IFNldCgpLCBuZXcgV2Vha01hcCgpLCBuZXcgV2Vh
a1NldCgpLCBuZXcgRXJyb3IoKSwgbmV3IE51bWJlcig0MiksIG5ldyBCb29sZWFuKCksIHsgZ2V0
IGxlbmd0aCgpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gfV07IikudmFsdWUoKSwgbnVsbHB0cik7
CisKKyAgICBBUElTdHJpbmcgbGVuZ3RoU3RyaW5nKCJsZW5ndGgiKTsKKyAgICB1bnNpZ25lZCBs
ZW5ndGggPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eShjb250
ZXh0LCBhcnJheSwgbGVuZ3RoU3RyaW5nLCBudWxscHRyKSwgbnVsbHB0cik7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIEpTT2JqZWN0UmVmIG9i
amVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBKU09iamVjdEdldFByb3BlcnR5QXRJbmRl
eChjb250ZXh0LCBhcnJheSwgaSwgbnVsbHB0ciksIG51bGxwdHIpOworICAgICAgICBBU1NFUlQo
b2JqZWN0KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChvYmplY3QpOworICAgIH0KKworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK0FQSVZlY3RvcjxKU1ZhbHVlUmVmPiBUZXN0QVBJOjppbnRlcmVz
dGluZ0tleXMoKQoreworICAgIEFQSVZlY3RvcjxKU1ZhbHVlUmVmPiByZXN1bHQoY29udGV4dCk7
CisgICAgSlNPYmplY3RSZWYgYXJyYXkgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgZXZhbHVh
dGVTY3JpcHQoIlt7fSwgW10sIDEsIFN5bWJvbC5pdGVyYXRvciwgJ2xlbmd0aCddIikudmFsdWUo
KSwgbnVsbHB0cik7CisKKyAgICBBUElTdHJpbmcgbGVuZ3RoU3RyaW5nKCJsZW5ndGgiKTsKKyAg
ICB1bnNpZ25lZCBsZW5ndGggPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgSlNPYmplY3RHZXRQ
cm9wZXJ0eShjb250ZXh0LCBhcnJheSwgbGVuZ3RoU3RyaW5nLCBudWxscHRyKSwgbnVsbHB0cik7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIEpT
VmFsdWVSZWYgdmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5QXRJbmRleChjb250ZXh0LCBhcnJh
eSwgaSwgbnVsbHB0cik7CisgICAgICAgIEFTU0VSVCh2YWx1ZSk7CisgICAgICAgIHJlc3VsdC5h
cHBlbmQodmFsdWUpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2ludCBUZXN0
QVBJOjpydW4oKQoreworICAgIGRhdGFMb2dMbigiU3RhcnRpbmcgQy1BUEkgdGVzdHMgaW4gQysr
Iik7CisgICAgY29uc3QgY2hhciogaXNTeW1ib2xGdW5jdGlvbiA9ICIoZnVuY3Rpb24gaXNTeW1i
b2woc3ltYm9sKSB7IHJldHVybiB0eXBlb2Yoc3ltYm9sKSA9PT0gJ3N5bWJvbCc7IH0pIjsKKyAg
ICBjb25zdCBjaGFyKiBnZXRGdW5jdGlvbiA9ICIoZnVuY3Rpb24gZ2V0KG9iamVjdCwga2V5KSB7
IHJldHVybiBvYmplY3Rba2V5XTsgfSkiOworICAgIGNvbnN0IGNoYXIqIHNldEZ1bmN0aW9uID0g
IihmdW5jdGlvbiBzZXQob2JqZWN0LCBrZXksIHZhbHVlKSB7IG9iamVjdFtrZXldID0gdmFsdWU7
IH0pIjsKKyAgICBjb25zdCBjaGFyKiBoYXNGdW5jdGlvbiA9ICIoZnVuY3Rpb24gaGFzKG9iamVj
dCwga2V5KSB7IHJldHVybiBrZXkgaW4gb2JqZWN0OyB9KSI7CisgICAgY29uc3QgY2hhciogZGVs
ZXRlRnVuY3Rpb24gPSAiKGZ1bmN0aW9uIGRlbChvYmplY3QsIGtleSkgeyByZXR1cm4gZGVsZXRl
IG9iamVjdFtrZXldOyB9KSI7CisKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29u
dGV4dCk7CisKKyAgICB7CisgICAgICAgIC8vIENhbid0IGNhbGwgU3ltYm9sIGFzIGEgY29uc3Ry
dWN0b3Igc2luY2UgaXQncyBub3Qgc3ViY2xhc3NhYmxlLgorICAgICAgICBhdXRvIHJlc3VsdCA9
IGV2YWx1YXRlU2NyaXB0KCJTeW1ib2woJ2RvcGUnKTsiKTsKKyAgICAgICAgY2hlY2soSlNWYWx1
ZUdldFR5cGUoY29udGV4dCwgcmVzdWx0LnZhbHVlKCkpID09IGtKU1R5cGVTeW1ib2wsICJkb3Bl
IGdldCB0eXBlIGlzIGEgc3ltYm9sIik7CisgICAgICAgIGNoZWNrKEpTVmFsdWVJc1N5bWJvbChj
b250ZXh0LCByZXN1bHQudmFsdWUoKSksICJkb3BlIGlzIGEgc3ltYm9sIik7CisgICAgfQorCisg
ICAgeworICAgICAgICBBUElTdHJpbmcgZGVzY3JpcHRpb24oImRvcGUiKTsKKyAgICAgICAgSlNW
YWx1ZVJlZiBzeW1ib2wgPSBKU1ZhbHVlTWFrZVN5bWJvbChjb250ZXh0LCBkZXNjcmlwdGlvbik7
CisgICAgICAgIGNoZWNrKGZ1bmN0aW9uUmV0dXJuc1RydWUoaXNTeW1ib2xGdW5jdGlvbiwgc3lt
Ym9sKSwgIkpTVmFsdWVNYWtlU3ltYm9sIG1ha2VzIGEgc3ltYm9sIHZhbHVlIik7CisgICAgfQor
CisgICAgeworICAgICAgICBhdXRvIG9iamVjdHMgPSBpbnRlcmVzdGluZ09iamVjdHMoKTsKKyAg
ICAgICAgYXV0byBrZXlzID0gaW50ZXJlc3RpbmdLZXlzKCk7CisKKyAgICAgICAgZm9yIChhdXRv
JiBvYmplY3QgOiBvYmplY3RzKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIlxubmV4dCBvYmpl
Y3Q6ICIsIHRvSlMoZXhlYywgb2JqZWN0KSk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGtleSA6
IGtleXMpIHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlVzaW5nIGtleTogIiwgdG9KUyhl
eGVjLCBrZXkpKTsKKyAgICAgICAgICAgICAgICBjaGVja0pTQW5kQVBJTWF0Y2goCisgICAgICAg
ICAgICAgICAgICAgIFsmXSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbEZ1
bmN0aW9uKGdldEZ1bmN0aW9uLCBvYmplY3QsIGtleSk7CisgICAgICAgICAgICAgICAgICAgIH0s
IFsmXSAoSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNPYmplY3RHZXRQcm9wZXJ0eUtleShjb250ZXh0LCBvYmplY3QsIGtleSwgZXhjZXB0
aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgfSwgImNoZWNraW5nIGdldCBwcm9wZXJ0eSBrZXlz
Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB7CisgICAgICAgIGF1
dG8ganNPYmplY3RzID0gaW50ZXJlc3RpbmdPYmplY3RzKCk7CisgICAgICAgIGF1dG8gYXBpT2Jq
ZWN0cyA9IGludGVyZXN0aW5nT2JqZWN0cygpOworICAgICAgICBhdXRvIGtleXMgPSBpbnRlcmVz
dGluZ0tleXMoKTsKKworICAgICAgICBKU1ZhbHVlUmVmIHRoZUFuc3dlciA9IEpTVmFsdWVNYWtl
TnVtYmVyKGNvbnRleHQsIDQyKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqc09i
amVjdHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYga2V5IDoga2V5cykg
eworICAgICAgICAgICAgICAgIEpTT2JqZWN0UmVmIGpzT2JqZWN0ID0ganNPYmplY3RzW2ldOwor
ICAgICAgICAgICAgICAgIEpTT2JqZWN0UmVmIGFwaU9iamVjdCA9IGFwaU9iamVjdHNbaV07Cisg
ICAgICAgICAgICAgICAgY2hlY2tKU0FuZEFQSU1hdGNoKAorICAgICAgICAgICAgICAgICAgICBb
Jl0geworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxGdW5jdGlvbihzZXRGdW5j
dGlvbiwganNPYmplY3QsIGtleSwgdGhlQW5zd2VyKTsKKyAgICAgICAgICAgICAgICAgICAgfSAs
IFsmXSAoSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBK
U09iamVjdFNldFByb3BlcnR5S2V5KGNvbnRleHQsIGFwaU9iamVjdCwga2V5LCB0aGVBbnN3ZXIs
IGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSwgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKyAgICAgICAgICAg
ICAgICAgICAgfSwgInNldHRpbmcgcHJvcGVydHkga2V5cyB0byB0aGUgYW5zd2VyIik7CisgICAg
ICAgICAgICAgICAgLy8gQ2hlY2sgZ2V0IGlzIHRoZSBzYW1lIG9uIEFQSSBvYmplY3QuCisgICAg
ICAgICAgICAgICAgY2hlY2tKU0FuZEFQSU1hdGNoKAorICAgICAgICAgICAgICAgICAgICBbJl0g
eworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxGdW5jdGlvbihnZXRGdW5jdGlv
biwgYXBpT2JqZWN0LCBrZXkpOworICAgICAgICAgICAgICAgICAgICB9LCBbJl0gKEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT2JqZWN0
R2V0UHJvcGVydHlLZXkoY29udGV4dCwgYXBpT2JqZWN0LCBrZXksIGV4Y2VwdGlvbik7CisgICAg
ICAgICAgICAgICAgICAgIH0sICJnZXR0aW5nIHByb3BlcnR5IGtleXMgZnJvbSBBUEkgb2JqZWN0
cyIpOworICAgICAgICAgICAgICAgIC8vIENoZWNrIGdldCBpcyB0aGUgc2FtZSBvbiByZXNwZWN0
aXZlIG9iamVjdHMuCisgICAgICAgICAgICAgICAgY2hlY2tKU0FuZEFQSU1hdGNoKAorICAgICAg
ICAgICAgICAgICAgICBbJl0geworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxG
dW5jdGlvbihnZXRGdW5jdGlvbiwganNPYmplY3QsIGtleSk7CisgICAgICAgICAgICAgICAgICAg
IH0sIFsmXSAoSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gSlNPYmplY3RHZXRQcm9wZXJ0eUtleShjb250ZXh0LCBhcGlPYmplY3QsIGtleSwg
ZXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgfSwgImdldHRpbmcgcHJvcGVydHkga2V5
cyBmcm9tIHJlc3BlY3RpdmUgb2JqZWN0cyIpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgeworICAgICAgICBhdXRvIG9iamVjdHMgPSBpbnRlcmVzdGluZ09iamVjdHMo
KTsKKyAgICAgICAgYXV0byBrZXlzID0gaW50ZXJlc3RpbmdLZXlzKCk7CisKKyAgICAgICAgSlNW
YWx1ZVJlZiB0aGVBbnN3ZXIgPSBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCA0Mik7CisgICAg
ICAgIGZvciAoYXV0byYgb2JqZWN0IDogb2JqZWN0cykgeworICAgICAgICAgICAgZGF0YUxvZ0xu
KCJcbk5leHQgb2JqZWN0OiAiLCB0b0pTKGV4ZWMsIG9iamVjdCkpOworICAgICAgICAgICAgZm9y
IChhdXRvJiBrZXkgOiBrZXlzKSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJVc2luZyBr
ZXk6ICIsIHRvSlMoZXhlYywga2V5KSk7CisgICAgICAgICAgICAgICAgY2hlY2tKU0FuZEFQSU1h
dGNoKAorICAgICAgICAgICAgICAgICAgICBbJl0geworICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGNhbGxGdW5jdGlvbihoYXNGdW5jdGlvbiwgb2JqZWN0LCBrZXkpOworICAgICAgICAg
ICAgICAgICAgICB9LCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCBKU09iamVjdEhh
c1Byb3BlcnR5S2V5KGNvbnRleHQsIG9iamVjdCwga2V5LCBleGNlcHRpb24pKTsKKyAgICAgICAg
ICAgICAgICAgICAgfSwgImNoZWNraW5nIGhhcyBwcm9wZXJ0eSBrZXlzIHVuc2V0Iik7CisKKyAg
ICAgICAgICAgICAgICBjaGVjayghIWNhbGxGdW5jdGlvbihzZXRGdW5jdGlvbiwgb2JqZWN0LCBr
ZXksIHRoZUFuc3dlciksICJzZXQgcHJvcGVydHkgdG8gdGhlIGFuc3dlciIpOworCisgICAgICAg
ICAgICAgICAgY2hlY2tKU0FuZEFQSU1hdGNoKAorICAgICAgICAgICAgICAgICAgICBbJl0gewor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxGdW5jdGlvbihoYXNGdW5jdGlvbiwg
b2JqZWN0LCBrZXkpOworICAgICAgICAgICAgICAgICAgICB9LCBbJl0gKEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9v
bGVhbihjb250ZXh0LCBKU09iamVjdEhhc1Byb3BlcnR5S2V5KGNvbnRleHQsIG9iamVjdCwga2V5
LCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgfSwgImNoZWNraW5nIGhhcyBwcm9w
ZXJ0eSBrZXlzIHNldCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
eworICAgICAgICBhdXRvIG9iamVjdHMgPSBpbnRlcmVzdGluZ09iamVjdHMoKTsKKyAgICAgICAg
YXV0byBrZXlzID0gaW50ZXJlc3RpbmdLZXlzKCk7CisKKyAgICAgICAgSlNWYWx1ZVJlZiB0aGVB
bnN3ZXIgPSBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCA0Mik7CisgICAgICAgIGZvciAoYXV0
byYgb2JqZWN0IDogb2JqZWN0cykgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJcbk5leHQgb2Jq
ZWN0OiAiLCB0b0pTKGV4ZWMsIG9iamVjdCkpOworICAgICAgICAgICAgZm9yIChhdXRvJiBrZXkg
OiBrZXlzKSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJVc2luZyBrZXk6ICIsIHRvSlMo
ZXhlYywga2V5KSk7CisgICAgICAgICAgICAgICAgY2hlY2tKU0FuZEFQSU1hdGNoKAorICAgICAg
ICAgICAgICAgICAgICBbJl0geworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxG
dW5jdGlvbihkZWxldGVGdW5jdGlvbiwgb2JqZWN0LCBrZXkpOworICAgICAgICAgICAgICAgICAg
ICB9LCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCBKU09iamVjdERlbGV0ZVByb3Bl
cnR5S2V5KGNvbnRleHQsIG9iamVjdCwga2V5LCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAg
ICAgICAgfSwgImNoZWNraW5nIGhhcyBwcm9wZXJ0eSBrZXlzIHVuc2V0Iik7CisKKyAgICAgICAg
ICAgICAgICBjaGVjayghIWNhbGxGdW5jdGlvbihzZXRGdW5jdGlvbiwgb2JqZWN0LCBrZXksIHRo
ZUFuc3dlciksICJzZXQgcHJvcGVydHkgdG8gdGhlIGFuc3dlciIpOworCisgICAgICAgICAgICAg
ICAgY2hlY2tKU0FuZEFQSU1hdGNoKAorICAgICAgICAgICAgICAgICAgICBbJl0geworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxGdW5jdGlvbihkZWxldGVGdW5jdGlvbiwgb2Jq
ZWN0LCBrZXkpOworICAgICAgICAgICAgICAgICAgICB9LCBbJl0gKEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVh
bihjb250ZXh0LCBKU09iamVjdERlbGV0ZVByb3BlcnR5S2V5KGNvbnRleHQsIG9iamVjdCwga2V5
LCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgfSwgImNoZWNraW5nIGhhcyBwcm9w
ZXJ0eSBrZXlzIHNldCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
ZGF0YUxvZ0xuKCJDLUFQSSB0ZXN0cyBpbiBDKysgaGFkICIsIGZhaWxlZCwgIiBmYWlsdXJlcyIp
OworICAgIHJldHVybiBmYWlsZWQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3Rz
L3Rlc3RhcGkubW0KaW5kZXggYTE2NTRhZTExZTE5MWE2NDkyYzU1MzY4ZDhlYmQwZDU2MTlkMThh
Mi4uMzgyODA1NDY0ODJhZTRkMDQ4MWVkMzNhYzgzOTU0ODRlOGI5ZWY0YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQpAQCAtMjMsNiArMjMsNyBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCisjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkpTRXhwb3J0
TWFjcm9zLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgogCkBA
IC00Miw2ICs0Myw3IEBACiAjaW1wb3J0IDx2ZWN0b3I+CiAjaW1wb3J0IDx3dGYvTWVtb3J5Rm9v
dHByaW50Lmg+CiAjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KKyNpbXBvcnQgPHd0Zi9EYXRhTG9n
Lmg+CiAKIGV4dGVybiAiQyIgdm9pZCBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1
Z2dpbmcoSlNDb250ZXh0UmVmKTsKIGV4dGVybiAiQyIgdm9pZCBKU1N5bmNocm9ub3VzRWRlbkNv
bGxlY3RGb3JEZWJ1Z2dpbmcoSlNDb250ZXh0UmVmKTsKQEAgLTYyNiw2ICs2MjgsMTA1IEBAIHN0
YXRpYyB2b2lkIHRlc3RPYmplY3RpdmVDQVBJTWFpbigpCiAgICAgICAgIGNoZWNrUmVzdWx0KEAi
bmV3IERhdGUiLCByZXN1bHQuaXNEYXRlKTsKICAgICB9CiAKKyAgICBAYXV0b3JlbGVhc2Vwb29s
IHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRd
OworICAgICAgICBKU1ZhbHVlICpzeW1ib2wgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIlN5
bWJvbCgnZG9wZScpOyJdOworICAgICAgICBKU1ZhbHVlICpub3RTeW1ib2wgPSBbY29udGV4dCBl
dmFsdWF0ZVNjcmlwdDpAIidkb3BlJyJdOworICAgICAgICBjaGVja1Jlc3VsdChAIlNob3VsZCBi
ZSBhIHN5bWJvbCB2YWx1ZSIsIHN5bWJvbC5pc1N5bWJvbCk7CisgICAgICAgIGNoZWNrUmVzdWx0
KEAiU2hvdWxkIG5vdCBiZSBhIHN5bWJvbCB2YWx1ZSIsICFub3RTeW1ib2wuaXNTeW1ib2wpOwor
ICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRl
eHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUgKnN5bWJvbCA9
IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld1N5bWJvbEZyb21EZXNjcmlwdGlvbjpAImRvcGUiIGluQ29u
dGV4dDpjb250ZXh0XTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJTaG91bGQgYmUgYSBjcmVhdGVk
IGZyb20gT2JqLUMiLCBzeW1ib2wuaXNTeW1ib2wpOworICAgIH0KKworICAgIEBhdXRvcmVsZWFz
ZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10g
aW5pdF07CisgICAgICAgIEpTVmFsdWUgKmFycmF5SXRlcmF0b3IgPSBbY29udGV4dCBldmFsdWF0
ZVNjcmlwdDpAIkFycmF5LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdIl07CisgICAgICAgIEpT
VmFsdWUgKml0ZXJhdG9yU3ltYm9sID0gY29udGV4dFtAIlN5bWJvbCJdW0AiaXRlcmF0b3IiXTsK
KyAgICAgICAgSlNWYWx1ZSAqYXJyYXkgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdBcnJheUluQ29u
dGV4dDpjb250ZXh0XTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJMb29raW5nIHVwIGJ5IHN1YnNj
cmlwdCB3aXRoIHN5bWJvbCBzaG91bGQgd29yayIsIFthcnJheVtpdGVyYXRvclN5bWJvbF0gaXNF
cXVhbDphcnJheUl0ZXJhdG9yXSk7CisgICAgICAgIGNoZWNrUmVzdWx0KEAiTG9va2luZyB1cCBi
eSBtZXRob2Qgd2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsiLCBbW2FycmF5IHZhbHVlRm9yUHJvcGVy
dHk6aXRlcmF0b3JTeW1ib2xdIGlzRXF1YWw6YXJyYXlJdGVyYXRvcl0pOworICAgIH0KKworICAg
IEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29u
dGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUgKml0ZXJhdG9yU3ltYm9sID0gY29u
dGV4dFtAIlN5bWJvbCJdW0AiaXRlcmF0b3IiXTsKKyAgICAgICAgSlNWYWx1ZSAqb2JqZWN0ID0g
W0pTVmFsdWUgdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBK
U1ZhbHVlICp0aGVBbnN3ZXIgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhVSW50MzI6NDIgaW5Db250ZXh0
OmNvbnRleHRdOworICAgICAgICBvYmplY3RbaXRlcmF0b3JTeW1ib2xdID0gdGhlQW5zd2VyOwor
ICAgICAgICBjaGVja1Jlc3VsdChAIlNldHRpbmcgYnkgc3Vic2NyaXB0IHdpdGggc3ltYm9sIHNo
b3VsZCB3b3JrIiwgW29iamVjdFtpdGVyYXRvclN5bWJvbF0gaXNFcXVhbDp0aGVBbnN3ZXJdKTsK
KyAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250
ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICBKU1ZhbHVlICppdGVyYXRv
clN5bWJvbCA9IGNvbnRleHRbQCJTeW1ib2wiXVtAIml0ZXJhdG9yIl07CisgICAgICAgIEpTVmFs
dWUgKm9iamVjdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld09iamVjdEluQ29udGV4dDpjb250ZXh0
XTsKKyAgICAgICAgSlNWYWx1ZSAqdGhlQW5zd2VyID0gW0pTVmFsdWUgdmFsdWVXaXRoVUludDMy
OjQyIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgW29iamVjdCBzZXRWYWx1ZTp0aGVBbnN3
ZXIgZm9yUHJvcGVydHk6aXRlcmF0b3JTeW1ib2xdOworICAgICAgICBjaGVja1Jlc3VsdChAIlNl
dHRpbmcgYnkgbWV0aG9kIHdpdGggc3ltYm9sIHNob3VsZCB3b3JrIiwgW29iamVjdFtpdGVyYXRv
clN5bWJvbF0gaXNFcXVhbDp0aGVBbnN3ZXJdKTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vw
b29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGlu
aXRdOworICAgICAgICBKU1ZhbHVlICppdGVyYXRvclN5bWJvbCA9IGNvbnRleHRbQCJTeW1ib2wi
XVtAIml0ZXJhdG9yIl07CisgICAgICAgIEpTVmFsdWUgKm9iamVjdCA9IFtKU1ZhbHVlIHZhbHVl
V2l0aE5ld09iamVjdEluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgSlNWYWx1ZSAqdGhlQW5z
d2VyID0gW0pTVmFsdWUgdmFsdWVXaXRoVUludDMyOjQyIGluQ29udGV4dDpjb250ZXh0XTsKKyAg
ICAgICAgb2JqZWN0W2l0ZXJhdG9yU3ltYm9sXSA9IHRoZUFuc3dlcjsKKyAgICAgICAgY2hlY2tS
ZXN1bHQoQCJoYXMgcHJvcGVydHkgd2l0aCBzeW1ib2wgc2hvdWxkIHdvcmsiLCBbb2JqZWN0IGhh
c1Byb3BlcnR5Oml0ZXJhdG9yU3ltYm9sXSk7CisgICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9v
bCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0
XTsKKyAgICAgICAgSlNWYWx1ZSAqaXRlcmF0b3JTeW1ib2wgPSBjb250ZXh0W0AiU3ltYm9sIl1b
QCJpdGVyYXRvciJdOworICAgICAgICBKU1ZhbHVlICpvYmplY3QgPSBbSlNWYWx1ZSB2YWx1ZVdp
dGhOZXdPYmplY3RJbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIEpTVmFsdWUgKnRoZUFuc3dl
ciA9IFtKU1ZhbHVlIHZhbHVlV2l0aFVJbnQzMjo0MiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAg
ICAgIGNoZWNrUmVzdWx0KEAiZGVsZXRlIHByb3BlcnR5IHdpdGggc3ltYm9sIHNob3VsZCB3b3Jr
IHdpdGhvdXQgcHJvcGVydHkiLCBbb2JqZWN0IGRlbGV0ZVByb3BlcnR5Oml0ZXJhdG9yU3ltYm9s
XSk7CisgICAgICAgIG9iamVjdFtpdGVyYXRvclN5bWJvbF0gPSB0aGVBbnN3ZXI7CisgICAgICAg
IGNoZWNrUmVzdWx0KEAiZGVsZXRlIHByb3BlcnR5IHdpdGggc3ltYm9sIHNob3VsZCB3b3JrIHdp
dGggcHJvcGVydHkiLCBbb2JqZWN0IGRlbGV0ZVByb3BlcnR5Oml0ZXJhdG9yU3ltYm9sXSk7Cisg
ICAgICAgIGNoZWNrUmVzdWx0KEAiZGVsZXRlIHNob3VsZCBiZSBmYWxzZSB3aXRoIG5vbi1jb25m
aWd1cmFibGUgcHJvcGVydHkiLCAhW2NvbnRleHRbQCJBcnJheSJdIGRlbGV0ZVByb3BlcnR5OkAi
cHJvdG90eXBlIl0pOworICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBK
U0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpT
VmFsdWUgKm9iamVjdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld09iamVjdEluQ29udGV4dDpjb250
ZXh0XTsKKyAgICAgICAgTlNPYmplY3QgKm9iakNPYmplY3QgPSBbW05TT2JqZWN0IGFsbG9jXSBp
bml0XTsKKyAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gb2JqZWN0W29iakNPYmplY3RdOworICAg
ICAgICBjaGVja1Jlc3VsdChAImdldHRpbmcgYSBub24tY29udmVydGFibGUgb2JqZWN0IHNob3Vs
ZCByZXR1cm4gdW5kZWZpbmVkIiwgW3Jlc3VsdCBpc1VuZGVmaW5lZF0pOworICAgICAgICBvYmpl
Y3Rbb2JqQ09iamVjdF0gPSBAKDEpOworICAgICAgICByZXN1bHQgPSBvYmplY3Rbb2JqQ09iamVj
dF07CisgICAgICAgIGNoZWNrUmVzdWx0KEAiZ2V0dGluZyBhIG5vbi1jb252ZXJ0YWJsZSBvYmpl
Y3Qgc2hvdWxkIHJldHVybiB0aGUgc3RvcmVkIHZhbHVlIiwgW3Jlc3VsdCB0b1VJbnQzMl0gPT0g
MSk7CisgICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAq
Y29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAqb2Jq
ZWN0ID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOworICAg
ICAgICBKU1ZhbHVlICppdGVyYXRvclN5bWJvbCA9IGNvbnRleHRbQCJTeW1ib2wiXVtAIml0ZXJh
dG9yIl07CisgICAgICAgIG9iamVjdFtAInZhbHVlIl0gPSBAKDEpOworICAgICAgICBjb250ZXh0
W0Aib2JqZWN0Il0gPSBvYmplY3Q7CisKKyAgICAgICAgb2JqZWN0W2l0ZXJhdG9yU3ltYm9sXSA9
IF57CisgICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdP
YmplY3RJbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgICAgICByZXN1bHRbQCJvYmplY3QiXSA9
IFtKU0NvbnRleHQgY3VycmVudFRoaXNdOworICAgICAgICAgICAgcmVzdWx0W0AibmV4dCJdID0g
XnsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhO
ZXdPYmplY3RJbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgICAgICAgICAgSlNWYWx1ZSAqdmFs
dWUgPSBbSlNDb250ZXh0IGN1cnJlbnRUaGlzXVtAIm9iamVjdCJdW0AidmFsdWUiXTsKKyAgICAg
ICAgICAgICAgICBbW0pTQ29udGV4dCBjdXJyZW50VGhpc11bQCJvYmplY3QiXSBkZWxldGVQcm9w
ZXJ0eTpAInZhbHVlIl07CisgICAgICAgICAgICAgICAgcmVzdWx0W0AidmFsdWUiXSA9IHZhbHVl
OworICAgICAgICAgICAgICAgIHJlc3VsdFtAImRvbmUiXSA9IFtKU1ZhbHVlIHZhbHVlV2l0aEJv
b2w6W3ZhbHVlIGlzVW5kZWZpbmVkXSBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgICAgICB9OworCisKKyAgICAgICAgSlNWYWx1ZSAqY291bnQgPSBbY29udGV4dCBl
dmFsdWF0ZVNjcmlwdDpAImxldCBjb3VudCA9IDA7IGZvciAobGV0IHYgb2Ygb2JqZWN0KSB7IGlm
ICh2ICE9PSAxKSB0aHJvdyBuZXcgRXJyb3IoKTsgY291bnQrKzsgfSBjb3VudDsiXTsKKyAgICAg
ICAgY2hlY2tSZXN1bHQoQCJpdGVyYXRvciBzaG91bGQgbm90IHRocm93IiwgIVtjb250ZXh0IGV4
Y2VwdGlvbl0pOworICAgICAgICBjaGVja1Jlc3VsdChAIml0ZXJhdGlvbiBjb3VudCBzaG91bGQg
YmUgMSIsIFtjb3VudCB0b1VJbnQzMl0gPT0gMSk7CisgICAgfQorCiAgICAgQGF1dG9yZWxlYXNl
cG9vbCB7CiAgICAgICAgIEpTQ29sbGVjdGlvbiogbXlQcml2YXRlUHJvcGVydGllcyA9IFtbSlND
b2xsZWN0aW9uIGFsbG9jXSBpbml0XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBhZDA5ZmQwZGM2MjZlMDFkYzM1MjA1YzNiNThmNTM1MGVlNzE4OGQ2Li5jMGZmYzhjYzFlYjdi
OTgxMzBiZTNjYjBjNGVjMmRlZjU2MDRmMDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTA0MCw4ICsxMDQwLDkgQEAKIAkJNTNFNzc3RTQxRTkyRTI2NTAwN0NCRUM0IC8qIFdh
c21Nb2R1bGVJbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTNFNzc3RTIxRTkyRTI2NTAwN0NCRUM0IC8qIFdhc21Nb2R1bGVJbmZvcm1h
dGlvbi5oICovOyB9OwogCQk1M0U5RTBBQzFFQUU4M0RGMDBGRUUyNTEgLyogV2FzbU1hY2hpbmVU
aHJlYWRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
M0U5RTBBQTFFQUU4M0RFMDBGRUUyNTEgLyogV2FzbU1hY2hpbmVUaHJlYWRzLmggKi87IH07CiAJ
CTUzRTlFMEFGMUVBRUM0NTcwMEZFRTI1MSAvKiBXYXNtVGllclVwQ291bnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRTlFMEFFMUVBRUM0NTcwMEZF
RTI1MSAvKiBXYXNtVGllclVwQ291bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQk1M0YxMUY0MTIwOTEzOEQ3MDBFNDExQTcgLyogSlNJbW11dGFi
bGVCdXR0ZXJmbHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzRjExRjQwMjA5MTM4RDcwMEU0MTFBNyAvKiBKU0ltbXV0YWJsZUJ1dHRlcmZseS5oICov
OyB9OwotCQk1M0Y0MEU4NTFENThGOTc3MDA5OUExQjYgLyogV2FzbVNlY3Rpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU4NDFENThGOTc3
MDA5OUExQjYgLyogV2FzbVNlY3Rpb25zLmggKi87IH07CisgICAgICAgICAgICAgICAgNTNGMTFG
NDEyMDkxMzhENzAwRTQxMUE3IC8qIEpTSW1tdXRhYmxlQnV0dGVyZmx5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0YxMUY0MDIwOTEzOEQ3MDBFNDEx
QTcgLyogSlNJbW11dGFibGVCdXR0ZXJmbHkuaCAqLzsgfTsKKyAgICAgICAgICAgICAgICA1M0VB
RkUyRjIwOERGQUI0MDA3RDUyNEIgLyogdGVzdGFwaS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzFENEUxOTFGNTlDREQyMDBFQzgzNkMgLyogdGVz
dGFwaS5jcHAgKi87IH07CisgICAgICAgICAgICAgICAgNTNGNDBFODUxRDU4Rjk3NzAwOTlBMUI2
IC8qIFdhc21TZWN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTNGNDBFODQxRDU4Rjk3NzAwOTlBMUI2IC8qIFdhc21TZWN0aW9ucy5oICovOyB9
OwogCQk1M0Y0MEU4QjFENTkwMUJCMDA5OUExQjYgLyogV2FzbUZ1bmN0aW9uUGFyc2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU4QTFENTkw
MUJCMDA5OUExQjYgLyogV2FzbUZ1bmN0aW9uUGFyc2VyLmggKi87IH07CiAJCTUzRjQwRThEMUQ1
OTAxRjIwMDk5QTFCNiAvKiBXYXNtUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU4QzFENTkwMUYyMDA5OUExQjYgLyogV2FzbVBhcnNl
ci5oICovOyB9OwogCQk1M0Y0MEU5MzFENUE0QUIzMDA5OUExQjYgLyogV2FzbUIzSVJHZW5lcmF0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQw
RTkyMUQ1QTRBQjMwMDk5QTFCNiAvKiBXYXNtQjNJUkdlbmVyYXRvci5oICovOyB9OwpAQCAtMzMw
NSw2ICszMzA2LDcgQEAKIAkJNTMxMUJENDkxRUE1ODFFNTAwNTI1MjgxIC8qIFdhc21PTUdQbGFu
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21PTUdQbGFuLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMTM3NEJDMUQ1Q0U2NzYwMEFGN0EwQiAvKiBXYXNt
UGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtUGxhbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzEzNzRCRTFENUNFOTUwMDBBRjdBMEIgLyogV2Fz
bVBsYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbVBsYW4u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzFENEUxOTFGNTlDREQyMDBFQzgz
NkMgLyogdGVzdGFwaS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSB0ZXN0YXBpLmNwcDsgcGF0aCA9
IEFQSS90ZXN0cy90ZXN0YXBpLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMz
QjE1REUxREM3RjQ2MzAwNEQ1MDBBIC8qIFdhc21PcHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2FzbU9wcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQx
RkM2RjFEQUMzM0U1MDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNw
cDsgcGF0aCA9IGIzL0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MzQxRkM3MTFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hl
Y2tWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1dhc21Cb3VuZHND
aGVja1ZhbHVlLmg7IHBhdGggPSBiMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDc1LDcgKzM0NzcsNiBAQAogCQk1MzkxN0U3QTFCNzkw
NkU0MDAwRUJEMzMgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGVGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM5
MTdFN0MxQjc5MTEwNjAwMEVCRDMzIC8qIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzkxN0U4MzFCNzkxQ0I4MDAwRUJEMzMg
LyogVHlwZWRBcnJheVByb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlw
dDsgbmFtZSA9IFR5cGVkQXJyYXlQcm90b3R5cGUuanM7IHBhdGggPSBidWlsdGlucy9UeXBlZEFy
cmF5UHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07Ci0JCTUzOUVCMDcx
MUQ1NTNERjgwMEM4MkVGNyAvKiB0ZXN0V2FzbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSB0ZXN0V2FzbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUzOUZCOEI5MUM5OURBN0MwMDk0MEZBMSAvKiBKU0FycmF5SW5saW5lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FycmF5SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1M0IwQkUzMzFFNTYxQUM5MDBBOEZDMjkgLyogR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZXR0ZXJT
ZXR0ZXJBY2Nlc3NDYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNCMEJF
MzUxRTU2MUIwOTAwQThGQzI5IC8qIFByb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NDY3LDEwICs1NDY4LDEwIEBACiAJCQkJRkVCNTFG
NkIxQTk3QjY4ODAwMUY5MjFDIC8qIFJlZ3Jlc3MxNDE4MDkubW0gKi8sCiAJCQkJRkVDQjhCMjkx
RDI1Q0FCQjAwNkYyNDYzIC8qIHRlc3RhcGktZnVuY3Rpb24tb3ZlcnJpZGVzLmpzICovLAogCQkJ
CTE0QkQ1QTJEMEEzRTkxRjYwMEJBRjU5QyAvKiB0ZXN0YXBpLmMgKi8sCisJCQkJNTMxRDRFMTkx
RjU5Q0REMjAwRUM4MzZDIC8qIHRlc3RhcGkuY3BwICovLAogCQkJCTE0RDg1Nzc0MEE0Njk2Qzgw
MDMyMTQ2QyAvKiB0ZXN0YXBpLmpzICovLAogCQkJCTg2RDIyMjE5MTY3RUY5NDQwMDI0QzgwNCAv
KiB0ZXN0YXBpLm1tICovLAogCQkJCTY1MTEyMkU1MTQwNDY5QkEwMDJCMTAxRCAvKiB0ZXN0UmVn
RXhwLmNwcCAqLywKLQkJCQk1MzlFQjA3MTFENTUzREY4MDBDODJFRjcgLyogdGVzdFdhc20uY3Bw
ICovLAogCQkJCTUzNDkwMjgyMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuY3Bw
ICovLAogCQkJCTUzNDkwMjgzMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuaCAq
LywKIAkJCSk7CkBAIC04OTgyLDggKzg5ODMsOCBAQAogCQkJCTBGQjQ2NzgwMUZEREE2RjEwMDNG
Q0IwOSAvKiBJc29DZWxsU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI0Njc4MTFGRERBNkY3
MDAzRkNCMDkgLyogSXNvQ2VsbFNldElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRENF
MTJEMUZBRkI0RTUwMDZGMzkwMSAvKiBJc29TdWJzcGFjZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MEZEMkZEOTUyMEI1MkJFMjAwRjA5NDQxIC8qIElzb1N1YnNwYWNlSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMEY1RTBGRTcyMDg2QUQ0ODAwOTdGMERFIC8qIElzb1N1YnNwYWNlUGVyVk0u
aCBpbiBIZWFkZXJzICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwRkQyRkQ5
NTIwQjUyQkUyMDBGMDk0NDEgLyogSXNvU3Vic3BhY2VJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMEY1RTBGRTcyMDg2QUQ0ODAwOTdGMERF
IC8qIElzb1N1YnNwYWNlUGVyVk0uaCBpbiBIZWFkZXJzICovLAogCQkJCThCOUY2RDU2MUQ1OTEy
RkEwMDFDNzM5RiAvKiBJdGVyYXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTRENTVC
ODFBRTcxNkNBMDA1MkU0NTkgLyogSXRlcmF0aW9uU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3MDExM0Q0QzFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0b3JPcGVyYXRpb25zLmggaW4gSGVh
ZGVycyAqLywKQEAgLTEwMjAzLDYgKzEwMjA0LDcgQEAKIAkJCQk2NTU3MEY1QTFBQTRDM0VBMDA5
QjNDMjMgLyogUmVncmVzczE0MTI3NS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUZFQjUxRjZDMUE5
N0I2ODgwMDFGOTIxQyAvKiBSZWdyZXNzMTQxODA5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0
MEY2MTAwQTRGODU2NzAwMDVGMDYxIC8qIHRlc3RhcGkuYyBpbiBTb3VyY2VzICovLAorCQkJCTUz
RUFGRTJGMjA4REZBQjQwMDdENTI0QiAvKiB0ZXN0YXBpLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTg2RDIyMjFBMTY3RUY5NDQwMDI0QzgwNCAvKiB0ZXN0YXBpLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTM0OTAyODUxQzcyNzZCNzAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CkBAIC0xMDY3MCw2ICsxMDY3MiwxMCBAQAogCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDMDIxQkYy
MTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIlwiJChKQVZB
U0NSSVBUQ09SRV9GUkFNRVdPUktTX0RJUikvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrL1ByaXZh
dGVIZWFkZXJzXCIiLAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkpOwogCQkJfTsKIAkJCW5h
bWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTEwNjc3LDYgKzEwNjgzLDEwIEBACiAJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFC
RjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOwogCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkiXCIkKEpB
VkFTQ1JJUFRDT1JFX0ZSQU1FV09SS1NfRElSKS9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsvUHJp
dmF0ZUhlYWRlcnNcIiIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CiAJCQl9OwogCQkJ
bmFtZSA9IFJlbGVhc2U7CiAJCX07CkBAIC0xMDY4NCw2ICsxMDY5NCwxMCBAQAogCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJD
MDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsKIAkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIlwi
JChKQVZBU0NSSVBUQ09SRV9GUkFNRVdPUktTX0RJUikvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3Jr
L1ByaXZhdGVIZWFkZXJzXCIiLAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkpOwogCQkJfTsK
IAkJCW5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OwpAQCAtMTEwMDgsNiArMTEwMjIsMTAgQEAKIAkJ
CWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVu
Y2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcg
Ki87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCisJ
CQkJCSJcIiQoSkFWQVNDUklQVENPUkVfRlJBTUVXT1JLU19ESVIpL0phdmFTY3JpcHRDb3JlLmZy
YW1ld29yay9Qcml2YXRlSGVhZGVyc1wiIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJKTsK
IAkJCX07CiAJCQluYW1lID0gUHJvZmlsaW5nOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2NvbmZpZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbmZpZy5oCmlu
ZGV4IDFkMWVkN2I2ZjhjNmFjMDlmMTQ0NDRmNmVmMzgwNTYyOTk4MTlkN2UuLjkyOTk3NTRjZDZl
MGNhMmYwNjIxMDdhNGU2NmNlMTQzZjRjOWQ1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9jb25maWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgKQEAg
LTIzLDYgKzIzLDExIEBACiAjaW5jbHVkZSAiY21ha2Vjb25maWcuaCIKICNlbmRpZgogCisjZGVm
aW5lIEpTQ19BUElfQVZBSUxBQkxFKC4uLikKKy8vIFVzZSB6ZXJvIHNpbmNlIGl0IHdpbGwgYmUg
bGVzcyB0aGFuIGFueSBwb3NzaWJsZSB2ZXJzaW9uIG51bWJlci4KKyNkZWZpbmUgSlNDX01BQ19W
RVJTSU9OX1RCQSAwCisjZGVmaW5lIEpTQ19JT1NfVkVSU0lPTl9UQkEgMAorCiAjaW5jbHVkZSAi
SlNFeHBvcnRNYWNyb3MuaCIKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcG9zdHByb2Nlc3MtaGVhZGVycy5zaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wb3N0cHJvY2Vzcy1oZWFkZXJzLnNoCmluZGV4IGM4NjE4NDM3ZDJhMDc3OTQ5YTU5
MGFjNzAxN2Y4MjZiNTJkNmQyYjMuLmZjZGU4YTEzNzExYTRiYmQxMWM4YTBhMjEzMGY2YzEyMjdh
MTcxZjggMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wb3N0cHJvY2Vzcy1oZWFk
ZXJzLnNoCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wb3N0cHJvY2Vzcy1oZWFkZXJzLnNo
CkBAIC0xLDE4ICsxLDEwMCBAQAotY2QgIiR7VEFSR0VUX0JVSUxEX0RJUn0vJHtQVUJMSUNfSEVB
REVSU19GT0xERVJfUEFUSH0iCi0KLVVOSUZERUZfT1BUSU9OUz0iLURfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEPSR7VEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1J9IgotCi1mb3Ig
KChpID0gMDsgaSA8ICR7U0NSSVBUX0lOUFVUX0ZJTEVfQ09VTlR9OyArK2kpKTsgZG8KLSAgICBl
dmFsIEhFQURFUj1cJHtTQ1JJUFRfSU5QVVRfRklMRV8ke2l9fTsKLSAgICB1bmlmZGVmIC1CICR7
VU5JRkRFRl9PUFRJT05TfSAtbyAiJHtIRUFERVJ9Ii51bmlmZGVmICIke0hFQURFUn0iCi0gICAg
Y2FzZSAkPyBpbgotICAgIDApCi0gICAgICAgIHJtICIke0hFQURFUn0iLnVuaWZkZWYKLSAgICAg
ICAgOzsKLSAgICAxKQotICAgICAgICBtdiAiJHtIRUFERVJ9InsudW5pZmRlZix9Ci0gICAgICAg
IDs7Ci0gICAgKikKLSAgICAgICAgZXhpdCAxCi0gICAgZXNhYwotZG9uZQorIyEvYmluL3NoCisj
CisjIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisjCisKK2lmIFtbICIk
e0pTQ19GUkFNRVdPUktfSEVBREVSX1BPU1RQUk9DRVNTSU5HX0RJU0FCTEVEfSIgPT0gIllFUyIg
XV07IHRoZW4KKyAgICBleGl0IDA7CitmaQorCitUSU1FU1RBTVBfUEFUSD0ke1RBUkdFVF9URU1Q
X0RJUn0vJHswIyMqL30KKworaWYgW1sgLWUgJFRJTUVTVEFNUF9QQVRIICYmICQwIC1udCAkVElN
RVNUQU1QX1BBVEggXV07IHRoZW4KKyAgICBybSAiJHtUSU1FU1RBTVBfUEFUSH0iOworZmkKKwor
ZnVuY3Rpb24gcHJvY2Vzc19kZWZpbml0aW9ucyAoKSB7CisgICAgbG9jYWwgREVGSU5JVElPTlNf
RklMRT0kMQorCisgICAgaWYgW1sgISAtZiAiJHtERUZJTklUSU9OU19GSUxFfSIgXV07IHRoZW4K
KyAgICAgICAgcmV0dXJuIDEKKyAgICBmaQorCisgICAgaWYgW1sgLWUgJFRJTUVTVEFNUF9QQVRI
ICYmICIke0RFRklOSVRJT05TX0ZJTEV9IiAtbnQgJFRJTUVTVEFNUF9QQVRIIF1dOyB0aGVuCisg
ICAgICAgIHJtICIke1RJTUVTVEFNUF9QQVRIfSI7CisgICAgZmkKKworICAgIHNvdXJjZSAiJHtE
RUZJTklUSU9OU19GSUxFfSIKK30KKworZnVuY3Rpb24gcmV3cml0ZV9oZWFkZXJzICgpIHsKKyAg
ICBpZiBbWyAiJHtQTEFURk9STV9OQU1FfSIgPT0gIm1hY29zeCIgXV07IHRoZW4KKyAgICAgICAg
W1sgLW4gJHtPU1hfVkVSU0lPTn0gXV0gfHwgT1NYX1ZFUlNJT049JHtNQUNPU1hfREVQTE9ZTUVO
VF9UQVJHRVR9CisgICAgICAgIFtbIC1uICR7SU9TX1ZFUlNJT059IF1dIHx8IElPU19WRVJTSU9O
PSJOQSIKKyAgICAgICAgW1sgLW4gJHtPU1hfVkVSU0lPTl9OVU1CRVJ9IF1dIHx8IE9TWF9WRVJT
SU9OX05VTUJFUj0ke1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SfQorICAgICAgICBbWyAt
biAke0lPU19WRVJTSU9OX05VTUJFUn0gXV0gfHwgSU9TX1ZFUlNJT05fTlVNQkVSPSIwIgorICAg
IGVsaWYgW1sgIiR7UExBVEZPUk1fTkFNRX0iID1+ICJpcGhvbmUiIF1dOyB0aGVuCisgICAgICAg
IFtbIC1uICR7SU9TX1ZFUlNJT059IF1dIHx8IElPU19WRVJTSU9OPSR7SVBIT05FT1NfREVQTE9Z
TUVOVF9UQVJHRVR9CisgICAgICAgIFtbIC1uICR7T1NYX1ZFUlNJT059IF1dIHx8IE9TWF9WRVJT
SU9OPSJOQSIKKyAgICAgICAgW1sgLW4gJHtPU1hfVkVSU0lPTl9OVU1CRVJ9IF1dIHx8IE9TWF9W
RVJTSU9OX05VTUJFUj0iMCIKKyAgICAgICAgW1sgLW4gJHtJT1NfVkVSU0lPTl9OVU1CRVJ9IF1d
IHx8IElPU19WRVJTSU9OX05VTUJFUj0ke1NES19WRVJTSU9OX01BSk9SfQorICAgIGZpCisKKyAg
ICBTRURfT1BUSU9OUz0oCisgICAgKQorCisgICAgaWYgW1sgLW4gIiRPU1hfVkVSU0lPTiIgJiYg
LW4gIiRJT1NfVkVSU0lPTiIgXV07IHRoZW4KKyAgICAgICAgU0VEX09QVElPTlMrPSgKKyAgICAg
ICAgICAgIC1lIHMvSlNDX01BQ19UQkEvJHtPU1hfVkVSU0lPTn0vZworICAgICAgICAgICAgLWUg
cy9KU0NfSU9TX1RCQS8ke0lPU19WRVJTSU9OfS9nCisgICAgICAgICAgICAtZSBzL0pTQ19NQUNf
VkVSU0lPTl9UQkEvJHtPU1hfVkVSU0lPTl9OVU1CRVJ9L2cKKyAgICAgICAgICAgIC1lIHMvSlND
X0lPU19WRVJTSU9OX1RCQS8ke0lPU19WRVJTSU9OX05VTUJFUn0vZworICAgICAgICAgICAgLWUg
cy9KU0NfQVBJX0FWQUlMQUJMRS9BUElfQVZBSUxBQkxFLworICAgICAgICAgICAgLWUgcy9KU0Nf
QVBJX0RFUFJFQ0FURUQvQVBJX0RFUFJFQ0FURUQvCisgICAgICAgICAgICAtZSAicy9eSlNDX0NM
QVNTX0FWQUlMQUJMRS9KU0NfRVhURVJOIEFQSV9BVkFJTEFCTEUvIgorICAgICAgICAgICAgLWUg
InMvXkpTQ19DTEFTU19ERVBSRUNBVEVEL0pTQ19FWFRFUk4gQVBJX0RFUFJFQ0FURUQvIgorICAg
ICAgICApCisgICAgZWxzZQorICAgICAgICBTRURfT1BUSU9OUys9KC1lICdzL0pTQ18oQVBJX3xD
TEFTU18pQVZBSUxBQkxFXCguKlwpXHMqXCkvL2cnIC1lICdzL0pTQ18oQVBJX3xDTEFTU18pREVQ
UkVDQVRFRChfV0lUSF9SRVBMQUNFTUVOVCk/XCguKlwpXHMqXCkvL2cnKQorICAgIGZpCisKKyAg
ICBTRURfT1BUSU9OUys9KCR7T1RIRVJfU0VEX09QVElPTlNbKl19KQorCisgICAgZm9yIEhFQURF
Ul9QQVRIIGluICIkezF9LyIqLmg7IGRvCisgICAgICAgIGlmIFtbICIkSEVBREVSX1BBVEgiIC1u
dCAkVElNRVNUQU1QX1BBVEggXV07IHRoZW4KKyAgICAgICAgICAgIGRpdHRvICIke0hFQURFUl9Q
QVRIfSIgIiR7VEFSR0VUX1RFTVBfRElSfS8ke0hFQURFUl9QQVRIIyMqL30iCisgICAgICAgICAg
ICBzZWQgLWkgLnRtcCAtRSAiJHtTRURfT1BUSU9OU1tAXX0iICIke1RBUkdFVF9URU1QX0RJUn0v
JHtIRUFERVJfUEFUSCMjKi99IiB8fCBleGl0ICQ/CisgICAgICAgICAgICBtdiAiJHtUQVJHRVRf
VEVNUF9ESVJ9LyR7SEVBREVSX1BBVEgjIyovfSIgIiRIRUFERVJfUEFUSCIKKyAgICAgICAgZmkK
KyAgICBkb25lCit9CisKK0RFRklOSVRJT05TX1BBVEg9dXNyL2xvY2FsL2luY2x1ZGUvV2ViS2l0
QWRkaXRpb25zL1NjcmlwdHMvcG9zdHByb2Nlc3MtZnJhbWV3b3JrLWhlYWRlcnMtZGVmaW5pdGlv
bnMKKworcHJvY2Vzc19kZWZpbml0aW9ucyAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9LyR7REVGSU5J
VElPTlNfUEFUSH0iIHx8IHByb2Nlc3NfZGVmaW5pdGlvbnMgIiR7U0RLUk9PVH0vJHtERUZJTklU
SU9OU19QQVRIfSIKKworcmV3cml0ZV9oZWFkZXJzICIke1RBUkdFVF9CVUlMRF9ESVJ9LyR7UFVC
TElDX0hFQURFUlNfRk9MREVSX1BBVEh9IgorcmV3cml0ZV9oZWFkZXJzICIke1RBUkdFVF9CVUlM
RF9ESVJ9LyR7UFJJVkFURV9IRUFERVJTX0ZPTERFUl9QQVRIfSIKKwordG91Y2ggJHtUSU1FU1RB
TVBfUEFUSH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9zaGVsbC9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9zaGVsbC9DTWFrZUxpc3RzLnR4dAppbmRl
eCBiM2M3ZTBiMWU2ODFiMmVlYTkxMDUyYzZhOGI3YWI5NzVlNWEwOTZlLi44NzE1M2UzNTFiMDc1
NWFkNWI5OTU0NDYzMGMzZmUyZjQ1NDQyMjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvc2hlbGwvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3No
ZWxsL0NNYWtlTGlzdHMudHh0CkBAIC0yOCw2ICsyOCw3IEBAIHNldChURVNUQVBJX1NPVVJDRVMK
ICAgICAuLi9BUEkvdGVzdHMvUGluZ1BvbmdTdGFja092ZXJmbG93VGVzdC5jcHAKICAgICAuLi9B
UEkvdGVzdHMvVHlwZWRBcnJheUNUZXN0LmNwcAogICAgIC4uL0FQSS90ZXN0cy90ZXN0YXBpLmMK
KyAgICAuLi9BUEkvdGVzdHMvdGVzdGFwaS5jcHAKICkKIAogV0VCS0lUX0lOQ0xVREVfQ09ORklH
X0ZJTEVTX0lGX0VYSVNUUygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dG1lbS90ZXN0bWVtLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RtZW0vdGVzdG1lbS5t
bQppbmRleCBiNGQyYWQzOTExOWJjNTU1OGNkMzljOWM4MTgyZmFjZWRjYmVhZjI0Li45YmM0YjQw
ZTFlYWMwMjMxN2ZkM2U4NDViNDU0ZDBmNDhiNmVlNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdG1lbS90ZXN0bWVtLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0bWVtL3Rlc3RtZW0ubW0KQEAgLTIzLDYgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAorI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5oPgogI2ltcG9ydCA8aW50dHlwZXMuaD4KICNpbXBvcnQgPHN0ZGlvLmg+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>