<?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>234787</bug_id>
          
          <creation_ts>2022-01-01 12:25:06 -0800</creation_ts>
          <short_desc>Add a helper function to compute an element&apos;s accessibility role in core DOM code</short_desc>
          <delta_ts>2022-02-07 13:58:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=234669</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>annulen</cc>
    
    <cc>apinheiro</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mifenton</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sergio</cc>
    
    <cc>tyler_w</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1827442</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-01 12:25:06 -0800</bug_when>
    <thetext>...and then use it in accessibility code, as well as a handful of other places where we currently map an element&apos;s role attribute to an `AccessibilityRole` enum type.

webkit.org/b/234669 for more context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827444</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-01 12:25:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/87041580&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827544</commentid>
    <comment_count>2</comment_count>
      <attachid>448187</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-02 14:50:07 -0800</bug_when>
    <thetext>Created attachment 448187
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827546</commentid>
    <comment_count>3</comment_count>
      <attachid>448187</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-02 15:31:25 -0800</bug_when>
    <thetext>Comment on attachment 448187
For EWS

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

&gt; Source/WebCore/dom/ElementAccessibility.h:195
&gt; +using ARIARoleMap = HashMap&lt;String, AccessibilityRole, ASCIICaseInsensitiveHash&gt;;
&gt; +ARIARoleMap&amp; ariaRoleMap();
&gt; +
&gt; +using ARIAReverseRoleMap = HashMap&lt;AccessibilityRole, String, DefaultHash&lt;int&gt;, WTF::UnsignedWithZeroKeyHashTraits&lt;int&gt;&gt;;
&gt; +ARIAReverseRoleMap&amp; reverseAriaRoleMap();

Instead of exposing maps, we should expose mapping functions:

    AccessibilityRole parseAccessibilityRole(StringView);
    ASCIILiteral accessibiltyRoleString(AccessibilityRole);

Any HashMap usage should be a secret in the implementation file. This lets us do things like just use a contexpr array for the &quot;reverse role map&quot;, looking up a name for consecutively-numbered enumeration does not require a hash table. And for parseAccessibilityRole we may want to use a SortedArrayMap instead.

The initial patch can leaves the map implementations just as is, but we can then change that subsequently with a localized patch, since it’s all private to the implementation file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827547</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-02 15:31:52 -0800</bug_when>
    <thetext>Might need to take a different type rather than StringView, at first at least.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827800</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-03 12:00:53 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 448187 [details]
&gt; For EWS
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=448187&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/ElementAccessibility.h:195
&gt; &gt; +using ARIARoleMap = HashMap&lt;String, AccessibilityRole, ASCIICaseInsensitiveHash&gt;;
&gt; &gt; +ARIARoleMap&amp; ariaRoleMap();
&gt; &gt; +
&gt; &gt; +using ARIAReverseRoleMap = HashMap&lt;AccessibilityRole, String, DefaultHash&lt;int&gt;, WTF::UnsignedWithZeroKeyHashTraits&lt;int&gt;&gt;;
&gt; &gt; +ARIAReverseRoleMap&amp; reverseAriaRoleMap();
&gt; 
&gt; Instead of exposing maps, we should expose mapping functions:
&gt; 
&gt;     AccessibilityRole parseAccessibilityRole(StringView);
&gt;     ASCIILiteral accessibiltyRoleString(AccessibilityRole);
&gt; 
&gt; Any HashMap usage should be a secret in the implementation file. This lets
&gt; us do things like just use a contexpr array for the &quot;reverse role map&quot;,
&gt; looking up a name for consecutively-numbered enumeration does not require a
&gt; hash table. And for parseAccessibilityRole we may want to use a
&gt; SortedArrayMap instead.
&gt; 
&gt; The initial patch can leaves the map implementations just as is, but we can
&gt; then change that subsequently with a localized patch, since it’s all private
&gt; to the implementation file.

Sounds good! I&apos;ll refactor it so that the hash maps are just implementation details.

It also occurred to me that we don&apos;t actually need to expose a `parseAccessibilityRole` function as well, since the only use of it is internal to  `accessibilityRole()`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827803</commentid>
    <comment_count>6</comment_count>
      <attachid>448253</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-03 12:27:09 -0800</bug_when>
    <thetext>Created attachment 448253
More refactoring</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827817</commentid>
    <comment_count>7</comment_count>
      <attachid>448253</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-03 13:46:12 -0800</bug_when>
    <thetext>Comment on attachment 448253
More refactoring

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

&gt; Source/WebCore/dom/ElementAccessibility.cpp:55
&gt; +    const RoleEntry roles[] = {

static constexpr

&gt; Source/WebCore/dom/ElementAccessibility.h:35
&gt; +    Annotation = 1,

We really should get rid of this “1” later.

&gt; Source/WebCore/dom/ElementAccessibility.h:189
&gt; +String accessibiltyRoleString(AccessibilityRole);

Return type here should be based on how callers use this. To minimize memory use ideally we would return ASCIILiteral, not any kind of already allocated string.

But if callers are performance sensitive then we could use a String return type like this so the strings can be preallocated. Further, I’d we do that we could return a const String&amp; or const AtomString&amp; to possibly save reference count churn. Returning any of these 3 allows us to cache the strings and return the already allocated ones as we currently do. Could be good for memory use to cache AtomString so we share memory with any actual strings used in element attributes. Costs extra memory for the entries in the AtomString table.

I think I’d go with ASCIILiteral to prioritize memory efficiency over performance here.

There is a typo here in the word “accessibility”, missing the “i” in “lit”.

&gt; Source/WebCore/page/ModalContainerObserver.cpp:207
&gt; +    if (auto role = accessibilityRole(element)) {

Could use value_or to avoid the nesting and local variable; not sure if it’s better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827835</commentid>
    <comment_count>8</comment_count>
      <attachid>448253</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-03 15:57:31 -0800</bug_when>
    <thetext>Comment on attachment 448253
More refactoring

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

&gt;&gt; Source/WebCore/dom/ElementAccessibility.cpp:55
&gt;&gt; +    const RoleEntry roles[] = {
&gt; 
&gt; static constexpr

👍🏻 Made this `static constexpr`.

&gt;&gt; Source/WebCore/dom/ElementAccessibility.h:35
&gt;&gt; +    Annotation = 1,
&gt; 
&gt; We really should get rid of this “1” later.

Indeed — I left a few FIXMEs in this patch regarding this bit (in particular: the fact that it relies on being able to `static_cast` an `AccessibilityRole` to an integer value of 0, which AFAIK is UB).

&gt;&gt; Source/WebCore/dom/ElementAccessibility.h:189
&gt;&gt; +String accessibiltyRoleString(AccessibilityRole);
&gt; 
&gt; Return type here should be based on how callers use this. To minimize memory use ideally we would return ASCIILiteral, not any kind of already allocated string.
&gt; 
&gt; But if callers are performance sensitive then we could use a String return type like this so the strings can be preallocated. Further, I’d we do that we could return a const String&amp; or const AtomString&amp; to possibly save reference count churn. Returning any of these 3 allows us to cache the strings and return the already allocated ones as we currently do. Could be good for memory use to cache AtomString so we share memory with any actual strings used in element attributes. Costs extra memory for the entries in the AtomString table.
&gt; 
&gt; I think I’d go with ASCIILiteral to prioritize memory efficiency over performance here.
&gt; 
&gt; There is a typo here in the word “accessibility”, missing the “i” in “lit”.

Fixed the typo!

Re: ASCIILiteral as the return type — I initially wanted to return that, but avoided doing so because I needed custom hash traits for ASCIILiteral in order to use that as a hash value:

```
namespace WTF {

template&lt;&gt; struct HashTraits&lt;ASCIILiteral&gt; : GenericHashTraits&lt;ASCIILiteral&gt; {
    static ASCIILiteral emptyValue() { return &quot;&quot;_s; }

    static void constructDeletedValue(ASCIILiteral&amp; slot) { slot = ASCIILiteral::null(); }
    static bool isDeletedValue(const ASCIILiteral&amp; slot) { return slot.isNull(); }
};

} // namespace WTF

…

using ARIAReverseRoleMap = HashMap&lt;AccessibilityRole, ASCIILiteral, DefaultHash&lt;int&gt;, WTF::UnsignedWithZeroKeyHashTraits&lt;int&gt;, HashTraits&lt;ASCIILiteral&gt;&gt;;
```

That said, it probably makes more sense in the (slightly longer term) to avoid using ASCIILiteral as a hash value altogether and instead just have a `constexpr` helper function that&apos;s a big switch case (or something similar to that), so I&apos;m not sure we&apos;ll even need the hash traits after then.

If it&apos;s okay, I&apos;ll leave a FIXME for now to eliminate the hash table lookup when going from role =&gt; string and return an ASCIILiteral from `accessibilityRoleString()`?

&gt;&gt; Source/WebCore/page/ModalContainerObserver.cpp:207
&gt;&gt; +    if (auto role = accessibilityRole(element)) {
&gt; 
&gt; Could use value_or to avoid the nesting and local variable; not sure if it’s better.

I&apos;ll change this to `accessibilityRole(element).value_or(AccessibilityRole::Unknown)` to avoid the nesting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827837</commentid>
    <comment_count>9</comment_count>
      <attachid>448259</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-03 16:07:49 -0800</bug_when>
    <thetext>Created attachment 448259
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827839</commentid>
    <comment_count>10</comment_count>
      <attachid>448253</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-03 16:14:26 -0800</bug_when>
    <thetext>Comment on attachment 448253
More refactoring

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

&gt;&gt;&gt; Source/WebCore/dom/ElementAccessibility.h:189
&gt;&gt;&gt; +String accessibiltyRoleString(AccessibilityRole);
&gt;&gt; 
&gt;&gt; Return type here should be based on how callers use this. To minimize memory use ideally we would return ASCIILiteral, not any kind of already allocated string.
&gt;&gt; 
&gt;&gt; But if callers are performance sensitive then we could use a String return type like this so the strings can be preallocated. Further, I’d we do that we could return a const String&amp; or const AtomString&amp; to possibly save reference count churn. Returning any of these 3 allows us to cache the strings and return the already allocated ones as we currently do. Could be good for memory use to cache AtomString so we share memory with any actual strings used in element attributes. Costs extra memory for the entries in the AtomString table.
&gt;&gt; 
&gt;&gt; I think I’d go with ASCIILiteral to prioritize memory efficiency over performance here.
&gt;&gt; 
&gt;&gt; There is a typo here in the word “accessibility”, missing the “i” in “lit”.
&gt; 
&gt; Fixed the typo!
&gt; 
&gt; Re: ASCIILiteral as the return type — I initially wanted to return that, but avoided doing so because I needed custom hash traits for ASCIILiteral in order to use that as a hash value:
&gt; 
&gt; ```
&gt; namespace WTF {
&gt; 
&gt; template&lt;&gt; struct HashTraits&lt;ASCIILiteral&gt; : GenericHashTraits&lt;ASCIILiteral&gt; {
&gt;     static ASCIILiteral emptyValue() { return &quot;&quot;_s; }
&gt; 
&gt;     static void constructDeletedValue(ASCIILiteral&amp; slot) { slot = ASCIILiteral::null(); }
&gt;     static bool isDeletedValue(const ASCIILiteral&amp; slot) { return slot.isNull(); }
&gt; };
&gt; 
&gt; } // namespace WTF
&gt; 
&gt; …
&gt; 
&gt; using ARIAReverseRoleMap = HashMap&lt;AccessibilityRole, ASCIILiteral, DefaultHash&lt;int&gt;, WTF::UnsignedWithZeroKeyHashTraits&lt;int&gt;, HashTraits&lt;ASCIILiteral&gt;&gt;;
&gt; ```
&gt; 
&gt; That said, it probably makes more sense in the (slightly longer term) to avoid using ASCIILiteral as a hash value altogether and instead just have a `constexpr` helper function that&apos;s a big switch case (or something similar to that), so I&apos;m not sure we&apos;ll even need the hash traits after then.
&gt; 
&gt; If it&apos;s okay, I&apos;ll leave a FIXME for now to eliminate the hash table lookup when going from role =&gt; string and return an ASCIILiteral from `accessibilityRoleString()`?

I think all of this might be needed only because ASCIILiteral doesn’t have a default constructor; we should try adding that and see if it works without explicitly specifying any hash traits. Since we are using it as a *value* in a hash table, not a key, we don’t need a deleted value. If we wanted to make ASCIILiteral work as a key in a hash table that would be more work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827840</commentid>
    <comment_count>11</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-03 16:25:46 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #10)
&gt; Comment on attachment 448253 [details]

&gt; &gt; That said, it probably makes more sense in the (slightly longer term) to avoid using ASCIILiteral as a hash value altogether and instead just have a `constexpr` helper function that&apos;s a big switch case (or something similar to that), so I&apos;m not sure we&apos;ll even need the hash traits after then.
&gt; &gt; 
&gt; &gt; If it&apos;s okay, I&apos;ll leave a FIXME for now to eliminate the hash table lookup when going from role =&gt; string and return an ASCIILiteral from `accessibilityRoleString()`?
&gt; 
&gt; I think all of this might be needed only because ASCIILiteral doesn’t have a
&gt; default constructor; we should try adding that and see if it works without
&gt; explicitly specifying any hash traits. Since we are using it as a *value* in
&gt; a hash table, not a key, we don’t need a deleted value. If we wanted to make
&gt; ASCIILiteral work as a key in a hash table that would be more work.

Hm...I&apos;ll give that a try, but I suspect it will crash because the constructor `String(ASCIILiteral)` expects a non-null ASCIILiteral, since it calls into length() without a null check:

```
Ref&lt;StringImpl&gt; StringImpl::createFromLiteral(ASCIILiteral literal)
{
    return createFromLiteral(literal.characters(), literal.length());
}
```

...and `length()` is just a wrapper around `strlen`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827842</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-03 16:30:46 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #11)
&gt; Hm...I&apos;ll give that a try, but I suspect it will crash because the
&gt; constructor `String(ASCIILiteral)` expects a non-null ASCIILiteral, since it
&gt; calls into length() without a null check:

You can work around that by using find instead of get.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827843</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-03 16:31:55 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #12)
&gt; (In reply to Wenson Hsieh from comment #11)
&gt; &gt; Hm...I&apos;ll give that a try, but I suspect it will crash because the
&gt; &gt; constructor `String(ASCIILiteral)` expects a non-null ASCIILiteral, since it
&gt; &gt; calls into length() without a null check:
&gt; 
&gt; You can work around that by using find instead of get.

You can work around that by turning the null ASCIILiteral into an empty string one for the return value.

The question is what you want to return when the role is not in the table. I think we just want to crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827844</commentid>
    <comment_count>14</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-03 16:38:55 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #13)
&gt; (In reply to Darin Adler from comment #12)
&gt; &gt; (In reply to Wenson Hsieh from comment #11)
&gt; &gt; &gt; Hm...I&apos;ll give that a try, but I suspect it will crash because the
&gt; &gt; &gt; constructor `String(ASCIILiteral)` expects a non-null ASCIILiteral, since it
&gt; &gt; &gt; calls into length() without a null check:
&gt; &gt; 
&gt; &gt; You can work around that by using find instead of get.
&gt; 
&gt; You can work around that by turning the null ASCIILiteral into an empty
&gt; string one for the return value.

Yes — that should work.

&gt; 
&gt; The question is what you want to return when the role is not in the table. I
&gt; think we just want to crash.

Looking more carefully through the table, it seems `AccessibilityRole::Unknown` does not have a corresponding entry in this map, so we should probably fall back to the empty string (instead of null) in that case to avoid crashing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827851</commentid>
    <comment_count>15</comment_count>
      <attachid>448259</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-03 17:32:17 -0800</bug_when>
    <thetext>Comment on attachment 448259
Patch

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

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:2243
&gt; +    // FIXME: This seems like it depends on undefined behavior, since 0 is not a valid AccessibilityRole enum value.
&gt; +    if (static_cast&lt;int&gt;(*role))
&gt; +        return *role;
&gt;  
&gt;      return AccessibilityRole::Unknown;

I’d go further and say it’s no longer needed given your use of optional. This can just be:

    return *role;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827854</commentid>
    <comment_count>16</comment_count>
      <attachid>448263</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-03 18:26:37 -0800</bug_when>
    <thetext>Created attachment 448263
Return ASCIILiteral</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827866</commentid>
    <comment_count>17</comment_count>
      <attachid>448266</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-03 21:53:50 -0800</bug_when>
    <thetext>Created attachment 448266
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837587</commentid>
    <comment_count>18</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-02-04 14:18:07 -0800</bug_when>
    <thetext>This seems like a good change. Sorry we missed review on it. When you find some time, could you please rebase it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838345</commentid>
    <comment_count>19</comment_count>
      <attachid>448266</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2022-02-07 13:58:45 -0800</bug_when>
    <thetext>Comment on attachment 448266
For EWS

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

&gt; Source/WebCore/dom/ElementAccessibility.h:4
&gt; + * Redistribution and use in source and binary forms, with or without

Can we leave these in the Accessibility folder and prefix with AX?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448187</attachid>
            <date>2022-01-02 14:50:07 -0800</date>
            <delta_ts>2022-01-03 12:27:06 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-234787-20220102145006.patch</filename>
            <type>text/plain</type>
            <size>48242</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGZlOTY3Y2ExMDUzMDEw
Mjc2ODgyM2QxNjk1ZDZjZDYxOTE0NjIyOS4uZThhNDBjZWE3YmE4YTlhYTMyMDgzZTRiMGQxZTk0
MjY4MDM5MzQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIyLTAxLTAyICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGhlbHBl
ciBmdW5jdGlvbiB0byBjb21wdXRlIGFuIGVsZW1lbnQncyBhY2Nlc3NpYmlsaXR5IHJvbGUgaW4g
Y29yZSBET00gY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM0Nzg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhlcmUgYXJlIGEgY291cGxlIHBsYWNlcyBpbiBXZWJDb3JlIG91dHNpZGUgb2YgdGhl
IGNvbnRleHQgb2YgYWNjZXNzaWJpbGl0eSBjb2RlIHRoYXQgcGFyc2UgYEFjY2Vzc2liaWxpdHlS
b2xlYAorICAgICAgICBmcm9tIHRoZSAicm9sZSIgYXR0cmlidXRlIG9mIERPTSBlbGVtZW50cyBp
biBvcmRlciB0byBkcml2ZSB2YXJpb3VzIGhldXJpc3RpY3MuIEluIG9yZGVyIHRvIGRvIHRoaXMs
IHdlCisgICAgICAgIGN1cnJlbnRseSBpbmNsdWRlIGFjY2Vzc2liaWxpdHkgaGVhZGVycyBpbiB0
aGVzZSBmaWxlczsgaG93ZXZlciwgdGhpcyBpc24ndCBpZGVhbCBmb3IgbGF5ZXJpbmcsIHNpbmNl
IGFsbCB0aGUKKyAgICAgICAgYWNjZXNzaWJpbGl0eSBjb2RlIGlzIGludGVuZGVkIHRvIGJ1aWxk
IG9uIHRvcCBvZiB0aGUgY29yZSBET00uCisKKyAgICAgICAgVG8gYWRkcmVzcyB0aGlzLCBtb3Zl
IHRoZSBsb2dpYyBmb3IgcGFyc2luZyB0aGUgInJvbGUiIGF0dHJpYnV0ZSBpbnRvIGFuIGBBY2Nl
c3NpYmlsaXR5Um9sZWAgZW51bSBpbnRvIGEKKyAgICAgICAgc2VwYXJhdGUgaGVhZGVyLCBgRWxl
bWVudEFjY2Vzc2liaWxpdHkuaGAgKGFuZCBzZXBhcmF0ZSBoZWxwZXIgZnVuY3Rpb24pIGluIHRo
ZSBjb3JlIERPTSBpbXBsZW1lbnRhdGlvbiwgYW5kCisgICAgICAgIHRoZW4gaGF2ZSBhY2Nlc3Np
YmlsaXR5IGluY2x1ZGUgdGhhdCBoZWFkZXIuCisKKyAgICAgICAgVGhlbiwgY2hhbmdlIG5vbi1h
Y2Nlc3NpYmlsaXR5IERPTSBjb2RlIGluIFdlYkNvcmUgdG8gaW5jbHVkZSAiRWxlbWVudEFjY2Vz
c2liaWxpdHkuaCIgaW5zdGVhZCBvZiBwdWxsaW5nIGluCisgICAgICAgIGFjY2Vzc2liaWxpdHkg
aGVhZGVycy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUxpdmVSZWdpb25DcmVh
dGVkKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUltYWdlTWFwTGluazo6cm9sZVZh
bHVlIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpkZXRl
cm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVSb2xl
TWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFyaWFSb2xlTWFwKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OnJldmVyc2VBcmlhUm9sZU1hcCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhUm9sZVRvV2ViQ29yZVJvbGUpOiBE
ZWxldGVkLgorCisgICAgICAgIFJlcGxhY2UgYEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFSb2xl
VG9XZWJDb3JlUm9sZWAgd2l0aCBgV2ViQ29yZTo6YWNjZXNzaWJpbGl0eVJvbGVgLCB3aGljaCBw
YXJzZXMgdGhlIHJvbGUKKyAgICAgICAgYXR0cmlidXRlIG9mIHRoZSBnaXZlbiBgRWxlbWVudGAg
dG8gYW4gYEFjY2Vzc2liaWxpdHlSb2xlYCAob3IgYG51bGxvcHRgIGlmIHRoZSBlbGVtZW50IGRv
ZXMgbm90IGhhdmUgYSB2YWx1ZQorICAgICAgICBmb3IgdGhlIHJvbGUgYXR0cmlidXRlKS4KKwor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oOgorICAgICAgICAq
IGRvbS9FbGVtZW50QWNjZXNzaWJpbGl0eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
aW5pdGlhbGl6ZVJvbGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6YXJpYVJvbGVNYXApOgorICAg
ICAgICAoV2ViQ29yZTo6cmV2ZXJzZUFyaWFSb2xlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OmFj
Y2Vzc2liaWxpdHlSb2xlKToKKyAgICAgICAgKiBkb20vRWxlbWVudEFjY2Vzc2liaWxpdHkuaDog
QWRkZWQuCisKKyAgICAgICAgTW92ZSB0aGUgYEFjY2Vzc2liaWxpdHlSb2xlYCBlbnVtIGNsYXNz
IGhlcmUsIGFuZCBtYWtlIGl0IGB1aW50OF90YC4KKworICAgICAgICAqIGVkaXRpbmcvVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNFbmNsb3NpbmdJ
dGVtQm91bmRhcnlFbGVtZW50KToKKyAgICAgICAgKiBwYWdlL01vZGFsQ29udGFpbmVyT2JzZXJ2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNDbGlja2FibGVDb250cm9sKToKKyAgICAgICAg
KFdlYkNvcmU6OmFjY2Vzc2liaWxpdHlSb2xlKTogRGVsZXRlZC4KKwogMjAyMi0wMS0wMiAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBGb2xsb3d1cCB0
byByMjg3NDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlmNWFmM2RhYmEzYWEyMTcwNTcxMGEzZDM0NDMwNGI5MWFh
ZTkwN2IuLjJhMzIyY2M2ZTdhMDQ5YjhhYjVjNDNjNDc4Njc4YTc1MDBkZTA0YTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDEtMDIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGNvbXB1dGUg
YW4gZWxlbWVudCdzIGFjY2Vzc2liaWxpdHkgcm9sZSBpbiBjb3JlIERPTSBjb2RlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ3ODcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZWUgV2ViQ29yZS9DaGFu
Z2VMb2cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFuZGxlU3ludGhl
dGljQ2xpY2spOgorCiAyMDIyLTAxLTAyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgogCiAgICAgICAgIFtXZWJLaXQyXSBDYW1lcmEgY29udGludWl0eSBpcyBkaXNhYmxl
ZCBpbiByaWNobHkgZWRpdGFibGUgY29udGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZjhiODlm
MGVlZmZmZDllMDMwN2I2NDk5NTc0ZGYyNDE1MWVjY2U5ZC4uOWUyYWYxYjhiNTY3NzExMTYzMmY0
NmIzOGM4ZDMzOWZmZTdiZTY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC02MzEsNiArNjMxLDcg
QEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGRvbS9Eb2N1bWVu
dFN0b3JhZ2VBY2Nlc3MuaAogICAgIGRvbS9Eb2N1bWVudFR5cGUuaAogICAgIGRvbS9FbGVtZW50
LmgKKyAgICBkb20vRWxlbWVudEFjY2Vzc2liaWxpdHkuaAogICAgIGRvbS9FbGVtZW50QW5jZXN0
b3JJdGVyYXRvci5oCiAgICAgZG9tL0VsZW1lbnRDaGlsZEl0ZXJhdG9yLmgKICAgICBkb20vRWxl
bWVudENvbnRleHQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBiZDVhNzQ3OWNiMzllNDZjYzkxMDQwMGY0
ZWUzODQ5MzI0Yzc1MzFmLi5hYjIyNGRiMjBiZDAwOGUxM2VhMmFkMzlmZWE5MGIzYzU4NDRhY2Jm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dApAQCAtOTUwLDYgKzk1MCw3IEBAIGRvbS9Eb2N1bWVudFRvdWNoLmNw
cCBAbm8tdW5pZnkKIGRvbS9Eb2N1bWVudFR5cGUuY3BwCiBkb20vRHJhZ0V2ZW50LmNwcAogZG9t
L0VsZW1lbnQuY3BwCitkb20vRWxlbWVudEFjY2Vzc2liaWxpdHkuY3BwCiBkb20vRWxlbWVudERh
dGEuY3BwCiBkb20vRWxlbWVudFJhcmVEYXRhLmNwcAogZG9tL0Vycm9yRXZlbnQuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
M2M5ZWMyNWMwYTkyNDYwNmFlMmViMzI3NjRhMTc4ZGRjYzk0NDNmOC4uZThjODZjNWIzZTdhYjRj
Y2Y5NzZhMzUxNzNhOWEwMmM1YTlmYzhhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTQ4MSw2ICs1NDgxLDcgQEAKIAkJRjQy
OTk1MEYyNzBFNzUwMDAwMzIyOThCIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0Mjk5NTBEMjcwRTc1MDAwMDMy
Mjk4QiAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQzM0U5MDMxREJCREJBMjAwRUYwRDE0IC8qIFN0YXRp
Y1Bhc3RlYm9hcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0MzNFOTAyMURCQkRCQTIwMEVGMEQxNCAvKiBTdGF0aWNQYXN0ZWJvYXJkLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQzNzdENTcyNTUx
QzlDNjAwODBBQkZFIC8qIERpc3BsYXlMaXN0SXRlbVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0Mzc3RDU1MjU1MUM5QzYwMDgwQUJGRSAvKiBE
aXNwbGF5TGlzdEl0ZW1UeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRjQzQzM4MkEyNzgyNEMxOTAwOTlBQkNFIC8qIEVsZW1lbnRBY2Nlc3Np
YmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NDNDMzgyODI3ODI0QzE5MDA5OUFCQ0UgLyogRWxlbWVudEFjY2Vzc2liaWxpdHkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDQwRTc3QTIzM0Q5
NEQ3MDA2M0Y5QUIgLyogTmF2aWdhdG9yQ2xpcGJvYXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQwRTc2RjIzM0Q5NEQzMDA2M0Y5QUIgLyogTmF2
aWdhdG9yQ2xpcGJvYXJkLmggKi87IH07CiAJCUY0NDBFNzdCMjMzRDk0RDcwMDYzRjlBQiAvKiBD
bGlwYm9hcmRJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNDQwRTc3MDIzM0Q5NEQ0MDA2M0Y5QUIgLyogQ2xpcGJvYXJkSXRlbS5oICovOyB9Owog
CQlGNDQwRTc3RDIzM0Q5NEQ3MDA2M0Y5QUIgLyogQ2xpcGJvYXJkLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQwRTc3MjIzM0Q5NEQ1MDA2M0Y5QUIg
LyogQ2xpcGJvYXJkLmggKi87IH07CkBAIC0xNzY4NSw2ICsxNzY4Niw4IEBACiAJCUY0MzNFOTA0
MURCQkRCQzIwMEVGMEQxNCAvKiBTdGF0aWNQYXN0ZWJvYXJkLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFN0YXRpY1Bhc3RlYm9hcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NDM3N0Q1NTI1NTFDOUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1UeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY0Mzc3RDU2MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlbVR5cGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGNDNDMzgyODI3ODI0QzE5MDA5OUFCQ0UgLyogRWxlbWVudEFjY2Vz
c2liaWxpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWxlbWVudEFjY2Vzc2liaWxpdHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQzQzM4MjkyNzgyNEMxOTAwOTlBQkNFIC8qIEVsZW1l
bnRBY2Nlc3NpYmlsaXR5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVsZW1lbnRBY2Nlc3NpYmls
aXR5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0MEU3NkUyMzNEOTREMzAw
NjNGOUFCIC8qIENsaXBib2FyZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDbGlwYm9hcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDQwRTc2
RjIzM0Q5NEQzMDA2M0Y5QUIgLyogTmF2aWdhdG9yQ2xpcGJvYXJkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE5hdmlnYXRvckNsaXBib2FyZC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGNDQwRTc3MDIzM0Q5NEQ0MDA2M0Y5QUIgLyogQ2xpcGJvYXJkSXRlbS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGlwYm9hcmRJdGVtLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMjI1Niw2ICszMjI1OSw4IEBACiAJCQkJQThDNEE3
RjYwOUQ1NjMyNzAwMDNBQzhEIC8qIEVsZW1lbnQuY3BwICovLAogCQkJCUE4QzRBN0Y1MDlENTYz
MjcwMDAzQUM4RCAvKiBFbGVtZW50LmggKi8sCiAJCQkJOTNFRUMxRUEwOUMyODc3NzAwQzUxNUQx
IC8qIEVsZW1lbnQuaWRsICovLAorCQkJCUY0M0MzODI5Mjc4MjRDMTkwMDk5QUJDRSAvKiBFbGVt
ZW50QWNjZXNzaWJpbGl0eS5jcHAgKi8sCisJCQkJRjQzQzM4MjgyNzgyNEMxOTAwOTlBQkNFIC8q
IEVsZW1lbnRBY2Nlc3NpYmlsaXR5LmggKi8sCiAJCQkJRTRBRTdDMTkxN0QyMzIzNTAwMDlGQjMx
IC8qIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmggKi8sCiAJCQkJRTQ0MEFBOTUxQzY4NDIwODAw
QTI2NUNDIC8qIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmggKi8sCiAJCQkJRTQ2
QTJCMUQxN0NBNzZCMTAwMERCQ0Q4IC8qIEVsZW1lbnRDaGlsZEl0ZXJhdG9yLmggKi8sCkBAIC0z
NDI0MCw2ICszNDI0NSw3IEBACiAJCQkJOTNGREFGQ0EwQjExMzA3NDAwRTI3NDZGIC8qIEVkaXRv
ckluc2VydEFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzEyQkU0N0QxRkU4NjQ1ODAwMjAz
MUNDIC8qIEVmZmVjdFRpbWluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDNEE4MDcwOUQ1NjMy
NzAwMDNBQzhEIC8qIEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0M0MzODJBMjc4MjRD
MTkwMDk5QUJDRSAvKiBFbGVtZW50QWNjZXNzaWJpbGl0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTRBRTdDMUExN0QyMzIzNTAwMDlGQjMxIC8qIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFNDQwQUE5NjFDNjg0MjA4MDBBMjY1Q0MgLyogRWxlbWVudEFuZFRl
eHREZXNjZW5kYW50SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxMTk0NjU2MjQxODFF
QTEwMDQ2NkMxMSAvKiBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXgg
YWI3OGNiOThlNzZiNTEyYzUzMDA0Yzg5ZDJlYjY3OTMzZmRiODYxNS4uY2UyMGQyNWZiZjMyNDc4
YTc5MTg2N2E4YmJiNTkzMWE2MTNkYzNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0xMDI5LDkgKzEwMjksOCBAQCB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OmhhbmRsZUxpdmVSZWdpb25DcmVhdGVkKE5vZGUqIG5vZGUpCiAgICAgRWxlbWVu
dCogZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpOwogICAgIFN0cmluZyBsaXZlUmVn
aW9uU3RhdHVzID0gZWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhcmlh
X2xpdmVBdHRyKTsKICAgICBpZiAobGl2ZVJlZ2lvblN0YXR1cy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgY29uc3QgQXRvbVN0cmluZyYgYXJpYVJvbGUgPSBlbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKHJvbGVBdHRyKTsKLSAgICAgICAgaWYgKCFhcmlhUm9sZS5pc0VtcHR5
KCkpCi0gICAgICAgICAgICBsaXZlUmVnaW9uU3RhdHVzID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6
ZGVmYXVsdExpdmVSZWdpb25TdGF0dXNGb3JSb2xlKEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFS
b2xlVG9XZWJDb3JlUm9sZShhcmlhUm9sZSkpOworICAgICAgICBpZiAoYXV0byByb2xlID0gYWNj
ZXNzaWJpbGl0eVJvbGUoKmVsZW1lbnQpKQorICAgICAgICAgICAgbGl2ZVJlZ2lvblN0YXR1cyA9
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRlZmF1bHRMaXZlUmVnaW9uU3RhdHVzRm9yUm9sZSgqcm9s
ZSk7CiAgICAgfQogICAgIAogICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaXZlUmVnaW9u
U3RhdHVzSXNFbmFibGVkKGxpdmVSZWdpb25TdGF0dXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAKaW5k
ZXggYmYyMDE3MTIwNmU3YWJmZDJkY2U0YWYyOGIwYWI2NGVmMmJmNjJiYS4uZjk2NzE1NDJlMjM4
OTRkYWFjYzA2ZTJlOWM5MTY2N2RlYjRlN2Q5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3BwCkBAIC02
OCw5ICs2OCwxMSBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5r
Ojpyb2xlVmFsdWUoKSBjb25zdAogICAgIGlmICghbV9hcmVhRWxlbWVudCkKICAgICAgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3JlTGluazsKICAgICAKLSAgICBjb25zdCBBdG9t
U3RyaW5nJiBhcmlhUm9sZSA9IGdldEF0dHJpYnV0ZShyb2xlQXR0cik7Ci0gICAgaWYgKCFhcmlh
Um9sZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojphcmlh
Um9sZVRvV2ViQ29yZVJvbGUoYXJpYVJvbGUpOworICAgIGlmICghZWxlbWVudCgpKQorICAgICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rOworCisgICAgaWYgKGF1dG8g
cm9sZSA9IGFjY2Vzc2liaWxpdHlSb2xlKCplbGVtZW50KCkpKQorICAgICAgICByZXR1cm4gKnJv
bGU7CiAKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0LmNwcAppbmRleCA5ZmI4M2YyNDllZWIwNDQ3ZjdjMjA4ZDAzY2FlMTdlOTE4ZjI5ZDdj
Li4zNjc3MjAyNjdlMjY3NDBiYjAzM2UyYjRhMDgxOTU4ZmNkN2JmYmJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
LmNwcApAQCAtMjIwNSwxMSArMjIwNSwxMyBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjpjYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpIGNvbnN0CiAKIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0OjpkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgpIGNvbnN0CiB7
Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgYXJpYVJvbGUgPSBnZXRBdHRyaWJ1dGUocm9sZUF0dHIp
OwotICAgIGlmIChhcmlhUm9sZS5pc051bGwoKSB8fCBhcmlhUm9sZS5pc0VtcHR5KCkpCisgICAg
UmVmUHRyIGVsZW1lbnQgPSB0aGlzLT5lbGVtZW50KCk7CisgICAgaWYgKCFlbGVtZW50KQorICAg
ICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247CisKKyAgICBhdXRvIHJvbGUg
PSBhY2Nlc3NpYmlsaXR5Um9sZSgqZWxlbWVudCk7CisgICAgaWYgKCFyb2xlKQogICAgICAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247Ci0gICAgCi0gICAgQWNjZXNzaWJpbGl0
eVJvbGUgcm9sZSA9IGFyaWFSb2xlVG9XZWJDb3JlUm9sZShhcmlhUm9sZSk7CiAKICAgICAvLyBB
UklBIHN0YXRlcyBpZiBhbiBpdGVtIGNhbiBnZXQgZm9jdXMsIGl0IHNob3VsZCBub3QgYmUgcHJl
c2VudGF0aW9uYWwuCiAgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRh
dGlvbmFsICYmIGNhblNldEZvY3VzQXR0cmlidXRlKCkpCkBAIC0yMjIxLDcgKzIyMjMsNyBAQCBB
Y2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6ZGV0ZXJtaW5lQXJpYVJv
bGVBdHRyaWJ1dGUoKSBjb25zdAogICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpU
ZXh0QXJlYSAmJiAhYXJpYUlzTXVsdGlsaW5lKCkpCiAgICAgICAgIHJvbGUgPSBBY2Nlc3NpYmls
aXR5Um9sZTo6VGV4dEZpZWxkOwogCi0gICAgcm9sZSA9IHJlbWFwQXJpYVJvbGVEdWVUb1BhcmVu
dChyb2xlKTsKKyAgICByb2xlID0gcmVtYXBBcmlhUm9sZUR1ZVRvUGFyZW50KCpyb2xlKTsKICAg
ICAKICAgICAvLyBQcmVzZW50YXRpb25hbCByb2xlcyBhcmUgaW52YWxpZGF0ZWQgYnkgdGhlIHBy
ZXNlbmNlIG9mIEFSSUEgYXR0cmlidXRlcy4KICAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6UHJlc2VudGF0aW9uYWwgJiYgc3VwcG9ydHNBUklBQXR0cmlidXRlcygpKQpAQCAtMjIz
NCw4ICsyMjM2LDkgQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6
OmRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlKCkgY29uc3QKICAgICBpZiAocm9sZSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtSZWdpb24gJiYgIWhhc0F0dHJpYnV0ZShhcmlhX2xhYmVs
QXR0cikgJiYgIWhhc0F0dHJpYnV0ZShhcmlhX2xhYmVsbGVkYnlBdHRyKSkKICAgICAgICAgcm9s
ZSA9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOwogCi0gICAgaWYgKHN0YXRpY19jYXN0PGlu
dD4ocm9sZSkpCi0gICAgICAgIHJldHVybiByb2xlOworICAgIC8vIEZJWE1FOiBUaGlzIHNlZW1z
IGxpa2UgaXQgZGVwZW5kcyBvbiB1bmRlZmluZWQgYmVoYXZpb3IsIHNpbmNlIDAgaXMgbm90IGEg
dmFsaWQgQWNjZXNzaWJpbGl0eVJvbGUgZW51bSB2YWx1ZS4KKyAgICBpZiAoc3RhdGljX2Nhc3Q8
aW50Pigqcm9sZSkpCisgICAgICAgIHJldHVybiAqcm9sZTsKIAogICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5Um9sZTo6VW5rbm93bjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDFkY2NkODZhYmEyMzljZDkzZDEw
MmUwZmI0OTI2MjZlNWZiNDllYjYuLjI2M2QwMTg5N2YwZmZiODkyYmY0Mjk1YTEwMjUyNTY4ZWEw
ZjUyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50SW5s
aW5lcy5oIgogI2luY2x1ZGUgIkVkaXRpbmcuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKKyNpbmNs
dWRlICJFbGVtZW50QWNjZXNzaWJpbGl0eS5oIgogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnREaXNwYXRjaGVyLmgiCkBAIC0y
MjU5LDE4NyArMjI2MCw2IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmZpcnN0QW5vbnltb3VzQmxvY2tDaGlsZCgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLXVzaW5nIEFSSUFSb2xlTWFwID0gSGFzaE1hcDxTdHJpbmcsIEFjY2Vzc2liaWxpdHlS
b2xlLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+OwotdXNpbmcgQVJJQVJldmVyc2VSb2xlTWFw
ID0gSGFzaE1hcDxBY2Nlc3NpYmlsaXR5Um9sZSwgU3RyaW5nLCBEZWZhdWx0SGFzaDxpbnQ+LCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPGludD4+OwotCi1zdGF0aWMgQVJJQVJv
bGVNYXAqIGdBcmlhUm9sZU1hcCA9IG51bGxwdHI7Ci1zdGF0aWMgQVJJQVJldmVyc2VSb2xlTWFw
KiBnQXJpYVJldmVyc2VSb2xlTWFwID0gbnVsbHB0cjsKLQotc3RydWN0IFJvbGVFbnRyeSB7Ci0g
ICAgU3RyaW5nIGFyaWFSb2xlOwotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHdlYmNvcmVSb2xlOwot
fTsKLQotc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVJvbGVNYXAoKQotewotICAgIGlmIChnQXJpYVJv
bGVNYXApCi0gICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQoIWdBcmlhUmV2ZXJzZVJvbGVNYXAp
OwotCi0gICAgY29uc3QgUm9sZUVudHJ5IHJvbGVzW10gPSB7Ci0gICAgICAgIHsgImFsZXJ0Il9z
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25BbGVydCB9LAotICAgICAgICB7ICJhbGVy
dGRpYWxvZyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnREaWFsb2cgfSwK
LSAgICAgICAgeyAiYXBwbGljYXRpb24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcHBsaWNh
dGlvbiB9LAotICAgICAgICB7ICJhcnRpY2xlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1l
bnRBcnRpY2xlIH0sCi0gICAgICAgIHsgImJhbm5lciJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Okxh
bmRtYXJrQmFubmVyIH0sCi0gICAgICAgIHsgImJsb2NrcXVvdGUiX3MsIEFjY2Vzc2liaWxpdHlS
b2xlOjpCbG9ja3F1b3RlIH0sCi0gICAgICAgIHsgImJ1dHRvbiJfcywgQWNjZXNzaWJpbGl0eVJv
bGU6OkJ1dHRvbiB9LAotICAgICAgICB7ICJjYXB0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
Q2FwdGlvbiB9LAotICAgICAgICB7ICJjaGVja2JveCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkNo
ZWNrQm94IH0sCi0gICAgICAgIHsgImNvbXBsZW1lbnRhcnkiX3MsIEFjY2Vzc2liaWxpdHlSb2xl
OjpMYW5kbWFya0NvbXBsZW1lbnRhcnkgfSwKLSAgICAgICAgeyAiY29udGVudGluZm8iX3MsIEFj
Y2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0NvbnRlbnRJbmZvIH0sCi0gICAgICAgIHsgImRlbGV0
aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVsZXRpb24gfSwKLSAgICAgICAgeyAiZGlhbG9n
Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25EaWFsb2cgfSwKLSAgICAgICAgeyAi
ZGlyZWN0b3J5Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RGlyZWN0b3J5IH0sCi0gICAgICAgIC8v
IFRoZSAnZG9jLSonIHJvbGVzIGFyZSBkZWZpbmVkIHRoZSBBUklBIERQVUIgbW9iaWxlOiBodHRw
czovL3d3dy53My5vcmcvVFIvZHB1Yi1hYW0tMS4wCi0gICAgICAgIC8vIEVkaXRvcidzIGRyYWZ0
IGlzIGN1cnJlbnRseSBhdCBodHRwczovL3czYy5naXRodWIuaW8vZHB1Yi1hYW0KLSAgICAgICAg
eyAiZG9jLWFic3RyYWN0Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3Jv
dXAgfSwKLSAgICAgICAgeyAiZG9jLWFja25vd2xlZGdtZW50cyJfcywgQWNjZXNzaWJpbGl0eVJv
bGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCi0gICAgICAgIHsgImRvYy1hZnRlcndvcmQiX3MsIEFj
Y2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAotICAgICAgICB7ICJkb2MtYXBw
ZW5kaXgiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAotICAgICAg
ICB7ICJkb2MtYmFja2xpbmsiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3JlTGluayB9LAot
ICAgICAgICB7ICJkb2MtYmlibGlvZW50cnkiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRl
bSB9LAotICAgICAgICB7ICJkb2MtYmlibGlvZ3JhcGh5Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
TGFuZG1hcmtEb2NSZWdpb24gfSwKLSAgICAgICAgeyAiZG9jLWJpYmxpb3JlZiJfcywgQWNjZXNz
aWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rIH0sCi0gICAgICAgIHsgImRvYy1jaGFwdGVyIl9zLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKLSAgICAgICAgeyAiZG9jLWNv
bG9waG9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAgfSwKLSAg
ICAgICAgeyAiZG9jLWNvbmNsdXNpb24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0Rv
Y1JlZ2lvbiB9LAotICAgICAgICB7ICJkb2MtY292ZXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpJ
bWFnZSB9LAotICAgICAgICB7ICJkb2MtY3JlZGl0Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBw
bGljYXRpb25UZXh0R3JvdXAgfSwKLSAgICAgICAgeyAiZG9jLWNyZWRpdHMiX3MsIEFjY2Vzc2li
aWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAotICAgICAgICB7ICJkb2MtZGVkaWNhdGlv
biJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0sCi0gICAgICAg
IHsgImRvYy1lbmRub3RlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW0gfSwKLSAgICAg
ICAgeyAiZG9jLWVuZG5vdGVzIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdp
b24gfSwKLSAgICAgICAgeyAiZG9jLWVwaWdyYXBoIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBw
bGljYXRpb25UZXh0R3JvdXAgfSwKLSAgICAgICAgeyAiZG9jLWVwaWxvZ3VlIl9zLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKLSAgICAgICAgeyAiZG9jLWVycmF0YSJf
cywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCi0gICAgICAgIHsgImRv
Yy1leGFtcGxlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAgfSwK
LSAgICAgICAgeyAiZG9jLWZvb3Rub3RlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9vdG5vdGUg
fSwKLSAgICAgICAgeyAiZG9jLWZvcmV3b3JkIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1h
cmtEb2NSZWdpb24gfSwKLSAgICAgICAgeyAiZG9jLWdsb3NzYXJ5Il9zLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKLSAgICAgICAgeyAiZG9jLWdsb3NzcmVmIl9zLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbmsgfSwKLSAgICAgICAgeyAiZG9jLWluZGV4Il9z
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0aW9uIH0sCi0gICAgICAgIHsgImRv
Yy1pbnRyb2R1Y3Rpb24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9
LAotICAgICAgICB7ICJkb2Mtbm90ZXJlZiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVM
aW5rIH0sCi0gICAgICAgIHsgImRvYy1ub3RpY2UiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1
bWVudE5vdGUgfSwKLSAgICAgICAgeyAiZG9jLXBhZ2VicmVhayJfcywgQWNjZXNzaWJpbGl0eVJv
bGU6OlNwbGl0dGVyIH0sCi0gICAgICAgIHsgImRvYy1wYWdlbGlzdCJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbiB9LAotICAgICAgICB7ICJkb2MtcGFydCJfcywgQWNj
ZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCi0gICAgICAgIHsgImRvYy1wcmVm
YWNlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKLSAgICAgICAg
eyAiZG9jLXByb2xvZ3VlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24g
fSwKLSAgICAgICAgeyAiZG9jLXB1bGxxdW90ZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxp
Y2F0aW9uVGV4dEdyb3VwIH0sCi0gICAgICAgIHsgImRvYy1xbmEiX3MsIEFjY2Vzc2liaWxpdHlS
b2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB9LAotICAgICAgICB7ICJkb2Mtc3VidGl0bGUiX3Ms
IEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nIH0sCi0gICAgICAgIHsgImRvYy10aXAiX3MsIEFj
Y2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE5vdGUgfSwKLSAgICAgICAgeyAiZG9jLXRvYyJfcywg
QWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbiB9LAotICAgICAgICB7ICJmaWd1
cmUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpGaWd1cmUgfSwKLSAgICAgICAgLy8gVGhlIG1hcHBp
bmdzIGZvciAnZ3JhcGhpY3MtKicgcm9sZXMgYXJlIGRlZmluZWQgaW4gdGhpcyBzcGVjOiBodHRw
czovL3czYy5naXRodWIuaW8vZ3JhcGhpY3MtYWFtLwotICAgICAgICB7ICJncmFwaGljcy1kb2N1
bWVudCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkdyYXBoaWNzRG9jdW1lbnQgfSwKLSAgICAgICAg
eyAiZ3JhcGhpY3Mtb2JqZWN0Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JhcGhpY3NPYmplY3Qg
fSwKLSAgICAgICAgeyAiZ3JhcGhpY3Mtc3ltYm9sIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6R3Jh
cGhpY3NTeW1ib2wgfSwKLSAgICAgICAgeyAiZ3JpZCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Okdy
aWQgfSwKLSAgICAgICAgeyAiZ3JpZGNlbGwiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlkQ2Vs
bCB9LAotICAgICAgICB7ICJ0YWJsZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYmxlIH0sCi0g
ICAgICAgIHsgImNlbGwiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpDZWxsIH0sCi0gICAgICAgIHsg
ImNvbHVtbmhlYWRlciJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbkhlYWRlciB9LAotICAg
ICAgICB7ICJjb21ib2JveCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkNvbWJvQm94IH0sCi0gICAg
ICAgIHsgImRlZmluaXRpb24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpEZWZpbml0aW9uIH0sCi0g
ICAgICAgIHsgImRvY3VtZW50Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnQgfSwKLSAg
ICAgICAgeyAiZmVlZCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkZlZWQgfSwKLSAgICAgICAgeyAi
Zm9ybSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkZvcm0gfSwKLSAgICAgICAgeyAicm93aGVhZGVy
Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyIH0sCi0gICAgICAgIHsgImdyb3VwIl9z
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Hcm91cCB9LAotICAgICAgICB7ICJoZWFk
aW5nIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZyB9LAotICAgICAgICAvLyBUaGUgImlt
YWdlIiByb2xlIGlzIHN5bm9ueW1vdXMgd2l0aCB0aGUgImltZyIgcm9sZS4gaHR0cHM6Ly93M2Mu
Z2l0aHViLmlvL2FyaWEvI2ltYWdlCi0gICAgICAgIHsgImltYWdlIl9zLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6SW1hZ2UgfSwKLSAgICAgICAgeyAiaW1nIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1h
Z2UgfSwKLSAgICAgICAgeyAiaW5zZXJ0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6SW5zZXJ0
aW9uIH0sCi0gICAgICAgIHsgImxpbmsiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3JlTGlu
ayB9LAotICAgICAgICB7ICJsaXN0Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdCB9LAotICAg
ICAgICB7ICJsaXN0aXRlbSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtIH0sCi0gICAg
ICAgIHsgImxpc3Rib3giX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94IH0sCi0gICAgICAg
IHsgImxvZyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTG9nIH0sCi0gICAgICAg
IHsgIm1haW4iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya01haW4gfSwKLSAgICAgICAg
eyAibWFycXVlZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTWFycXVlZSB9LAot
ICAgICAgICB7ICJtYXRoIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnRNYXRoIH0sCi0g
ICAgICAgIHsgIm1lbnUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51IH0sCi0gICAgICAgIHsg
Im1lbnViYXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QmFyIH0sCi0gICAgICAgIHsgIm1l
bnVpdGVtIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW0gfSwKLSAgICAgICAgeyAibWVu
dWl0ZW1jaGVja2JveCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtQ2hlY2tib3ggfSwK
LSAgICAgICAgeyAibWVudWl0ZW1yYWRpbyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVt
UmFkaW8gfSwKLSAgICAgICAgeyAibWV0ZXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpNZXRlciB9
LAotICAgICAgICB7ICJub25lIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlc2VudGF0aW9uYWwg
fSwKLSAgICAgICAgeyAibm90ZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50Tm90ZSB9
LAotICAgICAgICB7ICJuYXZpZ2F0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtO
YXZpZ2F0aW9uIH0sCi0gICAgICAgIHsgIm9wdGlvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Okxp
c3RCb3hPcHRpb24gfSwKLSAgICAgICAgeyAicGFyYWdyYXBoIl9zLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6UGFyYWdyYXBoIH0sCi0gICAgICAgIHsgInByZXNlbnRhdGlvbiJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6OlByZXNlbnRhdGlvbmFsIH0sCi0gICAgICAgIHsgInByb2dyZXNzYmFyIl9zLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6UHJvZ3Jlc3NJbmRpY2F0b3IgfSwKLSAgICAgICAgeyAicmFkaW8iX3Ms
IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbiB9LAotICAgICAgICB7ICJyYWRpb2dyb3Vw
Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9Hcm91cCB9LAotICAgICAgICB7ICJyZWdpb24i
X3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1JlZ2lvbiB9LAotICAgICAgICB7ICJyb3ci
X3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpSb3cgfSwKLSAgICAgICAgeyAicm93Z3JvdXAiX3MsIEFj
Y2Vzc2liaWxpdHlSb2xlOjpSb3dHcm91cCB9LAotICAgICAgICB7ICJzY3JvbGxiYXIiX3MsIEFj
Y2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxCYXIgfSwKLSAgICAgICAgeyAic2VhcmNoIl9zLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtTZWFyY2ggfSwKLSAgICAgICAgeyAic2VhcmNoYm94Il9z
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6U2VhcmNoRmllbGQgfSwKLSAgICAgICAgeyAic2VwYXJhdG9y
Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXIgfSwKLSAgICAgICAgeyAic2xpZGVyIl9z
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyIH0sCi0gICAgICAgIHsgInNwaW5idXR0b24iX3Ms
IEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uIH0sCi0gICAgICAgIHsgInN0YXR1cyJfcywg
QWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uU3RhdHVzIH0sCi0gICAgICAgIHsgInN1YnNj
cmlwdCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlN1YnNjcmlwdCB9LAotICAgICAgICB7ICJzdXBl
cnNjcmlwdCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlN1cGVyc2NyaXB0IH0sCi0gICAgICAgIHsg
InN3aXRjaCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlN3aXRjaCB9LAotICAgICAgICB7ICJ0YWIi
X3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWIgfSwKLSAgICAgICAgeyAidGFibGlzdCJfcywgQWNj
ZXNzaWJpbGl0eVJvbGU6OlRhYkxpc3QgfSwKLSAgICAgICAgeyAidGFicGFuZWwiX3MsIEFjY2Vz
c2liaWxpdHlSb2xlOjpUYWJQYW5lbCB9LAotICAgICAgICB7ICJ0ZXh0Il9zLCBBY2Nlc3NpYmls
aXR5Um9sZTo6U3RhdGljVGV4dCB9LAotICAgICAgICB7ICJ0ZXh0Ym94Il9zLCBBY2Nlc3NpYmls
aXR5Um9sZTo6VGV4dEFyZWEgfSwKLSAgICAgICAgeyAidGVybSJfcywgQWNjZXNzaWJpbGl0eVJv
bGU6OlRlcm0gfSwKLSAgICAgICAgeyAidGltZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlRpbWUg
fSwKLSAgICAgICAgeyAidGltZXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRp
bWVyIH0sCi0gICAgICAgIHsgInRvb2xiYXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpUb29sYmFy
IH0sCi0gICAgICAgIHsgInRvb2x0aXAiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpVc2VySW50ZXJm
YWNlVG9vbHRpcCB9LAotICAgICAgICB7ICJ0cmVlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJl
ZSB9LAotICAgICAgICB7ICJ0cmVlZ3JpZCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlk
IH0sCi0gICAgICAgIHsgInRyZWVpdGVtIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW0g
fQotICAgIH07Ci0KLSAgICBnQXJpYVJvbGVNYXAgPSBuZXcgQVJJQVJvbGVNYXA7Ci0gICAgZ0Fy
aWFSZXZlcnNlUm9sZU1hcCA9IG5ldyBBUklBUmV2ZXJzZVJvbGVNYXA7Ci0gICAgc2l6ZV90IHJv
bGVMZW5ndGggPSBXVEZfQVJSQVlfTEVOR1RIKHJvbGVzKTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHJvbGVMZW5ndGg7ICsraSkgewotICAgICAgICBnQXJpYVJvbGVNYXAtPnNldChyb2xl
c1tpXS5hcmlhUm9sZSwgcm9sZXNbaV0ud2ViY29yZVJvbGUpOwotICAgICAgICBnQXJpYVJldmVy
c2VSb2xlTWFwLT5zZXQoc3RhdGljX2Nhc3Q8aW50Pihyb2xlc1tpXS53ZWJjb3JlUm9sZSksIHJv
bGVzW2ldLmFyaWFSb2xlKTsKLSAgICB9Ci0gICAgZ0FyaWFSZXZlcnNlUm9sZU1hcC0+c2V0KHN0
YXRpY19jYXN0PGludD4oQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlKSwgImltYWdlIl9zKTsKLX0K
LQotc3RhdGljIEFSSUFSb2xlTWFwJiBhcmlhUm9sZU1hcCgpCi17Ci0gICAgaW5pdGlhbGl6ZVJv
bGVNYXAoKTsKLSAgICByZXR1cm4gKmdBcmlhUm9sZU1hcDsKLX0KLQotc3RhdGljIEFSSUFSZXZl
cnNlUm9sZU1hcCYgcmV2ZXJzZUFyaWFSb2xlTWFwKCkKLXsKLSAgICBpbml0aWFsaXplUm9sZU1h
cCgpOwotICAgIHJldHVybiAqZ0FyaWFSZXZlcnNlUm9sZU1hcDsKLX0KLQotQWNjZXNzaWJpbGl0
eVJvbGUgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVJvbGVUb1dlYkNvcmVSb2xlKGNvbnN0IFN0
cmluZyYgdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlLmlzTnVsbCgpIHx8IHZhbHVlLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOwotCi0gICAgZm9y
IChhdXRvIHJvbGVOYW1lIDogU3RyaW5nVmlldyh2YWx1ZSkuc3BsaXQoJyAnKSkgewotICAgICAg
ICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gYXJpYVJvbGVNYXAoKS5nZXQ8QVNDSUlDYXNlSW5z
ZW5zaXRpdmVTdHJpbmdWaWV3SGFzaFRyYW5zbGF0b3I+KHJvbGVOYW1lKTsKLSAgICAgICAgaWYg
KHN0YXRpY19jYXN0PGludD4ocm9sZSkpCi0gICAgICAgICAgICByZXR1cm4gcm9sZTsKLSAgICB9
Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOwotfQotCiBTdHJpbmcgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6Y29tcHV0ZWRSb2xlU3RyaW5nKCkgY29uc3QKIHsKICAgICAvLyBG
SVhNRTogTmVlZCBhIGZldyBzcGVjaWFsIGNhc2VzIHRoYXQgYXJlbid0IGluIHRoZSBSb2xlTWFw
OiBvcHRpb24sIGV0Yy4gaHR0cDovL3dlYmtpdC5vcmcvYi8xMjgyOTYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggNjlkM2Jj
MzEzMDE1MjNjYmFiMTdlMWVkOWQ0ZjEzMGFhODIzZjg4YS4uZDg0ZmFkNDEyNzRiMjg3YWFhOWU2
NTdhZTdlNDBjMDdlNzNlZDI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTUzMyw3ICs1MzMsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCgpIG92ZXJyaWRlIHsgfQogICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0QW5vbnltb3VzQmxvY2tDaGlsZCgpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEFjY2Vzc2liaWxpdHlSb2xlIGFy
aWFSb2xlVG9XZWJDb3JlUm9sZShjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFz
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICB2aXJ0dWFsIGNvbnN0
IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGF0dHJpYnV0ZVZhbHVlKGNvbnN0IFN0cmluZyYpIGNv
bnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAppbmRleCBkM2JjZDA5MDQxZjAzYTJj
MWY5MzIzZTAyM2M3Y2YzY2IyYTk3OWU2Li4yMjlkMjY5ZjY3Y2RkMGQ3YjI3YTE0YWI1N2Q4M2Mx
NWFlMmM5YjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE5LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAKIC8vIEZJ
WE1FOiBTaG91bGQgcmVuYW1lIHRoaXMgZmlsZSBBWENvcmVPYmplY3QuaC4KIAorI2luY2x1ZGUg
IkVsZW1lbnRBY2Nlc3NpYmlsaXR5LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUgIkxheW91
dFJlY3QuaCIKQEAgLTExMCwxNjEgKzExMSw2IEBAIGVudW0gY2xhc3MgQVhBbmNlc3RvckZsYWcg
OiB1aW50OF90IHsKICAgICAvLyBCaXRzIDYgYW5kIDcgYXJlIGZyZWUuCiB9OwogCi1lbnVtIGNs
YXNzIEFjY2Vzc2liaWxpdHlSb2xlIHsKLSAgICBBbm5vdGF0aW9uID0gMSwKLSAgICBBcHBsaWNh
dGlvbiwKLSAgICBBcHBsaWNhdGlvbkFsZXJ0LAotICAgIEFwcGxpY2F0aW9uQWxlcnREaWFsb2cs
Ci0gICAgQXBwbGljYXRpb25EaWFsb2csCi0gICAgQXBwbGljYXRpb25Hcm91cCwKLSAgICBBcHBs
aWNhdGlvbkxvZywKLSAgICBBcHBsaWNhdGlvbk1hcnF1ZWUsCi0gICAgQXBwbGljYXRpb25TdGF0
dXMsCi0gICAgQXBwbGljYXRpb25UZXh0R3JvdXAsCi0gICAgQXBwbGljYXRpb25UaW1lciwKLSAg
ICBBdWRpbywKLSAgICBCbG9ja3F1b3RlLAotICAgIEJyb3dzZXIsCi0gICAgQnVzeUluZGljYXRv
ciwKLSAgICBCdXR0b24sCi0gICAgQ2FudmFzLAotICAgIENhcHRpb24sCi0gICAgQ2VsbCwKLSAg
ICBDaGVja0JveCwKLSAgICBDb2xvcldlbGwsCi0gICAgQ29sdW1uLAotICAgIENvbHVtbkhlYWRl
ciwKLSAgICBDb21ib0JveCwKLSAgICBEZWZpbml0aW9uLAotICAgIERlbGV0aW9uLAotICAgIERl
c2NyaXB0aW9uTGlzdCwKLSAgICBEZXNjcmlwdGlvbkxpc3REZXRhaWwsCi0gICAgRGVzY3JpcHRp
b25MaXN0VGVybSwKLSAgICBEZXRhaWxzLAotICAgIERpcmVjdG9yeSwKLSAgICBEaXNjbG9zdXJl
VHJpYW5nbGUsCi0gICAgRGl2LAotICAgIERvY3VtZW50LAotICAgIERvY3VtZW50QXJ0aWNsZSwK
LSAgICBEb2N1bWVudE1hdGgsCi0gICAgRG9jdW1lbnROb3RlLAotICAgIERyYXdlciwKLSAgICBF
ZGl0YWJsZVRleHQsCi0gICAgRmVlZCwKLSAgICBGaWd1cmUsCi0gICAgRm9vdGVyLAotICAgIEZv
b3Rub3RlLAotICAgIEZvcm0sCi0gICAgR3JhcGhpY3NEb2N1bWVudCwKLSAgICBHcmFwaGljc09i
amVjdCwKLSAgICBHcmFwaGljc1N5bWJvbCwKLSAgICBHcmlkLAotICAgIEdyaWRDZWxsLAotICAg
IEdyb3VwLAotICAgIEdyb3dBcmVhLAotICAgIEhlYWRpbmcsCi0gICAgSGVscFRhZywKLSAgICBI
b3Jpem9udGFsUnVsZSwKLSAgICBJZ25vcmVkLAotICAgIElubGluZSwKLSAgICBJbWFnZSwKLSAg
ICBJbWFnZU1hcCwKLSAgICBJbWFnZU1hcExpbmssCi0gICAgSW5jcmVtZW50b3IsCi0gICAgSW5z
ZXJ0aW9uLAotICAgIExhYmVsLAotICAgIExhbmRtYXJrQmFubmVyLAotICAgIExhbmRtYXJrQ29t
cGxlbWVudGFyeSwKLSAgICBMYW5kbWFya0NvbnRlbnRJbmZvLAotICAgIExhbmRtYXJrRG9jUmVn
aW9uLAotICAgIExhbmRtYXJrTWFpbiwKLSAgICBMYW5kbWFya05hdmlnYXRpb24sCi0gICAgTGFu
ZG1hcmtSZWdpb24sCi0gICAgTGFuZG1hcmtTZWFyY2gsCi0gICAgTGVnZW5kLAotICAgIExpbmss
Ci0gICAgTGlzdCwKLSAgICBMaXN0Qm94LAotICAgIExpc3RCb3hPcHRpb24sCi0gICAgTGlzdEl0
ZW0sCi0gICAgTGlzdE1hcmtlciwKLSAgICBNYXJrLAotICAgIE1hdGhFbGVtZW50LAotICAgIE1h
dHRlLAotICAgIE1lbnUsCi0gICAgTWVudUJhciwKLSAgICBNZW51QnV0dG9uLAotICAgIE1lbnVJ
dGVtLAotICAgIE1lbnVJdGVtQ2hlY2tib3gsCi0gICAgTWVudUl0ZW1SYWRpbywKLSAgICBNZW51
TGlzdFBvcHVwLAotICAgIE1lbnVMaXN0T3B0aW9uLAotICAgIE1ldGVyLAotICAgIE1vZGVsLAot
ICAgIE91dGxpbmUsCi0gICAgUGFyYWdyYXBoLAotICAgIFBvcFVwQnV0dG9uLAotICAgIFByZSwK
LSAgICBQcmVzZW50YXRpb25hbCwKLSAgICBQcm9ncmVzc0luZGljYXRvciwKLSAgICBSYWRpb0J1
dHRvbiwKLSAgICBSYWRpb0dyb3VwLAotICAgIFJvd0hlYWRlciwKLSAgICBSb3csCi0gICAgUm93
R3JvdXAsCi0gICAgUnVieUJhc2UsCi0gICAgUnVieUJsb2NrLAotICAgIFJ1YnlJbmxpbmUsCi0g
ICAgUnVieVJ1biwKLSAgICBSdWJ5VGV4dCwKLSAgICBSdWxlciwKLSAgICBSdWxlck1hcmtlciwK
LSAgICBTY3JvbGxBcmVhLAotICAgIFNjcm9sbEJhciwKLSAgICBTZWFyY2hGaWVsZCwKLSAgICBT
aGVldCwKLSAgICBTbGlkZXIsCi0gICAgU2xpZGVyVGh1bWIsCi0gICAgU3BpbkJ1dHRvbiwKLSAg
ICBTcGluQnV0dG9uUGFydCwKLSAgICBTcGxpdEdyb3VwLAotICAgIFNwbGl0dGVyLAotICAgIFN0
YXRpY1RleHQsCi0gICAgU3Vic2NyaXB0LAotICAgIFN1bW1hcnksCi0gICAgU3VwZXJzY3JpcHQs
Ci0gICAgU3dpdGNoLAotICAgIFN5c3RlbVdpZGUsCi0gICAgU1ZHUm9vdCwKLSAgICBTVkdUZXh0
LAotICAgIFNWR1RTcGFuLAotICAgIFNWR1RleHRQYXRoLAotICAgIFRhYkdyb3VwLAotICAgIFRh
Ykxpc3QsCi0gICAgVGFiUGFuZWwsCi0gICAgVGFiLAotICAgIFRhYmxlLAotICAgIFRhYmxlSGVh
ZGVyQ29udGFpbmVyLAotICAgIFRlcm0sCi0gICAgVGV4dEFyZWEsCi0gICAgVGV4dEZpZWxkLAot
ICAgIFRleHRHcm91cCwKLSAgICBUaW1lLAotICAgIFRyZWUsCi0gICAgVHJlZUdyaWQsCi0gICAg
VHJlZUl0ZW0sCi0gICAgVG9nZ2xlQnV0dG9uLAotICAgIFRvb2xiYXIsCi0gICAgVW5rbm93biwK
LSAgICBVc2VySW50ZXJmYWNlVG9vbHRpcCwKLSAgICBWYWx1ZUluZGljYXRvciwKLSAgICBWaWRl
bywKLSAgICBXZWJBcHBsaWNhdGlvbiwKLSAgICBXZWJBcmVhLAotICAgIFdlYkNvcmVMaW5rLAot
ICAgIFdpbmRvdywKLX07Ci0KIHVzaW5nIEFjY2Vzc2liaWxpdHlSb2xlU2V0ID0gSGFzaFNldDxB
Y2Nlc3NpYmlsaXR5Um9sZSwgSW50SGFzaDxBY2Nlc3NpYmlsaXR5Um9sZT4sIFdURjo6U3Ryb25n
RW51bUhhc2hUcmFpdHM8QWNjZXNzaWJpbGl0eVJvbGU+PjsKIAogQUxXQVlTX0lOTElORSBTdHJp
bmcgYWNjZXNzaWJpbGl0eVJvbGVUb1N0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSByb2xlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBY2Nlc3NpYmlsaXR5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QWNjZXNzaWJpbGl0eS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODcw
YWRiYTZjYzA3ODM4ZTU2NTdmMGVjNjM5OTA5NzA1ODE0ZmMzMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QWNjZXNzaWJpbGl0eS5jcHAKQEAgLTAsMCArMSwy
MTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRWxlbWVu
dEFjY2Vzc2liaWxpdHkuaCIKKworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJFbGVt
ZW50SW5saW5lcy5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ1ZpZXcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgQVJJQVJvbGVN
YXAqIGdBcmlhUm9sZU1hcCA9IG51bGxwdHI7CitzdGF0aWMgQVJJQVJldmVyc2VSb2xlTWFwKiBn
QXJpYVJldmVyc2VSb2xlTWFwID0gbnVsbHB0cjsKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVJv
bGVNYXAoKQoreworICAgIGlmIChnQXJpYVJvbGVNYXApCisgICAgICAgIHJldHVybjsKKyAgICBB
U1NFUlQoIWdBcmlhUmV2ZXJzZVJvbGVNYXApOworCisgICAgc3RydWN0IFJvbGVFbnRyeSB7Cisg
ICAgICAgIFN0cmluZyBhcmlhUm9sZTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVJvbGUgd2ViY29y
ZVJvbGU7CisgICAgfTsKKworICAgIGNvbnN0IFJvbGVFbnRyeSByb2xlc1tdID0geworICAgICAg
ICB7ICJhbGVydCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnQgfSwKKyAg
ICAgICAgeyAiYWxlcnRkaWFsb2ciX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkFs
ZXJ0RGlhbG9nIH0sCisgICAgICAgIHsgImFwcGxpY2F0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6V2ViQXBwbGljYXRpb24gfSwKKyAgICAgICAgeyAiYXJ0aWNsZSJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6OkRvY3VtZW50QXJ0aWNsZSB9LAorICAgICAgICB7ICJiYW5uZXIiX3MsIEFjY2Vzc2li
aWxpdHlSb2xlOjpMYW5kbWFya0Jhbm5lciB9LAorICAgICAgICB7ICJibG9ja3F1b3RlIl9zLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6QmxvY2txdW90ZSB9LAorICAgICAgICB7ICJidXR0b24iX3MsIEFj
Y2Vzc2liaWxpdHlSb2xlOjpCdXR0b24gfSwKKyAgICAgICAgeyAiY2FwdGlvbiJfcywgQWNjZXNz
aWJpbGl0eVJvbGU6OkNhcHRpb24gfSwKKyAgICAgICAgeyAiY2hlY2tib3giX3MsIEFjY2Vzc2li
aWxpdHlSb2xlOjpDaGVja0JveCB9LAorICAgICAgICB7ICJjb21wbGVtZW50YXJ5Il9zLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb21wbGVtZW50YXJ5IH0sCisgICAgICAgIHsgImNvbnRl
bnRpbmZvIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb250ZW50SW5mbyB9LAorICAg
ICAgICB7ICJkZWxldGlvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkRlbGV0aW9uIH0sCisgICAg
ICAgIHsgImRpYWxvZyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uRGlhbG9nIH0s
CisgICAgICAgIHsgImRpcmVjdG9yeSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkRpcmVjdG9yeSB9
LAorICAgICAgICAvLyBUaGUgJ2RvYy0qJyByb2xlcyBhcmUgZGVmaW5lZCB0aGUgQVJJQSBEUFVC
IG1vYmlsZTogaHR0cHM6Ly93d3cudzMub3JnL1RSL2RwdWItYWFtLTEuMAorICAgICAgICAvLyBF
ZGl0b3IncyBkcmFmdCBpcyBjdXJyZW50bHkgYXQgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2RwdWIt
YWFtCisgICAgICAgIHsgImRvYy1hYnN0cmFjdCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxp
Y2F0aW9uVGV4dEdyb3VwIH0sCisgICAgICAgIHsgImRvYy1hY2tub3dsZWRnbWVudHMiX3MsIEFj
Y2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtYWZ0
ZXJ3b3JkIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKKyAgICAg
ICAgeyAiZG9jLWFwcGVuZGl4Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdp
b24gfSwKKyAgICAgICAgeyAiZG9jLWJhY2tsaW5rIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6V2Vi
Q29yZUxpbmsgfSwKKyAgICAgICAgeyAiZG9jLWJpYmxpb2VudHJ5Il9zLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6TGlzdEl0ZW0gfSwKKyAgICAgICAgeyAiZG9jLWJpYmxpb2dyYXBoeSJfcywgQWNjZXNz
aWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1iaWJsaW9y
ZWYiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3JlTGluayB9LAorICAgICAgICB7ICJkb2Mt
Y2hhcHRlciJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAg
ICAgIHsgImRvYy1jb2xvcGhvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4
dEdyb3VwIH0sCisgICAgICAgIHsgImRvYy1jb25jbHVzaW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLWNvdmVyIl9zLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6SW1hZ2UgfSwKKyAgICAgICAgeyAiZG9jLWNyZWRpdCJfcywgQWNjZXNzaWJp
bGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0sCisgICAgICAgIHsgImRvYy1jcmVkaXRz
Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKKyAgICAgICAgeyAi
ZG9jLWRlZGljYXRpb24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91
cCB9LAorICAgICAgICB7ICJkb2MtZW5kbm90ZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJ
dGVtIH0sCisgICAgICAgIHsgImRvYy1lbmRub3RlcyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Okxh
bmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1lcGlncmFwaCJfcywgQWNjZXNzaWJp
bGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0sCisgICAgICAgIHsgImRvYy1lcGlsb2d1
ZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsg
ImRvYy1lcnJhdGEiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAor
ICAgICAgICB7ICJkb2MtZXhhbXBsZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9u
VGV4dEdyb3VwIH0sCisgICAgICAgIHsgImRvYy1mb290bm90ZSJfcywgQWNjZXNzaWJpbGl0eVJv
bGU6OkZvb3Rub3RlIH0sCisgICAgICAgIHsgImRvYy1mb3Jld29yZCJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1nbG9zc2FyeSJfcywg
QWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1n
bG9zc3JlZiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rIH0sCisgICAgICAgIHsg
ImRvYy1pbmRleCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbiB9LAor
ICAgICAgICB7ICJkb2MtaW50cm9kdWN0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1h
cmtEb2NSZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLW5vdGVyZWYiX3MsIEFjY2Vzc2liaWxpdHlS
b2xlOjpXZWJDb3JlTGluayB9LAorICAgICAgICB7ICJkb2Mtbm90aWNlIl9zLCBBY2Nlc3NpYmls
aXR5Um9sZTo6RG9jdW1lbnROb3RlIH0sCisgICAgICAgIHsgImRvYy1wYWdlYnJlYWsiX3MsIEFj
Y2Vzc2liaWxpdHlSb2xlOjpTcGxpdHRlciB9LAorICAgICAgICB7ICJkb2MtcGFnZWxpc3QiX3Ms
IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb24gfSwKKyAgICAgICAgeyAiZG9j
LXBhcnQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAg
ICB7ICJkb2MtcHJlZmFjZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9u
IH0sCisgICAgICAgIHsgImRvYy1wcm9sb2d1ZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRt
YXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1wdWxscXVvdGUiX3MsIEFjY2Vzc2liaWxp
dHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB9LAorICAgICAgICB7ICJkb2MtcW5hIl9zLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAgfSwKKyAgICAgICAgeyAiZG9j
LXN1YnRpdGxlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZyB9LAorICAgICAgICB7ICJk
b2MtdGlwIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnROb3RlIH0sCisgICAgICAgIHsg
ImRvYy10b2MiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb24gfSwKKyAg
ICAgICAgeyAiZmlndXJlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RmlndXJlIH0sCisgICAgICAg
IC8vIFRoZSBtYXBwaW5ncyBmb3IgJ2dyYXBoaWNzLSonIHJvbGVzIGFyZSBkZWZpbmVkIGluIHRo
aXMgc3BlYzogaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2dyYXBoaWNzLWFhbS8KKyAgICAgICAgeyAi
Z3JhcGhpY3MtZG9jdW1lbnQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpHcmFwaGljc0RvY3VtZW50
IH0sCisgICAgICAgIHsgImdyYXBoaWNzLW9iamVjdCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Okdy
YXBoaWNzT2JqZWN0IH0sCisgICAgICAgIHsgImdyYXBoaWNzLXN5bWJvbCJfcywgQWNjZXNzaWJp
bGl0eVJvbGU6OkdyYXBoaWNzU3ltYm9sIH0sCisgICAgICAgIHsgImdyaWQiX3MsIEFjY2Vzc2li
aWxpdHlSb2xlOjpHcmlkIH0sCisgICAgICAgIHsgImdyaWRjZWxsIl9zLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6R3JpZENlbGwgfSwKKyAgICAgICAgeyAidGFibGUiX3MsIEFjY2Vzc2liaWxpdHlSb2xl
OjpUYWJsZSB9LAorICAgICAgICB7ICJjZWxsIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2VsbCB9
LAorICAgICAgICB7ICJjb2x1bW5oZWFkZXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW5I
ZWFkZXIgfSwKKyAgICAgICAgeyAiY29tYm9ib3giX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpDb21i
b0JveCB9LAorICAgICAgICB7ICJkZWZpbml0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVm
aW5pdGlvbiB9LAorICAgICAgICB7ICJkb2N1bWVudCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkRv
Y3VtZW50IH0sCisgICAgICAgIHsgImZlZWQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpGZWVkIH0s
CisgICAgICAgIHsgImZvcm0iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpGb3JtIH0sCisgICAgICAg
IHsgInJvd2hlYWRlciJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlciB9LAorICAgICAg
ICB7ICJncm91cCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uR3JvdXAgfSwKKyAg
ICAgICAgeyAiaGVhZGluZyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmcgfSwKKyAgICAg
ICAgLy8gVGhlICJpbWFnZSIgcm9sZSBpcyBzeW5vbnltb3VzIHdpdGggdGhlICJpbWciIHJvbGUu
IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9hcmlhLyNpbWFnZQorICAgICAgICB7ICJpbWFnZSJfcywg
QWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlIH0sCisgICAgICAgIHsgImltZyJfcywgQWNjZXNzaWJp
bGl0eVJvbGU6OkltYWdlIH0sCisgICAgICAgIHsgImluc2VydGlvbiJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6Okluc2VydGlvbiB9LAorICAgICAgICB7ICJsaW5rIl9zLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6V2ViQ29yZUxpbmsgfSwKKyAgICAgICAgeyAibGlzdCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6
Okxpc3QgfSwKKyAgICAgICAgeyAibGlzdGl0ZW0iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0
SXRlbSB9LAorICAgICAgICB7ICJsaXN0Ym94Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJv
eCB9LAorICAgICAgICB7ICJsb2ciX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkxv
ZyB9LAorICAgICAgICB7ICJtYWluIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtNYWlu
IH0sCisgICAgICAgIHsgIm1hcnF1ZWUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlv
bk1hcnF1ZWUgfSwKKyAgICAgICAgeyAibWF0aCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3Vt
ZW50TWF0aCB9LAorICAgICAgICB7ICJtZW51Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudSB9
LAorICAgICAgICB7ICJtZW51YmFyIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJhciB9LAor
ICAgICAgICB7ICJtZW51aXRlbSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtIH0sCisg
ICAgICAgIHsgIm1lbnVpdGVtY2hlY2tib3giX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRl
bUNoZWNrYm94IH0sCisgICAgICAgIHsgIm1lbnVpdGVtcmFkaW8iX3MsIEFjY2Vzc2liaWxpdHlS
b2xlOjpNZW51SXRlbVJhZGlvIH0sCisgICAgICAgIHsgIm1ldGVyIl9zLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6TWV0ZXIgfSwKKyAgICAgICAgeyAibm9uZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlBy
ZXNlbnRhdGlvbmFsIH0sCisgICAgICAgIHsgIm5vdGUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpE
b2N1bWVudE5vdGUgfSwKKyAgICAgICAgeyAibmF2aWdhdGlvbiJfcywgQWNjZXNzaWJpbGl0eVJv
bGU6OkxhbmRtYXJrTmF2aWdhdGlvbiB9LAorICAgICAgICB7ICJvcHRpb24iX3MsIEFjY2Vzc2li
aWxpdHlSb2xlOjpMaXN0Qm94T3B0aW9uIH0sCisgICAgICAgIHsgInBhcmFncmFwaCJfcywgQWNj
ZXNzaWJpbGl0eVJvbGU6OlBhcmFncmFwaCB9LAorICAgICAgICB7ICJwcmVzZW50YXRpb24iX3Ms
IEFjY2Vzc2liaWxpdHlSb2xlOjpQcmVzZW50YXRpb25hbCB9LAorICAgICAgICB7ICJwcm9ncmVz
c2JhciJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlByb2dyZXNzSW5kaWNhdG9yIH0sCisgICAgICAg
IHsgInJhZGlvIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b24gfSwKKyAgICAgICAg
eyAicmFkaW9ncm91cCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvR3JvdXAgfSwKKyAgICAg
ICAgeyAicmVnaW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtSZWdpb24gfSwKKyAg
ICAgICAgeyAicm93Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93IH0sCisgICAgICAgIHsgInJv
d2dyb3VwIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93R3JvdXAgfSwKKyAgICAgICAgeyAic2Ny
b2xsYmFyIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQmFyIH0sCisgICAgICAgIHsgInNl
YXJjaCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrU2VhcmNoIH0sCisgICAgICAgIHsg
InNlYXJjaGJveCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlNlYXJjaEZpZWxkIH0sCisgICAgICAg
IHsgInNlcGFyYXRvciJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlNwbGl0dGVyIH0sCisgICAgICAg
IHsgInNsaWRlciJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlciB9LAorICAgICAgICB7ICJz
cGluYnV0dG9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvbiB9LAorICAgICAgICB7
ICJzdGF0dXMiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblN0YXR1cyB9LAorICAg
ICAgICB7ICJzdWJzY3JpcHQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpTdWJzY3JpcHQgfSwKKyAg
ICAgICAgeyAic3VwZXJzY3JpcHQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpTdXBlcnNjcmlwdCB9
LAorICAgICAgICB7ICJzd2l0Y2giX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpTd2l0Y2ggfSwKKyAg
ICAgICAgeyAidGFiIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiIH0sCisgICAgICAgIHsgInRh
Ymxpc3QiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJMaXN0IH0sCisgICAgICAgIHsgInRhYnBh
bmVsIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiUGFuZWwgfSwKKyAgICAgICAgeyAidGV4dCJf
cywgQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQgfSwKKyAgICAgICAgeyAidGV4dGJveCJf
cywgQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRBcmVhIH0sCisgICAgICAgIHsgInRlcm0iX3MsIEFj
Y2Vzc2liaWxpdHlSb2xlOjpUZXJtIH0sCisgICAgICAgIHsgInRpbWUiX3MsIEFjY2Vzc2liaWxp
dHlSb2xlOjpUaW1lIH0sCisgICAgICAgIHsgInRpbWVyIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
QXBwbGljYXRpb25UaW1lciB9LAorICAgICAgICB7ICJ0b29sYmFyIl9zLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6VG9vbGJhciB9LAorICAgICAgICB7ICJ0b29sdGlwIl9zLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VXNlckludGVyZmFjZVRvb2x0aXAgfSwKKyAgICAgICAgeyAidHJlZSJfcywgQWNjZXNzaWJp
bGl0eVJvbGU6OlRyZWUgfSwKKyAgICAgICAgeyAidHJlZWdyaWQiX3MsIEFjY2Vzc2liaWxpdHlS
b2xlOjpUcmVlR3JpZCB9LAorICAgICAgICB7ICJ0cmVlaXRlbSJfcywgQWNjZXNzaWJpbGl0eVJv
bGU6OlRyZWVJdGVtIH0KKyAgICB9OworCisgICAgZ0FyaWFSb2xlTWFwID0gbmV3IEFSSUFSb2xl
TWFwOworICAgIGdBcmlhUmV2ZXJzZVJvbGVNYXAgPSBuZXcgQVJJQVJldmVyc2VSb2xlTWFwOwor
ICAgIHNpemVfdCByb2xlTGVuZ3RoID0gV1RGX0FSUkFZX0xFTkdUSChyb2xlcyk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCByb2xlTGVuZ3RoOyArK2kpIHsKKyAgICAgICAgZ0FyaWFSb2xl
TWFwLT5zZXQocm9sZXNbaV0uYXJpYVJvbGUsIHJvbGVzW2ldLndlYmNvcmVSb2xlKTsKKyAgICAg
ICAgZ0FyaWFSZXZlcnNlUm9sZU1hcC0+c2V0KHN0YXRpY19jYXN0PGludD4ocm9sZXNbaV0ud2Vi
Y29yZVJvbGUpLCByb2xlc1tpXS5hcmlhUm9sZSk7CisgICAgfQorICAgIGdBcmlhUmV2ZXJzZVJv
bGVNYXAtPnNldChzdGF0aWNfY2FzdDxpbnQ+KEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZSksICJp
bWFnZSJfcyk7Cit9CisKK0FSSUFSb2xlTWFwJiBhcmlhUm9sZU1hcCgpCit7CisgICAgaW5pdGlh
bGl6ZVJvbGVNYXAoKTsKKyAgICByZXR1cm4gKmdBcmlhUm9sZU1hcDsKK30KKworQVJJQVJldmVy
c2VSb2xlTWFwJiByZXZlcnNlQXJpYVJvbGVNYXAoKQoreworICAgIGluaXRpYWxpemVSb2xlTWFw
KCk7CisgICAgcmV0dXJuICpnQXJpYVJldmVyc2VSb2xlTWFwOworfQorCitzdGQ6Om9wdGlvbmFs
PEFjY2Vzc2liaWxpdHlSb2xlPiBhY2Nlc3NpYmlsaXR5Um9sZShjb25zdCBFbGVtZW50JiBlbGVt
ZW50KQoreworICAgIGF1dG8mIHZhbHVlID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKEhUTUxOYW1lczo6cm9sZUF0dHIpOworICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBmb3IgKGF1dG8gcm9sZU5hbWUg
OiBTdHJpbmdWaWV3KHZhbHVlKS5zcGxpdCgnICcpKSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlz
IHNlZW1zIGxpa2UgaXQgZGVwZW5kcyBvbiB1bmRlZmluZWQgYmVoYXZpb3IsIHNpbmNlIDAgaXMg
bm90IGEgdmFsaWQgZW51bSB2YWx1ZSBmb3IgQWNjZXNzaWJpbGl0eVJvbGUuCisgICAgICAgIGlm
IChhdXRvIHJvbGUgPSBhcmlhUm9sZU1hcCgpLmdldDxBU0NJSUNhc2VJbnNlbnNpdGl2ZVN0cmlu
Z1ZpZXdIYXNoVHJhbnNsYXRvcj4ocm9sZU5hbWUpOyBzdGF0aWNfY2FzdDxpbnQ+KHJvbGUpKQor
ICAgICAgICAgICAgcmV0dXJuIHJvbGU7CisgICAgfQorCisgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlSb2xlOjpVbmtub3duOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFjY2Vzc2liaWxpdHkuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50QWNjZXNzaWJpbGl0eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExN2Y0ODZkZDgyZjkz
ZjU3YzVkYTEzMzI5MDQwZWEwN2E4ODgwMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudEFjY2Vzc2liaWxpdHkuaApAQCAtMCwwICsxLDE5OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRWxlbWVudDsKKworZW51bSBjbGFzcyBB
Y2Nlc3NpYmlsaXR5Um9sZSA6IHVpbnQ4X3QgeworICAgIEFubm90YXRpb24gPSAxLAorICAgIEFw
cGxpY2F0aW9uLAorICAgIEFwcGxpY2F0aW9uQWxlcnQsCisgICAgQXBwbGljYXRpb25BbGVydERp
YWxvZywKKyAgICBBcHBsaWNhdGlvbkRpYWxvZywKKyAgICBBcHBsaWNhdGlvbkdyb3VwLAorICAg
IEFwcGxpY2F0aW9uTG9nLAorICAgIEFwcGxpY2F0aW9uTWFycXVlZSwKKyAgICBBcHBsaWNhdGlv
blN0YXR1cywKKyAgICBBcHBsaWNhdGlvblRleHRHcm91cCwKKyAgICBBcHBsaWNhdGlvblRpbWVy
LAorICAgIEF1ZGlvLAorICAgIEJsb2NrcXVvdGUsCisgICAgQnJvd3NlciwKKyAgICBCdXN5SW5k
aWNhdG9yLAorICAgIEJ1dHRvbiwKKyAgICBDYW52YXMsCisgICAgQ2FwdGlvbiwKKyAgICBDZWxs
LAorICAgIENoZWNrQm94LAorICAgIENvbG9yV2VsbCwKKyAgICBDb2x1bW4sCisgICAgQ29sdW1u
SGVhZGVyLAorICAgIENvbWJvQm94LAorICAgIERlZmluaXRpb24sCisgICAgRGVsZXRpb24sCisg
ICAgRGVzY3JpcHRpb25MaXN0LAorICAgIERlc2NyaXB0aW9uTGlzdERldGFpbCwKKyAgICBEZXNj
cmlwdGlvbkxpc3RUZXJtLAorICAgIERldGFpbHMsCisgICAgRGlyZWN0b3J5LAorICAgIERpc2Ns
b3N1cmVUcmlhbmdsZSwKKyAgICBEaXYsCisgICAgRG9jdW1lbnQsCisgICAgRG9jdW1lbnRBcnRp
Y2xlLAorICAgIERvY3VtZW50TWF0aCwKKyAgICBEb2N1bWVudE5vdGUsCisgICAgRHJhd2VyLAor
ICAgIEVkaXRhYmxlVGV4dCwKKyAgICBGZWVkLAorICAgIEZpZ3VyZSwKKyAgICBGb290ZXIsCisg
ICAgRm9vdG5vdGUsCisgICAgRm9ybSwKKyAgICBHcmFwaGljc0RvY3VtZW50LAorICAgIEdyYXBo
aWNzT2JqZWN0LAorICAgIEdyYXBoaWNzU3ltYm9sLAorICAgIEdyaWQsCisgICAgR3JpZENlbGws
CisgICAgR3JvdXAsCisgICAgR3Jvd0FyZWEsCisgICAgSGVhZGluZywKKyAgICBIZWxwVGFnLAor
ICAgIEhvcml6b250YWxSdWxlLAorICAgIElnbm9yZWQsCisgICAgSW5saW5lLAorICAgIEltYWdl
LAorICAgIEltYWdlTWFwLAorICAgIEltYWdlTWFwTGluaywKKyAgICBJbmNyZW1lbnRvciwKKyAg
ICBJbnNlcnRpb24sCisgICAgTGFiZWwsCisgICAgTGFuZG1hcmtCYW5uZXIsCisgICAgTGFuZG1h
cmtDb21wbGVtZW50YXJ5LAorICAgIExhbmRtYXJrQ29udGVudEluZm8sCisgICAgTGFuZG1hcmtE
b2NSZWdpb24sCisgICAgTGFuZG1hcmtNYWluLAorICAgIExhbmRtYXJrTmF2aWdhdGlvbiwKKyAg
ICBMYW5kbWFya1JlZ2lvbiwKKyAgICBMYW5kbWFya1NlYXJjaCwKKyAgICBMZWdlbmQsCisgICAg
TGluaywKKyAgICBMaXN0LAorICAgIExpc3RCb3gsCisgICAgTGlzdEJveE9wdGlvbiwKKyAgICBM
aXN0SXRlbSwKKyAgICBMaXN0TWFya2VyLAorICAgIE1hcmssCisgICAgTWF0aEVsZW1lbnQsCisg
ICAgTWF0dGUsCisgICAgTWVudSwKKyAgICBNZW51QmFyLAorICAgIE1lbnVCdXR0b24sCisgICAg
TWVudUl0ZW0sCisgICAgTWVudUl0ZW1DaGVja2JveCwKKyAgICBNZW51SXRlbVJhZGlvLAorICAg
IE1lbnVMaXN0UG9wdXAsCisgICAgTWVudUxpc3RPcHRpb24sCisgICAgTWV0ZXIsCisgICAgTW9k
ZWwsCisgICAgT3V0bGluZSwKKyAgICBQYXJhZ3JhcGgsCisgICAgUG9wVXBCdXR0b24sCisgICAg
UHJlLAorICAgIFByZXNlbnRhdGlvbmFsLAorICAgIFByb2dyZXNzSW5kaWNhdG9yLAorICAgIFJh
ZGlvQnV0dG9uLAorICAgIFJhZGlvR3JvdXAsCisgICAgUm93SGVhZGVyLAorICAgIFJvdywKKyAg
ICBSb3dHcm91cCwKKyAgICBSdWJ5QmFzZSwKKyAgICBSdWJ5QmxvY2ssCisgICAgUnVieUlubGlu
ZSwKKyAgICBSdWJ5UnVuLAorICAgIFJ1YnlUZXh0LAorICAgIFJ1bGVyLAorICAgIFJ1bGVyTWFy
a2VyLAorICAgIFNjcm9sbEFyZWEsCisgICAgU2Nyb2xsQmFyLAorICAgIFNlYXJjaEZpZWxkLAor
ICAgIFNoZWV0LAorICAgIFNsaWRlciwKKyAgICBTbGlkZXJUaHVtYiwKKyAgICBTcGluQnV0dG9u
LAorICAgIFNwaW5CdXR0b25QYXJ0LAorICAgIFNwbGl0R3JvdXAsCisgICAgU3BsaXR0ZXIsCisg
ICAgU3RhdGljVGV4dCwKKyAgICBTdWJzY3JpcHQsCisgICAgU3VtbWFyeSwKKyAgICBTdXBlcnNj
cmlwdCwKKyAgICBTd2l0Y2gsCisgICAgU3lzdGVtV2lkZSwKKyAgICBTVkdSb290LAorICAgIFNW
R1RleHQsCisgICAgU1ZHVFNwYW4sCisgICAgU1ZHVGV4dFBhdGgsCisgICAgVGFiR3JvdXAsCisg
ICAgVGFiTGlzdCwKKyAgICBUYWJQYW5lbCwKKyAgICBUYWIsCisgICAgVGFibGUsCisgICAgVGFi
bGVIZWFkZXJDb250YWluZXIsCisgICAgVGVybSwKKyAgICBUZXh0QXJlYSwKKyAgICBUZXh0Rmll
bGQsCisgICAgVGV4dEdyb3VwLAorICAgIFRpbWUsCisgICAgVHJlZSwKKyAgICBUcmVlR3JpZCwK
KyAgICBUcmVlSXRlbSwKKyAgICBUb2dnbGVCdXR0b24sCisgICAgVG9vbGJhciwKKyAgICBVbmtu
b3duLAorICAgIFVzZXJJbnRlcmZhY2VUb29sdGlwLAorICAgIFZhbHVlSW5kaWNhdG9yLAorICAg
IFZpZGVvLAorICAgIFdlYkFwcGxpY2F0aW9uLAorICAgIFdlYkFyZWEsCisgICAgV2ViQ29yZUxp
bmssCisgICAgV2luZG93LAorfTsKKwordXNpbmcgQVJJQVJvbGVNYXAgPSBIYXNoTWFwPFN0cmlu
ZywgQWNjZXNzaWJpbGl0eVJvbGUsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD47CitBUklBUm9s
ZU1hcCYgYXJpYVJvbGVNYXAoKTsKKwordXNpbmcgQVJJQVJldmVyc2VSb2xlTWFwID0gSGFzaE1h
cDxBY2Nlc3NpYmlsaXR5Um9sZSwgU3RyaW5nLCBEZWZhdWx0SGFzaDxpbnQ+LCBXVEY6OlVuc2ln
bmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPGludD4+OworQVJJQVJldmVyc2VSb2xlTWFwJiByZXZl
cnNlQXJpYVJvbGVNYXAoKTsKKworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxBY2Nlc3Np
YmlsaXR5Um9sZT4gYWNjZXNzaWJpbGl0eVJvbGUoY29uc3QgRWxlbWVudCYpOworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRN
YW5pcHVsYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDQ3NDI5ZDU5MTdhMjNhMmVkYWUxNmQwZjc3
Zjk0MTJjYThmNTZhMGUuLjkyNjNkZjUyOGNmZGE0MDFmZmMyNzhlMGJmOTdhZDdhOTFhNmY5MWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9i
amVjdC5oIgogI2luY2x1ZGUgIkNoYXJhY3RlckRhdGEuaCIKICNpbmNsdWRlICJFZGl0aW5nLmgi
CisjaW5jbHVkZSAiRWxlbWVudEFjY2Vzc2liaWxpdHkuaCIKICNpbmNsdWRlICJFbGVtZW50QW5j
ZXN0b3JJdGVyYXRvci5oIgogI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkZyYW1l
Vmlldy5oIgpAQCAtMzE1LDExICszMTYsNyBAQCBzdGF0aWMgYm9vbCBpc0VuY2xvc2luZ0l0ZW1C
b3VuZGFyeUVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKICAgICBpZiAoIXJlbmRlcmVy
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHJvbGUgPSBbXShjb25zdCBFbGVt
ZW50JiBlbGVtZW50KSAtPiBBY2Nlc3NpYmlsaXR5Um9sZSB7Ci0gICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphcmlhUm9sZVRvV2ViQ29yZVJvbGUoZWxlbWVudC5hdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6cm9sZUF0dHIpKTsKLSAgICB9OwotCi0g
ICAgaWYgKGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmJ1dHRvblRhZykgfHwgcm9sZShl
bGVtZW50KSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uKQorICAgIGlmIChlbGVtZW50Lmhh
c1RhZ05hbWUoSFRNTE5hbWVzOjpidXR0b25UYWcpIHx8IGFjY2Vzc2liaWxpdHlSb2xlKGVsZW1l
bnQpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b24pCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgYXV0byBkaXNwbGF5VHlwZSA9IHJlbmRlcmVyLT5zdHlsZSgpLmRpc3BsYXkoKTsKQEAg
LTMyOCw3ICszMjUsNyBAQCBzdGF0aWMgYm9vbCBpc0VuY2xvc2luZ0l0ZW1Cb3VuZGFyeUVsZW1l
bnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgICAgIGZvciAoUmVmUHRyIHBhcmVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudCgpOyBwYXJl
bnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICBpZiAo
cGFyZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6bmF2VGFnKSB8fCByb2xlKCpwYXJlbnQpID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb24pCisgICAgICAgICAgICBpZiAo
cGFyZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6bmF2VGFnKSB8fCBhY2Nlc3NpYmlsaXR5Um9s
ZSgqcGFyZW50KSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0aW9uKQogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Nb2RhbENvbnRhaW5lck9ic2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTW9kYWxDb250YWluZXJPYnNlcnZlci5jcHAKaW5kZXggZGVhNTBiNzcwMmQ0
ZDNiZGQzMmNmOTI3YjAxZDM4M2EyMmY2MzVlZi4uZWUyMzYxYmE1M2NkZGVjOTYxMTI5ZWY0Mjg0
NzFhMWRiM2ZkMWZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Nb2RhbENvbnRh
aW5lck9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01vZGFsQ29udGFpbmVy
T2JzZXJ2ZXIuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgorI2lu
Y2x1ZGUgIkVsZW1lbnRBY2Nlc3NpYmlsaXR5LmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgpAQCAt
MTMxLDExICsxMzIsNiBAQCBzdGF0aWMgYm9vbCBtYXRjaGVzU2VhcmNoVGVybShjb25zdCBUZXh0
JiB0ZXh0Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYgc2VhcmNoVGVybQogICAgIHJldHVybiB0cnVl
OwogfQogCi1zdGF0aWMgQWNjZXNzaWJpbGl0eVJvbGUgYWNjZXNzaWJpbGl0eVJvbGUoY29uc3Qg
SFRNTEVsZW1lbnQmIGVsZW1lbnQpCi17Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmFyaWFSb2xlVG9XZWJDb3JlUm9sZShlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oSFRNTE5hbWVzOjpyb2xlQXR0cikpOwotfQotCiBzdGF0aWMgYm9vbCBpc0luc2lkZU5h
dmlnYXRpb25FbGVtZW50KGNvbnN0IFRleHQmIHRleHROb2RlKQogewogICAgIGZvciAoYXV0byYg
cGFyZW50IDogYW5jZXN0b3JzT2ZUeXBlPEhUTUxFbGVtZW50Pih0ZXh0Tm9kZSkpIHsKQEAgLTIw
OCwxNCArMjA0LDE2IEBAIHN0YXRpYyBib29sIGlzQ2xpY2thYmxlQ29udHJvbChjb25zdCBIVE1M
RWxlbWVudCYgZWxlbWVudCkKICAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkg
JiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkuaXNUZXh0QnV0dG9uKCkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgc3dpdGNoIChhY2Nlc3NpYmlsaXR5Um9sZShlbGVt
ZW50KSkgewotICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbjoKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2hlY2tCb3g6Ci0gICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3dpdGNoOgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7CisgICAgaWYgKGF1dG8gcm9sZSA9IGFjY2Vzc2liaWxp
dHlSb2xlKGVsZW1lbnQpKSB7CisgICAgICAgIHN3aXRjaCAoKnJvbGUpIHsKKyAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OgorICAgICAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpTd2l0Y2g6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KIAogICAg
IGlmIChpczxIVE1MQW5jaG9yRWxlbWVudD4oZWxlbWVudCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMDZkNTVmMTA4
N2NhNDAyYzk1NWVhNWI1ODIxNDczNDAyMTE0MDBmMC4uOTc2ZjU5YTQ3ODk1YjJlNWM3MjE3MTAw
ZWFjNGVmMmJmN2I4ZTQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTc2OSw4ICs3NjksOCBAQCB2b2lkIFdlYlBhZ2U6
OmhhbmRsZVN5bnRoZXRpY0NsaWNrKE5vZGUmIG5vZGVSZXNwb25kaW5nVG9DbGljaywgY29uc3Qg
V2ViQ29yZTo6RgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmICh0YXJnZXRO
b2RlLmRvY3VtZW50KCkucXVpcmtzKCkuc2hvdWxkSWdub3JlQXJpYUZvckZhc3RQYXRoQ29udGVu
dE9ic2VydmF0aW9uQ2hlY2soKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
YXV0byBhcmlhUm9sZSA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFSb2xlVG9XZWJDb3JlUm9s
ZShkb3duY2FzdDxFbGVtZW50Pih0YXJnZXROb2RlKS5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpy
b2xlQXR0cikpOwotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBQ29u
dHJvbChhcmlhUm9sZSk7CisgICAgICAgIGF1dG8gcm9sZSA9IGFjY2Vzc2liaWxpdHlSb2xlKGRv
d25jYXN0PEVsZW1lbnQ+KHRhcmdldE5vZGUpKTsKKyAgICAgICAgcmV0dXJuIHJvbGUgJiYgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBQ29udHJvbCgqcm9sZSk7CiAgICAgfTsKICAgICBhdXRv
IHRhcmdldE5vZGVUcmlnZ2Vyc0Zhc3RQYXRoID0gbm9kZVRyaWdnZXJzRmFzdFBhdGgobm9kZVJl
c3BvbmRpbmdUb0NsaWNrKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448253</attachid>
            <date>2022-01-03 12:27:09 -0800</date>
            <delta_ts>2022-01-03 16:07:45 -0800</delta_ts>
            <desc>More refactoring</desc>
            <filename>bug-234787-20220103122708.patch</filename>
            <type>text/plain</type>
            <size>51148</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWU2MjFiMTBhMmU1ZTVj
ZDZkZWI5NmRmM2Y5MDg3YWIyMmQyNWIwYS4uODBmOGU0MjAyZWE0ZjhkOGNlMGI1MDNlNzMyMzRh
ZGFhOTRlODBhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDIyLTAxLTAzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGhlbHBl
ciBmdW5jdGlvbiB0byBjb21wdXRlIGFuIGVsZW1lbnQncyBhY2Nlc3NpYmlsaXR5IHJvbGUgaW4g
Y29yZSBET00gY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM0Nzg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhlcmUgYXJlIGEgY291cGxlIHBsYWNlcyBpbiBXZWJDb3JlIG91dHNpZGUgb2YgdGhl
IGNvbnRleHQgb2YgYWNjZXNzaWJpbGl0eSBjb2RlIHRoYXQgcGFyc2UgYEFjY2Vzc2liaWxpdHlS
b2xlYAorICAgICAgICBmcm9tIHRoZSAicm9sZSIgYXR0cmlidXRlIG9mIERPTSBlbGVtZW50cyBp
biBvcmRlciB0byBkcml2ZSB2YXJpb3VzIGhldXJpc3RpY3MuIEluIG9yZGVyIHRvIGRvIHRoaXMs
IHdlCisgICAgICAgIGN1cnJlbnRseSBpbmNsdWRlIGFjY2Vzc2liaWxpdHkgaGVhZGVycyBpbiB0
aGVzZSBmaWxlczsgaG93ZXZlciwgdGhpcyBpc24ndCBpZGVhbCBmb3IgbGF5ZXJpbmcsIHNpbmNl
IGFsbCB0aGUKKyAgICAgICAgYWNjZXNzaWJpbGl0eSBjb2RlIGlzIGludGVuZGVkIHRvIGJ1aWxk
IG9uIHRvcCBvZiB0aGUgY29yZSBET00uCisKKyAgICAgICAgVG8gYWRkcmVzcyB0aGlzLCBtb3Zl
IHRoZSBsb2dpYyBmb3IgcGFyc2luZyB0aGUgInJvbGUiIGF0dHJpYnV0ZSBpbnRvIGFuIGBBY2Nl
c3NpYmlsaXR5Um9sZWAgZW51bSBpbnRvIGEKKyAgICAgICAgc2VwYXJhdGUgaGVhZGVyLCBgRWxl
bWVudEFjY2Vzc2liaWxpdHkuaGAgKGFuZCBzZXBhcmF0ZSBoZWxwZXIgZnVuY3Rpb24pIGluIHRo
ZSBjb3JlIERPTSBpbXBsZW1lbnRhdGlvbiwgYW5kCisgICAgICAgIHRoZW4gaGF2ZSBhY2Nlc3Np
YmlsaXR5IGluY2x1ZGUgdGhhdCBoZWFkZXIuCisKKyAgICAgICAgVGhlbiwgY2hhbmdlIG5vbi1h
Y2Nlc3NpYmlsaXR5IERPTSBjb2RlIGluIFdlYkNvcmUgdG8gaW5jbHVkZSAiRWxlbWVudEFjY2Vz
c2liaWxpdHkuaCIgaW5zdGVhZCBvZiBwdWxsaW5nIGluCisgICAgICAgIGFjY2Vzc2liaWxpdHkg
aGVhZGVycy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUxpdmVSZWdpb25DcmVh
dGVkKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUltYWdlTWFwTGluazo6cm9sZVZh
bHVlIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpkZXRl
cm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmNvbXB1dGVkUm9sZVN0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjppbml0
aWFsaXplUm9sZU1hcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphcmlhUm9sZU1hcCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZXZlcnNlQXJpYVJvbGVNYXApOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVJvbGVUb1dlYkNv
cmVSb2xlKTogRGVsZXRlZC4KKworICAgICAgICBSZXBsYWNlIGBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjphcmlhUm9sZVRvV2ViQ29yZVJvbGVgIHdpdGggYFdlYkNvcmU6OmFjY2Vzc2liaWxpdHlSb2xl
YCwgd2hpY2ggcGFyc2VzIHRoZSByb2xlCisgICAgICAgIGF0dHJpYnV0ZSBvZiB0aGUgZ2l2ZW4g
YEVsZW1lbnRgIHRvIGFuIGBBY2Nlc3NpYmlsaXR5Um9sZWAgKG9yIGBudWxsb3B0YCBpZiB0aGUg
ZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgdmFsdWUKKyAgICAgICAgZm9yIHRoZSByb2xlIGF0dHJp
YnV0ZSkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoK
KyAgICAgICAgKiBkb20vRWxlbWVudEFjY2Vzc2liaWxpdHkuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmluaXRpYWxpemVSb2xlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OmFyaWFSb2xl
TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OnJldmVyc2VBcmlhUm9sZU1hcCk6CisKKyAgICAgICAg
TW92ZSB0aGUgaGFzaCBtYXBzIGludG8gdGhlIHNvdXJjZSBmaWxlIGFzIGFuIGltcGxlbWVudGF0
aW9uIGRldGFpbCwgYW5kIGluc3RlYWQgZXhwb3NlIGEgbmV3IG1ldGhvZCwKKyAgICAgICAgYGFj
Y2Vzc2liaWx0eVJvbGVTdHJpbmcoKWAsIHRoYXQgbWFwcyBhIGdpdmVuIGBBY2Nlc3NpYmlsaXR5
Um9sZWAgdG8gdGhlIGBTdHJpbmdgIGZvciB0aGF0IHJvbGUuIEZvciB0aGUgdGltZQorICAgICAg
ICBiZWluZywgdGhpcyBzdGlsbCBqdXN0IGludGVybmFsbHkgbG9va3MgdGhyb3VnaCBhIGhhc2gg
bWFwIG9mIHJvbGUgPT4gU3RyaW5nLCBidXQgaW4gdGhlIGZ1dHVyZSwgaXQgY291bGQgYmUKKyAg
ICAgICAgcmVmYWN0b3JlZCB0byBiZSBhIGNvbnN0ZXhwciBmdW5jdGlvbiB0aGF0IGp1c3QgcmV0
dXJucyB0aGUgY29ycmVzcG9uZGluZyBuYW1lIHdpdGhvdXQgcmVxdWlyaW5nIGEgc3RyaW5nIGhh
c2guCisKKyAgICAgICAgKFdlYkNvcmU6OmFjY2Vzc2liaWx0eVJvbGVTdHJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6YWNjZXNzaWJpbGl0eVJvbGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50QWNj
ZXNzaWJpbGl0eS5oOiBBZGRlZC4KKworICAgICAgICBNb3ZlIHRoZSBgQWNjZXNzaWJpbGl0eVJv
bGVgIGVudW0gY2xhc3MgaGVyZSwgYW5kIG1ha2UgaXQgYHVpbnQ4X3RgLgorCisgICAgICAgICog
ZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojppc0VuY2xvc2luZ0l0ZW1Cb3VuZGFyeUVsZW1lbnQpOgorICAgICAgICAqIHBhZ2UvTW9kYWxD
b250YWluZXJPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0NsaWNrYWJsZUNvbnRy
b2wpOgorICAgICAgICAoV2ViQ29yZTo6YWNjZXNzaWJpbGl0eVJvbGUpOiBEZWxldGVkLgorCiAy
MDIyLTAxLTAyICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZD
XVtJRkNdIEFkZCBBU1NFUlQobWlkZGxlID49IGxlZnQgJiYgbWlkZGxlIDwgcmlnaHQpIHRvIFRl
eHRVdGlsOjpicmVha1dvcmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOWY1YWYzZGFiYTNhYTIxNzA1NzEwYTNkMzQ0
MzA0YjkxYWFlOTA3Yi4uMWE5MGQxZWI3ZjZkNzYwMjQyNjg4NDUyODk5Zjg2MjViZmJmMWU0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wMS0wMyAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBoZWxwZXIgZnVuY3Rpb24gdG8g
Y29tcHV0ZSBhbiBlbGVtZW50J3MgYWNjZXNzaWJpbGl0eSByb2xlIGluIGNvcmUgRE9NIGNvZGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDc4Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlZSBXZWJD
b3JlL0NoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5k
bGVTeW50aGV0aWNDbGljayk6CisKIDIwMjItMDEtMDIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYktpdDJdIENhbWVyYSBjb250aW51aXR5IGlz
IGRpc2FibGVkIGluIHJpY2hseSBlZGl0YWJsZSBjb250ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRl
eCBmOGI4OWYwZWVmZmZkOWUwMzA3YjY0OTk1NzRkZjI0MTUxZWNjZTlkLi45ZTJhZjFiOGI1Njc3
MTExNjMyZjQ2YjM4YzhkMzM5ZmZlN2JlNjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTYzMSw2
ICs2MzEsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgZG9t
L0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oCiAgICAgZG9tL0RvY3VtZW50VHlwZS5oCiAgICAgZG9t
L0VsZW1lbnQuaAorICAgIGRvbS9FbGVtZW50QWNjZXNzaWJpbGl0eS5oCiAgICAgZG9tL0VsZW1l
bnRBbmNlc3Rvckl0ZXJhdG9yLmgKICAgICBkb20vRWxlbWVudENoaWxkSXRlcmF0b3IuaAogICAg
IGRvbS9FbGVtZW50Q29udGV4dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGJkNWE3NDc5Y2IzOWU0NmNj
OTEwNDAwZjRlZTM4NDkzMjRjNzUzMWYuLmFiMjI0ZGIyMGJkMDA4ZTEzZWEyYWQzOWZlYTkwYjNj
NTg0NGFjYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC05NTAsNiArOTUwLDcgQEAgZG9tL0RvY3VtZW50
VG91Y2guY3BwIEBuby11bmlmeQogZG9tL0RvY3VtZW50VHlwZS5jcHAKIGRvbS9EcmFnRXZlbnQu
Y3BwCiBkb20vRWxlbWVudC5jcHAKK2RvbS9FbGVtZW50QWNjZXNzaWJpbGl0eS5jcHAKIGRvbS9F
bGVtZW50RGF0YS5jcHAKIGRvbS9FbGVtZW50UmFyZURhdGEuY3BwCiBkb20vRXJyb3JFdmVudC5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAzYzllYzI1YzBhOTI0NjA2YWUyZWIzMjc2NGExNzhkZGNjOTQ0M2Y4Li5lOGM4NmM1
YjNlN2FiNGNjZjk3NmEzNTE3M2E5YTAyYzVhOWZjOGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NDgxLDYgKzU0ODEsNyBA
QAogCQlGNDI5OTUwRjI3MEU3NTAwMDAzMjI5OEIgLyogRGlzcGxheUxpc3RSZWNvcmRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQyOTk1MEQyNzBF
NzUwMDAwMzIyOThCIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDMzRTkwMzFEQkJEQkEyMDBFRjBEMTQg
LyogU3RhdGljUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjQzM0U5MDIxREJCREJBMjAwRUYwRDE0IC8qIFN0YXRpY1Bhc3RlYm9hcmQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDM3
N0Q1NzI1NTFDOUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzNzdENTUyNTUxQzlDNjAwODBB
QkZFIC8qIERpc3BsYXlMaXN0SXRlbVR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlGNDNDMzgyQTI3ODI0QzE5MDA5OUFCQ0UgLyogRWxlbWVu
dEFjY2Vzc2liaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0M0MzODI4Mjc4MjRDMTkwMDk5QUJDRSAvKiBFbGVtZW50QWNjZXNzaWJpbGl0eS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0NDBF
NzdBMjMzRDk0RDcwMDYzRjlBQiAvKiBOYXZpZ2F0b3JDbGlwYm9hcmQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDBFNzZGMjMzRDk0RDMwMDYzRjlB
QiAvKiBOYXZpZ2F0b3JDbGlwYm9hcmQuaCAqLzsgfTsKIAkJRjQ0MEU3N0IyMzNEOTRENzAwNjNG
OUFCIC8qIENsaXBib2FyZEl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0NDBFNzcwMjMzRDk0RDQwMDYzRjlBQiAvKiBDbGlwYm9hcmRJdGVtLmgg
Ki87IH07CiAJCUY0NDBFNzdEMjMzRDk0RDcwMDYzRjlBQiAvKiBDbGlwYm9hcmQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDBFNzcyMjMzRDk0RDUw
MDYzRjlBQiAvKiBDbGlwYm9hcmQuaCAqLzsgfTsKQEAgLTE3Njg1LDYgKzE3Njg2LDggQEAKIAkJ
RjQzM0U5MDQxREJCREJDMjAwRUYwRDE0IC8qIFN0YXRpY1Bhc3RlYm9hcmQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3RhdGljUGFzdGVib2FyZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY0Mzc3RDU1MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlbVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjQzNzdENTYyNTUxQzlDNjAwODBBQkZFIC8qIERpc3BsYXlMaXN0SXRlbVR5
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpc3RJdGVtVHlwZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0M0MzODI4Mjc4MjRDMTkwMDk5QUJDRSAvKiBFbGVt
ZW50QWNjZXNzaWJpbGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbGVtZW50QWNjZXNzaWJpbGl0eS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDNDMzgyOTI3ODI0QzE5MDA5OUFCQ0Ug
LyogRWxlbWVudEFjY2Vzc2liaWxpdHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRWxlbWVudEFj
Y2Vzc2liaWxpdHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDQwRTc2RTIz
M0Q5NEQzMDA2M0Y5QUIgLyogQ2xpcGJvYXJkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENsaXBib2FyZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0NDBFNzZGMjMzRDk0RDMwMDYzRjlBQiAvKiBOYXZpZ2F0b3JDbGlwYm9hcmQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF2aWdhdG9yQ2xpcGJvYXJkLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NDBFNzcwMjMzRDk0RDQwMDYzRjlBQiAvKiBDbGlwYm9h
cmRJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsaXBib2FyZEl0ZW0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMyMjU2LDYgKzMyMjU5LDggQEAKIAkJ
CQlBOEM0QTdGNjA5RDU2MzI3MDAwM0FDOEQgLyogRWxlbWVudC5jcHAgKi8sCiAJCQkJQThDNEE3
RjUwOUQ1NjMyNzAwMDNBQzhEIC8qIEVsZW1lbnQuaCAqLywKIAkJCQk5M0VFQzFFQTA5QzI4Nzc3
MDBDNTE1RDEgLyogRWxlbWVudC5pZGwgKi8sCisJCQkJRjQzQzM4MjkyNzgyNEMxOTAwOTlBQkNF
IC8qIEVsZW1lbnRBY2Nlc3NpYmlsaXR5LmNwcCAqLywKKwkJCQlGNDNDMzgyODI3ODI0QzE5MDA5
OUFCQ0UgLyogRWxlbWVudEFjY2Vzc2liaWxpdHkuaCAqLywKIAkJCQlFNEFFN0MxOTE3RDIzMjM1
MDAwOUZCMzEgLyogRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCAqLywKIAkJCQlFNDQwQUE5NTFD
Njg0MjA4MDBBMjY1Q0MgLyogRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IuaCAqLywK
IAkJCQlFNDZBMkIxRDE3Q0E3NkIxMDAwREJDRDggLyogRWxlbWVudENoaWxkSXRlcmF0b3IuaCAq
LywKQEAgLTM0MjQwLDYgKzM0MjQ1LDcgQEAKIAkJCQk5M0ZEQUZDQTBCMTEzMDc0MDBFMjc0NkYg
LyogRWRpdG9ySW5zZXJ0QWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTJCRTQ3RDFGRTg2
NDU4MDAyMDMxQ0MgLyogRWZmZWN0VGltaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEM0QTgw
NzA5RDU2MzI3MDAwM0FDOEQgLyogRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjQzQzM4
MkEyNzgyNEMxOTAwOTlBQkNFIC8qIEVsZW1lbnRBY2Nlc3NpYmlsaXR5LmggaW4gSGVhZGVycyAq
LywKIAkJCQlFNEFFN0MxQTE3RDIzMjM1MDAwOUZCMzEgLyogRWxlbWVudEFuY2VzdG9ySXRlcmF0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDBBQTk2MUM2ODQyMDgwMEEyNjVDQyAvKiBFbGVt
ZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzExOTQ2
NTYyNDE4MUVBMTAwNDY2QzExIC8qIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YS5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cAppbmRleCBhYjc4Y2I5OGU3NmI1MTJjNTMwMDRjODlkMmViNjc5MzNmZGI4NjE1Li5jZTIwZDI1
ZmJmMzI0NzhhNzkxODY3YThiYmI1OTMxYTYxM2RjM2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTEwMjksOSArMTAyOSw4IEBAIHZv
aWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlTGl2ZVJlZ2lvbkNyZWF0ZWQoTm9kZSogbm9kZSkKICAg
ICBFbGVtZW50KiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4obm9kZSk7CiAgICAgU3RyaW5n
IGxpdmVSZWdpb25TdGF0dXMgPSBlbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKGFyaWFfbGl2ZUF0dHIpOwogICAgIGlmIChsaXZlUmVnaW9uU3RhdHVzLmlzRW1wdHkoKSkg
ewotICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiBhcmlhUm9sZSA9IGVsZW1lbnQtPmF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocm9sZUF0dHIpOwotICAgICAgICBpZiAoIWFyaWFSb2xl
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGxpdmVSZWdpb25TdGF0dXMgPSBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpkZWZhdWx0TGl2ZVJlZ2lvblN0YXR1c0ZvclJvbGUoQWNjZXNzaWJpbGl0eU9iamVj
dDo6YXJpYVJvbGVUb1dlYkNvcmVSb2xlKGFyaWFSb2xlKSk7CisgICAgICAgIGlmIChhdXRvIHJv
bGUgPSBhY2Nlc3NpYmlsaXR5Um9sZSgqZWxlbWVudCkpCisgICAgICAgICAgICBsaXZlUmVnaW9u
U3RhdHVzID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGVmYXVsdExpdmVSZWdpb25TdGF0dXNGb3JS
b2xlKCpyb2xlKTsKICAgICB9CiAgICAgCiAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3Q6Omxp
dmVSZWdpb25TdGF0dXNJc0VuYWJsZWQobGl2ZVJlZ2lvblN0YXR1cykpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5r
LmNwcAppbmRleCBiZjIwMTcxMjA2ZTdhYmZkMmRjZTRhZjI4YjBhYjY0ZWYyYmY2MmJhLi5mOTY3
MTU0MmUyMzg5NGRhYWNjMDZlMmU5YzkxNjY3ZGViNGU3ZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5j
cHAKQEAgLTY4LDkgKzY4LDExIEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlJbWFn
ZU1hcExpbms6OnJvbGVWYWx1ZSgpIGNvbnN0CiAgICAgaWYgKCFtX2FyZWFFbGVtZW50KQogICAg
ICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rOwogICAgIAotICAgIGNv
bnN0IEF0b21TdHJpbmcmIGFyaWFSb2xlID0gZ2V0QXR0cmlidXRlKHJvbGVBdHRyKTsKLSAgICBp
ZiAoIWFyaWFSb2xlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmFyaWFSb2xlVG9XZWJDb3JlUm9sZShhcmlhUm9sZSk7CisgICAgaWYgKCFlbGVtZW50KCkp
CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbms7CisKKyAgICBp
ZiAoYXV0byByb2xlID0gYWNjZXNzaWJpbGl0eVJvbGUoKmVsZW1lbnQoKSkpCisgICAgICAgIHJl
dHVybiAqcm9sZTsKIAogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbms7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3QuY3BwCmluZGV4IDlmYjgzZjI0OWVlYjA0NDdmN2MyMDhkMDNjYWUxN2U5
MThmMjlkN2MuLjM2NzcyMDI2N2UyNjc0MGJiMDMzZTJiNGEwODE5NThmY2Q3YmZiYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3QuY3BwCkBAIC0yMjA1LDExICsyMjA1LDEzIEBAIGJvb2wgQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3Q6OmNhblNldFZhbHVlQXR0cmlidXRlKCkgY29uc3QKIAogQWNjZXNzaWJpbGl0eVJv
bGUgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlKCkg
Y29uc3QKIHsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBhcmlhUm9sZSA9IGdldEF0dHJpYnV0ZShy
b2xlQXR0cik7Ci0gICAgaWYgKGFyaWFSb2xlLmlzTnVsbCgpIHx8IGFyaWFSb2xlLmlzRW1wdHko
KSkKKyAgICBSZWZQdHIgZWxlbWVudCA9IHRoaXMtPmVsZW1lbnQoKTsKKyAgICBpZiAoIWVsZW1l
bnQpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsKKworICAgIGF1
dG8gcm9sZSA9IGFjY2Vzc2liaWxpdHlSb2xlKCplbGVtZW50KTsKKyAgICBpZiAoIXJvbGUpCiAg
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsKLSAgICAKLSAgICBBY2Nl
c3NpYmlsaXR5Um9sZSByb2xlID0gYXJpYVJvbGVUb1dlYkNvcmVSb2xlKGFyaWFSb2xlKTsKIAog
ICAgIC8vIEFSSUEgc3RhdGVzIGlmIGFuIGl0ZW0gY2FuIGdldCBmb2N1cywgaXQgc2hvdWxkIG5v
dCBiZSBwcmVzZW50YXRpb25hbC4KICAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
UHJlc2VudGF0aW9uYWwgJiYgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSkKQEAgLTIyMjEsNyArMjIy
Myw3IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpkZXRlcm1p
bmVBcmlhUm9sZUF0dHJpYnV0ZSgpIGNvbnN0CiAgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6OlRleHRBcmVhICYmICFhcmlhSXNNdWx0aWxpbmUoKSkKICAgICAgICAgcm9sZSA9IEFj
Y2Vzc2liaWxpdHlSb2xlOjpUZXh0RmllbGQ7CiAKLSAgICByb2xlID0gcmVtYXBBcmlhUm9sZUR1
ZVRvUGFyZW50KHJvbGUpOworICAgIHJvbGUgPSByZW1hcEFyaWFSb2xlRHVlVG9QYXJlbnQoKnJv
bGUpOwogICAgIAogICAgIC8vIFByZXNlbnRhdGlvbmFsIHJvbGVzIGFyZSBpbnZhbGlkYXRlZCBi
eSB0aGUgcHJlc2VuY2Ugb2YgQVJJQSBhdHRyaWJ1dGVzLgogICAgIGlmIChyb2xlID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpQcmVzZW50YXRpb25hbCAmJiBzdXBwb3J0c0FSSUFBdHRyaWJ1dGVzKCkp
CkBAIC0yMjM0LDggKzIyMzYsOSBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdDo6ZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKSBjb25zdAogICAgIGlmIChyb2xl
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1JlZ2lvbiAmJiAhaGFzQXR0cmlidXRlKGFy
aWFfbGFiZWxBdHRyKSAmJiAhaGFzQXR0cmlidXRlKGFyaWFfbGFiZWxsZWRieUF0dHIpKQogICAg
ICAgICByb2xlID0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247CiAKLSAgICBpZiAoc3RhdGlj
X2Nhc3Q8aW50Pihyb2xlKSkKLSAgICAgICAgcmV0dXJuIHJvbGU7CisgICAgLy8gRklYTUU6IFRo
aXMgc2VlbXMgbGlrZSBpdCBkZXBlbmRzIG9uIHVuZGVmaW5lZCBiZWhhdmlvciwgc2luY2UgMCBp
cyBub3QgYSB2YWxpZCBBY2Nlc3NpYmlsaXR5Um9sZSBlbnVtIHZhbHVlLgorICAgIGlmIChzdGF0
aWNfY2FzdDxpbnQ+KCpyb2xlKSkKKyAgICAgICAgcmV0dXJuICpyb2xlOwogCiAgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggMWRjY2Q4NmFiYTIz
OWNkOTNkMTAyZTBmYjQ5MjYyNmU1ZmI0OWViNi4uYWU2YjYwM2FjYzM3NjRjOTIzNTI4MDBhMDcx
MWFmZmY3YjY3ZThmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiRG9j
dW1lbnRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiRWRpdGluZy5oIgogI2luY2x1ZGUgIkVkaXRvci5o
IgorI2luY2x1ZGUgIkVsZW1lbnRBY2Nlc3NpYmlsaXR5LmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudERpc3BhdGNoZXIu
aCIKQEAgLTIyNTksMTk0ICsyMjYwLDEzIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmZpcnN0QW5vbnltb3VzQmxvY2tDaGlsZCgpIGNvbnN0CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLXVzaW5nIEFSSUFSb2xlTWFwID0gSGFzaE1hcDxTdHJpbmcsIEFjY2Vz
c2liaWxpdHlSb2xlLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+OwotdXNpbmcgQVJJQVJldmVy
c2VSb2xlTWFwID0gSGFzaE1hcDxBY2Nlc3NpYmlsaXR5Um9sZSwgU3RyaW5nLCBEZWZhdWx0SGFz
aDxpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPGludD4+OwotCi1zdGF0
aWMgQVJJQVJvbGVNYXAqIGdBcmlhUm9sZU1hcCA9IG51bGxwdHI7Ci1zdGF0aWMgQVJJQVJldmVy
c2VSb2xlTWFwKiBnQXJpYVJldmVyc2VSb2xlTWFwID0gbnVsbHB0cjsKLQotc3RydWN0IFJvbGVF
bnRyeSB7Ci0gICAgU3RyaW5nIGFyaWFSb2xlOwotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHdlYmNv
cmVSb2xlOwotfTsKLQotc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVJvbGVNYXAoKQotewotICAgIGlm
IChnQXJpYVJvbGVNYXApCi0gICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQoIWdBcmlhUmV2ZXJz
ZVJvbGVNYXApOwotCi0gICAgY29uc3QgUm9sZUVudHJ5IHJvbGVzW10gPSB7Ci0gICAgICAgIHsg
ImFsZXJ0Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25BbGVydCB9LAotICAgICAg
ICB7ICJhbGVydGRpYWxvZyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnRE
aWFsb2cgfSwKLSAgICAgICAgeyAiYXBwbGljYXRpb24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpX
ZWJBcHBsaWNhdGlvbiB9LAotICAgICAgICB7ICJhcnRpY2xlIl9zLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6RG9jdW1lbnRBcnRpY2xlIH0sCi0gICAgICAgIHsgImJhbm5lciJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6OkxhbmRtYXJrQmFubmVyIH0sCi0gICAgICAgIHsgImJsb2NrcXVvdGUiX3MsIEFjY2Vz
c2liaWxpdHlSb2xlOjpCbG9ja3F1b3RlIH0sCi0gICAgICAgIHsgImJ1dHRvbiJfcywgQWNjZXNz
aWJpbGl0eVJvbGU6OkJ1dHRvbiB9LAotICAgICAgICB7ICJjYXB0aW9uIl9zLCBBY2Nlc3NpYmls
aXR5Um9sZTo6Q2FwdGlvbiB9LAotICAgICAgICB7ICJjaGVja2JveCJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6OkNoZWNrQm94IH0sCi0gICAgICAgIHsgImNvbXBsZW1lbnRhcnkiX3MsIEFjY2Vzc2li
aWxpdHlSb2xlOjpMYW5kbWFya0NvbXBsZW1lbnRhcnkgfSwKLSAgICAgICAgeyAiY29udGVudGlu
Zm8iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0NvbnRlbnRJbmZvIH0sCi0gICAgICAg
IHsgImRlbGV0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVsZXRpb24gfSwKLSAgICAgICAg
eyAiZGlhbG9nIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25EaWFsb2cgfSwKLSAg
ICAgICAgeyAiZGlyZWN0b3J5Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RGlyZWN0b3J5IH0sCi0g
ICAgICAgIC8vIFRoZSAnZG9jLSonIHJvbGVzIGFyZSBkZWZpbmVkIHRoZSBBUklBIERQVUIgbW9i
aWxlOiBodHRwczovL3d3dy53My5vcmcvVFIvZHB1Yi1hYW0tMS4wCi0gICAgICAgIC8vIEVkaXRv
cidzIGRyYWZ0IGlzIGN1cnJlbnRseSBhdCBodHRwczovL3czYy5naXRodWIuaW8vZHB1Yi1hYW0K
LSAgICAgICAgeyAiZG9jLWFic3RyYWN0Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRp
b25UZXh0R3JvdXAgfSwKLSAgICAgICAgeyAiZG9jLWFja25vd2xlZGdtZW50cyJfcywgQWNjZXNz
aWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCi0gICAgICAgIHsgImRvYy1hZnRlcndv
cmQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAotICAgICAgICB7
ICJkb2MtYXBwZW5kaXgiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9
LAotICAgICAgICB7ICJkb2MtYmFja2xpbmsiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3Jl
TGluayB9LAotICAgICAgICB7ICJkb2MtYmlibGlvZW50cnkiX3MsIEFjY2Vzc2liaWxpdHlSb2xl
OjpMaXN0SXRlbSB9LAotICAgICAgICB7ICJkb2MtYmlibGlvZ3JhcGh5Il9zLCBBY2Nlc3NpYmls
aXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKLSAgICAgICAgeyAiZG9jLWJpYmxpb3JlZiJf
cywgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rIH0sCi0gICAgICAgIHsgImRvYy1jaGFw
dGVyIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKLSAgICAgICAg
eyAiZG9jLWNvbG9waG9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3Jv
dXAgfSwKLSAgICAgICAgeyAiZG9jLWNvbmNsdXNpb24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpM
YW5kbWFya0RvY1JlZ2lvbiB9LAotICAgICAgICB7ICJkb2MtY292ZXIiX3MsIEFjY2Vzc2liaWxp
dHlSb2xlOjpJbWFnZSB9LAotICAgICAgICB7ICJkb2MtY3JlZGl0Il9zLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAgfSwKLSAgICAgICAgeyAiZG9jLWNyZWRpdHMiX3Ms
IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAotICAgICAgICB7ICJkb2Mt
ZGVkaWNhdGlvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0s
Ci0gICAgICAgIHsgImRvYy1lbmRub3RlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW0g
fSwKLSAgICAgICAgeyAiZG9jLWVuZG5vdGVzIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1h
cmtEb2NSZWdpb24gfSwKLSAgICAgICAgeyAiZG9jLWVwaWdyYXBoIl9zLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAgfSwKLSAgICAgICAgeyAiZG9jLWVwaWxvZ3VlIl9z
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKLSAgICAgICAgeyAiZG9j
LWVycmF0YSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCi0gICAg
ICAgIHsgImRvYy1leGFtcGxlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0
R3JvdXAgfSwKLSAgICAgICAgeyAiZG9jLWZvb3Rub3RlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
Rm9vdG5vdGUgfSwKLSAgICAgICAgeyAiZG9jLWZvcmV3b3JkIl9zLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKLSAgICAgICAgeyAiZG9jLWdsb3NzYXJ5Il9zLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKLSAgICAgICAgeyAiZG9jLWdsb3Nz
cmVmIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbmsgfSwKLSAgICAgICAgeyAiZG9j
LWluZGV4Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0aW9uIH0sCi0gICAg
ICAgIHsgImRvYy1pbnRyb2R1Y3Rpb24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0Rv
Y1JlZ2lvbiB9LAotICAgICAgICB7ICJkb2Mtbm90ZXJlZiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6
OldlYkNvcmVMaW5rIH0sCi0gICAgICAgIHsgImRvYy1ub3RpY2UiX3MsIEFjY2Vzc2liaWxpdHlS
b2xlOjpEb2N1bWVudE5vdGUgfSwKLSAgICAgICAgeyAiZG9jLXBhZ2VicmVhayJfcywgQWNjZXNz
aWJpbGl0eVJvbGU6OlNwbGl0dGVyIH0sCi0gICAgICAgIHsgImRvYy1wYWdlbGlzdCJfcywgQWNj
ZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbiB9LAotICAgICAgICB7ICJkb2MtcGFy
dCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCi0gICAgICAgIHsg
ImRvYy1wcmVmYWNlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwK
LSAgICAgICAgeyAiZG9jLXByb2xvZ3VlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtE
b2NSZWdpb24gfSwKLSAgICAgICAgeyAiZG9jLXB1bGxxdW90ZSJfcywgQWNjZXNzaWJpbGl0eVJv
bGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0sCi0gICAgICAgIHsgImRvYy1xbmEiX3MsIEFjY2Vz
c2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB9LAotICAgICAgICB7ICJkb2Mtc3Vi
dGl0bGUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nIH0sCi0gICAgICAgIHsgImRvYy10
aXAiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE5vdGUgfSwKLSAgICAgICAgeyAiZG9j
LXRvYyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbiB9LAotICAgICAg
ICB7ICJmaWd1cmUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpGaWd1cmUgfSwKLSAgICAgICAgLy8g
VGhlIG1hcHBpbmdzIGZvciAnZ3JhcGhpY3MtKicgcm9sZXMgYXJlIGRlZmluZWQgaW4gdGhpcyBz
cGVjOiBodHRwczovL3czYy5naXRodWIuaW8vZ3JhcGhpY3MtYWFtLwotICAgICAgICB7ICJncmFw
aGljcy1kb2N1bWVudCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkdyYXBoaWNzRG9jdW1lbnQgfSwK
LSAgICAgICAgeyAiZ3JhcGhpY3Mtb2JqZWN0Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JhcGhp
Y3NPYmplY3QgfSwKLSAgICAgICAgeyAiZ3JhcGhpY3Mtc3ltYm9sIl9zLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6R3JhcGhpY3NTeW1ib2wgfSwKLSAgICAgICAgeyAiZ3JpZCJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6OkdyaWQgfSwKLSAgICAgICAgeyAiZ3JpZGNlbGwiX3MsIEFjY2Vzc2liaWxpdHlSb2xl
OjpHcmlkQ2VsbCB9LAotICAgICAgICB7ICJ0YWJsZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlRh
YmxlIH0sCi0gICAgICAgIHsgImNlbGwiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpDZWxsIH0sCi0g
ICAgICAgIHsgImNvbHVtbmhlYWRlciJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbkhlYWRl
ciB9LAotICAgICAgICB7ICJjb21ib2JveCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkNvbWJvQm94
IH0sCi0gICAgICAgIHsgImRlZmluaXRpb24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpEZWZpbml0
aW9uIH0sCi0gICAgICAgIHsgImRvY3VtZW50Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1l
bnQgfSwKLSAgICAgICAgeyAiZmVlZCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkZlZWQgfSwKLSAg
ICAgICAgeyAiZm9ybSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkZvcm0gfSwKLSAgICAgICAgeyAi
cm93aGVhZGVyIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyIH0sCi0gICAgICAgIHsg
Imdyb3VwIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Hcm91cCB9LAotICAgICAg
ICB7ICJoZWFkaW5nIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZyB9LAotICAgICAgICAv
LyBUaGUgImltYWdlIiByb2xlIGlzIHN5bm9ueW1vdXMgd2l0aCB0aGUgImltZyIgcm9sZS4gaHR0
cHM6Ly93M2MuZ2l0aHViLmlvL2FyaWEvI2ltYWdlCi0gICAgICAgIHsgImltYWdlIl9zLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6SW1hZ2UgfSwKLSAgICAgICAgeyAiaW1nIl9zLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6SW1hZ2UgfSwKLSAgICAgICAgeyAiaW5zZXJ0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6SW5zZXJ0aW9uIH0sCi0gICAgICAgIHsgImxpbmsiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpX
ZWJDb3JlTGluayB9LAotICAgICAgICB7ICJsaXN0Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlz
dCB9LAotICAgICAgICB7ICJsaXN0aXRlbSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVt
IH0sCi0gICAgICAgIHsgImxpc3Rib3giX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94IH0s
Ci0gICAgICAgIHsgImxvZyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTG9nIH0s
Ci0gICAgICAgIHsgIm1haW4iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya01haW4gfSwK
LSAgICAgICAgeyAibWFycXVlZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTWFy
cXVlZSB9LAotICAgICAgICB7ICJtYXRoIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnRN
YXRoIH0sCi0gICAgICAgIHsgIm1lbnUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51IH0sCi0g
ICAgICAgIHsgIm1lbnViYXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QmFyIH0sCi0gICAg
ICAgIHsgIm1lbnVpdGVtIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW0gfSwKLSAgICAg
ICAgeyAibWVudWl0ZW1jaGVja2JveCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtQ2hl
Y2tib3ggfSwKLSAgICAgICAgeyAibWVudWl0ZW1yYWRpbyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6
Ok1lbnVJdGVtUmFkaW8gfSwKLSAgICAgICAgeyAibWV0ZXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xl
OjpNZXRlciB9LAotICAgICAgICB7ICJub25lIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlc2Vu
dGF0aW9uYWwgfSwKLSAgICAgICAgeyAibm90ZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3Vt
ZW50Tm90ZSB9LAotICAgICAgICB7ICJuYXZpZ2F0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
TGFuZG1hcmtOYXZpZ2F0aW9uIH0sCi0gICAgICAgIHsgIm9wdGlvbiJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6Okxpc3RCb3hPcHRpb24gfSwKLSAgICAgICAgeyAicGFyYWdyYXBoIl9zLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6UGFyYWdyYXBoIH0sCi0gICAgICAgIHsgInByZXNlbnRhdGlvbiJfcywgQWNj
ZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRhdGlvbmFsIH0sCi0gICAgICAgIHsgInByb2dyZXNzYmFy
Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJvZ3Jlc3NJbmRpY2F0b3IgfSwKLSAgICAgICAgeyAi
cmFkaW8iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbiB9LAotICAgICAgICB7ICJy
YWRpb2dyb3VwIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9Hcm91cCB9LAotICAgICAgICB7
ICJyZWdpb24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1JlZ2lvbiB9LAotICAgICAg
ICB7ICJyb3ciX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpSb3cgfSwKLSAgICAgICAgeyAicm93Z3Jv
dXAiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpSb3dHcm91cCB9LAotICAgICAgICB7ICJzY3JvbGxi
YXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxCYXIgfSwKLSAgICAgICAgeyAic2VhcmNo
Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtTZWFyY2ggfSwKLSAgICAgICAgeyAic2Vh
cmNoYm94Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6U2VhcmNoRmllbGQgfSwKLSAgICAgICAgeyAi
c2VwYXJhdG9yIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXIgfSwKLSAgICAgICAgeyAi
c2xpZGVyIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyIH0sCi0gICAgICAgIHsgInNwaW5i
dXR0b24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uIH0sCi0gICAgICAgIHsgInN0
YXR1cyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uU3RhdHVzIH0sCi0gICAgICAg
IHsgInN1YnNjcmlwdCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlN1YnNjcmlwdCB9LAotICAgICAg
ICB7ICJzdXBlcnNjcmlwdCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlN1cGVyc2NyaXB0IH0sCi0g
ICAgICAgIHsgInN3aXRjaCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlN3aXRjaCB9LAotICAgICAg
ICB7ICJ0YWIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWIgfSwKLSAgICAgICAgeyAidGFibGlz
dCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYkxpc3QgfSwKLSAgICAgICAgeyAidGFicGFuZWwi
X3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJQYW5lbCB9LAotICAgICAgICB7ICJ0ZXh0Il9zLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dCB9LAotICAgICAgICB7ICJ0ZXh0Ym94Il9zLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEFyZWEgfSwKLSAgICAgICAgeyAidGVybSJfcywgQWNjZXNz
aWJpbGl0eVJvbGU6OlRlcm0gfSwKLSAgICAgICAgeyAidGltZSJfcywgQWNjZXNzaWJpbGl0eVJv
bGU6OlRpbWUgfSwKLSAgICAgICAgeyAidGltZXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBs
aWNhdGlvblRpbWVyIH0sCi0gICAgICAgIHsgInRvb2xiYXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xl
OjpUb29sYmFyIH0sCi0gICAgICAgIHsgInRvb2x0aXAiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpV
c2VySW50ZXJmYWNlVG9vbHRpcCB9LAotICAgICAgICB7ICJ0cmVlIl9zLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6VHJlZSB9LAotICAgICAgICB7ICJ0cmVlZ3JpZCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6
OlRyZWVHcmlkIH0sCi0gICAgICAgIHsgInRyZWVpdGVtIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
VHJlZUl0ZW0gfQotICAgIH07Ci0KLSAgICBnQXJpYVJvbGVNYXAgPSBuZXcgQVJJQVJvbGVNYXA7
Ci0gICAgZ0FyaWFSZXZlcnNlUm9sZU1hcCA9IG5ldyBBUklBUmV2ZXJzZVJvbGVNYXA7Ci0gICAg
c2l6ZV90IHJvbGVMZW5ndGggPSBXVEZfQVJSQVlfTEVOR1RIKHJvbGVzKTsKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHJvbGVMZW5ndGg7ICsraSkgewotICAgICAgICBnQXJpYVJvbGVNYXAt
PnNldChyb2xlc1tpXS5hcmlhUm9sZSwgcm9sZXNbaV0ud2ViY29yZVJvbGUpOwotICAgICAgICBn
QXJpYVJldmVyc2VSb2xlTWFwLT5zZXQoc3RhdGljX2Nhc3Q8aW50Pihyb2xlc1tpXS53ZWJjb3Jl
Um9sZSksIHJvbGVzW2ldLmFyaWFSb2xlKTsKLSAgICB9Ci0gICAgZ0FyaWFSZXZlcnNlUm9sZU1h
cC0+c2V0KHN0YXRpY19jYXN0PGludD4oQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlKSwgImltYWdl
Il9zKTsKLX0KLQotc3RhdGljIEFSSUFSb2xlTWFwJiBhcmlhUm9sZU1hcCgpCi17Ci0gICAgaW5p
dGlhbGl6ZVJvbGVNYXAoKTsKLSAgICByZXR1cm4gKmdBcmlhUm9sZU1hcDsKLX0KLQotc3RhdGlj
IEFSSUFSZXZlcnNlUm9sZU1hcCYgcmV2ZXJzZUFyaWFSb2xlTWFwKCkKLXsKLSAgICBpbml0aWFs
aXplUm9sZU1hcCgpOwotICAgIHJldHVybiAqZ0FyaWFSZXZlcnNlUm9sZU1hcDsKLX0KLQotQWNj
ZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVJvbGVUb1dlYkNvcmVSb2xl
KGNvbnN0IFN0cmluZyYgdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlLmlzTnVsbCgpIHx8IHZhbHVl
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOwot
Ci0gICAgZm9yIChhdXRvIHJvbGVOYW1lIDogU3RyaW5nVmlldyh2YWx1ZSkuc3BsaXQoJyAnKSkg
ewotICAgICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gYXJpYVJvbGVNYXAoKS5nZXQ8QVND
SUlDYXNlSW5zZW5zaXRpdmVTdHJpbmdWaWV3SGFzaFRyYW5zbGF0b3I+KHJvbGVOYW1lKTsKLSAg
ICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4ocm9sZSkpCi0gICAgICAgICAgICByZXR1cm4gcm9s
ZTsKLSAgICB9Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOwotfQotCiBT
dHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6Y29tcHV0ZWRSb2xlU3RyaW5nKCkgY29uc3QKIHsK
ICAgICAvLyBGSVhNRTogTmVlZCBhIGZldyBzcGVjaWFsIGNhc2VzIHRoYXQgYXJlbid0IGluIHRo
ZSBSb2xlTWFwOiBvcHRpb24sIGV0Yy4gaHR0cDovL3dlYmtpdC5vcmcvYi8xMjgyOTYKICAgICBB
Y2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gcm9sZVZhbHVlKCk7CiAKICAgICBpZiAocm9sZSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2UgJiYgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQotICAg
ICAgICByZXR1cm4gcmV2ZXJzZUFyaWFSb2xlTWFwKCkuZ2V0KHN0YXRpY19jYXN0PGludD4oQWNj
ZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRhdGlvbmFsKSk7CisgICAgICAgIHJldHVybiBhY2Nlc3Np
YmlsdHlSb2xlU3RyaW5nKEFjY2Vzc2liaWxpdHlSb2xlOjpQcmVzZW50YXRpb25hbCk7CiAKICAg
ICAvLyBXZSBkbyBub3QgY29tcHV0ZSBhIHJvbGUgc3RyaW5nIGZvciBnZW5lcmljIGJsb2NrIGVs
ZW1lbnRzIHdpdGggdXNlci1hZ2VudCBhc3NpZ25lZCByb2xlcy4KICAgICBpZiAocm9sZSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4
dEdyb3VwKQpAQCAtMjQ1NiwyNCArMjI3NiwyNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVj
dDo6Y29tcHV0ZWRSb2xlU3RyaW5nKCkgY29uc3QKICAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAKICAgICAgICAgfHwgcm9sZSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6Rm9vdG5vdGUKICAgICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6R3JhcGhpY3NPYmplY3QpCi0gICAgICAgIHJldHVybiByZXZlcnNlQXJpYVJvbGVNYXAoKS5n
ZXQoc3RhdGljX2Nhc3Q8aW50PihBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Hcm91cCkp
OworICAgICAgICByZXR1cm4gYWNjZXNzaWJpbHR5Um9sZVN0cmluZyhBY2Nlc3NpYmlsaXR5Um9s
ZTo6QXBwbGljYXRpb25Hcm91cCk7CiAKICAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6R3JhcGhpY3NEb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIHJldmVyc2VBcmlhUm9sZU1hcCgp
LmdldChzdGF0aWNfY2FzdDxpbnQ+KEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudCkpOworICAg
ICAgICByZXR1cm4gYWNjZXNzaWJpbHR5Um9sZVN0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZTo6RG9j
dW1lbnQpOwogCiAgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkdyYXBoaWNzU3lt
Ym9sKQotICAgICAgICByZXR1cm4gcmV2ZXJzZUFyaWFSb2xlTWFwKCkuZ2V0KHN0YXRpY19jYXN0
PGludD4oQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlKSk7CisgICAgICAgIHJldHVybiBhY2Nlc3Np
YmlsdHlSb2xlU3RyaW5nKEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZSk7CiAKICAgICBpZiAocm9s
ZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SG9yaXpvbnRhbFJ1bGUpCi0gICAgICAgIHJldHVybiBy
ZXZlcnNlQXJpYVJvbGVNYXAoKS5nZXQoc3RhdGljX2Nhc3Q8aW50PihBY2Nlc3NpYmlsaXR5Um9s
ZTo6U3BsaXR0ZXIpKTsKKyAgICAgICAgcmV0dXJuIGFjY2Vzc2liaWx0eVJvbGVTdHJpbmcoQWNj
ZXNzaWJpbGl0eVJvbGU6OlNwbGl0dGVyKTsKIAogICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpQb3BVcEJ1dHRvbiB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVC
dXR0b24pCi0gICAgICAgIHJldHVybiByZXZlcnNlQXJpYVJvbGVNYXAoKS5nZXQoc3RhdGljX2Nh
c3Q8aW50PihBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uKSk7CisgICAgICAgIHJldHVybiBhY2Nl
c3NpYmlsdHlSb2xlU3RyaW5nKEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b24pOwogCiAgICAgaWYg
KHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uKQotICAgICAgICBy
ZXR1cm4gcmV2ZXJzZUFyaWFSb2xlTWFwKCkuZ2V0KHN0YXRpY19jYXN0PGludD4oQWNjZXNzaWJp
bGl0eVJvbGU6OkxhbmRtYXJrUmVnaW9uKSk7CisgICAgICAgIHJldHVybiBhY2Nlc3NpYmlsdHlS
b2xlU3RyaW5nKEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1JlZ2lvbik7CiAKLSAgICByZXR1
cm4gcmV2ZXJzZUFyaWFSb2xlTWFwKCkuZ2V0KHN0YXRpY19jYXN0PGludD4ocm9sZSkpOworICAg
IHJldHVybiBhY2Nlc3NpYmlsdHlSb2xlU3RyaW5nKHJvbGUpOwogfQogCiBib29sIEFjY2Vzc2li
aWxpdHlPYmplY3Q6Omhhc0hpZ2hsaWdodGluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IDY5ZDNiYzMxMzAx
NTIzY2JhYjE3ZTFlZDlkNGYxMzBhYTgyM2Y4OGEuLmQ4NGZhZDQxMjc0YjI4N2FhYTllNjU3YWU3
ZTQwYzA3ZTczZWQyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC01MzMsNyArNTMzLDYgQEAgcHVibGljOgogICAgIHZv
aWQgaGFuZGxlQWN0aXZlRGVzY2VuZGFudENoYW5nZWQoKSBvdmVycmlkZSB7IH0KICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBmaXJzdEFub255bW91c0Jsb2NrQ2hpbGQoKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBY2Nlc3NpYmlsaXR5Um9sZSBhcmlhUm9s
ZVRvV2ViQ29yZVJvbGUoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCBib29sIGhhc0F0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAgdmlydHVhbCBjb25zdCBBdG9t
U3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAgIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBhdHRyaWJ1dGVWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdCBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKaW5kZXggZDNiY2QwOTA0MWYwM2EyYzFmOTMy
M2UwMjNjN2NmM2NiMmE5NzllNi4uMjI5ZDI2OWY2N2NkZDBkN2IyN2ExNGFiNTdkODNjMTVhZTJj
OWIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxOS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogCiAvLyBGSVhNRTog
U2hvdWxkIHJlbmFtZSB0aGlzIGZpbGUgQVhDb3JlT2JqZWN0LmguCiAKKyNpbmNsdWRlICJFbGVt
ZW50QWNjZXNzaWJpbGl0eS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5j
bHVkZSAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0
LmgiCkBAIC0xMTAsMTYxICsxMTEsNiBAQCBlbnVtIGNsYXNzIEFYQW5jZXN0b3JGbGFnIDogdWlu
dDhfdCB7CiAgICAgLy8gQml0cyA2IGFuZCA3IGFyZSBmcmVlLgogfTsKIAotZW51bSBjbGFzcyBB
Y2Nlc3NpYmlsaXR5Um9sZSB7Ci0gICAgQW5ub3RhdGlvbiA9IDEsCi0gICAgQXBwbGljYXRpb24s
Ci0gICAgQXBwbGljYXRpb25BbGVydCwKLSAgICBBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nLAotICAg
IEFwcGxpY2F0aW9uRGlhbG9nLAotICAgIEFwcGxpY2F0aW9uR3JvdXAsCi0gICAgQXBwbGljYXRp
b25Mb2csCi0gICAgQXBwbGljYXRpb25NYXJxdWVlLAotICAgIEFwcGxpY2F0aW9uU3RhdHVzLAot
ICAgIEFwcGxpY2F0aW9uVGV4dEdyb3VwLAotICAgIEFwcGxpY2F0aW9uVGltZXIsCi0gICAgQXVk
aW8sCi0gICAgQmxvY2txdW90ZSwKLSAgICBCcm93c2VyLAotICAgIEJ1c3lJbmRpY2F0b3IsCi0g
ICAgQnV0dG9uLAotICAgIENhbnZhcywKLSAgICBDYXB0aW9uLAotICAgIENlbGwsCi0gICAgQ2hl
Y2tCb3gsCi0gICAgQ29sb3JXZWxsLAotICAgIENvbHVtbiwKLSAgICBDb2x1bW5IZWFkZXIsCi0g
ICAgQ29tYm9Cb3gsCi0gICAgRGVmaW5pdGlvbiwKLSAgICBEZWxldGlvbiwKLSAgICBEZXNjcmlw
dGlvbkxpc3QsCi0gICAgRGVzY3JpcHRpb25MaXN0RGV0YWlsLAotICAgIERlc2NyaXB0aW9uTGlz
dFRlcm0sCi0gICAgRGV0YWlscywKLSAgICBEaXJlY3RvcnksCi0gICAgRGlzY2xvc3VyZVRyaWFu
Z2xlLAotICAgIERpdiwKLSAgICBEb2N1bWVudCwKLSAgICBEb2N1bWVudEFydGljbGUsCi0gICAg
RG9jdW1lbnRNYXRoLAotICAgIERvY3VtZW50Tm90ZSwKLSAgICBEcmF3ZXIsCi0gICAgRWRpdGFi
bGVUZXh0LAotICAgIEZlZWQsCi0gICAgRmlndXJlLAotICAgIEZvb3RlciwKLSAgICBGb290bm90
ZSwKLSAgICBGb3JtLAotICAgIEdyYXBoaWNzRG9jdW1lbnQsCi0gICAgR3JhcGhpY3NPYmplY3Qs
Ci0gICAgR3JhcGhpY3NTeW1ib2wsCi0gICAgR3JpZCwKLSAgICBHcmlkQ2VsbCwKLSAgICBHcm91
cCwKLSAgICBHcm93QXJlYSwKLSAgICBIZWFkaW5nLAotICAgIEhlbHBUYWcsCi0gICAgSG9yaXpv
bnRhbFJ1bGUsCi0gICAgSWdub3JlZCwKLSAgICBJbmxpbmUsCi0gICAgSW1hZ2UsCi0gICAgSW1h
Z2VNYXAsCi0gICAgSW1hZ2VNYXBMaW5rLAotICAgIEluY3JlbWVudG9yLAotICAgIEluc2VydGlv
biwKLSAgICBMYWJlbCwKLSAgICBMYW5kbWFya0Jhbm5lciwKLSAgICBMYW5kbWFya0NvbXBsZW1l
bnRhcnksCi0gICAgTGFuZG1hcmtDb250ZW50SW5mbywKLSAgICBMYW5kbWFya0RvY1JlZ2lvbiwK
LSAgICBMYW5kbWFya01haW4sCi0gICAgTGFuZG1hcmtOYXZpZ2F0aW9uLAotICAgIExhbmRtYXJr
UmVnaW9uLAotICAgIExhbmRtYXJrU2VhcmNoLAotICAgIExlZ2VuZCwKLSAgICBMaW5rLAotICAg
IExpc3QsCi0gICAgTGlzdEJveCwKLSAgICBMaXN0Qm94T3B0aW9uLAotICAgIExpc3RJdGVtLAot
ICAgIExpc3RNYXJrZXIsCi0gICAgTWFyaywKLSAgICBNYXRoRWxlbWVudCwKLSAgICBNYXR0ZSwK
LSAgICBNZW51LAotICAgIE1lbnVCYXIsCi0gICAgTWVudUJ1dHRvbiwKLSAgICBNZW51SXRlbSwK
LSAgICBNZW51SXRlbUNoZWNrYm94LAotICAgIE1lbnVJdGVtUmFkaW8sCi0gICAgTWVudUxpc3RQ
b3B1cCwKLSAgICBNZW51TGlzdE9wdGlvbiwKLSAgICBNZXRlciwKLSAgICBNb2RlbCwKLSAgICBP
dXRsaW5lLAotICAgIFBhcmFncmFwaCwKLSAgICBQb3BVcEJ1dHRvbiwKLSAgICBQcmUsCi0gICAg
UHJlc2VudGF0aW9uYWwsCi0gICAgUHJvZ3Jlc3NJbmRpY2F0b3IsCi0gICAgUmFkaW9CdXR0b24s
Ci0gICAgUmFkaW9Hcm91cCwKLSAgICBSb3dIZWFkZXIsCi0gICAgUm93LAotICAgIFJvd0dyb3Vw
LAotICAgIFJ1YnlCYXNlLAotICAgIFJ1YnlCbG9jaywKLSAgICBSdWJ5SW5saW5lLAotICAgIFJ1
YnlSdW4sCi0gICAgUnVieVRleHQsCi0gICAgUnVsZXIsCi0gICAgUnVsZXJNYXJrZXIsCi0gICAg
U2Nyb2xsQXJlYSwKLSAgICBTY3JvbGxCYXIsCi0gICAgU2VhcmNoRmllbGQsCi0gICAgU2hlZXQs
Ci0gICAgU2xpZGVyLAotICAgIFNsaWRlclRodW1iLAotICAgIFNwaW5CdXR0b24sCi0gICAgU3Bp
bkJ1dHRvblBhcnQsCi0gICAgU3BsaXRHcm91cCwKLSAgICBTcGxpdHRlciwKLSAgICBTdGF0aWNU
ZXh0LAotICAgIFN1YnNjcmlwdCwKLSAgICBTdW1tYXJ5LAotICAgIFN1cGVyc2NyaXB0LAotICAg
IFN3aXRjaCwKLSAgICBTeXN0ZW1XaWRlLAotICAgIFNWR1Jvb3QsCi0gICAgU1ZHVGV4dCwKLSAg
ICBTVkdUU3BhbiwKLSAgICBTVkdUZXh0UGF0aCwKLSAgICBUYWJHcm91cCwKLSAgICBUYWJMaXN0
LAotICAgIFRhYlBhbmVsLAotICAgIFRhYiwKLSAgICBUYWJsZSwKLSAgICBUYWJsZUhlYWRlckNv
bnRhaW5lciwKLSAgICBUZXJtLAotICAgIFRleHRBcmVhLAotICAgIFRleHRGaWVsZCwKLSAgICBU
ZXh0R3JvdXAsCi0gICAgVGltZSwKLSAgICBUcmVlLAotICAgIFRyZWVHcmlkLAotICAgIFRyZWVJ
dGVtLAotICAgIFRvZ2dsZUJ1dHRvbiwKLSAgICBUb29sYmFyLAotICAgIFVua25vd24sCi0gICAg
VXNlckludGVyZmFjZVRvb2x0aXAsCi0gICAgVmFsdWVJbmRpY2F0b3IsCi0gICAgVmlkZW8sCi0g
ICAgV2ViQXBwbGljYXRpb24sCi0gICAgV2ViQXJlYSwKLSAgICBXZWJDb3JlTGluaywKLSAgICBX
aW5kb3csCi19OwotCiB1c2luZyBBY2Nlc3NpYmlsaXR5Um9sZVNldCA9IEhhc2hTZXQ8QWNjZXNz
aWJpbGl0eVJvbGUsIEludEhhc2g8QWNjZXNzaWJpbGl0eVJvbGU+LCBXVEY6OlN0cm9uZ0VudW1I
YXNoVHJhaXRzPEFjY2Vzc2liaWxpdHlSb2xlPj47CiAKIEFMV0FZU19JTkxJTkUgU3RyaW5nIGFj
Y2Vzc2liaWxpdHlSb2xlVG9TdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QWNjZXNzaWJpbGl0eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudEFjY2Vzc2liaWxpdHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3ZTc5NTcw
MTcwNTI0NTRhMTg2NDgwZmFkOTZhMjcwZWU2MTVlM2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudEFjY2Vzc2liaWxpdHkuY3BwCkBAIC0wLDAgKzEsMjI2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkVsZW1lbnRBY2Nl
c3NpYmlsaXR5LmgiCisKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudElu
bGluZXMuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdWaWV3Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgQVJJQVJvbGVNYXAg
PSBIYXNoTWFwPFN0cmluZywgQWNjZXNzaWJpbGl0eVJvbGUsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZl
SGFzaD47CitzdGF0aWMgQVJJQVJvbGVNYXAqIGdBcmlhUm9sZU1hcCA9IG51bGxwdHI7CisKK3Vz
aW5nIEFSSUFSZXZlcnNlUm9sZU1hcCA9IEhhc2hNYXA8QWNjZXNzaWJpbGl0eVJvbGUsIFN0cmlu
ZywgRGVmYXVsdEhhc2g8aW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxp
bnQ+PjsKK3N0YXRpYyBBUklBUmV2ZXJzZVJvbGVNYXAqIGdBcmlhUmV2ZXJzZVJvbGVNYXAgPSBu
dWxscHRyOworCitzdGF0aWMgdm9pZCBpbml0aWFsaXplUm9sZU1hcCgpCit7CisgICAgaWYgKGdB
cmlhUm9sZU1hcCkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVCghZ0FyaWFSZXZlcnNlUm9s
ZU1hcCk7CisKKyAgICBzdHJ1Y3QgUm9sZUVudHJ5IHsKKyAgICAgICAgU3RyaW5nIGFyaWFSb2xl
OworICAgICAgICBBY2Nlc3NpYmlsaXR5Um9sZSB3ZWJjb3JlUm9sZTsKKyAgICB9OworCisgICAg
Y29uc3QgUm9sZUVudHJ5IHJvbGVzW10gPSB7CisgICAgICAgIHsgImFsZXJ0Il9zLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6QXBwbGljYXRpb25BbGVydCB9LAorICAgICAgICB7ICJhbGVydGRpYWxvZyJf
cywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnREaWFsb2cgfSwKKyAgICAgICAg
eyAiYXBwbGljYXRpb24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcHBsaWNhdGlvbiB9LAor
ICAgICAgICB7ICJhcnRpY2xlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnRBcnRpY2xl
IH0sCisgICAgICAgIHsgImJhbm5lciJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQmFu
bmVyIH0sCisgICAgICAgIHsgImJsb2NrcXVvdGUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpCbG9j
a3F1b3RlIH0sCisgICAgICAgIHsgImJ1dHRvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRv
biB9LAorICAgICAgICB7ICJjYXB0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2FwdGlvbiB9
LAorICAgICAgICB7ICJjaGVja2JveCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94IH0s
CisgICAgICAgIHsgImNvbXBsZW1lbnRhcnkiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFy
a0NvbXBsZW1lbnRhcnkgfSwKKyAgICAgICAgeyAiY29udGVudGluZm8iX3MsIEFjY2Vzc2liaWxp
dHlSb2xlOjpMYW5kbWFya0NvbnRlbnRJbmZvIH0sCisgICAgICAgIHsgImRlbGV0aW9uIl9zLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6RGVsZXRpb24gfSwKKyAgICAgICAgeyAiZGlhbG9nIl9zLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25EaWFsb2cgfSwKKyAgICAgICAgeyAiZGlyZWN0b3J5
Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RGlyZWN0b3J5IH0sCisgICAgICAgIC8vIFRoZSAnZG9j
LSonIHJvbGVzIGFyZSBkZWZpbmVkIHRoZSBBUklBIERQVUIgbW9iaWxlOiBodHRwczovL3d3dy53
My5vcmcvVFIvZHB1Yi1hYW0tMS4wCisgICAgICAgIC8vIEVkaXRvcidzIGRyYWZ0IGlzIGN1cnJl
bnRseSBhdCBodHRwczovL3czYy5naXRodWIuaW8vZHB1Yi1hYW0KKyAgICAgICAgeyAiZG9jLWFi
c3RyYWN0Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAgfSwKKyAg
ICAgICAgeyAiZG9jLWFja25vd2xlZGdtZW50cyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRt
YXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1hZnRlcndvcmQiX3MsIEFjY2Vzc2liaWxp
dHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtYXBwZW5kaXgiX3Ms
IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2Mt
YmFja2xpbmsiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3JlTGluayB9LAorICAgICAgICB7
ICJkb2MtYmlibGlvZW50cnkiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbSB9LAorICAg
ICAgICB7ICJkb2MtYmlibGlvZ3JhcGh5Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtE
b2NSZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLWJpYmxpb3JlZiJfcywgQWNjZXNzaWJpbGl0eVJv
bGU6OldlYkNvcmVMaW5rIH0sCisgICAgICAgIHsgImRvYy1jaGFwdGVyIl9zLCBBY2Nlc3NpYmls
aXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLWNvbG9waG9uIl9z
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAgfSwKKyAgICAgICAgeyAi
ZG9jLWNvbmNsdXNpb24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9
LAorICAgICAgICB7ICJkb2MtY292ZXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZSB9LAor
ICAgICAgICB7ICJkb2MtY3JlZGl0Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25U
ZXh0R3JvdXAgfSwKKyAgICAgICAgeyAiZG9jLWNyZWRpdHMiX3MsIEFjY2Vzc2liaWxpdHlSb2xl
OjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtZGVkaWNhdGlvbiJfcywgQWNj
ZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0sCisgICAgICAgIHsgImRvYy1l
bmRub3RlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW0gfSwKKyAgICAgICAgeyAiZG9j
LWVuZG5vdGVzIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKKyAg
ICAgICAgeyAiZG9jLWVwaWdyYXBoIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25U
ZXh0R3JvdXAgfSwKKyAgICAgICAgeyAiZG9jLWVwaWxvZ3VlIl9zLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLWVycmF0YSJfcywgQWNjZXNz
aWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1leGFtcGxl
Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAgfSwKKyAgICAgICAg
eyAiZG9jLWZvb3Rub3RlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9vdG5vdGUgfSwKKyAgICAg
ICAgeyAiZG9jLWZvcmV3b3JkIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdp
b24gfSwKKyAgICAgICAgeyAiZG9jLWdsb3NzYXJ5Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFu
ZG1hcmtEb2NSZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLWdsb3NzcmVmIl9zLCBBY2Nlc3NpYmls
aXR5Um9sZTo6V2ViQ29yZUxpbmsgfSwKKyAgICAgICAgeyAiZG9jLWluZGV4Il9zLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0aW9uIH0sCisgICAgICAgIHsgImRvYy1pbnRyb2R1
Y3Rpb24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAg
ICB7ICJkb2Mtbm90ZXJlZiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rIH0sCisg
ICAgICAgIHsgImRvYy1ub3RpY2UiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE5vdGUg
fSwKKyAgICAgICAgeyAiZG9jLXBhZ2VicmVhayJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlNwbGl0
dGVyIH0sCisgICAgICAgIHsgImRvYy1wYWdlbGlzdCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Okxh
bmRtYXJrTmF2aWdhdGlvbiB9LAorICAgICAgICB7ICJkb2MtcGFydCJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1wcmVmYWNlIl9zLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLXBy
b2xvZ3VlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKKyAgICAg
ICAgeyAiZG9jLXB1bGxxdW90ZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4
dEdyb3VwIH0sCisgICAgICAgIHsgImRvYy1xbmEiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBs
aWNhdGlvblRleHRHcm91cCB9LAorICAgICAgICB7ICJkb2Mtc3VidGl0bGUiX3MsIEFjY2Vzc2li
aWxpdHlSb2xlOjpIZWFkaW5nIH0sCisgICAgICAgIHsgImRvYy10aXAiX3MsIEFjY2Vzc2liaWxp
dHlSb2xlOjpEb2N1bWVudE5vdGUgfSwKKyAgICAgICAgeyAiZG9jLXRvYyJfcywgQWNjZXNzaWJp
bGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbiB9LAorICAgICAgICB7ICJmaWd1cmUiX3MsIEFj
Y2Vzc2liaWxpdHlSb2xlOjpGaWd1cmUgfSwKKyAgICAgICAgLy8gVGhlIG1hcHBpbmdzIGZvciAn
Z3JhcGhpY3MtKicgcm9sZXMgYXJlIGRlZmluZWQgaW4gdGhpcyBzcGVjOiBodHRwczovL3czYy5n
aXRodWIuaW8vZ3JhcGhpY3MtYWFtLworICAgICAgICB7ICJncmFwaGljcy1kb2N1bWVudCJfcywg
QWNjZXNzaWJpbGl0eVJvbGU6OkdyYXBoaWNzRG9jdW1lbnQgfSwKKyAgICAgICAgeyAiZ3JhcGhp
Y3Mtb2JqZWN0Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JhcGhpY3NPYmplY3QgfSwKKyAgICAg
ICAgeyAiZ3JhcGhpY3Mtc3ltYm9sIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JhcGhpY3NTeW1i
b2wgfSwKKyAgICAgICAgeyAiZ3JpZCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkdyaWQgfSwKKyAg
ICAgICAgeyAiZ3JpZGNlbGwiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlkQ2VsbCB9LAorICAg
ICAgICB7ICJ0YWJsZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYmxlIH0sCisgICAgICAgIHsg
ImNlbGwiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpDZWxsIH0sCisgICAgICAgIHsgImNvbHVtbmhl
YWRlciJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbkhlYWRlciB9LAorICAgICAgICB7ICJj
b21ib2JveCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkNvbWJvQm94IH0sCisgICAgICAgIHsgImRl
ZmluaXRpb24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpEZWZpbml0aW9uIH0sCisgICAgICAgIHsg
ImRvY3VtZW50Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnQgfSwKKyAgICAgICAgeyAi
ZmVlZCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkZlZWQgfSwKKyAgICAgICAgeyAiZm9ybSJfcywg
QWNjZXNzaWJpbGl0eVJvbGU6OkZvcm0gfSwKKyAgICAgICAgeyAicm93aGVhZGVyIl9zLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyIH0sCisgICAgICAgIHsgImdyb3VwIl9zLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6QXBwbGljYXRpb25Hcm91cCB9LAorICAgICAgICB7ICJoZWFkaW5nIl9zLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZyB9LAorICAgICAgICAvLyBUaGUgImltYWdlIiByb2xl
IGlzIHN5bm9ueW1vdXMgd2l0aCB0aGUgImltZyIgcm9sZS4gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L2FyaWEvI2ltYWdlCisgICAgICAgIHsgImltYWdlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1h
Z2UgfSwKKyAgICAgICAgeyAiaW1nIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2UgfSwKKyAg
ICAgICAgeyAiaW5zZXJ0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6SW5zZXJ0aW9uIH0sCisg
ICAgICAgIHsgImxpbmsiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3JlTGluayB9LAorICAg
ICAgICB7ICJsaXN0Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdCB9LAorICAgICAgICB7ICJs
aXN0aXRlbSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtIH0sCisgICAgICAgIHsgImxp
c3Rib3giX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94IH0sCisgICAgICAgIHsgImxvZyJf
cywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTG9nIH0sCisgICAgICAgIHsgIm1haW4i
X3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya01haW4gfSwKKyAgICAgICAgeyAibWFycXVl
ZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTWFycXVlZSB9LAorICAgICAgICB7
ICJtYXRoIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnRNYXRoIH0sCisgICAgICAgIHsg
Im1lbnUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51IH0sCisgICAgICAgIHsgIm1lbnViYXIi
X3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QmFyIH0sCisgICAgICAgIHsgIm1lbnVpdGVtIl9z
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW0gfSwKKyAgICAgICAgeyAibWVudWl0ZW1jaGVj
a2JveCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtQ2hlY2tib3ggfSwKKyAgICAgICAg
eyAibWVudWl0ZW1yYWRpbyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtUmFkaW8gfSwK
KyAgICAgICAgeyAibWV0ZXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpNZXRlciB9LAorICAgICAg
ICB7ICJub25lIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlc2VudGF0aW9uYWwgfSwKKyAgICAg
ICAgeyAibm90ZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50Tm90ZSB9LAorICAgICAg
ICB7ICJuYXZpZ2F0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0aW9u
IH0sCisgICAgICAgIHsgIm9wdGlvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3hPcHRp
b24gfSwKKyAgICAgICAgeyAicGFyYWdyYXBoIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6UGFyYWdy
YXBoIH0sCisgICAgICAgIHsgInByZXNlbnRhdGlvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlBy
ZXNlbnRhdGlvbmFsIH0sCisgICAgICAgIHsgInByb2dyZXNzYmFyIl9zLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6UHJvZ3Jlc3NJbmRpY2F0b3IgfSwKKyAgICAgICAgeyAicmFkaW8iX3MsIEFjY2Vzc2li
aWxpdHlSb2xlOjpSYWRpb0J1dHRvbiB9LAorICAgICAgICB7ICJyYWRpb2dyb3VwIl9zLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6UmFkaW9Hcm91cCB9LAorICAgICAgICB7ICJyZWdpb24iX3MsIEFjY2Vz
c2liaWxpdHlSb2xlOjpMYW5kbWFya1JlZ2lvbiB9LAorICAgICAgICB7ICJyb3ciX3MsIEFjY2Vz
c2liaWxpdHlSb2xlOjpSb3cgfSwKKyAgICAgICAgeyAicm93Z3JvdXAiX3MsIEFjY2Vzc2liaWxp
dHlSb2xlOjpSb3dHcm91cCB9LAorICAgICAgICB7ICJzY3JvbGxiYXIiX3MsIEFjY2Vzc2liaWxp
dHlSb2xlOjpTY3JvbGxCYXIgfSwKKyAgICAgICAgeyAic2VhcmNoIl9zLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6TGFuZG1hcmtTZWFyY2ggfSwKKyAgICAgICAgeyAic2VhcmNoYm94Il9zLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6U2VhcmNoRmllbGQgfSwKKyAgICAgICAgeyAic2VwYXJhdG9yIl9zLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXIgfSwKKyAgICAgICAgeyAic2xpZGVyIl9zLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6U2xpZGVyIH0sCisgICAgICAgIHsgInNwaW5idXR0b24iX3MsIEFjY2Vzc2li
aWxpdHlSb2xlOjpTcGluQnV0dG9uIH0sCisgICAgICAgIHsgInN0YXR1cyJfcywgQWNjZXNzaWJp
bGl0eVJvbGU6OkFwcGxpY2F0aW9uU3RhdHVzIH0sCisgICAgICAgIHsgInN1YnNjcmlwdCJfcywg
QWNjZXNzaWJpbGl0eVJvbGU6OlN1YnNjcmlwdCB9LAorICAgICAgICB7ICJzdXBlcnNjcmlwdCJf
cywgQWNjZXNzaWJpbGl0eVJvbGU6OlN1cGVyc2NyaXB0IH0sCisgICAgICAgIHsgInN3aXRjaCJf
cywgQWNjZXNzaWJpbGl0eVJvbGU6OlN3aXRjaCB9LAorICAgICAgICB7ICJ0YWIiX3MsIEFjY2Vz
c2liaWxpdHlSb2xlOjpUYWIgfSwKKyAgICAgICAgeyAidGFibGlzdCJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6OlRhYkxpc3QgfSwKKyAgICAgICAgeyAidGFicGFuZWwiX3MsIEFjY2Vzc2liaWxpdHlS
b2xlOjpUYWJQYW5lbCB9LAorICAgICAgICB7ICJ0ZXh0Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
U3RhdGljVGV4dCB9LAorICAgICAgICB7ICJ0ZXh0Ym94Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
VGV4dEFyZWEgfSwKKyAgICAgICAgeyAidGVybSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlRlcm0g
fSwKKyAgICAgICAgeyAidGltZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlRpbWUgfSwKKyAgICAg
ICAgeyAidGltZXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRpbWVyIH0sCisg
ICAgICAgIHsgInRvb2xiYXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpUb29sYmFyIH0sCisgICAg
ICAgIHsgInRvb2x0aXAiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpVc2VySW50ZXJmYWNlVG9vbHRp
cCB9LAorICAgICAgICB7ICJ0cmVlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZSB9LAorICAg
ICAgICB7ICJ0cmVlZ3JpZCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkIH0sCisgICAg
ICAgIHsgInRyZWVpdGVtIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW0gfQorICAgIH07
CisKKyAgICBnQXJpYVJvbGVNYXAgPSBuZXcgQVJJQVJvbGVNYXA7CisgICAgZ0FyaWFSZXZlcnNl
Um9sZU1hcCA9IG5ldyBBUklBUmV2ZXJzZVJvbGVNYXA7CisgICAgc2l6ZV90IHJvbGVMZW5ndGgg
PSBXVEZfQVJSQVlfTEVOR1RIKHJvbGVzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJv
bGVMZW5ndGg7ICsraSkgeworICAgICAgICBnQXJpYVJvbGVNYXAtPnNldChyb2xlc1tpXS5hcmlh
Um9sZSwgcm9sZXNbaV0ud2ViY29yZVJvbGUpOworICAgICAgICBnQXJpYVJldmVyc2VSb2xlTWFw
LT5zZXQoc3RhdGljX2Nhc3Q8aW50Pihyb2xlc1tpXS53ZWJjb3JlUm9sZSksIHJvbGVzW2ldLmFy
aWFSb2xlKTsKKyAgICB9CisgICAgZ0FyaWFSZXZlcnNlUm9sZU1hcC0+c2V0KHN0YXRpY19jYXN0
PGludD4oQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlKSwgImltYWdlIl9zKTsKK30KKworc3RhdGlj
IEFSSUFSb2xlTWFwJiBhcmlhUm9sZU1hcCgpCit7CisgICAgaW5pdGlhbGl6ZVJvbGVNYXAoKTsK
KyAgICByZXR1cm4gKmdBcmlhUm9sZU1hcDsKK30KKworc3RhdGljIEFSSUFSZXZlcnNlUm9sZU1h
cCYgcmV2ZXJzZUFyaWFSb2xlTWFwKCkKK3sKKyAgICBpbml0aWFsaXplUm9sZU1hcCgpOworICAg
IHJldHVybiAqZ0FyaWFSZXZlcnNlUm9sZU1hcDsKK30KKworU3RyaW5nIGFjY2Vzc2liaWx0eVJv
bGVTdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkKK3sKKyAgICByZXR1cm4gcmV2ZXJzZUFy
aWFSb2xlTWFwKCkuZ2V0KHN0YXRpY19jYXN0PGludD4ocm9sZSkpOworfQorCitzdGQ6Om9wdGlv
bmFsPEFjY2Vzc2liaWxpdHlSb2xlPiBhY2Nlc3NpYmlsaXR5Um9sZShjb25zdCBFbGVtZW50JiBl
bGVtZW50KQoreworICAgIGF1dG8mIHZhbHVlID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKEhUTUxOYW1lczo6cm9sZUF0dHIpOworICAgIGlmICh2YWx1ZS5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBmb3IgKGF1dG8gcm9sZU5h
bWUgOiBTdHJpbmdWaWV3KHZhbHVlKS5zcGxpdCgnICcpKSB7CisgICAgICAgIC8vIEZJWE1FOiBU
aGlzIHNlZW1zIGxpa2UgaXQgZGVwZW5kcyBvbiB1bmRlZmluZWQgYmVoYXZpb3IsIHNpbmNlIDAg
aXMgbm90IGEgdmFsaWQgZW51bSB2YWx1ZSBmb3IgQWNjZXNzaWJpbGl0eVJvbGUuCisgICAgICAg
IGlmIChhdXRvIHJvbGUgPSBhcmlhUm9sZU1hcCgpLmdldDxBU0NJSUNhc2VJbnNlbnNpdGl2ZVN0
cmluZ1ZpZXdIYXNoVHJhbnNsYXRvcj4ocm9sZU5hbWUpOyBzdGF0aWNfY2FzdDxpbnQ+KHJvbGUp
KQorICAgICAgICAgICAgcmV0dXJuIHJvbGU7CisgICAgfQorCisgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlSb2xlOjpVbmtub3duOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFjY2Vzc2liaWxpdHkuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50QWNjZXNzaWJpbGl0eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyODZjOGE2NzEy
YjdkYjVmOWQ0OWQ0YzNiMmFhZjgxMDQyYmY1ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudEFjY2Vzc2liaWxpdHkuaApAQCAtMCwwICsxLDE5MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRWxlbWVudDsKKworZW51bSBjbGFzcyBB
Y2Nlc3NpYmlsaXR5Um9sZSA6IHVpbnQ4X3QgeworICAgIEFubm90YXRpb24gPSAxLAorICAgIEFw
cGxpY2F0aW9uLAorICAgIEFwcGxpY2F0aW9uQWxlcnQsCisgICAgQXBwbGljYXRpb25BbGVydERp
YWxvZywKKyAgICBBcHBsaWNhdGlvbkRpYWxvZywKKyAgICBBcHBsaWNhdGlvbkdyb3VwLAorICAg
IEFwcGxpY2F0aW9uTG9nLAorICAgIEFwcGxpY2F0aW9uTWFycXVlZSwKKyAgICBBcHBsaWNhdGlv
blN0YXR1cywKKyAgICBBcHBsaWNhdGlvblRleHRHcm91cCwKKyAgICBBcHBsaWNhdGlvblRpbWVy
LAorICAgIEF1ZGlvLAorICAgIEJsb2NrcXVvdGUsCisgICAgQnJvd3NlciwKKyAgICBCdXN5SW5k
aWNhdG9yLAorICAgIEJ1dHRvbiwKKyAgICBDYW52YXMsCisgICAgQ2FwdGlvbiwKKyAgICBDZWxs
LAorICAgIENoZWNrQm94LAorICAgIENvbG9yV2VsbCwKKyAgICBDb2x1bW4sCisgICAgQ29sdW1u
SGVhZGVyLAorICAgIENvbWJvQm94LAorICAgIERlZmluaXRpb24sCisgICAgRGVsZXRpb24sCisg
ICAgRGVzY3JpcHRpb25MaXN0LAorICAgIERlc2NyaXB0aW9uTGlzdERldGFpbCwKKyAgICBEZXNj
cmlwdGlvbkxpc3RUZXJtLAorICAgIERldGFpbHMsCisgICAgRGlyZWN0b3J5LAorICAgIERpc2Ns
b3N1cmVUcmlhbmdsZSwKKyAgICBEaXYsCisgICAgRG9jdW1lbnQsCisgICAgRG9jdW1lbnRBcnRp
Y2xlLAorICAgIERvY3VtZW50TWF0aCwKKyAgICBEb2N1bWVudE5vdGUsCisgICAgRHJhd2VyLAor
ICAgIEVkaXRhYmxlVGV4dCwKKyAgICBGZWVkLAorICAgIEZpZ3VyZSwKKyAgICBGb290ZXIsCisg
ICAgRm9vdG5vdGUsCisgICAgRm9ybSwKKyAgICBHcmFwaGljc0RvY3VtZW50LAorICAgIEdyYXBo
aWNzT2JqZWN0LAorICAgIEdyYXBoaWNzU3ltYm9sLAorICAgIEdyaWQsCisgICAgR3JpZENlbGws
CisgICAgR3JvdXAsCisgICAgR3Jvd0FyZWEsCisgICAgSGVhZGluZywKKyAgICBIZWxwVGFnLAor
ICAgIEhvcml6b250YWxSdWxlLAorICAgIElnbm9yZWQsCisgICAgSW5saW5lLAorICAgIEltYWdl
LAorICAgIEltYWdlTWFwLAorICAgIEltYWdlTWFwTGluaywKKyAgICBJbmNyZW1lbnRvciwKKyAg
ICBJbnNlcnRpb24sCisgICAgTGFiZWwsCisgICAgTGFuZG1hcmtCYW5uZXIsCisgICAgTGFuZG1h
cmtDb21wbGVtZW50YXJ5LAorICAgIExhbmRtYXJrQ29udGVudEluZm8sCisgICAgTGFuZG1hcmtE
b2NSZWdpb24sCisgICAgTGFuZG1hcmtNYWluLAorICAgIExhbmRtYXJrTmF2aWdhdGlvbiwKKyAg
ICBMYW5kbWFya1JlZ2lvbiwKKyAgICBMYW5kbWFya1NlYXJjaCwKKyAgICBMZWdlbmQsCisgICAg
TGluaywKKyAgICBMaXN0LAorICAgIExpc3RCb3gsCisgICAgTGlzdEJveE9wdGlvbiwKKyAgICBM
aXN0SXRlbSwKKyAgICBMaXN0TWFya2VyLAorICAgIE1hcmssCisgICAgTWF0aEVsZW1lbnQsCisg
ICAgTWF0dGUsCisgICAgTWVudSwKKyAgICBNZW51QmFyLAorICAgIE1lbnVCdXR0b24sCisgICAg
TWVudUl0ZW0sCisgICAgTWVudUl0ZW1DaGVja2JveCwKKyAgICBNZW51SXRlbVJhZGlvLAorICAg
IE1lbnVMaXN0UG9wdXAsCisgICAgTWVudUxpc3RPcHRpb24sCisgICAgTWV0ZXIsCisgICAgTW9k
ZWwsCisgICAgT3V0bGluZSwKKyAgICBQYXJhZ3JhcGgsCisgICAgUG9wVXBCdXR0b24sCisgICAg
UHJlLAorICAgIFByZXNlbnRhdGlvbmFsLAorICAgIFByb2dyZXNzSW5kaWNhdG9yLAorICAgIFJh
ZGlvQnV0dG9uLAorICAgIFJhZGlvR3JvdXAsCisgICAgUm93SGVhZGVyLAorICAgIFJvdywKKyAg
ICBSb3dHcm91cCwKKyAgICBSdWJ5QmFzZSwKKyAgICBSdWJ5QmxvY2ssCisgICAgUnVieUlubGlu
ZSwKKyAgICBSdWJ5UnVuLAorICAgIFJ1YnlUZXh0LAorICAgIFJ1bGVyLAorICAgIFJ1bGVyTWFy
a2VyLAorICAgIFNjcm9sbEFyZWEsCisgICAgU2Nyb2xsQmFyLAorICAgIFNlYXJjaEZpZWxkLAor
ICAgIFNoZWV0LAorICAgIFNsaWRlciwKKyAgICBTbGlkZXJUaHVtYiwKKyAgICBTcGluQnV0dG9u
LAorICAgIFNwaW5CdXR0b25QYXJ0LAorICAgIFNwbGl0R3JvdXAsCisgICAgU3BsaXR0ZXIsCisg
ICAgU3RhdGljVGV4dCwKKyAgICBTdWJzY3JpcHQsCisgICAgU3VtbWFyeSwKKyAgICBTdXBlcnNj
cmlwdCwKKyAgICBTd2l0Y2gsCisgICAgU3lzdGVtV2lkZSwKKyAgICBTVkdSb290LAorICAgIFNW
R1RleHQsCisgICAgU1ZHVFNwYW4sCisgICAgU1ZHVGV4dFBhdGgsCisgICAgVGFiR3JvdXAsCisg
ICAgVGFiTGlzdCwKKyAgICBUYWJQYW5lbCwKKyAgICBUYWIsCisgICAgVGFibGUsCisgICAgVGFi
bGVIZWFkZXJDb250YWluZXIsCisgICAgVGVybSwKKyAgICBUZXh0QXJlYSwKKyAgICBUZXh0Rmll
bGQsCisgICAgVGV4dEdyb3VwLAorICAgIFRpbWUsCisgICAgVHJlZSwKKyAgICBUcmVlR3JpZCwK
KyAgICBUcmVlSXRlbSwKKyAgICBUb2dnbGVCdXR0b24sCisgICAgVG9vbGJhciwKKyAgICBVbmtu
b3duLAorICAgIFVzZXJJbnRlcmZhY2VUb29sdGlwLAorICAgIFZhbHVlSW5kaWNhdG9yLAorICAg
IFZpZGVvLAorICAgIFdlYkFwcGxpY2F0aW9uLAorICAgIFdlYkFyZWEsCisgICAgV2ViQ29yZUxp
bmssCisgICAgV2luZG93LAorfTsKKworU3RyaW5nIGFjY2Vzc2liaWx0eVJvbGVTdHJpbmcoQWNj
ZXNzaWJpbGl0eVJvbGUpOworCitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEFjY2Vzc2li
aWxpdHlSb2xlPiBhY2Nlc3NpYmlsaXR5Um9sZShjb25zdCBFbGVtZW50Jik7CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFu
aXB1bGF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggNDc0MjlkNTkxN2EyM2EyZWRhZTE2ZDBmNzdm
OTQxMmNhOGY1NmEwZS4uOTI2M2RmNTI4Y2ZkYTQwMWZmYzI3OGUwYmY5N2FkN2E5MWE2ZjkxYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiQ2hhcmFjdGVyRGF0YS5oIgogI2luY2x1ZGUgIkVkaXRpbmcuaCIK
KyNpbmNsdWRlICJFbGVtZW50QWNjZXNzaWJpbGl0eS5oIgogI2luY2x1ZGUgIkVsZW1lbnRBbmNl
c3Rvckl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRnJhbWVW
aWV3LmgiCkBAIC0zMTUsMTEgKzMxNiw3IEBAIHN0YXRpYyBib29sIGlzRW5jbG9zaW5nSXRlbUJv
dW5kYXJ5RWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogICAgIGlmICghcmVuZGVyZXIp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gcm9sZSA9IFtdKGNvbnN0IEVsZW1l
bnQmIGVsZW1lbnQpIC0+IEFjY2Vzc2liaWxpdHlSb2xlIHsKLSAgICAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmFyaWFSb2xlVG9XZWJDb3JlUm9sZShlbGVtZW50LmF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpyb2xlQXR0cikpOwotICAgIH07Ci0KLSAg
ICBpZiAoZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YnV0dG9uVGFnKSB8fCByb2xlKGVs
ZW1lbnQpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b24pCisgICAgaWYgKGVsZW1lbnQuaGFz
VGFnTmFtZShIVE1MTmFtZXM6OmJ1dHRvblRhZykgfHwgYWNjZXNzaWJpbGl0eVJvbGUoZWxlbWVu
dCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbikKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICBhdXRvIGRpc3BsYXlUeXBlID0gcmVuZGVyZXItPnN0eWxlKCkuZGlzcGxheSgpOwpAQCAt
MzI4LDcgKzMyNSw3IEBAIHN0YXRpYyBib29sIGlzRW5jbG9zaW5nSXRlbUJvdW5kYXJ5RWxlbWVu
dChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICAgICAgZm9yIChSZWZQdHIgcGFyZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50KCk7IHBhcmVu
dDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgIGlmIChw
YXJlbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpuYXZUYWcpIHx8IHJvbGUoKnBhcmVudCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbikKKyAgICAgICAgICAgIGlmIChw
YXJlbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpuYXZUYWcpIHx8IGFjY2Vzc2liaWxpdHlSb2xl
KCpwYXJlbnQpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb24pCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL01vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Nb2RhbENvbnRhaW5lck9ic2VydmVyLmNwcAppbmRleCBkZWE1MGI3NzAyZDRk
M2JkZDMyY2Y5MjdiMDFkMzgzYTIyZjYzNWVmLi5lZTIzNjFiYTUzY2RkZWM5NjExMjllZjQyODQ3
MWExZGIzZmQxZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01vZGFsQ29udGFp
bmVyT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTW9kYWxDb250YWluZXJP
YnNlcnZlci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5j
bHVkZSAiRWxlbWVudEFjY2Vzc2liaWxpdHkuaCIKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCkBAIC0x
MzEsMTEgKzEzMiw2IEBAIHN0YXRpYyBib29sIG1hdGNoZXNTZWFyY2hUZXJtKGNvbnN0IFRleHQm
IHRleHROb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBzZWFyY2hUZXJtCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXN0YXRpYyBBY2Nlc3NpYmlsaXR5Um9sZSBhY2Nlc3NpYmlsaXR5Um9sZShjb25zdCBI
VE1MRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6
YXJpYVJvbGVUb1dlYkNvcmVSb2xlKGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihIVE1MTmFtZXM6OnJvbGVBdHRyKSk7Ci19Ci0KIHN0YXRpYyBib29sIGlzSW5zaWRlTmF2
aWdhdGlvbkVsZW1lbnQoY29uc3QgVGV4dCYgdGV4dE5vZGUpCiB7CiAgICAgZm9yIChhdXRvJiBw
YXJlbnQgOiBhbmNlc3RvcnNPZlR5cGU8SFRNTEVsZW1lbnQ+KHRleHROb2RlKSkgewpAQCAtMjA4
LDE0ICsyMDQsMTYgQEAgc3RhdGljIGJvb2wgaXNDbGlja2FibGVDb250cm9sKGNvbnN0IEhUTUxF
bGVtZW50JiBlbGVtZW50KQogICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSAm
JiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KS5pc1RleHRCdXR0b24oKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBzd2l0Y2ggKGFjY2Vzc2liaWxpdHlSb2xlKGVsZW1l
bnQpKSB7Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uOgotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveDoKLSAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpTd2l0Y2g6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBk
ZWZhdWx0OgotICAgICAgICBicmVhazsKKyAgICBpZiAoYXV0byByb2xlID0gYWNjZXNzaWJpbGl0
eVJvbGUoZWxlbWVudCkpIHsKKyAgICAgICAgc3dpdGNoICgqcm9sZSkgeworICAgICAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b246CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2hlY2tCb3g6CisgICAgICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OlN3aXRjaDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQogCiAgICAg
aWYgKGlzPEhUTUxBbmNob3JFbGVtZW50PihlbGVtZW50KSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAwNmQ1NWYxMDg3
Y2E0MDJjOTU1ZWE1YjU4MjE0NzM0MDIxMTQwMGYwLi45NzZmNTlhNDc4OTViMmU1YzcyMTcxMDBl
YWM0ZWYyYmY3YjhlNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNzY5LDggKzc2OSw4IEBAIHZvaWQgV2ViUGFnZTo6
aGFuZGxlU3ludGhldGljQ2xpY2soTm9kZSYgbm9kZVJlc3BvbmRpbmdUb0NsaWNrLCBjb25zdCBX
ZWJDb3JlOjpGCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKHRhcmdldE5v
ZGUuZG9jdW1lbnQoKS5xdWlya3MoKS5zaG91bGRJZ25vcmVBcmlhRm9yRmFzdFBhdGhDb250ZW50
T2JzZXJ2YXRpb25DaGVjaygpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBh
dXRvIGFyaWFSb2xlID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVJvbGVUb1dlYkNvcmVSb2xl
KGRvd25jYXN0PEVsZW1lbnQ+KHRhcmdldE5vZGUpLmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnJv
bGVBdHRyKSk7Ci0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FSSUFDb250
cm9sKGFyaWFSb2xlKTsKKyAgICAgICAgYXV0byByb2xlID0gYWNjZXNzaWJpbGl0eVJvbGUoZG93
bmNhc3Q8RWxlbWVudD4odGFyZ2V0Tm9kZSkpOworICAgICAgICByZXR1cm4gcm9sZSAmJiBBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppc0FSSUFDb250cm9sKCpyb2xlKTsKICAgICB9OwogICAgIGF1dG8g
dGFyZ2V0Tm9kZVRyaWdnZXJzRmFzdFBhdGggPSBub2RlVHJpZ2dlcnNGYXN0UGF0aChub2RlUmVz
cG9uZGluZ1RvQ2xpY2spOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448259</attachid>
            <date>2022-01-03 16:07:49 -0800</date>
            <delta_ts>2022-01-03 18:26:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234787-20220103160748.patch</filename>
            <type>text/plain</type>
            <size>51105</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWU2MjFiMTBhMmU1ZTVj
ZDZkZWI5NmRmM2Y5MDg3YWIyMmQyNWIwYS4uNDQ3Y2U1YzAyYzVmODI5NTdhOWEwYTQzY2JlY2M3
ZTViNGQxZDE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDIyLTAxLTAzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGhlbHBl
ciBmdW5jdGlvbiB0byBjb21wdXRlIGFuIGVsZW1lbnQncyBhY2Nlc3NpYmlsaXR5IHJvbGUgaW4g
Y29yZSBET00gY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM0Nzg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAg
ICAgVGhlcmUgYXJlIGEgY291cGxlIHBsYWNlcyBpbiBXZWJDb3JlIG91dHNpZGUgb2YgdGhlIGNv
bnRleHQgb2YgYWNjZXNzaWJpbGl0eSBjb2RlIHRoYXQgcGFyc2UgYEFjY2Vzc2liaWxpdHlSb2xl
YAorICAgICAgICBmcm9tIHRoZSAicm9sZSIgYXR0cmlidXRlIG9mIERPTSBlbGVtZW50cyBpbiBv
cmRlciB0byBkcml2ZSB2YXJpb3VzIGhldXJpc3RpY3MuIEluIG9yZGVyIHRvIGRvIHRoaXMsIHdl
CisgICAgICAgIGN1cnJlbnRseSBpbmNsdWRlIGFjY2Vzc2liaWxpdHkgaGVhZGVycyBpbiB0aGVz
ZSBmaWxlczsgaG93ZXZlciwgdGhpcyBpc24ndCBpZGVhbCBmb3IgbGF5ZXJpbmcsIHNpbmNlIGFs
bCB0aGUKKyAgICAgICAgYWNjZXNzaWJpbGl0eSBjb2RlIGlzIGludGVuZGVkIHRvIGJ1aWxkIG9u
IHRvcCBvZiB0aGUgY29yZSBET00uCisKKyAgICAgICAgVG8gYWRkcmVzcyB0aGlzLCBtb3ZlIHRo
ZSBsb2dpYyBmb3IgcGFyc2luZyB0aGUgInJvbGUiIGF0dHJpYnV0ZSBpbnRvIGFuIGBBY2Nlc3Np
YmlsaXR5Um9sZWAgZW51bSBpbnRvIGEKKyAgICAgICAgc2VwYXJhdGUgaGVhZGVyLCBgRWxlbWVu
dEFjY2Vzc2liaWxpdHkuaGAgKGFuZCBzZXBhcmF0ZSBoZWxwZXIgZnVuY3Rpb24pIGluIHRoZSBj
b3JlIERPTSBpbXBsZW1lbnRhdGlvbiwgYW5kCisgICAgICAgIHRoZW4gaGF2ZSBhY2Nlc3NpYmls
aXR5IGluY2x1ZGUgdGhhdCBoZWFkZXIuCisKKyAgICAgICAgVGhlbiwgY2hhbmdlIG5vbi1hY2Nl
c3NpYmlsaXR5IERPTSBjb2RlIGluIFdlYkNvcmUgdG8gaW5jbHVkZSAiRWxlbWVudEFjY2Vzc2li
aWxpdHkuaCIgaW5zdGVhZCBvZiBwdWxsaW5nIGluCisgICAgICAgIGFjY2Vzc2liaWxpdHkgaGVh
ZGVycy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToK
KyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUxpdmVSZWdpb25DcmVhdGVk
KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUltYWdlTWFwTGluazo6cm9sZVZhbHVl
IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpkZXRlcm1p
bmVBcmlhUm9sZUF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmNvbXB1dGVkUm9sZVN0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFs
aXplUm9sZU1hcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphcmlhUm9sZU1hcCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZXZlcnNlQXJpYVJvbGVNYXApOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVJvbGVUb1dlYkNvcmVS
b2xlKTogRGVsZXRlZC4KKworICAgICAgICBSZXBsYWNlIGBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojph
cmlhUm9sZVRvV2ViQ29yZVJvbGVgIHdpdGggYFdlYkNvcmU6OmFjY2Vzc2liaWxpdHlSb2xlYCwg
d2hpY2ggcGFyc2VzIHRoZSByb2xlCisgICAgICAgIGF0dHJpYnV0ZSBvZiB0aGUgZ2l2ZW4gYEVs
ZW1lbnRgIHRvIGFuIGBBY2Nlc3NpYmlsaXR5Um9sZWAgKG9yIGBudWxsb3B0YCBpZiB0aGUgZWxl
bWVudCBkb2VzIG5vdCBoYXZlIGEgdmFsdWUKKyAgICAgICAgZm9yIHRoZSByb2xlIGF0dHJpYnV0
ZSkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoKKyAg
ICAgICAgKiBkb20vRWxlbWVudEFjY2Vzc2liaWxpdHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmluaXRpYWxpemVSb2xlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OmFyaWFSb2xlTWFw
KToKKyAgICAgICAgKFdlYkNvcmU6OnJldmVyc2VBcmlhUm9sZU1hcCk6CisKKyAgICAgICAgTW92
ZSB0aGUgaGFzaCBtYXBzIGludG8gdGhlIHNvdXJjZSBmaWxlIGFzIGFuIGltcGxlbWVudGF0aW9u
IGRldGFpbCwgYW5kIGluc3RlYWQgZXhwb3NlIGEgbmV3IG1ldGhvZCwKKyAgICAgICAgYGFjY2Vz
c2liaWx0eVJvbGVTdHJpbmcoKWAsIHRoYXQgbWFwcyBhIGdpdmVuIGBBY2Nlc3NpYmlsaXR5Um9s
ZWAgdG8gdGhlIGBTdHJpbmdgIGZvciB0aGF0IHJvbGUuIEZvciB0aGUgdGltZQorICAgICAgICBi
ZWluZywgdGhpcyBzdGlsbCBqdXN0IGludGVybmFsbHkgbG9va3MgdGhyb3VnaCBhIGhhc2ggbWFw
IG9mIHJvbGUgPT4gU3RyaW5nLCBidXQgaW4gdGhlIGZ1dHVyZSwgaXQgY291bGQgYmUKKyAgICAg
ICAgcmVmYWN0b3JlZCB0byBiZSBhIGNvbnN0ZXhwciBmdW5jdGlvbiB0aGF0IGp1c3QgcmV0dXJu
cyB0aGUgY29ycmVzcG9uZGluZyBuYW1lIHdpdGhvdXQgcmVxdWlyaW5nIGEgc3RyaW5nIGhhc2gu
CisKKyAgICAgICAgKFdlYkNvcmU6OmFjY2Vzc2liaWx0eVJvbGVTdHJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6YWNjZXNzaWJpbGl0eVJvbGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50QWNjZXNz
aWJpbGl0eS5oOiBBZGRlZC4KKworICAgICAgICBNb3ZlIHRoZSBgQWNjZXNzaWJpbGl0eVJvbGVg
IGVudW0gY2xhc3MgaGVyZSwgYW5kIG1ha2UgaXQgYHVpbnQ4X3RgLgorCisgICAgICAgICogZWRp
dGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
c0VuY2xvc2luZ0l0ZW1Cb3VuZGFyeUVsZW1lbnQpOgorICAgICAgICAqIHBhZ2UvTW9kYWxDb250
YWluZXJPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0NsaWNrYWJsZUNvbnRyb2wp
OgorICAgICAgICAoV2ViQ29yZTo6YWNjZXNzaWJpbGl0eVJvbGUpOiBEZWxldGVkLgorCiAyMDIy
LTAxLTAyICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJ
RkNdIEFkZCBBU1NFUlQobWlkZGxlID49IGxlZnQgJiYgbWlkZGxlIDwgcmlnaHQpIHRvIFRleHRV
dGlsOjpicmVha1dvcmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOWY1YWYzZGFiYTNhYTIxNzA1NzEwYTNkMzQ0MzA0
YjkxYWFlOTA3Yi4uYTE2Y2FmYWFiYzAwNGM1MmZjNzYyOGFkMzQ4YTczNmFiMWRhZjdiMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wMS0wMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBoZWxwZXIgZnVuY3Rpb24gdG8gY29t
cHV0ZSBhbiBlbGVtZW50J3MgYWNjZXNzaWJpbGl0eSByb2xlIGluIGNvcmUgRE9NIGNvZGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDc4NworCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFNlZSBXZWJDb3JlL0No
YW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVTeW50
aGV0aWNDbGljayk6CisKIDIwMjItMDEtMDIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CiAKICAgICAgICAgW1dlYktpdDJdIENhbWVyYSBjb250aW51aXR5IGlzIGRpc2Fi
bGVkIGluIHJpY2hseSBlZGl0YWJsZSBjb250ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBmOGI4
OWYwZWVmZmZkOWUwMzA3YjY0OTk1NzRkZjI0MTUxZWNjZTlkLi45ZTJhZjFiOGI1Njc3MTExNjMy
ZjQ2YjM4YzhkMzM5ZmZlN2JlNjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTYzMSw2ICs2MzEs
NyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgZG9tL0RvY3Vt
ZW50U3RvcmFnZUFjY2Vzcy5oCiAgICAgZG9tL0RvY3VtZW50VHlwZS5oCiAgICAgZG9tL0VsZW1l
bnQuaAorICAgIGRvbS9FbGVtZW50QWNjZXNzaWJpbGl0eS5oCiAgICAgZG9tL0VsZW1lbnRBbmNl
c3Rvckl0ZXJhdG9yLmgKICAgICBkb20vRWxlbWVudENoaWxkSXRlcmF0b3IuaAogICAgIGRvbS9F
bGVtZW50Q29udGV4dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGJkNWE3NDc5Y2IzOWU0NmNjOTEwNDAw
ZjRlZTM4NDkzMjRjNzUzMWYuLmFiMjI0ZGIyMGJkMDA4ZTEzZWEyYWQzOWZlYTkwYjNjNTg0NGFj
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CkBAIC05NTAsNiArOTUwLDcgQEAgZG9tL0RvY3VtZW50VG91Y2gu
Y3BwIEBuby11bmlmeQogZG9tL0RvY3VtZW50VHlwZS5jcHAKIGRvbS9EcmFnRXZlbnQuY3BwCiBk
b20vRWxlbWVudC5jcHAKK2RvbS9FbGVtZW50QWNjZXNzaWJpbGl0eS5jcHAKIGRvbS9FbGVtZW50
RGF0YS5jcHAKIGRvbS9FbGVtZW50UmFyZURhdGEuY3BwCiBkb20vRXJyb3JFdmVudC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAzYzllYzI1YzBhOTI0NjA2YWUyZWIzMjc2NGExNzhkZGNjOTQ0M2Y4Li5lOGM4NmM1YjNlN2Fi
NGNjZjk3NmEzNTE3M2E5YTAyYzVhOWZjOGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NDgxLDYgKzU0ODEsNyBAQAogCQlG
NDI5OTUwRjI3MEU3NTAwMDAzMjI5OEIgLyogRGlzcGxheUxpc3RSZWNvcmRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQyOTk1MEQyNzBFNzUwMDAw
MzIyOThCIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDMzRTkwMzFEQkJEQkEyMDBFRjBEMTQgLyogU3Rh
dGljUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjQzM0U5MDIxREJCREJBMjAwRUYwRDE0IC8qIFN0YXRpY1Bhc3RlYm9hcmQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDM3N0Q1NzI1
NTFDOUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzNzdENTUyNTUxQzlDNjAwODBBQkZFIC8q
IERpc3BsYXlMaXN0SXRlbVR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlGNDNDMzgyQTI3ODI0QzE5MDA5OUFCQ0UgLyogRWxlbWVudEFjY2Vz
c2liaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0M0MzODI4Mjc4MjRDMTkwMDk5QUJDRSAvKiBFbGVtZW50QWNjZXNzaWJpbGl0eS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0NDBFNzdBMjMz
RDk0RDcwMDYzRjlBQiAvKiBOYXZpZ2F0b3JDbGlwYm9hcmQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDBFNzZGMjMzRDk0RDMwMDYzRjlBQiAvKiBO
YXZpZ2F0b3JDbGlwYm9hcmQuaCAqLzsgfTsKIAkJRjQ0MEU3N0IyMzNEOTRENzAwNjNGOUFCIC8q
IENsaXBib2FyZEl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0NDBFNzcwMjMzRDk0RDQwMDYzRjlBQiAvKiBDbGlwYm9hcmRJdGVtLmggKi87IH07
CiAJCUY0NDBFNzdEMjMzRDk0RDcwMDYzRjlBQiAvKiBDbGlwYm9hcmQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDBFNzcyMjMzRDk0RDUwMDYzRjlB
QiAvKiBDbGlwYm9hcmQuaCAqLzsgfTsKQEAgLTE3Njg1LDYgKzE3Njg2LDggQEAKIAkJRjQzM0U5
MDQxREJCREJDMjAwRUYwRDE0IC8qIFN0YXRpY1Bhc3RlYm9hcmQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU3RhdGljUGFzdGVib2FyZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0Mzc3RDU1MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlbVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjQzNzdENTYyNTUxQzlDNjAwODBBQkZFIC8qIERpc3BsYXlMaXN0SXRlbVR5cGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpc3RJdGVtVHlwZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUY0M0MzODI4Mjc4MjRDMTkwMDk5QUJDRSAvKiBFbGVtZW50QWNj
ZXNzaWJpbGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbGVtZW50QWNjZXNzaWJpbGl0eS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDNDMzgyOTI3ODI0QzE5MDA5OUFCQ0UgLyogRWxl
bWVudEFjY2Vzc2liaWxpdHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRWxlbWVudEFjY2Vzc2li
aWxpdHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDQwRTc2RTIzM0Q5NEQz
MDA2M0Y5QUIgLyogQ2xpcGJvYXJkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENsaXBib2FyZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NDBF
NzZGMjMzRDk0RDMwMDYzRjlBQiAvKiBOYXZpZ2F0b3JDbGlwYm9hcmQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTmF2aWdhdG9yQ2xpcGJvYXJkLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUY0NDBFNzcwMjMzRDk0RDQwMDYzRjlBQiAvKiBDbGlwYm9hcmRJdGVt
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsaXBib2FyZEl0ZW0uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMyMjU2LDYgKzMyMjU5LDggQEAKIAkJCQlBOEM0
QTdGNjA5RDU2MzI3MDAwM0FDOEQgLyogRWxlbWVudC5jcHAgKi8sCiAJCQkJQThDNEE3RjUwOUQ1
NjMyNzAwMDNBQzhEIC8qIEVsZW1lbnQuaCAqLywKIAkJCQk5M0VFQzFFQTA5QzI4Nzc3MDBDNTE1
RDEgLyogRWxlbWVudC5pZGwgKi8sCisJCQkJRjQzQzM4MjkyNzgyNEMxOTAwOTlBQkNFIC8qIEVs
ZW1lbnRBY2Nlc3NpYmlsaXR5LmNwcCAqLywKKwkJCQlGNDNDMzgyODI3ODI0QzE5MDA5OUFCQ0Ug
LyogRWxlbWVudEFjY2Vzc2liaWxpdHkuaCAqLywKIAkJCQlFNEFFN0MxOTE3RDIzMjM1MDAwOUZC
MzEgLyogRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCAqLywKIAkJCQlFNDQwQUE5NTFDNjg0MjA4
MDBBMjY1Q0MgLyogRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IuaCAqLywKIAkJCQlF
NDZBMkIxRDE3Q0E3NkIxMDAwREJDRDggLyogRWxlbWVudENoaWxkSXRlcmF0b3IuaCAqLywKQEAg
LTM0MjQwLDYgKzM0MjQ1LDcgQEAKIAkJCQk5M0ZEQUZDQTBCMTEzMDc0MDBFMjc0NkYgLyogRWRp
dG9ySW5zZXJ0QWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTJCRTQ3RDFGRTg2NDU4MDAy
MDMxQ0MgLyogRWZmZWN0VGltaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEM0QTgwNzA5RDU2
MzI3MDAwM0FDOEQgLyogRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjQzQzM4MkEyNzgy
NEMxOTAwOTlBQkNFIC8qIEVsZW1lbnRBY2Nlc3NpYmlsaXR5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFNEFFN0MxQTE3RDIzMjM1MDAwOUZCMzEgLyogRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCUU0NDBBQTk2MUM2ODQyMDgwMEEyNjVDQyAvKiBFbGVtZW50QW5k
VGV4dERlc2NlbmRhbnRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzExOTQ2NTYyNDE4
MUVBMTAwNDY2QzExIC8qIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YS5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRl
eCBhYjc4Y2I5OGU3NmI1MTJjNTMwMDRjODlkMmViNjc5MzNmZGI4NjE1Li5jZTIwZDI1ZmJmMzI0
NzhhNzkxODY3YThiYmI1OTMxYTYxM2RjM2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTEwMjksOSArMTAyOSw4IEBAIHZvaWQgQVhP
YmplY3RDYWNoZTo6aGFuZGxlTGl2ZVJlZ2lvbkNyZWF0ZWQoTm9kZSogbm9kZSkKICAgICBFbGVt
ZW50KiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4obm9kZSk7CiAgICAgU3RyaW5nIGxpdmVS
ZWdpb25TdGF0dXMgPSBlbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFy
aWFfbGl2ZUF0dHIpOwogICAgIGlmIChsaXZlUmVnaW9uU3RhdHVzLmlzRW1wdHkoKSkgewotICAg
ICAgICBjb25zdCBBdG9tU3RyaW5nJiBhcmlhUm9sZSA9IGVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24ocm9sZUF0dHIpOwotICAgICAgICBpZiAoIWFyaWFSb2xlLmlzRW1w
dHkoKSkKLSAgICAgICAgICAgIGxpdmVSZWdpb25TdGF0dXMgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpkZWZhdWx0TGl2ZVJlZ2lvblN0YXR1c0ZvclJvbGUoQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJp
YVJvbGVUb1dlYkNvcmVSb2xlKGFyaWFSb2xlKSk7CisgICAgICAgIGlmIChhdXRvIHJvbGUgPSBh
Y2Nlc3NpYmlsaXR5Um9sZSgqZWxlbWVudCkpCisgICAgICAgICAgICBsaXZlUmVnaW9uU3RhdHVz
ID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGVmYXVsdExpdmVSZWdpb25TdGF0dXNGb3JSb2xlKCpy
b2xlKTsKICAgICB9CiAgICAgCiAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpdmVSZWdp
b25TdGF0dXNJc0VuYWJsZWQobGl2ZVJlZ2lvblN0YXR1cykpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcApp
bmRleCBiZjIwMTcxMjA2ZTdhYmZkMmRjZTRhZjI4YjBhYjY0ZWYyYmY2MmJhLi5mOTY3MTU0MmUy
Mzg5NGRhYWNjMDZlMmU5YzkxNjY3ZGViNGU3ZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAKQEAg
LTY4LDkgKzY4LDExIEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExp
bms6OnJvbGVWYWx1ZSgpIGNvbnN0CiAgICAgaWYgKCFtX2FyZWFFbGVtZW50KQogICAgICAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rOwogICAgIAotICAgIGNvbnN0IEF0
b21TdHJpbmcmIGFyaWFSb2xlID0gZ2V0QXR0cmlidXRlKHJvbGVBdHRyKTsKLSAgICBpZiAoIWFy
aWFSb2xlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFy
aWFSb2xlVG9XZWJDb3JlUm9sZShhcmlhUm9sZSk7CisgICAgaWYgKCFlbGVtZW50KCkpCisgICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbms7CisKKyAgICBpZiAoYXV0
byByb2xlID0gYWNjZXNzaWJpbGl0eVJvbGUoKmVsZW1lbnQoKSkpCisgICAgICAgIHJldHVybiAq
cm9sZTsKIAogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbms7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3QuY3BwCmluZGV4IDlmYjgzZjI0OWVlYjA0NDdmN2MyMDhkMDNjYWUxN2U5MThmMjlk
N2MuLjM2NzcyMDI2N2UyNjc0MGJiMDMzZTJiNGEwODE5NThmY2Q3YmZiYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3QuY3BwCkBAIC0yMjA1LDExICsyMjA1LDEzIEBAIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OmNhblNldFZhbHVlQXR0cmlidXRlKCkgY29uc3QKIAogQWNjZXNzaWJpbGl0eVJvbGUgQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlKCkgY29uc3QK
IHsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBhcmlhUm9sZSA9IGdldEF0dHJpYnV0ZShyb2xlQXR0
cik7Ci0gICAgaWYgKGFyaWFSb2xlLmlzTnVsbCgpIHx8IGFyaWFSb2xlLmlzRW1wdHkoKSkKKyAg
ICBSZWZQdHIgZWxlbWVudCA9IHRoaXMtPmVsZW1lbnQoKTsKKyAgICBpZiAoIWVsZW1lbnQpCisg
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsKKworICAgIGF1dG8gcm9s
ZSA9IGFjY2Vzc2liaWxpdHlSb2xlKCplbGVtZW50KTsKKyAgICBpZiAoIXJvbGUpCiAgICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsKLSAgICAKLSAgICBBY2Nlc3NpYmls
aXR5Um9sZSByb2xlID0gYXJpYVJvbGVUb1dlYkNvcmVSb2xlKGFyaWFSb2xlKTsKIAogICAgIC8v
IEFSSUEgc3RhdGVzIGlmIGFuIGl0ZW0gY2FuIGdldCBmb2N1cywgaXQgc2hvdWxkIG5vdCBiZSBw
cmVzZW50YXRpb25hbC4KICAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlc2Vu
dGF0aW9uYWwgJiYgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSkKQEAgLTIyMjEsNyArMjIyMyw3IEBA
IEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpkZXRlcm1pbmVBcmlh
Um9sZUF0dHJpYnV0ZSgpIGNvbnN0CiAgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6
OlRleHRBcmVhICYmICFhcmlhSXNNdWx0aWxpbmUoKSkKICAgICAgICAgcm9sZSA9IEFjY2Vzc2li
aWxpdHlSb2xlOjpUZXh0RmllbGQ7CiAKLSAgICByb2xlID0gcmVtYXBBcmlhUm9sZUR1ZVRvUGFy
ZW50KHJvbGUpOworICAgIHJvbGUgPSByZW1hcEFyaWFSb2xlRHVlVG9QYXJlbnQoKnJvbGUpOwog
ICAgIAogICAgIC8vIFByZXNlbnRhdGlvbmFsIHJvbGVzIGFyZSBpbnZhbGlkYXRlZCBieSB0aGUg
cHJlc2VuY2Ugb2YgQVJJQSBhdHRyaWJ1dGVzLgogICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpQcmVzZW50YXRpb25hbCAmJiBzdXBwb3J0c0FSSUFBdHRyaWJ1dGVzKCkpCkBAIC0y
MjM0LDggKzIyMzYsOSBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6ZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKSBjb25zdAogICAgIGlmIChyb2xlID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1JlZ2lvbiAmJiAhaGFzQXR0cmlidXRlKGFyaWFfbGFi
ZWxBdHRyKSAmJiAhaGFzQXR0cmlidXRlKGFyaWFfbGFiZWxsZWRieUF0dHIpKQogICAgICAgICBy
b2xlID0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247CiAKLSAgICBpZiAoc3RhdGljX2Nhc3Q8
aW50Pihyb2xlKSkKLSAgICAgICAgcmV0dXJuIHJvbGU7CisgICAgLy8gRklYTUU6IFRoaXMgc2Vl
bXMgbGlrZSBpdCBkZXBlbmRzIG9uIHVuZGVmaW5lZCBiZWhhdmlvciwgc2luY2UgMCBpcyBub3Qg
YSB2YWxpZCBBY2Nlc3NpYmlsaXR5Um9sZSBlbnVtIHZhbHVlLgorICAgIGlmIChzdGF0aWNfY2Fz
dDxpbnQ+KCpyb2xlKSkKKyAgICAgICAgcmV0dXJuICpyb2xlOwogCiAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlSb2xlOjpVbmtub3duOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggMWRjY2Q4NmFiYTIzOWNkOTNk
MTAyZTBmYjQ5MjYyNmU1ZmI0OWViNi4uODJiZThmMmRhMjM2OGZhMGYzODlkMDBmNmJhNDI5OTcx
YTBiYjRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiRWRpdGluZy5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgorI2lu
Y2x1ZGUgIkVsZW1lbnRBY2Nlc3NpYmlsaXR5LmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudERpc3BhdGNoZXIuaCIKQEAg
LTIyNTksMTk0ICsyMjYwLDEzIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmZpcnN0QW5vbnltb3VzQmxvY2tDaGlsZCgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLXVzaW5nIEFSSUFSb2xlTWFwID0gSGFzaE1hcDxTdHJpbmcsIEFjY2Vzc2liaWxp
dHlSb2xlLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+OwotdXNpbmcgQVJJQVJldmVyc2VSb2xl
TWFwID0gSGFzaE1hcDxBY2Nlc3NpYmlsaXR5Um9sZSwgU3RyaW5nLCBEZWZhdWx0SGFzaDxpbnQ+
LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPGludD4+OwotCi1zdGF0aWMgQVJJ
QVJvbGVNYXAqIGdBcmlhUm9sZU1hcCA9IG51bGxwdHI7Ci1zdGF0aWMgQVJJQVJldmVyc2VSb2xl
TWFwKiBnQXJpYVJldmVyc2VSb2xlTWFwID0gbnVsbHB0cjsKLQotc3RydWN0IFJvbGVFbnRyeSB7
Ci0gICAgU3RyaW5nIGFyaWFSb2xlOwotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHdlYmNvcmVSb2xl
OwotfTsKLQotc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVJvbGVNYXAoKQotewotICAgIGlmIChnQXJp
YVJvbGVNYXApCi0gICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQoIWdBcmlhUmV2ZXJzZVJvbGVN
YXApOwotCi0gICAgY29uc3QgUm9sZUVudHJ5IHJvbGVzW10gPSB7Ci0gICAgICAgIHsgImFsZXJ0
Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25BbGVydCB9LAotICAgICAgICB7ICJh
bGVydGRpYWxvZyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnREaWFsb2cg
fSwKLSAgICAgICAgeyAiYXBwbGljYXRpb24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcHBs
aWNhdGlvbiB9LAotICAgICAgICB7ICJhcnRpY2xlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9j
dW1lbnRBcnRpY2xlIH0sCi0gICAgICAgIHsgImJhbm5lciJfcywgQWNjZXNzaWJpbGl0eVJvbGU6
OkxhbmRtYXJrQmFubmVyIH0sCi0gICAgICAgIHsgImJsb2NrcXVvdGUiX3MsIEFjY2Vzc2liaWxp
dHlSb2xlOjpCbG9ja3F1b3RlIH0sCi0gICAgICAgIHsgImJ1dHRvbiJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6OkJ1dHRvbiB9LAotICAgICAgICB7ICJjYXB0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6Q2FwdGlvbiB9LAotICAgICAgICB7ICJjaGVja2JveCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6
OkNoZWNrQm94IH0sCi0gICAgICAgIHsgImNvbXBsZW1lbnRhcnkiX3MsIEFjY2Vzc2liaWxpdHlS
b2xlOjpMYW5kbWFya0NvbXBsZW1lbnRhcnkgfSwKLSAgICAgICAgeyAiY29udGVudGluZm8iX3Ms
IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0NvbnRlbnRJbmZvIH0sCi0gICAgICAgIHsgImRl
bGV0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVsZXRpb24gfSwKLSAgICAgICAgeyAiZGlh
bG9nIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25EaWFsb2cgfSwKLSAgICAgICAg
eyAiZGlyZWN0b3J5Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RGlyZWN0b3J5IH0sCi0gICAgICAg
IC8vIFRoZSAnZG9jLSonIHJvbGVzIGFyZSBkZWZpbmVkIHRoZSBBUklBIERQVUIgbW9iaWxlOiBo
dHRwczovL3d3dy53My5vcmcvVFIvZHB1Yi1hYW0tMS4wCi0gICAgICAgIC8vIEVkaXRvcidzIGRy
YWZ0IGlzIGN1cnJlbnRseSBhdCBodHRwczovL3czYy5naXRodWIuaW8vZHB1Yi1hYW0KLSAgICAg
ICAgeyAiZG9jLWFic3RyYWN0Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0
R3JvdXAgfSwKLSAgICAgICAgeyAiZG9jLWFja25vd2xlZGdtZW50cyJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCi0gICAgICAgIHsgImRvYy1hZnRlcndvcmQiX3Ms
IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAotICAgICAgICB7ICJkb2Mt
YXBwZW5kaXgiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAotICAg
ICAgICB7ICJkb2MtYmFja2xpbmsiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3JlTGluayB9
LAotICAgICAgICB7ICJkb2MtYmlibGlvZW50cnkiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0
SXRlbSB9LAotICAgICAgICB7ICJkb2MtYmlibGlvZ3JhcGh5Il9zLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKLSAgICAgICAgeyAiZG9jLWJpYmxpb3JlZiJfcywgQWNj
ZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rIH0sCi0gICAgICAgIHsgImRvYy1jaGFwdGVyIl9z
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKLSAgICAgICAgeyAiZG9j
LWNvbG9waG9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAgfSwK
LSAgICAgICAgeyAiZG9jLWNvbmNsdXNpb24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFy
a0RvY1JlZ2lvbiB9LAotICAgICAgICB7ICJkb2MtY292ZXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xl
OjpJbWFnZSB9LAotICAgICAgICB7ICJkb2MtY3JlZGl0Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
QXBwbGljYXRpb25UZXh0R3JvdXAgfSwKLSAgICAgICAgeyAiZG9jLWNyZWRpdHMiX3MsIEFjY2Vz
c2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAotICAgICAgICB7ICJkb2MtZGVkaWNh
dGlvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0sCi0gICAg
ICAgIHsgImRvYy1lbmRub3RlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW0gfSwKLSAg
ICAgICAgeyAiZG9jLWVuZG5vdGVzIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NS
ZWdpb24gfSwKLSAgICAgICAgeyAiZG9jLWVwaWdyYXBoIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
QXBwbGljYXRpb25UZXh0R3JvdXAgfSwKLSAgICAgICAgeyAiZG9jLWVwaWxvZ3VlIl9zLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKLSAgICAgICAgeyAiZG9jLWVycmF0
YSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCi0gICAgICAgIHsg
ImRvYy1leGFtcGxlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAg
fSwKLSAgICAgICAgeyAiZG9jLWZvb3Rub3RlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9vdG5v
dGUgfSwKLSAgICAgICAgeyAiZG9jLWZvcmV3b3JkIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFu
ZG1hcmtEb2NSZWdpb24gfSwKLSAgICAgICAgeyAiZG9jLWdsb3NzYXJ5Il9zLCBBY2Nlc3NpYmls
aXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKLSAgICAgICAgeyAiZG9jLWdsb3NzcmVmIl9z
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbmsgfSwKLSAgICAgICAgeyAiZG9jLWluZGV4
Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0aW9uIH0sCi0gICAgICAgIHsg
ImRvYy1pbnRyb2R1Y3Rpb24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lv
biB9LAotICAgICAgICB7ICJkb2Mtbm90ZXJlZiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNv
cmVMaW5rIH0sCi0gICAgICAgIHsgImRvYy1ub3RpY2UiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpE
b2N1bWVudE5vdGUgfSwKLSAgICAgICAgeyAiZG9jLXBhZ2VicmVhayJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6OlNwbGl0dGVyIH0sCi0gICAgICAgIHsgImRvYy1wYWdlbGlzdCJfcywgQWNjZXNzaWJp
bGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbiB9LAotICAgICAgICB7ICJkb2MtcGFydCJfcywg
QWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCi0gICAgICAgIHsgImRvYy1w
cmVmYWNlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKLSAgICAg
ICAgeyAiZG9jLXByb2xvZ3VlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdp
b24gfSwKLSAgICAgICAgeyAiZG9jLXB1bGxxdW90ZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFw
cGxpY2F0aW9uVGV4dEdyb3VwIH0sCi0gICAgICAgIHsgImRvYy1xbmEiX3MsIEFjY2Vzc2liaWxp
dHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB9LAotICAgICAgICB7ICJkb2Mtc3VidGl0bGUi
X3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nIH0sCi0gICAgICAgIHsgImRvYy10aXAiX3Ms
IEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE5vdGUgfSwKLSAgICAgICAgeyAiZG9jLXRvYyJf
cywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbiB9LAotICAgICAgICB7ICJm
aWd1cmUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpGaWd1cmUgfSwKLSAgICAgICAgLy8gVGhlIG1h
cHBpbmdzIGZvciAnZ3JhcGhpY3MtKicgcm9sZXMgYXJlIGRlZmluZWQgaW4gdGhpcyBzcGVjOiBo
dHRwczovL3czYy5naXRodWIuaW8vZ3JhcGhpY3MtYWFtLwotICAgICAgICB7ICJncmFwaGljcy1k
b2N1bWVudCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkdyYXBoaWNzRG9jdW1lbnQgfSwKLSAgICAg
ICAgeyAiZ3JhcGhpY3Mtb2JqZWN0Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JhcGhpY3NPYmpl
Y3QgfSwKLSAgICAgICAgeyAiZ3JhcGhpY3Mtc3ltYm9sIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
R3JhcGhpY3NTeW1ib2wgfSwKLSAgICAgICAgeyAiZ3JpZCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6
OkdyaWQgfSwKLSAgICAgICAgeyAiZ3JpZGNlbGwiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlk
Q2VsbCB9LAotICAgICAgICB7ICJ0YWJsZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYmxlIH0s
Ci0gICAgICAgIHsgImNlbGwiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpDZWxsIH0sCi0gICAgICAg
IHsgImNvbHVtbmhlYWRlciJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbkhlYWRlciB9LAot
ICAgICAgICB7ICJjb21ib2JveCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkNvbWJvQm94IH0sCi0g
ICAgICAgIHsgImRlZmluaXRpb24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpEZWZpbml0aW9uIH0s
Ci0gICAgICAgIHsgImRvY3VtZW50Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnQgfSwK
LSAgICAgICAgeyAiZmVlZCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkZlZWQgfSwKLSAgICAgICAg
eyAiZm9ybSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkZvcm0gfSwKLSAgICAgICAgeyAicm93aGVh
ZGVyIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyIH0sCi0gICAgICAgIHsgImdyb3Vw
Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Hcm91cCB9LAotICAgICAgICB7ICJo
ZWFkaW5nIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZyB9LAotICAgICAgICAvLyBUaGUg
ImltYWdlIiByb2xlIGlzIHN5bm9ueW1vdXMgd2l0aCB0aGUgImltZyIgcm9sZS4gaHR0cHM6Ly93
M2MuZ2l0aHViLmlvL2FyaWEvI2ltYWdlCi0gICAgICAgIHsgImltYWdlIl9zLCBBY2Nlc3NpYmls
aXR5Um9sZTo6SW1hZ2UgfSwKLSAgICAgICAgeyAiaW1nIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
SW1hZ2UgfSwKLSAgICAgICAgeyAiaW5zZXJ0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6SW5z
ZXJ0aW9uIH0sCi0gICAgICAgIHsgImxpbmsiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3Jl
TGluayB9LAotICAgICAgICB7ICJsaXN0Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdCB9LAot
ICAgICAgICB7ICJsaXN0aXRlbSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtIH0sCi0g
ICAgICAgIHsgImxpc3Rib3giX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94IH0sCi0gICAg
ICAgIHsgImxvZyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTG9nIH0sCi0gICAg
ICAgIHsgIm1haW4iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya01haW4gfSwKLSAgICAg
ICAgeyAibWFycXVlZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTWFycXVlZSB9
LAotICAgICAgICB7ICJtYXRoIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnRNYXRoIH0s
Ci0gICAgICAgIHsgIm1lbnUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51IH0sCi0gICAgICAg
IHsgIm1lbnViYXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QmFyIH0sCi0gICAgICAgIHsg
Im1lbnVpdGVtIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW0gfSwKLSAgICAgICAgeyAi
bWVudWl0ZW1jaGVja2JveCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtQ2hlY2tib3gg
fSwKLSAgICAgICAgeyAibWVudWl0ZW1yYWRpbyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJ
dGVtUmFkaW8gfSwKLSAgICAgICAgeyAibWV0ZXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpNZXRl
ciB9LAotICAgICAgICB7ICJub25lIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlc2VudGF0aW9u
YWwgfSwKLSAgICAgICAgeyAibm90ZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50Tm90
ZSB9LAotICAgICAgICB7ICJuYXZpZ2F0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1h
cmtOYXZpZ2F0aW9uIH0sCi0gICAgICAgIHsgIm9wdGlvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6
Okxpc3RCb3hPcHRpb24gfSwKLSAgICAgICAgeyAicGFyYWdyYXBoIl9zLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6UGFyYWdyYXBoIH0sCi0gICAgICAgIHsgInByZXNlbnRhdGlvbiJfcywgQWNjZXNzaWJp
bGl0eVJvbGU6OlByZXNlbnRhdGlvbmFsIH0sCi0gICAgICAgIHsgInByb2dyZXNzYmFyIl9zLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6UHJvZ3Jlc3NJbmRpY2F0b3IgfSwKLSAgICAgICAgeyAicmFkaW8i
X3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbiB9LAotICAgICAgICB7ICJyYWRpb2dy
b3VwIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9Hcm91cCB9LAotICAgICAgICB7ICJyZWdp
b24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1JlZ2lvbiB9LAotICAgICAgICB7ICJy
b3ciX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpSb3cgfSwKLSAgICAgICAgeyAicm93Z3JvdXAiX3Ms
IEFjY2Vzc2liaWxpdHlSb2xlOjpSb3dHcm91cCB9LAotICAgICAgICB7ICJzY3JvbGxiYXIiX3Ms
IEFjY2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxCYXIgfSwKLSAgICAgICAgeyAic2VhcmNoIl9zLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtTZWFyY2ggfSwKLSAgICAgICAgeyAic2VhcmNoYm94
Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6U2VhcmNoRmllbGQgfSwKLSAgICAgICAgeyAic2VwYXJh
dG9yIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXIgfSwKLSAgICAgICAgeyAic2xpZGVy
Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyIH0sCi0gICAgICAgIHsgInNwaW5idXR0b24i
X3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uIH0sCi0gICAgICAgIHsgInN0YXR1cyJf
cywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uU3RhdHVzIH0sCi0gICAgICAgIHsgInN1
YnNjcmlwdCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlN1YnNjcmlwdCB9LAotICAgICAgICB7ICJz
dXBlcnNjcmlwdCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlN1cGVyc2NyaXB0IH0sCi0gICAgICAg
IHsgInN3aXRjaCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlN3aXRjaCB9LAotICAgICAgICB7ICJ0
YWIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWIgfSwKLSAgICAgICAgeyAidGFibGlzdCJfcywg
QWNjZXNzaWJpbGl0eVJvbGU6OlRhYkxpc3QgfSwKLSAgICAgICAgeyAidGFicGFuZWwiX3MsIEFj
Y2Vzc2liaWxpdHlSb2xlOjpUYWJQYW5lbCB9LAotICAgICAgICB7ICJ0ZXh0Il9zLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6U3RhdGljVGV4dCB9LAotICAgICAgICB7ICJ0ZXh0Ym94Il9zLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6VGV4dEFyZWEgfSwKLSAgICAgICAgeyAidGVybSJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6OlRlcm0gfSwKLSAgICAgICAgeyAidGltZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlRp
bWUgfSwKLSAgICAgICAgeyAidGltZXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlv
blRpbWVyIH0sCi0gICAgICAgIHsgInRvb2xiYXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpUb29s
YmFyIH0sCi0gICAgICAgIHsgInRvb2x0aXAiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpVc2VySW50
ZXJmYWNlVG9vbHRpcCB9LAotICAgICAgICB7ICJ0cmVlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
VHJlZSB9LAotICAgICAgICB7ICJ0cmVlZ3JpZCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVH
cmlkIH0sCi0gICAgICAgIHsgInRyZWVpdGVtIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0
ZW0gfQotICAgIH07Ci0KLSAgICBnQXJpYVJvbGVNYXAgPSBuZXcgQVJJQVJvbGVNYXA7Ci0gICAg
Z0FyaWFSZXZlcnNlUm9sZU1hcCA9IG5ldyBBUklBUmV2ZXJzZVJvbGVNYXA7Ci0gICAgc2l6ZV90
IHJvbGVMZW5ndGggPSBXVEZfQVJSQVlfTEVOR1RIKHJvbGVzKTsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHJvbGVMZW5ndGg7ICsraSkgewotICAgICAgICBnQXJpYVJvbGVNYXAtPnNldChy
b2xlc1tpXS5hcmlhUm9sZSwgcm9sZXNbaV0ud2ViY29yZVJvbGUpOwotICAgICAgICBnQXJpYVJl
dmVyc2VSb2xlTWFwLT5zZXQoc3RhdGljX2Nhc3Q8aW50Pihyb2xlc1tpXS53ZWJjb3JlUm9sZSks
IHJvbGVzW2ldLmFyaWFSb2xlKTsKLSAgICB9Ci0gICAgZ0FyaWFSZXZlcnNlUm9sZU1hcC0+c2V0
KHN0YXRpY19jYXN0PGludD4oQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlKSwgImltYWdlIl9zKTsK
LX0KLQotc3RhdGljIEFSSUFSb2xlTWFwJiBhcmlhUm9sZU1hcCgpCi17Ci0gICAgaW5pdGlhbGl6
ZVJvbGVNYXAoKTsKLSAgICByZXR1cm4gKmdBcmlhUm9sZU1hcDsKLX0KLQotc3RhdGljIEFSSUFS
ZXZlcnNlUm9sZU1hcCYgcmV2ZXJzZUFyaWFSb2xlTWFwKCkKLXsKLSAgICBpbml0aWFsaXplUm9s
ZU1hcCgpOwotICAgIHJldHVybiAqZ0FyaWFSZXZlcnNlUm9sZU1hcDsKLX0KLQotQWNjZXNzaWJp
bGl0eVJvbGUgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVJvbGVUb1dlYkNvcmVSb2xlKGNvbnN0
IFN0cmluZyYgdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlLmlzTnVsbCgpIHx8IHZhbHVlLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOwotCi0gICAg
Zm9yIChhdXRvIHJvbGVOYW1lIDogU3RyaW5nVmlldyh2YWx1ZSkuc3BsaXQoJyAnKSkgewotICAg
ICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gYXJpYVJvbGVNYXAoKS5nZXQ8QVNDSUlDYXNl
SW5zZW5zaXRpdmVTdHJpbmdWaWV3SGFzaFRyYW5zbGF0b3I+KHJvbGVOYW1lKTsKLSAgICAgICAg
aWYgKHN0YXRpY19jYXN0PGludD4ocm9sZSkpCi0gICAgICAgICAgICByZXR1cm4gcm9sZTsKLSAg
ICB9Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOwotfQotCiBTdHJpbmcg
QWNjZXNzaWJpbGl0eU9iamVjdDo6Y29tcHV0ZWRSb2xlU3RyaW5nKCkgY29uc3QKIHsKICAgICAv
LyBGSVhNRTogTmVlZCBhIGZldyBzcGVjaWFsIGNhc2VzIHRoYXQgYXJlbid0IGluIHRoZSBSb2xl
TWFwOiBvcHRpb24sIGV0Yy4gaHR0cDovL3dlYmtpdC5vcmcvYi8xMjgyOTYKICAgICBBY2Nlc3Np
YmlsaXR5Um9sZSByb2xlID0gcm9sZVZhbHVlKCk7CiAKICAgICBpZiAocm9sZSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6SW1hZ2UgJiYgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQotICAgICAgICBy
ZXR1cm4gcmV2ZXJzZUFyaWFSb2xlTWFwKCkuZ2V0KHN0YXRpY19jYXN0PGludD4oQWNjZXNzaWJp
bGl0eVJvbGU6OlByZXNlbnRhdGlvbmFsKSk7CisgICAgICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5
Um9sZVN0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlc2VudGF0aW9uYWwpOwogCiAgICAgLy8g
V2UgZG8gbm90IGNvbXB1dGUgYSByb2xlIHN0cmluZyBmb3IgZ2VuZXJpYyBibG9jayBlbGVtZW50
cyB3aXRoIHVzZXItYWdlbnQgYXNzaWduZWQgcm9sZXMuCiAgICAgaWYgKHJvbGUgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6Okdyb3VwIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRHcm91
cCkKQEAgLTI0NTYsMjQgKzIyNzYsMjQgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNv
bXB1dGVkUm9sZVN0cmluZygpIGNvbnN0CiAgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwCiAgICAgICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6OkZvb3Rub3RlCiAgICAgICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okdy
YXBoaWNzT2JqZWN0KQotICAgICAgICByZXR1cm4gcmV2ZXJzZUFyaWFSb2xlTWFwKCkuZ2V0KHN0
YXRpY19jYXN0PGludD4oQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uR3JvdXApKTsKKyAg
ICAgICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlSb2xlU3RyaW5nKEFjY2Vzc2liaWxpdHlSb2xlOjpB
cHBsaWNhdGlvbkdyb3VwKTsKIAogICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpH
cmFwaGljc0RvY3VtZW50KQotICAgICAgICByZXR1cm4gcmV2ZXJzZUFyaWFSb2xlTWFwKCkuZ2V0
KHN0YXRpY19jYXN0PGludD4oQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50KSk7CisgICAgICAg
IHJldHVybiBhY2Nlc3NpYmlsaXR5Um9sZVN0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1l
bnQpOwogCiAgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkdyYXBoaWNzU3ltYm9s
KQotICAgICAgICByZXR1cm4gcmV2ZXJzZUFyaWFSb2xlTWFwKCkuZ2V0KHN0YXRpY19jYXN0PGlu
dD4oQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlKSk7CisgICAgICAgIHJldHVybiBhY2Nlc3NpYmls
aXR5Um9sZVN0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2UpOwogCiAgICAgaWYgKHJvbGUg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6Okhvcml6b250YWxSdWxlKQotICAgICAgICByZXR1cm4gcmV2
ZXJzZUFyaWFSb2xlTWFwKCkuZ2V0KHN0YXRpY19jYXN0PGludD4oQWNjZXNzaWJpbGl0eVJvbGU6
OlNwbGl0dGVyKSk7CisgICAgICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5Um9sZVN0cmluZyhBY2Nl
c3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXIpOwogCiAgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6OlBvcFVwQnV0dG9uIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRvZ2dsZUJ1
dHRvbikKLSAgICAgICAgcmV0dXJuIHJldmVyc2VBcmlhUm9sZU1hcCgpLmdldChzdGF0aWNfY2Fz
dDxpbnQ+KEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b24pKTsKKyAgICAgICAgcmV0dXJuIGFjY2Vz
c2liaWxpdHlSb2xlU3RyaW5nKEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b24pOwogCiAgICAgaWYg
KHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uKQotICAgICAgICBy
ZXR1cm4gcmV2ZXJzZUFyaWFSb2xlTWFwKCkuZ2V0KHN0YXRpY19jYXN0PGludD4oQWNjZXNzaWJp
bGl0eVJvbGU6OkxhbmRtYXJrUmVnaW9uKSk7CisgICAgICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5
Um9sZVN0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtSZWdpb24pOwogCi0gICAgcmV0
dXJuIHJldmVyc2VBcmlhUm9sZU1hcCgpLmdldChzdGF0aWNfY2FzdDxpbnQ+KHJvbGUpKTsKKyAg
ICByZXR1cm4gYWNjZXNzaWJpbGl0eVJvbGVTdHJpbmcocm9sZSk7CiB9CiAKIGJvb2wgQWNjZXNz
aWJpbGl0eU9iamVjdDo6aGFzSGlnaGxpZ2h0aW5nKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggNjlkM2JjMzEz
MDE1MjNjYmFiMTdlMWVkOWQ0ZjEzMGFhODIzZjg4YS4uZDg0ZmFkNDEyNzRiMjg3YWFhOWU2NTdh
ZTdlNDBjMDdlNzNlZDI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTUzMyw3ICs1MzMsNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCgpIG92ZXJyaWRlIHsgfQogICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0QW5vbnltb3VzQmxvY2tDaGlsZCgpIGNvbnN0IG92ZXJy
aWRlOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEFjY2Vzc2liaWxpdHlSb2xlIGFyaWFS
b2xlVG9XZWJDb3JlUm9sZShjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICB2aXJ0dWFsIGNvbnN0IEF0
b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IGF0dHJpYnV0ZVZhbHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAppbmRleCBkM2JjZDA5MDQxZjAzYTJjMWY5
MzIzZTAyM2M3Y2YzY2IyYTk3OWU2Li4yMjlkMjY5ZjY3Y2RkMGQ3YjI3YTE0YWI1N2Q4M2MxNWFl
MmM5YjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE5LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAKIC8vIEZJWE1F
OiBTaG91bGQgcmVuYW1lIHRoaXMgZmlsZSBBWENvcmVPYmplY3QuaC4KIAorI2luY2x1ZGUgIkVs
ZW1lbnRBY2Nlc3NpYmlsaXR5LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNp
bmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUgIkxheW91dFJl
Y3QuaCIKQEAgLTExMCwxNjEgKzExMSw2IEBAIGVudW0gY2xhc3MgQVhBbmNlc3RvckZsYWcgOiB1
aW50OF90IHsKICAgICAvLyBCaXRzIDYgYW5kIDcgYXJlIGZyZWUuCiB9OwogCi1lbnVtIGNsYXNz
IEFjY2Vzc2liaWxpdHlSb2xlIHsKLSAgICBBbm5vdGF0aW9uID0gMSwKLSAgICBBcHBsaWNhdGlv
biwKLSAgICBBcHBsaWNhdGlvbkFsZXJ0LAotICAgIEFwcGxpY2F0aW9uQWxlcnREaWFsb2csCi0g
ICAgQXBwbGljYXRpb25EaWFsb2csCi0gICAgQXBwbGljYXRpb25Hcm91cCwKLSAgICBBcHBsaWNh
dGlvbkxvZywKLSAgICBBcHBsaWNhdGlvbk1hcnF1ZWUsCi0gICAgQXBwbGljYXRpb25TdGF0dXMs
Ci0gICAgQXBwbGljYXRpb25UZXh0R3JvdXAsCi0gICAgQXBwbGljYXRpb25UaW1lciwKLSAgICBB
dWRpbywKLSAgICBCbG9ja3F1b3RlLAotICAgIEJyb3dzZXIsCi0gICAgQnVzeUluZGljYXRvciwK
LSAgICBCdXR0b24sCi0gICAgQ2FudmFzLAotICAgIENhcHRpb24sCi0gICAgQ2VsbCwKLSAgICBD
aGVja0JveCwKLSAgICBDb2xvcldlbGwsCi0gICAgQ29sdW1uLAotICAgIENvbHVtbkhlYWRlciwK
LSAgICBDb21ib0JveCwKLSAgICBEZWZpbml0aW9uLAotICAgIERlbGV0aW9uLAotICAgIERlc2Ny
aXB0aW9uTGlzdCwKLSAgICBEZXNjcmlwdGlvbkxpc3REZXRhaWwsCi0gICAgRGVzY3JpcHRpb25M
aXN0VGVybSwKLSAgICBEZXRhaWxzLAotICAgIERpcmVjdG9yeSwKLSAgICBEaXNjbG9zdXJlVHJp
YW5nbGUsCi0gICAgRGl2LAotICAgIERvY3VtZW50LAotICAgIERvY3VtZW50QXJ0aWNsZSwKLSAg
ICBEb2N1bWVudE1hdGgsCi0gICAgRG9jdW1lbnROb3RlLAotICAgIERyYXdlciwKLSAgICBFZGl0
YWJsZVRleHQsCi0gICAgRmVlZCwKLSAgICBGaWd1cmUsCi0gICAgRm9vdGVyLAotICAgIEZvb3Ru
b3RlLAotICAgIEZvcm0sCi0gICAgR3JhcGhpY3NEb2N1bWVudCwKLSAgICBHcmFwaGljc09iamVj
dCwKLSAgICBHcmFwaGljc1N5bWJvbCwKLSAgICBHcmlkLAotICAgIEdyaWRDZWxsLAotICAgIEdy
b3VwLAotICAgIEdyb3dBcmVhLAotICAgIEhlYWRpbmcsCi0gICAgSGVscFRhZywKLSAgICBIb3Jp
em9udGFsUnVsZSwKLSAgICBJZ25vcmVkLAotICAgIElubGluZSwKLSAgICBJbWFnZSwKLSAgICBJ
bWFnZU1hcCwKLSAgICBJbWFnZU1hcExpbmssCi0gICAgSW5jcmVtZW50b3IsCi0gICAgSW5zZXJ0
aW9uLAotICAgIExhYmVsLAotICAgIExhbmRtYXJrQmFubmVyLAotICAgIExhbmRtYXJrQ29tcGxl
bWVudGFyeSwKLSAgICBMYW5kbWFya0NvbnRlbnRJbmZvLAotICAgIExhbmRtYXJrRG9jUmVnaW9u
LAotICAgIExhbmRtYXJrTWFpbiwKLSAgICBMYW5kbWFya05hdmlnYXRpb24sCi0gICAgTGFuZG1h
cmtSZWdpb24sCi0gICAgTGFuZG1hcmtTZWFyY2gsCi0gICAgTGVnZW5kLAotICAgIExpbmssCi0g
ICAgTGlzdCwKLSAgICBMaXN0Qm94LAotICAgIExpc3RCb3hPcHRpb24sCi0gICAgTGlzdEl0ZW0s
Ci0gICAgTGlzdE1hcmtlciwKLSAgICBNYXJrLAotICAgIE1hdGhFbGVtZW50LAotICAgIE1hdHRl
LAotICAgIE1lbnUsCi0gICAgTWVudUJhciwKLSAgICBNZW51QnV0dG9uLAotICAgIE1lbnVJdGVt
LAotICAgIE1lbnVJdGVtQ2hlY2tib3gsCi0gICAgTWVudUl0ZW1SYWRpbywKLSAgICBNZW51TGlz
dFBvcHVwLAotICAgIE1lbnVMaXN0T3B0aW9uLAotICAgIE1ldGVyLAotICAgIE1vZGVsLAotICAg
IE91dGxpbmUsCi0gICAgUGFyYWdyYXBoLAotICAgIFBvcFVwQnV0dG9uLAotICAgIFByZSwKLSAg
ICBQcmVzZW50YXRpb25hbCwKLSAgICBQcm9ncmVzc0luZGljYXRvciwKLSAgICBSYWRpb0J1dHRv
biwKLSAgICBSYWRpb0dyb3VwLAotICAgIFJvd0hlYWRlciwKLSAgICBSb3csCi0gICAgUm93R3Jv
dXAsCi0gICAgUnVieUJhc2UsCi0gICAgUnVieUJsb2NrLAotICAgIFJ1YnlJbmxpbmUsCi0gICAg
UnVieVJ1biwKLSAgICBSdWJ5VGV4dCwKLSAgICBSdWxlciwKLSAgICBSdWxlck1hcmtlciwKLSAg
ICBTY3JvbGxBcmVhLAotICAgIFNjcm9sbEJhciwKLSAgICBTZWFyY2hGaWVsZCwKLSAgICBTaGVl
dCwKLSAgICBTbGlkZXIsCi0gICAgU2xpZGVyVGh1bWIsCi0gICAgU3BpbkJ1dHRvbiwKLSAgICBT
cGluQnV0dG9uUGFydCwKLSAgICBTcGxpdEdyb3VwLAotICAgIFNwbGl0dGVyLAotICAgIFN0YXRp
Y1RleHQsCi0gICAgU3Vic2NyaXB0LAotICAgIFN1bW1hcnksCi0gICAgU3VwZXJzY3JpcHQsCi0g
ICAgU3dpdGNoLAotICAgIFN5c3RlbVdpZGUsCi0gICAgU1ZHUm9vdCwKLSAgICBTVkdUZXh0LAot
ICAgIFNWR1RTcGFuLAotICAgIFNWR1RleHRQYXRoLAotICAgIFRhYkdyb3VwLAotICAgIFRhYkxp
c3QsCi0gICAgVGFiUGFuZWwsCi0gICAgVGFiLAotICAgIFRhYmxlLAotICAgIFRhYmxlSGVhZGVy
Q29udGFpbmVyLAotICAgIFRlcm0sCi0gICAgVGV4dEFyZWEsCi0gICAgVGV4dEZpZWxkLAotICAg
IFRleHRHcm91cCwKLSAgICBUaW1lLAotICAgIFRyZWUsCi0gICAgVHJlZUdyaWQsCi0gICAgVHJl
ZUl0ZW0sCi0gICAgVG9nZ2xlQnV0dG9uLAotICAgIFRvb2xiYXIsCi0gICAgVW5rbm93biwKLSAg
ICBVc2VySW50ZXJmYWNlVG9vbHRpcCwKLSAgICBWYWx1ZUluZGljYXRvciwKLSAgICBWaWRlbywK
LSAgICBXZWJBcHBsaWNhdGlvbiwKLSAgICBXZWJBcmVhLAotICAgIFdlYkNvcmVMaW5rLAotICAg
IFdpbmRvdywKLX07Ci0KIHVzaW5nIEFjY2Vzc2liaWxpdHlSb2xlU2V0ID0gSGFzaFNldDxBY2Nl
c3NpYmlsaXR5Um9sZSwgSW50SGFzaDxBY2Nlc3NpYmlsaXR5Um9sZT4sIFdURjo6U3Ryb25nRW51
bUhhc2hUcmFpdHM8QWNjZXNzaWJpbGl0eVJvbGU+PjsKIAogQUxXQVlTX0lOTElORSBTdHJpbmcg
YWNjZXNzaWJpbGl0eVJvbGVUb1N0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSByb2xlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBY2Nlc3NpYmlsaXR5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50QWNjZXNzaWJpbGl0eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQ5ODBj
OGViZTMwYWJkNGQ3YzRhNDYzMzRmODM1ZGQ5YzVkMzM4MQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QWNjZXNzaWJpbGl0eS5jcHAKQEAgLTAsMCArMSwyMjkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRWxlbWVudEFj
Y2Vzc2liaWxpdHkuaCIKKworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50
SW5saW5lcy5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ1ZpZXcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBBUklBUm9sZU1h
cCA9IEhhc2hNYXA8U3RyaW5nLCBBY2Nlc3NpYmlsaXR5Um9sZSwgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPjsKK3N0YXRpYyBBUklBUm9sZU1hcCogZ0FyaWFSb2xlTWFwID0gbnVsbHB0cjsKKwor
Ly8gRklYTUU6IEluc3RlYWQgb2YgdXNpbmcgSGFzaE1hcCB0byBtYXAgQWNjZXNzaWJpbGl0eVJv
bGUgdG8gc3RyaW5nIGxpdGVyYWwsIHdlIHNob3VsZCBjb25zaWRlciB1c2luZyBhIGNvbnN0ZXhw
ciBoZWxwZXIKKy8vIGZ1bmN0aW9uIGluc3RlYWQgdGhhdCB0YWtlcyBhbiBBY2Nlc3NpYmlsaXR5
Um9sZSBhbmQgcmV0dXJucyBhbiBBU0NJSUxpdGVyYWwuIFdlIGNvdWxkIHRoZW4gY2hhbmdlIGFj
Y2Vzc2liaWxpdHlSb2xlU3RyaW5nKCkKKy8vIHRvIHJldHVybiBhbiBBU0NJSUxpdGVyYWwgaW5z
dGVhZCBvZiBhIFN0cmluZy4KK3VzaW5nIEFSSUFSZXZlcnNlUm9sZU1hcCA9IEhhc2hNYXA8QWNj
ZXNzaWJpbGl0eVJvbGUsIFN0cmluZywgRGVmYXVsdEhhc2g8aW50PiwgV1RGOjpVbnNpZ25lZFdp
dGhaZXJvS2V5SGFzaFRyYWl0czxpbnQ+PjsKK3N0YXRpYyBBUklBUmV2ZXJzZVJvbGVNYXAqIGdB
cmlhUmV2ZXJzZVJvbGVNYXAgPSBudWxscHRyOworCitzdGF0aWMgdm9pZCBpbml0aWFsaXplUm9s
ZU1hcCgpCit7CisgICAgaWYgKGdBcmlhUm9sZU1hcCkKKyAgICAgICAgcmV0dXJuOworICAgIEFT
U0VSVCghZ0FyaWFSZXZlcnNlUm9sZU1hcCk7CisKKyAgICBzdHJ1Y3QgUm9sZUVudHJ5IHsKKyAg
ICAgICAgQVNDSUlMaXRlcmFsIGFyaWFSb2xlOworICAgICAgICBBY2Nlc3NpYmlsaXR5Um9sZSB3
ZWJjb3JlUm9sZTsKKyAgICB9OworCisgICAgc3RhdGljIGNvbnN0ZXhwciBSb2xlRW50cnkgcm9s
ZXNbXSA9IHsKKyAgICAgICAgeyAiYWxlcnQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNh
dGlvbkFsZXJ0IH0sCisgICAgICAgIHsgImFsZXJ0ZGlhbG9nIl9zLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6QXBwbGljYXRpb25BbGVydERpYWxvZyB9LAorICAgICAgICB7ICJhcHBsaWNhdGlvbiJfcywg
QWNjZXNzaWJpbGl0eVJvbGU6OldlYkFwcGxpY2F0aW9uIH0sCisgICAgICAgIHsgImFydGljbGUi
X3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudEFydGljbGUgfSwKKyAgICAgICAgeyAiYmFu
bmVyIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtCYW5uZXIgfSwKKyAgICAgICAgeyAi
YmxvY2txdW90ZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkJsb2NrcXVvdGUgfSwKKyAgICAgICAg
eyAiYnV0dG9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uIH0sCisgICAgICAgIHsgImNh
cHRpb24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpDYXB0aW9uIH0sCisgICAgICAgIHsgImNoZWNr
Ym94Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2hlY2tCb3ggfSwKKyAgICAgICAgeyAiY29tcGxl
bWVudGFyeSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29tcGxlbWVudGFyeSB9LAor
ICAgICAgICB7ICJjb250ZW50aW5mbyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29u
dGVudEluZm8gfSwKKyAgICAgICAgeyAiZGVsZXRpb24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpE
ZWxldGlvbiB9LAorICAgICAgICB7ICJkaWFsb2ciX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBs
aWNhdGlvbkRpYWxvZyB9LAorICAgICAgICB7ICJkaXJlY3RvcnkiX3MsIEFjY2Vzc2liaWxpdHlS
b2xlOjpEaXJlY3RvcnkgfSwKKyAgICAgICAgLy8gVGhlICdkb2MtKicgcm9sZXMgYXJlIGRlZmlu
ZWQgdGhlIEFSSUEgRFBVQiBtb2JpbGU6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9kcHViLWFhbS0x
LjAKKyAgICAgICAgLy8gRWRpdG9yJ3MgZHJhZnQgaXMgY3VycmVudGx5IGF0IGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby9kcHViLWFhbQorICAgICAgICB7ICJkb2MtYWJzdHJhY3QiX3MsIEFjY2Vzc2li
aWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB9LAorICAgICAgICB7ICJkb2MtYWNrbm93
bGVkZ21lbnRzIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKKyAg
ICAgICAgeyAiZG9jLWFmdGVyd29yZCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9j
UmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1hcHBlbmRpeCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6
OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1iYWNrbGluayJfcywgQWNjZXNz
aWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rIH0sCisgICAgICAgIHsgImRvYy1iaWJsaW9lbnRyeSJf
cywgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtIH0sCisgICAgICAgIHsgImRvYy1iaWJsaW9n
cmFwaHkiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAg
ICB7ICJkb2MtYmlibGlvcmVmIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbmsgfSwK
KyAgICAgICAgeyAiZG9jLWNoYXB0ZXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0Rv
Y1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtY29sb3Bob24iX3MsIEFjY2Vzc2liaWxpdHlSb2xl
OjpBcHBsaWNhdGlvblRleHRHcm91cCB9LAorICAgICAgICB7ICJkb2MtY29uY2x1c2lvbiJfcywg
QWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1j
b3ZlciJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlIH0sCisgICAgICAgIHsgImRvYy1jcmVk
aXQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB9LAorICAgICAg
ICB7ICJkb2MtY3JlZGl0cyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9u
IH0sCisgICAgICAgIHsgImRvYy1kZWRpY2F0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBw
bGljYXRpb25UZXh0R3JvdXAgfSwKKyAgICAgICAgeyAiZG9jLWVuZG5vdGUiX3MsIEFjY2Vzc2li
aWxpdHlSb2xlOjpMaXN0SXRlbSB9LAorICAgICAgICB7ICJkb2MtZW5kbm90ZXMiX3MsIEFjY2Vz
c2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtZXBpZ3Jh
cGgiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB9LAorICAgICAg
ICB7ICJkb2MtZXBpbG9ndWUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lv
biB9LAorICAgICAgICB7ICJkb2MtZXJyYXRhIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1h
cmtEb2NSZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLWV4YW1wbGUiX3MsIEFjY2Vzc2liaWxpdHlS
b2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB9LAorICAgICAgICB7ICJkb2MtZm9vdG5vdGUiX3Ms
IEFjY2Vzc2liaWxpdHlSb2xlOjpGb290bm90ZSB9LAorICAgICAgICB7ICJkb2MtZm9yZXdvcmQi
X3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJk
b2MtZ2xvc3NhcnkiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAor
ICAgICAgICB7ICJkb2MtZ2xvc3NyZWYiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3JlTGlu
ayB9LAorICAgICAgICB7ICJkb2MtaW5kZXgiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFy
a05hdmlnYXRpb24gfSwKKyAgICAgICAgeyAiZG9jLWludHJvZHVjdGlvbiJfcywgQWNjZXNzaWJp
bGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1ub3RlcmVmIl9z
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbmsgfSwKKyAgICAgICAgeyAiZG9jLW5vdGlj
ZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50Tm90ZSB9LAorICAgICAgICB7ICJkb2Mt
cGFnZWJyZWFrIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXIgfSwKKyAgICAgICAgeyAi
ZG9jLXBhZ2VsaXN0Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0aW9uIH0s
CisgICAgICAgIHsgImRvYy1wYXJ0Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NS
ZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLXByZWZhY2UiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpM
YW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtcHJvbG9ndWUiX3MsIEFjY2Vzc2li
aWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtcHVsbHF1b3Rl
Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAgfSwKKyAgICAgICAg
eyAiZG9jLXFuYSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0s
CisgICAgICAgIHsgImRvYy1zdWJ0aXRsZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmcg
fSwKKyAgICAgICAgeyAiZG9jLXRpcCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50Tm90
ZSB9LAorICAgICAgICB7ICJkb2MtdG9jIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtO
YXZpZ2F0aW9uIH0sCisgICAgICAgIHsgImZpZ3VyZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkZp
Z3VyZSB9LAorICAgICAgICAvLyBUaGUgbWFwcGluZ3MgZm9yICdncmFwaGljcy0qJyByb2xlcyBh
cmUgZGVmaW5lZCBpbiB0aGlzIHNwZWM6IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9ncmFwaGljcy1h
YW0vCisgICAgICAgIHsgImdyYXBoaWNzLWRvY3VtZW50Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
R3JhcGhpY3NEb2N1bWVudCB9LAorICAgICAgICB7ICJncmFwaGljcy1vYmplY3QiX3MsIEFjY2Vz
c2liaWxpdHlSb2xlOjpHcmFwaGljc09iamVjdCB9LAorICAgICAgICB7ICJncmFwaGljcy1zeW1i
b2wiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpHcmFwaGljc1N5bWJvbCB9LAorICAgICAgICB7ICJn
cmlkIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZCB9LAorICAgICAgICB7ICJncmlkY2VsbCJf
cywgQWNjZXNzaWJpbGl0eVJvbGU6OkdyaWRDZWxsIH0sCisgICAgICAgIHsgInRhYmxlIl9zLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6VGFibGUgfSwKKyAgICAgICAgeyAiY2VsbCJfcywgQWNjZXNzaWJp
bGl0eVJvbGU6OkNlbGwgfSwKKyAgICAgICAgeyAiY29sdW1uaGVhZGVyIl9zLCBBY2Nlc3NpYmls
aXR5Um9sZTo6Q29sdW1uSGVhZGVyIH0sCisgICAgICAgIHsgImNvbWJvYm94Il9zLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6Q29tYm9Cb3ggfSwKKyAgICAgICAgeyAiZGVmaW5pdGlvbiJfcywgQWNjZXNz
aWJpbGl0eVJvbGU6OkRlZmluaXRpb24gfSwKKyAgICAgICAgeyAiZG9jdW1lbnQiX3MsIEFjY2Vz
c2liaWxpdHlSb2xlOjpEb2N1bWVudCB9LAorICAgICAgICB7ICJmZWVkIl9zLCBBY2Nlc3NpYmls
aXR5Um9sZTo6RmVlZCB9LAorICAgICAgICB7ICJmb3JtIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
Rm9ybSB9LAorICAgICAgICB7ICJyb3doZWFkZXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpSb3dI
ZWFkZXIgfSwKKyAgICAgICAgeyAiZ3JvdXAiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNh
dGlvbkdyb3VwIH0sCisgICAgICAgIHsgImhlYWRpbmciX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpI
ZWFkaW5nIH0sCisgICAgICAgIC8vIFRoZSAiaW1hZ2UiIHJvbGUgaXMgc3lub255bW91cyB3aXRo
IHRoZSAiaW1nIiByb2xlLiBodHRwczovL3czYy5naXRodWIuaW8vYXJpYS8jaW1hZ2UKKyAgICAg
ICAgeyAiaW1hZ2UiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZSB9LAorICAgICAgICB7ICJp
bWciX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZSB9LAorICAgICAgICB7ICJpbnNlcnRpb24i
X3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpJbnNlcnRpb24gfSwKKyAgICAgICAgeyAibGluayJfcywg
QWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rIH0sCisgICAgICAgIHsgImxpc3QiX3MsIEFj
Y2Vzc2liaWxpdHlSb2xlOjpMaXN0IH0sCisgICAgICAgIHsgImxpc3RpdGVtIl9zLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGlzdEl0ZW0gfSwKKyAgICAgICAgeyAibGlzdGJveCJfcywgQWNjZXNzaWJp
bGl0eVJvbGU6Okxpc3RCb3ggfSwKKyAgICAgICAgeyAibG9nIl9zLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6QXBwbGljYXRpb25Mb2cgfSwKKyAgICAgICAgeyAibWFpbiJfcywgQWNjZXNzaWJpbGl0eVJv
bGU6OkxhbmRtYXJrTWFpbiB9LAorICAgICAgICB7ICJtYXJxdWVlIl9zLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6QXBwbGljYXRpb25NYXJxdWVlIH0sCisgICAgICAgIHsgIm1hdGgiX3MsIEFjY2Vzc2li
aWxpdHlSb2xlOjpEb2N1bWVudE1hdGggfSwKKyAgICAgICAgeyAibWVudSJfcywgQWNjZXNzaWJp
bGl0eVJvbGU6Ok1lbnUgfSwKKyAgICAgICAgeyAibWVudWJhciJfcywgQWNjZXNzaWJpbGl0eVJv
bGU6Ok1lbnVCYXIgfSwKKyAgICAgICAgeyAibWVudWl0ZW0iX3MsIEFjY2Vzc2liaWxpdHlSb2xl
OjpNZW51SXRlbSB9LAorICAgICAgICB7ICJtZW51aXRlbWNoZWNrYm94Il9zLCBBY2Nlc3NpYmls
aXR5Um9sZTo6TWVudUl0ZW1DaGVja2JveCB9LAorICAgICAgICB7ICJtZW51aXRlbXJhZGlvIl9z
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRpbyB9LAorICAgICAgICB7ICJtZXRlciJf
cywgQWNjZXNzaWJpbGl0eVJvbGU6Ok1ldGVyIH0sCisgICAgICAgIHsgIm5vbmUiX3MsIEFjY2Vz
c2liaWxpdHlSb2xlOjpQcmVzZW50YXRpb25hbCB9LAorICAgICAgICB7ICJub3RlIl9zLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6RG9jdW1lbnROb3RlIH0sCisgICAgICAgIHsgIm5hdmlnYXRpb24iX3Ms
IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb24gfSwKKyAgICAgICAgeyAib3B0
aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveE9wdGlvbiB9LAorICAgICAgICB7ICJw
YXJhZ3JhcGgiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpQYXJhZ3JhcGggfSwKKyAgICAgICAgeyAi
cHJlc2VudGF0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlc2VudGF0aW9uYWwgfSwKKyAg
ICAgICAgeyAicHJvZ3Jlc3NiYXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpQcm9ncmVzc0luZGlj
YXRvciB9LAorICAgICAgICB7ICJyYWRpbyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0
dG9uIH0sCisgICAgICAgIHsgInJhZGlvZ3JvdXAiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRp
b0dyb3VwIH0sCisgICAgICAgIHsgInJlZ2lvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRt
YXJrUmVnaW9uIH0sCisgICAgICAgIHsgInJvdyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlJvdyB9
LAorICAgICAgICB7ICJyb3dncm91cCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0dyb3VwIH0s
CisgICAgICAgIHsgInNjcm9sbGJhciJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEJhciB9
LAorICAgICAgICB7ICJzZWFyY2giX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1NlYXJj
aCB9LAorICAgICAgICB7ICJzZWFyY2hib3giX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpTZWFyY2hG
aWVsZCB9LAorICAgICAgICB7ICJzZXBhcmF0b3IiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpTcGxp
dHRlciB9LAorICAgICAgICB7ICJzbGlkZXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXIg
fSwKKyAgICAgICAgeyAic3BpbmJ1dHRvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0
b24gfSwKKyAgICAgICAgeyAic3RhdHVzIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRp
b25TdGF0dXMgfSwKKyAgICAgICAgeyAic3Vic2NyaXB0Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
U3Vic2NyaXB0IH0sCisgICAgICAgIHsgInN1cGVyc2NyaXB0Il9zLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U3VwZXJzY3JpcHQgfSwKKyAgICAgICAgeyAic3dpdGNoIl9zLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U3dpdGNoIH0sCisgICAgICAgIHsgInRhYiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYiB9
LAorICAgICAgICB7ICJ0YWJsaXN0Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiTGlzdCB9LAor
ICAgICAgICB7ICJ0YWJwYW5lbCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYlBhbmVsIH0sCisg
ICAgICAgIHsgInRleHQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0IH0sCisgICAg
ICAgIHsgInRleHRib3giX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0QXJlYSB9LAorICAgICAg
ICB7ICJ0ZXJtIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VGVybSB9LAorICAgICAgICB7ICJ0aW1l
Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VGltZSB9LAorICAgICAgICB7ICJ0aW1lciJfcywgQWNj
ZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGltZXIgfSwKKyAgICAgICAgeyAidG9vbGJhciJf
cywgQWNjZXNzaWJpbGl0eVJvbGU6OlRvb2xiYXIgfSwKKyAgICAgICAgeyAidG9vbHRpcCJfcywg
QWNjZXNzaWJpbGl0eVJvbGU6OlVzZXJJbnRlcmZhY2VUb29sdGlwIH0sCisgICAgICAgIHsgInRy
ZWUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlIH0sCisgICAgICAgIHsgInRyZWVncmlkIl9z
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUdyaWQgfSwKKyAgICAgICAgeyAidHJlZWl0ZW0iX3Ms
IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbSB9CisgICAgfTsKKworICAgIGdBcmlhUm9sZU1h
cCA9IG5ldyBBUklBUm9sZU1hcDsKKyAgICBnQXJpYVJldmVyc2VSb2xlTWFwID0gbmV3IEFSSUFS
ZXZlcnNlUm9sZU1hcDsKKyAgICBzaXplX3Qgcm9sZUxlbmd0aCA9IFdURl9BUlJBWV9MRU5HVEgo
cm9sZXMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9sZUxlbmd0aDsgKytpKSB7Cisg
ICAgICAgIGdBcmlhUm9sZU1hcC0+c2V0KHJvbGVzW2ldLmFyaWFSb2xlLCByb2xlc1tpXS53ZWJj
b3JlUm9sZSk7CisgICAgICAgIGdBcmlhUmV2ZXJzZVJvbGVNYXAtPnNldChzdGF0aWNfY2FzdDxp
bnQ+KHJvbGVzW2ldLndlYmNvcmVSb2xlKSwgcm9sZXNbaV0uYXJpYVJvbGUpOworICAgIH0KKyAg
ICBnQXJpYVJldmVyc2VSb2xlTWFwLT5zZXQoc3RhdGljX2Nhc3Q8aW50PihBY2Nlc3NpYmlsaXR5
Um9sZTo6SW1hZ2UpLCAiaW1hZ2UiX3MpOworfQorCitzdGF0aWMgQVJJQVJvbGVNYXAmIGFyaWFS
b2xlTWFwKCkKK3sKKyAgICBpbml0aWFsaXplUm9sZU1hcCgpOworICAgIHJldHVybiAqZ0FyaWFS
b2xlTWFwOworfQorCitzdGF0aWMgQVJJQVJldmVyc2VSb2xlTWFwJiByZXZlcnNlQXJpYVJvbGVN
YXAoKQoreworICAgIGluaXRpYWxpemVSb2xlTWFwKCk7CisgICAgcmV0dXJuICpnQXJpYVJldmVy
c2VSb2xlTWFwOworfQorCitTdHJpbmcgYWNjZXNzaWJpbGl0eVJvbGVTdHJpbmcoQWNjZXNzaWJp
bGl0eVJvbGUgcm9sZSkKK3sKKyAgICByZXR1cm4gcmV2ZXJzZUFyaWFSb2xlTWFwKCkuZ2V0KHN0
YXRpY19jYXN0PGludD4ocm9sZSkpOworfQorCitzdGQ6Om9wdGlvbmFsPEFjY2Vzc2liaWxpdHlS
b2xlPiBhY2Nlc3NpYmlsaXR5Um9sZShjb25zdCBFbGVtZW50JiBlbGVtZW50KQoreworICAgIGF1
dG8mIHZhbHVlID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxO
YW1lczo6cm9sZUF0dHIpOworICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICBmb3IgKGF1dG8gcm9sZU5hbWUgOiBTdHJpbmdWaWV3KHZh
bHVlKS5zcGxpdCgnICcpKSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNlZW1zIGxpa2UgaXQg
ZGVwZW5kcyBvbiB1bmRlZmluZWQgYmVoYXZpb3IsIHNpbmNlIDAgaXMgbm90IGEgdmFsaWQgZW51
bSB2YWx1ZSBmb3IgQWNjZXNzaWJpbGl0eVJvbGUuCisgICAgICAgIGlmIChhdXRvIHJvbGUgPSBh
cmlhUm9sZU1hcCgpLmdldDxBU0NJSUNhc2VJbnNlbnNpdGl2ZVN0cmluZ1ZpZXdIYXNoVHJhbnNs
YXRvcj4ocm9sZU5hbWUpOyBzdGF0aWNfY2FzdDxpbnQ+KHJvbGUpKQorICAgICAgICAgICAgcmV0
dXJuIHJvbGU7CisgICAgfQorCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3du
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudEFjY2Vzc2liaWxpdHkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
QWNjZXNzaWJpbGl0eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmYzdlZTgyNGI2N2NkZWUxMGE5NzViYzMxZDE4
ZWUyYmZkZmY1ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dEFjY2Vzc2liaWxpdHkuaApAQCAtMCwwICsxLDE5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgRWxlbWVudDsKKworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5Um9sZSA6
IHVpbnQ4X3QgeworICAgIEFubm90YXRpb24gPSAxLAorICAgIEFwcGxpY2F0aW9uLAorICAgIEFw
cGxpY2F0aW9uQWxlcnQsCisgICAgQXBwbGljYXRpb25BbGVydERpYWxvZywKKyAgICBBcHBsaWNh
dGlvbkRpYWxvZywKKyAgICBBcHBsaWNhdGlvbkdyb3VwLAorICAgIEFwcGxpY2F0aW9uTG9nLAor
ICAgIEFwcGxpY2F0aW9uTWFycXVlZSwKKyAgICBBcHBsaWNhdGlvblN0YXR1cywKKyAgICBBcHBs
aWNhdGlvblRleHRHcm91cCwKKyAgICBBcHBsaWNhdGlvblRpbWVyLAorICAgIEF1ZGlvLAorICAg
IEJsb2NrcXVvdGUsCisgICAgQnJvd3NlciwKKyAgICBCdXN5SW5kaWNhdG9yLAorICAgIEJ1dHRv
biwKKyAgICBDYW52YXMsCisgICAgQ2FwdGlvbiwKKyAgICBDZWxsLAorICAgIENoZWNrQm94LAor
ICAgIENvbG9yV2VsbCwKKyAgICBDb2x1bW4sCisgICAgQ29sdW1uSGVhZGVyLAorICAgIENvbWJv
Qm94LAorICAgIERlZmluaXRpb24sCisgICAgRGVsZXRpb24sCisgICAgRGVzY3JpcHRpb25MaXN0
LAorICAgIERlc2NyaXB0aW9uTGlzdERldGFpbCwKKyAgICBEZXNjcmlwdGlvbkxpc3RUZXJtLAor
ICAgIERldGFpbHMsCisgICAgRGlyZWN0b3J5LAorICAgIERpc2Nsb3N1cmVUcmlhbmdsZSwKKyAg
ICBEaXYsCisgICAgRG9jdW1lbnQsCisgICAgRG9jdW1lbnRBcnRpY2xlLAorICAgIERvY3VtZW50
TWF0aCwKKyAgICBEb2N1bWVudE5vdGUsCisgICAgRHJhd2VyLAorICAgIEVkaXRhYmxlVGV4dCwK
KyAgICBGZWVkLAorICAgIEZpZ3VyZSwKKyAgICBGb290ZXIsCisgICAgRm9vdG5vdGUsCisgICAg
Rm9ybSwKKyAgICBHcmFwaGljc0RvY3VtZW50LAorICAgIEdyYXBoaWNzT2JqZWN0LAorICAgIEdy
YXBoaWNzU3ltYm9sLAorICAgIEdyaWQsCisgICAgR3JpZENlbGwsCisgICAgR3JvdXAsCisgICAg
R3Jvd0FyZWEsCisgICAgSGVhZGluZywKKyAgICBIZWxwVGFnLAorICAgIEhvcml6b250YWxSdWxl
LAorICAgIElnbm9yZWQsCisgICAgSW5saW5lLAorICAgIEltYWdlLAorICAgIEltYWdlTWFwLAor
ICAgIEltYWdlTWFwTGluaywKKyAgICBJbmNyZW1lbnRvciwKKyAgICBJbnNlcnRpb24sCisgICAg
TGFiZWwsCisgICAgTGFuZG1hcmtCYW5uZXIsCisgICAgTGFuZG1hcmtDb21wbGVtZW50YXJ5LAor
ICAgIExhbmRtYXJrQ29udGVudEluZm8sCisgICAgTGFuZG1hcmtEb2NSZWdpb24sCisgICAgTGFu
ZG1hcmtNYWluLAorICAgIExhbmRtYXJrTmF2aWdhdGlvbiwKKyAgICBMYW5kbWFya1JlZ2lvbiwK
KyAgICBMYW5kbWFya1NlYXJjaCwKKyAgICBMZWdlbmQsCisgICAgTGluaywKKyAgICBMaXN0LAor
ICAgIExpc3RCb3gsCisgICAgTGlzdEJveE9wdGlvbiwKKyAgICBMaXN0SXRlbSwKKyAgICBMaXN0
TWFya2VyLAorICAgIE1hcmssCisgICAgTWF0aEVsZW1lbnQsCisgICAgTWF0dGUsCisgICAgTWVu
dSwKKyAgICBNZW51QmFyLAorICAgIE1lbnVCdXR0b24sCisgICAgTWVudUl0ZW0sCisgICAgTWVu
dUl0ZW1DaGVja2JveCwKKyAgICBNZW51SXRlbVJhZGlvLAorICAgIE1lbnVMaXN0UG9wdXAsCisg
ICAgTWVudUxpc3RPcHRpb24sCisgICAgTWV0ZXIsCisgICAgTW9kZWwsCisgICAgT3V0bGluZSwK
KyAgICBQYXJhZ3JhcGgsCisgICAgUG9wVXBCdXR0b24sCisgICAgUHJlLAorICAgIFByZXNlbnRh
dGlvbmFsLAorICAgIFByb2dyZXNzSW5kaWNhdG9yLAorICAgIFJhZGlvQnV0dG9uLAorICAgIFJh
ZGlvR3JvdXAsCisgICAgUm93SGVhZGVyLAorICAgIFJvdywKKyAgICBSb3dHcm91cCwKKyAgICBS
dWJ5QmFzZSwKKyAgICBSdWJ5QmxvY2ssCisgICAgUnVieUlubGluZSwKKyAgICBSdWJ5UnVuLAor
ICAgIFJ1YnlUZXh0LAorICAgIFJ1bGVyLAorICAgIFJ1bGVyTWFya2VyLAorICAgIFNjcm9sbEFy
ZWEsCisgICAgU2Nyb2xsQmFyLAorICAgIFNlYXJjaEZpZWxkLAorICAgIFNoZWV0LAorICAgIFNs
aWRlciwKKyAgICBTbGlkZXJUaHVtYiwKKyAgICBTcGluQnV0dG9uLAorICAgIFNwaW5CdXR0b25Q
YXJ0LAorICAgIFNwbGl0R3JvdXAsCisgICAgU3BsaXR0ZXIsCisgICAgU3RhdGljVGV4dCwKKyAg
ICBTdWJzY3JpcHQsCisgICAgU3VtbWFyeSwKKyAgICBTdXBlcnNjcmlwdCwKKyAgICBTd2l0Y2gs
CisgICAgU3lzdGVtV2lkZSwKKyAgICBTVkdSb290LAorICAgIFNWR1RleHQsCisgICAgU1ZHVFNw
YW4sCisgICAgU1ZHVGV4dFBhdGgsCisgICAgVGFiR3JvdXAsCisgICAgVGFiTGlzdCwKKyAgICBU
YWJQYW5lbCwKKyAgICBUYWIsCisgICAgVGFibGUsCisgICAgVGFibGVIZWFkZXJDb250YWluZXIs
CisgICAgVGVybSwKKyAgICBUZXh0QXJlYSwKKyAgICBUZXh0RmllbGQsCisgICAgVGV4dEdyb3Vw
LAorICAgIFRpbWUsCisgICAgVHJlZSwKKyAgICBUcmVlR3JpZCwKKyAgICBUcmVlSXRlbSwKKyAg
ICBUb2dnbGVCdXR0b24sCisgICAgVG9vbGJhciwKKyAgICBVbmtub3duLAorICAgIFVzZXJJbnRl
cmZhY2VUb29sdGlwLAorICAgIFZhbHVlSW5kaWNhdG9yLAorICAgIFZpZGVvLAorICAgIFdlYkFw
cGxpY2F0aW9uLAorICAgIFdlYkFyZWEsCisgICAgV2ViQ29yZUxpbmssCisgICAgV2luZG93LAor
fTsKKworU3RyaW5nIGFjY2Vzc2liaWxpdHlSb2xlU3RyaW5nKEFjY2Vzc2liaWxpdHlSb2xlKTsK
KworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxBY2Nlc3NpYmlsaXR5Um9sZT4gYWNjZXNz
aWJpbGl0eVJvbGUoY29uc3QgRWxlbWVudCYpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xs
ZXIuY3BwCmluZGV4IDQ3NDI5ZDU5MTdhMjNhMmVkYWUxNmQwZjc3Zjk0MTJjYThmNTZhMGUuLjky
NjNkZjUyOGNmZGE0MDFmZmMyNzhlMGJmOTdhZDdhOTFhNmY5MWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2luY2x1ZGUg
IkNoYXJhY3RlckRhdGEuaCIKICNpbmNsdWRlICJFZGl0aW5nLmgiCisjaW5jbHVkZSAiRWxlbWVu
dEFjY2Vzc2liaWxpdHkuaCIKICNpbmNsdWRlICJFbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oIgog
I2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgpAQCAtMzE1LDEx
ICszMTYsNyBAQCBzdGF0aWMgYm9vbCBpc0VuY2xvc2luZ0l0ZW1Cb3VuZGFyeUVsZW1lbnQoY29u
c3QgRWxlbWVudCYgZWxlbWVudCkKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBhdXRvIHJvbGUgPSBbXShjb25zdCBFbGVtZW50JiBlbGVtZW50KSAtPiBB
Y2Nlc3NpYmlsaXR5Um9sZSB7Ci0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojph
cmlhUm9sZVRvV2ViQ29yZVJvbGUoZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKEhUTUxOYW1lczo6cm9sZUF0dHIpKTsKLSAgICB9OwotCi0gICAgaWYgKGVsZW1lbnQuaGFz
VGFnTmFtZShIVE1MTmFtZXM6OmJ1dHRvblRhZykgfHwgcm9sZShlbGVtZW50KSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6QnV0dG9uKQorICAgIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVz
OjpidXR0b25UYWcpIHx8IGFjY2Vzc2liaWxpdHlSb2xlKGVsZW1lbnQpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpCdXR0b24pCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgYXV0byBkaXNwbGF5
VHlwZSA9IHJlbmRlcmVyLT5zdHlsZSgpLmRpc3BsYXkoKTsKQEAgLTMyOCw3ICszMjUsNyBAQCBz
dGF0aWMgYm9vbCBpc0VuY2xvc2luZ0l0ZW1Cb3VuZGFyeUVsZW1lbnQoY29uc3QgRWxlbWVudCYg
ZWxlbWVudCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIGZvciAoUmVmUHRy
IHBhcmVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudCgpOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVu
dC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICBpZiAocGFyZW50LT5oYXNUYWdOYW1l
KEhUTUxOYW1lczo6bmF2VGFnKSB8fCByb2xlKCpwYXJlbnQpID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpMYW5kbWFya05hdmlnYXRpb24pCisgICAgICAgICAgICBpZiAocGFyZW50LT5oYXNUYWdOYW1l
KEhUTUxOYW1lczo6bmF2VGFnKSB8fCBhY2Nlc3NpYmlsaXR5Um9sZSgqcGFyZW50KSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0aW9uKQogICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Nb2RhbENvbnRhaW5lck9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTW9kYWxD
b250YWluZXJPYnNlcnZlci5jcHAKaW5kZXggZGVhNTBiNzcwMmQ0ZDNiZGQzMmNmOTI3YjAxZDM4
M2EyMmY2MzVlZi4uZmQ3ODBlYzUxMDcxYjFjYWQ2Mzg5MWQzMmZjNjYwYjM5ZDM3Yjc5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Nb2RhbENvbnRhaW5lck9ic2VydmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuY3BwCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUgIkVsZW1lbnRBY2Nl
c3NpYmlsaXR5LmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZl
bnRMb29wLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgpAQCAtMTMxLDExICsxMzIsNiBAQCBz
dGF0aWMgYm9vbCBtYXRjaGVzU2VhcmNoVGVybShjb25zdCBUZXh0JiB0ZXh0Tm9kZSwgY29uc3Qg
QXRvbVN0cmluZyYgc2VhcmNoVGVybQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgQWNj
ZXNzaWJpbGl0eVJvbGUgYWNjZXNzaWJpbGl0eVJvbGUoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1l
bnQpCi17Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFSb2xlVG9XZWJDb3Jl
Um9sZShlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpy
b2xlQXR0cikpOwotfQotCiBzdGF0aWMgYm9vbCBpc0luc2lkZU5hdmlnYXRpb25FbGVtZW50KGNv
bnN0IFRleHQmIHRleHROb2RlKQogewogICAgIGZvciAoYXV0byYgcGFyZW50IDogYW5jZXN0b3Jz
T2ZUeXBlPEhUTUxFbGVtZW50Pih0ZXh0Tm9kZSkpIHsKQEAgLTIwOCw3ICsyMDQsNyBAQCBzdGF0
aWMgYm9vbCBpc0NsaWNrYWJsZUNvbnRyb2woY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpCiAg
ICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxJbnB1
dEVsZW1lbnQ+KGVsZW1lbnQpLmlzVGV4dEJ1dHRvbigpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIHN3aXRjaCAoYWNjZXNzaWJpbGl0eVJvbGUoZWxlbWVudCkpIHsKKyAgICBzd2l0Y2gg
KGFjY2Vzc2liaWxpdHlSb2xlKGVsZW1lbnQpLnZhbHVlX29yKEFjY2Vzc2liaWxpdHlSb2xlOjpV
bmtub3duKSkgewogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbjoKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2hlY2tCb3g6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmlu
ZGV4IDA2ZDU1ZjEwODdjYTQwMmM5NTVlYTViNTgyMTQ3MzQwMjExNDAwZjAuLjk3NmY1OWE0Nzg5
NWIyZTVjNzIxNzEwMGVhYzRlZjJiZjdiOGU0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC03NjksOCArNzY5LDggQEAg
dm9pZCBXZWJQYWdlOjpoYW5kbGVTeW50aGV0aWNDbGljayhOb2RlJiBub2RlUmVzcG9uZGluZ1Rv
Q2xpY2ssIGNvbnN0IFdlYkNvcmU6OkYKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICBpZiAodGFyZ2V0Tm9kZS5kb2N1bWVudCgpLnF1aXJrcygpLnNob3VsZElnbm9yZUFyaWFGb3JG
YXN0UGF0aENvbnRlbnRPYnNlcnZhdGlvbkNoZWNrKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIGF1dG8gYXJpYVJvbGUgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhUm9s
ZVRvV2ViQ29yZVJvbGUoZG93bmNhc3Q8RWxlbWVudD4odGFyZ2V0Tm9kZSkuZ2V0QXR0cmlidXRl
KEhUTUxOYW1lczo6cm9sZUF0dHIpKTsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmlzQVJJQUNvbnRyb2woYXJpYVJvbGUpOworICAgICAgICBhdXRvIHJvbGUgPSBhY2Nlc3Np
YmlsaXR5Um9sZShkb3duY2FzdDxFbGVtZW50Pih0YXJnZXROb2RlKSk7CisgICAgICAgIHJldHVy
biByb2xlICYmIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQVJJQUNvbnRyb2woKnJvbGUpOwogICAg
IH07CiAgICAgYXV0byB0YXJnZXROb2RlVHJpZ2dlcnNGYXN0UGF0aCA9IG5vZGVUcmlnZ2Vyc0Zh
c3RQYXRoKG5vZGVSZXNwb25kaW5nVG9DbGljayk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448263</attachid>
            <date>2022-01-03 18:26:37 -0800</date>
            <delta_ts>2022-01-03 21:53:47 -0800</delta_ts>
            <desc>Return ASCIILiteral</desc>
            <filename>bug-234787-20220103182636.patch</filename>
            <type>text/plain</type>
            <size>52427</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg4MWY1ODMwNGQyMmIwNjdiYTZmYjUw
OTZkZGZmOTdlYjExN2Q4OWEuLjIxMDg3ZTY2Y2EzOGJhY2E4NWI0NjZhZDM2ZWY2ZjEwNjI0OWEy
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDEtMDMgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGNv
bXB1dGUgYW4gZWxlbWVudCdzIGFjY2Vzc2liaWxpdHkgcm9sZSBpbiBjb3JlIERPTSBjb2RlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ3ODcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm92aWRlIGEg
ZGVmYXVsdCBjb25zdHJ1Y3RvciBmb3IgQVNDSUlMaXRlcmFsIHRoYXQgcmV0dXJucyB0aGUgbnVs
bCB2YWx1ZTsgdGhpcyBpcyBpbnZva2VkIHdoZW4gdXNpbmcKKyAgICAgICAgQVNDSUlMaXRlcmFs
IGFzIGEgaGFzaCB2YWx1ZSBpbiBXZWJDb3JlIChzZWUgV2ViQ29yZS9DaGFuZ2VMb2cgZm9yIG1v
cmUgZGV0YWlscykuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BU0NJSUxpdGVyYWwuaDoKKwogMjAy
MS0xMi0zMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtK
U0NdIFJlcGxhY2UgVURJUzg2IHdpdGggWnlkaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxZTYyMWIxMGEyZTVl
NWNkNmRlYjk2ZGYzZjkwODdhYjIyZDI1YjBhLi44MGY4ZTQyMDJlYTRmOGQ4Y2UwYjUwM2U3MzIz
NGFkYWE5NGU4MGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMjItMDEtMDMgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgaGVs
cGVyIGZ1bmN0aW9uIHRvIGNvbXB1dGUgYW4gZWxlbWVudCdzIGFjY2Vzc2liaWxpdHkgcm9sZSBp
biBjb3JlIERPTSBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzQ3ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGVyZSBhcmUgYSBjb3VwbGUgcGxhY2VzIGluIFdlYkNvcmUgb3V0c2lkZSBvZiB0
aGUgY29udGV4dCBvZiBhY2Nlc3NpYmlsaXR5IGNvZGUgdGhhdCBwYXJzZSBgQWNjZXNzaWJpbGl0
eVJvbGVgCisgICAgICAgIGZyb20gdGhlICJyb2xlIiBhdHRyaWJ1dGUgb2YgRE9NIGVsZW1lbnRz
IGluIG9yZGVyIHRvIGRyaXZlIHZhcmlvdXMgaGV1cmlzdGljcy4gSW4gb3JkZXIgdG8gZG8gdGhp
cywgd2UKKyAgICAgICAgY3VycmVudGx5IGluY2x1ZGUgYWNjZXNzaWJpbGl0eSBoZWFkZXJzIGlu
IHRoZXNlIGZpbGVzOyBob3dldmVyLCB0aGlzIGlzbid0IGlkZWFsIGZvciBsYXllcmluZywgc2lu
Y2UgYWxsIHRoZQorICAgICAgICBhY2Nlc3NpYmlsaXR5IGNvZGUgaXMgaW50ZW5kZWQgdG8gYnVp
bGQgb24gdG9wIG9mIHRoZSBjb3JlIERPTS4KKworICAgICAgICBUbyBhZGRyZXNzIHRoaXMsIG1v
dmUgdGhlIGxvZ2ljIGZvciBwYXJzaW5nIHRoZSAicm9sZSIgYXR0cmlidXRlIGludG8gYW4gYEFj
Y2Vzc2liaWxpdHlSb2xlYCBlbnVtIGludG8gYQorICAgICAgICBzZXBhcmF0ZSBoZWFkZXIsIGBF
bGVtZW50QWNjZXNzaWJpbGl0eS5oYCAoYW5kIHNlcGFyYXRlIGhlbHBlciBmdW5jdGlvbikgaW4g
dGhlIGNvcmUgRE9NIGltcGxlbWVudGF0aW9uLCBhbmQKKyAgICAgICAgdGhlbiBoYXZlIGFjY2Vz
c2liaWxpdHkgaW5jbHVkZSB0aGF0IGhlYWRlci4KKworICAgICAgICBUaGVuLCBjaGFuZ2Ugbm9u
LWFjY2Vzc2liaWxpdHkgRE9NIGNvZGUgaW4gV2ViQ29yZSB0byBpbmNsdWRlICJFbGVtZW50QWNj
ZXNzaWJpbGl0eS5oIiBpbnN0ZWFkIG9mIHB1bGxpbmcgaW4KKyAgICAgICAgYWNjZXNzaWJpbGl0
eSBoZWFkZXJzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBIZWFkZXJzLmNt
YWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxlTGl2ZVJlZ2lvbkNy
ZWF0ZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGlu
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rOjpyb2xl
VmFsdWUgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRl
dGVybWluZUFyaWFSb2xlQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6Y29tcHV0ZWRSb2xlU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Omlu
aXRpYWxpemVSb2xlTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFyaWFSb2xlTWFw
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJldmVyc2VBcmlhUm9sZU1hcCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhUm9sZVRvV2Vi
Q29yZVJvbGUpOiBEZWxldGVkLgorCisgICAgICAgIFJlcGxhY2UgYEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmFyaWFSb2xlVG9XZWJDb3JlUm9sZWAgd2l0aCBgV2ViQ29yZTo6YWNjZXNzaWJpbGl0eVJv
bGVgLCB3aGljaCBwYXJzZXMgdGhlIHJvbGUKKyAgICAgICAgYXR0cmlidXRlIG9mIHRoZSBnaXZl
biBgRWxlbWVudGAgdG8gYW4gYEFjY2Vzc2liaWxpdHlSb2xlYCAob3IgYG51bGxvcHRgIGlmIHRo
ZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSB2YWx1ZQorICAgICAgICBmb3IgdGhlIHJvbGUgYXR0
cmlidXRlKS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5o
OgorICAgICAgICAqIGRvbS9FbGVtZW50QWNjZXNzaWJpbGl0eS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6aW5pdGlhbGl6ZVJvbGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6YXJpYVJv
bGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6cmV2ZXJzZUFyaWFSb2xlTWFwKToKKworICAgICAg
ICBNb3ZlIHRoZSBoYXNoIG1hcHMgaW50byB0aGUgc291cmNlIGZpbGUgYXMgYW4gaW1wbGVtZW50
YXRpb24gZGV0YWlsLCBhbmQgaW5zdGVhZCBleHBvc2UgYSBuZXcgbWV0aG9kLAorICAgICAgICBg
YWNjZXNzaWJpbHR5Um9sZVN0cmluZygpYCwgdGhhdCBtYXBzIGEgZ2l2ZW4gYEFjY2Vzc2liaWxp
dHlSb2xlYCB0byB0aGUgYFN0cmluZ2AgZm9yIHRoYXQgcm9sZS4gRm9yIHRoZSB0aW1lCisgICAg
ICAgIGJlaW5nLCB0aGlzIHN0aWxsIGp1c3QgaW50ZXJuYWxseSBsb29rcyB0aHJvdWdoIGEgaGFz
aCBtYXAgb2Ygcm9sZSA9PiBTdHJpbmcsIGJ1dCBpbiB0aGUgZnV0dXJlLCBpdCBjb3VsZCBiZQor
ICAgICAgICByZWZhY3RvcmVkIHRvIGJlIGEgY29uc3RleHByIGZ1bmN0aW9uIHRoYXQganVzdCBy
ZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIG5hbWUgd2l0aG91dCByZXF1aXJpbmcgYSBzdHJpbmcg
aGFzaC4KKworICAgICAgICAoV2ViQ29yZTo6YWNjZXNzaWJpbHR5Um9sZVN0cmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjphY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgICogZG9tL0VsZW1lbnRB
Y2Nlc3NpYmlsaXR5Lmg6IEFkZGVkLgorCisgICAgICAgIE1vdmUgdGhlIGBBY2Nlc3NpYmlsaXR5
Um9sZWAgZW51bSBjbGFzcyBoZXJlLCBhbmQgbWFrZSBpdCBgdWludDhfdGAuCisKKyAgICAgICAg
KiBlZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmlzRW5jbG9zaW5nSXRlbUJvdW5kYXJ5RWxlbWVudCk6CisgICAgICAgICogcGFnZS9Nb2Rh
bENvbnRhaW5lck9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQ2xpY2thYmxlQ29u
dHJvbCk6CisgICAgICAgIChXZWJDb3JlOjphY2Nlc3NpYmlsaXR5Um9sZSk6IERlbGV0ZWQuCisK
IDIwMjItMDEtMDIgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtM
RkNdW0lGQ10gQWRkIEFTU0VSVChtaWRkbGUgPj0gbGVmdCAmJiBtaWRkbGUgPCByaWdodCkgdG8g
VGV4dFV0aWw6OmJyZWFrV29yZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5ZjVhZjNkYWJhM2FhMjE3MDU3MTBhM2Qz
NDQzMDRiOTFhYWU5MDdiLi4xYTkwZDFlYjdmNmQ3NjAyNDI2ODg0NTI4OTlmODYyNWJmYmYxZTQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIyLTAxLTAzICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGhlbHBlciBmdW5jdGlvbiB0
byBjb21wdXRlIGFuIGVsZW1lbnQncyBhY2Nlc3NpYmlsaXR5IHJvbGUgaW4gY29yZSBET00gY29k
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0Nzg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VlIFdl
YkNvcmUvQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omhh
bmRsZVN5bnRoZXRpY0NsaWNrKToKKwogMjAyMi0wMS0wMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViS2l0Ml0gQ2FtZXJhIGNvbnRpbnVpdHkg
aXMgZGlzYWJsZWQgaW4gcmljaGx5IGVkaXRhYmxlIGNvbnRlbnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJ
TGl0ZXJhbC5oCmluZGV4IDVjMjM3ZjMwOWUxYjgwY2VhYTJhM2MyYWMyYThjNGRhYTcyZTYzMWQu
LjJiN2U2ZmU4ZmU3N2E3ZTQ3Yzk3ZmUxY2M0ZWJlMDI5MjdlM2I1NDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9BU0NJSUxpdGVyYWwuaApAQCAtMzcsNiArMzcsMTEgQEAgY2xhc3MgQVNDSUlMaXRlcmFsIGZp
bmFsIHsKIHB1YmxpYzoKICAgICBvcGVyYXRvciBjb25zdCBjaGFyKigpIGNvbnN0IHsgcmV0dXJu
IG1fY2hhcmFjdGVyczsgfQogCisgICAgY29uc3RleHByIGV4cGxpY2l0IEFTQ0lJTGl0ZXJhbCgp
CisgICAgICAgIDogbV9jaGFyYWN0ZXJzIHsgbnVsbHB0ciB9CisgICAgeworICAgIH0KKwogICAg
IHN0YXRpYyBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIGZyb21MaXRlcmFsVW5zYWZlKGNvbnN0IGNo
YXIqIHN0cmluZykKICAgICB7CiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwgeyBzdHJpbmcg
fTsKQEAgLTQ2LDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBBU0NJ
SUxpdGVyYWwgbnVsbCgpCiAgICAgewotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsIHsgbnVs
bHB0ciB9OworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsIHsgfTsKICAgICB9CiAKICAgICBj
b25zdGV4cHIgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9jaGFyYWN0ZXJzOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQppbmRleCBmOGI4OWYwZWVmZmZkOWUwMzA3YjY0OTk1NzRkZjI0MTUxZWNj
ZTlkLi45ZTJhZjFiOGI1Njc3MTExNjMyZjQ2YjM4YzhkMzM5ZmZlN2JlNjYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKQEAgLTYzMSw2ICs2MzEsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09S
S19IRUFERVJTCiAgICAgZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oCiAgICAgZG9tL0RvY3Vt
ZW50VHlwZS5oCiAgICAgZG9tL0VsZW1lbnQuaAorICAgIGRvbS9FbGVtZW50QWNjZXNzaWJpbGl0
eS5oCiAgICAgZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgKICAgICBkb20vRWxlbWVudENo
aWxkSXRlcmF0b3IuaAogICAgIGRvbS9FbGVtZW50Q29udGV4dC5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4
IGJkNWE3NDc5Y2IzOWU0NmNjOTEwNDAwZjRlZTM4NDkzMjRjNzUzMWYuLmFiMjI0ZGIyMGJkMDA4
ZTEzZWEyYWQzOWZlYTkwYjNjNTg0NGFjYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC05NTAsNiArOTUw
LDcgQEAgZG9tL0RvY3VtZW50VG91Y2guY3BwIEBuby11bmlmeQogZG9tL0RvY3VtZW50VHlwZS5j
cHAKIGRvbS9EcmFnRXZlbnQuY3BwCiBkb20vRWxlbWVudC5jcHAKK2RvbS9FbGVtZW50QWNjZXNz
aWJpbGl0eS5jcHAKIGRvbS9FbGVtZW50RGF0YS5jcHAKIGRvbS9FbGVtZW50UmFyZURhdGEuY3Bw
CiBkb20vRXJyb3JFdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzYzllYzI1YzBhOTI0NjA2YWUyZWIzMjc2NGExNzhk
ZGNjOTQ0M2Y4Li5lOGM4NmM1YjNlN2FiNGNjZjk3NmEzNTE3M2E5YTAyYzVhOWZjOGFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC01NDgxLDYgKzU0ODEsNyBAQAogCQlGNDI5OTUwRjI3MEU3NTAwMDAzMjI5OEIgLyogRGlzcGxh
eUxpc3RSZWNvcmRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjQyOTk1MEQyNzBFNzUwMDAwMzIyOThCIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDMzRTkw
MzFEQkJEQkEyMDBFRjBEMTQgLyogU3RhdGljUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzM0U5MDIxREJCREJBMjAwRUYwRDE0IC8q
IFN0YXRpY1Bhc3RlYm9hcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlGNDM3N0Q1NzI1NTFDOUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJdGVt
VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQz
NzdENTUyNTUxQzlDNjAwODBBQkZFIC8qIERpc3BsYXlMaXN0SXRlbVR5cGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNDNDMzgyQTI3ODI0QzE5
MDA5OUFCQ0UgLyogRWxlbWVudEFjY2Vzc2liaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0M0MzODI4Mjc4MjRDMTkwMDk5QUJDRSAvKiBFbGVt
ZW50QWNjZXNzaWJpbGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUY0NDBFNzdBMjMzRDk0RDcwMDYzRjlBQiAvKiBOYXZpZ2F0b3JDbGlwYm9h
cmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDBF
NzZGMjMzRDk0RDMwMDYzRjlBQiAvKiBOYXZpZ2F0b3JDbGlwYm9hcmQuaCAqLzsgfTsKIAkJRjQ0
MEU3N0IyMzNEOTRENzAwNjNGOUFCIC8qIENsaXBib2FyZEl0ZW0uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDBFNzcwMjMzRDk0RDQwMDYzRjlBQiAv
KiBDbGlwYm9hcmRJdGVtLmggKi87IH07CiAJCUY0NDBFNzdEMjMzRDk0RDcwMDYzRjlBQiAvKiBD
bGlwYm9hcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0NDBFNzcyMjMzRDk0RDUwMDYzRjlBQiAvKiBDbGlwYm9hcmQuaCAqLzsgfTsKQEAgLTE3Njg1
LDYgKzE3Njg2LDggQEAKIAkJRjQzM0U5MDQxREJCREJDMjAwRUYwRDE0IC8qIFN0YXRpY1Bhc3Rl
Ym9hcmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGljUGFzdGVib2FyZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0Mzc3RDU1MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNw
bGF5TGlzdEl0ZW1UeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlbVR5cGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzNzdENTYyNTUxQzlDNjAwODBBQkZFIC8q
IERpc3BsYXlMaXN0SXRlbVR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpc3RJ
dGVtVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0M0MzODI4Mjc4MjRD
MTkwMDk5QUJDRSAvKiBFbGVtZW50QWNjZXNzaWJpbGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbGVt
ZW50QWNjZXNzaWJpbGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDNDMzgy
OTI3ODI0QzE5MDA5OUFCQ0UgLyogRWxlbWVudEFjY2Vzc2liaWxpdHkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRWxlbWVudEFjY2Vzc2liaWxpdHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNDQwRTc2RTIzM0Q5NEQzMDA2M0Y5QUIgLyogQ2xpcGJvYXJkLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsaXBib2FyZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0NDBFNzZGMjMzRDk0RDMwMDYzRjlBQiAvKiBOYXZpZ2F0b3JD
bGlwYm9hcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF2aWdhdG9yQ2xp
cGJvYXJkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NDBFNzcwMjMzRDk0RDQw
MDYzRjlBQiAvKiBDbGlwYm9hcmRJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENsaXBib2FyZEl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMyMjU2
LDYgKzMyMjU5LDggQEAKIAkJCQlBOEM0QTdGNjA5RDU2MzI3MDAwM0FDOEQgLyogRWxlbWVudC5j
cHAgKi8sCiAJCQkJQThDNEE3RjUwOUQ1NjMyNzAwMDNBQzhEIC8qIEVsZW1lbnQuaCAqLywKIAkJ
CQk5M0VFQzFFQTA5QzI4Nzc3MDBDNTE1RDEgLyogRWxlbWVudC5pZGwgKi8sCisJCQkJRjQzQzM4
MjkyNzgyNEMxOTAwOTlBQkNFIC8qIEVsZW1lbnRBY2Nlc3NpYmlsaXR5LmNwcCAqLywKKwkJCQlG
NDNDMzgyODI3ODI0QzE5MDA5OUFCQ0UgLyogRWxlbWVudEFjY2Vzc2liaWxpdHkuaCAqLywKIAkJ
CQlFNEFFN0MxOTE3RDIzMjM1MDAwOUZCMzEgLyogRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCAq
LywKIAkJCQlFNDQwQUE5NTFDNjg0MjA4MDBBMjY1Q0MgLyogRWxlbWVudEFuZFRleHREZXNjZW5k
YW50SXRlcmF0b3IuaCAqLywKIAkJCQlFNDZBMkIxRDE3Q0E3NkIxMDAwREJDRDggLyogRWxlbWVu
dENoaWxkSXRlcmF0b3IuaCAqLywKQEAgLTM0MjQwLDYgKzM0MjQ1LDcgQEAKIAkJCQk5M0ZEQUZD
QTBCMTEzMDc0MDBFMjc0NkYgLyogRWRpdG9ySW5zZXJ0QWN0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MTJCRTQ3RDFGRTg2NDU4MDAyMDMxQ0MgLyogRWZmZWN0VGltaW5nLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBOEM0QTgwNzA5RDU2MzI3MDAwM0FDOEQgLyogRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRjQzQzM4MkEyNzgyNEMxOTAwOTlBQkNFIC8qIEVsZW1lbnRBY2Nlc3NpYmls
aXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEFFN0MxQTE3RDIzMjM1MDAwOUZCMzEgLyogRWxl
bWVudEFuY2VzdG9ySXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDBBQTk2MUM2ODQy
MDgwMEEyNjVDQyAvKiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzExOTQ2NTYyNDE4MUVBMTAwNDY2QzExIC8qIEVsZW1lbnRBbmltYXRpb25S
YXJlRGF0YS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBhYjc4Y2I5OGU3NmI1MTJjNTMwMDRjODlkMmViNjc5
MzNmZGI4NjE1Li5jZTIwZDI1ZmJmMzI0NzhhNzkxODY3YThiYmI1OTMxYTYxM2RjM2FhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTEw
MjksOSArMTAyOSw4IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlTGl2ZVJlZ2lvbkNyZWF0
ZWQoTm9kZSogbm9kZSkKICAgICBFbGVtZW50KiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4o
bm9kZSk7CiAgICAgU3RyaW5nIGxpdmVSZWdpb25TdGF0dXMgPSBlbGVtZW50LT5hdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKGFyaWFfbGl2ZUF0dHIpOwogICAgIGlmIChsaXZlUmVnaW9u
U3RhdHVzLmlzRW1wdHkoKSkgewotICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiBhcmlhUm9sZSA9
IGVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocm9sZUF0dHIpOwotICAg
ICAgICBpZiAoIWFyaWFSb2xlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGxpdmVSZWdpb25TdGF0
dXMgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZWZhdWx0TGl2ZVJlZ2lvblN0YXR1c0ZvclJvbGUo
QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVJvbGVUb1dlYkNvcmVSb2xlKGFyaWFSb2xlKSk7Cisg
ICAgICAgIGlmIChhdXRvIHJvbGUgPSBhY2Nlc3NpYmlsaXR5Um9sZSgqZWxlbWVudCkpCisgICAg
ICAgICAgICBsaXZlUmVnaW9uU3RhdHVzID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGVmYXVsdExp
dmVSZWdpb25TdGF0dXNGb3JSb2xlKCpyb2xlKTsKICAgICB9CiAgICAgCiAgICAgaWYgKEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmxpdmVSZWdpb25TdGF0dXNJc0VuYWJsZWQobGl2ZVJlZ2lvblN0YXR1
cykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlJbWFnZU1hcExpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5SW1hZ2VNYXBMaW5rLmNwcAppbmRleCBiZjIwMTcxMjA2ZTdhYmZkMmRjZTRhZjI4YjBh
YjY0ZWYyYmY2MmJhLi5mOTY3MTU0MmUyMzg5NGRhYWNjMDZlMmU5YzkxNjY3ZGViNGU3ZDk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFn
ZU1hcExpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUltYWdlTWFwTGluay5jcHAKQEAgLTY4LDkgKzY4LDExIEBAIEFjY2Vzc2liaWxpdHlSb2xl
IEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OnJvbGVWYWx1ZSgpIGNvbnN0CiAgICAgaWYgKCFt
X2FyZWFFbGVtZW50KQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVM
aW5rOwogICAgIAotICAgIGNvbnN0IEF0b21TdHJpbmcmIGFyaWFSb2xlID0gZ2V0QXR0cmlidXRl
KHJvbGVBdHRyKTsKLSAgICBpZiAoIWFyaWFSb2xlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFSb2xlVG9XZWJDb3JlUm9sZShhcmlhUm9sZSk7Cisg
ICAgaWYgKCFlbGVtZW50KCkpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6V2Vi
Q29yZUxpbms7CisKKyAgICBpZiAoYXV0byByb2xlID0gYWNjZXNzaWJpbGl0eVJvbGUoKmVsZW1l
bnQoKSkpCisgICAgICAgIHJldHVybiAqcm9sZTsKIAogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
Um9sZTo6V2ViQ29yZUxpbms7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCmluZGV4IDlmYjgzZjI0OWVlYjA0
NDdmN2MyMDhkMDNjYWUxN2U5MThmMjlkN2MuLmM4ZDdhMmRjYTYxOGZlYWIyZjdkNjFhZTY2MmVl
OTE5YWQ3Njk2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCkBAIC0yMjA1LDExICsyMjA1LDEzIEBAIGJv
b2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNhblNldFZhbHVlQXR0cmlidXRlKCkgY29uc3QK
IAogQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRldGVybWluZUFy
aWFSb2xlQXR0cmlidXRlKCkgY29uc3QKIHsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBhcmlhUm9s
ZSA9IGdldEF0dHJpYnV0ZShyb2xlQXR0cik7Ci0gICAgaWYgKGFyaWFSb2xlLmlzTnVsbCgpIHx8
IGFyaWFSb2xlLmlzRW1wdHkoKSkKKyAgICBSZWZQdHIgZWxlbWVudCA9IHRoaXMtPmVsZW1lbnQo
KTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6
VW5rbm93bjsKKworICAgIGF1dG8gcm9sZSA9IGFjY2Vzc2liaWxpdHlSb2xlKCplbGVtZW50KTsK
KyAgICBpZiAoIXJvbGUpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93
bjsKLSAgICAKLSAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gYXJpYVJvbGVUb1dlYkNvcmVS
b2xlKGFyaWFSb2xlKTsKIAogICAgIC8vIEFSSUEgc3RhdGVzIGlmIGFuIGl0ZW0gY2FuIGdldCBm
b2N1cywgaXQgc2hvdWxkIG5vdCBiZSBwcmVzZW50YXRpb25hbC4KICAgICBpZiAocm9sZSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6UHJlc2VudGF0aW9uYWwgJiYgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUo
KSkKQEAgLTIyMjEsNyArMjIyMyw3IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0OjpkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgpIGNvbnN0CiAgICAgaWYgKHJv
bGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRBcmVhICYmICFhcmlhSXNNdWx0aWxpbmUoKSkK
ICAgICAgICAgcm9sZSA9IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0RmllbGQ7CiAKLSAgICByb2xl
ID0gcmVtYXBBcmlhUm9sZUR1ZVRvUGFyZW50KHJvbGUpOworICAgIHJvbGUgPSByZW1hcEFyaWFS
b2xlRHVlVG9QYXJlbnQoKnJvbGUpOwogICAgIAogICAgIC8vIFByZXNlbnRhdGlvbmFsIHJvbGVz
IGFyZSBpbnZhbGlkYXRlZCBieSB0aGUgcHJlc2VuY2Ugb2YgQVJJQSBhdHRyaWJ1dGVzLgogICAg
IGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQcmVzZW50YXRpb25hbCAmJiBzdXBwb3J0
c0FSSUFBdHRyaWJ1dGVzKCkpCkBAIC0yMjM0LDEwICsyMjM2LDcgQEAgQWNjZXNzaWJpbGl0eVJv
bGUgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlKCkg
Y29uc3QKICAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtSZWdpb24g
JiYgIWhhc0F0dHJpYnV0ZShhcmlhX2xhYmVsQXR0cikgJiYgIWhhc0F0dHJpYnV0ZShhcmlhX2xh
YmVsbGVkYnlBdHRyKSkKICAgICAgICAgcm9sZSA9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3du
OwogCi0gICAgaWYgKHN0YXRpY19jYXN0PGludD4ocm9sZSkpCi0gICAgICAgIHJldHVybiByb2xl
OwotCi0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOworICAgIHJldHVybiAq
cm9sZTsKIH0KIAogQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFy
aWFSb2xlQXR0cmlidXRlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDFkY2NkODZhYmEyMzljZDkzZDEw
MmUwZmI0OTI2MjZlNWZiNDllYjYuLjgyYmU4ZjJkYTIzNjhmYTBmMzg5ZDAwZjZiYTQyOTk3MWEw
YmI0YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50SW5s
aW5lcy5oIgogI2luY2x1ZGUgIkVkaXRpbmcuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKKyNpbmNs
dWRlICJFbGVtZW50QWNjZXNzaWJpbGl0eS5oIgogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnREaXNwYXRjaGVyLmgiCkBAIC0y
MjU5LDE5NCArMjI2MCwxMyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpmaXJzdEFub255bW91c0Jsb2NrQ2hpbGQoKSBjb25zdAogICAgIHJldHVybiBudWxscHRy
OwogfQogCi11c2luZyBBUklBUm9sZU1hcCA9IEhhc2hNYXA8U3RyaW5nLCBBY2Nlc3NpYmlsaXR5
Um9sZSwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPjsKLXVzaW5nIEFSSUFSZXZlcnNlUm9sZU1h
cCA9IEhhc2hNYXA8QWNjZXNzaWJpbGl0eVJvbGUsIFN0cmluZywgRGVmYXVsdEhhc2g8aW50Piwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxpbnQ+PjsKLQotc3RhdGljIEFSSUFS
b2xlTWFwKiBnQXJpYVJvbGVNYXAgPSBudWxscHRyOwotc3RhdGljIEFSSUFSZXZlcnNlUm9sZU1h
cCogZ0FyaWFSZXZlcnNlUm9sZU1hcCA9IG51bGxwdHI7Ci0KLXN0cnVjdCBSb2xlRW50cnkgewot
ICAgIFN0cmluZyBhcmlhUm9sZTsKLSAgICBBY2Nlc3NpYmlsaXR5Um9sZSB3ZWJjb3JlUm9sZTsK
LX07Ci0KLXN0YXRpYyB2b2lkIGluaXRpYWxpemVSb2xlTWFwKCkKLXsKLSAgICBpZiAoZ0FyaWFS
b2xlTWFwKQotICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKCFnQXJpYVJldmVyc2VSb2xlTWFw
KTsKLQotICAgIGNvbnN0IFJvbGVFbnRyeSByb2xlc1tdID0gewotICAgICAgICB7ICJhbGVydCJf
cywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnQgfSwKLSAgICAgICAgeyAiYWxl
cnRkaWFsb2ciX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nIH0s
Ci0gICAgICAgIHsgImFwcGxpY2F0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXBwbGlj
YXRpb24gfSwKLSAgICAgICAgeyAiYXJ0aWNsZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3Vt
ZW50QXJ0aWNsZSB9LAotICAgICAgICB7ICJiYW5uZXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpM
YW5kbWFya0Jhbm5lciB9LAotICAgICAgICB7ICJibG9ja3F1b3RlIl9zLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6QmxvY2txdW90ZSB9LAotICAgICAgICB7ICJidXR0b24iX3MsIEFjY2Vzc2liaWxpdHlS
b2xlOjpCdXR0b24gfSwKLSAgICAgICAgeyAiY2FwdGlvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6
OkNhcHRpb24gfSwKLSAgICAgICAgeyAiY2hlY2tib3giX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpD
aGVja0JveCB9LAotICAgICAgICB7ICJjb21wbGVtZW50YXJ5Il9zLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TGFuZG1hcmtDb21wbGVtZW50YXJ5IH0sCi0gICAgICAgIHsgImNvbnRlbnRpbmZvIl9zLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb250ZW50SW5mbyB9LAotICAgICAgICB7ICJkZWxl
dGlvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkRlbGV0aW9uIH0sCi0gICAgICAgIHsgImRpYWxv
ZyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uRGlhbG9nIH0sCi0gICAgICAgIHsg
ImRpcmVjdG9yeSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkRpcmVjdG9yeSB9LAotICAgICAgICAv
LyBUaGUgJ2RvYy0qJyByb2xlcyBhcmUgZGVmaW5lZCB0aGUgQVJJQSBEUFVCIG1vYmlsZTogaHR0
cHM6Ly93d3cudzMub3JnL1RSL2RwdWItYWFtLTEuMAotICAgICAgICAvLyBFZGl0b3IncyBkcmFm
dCBpcyBjdXJyZW50bHkgYXQgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2RwdWItYWFtCi0gICAgICAg
IHsgImRvYy1hYnN0cmFjdCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdy
b3VwIH0sCi0gICAgICAgIHsgImRvYy1hY2tub3dsZWRnbWVudHMiX3MsIEFjY2Vzc2liaWxpdHlS
b2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAotICAgICAgICB7ICJkb2MtYWZ0ZXJ3b3JkIl9zLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKLSAgICAgICAgeyAiZG9jLWFw
cGVuZGl4Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKLSAgICAg
ICAgeyAiZG9jLWJhY2tsaW5rIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbmsgfSwK
LSAgICAgICAgeyAiZG9jLWJpYmxpb2VudHJ5Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0
ZW0gfSwKLSAgICAgICAgeyAiZG9jLWJpYmxpb2dyYXBoeSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6
OkxhbmRtYXJrRG9jUmVnaW9uIH0sCi0gICAgICAgIHsgImRvYy1iaWJsaW9yZWYiX3MsIEFjY2Vz
c2liaWxpdHlSb2xlOjpXZWJDb3JlTGluayB9LAotICAgICAgICB7ICJkb2MtY2hhcHRlciJfcywg
QWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCi0gICAgICAgIHsgImRvYy1j
b2xvcGhvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0sCi0g
ICAgICAgIHsgImRvYy1jb25jbHVzaW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtE
b2NSZWdpb24gfSwKLSAgICAgICAgeyAiZG9jLWNvdmVyIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
SW1hZ2UgfSwKLSAgICAgICAgeyAiZG9jLWNyZWRpdCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFw
cGxpY2F0aW9uVGV4dEdyb3VwIH0sCi0gICAgICAgIHsgImRvYy1jcmVkaXRzIl9zLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKLSAgICAgICAgeyAiZG9jLWRlZGljYXRp
b24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB9LAotICAgICAg
ICB7ICJkb2MtZW5kbm90ZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtIH0sCi0gICAg
ICAgIHsgImRvYy1lbmRub3RlcyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVn
aW9uIH0sCi0gICAgICAgIHsgImRvYy1lcGlncmFwaCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFw
cGxpY2F0aW9uVGV4dEdyb3VwIH0sCi0gICAgICAgIHsgImRvYy1lcGlsb2d1ZSJfcywgQWNjZXNz
aWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCi0gICAgICAgIHsgImRvYy1lcnJhdGEi
X3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAotICAgICAgICB7ICJk
b2MtZXhhbXBsZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0s
Ci0gICAgICAgIHsgImRvYy1mb290bm90ZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkZvb3Rub3Rl
IH0sCi0gICAgICAgIHsgImRvYy1mb3Jld29yZCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRt
YXJrRG9jUmVnaW9uIH0sCi0gICAgICAgIHsgImRvYy1nbG9zc2FyeSJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCi0gICAgICAgIHsgImRvYy1nbG9zc3JlZiJfcywg
QWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rIH0sCi0gICAgICAgIHsgImRvYy1pbmRleCJf
cywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbiB9LAotICAgICAgICB7ICJk
b2MtaW50cm9kdWN0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24g
fSwKLSAgICAgICAgeyAiZG9jLW5vdGVyZWYiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3Jl
TGluayB9LAotICAgICAgICB7ICJkb2Mtbm90aWNlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9j
dW1lbnROb3RlIH0sCi0gICAgICAgIHsgImRvYy1wYWdlYnJlYWsiX3MsIEFjY2Vzc2liaWxpdHlS
b2xlOjpTcGxpdHRlciB9LAotICAgICAgICB7ICJkb2MtcGFnZWxpc3QiX3MsIEFjY2Vzc2liaWxp
dHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb24gfSwKLSAgICAgICAgeyAiZG9jLXBhcnQiX3MsIEFj
Y2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAotICAgICAgICB7ICJkb2MtcHJl
ZmFjZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCi0gICAgICAg
IHsgImRvYy1wcm9sb2d1ZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9u
IH0sCi0gICAgICAgIHsgImRvYy1wdWxscXVvdGUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBs
aWNhdGlvblRleHRHcm91cCB9LAotICAgICAgICB7ICJkb2MtcW5hIl9zLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAgfSwKLSAgICAgICAgeyAiZG9jLXN1YnRpdGxlIl9z
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZyB9LAotICAgICAgICB7ICJkb2MtdGlwIl9zLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnROb3RlIH0sCi0gICAgICAgIHsgImRvYy10b2MiX3Ms
IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb24gfSwKLSAgICAgICAgeyAiZmln
dXJlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RmlndXJlIH0sCi0gICAgICAgIC8vIFRoZSBtYXBw
aW5ncyBmb3IgJ2dyYXBoaWNzLSonIHJvbGVzIGFyZSBkZWZpbmVkIGluIHRoaXMgc3BlYzogaHR0
cHM6Ly93M2MuZ2l0aHViLmlvL2dyYXBoaWNzLWFhbS8KLSAgICAgICAgeyAiZ3JhcGhpY3MtZG9j
dW1lbnQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpHcmFwaGljc0RvY3VtZW50IH0sCi0gICAgICAg
IHsgImdyYXBoaWNzLW9iamVjdCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkdyYXBoaWNzT2JqZWN0
IH0sCi0gICAgICAgIHsgImdyYXBoaWNzLXN5bWJvbCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Okdy
YXBoaWNzU3ltYm9sIH0sCi0gICAgICAgIHsgImdyaWQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpH
cmlkIH0sCi0gICAgICAgIHsgImdyaWRjZWxsIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZENl
bGwgfSwKLSAgICAgICAgeyAidGFibGUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZSB9LAot
ICAgICAgICB7ICJjZWxsIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2VsbCB9LAotICAgICAgICB7
ICJjb2x1bW5oZWFkZXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW5IZWFkZXIgfSwKLSAg
ICAgICAgeyAiY29tYm9ib3giX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpDb21ib0JveCB9LAotICAg
ICAgICB7ICJkZWZpbml0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVmaW5pdGlvbiB9LAot
ICAgICAgICB7ICJkb2N1bWVudCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50IH0sCi0g
ICAgICAgIHsgImZlZWQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpGZWVkIH0sCi0gICAgICAgIHsg
ImZvcm0iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpGb3JtIH0sCi0gICAgICAgIHsgInJvd2hlYWRl
ciJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlciB9LAotICAgICAgICB7ICJncm91cCJf
cywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uR3JvdXAgfSwKLSAgICAgICAgeyAiaGVh
ZGluZyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmcgfSwKLSAgICAgICAgLy8gVGhlICJp
bWFnZSIgcm9sZSBpcyBzeW5vbnltb3VzIHdpdGggdGhlICJpbWciIHJvbGUuIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby9hcmlhLyNpbWFnZQotICAgICAgICB7ICJpbWFnZSJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6OkltYWdlIH0sCi0gICAgICAgIHsgImltZyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Oklt
YWdlIH0sCi0gICAgICAgIHsgImluc2VydGlvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Okluc2Vy
dGlvbiB9LAotICAgICAgICB7ICJsaW5rIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxp
bmsgfSwKLSAgICAgICAgeyAibGlzdCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3QgfSwKLSAg
ICAgICAgeyAibGlzdGl0ZW0iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbSB9LAotICAg
ICAgICB7ICJsaXN0Ym94Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveCB9LAotICAgICAg
ICB7ICJsb2ciX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkxvZyB9LAotICAgICAg
ICB7ICJtYWluIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtNYWluIH0sCi0gICAgICAg
IHsgIm1hcnF1ZWUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbk1hcnF1ZWUgfSwK
LSAgICAgICAgeyAibWF0aCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50TWF0aCB9LAot
ICAgICAgICB7ICJtZW51Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudSB9LAotICAgICAgICB7
ICJtZW51YmFyIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJhciB9LAotICAgICAgICB7ICJt
ZW51aXRlbSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtIH0sCi0gICAgICAgIHsgIm1l
bnVpdGVtY2hlY2tib3giX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbUNoZWNrYm94IH0s
Ci0gICAgICAgIHsgIm1lbnVpdGVtcmFkaW8iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRl
bVJhZGlvIH0sCi0gICAgICAgIHsgIm1ldGVyIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TWV0ZXIg
fSwKLSAgICAgICAgeyAibm9uZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRhdGlvbmFs
IH0sCi0gICAgICAgIHsgIm5vdGUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE5vdGUg
fSwKLSAgICAgICAgeyAibmF2aWdhdGlvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJr
TmF2aWdhdGlvbiB9LAotICAgICAgICB7ICJvcHRpb24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpM
aXN0Qm94T3B0aW9uIH0sCi0gICAgICAgIHsgInBhcmFncmFwaCJfcywgQWNjZXNzaWJpbGl0eVJv
bGU6OlBhcmFncmFwaCB9LAotICAgICAgICB7ICJwcmVzZW50YXRpb24iX3MsIEFjY2Vzc2liaWxp
dHlSb2xlOjpQcmVzZW50YXRpb25hbCB9LAotICAgICAgICB7ICJwcm9ncmVzc2JhciJfcywgQWNj
ZXNzaWJpbGl0eVJvbGU6OlByb2dyZXNzSW5kaWNhdG9yIH0sCi0gICAgICAgIHsgInJhZGlvIl9z
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b24gfSwKLSAgICAgICAgeyAicmFkaW9ncm91
cCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvR3JvdXAgfSwKLSAgICAgICAgeyAicmVnaW9u
Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtSZWdpb24gfSwKLSAgICAgICAgeyAicm93
Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93IH0sCi0gICAgICAgIHsgInJvd2dyb3VwIl9zLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6Um93R3JvdXAgfSwKLSAgICAgICAgeyAic2Nyb2xsYmFyIl9zLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQmFyIH0sCi0gICAgICAgIHsgInNlYXJjaCJfcywgQWNj
ZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrU2VhcmNoIH0sCi0gICAgICAgIHsgInNlYXJjaGJveCJf
cywgQWNjZXNzaWJpbGl0eVJvbGU6OlNlYXJjaEZpZWxkIH0sCi0gICAgICAgIHsgInNlcGFyYXRv
ciJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlNwbGl0dGVyIH0sCi0gICAgICAgIHsgInNsaWRlciJf
cywgQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlciB9LAotICAgICAgICB7ICJzcGluYnV0dG9uIl9z
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvbiB9LAotICAgICAgICB7ICJzdGF0dXMiX3Ms
IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblN0YXR1cyB9LAotICAgICAgICB7ICJzdWJz
Y3JpcHQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpTdWJzY3JpcHQgfSwKLSAgICAgICAgeyAic3Vw
ZXJzY3JpcHQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpTdXBlcnNjcmlwdCB9LAotICAgICAgICB7
ICJzd2l0Y2giX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpTd2l0Y2ggfSwKLSAgICAgICAgeyAidGFi
Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiIH0sCi0gICAgICAgIHsgInRhYmxpc3QiX3MsIEFj
Y2Vzc2liaWxpdHlSb2xlOjpUYWJMaXN0IH0sCi0gICAgICAgIHsgInRhYnBhbmVsIl9zLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6VGFiUGFuZWwgfSwKLSAgICAgICAgeyAidGV4dCJfcywgQWNjZXNzaWJp
bGl0eVJvbGU6OlN0YXRpY1RleHQgfSwKLSAgICAgICAgeyAidGV4dGJveCJfcywgQWNjZXNzaWJp
bGl0eVJvbGU6OlRleHRBcmVhIH0sCi0gICAgICAgIHsgInRlcm0iX3MsIEFjY2Vzc2liaWxpdHlS
b2xlOjpUZXJtIH0sCi0gICAgICAgIHsgInRpbWUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpUaW1l
IH0sCi0gICAgICAgIHsgInRpbWVyIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25U
aW1lciB9LAotICAgICAgICB7ICJ0b29sYmFyIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9vbGJh
ciB9LAotICAgICAgICB7ICJ0b29sdGlwIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VXNlckludGVy
ZmFjZVRvb2x0aXAgfSwKLSAgICAgICAgeyAidHJlZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlRy
ZWUgfSwKLSAgICAgICAgeyAidHJlZWdyaWQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlR3Jp
ZCB9LAotICAgICAgICB7ICJ0cmVlaXRlbSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVt
IH0KLSAgICB9OwotCi0gICAgZ0FyaWFSb2xlTWFwID0gbmV3IEFSSUFSb2xlTWFwOwotICAgIGdB
cmlhUmV2ZXJzZVJvbGVNYXAgPSBuZXcgQVJJQVJldmVyc2VSb2xlTWFwOwotICAgIHNpemVfdCBy
b2xlTGVuZ3RoID0gV1RGX0FSUkFZX0xFTkdUSChyb2xlcyk7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCByb2xlTGVuZ3RoOyArK2kpIHsKLSAgICAgICAgZ0FyaWFSb2xlTWFwLT5zZXQocm9s
ZXNbaV0uYXJpYVJvbGUsIHJvbGVzW2ldLndlYmNvcmVSb2xlKTsKLSAgICAgICAgZ0FyaWFSZXZl
cnNlUm9sZU1hcC0+c2V0KHN0YXRpY19jYXN0PGludD4ocm9sZXNbaV0ud2ViY29yZVJvbGUpLCBy
b2xlc1tpXS5hcmlhUm9sZSk7Ci0gICAgfQotICAgIGdBcmlhUmV2ZXJzZVJvbGVNYXAtPnNldChz
dGF0aWNfY2FzdDxpbnQ+KEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZSksICJpbWFnZSJfcyk7Ci19
Ci0KLXN0YXRpYyBBUklBUm9sZU1hcCYgYXJpYVJvbGVNYXAoKQotewotICAgIGluaXRpYWxpemVS
b2xlTWFwKCk7Ci0gICAgcmV0dXJuICpnQXJpYVJvbGVNYXA7Ci19Ci0KLXN0YXRpYyBBUklBUmV2
ZXJzZVJvbGVNYXAmIHJldmVyc2VBcmlhUm9sZU1hcCgpCi17Ci0gICAgaW5pdGlhbGl6ZVJvbGVN
YXAoKTsKLSAgICByZXR1cm4gKmdBcmlhUmV2ZXJzZVJvbGVNYXA7Ci19Ci0KLUFjY2Vzc2liaWxp
dHlSb2xlIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFSb2xlVG9XZWJDb3JlUm9sZShjb25zdCBT
dHJpbmcmIHZhbHVlKQotewotICAgIGlmICh2YWx1ZS5pc051bGwoKSB8fCB2YWx1ZS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsKLQotICAgIGZv
ciAoYXV0byByb2xlTmFtZSA6IFN0cmluZ1ZpZXcodmFsdWUpLnNwbGl0KCcgJykpIHsKLSAgICAg
ICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IGFyaWFSb2xlTWFwKCkuZ2V0PEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlU3RyaW5nVmlld0hhc2hUcmFuc2xhdG9yPihyb2xlTmFtZSk7Ci0gICAgICAgIGlm
IChzdGF0aWNfY2FzdDxpbnQ+KHJvbGUpKQotICAgICAgICAgICAgcmV0dXJuIHJvbGU7Ci0gICAg
fQotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsKLX0KLQogU3RyaW5nIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmNvbXB1dGVkUm9sZVN0cmluZygpIGNvbnN0CiB7CiAgICAgLy8g
RklYTUU6IE5lZWQgYSBmZXcgc3BlY2lhbCBjYXNlcyB0aGF0IGFyZW4ndCBpbiB0aGUgUm9sZU1h
cDogb3B0aW9uLCBldGMuIGh0dHA6Ly93ZWJraXQub3JnL2IvMTI4Mjk2CiAgICAgQWNjZXNzaWJp
bGl0eVJvbGUgcm9sZSA9IHJvbGVWYWx1ZSgpOwogCiAgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OkltYWdlICYmIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKLSAgICAgICAgcmV0
dXJuIHJldmVyc2VBcmlhUm9sZU1hcCgpLmdldChzdGF0aWNfY2FzdDxpbnQ+KEFjY2Vzc2liaWxp
dHlSb2xlOjpQcmVzZW50YXRpb25hbCkpOworICAgICAgICByZXR1cm4gYWNjZXNzaWJpbGl0eVJv
bGVTdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRhdGlvbmFsKTsKIAogICAgIC8vIFdl
IGRvIG5vdCBjb21wdXRlIGEgcm9sZSBzdHJpbmcgZm9yIGdlbmVyaWMgYmxvY2sgZWxlbWVudHMg
d2l0aCB1c2VyLWFnZW50IGFzc2lnbmVkIHJvbGVzLgogICAgIGlmIChyb2xlID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpHcm91cCB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0R3JvdXAp
CkBAIC0yNDU2LDI0ICsyMjc2LDI0IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpjb21w
dXRlZFJvbGVTdHJpbmcoKSBjb25zdAogICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpBcHBsaWNhdGlvblRleHRHcm91cAogICAgICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpGb290bm90ZQogICAgICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpHcmFw
aGljc09iamVjdCkKLSAgICAgICAgcmV0dXJuIHJldmVyc2VBcmlhUm9sZU1hcCgpLmdldChzdGF0
aWNfY2FzdDxpbnQ+KEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkdyb3VwKSk7CisgICAg
ICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5Um9sZVN0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZTo6QXBw
bGljYXRpb25Hcm91cCk7CiAKICAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3Jh
cGhpY3NEb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIHJldmVyc2VBcmlhUm9sZU1hcCgpLmdldChz
dGF0aWNfY2FzdDxpbnQ+KEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudCkpOworICAgICAgICBy
ZXR1cm4gYWNjZXNzaWJpbGl0eVJvbGVTdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50
KTsKIAogICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpHcmFwaGljc1N5bWJvbCkK
LSAgICAgICAgcmV0dXJuIHJldmVyc2VBcmlhUm9sZU1hcCgpLmdldChzdGF0aWNfY2FzdDxpbnQ+
KEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZSkpOworICAgICAgICByZXR1cm4gYWNjZXNzaWJpbGl0
eVJvbGVTdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlKTsKIAogICAgIGlmIChyb2xlID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpIb3Jpem9udGFsUnVsZSkKLSAgICAgICAgcmV0dXJuIHJldmVy
c2VBcmlhUm9sZU1hcCgpLmdldChzdGF0aWNfY2FzdDxpbnQ+KEFjY2Vzc2liaWxpdHlSb2xlOjpT
cGxpdHRlcikpOworICAgICAgICByZXR1cm4gYWNjZXNzaWJpbGl0eVJvbGVTdHJpbmcoQWNjZXNz
aWJpbGl0eVJvbGU6OlNwbGl0dGVyKTsKIAogICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpQb3BVcEJ1dHRvbiB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0
b24pCi0gICAgICAgIHJldHVybiByZXZlcnNlQXJpYVJvbGVNYXAoKS5nZXQoc3RhdGljX2Nhc3Q8
aW50PihBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uKSk7CisgICAgICAgIHJldHVybiBhY2Nlc3Np
YmlsaXR5Um9sZVN0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uKTsKIAogICAgIGlmIChy
b2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbikKLSAgICAgICAgcmV0
dXJuIHJldmVyc2VBcmlhUm9sZU1hcCgpLmdldChzdGF0aWNfY2FzdDxpbnQ+KEFjY2Vzc2liaWxp
dHlSb2xlOjpMYW5kbWFya1JlZ2lvbikpOworICAgICAgICByZXR1cm4gYWNjZXNzaWJpbGl0eVJv
bGVTdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrUmVnaW9uKTsKIAotICAgIHJldHVy
biByZXZlcnNlQXJpYVJvbGVNYXAoKS5nZXQoc3RhdGljX2Nhc3Q8aW50Pihyb2xlKSk7CisgICAg
cmV0dXJuIGFjY2Vzc2liaWxpdHlSb2xlU3RyaW5nKHJvbGUpOwogfQogCiBib29sIEFjY2Vzc2li
aWxpdHlPYmplY3Q6Omhhc0hpZ2hsaWdodGluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IDY5ZDNiYzMxMzAx
NTIzY2JhYjE3ZTFlZDlkNGYxMzBhYTgyM2Y4OGEuLmQ4NGZhZDQxMjc0YjI4N2FhYTllNjU3YWU3
ZTQwYzA3ZTczZWQyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC01MzMsNyArNTMzLDYgQEAgcHVibGljOgogICAgIHZv
aWQgaGFuZGxlQWN0aXZlRGVzY2VuZGFudENoYW5nZWQoKSBvdmVycmlkZSB7IH0KICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBmaXJzdEFub255bW91c0Jsb2NrQ2hpbGQoKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBY2Nlc3NpYmlsaXR5Um9sZSBhcmlhUm9s
ZVRvV2ViQ29yZVJvbGUoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCBib29sIGhhc0F0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAgdmlydHVhbCBjb25zdCBBdG9t
U3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAgIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBhdHRyaWJ1dGVWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdCBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKaW5kZXggZDNiY2QwOTA0MWYwM2EyYzFmOTMy
M2UwMjNjN2NmM2NiMmE5NzllNi4uMjI5ZDI2OWY2N2NkZDBkN2IyN2ExNGFiNTdkODNjMTVhZTJj
OWIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxOS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogCiAvLyBGSVhNRTog
U2hvdWxkIHJlbmFtZSB0aGlzIGZpbGUgQVhDb3JlT2JqZWN0LmguCiAKKyNpbmNsdWRlICJFbGVt
ZW50QWNjZXNzaWJpbGl0eS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5j
bHVkZSAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0
LmgiCkBAIC0xMTAsMTYxICsxMTEsNiBAQCBlbnVtIGNsYXNzIEFYQW5jZXN0b3JGbGFnIDogdWlu
dDhfdCB7CiAgICAgLy8gQml0cyA2IGFuZCA3IGFyZSBmcmVlLgogfTsKIAotZW51bSBjbGFzcyBB
Y2Nlc3NpYmlsaXR5Um9sZSB7Ci0gICAgQW5ub3RhdGlvbiA9IDEsCi0gICAgQXBwbGljYXRpb24s
Ci0gICAgQXBwbGljYXRpb25BbGVydCwKLSAgICBBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nLAotICAg
IEFwcGxpY2F0aW9uRGlhbG9nLAotICAgIEFwcGxpY2F0aW9uR3JvdXAsCi0gICAgQXBwbGljYXRp
b25Mb2csCi0gICAgQXBwbGljYXRpb25NYXJxdWVlLAotICAgIEFwcGxpY2F0aW9uU3RhdHVzLAot
ICAgIEFwcGxpY2F0aW9uVGV4dEdyb3VwLAotICAgIEFwcGxpY2F0aW9uVGltZXIsCi0gICAgQXVk
aW8sCi0gICAgQmxvY2txdW90ZSwKLSAgICBCcm93c2VyLAotICAgIEJ1c3lJbmRpY2F0b3IsCi0g
ICAgQnV0dG9uLAotICAgIENhbnZhcywKLSAgICBDYXB0aW9uLAotICAgIENlbGwsCi0gICAgQ2hl
Y2tCb3gsCi0gICAgQ29sb3JXZWxsLAotICAgIENvbHVtbiwKLSAgICBDb2x1bW5IZWFkZXIsCi0g
ICAgQ29tYm9Cb3gsCi0gICAgRGVmaW5pdGlvbiwKLSAgICBEZWxldGlvbiwKLSAgICBEZXNjcmlw
dGlvbkxpc3QsCi0gICAgRGVzY3JpcHRpb25MaXN0RGV0YWlsLAotICAgIERlc2NyaXB0aW9uTGlz
dFRlcm0sCi0gICAgRGV0YWlscywKLSAgICBEaXJlY3RvcnksCi0gICAgRGlzY2xvc3VyZVRyaWFu
Z2xlLAotICAgIERpdiwKLSAgICBEb2N1bWVudCwKLSAgICBEb2N1bWVudEFydGljbGUsCi0gICAg
RG9jdW1lbnRNYXRoLAotICAgIERvY3VtZW50Tm90ZSwKLSAgICBEcmF3ZXIsCi0gICAgRWRpdGFi
bGVUZXh0LAotICAgIEZlZWQsCi0gICAgRmlndXJlLAotICAgIEZvb3RlciwKLSAgICBGb290bm90
ZSwKLSAgICBGb3JtLAotICAgIEdyYXBoaWNzRG9jdW1lbnQsCi0gICAgR3JhcGhpY3NPYmplY3Qs
Ci0gICAgR3JhcGhpY3NTeW1ib2wsCi0gICAgR3JpZCwKLSAgICBHcmlkQ2VsbCwKLSAgICBHcm91
cCwKLSAgICBHcm93QXJlYSwKLSAgICBIZWFkaW5nLAotICAgIEhlbHBUYWcsCi0gICAgSG9yaXpv
bnRhbFJ1bGUsCi0gICAgSWdub3JlZCwKLSAgICBJbmxpbmUsCi0gICAgSW1hZ2UsCi0gICAgSW1h
Z2VNYXAsCi0gICAgSW1hZ2VNYXBMaW5rLAotICAgIEluY3JlbWVudG9yLAotICAgIEluc2VydGlv
biwKLSAgICBMYWJlbCwKLSAgICBMYW5kbWFya0Jhbm5lciwKLSAgICBMYW5kbWFya0NvbXBsZW1l
bnRhcnksCi0gICAgTGFuZG1hcmtDb250ZW50SW5mbywKLSAgICBMYW5kbWFya0RvY1JlZ2lvbiwK
LSAgICBMYW5kbWFya01haW4sCi0gICAgTGFuZG1hcmtOYXZpZ2F0aW9uLAotICAgIExhbmRtYXJr
UmVnaW9uLAotICAgIExhbmRtYXJrU2VhcmNoLAotICAgIExlZ2VuZCwKLSAgICBMaW5rLAotICAg
IExpc3QsCi0gICAgTGlzdEJveCwKLSAgICBMaXN0Qm94T3B0aW9uLAotICAgIExpc3RJdGVtLAot
ICAgIExpc3RNYXJrZXIsCi0gICAgTWFyaywKLSAgICBNYXRoRWxlbWVudCwKLSAgICBNYXR0ZSwK
LSAgICBNZW51LAotICAgIE1lbnVCYXIsCi0gICAgTWVudUJ1dHRvbiwKLSAgICBNZW51SXRlbSwK
LSAgICBNZW51SXRlbUNoZWNrYm94LAotICAgIE1lbnVJdGVtUmFkaW8sCi0gICAgTWVudUxpc3RQ
b3B1cCwKLSAgICBNZW51TGlzdE9wdGlvbiwKLSAgICBNZXRlciwKLSAgICBNb2RlbCwKLSAgICBP
dXRsaW5lLAotICAgIFBhcmFncmFwaCwKLSAgICBQb3BVcEJ1dHRvbiwKLSAgICBQcmUsCi0gICAg
UHJlc2VudGF0aW9uYWwsCi0gICAgUHJvZ3Jlc3NJbmRpY2F0b3IsCi0gICAgUmFkaW9CdXR0b24s
Ci0gICAgUmFkaW9Hcm91cCwKLSAgICBSb3dIZWFkZXIsCi0gICAgUm93LAotICAgIFJvd0dyb3Vw
LAotICAgIFJ1YnlCYXNlLAotICAgIFJ1YnlCbG9jaywKLSAgICBSdWJ5SW5saW5lLAotICAgIFJ1
YnlSdW4sCi0gICAgUnVieVRleHQsCi0gICAgUnVsZXIsCi0gICAgUnVsZXJNYXJrZXIsCi0gICAg
U2Nyb2xsQXJlYSwKLSAgICBTY3JvbGxCYXIsCi0gICAgU2VhcmNoRmllbGQsCi0gICAgU2hlZXQs
Ci0gICAgU2xpZGVyLAotICAgIFNsaWRlclRodW1iLAotICAgIFNwaW5CdXR0b24sCi0gICAgU3Bp
bkJ1dHRvblBhcnQsCi0gICAgU3BsaXRHcm91cCwKLSAgICBTcGxpdHRlciwKLSAgICBTdGF0aWNU
ZXh0LAotICAgIFN1YnNjcmlwdCwKLSAgICBTdW1tYXJ5LAotICAgIFN1cGVyc2NyaXB0LAotICAg
IFN3aXRjaCwKLSAgICBTeXN0ZW1XaWRlLAotICAgIFNWR1Jvb3QsCi0gICAgU1ZHVGV4dCwKLSAg
ICBTVkdUU3BhbiwKLSAgICBTVkdUZXh0UGF0aCwKLSAgICBUYWJHcm91cCwKLSAgICBUYWJMaXN0
LAotICAgIFRhYlBhbmVsLAotICAgIFRhYiwKLSAgICBUYWJsZSwKLSAgICBUYWJsZUhlYWRlckNv
bnRhaW5lciwKLSAgICBUZXJtLAotICAgIFRleHRBcmVhLAotICAgIFRleHRGaWVsZCwKLSAgICBU
ZXh0R3JvdXAsCi0gICAgVGltZSwKLSAgICBUcmVlLAotICAgIFRyZWVHcmlkLAotICAgIFRyZWVJ
dGVtLAotICAgIFRvZ2dsZUJ1dHRvbiwKLSAgICBUb29sYmFyLAotICAgIFVua25vd24sCi0gICAg
VXNlckludGVyZmFjZVRvb2x0aXAsCi0gICAgVmFsdWVJbmRpY2F0b3IsCi0gICAgVmlkZW8sCi0g
ICAgV2ViQXBwbGljYXRpb24sCi0gICAgV2ViQXJlYSwKLSAgICBXZWJDb3JlTGluaywKLSAgICBX
aW5kb3csCi19OwotCiB1c2luZyBBY2Nlc3NpYmlsaXR5Um9sZVNldCA9IEhhc2hTZXQ8QWNjZXNz
aWJpbGl0eVJvbGUsIEludEhhc2g8QWNjZXNzaWJpbGl0eVJvbGU+LCBXVEY6OlN0cm9uZ0VudW1I
YXNoVHJhaXRzPEFjY2Vzc2liaWxpdHlSb2xlPj47CiAKIEFMV0FZU19JTkxJTkUgU3RyaW5nIGFj
Y2Vzc2liaWxpdHlSb2xlVG9TdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QWNjZXNzaWJpbGl0eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudEFjY2Vzc2liaWxpdHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwYmU4Zjc4
ZjZmY2ZiMWY4ZDdhZmQ4M2MxZjVhY2RhNDA4OTE4MjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudEFjY2Vzc2liaWxpdHkuY3BwCkBAIC0wLDAgKzEsMjI4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkVsZW1lbnRBY2Nl
c3NpYmlsaXR5LmgiCisKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudElu
bGluZXMuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdWaWV3Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgQVJJQVJvbGVNYXAg
PSBIYXNoTWFwPFN0cmluZywgQWNjZXNzaWJpbGl0eVJvbGUsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZl
SGFzaD47CitzdGF0aWMgQVJJQVJvbGVNYXAqIGdBcmlhUm9sZU1hcCA9IG51bGxwdHI7CisKK3Vz
aW5nIEFSSUFSZXZlcnNlUm9sZU1hcCA9IEhhc2hNYXA8QWNjZXNzaWJpbGl0eVJvbGUsIEFTQ0lJ
TGl0ZXJhbCwgRGVmYXVsdEhhc2g8aW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRy
YWl0czxpbnQ+PjsKK3N0YXRpYyBBUklBUmV2ZXJzZVJvbGVNYXAqIGdBcmlhUmV2ZXJzZVJvbGVN
YXAgPSBudWxscHRyOworCitzdGF0aWMgdm9pZCBpbml0aWFsaXplUm9sZU1hcCgpCit7CisgICAg
aWYgKGdBcmlhUm9sZU1hcCkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVCghZ0FyaWFSZXZl
cnNlUm9sZU1hcCk7CisKKyAgICBzdHJ1Y3QgUm9sZUVudHJ5IHsKKyAgICAgICAgQVNDSUlMaXRl
cmFsIGFyaWFSb2xlOworICAgICAgICBBY2Nlc3NpYmlsaXR5Um9sZSB3ZWJjb3JlUm9sZTsKKyAg
ICB9OworCisgICAgc3RhdGljIGNvbnN0ZXhwciBSb2xlRW50cnkgcm9sZXNbXSA9IHsKKyAgICAg
ICAgeyAiYWxlcnQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkFsZXJ0IH0sCisg
ICAgICAgIHsgImFsZXJ0ZGlhbG9nIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25B
bGVydERpYWxvZyB9LAorICAgICAgICB7ICJhcHBsaWNhdGlvbiJfcywgQWNjZXNzaWJpbGl0eVJv
bGU6OldlYkFwcGxpY2F0aW9uIH0sCisgICAgICAgIHsgImFydGljbGUiX3MsIEFjY2Vzc2liaWxp
dHlSb2xlOjpEb2N1bWVudEFydGljbGUgfSwKKyAgICAgICAgeyAiYmFubmVyIl9zLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGFuZG1hcmtCYW5uZXIgfSwKKyAgICAgICAgeyAiYmxvY2txdW90ZSJfcywg
QWNjZXNzaWJpbGl0eVJvbGU6OkJsb2NrcXVvdGUgfSwKKyAgICAgICAgeyAiYnV0dG9uIl9zLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uIH0sCisgICAgICAgIHsgImNhcHRpb24iX3MsIEFjY2Vz
c2liaWxpdHlSb2xlOjpDYXB0aW9uIH0sCisgICAgICAgIHsgImNoZWNrYm94Il9zLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6Q2hlY2tCb3ggfSwKKyAgICAgICAgeyAiY29tcGxlbWVudGFyeSJfcywgQWNj
ZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29tcGxlbWVudGFyeSB9LAorICAgICAgICB7ICJjb250
ZW50aW5mbyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29udGVudEluZm8gfSwKKyAg
ICAgICAgeyAiZGVsZXRpb24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpEZWxldGlvbiB9LAorICAg
ICAgICB7ICJkaWFsb2ciX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkRpYWxvZyB9
LAorICAgICAgICB7ICJkaXJlY3RvcnkiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpEaXJlY3Rvcnkg
fSwKKyAgICAgICAgLy8gVGhlICdkb2MtKicgcm9sZXMgYXJlIGRlZmluZWQgdGhlIEFSSUEgRFBV
QiBtb2JpbGU6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9kcHViLWFhbS0xLjAKKyAgICAgICAgLy8g
RWRpdG9yJ3MgZHJhZnQgaXMgY3VycmVudGx5IGF0IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9kcHVi
LWFhbQorICAgICAgICB7ICJkb2MtYWJzdHJhY3QiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBs
aWNhdGlvblRleHRHcm91cCB9LAorICAgICAgICB7ICJkb2MtYWNrbm93bGVkZ21lbnRzIl9zLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLWFm
dGVyd29yZCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAg
ICAgIHsgImRvYy1hcHBlbmRpeCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVn
aW9uIH0sCisgICAgICAgIHsgImRvYy1iYWNrbGluayJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Oldl
YkNvcmVMaW5rIH0sCisgICAgICAgIHsgImRvYy1iaWJsaW9lbnRyeSJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6Okxpc3RJdGVtIH0sCisgICAgICAgIHsgImRvYy1iaWJsaW9ncmFwaHkiX3MsIEFjY2Vz
c2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtYmlibGlv
cmVmIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbmsgfSwKKyAgICAgICAgeyAiZG9j
LWNoYXB0ZXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAg
ICAgICB7ICJkb2MtY29sb3Bob24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRl
eHRHcm91cCB9LAorICAgICAgICB7ICJkb2MtY29uY2x1c2lvbiJfcywgQWNjZXNzaWJpbGl0eVJv
bGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1jb3ZlciJfcywgQWNjZXNz
aWJpbGl0eVJvbGU6OkltYWdlIH0sCisgICAgICAgIHsgImRvYy1jcmVkaXQiX3MsIEFjY2Vzc2li
aWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB9LAorICAgICAgICB7ICJkb2MtY3JlZGl0
cyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsg
ImRvYy1kZWRpY2F0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3Jv
dXAgfSwKKyAgICAgICAgeyAiZG9jLWVuZG5vdGUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0
SXRlbSB9LAorICAgICAgICB7ICJkb2MtZW5kbm90ZXMiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpM
YW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtZXBpZ3JhcGgiX3MsIEFjY2Vzc2li
aWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB9LAorICAgICAgICB7ICJkb2MtZXBpbG9n
dWUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7
ICJkb2MtZXJyYXRhIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwK
KyAgICAgICAgeyAiZG9jLWV4YW1wbGUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlv
blRleHRHcm91cCB9LAorICAgICAgICB7ICJkb2MtZm9vdG5vdGUiX3MsIEFjY2Vzc2liaWxpdHlS
b2xlOjpGb290bm90ZSB9LAorICAgICAgICB7ICJkb2MtZm9yZXdvcmQiX3MsIEFjY2Vzc2liaWxp
dHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtZ2xvc3NhcnkiX3Ms
IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2Mt
Z2xvc3NyZWYiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3JlTGluayB9LAorICAgICAgICB7
ICJkb2MtaW5kZXgiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb24gfSwK
KyAgICAgICAgeyAiZG9jLWludHJvZHVjdGlvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRt
YXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1ub3RlcmVmIl9zLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6V2ViQ29yZUxpbmsgfSwKKyAgICAgICAgeyAiZG9jLW5vdGljZSJfcywgQWNjZXNzaWJp
bGl0eVJvbGU6OkRvY3VtZW50Tm90ZSB9LAorICAgICAgICB7ICJkb2MtcGFnZWJyZWFrIl9zLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXIgfSwKKyAgICAgICAgeyAiZG9jLXBhZ2VsaXN0Il9z
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0aW9uIH0sCisgICAgICAgIHsgImRv
Yy1wYXJ0Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKKyAgICAg
ICAgeyAiZG9jLXByZWZhY2UiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lv
biB9LAorICAgICAgICB7ICJkb2MtcHJvbG9ndWUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5k
bWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtcHVsbHF1b3RlIl9zLCBBY2Nlc3NpYmls
aXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAgfSwKKyAgICAgICAgeyAiZG9jLXFuYSJfcywg
QWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0sCisgICAgICAgIHsgImRv
Yy1zdWJ0aXRsZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmcgfSwKKyAgICAgICAgeyAi
ZG9jLXRpcCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50Tm90ZSB9LAorICAgICAgICB7
ICJkb2MtdG9jIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0aW9uIH0sCisg
ICAgICAgIHsgImZpZ3VyZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkZpZ3VyZSB9LAorICAgICAg
ICAvLyBUaGUgbWFwcGluZ3MgZm9yICdncmFwaGljcy0qJyByb2xlcyBhcmUgZGVmaW5lZCBpbiB0
aGlzIHNwZWM6IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9ncmFwaGljcy1hYW0vCisgICAgICAgIHsg
ImdyYXBoaWNzLWRvY3VtZW50Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JhcGhpY3NEb2N1bWVu
dCB9LAorICAgICAgICB7ICJncmFwaGljcy1vYmplY3QiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpH
cmFwaGljc09iamVjdCB9LAorICAgICAgICB7ICJncmFwaGljcy1zeW1ib2wiX3MsIEFjY2Vzc2li
aWxpdHlSb2xlOjpHcmFwaGljc1N5bWJvbCB9LAorICAgICAgICB7ICJncmlkIl9zLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6R3JpZCB9LAorICAgICAgICB7ICJncmlkY2VsbCJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6OkdyaWRDZWxsIH0sCisgICAgICAgIHsgInRhYmxlIl9zLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VGFibGUgfSwKKyAgICAgICAgeyAiY2VsbCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkNlbGwg
fSwKKyAgICAgICAgeyAiY29sdW1uaGVhZGVyIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1u
SGVhZGVyIH0sCisgICAgICAgIHsgImNvbWJvYm94Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29t
Ym9Cb3ggfSwKKyAgICAgICAgeyAiZGVmaW5pdGlvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkRl
ZmluaXRpb24gfSwKKyAgICAgICAgeyAiZG9jdW1lbnQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpE
b2N1bWVudCB9LAorICAgICAgICB7ICJmZWVkIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RmVlZCB9
LAorICAgICAgICB7ICJmb3JtIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9ybSB9LAorICAgICAg
ICB7ICJyb3doZWFkZXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpSb3dIZWFkZXIgfSwKKyAgICAg
ICAgeyAiZ3JvdXAiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkdyb3VwIH0sCisg
ICAgICAgIHsgImhlYWRpbmciX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nIH0sCisgICAg
ICAgIC8vIFRoZSAiaW1hZ2UiIHJvbGUgaXMgc3lub255bW91cyB3aXRoIHRoZSAiaW1nIiByb2xl
LiBodHRwczovL3czYy5naXRodWIuaW8vYXJpYS8jaW1hZ2UKKyAgICAgICAgeyAiaW1hZ2UiX3Ms
IEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZSB9LAorICAgICAgICB7ICJpbWciX3MsIEFjY2Vzc2li
aWxpdHlSb2xlOjpJbWFnZSB9LAorICAgICAgICB7ICJpbnNlcnRpb24iX3MsIEFjY2Vzc2liaWxp
dHlSb2xlOjpJbnNlcnRpb24gfSwKKyAgICAgICAgeyAibGluayJfcywgQWNjZXNzaWJpbGl0eVJv
bGU6OldlYkNvcmVMaW5rIH0sCisgICAgICAgIHsgImxpc3QiX3MsIEFjY2Vzc2liaWxpdHlSb2xl
OjpMaXN0IH0sCisgICAgICAgIHsgImxpc3RpdGVtIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlz
dEl0ZW0gfSwKKyAgICAgICAgeyAibGlzdGJveCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RC
b3ggfSwKKyAgICAgICAgeyAibG9nIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25M
b2cgfSwKKyAgICAgICAgeyAibWFpbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTWFp
biB9LAorICAgICAgICB7ICJtYXJxdWVlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRp
b25NYXJxdWVlIH0sCisgICAgICAgIHsgIm1hdGgiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1
bWVudE1hdGggfSwKKyAgICAgICAgeyAibWVudSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnUg
fSwKKyAgICAgICAgeyAibWVudWJhciJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCYXIgfSwK
KyAgICAgICAgeyAibWVudWl0ZW0iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbSB9LAor
ICAgICAgICB7ICJtZW51aXRlbWNoZWNrYm94Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0
ZW1DaGVja2JveCB9LAorICAgICAgICB7ICJtZW51aXRlbXJhZGlvIl9zLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6TWVudUl0ZW1SYWRpbyB9LAorICAgICAgICB7ICJtZXRlciJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6Ok1ldGVyIH0sCisgICAgICAgIHsgIm5vbmUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpQ
cmVzZW50YXRpb25hbCB9LAorICAgICAgICB7ICJub3RlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
RG9jdW1lbnROb3RlIH0sCisgICAgICAgIHsgIm5hdmlnYXRpb24iX3MsIEFjY2Vzc2liaWxpdHlS
b2xlOjpMYW5kbWFya05hdmlnYXRpb24gfSwKKyAgICAgICAgeyAib3B0aW9uIl9zLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGlzdEJveE9wdGlvbiB9LAorICAgICAgICB7ICJwYXJhZ3JhcGgiX3MsIEFj
Y2Vzc2liaWxpdHlSb2xlOjpQYXJhZ3JhcGggfSwKKyAgICAgICAgeyAicHJlc2VudGF0aW9uIl9z
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlc2VudGF0aW9uYWwgfSwKKyAgICAgICAgeyAicHJvZ3Jl
c3NiYXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpQcm9ncmVzc0luZGljYXRvciB9LAorICAgICAg
ICB7ICJyYWRpbyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uIH0sCisgICAgICAg
IHsgInJhZGlvZ3JvdXAiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0dyb3VwIH0sCisgICAg
ICAgIHsgInJlZ2lvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrUmVnaW9uIH0sCisg
ICAgICAgIHsgInJvdyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlJvdyB9LAorICAgICAgICB7ICJy
b3dncm91cCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0dyb3VwIH0sCisgICAgICAgIHsgInNj
cm9sbGJhciJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEJhciB9LAorICAgICAgICB7ICJz
ZWFyY2giX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1NlYXJjaCB9LAorICAgICAgICB7
ICJzZWFyY2hib3giX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpTZWFyY2hGaWVsZCB9LAorICAgICAg
ICB7ICJzZXBhcmF0b3IiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpTcGxpdHRlciB9LAorICAgICAg
ICB7ICJzbGlkZXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXIgfSwKKyAgICAgICAgeyAi
c3BpbmJ1dHRvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0b24gfSwKKyAgICAgICAg
eyAic3RhdHVzIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25TdGF0dXMgfSwKKyAg
ICAgICAgeyAic3Vic2NyaXB0Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6U3Vic2NyaXB0IH0sCisg
ICAgICAgIHsgInN1cGVyc2NyaXB0Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6U3VwZXJzY3JpcHQg
fSwKKyAgICAgICAgeyAic3dpdGNoIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6U3dpdGNoIH0sCisg
ICAgICAgIHsgInRhYiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYiB9LAorICAgICAgICB7ICJ0
YWJsaXN0Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiTGlzdCB9LAorICAgICAgICB7ICJ0YWJw
YW5lbCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYlBhbmVsIH0sCisgICAgICAgIHsgInRleHQi
X3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0IH0sCisgICAgICAgIHsgInRleHRib3gi
X3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0QXJlYSB9LAorICAgICAgICB7ICJ0ZXJtIl9zLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6VGVybSB9LAorICAgICAgICB7ICJ0aW1lIl9zLCBBY2Nlc3NpYmls
aXR5Um9sZTo6VGltZSB9LAorICAgICAgICB7ICJ0aW1lciJfcywgQWNjZXNzaWJpbGl0eVJvbGU6
OkFwcGxpY2F0aW9uVGltZXIgfSwKKyAgICAgICAgeyAidG9vbGJhciJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6OlRvb2xiYXIgfSwKKyAgICAgICAgeyAidG9vbHRpcCJfcywgQWNjZXNzaWJpbGl0eVJv
bGU6OlVzZXJJbnRlcmZhY2VUb29sdGlwIH0sCisgICAgICAgIHsgInRyZWUiX3MsIEFjY2Vzc2li
aWxpdHlSb2xlOjpUcmVlIH0sCisgICAgICAgIHsgInRyZWVncmlkIl9zLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6VHJlZUdyaWQgfSwKKyAgICAgICAgeyAidHJlZWl0ZW0iX3MsIEFjY2Vzc2liaWxpdHlS
b2xlOjpUcmVlSXRlbSB9CisgICAgfTsKKworICAgIGdBcmlhUm9sZU1hcCA9IG5ldyBBUklBUm9s
ZU1hcDsKKyAgICBnQXJpYVJldmVyc2VSb2xlTWFwID0gbmV3IEFSSUFSZXZlcnNlUm9sZU1hcDsK
KyAgICBzaXplX3Qgcm9sZUxlbmd0aCA9IFdURl9BUlJBWV9MRU5HVEgocm9sZXMpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9sZUxlbmd0aDsgKytpKSB7CisgICAgICAgIGdBcmlhUm9s
ZU1hcC0+c2V0KHJvbGVzW2ldLmFyaWFSb2xlLCByb2xlc1tpXS53ZWJjb3JlUm9sZSk7CisgICAg
ICAgIGdBcmlhUmV2ZXJzZVJvbGVNYXAtPnNldChzdGF0aWNfY2FzdDxpbnQ+KHJvbGVzW2ldLndl
YmNvcmVSb2xlKSwgcm9sZXNbaV0uYXJpYVJvbGUpOworICAgIH0KKyAgICBnQXJpYVJldmVyc2VS
b2xlTWFwLT5zZXQoc3RhdGljX2Nhc3Q8aW50PihBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2UpLCAi
aW1hZ2UiX3MpOworfQorCitzdGF0aWMgQVJJQVJvbGVNYXAmIGFyaWFSb2xlTWFwKCkKK3sKKyAg
ICBpbml0aWFsaXplUm9sZU1hcCgpOworICAgIHJldHVybiAqZ0FyaWFSb2xlTWFwOworfQorCitz
dGF0aWMgQVJJQVJldmVyc2VSb2xlTWFwJiByZXZlcnNlQXJpYVJvbGVNYXAoKQoreworICAgIGlu
aXRpYWxpemVSb2xlTWFwKCk7CisgICAgcmV0dXJuICpnQXJpYVJldmVyc2VSb2xlTWFwOworfQor
CitBU0NJSUxpdGVyYWwgYWNjZXNzaWJpbGl0eVJvbGVTdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUg
cm9sZSkKK3sKKyAgICBpZiAoYXV0byBzdHJpbmcgPSByZXZlcnNlQXJpYVJvbGVNYXAoKS5nZXQo
c3RhdGljX2Nhc3Q8aW50Pihyb2xlKSk7ICFzdHJpbmcuaXNOdWxsKCkpCisgICAgICAgIHJldHVy
biBzdHJpbmc7CisgICAgcmV0dXJuICIiX3M7Cit9CisKK3N0ZDo6b3B0aW9uYWw8QWNjZXNzaWJp
bGl0eVJvbGU+IGFjY2Vzc2liaWxpdHlSb2xlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCit7Cisg
ICAgYXV0byYgdmFsdWUgPSBlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
SFRNTE5hbWVzOjpyb2xlQXR0cik7CisgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGZvciAoYXV0byByb2xlTmFtZSA6IFN0cmluZ1Zp
ZXcodmFsdWUpLnNwbGl0KCcgJykpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2VlbXMgbGlr
ZSBpdCBkZXBlbmRzIG9uIHVuZGVmaW5lZCBiZWhhdmlvciwgc2luY2UgMCBpcyBub3QgYSB2YWxp
ZCBlbnVtIHZhbHVlIGZvciBBY2Nlc3NpYmlsaXR5Um9sZS4KKyAgICAgICAgaWYgKGF1dG8gcm9s
ZSA9IGFyaWFSb2xlTWFwKCkuZ2V0PEFTQ0lJQ2FzZUluc2Vuc2l0aXZlU3RyaW5nVmlld0hhc2hU
cmFuc2xhdG9yPihyb2xlTmFtZSk7IHN0YXRpY19jYXN0PGludD4ocm9sZSkpCisgICAgICAgICAg
ICByZXR1cm4gcm9sZTsKKyAgICB9CisKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlVu
a25vd247Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50QWNjZXNzaWJpbGl0eS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRBY2Nlc3NpYmlsaXR5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQyZWIzZmRiMTYyNGQzMGEwYWMwMmM4
N2RhN2E3YTJkY2JiNmM4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50QWNjZXNzaWJpbGl0eS5oCkBAIC0wLDAgKzEsMTkzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBFbGVtZW50OworCitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlS
b2xlIDogdWludDhfdCB7CisgICAgQW5ub3RhdGlvbiA9IDEsCisgICAgQXBwbGljYXRpb24sCisg
ICAgQXBwbGljYXRpb25BbGVydCwKKyAgICBBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nLAorICAgIEFw
cGxpY2F0aW9uRGlhbG9nLAorICAgIEFwcGxpY2F0aW9uR3JvdXAsCisgICAgQXBwbGljYXRpb25M
b2csCisgICAgQXBwbGljYXRpb25NYXJxdWVlLAorICAgIEFwcGxpY2F0aW9uU3RhdHVzLAorICAg
IEFwcGxpY2F0aW9uVGV4dEdyb3VwLAorICAgIEFwcGxpY2F0aW9uVGltZXIsCisgICAgQXVkaW8s
CisgICAgQmxvY2txdW90ZSwKKyAgICBCcm93c2VyLAorICAgIEJ1c3lJbmRpY2F0b3IsCisgICAg
QnV0dG9uLAorICAgIENhbnZhcywKKyAgICBDYXB0aW9uLAorICAgIENlbGwsCisgICAgQ2hlY2tC
b3gsCisgICAgQ29sb3JXZWxsLAorICAgIENvbHVtbiwKKyAgICBDb2x1bW5IZWFkZXIsCisgICAg
Q29tYm9Cb3gsCisgICAgRGVmaW5pdGlvbiwKKyAgICBEZWxldGlvbiwKKyAgICBEZXNjcmlwdGlv
bkxpc3QsCisgICAgRGVzY3JpcHRpb25MaXN0RGV0YWlsLAorICAgIERlc2NyaXB0aW9uTGlzdFRl
cm0sCisgICAgRGV0YWlscywKKyAgICBEaXJlY3RvcnksCisgICAgRGlzY2xvc3VyZVRyaWFuZ2xl
LAorICAgIERpdiwKKyAgICBEb2N1bWVudCwKKyAgICBEb2N1bWVudEFydGljbGUsCisgICAgRG9j
dW1lbnRNYXRoLAorICAgIERvY3VtZW50Tm90ZSwKKyAgICBEcmF3ZXIsCisgICAgRWRpdGFibGVU
ZXh0LAorICAgIEZlZWQsCisgICAgRmlndXJlLAorICAgIEZvb3RlciwKKyAgICBGb290bm90ZSwK
KyAgICBGb3JtLAorICAgIEdyYXBoaWNzRG9jdW1lbnQsCisgICAgR3JhcGhpY3NPYmplY3QsCisg
ICAgR3JhcGhpY3NTeW1ib2wsCisgICAgR3JpZCwKKyAgICBHcmlkQ2VsbCwKKyAgICBHcm91cCwK
KyAgICBHcm93QXJlYSwKKyAgICBIZWFkaW5nLAorICAgIEhlbHBUYWcsCisgICAgSG9yaXpvbnRh
bFJ1bGUsCisgICAgSWdub3JlZCwKKyAgICBJbmxpbmUsCisgICAgSW1hZ2UsCisgICAgSW1hZ2VN
YXAsCisgICAgSW1hZ2VNYXBMaW5rLAorICAgIEluY3JlbWVudG9yLAorICAgIEluc2VydGlvbiwK
KyAgICBMYWJlbCwKKyAgICBMYW5kbWFya0Jhbm5lciwKKyAgICBMYW5kbWFya0NvbXBsZW1lbnRh
cnksCisgICAgTGFuZG1hcmtDb250ZW50SW5mbywKKyAgICBMYW5kbWFya0RvY1JlZ2lvbiwKKyAg
ICBMYW5kbWFya01haW4sCisgICAgTGFuZG1hcmtOYXZpZ2F0aW9uLAorICAgIExhbmRtYXJrUmVn
aW9uLAorICAgIExhbmRtYXJrU2VhcmNoLAorICAgIExlZ2VuZCwKKyAgICBMaW5rLAorICAgIExp
c3QsCisgICAgTGlzdEJveCwKKyAgICBMaXN0Qm94T3B0aW9uLAorICAgIExpc3RJdGVtLAorICAg
IExpc3RNYXJrZXIsCisgICAgTWFyaywKKyAgICBNYXRoRWxlbWVudCwKKyAgICBNYXR0ZSwKKyAg
ICBNZW51LAorICAgIE1lbnVCYXIsCisgICAgTWVudUJ1dHRvbiwKKyAgICBNZW51SXRlbSwKKyAg
ICBNZW51SXRlbUNoZWNrYm94LAorICAgIE1lbnVJdGVtUmFkaW8sCisgICAgTWVudUxpc3RQb3B1
cCwKKyAgICBNZW51TGlzdE9wdGlvbiwKKyAgICBNZXRlciwKKyAgICBNb2RlbCwKKyAgICBPdXRs
aW5lLAorICAgIFBhcmFncmFwaCwKKyAgICBQb3BVcEJ1dHRvbiwKKyAgICBQcmUsCisgICAgUHJl
c2VudGF0aW9uYWwsCisgICAgUHJvZ3Jlc3NJbmRpY2F0b3IsCisgICAgUmFkaW9CdXR0b24sCisg
ICAgUmFkaW9Hcm91cCwKKyAgICBSb3dIZWFkZXIsCisgICAgUm93LAorICAgIFJvd0dyb3VwLAor
ICAgIFJ1YnlCYXNlLAorICAgIFJ1YnlCbG9jaywKKyAgICBSdWJ5SW5saW5lLAorICAgIFJ1YnlS
dW4sCisgICAgUnVieVRleHQsCisgICAgUnVsZXIsCisgICAgUnVsZXJNYXJrZXIsCisgICAgU2Ny
b2xsQXJlYSwKKyAgICBTY3JvbGxCYXIsCisgICAgU2VhcmNoRmllbGQsCisgICAgU2hlZXQsCisg
ICAgU2xpZGVyLAorICAgIFNsaWRlclRodW1iLAorICAgIFNwaW5CdXR0b24sCisgICAgU3BpbkJ1
dHRvblBhcnQsCisgICAgU3BsaXRHcm91cCwKKyAgICBTcGxpdHRlciwKKyAgICBTdGF0aWNUZXh0
LAorICAgIFN1YnNjcmlwdCwKKyAgICBTdW1tYXJ5LAorICAgIFN1cGVyc2NyaXB0LAorICAgIFN3
aXRjaCwKKyAgICBTeXN0ZW1XaWRlLAorICAgIFNWR1Jvb3QsCisgICAgU1ZHVGV4dCwKKyAgICBT
VkdUU3BhbiwKKyAgICBTVkdUZXh0UGF0aCwKKyAgICBUYWJHcm91cCwKKyAgICBUYWJMaXN0LAor
ICAgIFRhYlBhbmVsLAorICAgIFRhYiwKKyAgICBUYWJsZSwKKyAgICBUYWJsZUhlYWRlckNvbnRh
aW5lciwKKyAgICBUZXJtLAorICAgIFRleHRBcmVhLAorICAgIFRleHRGaWVsZCwKKyAgICBUZXh0
R3JvdXAsCisgICAgVGltZSwKKyAgICBUcmVlLAorICAgIFRyZWVHcmlkLAorICAgIFRyZWVJdGVt
LAorICAgIFRvZ2dsZUJ1dHRvbiwKKyAgICBUb29sYmFyLAorICAgIFVua25vd24sCisgICAgVXNl
ckludGVyZmFjZVRvb2x0aXAsCisgICAgVmFsdWVJbmRpY2F0b3IsCisgICAgVmlkZW8sCisgICAg
V2ViQXBwbGljYXRpb24sCisgICAgV2ViQXJlYSwKKyAgICBXZWJDb3JlTGluaywKKyAgICBXaW5k
b3csCit9OworCitBU0NJSUxpdGVyYWwgYWNjZXNzaWJpbGl0eVJvbGVTdHJpbmcoQWNjZXNzaWJp
bGl0eVJvbGUpOworCitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEFjY2Vzc2liaWxpdHlS
b2xlPiBhY2Nlc3NpYmlsaXR5Um9sZShjb25zdCBFbGVtZW50Jik7CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxh
dGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlci5jcHAKaW5kZXggNDc0MjlkNTkxN2EyM2EyZWRhZTE2ZDBmNzdmOTQxMmNh
OGY1NmEwZS4uOTI2M2RmNTI4Y2ZkYTQwMWZmYzI3OGUwYmY5N2FkN2E5MWE2ZjkxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxl
ci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0Lmgi
CiAjaW5jbHVkZSAiQ2hhcmFjdGVyRGF0YS5oIgogI2luY2x1ZGUgIkVkaXRpbmcuaCIKKyNpbmNs
dWRlICJFbGVtZW50QWNjZXNzaWJpbGl0eS5oIgogI2luY2x1ZGUgIkVsZW1lbnRBbmNlc3Rvckl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CkBAIC0zMTUsMTEgKzMxNiw3IEBAIHN0YXRpYyBib29sIGlzRW5jbG9zaW5nSXRlbUJvdW5kYXJ5
RWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogICAgIGlmICghcmVuZGVyZXIpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gcm9sZSA9IFtdKGNvbnN0IEVsZW1lbnQmIGVs
ZW1lbnQpIC0+IEFjY2Vzc2liaWxpdHlSb2xlIHsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmFyaWFSb2xlVG9XZWJDb3JlUm9sZShlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpyb2xlQXR0cikpOwotICAgIH07Ci0KLSAgICBpZiAo
ZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YnV0dG9uVGFnKSB8fCByb2xlKGVsZW1lbnQp
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b24pCisgICAgaWYgKGVsZW1lbnQuaGFzVGFnTmFt
ZShIVE1MTmFtZXM6OmJ1dHRvblRhZykgfHwgYWNjZXNzaWJpbGl0eVJvbGUoZWxlbWVudCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBh
dXRvIGRpc3BsYXlUeXBlID0gcmVuZGVyZXItPnN0eWxlKCkuZGlzcGxheSgpOwpAQCAtMzI4LDcg
KzMyNSw3IEBAIHN0YXRpYyBib29sIGlzRW5jbG9zaW5nSXRlbUJvdW5kYXJ5RWxlbWVudChjb25z
dCBFbGVtZW50JiBlbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAg
Zm9yIChSZWZQdHIgcGFyZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50KCk7IHBhcmVudDsgcGFy
ZW50ID0gcGFyZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgIGlmIChwYXJlbnQt
Pmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpuYXZUYWcpIHx8IHJvbGUoKnBhcmVudCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbikKKyAgICAgICAgICAgIGlmIChwYXJlbnQt
Pmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpuYXZUYWcpIHx8IGFjY2Vzc2liaWxpdHlSb2xlKCpwYXJl
bnQpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb24pCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL01vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Nb2RhbENvbnRhaW5lck9ic2VydmVyLmNwcAppbmRleCBkZWE1MGI3NzAyZDRkM2JkZDMy
Y2Y5MjdiMDFkMzgzYTIyZjYzNWVmLi5mZDc4MGVjNTEwNzFiMWNhZDYzODkxZDMyZmM2NjBiMzlk
MzdiNzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01vZGFsQ29udGFpbmVyT2Jz
ZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTW9kYWxDb250YWluZXJPYnNlcnZl
ci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVkZSAi
RWxlbWVudEFjY2Vzc2liaWxpdHkuaCIKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNp
bmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCkBAIC0xMzEsMTEg
KzEzMiw2IEBAIHN0YXRpYyBib29sIG1hdGNoZXNTZWFyY2hUZXJtKGNvbnN0IFRleHQmIHRleHRO
b2RlLCBjb25zdCBBdG9tU3RyaW5nJiBzZWFyY2hUZXJtCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXN0YXRpYyBBY2Nlc3NpYmlsaXR5Um9sZSBhY2Nlc3NpYmlsaXR5Um9sZShjb25zdCBIVE1MRWxl
bWVudCYgZWxlbWVudCkKLXsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVJv
bGVUb1dlYkNvcmVSb2xlKGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihI
VE1MTmFtZXM6OnJvbGVBdHRyKSk7Ci19Ci0KIHN0YXRpYyBib29sIGlzSW5zaWRlTmF2aWdhdGlv
bkVsZW1lbnQoY29uc3QgVGV4dCYgdGV4dE5vZGUpCiB7CiAgICAgZm9yIChhdXRvJiBwYXJlbnQg
OiBhbmNlc3RvcnNPZlR5cGU8SFRNTEVsZW1lbnQ+KHRleHROb2RlKSkgewpAQCAtMjA4LDcgKzIw
NCw3IEBAIHN0YXRpYyBib29sIGlzQ2xpY2thYmxlQ29udHJvbChjb25zdCBIVE1MRWxlbWVudCYg
ZWxlbWVudCkKICAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNh
c3Q8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkuaXNUZXh0QnV0dG9uKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCi0gICAgc3dpdGNoIChhY2Nlc3NpYmlsaXR5Um9sZShlbGVtZW50KSkgewor
ICAgIHN3aXRjaCAoYWNjZXNzaWJpbGl0eVJvbGUoZWxlbWVudCkudmFsdWVfb3IoQWNjZXNzaWJp
bGl0eVJvbGU6OlVua25vd24pKSB7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9u
OgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVj
a0JveDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KaW5kZXggMDZkNTVmMTA4N2NhNDAyYzk1NWVhNWI1ODIxNDczNDAyMTE0MDBmMC4u
OTc2ZjU5YTQ3ODk1YjJlNWM3MjE3MTAwZWFjNGVmMmJmN2I4ZTQzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTc2OSw4
ICs3NjksOCBAQCB2b2lkIFdlYlBhZ2U6OmhhbmRsZVN5bnRoZXRpY0NsaWNrKE5vZGUmIG5vZGVS
ZXNwb25kaW5nVG9DbGljaywgY29uc3QgV2ViQ29yZTo6RgogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIGlmICh0YXJnZXROb2RlLmRvY3VtZW50KCkucXVpcmtzKCkuc2hvdWxkSWdu
b3JlQXJpYUZvckZhc3RQYXRoQ29udGVudE9ic2VydmF0aW9uQ2hlY2soKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgYXV0byBhcmlhUm9sZSA9IEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmFyaWFSb2xlVG9XZWJDb3JlUm9sZShkb3duY2FzdDxFbGVtZW50Pih0YXJnZXROb2RlKS5n
ZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpyb2xlQXR0cikpOwotICAgICAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNBUklBQ29udHJvbChhcmlhUm9sZSk7CisgICAgICAgIGF1dG8gcm9s
ZSA9IGFjY2Vzc2liaWxpdHlSb2xlKGRvd25jYXN0PEVsZW1lbnQ+KHRhcmdldE5vZGUpKTsKKyAg
ICAgICAgcmV0dXJuIHJvbGUgJiYgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBQ29udHJvbCgq
cm9sZSk7CiAgICAgfTsKICAgICBhdXRvIHRhcmdldE5vZGVUcmlnZ2Vyc0Zhc3RQYXRoID0gbm9k
ZVRyaWdnZXJzRmFzdFBhdGgobm9kZVJlc3BvbmRpbmdUb0NsaWNrKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448266</attachid>
            <date>2022-01-03 21:53:50 -0800</date>
            <delta_ts>2022-01-04 07:49:29 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-234787-20220103215350.patch</filename>
            <type>text/plain</type>
            <size>53435</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg4MWY1ODMwNGQyMmIwNjdiYTZmYjUw
OTZkZGZmOTdlYjExN2Q4OWEuLjIxMDg3ZTY2Y2EzOGJhY2E4NWI0NjZhZDM2ZWY2ZjEwNjI0OWEy
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDEtMDMgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGNv
bXB1dGUgYW4gZWxlbWVudCdzIGFjY2Vzc2liaWxpdHkgcm9sZSBpbiBjb3JlIERPTSBjb2RlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ3ODcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm92aWRlIGEg
ZGVmYXVsdCBjb25zdHJ1Y3RvciBmb3IgQVNDSUlMaXRlcmFsIHRoYXQgcmV0dXJucyB0aGUgbnVs
bCB2YWx1ZTsgdGhpcyBpcyBpbnZva2VkIHdoZW4gdXNpbmcKKyAgICAgICAgQVNDSUlMaXRlcmFs
IGFzIGEgaGFzaCB2YWx1ZSBpbiBXZWJDb3JlIChzZWUgV2ViQ29yZS9DaGFuZ2VMb2cgZm9yIG1v
cmUgZGV0YWlscykuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BU0NJSUxpdGVyYWwuaDoKKwogMjAy
MS0xMi0zMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtK
U0NdIFJlcGxhY2UgVURJUzg2IHdpdGggWnlkaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxZTYyMWIxMGEyZTVl
NWNkNmRlYjk2ZGYzZjkwODdhYjIyZDI1YjBhLi44MGY4ZTQyMDJlYTRmOGQ4Y2UwYjUwM2U3MzIz
NGFkYWE5NGU4MGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMjItMDEtMDMgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgaGVs
cGVyIGZ1bmN0aW9uIHRvIGNvbXB1dGUgYW4gZWxlbWVudCdzIGFjY2Vzc2liaWxpdHkgcm9sZSBp
biBjb3JlIERPTSBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzQ3ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGVyZSBhcmUgYSBjb3VwbGUgcGxhY2VzIGluIFdlYkNvcmUgb3V0c2lkZSBvZiB0
aGUgY29udGV4dCBvZiBhY2Nlc3NpYmlsaXR5IGNvZGUgdGhhdCBwYXJzZSBgQWNjZXNzaWJpbGl0
eVJvbGVgCisgICAgICAgIGZyb20gdGhlICJyb2xlIiBhdHRyaWJ1dGUgb2YgRE9NIGVsZW1lbnRz
IGluIG9yZGVyIHRvIGRyaXZlIHZhcmlvdXMgaGV1cmlzdGljcy4gSW4gb3JkZXIgdG8gZG8gdGhp
cywgd2UKKyAgICAgICAgY3VycmVudGx5IGluY2x1ZGUgYWNjZXNzaWJpbGl0eSBoZWFkZXJzIGlu
IHRoZXNlIGZpbGVzOyBob3dldmVyLCB0aGlzIGlzbid0IGlkZWFsIGZvciBsYXllcmluZywgc2lu
Y2UgYWxsIHRoZQorICAgICAgICBhY2Nlc3NpYmlsaXR5IGNvZGUgaXMgaW50ZW5kZWQgdG8gYnVp
bGQgb24gdG9wIG9mIHRoZSBjb3JlIERPTS4KKworICAgICAgICBUbyBhZGRyZXNzIHRoaXMsIG1v
dmUgdGhlIGxvZ2ljIGZvciBwYXJzaW5nIHRoZSAicm9sZSIgYXR0cmlidXRlIGludG8gYW4gYEFj
Y2Vzc2liaWxpdHlSb2xlYCBlbnVtIGludG8gYQorICAgICAgICBzZXBhcmF0ZSBoZWFkZXIsIGBF
bGVtZW50QWNjZXNzaWJpbGl0eS5oYCAoYW5kIHNlcGFyYXRlIGhlbHBlciBmdW5jdGlvbikgaW4g
dGhlIGNvcmUgRE9NIGltcGxlbWVudGF0aW9uLCBhbmQKKyAgICAgICAgdGhlbiBoYXZlIGFjY2Vz
c2liaWxpdHkgaW5jbHVkZSB0aGF0IGhlYWRlci4KKworICAgICAgICBUaGVuLCBjaGFuZ2Ugbm9u
LWFjY2Vzc2liaWxpdHkgRE9NIGNvZGUgaW4gV2ViQ29yZSB0byBpbmNsdWRlICJFbGVtZW50QWNj
ZXNzaWJpbGl0eS5oIiBpbnN0ZWFkIG9mIHB1bGxpbmcgaW4KKyAgICAgICAgYWNjZXNzaWJpbGl0
eSBoZWFkZXJzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBIZWFkZXJzLmNt
YWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxlTGl2ZVJlZ2lvbkNy
ZWF0ZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGlu
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rOjpyb2xl
VmFsdWUgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRl
dGVybWluZUFyaWFSb2xlQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6Y29tcHV0ZWRSb2xlU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Omlu
aXRpYWxpemVSb2xlTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFyaWFSb2xlTWFw
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJldmVyc2VBcmlhUm9sZU1hcCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhUm9sZVRvV2Vi
Q29yZVJvbGUpOiBEZWxldGVkLgorCisgICAgICAgIFJlcGxhY2UgYEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmFyaWFSb2xlVG9XZWJDb3JlUm9sZWAgd2l0aCBgV2ViQ29yZTo6YWNjZXNzaWJpbGl0eVJv
bGVgLCB3aGljaCBwYXJzZXMgdGhlIHJvbGUKKyAgICAgICAgYXR0cmlidXRlIG9mIHRoZSBnaXZl
biBgRWxlbWVudGAgdG8gYW4gYEFjY2Vzc2liaWxpdHlSb2xlYCAob3IgYG51bGxvcHRgIGlmIHRo
ZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSB2YWx1ZQorICAgICAgICBmb3IgdGhlIHJvbGUgYXR0
cmlidXRlKS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5o
OgorICAgICAgICAqIGRvbS9FbGVtZW50QWNjZXNzaWJpbGl0eS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6aW5pdGlhbGl6ZVJvbGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6YXJpYVJv
bGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6cmV2ZXJzZUFyaWFSb2xlTWFwKToKKworICAgICAg
ICBNb3ZlIHRoZSBoYXNoIG1hcHMgaW50byB0aGUgc291cmNlIGZpbGUgYXMgYW4gaW1wbGVtZW50
YXRpb24gZGV0YWlsLCBhbmQgaW5zdGVhZCBleHBvc2UgYSBuZXcgbWV0aG9kLAorICAgICAgICBg
YWNjZXNzaWJpbHR5Um9sZVN0cmluZygpYCwgdGhhdCBtYXBzIGEgZ2l2ZW4gYEFjY2Vzc2liaWxp
dHlSb2xlYCB0byB0aGUgYFN0cmluZ2AgZm9yIHRoYXQgcm9sZS4gRm9yIHRoZSB0aW1lCisgICAg
ICAgIGJlaW5nLCB0aGlzIHN0aWxsIGp1c3QgaW50ZXJuYWxseSBsb29rcyB0aHJvdWdoIGEgaGFz
aCBtYXAgb2Ygcm9sZSA9PiBTdHJpbmcsIGJ1dCBpbiB0aGUgZnV0dXJlLCBpdCBjb3VsZCBiZQor
ICAgICAgICByZWZhY3RvcmVkIHRvIGJlIGEgY29uc3RleHByIGZ1bmN0aW9uIHRoYXQganVzdCBy
ZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIG5hbWUgd2l0aG91dCByZXF1aXJpbmcgYSBzdHJpbmcg
aGFzaC4KKworICAgICAgICAoV2ViQ29yZTo6YWNjZXNzaWJpbHR5Um9sZVN0cmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjphY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgICogZG9tL0VsZW1lbnRB
Y2Nlc3NpYmlsaXR5Lmg6IEFkZGVkLgorCisgICAgICAgIE1vdmUgdGhlIGBBY2Nlc3NpYmlsaXR5
Um9sZWAgZW51bSBjbGFzcyBoZXJlLCBhbmQgbWFrZSBpdCBgdWludDhfdGAuCisKKyAgICAgICAg
KiBlZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmlzRW5jbG9zaW5nSXRlbUJvdW5kYXJ5RWxlbWVudCk6CisgICAgICAgICogcGFnZS9Nb2Rh
bENvbnRhaW5lck9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQ2xpY2thYmxlQ29u
dHJvbCk6CisgICAgICAgIChXZWJDb3JlOjphY2Nlc3NpYmlsaXR5Um9sZSk6IERlbGV0ZWQuCisK
IDIwMjItMDEtMDIgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtM
RkNdW0lGQ10gQWRkIEFTU0VSVChtaWRkbGUgPj0gbGVmdCAmJiBtaWRkbGUgPCByaWdodCkgdG8g
VGV4dFV0aWw6OmJyZWFrV29yZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5ZjVhZjNkYWJhM2FhMjE3MDU3MTBhM2Qz
NDQzMDRiOTFhYWU5MDdiLi4xYTkwZDFlYjdmNmQ3NjAyNDI2ODg0NTI4OTlmODYyNWJmYmYxZTQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIyLTAxLTAzICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGhlbHBlciBmdW5jdGlvbiB0
byBjb21wdXRlIGFuIGVsZW1lbnQncyBhY2Nlc3NpYmlsaXR5IHJvbGUgaW4gY29yZSBET00gY29k
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0Nzg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VlIFdl
YkNvcmUvQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omhh
bmRsZVN5bnRoZXRpY0NsaWNrKToKKwogMjAyMi0wMS0wMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViS2l0Ml0gQ2FtZXJhIGNvbnRpbnVpdHkg
aXMgZGlzYWJsZWQgaW4gcmljaGx5IGVkaXRhYmxlIGNvbnRlbnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJ
TGl0ZXJhbC5oCmluZGV4IDVjMjM3ZjMwOWUxYjgwY2VhYTJhM2MyYWMyYThjNGRhYTcyZTYzMWQu
LjJiN2U2ZmU4ZmU3N2E3ZTQ3Yzk3ZmUxY2M0ZWJlMDI5MjdlM2I1NDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9BU0NJSUxpdGVyYWwuaApAQCAtMzcsNiArMzcsMTEgQEAgY2xhc3MgQVNDSUlMaXRlcmFsIGZp
bmFsIHsKIHB1YmxpYzoKICAgICBvcGVyYXRvciBjb25zdCBjaGFyKigpIGNvbnN0IHsgcmV0dXJu
IG1fY2hhcmFjdGVyczsgfQogCisgICAgY29uc3RleHByIGV4cGxpY2l0IEFTQ0lJTGl0ZXJhbCgp
CisgICAgICAgIDogbV9jaGFyYWN0ZXJzIHsgbnVsbHB0ciB9CisgICAgeworICAgIH0KKwogICAg
IHN0YXRpYyBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIGZyb21MaXRlcmFsVW5zYWZlKGNvbnN0IGNo
YXIqIHN0cmluZykKICAgICB7CiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwgeyBzdHJpbmcg
fTsKQEAgLTQ2LDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBBU0NJ
SUxpdGVyYWwgbnVsbCgpCiAgICAgewotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsIHsgbnVs
bHB0ciB9OworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsIHsgfTsKICAgICB9CiAKICAgICBj
b25zdGV4cHIgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9jaGFyYWN0ZXJzOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQppbmRleCBmOGI4OWYwZWVmZmZkOWUwMzA3YjY0OTk1NzRkZjI0MTUxZWNj
ZTlkLi45ZTJhZjFiOGI1Njc3MTExNjMyZjQ2YjM4YzhkMzM5ZmZlN2JlNjYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKQEAgLTYzMSw2ICs2MzEsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09S
S19IRUFERVJTCiAgICAgZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oCiAgICAgZG9tL0RvY3Vt
ZW50VHlwZS5oCiAgICAgZG9tL0VsZW1lbnQuaAorICAgIGRvbS9FbGVtZW50QWNjZXNzaWJpbGl0
eS5oCiAgICAgZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgKICAgICBkb20vRWxlbWVudENo
aWxkSXRlcmF0b3IuaAogICAgIGRvbS9FbGVtZW50Q29udGV4dC5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4
IGJkNWE3NDc5Y2IzOWU0NmNjOTEwNDAwZjRlZTM4NDkzMjRjNzUzMWYuLmFiMjI0ZGIyMGJkMDA4
ZTEzZWEyYWQzOWZlYTkwYjNjNTg0NGFjYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC05NTAsNiArOTUw
LDcgQEAgZG9tL0RvY3VtZW50VG91Y2guY3BwIEBuby11bmlmeQogZG9tL0RvY3VtZW50VHlwZS5j
cHAKIGRvbS9EcmFnRXZlbnQuY3BwCiBkb20vRWxlbWVudC5jcHAKK2RvbS9FbGVtZW50QWNjZXNz
aWJpbGl0eS5jcHAKIGRvbS9FbGVtZW50RGF0YS5jcHAKIGRvbS9FbGVtZW50UmFyZURhdGEuY3Bw
CiBkb20vRXJyb3JFdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzYzllYzI1YzBhOTI0NjA2YWUyZWIzMjc2NGExNzhk
ZGNjOTQ0M2Y4Li5lOGM4NmM1YjNlN2FiNGNjZjk3NmEzNTE3M2E5YTAyYzVhOWZjOGFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC01NDgxLDYgKzU0ODEsNyBAQAogCQlGNDI5OTUwRjI3MEU3NTAwMDAzMjI5OEIgLyogRGlzcGxh
eUxpc3RSZWNvcmRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjQyOTk1MEQyNzBFNzUwMDAwMzIyOThCIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDMzRTkw
MzFEQkJEQkEyMDBFRjBEMTQgLyogU3RhdGljUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzM0U5MDIxREJCREJBMjAwRUYwRDE0IC8q
IFN0YXRpY1Bhc3RlYm9hcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlGNDM3N0Q1NzI1NTFDOUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJdGVt
VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQz
NzdENTUyNTUxQzlDNjAwODBBQkZFIC8qIERpc3BsYXlMaXN0SXRlbVR5cGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNDNDMzgyQTI3ODI0QzE5
MDA5OUFCQ0UgLyogRWxlbWVudEFjY2Vzc2liaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0M0MzODI4Mjc4MjRDMTkwMDk5QUJDRSAvKiBFbGVt
ZW50QWNjZXNzaWJpbGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUY0NDBFNzdBMjMzRDk0RDcwMDYzRjlBQiAvKiBOYXZpZ2F0b3JDbGlwYm9h
cmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDBF
NzZGMjMzRDk0RDMwMDYzRjlBQiAvKiBOYXZpZ2F0b3JDbGlwYm9hcmQuaCAqLzsgfTsKIAkJRjQ0
MEU3N0IyMzNEOTRENzAwNjNGOUFCIC8qIENsaXBib2FyZEl0ZW0uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDBFNzcwMjMzRDk0RDQwMDYzRjlBQiAv
KiBDbGlwYm9hcmRJdGVtLmggKi87IH07CiAJCUY0NDBFNzdEMjMzRDk0RDcwMDYzRjlBQiAvKiBD
bGlwYm9hcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0NDBFNzcyMjMzRDk0RDUwMDYzRjlBQiAvKiBDbGlwYm9hcmQuaCAqLzsgfTsKQEAgLTE3Njg1
LDYgKzE3Njg2LDggQEAKIAkJRjQzM0U5MDQxREJCREJDMjAwRUYwRDE0IC8qIFN0YXRpY1Bhc3Rl
Ym9hcmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGljUGFzdGVib2FyZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0Mzc3RDU1MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNw
bGF5TGlzdEl0ZW1UeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlbVR5cGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzNzdENTYyNTUxQzlDNjAwODBBQkZFIC8q
IERpc3BsYXlMaXN0SXRlbVR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpc3RJ
dGVtVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0M0MzODI4Mjc4MjRD
MTkwMDk5QUJDRSAvKiBFbGVtZW50QWNjZXNzaWJpbGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbGVt
ZW50QWNjZXNzaWJpbGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDNDMzgy
OTI3ODI0QzE5MDA5OUFCQ0UgLyogRWxlbWVudEFjY2Vzc2liaWxpdHkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRWxlbWVudEFjY2Vzc2liaWxpdHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNDQwRTc2RTIzM0Q5NEQzMDA2M0Y5QUIgLyogQ2xpcGJvYXJkLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsaXBib2FyZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0NDBFNzZGMjMzRDk0RDMwMDYzRjlBQiAvKiBOYXZpZ2F0b3JD
bGlwYm9hcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF2aWdhdG9yQ2xp
cGJvYXJkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NDBFNzcwMjMzRDk0RDQw
MDYzRjlBQiAvKiBDbGlwYm9hcmRJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENsaXBib2FyZEl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMyMjU2
LDYgKzMyMjU5LDggQEAKIAkJCQlBOEM0QTdGNjA5RDU2MzI3MDAwM0FDOEQgLyogRWxlbWVudC5j
cHAgKi8sCiAJCQkJQThDNEE3RjUwOUQ1NjMyNzAwMDNBQzhEIC8qIEVsZW1lbnQuaCAqLywKIAkJ
CQk5M0VFQzFFQTA5QzI4Nzc3MDBDNTE1RDEgLyogRWxlbWVudC5pZGwgKi8sCisJCQkJRjQzQzM4
MjkyNzgyNEMxOTAwOTlBQkNFIC8qIEVsZW1lbnRBY2Nlc3NpYmlsaXR5LmNwcCAqLywKKwkJCQlG
NDNDMzgyODI3ODI0QzE5MDA5OUFCQ0UgLyogRWxlbWVudEFjY2Vzc2liaWxpdHkuaCAqLywKIAkJ
CQlFNEFFN0MxOTE3RDIzMjM1MDAwOUZCMzEgLyogRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCAq
LywKIAkJCQlFNDQwQUE5NTFDNjg0MjA4MDBBMjY1Q0MgLyogRWxlbWVudEFuZFRleHREZXNjZW5k
YW50SXRlcmF0b3IuaCAqLywKIAkJCQlFNDZBMkIxRDE3Q0E3NkIxMDAwREJDRDggLyogRWxlbWVu
dENoaWxkSXRlcmF0b3IuaCAqLywKQEAgLTM0MjQwLDYgKzM0MjQ1LDcgQEAKIAkJCQk5M0ZEQUZD
QTBCMTEzMDc0MDBFMjc0NkYgLyogRWRpdG9ySW5zZXJ0QWN0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MTJCRTQ3RDFGRTg2NDU4MDAyMDMxQ0MgLyogRWZmZWN0VGltaW5nLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBOEM0QTgwNzA5RDU2MzI3MDAwM0FDOEQgLyogRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRjQzQzM4MkEyNzgyNEMxOTAwOTlBQkNFIC8qIEVsZW1lbnRBY2Nlc3NpYmls
aXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEFFN0MxQTE3RDIzMjM1MDAwOUZCMzEgLyogRWxl
bWVudEFuY2VzdG9ySXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDBBQTk2MUM2ODQy
MDgwMEEyNjVDQyAvKiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzExOTQ2NTYyNDE4MUVBMTAwNDY2QzExIC8qIEVsZW1lbnRBbmltYXRpb25S
YXJlRGF0YS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBhYjc4Y2I5OGU3NmI1MTJjNTMwMDRjODlkMmViNjc5
MzNmZGI4NjE1Li5jZTIwZDI1ZmJmMzI0NzhhNzkxODY3YThiYmI1OTMxYTYxM2RjM2FhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTEw
MjksOSArMTAyOSw4IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlTGl2ZVJlZ2lvbkNyZWF0
ZWQoTm9kZSogbm9kZSkKICAgICBFbGVtZW50KiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4o
bm9kZSk7CiAgICAgU3RyaW5nIGxpdmVSZWdpb25TdGF0dXMgPSBlbGVtZW50LT5hdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKGFyaWFfbGl2ZUF0dHIpOwogICAgIGlmIChsaXZlUmVnaW9u
U3RhdHVzLmlzRW1wdHkoKSkgewotICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiBhcmlhUm9sZSA9
IGVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocm9sZUF0dHIpOwotICAg
ICAgICBpZiAoIWFyaWFSb2xlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGxpdmVSZWdpb25TdGF0
dXMgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZWZhdWx0TGl2ZVJlZ2lvblN0YXR1c0ZvclJvbGUo
QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVJvbGVUb1dlYkNvcmVSb2xlKGFyaWFSb2xlKSk7Cisg
ICAgICAgIGlmIChhdXRvIHJvbGUgPSBhY2Nlc3NpYmlsaXR5Um9sZSgqZWxlbWVudCkpCisgICAg
ICAgICAgICBsaXZlUmVnaW9uU3RhdHVzID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGVmYXVsdExp
dmVSZWdpb25TdGF0dXNGb3JSb2xlKCpyb2xlKTsKICAgICB9CiAgICAgCiAgICAgaWYgKEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmxpdmVSZWdpb25TdGF0dXNJc0VuYWJsZWQobGl2ZVJlZ2lvblN0YXR1
cykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlJbWFnZU1hcExpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5SW1hZ2VNYXBMaW5rLmNwcAppbmRleCBiZjIwMTcxMjA2ZTdhYmZkMmRjZTRhZjI4YjBh
YjY0ZWYyYmY2MmJhLi5mOTY3MTU0MmUyMzg5NGRhYWNjMDZlMmU5YzkxNjY3ZGViNGU3ZDk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFn
ZU1hcExpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUltYWdlTWFwTGluay5jcHAKQEAgLTY4LDkgKzY4LDExIEBAIEFjY2Vzc2liaWxpdHlSb2xl
IEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OnJvbGVWYWx1ZSgpIGNvbnN0CiAgICAgaWYgKCFt
X2FyZWFFbGVtZW50KQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVM
aW5rOwogICAgIAotICAgIGNvbnN0IEF0b21TdHJpbmcmIGFyaWFSb2xlID0gZ2V0QXR0cmlidXRl
KHJvbGVBdHRyKTsKLSAgICBpZiAoIWFyaWFSb2xlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFSb2xlVG9XZWJDb3JlUm9sZShhcmlhUm9sZSk7Cisg
ICAgaWYgKCFlbGVtZW50KCkpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6V2Vi
Q29yZUxpbms7CisKKyAgICBpZiAoYXV0byByb2xlID0gYWNjZXNzaWJpbGl0eVJvbGUoKmVsZW1l
bnQoKSkpCisgICAgICAgIHJldHVybiAqcm9sZTsKIAogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
Um9sZTo6V2ViQ29yZUxpbms7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCmluZGV4IDlmYjgzZjI0OWVlYjA0
NDdmN2MyMDhkMDNjYWUxN2U5MThmMjlkN2MuLmM4ZDdhMmRjYTYxOGZlYWIyZjdkNjFhZTY2MmVl
OTE5YWQ3Njk2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCkBAIC0yMjA1LDExICsyMjA1LDEzIEBAIGJv
b2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNhblNldFZhbHVlQXR0cmlidXRlKCkgY29uc3QK
IAogQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRldGVybWluZUFy
aWFSb2xlQXR0cmlidXRlKCkgY29uc3QKIHsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBhcmlhUm9s
ZSA9IGdldEF0dHJpYnV0ZShyb2xlQXR0cik7Ci0gICAgaWYgKGFyaWFSb2xlLmlzTnVsbCgpIHx8
IGFyaWFSb2xlLmlzRW1wdHkoKSkKKyAgICBSZWZQdHIgZWxlbWVudCA9IHRoaXMtPmVsZW1lbnQo
KTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6
VW5rbm93bjsKKworICAgIGF1dG8gcm9sZSA9IGFjY2Vzc2liaWxpdHlSb2xlKCplbGVtZW50KTsK
KyAgICBpZiAoIXJvbGUpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93
bjsKLSAgICAKLSAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gYXJpYVJvbGVUb1dlYkNvcmVS
b2xlKGFyaWFSb2xlKTsKIAogICAgIC8vIEFSSUEgc3RhdGVzIGlmIGFuIGl0ZW0gY2FuIGdldCBm
b2N1cywgaXQgc2hvdWxkIG5vdCBiZSBwcmVzZW50YXRpb25hbC4KICAgICBpZiAocm9sZSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6UHJlc2VudGF0aW9uYWwgJiYgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUo
KSkKQEAgLTIyMjEsNyArMjIyMyw3IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0OjpkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgpIGNvbnN0CiAgICAgaWYgKHJv
bGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRBcmVhICYmICFhcmlhSXNNdWx0aWxpbmUoKSkK
ICAgICAgICAgcm9sZSA9IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0RmllbGQ7CiAKLSAgICByb2xl
ID0gcmVtYXBBcmlhUm9sZUR1ZVRvUGFyZW50KHJvbGUpOworICAgIHJvbGUgPSByZW1hcEFyaWFS
b2xlRHVlVG9QYXJlbnQoKnJvbGUpOwogICAgIAogICAgIC8vIFByZXNlbnRhdGlvbmFsIHJvbGVz
IGFyZSBpbnZhbGlkYXRlZCBieSB0aGUgcHJlc2VuY2Ugb2YgQVJJQSBhdHRyaWJ1dGVzLgogICAg
IGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQcmVzZW50YXRpb25hbCAmJiBzdXBwb3J0
c0FSSUFBdHRyaWJ1dGVzKCkpCkBAIC0yMjM0LDEwICsyMjM2LDcgQEAgQWNjZXNzaWJpbGl0eVJv
bGUgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlKCkg
Y29uc3QKICAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtSZWdpb24g
JiYgIWhhc0F0dHJpYnV0ZShhcmlhX2xhYmVsQXR0cikgJiYgIWhhc0F0dHJpYnV0ZShhcmlhX2xh
YmVsbGVkYnlBdHRyKSkKICAgICAgICAgcm9sZSA9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3du
OwogCi0gICAgaWYgKHN0YXRpY19jYXN0PGludD4ocm9sZSkpCi0gICAgICAgIHJldHVybiByb2xl
OwotCi0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOworICAgIHJldHVybiAq
cm9sZTsKIH0KIAogQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFy
aWFSb2xlQXR0cmlidXRlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDFkY2NkODZhYmEyMzljZDkzZDEw
MmUwZmI0OTI2MjZlNWZiNDllYjYuLmU1MzExYjM4NTdjZGJjNjIxZGQ3NGNjN2M3ZjQ0NzgzMzQ5
M2QyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50SW5s
aW5lcy5oIgogI2luY2x1ZGUgIkVkaXRpbmcuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKKyNpbmNs
dWRlICJFbGVtZW50QWNjZXNzaWJpbGl0eS5oIgogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnREaXNwYXRjaGVyLmgiCkBAIC0y
MjU5LDIyMSArMjI2MCw0NyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpmaXJzdEFub255bW91c0Jsb2NrQ2hpbGQoKSBjb25zdAogICAgIHJldHVybiBudWxscHRy
OwogfQogCi11c2luZyBBUklBUm9sZU1hcCA9IEhhc2hNYXA8U3RyaW5nLCBBY2Nlc3NpYmlsaXR5
Um9sZSwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPjsKLXVzaW5nIEFSSUFSZXZlcnNlUm9sZU1h
cCA9IEhhc2hNYXA8QWNjZXNzaWJpbGl0eVJvbGUsIFN0cmluZywgRGVmYXVsdEhhc2g8aW50Piwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxpbnQ+PjsKLQotc3RhdGljIEFSSUFS
b2xlTWFwKiBnQXJpYVJvbGVNYXAgPSBudWxscHRyOwotc3RhdGljIEFSSUFSZXZlcnNlUm9sZU1h
cCogZ0FyaWFSZXZlcnNlUm9sZU1hcCA9IG51bGxwdHI7Ci0KLXN0cnVjdCBSb2xlRW50cnkgewot
ICAgIFN0cmluZyBhcmlhUm9sZTsKLSAgICBBY2Nlc3NpYmlsaXR5Um9sZSB3ZWJjb3JlUm9sZTsK
LX07Ci0KLXN0YXRpYyB2b2lkIGluaXRpYWxpemVSb2xlTWFwKCkKLXsKLSAgICBpZiAoZ0FyaWFS
b2xlTWFwKQotICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKCFnQXJpYVJldmVyc2VSb2xlTWFw
KTsKLQotICAgIGNvbnN0IFJvbGVFbnRyeSByb2xlc1tdID0gewotICAgICAgICB7ICJhbGVydCJf
cywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnQgfSwKLSAgICAgICAgeyAiYWxl
cnRkaWFsb2ciX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nIH0s
Ci0gICAgICAgIHsgImFwcGxpY2F0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXBwbGlj
YXRpb24gfSwKLSAgICAgICAgeyAiYXJ0aWNsZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3Vt
ZW50QXJ0aWNsZSB9LAotICAgICAgICB7ICJiYW5uZXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpM
YW5kbWFya0Jhbm5lciB9LAotICAgICAgICB7ICJibG9ja3F1b3RlIl9zLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6QmxvY2txdW90ZSB9LAotICAgICAgICB7ICJidXR0b24iX3MsIEFjY2Vzc2liaWxpdHlS
b2xlOjpCdXR0b24gfSwKLSAgICAgICAgeyAiY2FwdGlvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6
OkNhcHRpb24gfSwKLSAgICAgICAgeyAiY2hlY2tib3giX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpD
aGVja0JveCB9LAotICAgICAgICB7ICJjb21wbGVtZW50YXJ5Il9zLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TGFuZG1hcmtDb21wbGVtZW50YXJ5IH0sCi0gICAgICAgIHsgImNvbnRlbnRpbmZvIl9zLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb250ZW50SW5mbyB9LAotICAgICAgICB7ICJkZWxl
dGlvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkRlbGV0aW9uIH0sCi0gICAgICAgIHsgImRpYWxv
ZyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uRGlhbG9nIH0sCi0gICAgICAgIHsg
ImRpcmVjdG9yeSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkRpcmVjdG9yeSB9LAotICAgICAgICAv
LyBUaGUgJ2RvYy0qJyByb2xlcyBhcmUgZGVmaW5lZCB0aGUgQVJJQSBEUFVCIG1vYmlsZTogaHR0
cHM6Ly93d3cudzMub3JnL1RSL2RwdWItYWFtLTEuMAotICAgICAgICAvLyBFZGl0b3IncyBkcmFm
dCBpcyBjdXJyZW50bHkgYXQgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2RwdWItYWFtCi0gICAgICAg
IHsgImRvYy1hYnN0cmFjdCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdy
b3VwIH0sCi0gICAgICAgIHsgImRvYy1hY2tub3dsZWRnbWVudHMiX3MsIEFjY2Vzc2liaWxpdHlS
b2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAotICAgICAgICB7ICJkb2MtYWZ0ZXJ3b3JkIl9zLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKLSAgICAgICAgeyAiZG9jLWFw
cGVuZGl4Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKLSAgICAg
ICAgeyAiZG9jLWJhY2tsaW5rIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbmsgfSwK
LSAgICAgICAgeyAiZG9jLWJpYmxpb2VudHJ5Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0
ZW0gfSwKLSAgICAgICAgeyAiZG9jLWJpYmxpb2dyYXBoeSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6
OkxhbmRtYXJrRG9jUmVnaW9uIH0sCi0gICAgICAgIHsgImRvYy1iaWJsaW9yZWYiX3MsIEFjY2Vz
c2liaWxpdHlSb2xlOjpXZWJDb3JlTGluayB9LAotICAgICAgICB7ICJkb2MtY2hhcHRlciJfcywg
QWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCi0gICAgICAgIHsgImRvYy1j
b2xvcGhvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0sCi0g
ICAgICAgIHsgImRvYy1jb25jbHVzaW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtE
b2NSZWdpb24gfSwKLSAgICAgICAgeyAiZG9jLWNvdmVyIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
SW1hZ2UgfSwKLSAgICAgICAgeyAiZG9jLWNyZWRpdCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFw
cGxpY2F0aW9uVGV4dEdyb3VwIH0sCi0gICAgICAgIHsgImRvYy1jcmVkaXRzIl9zLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKLSAgICAgICAgeyAiZG9jLWRlZGljYXRp
b24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB9LAotICAgICAg
ICB7ICJkb2MtZW5kbm90ZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtIH0sCi0gICAg
ICAgIHsgImRvYy1lbmRub3RlcyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVn
aW9uIH0sCi0gICAgICAgIHsgImRvYy1lcGlncmFwaCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFw
cGxpY2F0aW9uVGV4dEdyb3VwIH0sCi0gICAgICAgIHsgImRvYy1lcGlsb2d1ZSJfcywgQWNjZXNz
aWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCi0gICAgICAgIHsgImRvYy1lcnJhdGEi
X3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAotICAgICAgICB7ICJk
b2MtZXhhbXBsZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0s
Ci0gICAgICAgIHsgImRvYy1mb290bm90ZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkZvb3Rub3Rl
IH0sCi0gICAgICAgIHsgImRvYy1mb3Jld29yZCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRt
YXJrRG9jUmVnaW9uIH0sCi0gICAgICAgIHsgImRvYy1nbG9zc2FyeSJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCi0gICAgICAgIHsgImRvYy1nbG9zc3JlZiJfcywg
QWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rIH0sCi0gICAgICAgIHsgImRvYy1pbmRleCJf
cywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbiB9LAotICAgICAgICB7ICJk
b2MtaW50cm9kdWN0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24g
fSwKLSAgICAgICAgeyAiZG9jLW5vdGVyZWYiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3Jl
TGluayB9LAotICAgICAgICB7ICJkb2Mtbm90aWNlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9j
dW1lbnROb3RlIH0sCi0gICAgICAgIHsgImRvYy1wYWdlYnJlYWsiX3MsIEFjY2Vzc2liaWxpdHlS
b2xlOjpTcGxpdHRlciB9LAotICAgICAgICB7ICJkb2MtcGFnZWxpc3QiX3MsIEFjY2Vzc2liaWxp
dHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb24gfSwKLSAgICAgICAgeyAiZG9jLXBhcnQiX3MsIEFj
Y2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAotICAgICAgICB7ICJkb2MtcHJl
ZmFjZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCi0gICAgICAg
IHsgImRvYy1wcm9sb2d1ZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9u
IH0sCi0gICAgICAgIHsgImRvYy1wdWxscXVvdGUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBs
aWNhdGlvblRleHRHcm91cCB9LAotICAgICAgICB7ICJkb2MtcW5hIl9zLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAgfSwKLSAgICAgICAgeyAiZG9jLXN1YnRpdGxlIl9z
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZyB9LAotICAgICAgICB7ICJkb2MtdGlwIl9zLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnROb3RlIH0sCi0gICAgICAgIHsgImRvYy10b2MiX3Ms
IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb24gfSwKLSAgICAgICAgeyAiZmln
dXJlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RmlndXJlIH0sCi0gICAgICAgIC8vIFRoZSBtYXBw
aW5ncyBmb3IgJ2dyYXBoaWNzLSonIHJvbGVzIGFyZSBkZWZpbmVkIGluIHRoaXMgc3BlYzogaHR0
cHM6Ly93M2MuZ2l0aHViLmlvL2dyYXBoaWNzLWFhbS8KLSAgICAgICAgeyAiZ3JhcGhpY3MtZG9j
dW1lbnQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpHcmFwaGljc0RvY3VtZW50IH0sCi0gICAgICAg
IHsgImdyYXBoaWNzLW9iamVjdCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkdyYXBoaWNzT2JqZWN0
IH0sCi0gICAgICAgIHsgImdyYXBoaWNzLXN5bWJvbCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Okdy
YXBoaWNzU3ltYm9sIH0sCi0gICAgICAgIHsgImdyaWQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpH
cmlkIH0sCi0gICAgICAgIHsgImdyaWRjZWxsIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZENl
bGwgfSwKLSAgICAgICAgeyAidGFibGUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZSB9LAot
ICAgICAgICB7ICJjZWxsIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2VsbCB9LAotICAgICAgICB7
ICJjb2x1bW5oZWFkZXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW5IZWFkZXIgfSwKLSAg
ICAgICAgeyAiY29tYm9ib3giX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpDb21ib0JveCB9LAotICAg
ICAgICB7ICJkZWZpbml0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVmaW5pdGlvbiB9LAot
ICAgICAgICB7ICJkb2N1bWVudCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50IH0sCi0g
ICAgICAgIHsgImZlZWQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpGZWVkIH0sCi0gICAgICAgIHsg
ImZvcm0iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpGb3JtIH0sCi0gICAgICAgIHsgInJvd2hlYWRl
ciJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlciB9LAotICAgICAgICB7ICJncm91cCJf
cywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uR3JvdXAgfSwKLSAgICAgICAgeyAiaGVh
ZGluZyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmcgfSwKLSAgICAgICAgLy8gVGhlICJp
bWFnZSIgcm9sZSBpcyBzeW5vbnltb3VzIHdpdGggdGhlICJpbWciIHJvbGUuIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby9hcmlhLyNpbWFnZQotICAgICAgICB7ICJpbWFnZSJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6OkltYWdlIH0sCi0gICAgICAgIHsgImltZyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Oklt
YWdlIH0sCi0gICAgICAgIHsgImluc2VydGlvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Okluc2Vy
dGlvbiB9LAotICAgICAgICB7ICJsaW5rIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxp
bmsgfSwKLSAgICAgICAgeyAibGlzdCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3QgfSwKLSAg
ICAgICAgeyAibGlzdGl0ZW0iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbSB9LAotICAg
ICAgICB7ICJsaXN0Ym94Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveCB9LAotICAgICAg
ICB7ICJsb2ciX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkxvZyB9LAotICAgICAg
ICB7ICJtYWluIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtNYWluIH0sCi0gICAgICAg
IHsgIm1hcnF1ZWUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbk1hcnF1ZWUgfSwK
LSAgICAgICAgeyAibWF0aCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50TWF0aCB9LAot
ICAgICAgICB7ICJtZW51Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudSB9LAotICAgICAgICB7
ICJtZW51YmFyIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJhciB9LAotICAgICAgICB7ICJt
ZW51aXRlbSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtIH0sCi0gICAgICAgIHsgIm1l
bnVpdGVtY2hlY2tib3giX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbUNoZWNrYm94IH0s
Ci0gICAgICAgIHsgIm1lbnVpdGVtcmFkaW8iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRl
bVJhZGlvIH0sCi0gICAgICAgIHsgIm1ldGVyIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TWV0ZXIg
fSwKLSAgICAgICAgeyAibm9uZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRhdGlvbmFs
IH0sCi0gICAgICAgIHsgIm5vdGUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE5vdGUg
fSwKLSAgICAgICAgeyAibmF2aWdhdGlvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJr
TmF2aWdhdGlvbiB9LAotICAgICAgICB7ICJvcHRpb24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpM
aXN0Qm94T3B0aW9uIH0sCi0gICAgICAgIHsgInBhcmFncmFwaCJfcywgQWNjZXNzaWJpbGl0eVJv
bGU6OlBhcmFncmFwaCB9LAotICAgICAgICB7ICJwcmVzZW50YXRpb24iX3MsIEFjY2Vzc2liaWxp
dHlSb2xlOjpQcmVzZW50YXRpb25hbCB9LAotICAgICAgICB7ICJwcm9ncmVzc2JhciJfcywgQWNj
ZXNzaWJpbGl0eVJvbGU6OlByb2dyZXNzSW5kaWNhdG9yIH0sCi0gICAgICAgIHsgInJhZGlvIl9z
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b24gfSwKLSAgICAgICAgeyAicmFkaW9ncm91
cCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvR3JvdXAgfSwKLSAgICAgICAgeyAicmVnaW9u
Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtSZWdpb24gfSwKLSAgICAgICAgeyAicm93
Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93IH0sCi0gICAgICAgIHsgInJvd2dyb3VwIl9zLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6Um93R3JvdXAgfSwKLSAgICAgICAgeyAic2Nyb2xsYmFyIl9zLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQmFyIH0sCi0gICAgICAgIHsgInNlYXJjaCJfcywgQWNj
ZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrU2VhcmNoIH0sCi0gICAgICAgIHsgInNlYXJjaGJveCJf
cywgQWNjZXNzaWJpbGl0eVJvbGU6OlNlYXJjaEZpZWxkIH0sCi0gICAgICAgIHsgInNlcGFyYXRv
ciJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlNwbGl0dGVyIH0sCi0gICAgICAgIHsgInNsaWRlciJf
cywgQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlciB9LAotICAgICAgICB7ICJzcGluYnV0dG9uIl9z
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvbiB9LAotICAgICAgICB7ICJzdGF0dXMiX3Ms
IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblN0YXR1cyB9LAotICAgICAgICB7ICJzdWJz
Y3JpcHQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpTdWJzY3JpcHQgfSwKLSAgICAgICAgeyAic3Vw
ZXJzY3JpcHQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpTdXBlcnNjcmlwdCB9LAotICAgICAgICB7
ICJzd2l0Y2giX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpTd2l0Y2ggfSwKLSAgICAgICAgeyAidGFi
Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiIH0sCi0gICAgICAgIHsgInRhYmxpc3QiX3MsIEFj
Y2Vzc2liaWxpdHlSb2xlOjpUYWJMaXN0IH0sCi0gICAgICAgIHsgInRhYnBhbmVsIl9zLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6VGFiUGFuZWwgfSwKLSAgICAgICAgeyAidGV4dCJfcywgQWNjZXNzaWJp
bGl0eVJvbGU6OlN0YXRpY1RleHQgfSwKLSAgICAgICAgeyAidGV4dGJveCJfcywgQWNjZXNzaWJp
bGl0eVJvbGU6OlRleHRBcmVhIH0sCi0gICAgICAgIHsgInRlcm0iX3MsIEFjY2Vzc2liaWxpdHlS
b2xlOjpUZXJtIH0sCi0gICAgICAgIHsgInRpbWUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpUaW1l
IH0sCi0gICAgICAgIHsgInRpbWVyIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25U
aW1lciB9LAotICAgICAgICB7ICJ0b29sYmFyIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9vbGJh
ciB9LAotICAgICAgICB7ICJ0b29sdGlwIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VXNlckludGVy
ZmFjZVRvb2x0aXAgfSwKLSAgICAgICAgeyAidHJlZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlRy
ZWUgfSwKLSAgICAgICAgeyAidHJlZWdyaWQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlR3Jp
ZCB9LAotICAgICAgICB7ICJ0cmVlaXRlbSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVt
IH0KLSAgICB9OwotCi0gICAgZ0FyaWFSb2xlTWFwID0gbmV3IEFSSUFSb2xlTWFwOwotICAgIGdB
cmlhUmV2ZXJzZVJvbGVNYXAgPSBuZXcgQVJJQVJldmVyc2VSb2xlTWFwOwotICAgIHNpemVfdCBy
b2xlTGVuZ3RoID0gV1RGX0FSUkFZX0xFTkdUSChyb2xlcyk7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCByb2xlTGVuZ3RoOyArK2kpIHsKLSAgICAgICAgZ0FyaWFSb2xlTWFwLT5zZXQocm9s
ZXNbaV0uYXJpYVJvbGUsIHJvbGVzW2ldLndlYmNvcmVSb2xlKTsKLSAgICAgICAgZ0FyaWFSZXZl
cnNlUm9sZU1hcC0+c2V0KHN0YXRpY19jYXN0PGludD4ocm9sZXNbaV0ud2ViY29yZVJvbGUpLCBy
b2xlc1tpXS5hcmlhUm9sZSk7Ci0gICAgfQotICAgIGdBcmlhUmV2ZXJzZVJvbGVNYXAtPnNldChz
dGF0aWNfY2FzdDxpbnQ+KEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZSksICJpbWFnZSJfcyk7Ci19
Ci0KLXN0YXRpYyBBUklBUm9sZU1hcCYgYXJpYVJvbGVNYXAoKQotewotICAgIGluaXRpYWxpemVS
b2xlTWFwKCk7Ci0gICAgcmV0dXJuICpnQXJpYVJvbGVNYXA7Ci19Ci0KLXN0YXRpYyBBUklBUmV2
ZXJzZVJvbGVNYXAmIHJldmVyc2VBcmlhUm9sZU1hcCgpCi17Ci0gICAgaW5pdGlhbGl6ZVJvbGVN
YXAoKTsKLSAgICByZXR1cm4gKmdBcmlhUmV2ZXJzZVJvbGVNYXA7Ci19Ci0KLUFjY2Vzc2liaWxp
dHlSb2xlIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFSb2xlVG9XZWJDb3JlUm9sZShjb25zdCBT
dHJpbmcmIHZhbHVlKQotewotICAgIGlmICh2YWx1ZS5pc051bGwoKSB8fCB2YWx1ZS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsKLQotICAgIGZv
ciAoYXV0byByb2xlTmFtZSA6IFN0cmluZ1ZpZXcodmFsdWUpLnNwbGl0KCcgJykpIHsKLSAgICAg
ICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IGFyaWFSb2xlTWFwKCkuZ2V0PEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlU3RyaW5nVmlld0hhc2hUcmFuc2xhdG9yPihyb2xlTmFtZSk7Ci0gICAgICAgIGlm
IChzdGF0aWNfY2FzdDxpbnQ+KHJvbGUpKQotICAgICAgICAgICAgcmV0dXJuIHJvbGU7Ci0gICAg
fQotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsKLX0KLQogU3RyaW5nIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmNvbXB1dGVkUm9sZVN0cmluZygpIGNvbnN0CiB7CiAgICAgLy8g
RklYTUU6IE5lZWQgYSBmZXcgc3BlY2lhbCBjYXNlcyB0aGF0IGFyZW4ndCBpbiB0aGUgUm9sZU1h
cDogb3B0aW9uLCBldGMuIGh0dHA6Ly93ZWJraXQub3JnL2IvMTI4Mjk2CiAgICAgQWNjZXNzaWJp
bGl0eVJvbGUgcm9sZSA9IHJvbGVWYWx1ZSgpOwogCi0gICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OkltYWdlICYmIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKLSAgICAgICAgcmV0
dXJuIHJldmVyc2VBcmlhUm9sZU1hcCgpLmdldChzdGF0aWNfY2FzdDxpbnQ+KEFjY2Vzc2liaWxp
dHlSb2xlOjpQcmVzZW50YXRpb25hbCkpOworICAgIGF1dG8gcm9sZVN0cmluZyA9IChbJl0gewor
ICAgICAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2UgJiYgYWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpKQorICAgICAgICAgICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlSb2xlU3Ry
aW5nKEFjY2Vzc2liaWxpdHlSb2xlOjpQcmVzZW50YXRpb25hbCk7CisKKyAgICAgICAgLy8gV2Ug
ZG8gbm90IGNvbXB1dGUgYSByb2xlIHN0cmluZyBmb3IgZ2VuZXJpYyBibG9jayBlbGVtZW50cyB3
aXRoIHVzZXItYWdlbnQgYXNzaWduZWQgcm9sZXMuCisgICAgICAgIGlmIChyb2xlID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpHcm91cCB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0R3Jv
dXApCisgICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisKKyAgICAgICAg
Ly8gV2UgZG8gY29tcHV0ZSBhIHJvbGUgc3RyaW5nIGZvciBibG9jayBlbGVtZW50cyB3aXRoIGF1
dGhvci1wcm92aWRlZCByb2xlcy4KKyAgICAgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwCisgICAgICAgICAgICB8fCByb2xlID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpGb290bm90ZQorICAgICAgICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6R3JhcGhpY3NPYmplY3QpCisgICAgICAgICAgICByZXR1cm4gYWNjZXNzaWJpbGl0eVJv
bGVTdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uR3JvdXApOwogCi0gICAgLy8g
V2UgZG8gbm90IGNvbXB1dGUgYSByb2xlIHN0cmluZyBmb3IgZ2VuZXJpYyBibG9jayBlbGVtZW50
cyB3aXRoIHVzZXItYWdlbnQgYXNzaWduZWQgcm9sZXMuCi0gICAgaWYgKHJvbGUgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6Okdyb3VwIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRHcm91
cCkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6R3JhcGhpY3NEb2N1bWVudCkKKyAgICAgICAgICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5
Um9sZVN0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnQpOwogCi0gICAgLy8gV2UgZG8g
Y29tcHV0ZSBhIHJvbGUgc3RyaW5nIGZvciBibG9jayBlbGVtZW50cyB3aXRoIGF1dGhvci1wcm92
aWRlZCByb2xlcy4KLSAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRp
b25UZXh0R3JvdXAKLSAgICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9vdG5v
dGUKLSAgICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JhcGhpY3NPYmplY3Qp
Ci0gICAgICAgIHJldHVybiByZXZlcnNlQXJpYVJvbGVNYXAoKS5nZXQoc3RhdGljX2Nhc3Q8aW50
PihBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Hcm91cCkpOworICAgICAgICBpZiAocm9s
ZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JhcGhpY3NTeW1ib2wpCisgICAgICAgICAgICByZXR1
cm4gYWNjZXNzaWJpbGl0eVJvbGVTdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlKTsKIAot
ICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpHcmFwaGljc0RvY3VtZW50KQotICAg
ICAgICByZXR1cm4gcmV2ZXJzZUFyaWFSb2xlTWFwKCkuZ2V0KHN0YXRpY19jYXN0PGludD4oQWNj
ZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50KSk7CisgICAgICAgIGlmIChyb2xlID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpIb3Jpem9udGFsUnVsZSkKKyAgICAgICAgICAgIHJldHVybiBhY2Nlc3NpYmls
aXR5Um9sZVN0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXIpOwogCi0gICAgaWYgKHJv
bGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkdyYXBoaWNzU3ltYm9sKQotICAgICAgICByZXR1cm4g
cmV2ZXJzZUFyaWFSb2xlTWFwKCkuZ2V0KHN0YXRpY19jYXN0PGludD4oQWNjZXNzaWJpbGl0eVJv
bGU6OkltYWdlKSk7CisgICAgICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BV
cEJ1dHRvbiB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b24pCisgICAg
ICAgICAgICByZXR1cm4gYWNjZXNzaWJpbGl0eVJvbGVTdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGU6
OkJ1dHRvbik7CiAKLSAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SG9yaXpvbnRh
bFJ1bGUpCi0gICAgICAgIHJldHVybiByZXZlcnNlQXJpYVJvbGVNYXAoKS5nZXQoc3RhdGljX2Nh
c3Q8aW50PihBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXIpKTsKKyAgICAgICAgaWYgKHJvbGUg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uKQorICAgICAgICAgICAgcmV0
dXJuIGFjY2Vzc2liaWxpdHlSb2xlU3RyaW5nKEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1Jl
Z2lvbik7CiAKLSAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9wVXBCdXR0b24g
fHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9nZ2xlQnV0dG9uKQotICAgICAgICByZXR1
cm4gcmV2ZXJzZUFyaWFSb2xlTWFwKCkuZ2V0KHN0YXRpY19jYXN0PGludD4oQWNjZXNzaWJpbGl0
eVJvbGU6OkJ1dHRvbikpOworICAgICAgICByZXR1cm4gYWNjZXNzaWJpbGl0eVJvbGVTdHJpbmco
cm9sZSk7CisgICAgfSkoKTsKIAotICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpM
YW5kbWFya0RvY1JlZ2lvbikKLSAgICAgICAgcmV0dXJuIHJldmVyc2VBcmlhUm9sZU1hcCgpLmdl
dChzdGF0aWNfY2FzdDxpbnQ+KEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1JlZ2lvbikpOwor
ICAgIGlmIChyb2xlU3RyaW5nLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKIAotICAgIHJldHVybiByZXZlcnNlQXJpYVJvbGVNYXAoKS5nZXQoc3RhdGljX2Nhc3Q8aW50
Pihyb2xlKSk7CisgICAgcmV0dXJuIHJvbGVTdHJpbmc7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0
eU9iamVjdDo6aGFzSGlnaGxpZ2h0aW5nKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggNjlkM2JjMzEzMDE1MjNj
YmFiMTdlMWVkOWQ0ZjEzMGFhODIzZjg4YS4uZDg0ZmFkNDEyNzRiMjg3YWFhOWU2NTdhZTdlNDBj
MDdlNzNlZDI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmgKQEAgLTUzMyw3ICs1MzMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBo
YW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCgpIG92ZXJyaWRlIHsgfQogICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGZpcnN0QW5vbnltb3VzQmxvY2tDaGlsZCgpIGNvbnN0IG92ZXJyaWRlOwog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEFjY2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlVG9X
ZWJDb3JlUm9sZShjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21TdHJp
bmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IGF0dHJpYnV0ZVZhbHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAppbmRleCBkM2JjZDA5MDQxZjAzYTJjMWY5MzIzZTAy
M2M3Y2YzY2IyYTk3OWU2Li4yMjlkMjY5ZjY3Y2RkMGQ3YjI3YTE0YWI1N2Q4M2MxNWFlMmM5YjFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE5LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAKIC8vIEZJWE1FOiBTaG91
bGQgcmVuYW1lIHRoaXMgZmlsZSBBWENvcmVPYmplY3QuaC4KIAorI2luY2x1ZGUgIkVsZW1lbnRB
Y2Nlc3NpYmlsaXR5LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIK
QEAgLTExMCwxNjEgKzExMSw2IEBAIGVudW0gY2xhc3MgQVhBbmNlc3RvckZsYWcgOiB1aW50OF90
IHsKICAgICAvLyBCaXRzIDYgYW5kIDcgYXJlIGZyZWUuCiB9OwogCi1lbnVtIGNsYXNzIEFjY2Vz
c2liaWxpdHlSb2xlIHsKLSAgICBBbm5vdGF0aW9uID0gMSwKLSAgICBBcHBsaWNhdGlvbiwKLSAg
ICBBcHBsaWNhdGlvbkFsZXJ0LAotICAgIEFwcGxpY2F0aW9uQWxlcnREaWFsb2csCi0gICAgQXBw
bGljYXRpb25EaWFsb2csCi0gICAgQXBwbGljYXRpb25Hcm91cCwKLSAgICBBcHBsaWNhdGlvbkxv
ZywKLSAgICBBcHBsaWNhdGlvbk1hcnF1ZWUsCi0gICAgQXBwbGljYXRpb25TdGF0dXMsCi0gICAg
QXBwbGljYXRpb25UZXh0R3JvdXAsCi0gICAgQXBwbGljYXRpb25UaW1lciwKLSAgICBBdWRpbywK
LSAgICBCbG9ja3F1b3RlLAotICAgIEJyb3dzZXIsCi0gICAgQnVzeUluZGljYXRvciwKLSAgICBC
dXR0b24sCi0gICAgQ2FudmFzLAotICAgIENhcHRpb24sCi0gICAgQ2VsbCwKLSAgICBDaGVja0Jv
eCwKLSAgICBDb2xvcldlbGwsCi0gICAgQ29sdW1uLAotICAgIENvbHVtbkhlYWRlciwKLSAgICBD
b21ib0JveCwKLSAgICBEZWZpbml0aW9uLAotICAgIERlbGV0aW9uLAotICAgIERlc2NyaXB0aW9u
TGlzdCwKLSAgICBEZXNjcmlwdGlvbkxpc3REZXRhaWwsCi0gICAgRGVzY3JpcHRpb25MaXN0VGVy
bSwKLSAgICBEZXRhaWxzLAotICAgIERpcmVjdG9yeSwKLSAgICBEaXNjbG9zdXJlVHJpYW5nbGUs
Ci0gICAgRGl2LAotICAgIERvY3VtZW50LAotICAgIERvY3VtZW50QXJ0aWNsZSwKLSAgICBEb2N1
bWVudE1hdGgsCi0gICAgRG9jdW1lbnROb3RlLAotICAgIERyYXdlciwKLSAgICBFZGl0YWJsZVRl
eHQsCi0gICAgRmVlZCwKLSAgICBGaWd1cmUsCi0gICAgRm9vdGVyLAotICAgIEZvb3Rub3RlLAot
ICAgIEZvcm0sCi0gICAgR3JhcGhpY3NEb2N1bWVudCwKLSAgICBHcmFwaGljc09iamVjdCwKLSAg
ICBHcmFwaGljc1N5bWJvbCwKLSAgICBHcmlkLAotICAgIEdyaWRDZWxsLAotICAgIEdyb3VwLAot
ICAgIEdyb3dBcmVhLAotICAgIEhlYWRpbmcsCi0gICAgSGVscFRhZywKLSAgICBIb3Jpem9udGFs
UnVsZSwKLSAgICBJZ25vcmVkLAotICAgIElubGluZSwKLSAgICBJbWFnZSwKLSAgICBJbWFnZU1h
cCwKLSAgICBJbWFnZU1hcExpbmssCi0gICAgSW5jcmVtZW50b3IsCi0gICAgSW5zZXJ0aW9uLAot
ICAgIExhYmVsLAotICAgIExhbmRtYXJrQmFubmVyLAotICAgIExhbmRtYXJrQ29tcGxlbWVudGFy
eSwKLSAgICBMYW5kbWFya0NvbnRlbnRJbmZvLAotICAgIExhbmRtYXJrRG9jUmVnaW9uLAotICAg
IExhbmRtYXJrTWFpbiwKLSAgICBMYW5kbWFya05hdmlnYXRpb24sCi0gICAgTGFuZG1hcmtSZWdp
b24sCi0gICAgTGFuZG1hcmtTZWFyY2gsCi0gICAgTGVnZW5kLAotICAgIExpbmssCi0gICAgTGlz
dCwKLSAgICBMaXN0Qm94LAotICAgIExpc3RCb3hPcHRpb24sCi0gICAgTGlzdEl0ZW0sCi0gICAg
TGlzdE1hcmtlciwKLSAgICBNYXJrLAotICAgIE1hdGhFbGVtZW50LAotICAgIE1hdHRlLAotICAg
IE1lbnUsCi0gICAgTWVudUJhciwKLSAgICBNZW51QnV0dG9uLAotICAgIE1lbnVJdGVtLAotICAg
IE1lbnVJdGVtQ2hlY2tib3gsCi0gICAgTWVudUl0ZW1SYWRpbywKLSAgICBNZW51TGlzdFBvcHVw
LAotICAgIE1lbnVMaXN0T3B0aW9uLAotICAgIE1ldGVyLAotICAgIE1vZGVsLAotICAgIE91dGxp
bmUsCi0gICAgUGFyYWdyYXBoLAotICAgIFBvcFVwQnV0dG9uLAotICAgIFByZSwKLSAgICBQcmVz
ZW50YXRpb25hbCwKLSAgICBQcm9ncmVzc0luZGljYXRvciwKLSAgICBSYWRpb0J1dHRvbiwKLSAg
ICBSYWRpb0dyb3VwLAotICAgIFJvd0hlYWRlciwKLSAgICBSb3csCi0gICAgUm93R3JvdXAsCi0g
ICAgUnVieUJhc2UsCi0gICAgUnVieUJsb2NrLAotICAgIFJ1YnlJbmxpbmUsCi0gICAgUnVieVJ1
biwKLSAgICBSdWJ5VGV4dCwKLSAgICBSdWxlciwKLSAgICBSdWxlck1hcmtlciwKLSAgICBTY3Jv
bGxBcmVhLAotICAgIFNjcm9sbEJhciwKLSAgICBTZWFyY2hGaWVsZCwKLSAgICBTaGVldCwKLSAg
ICBTbGlkZXIsCi0gICAgU2xpZGVyVGh1bWIsCi0gICAgU3BpbkJ1dHRvbiwKLSAgICBTcGluQnV0
dG9uUGFydCwKLSAgICBTcGxpdEdyb3VwLAotICAgIFNwbGl0dGVyLAotICAgIFN0YXRpY1RleHQs
Ci0gICAgU3Vic2NyaXB0LAotICAgIFN1bW1hcnksCi0gICAgU3VwZXJzY3JpcHQsCi0gICAgU3dp
dGNoLAotICAgIFN5c3RlbVdpZGUsCi0gICAgU1ZHUm9vdCwKLSAgICBTVkdUZXh0LAotICAgIFNW
R1RTcGFuLAotICAgIFNWR1RleHRQYXRoLAotICAgIFRhYkdyb3VwLAotICAgIFRhYkxpc3QsCi0g
ICAgVGFiUGFuZWwsCi0gICAgVGFiLAotICAgIFRhYmxlLAotICAgIFRhYmxlSGVhZGVyQ29udGFp
bmVyLAotICAgIFRlcm0sCi0gICAgVGV4dEFyZWEsCi0gICAgVGV4dEZpZWxkLAotICAgIFRleHRH
cm91cCwKLSAgICBUaW1lLAotICAgIFRyZWUsCi0gICAgVHJlZUdyaWQsCi0gICAgVHJlZUl0ZW0s
Ci0gICAgVG9nZ2xlQnV0dG9uLAotICAgIFRvb2xiYXIsCi0gICAgVW5rbm93biwKLSAgICBVc2Vy
SW50ZXJmYWNlVG9vbHRpcCwKLSAgICBWYWx1ZUluZGljYXRvciwKLSAgICBWaWRlbywKLSAgICBX
ZWJBcHBsaWNhdGlvbiwKLSAgICBXZWJBcmVhLAotICAgIFdlYkNvcmVMaW5rLAotICAgIFdpbmRv
dywKLX07Ci0KIHVzaW5nIEFjY2Vzc2liaWxpdHlSb2xlU2V0ID0gSGFzaFNldDxBY2Nlc3NpYmls
aXR5Um9sZSwgSW50SGFzaDxBY2Nlc3NpYmlsaXR5Um9sZT4sIFdURjo6U3Ryb25nRW51bUhhc2hU
cmFpdHM8QWNjZXNzaWJpbGl0eVJvbGU+PjsKIAogQUxXQVlTX0lOTElORSBTdHJpbmcgYWNjZXNz
aWJpbGl0eVJvbGVUb1N0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSByb2xlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBY2Nlc3NpYmlsaXR5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50QWNjZXNzaWJpbGl0eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDE3ZmZjZjRlN2Zl
NmI4ZjczYWRjNTQ5ZmJmYmMwMTU4M2JkMjU2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50QWNjZXNzaWJpbGl0eS5jcHAKQEAgLTAsMCArMSwyMjYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRWxlbWVudEFjY2Vzc2li
aWxpdHkuaCIKKworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50SW5saW5l
cy5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z1ZpZXcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBBUklBUm9sZU1hcCA9IEhh
c2hNYXA8U3RyaW5nLCBBY2Nlc3NpYmlsaXR5Um9sZSwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PjsKK3N0YXRpYyBBUklBUm9sZU1hcCogZ0FyaWFSb2xlTWFwID0gbnVsbHB0cjsKKwordXNpbmcg
QVJJQVJldmVyc2VSb2xlTWFwID0gSGFzaE1hcDxBY2Nlc3NpYmlsaXR5Um9sZSwgQVNDSUlMaXRl
cmFsLCBEZWZhdWx0SGFzaDxpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PGludD4+Oworc3RhdGljIEFSSUFSZXZlcnNlUm9sZU1hcCogZ0FyaWFSZXZlcnNlUm9sZU1hcCA9
IG51bGxwdHI7CisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVSb2xlTWFwKCkKK3sKKyAgICBpZiAo
Z0FyaWFSb2xlTWFwKQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKCFnQXJpYVJldmVyc2VS
b2xlTWFwKTsKKworICAgIHN0cnVjdCBSb2xlRW50cnkgeworICAgICAgICBBU0NJSUxpdGVyYWwg
YXJpYVJvbGU7CisgICAgICAgIEFjY2Vzc2liaWxpdHlSb2xlIHdlYmNvcmVSb2xlOworICAgIH07
CisKKyAgICBzdGF0aWMgY29uc3RleHByIFJvbGVFbnRyeSByb2xlc1tdID0geworICAgICAgICB7
ICJhbGVydCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnQgfSwKKyAgICAg
ICAgeyAiYWxlcnRkaWFsb2ciX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkFsZXJ0
RGlhbG9nIH0sCisgICAgICAgIHsgImFwcGxpY2F0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
V2ViQXBwbGljYXRpb24gfSwKKyAgICAgICAgeyAiYXJ0aWNsZSJfcywgQWNjZXNzaWJpbGl0eVJv
bGU6OkRvY3VtZW50QXJ0aWNsZSB9LAorICAgICAgICB7ICJiYW5uZXIiX3MsIEFjY2Vzc2liaWxp
dHlSb2xlOjpMYW5kbWFya0Jhbm5lciB9LAorICAgICAgICB7ICJibG9ja3F1b3RlIl9zLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6QmxvY2txdW90ZSB9LAorICAgICAgICB7ICJidXR0b24iX3MsIEFjY2Vz
c2liaWxpdHlSb2xlOjpCdXR0b24gfSwKKyAgICAgICAgeyAiY2FwdGlvbiJfcywgQWNjZXNzaWJp
bGl0eVJvbGU6OkNhcHRpb24gfSwKKyAgICAgICAgeyAiY2hlY2tib3giX3MsIEFjY2Vzc2liaWxp
dHlSb2xlOjpDaGVja0JveCB9LAorICAgICAgICB7ICJjb21wbGVtZW50YXJ5Il9zLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGFuZG1hcmtDb21wbGVtZW50YXJ5IH0sCisgICAgICAgIHsgImNvbnRlbnRp
bmZvIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb250ZW50SW5mbyB9LAorICAgICAg
ICB7ICJkZWxldGlvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkRlbGV0aW9uIH0sCisgICAgICAg
IHsgImRpYWxvZyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uRGlhbG9nIH0sCisg
ICAgICAgIHsgImRpcmVjdG9yeSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkRpcmVjdG9yeSB9LAor
ICAgICAgICAvLyBUaGUgJ2RvYy0qJyByb2xlcyBhcmUgZGVmaW5lZCB0aGUgQVJJQSBEUFVCIG1v
YmlsZTogaHR0cHM6Ly93d3cudzMub3JnL1RSL2RwdWItYWFtLTEuMAorICAgICAgICAvLyBFZGl0
b3IncyBkcmFmdCBpcyBjdXJyZW50bHkgYXQgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2RwdWItYWFt
CisgICAgICAgIHsgImRvYy1hYnN0cmFjdCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0
aW9uVGV4dEdyb3VwIH0sCisgICAgICAgIHsgImRvYy1hY2tub3dsZWRnbWVudHMiX3MsIEFjY2Vz
c2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtYWZ0ZXJ3
b3JkIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKKyAgICAgICAg
eyAiZG9jLWFwcGVuZGl4Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24g
fSwKKyAgICAgICAgeyAiZG9jLWJhY2tsaW5rIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29y
ZUxpbmsgfSwKKyAgICAgICAgeyAiZG9jLWJpYmxpb2VudHJ5Il9zLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TGlzdEl0ZW0gfSwKKyAgICAgICAgeyAiZG9jLWJpYmxpb2dyYXBoeSJfcywgQWNjZXNzaWJp
bGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1iaWJsaW9yZWYi
X3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3JlTGluayB9LAorICAgICAgICB7ICJkb2MtY2hh
cHRlciJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAg
IHsgImRvYy1jb2xvcGhvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdy
b3VwIH0sCisgICAgICAgIHsgImRvYy1jb25jbHVzaW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
TGFuZG1hcmtEb2NSZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLWNvdmVyIl9zLCBBY2Nlc3NpYmls
aXR5Um9sZTo6SW1hZ2UgfSwKKyAgICAgICAgeyAiZG9jLWNyZWRpdCJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0sCisgICAgICAgIHsgImRvYy1jcmVkaXRzIl9z
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKKyAgICAgICAgeyAiZG9j
LWRlZGljYXRpb24iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB9
LAorICAgICAgICB7ICJkb2MtZW5kbm90ZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVt
IH0sCisgICAgICAgIHsgImRvYy1lbmRub3RlcyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRt
YXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1lcGlncmFwaCJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0sCisgICAgICAgIHsgImRvYy1lcGlsb2d1ZSJf
cywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRv
Yy1lcnJhdGEiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAg
ICAgICB7ICJkb2MtZXhhbXBsZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4
dEdyb3VwIH0sCisgICAgICAgIHsgImRvYy1mb290bm90ZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6
OkZvb3Rub3RlIH0sCisgICAgICAgIHsgImRvYy1mb3Jld29yZCJfcywgQWNjZXNzaWJpbGl0eVJv
bGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1nbG9zc2FyeSJfcywgQWNj
ZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1nbG9z
c3JlZiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rIH0sCisgICAgICAgIHsgImRv
Yy1pbmRleCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbiB9LAorICAg
ICAgICB7ICJkb2MtaW50cm9kdWN0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtE
b2NSZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLW5vdGVyZWYiX3MsIEFjY2Vzc2liaWxpdHlSb2xl
OjpXZWJDb3JlTGluayB9LAorICAgICAgICB7ICJkb2Mtbm90aWNlIl9zLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6RG9jdW1lbnROb3RlIH0sCisgICAgICAgIHsgImRvYy1wYWdlYnJlYWsiX3MsIEFjY2Vz
c2liaWxpdHlSb2xlOjpTcGxpdHRlciB9LAorICAgICAgICB7ICJkb2MtcGFnZWxpc3QiX3MsIEFj
Y2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb24gfSwKKyAgICAgICAgeyAiZG9jLXBh
cnQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7
ICJkb2MtcHJlZmFjZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0s
CisgICAgICAgIHsgImRvYy1wcm9sb2d1ZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJr
RG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1wdWxscXVvdGUiX3MsIEFjY2Vzc2liaWxpdHlS
b2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB9LAorICAgICAgICB7ICJkb2MtcW5hIl9zLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAgfSwKKyAgICAgICAgeyAiZG9jLXN1
YnRpdGxlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZyB9LAorICAgICAgICB7ICJkb2Mt
dGlwIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnROb3RlIH0sCisgICAgICAgIHsgImRv
Yy10b2MiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb24gfSwKKyAgICAg
ICAgeyAiZmlndXJlIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RmlndXJlIH0sCisgICAgICAgIC8v
IFRoZSBtYXBwaW5ncyBmb3IgJ2dyYXBoaWNzLSonIHJvbGVzIGFyZSBkZWZpbmVkIGluIHRoaXMg
c3BlYzogaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2dyYXBoaWNzLWFhbS8KKyAgICAgICAgeyAiZ3Jh
cGhpY3MtZG9jdW1lbnQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpHcmFwaGljc0RvY3VtZW50IH0s
CisgICAgICAgIHsgImdyYXBoaWNzLW9iamVjdCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkdyYXBo
aWNzT2JqZWN0IH0sCisgICAgICAgIHsgImdyYXBoaWNzLXN5bWJvbCJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6OkdyYXBoaWNzU3ltYm9sIH0sCisgICAgICAgIHsgImdyaWQiX3MsIEFjY2Vzc2liaWxp
dHlSb2xlOjpHcmlkIH0sCisgICAgICAgIHsgImdyaWRjZWxsIl9zLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6R3JpZENlbGwgfSwKKyAgICAgICAgeyAidGFibGUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpU
YWJsZSB9LAorICAgICAgICB7ICJjZWxsIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2VsbCB9LAor
ICAgICAgICB7ICJjb2x1bW5oZWFkZXIiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW5IZWFk
ZXIgfSwKKyAgICAgICAgeyAiY29tYm9ib3giX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpDb21ib0Jv
eCB9LAorICAgICAgICB7ICJkZWZpbml0aW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVmaW5p
dGlvbiB9LAorICAgICAgICB7ICJkb2N1bWVudCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3Vt
ZW50IH0sCisgICAgICAgIHsgImZlZWQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpGZWVkIH0sCisg
ICAgICAgIHsgImZvcm0iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpGb3JtIH0sCisgICAgICAgIHsg
InJvd2hlYWRlciJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlciB9LAorICAgICAgICB7
ICJncm91cCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uR3JvdXAgfSwKKyAgICAg
ICAgeyAiaGVhZGluZyJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmcgfSwKKyAgICAgICAg
Ly8gVGhlICJpbWFnZSIgcm9sZSBpcyBzeW5vbnltb3VzIHdpdGggdGhlICJpbWciIHJvbGUuIGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby9hcmlhLyNpbWFnZQorICAgICAgICB7ICJpbWFnZSJfcywgQWNj
ZXNzaWJpbGl0eVJvbGU6OkltYWdlIH0sCisgICAgICAgIHsgImltZyJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6OkltYWdlIH0sCisgICAgICAgIHsgImluc2VydGlvbiJfcywgQWNjZXNzaWJpbGl0eVJv
bGU6Okluc2VydGlvbiB9LAorICAgICAgICB7ICJsaW5rIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
V2ViQ29yZUxpbmsgfSwKKyAgICAgICAgeyAibGlzdCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Okxp
c3QgfSwKKyAgICAgICAgeyAibGlzdGl0ZW0iX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRl
bSB9LAorICAgICAgICB7ICJsaXN0Ym94Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveCB9
LAorICAgICAgICB7ICJsb2ciX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkxvZyB9
LAorICAgICAgICB7ICJtYWluIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtNYWluIH0s
CisgICAgICAgIHsgIm1hcnF1ZWUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbk1h
cnF1ZWUgfSwKKyAgICAgICAgeyAibWF0aCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50
TWF0aCB9LAorICAgICAgICB7ICJtZW51Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudSB9LAor
ICAgICAgICB7ICJtZW51YmFyIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJhciB9LAorICAg
ICAgICB7ICJtZW51aXRlbSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtIH0sCisgICAg
ICAgIHsgIm1lbnVpdGVtY2hlY2tib3giX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbUNo
ZWNrYm94IH0sCisgICAgICAgIHsgIm1lbnVpdGVtcmFkaW8iX3MsIEFjY2Vzc2liaWxpdHlSb2xl
OjpNZW51SXRlbVJhZGlvIH0sCisgICAgICAgIHsgIm1ldGVyIl9zLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TWV0ZXIgfSwKKyAgICAgICAgeyAibm9uZSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlByZXNl
bnRhdGlvbmFsIH0sCisgICAgICAgIHsgIm5vdGUiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1
bWVudE5vdGUgfSwKKyAgICAgICAgeyAibmF2aWdhdGlvbiJfcywgQWNjZXNzaWJpbGl0eVJvbGU6
OkxhbmRtYXJrTmF2aWdhdGlvbiB9LAorICAgICAgICB7ICJvcHRpb24iX3MsIEFjY2Vzc2liaWxp
dHlSb2xlOjpMaXN0Qm94T3B0aW9uIH0sCisgICAgICAgIHsgInBhcmFncmFwaCJfcywgQWNjZXNz
aWJpbGl0eVJvbGU6OlBhcmFncmFwaCB9LAorICAgICAgICB7ICJwcmVzZW50YXRpb24iX3MsIEFj
Y2Vzc2liaWxpdHlSb2xlOjpQcmVzZW50YXRpb25hbCB9LAorICAgICAgICB7ICJwcm9ncmVzc2Jh
ciJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlByb2dyZXNzSW5kaWNhdG9yIH0sCisgICAgICAgIHsg
InJhZGlvIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b24gfSwKKyAgICAgICAgeyAi
cmFkaW9ncm91cCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvR3JvdXAgfSwKKyAgICAgICAg
eyAicmVnaW9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtSZWdpb24gfSwKKyAgICAg
ICAgeyAicm93Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93IH0sCisgICAgICAgIHsgInJvd2dy
b3VwIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93R3JvdXAgfSwKKyAgICAgICAgeyAic2Nyb2xs
YmFyIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQmFyIH0sCisgICAgICAgIHsgInNlYXJj
aCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrU2VhcmNoIH0sCisgICAgICAgIHsgInNl
YXJjaGJveCJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlNlYXJjaEZpZWxkIH0sCisgICAgICAgIHsg
InNlcGFyYXRvciJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlNwbGl0dGVyIH0sCisgICAgICAgIHsg
InNsaWRlciJfcywgQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlciB9LAorICAgICAgICB7ICJzcGlu
YnV0dG9uIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvbiB9LAorICAgICAgICB7ICJz
dGF0dXMiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblN0YXR1cyB9LAorICAgICAg
ICB7ICJzdWJzY3JpcHQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpTdWJzY3JpcHQgfSwKKyAgICAg
ICAgeyAic3VwZXJzY3JpcHQiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpTdXBlcnNjcmlwdCB9LAor
ICAgICAgICB7ICJzd2l0Y2giX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpTd2l0Y2ggfSwKKyAgICAg
ICAgeyAidGFiIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiIH0sCisgICAgICAgIHsgInRhYmxp
c3QiX3MsIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJMaXN0IH0sCisgICAgICAgIHsgInRhYnBhbmVs
Il9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiUGFuZWwgfSwKKyAgICAgICAgeyAidGV4dCJfcywg
QWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQgfSwKKyAgICAgICAgeyAidGV4dGJveCJfcywg
QWNjZXNzaWJpbGl0eVJvbGU6OlRleHRBcmVhIH0sCisgICAgICAgIHsgInRlcm0iX3MsIEFjY2Vz
c2liaWxpdHlSb2xlOjpUZXJtIH0sCisgICAgICAgIHsgInRpbWUiX3MsIEFjY2Vzc2liaWxpdHlS
b2xlOjpUaW1lIH0sCisgICAgICAgIHsgInRpbWVyIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBw
bGljYXRpb25UaW1lciB9LAorICAgICAgICB7ICJ0b29sYmFyIl9zLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VG9vbGJhciB9LAorICAgICAgICB7ICJ0b29sdGlwIl9zLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
VXNlckludGVyZmFjZVRvb2x0aXAgfSwKKyAgICAgICAgeyAidHJlZSJfcywgQWNjZXNzaWJpbGl0
eVJvbGU6OlRyZWUgfSwKKyAgICAgICAgeyAidHJlZWdyaWQiX3MsIEFjY2Vzc2liaWxpdHlSb2xl
OjpUcmVlR3JpZCB9LAorICAgICAgICB7ICJ0cmVlaXRlbSJfcywgQWNjZXNzaWJpbGl0eVJvbGU6
OlRyZWVJdGVtIH0KKyAgICB9OworCisgICAgZ0FyaWFSb2xlTWFwID0gbmV3IEFSSUFSb2xlTWFw
OworICAgIGdBcmlhUmV2ZXJzZVJvbGVNYXAgPSBuZXcgQVJJQVJldmVyc2VSb2xlTWFwOworICAg
IHNpemVfdCByb2xlTGVuZ3RoID0gV1RGX0FSUkFZX0xFTkdUSChyb2xlcyk7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCByb2xlTGVuZ3RoOyArK2kpIHsKKyAgICAgICAgZ0FyaWFSb2xlTWFw
LT5zZXQocm9sZXNbaV0uYXJpYVJvbGUsIHJvbGVzW2ldLndlYmNvcmVSb2xlKTsKKyAgICAgICAg
Z0FyaWFSZXZlcnNlUm9sZU1hcC0+c2V0KHN0YXRpY19jYXN0PGludD4ocm9sZXNbaV0ud2ViY29y
ZVJvbGUpLCByb2xlc1tpXS5hcmlhUm9sZSk7CisgICAgfQorICAgIGdBcmlhUmV2ZXJzZVJvbGVN
YXAtPnNldChzdGF0aWNfY2FzdDxpbnQ+KEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZSksICJpbWFn
ZSJfcyk7Cit9CisKK3N0YXRpYyBBUklBUm9sZU1hcCYgYXJpYVJvbGVNYXAoKQoreworICAgIGlu
aXRpYWxpemVSb2xlTWFwKCk7CisgICAgcmV0dXJuICpnQXJpYVJvbGVNYXA7Cit9CisKK3N0YXRp
YyBBUklBUmV2ZXJzZVJvbGVNYXAmIHJldmVyc2VBcmlhUm9sZU1hcCgpCit7CisgICAgaW5pdGlh
bGl6ZVJvbGVNYXAoKTsKKyAgICByZXR1cm4gKmdBcmlhUmV2ZXJzZVJvbGVNYXA7Cit9CisKK0FT
Q0lJTGl0ZXJhbCBhY2Nlc3NpYmlsaXR5Um9sZVN0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSByb2xl
KQoreworICAgIHJldHVybiByZXZlcnNlQXJpYVJvbGVNYXAoKS5nZXQoc3RhdGljX2Nhc3Q8aW50
Pihyb2xlKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8QWNjZXNzaWJpbGl0eVJvbGU+IGFjY2Vzc2li
aWxpdHlSb2xlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgYXV0byYgdmFsdWUgPSBl
bGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpyb2xlQXR0
cik7CisgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIGZvciAoYXV0byByb2xlTmFtZSA6IFN0cmluZ1ZpZXcodmFsdWUpLnNwbGl0KCcg
JykpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2VlbXMgbGlrZSBpdCBkZXBlbmRzIG9uIHVu
ZGVmaW5lZCBiZWhhdmlvciwgc2luY2UgMCBpcyBub3QgYSB2YWxpZCBlbnVtIHZhbHVlIGZvciBB
Y2Nlc3NpYmlsaXR5Um9sZS4KKyAgICAgICAgaWYgKGF1dG8gcm9sZSA9IGFyaWFSb2xlTWFwKCku
Z2V0PEFTQ0lJQ2FzZUluc2Vuc2l0aXZlU3RyaW5nVmlld0hhc2hUcmFuc2xhdG9yPihyb2xlTmFt
ZSk7IHN0YXRpY19jYXN0PGludD4ocm9sZSkpCisgICAgICAgICAgICByZXR1cm4gcm9sZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
QWNjZXNzaWJpbGl0eS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBY2Nlc3NpYmlsaXR5
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNWQyZWIzZmRiMTYyNGQzMGEwYWMwMmM4N2RhN2E3YTJkY2JiNmM4NQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QWNjZXNzaWJpbGl0
eS5oCkBAIC0wLDAgKzEsMTkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBFbGVtZW50OworCitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlSb2xlIDogdWludDhfdCB7Cisg
ICAgQW5ub3RhdGlvbiA9IDEsCisgICAgQXBwbGljYXRpb24sCisgICAgQXBwbGljYXRpb25BbGVy
dCwKKyAgICBBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nLAorICAgIEFwcGxpY2F0aW9uRGlhbG9nLAor
ICAgIEFwcGxpY2F0aW9uR3JvdXAsCisgICAgQXBwbGljYXRpb25Mb2csCisgICAgQXBwbGljYXRp
b25NYXJxdWVlLAorICAgIEFwcGxpY2F0aW9uU3RhdHVzLAorICAgIEFwcGxpY2F0aW9uVGV4dEdy
b3VwLAorICAgIEFwcGxpY2F0aW9uVGltZXIsCisgICAgQXVkaW8sCisgICAgQmxvY2txdW90ZSwK
KyAgICBCcm93c2VyLAorICAgIEJ1c3lJbmRpY2F0b3IsCisgICAgQnV0dG9uLAorICAgIENhbnZh
cywKKyAgICBDYXB0aW9uLAorICAgIENlbGwsCisgICAgQ2hlY2tCb3gsCisgICAgQ29sb3JXZWxs
LAorICAgIENvbHVtbiwKKyAgICBDb2x1bW5IZWFkZXIsCisgICAgQ29tYm9Cb3gsCisgICAgRGVm
aW5pdGlvbiwKKyAgICBEZWxldGlvbiwKKyAgICBEZXNjcmlwdGlvbkxpc3QsCisgICAgRGVzY3Jp
cHRpb25MaXN0RGV0YWlsLAorICAgIERlc2NyaXB0aW9uTGlzdFRlcm0sCisgICAgRGV0YWlscywK
KyAgICBEaXJlY3RvcnksCisgICAgRGlzY2xvc3VyZVRyaWFuZ2xlLAorICAgIERpdiwKKyAgICBE
b2N1bWVudCwKKyAgICBEb2N1bWVudEFydGljbGUsCisgICAgRG9jdW1lbnRNYXRoLAorICAgIERv
Y3VtZW50Tm90ZSwKKyAgICBEcmF3ZXIsCisgICAgRWRpdGFibGVUZXh0LAorICAgIEZlZWQsCisg
ICAgRmlndXJlLAorICAgIEZvb3RlciwKKyAgICBGb290bm90ZSwKKyAgICBGb3JtLAorICAgIEdy
YXBoaWNzRG9jdW1lbnQsCisgICAgR3JhcGhpY3NPYmplY3QsCisgICAgR3JhcGhpY3NTeW1ib2ws
CisgICAgR3JpZCwKKyAgICBHcmlkQ2VsbCwKKyAgICBHcm91cCwKKyAgICBHcm93QXJlYSwKKyAg
ICBIZWFkaW5nLAorICAgIEhlbHBUYWcsCisgICAgSG9yaXpvbnRhbFJ1bGUsCisgICAgSWdub3Jl
ZCwKKyAgICBJbmxpbmUsCisgICAgSW1hZ2UsCisgICAgSW1hZ2VNYXAsCisgICAgSW1hZ2VNYXBM
aW5rLAorICAgIEluY3JlbWVudG9yLAorICAgIEluc2VydGlvbiwKKyAgICBMYWJlbCwKKyAgICBM
YW5kbWFya0Jhbm5lciwKKyAgICBMYW5kbWFya0NvbXBsZW1lbnRhcnksCisgICAgTGFuZG1hcmtD
b250ZW50SW5mbywKKyAgICBMYW5kbWFya0RvY1JlZ2lvbiwKKyAgICBMYW5kbWFya01haW4sCisg
ICAgTGFuZG1hcmtOYXZpZ2F0aW9uLAorICAgIExhbmRtYXJrUmVnaW9uLAorICAgIExhbmRtYXJr
U2VhcmNoLAorICAgIExlZ2VuZCwKKyAgICBMaW5rLAorICAgIExpc3QsCisgICAgTGlzdEJveCwK
KyAgICBMaXN0Qm94T3B0aW9uLAorICAgIExpc3RJdGVtLAorICAgIExpc3RNYXJrZXIsCisgICAg
TWFyaywKKyAgICBNYXRoRWxlbWVudCwKKyAgICBNYXR0ZSwKKyAgICBNZW51LAorICAgIE1lbnVC
YXIsCisgICAgTWVudUJ1dHRvbiwKKyAgICBNZW51SXRlbSwKKyAgICBNZW51SXRlbUNoZWNrYm94
LAorICAgIE1lbnVJdGVtUmFkaW8sCisgICAgTWVudUxpc3RQb3B1cCwKKyAgICBNZW51TGlzdE9w
dGlvbiwKKyAgICBNZXRlciwKKyAgICBNb2RlbCwKKyAgICBPdXRsaW5lLAorICAgIFBhcmFncmFw
aCwKKyAgICBQb3BVcEJ1dHRvbiwKKyAgICBQcmUsCisgICAgUHJlc2VudGF0aW9uYWwsCisgICAg
UHJvZ3Jlc3NJbmRpY2F0b3IsCisgICAgUmFkaW9CdXR0b24sCisgICAgUmFkaW9Hcm91cCwKKyAg
ICBSb3dIZWFkZXIsCisgICAgUm93LAorICAgIFJvd0dyb3VwLAorICAgIFJ1YnlCYXNlLAorICAg
IFJ1YnlCbG9jaywKKyAgICBSdWJ5SW5saW5lLAorICAgIFJ1YnlSdW4sCisgICAgUnVieVRleHQs
CisgICAgUnVsZXIsCisgICAgUnVsZXJNYXJrZXIsCisgICAgU2Nyb2xsQXJlYSwKKyAgICBTY3Jv
bGxCYXIsCisgICAgU2VhcmNoRmllbGQsCisgICAgU2hlZXQsCisgICAgU2xpZGVyLAorICAgIFNs
aWRlclRodW1iLAorICAgIFNwaW5CdXR0b24sCisgICAgU3BpbkJ1dHRvblBhcnQsCisgICAgU3Bs
aXRHcm91cCwKKyAgICBTcGxpdHRlciwKKyAgICBTdGF0aWNUZXh0LAorICAgIFN1YnNjcmlwdCwK
KyAgICBTdW1tYXJ5LAorICAgIFN1cGVyc2NyaXB0LAorICAgIFN3aXRjaCwKKyAgICBTeXN0ZW1X
aWRlLAorICAgIFNWR1Jvb3QsCisgICAgU1ZHVGV4dCwKKyAgICBTVkdUU3BhbiwKKyAgICBTVkdU
ZXh0UGF0aCwKKyAgICBUYWJHcm91cCwKKyAgICBUYWJMaXN0LAorICAgIFRhYlBhbmVsLAorICAg
IFRhYiwKKyAgICBUYWJsZSwKKyAgICBUYWJsZUhlYWRlckNvbnRhaW5lciwKKyAgICBUZXJtLAor
ICAgIFRleHRBcmVhLAorICAgIFRleHRGaWVsZCwKKyAgICBUZXh0R3JvdXAsCisgICAgVGltZSwK
KyAgICBUcmVlLAorICAgIFRyZWVHcmlkLAorICAgIFRyZWVJdGVtLAorICAgIFRvZ2dsZUJ1dHRv
biwKKyAgICBUb29sYmFyLAorICAgIFVua25vd24sCisgICAgVXNlckludGVyZmFjZVRvb2x0aXAs
CisgICAgVmFsdWVJbmRpY2F0b3IsCisgICAgVmlkZW8sCisgICAgV2ViQXBwbGljYXRpb24sCisg
ICAgV2ViQXJlYSwKKyAgICBXZWJDb3JlTGluaywKKyAgICBXaW5kb3csCit9OworCitBU0NJSUxp
dGVyYWwgYWNjZXNzaWJpbGl0eVJvbGVTdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUpOworCitXRUJD
T1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEFjY2Vzc2liaWxpdHlSb2xlPiBhY2Nlc3NpYmlsaXR5
Um9sZShjb25zdCBFbGVtZW50Jik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAK
aW5kZXggNDc0MjlkNTkxN2EyM2EyZWRhZTE2ZDBmNzdmOTQxMmNhOGY1NmEwZS4uOTI2M2RmNTI4
Y2ZkYTQwMWZmYzI3OGUwYmY5N2FkN2E5MWE2ZjkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAjaW5jbHVkZSAiQ2hhcmFj
dGVyRGF0YS5oIgogI2luY2x1ZGUgIkVkaXRpbmcuaCIKKyNpbmNsdWRlICJFbGVtZW50QWNjZXNz
aWJpbGl0eS5oIgogI2luY2x1ZGUgIkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCkBAIC0zMTUsMTEgKzMxNiw3
IEBAIHN0YXRpYyBib29sIGlzRW5jbG9zaW5nSXRlbUJvdW5kYXJ5RWxlbWVudChjb25zdCBFbGVt
ZW50JiBlbGVtZW50KQogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGF1dG8gcm9sZSA9IFtdKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIC0+IEFjY2Vzc2li
aWxpdHlSb2xlIHsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFSb2xl
VG9XZWJDb3JlUm9sZShlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRN
TE5hbWVzOjpyb2xlQXR0cikpOwotICAgIH07Ci0KLSAgICBpZiAoZWxlbWVudC5oYXNUYWdOYW1l
KEhUTUxOYW1lczo6YnV0dG9uVGFnKSB8fCByb2xlKGVsZW1lbnQpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpCdXR0b24pCisgICAgaWYgKGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmJ1dHRv
blRhZykgfHwgYWNjZXNzaWJpbGl0eVJvbGUoZWxlbWVudCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6
OkJ1dHRvbikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBhdXRvIGRpc3BsYXlUeXBlID0g
cmVuZGVyZXItPnN0eWxlKCkuZGlzcGxheSgpOwpAQCAtMzI4LDcgKzMyNSw3IEBAIHN0YXRpYyBi
b29sIGlzRW5jbG9zaW5nSXRlbUJvdW5kYXJ5RWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgZm9yIChSZWZQdHIgcGFyZW50
ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50KCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJl
bnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgIGlmIChwYXJlbnQtPmhhc1RhZ05hbWUoSFRNTE5h
bWVzOjpuYXZUYWcpIHx8IHJvbGUoKnBhcmVudCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRt
YXJrTmF2aWdhdGlvbikKKyAgICAgICAgICAgIGlmIChwYXJlbnQtPmhhc1RhZ05hbWUoSFRNTE5h
bWVzOjpuYXZUYWcpIHx8IGFjY2Vzc2liaWxpdHlSb2xlKCpwYXJlbnQpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01vZGFs
Q29udGFpbmVyT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Nb2RhbENvbnRhaW5l
ck9ic2VydmVyLmNwcAppbmRleCBkZWE1MGI3NzAyZDRkM2JkZDMyY2Y5MjdiMDFkMzgzYTIyZjYz
NWVmLi5mZDc4MGVjNTEwNzFiMWNhZDYzODkxZDMyZmM2NjBiMzlkMzdiNzllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTW9kYWxDb250YWluZXJPYnNlcnZlci5jcHAKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVkZSAiRWxlbWVudEFjY2Vzc2liaWxp
dHkuaCIKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJFdmVudExvb3Au
aCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCkBAIC0xMzEsMTEgKzEzMiw2IEBAIHN0YXRpYyBi
b29sIG1hdGNoZXNTZWFyY2hUZXJtKGNvbnN0IFRleHQmIHRleHROb2RlLCBjb25zdCBBdG9tU3Ry
aW5nJiBzZWFyY2hUZXJtCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBBY2Nlc3NpYmls
aXR5Um9sZSBhY2Nlc3NpYmlsaXR5Um9sZShjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkKLXsK
LSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVJvbGVUb1dlYkNvcmVSb2xlKGVs
ZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnJvbGVBdHRy
KSk7Ci19Ci0KIHN0YXRpYyBib29sIGlzSW5zaWRlTmF2aWdhdGlvbkVsZW1lbnQoY29uc3QgVGV4
dCYgdGV4dE5vZGUpCiB7CiAgICAgZm9yIChhdXRvJiBwYXJlbnQgOiBhbmNlc3RvcnNPZlR5cGU8
SFRNTEVsZW1lbnQ+KHRleHROb2RlKSkgewpAQCAtMjA4LDcgKzIwNCw3IEBAIHN0YXRpYyBib29s
IGlzQ2xpY2thYmxlQ29udHJvbChjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkKICAgICBpZiAo
aXM8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVu
dD4oZWxlbWVudCkuaXNUZXh0QnV0dG9uKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
c3dpdGNoIChhY2Nlc3NpYmlsaXR5Um9sZShlbGVtZW50KSkgeworICAgIHN3aXRjaCAoYWNjZXNz
aWJpbGl0eVJvbGUoZWxlbWVudCkudmFsdWVfb3IoQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24p
KSB7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uOgogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMDZk
NTVmMTA4N2NhNDAyYzk1NWVhNWI1ODIxNDczNDAyMTE0MDBmMC4uOTc2ZjU5YTQ3ODk1YjJlNWM3
MjE3MTAwZWFjNGVmMmJmN2I4ZTQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTc2OSw4ICs3NjksOCBAQCB2b2lkIFdl
YlBhZ2U6OmhhbmRsZVN5bnRoZXRpY0NsaWNrKE5vZGUmIG5vZGVSZXNwb25kaW5nVG9DbGljaywg
Y29uc3QgV2ViQ29yZTo6RgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmICh0
YXJnZXROb2RlLmRvY3VtZW50KCkucXVpcmtzKCkuc2hvdWxkSWdub3JlQXJpYUZvckZhc3RQYXRo
Q29udGVudE9ic2VydmF0aW9uQ2hlY2soKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgYXV0byBhcmlhUm9sZSA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFSb2xlVG9XZWJD
b3JlUm9sZShkb3duY2FzdDxFbGVtZW50Pih0YXJnZXROb2RlKS5nZXRBdHRyaWJ1dGUoSFRNTE5h
bWVzOjpyb2xlQXR0cikpOwotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNB
UklBQ29udHJvbChhcmlhUm9sZSk7CisgICAgICAgIGF1dG8gcm9sZSA9IGFjY2Vzc2liaWxpdHlS
b2xlKGRvd25jYXN0PEVsZW1lbnQ+KHRhcmdldE5vZGUpKTsKKyAgICAgICAgcmV0dXJuIHJvbGUg
JiYgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBQ29udHJvbCgqcm9sZSk7CiAgICAgfTsKICAg
ICBhdXRvIHRhcmdldE5vZGVUcmlnZ2Vyc0Zhc3RQYXRoID0gbm9kZVRyaWdnZXJzRmFzdFBhdGgo
bm9kZVJlc3BvbmRpbmdUb0NsaWNrKTsKIAo=
</data>
<flag name="review"
          id="474140"
          type_id="1"
          status="?"
          setter="wenson_hsieh"
    />
    <flag name="commit-queue"
          id="474141"
          type_id="3"
          status="?"
          setter="wenson_hsieh"
    />
          </attachment>
      

    </bug>

</bugzilla>